From a0881c9a8dbff2bf7f3e10255b998b9529c7aef3 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期四, 07 八月 2025 13:46:36 +0800
Subject: [PATCH] 优化代码

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml    |    1 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramApprovedService.java |    8 +--
 blade-service/blade-mdm/src/main/resources/processesbpmn/program-cure.bpmn20.xml                        |    3 -
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java       |    4 +-
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java     |    7 +++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java             |   37 ++++++++++--------
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java            |    8 ++--
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java                    |   43 +++++++++++++++++++++
 8 files changed, 81 insertions(+), 30 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
index c7dc784..ae9b820 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
@@ -51,13 +51,6 @@
 
 	private final FlowProgramFileService flowProgramFileService;
 
-	/**
-	 * 鍥哄寲娴佺▼鐨刱ey
-	 */
-	private static final String PROCESS_KEY = "program-cure";
-
-
-
 	@Transactional
 	public void startCure(List<NcNode> programPackageList, Map<Long,List<NcNode>> allFlowProgramFiles) {
 		//鏍规嵁鍒嗙粍鍚姩娴佺▼锛屽苟鎻掑叆鍏宠仈琛�
@@ -71,7 +64,7 @@
 	 * @param programPackage 绋嬪簭鍖呭悕 鑺傜偣瀹炰綋
 	 */
 	public void startOne(NcNode programPackage,List<NcNode> programNodes) {
-		Map<String, Object> vars = null;
+		Map<String, Object> vars = new HashMap<>();
 		//璇ョ▼搴忓湪璁″垝浠诲姟鏃� 鑾峰彇缂栧埗锛屾牎瀵癸紝瀹℃壒鐨勪汉鍛橈紝浣滀负榛樿鐢ㄦ埛锛屽叾涓紪鍒舵椂绗竴涓浐瀹氱殑鐢ㄦ埛
 		if(programPackage.getProcessInstanceId() != null) {
 			//鑾峰彇瀹℃壒鐢ㄦ埛
@@ -79,13 +72,21 @@
 				.processInstanceId(programPackage.getProcessInstanceId()).includeProcessVariables()
 				.singleResult();
 			if(instance != null) {//浣跨敤浠诲姟娲惧伐娴佺▼鐨勫彉閲�
-				vars = new HashMap<>(instance.getProcessVariables());
-				vars.remove("proessInstanceId");
+				Map<String, Object> oldVars = instance.getProcessVariables();
+				//鏈哄簥缂栧彿
+				vars.put(FlowContants.MACHINE_CODE,oldVars.get(FlowContants.MACHINE_CODE));
+				//鏈哄簥鍨嬪彿
+				vars.put(FlowContants.MACHINE_MODE,oldVars.get(FlowContants.MACHINE_MODE));
+				vars.put(FlowContants.PROCESS_NO,oldVars.get(FlowContants.PROCESS_NO));
+				vars.put(FlowContants.PROCESS_NAME,oldVars.get(FlowContants.PROCESS_NAME));
+				vars.put(FlowContants.PROCESS_EDITION,oldVars.get(FlowContants.PROCESS_EDITION));
+				vars.put(FlowContants.CRAFT_EDITION, oldVars.get(FlowContants.CRAFT_EDITION));
+				vars.put(FlowContants.DRAWING_NO,oldVars.get(FlowContants.DRAWING_NO));
+				vars.put(FlowContants.DRAWING_NO_EDITION,oldVars.get(FlowContants.DRAWING_NO_EDITION));
+
+				vars.put(FlowContants.PRODUCT_MODEL,oldVars.get(FlowContants.PRODUCT_MODEL));
 			}
 
-		}
-		if(vars == null){
-			vars = new HashMap<>();
 		}
 
 		//鏌ユ壘鍘嗗彶瀹為檯鐨勫鎵逛汉
@@ -100,7 +101,8 @@
 
 		vars.put(FlowContants.LAST_STEP_USER_NICKNAME, AuthUtil.getNickName());
 		vars.put(FlowContants.TITLE,programPackage.getName()+"-鍥哄寲");//鑷姩澧炲姞鏍囬
-		ProcessInstance inst = runtimeService.startProcessInstanceByKey(PROCESS_KEY,businessKey,vars);
+
+		ProcessInstance inst = runtimeService.startProcessInstanceByKey(FlowContants.CURE_PROCESS_KEY,businessKey,vars);
 
 		//鏇存柊绋嬪簭鍖呭悕鑺傜偣鐨勬祦绋嬪疄渚媔d
 		programPackage.setProcessInstanceId(inst.getProcessInstanceId());
@@ -152,9 +154,10 @@
 
 		}
 
-		vars.put("programmer",programmer);
-		vars.put("checker",checker);
-		vars.put("senior",senior);
+		vars.put(FlowContants.PROGRAMMER,programmer);
+		vars.put(FlowContants.CHECKER,checker);
+		vars.put(FlowContants.SENIOR,senior);
+		vars.put(FlowContants.ASSIGNEE,programmer);
 	}
 	/**
 	 * 灏嗙▼搴忔寜鐓ф満鍣ㄤ唬鐮佸垎缁�
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java
index cfb9dc0..3d508da 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java
@@ -15,6 +15,7 @@
 import org.springframework.stereotype.Component;
 
 import java.time.LocalDate;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
@@ -68,6 +69,12 @@
 
 		//绉诲姩鍒板浐鍖栨爲涓嬬殑鏈哄簥鑺傜偣涓嬪眰
 		String newParentIds = machineNode.getParentIds()+","+machineNode.getId();
+
+		//鏇存柊鏈哄簥 涓嬪睘鑺傜偣鐨勬暟鎹� 涓烘棫鐗堟湰锛岄攣瀹�(鏈�鏂扮増鏈�=0锛宭ock=1)
+		this.nodeService.lambdaUpdate().likeRight(NcNode::getParentIds, newParentIds)
+			.in(NcNode::getNodeType, Arrays.asList(NcNode.TYPE_PROGRAM_PACKAGE,NcNode.TYPE_PROGRAM_FILE))
+			.set(NcNode::getIsLastEdition,0).set(NcNode::getIsLocked,1).update();
+
 		for(NcNode hisNode : historyNodes){
 			if(!hisNode.getId().equals(pkgNode.getId())){
 				hisNode.setIsLastEdition(0);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml
index 4125323..2197972 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml
@@ -26,5 +26,6 @@
                 and a.create_time &lt;= #{query.createTimeEnd}
             </if>
         </where>
+        order by a.create_time desc
     </select>
 </mapper>
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
index fcac854..fdd4929 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
@@ -103,7 +103,7 @@
 					//鐩綍锛屾墠鏄▼搴忓寘锛�
 					//鏌ヨ鏁版嵁搴擄紝瀵瑰簲涓婃墠鑳界‘璁ゆ椂鏈夋晥鐨勭▼搴忓寘
 					String packageName = StringUtils.removeEnd(entryName,"/");
-					NcNode programPackageNode = ncNodeService.getLastEditionProgramPackage(packageName);
+					NcNode programPackageNode = ncNodeService.getLastEditionTryingProgramPackage(packageName);
 					//List<NcNode> pkgList = ncNodeService.lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE).eq(NcNode::getName, packageName).eq(NcNode::getIsLastEdition,1).list();
 					//if(!pkgList.isEmpty()) {
 						//NcNode programPackageNode = pkgList.get(0);
@@ -180,7 +180,7 @@
 			for(String dir : dirList){
 				String programPackageName = StringUtils.removeEnd(dir,"/");
 
-				NcNode oriProgramPkg = this.ncNodeService.getLastEditionProgramPackage(programPackageName);
+				NcNode oriProgramPkg = this.ncNodeService.getLastEditionTryingProgramPackage(programPackageName);
 				if(oriProgramPkg == null){
 					log.warn("鏂囦欢澶规湭鍙戠幇鍖归厤鐨勭▼搴忓寘鍚峽}",dir);
 					continue;
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
index 935fa7b..8e218d1 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
@@ -101,7 +101,6 @@
 	public List<NcNodeVO> searchList(NcNodeQueryVO queryVO) {
 		//1.鏍规嵁鍏宠繘瀛楀拰鑺傜偣绫诲瀷鏌ヨ鍒濆鍒楄〃,鏌ヨ鐨勫師濮嬪垪琛紝闇�瑕乭asChild瀛楁锛屾墍浠ヤ娇鐢╩apper.xml
 		List<NcNodeVO> oriList = this.getBaseMapper().searchList(queryVO);
-		//List<NcNode> list = this.lambdaQuery().eq(NcNode::getNodeType, queryVO.getNodeType()).like(NcNode::getName, queryVO.getName()).list();
 		if ("10".equals(queryVO.getNodeType())) {
 			//鎼滅储鐨勬牴绾у埆锛岀洿鎺ヨ繑鍥�
 			return oriList;
@@ -181,13 +180,14 @@
     }
 
 	/**
-	 * 鑾峰彇鈥滅▼搴忓寘鍚嶁�濈殑鏈�鏂扮増鏈�
+	 * 鑾峰彇鈥滅▼搴忓寘鍚嶁�濊瘯鍒囩殑鏈�鏂扮増鏈�
 	 * @param name 鑺傜偣鍚嶇О
 	 * @return 鏈�鏂扮増鏈▼搴忔姤鍚嶈妭鐐�
 	 */
