From edd4eb1d5eed4085bbe80cb65116fe585a13c42f Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 23 六月 2025 22:49:34 +0800
Subject: [PATCH] dnc导入完善

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramExchangeMapper.xml    |   20 ++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramMapper.xml            |    4 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/CureFlowService.java             |   15 ++
 doc/sql/mdm/mdm.mysql.all.create.sql                                                                    |    7 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramExchangeMapper.java   |   15 ++
 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       |  131 +++---------------
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramMapper.java           |    7 +
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExchangeService.java |  150 +++++++++++++++++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/DncSendBackController.java |   31 +++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcProgramExchange.java         |   18 ++
 11 files changed, 291 insertions(+), 116 deletions(-)

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 6b01c31..de98c65 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
@@ -4,6 +4,8 @@
 import org.flowable.engine.RuntimeService;
 import org.flowable.engine.runtime.ProcessInstance;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.mdm.basesetting.machine.MachineService;
+import org.springblade.mdm.basesetting.machine.entity.Machine;
 import org.springblade.mdm.flow.excution.AutoAssignUsersService;
 import org.springblade.mdm.flow.vo.TaskAssignVO;
 import org.springblade.mdm.program.entity.NcProgram;
@@ -29,13 +31,26 @@
 
 	@Autowired
 	private NcProgramService ncProgramService;
+	@Autowired
+	private MachineService machineService;
 	/**
 	 * 鍥哄寲娴佺▼鐨刱ey
 	 */
 	private static final String PROCESS_KEY = "program-cure";
 
