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