From f13fcaa8c4b0f413d8ee100adcb67669db183c68 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期六, 23 八月 2025 16:47:58 +0800
Subject: [PATCH] 固化程序不可用锁定
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java | 103 ++++++++++++++++++++++++++++++++++-----------------
1 files changed, 69 insertions(+), 34 deletions(-)
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 92d3bdc..c9d6738 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
@@ -75,22 +75,12 @@
*/
public void handleData(FlowProgramProperties flowProps) {
// 鎵ц涓氬姟閫昏緫
- NcNode pkgNode = nodeService.lambdaQuery().eq(NcNode::getProcessInstanceId, flowProps.getProcessInstanceId()).one();
- //璇曞垏鐨�
- 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();
- //璁剧疆杩囨湡鏃ユ湡
- if(optOldCuredPackageNode.isEmpty()){
- //涔嬪墠 娌℃湁宸插浐鍖栫殑绋嬪簭鍖呭悕锛屽垯鐩存帴鏇存柊鐗堟湰鍙凤紝濡傛灉鏈夛紝閭e氨浣跨敤node鐜板湪鐨勭増鏈彿锛屽洜涓轰笉鍙敤杞负璇曞垏锛屽鎵瑰畬鎴愬凡缁忓崌绾ersion
- pkgNode.upgradeVersionNumber();
- }
- pkgNode.setExpireDate(calculateExpireDate());
- nodeService.updateById(pkgNode);
+ //闇�瑕佸浐鍖栫殑鑺傜偣
+ NcNode pkgNode = nodeService.lambdaQuery().eq(NcNode::getProcessInstanceId, flowProps.getProcessInstanceId()).one();
+
+ //pkgNode.setIsLastEdition(0);
+ //nodeService.updateById(pkgNode);
List<NcNode> historyProgramPackageNodes = nodeService.getNodeHistory(pkgNode);
try {
@@ -106,40 +96,54 @@
/**
* 灏嗚妭鐐瑰拰鍘嗗彶鑺傜偣鎸姩鍒板浐鍖栫殑鍚岀骇鑺傜偣涓�
- * @param pkgNode 瑕佹尓鍔ㄧ殑鑺傜偣
+ * @param pkgNode 瑕佸浐鍖栫殑鑺傜偣
* @param historyProgramPackageNodes 绋嬪簭鍖呭悕 鍘嗗彶鑺傜偣
*/
- void moveNodeToCuredTree(NcNode pkgNode,List<NcNode> historyProgramPackageNodes, FlowProgramProperties programProperties) throws IOException {
+ void moveNodeToCuredTree(NcNode pkgNode1,List<NcNode> historyProgramPackageNodes, FlowProgramProperties programProperties) throws IOException {
+
//鍒涘缓鑺傜偣鍒版満搴婄骇鍒�.(鍥哄寲鏍�)
NcNode machineNode = ncNodeAutoCreateService.createNodeTreeToMachine(programProperties);
- pkgNode.setParentId(machineNode.getParentId());
- pkgNode.setParentIds(machineNode.getParentIds());//鏇存柊涓婄骇鑺傜偣锛屼笅闈㈣繕瑕佺敤搴斾负鍦╤istoryProgramPackageNodes涓殑鍜岃繖涓笉鏄竴涓疄渚�
+ pkgNode1.setParentId(machineNode.getParentId());
+ pkgNode1.setParentIds(machineNode.getParentIds());//鏇存柊涓婄骇鑺傜偣锛屼笅闈㈣繕瑕佺敤搴斾负鍦╤istoryProgramPackageNodes涓殑鍜岃繖涓笉鏄竴涓疄渚�
+
+ //鏂板缓涓�涓妭鐐癸紝浣滀负鍥哄寲鑺傜偣锛岃�佽妭鐐逛繚鐣欎笉鍔�,缃负鑰佺増鏈�
+
+
//鏈哄簥涓嬬幇鍦ㄦ病鏈夋枃浠朵簡锛岀▼搴忓寘鍚嶅崌绾т笌鏈哄簥鍚岀骇浜嗭紝鏀逛负鎵惧埌鏈哄簥鍚岀骇绋嬪簭鍖呭悕鏇存柊浜�
//TODO 杩欎釜parentIds鏄笉鏄笉澶燂紵锛屼笉澶燂紝涓�涓満搴婁笅澶氫釜绋嬪簭鍖呯殑鎯呭喌涓嶈鍚э紝浣嗘槸鎸夌収鏍戯紝澶氫釜绋嬪簭鍖呬笉澶幇瀹�
this.nodeService.lambdaUpdate().likeRight(NcNode::getParentIds, machineNode.getParentIds())
.in(NcNode::getNodeType, Arrays.asList(NcNode.TYPE_PROGRAM_PACKAGE,NcNode.TYPE_PROGRAM_FILE))
- .ne(NcNode::getId,pkgNode.getId())//涓嶈鏇存柊鏂板浐鍖栫殑鑺傜偣new
+ //.ne(NcNode::getId,cureNode.getId())//涓嶈鏇存柊鏂板浐鍖栫殑鑺傜偣
.set(NcNode::getIsLastEdition,0).set(NcNode::getIsLocked,1).update();
+ NcNode cureNode = createNewCureNodeByTargetNode(pkgNode1);
for(NcNode hisPackageNode : historyProgramPackageNodes){
- if(!hisPackageNode.getId().equals(pkgNode.getId())){
+ //if(!hisPackageNode.getId().equals(pkgNode.getId())){
hisPackageNode.setIsLastEdition(0);
- }
+ //}
hisPackageNode.setParentId(machineNode.getParentId());
hisPackageNode.setParentIds(machineNode.getParentIds());//绋嬪簭鍖呬笌鏈哄簥鑺傜偣鍚岀骇
- //澶勭悊绋嬪簭鍖呬笅灞傜殑绋嬪簭鑺傜偣111
+ //澶勭悊绋嬪簭鍖呬笅灞傜殑绋嬪簭鑺傜偣锛岃繖閲岋細鑰佺殑绋嬪簭鑺傜偣涓嶇敤鏇存柊涓哄巻鍙茬増鏈紝鍥犱负浼氬缓绔嬫柊鑺傜偣銆傚彧淇敼parentId 鍜� parentIds
List<NcNode> oriProgramNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,hisPackageNode.getId()).list();
FlowProgramFile pfile;
for(NcNode oldProgramNode : oriProgramNodes){
oldProgramNode.setParentIds(hisPackageNode.getParentIds()+","+hisPackageNode.getId());
- oldProgramNode.setIsLastEdition(0);
+ //oldProgramNode.setIsLastEdition(0);
pfile = flowProgramFileService.getById(oldProgramNode.getFlowProgramFileId());
- if(oldProgramNode.getParentId().equals(pkgNode.getId()) && !pfile.isProgram()){
+ if(oldProgramNode.getParentId().equals(pkgNode1.getId()) && !pfile.isProgram()){
//褰撳墠鍥哄寲绋嬪簭鍖呭悕涓嬬殑鈥滃叾浠栨枃浠垛�濋潪绋嬪簭鏂囦欢銆備笉璁剧疆涓鸿�佺増鏈紝鐩存帴鎸埌鍥哄寲鏍戜笅,涓や釜缃戠粶涔嬮棿鍙氦鎹㈢▼搴忔枃浠讹紝鍏朵粬鏂囦欢鍙兘淇濈暀
- oldProgramNode.setIsLastEdition(1);
+ //oldProgramNode.setIsLastEdition(1);
+ //鍏朵粬鏂囦欢锛岄渶瑕佸鍒跺埌鏂板缓鐨勫浐鍖栬妭鐐逛笅
+ NcNode newOtherFileNode = new NcNode();
+ BeanUtils.copyProperties(oldProgramNode,newOtherFileNode);
+ EntityUtil.clearBaseProperties(newOtherFileNode);
+ newOtherFileNode.setParentId(cureNode.getId());
+ newOtherFileNode.setParentIds(cureNode.getParentIds()+","+cureNode.getId());
+ newOtherFileNode.setIsLastEdition(1);
+ nodeService.save(newOtherFileNode);
}
}
@@ -147,32 +151,61 @@
}
nodeService.updateBatchById(historyProgramPackageNodes);
- Machine machine = machineService.getByCode(pkgNode.getMachineCode());
+ Machine machine = machineService.getByCode(cureNode.getMachineCode());
List<DictBiz> annoDicts = programAnnotationService.getAnnotionList();
//鏂扮殑娴佺▼鏂囦欢锛岄渶瑕佸湪鍖呰妭鐐逛笅鏂板缓锛屼笉鑳界敤鑰佺殑
- List<FlowProgramFile> files = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId,pkgNode.getProcessInstanceId()).list();
+ List<FlowProgramFile> files = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId,pkgNode1.getProcessInstanceId()).list();
for(FlowProgramFile flowProgramFile : files){
NcNode newProgNode = new NcNode();
- BeanUtils.copyProperties(pkgNode,newProgNode);
+ BeanUtils.copyProperties(cureNode,newProgNode);
EntityUtil.clearBaseProperties(newProgNode);
newProgNode.setName(flowProgramFile.getName());
newProgNode.setNodeType(NcNode.TYPE_PROGRAM_FILE);
- newProgNode.setParentId(pkgNode.getId());
- newProgNode.setParentIds(pkgNode.getParentIds()+","+pkgNode.getId());
+ newProgNode.setParentId(cureNode.getId());
+ newProgNode.setParentIds(cureNode.getParentIds()+","+cureNode.getId());
newProgNode.setIsLastEdition(1);
newProgNode.setFlowProgramFileId(flowProgramFile.getId());
newProgNode.setIsCured(1);
- nodeService.save(newProgNode);
- //淇敼鏂囦欢鍐呭鏇存柊娉ㄩ噴锛屽苟鏇存柊鏂囦欢鏁版嵁鐨勫湴鍧�
- ///鏇挎崲娉ㄩ噴鍚庢�绘槸涓嶈鍟�
setGhAnnotation(flowProgramFile,machine.getMachineGroupCode(),annoDicts);
+
+ nodeService.save(newProgNode);
}
+
+
}
+ /**
+ * 澶嶅埗寰呭浐鍖栬妭鐐规暟鎹紝鍒涘缓涓�涓柊鐨勫浐鍖栬妭鐐�
+ * @param waitingCureNode 寰呭浐鍖栬妭鐐�
+ * @return 鍥哄寲鑺傜偣
+ */
+ NcNode createNewCureNodeByTargetNode(NcNode waitingCureNode){
+ //鏂板缓涓�涓妭鐐癸紝浣滀负鍥哄寲鑺傜偣锛岃�佽妭鐐逛繚鐣欎笉鍔�
+ NcNode cureNode = new NcNode();
+ BeanUtils.copyProperties(waitingCureNode, cureNode);
+ EntityUtil.clearBaseProperties(cureNode);
+ cureNode.setIsCured(1);
+ cureNode.setIsLocked(NcNode.UNLOCK);
+ cureNode.setIsLastEdition(1);
+ cureNode.setExpireDate(calculateExpireDate());//璁剧疆杩囨湡鏃ユ湡
+ Optional<NcNode> optOldCuredPackageNode = nodeService.lambdaQuery().eq(NcNode::getName,waitingCureNode.getName())
+ .eq(NcNode::getProcessNo,waitingCureNode.getProcessNo())
+ .eq(NcNode::getProcessEdition,waitingCureNode.getProcessEdition())
+ .eq(NcNode::getIsLastEdition,1).eq(NcNode::getIsCured,1).oneOpt();
+
+ if(optOldCuredPackageNode.isEmpty()){
+ //涔嬪墠 娌℃湁宸插浐鍖栫殑绋嬪簭鍖呭悕锛屽垯鐩存帴鏇存柊鐗堟湰鍙凤紝濡傛灉鏈夛紝閭e氨浣跨敤node鐜板湪鐨勭増鏈彿锛屽洜涓轰笉鍙敤杞负璇曞垏锛屽鎵瑰畬鎴愬凡缁忓崌绾ersion
+ cureNode.upgradeVersionNumber();
+ }
+
+ nodeService.save(cureNode);
+
+ return cureNode;
+ }
/**
* 璁剧疆鍥哄寲娉ㄩ噴,瀹炵幇鏂瑰紡锛岃幏鍙栨枃浠跺瓧鑺備笅锛屼慨鏀瑰悗鏇挎崲鏂囦欢
* @param flowProgramFile oss 鏂囦欢
@@ -192,6 +225,8 @@
BladeFile bfile = ossTemplate.putFile(flowProgramFile.getName(), finishedStream);
//鏇挎崲鍘熸湁鐨勬枃浠跺湴鍧�
flowProgramFile.setOssName(bfile.getName());
+
+ flowProgramFileService.updateById(flowProgramFile);
}
}
}
--
Gitblit v1.9.3