From c82b14f3a882698cbca62ef168615d31711320ca Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期四, 03 七月 2025 15:12:29 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/base/service/impl/EamBaseRepairDepartImpl.java |  305 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 305 insertions(+), 0 deletions(-)

diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/base/service/impl/EamBaseRepairDepartImpl.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/base/service/impl/EamBaseRepairDepartImpl.java
new file mode 100644
index 0000000..38a4fe4
--- /dev/null
+++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/base/service/impl/EamBaseRepairDepartImpl.java
@@ -0,0 +1,305 @@
+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.service.IEamBaseRepairDepartService;
+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.*;
+
+/**
+ * @Author: Lius
+ * @CreateTime: 2025-07-01
+ * @Description:
+ */
+@Service
+public class EamBaseRepairDepartImpl extends ServiceImpl<EamBaseRepairDepartMapper, EamBaseRepairDepart> implements IEamBaseRepairDepartService {
+
+    @Resource
+    private SysUserMapper sysUserMapper;
+
+    /**
+     * 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.REPAIRDEPART,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());
+//            }
+//        }
+//    }
+
+}

--
Gitblit v1.9.3