From 5db0642d9f3a75e21be27529cee060fa3bb91f48 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期一, 30 六月 2025 23:25:43 +0800
Subject: [PATCH] 流程与程序关联表插入数据

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramExportDncPageVO.java             |   17 ++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml           |   29 +++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramMapper.xml                   |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramApprovedService.java        |   41 ++++++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.java          |   13 +++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProcessProgRefService.java           |    2 
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramExportDncQueryVO.java            |   24 ++++++
 blade-service/blade-mdm/src/main/resources/processesbpmn/dispatch.bpmn20.xml                                   |    6 +
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcProgramApproved.java                |   22 +++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/DispatchFinishListener.java            |   48 ++++++++++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcProgramExportDNCController.java |   17 ++++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/ProcessProgRef.java                   |    2 
 12 files changed, 218 insertions(+), 5 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/DispatchFinishListener.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/DispatchFinishListener.java
new file mode 100644
index 0000000..0942561
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/DispatchFinishListener.java
@@ -0,0 +1,48 @@
+package org.springblade.mdm.flow.excution;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.RuntimeService;
+import org.flowable.engine.delegate.DelegateExecution;
+import org.flowable.engine.history.HistoricProcessInstance;
+import org.springblade.mdm.program.entity.NcProgramApproved;
+import org.springblade.mdm.program.entity.ProcessProgRef;
+import org.springblade.mdm.program.service.NcProgramApprovedService;
+import org.springblade.mdm.program.service.ProcessProgRefService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 娲惧伐瀹℃壒瀹屾垚鎵ц鐨勪簨浠讹紝鍔熻兘锛氭彃鍏ュ鎵硅〃鏁版嵁
+ */
+@Slf4j
+@Component("dispatchFinishListener")
+public class DispatchFinishListener {
+	@Autowired
+	RuntimeService runtimeService;
+	@Autowired
+	ProcessProgRefService processProgRefService;
+	@Autowired
+	NcProgramApprovedService approvedService;
+	public void handle(DelegateExecution execution) {
+		String instId = execution.getProcessInstanceId();
+		log.info("{}锛宨nstid={}" , runtimeService,instId);
+		//灏嗗叧鑱旇〃涓殑鏁版嵁鎻掑叆瀹℃壒琛�
+		LambdaQueryWrapper<ProcessProgRef> wrapper = new LambdaQueryWrapper<>();
+		wrapper.eq(ProcessProgRef::getProcessInstanceId, instId);
+		List<ProcessProgRef> reflist = processProgRefService.list(wrapper);
+		for (ProcessProgRef ref : reflist) {
+			NcProgramApproved approved = new NcProgramApproved();
+			approved.setNcProgramId(ref.getNcProgramId());
+
+			approvedService.save(approved);
+		}
+
+		// 鎵ц涓氬姟閫昏緫
+		System.out.println("娴佺▼宸插畬鎴�");
+	}
+}
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 f16180d..db7406c 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
@@ -1,13 +1,21 @@
 
 package org.springblade.mdm.program.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.mdm.program.service.NcProgramApprovedService;
 import org.springblade.mdm.program.service.NcProgramService;
+import org.springblade.mdm.program.vo.NcNodeProgramQueryVO;
+import org.springblade.mdm.program.vo.NcProgramExportDncPageVO;
+import org.springblade.mdm.program.vo.NcProgramExportDncQueryVO;
+import org.springblade.mdm.program.vo.NcProgramVO;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -21,11 +29,18 @@
 @RestController
 @RequestMapping("/program/exchange")
 @AllArgsConstructor
