From 4301ffcfa7d715d7341cb77ba29dee24366fb2a3 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 07 七月 2025 22:24:02 +0800
Subject: [PATCH] dnc导出补充字段

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java |  185 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 185 insertions(+), 0 deletions(-)

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
new file mode 100644
index 0000000..3133dde
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java
@@ -0,0 +1,185 @@
+
+package org.springblade.mdm.program.service;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
+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.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.NcProgram;
+import org.springblade.mdm.program.entity.NcProgramExchange;
+import org.springblade.mdm.program.mapper.NcProgramExchangeMapper;
+import org.springblade.mdm.program.vo.DncSendBackData;
+import org.springblade.mdm.program.vo.MdmProgramImportVO;
+import org.springblade.mdm.utils.CustomBinaryReader;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.time.LocalDateTime;
+import java.util.*;
+
+/**
+ * MDM绋嬪簭瀵煎叆锛堝伐鎺х綉鍔熻兘锛�
+ *
+ * @author yangys
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class MdmProgramImportService extends BizServiceImpl<NcProgramExchangeMapper, NcProgramExchange> {
+	private final CureFlowService cureFlowService;
+	private final NcProgramService ncProgramService;
+	/**
+	 * MDM瀵煎叆鏂囦欢涓婁紶
+	 * @param file MDM娑夊瘑缃戝鍑烘枃浠�
+	 * @return
+	 */
+	public List<MdmProgramImportVO> mdmImportUpload(MultipartFile file) {
+		List<MdmProgramImportVO> list;
+		try {
+			//String fileName = file.getOriginalFilename();
+			//InputStream zipFileInputStream = FileExchangeUtil.convertFileToZip(file.getInputStream());
+			InputStream zipFileInputStream = file.getInputStream();//test
+
+			byte[] bytes = FileUtil.copyToByteArray(zipFileInputStream);
+			list = parseMdmZipFromByteArray(bytes);
+
+
+		} catch (IOException e) {
+			log.error("涓婁紶dnc鍥炰紶鏂囦欢澶辫触",e);
+			list = Collections.emptyList();
+		}
+		return list;
+	}
+
+	InputStream convertFileToZip(InputStream inputStream) throws IOException {
+
+		File tempFile = createTempFile();
+		FileOutputStream fos = new FileOutputStream(tempFile);
+		CustomBinaryReader.read(inputStream,fos);
+
+
+		FileInputStream dInstream = new FileInputStream(tempFile);
+
+		return dInstream;
+	}
+
+	/**
+	 * 鍒涘缓涓�涓复鏃舵枃浠�
+	 * @return
+	 * @throws IOException
+	 */
+	File createTempFile() throws IOException {
+		Path tempDir = Paths.get(System.getProperty("java.io.tmpdir"));
+		// 鍦ㄤ复鏃剁洰褰曚腑鍒涘缓鏂囦欢
+		String tfilename = "t"+System.currentTimeMillis();
+		Path tempFile = Files.createTempFile(tempDir, tfilename, ".tmp");
+		System.out.println("鍒涘缓鐨勪复鏃舵枃浠�: " + tempFile);
+		return tempFile.toFile();
+	}
+	public static List<MdmProgramImportVO> parseMdmZipFromByteArray(byte[] zipData) throws IOException {
+		List<MdmProgramImportVO> list = new ArrayList<>();
+		Map<String,String> fileMd5Map = new HashMap<>();
+		Map<String,MdmProgramImportVO> fileDataMap = new HashMap<>();
+		try (SeekableInMemoryByteChannel channel = new SeekableInMemoryByteChannel(zipData);
+			 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()) {
+					//鐩存帴瑙f瀽绋嬪簭鐨刯son鏂囦欢
+					if(entryName.equals(NcProgramExportDNCService.PROGRAM_JSON_FILE)){
+
+						try (InputStream inputStream = zipFile.getInputStream(entry)) {
+							String jsonStr = IoUtil.readToString(inputStream);
+
+							JSONArray jsonArray = JSONArray.parseArray(jsonStr);
+							for(int i=0;i<jsonArray.size();i++){
+								JSONObject jsonObject = jsonArray.getJSONObject(i);
+								MdmProgramImportVO d = new MdmProgramImportVO();
+								d.setName(jsonObject.getString("name"));
+								d.setId(jsonObject.getLong("id"));
+								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"));
+
+								fileDataMap.put(d.getName(),d);
+
+								list.add(d);
+							}
+
+						}
+					}else{
+						try (InputStream inputStream = zipFile.getInputStream(entry)) {
+							fileMd5Map.put(entryName,DigestUtils.md5Hex(inputStream));//鑾峰彇鏂囦欢MD5
+						}
+
+					}
+
+				}
+
+			}
+
+		}
+		//璁剧疆md5鍊�
+		fileDataMap.forEach((k,v)->{
+			if(fileMd5Map.containsKey(k)){
+				v.setMd5(fileMd5Map.get(k));
+			}
+		});
+		return list;
+	}
+
+
+	/**
+	 * 鍏ュ簱mdm娑夊瘑缃戞枃浠�
+	 * @param ids id鍒楄〃閫楀彿鍒嗛殧
+	 * @return
+	 */
+	public void mdmFileAccept(String ids) {
+		/*
+		List<Long> idList = Func.toLongList(ids);
+		List<NcProgram> progList = ncProgramService.listByIds(idList);
+		NcProgramExchange exchange;
+		//NcProgram program;
+		//NcNode programNode;
+
+		for(NcProgram prog:progList){
+			exchange = new NcProgramExchange();
+			exchange.setName(prog.getName());
+			exchange.setExchangeType(2);//鍥炰紶
+			exchange.setNcProgramId(prog.getId());
+
+			this.save(exchange);
+
+		}
+	//鐩存帴鍏ュ簱锛屾棤娴佺▼
+		*/
+
+	}
+}

--
Gitblit v1.9.3