blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
@@ -51,13 +51,6 @@ private final FlowProgramFileService flowProgramFileService; /** * åºåæµç¨çkey */ private static final String PROCESS_KEY = "program-cure"; @Transactional public void startCure(List<NcNode> programPackageList, Map<Long,List<NcNode>> allFlowProgramFiles) { //æ ¹æ®åç»å¯å¨æµç¨ï¼å¹¶æå ¥å ³è表 @@ -71,7 +64,7 @@ * @param programPackage ç¨åºå å èç¹å®ä½ */ public void startOne(NcNode programPackage,List<NcNode> programNodes) { Map<String, Object> vars = null; Map<String, Object> vars = new HashMap<>(); //该ç¨åºå¨è®¡å任塿¶ è·åç¼å¶ï¼æ ¡å¯¹ï¼å®¡æ¹ç人åï¼ä½ä¸ºé»è®¤ç¨æ·ï¼å ¶ä¸ç¼å¶æ¶ç¬¬ä¸ä¸ªåºå®çç¨æ· if(programPackage.getProcessInstanceId() != null) { //è·å审æ¹ç¨æ· @@ -79,13 +72,21 @@ .processInstanceId(programPackage.getProcessInstanceId()).includeProcessVariables() .singleResult(); if(instance != null) {//使ç¨ä»»å¡æ´¾å·¥æµç¨çåé vars = new HashMap<>(instance.getProcessVariables()); vars.remove("proessInstanceId"); Map<String, Object> oldVars = instance.getProcessVariables(); //æºåºç¼å· vars.put(FlowContants.MACHINE_CODE,oldVars.get(FlowContants.MACHINE_CODE)); //æºåºåå· vars.put(FlowContants.MACHINE_MODE,oldVars.get(FlowContants.MACHINE_MODE)); vars.put(FlowContants.PROCESS_NO,oldVars.get(FlowContants.PROCESS_NO)); vars.put(FlowContants.PROCESS_NAME,oldVars.get(FlowContants.PROCESS_NAME)); vars.put(FlowContants.PROCESS_EDITION,oldVars.get(FlowContants.PROCESS_EDITION)); vars.put(FlowContants.CRAFT_EDITION, oldVars.get(FlowContants.CRAFT_EDITION)); vars.put(FlowContants.DRAWING_NO,oldVars.get(FlowContants.DRAWING_NO)); vars.put(FlowContants.DRAWING_NO_EDITION,oldVars.get(FlowContants.DRAWING_NO_EDITION)); vars.put(FlowContants.PRODUCT_MODEL,oldVars.get(FlowContants.PRODUCT_MODEL)); } } if(vars == null){ vars = new HashMap<>(); } //æ¥æ¾åå²å®é ç审æ¹äºº @@ -100,7 +101,8 @@ vars.put(FlowContants.LAST_STEP_USER_NICKNAME, AuthUtil.getNickName()); vars.put(FlowContants.TITLE,programPackage.getName()+"-åºå");//èªå¨å¢å æ é¢ ProcessInstance inst = runtimeService.startProcessInstanceByKey(PROCESS_KEY,businessKey,vars); ProcessInstance inst = runtimeService.startProcessInstanceByKey(FlowContants.CURE_PROCESS_KEY,businessKey,vars); //æ´æ°ç¨åºå åèç¹çæµç¨å®ä¾id programPackage.setProcessInstanceId(inst.getProcessInstanceId()); @@ -152,9 +154,10 @@ } vars.put("programmer",programmer); vars.put("checker",checker); vars.put("senior",senior); vars.put(FlowContants.PROGRAMMER,programmer); vars.put(FlowContants.CHECKER,checker); vars.put(FlowContants.SENIOR,senior); vars.put(FlowContants.ASSIGNEE,programmer); } /** * å°ç¨åºæç §æºå¨ä»£ç åç» blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java
@@ -15,6 +15,7 @@ import org.springframework.stereotype.Component; import java.time.LocalDate; import java.util.Arrays; import java.util.Date; import java.util.List; @@ -68,6 +69,12 @@ //ç§»å¨å°åºåæ ä¸çæºåºèç¹ä¸å± String newParentIds = machineNode.getParentIds()+","+machineNode.getId(); //æ´æ°æºåº ä¸å±èç¹çæ°æ® 为æ§çæ¬ï¼éå®(ææ°çæ¬=0ï¼lock=1) this.nodeService.lambdaUpdate().likeRight(NcNode::getParentIds, newParentIds) .in(NcNode::getNodeType, Arrays.asList(NcNode.TYPE_PROGRAM_PACKAGE,NcNode.TYPE_PROGRAM_FILE)) .set(NcNode::getIsLastEdition,0).set(NcNode::getIsLocked,1).update(); for(NcNode hisNode : historyNodes){ if(!hisNode.getId().equals(pkgNode.getId())){ hisNode.setIsLastEdition(0); blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml
@@ -26,5 +26,6 @@ and a.create_time <= #{query.createTimeEnd} </if> </where> order by a.create_time desc </select> </mapper> blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
@@ -103,7 +103,7 @@ //ç®å½ï¼ææ¯ç¨åºå ï¼ //æ¥è¯¢æ°æ®åºï¼å¯¹åºä¸æè½ç¡®è®¤æ¶ææçç¨åºå String packageName = StringUtils.removeEnd(entryName,"/"); NcNode programPackageNode = ncNodeService.getLastEditionProgramPackage(packageName); NcNode programPackageNode = ncNodeService.getLastEditionTryingProgramPackage(packageName); //List<NcNode> pkgList = ncNodeService.lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE).eq(NcNode::getName, packageName).eq(NcNode::getIsLastEdition,1).list(); //if(!pkgList.isEmpty()) { //NcNode programPackageNode = pkgList.get(0); @@ -180,7 +180,7 @@ for(String dir : dirList){ String programPackageName = StringUtils.removeEnd(dir,"/"); NcNode oriProgramPkg = this.ncNodeService.getLastEditionProgramPackage(programPackageName); NcNode oriProgramPkg = this.ncNodeService.getLastEditionTryingProgramPackage(programPackageName); if(oriProgramPkg == null){ log.warn("æä»¶å¤¹æªåç°å¹é çç¨åºå å{}",dir); continue; blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
@@ -101,7 +101,6 @@ public List<NcNodeVO> searchList(NcNodeQueryVO queryVO) { //1.æ ¹æ®å ³è¿ååèç¹ç±»åæ¥è¯¢åå§å表,æ¥è¯¢çåå§å表ï¼éè¦hasChildåæ®µï¼æä»¥ä½¿ç¨mapper.xml List<NcNodeVO> oriList = this.getBaseMapper().searchList(queryVO); //List<NcNode> list = this.lambdaQuery().eq(NcNode::getNodeType, queryVO.getNodeType()).like(NcNode::getName, queryVO.getName()).list(); if ("10".equals(queryVO.getNodeType())) { //æç´¢çæ ¹çº§å«ï¼ç´æ¥è¿å return oriList; @@ -181,13 +180,14 @@ } /** * è·åâç¨åºå åâçææ°çæ¬ * è·åâç¨åºå åâè¯åçææ°çæ¬ * @param name èç¹åç§° * @return ææ°çæ¬ç¨åºæ¥åèç¹ */ public NcNode getLastEditionProgramPackage(String name){ public NcNode getLastEditionTryingProgramPackage(String name){ List<NcNode> pkgList = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE) .eq(NcNode::getName, name).eq(NcNode::getIsLastEdition,1).orderByDesc(NcNode::getCreateTime).list(); .eq(NcNode::getName, name).eq(NcNode::getIsCured,0).likeRight(NcNode::getParentIds,"0,1,") .eq(NcNode::getIsLastEdition,1).orderByDesc(NcNode::getCreateTime).list(); if(pkgList.isEmpty()){ return null; blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramApprovedService.java
@@ -26,6 +26,7 @@ import org.springblade.mdm.program.vo.NcProgramExportDncQueryVO; import org.springblade.mdm.utils.CustomBinaryWriter; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -55,12 +56,9 @@ * @param query æ¥è¯¢åæ° * @return */ @Transactional(readOnly = true) public IPage<NcProgramExportDncPageVO> exportDncPageQuery(NcProgramExportDncQueryVO query) { IPage<NcProgramExportDncPageVO> page = this.getBaseMapper().exportDncPageQuery(Condition.getPage(query),query); return page; return this.getBaseMapper().exportDncPageQuery(Condition.getPage(query),query); } blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,43 @@ package org.springblade.mdm.test; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.springblade.core.tool.api.R; import org.springblade.mdm.program.entity.NcNode; import org.springblade.mdm.program.service.NcNodeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @Slf4j @RestController @RequestMapping("/test/") @Tag(name = "æµè¯", description = "æµè¯") public class MyTestController { @Autowired private NcNodeService service; /** * æ°å¢ */ @GetMapping("/like") @Operation(summary = "like", description = "like") public R<Object> like() { try { List<NcNode> nodes = service.lambdaQuery() .likeRight(NcNode::getParentIds,"0,2,").list(); return R.data(nodes); }catch (Exception e) { log.error("åæ¥å¤±è´¥", e);; return R.fail(e.getMessage()); } } } blade-service/blade-mdm/src/main/resources/processesbpmn/program-cure.bpmn20.xml
@@ -2,8 +2,7 @@ <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.flowable.org/processdef"> <process id="program-cure" name="åºåæµç¨" isExecutable="true"> <startEvent id="sid-abe970b9-1bee-49a1-91b4-1184c47c10b7"/> <userTask id="cureProgramTask" name="åºåç¼å¶" flowable:assignee="${programmer}"/> <userTask id="cureProgramTask" name="åºåç¼å¶" flowable:assignee="${assignee}"/> <sequenceFlow id="sid-09c7cf44-bb1a-40f4-b231-919afae5c02f" sourceRef="sid-abe970b9-1bee-49a1-91b4-1184c47c10b7" targetRef="cureProgramTask"/> <endEvent id="end" name="åºåç»æ"/> <userTask id="seniorApproveTask" name="é«å¸å®¡æ ¸" flowable:assignee="${assignee}"/>