Lius
2025-07-01 134404768b4628e58693a31817f1087901de3341
维修部门班组
已重命名2个文件
已添加12个文件
已复制1个文件
已修改2个文件
1312 ■■■■■ 文件已修改
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/EamBaseRepairDepartController.java 286 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/entity/EamBaseRepairDepart.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/entity/EamBaseRepairDepartUser.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/EamBaseRepairDepartMapper.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/EamBaseRepairDepartUserMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/xml/EamBaseRepairDepartMapper.xml 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/xml/EamBaseRepairDepartUserMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/model/EamBaseRepairDepartTreeModel.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/model/RepairDepartIdModel.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/rule/OrgCodeProRule.java 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/IEamBaseRepairDepartService.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/BaseFactoryServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/EamBaseRepairDepartImpl.java 312 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/util/FindsBaseFactorysChildrenUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/util/FindsRepairDepartsChildrenUtil.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/util/WorkShopOrgCodeProRule.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/EamBaseRepairDepartController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,286 @@
package org.jeecg.modules.eam.base.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
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.constant.CommonConstant;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.eam.base.entity.EamBaseRepairDepart;
import org.jeecg.modules.eam.base.model.RepairDepartIdModel;
import org.jeecg.modules.eam.base.model.EamBaseRepairDepartTreeModel;
import org.jeecg.modules.eam.base.service.IEamBaseRepairDepartService;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @Description: ç»´ä¿®éƒ¨é—¨ç­ç»„
 * @Author: liuS
 * @Date: 2023-03-23
 * @Version: V1.0
 */
