From 3e9e24190006b20868ceac08aa5d4408c8dfb908 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期四, 19 六月 2025 19:57:47 +0800
Subject: [PATCH] 增加程序节点接口

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcNodeVO.java                 |    5 +-
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.java         |    6 ++
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.xml          |   16 +++++++-
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java |   27 +++++++++++--
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java       |   18 +++++++++
 5 files changed, 63 insertions(+), 9 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java
index df7d3da..334bda0 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/NcNodeController.java
@@ -1,15 +1,24 @@
 
 package org.springblade.mdm.program.controller;
 
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.enums.ParameterIn;
+import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
 import org.springblade.mdm.program.service.NcNodeService;
 import org.springblade.mdm.program.vo.NcNodeVO;
 import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * 绋嬪簭鑺傜偣
@@ -30,18 +39,16 @@
 	 * 鏂板
 	 */
 	@PostMapping("/save")
-	@Operation(summary = "鏂板鑺傜偣", description = "鑺傜偣淇℃伅")
+	@Operation(summary = "鏂板鑺傜偣", description = "鑺傜偣淇℃伅,id淇濇寔绌�")
 	public R<Boolean> save(@RequestBody NcNodeVO vo) {
-
 		ncNodeService.saveNcCode(vo);
 		return R.<Boolean>status(true);
 	}
 
 
 	@PostMapping("/update")
-	@Operation(summary = "淇敼鑺傜偣")
+	@Operation(summary = "淇敼鑺傜偣", description = "鑺傜偣淇℃伅,蹇呴』浼犲叆ID")
 	public R<Boolean> update(@RequestBody NcNodeVO vo) {
-
 		ncNodeService.updateNcCode(vo);
 		return R.<Boolean>status(true);
 	}
@@ -52,4 +59,16 @@
 		ncNodeService.removeById(id);
 		return R.<Boolean>status(true);
 	}
+
+	@GetMapping("/lazy-list")
+	@Parameters({
+		@Parameter(name = "deptName", description = "閮ㄩ棬鍚嶇О", in = ParameterIn.QUERY, schema = @Schema(type = "string")),
+		@Parameter(name = "fullName", description = "閮ㄩ棬鍏ㄧО", in = ParameterIn.QUERY, schema = @Schema(type = "string"))
+	})
+
+	@Operation(summary = "鎳掑姞杞藉垪琛�", description = "绋嬪簭鐩綍鏍戝舰缁撴瀯")
+	public R<List<NcNodeVO>> lazyList(Long parentId) {
+		List<NcNodeVO> list = ncNodeService.lazyList(parentId);
+		return R.data(list);
+	}
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.java
index 9c1ec8c..206910b 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.java
@@ -4,10 +4,14 @@
 import org.springblade.core.mp.mapper.BladeMapper;
 import org.springblade.mdm.program.entity.NcNode;
 import org.springblade.mdm.program.entity.NcProgram;
+import org.springblade.mdm.program.vo.NcNodeVO;
+
+import java.util.List;
 
 public interface NcNodeMapper extends BladeMapper<NcNode> {
+    List<NcNodeVO> lazyList(Long parentId);
 
-	/**
+    /**
 	 * 鑾峰彇鏈�鏂板浐鍖栫▼搴�
 	 * @param partNo 闆剁粍浠跺彿
 	 * @param machineGroupCode 鏈哄簥缁勪唬鐮�
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.xml b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.xml
index 5ee260f..af78919 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.xml
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/mapper/NcNodeMapper.xml
@@ -24,13 +24,25 @@
     <!--    <select id="parentTree" resultMap="treeNodeResultMap">-->
 <!--        select id, parent_id, dict_value as title, id as "value", id as "key" from blade_dict where is_deleted = 0 and parent_id = 0-->
 <!--    </select>-->
-    <sql id="all_columns">id,tenant_id,nc_node_id,code,name,package_name,machine_code,part_no,is_cured,
+    <sql id="prog_all_columns">id,tenant_id,nc_node_id,code,name,package_name,machine_code,part_no,is_cured,
   expire_date,process_edition,is_last_edition,is_locked,task_assign_time,status,create_dept,is_deleted,create_time,create_user,update_time,update_user</sql>
     <select id="getCuredNcProgram" resultMap="BaseResultMap">
-        select <include refid="all_columns"/> from mdm_nc_program
+        select <include refid="prog_all_columns"/> from mdm_nc_program
         where is_deleted=0 and is_cured=1 and part_no=#{partNo} and is_last_edition=1
         and machine_code in (select code from mdm_machine where machine_group_code=#{machineGroupCode})
         order by create_time desc
         limit 1
     </select>
+
+    <sql id="all_columns">id,tenant_id,name,parent_id,node_type,status,create_dept,is_deleted,create_time,create_user,update_time,update_user</sql>
+    <select id="lazyList" resultType="org.springblade.mdm.program.vo.NcNodeVO">
+        select <include refid="all_columns"/>,(
+        SELECT
+        CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
+        FROM
+        mdm_nc_node
+        WHERE
+        parent_id = n.id and is_deleted = 0
+        ) AS "has_children" from mdm_nc_node n where is_deleted=0 and parent_id=#{parentId}
+    </select>
 </mapper>
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 cf866af..801a20f 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
@@ -6,6 +6,8 @@
 import lombok.extern.slf4j.Slf4j;
 import org.flowable.engine.*;
 import org.springblade.core.mp.base.BizServiceImpl;
+import org.springblade.core.secure.utils.AuthUtil;
+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.program.entity.NcNode;
@@ -13,6 +15,8 @@
 import org.springblade.mdm.program.vo.NcNodeVO;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * 绋嬪簭鑺傜偣
@@ -42,4 +46,18 @@
 
 		this.updateById(ncNode);
 	}
+
+	/**
+	 * 鎳掑姞杞藉垪琛�
+	 * @param parentId 鐖惰妭鐐笽D
+	 * @return
+	 */
+	public List<NcNodeVO> lazyList(Long parentId) {
+// 鍒ゆ柇鐐瑰嚮鎼滅储浣嗘槸娌℃湁鏌ヨ鏉′欢鐨勬儏鍐�
+		if (Func.isEmpty(parentId)) {
+			parentId = 0L;
+		}
+
+		return baseMapper.lazyList(parentId);
+	}
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcNodeVO.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcNodeVO.java
index deb120d..e36d368 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcNodeVO.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/vo/NcNodeVO.java
@@ -10,9 +10,10 @@
 public class NcNodeVO extends BaseVO {
 	@Schema(description = "鑺傜偣鍚嶇О")
 	private String name;
-	@Schema(description = "鐖禝D")
+	@Schema(description = "鐖禝D,鏍硅妭鐐圭埗id=0")
 	private Long parentId;
 	@Schema(description = "鑺傜偣绫诲瀷锛屽瓧鍏�(绋嬪簭鑺傜偣绫诲瀷nc_node_type)")
 	private String nodeType;
-
+	@Schema(description = "鏄惁鏈夊瓙鑺傜偣")
+	private Boolean hasChildren;
 }

--
Gitblit v1.9.3