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