From b864148d2a9afd5e1627b761da923cca8f8dfbd2 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期五, 07 三月 2025 14:44:56 +0800
Subject: [PATCH] 修改产品结构树新增删除同步结构树表,新增刀具信息与设备类

---
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DeviceTypeMapper.xml                 |    4 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/WorkStepServiceImpl.java           |   19 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/CutterController.java                |   67 ++++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/DeviceType.java                          |   65 ++++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ProcessSpecVersionController.java    |   15 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java             |  120 ++++++++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/DeviceTypeMapper.java                    |    7 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessSpecVersionService.java         |    8 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java        |   16 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/ICutterService.java                     |   37 ++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceTypeService.java                 |   45 +++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceTypeServiceImpl.java         |  134 +++++++++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java      |   29 +-
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DeviceTypeController.java            |   73 +++++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java    |   17 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java          |   22 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/Cutter.java                              |   82 +++++
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/CutterMapper.java                        |    7 
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java |   25 +
 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/CutterMapper.xml                     |    4 
 20 files changed, 741 insertions(+), 55 deletions(-)

diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/CutterController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/CutterController.java
new file mode 100644
index 0000000..d1a3a2b
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/CutterController.java
@@ -0,0 +1,67 @@
+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.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.modules.dnc.entity.Cutter;
+import org.jeecg.modules.dnc.service.ICutterService;
+import org.springframework.web.bind.annotation.*;
+
+@Slf4j
+@Api(tags = "鍒�鍏蜂俊鎭�")
+@RestController
+@RequestMapping("/nc/cutter")
+public class CutterController extends JeecgController<Cutter, ICutterService> {
+
+//    /**
+//     * 鏍规嵁涓氬姟id鏌ヨ鍒�鍏峰垪琛�
+//     * @param businessId
+//     * @param pageNo
+//     * @param pageSize
+//     * @return
+//     */
+//    @GetMapping("/getByBusinessId")
+//    public Result<?> getByBusinessId(String businessId,Integer pageNo,Integer pageSize){
+//        return Result.OK(service.getByBusinessId(businessId,pageNo,pageSize));
+//    }
+
+    /**
+     * 鏂板鍒�鍏蜂俊鎭�
+     * @param cutter
+     * @return
+     */
+    @AutoLog(value = "鍒�鍏蜂俊鎭�-鏂板鍒�鍏蜂俊鎭�")
+    @ApiOperation(value = "鍒�鍏蜂俊鎭�-鏂板鍒�鍏蜂俊鎭�", notes = "鍒�鍏蜂俊鎭�-鏂板鍒�鍏蜂俊鎭�")
+    @PostMapping("/add")
+    public Result<?> add(@RequestBody Cutter cutter){
+        return Result.OK(service.add(cutter));
+    }
+
+    /**
+     * 缂栬緫鍒�鍏蜂俊鎭�
+     * @param cutter
+     * @return
+     */
+    @AutoLog(value = "鍒�鍏蜂俊鎭�-缂栬緫鍒�鍏蜂俊鎭�")
+    @ApiOperation(value = "鍒�鍏蜂俊鎭�-缂栬緫鍒�鍏蜂俊鎭�", notes = "鍒�鍏蜂俊鎭�-缂栬緫鍒�鍏蜂俊鎭�")
+    @PutMapping("/edit")
+    public Result<?> edit(@RequestBody Cutter cutter){
+        return Result.OK(service.edit(cutter));
+    }
+
+    /**
+     * 鏍规嵁id鍒犻櫎鍒�鍏蜂俊鎭�
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "鍒�鍏蜂俊鎭�-鏍规嵁id鍒犻櫎鍒�鍏蜂俊鎭�")
+    @ApiOperation(value = "鍒�鍏蜂俊鎭�-鏍规嵁id鍒犻櫎鍒�鍏蜂俊鎭�", notes = "鍒�鍏蜂俊鎭�-鏍规嵁id鍒犻櫎鍒�鍏蜂俊鎭�")
+    @DeleteMapping("/delete")
+    public Result<?> delete(@RequestBody String id){
+        return Result.OK(service.delete(id));
+    }
+
+}
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DeviceTypeController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DeviceTypeController.java
new file mode 100644
index 0000000..b4c02ac
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DeviceTypeController.java
@@ -0,0 +1,73 @@
+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.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.modules.dnc.entity.DeviceType;
+import org.jeecg.modules.dnc.service.IDeviceTypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Slf4j
+@Api(tags = "璁惧绫讳俊鎭�")
+@RestController
+@RequestMapping("/nc/deviceType")
+public class DeviceTypeController extends JeecgController<DeviceType, IDeviceTypeService> {
+    @Autowired
+    private IDeviceTypeService deviceTypeService;
+
+    /**
+     * 鏍规嵁涓氬姟id鏌ヨ璁惧绫诲垪琛�
+     * @param businessId
+     * @param type
+     * @return
+     */
+    @AutoLog(value = "璁惧绫讳俊鎭�-鏍规嵁涓氬姟id鏌ヨ璁惧绫诲垪琛�")
+    @ApiOperation(value = "璁惧绫讳俊鎭�-鏍规嵁涓氬姟id鏌ヨ璁惧绫诲垪琛�", notes = "璁惧绫讳俊鎭�-鏍规嵁涓氬姟id鏌ヨ璁惧绫诲垪琛�")
+    @GetMapping("/getByBusinessId")
+    public Result<?> getByBusinessId(String businessId,String type){
+        return deviceTypeService.getByBusinessId(businessId,type);
+    }
+
+    /**
+     * 鏂板璁惧绫�
+     * @param deviceType
+     * @return
+     */
+    @AutoLog(value = "璁惧绫讳俊鎭�-鏂板璁惧绫�")
+    @ApiOperation(value = "璁惧绫讳俊鎭�-鏂板璁惧绫�", notes = "璁惧绫讳俊鎭�-鏂板璁惧绫�")
+    @GetMapping("/add")
+    public Result<?> add(DeviceType deviceType){
+        return Result.OK(deviceTypeService.add(deviceType));
+    }
+
+    /**
+     * 缂栬緫璁惧绫�
+     * @param deviceType
+     * @return
+     */
+    @AutoLog(value = "璁惧绫讳俊鎭�-缂栬緫璁惧绫�")
+    @ApiOperation(value = "璁惧绫讳俊鎭�-缂栬緫璁惧绫�", notes = "璁惧绫讳俊鎭�-缂栬緫璁惧绫�")
+    @GetMapping("/edit")
+    public Result<?> edit(DeviceType deviceType){
+        return Result.OK(deviceTypeService.edit(deviceType));
+    }
+
+    /**
+     * 鏍规嵁id鍒犻櫎璁惧绫�
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "璁惧绫讳俊鎭�-鏍规嵁id鍒犻櫎璁惧绫�")
+    @ApiOperation(value = "璁惧绫讳俊鎭�-鏍规嵁id鍒犻櫎璁惧绫�", notes = "璁惧绫讳俊鎭�-鏍规嵁id鍒犻櫎璁惧绫�")
+    @GetMapping("/delete")
+    public Result<?> delete(@RequestBody String id){
+        return Result.OK(deviceTypeService.delete(id));
+    }
+}
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ProcessSpecVersionController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ProcessSpecVersionController.java
index 624d960..3832dc8 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ProcessSpecVersionController.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ProcessSpecVersionController.java
@@ -3,14 +3,13 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.modules.dnc.entity.ProcessSpecVersion;
-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.IProcessSpecVersionService;
-import org.jeecg.modules.dnc.service.IWorkStepService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -23,6 +22,18 @@
     @Autowired
     private IProcessSpecVersionService processSpecVersionService;
 
+    /**
+     * 鏍规嵁宸ヨ壓瑙勭▼id鏌ヨ,涓嬬骇宸ュ簭宸ユ鏁伴噺
+     * @param processSpecId
+     * @return
+     */
+    @AutoLog(value = "宸ヨ壓瑙勭▼鐗堟湰琛�-鏍规嵁宸ヨ壓瑙勭▼id鏌ヨ,涓嬬骇宸ュ簭宸ユ鏁伴噺")
+    @ApiOperation(value = "宸ヨ壓瑙勭▼鐗堟湰琛�-鏍规嵁宸ヨ壓瑙勭▼id鏌ヨ,涓嬬骇宸ュ簭宸ユ鏁伴噺", notes = "宸ヨ壓瑙勭▼鐗堟湰琛�-鏍规嵁宸ヨ壓瑙勭▼id鏌ヨ,涓嬬骇宸ュ簭宸ユ鏁伴噺")
+    @GetMapping("/getWorkStepCountByProcessSpecId/{processSpecId}")
+    public Result<?> getWorkStepCountByProcessSpecId(@PathVariable("processSpecId") String processSpecId) {
+        return processSpecVersionService.getProcessSpecVersionCount(processSpecId);
+    }
+
     @AutoLog(value = "宸ヨ壓瑙勭▼鐗堟湰琛�-鏂板宸ヨ壓瑙勭▼鐗堟湰淇℃伅")
     @ApiOperation(value = "宸ヨ壓瑙勭▼鐗堟湰琛�-鏂板宸ヨ壓瑙勭▼鐗堟湰淇℃伅", notes = "宸ヨ壓瑙勭▼鐗堟湰琛�-鏂板宸ヨ壓瑙勭▼鐗堟湰淇℃伅")
     @PostMapping("/add")
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/Cutter.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/Cutter.java
new file mode 100644
index 0000000..cb03de4
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/Cutter.java
@@ -0,0 +1,82 @@
+package org.jeecg.modules.dnc.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.Api;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.jeecg.common.aspect.annotation.Dict;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@NoArgsConstructor
+@TableName(value = "nc_cutter")
+@Api(value = "鍒�鍏�")
+public class Cutter implements Serializable {
+    private static final long serialVersionUID = 1529244980533421687L;
+
+    private String id;
+
+    //宸ュ簭鎴栧伐姝d
+    @TableField(value = "process_step_id")
+    private String processStepId;
+
+    //宸ュ簭/宸ユ  1宸ュ簭 2宸ユ
+    @TableField(value = "type")
+    private Integer type;
+
+    //鍒�鍏峰悕绉�
+    @TableField(value = "cutter_name")
+    private String cutterName;
+
+    //鍒�鍏风紪鍙�
+    @TableField(value = "cutter_code")
+    private String cutterCode;
+
+    //鍒�鍏风被鍨�
+    @TableField(value = "cutter_type")
+    private String cutterType;
+
+    //棰濆畾瀵垮懡
+    @TableField(value = "lifetime")
+    private String lifetime;
+
+    //鍒�浣�
+    @TableField(value = "cutter_position")
+    private String cutterSpacing;
+
+    //鏁伴噺
+    @TableField(value = "quantity")
+    private Integer quantity;
+
+    //鎻忚堪
+    @TableField(value = "description")
+    private String description;
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    @TableField(value = "create_time", fill = FieldFill.INSERT)
+    private Date createTime;
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    @TableField(value = "update_time", fill = FieldFill.INSERT)
+    private Date updateTime;
+
+    @JsonIgnore
+    @TableField(value = "create_by", select = false, fill = FieldFill.INSERT)
+    @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
+    private String createBy;
+
+    @JsonIgnore
+    @TableField(value = "update_by", select = false, fill = FieldFill.UPDATE)
+    @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
+    private String updateBy;
+
+    @JsonIgnore
+    @TableField(value = "delete_flag", select = false)
+    private Integer deleteFlag = 0;
+}
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/DeviceType.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/DeviceType.java
new file mode 100644
index 0000000..a0a3ed5
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/DeviceType.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.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecg.modules.mdc.entity.MdcEquipment;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@NoArgsConstructor
+@TableName(value = "nc_device_type")
+public class DeviceType implements Serializable {
+    private static final long serialVersionUID = 1529244980533421687L;
+
+    private String id;
+
+    //宸ュ簭鎴栧伐姝d
+    @TableField(value = "process_step_id")
+    private String processStepId;
+
+    //宸ュ簭/宸ユ  1宸ュ簭 2宸ユ
+    @TableField(value = "type")
+    private Integer type;
+
+    //杞﹂棿id
+    @TableField(value = "production_id")
+    private String productionId;
+
+    //璁惧绫诲瀷
+    @TableField(value = "device_type")
+    private Integer deviceType;
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    @TableField(value = "create_time", fill = FieldFill.INSERT)
+    private Date createTime;
+
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    @TableField(value = "update_time", fill = FieldFill.INSERT)
+    private Date updateTime;
+
+    @JsonIgnore
+    @TableField(value = "create_by", select = false, fill = FieldFill.INSERT)
+    @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
+    private String createBy;
+
+    @JsonIgnore
+    @TableField(value = "update_by", select = false, fill = FieldFill.UPDATE)
+    @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname")
+    private String updateBy;
+
+    @JsonIgnore
+    @TableField(value = "delete_flag", select = false)
+    private Integer deleteFlag = 0;
+
+    private transient List<MdcEquipment> equipmentList;
+
+}
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/CutterMapper.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/CutterMapper.java
new file mode 100644
index 0000000..1faf2dc
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/CutterMapper.java
@@ -0,0 +1,7 @@
+package org.jeecg.modules.dnc.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.dnc.entity.Cutter;
+
+public interface CutterMapper extends BaseMapper<Cutter> {
+}
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/DeviceTypeMapper.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/DeviceTypeMapper.java
new file mode 100644
index 0000000..cc95862
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/DeviceTypeMapper.java
@@ -0,0 +1,7 @@
+package org.jeecg.modules.dnc.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.dnc.entity.DeviceType;
+
+public interface DeviceTypeMapper extends BaseMapper<DeviceType> {
+}
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/CutterMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/CutterMapper.xml
new file mode 100644
index 0000000..453baed
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/CutterMapper.xml
@@ -0,0 +1,4 @@
+<?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.CutterMapper">
+</mapper>
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DeviceTypeMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DeviceTypeMapper.xml
new file mode 100644
index 0000000..9736052
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DeviceTypeMapper.xml
@@ -0,0 +1,4 @@
+<?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.DeviceTypeMapper">
+</mapper>
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/ICutterService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/ICutterService.java
new file mode 100644
index 0000000..6ff0f68
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/ICutterService.java
@@ -0,0 +1,37 @@
+package org.jeecg.modules.dnc.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.dnc.entity.Cutter;
+
+public interface ICutterService extends IService<Cutter> {
+
+    /**
+     * 鏂板鍒�鍏蜂俊鎭�
+     * @param cutter
+     * @return
+     */
+    Result<?> add(Cutter cutter);
+
+    /**
+     * 缂栬緫鍒�鍏蜂俊鎭�
+     * @param cutter
+     * @return
+     */
+    Result<?> edit(Cutter cutter);
+
+    /**
+     * 鍒犻櫎鍒�鍏蜂俊鎭�
+     * @param id
+     * @return
+     */
+    Result<?> delete(String id);
+
+    /**
+     * 鑾峰彇涓氬姟id涓嬬殑鍒�鍏峰垪琛�
+     * @param cutter
+     * @return
+     */
+    Result<?> query(Cutter cutter, Integer pageNo, Integer pageSize);
+
+}
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceTypeService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceTypeService.java
new file mode 100644
index 0000000..b576bb8
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceTypeService.java
@@ -0,0 +1,45 @@
+package org.jeecg.modules.dnc.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.dnc.entity.DeviceType;
+
+import java.util.List;
+
+public interface IDeviceTypeService extends IService<DeviceType> {
+
+    /**
+     * 鏂板璁惧绫�
+     * @param deviceType
+     * @return
+     */
+    Result<?> add(DeviceType deviceType);
+    /**
+     * 缂栬緫璁惧绫�
+     * @param deviceType
+     * @return
+     */
+    Result<?> edit(DeviceType deviceType);
+    /**
+     * 鏍规嵁id鍒犻櫎璁惧绫�
+     * @param id
+     * @return
+     */
+    Result<?> delete(String id);
+
+    /**
+     * 鏍规嵁璁惧绫讳俊鎭煡璇㈠搴旇澶囩被
+     * @param deviceTypes
+     * @return
+     */
+    Result<?> getByDeviceType(List<DeviceType> deviceTypes);
+
+    /**
+     * 鏍规嵁涓氬姟id鏌ヨ璁惧绫诲垪琛�
+     * @param businessId
+     * @param type
+     * @return
+     */
+    Result<?> getByBusinessId(String businessId, String type);
+
+}
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessSpecVersionService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessSpecVersionService.java
index abd1bcc..070804f 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessSpecVersionService.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessSpecVersionService.java
@@ -1,7 +1,7 @@
 package org.jeecg.modules.dnc.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import org.jeecg.modules.dnc.entity.PartsInfo;
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.dnc.entity.ProcessSpecVersion;
 import org.jeecg.modules.system.entity.MdcProduction;
 import org.jeecg.modules.system.entity.SysUser;
@@ -102,4 +102,10 @@
      */
     boolean assignRemoveDepart(ProcessSpecVersion processSpecVersion, Collection<MdcProduction> departmentList);
 
+    /**
+     * 鏍规嵁宸ヨ壓瑙勭▼id鏌ヨ,涓嬬骇宸ュ簭宸ユ鏁伴噺
+     * @param processSpecId
+     * @return
+     */
+    Result<?> getProcessSpecVersionCount(String processSpecId);
 }
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 486ed9f..4dffb5e 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
@@ -1,6 +1,5 @@
 package org.jeecg.modules.dnc.service.impl;
 
