From ccb7770bd95e4730f128b975b36c045ec611672f Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期二, 08 七月 2025 19:39:53 +0800
Subject: [PATCH] 调整审批记录的保存方式

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java    |   19 ++++-----
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml |    2 
 blade-service/blade-mdm/src/main/resources/processesbpmn/program-cure.bpmn20.xml                     |    8 ++--
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveRecordService.java     |   18 +++++++-
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProcessProgRefService.java |   10 +++-
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java        |   26 +++++++++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java         |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/ApproveRecord.java             |    5 ++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/ProcessProgRef.java         |    4 ++
 9 files changed, 72 insertions(+), 22 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
index ab823cd..eba482e 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/DispatchController.java
@@ -4,6 +4,7 @@
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.flowable.engine.TaskService;
@@ -17,6 +18,7 @@
 import org.springblade.mdm.flow.entity.ApproveRecord;
 import org.springblade.mdm.flow.excution.StartDispatcher;
 import org.springblade.mdm.flow.service.ApproveRecordService;
+import org.springblade.mdm.flow.service.FlowCommonService;
 import org.springblade.mdm.flow.vo.TaskAssignVO;
 import org.springblade.mdm.program.entity.ProcessProgRef;
 import org.springblade.mdm.program.service.ProcessProgRefService;
@@ -32,19 +34,19 @@
 
 @Slf4j
 @RestController
+@AllArgsConstructor
 @RequestMapping("/flow/dispatch")
 @Tag(name = "娲惧伐娴佺▼", description = "娲惧伐娴佺▼")
 public class DispatchController {
 
-	@Autowired
-	private StartDispatcher dispatcher;
-	@Autowired
-	private TaskService taskService;
-	@Autowired
-	private ProcessProgRefService processProgRefService;
+	private final StartDispatcher dispatcher;
 
-	@Autowired
+	private final TaskService taskService;
+
+	private final ProcessProgRefService processProgRefService;
+
 	private ApproveRecordService approveRecordService;
+	private final FlowCommonService flowCommonService;
 	/**
 	 * 鏂板
 	 */
@@ -98,9 +100,6 @@
 			.taskId(taskId)
 			.singleResult();
 		approveRecordService.saveApproveRecords(task,processInstanceId,operateResult,comment);
-		List<Long> programIdList = new ArrayList<>();
-
-
 
 	}
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/ApproveRecord.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/ApproveRecord.java
index 93f3a6e..5904520 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/ApproveRecord.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/entity/ApproveRecord.java
@@ -19,6 +19,11 @@
 	private String processInstanceId;
 
 	/**
+	 * 娴佺▼瀹氫箟key
+	 */
+	private String processDefinitionKey;
+
+	/**
 	 * 浠诲姟鍚嶇О
 	 */
 	private String taskName;
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java
index 0570445..0d422cb 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java
@@ -33,7 +33,7 @@
 	private final ProcessProgRefService processProgRefService;
 	private final NcProgramService ncProgramService;
 
