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