From a0e29a74fcaceb52b02bfe559409611132462947 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期二, 14 一月 2025 17:53:30 +0800
Subject: [PATCH] DNC平移航宇救生   >  树结构新增工序、工步,去除默认新增工序,新增工步

---
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/WorkStepServiceImpl.java        |  149 +++++++++++++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/WorkStep.java                         |   65 +++++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java     |   58 +++++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/support/ProductTreeWrapper.java      |   60 +++++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/PermissionStream.java                 |   13 +
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/WorkStepMapper.xml                |   26 ++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProcessInfoCode.java                |    5 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DncPassLogMapper.xml              |    0 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IWorkStepService.java                |   56 +++++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/ProcessStreamMapper.java              |    8 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/WorkStepMapper.java                   |   16 +
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java   |   57 ++++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/WorkStepController.java           |   45 ++++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/ProcessStreamMapper.xml           |   29 ++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java |    5 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java       |   29 +-
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessStreamService.java           |   15 +
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ProcessStream.java                    |    4 
 18 files changed, 603 insertions(+), 37 deletions(-)

diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/WorkStepController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/WorkStepController.java
new file mode 100644
index 0000000..f8e3431
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/WorkStepController.java
@@ -0,0 +1,45 @@
+package org.jeecg.modules.dnc.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.modules.dnc.entity.WorkStep;
+import org.jeecg.modules.dnc.response.CommonCode;
+import org.jeecg.modules.dnc.response.ResponseResult;
+import org.jeecg.modules.dnc.service.IWorkStepService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@Slf4j
+@Api(tags = "宸ユ琛�")
+@RestController
+@RequestMapping("/nc/workStep")
+public class WorkStepController extends JeecgController<WorkStep, IWorkStepService> {
+    @Autowired
+    private IWorkStepService iWorkStepService;
+
+    @AutoLog(value = "宸ユ琛�-鏂板宸ユ淇℃伅")
+    @ApiOperation(value = "宸ユ琛�-鏂板宸ユ淇℃伅", notes = "宸ユ琛�-鏂板宸ユ淇℃伅")
+    @PostMapping("/add")
+    public ResponseResult addWorkStep(@RequestBody WorkStep workStep) {
+        boolean b = iWorkStepService.addWorkStep(workStep);
+        if(b) {
+            return new ResponseResult(CommonCode.SUCCESS);
+        }
+        return new ResponseResult(CommonCode.FAIL);
+    }
+
+    @AutoLog(value = "宸ユ琛�-缂栬緫宸ユ淇℃伅")
+    @ApiOperation(value = "宸ユ琛�-缂栬緫宸ユ淇℃伅", notes = "宸ユ琛�-缂栬緫宸ユ淇℃伅")
+    @PutMapping("/edit/{id}")
+    public ResponseResult editWorkStep(@PathVariable("id") String id,@RequestBody WorkStep workStep) {
+        boolean b = iWorkStepService.editWorkStep(id, workStep);
+        if(b) {
+            return new ResponseResult(CommonCode.SUCCESS);
+        }
+        return new ResponseResult(CommonCode.FAIL);
+    }
+
+}
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/PermissionStream.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/PermissionStream.java
index 01a498e..83a5724 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/PermissionStream.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/PermissionStream.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.Api;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
@@ -10,17 +11,29 @@
 @Data
 @NoArgsConstructor
 @TableName(value = "nc_permission_stream")
