zhangherong
2025-07-03 c82b14f3a882698cbca62ef168615d31711320ca
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<>();
//        //找到所有维修部门班组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());
//            }
//        }
//    }
}