DNC平移航宇救生   >  树结构新增工序、工步,去除默认新增工序,新增工步
已重命名1个文件
已添加7个文件
已修改10个文件
640 ■■■■■ 文件已修改
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/WorkStepController.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/PermissionStream.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/ProcessStream.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/entity/WorkStep.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/ProcessStreamMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/WorkStepMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DncPassLogMapper.xml 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/ProcessStreamMapper.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/WorkStepMapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProcessInfoCode.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProcessStreamService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IWorkStepService.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/WorkStepServiceImpl.java 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/support/ProductTreeWrapper.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
    }
}
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
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;
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;
}
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);
}
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);
}
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DncPassLogMapper.xml
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>
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>
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,"工序下有关联的文档,无法删除!"),
    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,"该工步已存在!");
    //操作代码
    @ApiModelProperty(value = "操作是否成功", example = "true", required = true)
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);
}
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);
}
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);
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);
    }
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);
    }
}
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);
    }
}
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;
    }
}
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 {
                //有partsId,零件下的工序
                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;
    }