+@Api(value = "鐢ㄦ埛鏉冮檺")
 public class PermissionStream {
     @TableId(value = "stream_id")
     private String streamId;
+    //浜у搧id
     @TableField(value = "product_id")
     private String productId;
+    //閮ㄤ欢id
     @TableField(value = "component_id")
     private String componentId;
+    //闆朵欢id
     @TableField(value = "parts_id")
     private String partsId;
+    //宸ュ簭id
+    @TableField(value = "process_id")
+    private String processId;
+    //宸ユid
+    @TableField(value = "step_id")
+    private String stepId;
+    //鐢ㄦ埛id
     @TableField(value = "user_id")
     private String userId;
+    //DNC閮ㄩ棬id
     @TableField(value = "depart_id")
     private String departId;
     @JsonIgnore
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ProcessStream.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ProcessStream.java
index fe17a8f..3f32041 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ProcessStream.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ProcessStream.java
@@ -1,15 +1,15 @@
 package org.jeecg.modules.dnc.entity;
-
 import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.Api;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-
 import java.util.Date;
 
 @Data
 @NoArgsConstructor
 @TableName(value = "nc_process_stream")
+@Api(value = "鍏ㄩ儴宸ュ簭琛�")
 public class ProcessStream {
     @TableId(value = "process_id")
     private String processId;
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/WorkStep.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/WorkStep.java
new file mode 100644
index 0000000..6bb633f
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/WorkStep.java
@@ -0,0 +1,65 @@
+package org.jeecg.modules.dnc.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.Api;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@NoArgsConstructor
+@TableName(value = "nc_work_step")
+@Api(value = "宸ユ")
+public class WorkStep {
+    //宸ユid
+    @TableField(value = "step_id")
+    private String stepId;
+    //浜у搧id
+    @TableField(value = "product_id")
+    private String productId;
+    //閮ㄤ欢id
+    @TableField(value = "component_id")
+    private String componentId;
+    //闆朵欢id
+    @TableField(value = "parts_id")
+    private String partsId;
+    //宸ュ簭id
+    @TableField(value = "process_id")
+    private String processId;
+    //宸ユ鍚嶇О
+    @TableField(value = "step_name")
+    private String stepName;
+    //宸ユ鍙�
+    @TableField(value = "step_code")
+    private String stepCode;
+    //宸ヨ壓缂栧彿
+    @TableField(value = "craft_no")
+    private String craftNo;
+    //宸ヨ壓瑙勭▼鐗堟湰
+    @TableField(value = "craft_version")
+    private String craftVersion;
+    //宸ユ绫诲瀷
+    @TableField(value = "step_type")
+    private Integer stepType;
+    @JsonIgnore
+    @TableField(value = "create_time", select = false, fill = FieldFill.INSERT)
+    private Date createTime;
+    @JsonIgnore
+    @TableField(value = "update_time", select = false, fill = FieldFill.UPDATE)
+    private Date updateTime;
+    @JsonIgnore
+    @TableField(value = "create_user", select = false, fill = FieldFill.INSERT)
+    private String createUser;
+    @JsonIgnore
+    @TableField(value = "update_user", select = false, fill = FieldFill.UPDATE)
+    private String updateUser;
+    @JsonIgnore
+    @TableLogic
+    @TableField(value = "delete_flag", select = false)
+    private Integer deleteFlag = 0;
+}
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/ProcessStreamMapper.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/ProcessStreamMapper.java
index b89ef08..bd9945a 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/ProcessStreamMapper.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/ProcessStreamMapper.java
@@ -3,5 +3,13 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.jeecg.modules.dnc.entity.ProcessStream;
 
+import java.util.List;
+
 public interface ProcessStreamMapper extends BaseMapper<ProcessStream> {
+    /**
+     * 鏌ヨ宸ュ簭淇℃伅
+     * @param userId
+     * @return
+     */
+    List<ProcessStream> getByUserPerms(String userId);
 }
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/WorkStepMapper.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/WorkStepMapper.java
new file mode 100644
index 0000000..06ba661
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/WorkStepMapper.java
@@ -0,0 +1,16 @@
+package org.jeecg.modules.dnc.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.dnc.entity.SynchronizedFlag;
+import org.jeecg.modules.dnc.entity.WorkStep;
+
+import java.util.List;
+
+public interface WorkStepMapper extends BaseMapper<WorkStep> {
+    /**
+     * 鏌ヨ宸ユ淇℃伅
+     * @param userId
+     * @return
+     */
+    List<WorkStep> getByUserPerms(String userId);
+}
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/MdcPassLogMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DncPassLogMapper.xml
similarity index 100%
rename from lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/MdcPassLogMapper.xml
rename to lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DncPassLogMapper.xml
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/ProcessStreamMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/ProcessStreamMapper.xml
new file mode 100644
index 0000000..6b345e2
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/ProcessStreamMapper.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.jeecg.modules.dnc.mapper.ProcessStreamMapper">
+    <select id="getByUserPerms" resultType="org.jeecg.modules.dnc.entity.ProcessStream">
+        select
+               p.PROCESS_ID
+             , p.product_id
+             , p.component_id
+             , p.parts_id
+             , p.PROCESS_NAME
+             , p.PROCESS_CODE
+             , p.CRAFT_NO
+             , p.PROCESS_TYPE
+             , p.PROCESSING_EQUIPMENT_MODEL
+             , p.PROCESSING_EQUIPMENT_CODE
+             , p.ASSEMBLE_STEP
+             , p.ASSEMBLE_NAME
+             , p.DESCRIPTION
+             , p.CREATE_TIME
+             , p.CREATE_USER
+             , p.UPDATE_TIME
+             , p.UPDATE_USER
+        from nc_process_stream p
+                 inner join
+             (select distinct PROCESS_ID from nc_permission_stream where delete_flag = 0 and user_id=#{userId}) s
+             on p.PROCESS_ID = s.PROCESS_ID
+        where p.delete_flag = 0
+    </select>
+</mapper>
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/WorkStepMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/WorkStepMapper.xml
new file mode 100644
index 0000000..0b19b27
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/WorkStepMapper.xml
@@ -0,0 +1,26 @@
+<?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.jeecg.modules.dnc.mapper.WorkStepMapper">
+    <select id="getByUserPerms" resultType="org.jeecg.modules.dnc.entity.WorkStep">
+        select
+               p.step_id
+             , p.product_id
+             , p.component_id
+             , p.parts_id
+             , p.PROCESS_ID
+             , p.step_name
+             , p.step_code
+             , p.CRAFT_NO
+             , p.craft_version
+             , p.step_type
+             , p.CREATE_TIME
+             , p.create_by
+             , p.UPDATE_TIME
+             , p.update_by
+        from nc_work_step p
+                 inner join
+             (select distinct step_id from nc_permission_stream where delete_flag = 0 and user_id=#{userId}) s
+             on p.step_id = s.step_id
+        where p.delete_flag = 0
+    </select>
+</mapper>
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProcessInfoCode.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProcessInfoCode.java
index e8323e5..30a36f8 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProcessInfoCode.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProcessInfoCode.java
@@ -13,7 +13,10 @@
     PROCESS_NOT_EXIST(false,25405,"鏃犳晥鐨勯浂浠讹紒"),
     PROCESS_HAS_DOC(false,25406,"宸ュ簭涓嬫湁鍏宠仈鐨勬枃妗o紝鏃犳硶鍒犻櫎锛�"),
     PROCESS_CODE_NONE(false,25407,"璇疯緭鍏ュ伐搴忓彿锛�"),
-    PROCESS_IS_EXIST(false,25408,"璇ュ伐搴忓凡瀛樺湪锛�");
+    PROCESS_IS_EXIST(false,25408,"璇ュ伐搴忓凡瀛樺湪锛�"),
+    WORKSTEP_NAME_NONE(false,25409,"璇疯緭鍏ュ伐姝ュ悕绉帮紒"),
+    WORKSTEP_NOT_EXIST(false,25410,"鏃犳晥鐨勫伐姝ワ紒"),
+    WORKSTEP_IS_EXIST(false,25411,"璇ュ伐姝ュ凡瀛樺湪锛�");
 
     //鎿嶄綔浠g爜
     @ApiModelProperty(value = "鎿嶄綔鏄惁鎴愬姛", example = "true", required = true)
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessStreamService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessStreamService.java
index cd8f86a..004c9e8 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessStreamService.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessStreamService.java
@@ -79,4 +79,19 @@
      * @return
      */
     List<ProcessStream> validateDeviceProcessInfo(String pnCode, String deviceNo);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛id鑾峰彇鎺堟潈鐨勫伐搴忎俊鎭�
+     * @param userId
+     * @return
+     */
+    List<ProcessStream> getByuserPerms(String userId);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛id鑾峰彇鎺堟潈鐨勫伐搴忎俊鎭�
+     * @param userId
+     * @param queryParam 鏌ヨ鏉′欢
+     * @return
+     */
+    List<ProcessStream> getByuserPerms(String userId,String queryParam);
 }
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IWorkStepService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IWorkStepService.java
new file mode 100644
index 0000000..c3bafde
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IWorkStepService.java
@@ -0,0 +1,56 @@
+package org.jeecg.modules.dnc.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.dnc.entity.ProcessStream;
+import org.jeecg.modules.dnc.entity.ProductInfo;
+import org.jeecg.modules.dnc.entity.SynchronizedFlag;
+import org.jeecg.modules.dnc.entity.WorkStep;
+
+import java.util.List;
+
+/**
+ * @Description: 宸ユ
+ * @Author: server-boot
+ * @Date:   2025-01-14
+ * @Version: V1.0
+ */
+public interface IWorkStepService extends IService<WorkStep> {
+
+    /**
+     * 鏍规嵁鐢ㄦ埛id鑾峰彇鎺堟潈鐨勫伐姝ヤ俊鎭�
+     * @param userId
+     * @return
+     */
+    List<WorkStep> getByUserPerms(String userId);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛id鑾峰彇鎺堟潈鐨勫伐姝ヤ俊鎭�
+     * @param userId
+     * @param queryParam 鏌ヨ鏉′欢
+     * @return
+     */
+    List<WorkStep> getByUserPerms(String userId,String queryParam);
+
+    /**
+     * 鏂板浜у搧淇℃伅
+     * @param workStep
+     * @return
+     */
+    boolean addWorkStep(WorkStep workStep);
+
+    /**
+     * 缂栬緫浜у搧淇℃伅
+     * @param id
+     * @param workStep
+     * @return
+     */
+    boolean editWorkStep(String id ,WorkStep workStep);
+
+    /**
+     * 鑾峰彇宸ュ簭涓嬬殑宸ユ鍙�
+     * @param processId
+     * @return
+     */
+    WorkStep getByWorkStepNo(String processId,String craftNo);
+
+}
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java
index 3856ff5..b2460cd 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java
@@ -133,7 +133,8 @@
         b = componentPermissionService.save(permission);
         if(!b)
             ExceptionCast.cast(CommonCode.FAIL);
-        //娣诲姞榛樿宸ュ簭
+        //鍘婚櫎榛樿鏂板宸ュ簭锛岃浆涓烘墜鍔ㄦ坊鍔�
+        /*/娣诲姞榛樿宸ュ簭
         ProcessStream processStream = new ProcessStream();
         processStream.setProductId(componentInfo.getProductId());
         processStream.setComponentId(componentInfo.getComponentId());
@@ -149,7 +150,7 @@
         iNcLogInfoService.saveLogNcInfos(ncLogInfogx);
         b = processStreamService.save(processStream);
         if(!b)
-            ExceptionCast.cast(CommonCode.FAIL);
+            ExceptionCast.cast(CommonCode.FAIL);*/
         //娣诲姞鏉冮檺
         PermissionStream stream = new PermissionStream();
         stream.setUserId(userId);
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java
index bd53894..0921b54 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java
@@ -125,30 +125,23 @@
         b = partsPermissionService.save(permission);
         if(!b)
             ExceptionCast.cast(CommonCode.FAIL);
-        //娣诲姞榛樿宸ュ簭
-        ProcessStream processStream = new ProcessStream();
-        processStream.setProductId(partsInfo.getProductId());
-        processStream.setComponentId(partsInfo.getComponentId());
-        processStream.setPartsId(partsInfo.getPartsId());
-        processStream.setProcessCode("1");
-        b = processStreamService.save(processStream);
-        if(!b)
-            ExceptionCast.cast(CommonCode.FAIL);
+//        if(!b)
+//            ExceptionCast.cast(CommonCode.FAIL);
         //娣诲姞鐢ㄦ埛鏉冮檺
         PermissionStream stream = new PermissionStream();
         stream.setProductId(partsInfo.getProductId());
         stream.setComponentId(partsInfo.getComponentId());
         stream.setPartsId(partsInfo.getPartsId());
         stream.setUserId(userId);
-        //娣诲姞鏃ュ織
-        NcLogInfo ncLogInfogx = new NcLogInfo();
-        //妯″潡
-        ncLogInfogx.setModuleInfo("浜у搧缁撴瀯鏍�");
-        //绫诲瀷
-        ncLogInfogx.setOperateType(2);
-        //鏃ュ織鍐呭
-        ncLogInfogx.setLogContent("闆朵欢鍚嶇О锛�"+partsInfo.getPartsName()+"鐢熸垚榛樿宸ュ簭锛屽伐搴忓彿锛�"+processStream.getProcessCode());
-        iNcLogInfoService.saveLogNcInfos(ncLogInfogx);
+//        //娣诲姞鏃ュ織
+//        NcLogInfo ncLogInfogx = new NcLogInfo();
+//        //妯″潡
+//        ncLogInfogx.setModuleInfo("浜у搧缁撴瀯鏍�");
+//        //绫诲瀷
+//        ncLogInfogx.setOperateType(2);
+//        //鏃ュ織鍐呭
+//        ncLogInfogx.setLogContent("闆朵欢鍚嶇О锛�"+partsInfo.getPartsName()+"鐢熸垚榛樿宸ュ簭锛屽伐搴忓彿锛�"+processStream.getProcessCode());
+//        iNcLogInfoService.saveLogNcInfos(ncLogInfogx);
         return permissionStreamService.save(stream);
     }
 
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java
index 813f313..e22d52e 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java
@@ -1,17 +1,17 @@
 package org.jeecg.modules.dnc.service.impl;
 
+import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.dnc.exception.ExceptionCast;
 import org.jeecg.modules.dnc.mapper.ProcessStreamMapper;
-import org.jeecg.modules.dnc.response.CommonCode;
-import org.jeecg.modules.dnc.response.ComponentInfoCode;
-import org.jeecg.modules.dnc.response.DeviceCode;
-import org.jeecg.modules.dnc.response.ProcessInfoCode;
+import org.jeecg.modules.dnc.response.*;
 
 import org.jeecg.modules.dnc.service.*;
 import org.jeecg.modules.dnc.utils.ValidateUtil;
@@ -43,6 +43,8 @@
     private IDeviceInfoService deviceInfoService;
     @Autowired
     private INcLogInfoService iNcLogInfoService;
+    @Autowired
+    private IPermissionStreamService permissionStreamService;
 
     @Override
     @Transactional(rollbackFor = {Exception.class})
@@ -57,6 +59,10 @@
             ExceptionCast.cast(ProcessInfoCode.PROCESS_NAME_NONE);
         if(!ValidateUtil.validateString(stream.getProcessCode()))
             ExceptionCast.cast(ProcessInfoCode.PROCESS_CODE_NONE);
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        String userId = user.getId();
+        if(!ValidateUtil.validateString(userId))
+            ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST);
         if(ValidateUtil.validateString(stream.getPartsId())) {
             PartsInfo partsInfo = partsInfoService.getById(stream.getPartsId());
             if(partsInfo == null)
@@ -93,10 +99,22 @@
         boolean b = super.save(stream);
         if(!b)
             ExceptionCast.cast(CommonCode.FAIL);
-        ProcessInfo processInfo = new ProcessInfo();
-        processInfo.setProcessName(stream.getProcessName());
-        processInfo.setDescription(stream.getDescription());
-        return processInfoService.addOrEdit(processInfo);
+//        ProcessInfo processInfo = new ProcessInfo();
+//        processInfo.setProcessName(stream.getProcessName());
+//        processInfo.setDescription(stream.getDescription());
+//        boolean processInfoB= processInfoService.addOrEdit(processInfo);
+//        if(!processInfoB)
+//            ExceptionCast.cast(CommonCode.FAIL);
+        //娣诲姞鏉冮檺楠岃瘉
+        PermissionStream permissionStream = new PermissionStream();
+        permissionStream.setUserId(userId);
+        permissionStream.setProductId(stream.getProductId());
+        permissionStream.setComponentId(stream.getComponentId());
+        if (StrUtil.isNotEmpty(stream.getPartsId())){
+            permissionStream.setPartsId(stream.getPartsId());
+        }
+        permissionStream.setProcessId(stream.getProcessId());
+        return permissionStreamService.save(permissionStream);
     }
 
     @Override
@@ -223,4 +241,27 @@
             ExceptionCast.cast(ProcessInfoCode.PROCESS_NOT_EXIST);
         return list;
     }