+	/**
+	 * 鍚姩鍥哄寲娴佺▼
+	 * @param programId 绋嬪簭id
+	 */
 	public void start(long programId){
 		Map<String, Object> vars = new HashMap<>();
+		NcProgram prog = ncProgramService.getById(programId);
+		Machine machine = machineService.getByCode(prog.getMachineCode());
+		vars.put("machineCode",machine.getCode());
+		vars.put("machineMode",machine.getName());
+		vars.put("processEdition",prog.getProcessEdition());
+		//vars.put("processNo",startVO.getProcessNo());prog.getProcessEdition()
+		//vars.put("processName",startVO.getProcessName());
 		/*
 		Map<String,Object> preAssignee = autoAssignUsersService.autoAssignUsers(startVO.getProducePlanId());
 		Map<String, Object> vars = new HashMap<>(preAssignee);
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 6adad7c..fc62cc6 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
@@ -1,15 +1,20 @@
 
 package org.springblade.mdm.program.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.mp.support.Query;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
+import org.springblade.mdm.basesetting.machine.vo.MachineVO;
 import org.springblade.mdm.program.service.DncSendBackService;
+import org.springblade.mdm.program.service.NcProgramExchangeService;
 import org.springblade.mdm.program.vo.DncSendBackData;
+import org.springblade.mdm.program.vo.ProgramExchangeStatQueryVO;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -22,26 +27,40 @@
  */
 @NonDS
 @RestController
-@RequestMapping("/program")
+@RequestMapping("/program/dncsendback/")
 @AllArgsConstructor
 @Tag(name = "DNC鍥炰紶绋嬪簭鎺ュ彛", description = "DNC鍥炰紶绋嬪簭鎺ュ彛")
 @Slf4j
 public class DncSendBackController {
 
 	private final DncSendBackService dncSendBackService;
+	private final NcProgramExchangeService ncProgramExchangeService;
 	/**
 	 * 涓婁紶DNC鍥炰紶鏂囦欢
 	 *
 	 * @param file    dnc绋嬪簭鎵撳寘鏂囦欢
 	 */
-	@PostMapping("dnc-sendback-upload")
+	@PostMapping("upload")
 	@ApiOperationSupport(order = 1)
-	@Operation(summary = "涓婁紶DNC鍥炰紶鏂囦欢", description = "浼犲叆鏂囦欢")
-	public R<List<DncSendBackData>> dncSendBackUpload(@RequestParam MultipartFile file) {
-		return R.data(dncSendBackService.dncSendBackUpload(file));
+	@Operation(summary = "涓婁紶DNC鍥炰紶鏂囦欢", description = "鍥炰紶瀵煎叆")
+	public R<Void> dncSendBackUpload(@RequestParam MultipartFile file) {
+		try {
+			ncProgramExchangeService.dncSendBackUpload(file);
+		}catch (Exception e){
+			log.error("瀵煎叆閿欒",e);
+			return R.fail(e.getMessage());
+		}
+		return R.success();
 	}
 
-	@PostMapping("dnc-sendback-accept")
+	@Operation(summary = "dnc鍥炰紶鏁版嵁鍒嗛〉", description = "dnc鍥炰紶鏁版嵁鍒嗛〉")
+	@GetMapping("/page")
+	public R<IPage<DncSendBackData>> page(Query query) {
+		IPage<DncSendBackData> pages = ncProgramExchangeService.dncSendBackPageQuery(query);
+		return R.data(pages);
+	}
+
+	@PostMapping("accept")
 	@ApiOperationSupport(order = 2)
 	@Operation(summary = "DNC鍥炰紶鏁版嵁鍏ュ簱", description = "鍏ュ簱锛屽悓鏃跺惎鍔ㄥ浐鍖栨祦绋�")
 	public R<Void> dncSendBackAccept(@RequestParam String ids) {
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcProgramExchange.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcProgramExchange.java
new file mode 100644
index 0000000..5e8d91e
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcProgramExchange.java
@@ -0,0 +1,18 @@
+package org.springblade.mdm.program.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+import org.springblade.core.mp.base.BizEntity;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Setter
+@Getter
+@TableName("mdm_nc_program_exchange")
+public class NcProgramExchange extends BizEntity {
+	private String name;
+	private int exchangeType;
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramExchangeMapper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramExchangeMapper.java
new file mode 100644
index 0000000..dd5d977
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramExchangeMapper.java
@@ -0,0 +1,15 @@
+package org.springblade.mdm.program.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.mapper.BladeMapper;
+import org.springblade.core.mp.support.Query;
+import org.springblade.mdm.program.entity.NcProgramExchange;
+import org.springblade.mdm.program.vo.DncSendBackData;
+
+
+import java.util.List;
+
+public interface NcProgramExchangeMapper extends BladeMapper<NcProgramExchange> {
+
+	IPage<DncSendBackData> dncSendBackpageQuery(IPage<Object> page, Query query);
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramExchangeMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramExchangeMapper.xml
new file mode 100644
index 0000000..4307c57
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramExchangeMapper.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.mdm.program.mapper.NcProgramExchangeMapper">
+    <resultMap id="BaseResultMap" type="org.springblade.mdm.program.entity.NcProgramExchange">
+        <id column="id" property="id"/>
+        <result column="name" property="name"/>
+        <result column="exchange_type" property="exchangeType"/>
+
+
+        <result column="status" property="status"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="is_deleted" property="isDeleted"/>
+    </resultMap>
+    <select id="dncSendBackpageQuery" resultType="org.springblade.mdm.program.vo.DncSendBackData">
+        select e.id,e.name
+        from mdm_nc_program_exchange e
+        where e.is_deleted=0 and e.exchange_type=2
+    </select>
+</mapper>
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramMapper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramMapper.java
index dcab901..c788397 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramMapper.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramMapper.java
@@ -18,4 +18,11 @@
 	 * @return
 	 */
 	NcProgram getCuredNcProgram(@Param("partNo")String partNo,@Param("machineGroupCode")String machineGroupCode);
+
+	/**
+	 * 鏍规嵁绋嬪簭鍚嶇О锛岃幏鍙栨渶鏂扮殑绋嬪簭瀹炰綋
+	 * @param name 绋嬪簭鍚嶇О
+	 * @return nc绋嬪簭
+	 */
+	NcProgram getLastNcProgram(String name);
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramMapper.xml
index 27e2f8b..ab4bfa9 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramMapper.xml
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramMapper.xml
@@ -43,4 +43,8 @@
         order by create_time desc
         limit 1
     </select>
+    <select id="getLastNcProgram" resultType="org.springblade.mdm.program.entity.NcProgram">
+        select <include refid="all_columns"/> from mdm_nc_program
+        where is_deleted=0 and is_last_edition=1 order by create_time desc limit 1
+    </select>
 </mapper>
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 b95dd4c..cfe41ef 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
@@ -34,8 +34,13 @@
 import org.apache.commons.compress.utils.IOUtils;
 import org.apache.commons.compress.utils.SeekableInMemoryByteChannel;
 import org.flowable.engine.*;
+import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.FileUtil;
 import org.springblade.core.tool.utils.Func;
+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.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
@@ -58,81 +63,16 @@
 @AllArgsConstructor
 public class DncSendBackService  {
 
-	private final RepositoryService repositoryService;
-	private final RuntimeService runtimeService;
-	private final HistoryService historyService;
-	private final ProcessEngine processEngine;
-
-	/**
-	 * dnc鍥炰紶鏂囦欢涓婁紶
-	 * @param file
-	 * @return
-	 */
-	public List<DncSendBackData> dncSendBackUpload(MultipartFile file) {
-		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();
-				dt.setId(1L);
-				dt.setProgramName("test.nc");
-				dt.setProgramNo("001");
-
-				list.add(dt);
-
-			} 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, "");
+	//private final RepositoryService repositoryService;
+	//private final RuntimeService runtimeService;
+	//private final HistoryService historyService;
+	//private final ProcessEngine processEngine;
+	private final NcProgramService ncProgramService;
+	private final CureFlowService cureFlowService;
+	private final NcProgramExchangeMapper ncProgramExchangeMapper;
 
 
 
-		/*
-		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
@@ -140,43 +80,22 @@
 	 */
 	public void dncFileAccept(String ids) {
 		List<Long> idList = Func.toLongList(ids);
+		NcProgramExchange exchange;
+		NcProgram program;
 		for (Long id : idList) {
+			exchange = ncProgramExchangeMapper.selectById(id);
+			exchange.setStatus(2);//宸插叆搴撶姸鎬�
+			program = ncProgramService.getLastNcProgram(exchange.getName());
+
+			//濡傛灉鏄凡缁忓浐鍖栫殑鍒欎笉闇�瑕佸惎鍔ㄦ祦绋�
 			//鍚姩鍥哄寲娴佺▼
-		}
-
-	}
-
-
-}
-
-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);
-				//}
+			if(program.getIsCured() !=1) {//鏈浐鍖栫殑绋嬪簭锛屽惎鍔ㄥ浐鍖栨祦绋�
+				cureFlowService.start(program.getId());
 			}
 		}
-		return list;
+
 	}
+
+
 }
+
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExchangeService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExchangeService.java
new file mode 100644
index 0000000..3cfc5de
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExchangeService.java
@@ -0,0 +1,150 @@
+
+package org.springblade.mdm.program.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+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.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.utils.FileUtil;
+import org.springblade.mdm.basesetting.machine.vo.MachineVO;
+import org.springblade.mdm.program.entity.NcProgramExchange;
+import org.springblade.mdm.program.mapper.NcProgramExchangeMapper;
+import org.springblade.mdm.program.vo.DncSendBackData;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+
+/**
+ * 涓嬪彂/鍥炰紶绋嬪簭缁熻
+ *
+ * @author yangys
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class NcProgramExchangeService extends BizServiceImpl<NcProgramExchangeMapper, NcProgramExchange> {
+
+	/**
+	 * dnc鍥炰紶鏂囦欢涓婁紶
+	 * @param file
+	 * @return
+	 */
+	public void dncSendBackUpload(MultipartFile file) {
+		List<DncSendBackData> list=new ArrayList<>();
+		try {
+			String fileName = file.getOriginalFilename();
+			InputStream fileInputStream = file.getInputStream();
+
+			byte[] bytes = FileUtil.copyToByteArray(fileInputStream);
+			list = parseDncZipFromByteArray(bytes);
+			for(DncSendBackData dncSendBackData:list){
+				NcProgramExchange exchange=new NcProgramExchange();
+				exchange.setName(dncSendBackData.getProgramName());
+				exchange.setStatus(1);//宸插鍏�
+				this.save(exchange);
+
+			}
+
+		} catch (IOException e) {
+			log.error("涓婁紶dnc鏂囦欢澶辫触",e);
+		}
+
+	}
+
+	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 query 鏌ヨ鍙傛暟
+	 * @return
+	 */
+	public IPage<DncSendBackData> dncSendBackPageQuery(Query query) {
+
+		IPage<DncSendBackData> page = this.getBaseMapper().dncSendBackpageQuery(Condition.getPage(query),query);
+
+		return page;
+
+	}
+}
+
+
+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 fab2dbc..c089431 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
@@ -72,6 +72,15 @@
 	}
 
 	/**
+	 * 鏌ヨ鐜版湁鍥哄寲鐨勭▼搴忥紝鏆傚畾鏉′欢锛氶浂缁勪欢鍙风浉鍚岋紝涓旀槸鍚屼竴鏈哄簥缁�
+	 * @param name 绋嬪簭鍚嶇О
+	 * @return
+	 */
+	public NcProgram getLastNcProgram(String name) {
+		return this.getBaseMapper().getLastNcProgram(name);
+	}
+
+	/**
 	 * 涓婁紶绋嬪簭鏂囦欢鍒版寚瀹氳妭鐐�
 	 * @param file
 	 * @param nodeId
diff --git a/doc/sql/mdm/mdm.mysql.all.create.sql b/doc/sql/mdm/mdm.mysql.all.create.sql
index 7dd2e2b..f5fb596 100644
--- a/doc/sql/mdm/mdm.mysql.all.create.sql
+++ b/doc/sql/mdm/mdm.mysql.all.create.sql
@@ -76,8 +76,7 @@
    `create_user` bigint DEFAULT NULL COMMENT '鍒涘缓浜�',
    `update_time` datetime DEFAULT NULL COMMENT '鏇存柊鏃堕棿',
    `update_user` bigint DEFAULT NULL COMMENT '鏇存柊浜�',
-   PRIMARY KEY (`id`) USING BTREE,
-   UNIQUE KEY `uniqueNameIndex` (`parent_id`,`name`,`is_deleted`) USING BTREE
+   PRIMARY KEY (`id`) USING BTREE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='绋嬪簭鑺傜偣鐩綍';
 
 DROP TABLE IF EXISTS `mdm_nc_program`;
@@ -114,7 +113,7 @@
   `tenant_id` varchar(6) DEFAULT NULL COMMENT '鎵�灞炵鎴�',
   `name` varchar(100) NOT NULL COMMENT '绋嬪簭鍚嶇О',
   `status` int DEFAULT NULL COMMENT '涓氬姟鐘舵��',
-  `exchange_type` int DEFAULT NULL COMMENT '浜ゆ崲绫诲瀷,1:涓嬪彂;2:鍥哄寲',
+  `exchange_type` int DEFAULT NULL COMMENT '浜ゆ崲绫诲瀷,1:涓嬪彂;2:鍥哄寲(dnc鍥炰紶)',
   `create_dept` bigint DEFAULT NULL COMMENT '鍒涘缓鍗曚綅',
   `is_deleted` int DEFAULT NULL,
   `create_time` datetime DEFAULT NULL COMMENT '鍒涘缓鏃堕棿',
@@ -122,7 +121,7 @@
   `update_time` datetime DEFAULT NULL COMMENT '鏇存柊鏃堕棿',
   `update_user` bigint DEFAULT NULL COMMENT '鏇存柊浜�',
   PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='鏁版帶绋嬪簭涓嬪彂璁板綍';
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='鏁版帶绋嬪簭浜ゆ崲璁板綍';
 
 
 

--
Gitblit v1.9.3