lyh
2025-02-14 f2f8241dd52ef12ec109f6f4f0f13042055338ac
修改指派设备 修改设备结构树权限
优化查询 优化排序
已添加5个文件
已修改29个文件
913 ■■■■ 文件已修改
lxzn-module-dnc/src/main/java/org/jeecg/modules/activiti/entity/AssignFileStream.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/activiti/service/impl/AssignFileStreamServiceImpl.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ProductInfoController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/ComponentPermissionMapper.xml 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoQueryRequest.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ComponentInfoCode.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/PartsInfoCode.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProcessInfoCode.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProductInfoCode.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceGroupPermissionService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceInfoService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDocInfoService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IPermissionStreamService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProductInfoService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IWorkStepService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceGroupPermissionServiceImpl.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceInfoServiceImpl.java 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocRelativeServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PermissionStreamServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/WorkStepServiceImpl.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/utils/CamelToSnakeRegex.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/DncDevicePermission.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/DncDevicePermissionMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcProductionEquipmentService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcProductionEquipmentServiceImpl.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/DncDeviceGroupPermission.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/DncDeviceGroupPermissionMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-dnc/src/main/java/org/jeecg/modules/activiti/entity/AssignFileStream.java
@@ -25,6 +25,8 @@
    private String partsId;
    @TableField(value = "process_id")
    private String processId;
    @TableField(value = "step_id")
    private String stepId;
    @TableField(value = "doc_id")
    private String docId;
    @TableField(value = "file_id")
@@ -64,4 +66,10 @@
    @TableLogic
    @TableField(value = "delete_flag", select = false)
    private Integer deleteFlag = 0;
    /**指派设备专用-所属ID*/
    private transient String attributionId;
    /**指派设备专用-所属type*/
    private transient String attributionType;
}
lxzn-module-dnc/src/main/java/org/jeecg/modules/activiti/service/impl/AssignFileStreamServiceImpl.java
@@ -71,6 +71,8 @@
    @Autowired
    private IProcessStreamService processStreamService;
    @Autowired
    private IWorkStepService workStepService;
    @Autowired
    private IPermissionStreamService permissionStreamService;
    @Autowired
    private IDepartmentService departmentService;
@@ -195,16 +197,17 @@
        //校验开始
        if(stream == null)
            ExceptionCast.cast(CommonCode.INVALID_PARAM);
        if(!ValidateUtil.validateString(stream.getProcessId()) || !ValidateUtil.validateString(stream.getDocId())
                || !ValidateUtil.validateString(stream.getFileId()))
        if(!ValidateUtil.validateString(stream.getAttributionId()) || !ValidateUtil.validateString(stream.getDocId())
                || !ValidateUtil.validateString(stream.getFileId())||!ValidateUtil.validateString(stream.getAttributionType()) )
            ExceptionCast.cast(ActivitiCode.ACT_BUSINESS_SAVE_ERROR);
        if(!ValidateUtil.validateString(stream.getDeviceId()))
            ExceptionCast.cast(ActivitiCode.ACT_ASSIGN_DEVICE_NONE);
                LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String userId = user.getId();
        if(!ValidateUtil.validateString(userId))
            ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST);
        DocInfo docInfo = docInfoService.getByDocAttrAndDocId(stream.getDocId(), 5, stream.getProcessId());
        //修改为前端传入
        DocInfo docInfo = docInfoService.getByDocAttrAndDocId(stream.getDocId(), Integer.parseInt(stream.getAttributionType()), stream.getAttributionId());
        if(docInfo == null || docInfo.getDocStatus() == 3)
            ExceptionCast.cast(ActivitiCode.ACT_DOC_ERROR);
        DeviceInfo deviceInfo = deviceInfoService.getById(stream.getDeviceId());
@@ -315,8 +318,8 @@
    public ResponseResult applyAssignFileNonActive(AssignFileStream stream) {
        if(stream == null)
            ExceptionCast.cast(CommonCode.INVALID_PARAM);
        if(!ValidateUtil.validateString(stream.getProcessId()) || !ValidateUtil.validateString(stream.getDocId())
                || !ValidateUtil.validateString(stream.getFileId()))
        if(!ValidateUtil.validateString(stream.getAttributionId()) || !ValidateUtil.validateString(stream.getDocId())
                || !ValidateUtil.validateString(stream.getFileId())||!ValidateUtil.validateString(stream.getAttributionType()))
            ExceptionCast.cast(CommonCode.INVALID_PARAM);
        if(!ValidateUtil.validateString(stream.getDeviceId()))
            ExceptionCast.cast(ActivitiCode.ACT_ASSIGN_DEVICE_NONE);
@@ -324,7 +327,7 @@
        String userId = user.getId();
        if(!ValidateUtil.validateString(userId))
            ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST);
        DocInfo docInfo = docInfoService.getByDocAttrAndDocId(stream.getDocId(), 5, stream.getProcessId());
        DocInfo docInfo = docInfoService.getByDocAttrAndDocId(stream.getDocId(), Integer.parseInt(stream.getAttributionType()), stream.getAttributionId());
        if(docInfo == null || docInfo.getDocStatus() == 3)
            ExceptionCast.cast(ActivitiCode.ACT_DOC_ERROR);