-@Tag(name = "瀵煎嚭DNC", description = "娑夊瘑缃戞矇鐥煎鍑篋NC")
+@Tag(name = "瀵煎嚭DNC", description = "娑夊瘑缃戠▼搴忓鍑篋NC")
 @Slf4j
 public class NcProgramExportDNCController {
 
 	private final NcProgramService ncProgramService;
+	private final NcProgramApprovedService ncProgramApprovedService;
+	@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));
+	}
 
 	@PostMapping("/export-dnc")
 	@Operation(summary = "鏁版帶绋嬪簭瀵煎嚭dnc", description = "鏁版帶绋嬪簭瀵煎嚭鍒板伐鎺х綉")
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcProgramApproved.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcProgramApproved.java
new file mode 100644
index 0000000..4f4a042
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/NcProgramApproved.java
@@ -0,0 +1,22 @@
+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.LocalDateTime;
+
+/**
+ * 鏁版帶绋嬪簭瀹℃壒琛�
+ */
+@Setter
+@Getter
+@TableName("mdm_nc_program_approved")
+public class NcProgramApproved extends BizEntity {
+	/*
+	 * 鎵�灞炶妭鐐筰d锛屽繀椤绘湭鈥滅▼搴忓寘鍚�"鐨勮妭鐐�
+	 */
+	private long ncProgramId;
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/ProcessProgRef.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/ProcessProgRef.java
index 6423fd8..db55b9c 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/ProcessProgRef.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/entity/ProcessProgRef.java
@@ -18,6 +18,6 @@
 	/**
 	 * 瀵硅薄瀛樺偍涓殑鍚嶇О
 	 */
-	private Long programId;
+	private Long ncProgramId;
 
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.java
new file mode 100644
index 0000000..7cecba4
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.java
@@ -0,0 +1,13 @@
+package org.springblade.mdm.program.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.core.mp.mapper.BladeMapper;
+import org.springblade.mdm.program.entity.NcProgramApproved;
+import org.springblade.mdm.program.vo.*;
+
+public interface NcProgramApprovedMapper extends BladeMapper<NcProgramApproved> {
+
+
+	IPage<NcProgramExportDncPageVO> exportDncPageQuery(@Param("page")IPage<NcProgramExportDncPageVO> page, @Param("query") NcProgramExportDncQueryVO query);
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml
new file mode 100644
index 0000000..18d4c99
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcProgramApprovedMapper.xml
@@ -0,0 +1,29 @@
+<?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.NcProgramApprovedMapper">
+    <resultMap id="BaseResultMap" type="org.springblade.mdm.program.entity.NcProgramApproved">
+        <id column="id" property="id"/>
+
+
+        <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="exportDncPageQuery" resultType="org.springblade.mdm.program.vo.NcProgramExportDncPageVO">
+        select a.id,a.nc_program_id,p.name,p.nc_node_id,a.create_time,p.process_name from mdm_nc_program_approved a inner join mdm_nc_program p on a.nc_program_id=p.id
+        where a.is_deleted=0
+        <where>
+            <if test="query.name!=null and query.name!=''">
+                and p.name like CONCAT('%', #{query.name,jdbcType=VARCHAR},'%')
+            </if>
+
+            <if test="query.passTimeBegin!=null">
+                and a.create_time &gt;= #{query.passTimeBegin}
+            </if>
+            <if test="query.passTimeEnd!=null">
+                and a.create_time &lt;= #{query.passTimeEnd}
+            </if>
+        </where>
+    </select>
+</mapper>
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 59b51b3..c99c185 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
@@ -44,7 +44,7 @@
     </select>
 
     <select id="pageQuery" resultType="org.springblade.mdm.program.vo.NcProgramVO">
-        select id,nc_node_id,machine_code,part_no,part_no_edition,process_name,craft_edition from mdm_nc_program p
+        select id,nc_node_id,name,machine_code,part_no,part_no_edition,process_name,craft_edition from mdm_nc_program p
         where is_deleted=0 and is_last_edition=1 and (category='program' or category='subprogram')
         <where>
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramApprovedService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramApprovedService.java
new file mode 100644
index 0000000..4a12b5e
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramApprovedService.java
@@ -0,0 +1,41 @@
+
+package org.springblade.mdm.program.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.mp.base.BizServiceImpl;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.mdm.program.entity.NcProgramApproved;
+import org.springblade.mdm.program.mapper.NcProgramApprovedMapper;
+import org.springblade.mdm.program.vo.DncSendBackData;
+import org.springblade.mdm.program.vo.NcProgramExportDncPageVO;
+import org.springblade.mdm.program.vo.NcProgramExportDncQueryVO;
+import org.springframework.stereotype.Service;
+
+/**
+ * 涓嬪彂/鍥炰紶绋嬪簭缁熻
+ *
+ * @author yangys
+ */
+@Slf4j
+@Service
+@AllArgsConstructor
+public class NcProgramApprovedService extends BizServiceImpl<NcProgramApprovedMapper, NcProgramApproved> {
+
+
+	/**
+	 * 鍒嗛〉鏌ヨ
+	 * @param query 鏌ヨ鍙傛暟
+	 * @return
+	 */
+	public IPage<NcProgramExportDncPageVO> exportDncPageQuery(NcProgramExportDncQueryVO query) {
+
+		IPage<NcProgramExportDncPageVO> page = this.getBaseMapper().exportDncPageQuery(Condition.getPage(query),query);
+
+		return page;
+
+	}
+}
+
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProcessProgRefService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProcessProgRefService.java
index 8b29d29..1b5ac3b 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProcessProgRefService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/ProcessProgRefService.java
@@ -86,7 +86,7 @@
 		for (Long programId : programIds) {
 			ProcessProgRef entity = new ProcessProgRef();
 			entity.setProcessInstanceId(processInstanceId);
-			entity.setProgramId(programId);
+			entity.setNcProgramId(programId);
 
 			entities.add(entity);
 		}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramExportDncPageVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramExportDncPageVO.java
new file mode 100644
index 0000000..1b2b28d
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramExportDncPageVO.java
@@ -0,0 +1,17 @@
+package org.springblade.mdm.program.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import org.springblade.mdm.commons.vo.BaseVO;
+
+/**
+ * NC绋嬪簭VO
+ */
+@Setter
+@Getter
+public class NcProgramExportDncPageVO extends BaseVO {
+	@Schema(description = "绋嬪簭鍚嶇О")
+	private String name;
+
+}
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramExportDncQueryVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramExportDncQueryVO.java
new file mode 100644
index 0000000..537793c
--- /dev/null
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcProgramExportDncQueryVO.java
@@ -0,0 +1,24 @@
+package org.springblade.mdm.program.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import org.springblade.core.mp.support.Query;
+
+import java.util.Date;
+
+/**
+ * 鍒嗛〉鎷嗙嚎鍛�
+ */
+
+@Schema(description = "鏈哄簥鍥炰紶鏂囦欢鏌ヨ瀵硅薄")
+@Setter
+@Getter
+public class NcProgramExportDncQueryVO extends Query {
+	@Schema(description = "绋嬪簭鍚嶇О")
+	private String name;
+	@Schema(description = "閫氳繃鏃堕棿寮�濮�")
+	private Date passTimeBegin;
+	@Schema(description = "閫氳繃鏃堕棿鎴")
+	private Date passTimeEnd;
+}
diff --git a/blade-service/blade-mdm/src/main/resources/processesbpmn/dispatch.bpmn20.xml b/blade-service/blade-mdm/src/main/resources/processesbpmn/dispatch.bpmn20.xml
index 01d3901..aaf3acd 100644
--- a/blade-service/blade-mdm/src/main/resources/processesbpmn/dispatch.bpmn20.xml
+++ b/blade-service/blade-mdm/src/main/resources/processesbpmn/dispatch.bpmn20.xml
@@ -7,7 +7,11 @@
     <userTask id="programmingTask" name="缂栧埗" flowable:assignee="${assignee}"/>
     <userTask id="check" name="鏍″" flowable:assignee="${assignee}"/>
     <userTask id="approveTask" name="楂樺笀瀹℃壒" flowable:assignee="${assignee}"/>
-    <endEvent id="approveEnd" name="瀹℃壒瀹屾垚"/>
+    <endEvent id="approveEnd" name="瀹℃壒瀹屾垚">
+      <extensionElements>
+        <flowable:executionListener expression="${dispatchFinishListener.handle(execution)}" event="end"/>
+      </extensionElements>
+    </endEvent>
     <sequenceFlow id="programingToCheck" sourceRef="programmingTask" targetRef="check" name="缂栧埗瀹屾垚缁欐牎瀵�">
       <conditionExpression xsi:type="tFormalExpression">${approve=='Y'}</conditionExpression>
     </sequenceFlow>

--
Gitblit v1.9.3