-	public NcNode getLastEditionProgramPackage(String name){
+	public NcNode getLastEditionTryingProgramPackage(String name){
 		List<NcNode> pkgList = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE)
-			.eq(NcNode::getName, name).eq(NcNode::getIsLastEdition,1).orderByDesc(NcNode::getCreateTime).list();
+			.eq(NcNode::getName, name).eq(NcNode::getIsCured,0).likeRight(NcNode::getParentIds,"0,1,")
+			.eq(NcNode::getIsLastEdition,1).orderByDesc(NcNode::getCreateTime).list();
 
 		if(pkgList.isEmpty()){
 			return null;
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramApprovedService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramApprovedService.java
index 4fa1d83..fd5e853 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramApprovedService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramApprovedService.java
@@ -26,6 +26,7 @@
 import org.springblade.mdm.program.vo.NcProgramExportDncQueryVO;
 import org.springblade.mdm.utils.CustomBinaryWriter;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
@@ -55,12 +56,9 @@
 	 * @param query 鏌ヨ鍙傛暟
 	 * @return
 	 */
+	@Transactional(readOnly = true)
 	public IPage<NcProgramExportDncPageVO> exportDncPageQuery(NcProgramExportDncQueryVO query) {
-
-		IPage<NcProgramExportDncPageVO> page = this.getBaseMapper().exportDncPageQuery(Condition.getPage(query),query);
-
-		return page;
-
+		return this.getBaseMapper().exportDncPageQuery(Condition.getPage(query),query);
 	}
 
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
new file mode 100644
index 0000000..838f96f
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
@@ -0,0 +1,43 @@
+package org.springblade.mdm.test;
+
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.tool.api.R;
+import org.springblade.mdm.program.entity.NcNode;
+import org.springblade.mdm.program.service.NcNodeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Slf4j
+@RestController
+@RequestMapping("/test/")
+@Tag(name = "娴嬭瘯", description = "娴嬭瘯")
+public class MyTestController {
+
+	@Autowired
+	private NcNodeService service;
+
+	/**
+	 * 鏂板
+	 */
+	@GetMapping("/like")
+	@Operation(summary = "like", description = "like")
+	public R<Object> like() {
+		try {
+			List<NcNode> nodes = service.lambdaQuery()
+				.likeRight(NcNode::getParentIds,"0,2,").list();
+
+			return R.data(nodes);
+		}catch (Exception e) {
+			log.error("鍚屾澶辫触", e);;
+			return R.fail(e.getMessage());
+		}
+
+	}
+
+}
diff --git a/blade-service/blade-mdm/src/main/resources/processesbpmn/program-cure.bpmn20.xml b/blade-service/blade-mdm/src/main/resources/processesbpmn/program-cure.bpmn20.xml
index 7663f64..df201aa 100644
--- a/blade-service/blade-mdm/src/main/resources/processesbpmn/program-cure.bpmn20.xml
+++ b/blade-service/blade-mdm/src/main/resources/processesbpmn/program-cure.bpmn20.xml
@@ -2,8 +2,7 @@
 <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.flowable.org/processdef">
   <process id="program-cure" name="鍥哄寲娴佺▼" isExecutable="true">
     <startEvent id="sid-abe970b9-1bee-49a1-91b4-1184c47c10b7"/>
-    <userTask id="cureProgramTask" name="鍥哄寲缂栧埗" flowable:assignee="${programmer}"/>
-
+    <userTask id="cureProgramTask" name="鍥哄寲缂栧埗" flowable:assignee="${assignee}"/>
     <sequenceFlow id="sid-09c7cf44-bb1a-40f4-b231-919afae5c02f" sourceRef="sid-abe970b9-1bee-49a1-91b4-1184c47c10b7" targetRef="cureProgramTask"/>
     <endEvent id="end" name="鍥哄寲缁撴潫"/>
     <userTask id="seniorApproveTask" name="楂樺笀瀹℃牳" flowable:assignee="${assignee}"/>

--
Gitblit v1.9.3