From 55e316d9f3ee4e3fd0ae21b193efa7b358a0ae00 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期六, 23 八月 2025 00:17:41 +0800
Subject: [PATCH] 不可用流程修复
---
.gitignore | 2
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java | 32 +++++--
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java | 34 ++++----
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java | 48 +++++++++---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/DispatchFinishListener.java | 75 ------------------
5 files changed, 75 insertions(+), 116 deletions(-)
diff --git a/.gitignore b/.gitignore
index efc7569..d085dc3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,7 +25,7 @@
*.war
*.ear
/target
-
+rebel.xml
# Flattened pom
.flattened-pom.xml
/**/.flattened-pom.xml
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java
index 0755078..92d3bdc 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java
@@ -38,6 +38,7 @@
import java.util.Arrays;
import java.util.Date;
import java.util.List;
+import java.util.Optional;
/**
* 鏅�氭淳宸ュ畬鎴愭暟鎹鐞嗗櫒锛屽姛鑳斤細鎻掑叆瀹℃壒琛ㄦ暟鎹紝DispatchFinishListener璋冪敤
@@ -78,8 +79,16 @@
//璇曞垏鐨�
pkgNode.setIsCured(1);
pkgNode.setIsLocked(NcNode.UNLOCK);
+
+ Optional<NcNode> optOldCuredPackageNode = nodeService.lambdaQuery().eq(NcNode::getName,pkgNode.getName())
+ .eq(NcNode::getProcessNo,pkgNode.getProcessNo())
+ .eq(NcNode::getProcessEdition,pkgNode.getProcessEdition())
+ .eq(NcNode::getIsLastEdition,1).eq(NcNode::getIsCured,1).oneOpt();
//璁剧疆杩囨湡鏃ユ湡
- pkgNode.upgradeVersionNumber();
+ if(optOldCuredPackageNode.isEmpty()){
+ //涔嬪墠 娌℃湁宸插浐鍖栫殑绋嬪簭鍖呭悕锛屽垯鐩存帴鏇存柊鐗堟湰鍙凤紝濡傛灉鏈夛紝閭e氨浣跨敤node鐜板湪鐨勭増鏈彿锛屽洜涓轰笉鍙敤杞负璇曞垏锛屽鎵瑰畬鎴愬凡缁忓崌绾ersion
+ pkgNode.upgradeVersionNumber();
+ }
pkgNode.setExpireDate(calculateExpireDate());
nodeService.updateById(pkgNode);
@@ -121,20 +130,20 @@
hisPackageNode.setParentIds(machineNode.getParentIds());//绋嬪簭鍖呬笌鏈哄簥鑺傜偣鍚岀骇
//澶勭悊绋嬪簭鍖呬笅灞傜殑绋嬪簭鑺傜偣111
- List<NcNode> programNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,hisPackageNode.getId()).list();
+ List<NcNode> oriProgramNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,hisPackageNode.getId()).list();
FlowProgramFile pfile;
- for(NcNode programNode : programNodes){
- programNode.setParentIds(hisPackageNode.getParentIds()+","+hisPackageNode.getId());
- programNode.setIsLastEdition(0);
+ for(NcNode oldProgramNode : oriProgramNodes){
+ oldProgramNode.setParentIds(hisPackageNode.getParentIds()+","+hisPackageNode.getId());
+ oldProgramNode.setIsLastEdition(0);
- pfile = flowProgramFileService.getById(programNode.getFlowProgramFileId());
- if(programNode.getParentId().equals(pkgNode.getId()) && !pfile.isProgram()){
+ pfile = flowProgramFileService.getById(oldProgramNode.getFlowProgramFileId());
+ if(oldProgramNode.getParentId().equals(pkgNode.getId()) && !pfile.isProgram()){
//褰撳墠鍥哄寲绋嬪簭鍖呭悕涓嬬殑鈥滃叾浠栨枃浠垛�濋潪绋嬪簭鏂囦欢銆備笉璁剧疆涓鸿�佺増鏈紝鐩存帴鎸埌鍥哄寲鏍戜笅,涓や釜缃戠粶涔嬮棿鍙氦鎹㈢▼搴忔枃浠讹紝鍏朵粬鏂囦欢鍙兘淇濈暀
- programNode.setIsLastEdition(1);
+ oldProgramNode.setIsLastEdition(1);
}
}
- nodeService.updateBatchById(programNodes);
+ nodeService.updateBatchById(oriProgramNodes);
}
nodeService.updateBatchById(historyProgramPackageNodes);
@@ -144,7 +153,10 @@
List<FlowProgramFile> files = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId,pkgNode.getProcessInstanceId()).list();
for(FlowProgramFile flowProgramFile : files){
NcNode newProgNode = new NcNode();
+
BeanUtils.copyProperties(pkgNode,newProgNode);
+ EntityUtil.clearBaseProperties(newProgNode);
+
newProgNode.setName(flowProgramFile.getName());
newProgNode.setNodeType(NcNode.TYPE_PROGRAM_FILE);
newProgNode.setParentId(pkgNode.getId());
@@ -157,8 +169,6 @@
//淇敼鏂囦欢鍐呭鏇存柊娉ㄩ噴锛屽苟鏇存柊鏂囦欢鏁版嵁鐨勫湴鍧�
///鏇挎崲娉ㄩ噴鍚庢�绘槸涓嶈鍟�
setGhAnnotation(flowProgramFile,machine.getMachineGroupCode(),annoDicts);
-
- //flowProgramFileService.updateById(flowProgramFile);
}
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/DispatchFinishListener.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/DispatchFinishListener.java
index aa2ac1d..bff2774 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/DispatchFinishListener.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/DispatchFinishListener.java
@@ -64,79 +64,4 @@
log.info("娴佺▼宸插畬鎴恑n DispatchFinishListener");
}
- /**
- * 鑷姩鍒涘缓绋嬪簭鑺傜偣
- * @param progProperties 娴佺▼灞炴��
- */
- /*
- void createProgramNodes(FlowProgramProperties progProperties){
- if(!FlowContants.Y.equals(progProperties.getHasCuredProgram())) {
- //璇曞垏鎴栬�呭亸绂�
- ncNodeAutoCreateService.createNodeTreeWithProgram(progProperties);
- }else{
- //鏈夊浐鍖�
- //TODO 杩樿鍖哄垎鏄惁鍙敤鍒ゅ畾鏄惁鍙敤銆傚彲鐢ㄧ晫
- if(FlowContants.N.equals(progProperties.getCureProgramUseable())) {
- //鍥哄寲绋嬪簭涓嶅彲鐢紝闇�瑕侀噸鏂板缓绔嬬▼搴忓寘鍚嶅拰鏂囦欢鑺傜偣;鍙敤鎯呭喌鍦ㄦ祦绋嬪鎵逛腑宸茬粡鍗囩骇杩囪妭鐐逛簡
- NcNode curedProgramPackage = ncNodeService.getById(Func.toLong(progProperties.getCuredNodeId()));
-
- NcNode newCuredPkgNode = new NcNode();
- BeanUtils.copyProperties(curedProgramPackage, newCuredPkgNode);
- EntityUtil.clearBaseProperties(newCuredPkgNode);
- newCuredPkgNode.setIsLastEdition(1);
- newCuredPkgNode.setIsLocked(0);
- newCuredPkgNode.upgradeVersionNumber();
- ncNodeService.save(newCuredPkgNode);
-
- //鏂扮殑娴佺▼瀵瑰簲鐨勬枃浠舵洿鏂板埌鏂拌妭鐐逛笅
- List<FlowProgramFile> newFlowFileList = flowProgramFileService.listByProcessInstanceId(progProperties.getProcessInstanceId());
- for (FlowProgramFile newFlowFile : newFlowFileList) {
- NcNode newProgramNode = new NcNode();
- BeanUtils.copyProperties(newCuredPkgNode, newProgramNode);
- EntityUtil.clearBaseProperties(newProgramNode);
-
- newProgramNode.setName(newFlowFile.getName());
- newProgramNode.setNodeType(NcNode.TYPE_PROGRAM_FILE);
- newProgramNode.setParentId(newCuredPkgNode.getId());
- newProgramNode.setIsLastEdition(1);
- newProgramNode.setIsLocked(0);
- newProgramNode.setParentIds(newCuredPkgNode.getParentIds() + "," + newCuredPkgNode.getId());
- newProgramNode.setFlowProgramFileId(newFlowFile.getId());
- ncNodeService.save(newProgramNode);
- }
-
- //鍘熻妭鐐规洿鏂颁负鑰佺増鏈紝閿佸畾
- curedProgramPackage.setIsLastEdition(0);
- curedProgramPackage.setIsLocked(1);
- ncNodeService.updateById(curedProgramPackage);
- }
- }
- }
- */
- /**
- * 淇濆瓨瀹℃壒瀹屾垚鐨勮褰�
- * @param packageNode
- * @param props
- */
- /*
- void addApproveTable(NcNode packageNode,FlowProgramProperties props){
- NcProgramApproved approved = new NcProgramApproved();
-
- approved.setProgramName(packageNode.getName());
- approved.setNcNodeId(packageNode.getId());//绋嬪簭鍖呰妭鐐筰d
- approved.setTitle(props.getTitle());
- approved.setProgrammerId(props.getProgrammerId());
- approvedService.save(approved);
-
- }
-
-
- void updateApproveRecordNodeId(String processInstanceId,Long nodeId){
- //鏇存柊瀹℃壒璁板綍鐨刵cNodeId
- approveRecordService.lambdaUpdate()
- .eq(ApproveRecord::getProcessInstanceId, processInstanceId)
- .set(ApproveRecord::getNcNodeId,nodeId).update();
- }
-
- */
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
index 00a9793..f0efed3 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
@@ -45,27 +45,44 @@
String instId = props.getProcessInstanceId();
String programPkgName = NcNodeService.genProgramName(props.getDrawingNo(),props.getProcessNo());
- createProgramNodes(props);
+ //NcNode packageNode =createProgramNodes(props);
+ NcNode packageNode;// = ncNodeAutoCreateService.createNodeTreeWithProgram(props);
+ if(FlowContants.Y.equals(props.getHasCuredProgram()) && FlowContants.Y.equals(props.getCureProgramUseable())){
+ //鏈夊浐鍖栵紝涓旂▼搴忓彲鐢�
+ packageNode = ncNodeService.getById(props.getCuredNodeId());
- //TODO 鍋忕鍗曪紝鍜屽凡缁忓浐鍖栫殑绋嬪簭锛屾病鏈夊鐞�,:宸茬粡澶勭悊娌℃湁楠岃瘉
- NcNode packageNode;
+ }else{
+ packageNode = ncNodeAutoCreateService.createNodeTreeWithProgram(props);
+ }
+
+ if(FlowContants.Y.equals(props.getHasCuredProgram()) && FlowContants.N.equals(props.getCureProgramUseable())){
+ //鏈夊浐鍖� 浣嗕笉鍙敤锛岃瘯鍒囪妭鐐圭殑鏂拌妭鐐� 鐗堟湰鍙蜂负 鍥哄寲鐗堟湰鍙�+1
+ NcNode curedPackageNode = ncNodeService.getById(props.getCuredNodeId());
+ packageNode.setVersionNumber(curedPackageNode.genNewVersionNumber());
+ ncNodeService.updateById(packageNode);
+ }
+ //NcNode packageNode;
+ /*
if(FlowContants.Y.equals(props.getHasCuredProgram())){
//鏈夊浐鍖栵紝涓旂▼搴忓彲鐢紝浠庡浐鍖栨爲鏌ヨ鑺傜偣.浣跨敤娴佺▼涓繚瀛樼殑鑺傜偣
- //packageNode = ncNodeService.getLastEditionCuredProgramPackage(programPkgName,props.getProcessEdition());
if(FlowContants.Y.equals(props.getCureProgramUseable())) {
packageNode = ncNodeService.getById(props.getCuredNodeId());
}else{
- //涓嶅彲鐢紝鍘诲浐鍖栨壘鏈�鏂拌妭鐐�
- packageNode = ncNodeService.getLastEditionCuredProgramPackage(programPkgName,props.getProcessEdition());
+ //涓嶅彲鐢紝鍘昏瘯鍒囨壘鏈�鏂拌妭鐐�
+ //packageNode = ncNodeService.getLastEditionCuredProgramPackage(programPkgName,props.getProcessEdition());
+ packageNode = ncNodeService.getLastEditionTryingProgramPackage(programPkgName,props.getProcessEdition());
+ //涓嶅彲鐢ㄧ殑鍥哄寲绋嬪簭閿佸畾
+ packageNode.lock();
+ ncNodeService.updateById(packageNode);
}
}else if(Func.isNotBlank(props.getDeviation())){
//鏈夊亸绂诲崟
packageNode = ncNodeService.getLastEditionDeviationProgramPackage(programPkgName,props.getProcessEdition());
}else{
- //鏅�氳瘯鍒囷紝鎴栬�呮湁鍥哄寲涓嶅彲鐢�
+ //鏅�氳瘯鍒�
packageNode = ncNodeService.getLastEditionTryingProgramPackage(programPkgName,props.getProcessEdition());
}
-
+ */
addApproveTable(packageNode,props);
updateApproveRecordNodeId(instId, packageNode.getId());
log.info("鏅�氭祦绋嬪凡瀹屾垚in DispatchFinishListener");
@@ -75,12 +92,17 @@
* 鑷姩鍒涘缓绋嬪簭鑺傜偣
* @param progProperties 娴佺▼灞炴��
*/
- void createProgramNodes(FlowProgramProperties progProperties){
+ NcNode createProgramNodes(FlowProgramProperties progProperties){
+ NcNode programPkgNode = null;
if(FlowContants.N.equals(progProperties.getHasCuredProgram())) {
//鏃犲浐鍖�:(璇曞垏鎴栬�呭亸绂�)
- ncNodeAutoCreateService.createNodeTreeWithProgram(progProperties);
+ programPkgNode = ncNodeAutoCreateService.createNodeTreeWithProgram(progProperties);
}else{
- //鏈夊浐鍖栵紝绋嬪簭涓嶅彲鐢�
+ if(FlowContants.N.equals(progProperties.getCureProgramUseable())) {
+ programPkgNode = ncNodeAutoCreateService.createNodeTreeWithProgram(progProperties);//鏆傛椂涓庝笂闈娇鐢ㄧ浉鍚屼唬鐮侊紝createNodeTreeWithProgram涓尯鍒嗕簡鏅�氳瘯鍒囧拰涓嶅彲鐢ㄧ殑鎯呭喌
+ }
+ //鏈夊浐鍖栵紝绋嬪簭涓嶅彲鐢�,搴旇鍘昏瘯鍒囧缓绔嬭妭鐐�
+ /*
if(FlowContants.N.equals(progProperties.getCureProgramUseable())) {
//鍥哄寲绋嬪簭涓嶅彲鐢紝闇�瑕侀噸鏂板缓绔嬬▼搴忓寘鍚嶅拰鏂囦欢鑺傜偣;鍙敤鎯呭喌鍦ㄦ祦绋嬪鎵逛腑宸茬粡鍗囩骇杩囪妭鐐逛簡
NcNode curedProgramPackage = ncNodeService.getById(progProperties.getCuredNodeId());
@@ -114,8 +136,10 @@
curedProgramPackage.setIsLastEdition(0);
curedProgramPackage.setIsLocked(1);
ncNodeService.updateById(curedProgramPackage);
- }
+ }*/
}
+
+ return programPkgNode;
}
/**
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java
index 9f93f02..f2ba2b4 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java
@@ -11,6 +11,8 @@
import org.springblade.mdm.flow.service.FlowProgramFileService;
import org.springblade.mdm.flow.service.FlowProgramProperties;
import org.springblade.mdm.program.entity.NcNode;
+import org.springblade.mdm.utils.EntityUtil;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -42,8 +44,10 @@
public NcNode createNodeTreeToMachine(FlowProgramProperties programProperties) {
NcNode root;
if(programProperties.getProcessDefinitionKey().equals(FlowContants.TRY_PROCESS_KEY)){
- if(Func.isEmpty(programProperties.getDeviation())){
- //璇曞垏
+ if(Func.isEmpty(programProperties.getDeviation()) ||
+ (FlowContants.Y.equals(programProperties.getHasCuredProgram()) && FlowContants.N.equals(programProperties.getCureProgramUseable()))){
+ //鏅�氳瘯鍒囷紝鎴栬�呮湁鍥哄寲涓嶅彲鐢紝寤虹珛璇曞垏鑺傜偣
+ //璇曞垏鏍硅妭鐐�
root = rootNodeByName(TRY_NAME);
if (root == null) {
root = createTryNode();
@@ -79,27 +83,23 @@
/**
* 鏍规嵁娴佺▼淇℃伅锛岃嚜鍔ㄥ垱寤哄悇涓妭鐐�,鍖呮嫭绋嬪簭鑺傜偣
* @param programProperties 绋嬪簭灞炴��
+ * @return 绋嬪簭鍖呰妭鐐瑰疄渚�
*/
@Transactional
- public void createNodeTreeWithProgram(FlowProgramProperties programProperties) {
+ public NcNode createNodeTreeWithProgram(FlowProgramProperties programProperties) {
//,int rootNodeCatgory = 1:璇曞垏锛�2鍥哄寲锛�3鍋忕
NcNode programPkdNode = createTreeToPackage(programProperties);
//鍒犻櫎涔嬪墠鍒涘缓杩囩殑绋嬪簭鏂囦欢鑺傜偣(鍥犱负閲嶅鍦ㄧ紪鍒惰妭鐐瑰鎵�)锛岄伩鍏嶉噸澶嶆暟鎹�
- //this.ncNodeService.lambdaUpdate().eq(NcNode::getParentId, programPkdNode.getId()).remove();
ncNodeService.deleteSubNodes(programPkdNode.getId());
List<FlowProgramFile> programFiles = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, programProperties.getProcessInstanceId()).list();
for (FlowProgramFile programFile : programFiles) {
createProgramFileNode(programFile, programPkdNode, programProperties);//鎵�鏈夋枃浠跺寘鎷▼搴忓拰鍏朵粬锛岄兘闇�瑕佸缓绔嬭妭鐐�
- //if(programFile.isProgram()) {
-
- //}
}
- createOtherNode(programFiles);
+
+ return programPkdNode;
}
- void createOtherNode(List<FlowProgramFile> programFiles){
-//111mqita 鑺傜偣
- }
+
/**
* 寤虹珛绋嬪簭鏂囦欢鑺傜偣
* @param programFile 娴佺▼鏂囦欢
@@ -110,10 +110,14 @@
//姝ゅ搴旈伩鍏嶉噸澶嶅垱寤�
NcNode node = new NcNode();
+ BeanUtils.copyProperties(programPkdNode, node);
+ EntityUtil.clearBaseProperties(node);
+
node.setNodeType(NcNode.TYPE_PROGRAM_FILE);
node.setName(programFile.getName());//鏂囦欢鍚嶏紝
node.setIsLastEdition(1);
+ /*
node.setDrawingNo(programPkdNode.getDrawingNo());
node.setDrawingNoEdition(programProperties.getDrawingNoEdition());
node.setCraftEdition(programProperties.getCraftEdition());
@@ -122,17 +126,13 @@
node.setProcessEdition(programProperties.getProcessEdition());
node.setMachineCode(programProperties.getMachineCode());
node.setProductModel(programProperties.getProductModel());
+
+ */
node.setFlowProgramFileId(programFile.getId());
node.setVersionNumber(1);
node.setParentId(programPkdNode.getId());
node.setParentIds(programPkdNode.getParentIds()+","+programPkdNode.getId());
- /*
- if("program".equals(programFile.getFileType())){
- }else{
- //鍏朵粬鏂囦欢锛屽拰绋嬪簭鍖呭悕鍚岀骇骞跺垪
-
- }*/
ncNodeService.save(node);
}
--
Gitblit v1.9.3