From 86079d1c2bd7981165487e6e08d2399b80687f6e Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期四, 04 九月 2025 14:21:49 +0800
Subject: [PATCH] 工控网导出使用实际编程人匹配
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java | 10 ++-
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java | 68 ----------------------
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java | 13 +++-
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/MdmUser.java | 2
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java | 3
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/MdmUserService.java | 53 +++++++++++++++++
6 files changed, 75 insertions(+), 74 deletions(-)
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/MdmUser.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/MdmUser.java
index 4a6a382..73fd4c6 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/MdmUser.java
+++ b/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;
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/MdmUserService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/MdmUserService.java
index 067bec7..01c30cd 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/MdmUserService.java
+++ b/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;
+ }
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java
index 88abf59..44016d0 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java
+++ b/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());
+ }
+
/**
* 涓婁竴姝ュ鎵逛汉鏌ヨ
*/
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
index 9f867af..6583647 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
+++ b/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());//绋嬪簭鍖呰妭鐐筰d
approved.setTitle(props.getTitle());
- approved.setProgrammerId(props.getProgrammerId());
+ approved.setProgrammerId(props.getActProgrammerId());
approved.setProcessInstanceId(props.getProcessInstanceId());
approvedService.save(approved);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java
index 481f0f6..be09907 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java
+++ b/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 闆剁粍浠跺彿锛歒ZL4-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 闆剁粍浠跺彿锛歒ZL4-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)));
}
/**
* 娴佺▼鏄惁鍦ㄨ繘琛�
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java
index 684c19a..9e9b8d5 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowProgramProperties.java
+++ b/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 = "缂栫▼鍛榠d")
+ @Schema(description = "榛樿缂栫▼鍛榠d")
private Long programmerId;
- @Schema(description = "鏍″鍛榠d")
+ @Schema(description = "榛樿鏍″鍛榠d")
private Long checkerId;
- @Schema(description = "瀹℃牳楂樺笀ID")
+ @Schema(description = "榛樿瀹℃牳楂樺笀ID")
private Long seniorId;
+
+ @Schema(description = "瀹為檯缂栫▼鍛榠d")
+ private Long actProgrammerId;
+
@Schema(description = "鏄惁涓存椂娴佺▼:Y/N")
private String isTempFlow;
}
--
Gitblit v1.9.3