@@ -356,29 +359,62 @@
                        docFile.getFileName(), docFile.getFileSuffix());
            }
        }*/
        ProcessStream processStream = processStreamService.getById(stream.getProcessId());
        if(processStream == null)
            ExceptionCast.cast(CommonCode.INVALID_PARAM);
        stream.setProductId(processStream.getProductId());
        stream.setComponentId(processStream.getComponentId());
        stream.setPartsId(processStream.getPartsId());
        List<PermissionStream> permissionStreams = null;
        if(ValidateUtil.validateString(processStream.getPartsId())) {
            //进入零件
            permissionStreams = permissionStreamService.getByPartsId(stream.getProductId(), stream.getComponentId(), stream.getPartsId());
        }else if(ValidateUtil.validateString(processStream.getComponentId())) {
            //进入部件的处理
            permissionStreams = permissionStreamService.getByComponentId(stream.getProductId(), stream.getComponentId());
        }
        if(permissionStreams == null || permissionStreams.isEmpty())
            ExceptionCast.cast(ActivitiCode.ACT_NODE_DEPART_NONE);
        List<String> departIds = new ArrayList<>();
        Map<String, Department> map = departmentService.getMapByUserId(userId);
        permissionStreams.forEach(item -> {
            if(map.containsKey(item.getDepartId())) {
                departIds.add(item.getDepartId());
        if (stream.getAttributionType().equals("5")){
            //工序
            ProcessStream processStream = processStreamService.getById(stream.getAttributionId());
            if(processStream == null)
                ExceptionCast.cast(CommonCode.INVALID_PARAM);
            stream.setProductId(processStream.getProductId());
            stream.setComponentId(processStream.getComponentId());
            stream.setPartsId(processStream.getPartsId());
            stream.setProcessId(stream.getAttributionId());
            List<PermissionStream> permissionStreams = null;
            if(ValidateUtil.validateString(processStream.getPartsId())) {
                //进入零件
                permissionStreams = permissionStreamService.getByPartsId(stream.getProductId(), stream.getComponentId(), stream.getPartsId());
            }else if(ValidateUtil.validateString(processStream.getComponentId())) {
                //进入部件的处理
                permissionStreams = permissionStreamService.getByComponentId(stream.getProductId(), stream.getComponentId());
            }
        });
            if(permissionStreams == null || permissionStreams.isEmpty())
                ExceptionCast.cast(ActivitiCode.ACT_NODE_DEPART_NONE);
            Map<String, Department> map = departmentService.getMapByUserId(userId);
            permissionStreams.forEach(item -> {
                if(map.containsKey(item.getDepartId())) {
                    departIds.add(item.getDepartId());
                }
            });
        }else{
            //工步
            WorkStep workStep=workStepService.getById(stream.getAttributionId());
            if(workStep == null)
                ExceptionCast.cast(CommonCode.INVALID_PARAM);
            stream.setProductId(workStep.getProductId());
            stream.setComponentId(workStep.getComponentId());
            stream.setPartsId(workStep.getPartsId());
            stream.setProcessId(workStep.getProcessId());
            stream.setProcessId(stream.getAttributionId());
            List<PermissionStream> permissionStreams = null;
            if(ValidateUtil.validateString(workStep.getProcessId())) {
                //进入工序
                permissionStreams=permissionStreamService.getByProcessId(stream.getProductId(), stream.getComponentId(), stream.getPartsId(),stream.getProcessId());
            }else if(ValidateUtil.validateString(workStep.getPartsId())) {
                //进入零件
                permissionStreams = permissionStreamService.getByPartsId(stream.getProductId(), stream.getComponentId(), stream.getPartsId());
            }else if(ValidateUtil.validateString(workStep.getComponentId())) {
                //进入部件的处理
                permissionStreams = permissionStreamService.getByComponentId(stream.getProductId(), stream.getComponentId());
            }
            if(permissionStreams == null || permissionStreams.isEmpty())
                ExceptionCast.cast(ActivitiCode.ACT_NODE_DEPART_NONE);
            Map<String, Department> map = departmentService.getMapByUserId(userId);
            permissionStreams.forEach(item -> {
                if(map.containsKey(item.getDepartId())) {
                    departIds.add(item.getDepartId());
                }
            });
        }
        if(departIds.isEmpty())
            ExceptionCast.cast(ActivitiCode.ACT_USER_NOT_PERM);
        //deviceDoc = docInfoService.findByAttrAndDocName(docInfo.getDocName(), 4, stream.getDeviceId());
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/ProductInfoController.java
@@ -5,6 +5,7 @@
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
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.common.system.vo.LoginUser;
@@ -254,4 +255,21 @@
            list = Collections.emptyList();
        return new QueryListResponseResult<>(CommonCode.SUCCESS, list);
    }
    /**
     * äº§å“ç»“构树-通过类型就行删除
     * @param id
     * @param type
     * @return
     */
    @AutoLog(value = "产品结构树-通过类型就行删除")
    @ApiOperation(value = "产品结构树-通过类型就行删除", notes = "产品结构树-通过类型就行删除")
    @DeleteMapping("/delete/{id}/{type}")
    public Result<?> deleteProductTreeByType(@PathVariable("id") String id, @PathVariable("type") Integer type) {
        boolean b =productInfoService.deleteProductTree(id, type);
        if (b){
            return Result.ok("删除成功!");
        }
        return Result.error("删除失败!");
    }
}
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/ComponentPermissionMapper.xml
@@ -2,26 +2,25 @@
<!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.ComponentPermissionMapper">
    <select id="getUserPermsByComponentId" resultType="org.jeecg.modules.dnc.ucenter.UserDepartExt" parameterType="String">
        select u.user_id
        select u.id
        , u.username
        , u.nickname
        , u.user_pic
        , u.phone_no
        , u.realname
        , u.phone
        , u.email
        from sys_user u
        inner join
        (select user_id from nc_component_permission where component_id=#{componentId}) p
        on u.user_id=p.user_id
        on u.id=p.user_id
    </select>
    <select id="getUserNonPermsByComponentId" resultType="org.jeecg.modules.system.entity.SysUser" parameterType="String">
        select u.user_id
        , u.username
        , u.nickname
        , u.user_pic
        , u.phone_no
        select u.id
             , u.username
             , u.realname
             , u.phone
             , u.email
        , u.email
        from sys_user u
        where u.user_id not in (select user_id from nc_component_permission where component_id=#{componentId})
        where u.id not in (select user_id from nc_component_permission where component_id=#{componentId})
    </select>
</mapper>
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/request/DocInfoQueryRequest.java
@@ -1,9 +1,11 @@
package org.jeecg.modules.dnc.request;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.jeecg.common.aspect.annotation.Dict;
@Data
@NoArgsConstructor
@@ -15,15 +17,21 @@
    private String attributionId;
    @ApiModelProperty(value = "文档分类 NC=NC文档 OTHER=其他文档 SEND=设备发送文档 REC=设备接受文档", example = "NC", required = true)
    private String docClassCode;
    //排序字段
    @ApiModelProperty(value = "降序排列 æŽ’序字段为数据库具体字段名,需要解析; å¤šä¸ªå­—段以英文逗号分隔")
    private String descStr;
    @ApiModelProperty(value = "升序排列 æŽ’序字段为数据库具体字段名,需要解析; å¤šä¸ªå­—段以英文逗号分隔")
    private String ascStr;
    @ApiModelProperty(value = "NC文件名称")
    private String docName;
    @ApiModelProperty(value = "上传时间开始")
    private String startTime;
    @ApiModelProperty(value = "上传时间结束")
    private String endTime;
    //排序字段
    @ApiModelProperty(value = "排序字段")
    private String column;
    @ApiModelProperty(value = "排序")
    private String order;
    @ApiModelProperty(value = "文档状态")
    private String docStatus;
    @ApiModelProperty(value = "出库状态")
    private String pullStatus;
    @ApiModelProperty(value = "同步状态 1 æœªåŒæ­¥ 2 å·²åŒæ­¥")
    private Integer syncStatus;
}
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ComponentInfoCode.java
@@ -16,6 +16,7 @@
    COMPONENT_CHILD_EXIST(false, 25108, "部件存在子部件!"),
    COMPONENT_PARTS_EXIST(false, 25109, "部件有关联的零件信息!"),
    COMPONENT_PROCESS_EXIST(false, 25110, "部件有关联的工序信息!"),
    COMPONENT_DOC_EXIST(false, 25116, "部件有关联的文档信息!"),
    COMPONENT_CODE_NONE(false, 25111, "请输入部件代号!"),
    COMPONENT_IS_EXIST(false, 25112, "部件已存在!"),
    COMPONENT_PN_NOT_VALID(false, 25113, "PN码不合法!"),
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/PartsInfoCode.java
@@ -13,6 +13,7 @@
    PARTS_USER_NOT_PERM(false,25205,"没有该零件的权限!"),
    PARTS_DELETE_ERROR(false,25206,"删除零件失败!"),
    PARTS_PROCESS_EXIST(false,25207,"零件有关联的工序信息!"),
    PARTS_DOC_EXIST(false,25208,"零件有关联的文档数据"),
    PARTS_CODE_NONE(false,25208,"请输入零件代号!"),
    PARTS_IS_EXIST(false,25209,"零件已存在!"),
    PARTS_USER_NONE(false,25210,"零件无法清空用户权限,请至少保留一位可操作用户!");
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProcessInfoCode.java
@@ -16,7 +16,9 @@
    PROCESS_IS_EXIST(false,25408,"该工序已存在!"),
    WORKSTEP_NAME_NONE(false,25409,"请输入工步名称!"),
    WORKSTEP_NOT_EXIST(false,25410,"无效的工步!"),
    WORKSTEP_IS_EXIST(false,25411,"该工步已存在!");
    WORKSTEP_IS_EXIST(false,25411,"该工步已存在!"),
    WORKSTEP_HAS_DATA(false,25412,"工步下有关联的工序数据"),
    WORKSTEP_HAS_DOC(false,25413,"工步下有关联的文档数据");
    //操作代码
    @ApiModelProperty(value = "操作是否成功", example = "true", required = true)
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/response/ProductInfoCode.java
@@ -18,7 +18,8 @@
    PRODUCT_COMPONENT_EXIST(false, 25010, "产品有关联的部件数据!"),
    PRODUCT_PARTS_EXIST(false, 25011, "产品有关联的零件数据!"),
    PRODUCT_PROCESS_EXIST(false, 25012, "产品有关联的工序数据!"),
    PRODUCT_NO_NONE(false,25013,"请输入产品代号!"),
    PRODUCT_DOC_EXIST(false, 25013, "产品有关联的文档数据!"),
    PRODUCT_NO_NONE(false,25016,"请输入产品代号!"),
    PRODUCT_IS_EXIST(false,25014,"产品已存在!"),
    PRODUCT_USER_NONE(false,25015,"产品无法清空用户权限,请至少保留一位可操作用户!");
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceGroupPermissionService.java
@@ -3,8 +3,10 @@
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.dnc.entity.DeviceGroupPermission;
import org.jeecg.modules.dnc.ucenter.UserDepartExt;
import org.jeecg.modules.system.entity.MdcProduction;
import org.jeecg.modules.system.entity.SysUser;
import java.util.Collection;
import java.util.List;
public interface IDeviceGroupPermissionService extends IService<DeviceGroupPermission> {
@@ -50,4 +52,20 @@
     * @return
     */
    List<DeviceGroupPermission> getByGroupId(String groupId);
    /**
     * åˆ†é…è®¾å¤‡ç”¨æˆ·
     * @param mdcProduction
     * @param userList
     * @return
     */
    boolean assignAddUser(MdcProduction mdcProduction, Collection<SysUser> userList);
    /**
     * åˆ é™¤è®¾å¤‡ç”¨æˆ·
     * @param mdcProduction
     * @param userList
     * @return
     */
    boolean assignRemoveUser(MdcProduction mdcProduction, Collection<SysUser> userList);
}
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDeviceInfoService.java
@@ -4,6 +4,8 @@
import org.jeecg.modules.dnc.entity.DeviceInfo;
import org.jeecg.modules.dnc.response.CommonGenericTree;
import org.jeecg.modules.dnc.ucenter.UserDepartExt;
import org.jeecg.modules.mdc.entity.MdcEquipment;
import org.jeecg.modules.system.entity.MdcProduction;
import org.jeecg.modules.system.entity.SysUser;
import java.util.Collection;
@@ -80,19 +82,19 @@
    /**
     * åˆ†é…è®¾å¤‡ç”¨æˆ·
     * @param deviceInfo
     * @param mdcEquipment
     * @param userList
     * @return
     */
    boolean assignAddUser(DeviceInfo deviceInfo, Collection<SysUser> userList);
    boolean assignAddUser(MdcEquipment mdcEquipment, Collection<SysUser> userList);
    /**
     * åˆ é™¤è®¾å¤‡ç”¨æˆ·
     * @param deviceInfo
     * @param mdcEquipment
     * @param userList
     * @return
     */
    boolean assignRemoveUser(DeviceInfo deviceInfo, Collection<SysUser> userList);
    boolean assignRemoveUser(MdcEquipment mdcEquipment, Collection<SysUser> userList);
    /**
     * æ ¹æ®ä¸€ç»„groupId æŸ¥æ‰¾è®¾å¤‡
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDocInfoService.java
@@ -151,6 +151,13 @@
    boolean deleteByProcessId(String processId);
    /**
     * åˆ é™¤å·¥æ­¥ä¸‹çš„æ‰€æœ‰æ–‡æ¡£
     * @param stepId
     * @return
     */
    boolean deleteByStepId(String stepId);
    /**
     * åˆ é™¤æ–‡æ¡£ä¿¡æ¯
     * @param attrType
     * @param attrId
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IPermissionStreamService.java
@@ -76,6 +76,16 @@
    List<PermissionStream> getByPartsId(String productId, String componentId, String partsId);
    /**
     * æ ¹æ®å·¥åºç¼–号查找部门权限
     * @param productId
     * @param componentId
     * @param partsId
     * @param processId
     * @return
     */
    List<PermissionStream> getByProcessId(String productId, String componentId, String partsId, String processId);
    /**
     * åˆ é™¤ç”¨æˆ·æƒé™
     * @param productId
     * @return
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IProductInfoService.java
@@ -208,5 +208,13 @@
     * @return
     */
    List<CommonGenericTree> searchProductTree(String userId, String queryParam);
    /**
     * äº§å“ç»“构树-通过类型就行删除
     * @param id
     * @param type
     * @return
     */
    boolean deleteProductTree(String id, Integer type);
}
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IWorkStepService.java
@@ -75,4 +75,11 @@
     * @return
     */
    boolean assignRemoveDepart(WorkStep workStep, Collection<MdcProduction> departmentList);
    /**
     * åˆ é™¤å·¥æ­¥ä¿¡æ¯ é€»è¾‘删除
     * @param id
     * @return
     */
    boolean deleteWorkStep(String id);
}
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ComponentInfoSeServiceImpl.java
@@ -2,6 +2,7 @@
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;
@@ -52,6 +53,8 @@
    private IDocInfoService docInfoService;
    @Autowired
    private INcLogInfoService iNcLogInfoService;
    @Autowired
    private IDocRelativeService iDocRelativeService;
    @Override
    @Transactional(rollbackFor = {Exception.class})