-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;
@@ -8,7 +7,7 @@
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.dnc.dto.ComponentExt;
-
+import org.jeecg.modules.dnc.entity.*;
 import org.jeecg.modules.dnc.exception.ExceptionCast;
 import org.jeecg.modules.dnc.mapper.ComponentInfoMapper;
 import org.jeecg.modules.dnc.mapper.ProductInfoMapper;
@@ -16,14 +15,10 @@
 import org.jeecg.modules.dnc.response.ComponentInfoCode;
 import org.jeecg.modules.dnc.response.ProductInfoCode;
 import org.jeecg.modules.dnc.response.UcenterCode;
-
 import org.jeecg.modules.dnc.service.*;
-import org.jeecg.modules.dnc.ucenter.Department;
 import org.jeecg.modules.dnc.utils.ValidateUtil;
-import org.jeecg.modules.dnc.entity.*;
 import org.jeecg.modules.system.entity.MdcProduction;
 import org.jeecg.modules.system.entity.SysUser;
-import org.jeecg.modules.dnc.entity.ComponentInfo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -50,7 +45,7 @@
     @Autowired
     private IProcessStreamService processStreamService;
     @Autowired
-    private IDocInfoService docInfoService;
+    private IProductMixService productMixService;
     @Autowired
     private IDocRelativeService iDocRelativeService;
     @Autowired