+
+    @Override
+    public List<ProcessStream> getByuserPerms(String userId){
+        if(!ValidateUtil.validateString(userId))
+            return Collections.emptyList();
+        return super.getBaseMapper().getByUserPerms(userId);
+    }
+
+    @Override
+    public List<ProcessStream> getByuserPerms(String userId,String queryParam){
+        if(!ValidateUtil.validateString(userId))
+            return Collections.emptyList();
+        if(!ValidateUtil.validateString(queryParam))
+            return Collections.emptyList();
+        LambdaQueryWrapper<ProcessStream> queryWrapper = Wrappers.lambdaQuery();
+        if(ValidateUtil.validateString(queryParam)) {
+            queryWrapper.and(wrapper->wrapper.like(ProcessStream::getProcessName, queryParam)
+                    .or()
+                    .like(ProcessStream::getProcessName, queryParam));
+        }
+        queryWrapper.orderByAsc(ProcessStream::getCreateTime);
+        return super.list(queryWrapper);
+    }
 }
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java
index 9d079ff..ca7177f 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java
@@ -66,6 +66,8 @@
     @Lazy
     private IProcessStreamService processStreamService;
     @Autowired
+    private IWorkStepService workStepService;
+    @Autowired
     private IDocInfoService docInfoService;
     @Autowired
     private INcLogInfoService iNcLogInfoService;
