From 9064866a2c0c2988cba1d321d7af088d2647a4bc Mon Sep 17 00:00:00 2001 From: yangys <y_ys79@sina.com> Date: 星期日, 06 七月 2025 23:59:50 +0800 Subject: [PATCH] 增加固化流程 --- blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java | 111 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 91 insertions(+), 20 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 15b4550..0b4c7d0 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 @@ -1,8 +1,11 @@ package org.springblade.mdm.flow.service; +import lombok.AllArgsConstructor; +import org.flowable.engine.HistoryService; import org.flowable.engine.IdentityService; import org.flowable.engine.RuntimeService; import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.task.api.history.HistoricTaskInstance; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.mdm.basesetting.machine.MachineService; import org.springblade.mdm.basesetting.machine.entity.Machine; @@ -10,33 +13,38 @@ import org.springblade.mdm.flow.vo.TaskAssignVO; import org.springblade.mdm.program.entity.NcNode; import org.springblade.mdm.program.entity.NcProgram; +import org.springblade.mdm.program.entity.ProcessProgRef; import org.springblade.mdm.program.service.NcNodeService; import org.springblade.mdm.program.service.NcProgramService; +import org.springblade.mdm.program.service.ProcessProgRefService; +import org.springblade.mdm.program.vo.DncSendBackData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 鍥哄寲娴佺▼鏈嶅姟 */ @Service +@AllArgsConstructor public class CureFlowService { - @Autowired - private RuntimeService runtimeService; - @Autowired - private AutoAssignUsersService autoAssignUsersService; - @Autowired - private IdentityService identityService; + private final RuntimeService runtimeService; - @Autowired - private NcProgramService ncProgramService; - @Autowired - private NcNodeService ncNodeService; - @Autowired - private MachineService machineService; + private final HistoryService historyService; + + private final IdentityService identityService; + + private final NcProgramService ncProgramService; + + private final MachineService machineService; + + private final ProcessProgRefService processProgRefService; /** * 鍥哄寲娴佺▼鐨刱ey */ @@ -47,24 +55,87 @@ * @param programId 绋嬪簭id */ public void start(long programId){ + + + //pinst.getProcessInstanceId(); + int a=1; + //log.info() + } + + @Transactional + public void startCure(List<NcProgram> programs) { + //DncSendBackData sendBackData; + //List<Long> ncProgramIdList = dataList.stream().map(DncSendBackData::getId).toList(); + //Map<String,List<NcProgram>> groupedProgram = groupProgramsByMachineCode(ncProgramIdList); + //List<NcProgram> programs = ncProgramService.listByIds(ncProgramIdList); + //鏍规嵁鍒嗙粍鍚姩娴佺▼锛屽苟鎻掑叆鍏宠仈琛� + programs.forEach(this::startOne); + } + + /** + * 鍚姩涓�涓暟鎺х▼搴忕殑鍥哄寲娴佺▼ + * @param prog 鏁版帶绋嬪簭瀹炰綋 + */ + void startOne(NcProgram prog){ Map<String, Object> vars = new HashMap<>(); - NcProgram prog = ncProgramService.getById(programId); - NcNode progNode = ncNodeService.getById(programId); - Machine machine = machineService.getByCode(progNode.getMachineCode()); - vars.put("machineCode",machine.getCode()); + + //NcProgram prog = programs.get(0); + Machine machine = machineService.getByCode(prog.getMachineCode()); + vars.put("machineCode",prog.getMachineCode()); vars.put("machineMode",machine.getName()); vars.put("processEdition",prog.getProcessEdition()); - vars.put("programId",programId); - vars.put("program",progNode); + //璇ョ▼搴忓湪璁″垝浠诲姟鏃� 鑾峰彇缂栧埗锛屾牎瀵癸紝瀹℃壒鐨勪汉鍛橈紝浣滀负榛樿鐢ㄦ埛锛屽叾涓紪鍒舵椂绗竴涓浐瀹氱殑鐢ㄦ埛 + ProcessProgRef preRef = processProgRefService.lastDispatchDataByNcProgramId(prog.getId()); + //鑾峰彇瀹℃壒鐢ㄦ埛 + List<HistoricTaskInstance> historicTasks = historyService.createHistoricTaskInstanceQuery() + .processInstanceId(preRef.getProcessInstanceId()) + .orderByHistoricTaskInstanceEndTime().desc() + .list(); + + String programmer = null; + String checker = null; + String senior = null; + + for (HistoricTaskInstance task : historicTasks) { + // 鑾峰彇浠诲姟鐨勫姙鐞嗕汉 + if(task.getTaskDefinitionKey().equals("programmingTask")){ + //缂栧埗 + programmer = task.getAssignee(); + }else if(task.getTaskDefinitionKey().equals("check")){ + //鏍″ + checker = task.getAssignee(); + }else if(task.getTaskDefinitionKey().equals("senior")){ + //瀹℃牳 + senior = task.getAssignee(); + } + + } + vars.put("programmer",programmer); + vars.put("checker",checker); + vars.put("senior",senior); String businessKey = "0";//涓氬姟琛╧ey identityService.setAuthenticatedUserId(String.valueOf(AuthUtil.getUserId()));//璁剧疆娴佺▼鍙戣捣浜� ProcessInstance pinst = runtimeService.startProcessInstanceByKey(PROCESS_KEY,businessKey,vars); - int a=1; - //log.info() + ProcessProgRef ref = new ProcessProgRef(); + ref.setProcessInstanceId(pinst.getId()); + ref.setNcProgramId(prog.getId()); + + processProgRefService.save(ref); + } + /** + * 灏嗙▼搴忔寜鐓ф満鍣ㄤ唬鐮佸垎缁� + * @param ncProgramIdList + * @return + */ + /* + Map<String,List<NcProgram>> groupProgramsByMachineCode(List<Long> ncProgramIdList){ + List<NcProgram> programs = ncProgramService.listByIds(ncProgramIdList); + return programs.stream().collect(Collectors.groupingBy(NcProgram::getMachineCode)); + }*/ } -- Gitblit v1.9.3