@@ -125,7 +120,10 @@
         if (!b) {
             ExceptionCast.cast(ProductInfoCode.PRODUCT_SAVE_ERROR);
         }
-        //鍘婚櫎榛樿鏂板宸ュ簭锛岃浆涓烘墜鍔ㄦ坊鍔�
+        //娣诲姞缁撴瀯鏍�
+        ProductMix productMix = new ProductMix(Long.parseLong(componentInfo.getComponentId()),Long.parseLong(productInfo.getProductId())
+                ,componentInfo.getComponentName(),componentInfo.getComponentCode(),"2");
+        productMixService.save(productMix);
         //娣诲姞鏉冮檺
         PermissionStreamNew stream = new PermissionStreamNew();
         stream.setUserId(userId);
@@ -278,6 +276,9 @@
         b = permissionStreamNewService.deletePermissionStreamNewByBusinessId(componentInfo.getComponentId(),"2","1");
         if(!b)
             ExceptionCast.cast(CommonCode.FAIL);
+        b = productMixService.removeById(id);
+        if (!b)
+            ExceptionCast.cast(CommonCode.FAIL);
         return super.removeById(id);
     }
 
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java
new file mode 100644
index 0000000..d29c8c5
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java
@@ -0,0 +1,120 @@
+package org.jeecg.modules.dnc.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.dnc.entity.Cutter;
+import org.jeecg.modules.dnc.exception.ExceptionCast;
+import org.jeecg.modules.dnc.mapper.CutterMapper;
+import org.jeecg.modules.dnc.response.CommonCode;
+import org.jeecg.modules.dnc.response.ProcessInfoCode;
+import org.jeecg.modules.dnc.service.ICutterService;
+import org.jeecg.modules.dnc.utils.ValidateUtil;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class CutterServiceImpl extends ServiceImpl<CutterMapper, Cutter> implements ICutterService {
+
+    /**
+     * 鏂板鍒�鍏蜂俊鎭�
+     * @param cutter
+     * @return
+     */
+    @Override
+    public Result<?> add(Cutter cutter){
+        if(cutter == null)
+            ExceptionCast.cast(CommonCode.INVALID_PARAM);
+        if(!ValidateUtil.validateString(cutter.getProcessStepId()))
+            Result.error("鏃犳晥鐨勫垁鍏�");
+        boolean b =this.checkCutterNo(cutter);
+        if(!b)
+            return Result.error("宸插瓨鍦ㄧ浉鍚岀殑鍒�鍏风紪鍙�");
+        boolean save = this.save(cutter);
+        if(save){
+            return Result.OK("娣诲姞鍒�鍏锋垚鍔�");
+        }
+        return Result.error("鏂板鍒�鍏峰け璐�");
+    }
+
+    /**
+     * 缂栬緫鍒�鍏蜂俊鎭�
+     * @param cutter
+     * @return
+     */
+    @Override
+    public Result<?> edit(Cutter cutter){
+        if(cutter == null)
+            ExceptionCast.cast(CommonCode.INVALID_PARAM);
+        if(!ValidateUtil.validateString(cutter.getCutterName()))
+            ExceptionCast.cast(ProcessInfoCode.PROCESS_NAME_NONE);
+        Cutter en = super.getById(cutter.getId());
+        if(en == null)
+            ExceptionCast.cast(ProcessInfoCode.WORKSTEP_NOT_EXIST);
+        boolean b =this.checkCutterNo(cutter);
+        if(!b)
+            return Result.error("宸插瓨鍦ㄧ浉鍚岀殑鍒�鍏风紪鍙�");
+        boolean save = this.updateById(cutter);
+        if(save){
+            return Result.OK("鍒�鍏蜂俊鎭紪杈戞垚鍔�");
+        }
+        return Result.OK("鍒�鍏蜂俊鎭紪杈戝け璐�");
+    }
+
+    /**
+     * 鍒犻櫎鍒�鍏蜂俊鎭�
+     * @param id
+     * @return
+     */
+    @Override
+    public Result<?> delete(String id){
+        if(!ValidateUtil.validateString(id))
+            ExceptionCast.cast(CommonCode.INVALID_PARAM);
+        Cutter en = super.getById(id);
+        if(en == null)
+            return Result.error("鏃犳晥鐨勫垁鍏�");
+        boolean b=super.removeById(id);
+        if(!b) {
+            return Result.error("鍒犻櫎鍒�鍏峰け璐�");
+        }
+        return Result.OK("鍒犻櫎鍒�鍏锋垚鍔�");
+    }
+
+    /**
+     * 楠岃瘉鍚岀粨鏋勪笅鍒�鍏风紪鍙锋槸鍚﹂噸澶�
+     * @param cutter
+     * @return
+     */
+    public boolean checkCutterNo(Cutter cutter){
+        QueryWrapper<Cutter> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StrUtil.isNotEmpty(cutter.getProcessStepId()),"process_step_id",cutter.getProcessStepId());
+        queryWrapper.eq("type",cutter.getType());
+        queryWrapper.eq(StrUtil.isNotEmpty(cutter.getCutterCode()),"craft_code",cutter.getCutterCode());
+        List<Cutter> list = baseMapper.selectList(queryWrapper);
+        return list.isEmpty();
+    }
+
+    /**
+     * 鑾峰彇涓氬姟id涓嬬殑鍒�鍏峰垪琛�
+     * @param cutter
+     * @return
+     */
+    @Override
+    public Result<?> query(Cutter cutter, Integer pageNo, Integer pageSize){
+        QueryWrapper<Cutter> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StrUtil.isNotEmpty(cutter.getProcessStepId()),"process_step_id",cutter.getProcessStepId());
+        if (cutter.getType() != null){
+            queryWrapper.eq("type",cutter.getType());
+        }
+        queryWrapper.like(StrUtil.isNotEmpty(cutter.getCutterName()),"craft_code",cutter.getCutterCode());
+        queryWrapper.like(StrUtil.isNotEmpty(cutter.getCutterName()),"craft_name",cutter.getCutterName());
+        queryWrapper.orderByDesc("create_time");
+        Page<Cutter> page = new Page<>(pageNo,pageSize);
+        IPage<Cutter> cutterIPage = baseMapper.selectPage(page, queryWrapper);
+        return Result.OK(cutterIPage);
+    }
+}
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceTypeServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceTypeServiceImpl.java
new file mode 100644
index 0000000..e00d918
--- /dev/null
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceTypeServiceImpl.java
@@ -0,0 +1,134 @@
+package org.jeecg.modules.dnc.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.dnc.entity.DeviceType;
+import org.jeecg.modules.dnc.exception.ExceptionCast;
+import org.jeecg.modules.dnc.mapper.DeviceTypeMapper;
+import org.jeecg.modules.dnc.response.CommonCode;
+import org.jeecg.modules.dnc.response.ProcessInfoCode;
+import org.jeecg.modules.dnc.service.IDeviceTypeService;
+import org.jeecg.modules.dnc.utils.ValidateUtil;
+import org.jeecg.modules.mdc.entity.MdcEquipment;
+import org.jeecg.modules.mdc.service.IMdcEquipmentService;
+import org.jeecg.modules.mdc.service.IMdcProductionEquipmentService;
+import org.jeecg.modules.system.entity.MdcProductionEquipment;
+import org.jeecg.modules.system.entity.SysParams;
+import org.jeecg.modules.system.service.ISysParamsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+public class DeviceTypeServiceImpl extends ServiceImpl<DeviceTypeMapper, DeviceType> implements IDeviceTypeService {
+
+    @Autowired
+    private ISysParamsService sysParamsService;
+
+    @Autowired
+    private IMdcEquipmentService mdcEquipmentService;
+
+    @Autowired
+    private IMdcProductionEquipmentService mdcProductionEquipmentService;
+
+    /**
+     * 鏂板璁惧绫�
+     * @param deviceType
+     * @return
+     */
+    public Result<?> add(DeviceType deviceType){
+        SysParams sysParams = sysParamsService.getSysPramBySettingKey("dnc_nc_device_type");
+        if ("-1".equals(sysParams.getSettingValue())){
+            //鏈惎鍔ㄨ澶囩被
+            return Result.error("璁惧绫绘湭鍚姩,璇疯仈绯荤鐞嗗憳");
+        }else {
+            //宸插惎鍔ㄨ澶囩被
+            if(deviceType == null)
+                ExceptionCast.cast(CommonCode.INVALID_PARAM);
+            if(!ValidateUtil.validateString(deviceType.getProcessStepId()))
+                Result.error("鏃犳晥鐨勮澶囩被");
+            boolean save = this.save(deviceType);
+            if(save){
+                return Result.OK("娣诲姞璁惧绫绘垚鍔�");
+            }
+            return Result.error("鏂板璁惧绫诲け璐�");
+        }
+    }
+    /**
+     * 缂栬緫璁惧绫�
+     * @param deviceType
+     * @return
+     */
+    public Result<?> edit(DeviceType deviceType){
+        if(deviceType == null)
+            ExceptionCast.cast(CommonCode.INVALID_PARAM);
+        if(deviceType.getDeviceType()==null)
+            ExceptionCast.cast(ProcessInfoCode.PROCESS_NAME_NONE);
+        DeviceType en = super.getById(deviceType.getId());
+        if(en == null)
+            ExceptionCast.cast(ProcessInfoCode.WORKSTEP_NOT_EXIST);
+        boolean save = this.updateById(deviceType);
+        if(save){
+            return Result.OK("璁惧绫荤紪杈戞垚鍔�");
+        }
+        return Result.OK("璁惧绫荤紪杈戝け璐�");
+    }
+    /**
+     * 鏍规嵁id鍒犻櫎璁惧绫�
+     * @param id
+     * @return
+     */
+    public Result<?> delete(String id){
+        if(!ValidateUtil.validateString(id))
+            ExceptionCast.cast(CommonCode.INVALID_PARAM);
+        DeviceType en = super.getById(id);
+        if(en == null)
+            return Result.error("鏃犳晥鐨勮澶囩被");
+        boolean b=super.removeById(id);
+        if(!b) {
+            return Result.error("鍒犻櫎璁惧绫诲け璐�");
+        }
+        return Result.OK("鍒犻櫎璁惧绫绘垚鍔�");
+    }
+
+    /**
+     * 鏍规嵁璁惧绫讳俊鎭煡璇㈠搴旇澶囩被
+     * @param deviceTypes
+     * @return
+     */
+    public Result<?> getByDeviceType(List<DeviceType> deviceTypes){
+        if (deviceTypes == null || deviceTypes.isEmpty()) {
+            return Result.error("璁惧绫讳俊鎭负绌�");
+        }
+        List<Integer> deviceTypeIds = deviceTypes.stream().map(DeviceType::getDeviceType).collect(Collectors.toList());
+        QueryWrapper<MdcEquipment> queryWrapper = new QueryWrapper<>();
+        queryWrapper.in("device_type", deviceTypeIds);
+        List<MdcEquipment> mdcEquipmentList = mdcEquipmentService.list(queryWrapper);
+        return Result.OK(mdcEquipmentList);
+    }
+
+    /**
+     * 鏍规嵁涓氬姟id鏌ヨ璁惧绫诲垪琛�
+     * @param businessId
+     * @param type
+     * @return
+     */
+    public Result<?> getByBusinessId(String businessId,String type){
+        List<DeviceType> list = this.list(new QueryWrapper<DeviceType>().eq("production_id", businessId).eq("type", type));
+        if (list == null || list.isEmpty()) {
+            return Result.error("璁惧绫讳俊鎭负绌�");
+        }
+        List<Integer> deviceTypeIds = list.stream().map(DeviceType::getDeviceType).collect(Collectors.toList());
+        List<String> equipmentIds=mdcProductionEquipmentService.list(new QueryWrapper<MdcProductionEquipment>().in("production_id",deviceTypeIds))
+                .stream().map(MdcProductionEquipment::getEquipmentId).collect(Collectors.toList());
+        list.forEach(item->{
+            List<MdcEquipment> mdcEquipmentList = mdcEquipmentService.list(new QueryWrapper<MdcEquipment>()
+                    .eq("device_type", item.getDeviceType()).in("id", equipmentIds));
+            item.setEquipmentList(mdcEquipmentList);
+        });
+        return Result.OK(list);
+    }
+}
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 b5d9480..379abd8 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
@@ -1,13 +1,13 @@
 package org.jeecg.modules.dnc.service.impl;
 
