From 4c7296d45efe849dc70a3b2e2240c905481a91c9 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 29 九月 2025 17:44:46 +0800
Subject: [PATCH] 工控网涉密网联调
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/FileSendRecord.java | 9
blade-service/blade-mdm/src/test/java/org/springblade/mdm/program/service/programannotation/DefaultProcessorTest.java | 21 +
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineAcceptedFileService.java | 13
blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/RegExpConstants.java | 2
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/filewatch/MachineFileChangeListener.java | 41 +
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/ProgramOnMachineImportController.java | 15
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java | 42 +-
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java | 63 +--
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.java | 4
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java | 11
blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/ProgramFileNameParserTest.java | 1
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/MachineFileController.java | 4
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/append/AppendFinishListener.java | 3
blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/MachineDirTranslator.java | 24 +
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/filewatch/FileLockChecker.java | 2
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java | 9
blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/DirTransProperties.java | 14
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java | 71 ++++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java | 14
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileService.java | 28 +
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationUtil.java | 2
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java | 67 +++-
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/MdmProgramImportController.java | 1
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.xml | 6
blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java | 26 +
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java | 14
blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/ShutdownHook.java | 9
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/NcProgramExportInnerService.java | 44 ++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/DeviationCureFinishDataHandler.java | 7
blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java | 16 +
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineAcceptedFileMapper.xml | 3
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/DncBackFile.java | 4
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/NormalCureFinishDataHandler.java | 9
blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/service/MachineService.java | 65 ++-
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/listeners/ExportToInnerListener.java | 2
blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/mapper/MachineBackTaskMapper.xml | 2
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DncBackFileService.java | 7
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java | 1
blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/vo/MachineBackTaskVO.java | 8
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/filewatch/FileWatcherService.java | 4
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileScanService.java | 68 +---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java | 93 +-----
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationProcessor.java | 1
blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/entity/MachineBackTask.java | 8
blade-service/blade-mdm/src/test/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVOTest.java | 27 +
45 files changed, 527 insertions(+), 358 deletions(-)
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/service/MachineService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/service/MachineService.java
index 6915e01..cbb5456 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/service/MachineService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/machine/service/MachineService.java
@@ -16,6 +16,7 @@
import org.springblade.mdm.basesetting.machine.vo.MachineSaveVO;
import org.springblade.mdm.basesetting.machine.vo.MachineVO;
import org.springblade.mdm.basesetting.producedivision.service.MdmDeptService;
+import org.springblade.mdm.commons.service.MachineDirTranslator;
import org.springblade.mdm.commons.service.ParamService;
import org.springblade.mdm.machinefile.entity.MachineFile;
import org.springblade.mdm.machinefile.filewatch.DynamicDirectoryWatcher;
@@ -35,6 +36,7 @@
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
+import java.util.Optional;
@Service
public class MachineService extends BizServiceImpl<MachineMapper, Machine> {
@@ -44,6 +46,9 @@
private DynamicDirectoryWatcher dynamicDirectoryWatcher;
@Autowired
private ParamService paramService;
+ @Autowired
+ private MachineDirTranslator machineDirTranslator;
+
@Transactional(rollbackFor = Exception.class)
public void saveMachine(MachineSaveVO vo) throws IOException {
checkMachine(vo);
@@ -66,15 +71,15 @@
void makeMachineDirs(Machine machine) throws IOException {
Path dir;
if(StringUtils.isNotBlank(machine.getProgSendDir())){
- createDirIsNotExists(machine.getProgSendDir());
+ createDirIsNotExists(machineDirTranslator.trans(machine.getProgSendDir()));
}
- if(StringUtils.isNotBlank(machine.getProgReceiveDir())){
- createDirIsNotExists(machine.getProgReceiveDir());
+ if(StringUtils.isNotBlank(machineDirTranslator.trans(machine.getProgReceiveDir()))){
+ createDirIsNotExists(machineDirTranslator.trans(machine.getProgReceiveDir()));
}
- if(StringUtils.isNotBlank(machine.getProgTempDir())){
- createDirIsNotExists(machine.getProgTempDir());
+ if(StringUtils.isNotBlank(machineDirTranslator.trans(machine.getProgTempDir()))){
+ createDirIsNotExists(machineDirTranslator.trans(machine.getProgTempDir()));
}
}
@@ -95,13 +100,17 @@
ProgramAnnotationService annoService = SpringUtil.getBean(ProgramAnnotationService.class);
if(StringUtils.isNotBlank(machine.getProgSendDir())) {
+
+ String sendDir = machineDirTranslator.trans(machine.getProgSendDir());
+
WatchInfo watchInfoSend = new WatchInfo();
watchInfoSend.setMachine(machine);
watchInfoSend.setDirType(MachineFile.DIR_TYPE_SEND);
- watchInfoSend.setPath(machine.getProgSendDir());
+ watchInfoSend.setPath(sendDir);
- if(!dynamicDirectoryWatcher.containsPath(Paths.get(machine.getProgSendDir()))) {
- dynamicDirectoryWatcher.addDirectory(Paths.get(machine.getProgSendDir()),
+ Path path = Paths.get(sendDir);
+ if(!dynamicDirectoryWatcher.containsPath(path)) {
+ dynamicDirectoryWatcher.addDirectory(path,
new MachineFileChangeListener(machineFileService,
annoService,
watchInfoSend));
@@ -109,12 +118,16 @@
}
if(StringUtils.isNotBlank(machine.getProgReceiveDir())) {
+
+ String recDir = machineDirTranslator.trans(machine.getProgReceiveDir());
+
WatchInfo watchInfoRec = new WatchInfo();
watchInfoRec.setMachine(machine);
watchInfoRec.setDirType(MachineFile.DIR_TYPE_REC);
- watchInfoRec.setPath(machine.getProgReceiveDir());
- if(!dynamicDirectoryWatcher.containsPath(Paths.get(machine.getProgReceiveDir()))) {
- dynamicDirectoryWatcher.addDirectory(Paths.get(machine.getProgReceiveDir()),
+ watchInfoRec.setPath(recDir);
+ Path path = Paths.get(recDir);
+ if(!dynamicDirectoryWatcher.containsPath(path)) {
+ dynamicDirectoryWatcher.addDirectory(path,
new MachineFileChangeListener(machineFileService,
annoService,
watchInfoRec));
@@ -122,12 +135,14 @@
}
if(StringUtils.isNotBlank(machine.getProgTempDir())) {
+ String tempDir = machineDirTranslator.trans(machine.getProgTempDir());
WatchInfo watchInfoTemp = new WatchInfo();
watchInfoTemp.setMachine(machine);
watchInfoTemp.setDirType(MachineFile.DIR_TYPE_TEMP);
- watchInfoTemp.setPath(machine.getProgTempDir());
- if(!dynamicDirectoryWatcher.containsPath(Paths.get(machine.getProgTempDir()))) {
- dynamicDirectoryWatcher.addDirectory(Paths.get(machine.getProgTempDir()),
+ watchInfoTemp.setPath(tempDir);
+ Path path = Paths.get(machine.getProgTempDir());
+ if(!dynamicDirectoryWatcher.containsPath(path)) {
+ dynamicDirectoryWatcher.addDirectory(path,
new MachineFileChangeListener(machineFileService,
annoService,
watchInfoTemp));
@@ -356,16 +371,20 @@
return null;
}
//鍘绘帀鏈熬鎷彿(鍙戦偅绉�) ,鏈熬璺緞鍒嗛殧绗�
- String tempPath = StringUtils.removeEnd(StringUtils.removeEnd(StringUtils.removeEnd(sendPathLine,")"),"/"),"\\");
- //鍘绘帀鍓�2浣嶅彲鑳界殑娉ㄩ噴(*-)銆�
- String sendPath = escapeSqlWildcard(StringUtils.trim(StringUtils.substring(tempPath,2)));
+ String oriPath = StringUtils.removeEnd(StringUtils.removeEnd(StringUtils.removeEnd(sendPathLine,")"),"/"),"\\");
- List<Machine> machines = lambdaQuery().eq(Machine::getStatus,Machine.STATUS_ENABLE).like(Machine::getProgSendDir,sendPath).list();
- if(machines.isEmpty()){
- return null;
- }else{
- return machines.get(0);
- }
+ String tempPathRepl1 = StringUtils.replace(oriPath,"/","\\");//鍙嶆枩鏉犵増鏈殑璺緞
+ String tempPathRepl2 = StringUtils.replace(oriPath,"\\","/");//姝f枩鏉犵増鏈殑璺緞
+
+ //鍘绘帀鍓�2浣嶅彲鑳界殑娉ㄩ噴(*-)銆�
+ String sendPath1 = escapeSqlWildcard(StringUtils.trim(StringUtils.substring(tempPathRepl1,2)));
+ String sendPath2 = escapeSqlWildcard(StringUtils.trim(StringUtils.substring(tempPathRepl2,2)));
+
+ Optional<Machine> machineOpt = lambdaQuery().eq(Machine::getStatus,Machine.STATUS_ENABLE).and(w -> {
+ w.like(Machine::getProgSendDir,sendPath1).or().like(Machine::getProgSendDir,sendPath2);
+ }).last("limit 1").oneOpt();
+
+ return machineOpt.orElse(null);
}
/**
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/RegExpConstants.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/RegExpConstants.java
index f8e3003..a3242ba 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/RegExpConstants.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/contants/RegExpConstants.java
@@ -9,6 +9,6 @@
*/
public static final Pattern PROGRAM_FILE_PATTERN = Pattern.compile("^([\\u4e00-\\u9fa5\\w\\-]+)-([0-9a-zA-Z]+)-([\\u4e00-\\u9fa5a-zA-Z0-9]+)-(\\d+)-(\\d+)-?([Pp]\\d+)?(\\.[a-zA-Z]+)?$");
- //public static final Pattern PROGRAM_PACKAGE_PATTERN = Pattern.compile("[\\w\\-]+\\-\\w+\\-\\w+");
+
public static final Pattern PROGRAM_PACKAGE_PATTERN = Pattern.compile("([\\u4e00-\\u9fa5\\w\\-]+)-[0-9a-zA-Z]+-[\\u4e00-\\u9fa5a-zA-Z0-9]+");
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/DirTransProperties.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/DirTransProperties.java
new file mode 100644
index 0000000..ff3ff43
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/DirTransProperties.java
@@ -0,0 +1,14 @@
+package org.springblade.mdm.commons.service;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Component
+@ConfigurationProperties(prefix = "dirtrans")
+@Data
+public class DirTransProperties {
+ private String oriDirPrefix;
+ private String targetDirPrefix;
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/MachineDirTranslator.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/MachineDirTranslator.java
new file mode 100644
index 0000000..750d182
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/MachineDirTranslator.java
@@ -0,0 +1,24 @@
+package org.springblade.mdm.commons.service;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * 鏈哄簥璺緞杞崲鍣紝浠嶼鐩樿繖绉嶇洰褰曡浆鎹负缃戠粶鐩綍鏍煎紡鍏�:\\192.168.233.2\Workshop
+ */
+@Component
+public class MachineDirTranslator {
+ @Autowired
+ private DirTransProperties transProperties;
+
+ public String trans(String path){
+ if(StringUtils.isBlank(transProperties.getTargetDirPrefix()) || !StringUtils.startsWithIgnoreCase(path,transProperties.getOriDirPrefix())){
+ return path;
+ }
+
+ String finalDir = transProperties.getTargetDirPrefix()+StringUtils.removeStartIgnoreCase(path,transProperties.getOriDirPrefix());
+ return finalDir;
+ }
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java
index 6acb1a6..08f278e 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/InitBean.java
@@ -6,6 +6,7 @@
import org.apache.commons.lang3.StringUtils;
import org.springblade.mdm.basesetting.machine.service.MachineService;
import org.springblade.mdm.basesetting.machine.entity.Machine;
+import org.springblade.mdm.commons.service.MachineDirTranslator;
import org.springblade.mdm.commons.service.ParamService;
import org.springblade.mdm.flow.service.TaskDispatchService;
import org.springblade.mdm.machinefile.entity.MachineFile;
@@ -34,10 +35,7 @@
private final ProgramAnnotationService annotationService;
private final MachineFileScanService machineFileScanService;
private final TaskDispatchService taskDispatchService;
-
- //@Value("${task.file_scan_on_start:true}")
- //@Value("${task.fileScanOnStart:true}")
- //public boolean fileScanOnStart;
+ private final MachineDirTranslator dirTranslator;
private final TaskPropertieBean taskPropertieBean;
@PostConstruct
public void init() {
@@ -52,7 +50,6 @@
log.info("宸ユ帶缃戝惎鍔ㄦ枃浠剁洃鎺�");
initMachineDirMonitor();
}else{
-
//娑夊瘑缃�
taskDispatchService.resetDrawingNos();
}
@@ -76,6 +73,7 @@
machineList.forEach(m -> {
addToWatchDirList(monitorInfoList,m);
});
+
for (WatchInfo info : monitorInfoList) {
try {
Path dirPath = Paths.get(info.getPath());
@@ -94,7 +92,8 @@
String dir;
//鍔犲叆send鏂囦欢澶�
if (StringUtils.isNotEmpty(machine.getProgSendDir())) {
- dir = StringUtils.removeEnd(StringUtils.removeEnd(machine.getProgSendDir(), "/"), "\\");
+ //dir = dirTranslator.trans(StringUtils.removeEnd(StringUtils.removeEnd(machine.getProgSendDir(), "/"), "\\"));
+ dir = fixMachineDir(machine.getProgSendDir());
WatchInfo watchInfo = new WatchInfo();
watchInfo.setMachine(machine);
watchInfo.setDirType(MachineFile.DIR_TYPE_SEND);
@@ -106,7 +105,8 @@
//鍔犲叆rec鏂囦欢澶�
if (StringUtils.isNotEmpty(machine.getProgReceiveDir())) {
- dir = StringUtils.removeEnd(StringUtils.removeEnd(machine.getProgReceiveDir(), "/"), "\\");
+ //dir = StringUtils.removeEnd(StringUtils.removeEnd(machine.getProgReceiveDir(), "/"), "\\");
+ dir = fixMachineDir(machine.getProgReceiveDir());
WatchInfo watchInfo = new WatchInfo();
watchInfo.setMachine(machine);
watchInfo.setDirType(MachineFile.DIR_TYPE_REC);
@@ -118,7 +118,8 @@
//鍔犲叆temp鏂囦欢澶�
if (StringUtils.isNotEmpty(machine.getProgTempDir())) {
- dir = StringUtils.removeEnd(StringUtils.removeEnd(machine.getProgTempDir(), "/"), "\\");
+ //dir = StringUtils.removeEnd(StringUtils.removeEnd(machine.getProgTempDir(), "/"), "\\");
+ dir = fixMachineDir(machine.getProgTempDir());
WatchInfo watchInfo = new WatchInfo();
watchInfo.setMachine(machine);
watchInfo.setDirType(MachineFile.DIR_TYPE_TEMP);
@@ -129,6 +130,15 @@
}
}
+ /**
+ * 缈昏瘧鍏变韩鏂囦欢澶硅矾寰勫埌 鏍囧噯缃戠粶璺緞锛屽幓鎺夋湯灏捐矾寰勫垎鍓蹭笉
+ * @param dirpath 鍘熷璺緞
+ * @return 杞崲鍚庣殑璺緞
+ */
+ String fixMachineDir(String dirpath){
+ return dirTranslator.trans(StringUtils.removeEnd(StringUtils.removeEnd(dirpath, "/"), "\\"));
+ }
+
FileWatcherService.FileChangeListener getListener(WatchInfo info) {
return new MachineFileChangeListener(machineFileService,annotationService,info);
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/ShutdownHook.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/ShutdownHook.java
index 35bd28a..b17cfa3 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/ShutdownHook.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/config/ShutdownHook.java
@@ -3,19 +3,18 @@
import jakarta.annotation.PreDestroy;
import lombok.AllArgsConstructor;
import org.springblade.mdm.machinefile.filewatch.DirectorLockService;
+import org.springblade.mdm.machinefile.filewatch.FileWatcherService;
import org.springframework.stereotype.Component;
@AllArgsConstructor
@Component
public class ShutdownHook {
private final DirectorLockService directorLockService;
+ private final FileWatcherService fileWatcherService;
@PreDestroy
public void onExit() {
System.out.println("鎵ц閫�鍑哄墠娓呯悊鎿嶄綔...");
- // 1. 鍏抽棴鏂囦欢鐩戞帶
- // 2. 閲婃斁璧勬簮
- // 3. 淇濆瓨鐘舵��
- // 4. 閫氱煡鍏朵粬鏈嶅姟
- directorLockService.releaseLock();
+
+ fileWatcherService.shutdown();
}
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java
index 8b9b7e8..1ca5e33 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java
@@ -6,9 +6,7 @@
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
-import org.flowable.engine.HistoryService;
import org.flowable.engine.TaskService;
-import org.flowable.task.api.history.HistoricTaskInstance;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
@@ -16,14 +14,11 @@
import org.springblade.mdm.basesetting.producedivision.service.MdmUserService;
import org.springblade.mdm.flow.service.DoneQueryService;
import org.springblade.mdm.flow.service.FlowBusinessService;
-import org.springblade.mdm.flow.service.FlowCommonService;
import org.springblade.mdm.flow.service.FlowTransferService;
import org.springblade.mdm.flow.vo.DoneQueryVO;
import org.springblade.mdm.flow.vo.FlowVO;
import org.springblade.mdm.flow.vo.TodoQueryVO;
import org.springblade.mdm.gkw.programnode.vo.ProgramNodeVO;
-import org.springblade.system.feign.IUserSearchClient;
-import org.springblade.system.pojo.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;
@@ -44,13 +39,7 @@
@Autowired
private FlowBusinessService businessService;
@Autowired
- private IUserSearchClient userSearchClient;
-
- @Autowired
private FlowTransferService flowTransferService;
- @Autowired
- private FlowCommonService flowCommonService;
-
@Autowired
private DoneQueryService doneQueryService;
/**
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/append/AppendFinishListener.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/append/AppendFinishListener.java
index 9a6504c..1dd5a50 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/append/AppendFinishListener.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/append/AppendFinishListener.java
@@ -1,7 +1,6 @@
package org.springblade.mdm.flow.excution.append;
import lombok.extern.slf4j.Slf4j;
-import org.flowable.engine.RuntimeService;
import org.flowable.engine.delegate.DelegateExecution;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.mdm.flow.entity.FlowProgramFile;
@@ -78,7 +77,7 @@
tempProgramNode.setName(newFlowFile.getName());
tempProgramNode.setParentId(tempPkgNode.getId());
- tempProgramNode.setParentIds(tempPkgNode.getParentIds()+","+tempPkgNode.getId());
+ tempProgramNode.setParentIds(tempPkgNode.subNodeParentIds());
tempProgramNode.setProcessInstanceId(props.getProcessInstanceId());
tempProgramNode.setFlowProgramFileId(newFlowFile.getId());
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/DeviationCureFinishDataHandler.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/DeviationCureFinishDataHandler.java
index 67b4e2e..45ef0b2 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/DeviationCureFinishDataHandler.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/DeviationCureFinishDataHandler.java
@@ -46,11 +46,9 @@
EntityUtil.clearBaseProperties(newPkgNode);
newPkgNode.setIsLastEdition(1);
newPkgNode.upgradeVersionNumber();
-
nodeService.save(newPkgNode);
- copyNonProgramNodes(pkgNode,newPkgNode);
-
+ //copyNonProgramNodes(pkgNode,newPkgNode);
addNewProgramNode(newPkgNode,props.getProcessInstanceId());
log.info("涓存椂鏇存敼鍗曞洖浼燣istener瀹屾垚");
@@ -61,6 +59,7 @@
* @param oriPkgNode 寰呭浐鍖栬妭鐐�
* @param cureNode 鍥哄寲鑺傜偣
*/
+ /*
void copyNonProgramNodes(NcNode oriPkgNode,NcNode cureNode){
//澶勭悊绋嬪簭鍖呬笅灞傜殑绋嬪簭鑺傜偣1
List<NcNode> oriProgramNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,oriPkgNode.getId()).list();
@@ -80,7 +79,7 @@
}
}
- }
+ }*/
/**
* 鍔犲叆鏂扮殑绋嬪簭鏂囦欢鑺傜偣
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 ec8432e..6cd6635 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
@@ -171,6 +171,7 @@
oldProgramNode.setIsLastEdition(0);
//褰撳墠鍥哄寲绋嬪簭鍖呭悕涓嬬殑鈥滃叾浠栨枃浠垛�濋潪绋嬪簭鏂囦欢銆備笉璁剧疆涓鸿�佺増鏈紝鐩存帴鎸埌鍥哄寲鏍戜笅,涓や釜缃戠粶涔嬮棿鍙氦鎹㈢▼搴忔枃浠讹紝鍏朵粬鏂囦欢鍙兘淇濈暀
//鍏朵粬鏂囦欢锛岄渶瑕佸鍒跺埌鏂板缓鐨勫浐鍖栬妭鐐逛笅锛堢▼搴忔枃浠朵笉澶嶅埗锛�
+ /*
pfile = flowProgramFileService.getById(oldProgramNode.getFlowProgramFileId());
if(!pfile.isProgram()) {
NcNode newFileNode = new NcNode();
@@ -181,11 +182,17 @@
newFileNode.setIsLastEdition(1);
nodeService.save(newFileNode);
}
-
+ */
}
nodeService.updateBatchById(oriProgramNodes);
}
+ /**
+ * 鍔犲叆鏂扮殑绋嬪簭鑺傜偣
+ * @param cureNode 鍥哄寲鑺傜偣
+ * @param processInstanceId 娴佺▼瀹炰緥id
+ * @throws IOException
+ */
void addNewProgramNode(NcNode cureNode,String processInstanceId) throws IOException {
Machine machine = machineService.getByCode(cureNode.getMachineCode());
List<DictBiz> annoDicts = programAnnotationService.getAnnotionDictList();
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
index 72d5b7e..6c961df 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java
@@ -6,14 +6,13 @@
import org.flowable.engine.RuntimeService;
import org.flowable.engine.runtime.ProcessInstance;
import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.mdm.basesetting.machine.service.MachineService;
-import org.springblade.mdm.basesetting.producedivision.service.ProduceDivisionService;
import org.springblade.mdm.flow.constants.FlowConstant;
import org.springblade.mdm.flow.constants.FlowVariableConstant;
import org.springblade.mdm.flow.entity.FlowProgramFile;
import org.springblade.mdm.program.entity.NcNode;
import org.springblade.mdm.program.service.NcNodeService;
-import org.springblade.mdm.program.service.NodeDeptQueryService;
+import org.springblade.mdm.utils.EntityUtil;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -32,12 +31,9 @@
private final RuntimeService runtimeService;
private final IdentityService identityService;
- private final NodeDeptQueryService nodeDeptQueryService;
private final NcNodeService ncNodeService;
private final FlowProgramFileService flowProgramFileService;
- private final ProduceDivisionService produceDivisionService;
- private final MachineService machineService;
private final FlowCommonService flowCommonService;
/**
@@ -59,37 +55,11 @@
vars.put(FlowConstant.NODE_ID,programPackage.getId());
flowCommonService.putFlowVariablesByNode(vars,programPackage);
- /*
- vars.put(FlowVariableContants.MACHINE_CODE,programPackage.getMachineCode());
-
- //鏈哄簥鍨嬪彿
- Machine machine = machineService.getByCode(programPackage.getMachineCode());
- if(machine != null) {
- vars.put(FlowVariableContants.MACHINE_MODE,machine.getName());
- }
-
- String workshop = nodeDeptQueryService.getWorkshopNameByMachineCode(programPackage.getMachineCode());
- vars.put(FlowVariableContants.WORKSHOP,workshop);
-
- vars.put(FlowContants.NODE_ID, Func.toStr(nodeId));
- vars.put(FlowVariableContants.PROCESS_NO,programPackage.getProcessNo());
- vars.put(FlowVariableContants.PROCESS_NAME,programPackage.getProcessName());
- vars.put(FlowVariableContants.PROCESS_EDITION,programPackage.getProcessEdition());
- vars.put(FlowVariableContants.CRAFT_EDITION, programPackage.getCraftEdition());
- vars.put(FlowVariableContants.DRAWING_NO,programPackage.getDrawingNo());
- vars.put(FlowVariableContants.DRAWING_NO_EDITION,programPackage.getDrawingNoEdition());
-
- vars.put(FlowVariableContants.PRODUCT_MODEL,programPackage.getProductModel());
- vars.put(FlowVariableContants.PROGRAM_PACKAGE_NAME,programPackage.getName());
- */
flowCommonService.putDefaultAssignees(vars,programPackage.getDrawingNo(),null);
vars.put(FlowVariableConstant.ASSIGNEE,vars.get(FlowVariableConstant.PROGRAMMER));
-
identityService.setAuthenticatedUserId(String.valueOf(AuthUtil.getUserId()));//璁剧疆娴佺▼鍙戣捣浜�
-
vars.put(FlowVariableConstant.LAST_STEP_USER_NICKNAME, AuthUtil.getNickName());
-
if(programPackage.getDeviation() != null) {
vars.put(FlowVariableConstant.MY_PROCESS_NAME, "涓存椂鏇存敼鍗曞洖浼�");
@@ -109,16 +79,29 @@
}
this.flowProgramFileService.saveBatch(fileList);
+ addPreviousOtherFiles(programPackage.getId(),inst.getProcessInstanceId());
+
log.info("鍚姩鍥哄寲娴佺▼瀹屾垚锛屽疄渚媔d={}", inst.getId());
}
+
/**
- * 灏嗙▼搴忔寜鐓ф満鍣ㄤ唬鐮佸垎缁�
- * @param ncProgramIdList
- * @return
+ * 澶嶅埗璇曞垏闃舵鐨勫叾浠栨枃浠剁粰鍥哄寲娴佺▼
+ * @param previousNodeId 璇曞垏闃舵鐨勮妭鐐筰d
+ * @param newProcessInstanceId 鏂扮殑鍥哄寲娴佺▼瀹炰緥id
*/
- /*
- Map<String,List<NcProgram>> groupProgramsByMachineCode(List<Long> ncProgramIdList){
- List<NcProgram> programs = ncProgramService.listByIds(ncProgramIdList);
- return programs.stream().collect(Collectors.groupingBy(NcProgram::getMachineCode));
- }*/
+ void addPreviousOtherFiles(Long previousNodeId,String newProcessInstanceId) {
+ List<NcNode> previousFileNodes = ncNodeService.getProgramFilesByPackageId(previousNodeId);
+ for(NcNode fileNode : previousFileNodes){
+
+ FlowProgramFile progFile = flowProgramFileService.getById(fileNode.getFlowProgramFileId());
+ if(!progFile.isProgram()){
+ FlowProgramFile newProgFile = new FlowProgramFile();
+ BeanUtils.copyProperties(progFile,newProgFile);
+ EntityUtil.clearBaseProperties(newProgFile);
+ newProgFile.setProcessInstanceId(newProcessInstanceId);
+
+ flowProgramFileService.save(newProgFile);
+ }
+ }
+ }
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java
index 7424997..fe74391 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java
@@ -1,7 +1,6 @@
package org.springblade.mdm.gkw.programnode.vo;
-
-import com.alibaba.excel.util.StringUtils;
import lombok.Data;
+import org.apache.commons.lang3.StringUtils;
/**
* 瑁呰浇绋嬪簭鍚嶇粨鏋�
@@ -40,6 +39,17 @@
}
/**
+ * 鑾峰彇涓存椂鏇存敼鍗曞簭鍙�
+ * @return 鏇存敼鍗曞簭鍙�
+ */
+ public String lgSerial(){
+ if(StringUtils.startsWithIgnoreCase(lgPart,"P")){
+ return lgPart.substring(1);
+ }else{
+ return null;
+ }
+ }
+ /**
* 鏂囦欢鍚嶆槸鍚︽湁鏁�
* @return
*/
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/entity/MachineBackTask.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/entity/MachineBackTask.java
index a798939..d44f53d 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/entity/MachineBackTask.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/entity/MachineBackTask.java
@@ -46,6 +46,10 @@
*/
private String deviation;
/**
+ * 涓存椂鏇存敼鍗曞簭鍙�
+ */
+ private String deviationSerial;
+ /**
* 绋嬪簭鎬绘鏁�/鐜板満缂栧埗鐨�=0
*/
private int segCount;
@@ -56,4 +60,8 @@
private int taskType;
private Date finishTime;
+
+ public boolean isProgramOnMachineTask(){
+ return taskType == TASK_TYPE_ON_MACHINE;
+ }
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/mapper/MachineBackTaskMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/mapper/MachineBackTaskMapper.xml
index 5868e59..207fea0 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/mapper/MachineBackTaskMapper.xml
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/mapper/MachineBackTaskMapper.xml
@@ -6,7 +6,7 @@
<!--鏂囦欢璁板綍鏌ヨ-->
<select id="pageQuery" resultType="org.springblade.mdm.gkw.task.vo.MachineBackTaskVO">
- select t.id,t.program_name,t.machine_code,t.task_type,t.deviation,t.seg_count,t.finish_time,t.create_time,t.status,t.update_time,u.name create_user_name
+ select t.id,t.program_name,t.machine_code,t.task_type,t.deviation,t.deviation_serial,t.seg_count,t.finish_time,t.create_time,t.status,t.update_time,u.name create_user_name
from mdm_machine_back_task t left join blade_user u on t.create_user=u.id
<where>
t.is_deleted=0
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/vo/MachineBackTaskVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/vo/MachineBackTaskVO.java
index 864c9c5..5cc14b1 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/vo/MachineBackTaskVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/task/vo/MachineBackTaskVO.java
@@ -14,7 +14,13 @@
@Schema(description = "鏈哄簥缂栧彿")
private String machineCode;
+ @Schema(description = "鏇存敼鍗曞彿")
+ private String deviation;
+ @Schema(description = "鏇存敼鍗曞簭鍙�")
+ private String deviationSerial;
+
@Schema(description = "浠诲姟绫诲瀷")
private int taskType;
-
+ @Schema(description = "绋嬪簭娈垫暟")
+ private int segCount;
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/MachineFileController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/MachineFileController.java
index 8884570..440a00b 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/MachineFileController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/controller/MachineFileController.java
@@ -93,12 +93,12 @@
}
@PostMapping("/change-file-name")
- @Operation(summary = "淇濆瓨鏈哄簥鏂囦欢", description = "淇濆瓨鏈哄簥鏂囦欢鍒扮鐩�")
+ @Operation(summary = "SEND鏂囦欢閲嶅懡鍚�", description = "SEND鏂囦欢閲嶅懡鍚�")
public R<Void> changeFileName(Long id,String name) {
try {
machineFileService.changeName(id,name);
} catch (Exception e) {
- log.error(e.getMessage());
+ log.error("鏂囦欢閲嶅懡鍚嶅紓甯�",e);
return R.fail(e.getMessage());
}
return R.success();
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/FileSendRecord.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/FileSendRecord.java
index 631af18..c7d1268 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/FileSendRecord.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/entity/FileSendRecord.java
@@ -42,9 +42,14 @@
private String programStatus;
/**
- * 涓存椂鏇存敼鍗曞彿
+ * 涓存椂鏇存敼鍗曞彿,闈炴寔涔呭寲灞炴��
*/
- //private String deviation;
+ transient private String deviation;
+
+ /**
+ * 涓存椂鏇存敼鍗曞簭鍙�,闈炴寔涔呭寲灞炴��
+ */
+ transient private String deviationSerial;
/**
* 鐢熸垚鏂囦欢澶у皬鐨勬樉绀烘枃鏈�
* @return 鏄剧ず鏂囨湰
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/filewatch/FileLockChecker.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/filewatch/FileLockChecker.java
index daa7033..f17a12e 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/filewatch/FileLockChecker.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/filewatch/FileLockChecker.java
@@ -36,7 +36,7 @@
*/
public static boolean isFileComplete(Path file) throws IOException, InterruptedException {
long initialSize = Files.size(file);
- Thread.sleep(3000); // 绛夊緟1绉�
+ Thread.sleep(1000); // 绛夊緟1绉�
long currentSize = Files.size(file);
return initialSize == currentSize;
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/filewatch/FileWatcherService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/filewatch/FileWatcherService.java
index bc65651..80c1ba3 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/filewatch/FileWatcherService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/filewatch/FileWatcherService.java
@@ -20,7 +20,7 @@
private final ExecutorService executor = Executors.newCachedThreadPool();
private final Map<Path, WatchService> watchServices = new HashMap<>();
private final Map<Path, FileChangeListener> listeners = new HashMap<>();
- private final Map<Path, FileState> fileStatesOld = new HashMap<>();
+
Cache<Path, FileState> fileStates = CacheBuilder.newBuilder()
.maximumSize(10) // 鏈�澶у閲�3
.build();
@@ -64,8 +64,6 @@
FileState currentState = fileStates.getIfPresent(fullPath);
currentState = (currentState == null) ? FileState.STABLE : currentState;
-
- //FileState currentState = fileStates.getOrDefault(fullPath, FileState.STABLE);
FileChangeListener currentListener = listeners.get(directory);
if (currentListener == null) break;
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/filewatch/MachineFileChangeListener.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/filewatch/MachineFileChangeListener.java
index c21d675..1638f22 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/filewatch/MachineFileChangeListener.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/filewatch/MachineFileChangeListener.java
@@ -1,6 +1,5 @@
package org.springblade.mdm.machinefile.filewatch;
-import com.alibaba.excel.util.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.mdm.basesetting.machine.entity.Machine;
@@ -11,23 +10,16 @@
import org.springblade.mdm.machinefile.service.MachineFileService;
import org.springblade.mdm.program.service.ProgramAnnotationService;
-import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
@Slf4j
public class MachineFileChangeListener implements FileWatcherService.FileChangeListener{
-
-
private final MachineFileService machineFileService;
ProgramAnnotationService programAnnotationService;
private final Machine machine;
private final String dirType;
-
-
public MachineFileChangeListener(MachineFileService aMachineFileService, ProgramAnnotationService annotationService, WatchInfo info) {
@@ -41,10 +33,15 @@
try {
log.info("鏂囦欢鍒涘缓{},mcode={},dieType={}",filePath,machine.getCode(),dirType);
- if(FileLockChecker.isFileComplete(filePath)){
+
+ if(this.waitingForFileComplete(filePath)){
+ log.info("{}浼犺緭瀹屾垚Create,寮�濮嬪鐞�",filePath);
MachineFileScanService fileScanService = SpringUtil.getBean(MachineFileScanService.class);
- MachineFile mf = fileScanService.readFileToMachineFile(filePath,this.machine,this.dirType,programAnnotationService.getAnnotionDictList());
+ MachineFile mf = fileScanService.readFileToMachineFile(filePath,this.machine,this.dirType);
machineFileService.refreshFileData(mf);
+ }else{
+ //0928鏂板锛氭枃浠朵紶杈撴病瀹屾垚
+ log.info("{}浼犺緭鏈畬鎴怌reated,涓嶅鐞�",filePath);
}
saveMonitor(filePath,FileMonitorRecord.EVENT_CREATE);
} catch (InterruptedException e) {
@@ -56,16 +53,34 @@
}
}
+ /**
+ * 绛夊緟鏂囦欢浼犺緭瀹屾垚锛堟娴�20娆★級
+ * @param filePath 鏂囦欢Path瀵硅薄
+ * @return 鏈�缁堟槸鍚︿紶杈撳畬鎴�
+ * @throws IOException 鏂囦欢妫�娴嬮棶棰�
+ * @throws InterruptedException 绾跨▼绛夊緟鍙兘寮曞彂鐨勫紓甯�
+ */
+ boolean waitingForFileComplete(Path filePath) throws IOException, InterruptedException {
+ final int maxWaitTimes = 20; //鏂囦欢浼犺緭瀹屾垚妫�娴嬫鏁�
+ boolean isCompleted = false;
+ for(int i=0;i<maxWaitTimes;i++){
+ isCompleted = FileLockChecker.isFileComplete(filePath);
+ if(isCompleted){
+ break;
+ }
+ }
+ return isCompleted;
+ }
@Override
public void onFileModified(Path filePath) {
//鏂囦欢淇敼
log.info("鏂囦欢淇敼:{}",filePath);
try {
- if(FileLockChecker.isFileComplete(filePath)){
- log.info("鏂囦欢浼犺緭瀹屾垚{}",filePath);
+ if(waitingForFileComplete(filePath)){
+ log.info("鏂囦欢浼犺緭瀹屾垚Modify{}",filePath);
MachineFileScanService fileScanService = SpringUtil.getBean(MachineFileScanService.class);
- MachineFile mf = fileScanService.readFileToMachineFile(filePath,this.machine,this.dirType,programAnnotationService.getAnnotionDictList());
+ MachineFile mf = fileScanService.readFileToMachineFile(filePath,this.machine,this.dirType);
machineFileService.refreshFileData(mf);
}else{
log.warn("鏂囦欢浼犺緭涓紝鍚庣画鍐嶆搷浣渰}",filePath);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/listeners/ExportToInnerListener.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/listeners/ExportToInnerListener.java
index 66e333b..1e131ba 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/listeners/ExportToInnerListener.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/listeners/ExportToInnerListener.java
@@ -24,7 +24,7 @@
import java.util.Optional;
/**
- * 鍥哄寲娴佺▼鎵ц瀹屾垚鍚庯紝闇�瑕佸鐞嗙殑浜嬩欢锛氬叆搴搈es鍚屾琛�
+ * 瑙嗘儏鍐靛皢宸茬粡瀵煎嚭鐨勭幇鍦虹紪绋嬫枃浠讹紝淇濆瓨鍒癙ROGRAM鏂囦欢澶�
*/
@Slf4j
@Component
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineAcceptedFileMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineAcceptedFileMapper.xml
index a0b3a95..6bb9256 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineAcceptedFileMapper.xml
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineAcceptedFileMapper.xml
@@ -22,7 +22,7 @@
-->
<!--鏈哄簥鍥炰紶绋嬪簭澶勭悊鍒嗛〉-->
<select id="handlePageQuery" resultType="org.springblade.mdm.machinefile.vo.MachineAcceptedFileVO">
- select f.id,f.name,f.oss_name,f.create_time,m.code machine_code, m.name machine_name,f.status,f.create_time,mf.program_status,mf.file_create_time,f.export_time,f.create_time
+ select f.id,f.name,f.oss_name,m.code machine_code, m.name machine_name,f.status,f.create_time,mf.program_status,mf.file_create_time,f.export_time,f.create_time
from mdm_machine_accepted_file f
left join mdm_machine_file mf on f.machine_file_id=mf.id
left join mdm_machine m on mf.machine_code=m.code
@@ -42,6 +42,7 @@
and m.confirm_time$lt;#{query.confirmTimeEnd}
</if>
</where>
+ order by f.export_time desc,f.create_time desc
</select>
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.java
index c6cf329..314136f 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.java
@@ -34,4 +34,8 @@
*/
IPage<MachineFile> exceptionFilePageQuery(IPage<Object> page,@Param("query") MachineFileExceptionQueryVO query);
+ /**
+ * 鍒犻櫎鏃犵敤鏂囦欢鍑犻噷璺�
+ */
+ void deleteNotUseRecords();
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.xml
index 9d7b48a..ea61069 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.xml
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/mapper/MachineFileMapper.xml
@@ -11,6 +11,12 @@
<result column="is_deleted" property="isDeleted"/>
</resultMap>
+ <!--鍒犻櫎娌℃湁寮曠敤鐨勶紝涓旀爣璁颁负鍒犻櫎鐨勬枃浠惰褰�-->
+ <delete id="deleteNotUseRecords">
+ delete from mdm_machine_file_change_his where machine_file_id in (select id mdm_machine_file where id not in (select machine_file_id from mdm_machine_accepted_file) and status=4);
+ delete from mdm_machine_file where id not in (select machine_file_id from mdm_machine_accepted_file) and status=4;
+ </delete>
+
<!--寰呮帴鏀舵満搴婃枃浠跺垎椤垫煡璇�-->
<select id="filePageForAccept" resultType="org.springblade.mdm.machinefile.entity.MachineFile">
select f.id,f.name,f.machine_code,f.file_create_time,f.md5,f.file_size,f.dir_type,f.program_status
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineAcceptedFileService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineAcceptedFileService.java
index 08ad5a8..373234e 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineAcceptedFileService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineAcceptedFileService.java
@@ -31,6 +31,7 @@
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Objects;
@@ -148,9 +149,12 @@
//鐜板満缂栫▼鐨勪换鍔¢泦鍚�
//List<MachineBackTask> onMachineTasks1 = machineBackTaskService.lambdaQuery().in(MachineBackTask::getId, backTaskIds).list();
+ if(backTaskIds.isEmpty()){
+ return Collections.emptyList();
+ }
List<MachineBackTask> onMachineTasks = machineBackTaskService.lambdaQuery()
.eq(MachineBackTask::getTaskType,MachineBackTask.TASK_TYPE_ON_MACHINE)
- .in(MachineBackTask::getId, backTaskIds).list();
+ .list();
List<Long> onMachineFileIds = new ArrayList<>();
for(MachineAcceptedFile accFile : acceptedFiles){
@@ -160,7 +164,14 @@
}
}
}
+ if(onMachineFileIds.isEmpty()){
+ return Collections.emptyList();
+ }
return machineFileService.lambdaQuery().in(MachineFile::getId,onMachineFileIds).list();
}
+
+ public List<MachineAcceptedFile> listByBackTaskId(Long backTaskId) {
+ return lambdaQuery().eq(MachineAcceptedFile::getBackTaskId,backTaskId).list();
+ }
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileScanService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileScanService.java
index d4877d2..38ab6d0 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileScanService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileScanService.java
@@ -6,9 +6,11 @@
import org.springblade.core.log.exception.ServiceException;
import org.springblade.mdm.basesetting.machine.service.MachineService;
import org.springblade.mdm.basesetting.machine.entity.Machine;
+import org.springblade.mdm.commons.service.MachineDirTranslator;
import org.springblade.mdm.commons.service.ParamService;
import org.springblade.mdm.gkw.programnode.vo.ProgramNameVO;
import org.springblade.mdm.machinefile.entity.MachineFile;
+import org.springblade.mdm.machinefile.mapper.MachineFileMapper;
import org.springblade.mdm.program.service.ProgramAnnotationService;
import org.springblade.mdm.program.service.programannotation.*;
import org.springblade.mdm.utils.FileContentUtil;
@@ -37,14 +39,11 @@
@Autowired
private MachineService machineService;
@Autowired
- private ProgramAnnotationService programAnnotationService;
- @Autowired
- private MachineAnnotationConfig annoConfig;
- @Autowired
private AnnotationProcessorHelper annotationProcessorHelper;
- /**
- * 鎵弿鎵�鏈夋満搴婄殑閰嶇疆鐩綍
- */
+ @Autowired
+ private MachineDirTranslator machineDirTranslator;
+ @Autowired
+ private MachineFileMapper machineFileMapper;
@Async
public void scanMachineFile() {
List<Machine> machines = machineService.getEnableMachines();
@@ -85,17 +84,17 @@
}
}
+ machineFileMapper.deleteNotUseRecords();
}
-
/**
* 鎵弿鐩綍
* @param machine 鏈哄簥淇℃伅
* @param dirType 鐩綍绫诲瀷
- * @throws IOException
+ * @throws IOException 鏂囦欢鎿嶄綔鍙兘瀵艰嚧鐨勫紓甯�
*/
public void scanDir(Machine machine,String dirType) throws IOException {
- String basePath = MachineFileService.getBasePath(machine,dirType);
+ String basePath = machineDirTranslator.trans(MachineFileService.getBasePath(machine,dirType));
if(basePath == null) {
log.warn("鐩綍绫诲瀷涓嶅尮閰�:{}",dirType);
return;
@@ -110,11 +109,11 @@
.filter(Files::isRegularFile).toList();
//byte[] buffer = new byte[2048];
- List<DictBiz> annotatiionList = programAnnotationService.getAnnotionDictList();
+ //List<DictBiz> annotatiionList = programAnnotationService.getAnnotionDictList();
//boolean exists;//鏂囦欢鏄惁瀛樺湪浜庢暟鎹簱涓�
for (Path filePath : files) {
try {
- MachineFile mf = readFileToMachineFile(filePath,machine,dirType,annotatiionList);
+ MachineFile mf = readFileToMachineFile(filePath,machine,dirType);
machineFileService.refreshFileData(mf);
@@ -130,18 +129,16 @@
* @param filePath 鏂囦欢璺緞
* @param machine 鏈哄櫒
* @param dirType 鐩綍绫诲瀷
- * @param annotatiionList 娉ㄨВ閰嶇疆瀛楀吀 鐢ㄤ簬璇诲彇绋嬪簭鐘舵��
* @return MachineFile 瀹炰緥
* @throws IOException
*/
- public MachineFile readFileToMachineFile(Path filePath,Machine machine,String dirType,List<DictBiz> annotatiionList) throws IOException {
+ public MachineFile readFileToMachineFile(Path filePath,Machine machine,String dirType) throws IOException {
MachineFile mf = new MachineFile();
mf.setTenantId("000000");
mf.setName(filePath.toFile().getName());
mf.setDirType(dirType);
mf.setMachineCode(machine.getCode());
-
BasicFileAttributes attrs = Files.readAttributes(
filePath,
@@ -177,53 +174,18 @@
}
return mf;
}
- /**
- * 璇诲彇鏂囦欢涓殑绋嬪簭鐘舵��
- * @param filePath 鏂囦欢璺緞
- * @param controlSystem
- * @param annotatiionList 娉ㄩ噴閰嶇疆瀛楀吀
- * @return 鐘舵�佺殑鏁存暟涔嬪拰
- * @throws IOException
- */
- public int readProgramStatus(Path filePath,String controlSystem,List<DictBiz> annotatiionList) throws IOException {
- int programStatus = MachineFile.PROGRAM_STATUS_UNKNOWN;
- try(InputStream ins = Files.newInputStream(filePath);
- BufferedInputStream byteInsStream = new BufferedInputStream(ins)){
-
- boolean isText= FileContentUtil.isTextFile(byteInsStream);
- if(!isText){
- return MachineFile.PROGRAM_STATUS_UNKNOWN;
- }
- byteInsStream.reset();
-
- AnnotationProcessor annoProcessor = ProcessorHelper.getProcessor(controlSystem,annoConfig);
- String statusLine = FileContentUtil.readLineAt(byteInsStream, annoProcessor.getAnnotationProperties().getStatusLineIndex());
- if(AnnotationUtil.isAnnotation(statusLine,controlSystem,annotatiionList)){
- String progStatusTxt = AnnotationUtil.removeAnnotation(controlSystem,statusLine,annotatiionList);
- if(AnnotationUtil.SQ.equals(progStatusTxt)){
- programStatus = MachineFile.PROGRAM_STATUS_TRY;
- }else if(AnnotationUtil.GH.equals(progStatusTxt)){
- programStatus = MachineFile.PROGRAM_STATUS_CURED;
- }else if(AnnotationUtil.LG.equals(progStatusTxt)){
- programStatus = MachineFile.PROGRAM_STATUS_DIVIASTION;
- }
- }
- }
-
- return programStatus;
- }
/**
* 娓呯悊宸茬粡鍒犻櫎浜嗘枃浠剁殑璁板綍
- * @param machine
- * @param dirType
+ * @param machine 鏈哄簥
+ * @param dirType 鐩綍绫诲瀷
* @throws IOException
*/
void clearDeletedRecords(Machine machine,String dirType) throws IOException {
List<MachineFile> machineFiles = this.machineFileService.lambdaQuery().eq(MachineFile::getDirType,dirType)
.eq(MachineFile::getMachineCode,machine.getCode()).list();
- String basePath = MachineFileService.getBasePath(machine,dirType);
+ String basePath = machineDirTranslator.trans(MachineFileService.getBasePath(machine,dirType));
if(basePath == null) {
log.warn("鐩綍绫诲瀷涓嶅尮閰�:{}",dirType);
return;
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileService.java
index b7a0762..9422e42 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/MachineFileService.java
@@ -13,6 +13,7 @@
import org.springblade.core.oss.model.BladeFile;
import org.springblade.mdm.basesetting.machine.service.MachineService;
import org.springblade.mdm.basesetting.machine.entity.Machine;
+import org.springblade.mdm.commons.service.MachineDirTranslator;
import org.springblade.mdm.machinefile.entity.MachineFile;
import org.springblade.mdm.machinefile.entity.MachineFileChangeHis;
import org.springblade.mdm.machinefile.mapper.MachineFileMapper;
@@ -21,6 +22,7 @@
import org.springblade.mdm.program.vo.CompareDataVO;
import org.springblade.mdm.statreport.vo.MachineFileExceptionQueryVO;
import org.springblade.mdm.utils.FileContentUtil;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -44,7 +46,7 @@
private final MachineService machineService;
private final MachineFileChangeHisService machineFileChangeHisService;
private final OssTemplate ossTemplate;
-
+ private MachineDirTranslator machineDirTranslator;
/**
* 鑾峰彇鏂囦欢鍏ㄨ矾寰�
* @param id 鏁版嵁id
@@ -87,9 +89,9 @@
/**
* 鑾峰彇鍩烘湰璺緞
- * @param machine
- * @param dirType
- * @return
+ * @param machine 鏈哄簥
+ * @param dirType 鐩綍绫诲瀷
+ * @return 鐩綍鍩烘湰璺緞
*/
public static String getBasePath(Machine machine,String dirType){
String dirPath;
@@ -221,6 +223,7 @@
existFileInDb.setProgramStatus(mf.getProgramStatus());
existFileInDb.setFileCreateTime(mf.getFileCreateTime());
existFileInDb.setFileModifyTime(mf.getFileModifyTime());
+ existFileInDb.setStatus(MachineFile.STATUS_NORMAL);
if(!com.alibaba.excel.util.StringUtils.equals(existFileInDb.getMd5(),mf.getMd5())){
//鏂囦欢鍐呭鍙戠敓鍙樺寲浜�,璁剧疆鐘舵�佷负鍒濆鐘舵��
existFileInDb.setStatus(MachineFile.STATUS_NORMAL);
@@ -249,12 +252,25 @@
}
/**
- * 淇敼鏂囦欢鍚嶆垚
+ * 淇敼鏂囦欢鍚嶇О
* @param id 鏂囦欢id
* @param name 鏂板悕绉�
*/
- public void changeName(Long id, String name) {
+ public void changeName(Long id, String name) throws IOException {
+ MachineFile machineFile = getById(id);
+ if(machineFile.getName().equals(name)) {
+ return;
+ }
+ Machine machine = machineService.getByCode(machineFile.getMachineCode());
+ String baseDir = machineDirTranslator.trans(getBasePath(machine,machineFile.getDirType()));
+ String targetFilePath = baseDir + File.separator + name;
+ Path filePath = Paths.get(targetFilePath);
+ if(filePath.toFile().exists()) {
+ throw new ServiceException("鍚屽悕鏂囦欢宸插瓨鍦細"+name);
+ }
+ Files.move(Paths.get(baseDir+File.separator+machineFile.getName()),filePath);
+ baseMapper.deleteById(id);
}
public MachineFile getByNameAndMachineInDir(String name, String machineCode, String dirType) {
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/NcProgramExportInnerService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/NcProgramExportInnerService.java
index 26e4aac..a23a423 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/NcProgramExportInnerService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/NcProgramExportInnerService.java
@@ -5,14 +5,12 @@
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.StringUtils;
import org.springblade.core.mp.base.BizServiceImpl;
import org.springblade.core.oss.OssTemplate;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.mdm.basesetting.machine.entity.Machine;
import org.springblade.mdm.basesetting.machine.service.MachineService;
-import org.springblade.mdm.flow.excution.events.CureFinishedEvent;
import org.springblade.mdm.gkw.task.entity.MachineBackTask;
import org.springblade.mdm.gkw.task.service.MachineBackTaskService;
import org.springblade.mdm.machinefile.entity.MachineAcceptedFile;
@@ -54,9 +52,9 @@
private final MachineBackTaskService machineBackTaskService;
/**
* 瀵煎嚭鍒版秹瀵嗙綉
- * @param acceptedFileIds
- * @param os
- * @throws IOException
+ * @param acceptedFileIds 鎺ュ彈鐨勬枃浠秈d绂讳簡鍚�
+ * @param os 杈撳嚭娴�
+ * @throws IOException 鎿嶄綔zip鍙兘瀵艰嚧鐨処O寮傚父
*/
@Transactional
public void exportToInner(List<Long> acceptedFileIds, ServletOutputStream os) throws IOException {
@@ -65,6 +63,8 @@
try (ZipOutputStream zipOut = new ZipOutputStream(os);) {//os
Map<String,List<MachineAcceptedFile>> map = acceptedFiles.stream()
.collect(Collectors.groupingBy(s -> ProgramFileNameParser.parseProgramName(s.getName()).logicProgramName()));
+
+ this.createFoldersInZip(zipOut,map.keySet());
for (Map.Entry<String, List<MachineAcceptedFile>> entry : map.entrySet()) {
String programName = entry.getKey();
@@ -77,7 +77,6 @@
acceptedFile.setExportTime(DateUtil.now());
acceptedFile.setStatus(MachineAcceptedFile.STATUS_EXPORTED);
}
-
}
machineAcceptedService.updateBatchById(acceptedFiles);
@@ -94,18 +93,39 @@
}
+ /**
+ * 鍒涘缓宸﹀彸鐨勭▼搴忓寘鍚嶆枃浠跺す
+ * @param zipOut zip杈撳嚭娴�
+ * @param folderSet 绋嬪簭鎶ュ悕鏂囦欢澶归泦鍚�
+ * @throws IOException zipIO鎿嶄綔寮傚父
+ */
+ void createFoldersInZip(ZipOutputStream zipOut,Set<String> folderSet) throws IOException {
+ for(String folderName : folderSet){
+ ZipEntry zipEntry = new ZipEntry(folderName+"/");// "/"缁撳熬琛ㄧず鏂囦欢澶�
+ zipOut.putNextEntry(zipEntry);
+ zipOut.closeEntry();
+ }
+
+
+ }
+
+
void finishTask(List<Long> backTaskIdList){
if(backTaskIdList.isEmpty()){
return;
}
- List<MachineBackTask> tasks = machineBackTaskService.lambdaQuery().in(MachineBackTask::getId,backTaskIdList).list();
- for(MachineBackTask backTask : tasks){
- backTask.setStatus(MachineBackTask.STATUS_FINISHED);
- backTask.setFinishTime(new Date());
+ for(Long backTaskId : backTaskIdList){
+ MachineBackTask backTask = machineBackTaskService.getById(backTaskId);
+ List<MachineAcceptedFile> acceptedFiles = machineAcceptedService.listByBackTaskId(backTaskId);
- machineBackTaskService.updateById(backTask);
+ if(acceptedFiles.size() == backTask.getSegCount()) {
+ backTask.setStatus(MachineBackTask.STATUS_FINISHED);
+ backTask.setFinishTime(new Date());
+
+ machineBackTaskService.updateById(backTask);
+ }
+
}
-
}
/**
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java
index e5fe6bc..11c384f 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/ReceiveFileCheckService.java
@@ -9,8 +9,11 @@
import org.springblade.mdm.basesetting.machine.entity.Machine;
import org.springblade.mdm.basesetting.machine.service.MachineService;
import org.springblade.mdm.commons.contants.RegExpConstants;
+import org.springblade.mdm.commons.service.MachineDirTranslator;
import org.springblade.mdm.commons.service.ParamService;
import org.springblade.mdm.gkw.programnode.vo.ProgramNameVO;
+import org.springblade.mdm.gkw.task.entity.MachineBackTask;
+import org.springblade.mdm.gkw.task.service.MachineBackTaskService;
import org.springblade.mdm.machinefile.entity.FileSendRecord;
import org.springblade.mdm.machinefile.entity.MachineFile;
import org.springblade.mdm.program.entity.ProgramOnMachine;
@@ -50,8 +53,9 @@
@Autowired
private AnnotationProcessorHelper annoProcessHelper;
@Autowired
- private ProgramAnnotationService programAnnotationService;
-
+ private MachineDirTranslator machineDirTranslator;
+ @Autowired
+ private MachineBackTaskService machineBackTaskService;
/**
* 鏂囦欢鍚堟硶鎬ф鏌�
* @param machineFile
@@ -59,7 +63,7 @@
@Transactional(rollbackFor = Exception.class)
public void check(MachineFile machineFile,List<MachineFile> allFilesInDir,Machine machine) throws IOException {
- String srcFilepath = MachineFileService.getBasePath(machine,machineFile.getDirType())+ File.separator+machineFile.getName();
+ String srcFilepath = machineDirTranslator.trans(MachineFileService.getBasePath(machine,machineFile.getDirType())+ File.separator+machineFile.getName());
log.info("寮�濮嬫鏌ユ枃浠秢}",srcFilepath);
Path checkFilePath = Paths.get(srcFilepath);
if(!checkFilePath.toFile().exists()){
@@ -84,9 +88,13 @@
if(matchCount != progNameVO.getSegmentCount()){//鏂囦欢娈垫暟缂哄け
excepType = MachineFile.EXCEPTION_LOST_FILES;
}else{
- //妫�鏌ユ槸鍚﹀尮閰嶆満搴婂洖浼犱换鍔★紵
+ //妫�鏌ユ槸鍚﹀尮閰嶆満搴婂洖浼犱换鍔�
+ byteStream.reset();
+ AnnotationProcessor annoProcessor = this.annoProcessHelper.getProcessor(machine.getControlSystem());
+ AnnotationData annoData = annoProcessor.readAnnotationData(byteStream);
+ Optional<MachineBackTask> taskOpt = backTaskForFile(machineFile,annoData);
- //妫�鏌ユ槸鍚﹀尮閰嶄笅鍙戣褰曠殑娈垫暟
+ /*
String nameLikeStr;
if(StringUtils.isNotBlank(progNameVO.getLgPart())){
nameLikeStr = prefix +"%P%";
@@ -97,26 +105,31 @@
.eq(FileSendRecord::getMachineCode,machineFile.getMachineCode())
.likeRight(FileSendRecord::getName,nameLikeStr).last("limit 1")
.orderByDesc(FileSendRecord::getCreateTime).oneOpt();
-
- boolean matchSendRecord;//鏂囦欢鏄惁鏈変笅鍙戣褰�
- if(optFile.isPresent()){
- matchSendRecord = true;
- //纭疄涓嬪彂杩囷紝姣斿鎬绘鏁版槸鍚︾浉鍚�
- FileSendRecord sendFile = optFile.get();
- ProgramNameVO sendProgNameVO = ProgramFileNameParser.parseProgramName(sendFile.getName());
- if(progNameVO.getSegmentCount() != sendProgNameVO.getSegmentCount()){
- //娈垫暟涓嶅尮閰嶄笅鍙戣褰�
- excepType = MachineFile.EXCEPTION_NOT_MATCH_SEND_SEG_COUNT;
- }else if(!StringUtils.equals(sendProgNameVO.getLgPart(),progNameVO.getLgPart())){
- excepType = MachineFile.EXCEPTION_NOT_MATCH_SEND_LG;
+ */
+ //boolean matchSendRecord;//鏂囦欢鏄惁鏈変笅鍙戣褰�
+ if(taskOpt.isPresent()){
+ //鏈変换鍔★紝姣斿鎬绘鏁版槸鍚︾浉鍚�
+ MachineBackTask backTask = taskOpt.get();
+ //FileSendRecord sendFile = optFile.get();
+ //ProgramNameVO sendProgNameVO = ProgramFileNameParser.parseProgramName(sendFile.getName());
+ if(!backTask.isProgramOnMachineTask() ){//宸ヨ壓缂栧埗
+ if(progNameVO.getSegmentCount() != backTask.getSegCount()) {
+ //娈垫暟涓嶅尮閰嶄笅鍙戣褰�
+ excepType = MachineFile.EXCEPTION_NOT_MATCH_SEND_SEG_COUNT;
+ }
+ }else{
+ //鐜板満缂栫▼锛屾鏌ユ洿鏀瑰崟搴忓彿
+ if(StringUtils.isNotBlank(backTask.getDeviationSerial()) && !StringUtils.equals(backTask.getDeviationSerial(),progNameVO.lgSerial())){
+ excepType = MachineFile.EXCEPTION_NOT_MATCH_SEND_LG;
+ }
}
+
}else{
- matchSendRecord = false;
+ excepType = MachineFile.EXCEPTION_NOT_MATCH_RECORD;
}
+ /*
if(!matchSendRecord){//濡傛灉鏂囦欢鏈笅鍙戣繃锛屾煡鐪嬫槸鍚︽湁鐜板満缂栫▼璁板綍
- byteStream.reset();
-
String devSerial = null;
if(StringUtils.isNotBlank(progNameVO.getLgPart())){
devSerial = progNameVO.getLgPart().substring(1);
@@ -133,6 +146,8 @@
}
}
+
+ */
}
}
}
@@ -141,4 +156,16 @@
machineFileService.updateById(machineFile);
}
}
+
+ Optional<MachineBackTask> backTaskForFile(MachineFile machineFile,AnnotationData annoData){
+ ProgramNameVO progNameVO = ProgramFileNameParser.parseProgramName(machineFile.getName());
+
+ return machineBackTaskService.lambdaQuery()
+ .eq(MachineBackTask::getStatus,MachineBackTask.STATUS_PENDING)
+ .eq(MachineBackTask::getMachineCode,machineFile.getMachineCode())
+ .eq(MachineBackTask::getProgramName,progNameVO.logicProgramName())
+ .eq(progNameVO.lgSerial()!=null,MachineBackTask::getDeviation,annoData.getDeviation())
+ .eq(progNameVO.lgSerial()!=null,MachineBackTask::getDeviationSerial,progNameVO.lgSerial())
+ .last("limit 1").oneOpt();
+ }
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/MdmProgramImportController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/MdmProgramImportController.java
index 39a59f0..1cfff24 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/MdmProgramImportController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/MdmProgramImportController.java
@@ -31,7 +31,6 @@
@Slf4j
public class MdmProgramImportController {
- //private final DncSendBackService dncSendBackService;
private final MdmProgramImportService mdmProgramImportService;
/**
* 涓婁紶DNC鍥炰紶鏂囦欢
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/ProgramOnMachineImportController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/ProgramOnMachineImportController.java
index 5883b76..36fa13f 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/ProgramOnMachineImportController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/ProgramOnMachineImportController.java
@@ -8,18 +8,12 @@
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
-import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
-import org.springblade.mdm.flow.vo.ProgramOnMachineExcel;
-import org.springblade.mdm.flow.vo.ProgramOnMachineQueryVO;
-import org.springblade.mdm.program.service.MdmProgramImportService;
import org.springblade.mdm.program.service.ProgramOnMachineService;
import org.springblade.mdm.program.vo.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
-
-import java.util.List;
/**
* mdm瀵煎叆鎺ュ彛锛屽伐鎺х綉鍔熻兘
@@ -35,14 +29,10 @@
public class ProgramOnMachineImportController {
private final ProgramOnMachineService programOnMachineService;
- /**
- * 涓婁紶DNC鍥炰紶鏂囦欢
- *
- * @param file dnc绋嬪簭鎵撳寘鏂囦欢
- */
+
@PostMapping("import-prog-on-machine")
@ApiOperationSupport(order = 1)
- @Operation(summary = "MDM绋嬪簭瀵煎叆", description = "宸ユ帶缃憁dm绋嬪簭瀵煎叆")
+ @Operation(summary = "宸ユ帶缃戝鍏ョ幇鍦虹紪鍒舵暟鎹�", description = "宸ユ帶缃戝鍏ョ幇鍦虹紪鍒舵暟鎹�")
public R<Integer> upload(@RequestParam MultipartFile file) {
if(file == null || file.isEmpty() || file.getOriginalFilename() ==null){
return R.fail("鏂囦欢涓嶈兘涓虹┖");
@@ -62,7 +52,6 @@
@Operation(summary = "宸ユ帶缃戜笅鍦虹紪绋嬭褰曞垎椤垫煡璇�", description = "宸ユ帶缃戜笅鍦虹紪绋嬭褰曞垎椤垫煡璇�")
@GetMapping("/program-on-machine-page")
public R<IPage<ProgramOnMachineVO>> page(ProgramOnMachineRecordQueryVO queryVO) {
-
return R.data(programOnMachineService.pageQuery(queryVO));
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/DncBackFile.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/DncBackFile.java
index 3517383..06458a7 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/DncBackFile.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/DncBackFile.java
@@ -8,14 +8,12 @@
import java.util.Date;
/**
- * DNC鍥炰紶鏂囦欢,鏁版嵁閫氳繃鐩戞帶鐩綍鑾峰彇鏂囦欢骞跺叆搴�
+ * 宸ユ帶缃戯級鍥炰紶鏂囦欢璁板綍
*/
@Setter
@Getter
@TableName("mdm_dnc_back_file")
public class DncBackFile extends BizEntity {
- public static int STATUS_ACCEPTED = 2;
- public static int STATUS_REJECTED = 3;
/**
* 绋嬪簭鍖呭悕 鑺傜偣 鐨刬d
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
index 31630c3..33d7a5b 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java
@@ -72,7 +72,6 @@
* 鍋忕鍗曟枃浠舵湯灏剧殑妯″紡锛歅+鏁板瓧
*/
private static final String P_NUMBER_PATTERN = "(?i)P\\d+";
- //static String[] encodings = {"UTF-8","GBK", "GB2312", "ISO-8859-1"};
private String getFileKey(){
return "dncimpfile-"+ AuthUtil.getUserId();
}
@@ -120,9 +119,12 @@
result = parseProgramListByCharset(byteInsStream,Charset.forName(encoding));
log.error("浣跨敤缂栫爜 {} 瑙f瀽鎴愬姛 ",encoding);
break;
+ }catch (ServiceException se) {
+ log.error("鏁版嵁涓嶆纭紓甯�:",se);
+ break;
} catch (Exception e) {
byteInsStream.reset();
- log.error("浣跨敤缂栫爜 {} 瑙f瀽澶辫触: ",encoding,e);
+ log.error("浣跨敤缂栫爜 {} 瑙f瀽澶辫触:",encoding,e);
}
}
if(result != null) {
@@ -242,8 +244,7 @@
@Transactional
public void dncFileAccept(String ids) throws IOException {
List<Long> acceptIdList = Func.toLongList(ids);
- //
- NcProgramExchange exchange;
+
String filekey = getFileKey();
String zipFileName = bladeRedis.get(filekey);
log.info("filekey={},鏂囦欢鍚�={}",filekey,zipFileName);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DncBackFileService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DncBackFileService.java
index fda21c1..a92e75e 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DncBackFileService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DncBackFileService.java
@@ -6,14 +6,11 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.flowable.engine.HistoryService;
-import org.flowable.engine.ProcessEngine;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BizServiceImpl;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.oss.OssTemplate;
-import org.springblade.core.oss.model.BladeFile;
import org.springblade.core.tool.utils.FileUtil;
-import org.springblade.mdm.flow.entity.FlowProgramFile;
import org.springblade.mdm.flow.service.FlowBusinessService;
import org.springblade.mdm.program.entity.DncBackFile;
import org.springblade.mdm.program.entity.NcNode;
@@ -22,13 +19,10 @@
import org.springblade.mdm.program.vo.DncBackFileQueryVO;
import org.springblade.mdm.program.vo.DncBackFileVO;
import org.springblade.mdm.program.vo.DncSendBackFile;
-import org.springblade.mdm.utils.FileContentUtil;
import org.springblade.mdm.utils.ZipTextFileContentUtil;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
@@ -37,7 +31,6 @@
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
-import java.util.Optional;
import java.util.zip.ZipEntry;
/**
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java
index 75c8c24..6f91428 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java
@@ -1,11 +1,9 @@
package org.springblade.mdm.program.service;
-import jodd.util.annotation.AnnotationParser;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BizServiceImpl;
@@ -16,7 +14,6 @@
import org.springblade.core.tool.utils.Func;
import org.springblade.mdm.basesetting.machine.service.MachineService;
import org.springblade.mdm.basesetting.machine.entity.Machine;
-import org.springblade.mdm.commons.contants.RegExpConstants;
import org.springblade.mdm.commons.contants.ZipConstants;
import org.springblade.mdm.gkw.programnode.vo.ProgramNameVO;
import org.springblade.mdm.gkw.task.entity.MachineBackTask;
@@ -43,7 +40,6 @@
import java.time.Duration;
import java.util.*;
import java.nio.file.*;
-import java.util.regex.Matcher;
import java.util.stream.Stream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
@@ -260,8 +256,8 @@
MdmProgramImportVO vo = new MdmProgramImportVO();
vo.setFilename(path.getFileName().toString());
- ProgramNameVO pnmameVO = tryParseProgramName(vo.getFilename());
- vo.setDrawingNo(pnmameVO.getDrawingNo());
+ ProgramNameVO progNmameVO = tryParseProgramName(vo.getFilename());
+ vo.setDrawingNo(progNmameVO.getDrawingNo());
try (InputStream inputStream = Files.newInputStream(path)) {
// 浣跨敤杈撳叆娴佽鍙栨枃浠跺唴瀹�
@@ -286,7 +282,7 @@
Machine matchedMachine = machineService.getMachineBySendPathAnnotation(sendPathLine);
if (matchedMachine != null) {
- vo.setName(pnmameVO.logicProgramName());
+ vo.setName(progNmameVO.logicProgramName());
vo.setMachineCode(matchedMachine.getCode());
vo.setFullPath(path.toString());//鏂囦欢鍦板潃
@@ -300,68 +296,7 @@
}
return vo;
}
- /**
- * 瑙f瀽鍑洪浂缁勪欢濂�
- * @param filename
- * @return
- */
- /*
- String parseDrawingNo(String filename){
- /*
- String drawingNo = "";
- int idx = filename.lastIndexOf("-");
- String temp;
- if(idx != -1){
- temp = filename.substring(0,idx);
-
- idx = temp.lastIndexOf("-");
- if(idx != -1){
- temp = temp.substring(0,idx);
-
- //鍘绘帀宸ュ簭鐗堟
- idx = temp.lastIndexOf("-");
- if(idx != -1){
- temp = temp.substring(0,idx);
-
- //鍘绘帀宸ュ簭鍙�
- idx = temp.lastIndexOf("-");
- if(idx != -1){
- drawingNo = temp.substring(0,idx);
- }
- }
- }
- //浠ヤ笂鍘绘帀浜嗘渶鍚�2娈垫鏁板拰娈靛彿
-
-
- }
- return drawingNo;
-
-
- }
-
- String parseProgramName(String filename){
- String programName = "";
- int idx = filename.lastIndexOf("-");
- String temp;
- if(idx != -1){
- temp = filename.substring(0,idx);
-
- idx = temp.lastIndexOf("-");
- if(idx != -1){
- temp = temp.substring(0,idx);
-
- //鍘绘帀宸ュ簭鐗堟
- idx = temp.lastIndexOf("-");
- if(idx != -1){
- programName = temp.substring(0,idx);
- }
- }
- //浠ヤ笂鍘绘帀浜嗘渶鍚�2娈垫鏁板拰娈靛彿
- }
- return programName;
- }
-*/
/**
* 鍏ュ簱mdm娑夊瘑缃戞枃浠�
* @param ids id鍒楄〃閫楀彿鍒嗛殧
@@ -378,7 +313,7 @@
Path extractDir = Paths.get(dictStr);
List<MdmProgramImportVO> list = readTempDir(extractDir);
- List<DictBiz> annoDictList = programAnnotationService.getAnnotionDictList();
+ //List<DictBiz> annoDictList = programAnnotationService.getAnnotionDictList();
String destFileFull;
for(String str : idList){
Optional<MdmProgramImportVO> optVO = list.stream().filter(vo -> vo.getId().equals(str)).findFirst();
@@ -391,6 +326,7 @@
destFileFull = vo.getSendPath()+File.separator+vo.getFilename();
File destFile = new File(destFileFull);
+
FileUtils.forceMkdirParent(destFile);
FileUtils.copyFile(new File(str),destFile);
@@ -410,11 +346,11 @@
Machine machine = this.machineService.getByCode(record.getMachineCode());
AnnotationProcessor processor = annotationProcessorHelper.getProcessor(machine.getControlSystem());
AnnotationData annotationData = processor.readAnnotationData(inputStream);
- /*
+
+ record.setDeviation(annotationData.getDeviation());
ProgramNameVO nameVO = ProgramFileNameParser.parseProgramName(record.getName());
- if(StringUtils.isNotBlank(nameVO.getLgPart())) {
- record.setDeviation(annotationData.getDeviation());
- }*/
+ record.setDeviationSerial(nameVO.lgSerial());
+
record.setProgramStatus(annotationData.getProgramStatus());
}
fileSendRecordService.save(record);
@@ -427,17 +363,17 @@
/**
* 鍒涘缓鏈哄簥鍥炰紶浠诲姟
- * @param importedRecords
+ * @param importedRecords 瀵煎叆璁板綍鍒楄〃
*/
List<MachineBackTask> parseMachineBackTask(List<FileSendRecord> importedRecords){
- List<FileSendRecord> recList = importedRecords.stream().filter(r ->{
- return AnnotationUtil.SQ.equals(r.getProgramStatus())
- || AnnotationUtil.LG.equals(r.getProgramStatus());}).toList();
+ List<FileSendRecord> recList = importedRecords.stream().filter(r -> AnnotationUtil.SQ.equals(r.getProgramStatus())
+ || AnnotationUtil.LG.equals(r.getProgramStatus())).toList();
Map<String,FileSendRecord> map = new HashMap<>();
for(FileSendRecord record : recList){
ProgramNameVO nameVO = ProgramFileNameParser.parseProgramName(record.getName());
String key = record.getMachineCode()+","+nameVO.logicProgramName();
+
map.put(key,record);
}
@@ -450,6 +386,9 @@
task.setMachineCode(record.getMachineCode());
ProgramNameVO nameVO = ProgramFileNameParser.parseProgramName(record.getName());
+ task.setDeviation(record.getDeviation());
+ task.setDeviationSerial(record.getDeviationSerial());
+
task.setProgramName(nameVO.logicProgramName());
task.setSegCount(nameVO.getSegmentCount());
backTasks.add(task);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
index 4351b6d..850e2f0 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
@@ -188,7 +188,6 @@
* @return 鏈�鏂扮増鏈▼搴忔姤鍚嶈妭鐐�
*/
public NcNode getLastEditionTryingProgramPackage(String name){
- //.or(NcNode::getIsCured,0)
List<NcNode> pkgList = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE)
.eq(NcNode::getName, name).and(i->{
i.eq(NcNode::getIsCured, 0).or().isNull(NcNode::getIsCured);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
index 83e2221..72b3933 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
@@ -50,8 +50,6 @@
private final FlowProgramFileService flowProgramFileService;
private final HistoryService historyService;
private final TaskDispatchService taskDispatchService;
- private final MachineAnnotationConfig annotationConfig;
-
private final AnnotationProcessorHelper annotationProcessorHelper;
/**
* 瀵煎嚭dnc鍘嬬缉鍖�
@@ -90,8 +88,8 @@
/**
* 灏嗙▼搴忓寘鍜屼笅灞炴枃浠跺姞鍏ュ帇缂╁寘
- * @param zipOut
- * @param approved
+ * @param zipOut zip鏂囦欢杈撳嚭娴�
+ * @param approved 瀹℃壒瀹屾垚璁板綍
*/
private void addProgramPackageToZip(ZipOutputStream zipOut, NcProgramApproved approved) throws IOException{
NcNodeHis packageNodeHis = ncNodeHisService.getById(approved.getNcNodeId());
@@ -126,7 +124,6 @@
InputStream inputStream = ossTemplate.statFileStream(programFile.getOssName());
String sendDir = machine.getProgSendDir()==null? StringUtil.EMPTY:machine.getProgSendDir();
- //AnnotationProcessor annoProcessor = ProcessorHelper.getProcessor(machine.getControlSystem(),annotationConfig);
AnnotationProcessor annoProcessor = this.annotationProcessorHelper.getProcessor(machine.getControlSystem());
AnnotationData annoData = new AnnotationData();
annoData.setSendPath(sendDir);
@@ -134,9 +131,12 @@
annoData.setDeviation(programPackageNode.getDeviation());
annoData.setFilename(programFile.getName());
- InputStream addedInsFinal = annoProcessor.putAnnotation(annoData,inputStream);
+ if(StringUtils.startsWith(programPackageNode.getParentIds(),"0,4")) {
+ //璇曞垏琛ュ厖,鐗规畩鏍囪鐘舵��
+ annoData.setProgramStatus(AnnotationUtil.TMP);
+ }
+ InputStream addedInsFinal = annoProcessor.putAnnotation(annoData, inputStream);
addedInsFinal.reset();
-
this.addInputStreamToZip(zipOut, addedInsFinal, filePathInZip);
}
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java
index cab30c0..f788405 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AbstractProcessor.java
@@ -19,28 +19,34 @@
private ProgramAnnotationService programAnnotationService;
protected AnnotationProperties annotationProperties;
+
+ protected List<DictBiz> getAnnotationDictList(){
+ return programAnnotationService.getAnnotionDictList();
+ }
+
@Override
public InputStream putSendPathAnnotation(String sendPath, InputStream inputStream,List<DictBiz> annoDicts) throws IOException{
+ String sendPathRepl = StringUtils.replace(sendPath,"\\","/");
InputStream finishedStream;
try(inputStream){
ByteArrayInputStream byteInputStream = new ByteArrayInputStream(IOUtils.toByteArray(inputStream));
//1鍔犲叆鍙戦�佽矾寰勭殑娉ㄩ噴
- String sendPathAnnotation = AnnotationUtil.generateAnnotation(sendPath,getControlSystem(),annoDicts);//鍔犱簡娉ㄩ噴涔嬪悗鐨勬枃鏈�
+ String sendPathAnnotation = AnnotationUtil.generateAnnotation(sendPathRepl,getControlSystem(),annoDicts);//鍔犱簡娉ㄩ噴涔嬪悗鐨勬枃鏈�
- String sendDirLine = FileContentUtil.readLineAt(byteInputStream,annotationProperties.getSendPathLineIndex());//绗�2琛屾槸鍙戦�佽矾寰�
+ String sendPathLine = FileContentUtil.readLineAt(byteInputStream,annotationProperties.getSendPathLineIndex());//绗�2琛屾槸鍙戦�佽矾寰�
byteInputStream.reset();
- if(AnnotationUtil.isAnnotation(sendDirLine,getControlSystem(),annoDicts)){
- String planText = AnnotationUtil.removeAnnotation(getControlSystem(),sendDirLine,annoDicts);
- if(!planText.equals(sendPath)) {
+ if(AnnotationUtil.isAnnotation(sendPathLine,getControlSystem(),annoDicts)){
+ String planText = AnnotationUtil.removeAnnotation(getControlSystem(),sendPathLine,annoDicts);
+ //String planTextRepl = StringUtils.replace(planText,"\\","/");
+ if(!planText.equals(sendPath) && !planText.equals(sendPathRepl)) {
//闈炶矾寰勭殑娉ㄩ噴锛屾彃鍏�
finishedStream = FileContentUtil.insertLine(byteInputStream,annotationProperties.getSendPathLineIndex(),sendPathAnnotation);
}else{
//鏄矾寰勶紝涓嶅鐞嗙洿鎺ヨ繑鍥炲師杈撳叆娴�
finishedStream = inputStream;
}
- //finishedStream = FileContentUtil.replaceAtLine(byteInputStream,annotationProperties.getSendPathLineIndex(),sendPathAnnotation);
}else{
finishedStream = FileContentUtil.insertLine(byteInputStream,annotationProperties.getSendPathLineIndex(),sendPathAnnotation);
}
@@ -76,12 +82,7 @@
//闈炴敞閲婏紝鎻掑叆鐘舵��
insAfterProgramName = FileContentUtil.insertLine(byteStream,annotationProperties.getProgramNameLineIndex(),proNameAnnotation);
}
- /*
- if(isAnnotation){
- insAfter = FileContentUtil.replaceAtLine(bais, annotationProperties.getProgramNameLineIndex(),proNameLine);
- }else{
- insAfter = FileContentUtil.insertLine(bais, annotationProperties.getProgramNameLineIndex(),proNameLine);
- }*/
+
return insAfterProgramName;
}
@@ -95,18 +96,7 @@
//1鍔犲叆鍙戦�佽矾寰勭殑娉ㄩ噴
InputStream insAfterSetSendDir = putSendPathAnnotation(annoData.getSendPath(),byteInputStream,annoDicts);
- /*
- String statusLine = FileContentUtil.readLineAt(insAfterSetSendDir,annotationProperties.getStatusLineIndex());//鐘舵�佹敞閲�
- insAfterSetSendDir.reset();
- //鍔犲叆鐘舵�佹敞閲婅
- InputStream insAfterStatus;
- String statusAnnotation = AnnotationUtil.generateAnnotation(annoData.getProgramStatus(),getControlSystem(),annoDicts);//娉ㄩ噴鍚庣殑鐘舵�佹枃鏈�
- if(AnnotationUtil.isAnnotation(statusLine,getControlSystem(),annoDicts)){
- insAfterStatus = FileContentUtil.replaceAtLine(insAfterSetSendDir,annotationProperties.getStatusLineIndex(),statusAnnotation);
- }else{
- insAfterStatus = FileContentUtil.insertLine(insAfterSetSendDir,annotationProperties.getStatusLineIndex(),statusAnnotation);
- }*/
InputStream insAfterStatus = putStatusAnnotation(annoData.getProgramStatus(),insAfterSetSendDir,annoDicts);
if(StringUtils.isNotBlank(annoData.getDeviation())){
@@ -208,9 +198,11 @@
String statusText = AnnotationUtil.removeAnnotation(this.getControlSystem(),statusLine,annoDictList);
if(AnnotationUtil.isStatusContent(statusText)){
data.setProgramStatus(statusText);
- }
- data.setDeviation(AnnotationUtil.removeAnnotation(this.getControlSystem(),devLine,annoDictList));
+ if(AnnotationUtil.LG.equals(statusText)) {
+ data.setDeviation(AnnotationUtil.removeAnnotation(this.getControlSystem(), devLine, annoDictList));
+ }
+ }
} catch (IOException e) {
throw new RuntimeException(e);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationProcessor.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationProcessor.java
index dacceda..02d0988 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationProcessor.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationProcessor.java
@@ -27,5 +27,4 @@
* @return 璇诲彇鐨勬暟鎹�
*/
AnnotationData readAnnotationData(InputStream inputStream);
- //InputStream puttSendPathAnnotation(String programName, InputStream inputStream) throws IOException;
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationUtil.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationUtil.java
index f06ccdc..68f1d8e 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationUtil.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/AnnotationUtil.java
@@ -18,7 +18,7 @@
public static final String SQ = "SQ";
public static final String GH = "GH";
public static final String LG = "LG";
-
+ public static final String TMP = "TMP";
/**
* 鍒ゆ柇鏄惁鏄敞閲婅
* @param text 鏂囧瓧
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java
index 26edd95..cf0bcba 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/programannotation/DefaultProcessor.java
@@ -1,29 +1,94 @@
package org.springblade.mdm.program.service.programannotation;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springblade.mdm.program.service.ProgramAnnotationService;
+import org.springblade.mdm.utils.FileContentUtil;
+import org.springblade.system.pojo.entity.DictBiz;
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.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
@Component("defaultProcessor")
public class DefaultProcessor extends AbstractProcessor{
- @Autowired
- private ProgramAnnotationService programAnnotationService;
+ //@Autowired
+ //private ProgramAnnotationService programAnnotationService;
private String controlSystem;
@Override
public InputStream putAnnotation(AnnotationData annoData, InputStream inputStream) throws IOException {
- InputStream insAfter = super.putFilenameAnnotation(annoData.getFilename(),inputStream);
+ InputStream insAfter = putFilenameAnnotation(annoData.getFilename(),inputStream);
return super.putAnnotation(annoData, insAfter);
}
+ @Override
+ public InputStream putFilenameAnnotation(String fileName, InputStream inputStream) throws IOException {
+ List<DictBiz> annoDicts = getAnnotationDictList();
+ ByteArrayInputStream byteStream = new ByteArrayInputStream(IOUtils.toByteArray(inputStream));
+
+ String programNameLine = FileContentUtil.readLineAt(byteStream, annotationProperties.getProgramNameLineIndex());
+ byteStream.reset();
+ boolean isAnnotation = AnnotationUtil.isAnnotation(programNameLine,this.getControlSystem(),annoDicts);
+ InputStream insAfterProgramName;
+ //鍔犲叆绋嬪簭鍚嶆敞閲婅
+ String programNameStr = genProgramNameText(FilenameUtils.removeExtension(fileName));
+
+ String proNameAnnotation = AnnotationUtil.generateAnnotation(programNameStr,getControlSystem(),annoDicts);
+
+ if(isAnnotation){//鏄敞閲�
+ //鎻愬彇娉ㄩ噴鍐呮枃瀛�
+ String programName = FilenameUtils.removeExtension(fileName);
+ String progNameLineWithoutAnno = AnnotationUtil.removeAnnotation(this.getControlSystem(),programNameLine,annoDicts);
+ if(!isCurrentProgramNameAnnotation(progNameLineWithoutAnno,programName)) {
+ //娉ㄩ噴涓嶆槸绋嬪簭鍚嶏紙宸ヨ壓鍛樿嚜宸卞啓鐨勬敞閲婏級锛屾彃鍏�
+ insAfterProgramName = FileContentUtil.insertLine(byteStream,annotationProperties.getProgramNameLineIndex(),proNameAnnotation);
+ }else{
+ //鏄▼搴忓悕娉ㄩ噴锛屼笉澶勭悊锛岃繑鍥炲師stream
+ insAfterProgramName = byteStream;
+ }
+ }else{
+ //闈炴敞閲婏紝鎻掑叆鐘舵��
+ insAfterProgramName = FileContentUtil.insertLine(byteStream,annotationProperties.getProgramNameLineIndex(),proNameAnnotation);
+ }
+ return insAfterProgramName;
+ }
+
+ /**
+ * 鏄惁涓哄綋鍓嶇▼搴忕殑娉ㄩ噴
+ * @param lineTextWithoutAnno 娉ㄩ噴琛岀殑鏂囧瓧
+ * @param programName 绋嬪簭鍚嶇О
+ * @return 鏄惁鏃剁▼搴忔敞閲婅锛屽鏋滀笌褰撳墠绋嬪簭鍚嶅尮閰嶅垯true
+ */
+ boolean isCurrentProgramNameAnnotation(String lineTextWithoutAnno,String programName){
+ Pattern pattern = Pattern.compile("^\\((.+)\\)");
+ Matcher matcher = pattern.matcher(lineTextWithoutAnno);
+ if(matcher.find()){
+ String findText = matcher.group(1);
+ return findText.equals(programName);
+ }else{
+ return false;
+ }
+ }
+ /**
+ * 鐢熸垚绋嬪簭鍚嶆垚鐨勮 鍔犲叆 (pname=[绋嬪簭鍚嶇О])
+ * @param proggramName
+ * @return 鎶ヨ鍚庣殑绋嬪簭鍚嶇О
+ */
+ private String genProgramNameText(String proggramName) {
+ return String.format("(%s)",proggramName);
+ }
@Override
public void setControlSystem(String controlSystemDictVal) {
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
index 3fc9e1b..6d44fe2 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/test/MyTestController.java
@@ -8,11 +8,13 @@
import jakarta.xml.soap.SOAPException;
import jakarta.xml.ws.WebServiceContext;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FileUtils;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.mdm.basesetting.machine.entity.Machine;
import org.springblade.mdm.commons.service.InternalEmailService;
+import org.springblade.mdm.commons.service.MachineDirTranslator;
import org.springblade.mdm.flow.entity.MesSync;
import org.springblade.mdm.flow.excution.events.CureFinishedEvent;
import org.springblade.mdm.flow.service.MesSyncService;
@@ -73,6 +75,9 @@
private NcNodeHisService nodeHisService;
@Autowired
private FileSendRecordService fileSendRecordService;
+ @Autowired
+ private MachineDirTranslator transDir;
+
/**
* 鏂板
*/
@@ -195,4 +200,15 @@
return optFile.get();
}
+
+ @GetMapping("/transdir")
+ public Object transdir(String path){
+ return transDir.trans(path);
+ }
+
+ @GetMapping("/sendfile")
+ public Object sendfile() throws IOException {
+ FileUtils.copyFile(new java.io.File("d:/a.txt"),(new java.io.File("\\\\192.168.233.2\\Workshop\\testMachine\\at.txt")));
+ return "OK";
+ }
}
diff --git a/blade-service/blade-mdm/src/test/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVOTest.java b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVOTest.java
new file mode 100644
index 0000000..7eea883
--- /dev/null
+++ b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVOTest.java
@@ -0,0 +1,27 @@
+package org.springblade.mdm.gkw.programnode.vo;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+public class ProgramNameVOTest {
+
+ @Test
+ public void testLgSerial(){
+ ProgramNameVO vo = new ProgramNameVO();
+
+ vo.setLgPart(null);
+ Assertions.assertNull(vo.lgSerial());
+
+ vo.setLgPart("");
+ Assertions.assertNull(vo.lgSerial());
+
+ vo.setLgPart("X1");//闈濸x缁撳熬
+ Assertions.assertNull(vo.lgSerial());
+
+ vo.setLgPart("P1");
+ Assertions.assertEquals("1",vo.lgSerial());
+
+ vo.setLgPart("p2");//灏忓啓p锛屼篃搴旇鍙互
+ Assertions.assertEquals("2",vo.lgSerial());
+ }
+}
diff --git a/blade-service/blade-mdm/src/test/java/org/springblade/mdm/program/service/programannotation/DefaultProcessorTest.java b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/program/service/programannotation/DefaultProcessorTest.java
new file mode 100644
index 0000000..f612863
--- /dev/null
+++ b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/program/service/programannotation/DefaultProcessorTest.java
@@ -0,0 +1,21 @@
+package org.springblade.mdm.program.service.programannotation;
+
+import com.baomidou.mybatisplus.core.toolkit.Assert;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+public class DefaultProcessorTest {
+
+ @Test
+ public void testIsCurrentProgramNameAnnotation(){
+ DefaultProcessor processor = new DefaultProcessor();
+
+ String programName = "CP3-1-1-1";
+ boolean result = processor.isCurrentProgramNameAnnotation("{NOTeprogram}",programName);
+ Assertions.assertFalse(result);
+
+ result = processor.isCurrentProgramNameAnnotation("(CP3-1-1-1)",programName);
+ Assertions.assertTrue(result);
+
+ }
+}
diff --git a/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/ProgramFileNameParserTest.java b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/ProgramFileNameParserTest.java
index f36fdb3..bbbbf58 100644
--- a/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/ProgramFileNameParserTest.java
+++ b/blade-service/blade-mdm/src/test/java/org/springblade/mdm/utils/ProgramFileNameParserTest.java
@@ -47,7 +47,6 @@
Assertions.assertEquals("CS",vo.getDrawingNo());
Assertions.assertEquals("鏃�",vo.getProcessEdition());
-
ProgramNameVO pnmame1 = ProgramFileNameParser.parseProgramName("CP3-2-1-鏃�-1-1.txt");
Assertions.assertEquals("鏃�",pnmame1.getProcessEdition());
}
--
Gitblit v1.9.3