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<>(); } } 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; 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"; /** * å¯å¨æ´¾å·¥æµç¨ 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 @@ //å¦æè¿æ²¡æå ³èçç¨åºæ°æ®ï¼åæå ¥ä¸ä¸ªprogramId为nullç 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); } } 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(); } } 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; } 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!=''"> 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); 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>