From 0d97a648b7aa8e7b328c37a1f6f73dad2880dd52 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期二, 08 七月 2025 00:54:29 +0800
Subject: [PATCH] mdm程序导入
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java | 3 +
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/MdmProgramImportController.java | 4
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java | 158 ++++++++++++++++++++++++++++++++++++++++++++++++++--
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExportDNCController.java | 3
4 files changed, 159 insertions(+), 9 deletions(-)
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 2135394..f70489e 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
@@ -51,7 +51,7 @@
return R.fail(e.getMessage());
}
}
- /*
+
@PostMapping("accept")
@ApiOperationSupport(order = 2)
@Operation(summary = "MDM绋嬪簭鍏ュ簱", description = "娑夊瘑缃戠▼搴忕‘璁ゅ叆搴�")
@@ -63,5 +63,5 @@
return R.fail(e.getMessage());
}
return R.success();
- }*/
+ }
}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExportDNCController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExportDNCController.java
index 5321f90..3c25961 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExportDNCController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExportDNCController.java
@@ -42,7 +42,6 @@
@Operation(summary = "绋嬪簭瀵煎嚭DNC鍒嗛〉鏌ヨ", description = "鍒嗛〉鏌ヨ锛屼緵鐢ㄦ埛閫夋嫨鏁版嵁")
@GetMapping("/export-dnc-page")
public R<IPage<NcProgramExportDncPageVO>> page(NcProgramExportDncQueryVO query) {
- //IPage<NcProgramVO> pages = ncProgramService.pageQuery(query);
return R.data(ncProgramApprovedService.exportDncPageQuery(query));
}
@@ -53,6 +52,8 @@
throw new ServiceException("鏈�夋嫨鏂囦欢瀵煎嚭");
}
try {
+ response.setHeader("Content-Disposition", "attachment; filename=dnc-t.zip");
+ response.setContentType("application/octet-stream");
ncProgramExportDNCService.exportDnc(vo.getIds(),response.getOutputStream());
} catch (IOException e) {
log.error("瀵煎嚭DNC寮傚父", e);
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 3133dde..bf389c3 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
@@ -10,10 +10,15 @@
import org.apache.commons.compress.archivers.zip.ZipFile;
import org.apache.commons.compress.utils.SeekableInMemoryByteChannel;
import org.springblade.core.mp.base.BizServiceImpl;
+import org.springblade.core.oss.OssTemplate;
+import org.springblade.core.oss.model.BladeFile;
+import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.FileUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.IoUtil;
import org.springblade.mdm.flow.service.CureFlowService;
+import org.springblade.mdm.program.entity.NcNode;
import org.springblade.mdm.program.entity.NcProgram;
import org.springblade.mdm.program.entity.NcProgramExchange;
import org.springblade.mdm.program.mapper.NcProgramExchangeMapper;
@@ -27,6 +32,7 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.time.Duration;
import java.time.LocalDateTime;
import java.util.*;
@@ -41,6 +47,13 @@
public class MdmProgramImportService extends BizServiceImpl<NcProgramExchangeMapper, NcProgramExchange> {
private final CureFlowService cureFlowService;
private final NcProgramService ncProgramService;
+ private final NcNodeService ncNodeService;
+ private final BladeRedis bladeRedis;
+ private final OssTemplate ossTemplate;
+
+ private String getFileKey(){
+ return "mdmimpfile-"+ AuthUtil.getUserId();
+ }
/**
* MDM瀵煎叆鏂囦欢涓婁紶
* @param file MDM娑夊瘑缃戝鍑烘枃浠�
@@ -49,6 +62,10 @@
public List<MdmProgramImportVO> mdmImportUpload(MultipartFile file) {
List<MdmProgramImportVO> list;
try {
+ BladeFile bfile = ossTemplate.putFile(file);//涓婁紶锛屼緵鍚庣画鍏ュ簱浣跨敤
+
+ //璁剧疆涓�涓紦瀛橈紝2灏忔椂杩囨湡
+ bladeRedis.setEx(getFileKey(),bfile.getName(), Duration.ofHours(2));
//String fileName = file.getOriginalFilename();
//InputStream zipFileInputStream = FileExchangeUtil.convertFileToZip(file.getInputStream());
InputStream zipFileInputStream = file.getInputStream();//test
@@ -161,13 +178,16 @@
* @param ids id鍒楄〃閫楀彿鍒嗛殧
* @return
*/
- public void mdmFileAccept(String ids) {
- /*
+ public void mdmFileAccept(String ids) throws IOException {
+
+ String pkgFileName = bladeRedis.get(getFileKey());
+
List<Long> idList = Func.toLongList(ids);
+ //
+ updateProgramFile(pkgFileName,idList);
+
List<NcProgram> progList = ncProgramService.listByIds(idList);
NcProgramExchange exchange;
- //NcProgram program;
- //NcNode programNode;
for(NcProgram prog:progList){
exchange = new NcProgramExchange();
@@ -175,11 +195,137 @@
exchange.setExchangeType(2);//鍥炰紶
exchange.setNcProgramId(prog.getId());
+
this.save(exchange);
}
- //鐩存帴鍏ュ簱锛屾棤娴佺▼
- */
+
+
+ }
+
+ /**
+ * 鏇存柊绋嬪簭鏂囦欢
+ * @param pkgFileName mdm绋嬪簭鍖�
+ * @param idList 閫夊畾鍏ュ簱鐨�
+ */
+ private void updateProgramFile(String pkgFileName,List<Long> idList) throws IOException {
+ InputStream inputStream = this.ossTemplate.statFileStream(pkgFileName);
+ byte[] bytes = FileUtil.copyToByteArray(inputStream);
+
+ List<NcNode> nodeList = new ArrayList<>();
+ List<NcProgram> progList = new ArrayList<>();
+ try (SeekableInMemoryByteChannel channel = new SeekableInMemoryByteChannel(bytes);
+ ZipFile zipFile = new ZipFile(channel)) {
+
+ ZipArchiveEntry entry;
+ Enumeration<ZipArchiveEntry> entries = zipFile.getEntries();
+ while (entries.hasMoreElements()) {
+ entry = entries.nextElement();
+
+ String entryName = entry.getName();
+
+ if (!entry.isDirectory()) {
+ if(entryName.equals(NcProgramExportDNCService.PROGRAM_JSON_FILE)){
+
+ try (InputStream insJson = zipFile.getInputStream(entry)) {
+ String jsonStr = IoUtil.readToString(insJson);
+
+ JSONArray jsonArray = JSONArray.parseArray(jsonStr);
+ for(int i=0;i<jsonArray.size();i++){
+ JSONObject jsonObject = jsonArray.getJSONObject(i);
+ NcProgram d = new NcProgram();
+ d.setId(jsonObject.getLong("id"));
+ d.setName(jsonObject.getString("name"));
+
+ d.setCode(jsonObject.getString("code"));
+ d.setDescription(jsonObject.getString("description"));
+ d.setCategory(jsonObject.getString("category"));
+ d.setBindNcNodeId(jsonObject.getLong("bindNcNodeId"));
+ d.setIsLastEdition(jsonObject.getInteger("isLastEdition"));
+ d.setIsLocked(jsonObject.getInteger("isLocked"));
+ d.setIsTest(jsonObject.getInteger("isTest"));
+ d.setMachineCode(jsonObject.getString("machineCode"));
+ d.setNcNodeId(jsonObject.getLong("ncNodeId"));
+ d.setPartNo(jsonObject.getString("partNo"));
+ d.setProcessEdition(jsonObject.getString("processEdition"));
+
+ progList.add(d);
+ }
+
+ }
+ }else if(entryName.equals(NcProgramExportDNCService.NODE_JSON_FILE)){
+ try (InputStream insJson = zipFile.getInputStream(entry)) {
+ String jsonStr = IoUtil.readToString(insJson);
+ JSONArray jsonArray = JSONArray.parseArray(jsonStr);
+ for (int i = 0; i < jsonArray.size(); i++) {
+ JSONObject jsonObject = jsonArray.getJSONObject(i);
+ NcNode node = new NcNode();
+ node.setId(jsonObject.getLong("id"));
+ node.setName(jsonObject.getString("name"));
+ node.setDescription(jsonObject.getString("description"));
+ node.setNodeType(jsonObject.getString("nodeType"));
+ node.setProcessName(jsonObject.getString("processName"));
+ node.setPartNo(jsonObject.getString("partNo"));
+ node.setMachineCode(jsonObject.getString("machineCode"));
+ node.setParentId(jsonObject.getLong("parentId"));
+ node.setParentIds(jsonObject.getString("parentIds"));
+ node.setIsCured(jsonObject.getInteger("isCured"));
+
+ nodeList.add(node);
+ }
+ }
+ }
+
+ }
+ }
+
+ }
+
+
+ try (SeekableInMemoryByteChannel channel = new SeekableInMemoryByteChannel(bytes);
+ ZipFile zipFile = new ZipFile(channel)) {
+
+ ZipArchiveEntry entry;
+ Enumeration<ZipArchiveEntry> entries = zipFile.getEntries();
+ while (entries.hasMoreElements()) {
+ entry = entries.nextElement();
+
+ String entryName = entry.getName();
+
+ if (!entry.isDirectory() && !entryName.equals(NcProgramExportDNCService.PROGRAM_JSON_FILE)) {
+
+ for(NcProgram prog:progList){
+ if(prog.getName().equals(entryName)){
+ try (InputStream ncFileStream = zipFile.getInputStream(entry)) {
+ BladeFile bfile = this.ossTemplate.putFile(prog.getName(),ncFileStream);
+ prog.setOssName(bfile.getName());
+ prog.setUrl(bfile.getLink());
+ }
+ break;
+ }
+ }
+
+ }
+ }
+ }
+
+ for(NcNode node:nodeList){
+ NcNode nodeTemp = this.ncNodeService.getById(node.getId());
+ if(nodeTemp == null){
+ ncNodeService.save(node);
+ }else{
+ ncNodeService.updateById(node);
+ }
+ }
+
+ for(NcProgram prog:progList){
+ NcProgram ncTemp = ncProgramService.getById(prog.getId());
+ if(ncTemp == null){
+ ncProgramService.save(prog);
+ }else{
+ ncProgramService.updateById(prog);
+ }
+ }
}
}
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 417c32e..30e65b2 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
@@ -53,6 +53,7 @@
private final OssTemplate ossTemplate;
public static final String PROGRAM_JSON_FILE = "exp_mdm_nc_program.json";
+ public static final String NODE_JSON_FILE = "exp_mdm_nc_node.json";
/**
* 鍒嗛〉鏌ヨ
* @param query 鏌ヨ鍙傛暟
@@ -92,6 +93,8 @@
addDataJson(zipOut, programIdList);
}
+ os.close();
+
}
--
Gitblit v1.9.3