From 3ffe33aaa24386337e3638558eca731c62f25521 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期六, 13 九月 2025 13:30:06 +0800
Subject: [PATCH] 修改表格打印的数控程序编号
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java | 165 ++++++++++++++++++++++++-------------------------------
1 files changed, 72 insertions(+), 93 deletions(-)
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 f0efed3..90b6e90 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
@@ -1,19 +1,21 @@
package org.springblade.mdm.flow.excution.dispatch;
+import com.alibaba.excel.util.StringUtils;
import lombok.extern.slf4j.Slf4j;
-import org.springblade.core.tool.utils.Func;
+import org.apache.commons.io.FilenameUtils;
import org.springblade.mdm.flow.constants.FlowContants;
-import org.springblade.mdm.flow.entity.ApproveRecord;
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.FlowProgramProperties;
+import org.springblade.mdm.gkw.programnode.vo.ProgramNameVO;
import org.springblade.mdm.program.entity.NcNode;
import org.springblade.mdm.program.entity.NcProgramApproved;
import org.springblade.mdm.program.service.NcNodeAutoCreateService;
import org.springblade.mdm.program.service.NcNodeService;
import org.springblade.mdm.program.service.NcProgramApprovedService;
import org.springblade.mdm.utils.EntityUtil;
+import org.springblade.mdm.utils.ProgramFileNameParser;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -29,8 +31,6 @@
@Autowired
private NcProgramApprovedService approvedService;
@Autowired
- private ApproveRecordService approveRecordService;
- @Autowired
private FlowProgramFileService flowProgramFileService;
@Autowired
private NcNodeService ncNodeService;
@@ -42,104 +42,89 @@
*/
public void handleData(FlowProgramProperties props) {
// 鎵ц涓氬姟閫昏緫
- String instId = props.getProcessInstanceId();
-
- String programPkgName = NcNodeService.genProgramName(props.getDrawingNo(),props.getProcessNo());
- //NcNode packageNode =createProgramNodes(props);
- NcNode packageNode;// = ncNodeAutoCreateService.createNodeTreeWithProgram(props);
- if(FlowContants.Y.equals(props.getHasCuredProgram()) && FlowContants.Y.equals(props.getCureProgramUseable())){
- //鏈夊浐鍖栵紝涓旂▼搴忓彲鐢�
+ NcNode packageNode;
+ if(FlowContants.Y.equals(props.getHasCuredProgram())){
+ //鏈夊浐鍖�
packageNode = ncNodeService.getById(props.getCuredNodeId());
- }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())){
- //鏈夊浐鍖栵紝涓旂▼搴忓彲鐢紝浠庡浐鍖栨爲鏌ヨ鑺傜偣.浣跨敤娴佺▼涓繚瀛樼殑鑺傜偣
- if(FlowContants.Y.equals(props.getCureProgramUseable())) {
- packageNode = ncNodeService.getById(props.getCuredNodeId());
- }else{
- //涓嶅彲鐢紝鍘昏瘯鍒囨壘鏈�鏂拌妭鐐�
- //packageNode = ncNodeService.getLastEditionCuredProgramPackage(programPkgName,props.getProcessEdition());
- packageNode = ncNodeService.getLastEditionTryingProgramPackage(programPkgName,props.getProcessEdition());
- //涓嶅彲鐢ㄧ殑鍥哄寲绋嬪簭閿佸畾
+ if(FlowContants.N.equals(props.getCureProgramUseable())) {
+ //绋嬪簭涓嶅彲鐢紝鍘熸潵鐨勫浐鍖栬妭鐐归攣瀹�
packageNode.lock();
ncNodeService.updateById(packageNode);
+
+ Integer newVersion = packageNode.genNewVersionNumber();
+ //TODO 鐗堟湰鍙锋牴鎹浂缁勪欢鍙�+宸ュ簭鍙凤紝宸ュ簭鐗堟锛屾満搴婄粍 鐩存帴鏌ヨ鏁伴噺锛�+1鑾峰彇
+ packageNode = ncNodeAutoCreateService.createNodeTreeWithProgram(props,newVersion);
+ }else{
+ //鍙敤锛屽崌鐗堬紙淇敼鍏跺伐搴忕増娆★級锛屽師鏉ョ殑鑺傜偣娓呴櫎
+ moveToNewProcessEdition(packageNode,props);
}
- }else if(Func.isNotBlank(props.getDeviation())){
- //鏈夊亸绂诲崟
- packageNode = ncNodeService.getLastEditionDeviationProgramPackage(programPkgName,props.getProcessEdition());
}else{
//鏅�氳瘯鍒�
- packageNode = ncNodeService.getLastEditionTryingProgramPackage(programPkgName,props.getProcessEdition());
+ packageNode = ncNodeAutoCreateService.createNodeTreeWithProgram(props,1);
}
- */
+
addApproveTable(packageNode,props);
- updateApproveRecordNodeId(instId, packageNode.getId());
+
log.info("鏅�氭祦绋嬪凡瀹屾垚in DispatchFinishListener");
}
/**
- * 鑷姩鍒涘缓绋嬪簭鑺傜偣
- * @param progProperties 娴佺▼灞炴��
+ * 鑺傜偣绉诲姩鍒版柊鐨勫伐搴忕増鏈笅
+ * @param packageNode 绋嬪簭鍖呭悕鑺傜偣
+ * @param props 娴佺▼灞炴��
*/
- NcNode createProgramNodes(FlowProgramProperties progProperties){
- NcNode programPkgNode = null;
- if(FlowContants.N.equals(progProperties.getHasCuredProgram())) {
- //鏃犲浐鍖�:(璇曞垏鎴栬�呭亸绂�)
- programPkgNode = ncNodeAutoCreateService.createNodeTreeWithProgram(progProperties);
- }else{
- if(FlowContants.N.equals(progProperties.getCureProgramUseable())) {
- programPkgNode = ncNodeAutoCreateService.createNodeTreeWithProgram(progProperties);//鏆傛椂涓庝笂闈娇鐢ㄧ浉鍚屼唬鐮侊紝createNodeTreeWithProgram涓尯鍒嗕簡鏅�氳瘯鍒囧拰涓嶅彲鐢ㄧ殑鎯呭喌
+ private void moveToNewProcessEdition(NcNode packageNode, FlowProgramProperties props) {
+ ncNodeService.deleteMachineNodeByParentId(packageNode.getParentId());
+
+ FlowProgramProperties tempProps = new FlowProgramProperties();
+ BeanUtils.copyProperties(props,tempProps);
+ tempProps.setProcessDefinitionKey(FlowContants.CURE_PROCESS_KEY);//涓存椂淇敼鍏朵负鍥哄寲,鍦ㄥ浐鍖栦笅鍒涘缓鑺傜偣
+ NcNode machineNode = ncNodeAutoCreateService.createNodeTreeToMachine(tempProps);
+
+ //绉诲姩鍘嗗彶鑺傜偣鍒版柊鐨勭増娆¤妭鐐逛笅
+ List<NcNode> packageHisNodes = ncNodeService.getNodeHistory(packageNode);//璇ュ寘鐨勫巻鍙茶妭鐐瑰垪琛�
+ for(NcNode hisPackageNode : packageHisNodes){
+ hisPackageNode.setParentId(machineNode.getParentId());
+ hisPackageNode.setParentIds(machineNode.getParentIds());
+
+ List<NcNode> oriProgramNodes = ncNodeService.lambdaQuery().eq(NcNode::getParentId,hisPackageNode.getId()).list();
+
+ for(NcNode oldProgramNode : oriProgramNodes){
+ oldProgramNode.setParentIds(hisPackageNode.getParentIds()+","+hisPackageNode.getId());
}
- //鏈夊浐鍖栵紝绋嬪簭涓嶅彲鐢�,搴旇鍘昏瘯鍒囧缓绔嬭妭鐐�
- /*
- if(FlowContants.N.equals(progProperties.getCureProgramUseable())) {
- //鍥哄寲绋嬪簭涓嶅彲鐢紝闇�瑕侀噸鏂板缓绔嬬▼搴忓寘鍚嶅拰鏂囦欢鑺傜偣;鍙敤鎯呭喌鍦ㄦ祦绋嬪鎵逛腑宸茬粡鍗囩骇杩囪妭鐐逛簡
- NcNode curedProgramPackage = ncNodeService.getById(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);
- }*/
+ ncNodeService.updateBatchById(oriProgramNodes);
}
+ ncNodeService.updateBatchById(packageHisNodes);
- return programPkgNode;
+ //绉诲姩绋嬪簭鍖呭悕鑺傜偣
+ packageNode.setProcessEdition(tempProps.getProcessEdition());
+ packageNode.setParentId(machineNode.getParentId());
+ packageNode.setParentIds(machineNode.getParentIds());
+ packageNode.setName(tempProps.getDrawingNo()+"-"+tempProps.getProcessNo()+"-"+tempProps.getProcessEdition());
+ this.ncNodeService.updateById(packageNode);
+
+ //绉诲姩绋嬪簭鑺傜偣
+ List<NcNode> programNodes = ncNodeService.getProgramFilesByPackageId(packageNode.getId());
+ for(NcNode programNode : programNodes){
+
+ programNode.setName(buildNewFilename(programNode.getName(),tempProps.getProcessEdition()));//鍚嶇О淇敼锛屽伐搴忕増娆¢儴鍒�
+ programNode.setParentIds(packageNode.getParentIds()+","+packageNode.getId());
+ programNode.setProcessEdition(tempProps.getProcessEdition());//淇敼宸ュ簭鐗堟
+ programNode.setVersionNumber(packageNode.getVersionNumber());
+ }
+ ncNodeService.updateBatchById(programNodes);
+
+ }
+
+ String buildNewFilename(String filename,String newProcessEdition){
+ ProgramNameVO pnameVO = ProgramFileNameParser.parseProgramName(filename);
+ String ext = FilenameUtils.getExtension(filename);
+ String name= pnameVO.getDrawingNo()+"-"+pnameVO.getProcessNo()+"-"+newProcessEdition+"-"+pnameVO.getSegmentCount()+"-"+pnameVO.getSegmentNo();
+ if(StringUtils.isNotBlank(ext)){
+ name += "."+ext;
+ }
+ return name;
}
/**
@@ -153,16 +138,10 @@
approved.setProgramName(packageNode.getName());
approved.setNcNodeId(packageNode.getId());//绋嬪簭鍖呰妭鐐筰d
approved.setTitle(props.getTitle());
- approved.setProgrammerId(props.getProgrammerId());
+ approved.setProgrammerId(props.getActProgrammerId());
+ approved.setProcessInstanceId(props.getProcessInstanceId());
approvedService.save(approved);
}
-
- void updateApproveRecordNodeId(String processInstanceId,Long nodeId){
- //鏇存柊瀹℃壒璁板綍鐨刵cNodeId
- approveRecordService.lambdaUpdate()
- .eq(ApproveRecord::getProcessInstanceId, processInstanceId)
- .set(ApproveRecord::getNcNodeId,nodeId).update();
- }
}
--
Gitblit v1.9.3