blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/MdmUser.java
@@ -27,5 +27,7 @@ */ private String roleId; private String deptId; private transient boolean manager = false; } blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/MdmUserService.java
@@ -1,18 +1,24 @@ package org.springblade.mdm.basesetting.producedivision.service; import com.alibaba.nacos.common.utils.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springblade.core.tool.utils.Func; import org.springblade.mdm.basesetting.producedivision.entity.MdmDept; import org.springblade.mdm.basesetting.producedivision.entity.MdmRole; import org.springblade.mdm.basesetting.producedivision.entity.MdmUser; import org.springblade.mdm.basesetting.producedivision.mapper.MdmUserMapper; import org.springblade.mdm.commons.service.ParamService; import org.springblade.mdm.gkw.programnode.vo.ProgramNodeVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.function.Consumer; import java.util.stream.Collectors; @Service public class MdmUserService extends ServiceImpl<MdmUserMapper, MdmUser> { @@ -20,6 +26,8 @@ private ParamService paramService; @Autowired private MdmRoleService roleService; @Autowired private MdmDeptService deptService; public Long getUserIdByName(String name) { List<MdmUser> users = this.lambdaQuery().eq(MdmUser::getName, name).eq(MdmUser::getStatus, 1).orderByDesc(MdmUser::getCreateTime).list(); Long userId = null; @@ -30,6 +38,10 @@ return userId; } /** * 所有审批用户列表 * @return */ public List<MdmUser> listByDeptAndRoleAlias() { List<String> approveRoleAliasList = Func.split(paramService.getApproveRoleAlias(),','); List<MdmUser> approveUserList = userListByRoleAlias(approveRoleAliasList); @@ -55,4 +67,45 @@ return userList; } /** * 审批用户树 * @return 根节点列表 */ public List<ProgramNodeVO> flowUserTree() { List<ProgramNodeVO> rootNodeVOS = new ArrayList<>(); List<MdmUser> users = listByDeptAndRoleAlias(); Map<String,List<MdmUser>> userMap = users.stream().collect(Collectors.groupingBy(MdmUser::getDeptId)); List<Long> deptIds = new ArrayList<>(); userMap.keySet().stream().forEach(deptId -> { deptIds.addAll(Func.toLongList(deptId)); }); List<MdmDept> deptList = deptService.lambdaQuery().in(MdmDept::getId,deptIds).list(); for(MdmDept dept : deptList) { String strDeptId = String.valueOf(dept.getId()); ProgramNodeVO deptNode = new ProgramNodeVO(); deptNode.setId(strDeptId); deptNode.setName(dept.getDeptName()); deptNode.setNodeType("dept"); deptNode.setChildren(new ArrayList<>()); userMap.forEach((k, usersInDept) -> { if(k.contains(strDeptId)){ for(MdmUser u : usersInDept) { ProgramNodeVO userNode = new ProgramNodeVO(); userNode.setId(String.valueOf(u.getId())); userNode.setName(u.getName()); userNode.setNodeType("user"); deptNode.getChildren().add(userNode); } } }); rootNodeVOS.add(deptNode); } return rootNodeVOS; } } blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java
@@ -19,6 +19,7 @@ import org.springblade.mdm.flow.service.FlowCommonService; import org.springblade.mdm.flow.service.FlowTransferService; import org.springblade.mdm.flow.vo.FlowVO; import org.springblade.mdm.gkw.programnode.vo.ProgramNodeVO; import org.springblade.system.feign.IUserSearchClient; import org.springblade.system.pojo.entity.User; import org.springframework.beans.factory.annotation.Autowired; @@ -105,16 +106,22 @@ } /** * 待办任务列表页 * 处理人下拉数据 */ @GetMapping("flow-user-list") @ApiOperationSupport(order = 3) @Operation(summary = "用户下拉数据", description = "用户下拉数据") @Operation(summary = "处理人下拉数据", description = "处理人下拉数据") public R<List<MdmUser>> flowUserList(@Parameter(description = "部门ID") String deptId, String taskId) { return R.data(mdmUserService.listByDeptAndRoleAlias()); } @GetMapping("flow-user-tree") @ApiOperationSupport(order = 3) @Operation(summary = "处理人下拉数据-树形", description = "处理人下拉数据") public R<List<ProgramNodeVO>> flowUserTree(@Parameter(description = "部门ID") String deptId, String taskId) { return R.data(mdmUserService.flowUserTree()); } /** * 上一步审批人查询 */ blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
@@ -38,7 +38,6 @@ */ public void handleData(FlowProgramProperties props) { // 执行业务逻辑 String instId = props.getProcessInstanceId(); NcNode packageNode; if(FlowContants.Y.equals(props.getHasCuredProgram())){ //有固化 @@ -124,7 +123,7 @@ approved.setProgramName(packageNode.getName()); approved.setNcNodeId(packageNode.getId());//程序包节点id approved.setTitle(props.getTitle()); approved.setProgrammerId(props.getProgrammerId()); approved.setProgrammerId(props.getActProgrammerId()); approved.setProcessInstanceId(props.getProcessInstanceId()); approvedService.save(approved); blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java
@@ -14,6 +14,7 @@ import org.springblade.mdm.basesetting.producedivision.entity.ProduceDivision; import org.springblade.mdm.basesetting.producedivision.service.ProduceDivisionService; import org.springblade.mdm.flow.constants.FlowContants; import org.springblade.mdm.flow.constants.FlowVariableContants; import org.springblade.mdm.program.entity.NcNode; import org.springblade.mdm.program.service.NodeDeptQueryService; import org.springblade.system.feign.IUserClient; @@ -56,40 +57,7 @@ Map<String, Object> vars = runtimeService.getVariables(processInstanceId); this.copyFlowPropertiesFromMap(programProperties, vars); /* programProperties.setTitle(String.valueOf(vars.get(FlowContants.TITLE))); programProperties.setIsTempFlow(Func.toStr(vars.get(FlowContants.IS_TEMP_FLOW))); programProperties.setDrawingNo(String.valueOf(vars.get(FlowContants.DRAWING_NO))); programProperties.setDrawingNoEdition(String.valueOf(vars.get(FlowContants.DRAWING_NO_EDITION))); programProperties.setProductModel(String.valueOf(vars.get(FlowContants.PRODUCT_MODEL))); programProperties.setProcessNo(String.valueOf(vars.get(FlowContants.PROCESS_NO))); programProperties.setProcessEdition(String.valueOf(vars.get(FlowContants.PROCESS_EDITION)));//工序版次 programProperties.setProcessName(String.valueOf(vars.get(FlowContants.PROCESS_NAME))); programProperties.setMachineCode(String.valueOf(vars.get(FlowContants.MACHINE_CODE))); programProperties.setMachineMode(String.valueOf(vars.get(FlowContants.MACHINE_MODE))); //数据处理名称为版次以前,零件号加工序号:YZL4-1100-01-50 零组件号:YZL4-1100-01 工序号 50 programProperties.setCraftEdition(String.valueOf(vars.get(FlowContants.CRAFT_EDITION))); programProperties.setHasCuredProgram(String.valueOf(vars.get(FlowContants.HAS_CURED_PROGRAM))); programProperties.setIsProcessEditionSame(String.valueOf(vars.get(FlowContants.IS_PROCESS_EDITION_SAME))); if(vars.containsKey(FlowContants.DEVIATION)) { programProperties.setDeviation(String.valueOf(vars.get(FlowContants.DEVIATION))); } if(vars.containsKey(FlowContants.CURED_NODE_ID)){ programProperties.setCuredNodeId(Func.toLong(vars.get(FlowContants.CURED_NODE_ID))); } if(vars.containsKey(FlowContants.NODE_ID)){ programProperties.setNodeId(Func.toLong(vars.get(FlowContants.NODE_ID))); } programProperties.setCureProgramUseable(String.valueOf(vars.get(FlowContants.CURE_PROGRAM_USEABLE))); programProperties.setTeamLeaderId(Func.toLong(vars.get(FlowContants.TEAM_LEADER))); programProperties.setProgrammerId(Func.toLong(vars.get(FlowContants.PROGRAMMER))); programProperties.setCheckerId(Func.toLong(vars.get(FlowContants.CHECKER))); programProperties.setSeniorId(Func.toLong(vars.get(FlowContants.SENIOR))); */ ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() .processInstanceId(processInstanceId) .singleResult(); @@ -107,40 +75,7 @@ Map<String, Object> vars =historicInstance.getProcessVariables(); this.copyFlowPropertiesFromMap(programProperties,vars); /* programProperties.setTitle(String.valueOf(vars.get(FlowContants.TITLE))); programProperties.setIsTempFlow(Func.toStr(vars.get(FlowContants.IS_TEMP_FLOW))); programProperties.setDrawingNo(String.valueOf(vars.get(FlowContants.DRAWING_NO))); programProperties.setDrawingNoEdition(String.valueOf(vars.get(FlowContants.DRAWING_NO_EDITION))); programProperties.setProductModel(String.valueOf(vars.get(FlowContants.PRODUCT_MODEL))); programProperties.setProcessNo(String.valueOf(vars.get(FlowContants.PROCESS_NO))); programProperties.setProcessEdition(String.valueOf(vars.get(FlowContants.PROCESS_EDITION)));//工序版次 programProperties.setProcessName(String.valueOf(vars.get(FlowContants.PROCESS_NAME))); programProperties.setMachineCode(String.valueOf(vars.get(FlowContants.MACHINE_CODE))); programProperties.setMachineMode(String.valueOf(vars.get(FlowContants.MACHINE_MODE))); //数据处理名称为版次以前,零件号加工序号:YZL4-1100-01-50 零组件号:YZL4-1100-01 工序号 50 programProperties.setCraftEdition(String.valueOf(vars.get(FlowContants.CRAFT_EDITION))); programProperties.setHasCuredProgram(String.valueOf(vars.get(FlowContants.HAS_CURED_PROGRAM))); programProperties.setIsProcessEditionSame(String.valueOf(vars.get(FlowContants.IS_PROCESS_EDITION_SAME))); if(vars.containsKey(FlowContants.DEVIATION)) { programProperties.setDeviation(String.valueOf(vars.get(FlowContants.DEVIATION))); } if(vars.containsKey(FlowContants.CURED_NODE_ID)){ programProperties.setCuredNodeId(Func.toLong(vars.get(FlowContants.CURED_NODE_ID))); } if(vars.containsKey(FlowContants.NODE_ID)){ programProperties.setNodeId(Func.toLong(vars.get(FlowContants.NODE_ID))); } programProperties.setCureProgramUseable(String.valueOf(vars.get(FlowContants.CURE_PROGRAM_USEABLE))); programProperties.setTeamLeaderId(Func.toLong(vars.get(FlowContants.TEAM_LEADER))); programProperties.setProgrammerId(Func.toLong(vars.get(FlowContants.PROGRAMMER))); programProperties.setCheckerId(Func.toLong(vars.get(FlowContants.CHECKER))); programProperties.setSeniorId(Func.toLong(vars.get(FlowContants.SENIOR))); */ programProperties.setProcessDefinitionKey(historicInstance.getProcessDefinitionKey()); return programProperties; } @@ -180,6 +115,7 @@ programProperties.setCheckerId(Func.toLong(vars.get(FlowContants.CHECKER))); programProperties.setSeniorId(Func.toLong(vars.get(FlowContants.SENIOR))); programProperties.setActProgrammerId(Func.toLong(vars.get(FlowVariableContants.ACT_PROGRAMMER))); } /** * 流程是否在进行 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java
@@ -67,12 +67,16 @@ @Schema(description = "专业组长id") private Long teamLeaderId; @Schema(description = "编程员id") @Schema(description = "默认编程员id") private Long programmerId; @Schema(description = "校对员id") @Schema(description = "默认校对员id") private Long checkerId; @Schema(description = "审核高师ID") @Schema(description = "默认审核高师ID") private Long seniorId; @Schema(description = "实际编程员id") private Long actProgrammerId; @Schema(description = "是否临时流程:Y/N") private String isTempFlow; }