| | |
| | | package com.highdatas.mdm.service.impl; |
| | | |
| | | import com.highdatas.mdm.entity.Flows; |
| | | import com.highdatas.mdm.mapper.FlowsMapper; |
| | | import com.highdatas.mdm.service.IFlowsService; |
| | | 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; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | * @since 2019-12-19 |
| | | */ |
| | | @Service |
| | | @Slf4j |
| | | public class FlowsServiceImpl extends ServiceImpl<FlowsMapper, Flows> implements IFlowsService { |
| | | @Autowired |
| | | IMaintainFieldService maintainFieldService; |
| | | @Autowired |
| | | TaskService taskService; |
| | | @Autowired |
| | | SysFieldMapper fieldMapper; |
| | | @Autowired |
| | | IMasterModifiedService masterModifiedService; |
| | | @Autowired |
| | | IMaintainService maintainService; |
| | | @Autowired |
| | | IdentityService identityService; |
| | | @Autowired |
| | | ISysViewService viewService; |
| | | @Autowired |
| | | IMasterAuthorSubscribeService subscribeService; |
| | | @Autowired |
| | | ISysMenuService menuService; |
| | | |
| | | /** |
| | | * |
| | | * @description: 创建新字段版本 |
| | | * @param userId 用户id |
| | | * @param maintainId 数据版本id |
| | | * @param tableName 表名 |
| | | * |
| | | * @return: maintainfielid 字段版本对象 |
| | | * |
| | | */ |
| | | @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; |
| | | } |
| | | /** |
| | | * |
| | | * @description: 通过业务id获取审批状态 |
| | | * @param businessId 业务id |
| | | * @return: status |
| | | * |
| | | */ |
| | | @Override |
| | | public ActivitiStatus getStatusByBusinessId(String businessId) { |
| | | Flows flows = selectOne(new EntityWrapper<Flows>().eq("business_id", businessId).orderBy("create_time desc")); |
| | | if (flows == null){ |
| | | return null; |
| | | } |
| | | return flows.getStatus(); |
| | | } |
| | | /** |
| | | * |
| | | * @description: 判断是否为下一节点审批人 |
| | | * @param flows 流程 |
| | | * @param userId 用户id |
| | | * @return: status |
| | | * |
| | | */ |
| | | @Override |
| | | public boolean isNextAudit(Flows flows, String userId) { |
| | | NextTaskUserInfo nestTaskAssignee = taskService.getNestTaskAssignee(flows.getWorkflowId()); |
| | | if (nestTaskAssignee == null){ |
| | | return false; |
| | | } |
| | | List<String> userIdList = nestTaskAssignee.getUserIdList(); |
| | | if (userIdList.contains(userId)) { |
| | | return true; |
| | | } |
| | | |
| | | List<String> roleIdList = nestTaskAssignee.getRoleIdList(); |
| | | if (roleIdList == null || roleIdList.isEmpty()) { |
| | | return false; |
| | | } |
| | | |
| | | List<String> 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; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * |
| | | * @description: 流程完成后的操作 |
| | | * @param flows 流程实例 |
| | | * |
| | | */ |
| | | |
| | | @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(); |
| | | } |
| | | } |