-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.commons.collections4.ListUtils;
 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.ComponentInfoMapper;
 import org.jeecg.modules.dnc.mapper.PartsInfoMapper;
@@ -16,18 +16,11 @@
 import org.jeecg.modules.dnc.response.PartsInfoCode;
 import org.jeecg.modules.dnc.response.ProductInfoCode;
 import org.jeecg.modules.dnc.response.UcenterCode;
-
 import org.jeecg.modules.dnc.service.*;
-import org.jeecg.modules.dnc.ucenter.Department;
 import org.jeecg.modules.dnc.utils.ValidateUtil;
-
-import org.jeecg.modules.dnc.entity.*;
 import org.jeecg.modules.system.entity.MdcProduction;
 import org.jeecg.modules.system.entity.SysUser;
-import org.apache.commons.collections4.ListUtils;
-
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -54,6 +47,8 @@
     private IDocRelativeService iDocRelativeService;
     @Autowired
     private IProductPermissionService productPermissionService;
+    @Autowired
+    private IProductMixService productMixService;
     @Override
     @Transactional(rollbackFor = {Exception.class})
     public boolean addPartsInfo(PartsInfo partsInfo) {
@@ -114,6 +109,10 @@
         if (!b) {
             ExceptionCast.cast(ProductInfoCode.PRODUCT_SAVE_ERROR);
         }
+        //娣诲姞缁撴瀯鏍�
+        ProductMix productMix = new ProductMix(Long.parseLong(partsInfo.getPartsId()),Long.parseLong(partsInfo.getComponentId())
+                ,partsInfo.getPartsName(),partsInfo.getPartsCode(),"3");
+        productMixService.save(productMix);
         //娣诲姞鐢ㄦ埛鏉冮檺
         PermissionStreamNew stream = new PermissionStreamNew();
         stream.setBusinessId(partsInfo.getPartsId());
@@ -253,7 +252,10 @@
         b = permissionStreamNewService.deletePermissionStreamNewByBusinessId(partsId,"3","1");
         if(!b)
             ExceptionCast.cast(CommonCode.FAIL);
-        return super.removeById(partsInfo.getPartsId());
+        b = productMixService.removeById(partsId);
+        if (!b)
+            ExceptionCast.cast(CommonCode.FAIL);
+        return super.removeById(partsId);
     }
 
     @Override
diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java
index b4c0ab1..370f098 100644
--- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java
+++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessSpecVersionServiceImpl.java
@@ -1,10 +1,10 @@
 package org.jeecg.modules.dnc.service.impl;
 
 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.api.vo.Result;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.dnc.entity.*;
 import org.jeecg.modules.dnc.exception.ExceptionCast;
@@ -44,7 +44,7 @@
     @Autowired
     private IProcessSpecVersionDepartmentService processSpecVersionDepartmentService;
     @Autowired
-    private IProductPermissionService productPermissionService;
+    private IProductMixService productMixService;
     /**
      * 鏍规嵁鐢ㄦ埛id鑾峰彇鎺堟潈鐨勫伐鑹鸿绋嬬増鏈〃淇℃伅
      * @param userId
@@ -144,11 +144,10 @@
                     ExceptionCast.cast(CommonCode.FAIL);
             }
         }
-        //娣诲姞鐢ㄦ埛鏉冮檺
-        b = productPermissionService.add(ProcessSpecVersion.getId(), userId,"4");
-        if (!b) {
-            ExceptionCast.cast(ProductInfoCode.PRODUCT_SAVE_ERROR);
-        }
+        //娣诲姞缁撴瀯鏍�
+        ProductMix productMix = new ProductMix(Long.parseLong(ProcessSpecVersion.getId()),Long.parseLong(ProcessSpecVersion.getPartsId())
+                ,ProcessSpecVersion.getProcessSpecVersionName(),ProcessSpecVersion.getProcessSpecVersionCode(),"4");
+        productMixService.save(productMix);
         //娣诲姞鐢ㄦ埛鏉冮檺
         PermissionStreamNew stream = new PermissionStreamNew();
         stream.setBusinessId(ProcessSpecVersion.getId());
@@ -224,6 +223,9 @@
             ExceptionCast.cast(CommonCode.FAIL);
         b = permissionStreamNewService.deletePermissionStreamNewByBusinessId(processSpecVersion.getId(),"4","1");
         if(!b)
+            ExceptionCast.cast(CommonCode.FAIL);
+        b = productMixService.removeById(processSpecVersion.getId());
+        if (!b)
             ExceptionCast.cast(CommonCode.FAIL);
         return super.removeById(processSpecVersion.getId());
     }
@@ -430,4 +432,13 @@
         return true;
     }
 
+    /**
+     * 鏍规嵁宸ヨ壓瑙勭▼id鏌ヨ,涓嬬骇宸ュ簭宸ユ鏁伴噺
+     * @param processSpecId
+     * @return
+     */
+    @Override
+    public Result<?> getProcessSpecVersionCount(String processSpecId){
+        return null;
+    }
 }
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 8bb0199..b3d3397 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,26 +1,19 @@
 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.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-