@@ -163,16 +165,27 @@
 
     @Override
     public List<CommonGenericTree> loadProductTree(String userId) {
+        //浜у搧
         List<ProductInfo> productInfoList = getByUserPerms(userId);
         if(productInfoList == null || productInfoList.isEmpty())
             return Collections.emptyList();
+        //閮ㄤ欢
         List<ComponentExt> componentInfoList = componentInfoService.getByUserPermsAs(userId);
         if(componentInfoList == null)
             componentInfoList = Collections.emptyList();
+        //闆朵欢
         List<PartsInfo> partsInfos = partsInfoService.getByUserPerms(userId);
         if(partsInfos == null)
             partsInfos = Collections.emptyList();
-        return ProductTreeWrapper.loadTree(productInfoList, componentInfoList, partsInfos);
+        //宸ュ簭
+        List<ProcessStream> processStreams=processStreamService.getByuserPerms(userId);
+        if(processStreams==null)
+            processStreams = Collections.emptyList();
+        //宸ユ
+        List<WorkStep> workStepList=workStepService.getByUserPerms(userId);
+        if(workStepList==null)
+            workStepList = Collections.emptyList();
+        return ProductTreeWrapper.loadTree(productInfoList, componentInfoList, partsInfos,processStreams,workStepList);
     }
 
     @Override
