From 593d785f10bc554cdc8eddf23e5e324c0258adbb Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期二, 01 七月 2025 17:58:42 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/model/EamBaseRepairDepartTreeModel.java       |  117 +++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/rule/OrgCodeRepDepRule.java                   |   98 ++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/util/WorkShopOrgCodeProRule.java              |    2 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/EamBaseRepairDepartUserMapper.java     |   21 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/BaseFactoryServiceImpl.java      |    2 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/util/FindsRepairDepartsChildrenUtil.java      |  102 ++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/EamBaseRepairDepartMapper.java         |   47 ++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/IEamBaseRepairDepartService.java      |   93 ++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/xml/EamBaseRepairDepartUserMapper.xml  |    9 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/EamBaseRepairDepartImpl.java     |  312 +++++++++++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/entity/EamBaseRepairDepart.java               |   98 ++++
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java          |    7 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/EamBaseRepairDepartController.java |  286 ++++++++++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/model/RepairDepartIdModel.java                |   65 ++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/entity/EamBaseRepairDepartUser.java           |   64 ++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/util/FindsBaseFactorysChildrenUtil.java       |    2 
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/xml/EamBaseRepairDepartMapper.xml      |   45 +
 17 files changed, 1,367 insertions(+), 3 deletions(-)

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/EamBaseRepairDepartController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/EamBaseRepairDepartController.java
new file mode 100644
index 0000000..155615c
--- /dev/null
+++ b/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);
+    }
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/entity/EamBaseRepairDepart.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/entity/EamBaseRepairDepart.java
new file mode 100644
index 0000000..57ffaf7
--- /dev/null
+++ b/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;
+
+    /**
+     * 鐖剁淮淇儴闂ㄧ彮缁処D
+     */
+    @ApiModelProperty(value = "鐖剁淮淇儴闂ㄧ彮缁処D")
+    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;
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/entity/EamBaseRepairDepartUser.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/entity/EamBaseRepairDepartUser.java
new file mode 100644
index 0000000..43353cd
--- /dev/null
+++ b/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;
+    }
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/EamBaseRepairDepartMapper.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/EamBaseRepairDepartMapper.java
new file mode 100644
index 0000000..23d2a16
--- /dev/null
+++ b/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鍜岃溅闂磇d鑾峰彇鐢ㄦ埛鎷ユ湁鐨勮溅闂磇d
+     *
+     * @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);
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/EamBaseRepairDepartUserMapper.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/EamBaseRepairDepartUserMapper.java
new file mode 100644
index 0000000..75a2e3f
--- /dev/null
+++ b/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);
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/xml/EamBaseRepairDepartMapper.xml b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/xml/EamBaseRepairDepartMapper.xml
new file mode 100644
index 0000000..137d8ed
--- /dev/null
+++ b/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鍜岃溅闂磇d鑾峰彇鐢ㄦ埛鎷ユ湁鐨勮溅闂磇d-->
+    <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>
\ No newline at end of file
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/xml/EamBaseRepairDepartUserMapper.xml b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/mapper/xml/EamBaseRepairDepartUserMapper.xml
new file mode 100644
index 0000000..eb78982
--- /dev/null
+++ b/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>
\ No newline at end of file
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/model/EamBaseRepairDepartTreeModel.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/model/EamBaseRepairDepartTreeModel.java
new file mode 100644
index 0000000..ec94847
--- /dev/null
+++ b/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;
+
+    /**
+     * 瀵瑰簲EamBaseRepairDepart涓殑id瀛楁,鍓嶇鏁版嵁鏍戜腑鐨刱ey
+     */
+    private String key;
+
+    /**
+     * 瀵瑰簲EamBaseRepairDepart涓殑id瀛楁,鍓嶇鏁版嵁鏍戜腑鐨剉alue
+     */
+    private String value;
+
+    /**
+     * 瀵瑰簲depart_name瀛楁,鍓嶇鏁版嵁鏍戜腑鐨則itle
+     */
+    private String title;
+
+    private boolean isLeaf;
+    //浠ヤ笅鎵�鏈夊瓧娈靛潎涓嶦amBaseRepairDepart鐩稿悓
+
+    private String id;
+
+    private String parentId;
+
+    private String departName;
+
+    private String departNameAbbr;
+
+    private Integer departOrder;
+
+    private String description;
+
+    private String orgType;
+
+    private String orgCode;
+
+    private String departCode;
+
+    private String address;
+
+    private String memo;
+
+    private String status;
+
+    private String delFlag;
+
+    private String createBy;
+
+    private Date createTime;
+
+    private String updateBy;
+
+    private Date updateTime;
+
+    /**
+     * 浜х嚎璐熻矗浜篿ds
+     */
+    private String directorUserIds;
+
+    private List<EamBaseRepairDepartTreeModel> children = new ArrayList<>();
+
+    public EamBaseRepairDepartTreeModel() {
+
+    }
+
+    /**
+     * 灏哠ysMaintainDepart瀵硅薄杞崲鎴怱ysMaintainDepartTreeModel瀵硅薄
+     *
+     * @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.departName = eamBaseRepairDepart.getDepartName();
+        this.departNameAbbr = eamBaseRepairDepart.getDepartNameAbbr();
+        this.departOrder = eamBaseRepairDepart.getDepartOrder();
+        this.description = eamBaseRepairDepart.getDescription();
+        this.orgType = eamBaseRepairDepart.getOrgType();
+        this.orgCode = eamBaseRepairDepart.getOrgCode();
+        this.departCode = 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();
+    }
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/model/RepairDepartIdModel.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/model/RepairDepartIdModel.java
new file mode 100644
index 0000000..af68235
--- /dev/null
+++ b/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.eam.base.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<>();
+
+    /**
+     * 灏哠ysMaintainDepartTreeModel鐨勯儴鍒嗘暟鎹斁鍦ㄨ瀵硅薄褰撲腑
+     *
+     * @param treeModel
+     * @return
+     */
+    public RepairDepartIdModel convert(EamBaseRepairDepartTreeModel treeModel) {
+        this.key = treeModel.getId();
+        this.value = treeModel.getId();
+        this.title = treeModel.getDepartName();
+        return this;
+    }
+
+    /**
+     * 璇ユ柟娉曚负鐢ㄦ埛浜х嚎鐨勫疄鐜扮被鎵�浣跨敤
+     *
+     * @return
+     */
+    public RepairDepartIdModel convertByUserMaintainDepart(EamBaseRepairDepart mdcMaintainDepart) {
+        this.key = mdcMaintainDepart.getId();
+        this.value = mdcMaintainDepart.getId();
+        this.title = mdcMaintainDepart.getDepartName();
+        return this;
+    }
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/rule/OrgCodeRepDepRule.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/rule/OrgCodeRepDepRule.java
new file mode 100644
index 0000000..505d0f2
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/rule/OrgCodeRepDepRule.java
@@ -0,0 +1,98 @@
+package org.jeecg.modules.eam.base.rule;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import io.netty.util.internal.StringUtil;
+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.EamBaseRepairDepart;
+import org.jeecg.modules.eam.base.service.IEamBaseRepairDepartService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author: LiuS
+ * @create: 2023-07-04 16:15
+ * @Description: 杞﹂棿鏈烘瀯缂栫爜鐢熸垚瑙勫垯
+ */
+public class OrgCodeRepDepRule implements IFillRuleHandler {
+
+    @Override
+    public Object execute(JSONObject params, JSONObject formData) {
+        IEamBaseRepairDepartService eamBaseRepairDepartService = (IEamBaseRepairDepartService) SpringContextUtils.getBean("eamBaseRepairDepartImpl");
+
+        LambdaQueryWrapper<EamBaseRepairDepart> query = new LambdaQueryWrapper<EamBaseRepairDepart>();
+        LambdaQueryWrapper<EamBaseRepairDepart> query1 = new LambdaQueryWrapper<EamBaseRepairDepart>();
+        // 鍒涘缓涓�涓狶ist闆嗗悎,瀛樺偍鏌ヨ杩斿洖鐨勬墍鏈塃amBaseRepairDepart瀵硅薄
+        List<EamBaseRepairDepart> eamBaseRepairDepartList = new ArrayList<>();
+        String[] strArray = new String[2];
+        //瀹氫箟杞﹂棿绫诲瀷
+        String orgType = "";
+        // 瀹氫箟鏂扮紪鐮佸瓧绗︿覆
+        String newOrgCode = "";
+        // 瀹氫箟鏃х紪鐮佸瓧绗︿覆
+        String oldOrgCode = "";
+
+        String parentId = null;
+        if (formData != null && formData.size() > 0) {
+            Object obj = formData.get("parentId");
+            if (obj != null) {
+                parentId = obj.toString();
+            }
+        } else {
+            if (params != null) {
+                Object obj = params.get("parentId");
+                if (obj != null) {
+                    parentId = obj.toString();
+                }
+            }
+        }
+
+        //濡傛灉鏄渶楂樼骇,鍒欐煡璇㈠嚭鍚岀骇鐨刼rg_code, 璋冪敤宸ュ叿绫荤敓鎴愮紪鐮佸苟杩斿洖
+        if (StringUtil.isNullOrEmpty(parentId)) {
+            // 绾垮垽鏂暟鎹簱涓殑琛ㄦ槸鍚︿负绌�,绌哄垯鐩存帴杩斿洖鍒濆缂栫爜
+            query1.eq(EamBaseRepairDepart::getParentId, "").or().isNull(EamBaseRepairDepart::getParentId);
+            query1.orderByDesc(EamBaseRepairDepart::getOrgCode);
+            eamBaseRepairDepartList = eamBaseRepairDepartService.list(query1);
+            if (eamBaseRepairDepartList == null || eamBaseRepairDepartList.size() == 0) {
+                strArray[0] = YouBianCodeUtil.getNextYouBianCode(null);
+                strArray[1] = "1";
+                return strArray;
+            } else {
+                EamBaseRepairDepart eamBaseRepairDepart = eamBaseRepairDepartList.get(0);
+                oldOrgCode = eamBaseRepairDepart.getOrgCode();
+                orgType = eamBaseRepairDepart.getOrgType();
+                newOrgCode = YouBianCodeUtil.getNextYouBianCode(oldOrgCode);
+            }
+        } else {//鍙嶄箣鍒欐煡璇㈠嚭鎵�鏈夊悓绾х殑杞﹂棿,鑾峰彇缁撴灉鍚庢湁涓ょ鎯呭喌,鏈夊悓绾у拰娌℃湁鍚岀骇
+            // 灏佽鏌ヨ鍚岀骇鐨勬潯浠�
+            query.eq(EamBaseRepairDepart::getParentId, parentId);
+            // 闄嶅簭鎺掑簭
+            query.orderByDesc(EamBaseRepairDepart::getOrgCode);
+            // 鏌ヨ鍑哄悓绾х淮淇儴闂ㄧ彮缁勭殑闆嗗悎
+            List<EamBaseRepairDepart> parentList = eamBaseRepairDepartService.list(query);
+            // 鏌ヨ鍑虹埗绾х淮淇儴闂ㄧ彮缁�
+            EamBaseRepairDepart repairDepart = eamBaseRepairDepartService.getById(parentId);
+            // 鑾峰彇鐖剁骇缁翠慨閮ㄩ棬鐝粍鐨刢ode
+            String parentCode = repairDepart.getOrgCode();
+            // 鏍规嵁鐖剁骇缁翠慨閮ㄩ棬鐝粍绫诲瀷绠楀嚭褰撳墠缁翠慨閮ㄩ棬鐝粍鐨勭被鍨�
+            orgType = String.valueOf(Integer.valueOf(repairDepart.getOrgType()) + 1);
+            // 澶勭悊鍚岀骇缁翠慨閮ㄩ棬鐝粍涓簄ull鐨勬儏鍐�
+            if (parentList == null || parentList.size() == 0) {
+                // 鐩存帴鐢熸垚褰撳墠鐨勭淮淇儴闂ㄧ彮缁勭紪鐮佸苟杩斿洖
+                newOrgCode = YouBianCodeUtil.getSubYouBianCode(parentCode, null);
+            } else { //澶勭悊鏈夊悓绾х淮淇儴闂ㄧ彮缁勭殑鎯呭喌
+                // 鑾峰彇鍚岀骇缁翠慨閮ㄩ棬鐝粍鐨勭紪鐮�,鍒╃敤宸ュ叿绫�
+                String subCode = parentList.get(0).getOrgCode();
+                // 杩斿洖鐢熸垚鐨勫綋鍓嶇淮淇儴闂ㄧ彮缁勭紪鐮�
+                newOrgCode = YouBianCodeUtil.getSubYouBianCode(parentCode, subCode);
+            }
+        }
+        // 杩斿洖鏈�缁堝皝瑁呬簡缁翠慨閮ㄩ棬鐝粍缂栫爜鍜岀淮淇儴闂ㄧ彮缁勭被鍨嬬殑鏁扮粍
+        strArray[0] = newOrgCode;
+        strArray[1] = orgType;
+        return strArray;
+    }
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/IEamBaseRepairDepartService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/IEamBaseRepairDepartService.java
new file mode 100644
index 0000000..2b60d19
--- /dev/null
+++ b/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);
+
+    /**
+     * 鏌ヨ鎵�鏈夐儴闂―epartId淇℃伅,骞跺垎鑺傜偣杩涜鏄剧ず
+     */
+    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鍜岃溅闂磇d鑾峰彇鐢ㄦ埛鎷ユ湁鐨勮溅闂磇d
+     *
+     * @param userId
+     * @param productionId
+     * @return
+     */
+    String findFirstMaintainDepart(String userId, String productionId);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛id鏌ヨ鐢ㄦ埛宸ユ鏉冮檺
+     */
+    String findThreeMaintainDepartId(String userId);
+
+    /**
+     *
+     * @param equipmentId
+     * @return
+     */
+    EamBaseRepairDepart findMaintainDepartList(String equipmentId);
+    
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/BaseFactoryServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/BaseFactoryServiceImpl.java
index beb7785..5790467 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/BaseFactoryServiceImpl.java
+++ b/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;
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/EamBaseRepairDepartImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/service/impl/EamBaseRepairDepartImpl.java
new file mode 100644
index 0000000..5265d23
--- /dev/null
+++ b/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<>();
+        //鎵惧埌鎵�鏈夌淮淇儴闂ㄧ彮缁刬d鐨勪笂绾d
+        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鍜岃溅闂磇d鑾峰彇鐢ㄦ埛鎷ユ湁鐨勮溅闂磇d
+     * @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);
+                }
+            }
+        }
+    }
+
+    /**
+     * 閫氳繃缁翠慨閮ㄩ棬鐝粍闆嗗悎涓虹淮淇儴闂ㄧ彮缁勮缃敤鎴穒d锛岀敤浜庡墠鍙板睍绀�
+     */
+    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瀵瑰簲鐨勮礋璐g敤鎴�
+        for (EamBaseRepairDepart eamBaseRepairDepart : repairDepartList) {
+            if (map.containsKey(eamBaseRepairDepart.getId())) {
+                eamBaseRepairDepart.setDirectorUserIds(map.get(eamBaseRepairDepart.getId()).toString());
+            }
+        }
+    }
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/util/FindsBaseFactorysChildrenUtil.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/util/FindsBaseFactorysChildrenUtil.java
similarity index 98%
rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/util/FindsBaseFactorysChildrenUtil.java
rename to lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/util/FindsBaseFactorysChildrenUtil.java
index a0d7778..3b812f2 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/util/FindsBaseFactorysChildrenUtil.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/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;
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/util/FindsRepairDepartsChildrenUtil.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/util/FindsRepairDepartsChildrenUtil.java
new file mode 100644
index 0000000..673ceb6
--- /dev/null
+++ b/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灏哠ysMaintainDepart绫诲瀷鐨刲ist闆嗗悎杞崲鎴怑amBaseRepairDepartTreeModel绫诲瀷鐨勯泦鍚�
+     */
+    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=====
+     * 璇ユ柟娉曟槸鎵惧埌骞跺皝瑁呴《绾х埗绫荤殑鑺傜偣鍒癟reeList闆嗗悎
+     */
+    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====
+     * 璇ユ柟娉曟槸灏嗗瓙鑺傜偣涓虹┖鐨凩ist闆嗗悎璁剧疆涓篘ull鍊�
+     */
+    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;
+    }
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/util/WorkShopOrgCodeProRule.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/util/WorkShopOrgCodeProRule.java
similarity index 98%
rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/util/WorkShopOrgCodeProRule.java
rename to lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/util/WorkShopOrgCodeProRule.java
index 07d8ffc..f17a2e9 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/controller/util/WorkShopOrgCodeProRule.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/base/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;
diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java
index b6b7e7b..f3c3246 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java
+++ b/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;
+
+    /**
      * 澶氱鎴穒d閰嶇疆锛岀紪杈戠敤鎴风殑鏃跺�欒缃�
      */
     private String relTenantIds;

--
Gitblit v1.9.3