-import liquibase.pro.packaged.P;
 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.ProcessStreamMapper;
+import org.jeecg.modules.dnc.request.ProcessStreamRequest;
 import org.jeecg.modules.dnc.response.*;
-
 import org.jeecg.modules.dnc.service.*;
 import org.jeecg.modules.dnc.utils.ValidateUtil;
-
-
-import org.jeecg.modules.dnc.request.ProcessStreamRequest;
-import org.jeecg.modules.dnc.entity.*;
 import org.jeecg.modules.system.entity.MdcProduction;
 import org.jeecg.modules.system.entity.SysUser;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -56,7 +49,7 @@
     @Autowired
     private IProcessStreamPermissionService processStreamPermissionService;
     @Autowired
-    private IProductPermissionService productPermissionService;
+    private IProductMixService productMixService;
 
     @Override
     @Transactional(rollbackFor = {Exception.class})
@@ -131,11 +124,16 @@
                     ExceptionCast.cast(CommonCode.FAIL);
             }
         }
-        //娣诲姞鐢ㄦ埛鏉冮檺
-        b = productPermissionService.add(stream.getProcessId(), userId,"5");
-        if (!b) {
-            ExceptionCast.cast(ProductInfoCode.PRODUCT_SAVE_ERROR);
+        //娣诲姞缁撴瀯鏍�
+        ProductMix productMix;
+        if (stream.getPartsId() != null) {
+            productMix = new ProductMix(Long.parseLong(stream.getProcessId()),Long.parseLong(stream.getPartsId())
+                    ,stream.getProcessName(),stream.getProcessCode(),"5");
+        }else {
+            productMix = new ProductMix(Long.parseLong(stream.getProcessId()),Long.parseLong(stream.getComponentId())
+                    ,stream.getProcessName(),stream.getProcessCode(),"5");
         }
+        productMixService.save(productMix);
         //娣诲姞鏉冮檺楠岃瘉
         PermissionStreamNew permissionStream = new PermissionStreamNew();
         permissionStream.setUserId(userId);
@@ -187,6 +185,9 @@
         if (!docRelativeList.isEmpty()){
             ExceptionCast.cast(ProcessInfoCode.PROCESS_HAS_DOC);
         }
+        boolean b = productMixService.removeById(id);
+        if(!b)
+            ExceptionCast.cast(CommonCode.FAIL);
         return super.removeById(id);
     }
 
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 ee0c849..9a775e3 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
@@ -4,29 +4,26 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import liquibase.pro.packaged.S;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.dnc.dto.ComponentExt;
+import org.jeecg.modules.dnc.entity.*;
 import org.jeecg.modules.dnc.exception.ExceptionCast;