@@ -1427,7 +1440,8 @@
         List<ProductInfo> productInfos = this.getByUserPerms(userId, queryParam);
         List<ComponentInfo> componentInfos = componentInfoService.getByUserPerms(userId, queryParam);
         List<PartsInfo> partsInfos = partsInfoService.getByUserPerms(userId, null, queryParam);
-
+        List<ProcessStream> processStreams=processStreamService.getByuserPerms(userId, queryParam);
+        List<WorkStep> workSteps=workStepService.getByUserPerms(userId, queryParam);
         List<ComponentInfo> componentInfoList = new ArrayList<>();
         List<ProductInfo> productInfoList = new ArrayList<>();
 
@@ -1462,6 +1476,44 @@
 
             if(!componentInfoMap.containsKey(p.getComponentId())) {
                 component = componentInfoService.getById(p.getComponentId());
+                if(component != null) {
+                    componentInfoMap.put(component.getComponentId(), component);
+                    componentInfoList.add(component);
+                }
+
+            }
+        }
+
+        for (ProcessStream processStream : processStreams) {
+            if (!productInfoMap.containsKey(processStream.getProductId())) {
+                product  = super.getById(processStream.getProductId());
+                if(product != null) {
+                    productInfoMap.put(product.getProductId(), product);
+                    productInfoList.add(product);
+                }
+            }
+
+            if(!componentInfoMap.containsKey(processStream.getComponentId())) {
+                component = componentInfoService.getById(processStream.getComponentId());
+                if(component != null) {
+                    componentInfoMap.put(component.getComponentId(), component);
+                    componentInfoList.add(component);
+                }
+
+            }
+        }
+
+        for (WorkStep workStep :workSteps){
+            if (!productInfoMap.containsKey(workStep.getProductId())) {
+                product  = super.getById(workStep.getProductId());
+                if(product != null) {
+                    productInfoMap.put(product.getProductId(), product);
+                    productInfoList.add(product);
+                }
+            }
+
+            if(!componentInfoMap.containsKey(workStep.getComponentId())) {
+                component = componentInfoService.getById(workStep.getComponentId());
                 if(component != null) {
                     componentInfoMap.put(component.getComponentId(), component);
                     componentInfoList.add(component);
@@ -1515,6 +1567,6 @@
         //杞崲鏁版嵁
         List<ComponentExt> componentExtList = ComponentExt.convertToExtList(componentInfoList);
 
-        return ProductTreeWrapper.loadTree(productInfoList, componentExtList, partsInfos);
+        return ProductTreeWrapper.loadTree(productInfoList, componentExtList, partsInfos,processStreams,workSteps);
     }
 }
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/WorkStepServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/WorkStepServiceImpl.java
new file mode 100644
index 0000000..ddbf531
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/WorkStepServiceImpl.java
@@ -0,0 +1,149 @@
+package org.jeecg.modules.dnc.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.dnc.entity.*;
+import org.jeecg.modules.dnc.exception.ExceptionCast;
+import org.jeecg.modules.dnc.mapper.PartsInfoMapper;
+import org.jeecg.modules.dnc.mapper.WorkStepMapper;
+import org.jeecg.modules.dnc.response.CommonCode;
+import org.jeecg.modules.dnc.response.ProcessInfoCode;
+import org.jeecg.modules.dnc.response.ProductInfoCode;
+import org.jeecg.modules.dnc.response.UcenterCode;
+import org.jeecg.modules.dnc.service.IPartsInfoService;
+import org.jeecg.modules.dnc.service.IPermissionStreamService;
+import org.jeecg.modules.dnc.service.IWorkStepService;
+import org.jeecg.modules.dnc.utils.ValidateUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @Description: TODO
+ * @Author: zhangherong
+ * @Date: Created in 2020/9/20 9:19
+ * @Version: 1.0
+ * @Modified By:
+ */
+@Service
+public class WorkStepServiceImpl extends ServiceImpl<WorkStepMapper, WorkStep> implements IWorkStepService {
+
+    @Autowired
+    private IPermissionStreamService permissionStreamService;
+
+    @Override
+    public List<WorkStep> getByUserPerms(String userId) {
+        if(!ValidateUtil.validateString(userId))
+            return Collections.emptyList();
+        return super.getBaseMapper().getByUserPerms(userId);
+    }
+
+    /**
+     * 鏍规嵁鐢ㄦ埛id鑾峰彇鎺堟潈鐨勫伐姝ヤ俊鎭�
+     * @param userId
+     * @param queryParam 鏌ヨ鏉′欢
+     * @return
+     */
+    @Override
+    public List<WorkStep> getByUserPerms(String userId,String queryParam){
+        if(!ValidateUtil.validateString(userId))
+            return Collections.emptyList();
+        if(!ValidateUtil.validateString(queryParam))
+            return Collections.emptyList();
+        LambdaQueryWrapper<WorkStep> queryWrapper = Wrappers.lambdaQuery();
+        if(ValidateUtil.validateString(queryParam)) {
+            queryWrapper.and(wrapper->wrapper.like(WorkStep::getStepName, queryParam)
+                    .or()
+                    .like(WorkStep::getStepName, queryParam));
+        }
+        queryWrapper.orderByAsc(WorkStep::getCreateTime);
+        return super.list(queryWrapper);
+    }
+
+    /**
+     * 鏂板浜у搧淇℃伅
+     * @param workStep
+     * @return
+     */
+    @Override
+    public boolean addWorkStep(WorkStep workStep){
+        if(workStep == null)
+            ExceptionCast.cast(CommonCode.INVALID_PARAM);
+        if(!ValidateUtil.validateString(workStep.getProductId()))
+            ExceptionCast.cast(ProcessInfoCode.PROCESS_PRODUCT_NONE);
+        if(!ValidateUtil.validateString(workStep.getComponentId()))
+            ExceptionCast.cast(ProcessInfoCode.PROCESS_COMPONENT_NONE);
+        if(!ValidateUtil.validateString(workStep.getStepName()))
+            ExceptionCast.cast(ProcessInfoCode.PROCESS_NAME_NONE);
+        if(!ValidateUtil.validateString(workStep.getStepCode()))
+            ExceptionCast.cast(ProcessInfoCode.PROCESS_CODE_NONE);
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        String userId = user.getId();
+        if(!ValidateUtil.validateString(userId))
+            ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST);
+        WorkStep en =getByWorkStepNo(workStep.getProcessId(), workStep.getCraftNo());
+        if(en != null) {
+            ExceptionCast.cast(ProcessInfoCode.WORKSTEP_NOT_EXIST);
+        }
+        boolean b =super.save(workStep);
+        if(!b)
+            ExceptionCast.cast(CommonCode.FAIL);
+        //娣诲姞鏉冮檺楠岃瘉
+        PermissionStream permissionStream = new PermissionStream();
+        permissionStream.setUserId(userId);
+        permissionStream.setProductId(workStep.getProductId());
+        permissionStream.setComponentId(workStep.getComponentId());
+        if (StrUtil.isNotEmpty(workStep.getPartsId())){
+            permissionStream.setPartsId(workStep.getPartsId());
+        }
+        permissionStream.setProcessId(workStep.getProcessId());
+        permissionStream.setStepId(workStep.getStepId());
+        return permissionStreamService.save(permissionStream);
+    }
+
+    /**
+     * 缂栬緫浜у搧淇℃伅
+     * @param id
+     * @param workStep
+     * @return
+     */
+    @Override
+    public boolean editWorkStep(String id ,WorkStep workStep){
+        if(!ValidateUtil.validateString(id) || workStep == null)
+            ExceptionCast.cast(CommonCode.INVALID_PARAM);
+        if(!ValidateUtil.validateString(workStep.getStepName()))
+            ExceptionCast.cast(ProcessInfoCode.PROCESS_NAME_NONE);
+        WorkStep en = super.getById(id);
+        if(en == null)
+            ExceptionCast.cast(ProcessInfoCode.WORKSTEP_NOT_EXIST);
+//        workStep.setStepId(id);
+//        workStep.setProductId(null);
+//        workStep.setComponentId(null);
+//        workStep.setPartsId(null);
+//        workStep.setProcessId(null);
+//        workStep.setStepName(workStep.getStepName().toUpperCase());
+//        workStep.setStepCode(null);
+        return super.updateById(workStep);
+    }
+
+    @Override
+    public WorkStep getByWorkStepNo(String processId,String craftNo){
+        if(ValidateUtil.validateString(processId)) {
+            List<WorkStep> list = super.lambdaQuery().eq(WorkStep::getProcessId, processId).eq(WorkStep::getCraftNo,craftNo).list();
+            if(list == null || list.isEmpty())
+                return null;
+            return list.get(0);
+        }
+        return null;
+
+    }
+
+}
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/support/ProductTreeWrapper.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/support/ProductTreeWrapper.java
index 9e03bdd..c07d48b 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/support/ProductTreeWrapper.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/support/ProductTreeWrapper.java
@@ -1,7 +1,7 @@
 package org.jeecg.modules.dnc.service.support;
 
