From 1e2b04fabbbc4b1ae37d7951068d7ab235f5b5f9 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期三, 17 九月 2025 15:29:38 +0800
Subject: [PATCH] 现场编制功能适配
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java | 101 ++++++++++++++++++++++++++++++++++++++------------
1 files changed, 77 insertions(+), 24 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 890e623..64ac2f0 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
@@ -3,20 +3,32 @@
import com.alibaba.excel.util.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.io.IOUtils;
+import org.springblade.core.oss.OssTemplate;
+import org.springblade.core.oss.model.BladeFile;
+import org.springblade.mdm.basesetting.machine.entity.Machine;
+import org.springblade.mdm.basesetting.machine.service.MachineService;
import org.springblade.mdm.flow.constants.FlowContants;
+import org.springblade.mdm.flow.entity.FlowProgramFile;
+import org.springblade.mdm.flow.excution.ListenerHelper;
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.program.service.ProgramAnnotationService;
+import org.springblade.mdm.program.service.programannotation.*;
import org.springblade.mdm.utils.ProgramFileNameParser;
+import org.springblade.system.pojo.entity.DictBiz;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.time.LocalDateTime;
import java.util.List;
@@ -27,18 +39,27 @@
@Component("normalDispatchFinishDataHandler")
public class NormalFinishDataHandler implements FinishDataHandler{
@Autowired
- private NcProgramApprovedService approvedService;
- @Autowired
private FlowProgramFileService flowProgramFileService;
+ @Autowired
+ private MachineAnnotationConfig annotationConfig;
+ @Autowired
+ private MachineService machineService;
@Autowired
private NcNodeService ncNodeService;
@Autowired
private NcNodeAutoCreateService ncNodeAutoCreateService;
+ @Autowired
+ private ProgramAnnotationService programAnnotationService;
+ @Autowired
+ private ListenerHelper listenerHelper;
+ @Autowired
+ private OssTemplate ossTemplate;
+
/**
* DispatchFinishListener涓皟鐢�
* @param props 娴佺▼灞炴��
*/
- public void handleData(FlowProgramProperties props) {
+ public void handleData(FlowProgramProperties props) throws IOException {
// 鎵ц涓氬姟閫昏緫
LocalDateTime now = LocalDateTime.now();
NcNode packageNode;
@@ -57,8 +78,12 @@
packageNode = ncNodeAutoCreateService.createNodeTreeWithProgram(props,newVersion);
}else{
- //鍙敤锛屽崌鐗堬紙淇敼鍏跺伐搴忕増娆★級锛屽師鏉ョ殑鑺傜偣娓呴櫎
+ //String oriProcessEdition = packageNode.getProcessEdition();
+ //鍙敤锛岀┖鍗囩増锛堜慨鏀瑰叾宸ュ簭鐗堟锛夛紝鍘熸潵鐨勮妭鐐规竻闄�
moveToNewProcessEdition(packageNode,props);
+
+ //鏇存柊宸插浐鍖栫殑锛屽悓鍚嶃�佷笉鍚屾満搴婄粍鐨勭▼搴忎负閿佸畾鐘舵��
+ ncNodeService.lockSameNameOtherMachineGroupProgramPackage(packageNode);
}
}else{
//鏅�氳瘯鍒�
@@ -68,7 +93,7 @@
ncNodeService.updateById(packageNode);
}
- addApproveTable(packageNode,props);
+ listenerHelper.addApproveTable(packageNode,props);
log.info("鏅�氭祦绋嬪凡瀹屾垚in DispatchFinishListener");
}
@@ -78,8 +103,9 @@
* @param packageNode 绋嬪簭鍖呭悕鑺傜偣
* @param props 娴佺▼灞炴��
*/
- private void moveToNewProcessEdition(NcNode packageNode, FlowProgramProperties props) {
- ncNodeService.deleteMachineNodeByParentId(packageNode.getParentId());
+ private void moveToNewProcessEdition(NcNode packageNode, FlowProgramProperties props) throws IOException {
+ //ncNodeService.deleteMachineGroupNodeByParentId();
+ ncNodeService.getBaseMapper().deleteById(packageNode.getParentId());//鍒犻櫎鏈哄簥缁勮妭鐐�
FlowProgramProperties tempProps = new FlowProgramProperties();
BeanUtils.copyProperties(props,tempProps);
@@ -87,6 +113,7 @@
NcNode machineGroupNode = ncNodeAutoCreateService.createNodeTreeToMachineGroup(tempProps);
//绉诲姩鍘嗗彶鑺傜偣鍒版柊鐨勭増娆¤妭鐐逛笅
+ /*
List<NcNode> packageHisNodes = ncNodeService.getTryNodeHistory(packageNode);//璇ュ寘鐨勫巻鍙茶妭鐐瑰垪琛�
for(NcNode hisPackageNode : packageHisNodes){
hisPackageNode.setParentId(machineGroupNode.getId());
@@ -100,27 +127,39 @@
ncNodeService.updateBatchById(oriProgramNodes);
}
ncNodeService.updateBatchById(packageHisNodes);
-
+ */
//绉诲姩绋嬪簭鍖呭悕鑺傜偣
packageNode.setProcessEdition(tempProps.getProcessEdition());
packageNode.setParentId(machineGroupNode.getId());
- packageNode.setParentIds(machineGroupNode.getParentIds()+","+machineGroupNode.getId());
+ packageNode.setParentIds(machineGroupNode.subNodeParentIds());
packageNode.setName(tempProps.getDrawingNo()+"-"+tempProps.getProcessNo()+"-"+tempProps.getProcessEdition());
- this.ncNodeService.updateById(packageNode);
+ this.ncNodeService.updateById(packageNode);
+ Machine machine = machineService.getByCode(packageNode.getMachineCode());
//绉诲姩绋嬪簭鑺傜偣
+ //List<DictBiz> annoDicts = programAnnotationService.getAnnotionDictList();
List<NcNode> programNodes = ncNodeService.getProgramFilesByPackageId(packageNode.getId());
for(NcNode programNode : programNodes){
+ FlowProgramFile progFile = this.flowProgramFileService.getById(programNode.getFlowProgramFileId());
- programNode.setName(buildNewFilename(programNode.getName(),tempProps.getProcessEdition()));//鍚嶇О淇敼锛屽伐搴忕増娆¢儴鍒�
- programNode.setParentIds(packageNode.getParentIds()+","+packageNode.getId());
+ programNode.setParentIds(packageNode.subNodeParentIds());
programNode.setProcessEdition(tempProps.getProcessEdition());//淇敼宸ュ簭鐗堟
programNode.setVersionNumber(packageNode.getVersionNumber());
+ if(progFile.isProgram()) {
+ programNode.setName(buildNewFilename(programNode.getName(), tempProps.getProcessEdition()));//鍚嶇О淇敼锛屽伐搴忕増娆¢儴鍒�
+ setNewProgramNameAnnotation(programNode.getName(), progFile, machine.getControlSystem());
+ }
}
ncNodeService.updateBatchById(programNodes);
}
+ /**
+ * 鏋勫缓鏂扮殑绋嬪簭甯傚悕
+ * @param filename 绋嬪簭鍖呭悕
+ * @param newProcessEdition 鏂扮殑宸ュ簭鐗堟
+ * @return 鏂扮殑绋嬪簭鏂囦欢鍚�
+ */
String buildNewFilename(String filename,String newProcessEdition){
ProgramNameVO pnameVO = ProgramFileNameParser.parseProgramName(filename);
String ext = FilenameUtils.getExtension(filename);
@@ -132,20 +171,34 @@
}
/**
- * 淇濆瓨瀹℃壒瀹屾垚鐨勮褰�
- * @param packageNode
- * @param props
+ * 璁剧疆鍥哄寲娉ㄩ噴,瀹炵幇鏂瑰紡锛岃幏鍙栨枃浠跺瓧鑺備笅锛屼慨鏀瑰悗鏇挎崲鏂囦欢
+ * @param flowProgramFile oss 鏂囦欢
+ *
*/
- void addApproveTable(NcNode packageNode,FlowProgramProperties props){
- NcProgramApproved approved = new NcProgramApproved();
+ void setNewProgramNameAnnotation(String filename,FlowProgramFile flowProgramFile, String controlSystem) throws IOException {
- approved.setProgramName(packageNode.getName());
- approved.setNcNodeId(packageNode.getId());//绋嬪簭鍖呰妭鐐筰d
- approved.setTitle(props.getTitle());
- approved.setProgrammerId(props.getActProgrammerId());
- approved.setProcessInstanceId(props.getProcessInstanceId());
- approvedService.save(approved);
+ try(InputStream ins = ossTemplate.statFileStream(flowProgramFile.getOssName());){
+ ByteArrayInputStream byteInputStream = new ByteArrayInputStream(IOUtils.toByteArray(ins));
+ //List<DictBiz> annoDictList = programAnnotationService.getAnnotionDictList();
+
+ AnnotationProcessor annoProcessor = ProcessorHelper.getProcessor(controlSystem,this.annotationConfig);
+ /*
+ AnnotationProperties annoProps = annotationConfig.getConfigMap().get(controlSystem);
+ if(annoProps == null){
+ annoProps = AnnotationProperties.getDefault();
+ }*/
+ InputStream finishedStream = annoProcessor.setFilenameAnnotation(filename,byteInputStream);
+ //InputStream finishedStream = AnnotationUtil.setAnnotationAndGetInputStream(byteInputStream, "GH", annoProps.getStatusLineIndex(), controlSystem, annoDictList);
+ try(finishedStream) {
+ finishedStream.reset();
+ BladeFile bfile = ossTemplate.putFile(flowProgramFile.getName(), finishedStream);
+ //鏇挎崲鍘熸湁鐨勬枃浠跺湴鍧�
+ flowProgramFile.setOssName(bfile.getName());
+ flowProgramFile.setName(filename);
+ flowProgramFileService.updateById(flowProgramFile);
+ }
+ }
}
}
--
Gitblit v1.9.3