package com.highdatas.mdm.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.highdatas.mdm.entity.Flows; import com.highdatas.mdm.entity.MaintainField; import com.highdatas.mdm.mapper.FlowsMapper; import com.highdatas.mdm.mapper.SysFieldMapper; import com.highdatas.mdm.pojo.ActivitiBusinessType; import com.highdatas.mdm.pojo.ActivitiStatus; import com.highdatas.mdm.pojo.NextTaskUserInfo; import com.highdatas.mdm.service.*; import com.highdatas.mdm.service.act.IdentityService; import com.highdatas.mdm.service.act.TaskService; import com.highdatas.mdm.util.DbUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** *

* 服务实现类 *

* * @author kimi * @since 2019-12-19 */ @Service @Slf4j public class FlowsServiceImpl extends ServiceImpl implements IFlowsService { @Autowired IMaintainFieldService maintainFieldService; @Autowired TaskService taskService; @Autowired SysFieldMapper fieldMapper; @Autowired ITUserRoleService userRoleService; @Autowired IMasterModifiedService masterModifiedService; @Autowired IMaintainService maintainService; @Autowired IdentityService identityService; @Autowired ISysViewService viewService; @Autowired IMasterAuthorSubscribeService subscribeService; @Autowired ISysMenuService menuService; @Override public MaintainField createNowVerion(String tableName, String maintainId, String userId) { MaintainField nowMaintain = maintainFieldService.getNextMaintain(tableName, userId); // 搬运新版本字段 String maintainParams; if (StringUtils.isEmpty(maintainId)) { maintainParams = "maintain_field_id is null and table_name = " + DbUtils.quotedStr(tableName); }else { maintainParams = "maintain_field_id = " + DbUtils.quotedStr(maintainId); } if (nowMaintain != null) { String maintainFieldId = DbUtils.quotedStr(nowMaintain.getId()); fieldMapper.tansNewVersion(maintainFieldId, maintainParams); } return nowMaintain; } @Override public ActivitiStatus getStatusByBusinessId(String businessId) { Flows flows = selectOne(new EntityWrapper().eq("business_id", businessId).orderBy("create_time desc")); if (flows == null){ return null; } return flows.getStatus(); } @Override public boolean isNextAudit(Flows flows, String userId) { NextTaskUserInfo nestTaskAssignee = taskService.getNestTaskAssignee(flows.getWorkflowId()); if (nestTaskAssignee == null){ return false; } List userIdList = nestTaskAssignee.getUserIdList(); if (userIdList.contains(userId)) { return true; } List roleIdList = nestTaskAssignee.getRoleIdList(); if (roleIdList == null || roleIdList.isEmpty()) { return false; } List roleByUser = identityService.getRoleByUser(userId); if (roleByUser == null || roleByUser.isEmpty()) { return false; } long count = roleByUser.stream().filter(roleId -> roleIdList.contains(roleId)).count(); if (count == 0) { return false; }else { return true; } } @Override public void aduitFinish(Flows flows) { // 新增线程 new Thread(() -> { log.info("处理 生成版本后的操作"); if (flows.getBusinessType().equals(ActivitiBusinessType.maintain)){ String maintainId = flows.getBusinessId(); log.info("flow-maintain:" + maintainId); masterModifiedService.dealFlow(maintainId, flows.getStatus()); log.info("flow-masterModifiedService end"); maintainService.dealFlow(maintainId, flows.getStatus()); log.info("flow-maintainService end"); viewService.dealFlow(maintainId, flows.getStatus()); log.info("flow-viewService end"); subscribeService.dealFlow(maintainId, flows.getStatus()); log.info("flow-subscribeService end"); menuService.dealFlow(maintainId, flows.getStatus(), flows.getUserId()); log.info("flow-menuService end"); } if (flows.getBusinessType().equals(ActivitiBusinessType.field)){ String maintainId = flows.getBusinessId(); maintainFieldService.dealFlow(maintainId, flows.getStatus()); } }).start(); } }