-import org.jeecg.modules.dnc.entity.PartsInfo;
-import org.jeecg.modules.dnc.entity.ProductInfo;
+import cn.hutool.core.util.StrUtil;
+import org.jeecg.modules.dnc.entity.*;
 import org.jeecg.modules.dnc.response.CommonGenericTree;
 import org.jeecg.modules.dnc.entity.ComponentInfo;
 import org.jeecg.modules.dnc.dto.ComponentExt;
@@ -13,13 +13,18 @@
 
 public class ProductTreeWrapper {
 
-    public static List<CommonGenericTree> loadTree(List<ProductInfo> productInfoList, List<ComponentExt> componentInfoList, List<PartsInfo> partsInfoList) {
+    public static List<CommonGenericTree> loadTree(List<ProductInfo> productInfoList, List<ComponentExt> componentInfoList,
+                                                   List<PartsInfo> partsInfoList,List<ProcessStream> processStreams, List<WorkStep> workStepList) {
         List<CommonGenericTree> tree = new ArrayList<CommonGenericTree>();// TreeNode闆嗗悎锛屽瓨鏀炬墍鏈夋爲瀵硅薄銆�
         Map<String, CommonGenericTree> productMap = new HashMap<>();
         Map<String, CommonGenericTree> componentMap = new HashMap<>();
+        Map<String, CommonGenericTree> partsMap = new HashMap<>();
+        Map<String, CommonGenericTree> processMap = new HashMap<>();
         CommonGenericTree<ProductInfo> node;
         CommonGenericTree<ComponentInfo> componentNode;
         CommonGenericTree<PartsInfo> partsNode;
+        CommonGenericTree<ProcessStream> processNode;
+        CommonGenericTree<WorkStep> workStepNode;
         for(ProductInfo productInfo : productInfoList) {
             node = new CommonGenericTree();
             node.setId(productInfo.getProductId());
@@ -56,7 +61,56 @@
                 partsNode.setParentId(componentNode.getId());
                 componentNode.addChildren(partsNode);
             }
+            partsMap.put(parts.getPartsId(), partsNode);
         }
+
+        //宸ュ簭瀛樺湪閮ㄤ欢鎴栬�呴浂浠朵笅
+        for(ProcessStream processStream : processStreams) {
+            processNode = new CommonGenericTree();
+            processNode.setId(processStream.getProcessId());
+            processNode.setLabel("[" + processStream.getProcessCode()+ "]" + processStream.getProcessName());
+            processNode.setParentId(null);
+            processNode.setIconClass("");
+            processNode.setType(4);
+            if (StrUtil.isEmpty(processStream.getPartsId())) {
+                //娌℃湁partsId锛岄儴浠朵笅鐨勫伐搴�
+                processNode.setRField(processStream.getComponentId());
+                processNode.setEntity(processStream);
+                if(componentMap.containsKey(processNode.getRField())) {
+                    componentNode = componentMap.get(processNode.getRField());
+                    processNode.setParentId(componentNode.getId());
+                    componentNode.addChildren(processNode);
+                }
+            }else {
+                //鏈塸artsId锛岄浂浠朵笅鐨勫伐搴�
+                processNode.setRField(processStream.getPartsId());
+                processNode.setEntity(processStream);
+                if(partsMap.containsKey(processNode.getRField())) {
+                    partsNode = partsMap.get(processNode.getRField());
+                    processNode.setParentId(partsNode.getId());
+                    partsNode.addChildren(processNode);
+                }
+            }
+            processMap.put(processStream.getProcessId(),processNode);
+        }
+
+        //宸ユ瀛樺湪宸ュ簭涓�
+        for (WorkStep workStep : workStepList) {
+            workStepNode = new CommonGenericTree();
+            workStepNode.setId(workStep.getStepId());
+            workStepNode.setLabel("[" + workStep.getStepCode() + "]" + workStep.getStepName());
+            workStepNode.setParentId(null);
+            workStepNode.setIconClass("");
+            workStepNode.setType(5);
+            workStepNode.setRField(workStep.getProcessId());
+            workStepNode.setEntity(workStep);
+            if (processMap.containsKey(workStepNode.getRField())) {
+                processNode = processMap.get(workStepNode.getRField());
+                workStepNode.setParentId(processNode.getId());
+                processNode.addChildren(workStepNode);
+            }
+        }
+
         return tree;
     }
 

--
Gitblit v1.9.3