-import org.jeecg.modules.dnc.mapper.ProcessSpecVersionPermissionMapper;
 import org.jeecg.modules.dnc.mapper.ProductInfoMapper;
 import org.jeecg.modules.dnc.response.*;
 import org.jeecg.modules.dnc.service.*;
 import org.jeecg.modules.dnc.service.support.ProductTreeWrapper;
 import org.jeecg.modules.dnc.ucenter.UserDepartExt;
 import org.jeecg.modules.dnc.utils.ValidateUtil;
-import org.jeecg.modules.dnc.entity.*;
 import org.jeecg.modules.system.entity.MdcProduction;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.service.IMdcProductionService;
 import org.jeecg.modules.system.service.ISysUserService;
-import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import redis.clients.jedis.Jedis;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -79,6 +76,8 @@
     private IProcessStreamPermissionService iProcessStreamPermissionService;
     @Autowired
     private IWorkStepPermissionService iWorkStepPermissionService;
+    @Autowired
+    private IProductMixService productMixService;
 
     @Override
     @Transactional(rollbackFor = {Exception.class})
@@ -106,6 +105,10 @@
         if (!b) {
             ExceptionCast.cast(ProductInfoCode.PRODUCT_SAVE_ERROR);
         }
+        //娣诲姞缁撴瀯鏍�
+        ProductMix productMix = new ProductMix(Long.parseLong(productInfo.getProductId()),0,productInfo.getProductName(),productInfo.getProductNo(),"1");
+        productMixService.save(productMix);
+        //娣诲姞鐢ㄦ埛鏉冮檺
         PermissionStreamNew stream = new PermissionStreamNew();
         stream.setBusinessId(productInfo.getProductId());
         stream.setUserId(userId);
