From 053a438acf9ec33e182b25211ce8108f0367feac Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期三, 06 八月 2025 09:35:58 +0800
Subject: [PATCH] 固化流程,建立node;
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeAutoCreateService.java | 137 +++++++++++++++++++++++++--------------------
1 files changed, 75 insertions(+), 62 deletions(-)
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 d3ec4c7..bea9b12 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
@@ -3,6 +3,7 @@
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.springblade.mdm.flow.constants.FlowContants;
import org.springblade.mdm.flow.entity.FlowProgramFile;
import org.springblade.mdm.flow.service.FlowCommonService;
import org.springblade.mdm.flow.service.FlowProgramFileService;
@@ -27,27 +28,72 @@
private final FlowCommonService flowCommonService;
private final FlowProgramFileService flowProgramFileService;
private final ProgramSeqService programSeqService;
- public static final String SHIQIE_NAME = "璇曞垏";
- public static final String GUHUA_NAME = "鍥哄寲";
+ public static final String TRY_NAME = "璇曞垏";
+ public static final String CURE_NAME = "鍥哄寲";
public static final String PIANLI_NAME = "鍋忕";
+
/**
- * 鏍规嵁娴佺▼淇℃伅锛岃嚜鍔ㄥ垱寤哄悇涓妭鐐�
- * @param processInstanceId
+ * 鍒涘缓鏍戝埌鏈哄簥绾у埆
+ * @param programProperties
*/
@Transactional
- public void createNodeTree(String processInstanceId) {
- FlowProgramProperties programProperties = flowCommonService.getProgramProperties(processInstanceId);
+ public NcNode createNodeTreeToMachine(FlowProgramProperties programProperties) {
- //,int rootNodeCatgory = 1:璇曞垏锛�2鍥哄寲锛�3鍋忕
- NcNode programPkdNode = createTreeToProgramPackageByRootCategory(1,programProperties);
-
- List<FlowProgramFile> programFiles = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, processInstanceId).list();
- for (FlowProgramFile programFile : programFiles) {
- createProgramFileNode(programFile,programPkdNode,programProperties);
+ NcNode root;
+ if(programProperties.getProcessDefinitionKey().equals(FlowContants.TRY_PROCESS_KEY)){
+ //璇曞垏
+ root = rootNodeByName(TRY_NAME);
+ if(root == null){
+ root = createTryNode();
+ }
+ }else if(programProperties.getProcessDefinitionKey().equals(FlowContants.CURE_PROCESS_KEY)){
+ root = rootNodeByName(CURE_NAME);
+ if(root == null){
+ root = createCureNode();
+ }
+ }else{
+ root = rootNodeByName(PIANLI_NAME);
+ if(root == null){
+ root = createPianliNode();
+ }
}
+
+ NcNode lastNode = null;
+ //鍒涘缓浜у搧鍨嬪彿鑺傜偣
+ //NcNode productModelNode = createProductModelNode(programProperties.getProductModel(), root);
+ NcNode productModelNode = createNodeIfNotExists(programProperties.getProductModel(),NcNode.TYPE_PRODUCT_MODEL, root,programProperties);
+ //闆剁粍浠跺彿鑺傜偣
+ NcNode drawingNoNode = createNodeIfNotExists(programProperties.getDrawingNo(),NcNode.TYPE_DRAWING_NO, productModelNode,programProperties);
+ //宸ヨ壓鐗堟鑺傜偣
+ NcNode craftEditionNode = createNodeIfNotExists(programProperties.getCraftEdition(),NcNode.TYPE_CRAFT_EDITION, drawingNoNode,programProperties);
+ //宸ュ簭鍙疯妭
+ NcNode processNoNode = createNodeIfNotExists(programProperties.getProcessNo(),NcNode.TYPE_PROCESS_NO, craftEditionNode,programProperties);
+ //宸ュ簭鐗堟鑺傜偣
+ NcNode processEditionNode = createNodeIfNotExists(programProperties.getProcessEdition(),NcNode.TYPE_PROCESS_EDITION, processNoNode,programProperties);
+ //鍔犲伐鏈哄簥鑺傜偣
+ return createNodeIfNotExists(programProperties.getMachineCode(),NcNode.TYPE_MACHINE_CODE, processEditionNode,programProperties);
+ }
+ /**
+ * 鏍规嵁娴佺▼淇℃伅锛岃嚜鍔ㄥ垱寤哄悇涓妭鐐�,鍖呮嫭绋嬪簭鑺傜偣
+ * @param programProperties 绋嬪簭灞炴��
+ */
+ @Transactional
+ public void createNodeTreeWithProgram(FlowProgramProperties programProperties) {
+ //,int rootNodeCatgory = 1:璇曞垏锛�2鍥哄寲锛�3鍋忕
+ NcNode programPkdNode = createTreeToPackage(programProperties);
+ //鍒犻櫎涔嬪墠鍒涘缓杩囩殑绋嬪簭鏂囦欢鑺傜偣(鍥犱负閲嶅鍦ㄧ紪鍒惰妭鐐瑰鎵�)锛岄伩鍏嶉噸澶嶆暟鎹�
+ this.ncNodeService.lambdaUpdate().eq(NcNode::getParentId, programPkdNode.getId()).remove();
+
+ List<FlowProgramFile> programFiles = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, programProperties.getProcessInstanceId()).list();
+ for (FlowProgramFile programFile : programFiles) {
+ createProgramFileNode(programFile, programPkdNode, programProperties);
+ }
+
}
private void createProgramFileNode(FlowProgramFile programFile, NcNode programPkdNode, FlowProgramProperties programProperties) {
+ //姝ゅ搴旈伩鍏嶉噸澶嶅垱寤�
+
NcNode node = new NcNode();
node.setNodeType(NcNode.TYPE_PROGRAM_FILE);
node.setName(programFile.getName());//鏂囦欢鍚嶏紝
@@ -66,42 +112,17 @@
ncNodeService.save(node);
}
- NcNode createTreeToProgramPackageByRootCategory(int category,FlowProgramProperties programProperties) {
- NcNode root;
- if(category == 1){
- //璇曞垏
- root = rootNodeByName(SHIQIE_NAME);
- if(root == null){
- root = createShiqieNode();
- }
- }else if(category == 2){
- root = rootNodeByName(GUHUA_NAME);
- if(root == null){
- root = createCureNode();
- }
- }else{
- root = rootNodeByName(PIANLI_NAME);
- if(root == null){
- root = createPianliNode();
- }
- }
-
- //鍒涘缓浜у搧鍨嬪彿鑺傜偣
- //NcNode productModelNode = createProductModelNode(programProperties.getProductModel(), root);
- NcNode productModelNode = createNodeIfNotExists(programProperties.getProductModel(),NcNode.TYPE_PRODUCT_MODEL, root,programProperties);
- //闆剁粍浠跺彿鑺傜偣
- NcNode drawingNoNode = createNodeIfNotExists(programProperties.getDrawingNo(),NcNode.TYPE_DRAWING_NO, productModelNode,programProperties);
- //宸ヨ壓鐗堟鑺傜偣
- NcNode craftEditionNode = createNodeIfNotExists(programProperties.getCraftEdition(),NcNode.TYPE_CRAFT_EDITION, drawingNoNode,programProperties);
- //宸ュ簭鍙疯妭
- NcNode processNoNode = createNodeIfNotExists(programProperties.getProcessNo(),NcNode.TYPE_PROCESS_NO, craftEditionNode,programProperties);
- //宸ュ簭鐗堟鑺傜偣
- NcNode processEditionNode = createNodeIfNotExists(programProperties.getProcessEdition(),NcNode.TYPE_PROCESS_EDITION, processNoNode,programProperties);
- //鍔犲伐鏈哄簥鑺傜偣
- NcNode machineCodeNode = createNodeIfNotExists(programProperties.getMachineCode(),NcNode.TYPE_MACHINE_CODE, processEditionNode,programProperties);
- //绋嬪簭鍖呭悕鑺傜偣
+ /**
+ * 鍒涘缓鑺傜偣鍒扮▼搴忓寘绾у埆
+ * @param programProperties
+ * @param createProgramPkg
+ * @return
+ */
+ public NcNode createTreeToPackage(FlowProgramProperties programProperties) {
+ NcNode machineCodeNode = createNodeTreeToMachine(programProperties);
String programPkgName = programProperties.getDrawingNo()+"-"+programProperties.getProcessNo();//闆朵欢鍙峰姞宸ュ簭鍙�
return createNodeIfNotExists(programPkgName ,NcNode.TYPE_PROGRAM_PACKAGE, machineCodeNode,programProperties);
+
}
/**
@@ -113,7 +134,8 @@
* @return
*/
NcNode createNodeIfNotExists(String name,String nodeType,NcNode parentNode,FlowProgramProperties programProperties) {
- Optional<NcNode> nodeOpt = this.ncNodeService.lambdaQuery().eq(NcNode::getName,name).eq(NcNode::getNodeType,nodeType).eq(NcNode::getParentId,parentNode.getId()).oneOpt();
+ Optional<NcNode> nodeOpt = this.ncNodeService.lambdaQuery().eq(NcNode::getName,name).eq(NcNode::getNodeType,nodeType)
+ .eq(NcNode::getParentId,parentNode.getId()).eq(NcNode::getIsLastEdition,1).oneOpt();
if(nodeOpt.isPresent()){
return nodeOpt.get();
}else {
@@ -149,15 +171,6 @@
}
}
- /**
- * 鏍硅妭鐐规槸鍚﹀瓨鍦紝鏍硅妭鐐瑰彧鏈� 璇曞垏/鍒嗙/鍥哄寲 3涓�
- * @param name 鑺傜偣鍚嶇О
- * @return
- */
- boolean rootNodeExists(String name){
- return ncNodeService.lambdaQuery().eq(NcNode::getName, name).eq(NcNode::getParentId, 0).count()>0;
- }
-
NcNode rootNodeByName(String name){
Optional<NcNode> rootOpt = ncNodeService.lambdaQuery().eq(NcNode::getName, name).eq(NcNode::getParentId, 0).oneOpt();
return rootOpt.orElse(null);
@@ -166,12 +179,12 @@
/**
* 鍒涘缓璇曞垏鑺傜偣锛堟牴锛�
*/
- NcNode createShiqieNode() {
+ NcNode createTryNode() {
NcNode ncNode = new NcNode();
ncNode.setId(1L);
- ncNode.setName(SHIQIE_NAME);
+ ncNode.setName(TRY_NAME);
ncNode.setParentId(0L);
- ncNode.setParentIds("");
+ ncNode.setParentIds("0");
ncNode.setNodeType("10");
ncNode.setVersionNumber(1);
ncNodeService.save(ncNode);
@@ -185,9 +198,9 @@
NcNode createCureNode() {
NcNode ncNode = new NcNode();
ncNode.setId(2L);
- ncNode.setName(GUHUA_NAME);
+ ncNode.setName(CURE_NAME);
ncNode.setParentId(0L);
- ncNode.setParentIds("");
+ ncNode.setParentIds("0");
ncNode.setNodeType("10");
ncNode.setVersionNumber(1);
ncNodeService.save(ncNode);
@@ -200,7 +213,7 @@
ncNode.setId(3L);
ncNode.setName(PIANLI_NAME);
ncNode.setParentId(0L);
- ncNode.setParentIds("");
+ ncNode.setParentIds("0");
ncNode.setNodeType("10");
ncNode.setVersionNumber(1);
ncNodeService.save(ncNode);
--
Gitblit v1.9.3