From 8a0cb5a26892aee337a1c1e68f2d5d9aff0c42a7 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期四, 19 六月 2025 23:39:29 +0800
Subject: [PATCH] dnc回传解析1
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/DncSendBackData.java | 4 +
blade-service/blade-mdm/src/main/resources/processesbpmn/program-cure.bpmn20.xml | 10 +-
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExchangeController.java | 9 +-
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java | 9 ++
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DncSendBackService.java | 97 +++++++++++++++++++++++++++++--
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncSendBackController.java | 7 -
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/controller/MachineBackFileHandleController.java | 4
7 files changed, 113 insertions(+), 27 deletions(-)
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/controller/MachineBackFileHandleController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/controller/MachineBackFileHandleController.java
index 313f514..c561461 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/controller/MachineBackFileHandleController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/controller/MachineBackFileHandleController.java
@@ -63,10 +63,10 @@
List<MachineBackFileHandleExcelVO> list = new ArrayList<>();
pages.getRecords().forEach(vo ->{
MachineBackFileHandleExcelVO excelVO = new MachineBackFileHandleExcelVO();
- excelVO.setCuredStatus(vo.getIsCured()==0?"鍥哄寲":"鏈浐鍖�");
BeanUtil.copy(vo, excelVO);
+ excelVO.setCuredStatus(vo.getIsCured()==0?"鍥哄寲":"鏈浐鍖�");
});
- ExcelUtil.export(response, "鏈哄簥鍥炰紶鏂囦欢澶勭悊" + DateUtil.time(), "鏈哄簥鍥炰紶鏂囦欢琛�", list, MachineBackFileHandleExcelVO.class);
+ ExcelUtil.export(response, "鏈哄簥鍥炰紶绋嬪簭" + DateUtil.time(), "鏈哄簥鍥炰紶绋嬪簭琛�", list, MachineBackFileHandleExcelVO.class);
}
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncSendBackController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncSendBackController.java
index 8011b15..d901cc4 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncSendBackController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncSendBackController.java
@@ -48,15 +48,12 @@
/**
* 涓婁紶DNC鍥炰紶鏂囦欢
*
- * @param files 娴佺▼鏂囦欢
- * @param category 绫诲瀷
+ * @param file dnc绋嬪簭鎵撳寘鏂囦欢
*/
@PostMapping("dnc-sendback-upload")
@ApiOperationSupport(order = 1)
@Operation(summary = "涓婁紶DNC鍥炰紶鏂囦欢", description = "浼犲叆鏂囦欢")
- public R<List<DncSendBackData>> dncSendBackUpload(@RequestParam MultipartFile file,
- @RequestParam String category,
- @RequestParam(required = false, defaultValue = "") String tenantIds) {
+ public R<List<DncSendBackData>> dncSendBackUpload(@RequestParam MultipartFile file) {
return R.data(dncSendBackService.dncSendBackUpload(file));
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExchangeController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExchangeController.java
index 70cafc1..a56ce57 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExchangeController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExchangeController.java
@@ -36,13 +36,12 @@
//return R.<Boolean>status(true);
}
-
+ /*
@PostMapping("/import-dnc-file")
@Operation(summary = "涓婁紶宸ユ帶缃戝洖浼犳枃浠�", description = "涓婁紶绋嬪簭/闄勪欢鏂囦欢")
- public R<Boolean> importDncFile(@RequestParam MultipartFile file,Long nodeId,
- @RequestParam String category) {
- ncProgramService.uploadNcFile(file,nodeId,category);
+ public R<Boolean> importDncFile(@RequestParam MultipartFile file) {
+ ncProgramService.uploadNcPkgFile(file);
return R.<Boolean>status(true);
- }
+ }*/
}
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 8fd16f6..e722731 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
@@ -28,15 +28,23 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
+import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
+import org.apache.commons.compress.archivers.zip.ZipFile;
+import org.apache.commons.compress.utils.IOUtils;
+import org.apache.commons.compress.utils.SeekableInMemoryByteChannel;
import org.flowable.engine.*;
import org.springblade.core.tool.utils.FileUtil;
import org.springblade.mdm.program.vo.DncSendBackData;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.Enumeration;
import java.util.List;
/**
@@ -49,23 +57,24 @@
@AllArgsConstructor
public class DncSendBackService {
- private static final String XML_NAME = "xml";
- private static final Integer INT_1024 = 1024;
-
- private final ObjectMapper objectMapper;
private final RepositoryService repositoryService;
private final RuntimeService runtimeService;
private final HistoryService historyService;
- private final TaskService taskService;
private final ProcessEngine processEngine;
-
+ /**
+ * dnc鍥炰紶鏂囦欢涓婁紶
+ * @param file
+ * @return
+ */
public List<DncSendBackData> dncSendBackUpload(MultipartFile file) {
- List<DncSendBackData> list = new ArrayList<>();
+ List<DncSendBackData> list=new ArrayList<>();
try {
String fileName = file.getOriginalFilename();
InputStream fileInputStream = file.getInputStream();
+
byte[] bytes = FileUtil.copyToByteArray(fileInputStream);
+ list = parseDncZipFromByteArray(bytes);
//TODO 瑙f瀽涓哄垪琛ㄦ枃浠�
DncSendBackData dt = new DncSendBackData();
@@ -77,12 +86,52 @@
} catch (IOException e) {
log.error("涓婁紶dnc鏂囦欢澶辫触",e);
-
}
return list;
}
+ public static List<DncSendBackData> parseDncZipFromByteArray(byte[] zipData) throws IOException {
+ //List<DncSendBackData> datas = new ArrayList<>();
+ List<DncSendBackData> datas = ZipFileDirectoryScanner.getFilesInDirectoryRecursive(zipData, "");
+
+
+
+ /*
+ try (ByteArrayInputStream bis = new ByteArrayInputStream(zipData);
+ ZipArchiveInputStream zis = new ZipArchiveInputStream(bis)) {
+
+
+ ZipArchiveEntry entry;
+ while ((entry = zis.getNextZipEntry()) != null) {
+ DncSendBackData prog = new DncSendBackData();
+ prog.setProgramName(entry.getName());
+ if (!entry.isDirectory()) {
+ System.out.println("鏂囦欢鍚�: " + entry.getName());
+ System.out.println("澶у皬: " + entry.getSize());
+
+ // 璇诲彇鏂囦欢鍐呭鍒板瓧鑺傛暟缁�
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ IOUtils.copy(zis, outputStream);
+ byte[] fileContent = outputStream.toByteArray();
+
+ // 澶勭悊鏂囦欢鍐呭...
+ System.out.println("鍐呭闀垮害: " + fileContent.length);
+ }else{
+ //鏂囦欢澶癸紝璇诲唴閮ㄦ枃浠讹紝鑾峰彇鏂囦欢鍒楄〃
+
+ System.out.println("鏂囦欢澶圭▼搴忥細"+entry.getName());
+ List<String> children = new ArrayList<>();
+ prog.setChildren(children);
+ }
+
+ datas.add(prog);
+ }
+
+
+ }*/
+ return datas;
+ }
/**
* 鍏ュ簱鍥炰紶鏂囦欢
* @param ids
@@ -92,3 +141,35 @@
}
}
+
+class ZipFileDirectoryScanner {
+
+ public static List<DncSendBackData> getFilesInDirectoryRecursive(byte[] zipData, String dirPath) throws IOException {
+ List<DncSendBackData> list = new ArrayList<>();
+
+ if (!dirPath.endsWith("/")) {
+ dirPath += "/";
+ }
+
+ try (SeekableInMemoryByteChannel channel = new SeekableInMemoryByteChannel(zipData);
+ ZipFile zipFile = new ZipFile(channel)) {
+
+ Enumeration<ZipArchiveEntry> entries = zipFile.getEntries();
+ while (entries.hasMoreElements()) {
+ ZipArchiveEntry entry = entries.nextElement();
+ String entryName = entry.getName();
+ DncSendBackData d = new DncSendBackData();
+ d.setProgramName(entryName);
+ if(entry.isDirectory()){
+ d.setHasChildren(true);
+ }
+ list.add(d);
+
+ //if (entryName.startsWith(dirPath) && !entry.isDirectory()) {
+ // fileList.add(entryName);
+ //}
+ }
+ }
+ return list;
+ }
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java
index 4486e71..fab2dbc 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramService.java
@@ -71,7 +71,12 @@
return this.getBaseMapper().getCuredNcProgram(partNo,machine.getMachineGroupCode());
}
- public void uploadNcFile(MultipartFile file,Long nodeId, String category) {
-
+ /**
+ * 涓婁紶绋嬪簭鏂囦欢鍒版寚瀹氳妭鐐�
+ * @param file
+ * @param nodeId
+ * @param category
+ */
+ public void uploadNcFile(MultipartFile file, Long nodeId, String category) {
}
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/DncSendBackData.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/DncSendBackData.java
index f69d9a3..473f2cf 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/DncSendBackData.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/DncSendBackData.java
@@ -5,6 +5,7 @@
import lombok.Setter;
import java.time.LocalDateTime;
+import java.util.List;
@Setter
@Getter
@@ -22,4 +23,7 @@
@Schema(description = "MD5鍊�")
private String md5;
+ @Schema(description = "瀛愭枃浠讹紙鐢ㄤ簬鍙瘑鍒枃浠跺姞鐨勬満鍣ㄨ繑鍥炵殑绋嬪簭锛�")
+ private List<String> children;
+ private boolean hasChildren;
}
diff --git a/blade-service/blade-mdm/src/main/resources/processesbpmn/program-cure.bpmn20.xml b/blade-service/blade-mdm/src/main/resources/processesbpmn/program-cure.bpmn20.xml
index 2e88c8f..94361e8 100644
--- a/blade-service/blade-mdm/src/main/resources/processesbpmn/program-cure.bpmn20.xml
+++ b/blade-service/blade-mdm/src/main/resources/processesbpmn/program-cure.bpmn20.xml
@@ -2,12 +2,12 @@
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.flowable.org/processdef">
<process id="program-cure" name="鍥哄寲娴佺▼" isExecutable="true">
<startEvent id="sid-abe970b9-1bee-49a1-91b4-1184c47c10b7"/>
- <userTask id="sid-e9be5408-2827-4ee7-bee5-fda38a8f23e6"/>
- <sequenceFlow id="sid-910649a5-8dac-48a2-b42d-9f1132d61b26" sourceRef="sid-e9be5408-2827-4ee7-bee5-fda38a8f23e6" targetRef="sid-e9be5408-2827-4ee7-bee5-fda38a8f23e6"/>
- <sequenceFlow id="sid-09c7cf44-bb1a-40f4-b231-919afae5c02f" sourceRef="sid-abe970b9-1bee-49a1-91b4-1184c47c10b7" targetRef="sid-e9be5408-2827-4ee7-bee5-fda38a8f23e6"/>
+ <userTask id="cureProgramTask" name="鍥哄寲缂栧埗"/>
+ <sequenceFlow id="sid-910649a5-8dac-48a2-b42d-9f1132d61b26" sourceRef="cureProgramTask" targetRef="cureProgramTask"/>
+ <sequenceFlow id="sid-09c7cf44-bb1a-40f4-b231-919afae5c02f" sourceRef="sid-abe970b9-1bee-49a1-91b4-1184c47c10b7" targetRef="cureProgramTask"/>
<endEvent id="end" name="鍥哄寲缁撴潫"/>
<userTask id="seniorApproveTask" name="楂樺笀瀹℃牳"/>
- <sequenceFlow id="sid-8dd21f02-ac10-4318-b897-19b4cdc558c7" sourceRef="sid-e9be5408-2827-4ee7-bee5-fda38a8f23e6" targetRef="seniorApproveTask"/>
+ <sequenceFlow id="sid-8dd21f02-ac10-4318-b897-19b4cdc558c7" sourceRef="cureProgramTask" targetRef="seniorApproveTask"/>
<sequenceFlow id="sid-504610fe-2b87-4df4-8f42-f10c8bf3ce01" sourceRef="seniorApproveTask" targetRef="end"/>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_program-cure">
@@ -15,7 +15,7 @@
<bpmndi:BPMNShape id="shape-7fe43876-cd89-402e-aada-b7fe7d89e64a" bpmnElement="sid-abe970b9-1bee-49a1-91b4-1184c47c10b7">
<omgdc:Bounds x="-215.0" y="-85.0" width="30.0" height="30.0"/>
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="shape-702fceb1-2073-4a25-a94d-86c2392dfc6f" bpmnElement="sid-e9be5408-2827-4ee7-bee5-fda38a8f23e6">
+ <bpmndi:BPMNShape id="shape-702fceb1-2073-4a25-a94d-86c2392dfc6f" bpmnElement="cureProgramTask">
<omgdc:Bounds x="-110.0" y="-95.0" width="75.0" height="55.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="edge-fbb946ca-a477-4237-b78f-72cf4e0b8479" bpmnElement="sid-910649a5-8dac-48a2-b42d-9f1132d61b26">
--
Gitblit v1.9.3