@@ -239,6 +242,9 @@
         b = permissionStreamNewService.deletePermissionStreamNewByBusinessId(id, "1","1");
         if (!b)
             ExceptionCast.cast(CommonCode.FAIL);
+        b = productMixService.removeById(id);
+        if (!b)
+            ExceptionCast.cast(CommonCode.FAIL);
         return super.removeById(id);
     }
 
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
index d4dd1eb..87be894 100644
--- 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
@@ -1,7 +1,5 @@
 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;
@@ -11,7 +9,6 @@
 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;
@@ -53,6 +50,9 @@
 
     @Autowired
     private IProductPermissionService productPermissionService;
+
+    @Autowired
+    private IProductMixService productMixService;
 
     @Override
     public List<WorkStep> getByUserPerms(String userId) {
@@ -137,11 +137,10 @@
                     ExceptionCast.cast(CommonCode.FAIL);
             }
         }
-        //娣诲姞鐢ㄦ埛鏉冮檺
-        b = productPermissionService.add(workStep.getId(), userId,"6");
-        if (!b) {
-            ExceptionCast.cast(ProductInfoCode.PRODUCT_SAVE_ERROR);
-        }
+        //娣诲姞缁撴瀯鏍�
+        ProductMix productMix = new ProductMix(Long.parseLong(workStep.getId()),Long.parseLong(workStep.getProcessId())
+                ,workStep.getStepName(),workStep.getStepCode(),"6");
+        productMixService.save(productMix);
         //娣诲姞鏉冮檺楠岃瘉
         PermissionStreamNew permissionStream = new PermissionStreamNew();
         permissionStream.setUserId(userId);
@@ -293,6 +292,10 @@
         if (!docRelativeList.isEmpty()){
             ExceptionCast.cast(ProcessInfoCode.WORKSTEP_HAS_DOC);
         }
+        boolean b=productMixService.removeById(id);
+        if(!b) {
+            ExceptionCast.cast(CommonCode.FAIL);
+        }
         return super.removeById(id);
     }
 

--
Gitblit v1.9.3