From 9bc9760ef1d80c49a76b3abe16cb1408e5d185b7 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期五, 08 八月 2025 11:46:57 +0800
Subject: [PATCH] 替换流程基本实现
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/ReplaceProgramFileMapper.java | 1
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/ReplaceProgramMapper.xml | 3 +
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/ReplaceFlowController.java | 10 +-
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ReplaceProgramFileService.java | 4 +
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java | 14 ++++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ReplaceFlowService.java | 44 ++++++++++++--
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/ReplaceFlowStartVO.java | 4
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/replace/ReplaceFinishListener.java | 55 +++++++++++------
8 files changed, 101 insertions(+), 34 deletions(-)
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/ReplaceFlowController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/ReplaceFlowController.java
index 3ec3c5a..ba4f0b1 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/ReplaceFlowController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/ReplaceFlowController.java
@@ -47,12 +47,12 @@
@PostMapping("/prestart")
- @Operation(summary = "鍑嗗绋嬪簭鏇挎崲娴佺▼", description = "鍑嗗绋嬪簭鏇挎崲娴佺▼锛屾墦寮�鐣岄潰涔嬪墠璋冪敤锛岃皟鐢ㄤ箣鍚庝細鍒濆鍖栨枃浠跺垪琛�")
- public R<Long> prestart(@Parameter(description = "绋嬪簭鍖呭悕 鑺傜偣鐨刬d") Long nodeId) {
- long tempId = System.currentTimeMillis();
+ @Operation(summary = "鍑嗗绋嬪簭鏇挎崲娴佺▼", description = "鍑嗗绋嬪簭鏇挎崲娴佺▼锛屾墦寮�鐣岄潰涔嬪墠璋冪敤锛岃皟鐢ㄤ箣鍚庝細鍒濆鍖栨枃浠跺垪琛�,")
+ public R<String> prestart(@Parameter(description = "绋嬪簭鍖呭悕 鑺傜偣鐨刬d") Long nodeId) {
+ String tempInstanceId = "REP"+System.currentTimeMillis();
try {
- replaceFlowService.pre(nodeId,tempId);
- return R.data(tempId);
+ replaceFlowService.pre(nodeId,tempInstanceId);
+ return R.data(tempInstanceId);
}catch(Exception e){
log.error("棰勫紑濮嬮敊璇�",e);
return R.fail(e.getMessage());
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/replace/ReplaceFinishListener.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/replace/ReplaceFinishListener.java
index 79347d4..d624e59 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/replace/ReplaceFinishListener.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/replace/ReplaceFinishListener.java
@@ -7,6 +7,7 @@
import org.springblade.mdm.flow.entity.FlowProgramFile;
import org.springblade.mdm.flow.service.ApproveRecordService;
import org.springblade.mdm.flow.service.FlowProgramFileService;
+import org.springblade.mdm.flow.service.ReplaceFlowService;
import org.springblade.mdm.program.entity.NcNode;
import org.springblade.mdm.program.entity.NcProgramApproved;
import org.springblade.mdm.program.service.NcNodeService;
@@ -25,8 +26,6 @@
@Autowired
private RuntimeService runtimeService;
@Autowired
- private NcProgramApprovedService approvedService;
- @Autowired
private ApproveRecordService approveRecordService;
@Autowired
private FlowProgramFileService flowProgramFileService;
@@ -38,31 +37,47 @@
* @param execution 鎵ц瀵硅薄
*/
public void handle(DelegateExecution execution) {
+ ReplaceFlowService a;
// 鎵ц涓氬姟閫昏緫
String instId = execution.getProcessInstanceId();
+ Long nodeId = runtimeService.getVariable(execution.getId(),ReplaceFlowService.NODE_ID,Long.class);
log.info("浜嬩欢鍚嶇О{}锛宨nstid={}" , execution.getEventName(),instId);
-
-
- log.info("娴佺▼宸插畬鎴恑n repalceFinishListener");
+ List<FlowProgramFile> programFiles = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, instId).list();
+ replacePragram(nodeId,programFiles);
+ log.info("娴佺▼宸插畬鎴� in replaceFinishListener");
}
- void updateFlowProgramFile(String instId){
- List<FlowProgramFile> programFiles = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, instId).list();
- if(!programFiles.isEmpty()) {
- FlowProgramFile pf = programFiles.get(0);
- NcProgramApproved approved = new NcProgramApproved();
- approved.setProgramName(pf.getProgramName());
+ /**
+ * 鏇挎崲鍘熸潵绋嬪簭鐨勬枃浠�
+ * @param programFiles 鏂扮殑鏂囦欢
+ */
+ void replacePragram(Long nodeId,List<FlowProgramFile> programFiles){
+ NcNode packageNode = ncNodeService.getById(nodeId);
- NcNode pkgNode = ncNodeService.getProgramPackageByName(pf.getProgramName());
- if(pkgNode!=null) {
- approved.setNcNodeId(pkgNode.getId());//绋嬪簭鍖呰妭鐐筰d
- approvedService.save(approved);
- }else{
- log.warn("鏈壘鍒板悕涓簕}鐨勭▼搴忓寘",pf.getProgramName());
- }
- }else{
- log.warn("娌℃湁绋嬪簭鏂囦欢");
+ List<NcNode> programFileNodes = ncNodeService.getProgramFilesByPackageId(nodeId);
+ for(NcNode fileNode: programFileNodes){
+ fileNode.setIsLastEdition(0);
+ ncNodeService.updateById(fileNode);
}
+
+ for(FlowProgramFile programFile: programFiles){
+ NcNode node = new NcNode();
+ node.setIsLastEdition(1);
+ node.setProcessEdition(packageNode.getProcessEdition());
+ node.setName(programFile.getName());
+ node.setParentIds(packageNode.getParentIds()+","+packageNode.getId());
+ node.setParentId(packageNode.getId());
+ node.setFlowProgramFileId(programFile.getId());
+ node.setMachineCode(packageNode.getMachineCode());
+ node.setProcessName(packageNode.getProcessName());
+ node.setNodeType(NcNode.TYPE_PROGRAM_FILE);
+ node.setVersionNumber(1);
+ node.setCraftEdition(packageNode.getCraftEdition());
+ node.setIsLocked(0);
+
+ ncNodeService.save(node);
+ }
+
}
void updateApproveRecordNodeId(NcNode pkgNode){
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/ReplaceProgramFileMapper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/ReplaceProgramFileMapper.java
index 9446499..b042bf0 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/ReplaceProgramFileMapper.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/ReplaceProgramFileMapper.java
@@ -7,4 +7,5 @@
public interface ReplaceProgramFileMapper extends BladeMapper<ReplaceProgramFile> {
+ void deleteByTempId(Long tempId);
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/ReplaceProgramMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/ReplaceProgramMapper.xml
index 37455f5..b033b59 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/ReplaceProgramMapper.xml
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/mapper/ReplaceProgramMapper.xml
@@ -8,6 +8,9 @@
<result column="update_time" property="updateTime"/>
<result column="is_deleted" property="isDeleted"/>
</resultMap>
+ <delete id="deleteByTempId">
+ delete from mdm_replace_program_file where temp_id=#{tempId}
+ </delete>
</mapper>
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ReplaceFlowService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ReplaceFlowService.java
index 8a8c43b..c1d1eef 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ReplaceFlowService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ReplaceFlowService.java
@@ -38,12 +38,14 @@
private final FlowProgramFileService flowProgramFileService;
private final ReplaceProgramFileService replaceProgramFileService;
private final MachineService machineService;
+
+ public static final String NODE_ID = "nodeId";
/**
* 杞淳锛屽苟璁板綍鑷繁鐨勫娉ㄤ俊鎭�
* @param nodeId 鏇挎崲鐨勮妭鐐筰d
*/
@Transactional
- public void pre(long nodeId,long tempId) {
+ public void pre(long nodeId,String tempInstanceId) {
List<NcNode> fileNodes = nodeService.lambdaQuery()
.eq(NcNode::getParentId, nodeId)
.eq(NcNode::getIsLastEdition,1)
@@ -53,14 +55,23 @@
List<FlowProgramFile> programFiles = flowProgramFileService.lambdaQuery()
.in(FlowProgramFile::getId, fileIds).list();
+
//灏嗙幇鏈夋枃浠跺鍒跺埌鐙珛鐨勮〃涓紝鍚庣画浣滀负瀹℃壒鐨勬枃浠讹紝瀹℃壒鐣岄潰璋冪敤鐨勬帴鍙d篃涓嶅悓锛屾渶濂藉崟鐙紑鍙�
for(FlowProgramFile programFile : programFiles) {
+ /*
ReplaceProgramFile replaceProgramFile = new ReplaceProgramFile();
BeanUtils.copyProperties(programFile, replaceProgramFile);
EntityUtil.clearBaseProperties(replaceProgramFile);
replaceProgramFile.setTempId(tempId);
replaceProgramFileService.save(replaceProgramFile);
+
+ */
+ FlowProgramFile newFile = new FlowProgramFile();
+ BeanUtils.copyProperties(programFile, newFile);
+ EntityUtil.clearBaseProperties(newFile);
+ newFile.setProcessInstanceId(tempInstanceId);
+ flowProgramFileService.save(newFile);
}
}
@@ -68,7 +79,7 @@
* 鍚姩鏇挎崲娴佺▼
*/
@Transactional
- public String start(ReplaceFlowStartVO startVO){
+ public void start(ReplaceFlowStartVO startVO){
Map<String, Object> vars = new HashMap<>();
vars.put(FlowContants.ASSIGNEE,startVO.getAssignee());//绗竴涓鎵圭敤鎴�
@@ -91,14 +102,35 @@
vars.put(FlowContants.DRAWING_NO_EDITION,programPackge.getDrawingNoEdition());
vars.put(FlowContants.PRODUCT_MODEL,programPackge.getProductModel());
-
+ vars.put(NODE_ID, startVO.getNodeId());
identityService.setAuthenticatedUserId(String.valueOf(AuthUtil.getUserId()));//璁剧疆娴佺▼鍙戣捣浜�
- ProcessInstance inst = runtimeService.startProcessInstanceByKey(FlowContants.REPLACE_PROCESS_KEY,"0",vars);
+ ProcessInstance inst = runtimeService.startProcessInstanceByKey(FlowContants.REPLACE_PROCESS_KEY,startVO.getNodeId()+"",vars);
+ //replaceProgramFileService.lambdaUpdate().eq(ReplaceProgramFile::getTempId,startVO.getTempId()).set(ReplaceProgramFile::getProcessInstanceId,inst.getProcessInstanceId());
+ flowProgramFileService.lambdaUpdate()
+ .eq(FlowProgramFile::getProcessInstanceId,startVO.getTempInstanceId())
+ .set(FlowProgramFile::getProcessInstanceId,inst.getProcessInstanceId()).update();
- replaceProgramFileService.lambdaUpdate().eq(ReplaceProgramFile::getTempId,startVO.getTempId()).set(ReplaceProgramFile::getProcessInstanceId,inst.getProcessInstanceId());
+ /*
+ List<ReplaceProgramFile> repFiles = replaceProgramFileService.lambdaQuery().eq(ReplaceProgramFile::getTempId,startVO.getTempId()).list();
- return inst.getProcessInstanceId();
+ for(ReplaceProgramFile repFile : repFiles) {
+ FlowProgramFile flowProgramFile = new FlowProgramFile();
+ BeanUtils.copyProperties(repFile, flowProgramFile);
+ flowProgramFile.setProgramName(programPackge.getName());
+
+ EntityUtil.clearBaseProperties(flowProgramFile);
+ flowProgramFile.setProcessInstanceId(inst.getId());
+ flowProgramFile.setIsCured(0);
+
+ flowProgramFileService.save(flowProgramFile);
+ }
+
+ //鏆傛椂娉ㄩ噴锛屾祴璇曟柟渚�
+ replaceProgramFileService.deleteByTempId(startVO.getTempId());
+
+ */
+ //return inst.getProcessInstanceId();
}
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ReplaceProgramFileService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ReplaceProgramFileService.java
index a95fc2f..c79d935 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ReplaceProgramFileService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ReplaceProgramFileService.java
@@ -215,4 +215,8 @@
//System.out.println(tempstr);
return Func.toInt(tempstr);
}
+
+ public void deleteByTempId(Long tempId) {
+ this.baseMapper.deleteByTempId(tempId);
+ }
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/ReplaceFlowStartVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/ReplaceFlowStartVO.java
index b82009d..ea89e0c 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/ReplaceFlowStartVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/vo/ReplaceFlowStartVO.java
@@ -12,8 +12,8 @@
private String title;
@Schema(description = "鏇挎崲鐨勭▼搴忓寘鍚峣d")
private Long nodeId;
- @Schema(description = "涓存椂id,prestart鎺ュ彛鍙戦��")
- private Long tempId;
+ @Schema(description = "涓存椂id,prestart鎺ュ彛鍙戦��,鍚姩娴佺▼鏃跺洖浼�")
+ private String tempInstanceId;
@Schema(description = "澶勭悊浜篿d")
private Long assignee;
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
index 05f5f1f..b54ece4 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
@@ -158,7 +158,9 @@
* @return 绋嬪簭鎶ュ寘鍚嶇殑鑺傜偣
*/
public NcNode getProgramPackageByName(String programName) {
- List<NcNode> pkgs = this.lambdaQuery().eq(NcNode::getName, programName).eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE).list();
+ List<NcNode> pkgs = this.lambdaQuery().eq(NcNode::getName, programName)
+ .eq(NcNode::getIsLastEdition,1)
+ .eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE).list();
if(pkgs.isEmpty()){
return null;
}else{
@@ -269,4 +271,14 @@
public void deleteSubNodes(Long nodeId) {
this.baseMapper.deleteSubNodes(nodeId);
}
+
+ /**
+ * 鑾峰彇绋嬪簭鍖呬笅鎵�鏈夊眰搴忔枃浠惰妭鐐�
+ * @param packageNodeId 绋嬪簭鍖呭悕 鑺傜偣id
+ * @return 鍖呬笅灞炵殑绋嬪簭鏂囦欢
+ */
+ public List<NcNode> getProgramFilesByPackageId(Long packageNodeId) {
+ return this.lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_FILE)
+ .eq(NcNode::getParentId,packageNodeId).eq(NcNode::getIsLastEdition,1).list();
+ }
}
--
Gitblit v1.9.3