@Slf4j
@Api(tags = "维修部门班组")
@RestController
@RequestMapping("/eam/eamBaseRepairDepart")
public class EamBaseRepairDepartController extends JeecgController<EamBaseRepairDepart, IEamBaseRepairDepartService> {
    @Resource
    private IEamBaseRepairDepartService sysMaintainDepartService;
    /**
     * åˆ†é¡µåˆ—表查询
     *
     * @param eamBaseRepairDepart
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    @AutoLog(value = "维修部门班组-分页列表查询")
    @ApiOperation(value = "维修部门班组-分页列表查询", notes = "维修部门班组-分页列表查询")
    @GetMapping(value = "/list")
    public Result<?> queryPageList(EamBaseRepairDepart eamBaseRepairDepart,
                                   @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                   @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                   HttpServletRequest req) {
        QueryWrapper<EamBaseRepairDepart> queryWrapper = QueryGenerator.initQueryWrapper(eamBaseRepairDepart, req.getParameterMap());
        Page<EamBaseRepairDepart> page = new Page<EamBaseRepairDepart>(pageNo, pageSize);
        IPage<EamBaseRepairDepart> pageList = sysMaintainDepartService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
    @AutoLog(value = "维修部门班组-树形列表")
    @ApiOperation(value = "维修部门班组-树形列表", notes = "维修部门班组-树形列表")
    @GetMapping(value = "/queryTreeList")
    public Result<List<EamBaseRepairDepartTreeModel>> queryTreeList(@RequestParam(name = "ids", required = false) String ids) {
        Result<List<EamBaseRepairDepartTreeModel>> result = new Result<>();
        try {
            if (oConvertUtils.isNotEmpty(ids)) {
                List<EamBaseRepairDepartTreeModel> maintainDepartList = sysMaintainDepartService.queryTreeList(ids);
                result.setResult(maintainDepartList);
            } else {
                List<EamBaseRepairDepartTreeModel> list = sysMaintainDepartService.queryTreeList();
                result.setResult(list);
            }
            result.setSuccess(true);
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return result;
    }
    @AutoLog(value = "维修部门班组-根据用户id获取产线下拉树选项")
    @ApiOperation(value = "维修部门班组-根据用户id获取产线下拉树选项", notes = "维修部门班组-根据用户id获取产线下拉树选项")
    @GetMapping(value = "/loadMaintainDepartTreeOptions")
    public Result<List<RepairDepartIdModel>> loadMaintainDepartTreeOptions() {
        Result<List<RepairDepartIdModel>> result = new Result<>();
        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String userId = user.getId();
        try {
            List<RepairDepartIdModel> list = sysMaintainDepartService.loadMaintainDepartTreeOptions(userId);
            result.setSuccess(true);
            result.setResult(list);
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return result;
    }
    @AutoLog(value = "维修部门班组-id集合")
    @ApiOperation(value = "维修部门班组-id集合", notes = "维修部门班组-id集合")
    @GetMapping(value = "/queryTreeIdList")
    public Result<List<String>> queryTreeIdList() {
        Result<List<String>> result = new Result<>();
        try {
            List<EamBaseRepairDepart> maintainDepartList = sysMaintainDepartService.list(new LambdaQueryWrapper<EamBaseRepairDepart>().eq(EamBaseRepairDepart::getDelFlag, CommonConstant.DEL_FLAG_0).orderByAsc(EamBaseRepairDepart::getDepartOrder));
            List<String> ids = maintainDepartList.stream().map(EamBaseRepairDepart::getId).collect(Collectors.toList());
            result.setSuccess(true);
            result.setResult(ids);
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return result;
    }
    /**
     * æ·»åŠ 
     *
     * @param eamBaseRepairDepart
     * @return
     */
    @AutoLog(value = "维修部门班组-添加")
    @ApiOperation(value = "维修部门班组-添加", notes = "维修部门班组-添加")
    @PostMapping(value = "/add")
    @CacheEvict(value = {"sys:cache:maintainDepart:alldata", "sys:cache:maintainDepart:allids"}, allEntries = true)
    public Result<EamBaseRepairDepart> add(@RequestBody EamBaseRepairDepart eamBaseRepairDepart) {
        Result<EamBaseRepairDepart> result = new Result<>();
        try {
            sysMaintainDepartService.saveMaintainDepartData(eamBaseRepairDepart);
            result.success("添加成功!");
        } catch (Exception e) {
            log.error(e.getMessage(), e);
            result.error500("操作失败");
        }
        return result;
    }
    /**
     * ç¼–辑
     *
     * @param eamBaseRepairDepart
     * @return
     */
    @AutoLog(value = "维修部门班组-编辑")
    @ApiOperation(value = "维修部门班组-编辑", notes = "维修部门班组-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
    @CacheEvict(value = {"sys:cache:maintainDepart:alldata", "sys:cache:maintainDepart:allids"}, allEntries = true)
    public Result<EamBaseRepairDepart> edit(@RequestBody EamBaseRepairDepart eamBaseRepairDepart) {
        Result<EamBaseRepairDepart> result = new Result<>();
        EamBaseRepairDepart eamBaseRepairDepartEntity = sysMaintainDepartService.getById(eamBaseRepairDepart.getId());
        if (eamBaseRepairDepartEntity == null) {
            result.error500("未找到对应实体");
        } else {
            boolean ok = sysMaintainDepartService.updateMaintainDepartDataById(eamBaseRepairDepart);
            if (ok) {
                result.success("修改成功!");
            }
        }
        return result;
    }
    /**
     * é€šè¿‡id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "维修部门班组-通过id删除")
    @ApiOperation(value = "维修部门班组-通过id删除", notes = "维修部门班组-通过id删除")
    @DeleteMapping(value = "/delete")
    @CacheEvict(value = {"sys:cache:maintainDepart:alldata", "sys:cache:maintainDepart:allids"}, allEntries = true)
    public Result<EamBaseRepairDepart> delete(@RequestParam(name = "id", required = true) String id) {
        Result<EamBaseRepairDepart> result = new Result<>();
        EamBaseRepairDepart eamBaseRepairDepart = sysMaintainDepartService.getById(id);
        if (eamBaseRepairDepart == null) {
            result.error500("未找到对应实体");
        } else {
            boolean ok = sysMaintainDepartService.delete(id);
            if (ok) {
                result.success("删除成功!");
            }
        }
        return result;
    }
    /**
     * æ‰¹é‡åˆ é™¤
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "维修部门班组-批量删除")
    @ApiOperation(value = "维修部门班组-批量删除", notes = "维修部门班组-批量删除")
    @DeleteMapping(value = "/deleteBatch")
    @CacheEvict(value = {"sys:cache:maintainDepart:alldata", "sys:cache:maintainDepart:allids"}, allEntries = true)
    public Result<EamBaseRepairDepart> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
        Result<EamBaseRepairDepart> result = new Result<>();
        if (ids == null || "".equals(ids.trim())) {
            result.error500("参数不识别!");
        } else {
            this.sysMaintainDepartService.deleteBatchWithChildren(Arrays.asList(ids.split(",")));
            result.success("删除成功!");
        }
        return result;
    }
    @AutoLog(value = "维修部门班组-查询树形结构所有产线名称")
    @ApiOperation(value = "维修部门班组-查询树形结构所有产线名称", notes = "维修部门班组-查询树形结构所有产线名称")
    @GetMapping(value = "/queryIdTree")
    public Result<List<RepairDepartIdModel>> queryIdTree() {
        Result<List<RepairDepartIdModel>> result = new Result<>();
        try {
            List<RepairDepartIdModel> list = sysMaintainDepartService.queryMaintainDepartIdTreeList();
            result.setResult(list);
            result.setSuccess(true);
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return result;
    }
    @AutoLog(value = "维修部门班组-根据关键字模糊搜索相关产线")
    @ApiOperation(value = "维修部门班组-根据关键字模糊搜索相关产线", notes = "维修部门班组-根据关键字模糊搜索相关产线")
    @GetMapping(value = "/searchBy")
    public Result<List<EamBaseRepairDepartTreeModel>> searchBy(@RequestParam(name = "keyWord", required = true) String keyWord) {
        Result<List<EamBaseRepairDepartTreeModel>> result = new Result<>();
        List<EamBaseRepairDepartTreeModel> treeList = sysMaintainDepartService.searchByKeyWord(keyWord);
        if (treeList == null || treeList.isEmpty()) {
            result.setSuccess(false);
            result.setMessage("未查询匹配数据!");
            return result;
        }
        result.setResult(treeList);
        return result;
    }
    /**
     * é€šè¿‡id查询
     *
     * @param id
     * @return
     */
    @AutoLog(value = "维修部门班组-通过id查询")
    @ApiOperation(value = "维修部门班组-通过id查询", notes = "维修部门班组-通过id查询")
    @GetMapping(value = "/queryById")
    public Result<?> queryById(@RequestParam(name = "id", required = true) String id) {
        EamBaseRepairDepart eamBaseRepairDepart = sysMaintainDepartService.getById(id);
        return Result.OK(eamBaseRepairDepart);
    }
    /**
     * å¯¼å‡ºexcel
     *
     * @param request
     * @param eamBaseRepairDepart
     */
    @AutoLog(value = "维修部门班组-导出excel")
    @ApiOperation(value = "维修部门班组-导出excel", notes = "维修部门班组-导出excel")
    @RequestMapping(value = "/exportXls")
    public ModelAndView exportXls(HttpServletRequest request, EamBaseRepairDepart eamBaseRepairDepart) {
        return super.exportXls(request, eamBaseRepairDepart, EamBaseRepairDepart.class, "维修部门班组");
    }
    /**
     * é€šè¿‡excel导入数据
     *
     * @param request
     * @param response
     * @return
     */
    @AutoLog(value = "维修部门班组-通过excel导入数据")
    @ApiOperation(value = "维修部门班组-通过excel导入数据", notes = "维修部门班组-通过excel导入数据")
    @PostMapping(value = "/importExcel")
    @CacheEvict(value = {"sys:cache:maintainDepart:alldata", "sys:cache:maintainDepart:allids"}, allEntries = true)
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
        return super.importExcel(request, response, EamBaseRepairDepart.class);
    }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/entity/EamBaseRepairDepart.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
package org.jeecg.modules.eam.base.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.system.base.entity.JeecgEntity;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
 * @Description: ç»´ä¿®éƒ¨é—¨ç­ç»„
 * @Author: liuS
 * @Date: 2023-03-23
 * @Version: V1.0
 */
@Data
@TableName("eam_base_repair_depart")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "eam_base_repair_depart对象", description = "维修部门班组")
public class EamBaseRepairDepart extends JeecgEntity {
    private static final long serialVersionUID = 4128209535052886060L;
    /**
     * çˆ¶ç»´ä¿®éƒ¨é—¨ç­ç»„ID
     */
    @ApiModelProperty(value = "父维修部门班组ID")
    private String parentId;
    /**
     * ç»´ä¿®éƒ¨é—¨ç­ç»„名称
     */
    @Excel(name = "维修部门班组名称", width = 20)
    @ApiModelProperty(value = "维修部门班组名称")
    private String departName;
    /**
     * ç¼©å†™
     */
    @ApiModelProperty(value = "缩写")
    private String departNameAbbr;
    /**
     * æŽ’序
     */
    @Excel(name = "排序", width = 15)
    @ApiModelProperty(value = "排序")
    private Integer departOrder;
    /**
     * æè¿°
     */
    @Excel(name = "描述", width = 15)
    @ApiModelProperty(value = "描述")
    private String description;
    /**
     * ç»´ä¿®éƒ¨é—¨ç­ç»„类型 1一级部门 2子部门
     */
    @ApiModelProperty(value = "维修部门班组类型 1一级部门 2子部门")
    private String orgType;
    /**
     * ç»´ä¿®éƒ¨é—¨ç­ç»„编码
     */
    @ApiModelProperty(value = "维修部门班组编码")
    private String orgCode;
    /**
     * ç»´ä¿®éƒ¨é—¨ç­ç»„编码
     */
    @ApiModelProperty(value = "车间编码")
    private String maintainCode;
    /**
     * åœ°å€
     */
    @Excel(name = "地址", width = 15)
    @ApiModelProperty(value = "地址")
    private String address;
    /**
     * å¤‡æ³¨
     */
    @Excel(name = "备注", width = 20)
    @ApiModelProperty(value = "备注")
    private String memo;
    /**
     * çŠ¶æ€ï¼ˆ1启用,0不启用)
     */
    @ApiModelProperty(value = "状态(1启用,0不启用)")
    private String status;
    /**
     * åˆ é™¤çŠ¶æ€ï¼ˆ0,正常,1已删除)
     */
    @Excel(name = "删除状态", width = 15, dicCode = "del_flag")
    @ApiModelProperty(value = "删除状态(0,正常,1已删除)")
    private String delFlag;
    /**部门负责人的ids*/
    @TableField(exist = false)
    private String directorUserIds;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/entity/EamBaseRepairDepartUser.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
package org.jeecg.modules.eam.base.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
 * ç”¨æˆ·äº§çº¿
 *
 * @author: LiuS
 * @create: 2023-03-24 15:39
 */
@Data
@TableName("eam_base_repair_depart_user")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="eam_base_repair_depart_user对象", description="用户维修班组表")
public class EamBaseRepairDepartUser implements Serializable {
    private static final long serialVersionUID = -615660545315767149L;
    /**
     * ä¸»é”®id
     */
    @TableId(type = IdType.ASSIGN_ID)
    private String id;
    /**
     * ç”¨æˆ·id
     */
    private String userId;
    /**
     * ç»´ä¿®ç­ç»„id
     */
    private String departId;
    /**
     * åˆ›å»ºäºº
     */
    private String createBy;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    private Date createTime;
    public EamBaseRepairDepartUser(String id, String userId, String departId) {
        super();
        this.id = id;
        this.userId = userId;
        this.departId = departId;
    }
    public EamBaseRepairDepartUser(String id, String departId) {
        this.userId = id;
        this.departId = departId;
    }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/EamBaseRepairDepartMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
package org.jeecg.modules.eam.base.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.jeecg.modules.eam.base.entity.EamBaseRepairDepart;
import java.util.List;
/**
 * @Author: Lius
 * @CreateTime: 2025-07-01
 * @Description:
 */
public interface EamBaseRepairDepartMapper extends BaseMapper<EamBaseRepairDepart> {
    /**
     * æ ¹æ®id下级维修部门班组
     */
    @Select("SELECT * FROM sys_maintain_depart where del_flag ='0' AND parent_id = #{parentId,jdbcType=VARCHAR}")
    List<EamBaseRepairDepart> queryRepDepByPid(@Param("parentId") String parentId);
    /**
     * é€’归查询所有子节点
     */
    List<String> recursionChildren(@Param("maintainId") String maintainId);
    /**
     * æ ¹æ®ç”¨æˆ·id和车间id获取用户拥有的车间id
     *
     * @param userId
     * @param maintainId
     * @return
     */
    String findFirstMaintain(@Param("userId") String userId, @Param("maintainId") String maintainId);
    /**
     * æ ¹æ®ç”¨æˆ·id查询用户维修部门班组权限
     *
     * @param userId
     * @return
     */
    String findThreeMaintainId(@Param("userId") String userId);
    EamBaseRepairDepart findMaintainList(@Param("equipmentId") String equipmentId);
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/EamBaseRepairDepartUserMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package org.jeecg.modules.eam.base.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.eam.base.entity.EamBaseRepairDepartUser;
import java.util.List;
/**
 * @Author: Lius
 * @CreateTime: 2025-07-01
 * @Description:
 */
public interface EamBaseRepairDepartUserMapper extends BaseMapper<EamBaseRepairDepartUser> {
    /**
     * æ ¹æ®æŒ‡å®šç”¨æˆ·id查询维修部门班组id集合
     */
    List<String> queryRepairDepartIdsByUserId(@Param("userId") String userId);
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/xml/EamBaseRepairDepartMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
<?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.eam.base.mapper.EamBaseRepairDepartMapper">
    <!--递归查询所有子节点-->
    <select id="recursionChildren" resultType="java.lang.String">
        WITH temp ( id ) AS (
            SELECT
                id
            FROM
                sys_maintain_depart
            WHERE
                id = #{ maintainId } UNION ALL
            SELECT
                a.id
            FROM
                sys_maintain_depart a
                    INNER JOIN temp ON a.parent_id = temp.id
        ) SELECT
            *
        FROM
            temp
    </select>
    <!--根据用户id和车间id获取用户拥有的车间id-->
    <select id="findFirstMaintain" resultType="java.lang.String">
        SELECT TOP 1 t2.id FROM mdc_user_maintain t1 LEFT JOIN sys_maintain_depart t2 ON t1.pro_id = t2.id WHERE t1.user_id = #{ userId } AND t2.parent_id = #{maintainId}
    </select>
    <!--根据用户id查询用户工段权限-->
    <select id="findThreeMaintainId" resultType="java.lang.String">
        SELECT TOP 1 t2.id id FROM mdc_user_maintain t1 LEFT JOIN sys_maintain_depart t2 ON t1.pro_id = t2.id WHERE t1.user_id = #{userId} AND t2.org_type = '3'
    </select>
    <select id="findMaintainList" resultType="org.jeecg.modules.eam.base.entity.EamBaseRepairDepart">
        SELECT
            t1.*
        FROM
            sys_maintain_depart t1
                LEFT JOIN sys_maintain_depart_equipment t2 ON t1.id = t2.maintain_id
                LEFT JOIN mdc_equipment t3 ON t3.id = t2.equipment_id
        WHERE
            t3.equipment_id = #{equipmentId}
    </select>
</mapper>
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/xml/EamBaseRepairDepartUserMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
<?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.eam.base.mapper.EamBaseRepairDepartUserMapper">
    <!--根据指定用户id查询产线id集合-->
    <select id="queryRepairDepartIdsByUserId" resultType="java.lang.String">
        SELECT depart_id FROM eam_base_repair_depart_user WHERE user_id = #{userId}
    </select>
</mapper>
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/model/EamBaseRepairDepartTreeModel.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,117 @@
package org.jeecg.modules.eam.base.model;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.modules.eam.base.entity.EamBaseRepairDepart;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * @author: LiuS
 * @create: 2023-03-23 14:16
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "维修部门班组树结构数据实体", description = "维修部门班组")
public class EamBaseRepairDepartTreeModel implements Serializable {
    private static final long serialVersionUID = 5098613810355342955L;
    /**
     * å¯¹åº”SysMaintainDepart中的id字段,前端数据树中的key
     */
    private String key;
    /**
     * å¯¹åº”SysMaintainDepart中的id字段,前端数据树中的value
     */
    private String value;
    /**
     * å¯¹åº”depart_name字段,前端数据树中的title
     */
    private String title;
    private boolean isLeaf;
    //以下所有字段均与SysMaintainDepart相同
    private String id;
    private String parentId;
    private String maintainName;
    private String maintainNameAbbr;
    private Integer maintainOrder;
    private String description;
    private String orgType;
    private String orgCode;
    private String maintainCode;
    private String address;
    private String memo;
    private String status;
    private String delFlag;
    private String createBy;
    private Date createTime;
    private String updateBy;
    private Date updateTime;
    /**
     * äº§çº¿è´Ÿè´£äººids
     */
    private String directorUserIds;
    private List<EamBaseRepairDepartTreeModel> children = new ArrayList<>();
    public EamBaseRepairDepartTreeModel() {
    }
    /**
     * å°†SysMaintainDepart对象转换成SysMaintainDepartTreeModel对象
     *
     * @param eamBaseRepairDepart
     */
    public EamBaseRepairDepartTreeModel(EamBaseRepairDepart eamBaseRepairDepart) {
        this.key = eamBaseRepairDepart.getId();
        this.value = eamBaseRepairDepart.getId();
        this.title = eamBaseRepairDepart.getDepartName();
        this.id = eamBaseRepairDepart.getId();
        this.parentId = eamBaseRepairDepart.getParentId();
        this.maintainName = eamBaseRepairDepart.getDepartName();
        this.maintainNameAbbr = eamBaseRepairDepart.getDepartNameAbbr();
        this.maintainOrder = eamBaseRepairDepart.getDepartOrder();
        this.description = eamBaseRepairDepart.getDescription();
        this.orgType = eamBaseRepairDepart.getOrgType();
        this.orgCode = eamBaseRepairDepart.getOrgCode();
        this.maintainCode = eamBaseRepairDepart.getMaintainCode();
        this.address = eamBaseRepairDepart.getAddress();
        this.memo = eamBaseRepairDepart.getMemo();
        this.status = eamBaseRepairDepart.getStatus();
        this.delFlag = eamBaseRepairDepart.getDelFlag();
        this.createBy = eamBaseRepairDepart.getCreateBy();
        this.createTime = eamBaseRepairDepart.getCreateTime();
        this.updateBy = eamBaseRepairDepart.getUpdateBy();
        this.updateTime = eamBaseRepairDepart.getUpdateTime();
        this.directorUserIds = eamBaseRepairDepart.getDirectorUserIds();
    }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/model/RepairDepartIdModel.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
package org.jeecg.modules.eam.base.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.modules.system.entity.EamBaseRepairDepart;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
 * @Author: Lius
 * @CreateTime: 2025-07-01
 * @Description:
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class RepairDepartIdModel implements Serializable {
    private static final long serialVersionUID = -1114067150036416102L;
    /**
     * ä¸»é”®ID
     */
    private String key;
    /**
     * ä¸»é”®ID
     */
    private String value;
    /**
     * äº§çº¿åç§°
     */
    private String title;
    List<RepairDepartIdModel> children = new ArrayList<>();
    /**
     * å°†SysMaintainDepartTreeModel的部分数据放在该对象当中
     *
     * @param treeModel
     * @return
     */
    public RepairDepartIdModel convert(EamBaseRepairDepartTreeModel treeModel) {
        this.key = treeModel.getId();
        this.value = treeModel.getId();
        this.title = treeModel.getMaintainName();
        return this;
    }
    /**
     * è¯¥æ–¹æ³•为用户产线的实现类所使用
     *
     * @return
     */
    public RepairDepartIdModel convertByUserMaintainDepart(EamBaseRepairDepart mdcMaintainDepart) {
        this.key = mdcMaintainDepart.getId();
        this.value = mdcMaintainDepart.getId();
        this.title = mdcMaintainDepart.getMaintainName();
        return this;
    }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/rule/OrgCodeProRule.java
copy from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/util/WorkShopOrgCodeProRule.java copy to lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/rule/OrgCodeProRule.java
Îļþ´Ó lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/util/WorkShopOrgCodeProRule.java ¸´ÖÆ
@@ -1,4 +1,4 @@
package org.jeecg.modules.eam.base.controller.util;
package org.jeecg.modules.eam.base.rule;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -6,8 +6,8 @@
import org.jeecg.common.handler.IFillRuleHandler;
import org.jeecg.common.util.SpringContextUtils;
import org.jeecg.common.util.YouBianCodeUtil;
import org.jeecg.modules.eam.base.entity.BaseFactory;
import org.jeecg.modules.eam.base.service.IBaseFactoryService;
import org.jeecg.modules.system.entity.MdcProduction;
import org.jeecg.modules.system.service.IMdcProductionService;
import java.util.ArrayList;
import java.util.List;
@@ -17,16 +17,16 @@
 * @create: 2023-07-04 16:15
 * @Description: è½¦é—´æœºæž„编码生成规则
 */
public class WorkShopOrgCodeProRule implements IFillRuleHandler {
public class OrgCodeProRule implements IFillRuleHandler {
    @Override
    public Object execute(JSONObject params, JSONObject formData) {
        IBaseFactoryService BaseFactoryService = (IBaseFactoryService) SpringContextUtils.getBean("BaseFactoryServiceImpl");
        IMdcProductionService mdcProductionService = (IMdcProductionService) SpringContextUtils.getBean("mdcProductionServiceImpl");
        LambdaQueryWrapper<BaseFactory> query = new LambdaQueryWrapper<BaseFactory>();
        LambdaQueryWrapper<BaseFactory> query1 = new LambdaQueryWrapper<BaseFactory>();
        // åˆ›å»ºä¸€ä¸ªList集合,存储查询返回的所有BaseFactory对象
        List<BaseFactory> BaseFactoryList = new ArrayList<>();
        LambdaQueryWrapper<MdcProduction> query = new LambdaQueryWrapper<MdcProduction>();
        LambdaQueryWrapper<MdcProduction> query1 = new LambdaQueryWrapper<MdcProduction>();
        // åˆ›å»ºä¸€ä¸ªList集合,存储查询返回的所有MdcProduction对象
        List<MdcProduction> mdcProductionList = new ArrayList<>();
        String[] strArray = new String[2];
        //定义车间类型
        String orgType = "";
@@ -53,28 +53,28 @@
        //如果是最高级,则查询出同级的org_code, è°ƒç”¨å·¥å…·ç±»ç”Ÿæˆç¼–码并返回
        if (StringUtil.isNullOrEmpty(parentId)) {
            // çº¿åˆ¤æ–­æ•°æ®åº“中的表是否为空,空则直接返回初始编码
            query1.eq(BaseFactory::getParentId, "").or().isNull(BaseFactory::getParentId);
            query1.orderByDesc(BaseFactory::getOrgCode);
            BaseFactoryList = BaseFactoryService.list(query1);
            if (BaseFactoryList == null || BaseFactoryList.size() == 0) {
            query1.eq(MdcProduction::getParentId, "").or().isNull(MdcProduction::getParentId);
            query1.orderByDesc(MdcProduction::getOrgCode);
            mdcProductionList = mdcProductionService.list(query1);
            if (mdcProductionList == null || mdcProductionList.size() == 0) {
                strArray[0] = YouBianCodeUtil.getNextYouBianCode(null);
                strArray[1] = "1";
                return strArray;
            } else {
                BaseFactory BaseFactory = BaseFactoryList.get(0);
                oldOrgCode = BaseFactory.getOrgCode();
                orgType = BaseFactory.getOrgType();
                MdcProduction mdcProduction = mdcProductionList.get(0);
                oldOrgCode = mdcProduction.getOrgCode();
                orgType = mdcProduction.getOrgType();
                newOrgCode = YouBianCodeUtil.getNextYouBianCode(oldOrgCode);
            }
        } else {//反之则查询出所有同级的车间,获取结果后有两种情况,有同级和没有同级
            // å°è£…查询同级的条件
            query.eq(BaseFactory::getParentId, parentId);
            query.eq(MdcProduction::getParentId, parentId);
            // é™åºæŽ’序
            query.orderByDesc(BaseFactory::getOrgCode);
            query.orderByDesc(MdcProduction::getOrgCode);
            // æŸ¥è¯¢å‡ºåŒçº§äº§çº¿çš„集合
            List<BaseFactory> parentList = BaseFactoryService.list(query);
            List<MdcProduction> parentList = mdcProductionService.list(query);
            // æŸ¥è¯¢å‡ºçˆ¶çº§äº§çº¿
            BaseFactory production = BaseFactoryService.getById(parentId);
            MdcProduction production = mdcProductionService.getById(parentId);
            // èŽ·å–çˆ¶çº§äº§çº¿çš„code
            String parentCode = production.getOrgCode();
            // æ ¹æ®çˆ¶çº§äº§çº¿ç±»åž‹ç®—出当前产线的类型
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/IEamBaseRepairDepartService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
package org.jeecg.modules.eam.base.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.eam.base.entity.EamBaseRepairDepart;
import org.jeecg.modules.eam.base.model.EamBaseRepairDepartTreeModel;
import org.jeecg.modules.eam.base.model.RepairDepartIdModel;
import java.util.List;
/**
 * @Author: Lius
 * @CreateTime: 2025-07-01
 * @Description: ç»´ä¿®éƒ¨é—¨ç­ç»„
 */
public interface IEamBaseRepairDepartService extends IService<EamBaseRepairDepart> {
    /**
     * æŸ¥è¯¢æ‰€æœ‰äº§çº¿ä¿¡æ¯ï¼Œå¹¶åˆ†èŠ‚ç‚¹è¿›è¡Œæ˜¾ç¤º
     */
    List<EamBaseRepairDepartTreeModel> queryTreeList();
    /**
     * æŸ¥è¯¢æ‰€æœ‰äº§çº¿ä¿¡æ¯ï¼Œå¹¶åˆ†èŠ‚ç‚¹è¿›è¡Œæ˜¾ç¤º
     */
    List<EamBaseRepairDepartTreeModel> queryTreeList(String ids);
    /**
     * æŸ¥è¯¢æ‰€æœ‰éƒ¨é—¨DepartId信息,并分节点进行显示
     */
    List<RepairDepartIdModel> queryMaintainDepartIdTreeList();
    /**
     * æ ¹æ®å…³é”®å­—搜索相关的产线数据
     */
    List<EamBaseRepairDepartTreeModel> searchByKeyWord(String keyWord);
    /**
     * ä¿å­˜äº§çº¿æ•°æ®
     */
    void saveMaintainDepartData(EamBaseRepairDepart eamBaseRepairDepart);
    /**
     * æ›´æ–°äº§çº¿æ•°æ®
     */
    boolean updateMaintainDepartDataById(EamBaseRepairDepart eamBaseRepairDepart);
    /**
     * æ ¹æ®äº§çº¿id删除并删除其可能存在的子级产线
     */
    boolean delete(String id);
    /**
     * æ ¹æ®äº§çº¿id批量删除并删除其可能存在的子级产线
     */
    void deleteBatchWithChildren(List<String> ids);
    /**
     * èŽ·å–ä¸‹çº§äº§çº¿
     */
    List<EamBaseRepairDepart> queryRepDepByPid(String pid);
    /**
     * æ ¹æ®ç”¨æˆ·id获取产线下拉树选项
     */
    List<RepairDepartIdModel> loadMaintainDepartTreeOptions(String userId);
    /**
     * é€’归查询所有子节点
     */
    List<String> recursionChildren(String productionId);
    /**
     * æ ¹æ®ç”¨æˆ·id和车间id获取用户拥有的车间id
     *
     * @param userId
     * @param productionId
     * @return
     */
    String findFirstMaintainDepart(String userId, String productionId);
    /**
     * æ ¹æ®ç”¨æˆ·id查询用户工段权限
     */
    String findThreeMaintainDepartId(String userId);
    /**
     *
     * @param equipmentId
     * @return
     */
    EamBaseRepairDepart findMaintainDepartList(String equipmentId);
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/BaseFactoryServiceImpl.java
@@ -16,7 +16,7 @@
import org.jeecg.modules.eam.base.model.EamBaseFactoryTreeModel;
import org.jeecg.modules.eam.base.model.WorkShopIdModel;
import org.jeecg.modules.eam.base.service.IBaseFactoryService;
import org.jeecg.modules.eam.base.controller.util.FindsBaseFactorysChildrenUtil;
import org.jeecg.modules.eam.base.util.FindsBaseFactorysChildrenUtil;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.mapper.SysUserMapper;
import org.springframework.beans.factory.annotation.Autowired;
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/EamBaseRepairDepartImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,312 @@
package org.jeecg.modules.eam.base.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.FillRuleConstant;
import org.jeecg.common.util.FillRuleUtil;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.eam.base.entity.EamBaseRepairDepart;
import org.jeecg.modules.eam.base.entity.EamBaseRepairDepartUser;
import org.jeecg.modules.eam.base.mapper.EamBaseRepairDepartUserMapper;
import org.jeecg.modules.eam.base.service.IEamBaseRepairDepartService;
import org.jeecg.modules.system.entity.*;
import org.jeecg.modules.eam.base.mapper.EamBaseRepairDepartMapper;
import org.jeecg.modules.eam.base.model.EamBaseRepairDepartTreeModel;
import org.jeecg.modules.eam.base.model.RepairDepartIdModel;
import org.jeecg.modules.eam.base.util.FindsRepairDepartsChildrenUtil;
import org.jeecg.modules.system.mapper.SysUserMapper;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @Author: Lius
 * @CreateTime: 2025-07-01
 * @Description:
 */
@Service
public class EamBaseRepairDepartImpl extends ServiceImpl<EamBaseRepairDepartMapper, EamBaseRepairDepart> implements IEamBaseRepairDepartService {
    @Resource
    private SysUserMapper sysUserMapper;
    @Resource
    private EamBaseRepairDepartUserMapper repairDepartUserMapper;
    /**
     * queryTreeList å¯¹åº” queryTreeList æŸ¥è¯¢æ‰€æœ‰çš„维修部门班组数据,以树结构形式响应给前端
     */
    @Override
    @Cacheable(value = "eam:cache:repairDepart:alldata")
    public List<EamBaseRepairDepartTreeModel> queryTreeList() {
        LambdaQueryWrapper<EamBaseRepairDepart> query = new LambdaQueryWrapper<EamBaseRepairDepart>();
        query.eq(EamBaseRepairDepart::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
        query.orderByAsc(EamBaseRepairDepart::getDepartOrder);
        List<EamBaseRepairDepart> list = this.list(query);
        //设置用户id,让前台显示
        this.setUserIdsByProList(list);
        //调用wrapTreeDataToTreeList方法生成树状数据
        return FindsRepairDepartsChildrenUtil.wrapTreeDataToTreeList(list);
    }
    /**
     * queryTreeList æ ¹æ®ç»´ä¿®éƒ¨é—¨ç­ç»„id查询,前端回显调用
     */
    @Override
    public List<EamBaseRepairDepartTreeModel> queryTreeList(String ids) {
        List<EamBaseRepairDepartTreeModel> listResult = new ArrayList<>();
        LambdaQueryWrapper<EamBaseRepairDepart> query = new LambdaQueryWrapper<EamBaseRepairDepart>();
        query.eq(EamBaseRepairDepart::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
        if (oConvertUtils.isNotEmpty(ids)) {
            query.in(true, EamBaseRepairDepart::getId, ids.split(","));
        }
        query.orderByAsc(EamBaseRepairDepart::getDepartOrder);
        List<EamBaseRepairDepart> list = this.list(query);
        for (EamBaseRepairDepart repairDepart : list) {
            listResult.add(new EamBaseRepairDepartTreeModel(repairDepart));
        }
        return listResult;
    }
    @Override
    @Cacheable(value = "eam:cache:repairDepart:allids")
    public List<RepairDepartIdModel> queryMaintainDepartIdTreeList() {
        LambdaQueryWrapper<EamBaseRepairDepart> query = new LambdaQueryWrapper<>();
        query.eq(EamBaseRepairDepart::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
        query.orderByAsc(EamBaseRepairDepart::getDepartOrder);
        List<EamBaseRepairDepart> list = this.list(query);
        //调用wrapTreeDataToTreeList方法生成树状数据
        return FindsRepairDepartsChildrenUtil.wrapTreeDataToMaintainDepartIdTreeList(list);
    }
    /**
     * æ ¹æ®å…³é”®å­—搜索相关的部门数据
     */
    @Override
    public List<EamBaseRepairDepartTreeModel> searchByKeyWord(String keyWord) {
        LambdaQueryWrapper<EamBaseRepairDepart> query = new LambdaQueryWrapper<>();
        List<EamBaseRepairDepartTreeModel> newList = new ArrayList<>();
        query.like(EamBaseRepairDepart::getDepartName, keyWord);
        EamBaseRepairDepartTreeModel model = new EamBaseRepairDepartTreeModel();
        List<EamBaseRepairDepart> repairDepartList = this.list(query);
        if (!repairDepartList.isEmpty()) {
            for (EamBaseRepairDepart eamBaseRepairDepart : repairDepartList) {
                model = new EamBaseRepairDepartTreeModel(eamBaseRepairDepart);
                model.setChildren(null);
                newList.add(model);
            }
            return newList;
        }
        return Collections.emptyList();
    }
    /**
     * saveMaintainDepartData å¯¹åº” add ä¿å­˜ç”¨æˆ·åœ¨é¡µé¢æ·»åŠ çš„æ–°çš„ç»´ä¿®éƒ¨é—¨ç­ç»„å¯¹è±¡æ•°æ®
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveMaintainDepartData(EamBaseRepairDepart eamBaseRepairDepart) {
        if (eamBaseRepairDepart != null) {
            if (eamBaseRepairDepart.getParentId() == null) {
                eamBaseRepairDepart.setParentId("");
            }
            eamBaseRepairDepart.setId(IdWorker.getIdStr(eamBaseRepairDepart));
            // å…ˆåˆ¤æ–­è¯¥å¯¹è±¡æœ‰æ— çˆ¶çº§ID,有则意味着不是最高级,否则意味着是最高级
            // èŽ·å–çˆ¶çº§ID
            String parentId = eamBaseRepairDepart.getParentId();
            JSONObject formData = new JSONObject();
            formData.put("parentId",parentId);
            String[] codeArray = (String[]) FillRuleUtil.executeRule(FillRuleConstant.PRODUCTION,formData);
            eamBaseRepairDepart.setOrgCode(codeArray[0]);
            String orgType = codeArray[1];
            eamBaseRepairDepart.setOrgType(String.valueOf(orgType));
            eamBaseRepairDepart.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
            this.save(eamBaseRepairDepart);
        }
    }
    /**
     * updateMaintainDepartDataById å¯¹åº” edit æ ¹æ®ç»´ä¿®éƒ¨é—¨ç­ç»„主键来更新对应的维修部门班组数据
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean updateMaintainDepartDataById(EamBaseRepairDepart eamBaseRepairDepart) {
        if (eamBaseRepairDepart != null) {
            this.updateById(eamBaseRepairDepart);
            return true;
        }
        return false;
    }
    /**
     * æ ¹æ®ç»´ä¿®éƒ¨é—¨ç­ç»„id删除并删除其可能存在的子级维修部门班组
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean delete(String id) {
        List<String> idList = new ArrayList<>();
        idList.add(id);
        this.checkChildrenExists(id, idList);
        boolean result = this.removeByIds(idList);
        //根据维修部门班组id删除用户与维修部门班组关系
        repairDepartUserMapper.delete(new LambdaQueryWrapper<EamBaseRepairDepartUser>().in(EamBaseRepairDepartUser::getDepartId, idList));
        //根据维修部门班组id删除维修部门班组与设备关系
//        repairDepartEquipmentMapper.delete(new LambdaQueryWrapper<SysMaintainDepartEquipment>().in(SysMaintainDepartEquipment::getMaintainDepartId, idList));
        return result;
    }
    /**
     * æ ¹æ®ç»´ä¿®éƒ¨é—¨ç­ç»„id批量删除并删除其可能存在的子级维修部门班组
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void deleteBatchWithChildren(List<String> ids) {
        List<String> idList = new ArrayList<>();
        for (String id : ids) {
            idList.add(id);
            this.checkChildrenExists(id, idList);
        }
        this.removeByIds(idList);
        //根据维修部门班组id删除用户与维修部门班组关系
        repairDepartUserMapper.delete(new LambdaQueryWrapper<EamBaseRepairDepartUser>().in(EamBaseRepairDepartUser::getDepartId, idList));
        //根据维修部门班组id删除维修部门班组与设备关系
//        repairDepartEquipmentMapper.delete(new LambdaQueryWrapper<SysMaintainDepartEquipment>().in(SysMaintainDepartEquipment::getMaintainDepartId, idList));
    }
    /**
     * æ ¹æ®id查询下级维修部门班组
     */
    @Override
    public List<EamBaseRepairDepart> queryRepDepByPid(String pid) {
        return this.baseMapper.queryRepDepByPid(pid);
    }
    /**
     * æ ¹æ®ç”¨æˆ·id获取维修部门班组下拉树选项
     */
    @Override
    public List<RepairDepartIdModel> loadMaintainDepartTreeOptions(String userId) {
        //获取所有维修部门班组数据
        List<EamBaseRepairDepart> repairDepartList = this.baseMapper.selectList(new LambdaQueryWrapper<EamBaseRepairDepart>().eq(EamBaseRepairDepart::getDelFlag, CommonConstant.DEL_FLAG_0.toString()).orderByAsc(EamBaseRepairDepart::getDepartOrder));
        //根据用户id获取拥有的维修部门班组信息集合
        List<String> repairDepartIds = repairDepartUserMapper.queryRepairDepartIdsByUserId(userId);
        List<String> allMaintainDepartIds = new ArrayList<>();
        //找到所有维修部门班组id的上级id
        if (repairDepartIds != null && !repairDepartIds.isEmpty()) {
            for (String repairDepartId : repairDepartIds) {
                this.getAllMaintainDepartIds(repairDepartList, repairDepartId, allMaintainDepartIds);
            }
        }
        //过滤维修部门班组数据
        List<EamBaseRepairDepart> list = repairDepartList.stream().filter((EamBaseRepairDepart eamBaseRepairDepart) -> allMaintainDepartIds.contains(eamBaseRepairDepart.getId())).collect(Collectors.toList());
        return FindsRepairDepartsChildrenUtil.wrapTreeDataToMaintainDepartIdTreeList(list);
    }
    /**
     * é€’归查询所有子节点id
     */
    @Override
    public List<String> recursionChildren(String repairDepartId) {
        return this.baseMapper.recursionChildren(repairDepartId);
    }
    /**
     * æ ¹æ®ç”¨æˆ·id和车间id获取用户拥有的车间id
     * @param userId
     * @param repairDepartId
     * @return
     */
    @Override
    public String findFirstMaintainDepart(String userId, String repairDepartId) {
        return this.baseMapper.findFirstMaintain(userId, repairDepartId);
    }
    /**
     * æ ¹æ®ç”¨æˆ·id查询用户维修部门班组权限
     */
    @Override
    public String findThreeMaintainDepartId(String userId) {
        return this.baseMapper.findThreeMaintainId(userId);
    }
    @Override
    public EamBaseRepairDepart findMaintainDepartList(String equipmentId) {
        return this.baseMapper.findMaintainList(equipmentId);
    }
    /**
     * delete æ–¹æ³•调用 é€’归查找子集id
     */
    private void checkChildrenExists(String id, List<String> idList) {
        LambdaQueryWrapper<EamBaseRepairDepart> query = new LambdaQueryWrapper<>();
        query.eq(EamBaseRepairDepart::getParentId, id);
        List<EamBaseRepairDepart> repairDepartList = this.list(query);
        if (repairDepartList != null && !repairDepartList.isEmpty()) {
            for (EamBaseRepairDepart repairDepart : repairDepartList) {
                idList.add(repairDepart.getId());
                this.checkChildrenExists(repairDepart.getId(), idList);
            }
        }
    }
    /**
     * èŽ·å–æ‰€æœ‰çš„ç»´ä¿®éƒ¨é—¨ç­ç»„id(包含所有上级)
     */
    private void getAllMaintainDepartIds(List<EamBaseRepairDepart> repairDepartList, String repairDepartId, List<String> allMaintainDepartIds) {
        if (!allMaintainDepartIds.contains(repairDepartId)) {
            allMaintainDepartIds.add(repairDepartId);
        }
        for (EamBaseRepairDepart eamBaseRepairDepart : repairDepartList) {
            if (StringUtils.isEmpty(eamBaseRepairDepart.getParentId())) {
                continue;
            }
            if (repairDepartId.equals(eamBaseRepairDepart.getId())) {
                if (!allMaintainDepartIds.contains(eamBaseRepairDepart.getParentId())) {
                    allMaintainDepartIds.add(eamBaseRepairDepart.getParentId());
                    getAllMaintainDepartIds(repairDepartList, eamBaseRepairDepart.getParentId(), allMaintainDepartIds);
                }
            }
        }
    }
    /**
     * é€šè¿‡ç»´ä¿®éƒ¨é—¨ç­ç»„集合为维修部门班组设置用户id,用于前台展示
     */
    private void setUserIdsByProList(List<EamBaseRepairDepart> repairDepartList) {
        //查询负责部门不为空的情况
        LambdaQueryWrapper<SysUser> query = new LambdaQueryWrapper<>();
        query.isNotNull(SysUser::getDepartIds);
        List<SysUser> users = sysUserMapper.selectList(query);
        Map<String, Object> map = new HashMap(5);
        //先循环一遍找到不同的负责维修部门班组id
        for (SysUser user : users) {
            String repairDepartIds = user.getRepairDepartIds();
            if (StringUtils.isNotBlank(repairDepartIds)) {
                String[] repairDepartIdArray = repairDepartIds.split(",");
                for (String repairDepartId : repairDepartIdArray) {
                    if (map.containsKey(repairDepartId)) {
                        String userIds = map.get(repairDepartId) + "," + user.getId();
                        map.put(repairDepartId, userIds);
                    } else {
                        map.put(repairDepartId, user.getId());
                    }
                }
            }
        }
        //循环维修部门班组集合找到维修部门班组id对应的负责用户
        for (EamBaseRepairDepart eamBaseRepairDepart : repairDepartList) {
            if (map.containsKey(eamBaseRepairDepart.getId())) {
                eamBaseRepairDepart.setDirectorUserIds(map.get(eamBaseRepairDepart.getId()).toString());
            }
        }
    }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/util/FindsBaseFactorysChildrenUtil.java
ÎļþÃû´Ó lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/util/FindsBaseFactorysChildrenUtil.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.jeecg.modules.eam.base.controller.util;
package org.jeecg.modules.eam.base.util;
import cn.hutool.core.util.StrUtil;
import org.jeecg.common.util.oConvertUtils;
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/util/FindsRepairDepartsChildrenUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,102 @@
package org.jeecg.modules.eam.base.util;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.eam.base.entity.EamBaseRepairDepart;
import org.jeecg.modules.eam.base.model.EamBaseRepairDepartTreeModel;
import org.jeecg.modules.eam.base.model.RepairDepartIdModel;
import java.util.ArrayList;
import java.util.List;
/**
 * å¯¹åº”维修部门班组的表,处理并查找树结构数据
 * @Author: Lius
 * @CreateTime: 2025-07-01
 * @Description:
 */
public class FindsRepairDepartsChildrenUtil {
    /**
     * queryTreeList的子方法 ====1=====
     * è¯¥æ–¹æ³•是s将SysMaintainDepart类型的list集合转换成EamBaseRepairDepartTreeModel类型的集合
     */
    public static List<EamBaseRepairDepartTreeModel> wrapTreeDataToTreeList(List<EamBaseRepairDepart> recordList) {
        List<RepairDepartIdModel> idList = new ArrayList<>();
        List<EamBaseRepairDepartTreeModel> records = new ArrayList<>();
        for (int i = 0; i < recordList.size(); i++) {
            EamBaseRepairDepart eamBaseRepairDepart = recordList.get(i);
            records.add(new EamBaseRepairDepartTreeModel(eamBaseRepairDepart));
        }
        List<EamBaseRepairDepartTreeModel> tree = findChildren(records, idList);
        setEmptyChildrenAsNull(tree);
        return tree;
    }
    /**
     * queryTreeList的子方法 ====1=====
     * è¯¥æ–¹æ³•是找到并封装顶级父类的节点到TreeList集合
     */
    public static List<EamBaseRepairDepartTreeModel> findChildren(List<EamBaseRepairDepartTreeModel> recordList, List<RepairDepartIdModel> maintainDepartIdList) {
        List<EamBaseRepairDepartTreeModel> treeList = new ArrayList<>();
        for (int i = 0; i < recordList.size(); i++) {
            EamBaseRepairDepartTreeModel branch = recordList.get(i);
            if (oConvertUtils.isEmpty(branch.getParentId())) {
                treeList.add(branch);
                RepairDepartIdModel maintainDepartIdModel = new RepairDepartIdModel().convert(branch);
                maintainDepartIdList.add(maintainDepartIdModel);
            }
        }
        getGrandChildren(treeList, recordList, maintainDepartIdList);
        return treeList;
    }
    /**
     * queryTreeList的子方法====3====
     *该方法是找到顶级父类下的所有子节点集合并封装到TreeList集合
     */
    private static void getGrandChildren(List<EamBaseRepairDepartTreeModel> treeList, List<EamBaseRepairDepartTreeModel> recordList, List<RepairDepartIdModel> idList) {
        for (int i = 0; i < treeList.size(); i++) {
            EamBaseRepairDepartTreeModel model = treeList.get(i);
            RepairDepartIdModel idModel = idList.get(i);
            for (int i1 = 0; i1 < recordList.size(); i1++) {
                EamBaseRepairDepartTreeModel m = recordList.get(i1);
                if (m.getParentId() != null && m.getParentId().equals(model.getId())) {
                    model.getChildren().add(m);
                    RepairDepartIdModel pim = new RepairDepartIdModel().convert(m);
                    idModel.getChildren().add(pim);
                }
            }
            getGrandChildren(treeList.get(i).getChildren(), recordList, idList.get(i).getChildren());
        }
    }
    /**
     * queryTreeList的子方法 ====4====
     * è¯¥æ–¹æ³•是将子节点为空的List集合设置为Null值
     */
    private static void setEmptyChildrenAsNull(List<EamBaseRepairDepartTreeModel> treeList) {
        for (int i = 0; i < treeList.size(); i++) {
            EamBaseRepairDepartTreeModel model = treeList.get(i);
            if (model.getChildren().size() == 0) {
                model.setChildren(null);
                model.setLeaf(true);
            } else {
                setEmptyChildrenAsNull(model.getChildren());
                model.setLeaf(false);
            }
        }
    }
    /**
     * èŽ·å– DepartIdModel
     */
    public static List<RepairDepartIdModel> wrapTreeDataToMaintainDepartIdTreeList(List<EamBaseRepairDepart> recordList) {
        List<RepairDepartIdModel> idList = new ArrayList<>();
        List<EamBaseRepairDepartTreeModel> records = new ArrayList<>();
        for (int i = 0; i < recordList.size(); i++) {
            EamBaseRepairDepart eamBaseRepairDepart = recordList.get(i);
            records.add(new EamBaseRepairDepartTreeModel(eamBaseRepairDepart));
        }
        findChildren(records, idList);
        return idList;
    }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/util/WorkShopOrgCodeProRule.java
ÎļþÃû´Ó lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/util/WorkShopOrgCodeProRule.java ÐÞ¸Ä
@@ -1,4 +1,4 @@
package org.jeecg.modules.eam.base.controller.util;
package org.jeecg.modules.eam.base.util;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java
@@ -189,6 +189,13 @@
    private String productionIds;
    /**
     * è´Ÿè´£ç»´ä¿®éƒ¨é—¨ç­ç»„
     */
    @Excel(name="负责维修部门班组",width = 15,dictTable ="eam_base_repair_depart",dicText = "depart_name",dicCode = "id")
    @Dict(dictTable ="eam_base_repair_depart",dicText = "depart_name",dicCode = "id")
    private String repairDepartIds;
    /**
     * å¤šç§Ÿæˆ·id配置,编辑用户的时候设置
     */
    private String relTenantIds;