From a7426b81b0bd5b4bb1ed68fd6ecb98f405def280 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 04 八月 2025 17:47:07 +0800
Subject: [PATCH] dnc导出还没测
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/MdmProgramImportService.java | 178 ++++++++++++++++++++++++++++++++---------------------------
1 files changed, 97 insertions(+), 81 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
index ec40485..f180476 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
@@ -9,15 +9,23 @@
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.log.exception.ServiceException;
+import org.springblade.core.mp.base.BizEntity;
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.entity.ApproveRecord;
+import org.springblade.mdm.flow.service.ApproveRecordService;
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;
-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;
@@ -27,12 +35,12 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.time.LocalDateTime;
+import java.time.Duration;
import java.util.*;
/**
* MDM绋嬪簭瀵煎叆锛堝伐鎺х綉鍔熻兘锛�
- *
+ * 鐩墠宸ユ帶缃戝睍鐜板舰寮忔湭瀹氾紝鏆傛椂瀹炵幇鏆傚仠
* @author yangys
*/
@Slf4j
@@ -41,6 +49,14 @@
public class MdmProgramImportService extends BizServiceImpl<NcProgramExchangeMapper, NcProgramExchange> {
private final CureFlowService cureFlowService;
private final NcProgramService ncProgramService;
+ private final NcNodeService ncNodeService;
+ private final ApproveRecordService approveRecordService;
+ private final BladeRedis bladeRedis;
+ private final OssTemplate ossTemplate;
+
+ private String getFileKey(){
+ return "mdmimpfile-"+ AuthUtil.getUserId();
+ }
/**
* MDM瀵煎叆鏂囦欢涓婁紶
* @param file MDM娑夊瘑缃戝鍑烘枃浠�
@@ -49,50 +65,26 @@
public List<MdmProgramImportVO> mdmImportUpload(MultipartFile file) {
List<MdmProgramImportVO> list;
try {
- //String fileName = file.getOriginalFilename();
- //InputStream zipFileInputStream = FileExchangeUtil.convertFileToZip(file.getInputStream());
+ BladeFile bfile = ossTemplate.putFile(file);//涓婁紶锛屼緵鍚庣画鍏ュ簱浣跨敤
+
+ //璁剧疆涓�涓紦瀛橈紝2灏忔椂杩囨湡
+ bladeRedis.setEx(getFileKey(),bfile.getName(), Duration.ofHours(2));
+ String pkgFileName = bladeRedis.get(getFileKey());
InputStream zipFileInputStream = file.getInputStream();//test
byte[] bytes = FileUtil.copyToByteArray(zipFileInputStream);
- list = parseDncZipFromByteArray(bytes);
+ list = parseMdmZipFromByteArray(bytes);
} catch (IOException e) {
- log.error("涓婁紶dnc鍥炰紶鏂囦欢澶辫触",e);
- list = Collections.emptyList();
+ log.error("瀵煎叆娑夊瘑缃戞憜娓℃枃浠跺け璐�",e);
+ throw new ServiceException("瑙f瀽DNC鍥炰紶鏁版嵁澶辫触");
}
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> parseDncZipFromByteArray(byte[] zipData) throws IOException {
+ public static List<MdmProgramImportVO> parseMdmZipFromByteArray(byte[] zipData) throws IOException {
List<MdmProgramImportVO> list = new ArrayList<>();
- //List<DncSendBackData> datas = ZipFileDirectoryScanner.getFilesInDirectoryRecursive(zipData, "");
-
Map<String,String> fileMd5Map = new HashMap<>();
Map<String,MdmProgramImportVO> fileDataMap = new HashMap<>();
try (SeekableInMemoryByteChannel channel = new SeekableInMemoryByteChannel(zipData);
@@ -101,43 +93,13 @@
ZipArchiveEntry entry;
Enumeration<ZipArchiveEntry> entries = zipFile.getEntries();
while (entries.hasMoreElements()) {
- //while ((entry = zis.getNextZipEntry()) != null) {
entry = entries.nextElement();
- DncSendBackData prog = new DncSendBackData();
+
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.setFileBackTime(LocalDateTime.now());//鍒拌揪鏃堕棿
-
- fileDataMap.put(d.getName(),d);
- list.add(d);
- }
-
- }
- }else{
- try (InputStream inputStream = zipFile.getInputStream(entry)) {
- fileMd5Map.put(entryName,DigestUtils.md5Hex(inputStream));//鑾峰彇鏂囦欢MD5
- }
-
- }
- System.out.println("鏂囦欢鍚�: " + entry.getName());
- System.out.println("澶у皬: " + entry.getSize());
-
- // 璇诲彇鏂囦欢鍐呭鍒板瓧鑺傛暟缁�
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
}
@@ -159,25 +121,79 @@
* @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);
- List<NcProgram> progList = ncProgramService.listByIds(idList);
- NcProgramExchange exchange;
- //NcProgram program;
- //NcNode programNode;
+ //
+ updateProgramFile(pkgFileName,idList);
- for(NcProgram prog:progList){
- exchange = new NcProgramExchange();
- exchange.setName(prog.getName());
- 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<>();
+ List<ApproveRecord> recordList = 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();
+
+ }
}
- //鐩存帴鍏ュ簱锛屾棤娴佺▼
- */
+
+
+ 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);
+ }
+ }
+
+ for(ApproveRecord record:recordList) {
+ ApproveRecord recordTemp = this.approveRecordService.getById(record.getId());
+ if (recordTemp == null) {
+ approveRecordService.save(record);
+ } else {
+ approveRecordService.updateById(record);
+ }
+ }
+
+ }
+
+ void setBaseProperties(BizEntity entity,JSONObject jsonObject){
+ entity.setCreateTime(jsonObject.getDate("createTime"));
+ entity.setUpdateTime(jsonObject.getDate("updateTime"));
+ entity.setStatus(jsonObject.getInteger("status"));
+ entity.setCreateUser(jsonObject.getLong("createUser"));
+ entity.setUpdateUser(jsonObject.getLong("updateUser"));
}
}
--
Gitblit v1.9.3