From a117bd6e8ca607537e4f1889b474bcb0e24ba32b Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期四, 21 八月 2025 15:10:21 +0800
Subject: [PATCH] 导出程序包内文件夹增加工序版次

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/MdmRoleMapper.java       |    8 +
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java              |   20 --
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java                               |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowFileController.java                     |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/ParamService.java                           |   25 ++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java                       |    9 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java         |    8 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.java               |    9 +
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/MdmRoleService.java     |   30 +++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/MdmUserMapper.java       |    3 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/DNCSendBackService.java                     |   53 +++++++-
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/MdmRole.java             |   38 ++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/MdmUserMapper.xml        |   15 ++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java                          |    5 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java                       |    2 
 blade-service/blade-mdm/src/main/resources/logback.xml                                                                |    7 +
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.xml                |    4 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/service/NcProgramExportInnerService.java        |    4 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/MdmUser.java             |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java                          |   13 +
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/MdmRoleMapper.xml        |    6 +
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/MdmUserService.java     |   38 ++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/controller/MachineBackFileHandleController.java |    7 +
 23 files changed, 260 insertions(+), 50 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/MdmRole.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/MdmRole.java
new file mode 100644
index 0000000..51fbf4a
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/MdmRole.java
@@ -0,0 +1,38 @@
+package org.springblade.mdm.basesetting.producedivision.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springblade.core.tenant.mp.TenantEntity;
+
+import java.io.Serializable;
+
+@Data
+@TableName("blade_role")
+public class MdmRole  implements Serializable {
+	@TableId(value = "id", type = IdType.ASSIGN_ID)
+	private Long id;
+	@Schema(description = "绉熸埛ID")
+	private String tenantId;
+	/**
+	 * 鐢ㄦ埛缂栧彿
+	 */
+	private String roleAlias;
+	/**
+	 * 璐﹀彿
+	 */
+	private String roleName;
+	@Schema(description = "涓氬姟鐘舵��")
+	private Integer status;
+
+	/**
+	 * 鏄惁宸插垹闄�
+	 */
+	@TableLogic
+	@Schema(description = "鏄惁宸插垹闄�")
+	private Integer isDeleted;
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/MdmUser.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/MdmUser.java
index d8a29d3..4a6a382 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/MdmUser.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/entity/MdmUser.java
@@ -26,4 +26,6 @@
 	 * 閫楀彿鍒嗛殧鐨勬暟鎹�
 	 */
 	private String roleId;
+
+	private transient boolean manager = false;
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/MdmRoleMapper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/MdmRoleMapper.java
new file mode 100644
index 0000000..526b1eb
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/MdmRoleMapper.java
@@ -0,0 +1,8 @@
+package org.springblade.mdm.basesetting.producedivision.mapper;
+
+import org.springblade.core.mp.mapper.BladeMapper;
+import org.springblade.mdm.basesetting.producedivision.entity.MdmRole;
+
+public interface MdmRoleMapper extends BladeMapper<MdmRole> {
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/MdmRoleMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/MdmRoleMapper.xml
new file mode 100644
index 0000000..81e4e8a
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/MdmRoleMapper.xml
@@ -0,0 +1,6 @@
+<?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.basesetting.producedivision.mapper.MdmRoleMapper">
+
+
+</mapper>
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/MdmUserMapper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/MdmUserMapper.java
index d0297bf..cf0f4b7 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/MdmUserMapper.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/MdmUserMapper.java
@@ -3,6 +3,9 @@
 import org.springblade.core.mp.mapper.BladeMapper;
 import org.springblade.mdm.basesetting.producedivision.entity.MdmUser;
 
+import java.util.List;
+
 public interface MdmUserMapper extends BladeMapper<MdmUser> {
 
+	List<MdmUser> selectByRoleIds(List<String> idList);
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/MdmUserMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/MdmUserMapper.xml
index 77acff8..6afbbd4 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/MdmUserMapper.xml
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/mapper/MdmUserMapper.xml
@@ -3,4 +3,19 @@
 <mapper namespace="org.springblade.mdm.basesetting.producedivision.mapper.MdmUserMapper">
 
 
+    <select id="selectByRoleIds" resultType="org.springblade.mdm.basesetting.producedivision.entity.MdmUser">
+        SELECT id,account,name,real_name,role_id,dept_id FROM blade_user
+        <where>
+            <if test="idList != null and idList.size() > 0">
+
+                <foreach collection="idList" item="item" separator=" OR ">
+                    role_id like ${item}
+                </foreach>
+            </if>
+            <!-- 濡傛灉鍒楄〃涓虹┖锛屽彲浠ュ姞涓�涓案鍋囨潯浠堕伩鍏嶅叏琛ㄦ壂鎻忥紝渚嬪锛�-->
+            <if test="idList == null or idList.size() == 0">
+                AND 1 = 0
+            </if>
+        </where>
+    </select>
 </mapper>
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/MdmRoleService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/MdmRoleService.java
new file mode 100644
index 0000000..168f14c
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/MdmRoleService.java
@@ -0,0 +1,30 @@
+package org.springblade.mdm.basesetting.producedivision.service;
+
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.mdm.basesetting.producedivision.entity.MdmRole;
+import org.springblade.mdm.basesetting.producedivision.mapper.MdmRoleMapper;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class MdmRoleService extends ServiceImpl<MdmRoleMapper, MdmRole> {
+
+	/**
+	 * 鏍规嵁鍒悕鍒楄〃鏌ヨ瑙掕壊鍒楄〃
+	 * @param roleAliasList 鍒悕鍒楄〃
+	 * @return 鍒悕瀵瑰簲鐨勮鑹插垪琛�
+	 */
+	public List<MdmRole> listRoleAlias(List<String> roleAliasList) {
+
+		LambdaQueryChainWrapper<MdmRole> query = this.lambdaQuery();
+		query.eq(MdmRole::getIsDeleted,0).eq(MdmRole::getStatus,1);
+		query.in(MdmRole::getRoleAlias,roleAliasList);
+		/*for(String roleAlias : roleAliasList) {
+			query.like(MdmRole::getRoleAlias, roleAlias);
+		}*/
+
+		return query.list();
+	}
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/MdmUserService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/MdmUserService.java
index 3ec3f9a..067bec7 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/MdmUserService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/basesetting/producedivision/service/MdmUserService.java
@@ -1,15 +1,25 @@
 package org.springblade.mdm.basesetting.producedivision.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.mdm.basesetting.producedivision.entity.MdmRole;
 import org.springblade.mdm.basesetting.producedivision.entity.MdmUser;
 import org.springblade.mdm.basesetting.producedivision.mapper.MdmUserMapper;
+import org.springblade.mdm.commons.service.ParamService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.function.Consumer;
 
 @Service
 public class MdmUserService extends ServiceImpl<MdmUserMapper, MdmUser> {
-
+	@Autowired
+	private ParamService paramService;
+	@Autowired
+	private MdmRoleService roleService;
 	public Long getUserIdByName(String name) {
 		List<MdmUser> users = this.lambdaQuery().eq(MdmUser::getName, name).eq(MdmUser::getStatus, 1).orderByDesc(MdmUser::getCreateTime).list();
 		Long userId = null;
@@ -19,4 +29,30 @@
 
 		return userId;
 	}
+
+	public List<MdmUser> listByDeptAndRoleAlias() {
+		List<String> approveRoleAliasList = Func.split(paramService.getApproveRoleAlias(),',');
+		List<MdmUser> approveUserList = userListByRoleAlias(approveRoleAliasList);
+
+		//鏌ヨ绋嬪簭绠$悊鍛樼敤鎴峰垪琛�
+		List<String> managerAliasList = Func.split(paramService.getProgramManagerRoleAlias(),',');
+		List<MdmUser> mgrUserList = userListByRoleAlias(managerAliasList);
+
+		for(MdmUser approveUser : approveUserList) {
+			for(MdmUser manager : mgrUserList) {
+				if(approveUser.getId().equals(manager.getId())) {
+					approveUser.setManager(true);
+					break;
+				}
+			}
+		}
+		return approveUserList;
+	}
+
+	private List<MdmUser> userListByRoleAlias(List<String> approveRoleAliasList) {
+		List<MdmRole> approveRoles = roleService.listRoleAlias(approveRoleAliasList);
+		List<MdmUser> userList= this.getBaseMapper().selectByRoleIds(approveRoles.stream().map(MdmRole::getId).map(rid -> rid+"").toList());
+		return userList;
+
+	}
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/ParamService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/ParamService.java
index bcdb22d..69c4d9a 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/ParamService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/commons/service/ParamService.java
@@ -26,6 +26,15 @@
 @AllArgsConstructor
 public class ParamService{
 	public static String NETWORK_TYPE= "networkType";
+
+	/**
+	 * 瀹℃壒鐢ㄦ埛瑙掕壊鍒悕鍙傛暟key锛岄�楀彿鍒嗛殧
+	 */
+	public static String APPROVE_ROLE_ALAS= "approveRoleAlas";
+	/**
+	 * 鏁版帶绋嬪簭绠$悊鍛樿鑹插埆鍚嶅弬鏁発ey
+	 */
+	public static String PROGRAM_MANAGER_ROLE_ALAS= "programManagerRoleAlas";
 	/**
 	 * 榛樿娑夊瘑缃�
 	 */
@@ -40,4 +49,20 @@
 		return defaultValue;
 	}
 
+	/**
+	 * 鑾峰彇瀹℃壒鐢ㄦ埛瑙掕壊鍙傛暟
+	 * @return 瀹℃壒鐢ㄦ埛瑙掕壊鍙傛暟
+	 */
+	public String getApproveRoleAlias(){
+		return getParamValue(APPROVE_ROLE_ALAS,"-1");
+	}
+
+	/**
+	 * 鑾峰彇鏁版帶绋嬪簭绠$悊鍛樿鑹插埆鍚嶅弬鏁伴厤缃�
+	 * @return 鏁版帶绋嬪簭绠$悊鍛樿鑹插埆鍚�
+	 */
+	public String getProgramManagerRoleAlias(){
+		return getParamValue(PROGRAM_MANAGER_ROLE_ALAS,"-1");
+	}
+
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowFileController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowFileController.java
index afca5c4..fc532c3 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowFileController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowFileController.java
@@ -40,7 +40,7 @@
 	private final FlowProgramFileService flowProgramFileService;
 
 	@GetMapping("/compare-with-try")
-	@Operation(summary = "瀵规瘮褰撳墠鏂囦欢涓庝箣鍓嶈瘯鍒囩増鏈殑鍐呭", description = "鏌ヨ瀵规瘮鍐呭鐨�2涓枃鏈暟鎹�")
+	@Operation(summary = "瀵规瘮褰撳墠鏂囦欢涓庝箣鍓嶈瘯鍒囩増鏈殑鍐呭", description = "鏌ヨ瀵规瘮鐨�2涓枃鏈唴瀹�")
 	public R<CompareDataVO> compareWithTry(@Parameter(description="鏂囦欢id)")Long fileId) {
 		CompareDataVO vo = new CompareDataVO();
 		FlowProgramFile flowFile = flowProgramFileService.getById(fileId);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java
index d1c55b5..5c85937 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/MyFlowController.java
@@ -12,6 +12,8 @@
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
+import org.springblade.mdm.basesetting.producedivision.entity.MdmUser;
+import org.springblade.mdm.basesetting.producedivision.service.MdmUserService;
 import org.springblade.mdm.flow.service.FlowBusinessService;
 import org.springblade.mdm.flow.service.FlowCommonService;
 import org.springblade.mdm.flow.service.FlowTransferService;
@@ -34,7 +36,7 @@
 	@Autowired
 	private TaskService taskService;
 	@Autowired
-	private HistoryService historyService;
+	private MdmUserService mdmUserService;
 	@Autowired
 	private FlowBusinessService businessService;
 	@Autowired
@@ -96,10 +98,9 @@
 	@GetMapping("flow-user-list")
 	@ApiOperationSupport(order = 3)
 	@Operation(summary = "鐢ㄦ埛涓嬫媺鏁版嵁", description = "鐢ㄦ埛涓嬫媺鏁版嵁")
-	public R<List<User>> flowUserList(@Parameter(description = "閮ㄩ棬ID") String deptId,String taskId) {
-		//userSearchClient.listByRole()
-		return userSearchClient.listByDept(deptId);
+	public R<List<MdmUser>> flowUserList(@Parameter(description = "閮ㄩ棬ID") String deptId, String taskId) {
 
+		return R.data(mdmUserService.listByDeptAndRoleAlias());
 	}
 
 	/**
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java
index b183be4..ae57c4f 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/StartDispatcher.java
@@ -50,6 +50,9 @@
 	 */
 	@Transactional
 	public String start(TaskAssignVO startVO){
+		if(!FlowContants.Y.equals(startVO.getIsTempFlow())){
+			startVO.setIsTempFlow(FlowContants.N);
+		}
 		Map<String, Object> vars = new HashMap<>();
 
 		ProduceDivision div = flowCommonService.putDefaultAssignees(vars,startVO.getDrawingNo(),null);
@@ -83,7 +86,7 @@
 
 		vars.put(FlowContants.IS_TEMP_FLOW,FlowContants.Y.equals(startVO.getIsTempFlow())?FlowContants.Y:FlowContants.N);
 		NcNode curedProgramPackage = null;
-		if(FlowContants.N.equals(startVO.getIsTempFlow())) {
+		if(!FlowContants.Y.equals(startVO.getIsTempFlow())) {
 			curedProgramPackage = ncNodeService.getCuredProgramPackage(programPkgName, startVO.getMachineCode());
 			//璁剧疆鏄惁鏈夊浐鍖栫▼搴忔爣璁�
 			vars.put(FlowContants.HAS_CURED_PROGRAM, curedProgramPackage != null ? FlowContants.Y : FlowContants.N);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
index 9f14712..2dbcd42 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/dispatch/NormalFinishDataHandler.java
@@ -46,17 +46,19 @@
 
 		String programPkgName = NcNodeService.genProgramName(props.getDrawingNo(),props.getProcessNo());
 		createProgramNodes(props);
+
+		String processEdition = props.getProcessEdition();
 		//TODO 鍋忕鍗曪紝鍜屽凡缁忓浐鍖栫殑绋嬪簭锛屾病鏈夊鐞�,:宸茬粡澶勭悊娌℃湁楠岃瘉
 		NcNode packageNode;
 		if(FlowContants.Y.equals(props.getHasCuredProgram()) && FlowContants.Y.equals(props.getCureProgramUseable())){
 			//鏈夊浐鍖栵紝涓旂▼搴忓彲鐢紝浠庡浐鍖栨爲鏌ヨ鑺傜偣
-			packageNode = ncNodeService.getLastEditionCuredProgramPackage(programPkgName);
+			packageNode = ncNodeService.getLastEditionCuredProgramPackage(programPkgName,props.getProcessEdition());
 		}else if(Func.isNotBlank(props.getDeviation())){
 			//鏈夊亸绂诲崟
-			packageNode = ncNodeService.getLastEditionDeviationProgramPackage(programPkgName);
+			packageNode = ncNodeService.getLastEditionDeviationProgramPackage(programPkgName,props.getProcessEdition());
 		}else{
 			//鏅�氳瘯鍒囷紝鎴栬�呮湁鍥哄寲涓嶅彲鐢�
-			packageNode = ncNodeService.getLastEditionTryingProgramPackage(programPkgName);
+			packageNode = ncNodeService.getLastEditionTryingProgramPackage(programPkgName,props.getProcessEdition());
 		}
 
 		addApproveTable(packageNode,props);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.java
index 002f6fd..5c71a76 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.java
@@ -16,10 +16,17 @@
 
 	/**
 	 * 鏈哄簥鍥炰紶鏂囦欢鏌ヨ
-	 * @param query
+	 * @param page 鍒嗛〉鍙傛暟
+	 * @param queryVO 鏌ヨ瀵硅薄
 	 * @return
 	 */
     IPage<MachineBackFileVO> machineBackFilePageQuery(IPage<MachineBackFileVO> page, @Param("query")MachineBackFileQueryVO queryVO);
 
+	/**
+	 * 鏈哄簥鍥炰紶鏂囦欢澶勭悊鍒嗛〉鏌ヨ
+	 * @param page
+	 * @param query
+	 * @return
+	 */
 	IPage<MachineBackFileVO> handlePageQuery(@Param("page")IPage<MachineBackFileVO> page,@Param("query") MachineBackFileHandleQueryVO query);
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.xml
index 2a8fe72..bada9ec 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.xml
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/mapper/MachineFileMapper.xml
@@ -14,7 +14,7 @@
         select f.id,f.name,f.machine_code,f.file_create_time arrived_time,f.md5,f.file_size
         from mdm_machine_file f join mdm_machine m on f.machine_code=m.code and m.is_deleted=0
         <where>
-            f.dir_type='REC' and f.status=1 and f.is_deleted=0
+            f.dir_type='TEMP' and f.status=1 and f.is_deleted=0
 
             <if test="query.machineSpec!=null and query.machineSpec!=''">
                 and m.machine_spec=#{query.machineSpec,jdbcType=VARCHAR}
@@ -31,7 +31,7 @@
         select f.id,f.name,f.machine_code,f.file_create_time arrived_time,f.md5,f.file_size,f.determine_time
         from mdm_machine_file f join mdm_machine m on f.machine_code=m.code and m.is_deleted=0
         <where>
-            f.dir_type='REC' and f.status=2 and f.is_deleted=0
+            f.dir_type='TEMP' and f.status=2 and f.is_deleted=0
 
             <if test="query.confirmTimeBegin!=null">
                 and f.determine_time&gt;=#{query.confirmTimeBegin}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java
index ebe888b..1015e6a 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/vo/ProgramNameVO.java
@@ -30,6 +30,6 @@
 	private int segmentNo;
 
 	public String logicProgramName(){
-		return this.drawingNo+"-"+this.processNo;
+		return this.drawingNo+"-"+this.processNo+"-"+processEdition;
 	}
 }
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 4007c82..c6f6989 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
@@ -10,10 +10,12 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.UrlUtil;
 import org.springblade.mdm.basesetting.machine.vo.MachineExcelVO;
 import org.springblade.mdm.basesetting.machine.vo.MachineQueryVO;
 import org.springblade.mdm.basesetting.machine.vo.MachineVO;
@@ -62,7 +64,10 @@
 			throw new ServiceException("鏈�夋嫨鏂囦欢瀵煎嚭");
 		}
 		try {
-			String filename = "toinnerexp-"+ DateUtil.format(DateUtil.now(), "yyyyMMddHHmm")+".zip";
+			String prefix = UrlUtil.encode(AuthUtil.getNickName()+"-宸ユ帶缃戝鍑�");
+			//String filename =AuthUtil.getNickName()+"-"+ DateUtil.format(DateUtil.now(), "yyyyMMddHHmm")+".zip";
+			String filename = prefix+"-"+ DateUtil.format(DateUtil.now(), "yyyyMMddHHmm")+".zip";
+
 			response.setHeader("Content-Disposition", "attachment; filename="+filename);
 			response.setContentType("application/octet-stream");
 			ncProgramExportInnerService.exportToInner(Func.toLongList(ids),response.getOutputStream());
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/service/NcProgramExportInnerService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/service/NcProgramExportInnerService.java
index a3d3d32..91036cd 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/service/NcProgramExportInnerService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/machineback/service/NcProgramExportInnerService.java
@@ -72,8 +72,8 @@
 		//FileOutputStream fos = new FileOutputStream("d:/exportDnc.zip");
 		try (ZipOutputStream zipOut = new ZipOutputStream(os);) {//os
 
-			List<MachineFile>  macineFiles = machineFileService.lambdaQuery().in(MachineFile::getId,machineFileIds).list();
-			Map<String,List<MachineFile>> map =  macineFiles.stream()
+			List<MachineFile>  machineFiles = machineFileService.lambdaQuery().in(MachineFile::getId,machineFileIds).list();
+			Map<String,List<MachineFile>> map =  machineFiles.stream()
 				.collect(Collectors.groupingBy(s -> ProgramFileNameParser.parseProgramName(s.getName()).logicProgramName()));
 
 			for (Map.Entry<String, List<MachineFile>> entry : map.entrySet()) {
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 befdbe1..72b56cd 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
@@ -1,13 +1,11 @@
 
 package org.springblade.mdm.program.service;
 
-import com.alibaba.fastjson.JSONObject;
-import io.netty.util.internal.StringUtil;
 import lombok.AllArgsConstructor;
+import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 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;
@@ -26,9 +24,7 @@
 import org.springblade.mdm.program.mapper.NcProgramExchangeMapper;
 import org.springblade.mdm.program.vo.DncSendBackData;
 import org.springblade.mdm.program.vo.DncSendBackFile;
-import org.springblade.mdm.utils.EntityUtil;
 import org.springblade.mdm.utils.FileContentUtil;
-import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -104,7 +100,7 @@
 		Path tempZipFile = createTempFile(inputStream);
 
 		List<String> fileEntryNameList = new ArrayList<>();
-		List<String> dirEntryNameList = new ArrayList<>();
+		List<String> dirEntryNameList = new ArrayList<>();//绋嬪簭鍖呭悕+宸ュ簭鐗堟 浣滀负鏂囦欢澶瑰悕
 		try (ZipFile zipFile = new ZipFile(tempZipFile.toFile())) {
 
 			Enumeration<? extends ZipEntry> zipEntries = zipFile.entries();
@@ -124,10 +120,18 @@
 			//鐩綍鍒楄〃锛屽嵆绋嬪簭鍖呭垪琛�
 			for(String entryName : dirEntryNameList){
 				DncSendBackData progData = new DncSendBackData();
-				String packageName = StringUtils.removeEnd(entryName,"/");
+				String folderName = StringUtils.removeEnd(entryName,"/");
+
+				PackageAndProcessEdition pkgAndEdition = parseProgramPackageFromFolderName(folderName);
+				String packageName = pkgAndEdition.getProgramPackageName();
+				String processEdition = pkgAndEdition.getProcessEdition();
+				if(StringUtils.isBlank(packageName) || StringUtils.isBlank(processEdition)){
+					throw new ServiceException("鍖呭唴鏂囦欢澶瑰悕鏍煎紡閿欒搴旇涓篬闆剁粍浠跺彿-宸ュ簭鍙�-宸ュ簭鐗堟]:"+folderName);
+				}
+
 				progData.setProgramName(packageName);
 				String statusLine = "";
-				Optional<String> optFilename = fileEntryNameList.stream().filter(n -> n.startsWith(packageName)).findFirst();
+				Optional<String> optFilename = fileEntryNameList.stream().filter(n -> n.startsWith(entryName)).findFirst();
 				if(optFilename.isPresent()){
 					entry = zipFile.getEntry(optFilename.get());
 					InputStream ins = zipFile.getInputStream(entry);
@@ -135,13 +139,13 @@
 					statusLine = FileContentUtil.readLineAt(ins,2);
 					if(statusLine.contains("SQ")){
 						//璇曞垏
-						programPackageNode = ncNodeService.getLastEditionTryingProgramPackage(packageName);
+						programPackageNode = ncNodeService.getLastEditionTryingProgramPackage(packageName,processEdition);
 					}else if(statusLine.contains("GH")){
 						//鍥哄寲
-						programPackageNode = ncNodeService.getLastEditionCuredProgramPackage(packageName);
+						programPackageNode = ncNodeService.getLastEditionCuredProgramPackage(packageName,processEdition);
 					}else if(statusLine.contains("PL")){
 						//鍋忕
-						programPackageNode =ncNodeService.getLastEditionDeviationProgramPackage(packageName);
+						programPackageNode =ncNodeService.getLastEditionDeviationProgramPackage(packageName,processEdition);
 					}else{
 						throw new ServiceException("鏈壘鍒扮▼搴忔枃浠朵腑鐨勭姸鎬佹敞閲�");
 					}
@@ -173,6 +177,26 @@
 		return list;
 	}
 
+	/**
+	 * 浠庢枃浠跺す鍚嶈В鏋愬嚭绋嬪簭鍖呭悕鍜屽拰宸ュ簭鐗堟
+	 * @param folderName 鏂囦欢澶瑰悕
+	 * @return 缁撴瀯鏁版嵁
+	 */
+	PackageAndProcessEdition parseProgramPackageFromFolderName(String folderName){
+		int index = StringUtils.lastIndexOf(folderName,'-');
+		String processEditon = "";
+		String temp;
+		String packageName = "";
+		if(index != -1){
+			processEditon = folderName.substring(index+1);
+			packageName = folderName.substring(0,index);
+		}
+
+		PackageAndProcessEdition result = new PackageAndProcessEdition();;
+		result.setProgramPackageName(packageName);
+		result.setProcessEdition(processEditon);
+		return result;
+	}
 
 	/**
 	 * 鍏ュ簱鍥炰紶鏂囦欢,骞跺惎鍔ㄥ浐鍖栨祦绋�
@@ -464,3 +488,10 @@
 	}
 
 }
+
+@Data
+class PackageAndProcessEdition{
+	private String programPackageName;
+	private String processEdition;
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
index 21fc1f7..fbfc9d6 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
@@ -189,13 +189,13 @@
 	 * @param name 鑺傜偣鍚嶇О
 	 * @return 鏈�鏂扮増鏈▼搴忔姤鍚嶈妭鐐�
 	 */
-	public NcNode getLastEditionTryingProgramPackage(String name){
+	public NcNode getLastEditionTryingProgramPackage(String name,String processEdition){
 		//.or(NcNode::getIsCured,0)
 		List<NcNode> pkgList = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE)
 			.eq(NcNode::getName, name).and(i->{
 				i.eq(NcNode::getIsCured, 0).or().isNull(NcNode::getIsCured);
 			}).likeRight(NcNode::getParentIds,"0,1,")
-			.eq(NcNode::getIsLastEdition,1).orderByDesc(NcNode::getCreateTime).list();
+			.eq(NcNode::getIsLastEdition,1).eq(NcNode::getProcessEdition,processEdition).orderByDesc(NcNode::getCreateTime).list();
 
 		if(pkgList.isEmpty()){
 			return null;
@@ -245,9 +245,10 @@
 	 * @param programPkgName
 	 * @return
 	 */
-	public NcNode getLastEditionCuredProgramPackage(String programPkgName) {
+	public NcNode getLastEditionCuredProgramPackage(String programPkgName,String processEdition) {
 		List<NcNode> nodes = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE)
 			.eq(NcNode::getName, programPkgName).likeRight(NcNode::getParentIds,"0,2,").eq(NcNode::getIsCured,1)
+			.eq(NcNode::getProcessEdition, processEdition)
 			.eq(NcNode::getIsLastEdition,1).list();
 
 		if(nodes.isEmpty()){
@@ -284,9 +285,11 @@
 	 * @param programPkgName 绋嬪簭鍖呭悕
 	 * @return 鍋忕鐨勭▼搴忚妭鐐�
 	 */
-	public NcNode getLastEditionDeviationProgramPackage(String programPkgName) {
+	public NcNode getLastEditionDeviationProgramPackage(String programPkgName,String processEdition) {
 		List<NcNode> nodes = lambdaQuery().eq(NcNode::getNodeType,NcNode.TYPE_PROGRAM_PACKAGE)
-			.eq(NcNode::getName, programPkgName).likeRight(NcNode::getParentIds,"0,3,")
+			.eq(NcNode::getName, programPkgName)
+			.eq(NcNode::getProcessEdition, processEdition)
+			.likeRight(NcNode::getParentIds,"0,3,")
 			.eq(NcNode::getIsLastEdition,1).list();
 
 		if(nodes.isEmpty()){
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 9fe865e..01a348b 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
@@ -2,14 +2,10 @@
 package org.springblade.mdm.program.service;
 
 import com.alibaba.csp.sentinel.util.StringUtil;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.jetbrains.annotations.NotNull;
 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.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
@@ -18,7 +14,6 @@
 import org.springblade.core.tool.utils.Func;
 import org.springblade.mdm.basesetting.machine.MachineService;
 import org.springblade.mdm.basesetting.machine.entity.Machine;
-import org.springblade.mdm.flow.entity.ApproveRecord;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
 import org.springblade.mdm.flow.service.ApproveRecordService;
 import org.springblade.mdm.flow.service.FlowProgramFileService;
@@ -27,13 +22,10 @@
 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.utils.FileContentUtil;
 import org.springblade.system.feign.IDictClient;
-import org.springblade.system.pojo.entity.Dict;
 import org.springframework.stereotype.Service;
 
 import java.io.*;
-import java.nio.charset.StandardCharsets;
 import java.util.*;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
@@ -52,14 +44,10 @@
 	private final IDictClient dictClient;
 	private final MachineService machineService;
 	private final NcProgramApprovedService approvedService;
-	private final ApproveRecordService approveRecordService;
 	private final NcNodeService ncNodeService;
 	private final OssTemplate ossTemplate;
 	private final FlowProgramFileService flowProgramFileService;
 	private final ProgramAnnotationService programAnnotationService;
-	//public static final String PROGRAM_JSON_FILE = "exp_mdm_nc_program.json";
-	//public static final String NODE_JSON_FILE = "exp_mdm_nc_node.json";
-	//public static final String APPROVE_RECORD_JSON_FILE = "exp_mdm_approve_record.json";
 
 	public static final String ANNOTATION_DICT = "machine_annotation";
 
@@ -100,12 +88,14 @@
 	 * @param approved
 	 */
 	private void addProgramPackageToZip(ZipOutputStream zipOut, NcProgramApproved approved) throws IOException{
-		String packageFolder = approved.getProgramName()+"/";
+		NcNode packageNode = ncNodeService.getById(approved.getNcNodeId());
+
+		String packageFolder = packageNode.getName()+"-"+packageNode.getProcessEdition()+"/";
 		ZipEntry zipEntry = new ZipEntry(packageFolder);// "/"缁撳熬琛ㄧず鏂囦欢澶�
 		zipOut.putNextEntry(zipEntry);
 		zipOut.closeEntry();
 
-		NcNode packageNode = ncNodeService.getById(approved.getNcNodeId());
+
 		Machine machine = machineService.getByCode(packageNode.getMachineCode());//绋嬪簭鍖呰妭鐐癸紝鑾峰彇娉ㄩ噴鐢�
 
 		List<NcNode> programNodes = ncNodeService.lambdaQuery().eq(NcNode::getIsLastEdition,1).eq(NcNode::getParentId, approved.getNcNodeId()).list();
@@ -124,8 +114,6 @@
 			programFile = this.flowProgramFileService.getById(node.getFlowProgramFileId());
 			if(programFile.isProgram()) {//绋嬪簭鏂囦欢锛屾墠浼氬姞鍏ュ帇缂╁寘
 				InputStream inputStream = ossTemplate.statFileStream(programFile.getOssName());
-				//InputStream addedIns1 = addSendDirAnnotation(inputStream, machine, annotationList);
-				//InputStream addedIns2 = addProgramStatusAnnotation(addedIns1, status, machine, annotationList);
 				String sendDir = machine.getProgSendDir()==null? StringUtil.EMPTY:machine.getProgSendDir();
 				InputStream addedIns2 = programAnnotationService.setSendDirAndStatusAnnotation(sendDir,status,inputStream,machine.getMachineGroupCode());
 				this.addInputStreamToZip(zipOut, addedIns2, filePathInZip);
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java
index 909d7a8..572b22c 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/task/MachineFileScanTask.java
@@ -165,7 +165,7 @@
 			if(existFileInDb == null) {
 				machineFileService.save(mf);
 			}else{
-				log.info("鏂囦欢宸插鏋滄帬杩�:{}",filePath.getFileName());
+				log.info("鏂囦欢宸插瓨鍦ㄦ帬杩�:{}",filePath.getFileName());
 				//宸插瓨鍦ㄥ拫鏁淬��
 				existFileInDb.setFileSize(mf.getFileSize());
 
diff --git a/blade-service/blade-mdm/src/main/resources/logback.xml b/blade-service/blade-mdm/src/main/resources/logback.xml
index db5e1d3..9d5749c 100644
--- a/blade-service/blade-mdm/src/main/resources/logback.xml
+++ b/blade-service/blade-mdm/src/main/resources/logback.xml
@@ -56,4 +56,11 @@
         <appender-ref ref="MDM_FILE" />
         <appender-ref ref="CONSOLE" />
     </logger>
+    <!-- 閰嶇疆 MyBatis Mapper 鍖呮棩蹇� -->
+    <logger name="com.yourcompany.yourproject.mapper" level="DEBUG" additivity="false">
+        <appender-ref ref="FILE"/> <!-- MyBatis 鏃ュ織杈撳嚭鍒版枃浠� -->
+        <appender-ref ref="MDM_FILE"/>
+        <!-- 濡傛灉涔熷笇鏈涘湪鎺у埗鍙扮湅鍒帮紝鍙互鍔犱笂 <appender-ref ref="CONSOLE"/> -->
+        <appender-ref ref="CONSOLE" />
+    </logger>
 </configuration>

--
Gitblit v1.9.3