@@ -297,18 +300,12 @@
        if(processStreamList != null && !processStreamList.isEmpty()) {
            ExceptionCast.cast(ComponentInfoCode.COMPONENT_PROCESS_EXIST);
        }
        //添加日志
        NcLogInfo ncLogInfo = new NcLogInfo();
        //模块
        ncLogInfo.setModuleInfo("产品结构树");
        //类型
        ncLogInfo.setOperateType(4);
        //日志内容
        ncLogInfo.setLogContent("部件名称:"+componentInfo.getComponentName());
        iNcLogInfoService.saveLogNcInfos(ncLogInfo);
        boolean b = docInfoService.deleteByComponentId(id);
        if(!b)
            ExceptionCast.cast(CommonCode.FAIL);
        boolean b;
        //验证是否存在文档
        List<DocRelative> docRelativeList=iDocRelativeService.list(new QueryWrapper<DocRelative>().eq("attribution_type","2").eq("attribution_id",id));
        if (!docRelativeList.isEmpty()){
            ExceptionCast.cast(ComponentInfoCode.COMPONENT_DOC_EXIST);
        }
        b = componentPermissionService.deleteByComponentId(id);
        if(!b)
            ExceptionCast.cast(CommonCode.FAIL);
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceGroupPermissionServiceImpl.java
@@ -1,23 +1,41 @@
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.jeecg.modules.dnc.entity.DeviceGroup;
import org.jeecg.modules.dnc.entity.DeviceGroupPermission;
import org.jeecg.modules.dnc.entity.DevicePermissionStream;
import org.jeecg.modules.dnc.exception.ExceptionCast;
import org.jeecg.modules.dnc.mapper.DeviceGroupPermissionMapper;
import org.jeecg.modules.dnc.response.CommonCode;
import org.jeecg.modules.dnc.response.DeviceGroupCode;
import org.jeecg.modules.dnc.service.IDevicePermissionStreamService;
import org.jeecg.modules.dnc.ucenter.UserDepartExt;
import org.jeecg.modules.dnc.utils.ValidateUtil;
import org.jeecg.modules.system.entity.MdcProduction;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.dnc.service.IDeviceGroupPermissionService;
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 java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@Service
public class DeviceGroupPermissionServiceImpl extends ServiceImpl<DeviceGroupPermissionMapper, DeviceGroupPermission> implements IDeviceGroupPermissionService {
    @Autowired
    @Lazy
    private IDeviceGroupPermissionService groupPermissionService;
    @Autowired
    @Lazy
    private IDevicePermissionStreamService devicePermissionStreamService;
    @Override
    public List<UserDepartExt> getUserPermsByGroupId(String groupId) {
        return super.getBaseMapper().getUserPermsByGroupId(groupId);
@@ -44,7 +62,7 @@
        if(permissions == null || permissions.isEmpty())
            return false;
        if(permissions.size() == 1){
            super.removeById(permissions.get(0).getGroupPermId());
            return super.removeById(permissions.get(0).getGroupPermId());
        }
        List<String> ids = new ArrayList<>();
        permissions.forEach(item -> {
@@ -68,4 +86,78 @@
            list = Collections.emptyList();
        return list;
    }
    @Override
    @Transactional(rollbackFor = {Exception.class})
    public boolean assignAddUser(MdcProduction mdcProduction, Collection<SysUser> userList) {
        if(mdcProduction == null || userList == null || userList.isEmpty())
            ExceptionCast.cast(CommonCode.INVALID_PARAM);
        List<DeviceGroupPermission> permissionList = new ArrayList<>();
        List<DevicePermissionStream> permissionStreamList = new ArrayList<>();
        userList.forEach(item -> {
            DeviceGroupPermission en = groupPermissionService.getByUserIdAndGroupId(item.getId(), mdcProduction.getId());
            if(en == null) {
                en = new DeviceGroupPermission();
                en.setUserId(item.getId());
                en.setGroupId(mdcProduction.getId());
                permissionList.add(en);
            }
            DevicePermissionStream stream = devicePermissionStreamService.getByGroupIdAndUserId(mdcProduction.getId(), item.getId());
            if(stream == null) {
                stream = new DevicePermissionStream();
                stream.setUserId(item.getId());
                stream.setGroupId(mdcProduction.getId());
                permissionStreamList.add(stream);
            }
        });
        if(!permissionList.isEmpty()) {
            boolean b = groupPermissionService.saveBatch(permissionList);
            if(!b) {
                ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
            }
        }
        if(!permissionStreamList.isEmpty()) {
            boolean b = devicePermissionStreamService.saveBatch(permissionStreamList);
            if(!b) {
                ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
            }
        }
        return true;
    }
    @Override
    @Transactional(rollbackFor = {Exception.class})
    public boolean assignRemoveUser(MdcProduction mdcProduction, Collection<SysUser> userList) {
        if(mdcProduction == null || userList == null || userList.isEmpty())
            ExceptionCast.cast(CommonCode.INVALID_PARAM);
        List<DeviceGroupPermission> permissionList = new ArrayList<>();
        List<DevicePermissionStream> permissionStreamList = new ArrayList<>();
        userList.forEach(item -> {
            DeviceGroupPermission en = groupPermissionService.getByUserIdAndGroupId(item.getId(), mdcProduction.getId());
            if(en != null) {
                permissionList.add(en);
            }
            DevicePermissionStream stream = devicePermissionStreamService.getByGroupIdAndUserId(mdcProduction.getId(), item.getId());
            if(stream != null) {
                permissionStreamList.add(stream);
            }
        });
        //校验清空设备分组权限操作
        List<DeviceGroupPermission> existList = groupPermissionService.getByGroupId(mdcProduction.getId());
        if(existList.size() <= permissionList.size())
            ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_USER_NONE);
        if(!permissionList.isEmpty()) {
            boolean b = groupPermissionService.removeByCollection(permissionList);
            if(!b) {
                ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
            }
        }
        if(!permissionStreamList.isEmpty()) {
            boolean b = devicePermissionStreamService.removeByCollection(permissionStreamList);
            if(!b) {
                ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
            }
        }
        return true;
    }
}
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceInfoServiceImpl.java
@@ -1,6 +1,7 @@
package org.jeecg.modules.dnc.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.system.vo.LoginUser;
@@ -14,7 +15,13 @@
import org.jeecg.modules.dnc.ucenter.UserDepartExt;
import org.jeecg.modules.dnc.utils.ValidateUtil;
import org.jeecg.modules.dnc.entity.*;
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.MdcProduction;
import org.jeecg.modules.system.entity.MdcProductionEquipment;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.service.IMdcProductionService;
import org.jeecg.modules.system.service.ISysUserService;
import org.jeecg.modules.dnc.response.DeviceCode;
import org.jeecg.modules.dnc.response.DeviceGroupCode;
@@ -55,6 +62,12 @@
    private IProductInfoService productInfoService;
    @Autowired
    private INcLogInfoService iNcLogInfoService;
    @Autowired
    private IMdcProductionService mdcProductionService;
    @Autowired
    private IMdcEquipmentService mdcEquipmentService;
    @Autowired
    private IMdcProductionEquipmentService mdcProductionEquipmentService;
    @Override
    @Transactional(rollbackFor = {Exception.class})
@@ -208,19 +221,19 @@
        if(!ValidateUtil.validateString(userId))
            ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST);
        if(nodeType == 1) {
            DeviceGroup en = deviceGroupService.getById(paramId);
            if(en == null) {
            MdcProduction mdcProduction=mdcProductionService.getById(paramId);
            if(mdcProduction == null) {
                ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_NOT_EXIST);
            }
            DeviceGroupPermission permission = deviceGroupPermissionService.getByUserIdAndGroupId(userId, en.getGroupId());
            DeviceGroupPermission permission = deviceGroupPermissionService.getByUserIdAndGroupId(userId, mdcProduction.getId());
            if(permission == null)
                return false;
            return true;
        }else if(nodeType == 2) {
            DeviceInfo deviceInfo = super.getById(paramId);
            if(deviceInfo == null)
            MdcEquipment mdcEquipment = mdcEquipmentService.getById(paramId);
            if(mdcEquipment == null)
                ExceptionCast.cast(DeviceCode.DEVICE_NOT_EXIST);
            DevicePermission permission = devicePermissionService.getByUserIdAndDeviceId(userId, deviceInfo.getDeviceId());
            DevicePermission permission = devicePermissionService.getByUserIdAndDeviceId(userId, mdcEquipment.getId());
            if(permission == null)
                return false;
            return true;
@@ -270,43 +283,43 @@
            ExceptionCast.cast(CommonCode.INVALID_PARAM);
        if(relativeFlag == 1 && nodeType == 1) {
            //分配分组权限才可向下传递用户
            DeviceGroup deviceGroup = deviceGroupService.getById(paramId);
            if(deviceGroup == null) {
            MdcProduction mdcProduction= mdcProductionService.getById(paramId);
            if(mdcProduction == null) {
                ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_NOT_EXIST);
            }
            boolean b1 = checkDevicePerm(1, deviceGroup.getGroupId());
            boolean b1 = checkDevicePerm(1, mdcProduction.getId());
            if(!b1) {
                ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
            }
            b1 = deviceGroupService.assignAddUser(deviceGroup, userList);
            b1 = deviceGroupPermissionService.assignAddUser(mdcProduction, userList);
            if(!b1) {
                ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
            }
            //获取分组下所有的子分组
            List<DeviceGroup> childrenList = deviceGroupService.getChildrenByParentId(deviceGroup.getGroupId());
            List<MdcProduction> childrenList = mdcProductionService.queryProdByPid(mdcProduction.getId());
            List<String> childrenIds = new ArrayList<>();
            if(childrenList != null && !childrenList.isEmpty()) {
                childrenList.forEach(item -> {
                    childrenIds.add(item.getGroupId());
                    boolean b = checkDevicePerm(1, item.getGroupId());
                    childrenIds.add(item.getId());
                    boolean b = checkDevicePerm(1, item.getId());
                    if(b) {
                        b = deviceGroupService.assignAddUser(item, userList);
                        b = deviceGroupPermissionService.assignAddUser(mdcProduction, userList);
                        if(!b) {
                            ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
                        }
                    }
                });
            }
            List<DeviceInfo> deviceInfoList = null;
            List<MdcEquipment> mdcEquipmentList = null;
            if(childrenIds.isEmpty()) {
                deviceInfoList = getByGroupId(deviceGroup.getGroupId());
                mdcEquipmentList =mdcProductionEquipmentService.queryEquipmentsOfProduction(mdcProduction.getId());
            }else {
                childrenIds.add(deviceGroup.getGroupId());
                deviceInfoList = getByGroupIdList(childrenIds);
                childrenIds.add(mdcProduction.getId());
                mdcEquipmentList = mdcProductionEquipmentService.queryEquipmentsOfProductions(childrenIds);
            }
            if(deviceInfoList != null && !deviceInfoList.isEmpty()) {
                deviceInfoList.forEach(item -> {
                    boolean b = checkDevicePerm(2, item.getDeviceId());
            if(mdcEquipmentList != null && !mdcEquipmentList.isEmpty()) {
                mdcEquipmentList.forEach(item -> {
                    boolean b = checkDevicePerm(2, item.getId());
                    if(b) {
                        b = assignAddUser(item, userList);
                        if(!b)
@@ -318,29 +331,29 @@
        }else if(relativeFlag == 2) {
            if(nodeType == 1) {
                //分批分组权限
                DeviceGroup deviceGroup = deviceGroupService.getById(paramId);
                if(deviceGroup == null) {
                MdcProduction mdcProduction = mdcProductionService.getById(paramId);
                if(mdcProduction == null) {
                    ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_NOT_EXIST);
                }
                boolean b = checkDevicePerm(1, deviceGroup.getGroupId());
                boolean b = checkDevicePerm(1, mdcProduction.getId());
                if(!b) {
                    ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
                }
                b = deviceGroupService.assignAddUser(deviceGroup, userList);
                b = deviceGroupPermissionService.assignAddUser(mdcProduction, userList);
                if(!b) {
                    ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
                }
                return true;
            }else if(nodeType == 2) {
                //分配设备权限
                DeviceInfo deviceInfo = super.getById(paramId);
                if(deviceInfo == null)
                MdcEquipment mdcEquipment=mdcEquipmentService.getById(paramId);
                if(mdcEquipment == null)
                    ExceptionCast.cast(DeviceCode.DEVICE_NOT_EXIST);
                boolean b = checkDevicePerm(2, deviceInfo.getDeviceId());
                boolean b = checkDevicePerm(2, mdcEquipment.getId());
                if(!b) {
                    ExceptionCast.cast(DeviceCode.DEVICE_USER_PERM_ERROR);
                }
                b = assignAddUser(deviceInfo, userList);
                b = assignAddUser(mdcEquipment, userList);
                if(!b) {
                    ExceptionCast.cast(DeviceCode.DEVICE_USER_PERM_ERROR);
                }
@@ -352,25 +365,27 @@
    @Override
    @Transactional(rollbackFor = {Exception.class})
    public boolean assignAddUser(DeviceInfo deviceInfo, Collection<SysUser> userList) {
        if(deviceInfo == null || userList == null || userList.isEmpty())
    public boolean assignAddUser(MdcEquipment mdcEquipment, Collection<SysUser> userList) {
        if(mdcEquipment == null || userList == null || userList.isEmpty())
            ExceptionCast.cast(CommonCode.INVALID_PARAM);
        MdcProductionEquipment mdcProductionEquipment=mdcProductionEquipmentService
                .list(new QueryWrapper<MdcProductionEquipment>().eq("equipment_id",mdcEquipment.getId())).get(0);
        List<DevicePermission> permissionList = new ArrayList<>();
        List<DevicePermissionStream> permissionStreamList = new ArrayList<>();
        userList.forEach(item -> {
            DevicePermission en = devicePermissionService.getByUserIdAndDeviceId(item.getId(), deviceInfo.getDeviceId());
            DevicePermission en = devicePermissionService.getByUserIdAndDeviceId(item.getId(), mdcEquipment.getId());
            if(en == null) {
                en = new DevicePermission();
                en.setUserId(item.getId());
                en.setDeviceId(deviceInfo.getDeviceId());
                en.setDeviceId(mdcEquipment.getId());
                permissionList.add(en);
            }
            DevicePermissionStream stream = devicePermissionStreamService.getByDeviceIdAndUserId(deviceInfo.getGroupId(), deviceInfo.getDeviceId(), item.getId());
            DevicePermissionStream stream = devicePermissionStreamService.getByDeviceIdAndUserId(mdcProductionEquipment.getId(), mdcEquipment.getId(), item.getId());
            if(stream == null) {
                stream = new DevicePermissionStream();
                stream.setUserId(item.getId());
                stream.setGroupId(deviceInfo.getGroupId());
                stream.setDeviceId(deviceInfo.getDeviceId());
                stream.setGroupId(mdcProductionEquipment.getId());
                stream.setDeviceId(mdcEquipment.getId());
                permissionStreamList.add(stream);
            }
        });
@@ -391,23 +406,25 @@
    @Override
    @Transactional(rollbackFor = {Exception.class})
    public boolean assignRemoveUser(DeviceInfo deviceInfo, Collection<SysUser> userList) {
        if(deviceInfo == null || userList == null || userList.isEmpty())
    public boolean assignRemoveUser(MdcEquipment mdcEquipment, Collection<SysUser> userList) {
        if(mdcEquipment == null || userList == null || userList.isEmpty())
            ExceptionCast.cast(CommonCode.INVALID_PARAM);
        MdcProductionEquipment mdcProductionEquipment=mdcProductionEquipmentService
                .list(new QueryWrapper<MdcProductionEquipment>().eq("equipment_id",mdcEquipment.getId())).get(0);
        List<DevicePermission> permissionList = new ArrayList<>();
        List<DevicePermissionStream> permissionStreamList = new ArrayList<>();
        userList.forEach(item -> {
            DevicePermission en = devicePermissionService.getByUserIdAndDeviceId(item.getId(), deviceInfo.getDeviceId());
            DevicePermission en = devicePermissionService.getByUserIdAndDeviceId(item.getId(), mdcEquipment.getId());
            if(en != null) {
                permissionList.add(en);
            }
            DevicePermissionStream stream = devicePermissionStreamService.getByDeviceIdAndUserId(deviceInfo.getGroupId(), deviceInfo.getDeviceId(), item.getId());
            DevicePermissionStream stream = devicePermissionStreamService.getByDeviceIdAndUserId(mdcProductionEquipment.getId(), mdcEquipment.getId(), item.getId());
            if(stream != null) {
                permissionStreamList.add(stream);
            }
        });
        //校验清空用户权限
        List<DevicePermission> existList = devicePermissionService.getByDeviceId(deviceInfo.getDeviceId());
        List<DevicePermission> existList = devicePermissionService.getByDeviceId(mdcEquipment.getId());
        if(existList.size() <= permissionList.size())
            ExceptionCast.cast(DeviceCode.DEVICE_USER_NONE);
        if(!permissionList.isEmpty()) {
@@ -456,43 +473,43 @@
            ExceptionCast.cast(CommonCode.INVALID_PARAM);
        if(relativeFlag == 1 && nodeType == 1) {
            //分配分组权限才可向下传递用户
            DeviceGroup deviceGroup = deviceGroupService.getById(paramId);
            if(deviceGroup == null) {
            MdcProduction mdcProduction=mdcProductionService.getById(paramId);
            if(mdcProduction == null) {
                ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_NOT_EXIST);
            }
            boolean b1 = checkDevicePerm(1, deviceGroup.getGroupId());
            boolean b1 = checkDevicePerm(1, mdcProduction.getId());
            if(!b1) {
                ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
            }
            b1 = deviceGroupService.assignRemoveUser(deviceGroup, userList);
            b1 = deviceGroupPermissionService.assignRemoveUser(mdcProduction, userList);
            if(!b1) {
                ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
            }
            //获取分组下所有的子分组
            List<DeviceGroup> childrenList = deviceGroupService.getChildrenByParentId(deviceGroup.getGroupId());
            List<MdcProduction> childrenList = mdcProductionService.queryProdByPid(mdcProduction.getId());
            List<String> childrenIds = new ArrayList<>();
            if(childrenList != null && !childrenList.isEmpty()) {
                childrenList.forEach(item -> {
                    childrenIds.add(item.getGroupId());
                    boolean b = checkDevicePerm(1, item.getGroupId());
                    childrenIds.add(item.getId());
                    boolean b = checkDevicePerm(1, item.getId());
                    if(b) {
                        b = deviceGroupService.assignRemoveUser(item, userList);
                        b = deviceGroupPermissionService.assignRemoveUser(mdcProduction, userList);
                        if(!b) {
                            ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
                        }
                    }
                });
            }
            List<DeviceInfo> deviceInfoList = null;
            List<MdcEquipment> mdcEquipmentList = null;
            if(childrenIds.isEmpty()) {
                deviceInfoList = getByGroupId(deviceGroup.getGroupId());
                mdcEquipmentList =mdcProductionEquipmentService.queryEquipmentsOfProduction(mdcProduction.getId());
            }else {
                childrenIds.add(deviceGroup.getGroupId());
                deviceInfoList = getByGroupIdList(childrenIds);
                childrenIds.add(mdcProduction.getId());
                mdcEquipmentList = mdcProductionEquipmentService.queryEquipmentsOfProductions(childrenIds);
            }
            if(deviceInfoList != null && !deviceInfoList.isEmpty()) {
                deviceInfoList.forEach(item -> {
                    boolean b = checkDevicePerm(2, item.getDeviceId());
            if(mdcEquipmentList != null && !mdcEquipmentList.isEmpty()) {
                mdcEquipmentList.forEach(item -> {
                    boolean b = checkDevicePerm(2, item.getId());
                    if(b) {
                        b = assignRemoveUser(item, userList);
                        if(!b)
@@ -504,29 +521,29 @@
        }else if(relativeFlag == 2) {
            if(nodeType == 1) {
                //分批分组权限
                DeviceGroup deviceGroup = deviceGroupService.getById(paramId);
                if(deviceGroup == null) {
                MdcProduction mdcProduction = mdcProductionService.getById(paramId);
                if(mdcProduction == null) {
                    ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_NOT_EXIST);
                }
                boolean b = checkDevicePerm(1, deviceGroup.getGroupId());
                boolean b = checkDevicePerm(1, mdcProduction.getId());
                if(!b) {
                    ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
                }
                b = deviceGroupService.assignRemoveUser(deviceGroup, userList);
                b = deviceGroupPermissionService.assignRemoveUser(mdcProduction, userList);
                if(!b) {
                    ExceptionCast.cast(DeviceGroupCode.DEVICE_GROUP_PERM_ERROR);
                }
                return true;
            }else if(nodeType == 2) {
                //分配设备权限
                DeviceInfo deviceInfo = super.getById(paramId);
                if(deviceInfo == null)
                MdcEquipment mdcEquipment=mdcEquipmentService.getById(paramId);
                if(mdcEquipment == null)
                    ExceptionCast.cast(DeviceCode.DEVICE_NOT_EXIST);
                boolean b = checkDevicePerm(2, deviceInfo.getDeviceId());
                boolean b = checkDevicePerm(2, mdcEquipment.getId());
                if(!b) {
                    ExceptionCast.cast(DeviceCode.DEVICE_USER_PERM_ERROR);
                }
                b = assignRemoveUser(deviceInfo, userList);
                b = assignRemoveUser(mdcEquipment, userList);
                if(!b) {
                    ExceptionCast.cast(DeviceCode.DEVICE_USER_PERM_ERROR);
                }
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java
@@ -16,6 +16,7 @@
import org.jeecg.modules.dnc.exception.ExceptionCast;
import org.jeecg.modules.dnc.mapper.DocInfoMapper;
import org.jeecg.modules.dnc.service.*;
import org.jeecg.modules.dnc.utils.CamelToSnakeRegex;
import org.jeecg.modules.dnc.utils.ValidateUtil;
@@ -38,7 +39,9 @@
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class DocInfoServiceImpl extends ServiceImpl<DocInfoMapper, DocInfo> implements IDocInfoService {
@@ -579,11 +582,33 @@
                queryWrapper.eq(StrUtil.isNotEmpty(docNameArr[1]), "u.doc_suffix", docNameArr[1]);
            }
        }
        queryWrapper.ge(StrUtil.isNotEmpty(docQuery.getStartTime()),"date_format(u.create_time,'%Y-%m-%d %H:%i:%s')",docQuery.getStartTime());
        queryWrapper.le(StrUtil.isNotEmpty(docQuery.getEndTime()),"date_format(u.create_time,'%Y-%m-%d %H:%i:%s')",docQuery.getEndTime());
        queryWrapper.orderByDesc("u.create_time");
        getDocQuery(docQuery, queryWrapper);
        IPage<DocInfo> docInfoIPage = super.getBaseMapper().findDocExtList(pageData, queryWrapper);
        return Result.ok(docInfoIPage);
    }
    private void getDocQuery(DocInfoQueryRequest docQuery, QueryWrapper<DocInfo> queryWrapper) {
        if (docQuery.getDocStatus() != null && docQuery.getDocStatus().contains(",")) {
            String[] docStatusArray = docQuery.getDocStatus().split(",");
            List<Integer> docStatusList = Arrays.stream(docStatusArray).map(Integer::parseInt).collect(Collectors.toList());
            queryWrapper.in("u.doc_status",docStatusList);
        }else {
            queryWrapper.eq(StrUtil.isNotEmpty(docQuery.getDocStatus()),"u.doc_status",docQuery.getDocStatus());
        }
        if (StrUtil.isNotEmpty(docQuery.getPullStatus())){
            if (("1").equals(docQuery.getPullStatus())){
                queryWrapper.isNull("o.doc_id");
            }else if (("2").equals(docQuery.getPullStatus())){
                queryWrapper.isNotNull("o.doc_id");
            }
        }
        queryWrapper.ge(StrUtil.isNotEmpty(docQuery.getStartTime()),"u.create_time",docQuery.getStartTime()+" 00:00:00");
        queryWrapper.le(StrUtil.isNotEmpty(docQuery.getEndTime()),"u.create_time",docQuery.getEndTime()+" 23:59:59");
        if (("desc").equals(docQuery.getOrder())){
            queryWrapper.orderByDesc("u."+ CamelToSnakeRegex.camelToSnake(docQuery.getColumn()));
        }else {
            queryWrapper.orderByAsc("u."+CamelToSnakeRegex.camelToSnake(docQuery.getColumn()));
        }
    }
    @Override
@@ -674,7 +699,7 @@
    public boolean deleteByProcessId(String processId) {
        if(!ValidateUtil.validateString(processId))
            ExceptionCast.cast(CommonCode.INVALID_PARAM);
        Integer attrType = 4;
        Integer attrType = 5;
        boolean b = docFileService.deleteByDocAttr(attrType, processId);
        if(!b)
            ExceptionCast.cast(CommonCode.FAIL);
@@ -683,6 +708,27 @@
            ExceptionCast.cast(CommonCode.FAIL);
        }
        return docRelativeService.deleteByDocAttr(attrType, processId);
    }
    /**
     * åˆ é™¤å·¥æ­¥ä¸‹çš„æ‰€æœ‰æ–‡æ¡£
     * @param stepId
     * @return
     */
    @Override
    @Transactional(rollbackFor = {Exception.class})
    public boolean deleteByStepId(String stepId){
        if(!ValidateUtil.validateString(stepId))
            ExceptionCast.cast(CommonCode.INVALID_PARAM);
        Integer attrType = 6;
        boolean b = docFileService.deleteByDocAttr(attrType, stepId);
        if(!b)
            ExceptionCast.cast(CommonCode.FAIL);
        b = deleteByDocAttr(attrType, stepId);
        if(!b) {
            ExceptionCast.cast(CommonCode.FAIL);
        }
        return docRelativeService.deleteByDocAttr(attrType, stepId);
    }
    @Override
@@ -778,9 +824,34 @@
                queryWrapper.eq(StrUtil.isNotEmpty(docNameArr[1]), "u.doc_suffix", docNameArr[1]);
            }
        }
        queryWrapper.ge(StrUtil.isNotEmpty(docQuery.getStartTime()),"date_format(u.create_time,'%Y-%m-%d %H:%i:%s')",docQuery.getStartTime());
        queryWrapper.le(StrUtil.isNotEmpty(docQuery.getEndTime()),"date_format(u.create_time,'%Y-%m-%d %H:%i:%s')",docQuery.getEndTime());
        queryWrapper.orderByDesc("u.create_time");
        if (docQuery.getDocStatus() != null && docQuery.getDocStatus().contains(",")) {
            String[] docStatusArray = docQuery.getDocStatus().split(",");
            List<Integer> docStatusList = Arrays.stream(docStatusArray).map(Integer::parseInt).collect(Collectors.toList());
            queryWrapper.in("u.doc_status",docStatusList);
        }else {
            queryWrapper.eq(StrUtil.isNotEmpty(docQuery.getDocStatus()),"u.doc_status",docQuery.getDocStatus());
        }
        if (StrUtil.isNotEmpty(docQuery.getPullStatus())){
            if (("1").equals(docQuery.getPullStatus())){
                queryWrapper.isNull("o.doc_id");
            }else if (("2").equals(docQuery.getPullStatus())){
                queryWrapper.isNotNull("o.doc_id");
            }
        }
        if (docQuery.getSyncStatus()!=null){
            if (docQuery.getSyncStatus()==1){
                queryWrapper.isNotNull("t.sync_flag");
            }else if (docQuery.getSyncStatus()==2){
                queryWrapper.isNull("t.sync_flag");
            }
        }
        queryWrapper.ge(StrUtil.isNotEmpty(docQuery.getStartTime()),"u.create_time",docQuery.getStartTime()+" 00:00:00");
        queryWrapper.le(StrUtil.isNotEmpty(docQuery.getEndTime()),"u.create_time",docQuery.getEndTime()+" 23:59:59");
        if (("desc").equals(docQuery.getOrder())){
            queryWrapper.orderByDesc("u."+ CamelToSnakeRegex.camelToSnake(docQuery.getColumn()));
        }else {
            queryWrapper.orderByAsc("u."+CamelToSnakeRegex.camelToSnake(docQuery.getColumn()));
        }
        IPage<DocInfo> docInfoIPage = super.getBaseMapper().findDeviceDocExtList(pageData, queryWrapper);
        if (docInfoIPage != null && docInfoIPage.getRecords() != null && !docInfoIPage.getRecords().isEmpty()) {
            for (DocInfo d : docInfoIPage.getRecords()) {
@@ -815,9 +886,7 @@
                queryWrapper.eq(StrUtil.isNotEmpty(docNameArr[1]), "u.doc_suffix", docNameArr[1]);
            }
        }
        queryWrapper.ge(StrUtil.isNotEmpty(docQuery.getStartTime()),"date_format(u.create_time,'%Y-%m-%d %H:%i:%s')",docQuery.getStartTime());
        queryWrapper.le(StrUtil.isNotEmpty(docQuery.getEndTime()),"date_format(u.create_time,'%Y-%m-%d %H:%i:%s')",docQuery.getEndTime());
        queryWrapper.orderByDesc("u.create_time");
        getDocQuery(docQuery, queryWrapper);
        return super.getBaseMapper().findDocExtList(queryWrapper);
    }
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocRelativeServiceImpl.java
@@ -88,11 +88,11 @@
        if (b && docRel) {
            DocInfo info = docInfoMapper.selectById(docId);
            //todo ä¿®æ”¹ä¸ºmdc设备
            DeviceInfo deviceInfo = deviceInfoService.getById(attrId);
            List<String> strings =  deviceGroupService.findListParentTreeAll(deviceInfo.getGroupId());
            MdcEquipment mdcEquipment=iMdcEquipmentService.getById(attrId);
            List<String> strings =  iMdcProductionService.findListParentTreeAll(mdcEquipment.getId());
            if (strings != null && !strings.isEmpty()) {
                String path = StringUtils.join(strings.toArray(), "/");
                boolean deleteFile = FileUtilS.deleteFilePathZip(path + "/"+ deviceInfo.getDeviceNo(),
                boolean deleteFile = FileUtilS.deleteFilePathZip(path + "/"+ mdcEquipment.getEquipmentId(),
                        info.getDocName(), info.getDocSuffix());
                if (!deleteFile) {
                    return false;
@@ -118,8 +118,8 @@
                //处理文件名称  æ–‡ä»¶è·¯å¾„
                NcTxtFilePathInfo ncTxt = new NcTxtFilePathInfo();
                ncTxt.setEquipmentId(deviceInfo.getDeviceNo());
                ncTxt.setFilePath(path + "/"+ deviceInfo.getDeviceNo() + "/" );
                ncTxt.setEquipmentId(mdcEquipment.getEquipmentId());
                ncTxt.setFilePath(path + "/"+ mdcEquipment.getEquipmentId() + "/" );
                ncTxt.setFileTxtName("02A"+DateUtil.format(DateUtil.getNow(),DateUtil.STR_YEARMONTHDAY)+sequence);
                ncTxt.setOrigFileName(info.getDocName());
                ncTxt.setOrigFileSuffix(info.getDocSuffix());
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PartsInfoServiceImpl.java
@@ -2,6 +2,7 @@
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;
@@ -54,6 +55,8 @@
    private IDocInfoService docInfoService;
    @Autowired
    private INcLogInfoService iNcLogInfoService;
    @Autowired
    private IDocRelativeService iDocRelativeService;
    @Override
    @Transactional(rollbackFor = {Exception.class})
    public boolean addPartsInfo(PartsInfo partsInfo) {
@@ -273,6 +276,11 @@
        if(processStreams != null && !processStreams.isEmpty())
            ExceptionCast.cast(PartsInfoCode.PARTS_PROCESS_EXIST);
        boolean b = partsPermissionService.deleteByPartsId(partsInfo.getPartsId());
        //验证是否存在文档
        List<DocRelative> docRelativeList=iDocRelativeService.list(new QueryWrapper<DocRelative>().eq("attribution_type","3").eq("attribution_id",partsId));
        if (!docRelativeList.isEmpty()){
            ExceptionCast.cast(PartsInfoCode.PARTS_DOC_EXIST);
        }
        if(!b)
            ExceptionCast.cast(CommonCode.FAIL);
        b = partsDepartmentService.deleteByPartsId(partsInfo.getPartsId());
@@ -284,18 +292,6 @@
        b = permissionStreamService.deleteDepartPermsByPartsId(partsInfo.getProductId(), partsInfo.getComponentId(), partsInfo.getPartsId());
        if(!b)
            ExceptionCast.cast(CommonCode.FAIL);
        b = docInfoService.deleteByPartsId(partsInfo.getPartsId());
        if(!b)
            ExceptionCast.cast(CommonCode.FAIL);
        //添加日志
        NcLogInfo ncLogInfo = new NcLogInfo();
        //模块
        ncLogInfo.setModuleInfo("产品结构树");
        //类型
        ncLogInfo.setOperateType(4);
        //日志内容
        ncLogInfo.setLogContent("零件名称:"+partsInfo.getPartsName());
        iNcLogInfoService.saveLogNcInfos(ncLogInfo);
        return super.removeById(partsInfo.getPartsId());
    }
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PermissionStreamServiceImpl.java
@@ -137,6 +137,19 @@
    }
    @Override
    public List<PermissionStream> getByProcessId(String productId, String componentId, String partsId, String processId){
        if(!ValidateUtil.validateString(productId) || !ValidateUtil.validateString(componentId)
                || !ValidateUtil.validateString(partsId) || !ValidateUtil.validateString(processId))
            return null;
        List<PermissionStream> list = super.lambdaQuery().eq(PermissionStream::getProductId, productId).
                isNull(PermissionStream::getUserId).eq(PermissionStream::getComponentId, componentId)
                .eq(PermissionStream::getPartsId, partsId).eq(PermissionStream::getProcessId,processId).list();
        if(list == null || list.isEmpty())
            return null;
        return list;
    }
    @Override
    @Transactional(rollbackFor = {Exception.class})
    public boolean deleteUserPermsByProductId(String productId) {
        if(!ValidateUtil.validateString(productId))
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java
@@ -3,6 +3,7 @@
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;
@@ -51,6 +52,10 @@
    private IPermissionStreamService permissionStreamService;
    @Autowired
    private IProcessionDepartmentService processionDepartmentService;
    @Autowired
    private IWorkStepService workStepService;
    @Autowired
    private IDocRelativeService iDocRelativeService;
    @Override
    @Transactional(rollbackFor = {Exception.class})
@@ -166,18 +171,16 @@
        ProcessStream en = super.getById(id);
        if(en == null)
            ExceptionCast.cast(ProcessInfoCode.PROCESS_NOT_EXIST);
        boolean b = docInfoService.deleteByProcessId(en.getProcessId());
        if(!b)
            ExceptionCast.cast(CommonCode.FAIL);
        //添加日志
        NcLogInfo ncLogInfo = new NcLogInfo();
        //模块
        ncLogInfo.setModuleInfo("产品结构树");
        //类型
        ncLogInfo.setOperateType(4);
        //日志内容
        ncLogInfo.setLogContent("工序号:"+en.getProcessCode());
        iNcLogInfoService.saveLogNcInfos(ncLogInfo);
        //验证工序下是否有工步
        List<WorkStep> workStepList=workStepService.list(new QueryWrapper<WorkStep>().eq("process_id",id));
        if(workStepList != null && !workStepList.isEmpty()) {
            ExceptionCast.cast(ProcessInfoCode.WORKSTEP_HAS_DATA);
        }
        //验证是否存在文档
        List<DocRelative> docRelativeList=iDocRelativeService.list(new QueryWrapper<DocRelative>().eq("attribution_type","5").eq("attribution_id",id));
        if (!docRelativeList.isEmpty()){
            ExceptionCast.cast(ProcessInfoCode.PROCESS_HAS_DOC);
        }
        return super.removeById(id);
    }
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProductInfoServiceImpl.java
@@ -76,6 +76,8 @@
    private IProcessionDepartmentService processionDepartmentService;
    @Autowired
    private IMdcProductionService mdcProductionService;
    @Autowired
    private IDocRelativeService iDocRelativeService;
    @Override
    @Transactional(rollbackFor = {Exception.class})
@@ -236,6 +238,11 @@
        if(processStreams != null && !processStreams.isEmpty())
            ExceptionCast.cast(ProductInfoCode.PRODUCT_PROCESS_EXIST);
        boolean b = productPermissionService.deleteByProductId(id);
        //验证是否存在文档
        List<DocRelative> docRelativeList=iDocRelativeService.list(new QueryWrapper<DocRelative>().eq("attribution_type","1").eq("attribution_id",id));
        if (!docRelativeList.isEmpty()){
            ExceptionCast.cast(ProductInfoCode.PRODUCT_DOC_EXIST);
        }
        if(!b)
            ExceptionCast.cast(CommonCode.FAIL);
        b = productDepartmentService.deleteByProductId(id);
@@ -247,18 +254,6 @@
        b = permissionStreamService.deleteDepartPermsByProductId(id);
        if(!b)
            ExceptionCast.cast(CommonCode.FAIL);
        b = docInfoService.deleteByProductId(id);
        if(!b)
            ExceptionCast.cast(CommonCode.FAIL);
        //添加日志
        NcLogInfo ncLogInfo = new NcLogInfo();
        //模块
        ncLogInfo.setModuleInfo("产品结构树");
        //类型
        ncLogInfo.setOperateType(4);
        //日志内容
        ncLogInfo.setLogContent("产品名称:"+productInfo.getProductName());
        iNcLogInfoService.saveLogNcInfos(ncLogInfo);
        return super.removeById(id);
    }
@@ -1926,4 +1921,27 @@
        return ProductTreeWrapper.loadTree(productInfoList, componentExtList, partsInfos,processStreams,workSteps);
    }
    @Override
    public boolean deleteProductTree(String id, Integer type){
        switch (type) {
            //产品
            case 1:
                return deleteProductInfo(id);
            //部门
            case 2:
                return componentInfoService.deleteComponentInfo(id);
            //零件
            case 3:
                return partsInfoService.deletePartsInfo(id);
            //工序
            case 5:
                return processStreamService.deleteProcessStream(id);
            //工步
            case 6:
                return workStepService.deleteWorkStep(id);
            default:
        }
        return false;
    }
}
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/WorkStepServiceImpl.java
@@ -17,11 +17,7 @@
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.IWorkStepDepartmentService;
import org.jeecg.modules.dnc.service.IWorkStepService;
import org.jeecg.modules.dnc.ucenter.Department;
import org.jeecg.modules.dnc.service.*;
import org.jeecg.modules.dnc.utils.ValidateUtil;
import org.jeecg.modules.system.entity.MdcProduction;
import org.springframework.beans.factory.annotation.Autowired;
@@ -48,6 +44,12 @@
    @Autowired
    private IWorkStepDepartmentService workStepDepartmentService;
    @Autowired
    private IDocInfoService docInfoService;
    @Autowired
    private IDocRelativeService iDocRelativeService;
    @Override
    public List<WorkStep> getByUserPerms(String userId) {
@@ -258,4 +260,23 @@
        return true;
    }
    /**
     * åˆ é™¤å·¥æ­¥ä¿¡æ¯ é€»è¾‘删除
     * @param id
     * @return
     */
    public boolean deleteWorkStep(String id){
        if(!ValidateUtil.validateString(id))
            ExceptionCast.cast(CommonCode.INVALID_PARAM);
        WorkStep en = super.getById(id);
        if(en == null)
            ExceptionCast.cast(ProcessInfoCode.PROCESS_NOT_EXIST);
        //验证是否存在文档
        List<DocRelative> docRelativeList=iDocRelativeService.list(new QueryWrapper<DocRelative>().eq("attribution_type","6").eq("attribution_id",id));
        if (!docRelativeList.isEmpty()){
            ExceptionCast.cast(ProcessInfoCode.WORKSTEP_HAS_DOC);
        }
        return super.removeById(id);
    }
}
lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/utils/CamelToSnakeRegex.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package org.jeecg.modules.dnc.utils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CamelToSnakeRegex {
    /**
     * é©¼å³°è½¬ä¸‹åˆ’线
     **/
    public static String camelToSnake(String camelCase) {
        Pattern pattern = Pattern.compile("[A-Z]");
        Matcher matcher = pattern.matcher(camelCase);
        StringBuffer sb = new StringBuffer();
        while (matcher.find()) {
            matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());
        }
        matcher.appendTail(sb);
        return sb.toString();
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/DncDevicePermission.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package org.jeecg.modules.mdc.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@NoArgsConstructor
@TableName(value = "nc_device_permission")
public class DncDevicePermission {
    @TableId(value = "device_perm_id")
    private String devicePermId;
    @TableField(value = "device_id")
    private String deviceId;
    @TableField(value = "user_id")
    private String userId;
    @JsonIgnore
    @TableField(value = "create_time", select = false, fill = FieldFill.INSERT)
    private Date createTime;
    @JsonIgnore
    @TableField(value = "create_by", select = false, fill = FieldFill.INSERT)
    private String createBy;
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/DncDevicePermissionMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package org.jeecg.modules.mdc.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.mdc.entity.DncDevicePermission;
/**
 * @author: Lyh
 * @description: è®¾å¤‡æƒé™Mapper接口
 * @create: 2023-04-07 11:17
 */
public interface DncDevicePermissionMapper extends BaseMapper<DncDevicePermission> {
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcProductionEquipmentService.java
@@ -1,6 +1,7 @@
package org.jeecg.modules.mdc.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.mdc.entity.MdcEquipment;
import org.jeecg.modules.system.entity.MdcProductionEquipment;
import org.jeecg.modules.system.model.ProductionIdModel;
@@ -16,4 +17,14 @@
     * æ ¹æ®æŒ‡å®šè®¾å¤‡id查询产线信息
     */
    List<ProductionIdModel> queryProductionIdsOfEquipment(String equipmentId);
    /**
     * æ ¹æ®æŒ‡å®šäº§çº¿id查询设备信息
     */
    List<MdcEquipment> queryEquipmentsOfProduction(String productionId);
    /**
     * æ ¹æ®æŒ‡å®šäº§çº¿ids查询设备信息
     */
    List<MdcEquipment> queryEquipmentsOfProductions(List<String> productionIds);
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java
@@ -7,15 +7,18 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.dto.message.MessageDTO;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.mdc.dto.MdcEquDepDto;
import org.jeecg.modules.mdc.dto.MdcEquProDto;
import org.jeecg.modules.mdc.dto.MdcEquipmentDetailedDto;
import org.jeecg.modules.mdc.dto.MdcEquipmentDto;
import org.jeecg.modules.mdc.entity.*;
import org.jeecg.modules.mdc.mapper.DncDevicePermissionMapper;
import org.jeecg.modules.mdc.mapper.MdcEquipmentMapper;
import org.jeecg.modules.mdc.mapper.MdcTorqueConfigMapper;
import org.jeecg.modules.mdc.model.MdcEquipmentTree;
@@ -92,6 +95,9 @@
    @Resource
    private ISysParamsService ISysParamsService;
    @Resource
    private DncDevicePermissionMapper dncDevicePermissionMapper;
    @Override
    public Map<String, String> getDepNamesByEquipmentIds(List<String> equipmentIds) {
@@ -139,6 +145,13 @@
        }
        //step.1 ä¿å­˜è®¾å¤‡
        this.save(mdcEquipment);
        //DNC添加设备权限
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String userId = user.getId();
        DncDevicePermission dncDevicePermission=new DncDevicePermission();
        dncDevicePermission.setDeviceId(mdcEquipment.getId());
        dncDevicePermission.setUserId(userId);
        dncDevicePermissionMapper.insert(dncDevicePermission);
        //step.2 ä¿å­˜æ‰€å±žéƒ¨é—¨
        if (oConvertUtils.isNotEmpty(selectedDeparts)) {
            String[] arr = selectedDeparts.split(",");
@@ -161,6 +174,22 @@
    @Transactional(rollbackFor = Exception.class)
    @CacheEvict(value = {"mdc:cache:encrypt:equipment"}, allEntries = true)
    public void editMdcEquipment(MdcEquipment mdcEquipment) {
        if (mdcEquipment.getSystemValue()!=null) {
            switch (mdcEquipment.getSystemValue()){
                case "1":
                    mdcEquipment.setDeviceTypeDnc("1");
                    mdcEquipment.setDeviceTypeMdc("0");
                    break;
                case "2":
                    mdcEquipment.setDeviceTypeDnc("0");
                    mdcEquipment.setDeviceTypeMdc("1");
                    break;
                case "3":
                    mdcEquipment.setDeviceTypeDnc("1");
                    mdcEquipment.setDeviceTypeMdc("1");
                    break;
            }
        }
        //step.1 ä¿®æ”¹è®¾å¤‡åŸºç¡€ä¿¡æ¯
        this.updateById(mdcEquipment);
        //step.2 ä¿®æ”¹éƒ¨é—¨
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcProductionEquipmentServiceImpl.java
@@ -2,6 +2,8 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.MdcProduction;
import org.jeecg.modules.system.entity.MdcProductionEquipment;
@@ -13,6 +15,7 @@
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @author: LiuS
@@ -23,6 +26,8 @@
    @Resource
    private IMdcProductionService mdcProductionService;
    @Resource
    private IMdcEquipmentService mdcEquipmentService;
    /**
     * æ ¹æ®è®¾å¤‡id查询产线信息
@@ -54,4 +59,29 @@
        }
        return null;
    }
    /**
     * æ ¹æ®æŒ‡å®šäº§çº¿id查询设备信息
     */
    @Override
    public List<MdcEquipment> queryEquipmentsOfProduction(String productionId){
        List<String> equipmentIds = this.list(new LambdaQueryWrapper<MdcProductionEquipment>().eq(MdcProductionEquipment::getProductionId, productionId))
                .stream().map(MdcProductionEquipment::getEquipmentId).collect(Collectors.toList());
        if (!equipmentIds.isEmpty()) {
            return mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().in(MdcEquipment::getId, equipmentIds));
        }
        return null;
    }
    /**
     * æ ¹æ®æŒ‡å®šäº§çº¿ids查询设备信息
     */
    @Override
    public List<MdcEquipment> queryEquipmentsOfProductions(List<String> productionIds){
        List<String> equipmentIds = this.list(new LambdaQueryWrapper<MdcProductionEquipment>()
                .in(MdcProductionEquipment::getProductionId, productionIds)).stream().map(MdcProductionEquipment::getEquipmentId).collect(Collectors.toList());
        if (!equipmentIds.isEmpty()) {
            return mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().in(MdcEquipment::getId, equipmentIds));
        }
        return null;
    }
}
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/DncDeviceGroupPermission.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package org.jeecg.modules.system.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@NoArgsConstructor
@TableName(value = "nc_device_group_permission")
public class DncDeviceGroupPermission {
    @TableId(value = "group_perm_id")
    private String groupPermId;
    @TableField(value = "group_id")
    private String groupId;
    @TableField(value = "user_id")
    private String userId;
    @JsonIgnore
    @TableField(value = "create_time", select = false, fill = FieldFill.INSERT)
    private Date createTime;
    @JsonIgnore
    @TableField(value = "create_by", select = false, fill = FieldFill.INSERT)
    private String createBy;
}
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/DncDeviceGroupPermissionMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package org.jeecg.modules.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.system.entity.DncDeviceGroupPermission;
/**
 * @author: Lyh
 * @description: è½¦é—´æƒé™Mapper接口
 * @create: 2023-04-07 11:17
 */
public interface DncDeviceGroupPermissionMapper extends BaseMapper<DncDeviceGroupPermission> {
}
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java
@@ -6,18 +6,14 @@
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.FillRuleConstant;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.FillRuleUtil;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.system.entity.MdcProduction;
import org.jeecg.modules.system.entity.MdcProductionEquipment;
import org.jeecg.modules.system.entity.MdcUserProduction;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.mapper.MdcProductionEquipmentMapper;
import org.jeecg.modules.system.mapper.MdcProductionMapper;
import org.jeecg.modules.system.mapper.MdcUserProductionMapper;
import org.jeecg.modules.system.mapper.SysUserMapper;
import org.jeecg.modules.system.entity.*;
import org.jeecg.modules.system.mapper.*;
import org.jeecg.modules.system.model.MdcProductionTreeModel;
import org.jeecg.modules.system.model.ProductionIdModel;
import org.jeecg.modules.system.service.IMdcProductionService;
@@ -48,6 +44,8 @@
    @Resource
    private MdcProductionEquipmentMapper productionEquipmentMapper;
    @Resource
    private DncDeviceGroupPermissionMapper dncDeviceGroupPermissionMapper;
    /**
     * queryTreeList å¯¹åº” queryTreeList æŸ¥è¯¢æ‰€æœ‰çš„产线数据,以树结构形式响应给前端
     */
@@ -140,6 +138,13 @@
            mdcProduction.setOrgType(String.valueOf(orgType));
            mdcProduction.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
            this.save(mdcProduction);
            //新增DNC车间权限
            LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
            String userId = user.getId();
            DncDeviceGroupPermission dncDeviceGroupPermission=new DncDeviceGroupPermission();
            dncDeviceGroupPermission.setGroupPermId(mdcProduction.getId());
            dncDeviceGroupPermission.setUserId(userId);
            dncDeviceGroupPermissionMapper.insert(dncDeviceGroupPermission);
        }
    }