-	private static final String PROCESS_KEY = "dispatch";
+	public static final String PROCESS_KEY = "dispatch";
 
 	/**
 	 * 鍚姩娲惧伐娴佺▼
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveRecordService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveRecordService.java
index 5160903..9b16247 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveRecordService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveRecordService.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.flowable.task.api.Task;
 import org.springblade.core.mp.base.BizServiceImpl;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -28,11 +29,15 @@
 @AllArgsConstructor
 public class ApproveRecordService extends BizServiceImpl<ApproveRecordMapper, ApproveRecord> {
 	private final ProcessProgRefService processProgRefService;
+	private final FlowCommonService flowCommonService;
 	public List<ApproveRecordVO> listByNcProgramId(Long ncProgramId) {
 		return this.getBaseMapper().listByNcProgramId(ncProgramId);
 	}
 
 	public void saveApproveRecords(Task task, String processInstanceId, String operateResult, String comment) {
+
+		String processDefinitionKey = flowCommonService.getDefinitionKey(processInstanceId);
+
 		LambdaQueryWrapper<ProcessProgRef> queryWrapper = new LambdaQueryWrapper<>();
 		queryWrapper.eq(ProcessProgRef::getProcessInstanceId, processInstanceId);
 		List<ProcessProgRef> refList =  processProgRefService.list(queryWrapper);
@@ -40,11 +45,12 @@
 			for (ProcessProgRef refObj : refList) {
 				ApproveRecord rec = new ApproveRecord();
 				rec.setTaskName(task.getName());
-				rec.setComment(comment);
+				rec.setComment(comment==null? StringUtils.EMPTY:comment);
 				rec.setNcProgramId(refObj.getNcProgramId());
 				rec.setOperateResult(operateResult);//瀹℃壒缁撴灉
 				rec.setOperateTime(DateUtil.now());
 				rec.setProcessInstanceId(processInstanceId);
+				rec.setProcessDefinitionKey(processDefinitionKey);
 				rec.setUserId(AuthUtil.getUserId());
 				rec.setUserNickname(AuthUtil.getNickName());
 
@@ -57,7 +63,9 @@
 			//濡傛灉杩樻病鏈夊叧鑱旂殑绋嬪簭鏁版嵁锛屽垯鎻掑叆涓�涓猵rogramId涓簄ull鐨�
 			ApproveRecord rec = new ApproveRecord();
 			rec.setTaskName(task.getName());
+			rec.setComment(comment==null? StringUtils.EMPTY:comment);
 			rec.setProcessInstanceId(processInstanceId);
+			rec.setProcessDefinitionKey(processDefinitionKey);
 			rec.setOperateResult(operateResult);
 			rec.setOperateTime(DateUtil.now());
 			rec.setNcProgramId(null);//绌虹殑绋嬪簭id
@@ -68,6 +76,10 @@
 		}
 	}
 
+	/**
+	 * 鏇存柊浠ュ墠鏃犳枃浠舵椂鍊欑殑鏁版嵁銆�
+	 * @param processInstanceId
+	 */
 	void updateApproveRecords(String processInstanceId) {
 		LambdaQueryWrapper<ProcessProgRef> queryWrapper = new LambdaQueryWrapper<>();
 		queryWrapper.eq(ProcessProgRef::getProcessInstanceId, processInstanceId).isNull(ProcessProgRef::getNcProgramId);
@@ -89,10 +101,10 @@
 				BeanUtils.copyProperties(record, record2);
 				record2.setNcProgramId(refObj.getNcProgramId());
 
-				if(j>0){
+				if(j>0){//鍚庣画鏁版嵁闇�瑕佹柊澧炴暟鎹�
 					record2.setId(null);
 					save(record2);
-				}else{
+				}else{//绗竴鏉℃槸鏇存柊鍘熺邯褰�
 					updateById(record2);
 				}
 			}
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
new file mode 100644
index 0000000..2ff1ba2
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowCommonService.java
@@ -0,0 +1,26 @@
+package org.springblade.mdm.flow.service;
+
+import lombok.AllArgsConstructor;
+import org.flowable.engine.RuntimeService;
+import org.flowable.engine.runtime.ProcessInstance;
+import org.springframework.stereotype.Service;
+
+@AllArgsConstructor
+@Service
+public class FlowCommonService {
+	private final RuntimeService runtimeService;
+
+	/**
+	 * 鏍规嵁娴佺▼瀹炰緥id鑾峰彇definitionKey
+	 * @param processInstanceId
+	 * @return
+	 */
+	public String getDefinitionKey(String processInstanceId){
+
+		ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
+			.processInstanceId(processInstanceId)
+			.singleResult();
+		return processInstance.getProcessDefinitionKey();
+	}
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/ProcessProgRef.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/ProcessProgRef.java
index 2a93aba..a1d3829 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/ProcessProgRef.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/ProcessProgRef.java
@@ -23,4 +23,8 @@
 	 */
 	private Long ncProgramId;
 
+	/**
+	 * 娴佺▼瀹氫箟key
+	 */
+	private String processDefinitionKey;
 }
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 c74b4e0..b560644 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
@@ -11,7 +11,7 @@
         <result column="is_deleted" property="isDeleted"/>
     </resultMap>
     <select id="exportDncPageQuery" resultType="org.springblade.mdm.program.vo.NcProgramExportDncPageVO">
-        select a.id,a.nc_program_id,p.name,p.nc_node_id,p.part_no,p.part_no_edition,p.process_name,a.create_time from mdm_nc_program_approved a inner join mdm_nc_program p on a.nc_program_id=p.id
+        select a.id,a.nc_program_id,p.name,p.nc_node_id,p.drawing_no,p.drawing_no_edition,p.process_name,a.create_time from mdm_nc_program_approved a inner join mdm_nc_program p on a.nc_program_id=p.id
         where a.is_deleted=0
         <where>
             <if test="query.name!=null and query.name!=''">
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProcessProgRefService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProcessProgRefService.java
index 55ce39d..969a0ec 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProcessProgRefService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProcessProgRefService.java
@@ -37,6 +37,8 @@
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.mdm.basesetting.machine.MachineService;
 import org.springblade.mdm.basesetting.machine.entity.Machine;
+import org.springblade.mdm.flow.excution.StartDispatcher;
+import org.springblade.mdm.flow.service.FlowCommonService;
 import org.springblade.mdm.program.entity.NcNode;
 import org.springblade.mdm.program.entity.NcProgram;
 import org.springblade.mdm.program.entity.ProcessProgRef;
@@ -69,7 +71,7 @@
 @Service
 @AllArgsConstructor
 public class ProcessProgRefService extends BizServiceImpl<ProcessProgRefMapper, ProcessProgRef> {
-
+	private final FlowCommonService flowCommonService;
 	/**
 	 * 鏌ヨ鐜版湁鍥哄寲鐨勭▼搴忥紝鏆傚畾鏉′欢锛氶浂缁勪欢鍙风浉鍚岋紝涓旀槸鍚屼竴鏈哄簥缁�
 	 * @param processInstanceId 娴佺▼瀹炰緥id
@@ -82,13 +84,14 @@
 			return;
 		}
 
+		String processDefinationKey = flowCommonService.getDefinitionKey(processInstanceId);
 		this.lambdaUpdate().eq(ProcessProgRef::getProcessInstanceId, processInstanceId).remove();
 		List<ProcessProgRef> entities = new ArrayList<>();
 		for (Long programId : programIds) {
 			ProcessProgRef entity = new ProcessProgRef();
 			entity.setProcessInstanceId(processInstanceId);
 			entity.setNcProgramId(programId);
-
+			entity.setProcessDefinitionKey(processDefinationKey);
 			entities.add(entity);
 		}
 		this.saveBatch(entities);
@@ -109,7 +112,8 @@
 	 */
 	public ProcessProgRef lastDispatchDataByNcProgramId(Long ncProgramId) {
 		LambdaQueryWrapper<ProcessProgRef> query = Wrappers.lambdaQuery();
-		query.eq(ProcessProgRef::getNcProgramId, ncProgramId).orderByDesc(ProcessProgRef::getCreateTime).last("LIMIT 10");;
+
+		query.eq(ProcessProgRef::getNcProgramId, ncProgramId).eq(ProcessProgRef::getProcessDefinitionKey, StartDispatcher.PROCESS_KEY).orderByDesc(ProcessProgRef::getCreateTime).last("LIMIT 1");;
 
 		List<ProcessProgRef> list = this.list(query);
 		return list.isEmpty() ? null : list.get(0);
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 50220a9..a89b227 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
@@ -11,18 +11,18 @@
       <conditionExpression>${approve=='Y'}</conditionExpression>
     </sequenceFlow>
     <sequenceFlow id="sid-504610fe-2b87-4df4-8f42-f10c8bf3ce01" sourceRef="seniorApproveTask" targetRef="cureOKOperateTask">
-      <conditionExpression>${approve=='Y'</conditionExpression>
+      <conditionExpression>${approve=='Y'}</conditionExpression>
     </sequenceFlow>
     <userTask id="cureCheckTask" name="鍥哄寲鏍″" flowable:assignee="${assignee}"/>
     <sequenceFlow id="sid-b4ad2b36-5fcc-4449-924b-55b0425b1278" sourceRef="cureCheckTask" targetRef="cureProgramTask">
-      <conditionExpression>${approve=='N'</conditionExpression>
+      <conditionExpression>${approve=='N'}</conditionExpression>
     </sequenceFlow>
     <sequenceFlow id="sid-f626de1f-b668-49b8-bd06-6e8039abf2fc" sourceRef="cureCheckTask" targetRef="seniorApproveTask">
-      <conditionExpression>${approve=='Y'</conditionExpression>
+      <conditionExpression>${approve=='Y'}</conditionExpression>
     </sequenceFlow>
     <endEvent id="cureProgramingNoEnd" name="鍥哄寲缂栧埗缁撴潫"/>
     <sequenceFlow id="sid-a3a0654d-e9fd-4814-a1bd-384dce8a3b7a" sourceRef="cureProgramTask" targetRef="cureProgramingNoEnd">
-      <conditionExpression>${approve=='N'</conditionExpression>
+      <conditionExpression>${approve=='N'}</conditionExpression>
     </sequenceFlow>
     <sequenceFlow id="sid-c04cc547-0baf-4514-8056-54b1612cdefd" sourceRef="seniorApproveTask" targetRef="cureCheckTask">
       <conditionExpression>${approve=='N'}</conditionExpression>

--
Gitblit v1.9.3