From fe65bb1d764ca9d32647818240bb551db06e0b7c Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期一, 30 六月 2025 15:50:04 +0800
Subject: [PATCH] 设备车间管理与用户

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

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/WorkShopDepartServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/WorkShopDepartServiceImpl.java
new file mode 100644
index 0000000..5b28948
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/WorkShopDepartServiceImpl.java
@@ -0,0 +1,230 @@
+package org.jeecg.modules.eam.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+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.entity.WorkShopDepart;
+import org.jeecg.modules.eam.entity.WorkShopDepartUser;
+import org.jeecg.modules.eam.mapper.WorkShopDepartMapper;
+import org.jeecg.modules.eam.mapper.WorkShopDepartUserMapper;
+import org.jeecg.modules.eam.model.EamWorkShopDepartTreeModel;
+import org.jeecg.modules.eam.model.WorkShopIdModel;
+import org.jeecg.modules.eam.service.IWorkShopDepartService;
+import org.jeecg.modules.eam.util.FindsWorkShopDepartsChildrenUtil;
+import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.mapper.SysUserMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+/**
+ * @Description: 璁惧杞﹂棿绠$悊
+ * @Author: jeecg-boot
+ * @Date:   2025-06-30
+ * @Version: V1.0
+ */
+@Service
+public class WorkShopDepartServiceImpl extends ServiceImpl<WorkShopDepartMapper, WorkShopDepart> implements IWorkShopDepartService {
+
+    @Autowired
+    private SysUserMapper sysUserMapper;
+
+    @Autowired
+    private WorkShopDepartUserMapper workShopDepartUserMapper;
+
+    /**
+     * queryTreeList 瀵瑰簲 queryTreeList 鏌ヨ鎵�鏈夌殑璁惧杞﹂棿绠$悊鏁版嵁,浠ユ爲缁撴瀯褰㈠紡鍝嶅簲缁欏墠绔�
+     */
+    @Override
+    public List<EamWorkShopDepartTreeModel> queryTreeList() {
+        LambdaQueryWrapper<WorkShopDepart> query = new LambdaQueryWrapper<WorkShopDepart>();
+        query.eq(WorkShopDepart::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
+        query.orderByAsc(WorkShopDepart::getWorkShopOrder);
+        List<WorkShopDepart> list = this.list(query);
+        //璁剧疆鐢ㄦ埛id锛岃鍓嶅彴鏄剧ず
+        this.setUserIdsByProList(list);
+        //璋冪敤wrapTreeDataToTreeList鏂规硶鐢熸垚鏍戠姸鏁版嵁
+        return FindsWorkShopDepartsChildrenUtil.wrapTreeDataToTreeList(list);
+    }
+
+    /**
+     * queryTreeList 鏍规嵁璁惧杞﹂棿绠$悊id鏌ヨ,鍓嶇鍥炴樉璋冪敤
+     */
+    @Override
+    public List<EamWorkShopDepartTreeModel> queryTreeList(String ids) {
+        List<EamWorkShopDepartTreeModel> listResult = new ArrayList<>();
+        LambdaQueryWrapper<WorkShopDepart> query = new LambdaQueryWrapper<WorkShopDepart>();
+        query.eq(WorkShopDepart::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
+        if (oConvertUtils.isNotEmpty(ids)) {
+            query.in(true, WorkShopDepart::getId, ids.split(","));
+        }
+        query.orderByAsc(WorkShopDepart::getWorkShopOrder);
+        List<WorkShopDepart> list = this.list(query);
+        for (WorkShopDepart production : list) {
+            if (production.getDescription().isEmpty()){
+                production.setDescription("");
+            }
+            listResult.add(new EamWorkShopDepartTreeModel(production));
+        }
+        return listResult;
+    }
+
+    /**
+     * 鏍规嵁鍏抽敭瀛楁悳绱㈢浉鍏崇殑閮ㄩ棬鏁版嵁
+     */
+    @Override
+    public List<EamWorkShopDepartTreeModel> searchByKeyWord(String keyWord) {
+        LambdaQueryWrapper<WorkShopDepart> query = new LambdaQueryWrapper<>();
+        List<EamWorkShopDepartTreeModel> newList = new ArrayList<>();
+        query.like(WorkShopDepart::getWorkShopName, keyWord);
+        EamWorkShopDepartTreeModel model = new EamWorkShopDepartTreeModel();
+        List<WorkShopDepart> productionList = this.list(query);
+        if (!productionList.isEmpty()) {
+            for (WorkShopDepart WorkShopDepart : productionList) {
+                model = new EamWorkShopDepartTreeModel(WorkShopDepart);
+                model.setChildren(null);
+                newList.add(model);
+            }
+            return newList;
+        }
+        return Collections.emptyList();
+    }
+
+    /**
+     * saveProductionData 瀵瑰簲 add 淇濆瓨鐢ㄦ埛鍦ㄩ〉闈㈡坊鍔犵殑鏂扮殑璁惧杞﹂棿绠$悊瀵硅薄鏁版嵁
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void saveWorkShopDepartData(WorkShopDepart WorkShopDepart) {
+        if (WorkShopDepart != null) {
+            if (WorkShopDepart.getParentId() == null) {
+                WorkShopDepart.setParentId("");
+            }
+            WorkShopDepart.setId(IdWorker.getIdStr(WorkShopDepart));
+            // 鍏堝垽鏂瀵硅薄鏈夋棤鐖剁骇ID,鏈夊垯鎰忓懗鐫�涓嶆槸鏈�楂樼骇,鍚﹀垯鎰忓懗鐫�鏄渶楂樼骇
+            // 鑾峰彇鐖剁骇ID
+            String parentId = WorkShopDepart.getParentId();
+            JSONObject formData = new JSONObject();
+            formData.put("parentId",parentId);
+            String[] codeArray = (String[]) FillRuleUtil.executeRule(FillRuleConstant.PRODUCTION,formData);
+            WorkShopDepart.setOrgCode(codeArray[0]);
+            String orgType = codeArray[1];
+            WorkShopDepart.setOrgType(String.valueOf(orgType));
+            WorkShopDepart.setDelFlag(CommonConstant.DEL_FLAG_0.toString());
+            this.save(WorkShopDepart);
+        }
+    }
+
+    @Override
+    @Cacheable(value = "eam:cache:workshop:allids")
+    public List<WorkShopIdModel> queryProductionIdTreeList() {
+        LambdaQueryWrapper<WorkShopDepart> query = new LambdaQueryWrapper<>();
+        query.eq(WorkShopDepart::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
+        query.orderByAsc(WorkShopDepart::getWorkShopOrder);
+        List<WorkShopDepart> list = this.list(query);
+        //璋冪敤wrapTreeDataToTreeList鏂规硶鐢熸垚鏍戠姸鏁版嵁
+        return FindsWorkShopDepartsChildrenUtil.wrapTreeDataToProductionIdTreeList(list);
+    }
+
+
+    /**
+     * updateProductionDataById 瀵瑰簲 edit 鏍规嵁璁惧杞﹂棿绠$悊涓婚敭鏉ユ洿鏂板搴旂殑璁惧杞﹂棿绠$悊鏁版嵁
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean updateWorkShopDepartDataById(WorkShopDepart WorkShopDepart) {
+        if (WorkShopDepart != null) {
+            this.updateById(WorkShopDepart);
+            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鍒犻櫎鐢ㄦ埛涓庤澶囪溅闂寸鐞嗗叧绯�
+        workShopDepartUserMapper.delete(new LambdaQueryWrapper<WorkShopDepartUser>().in(WorkShopDepartUser::getWorkShopDepartId, 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鍒犻櫎鐢ㄦ埛涓庤澶囪溅闂寸鐞嗗叧绯�
+        workShopDepartUserMapper.delete(new LambdaQueryWrapper<WorkShopDepartUser>().in(WorkShopDepartUser::getWorkShopDepartId, idList));
+    }
+
+    /**
+     * 閫氳繃璁惧杞﹂棿绠$悊闆嗗悎涓鸿澶囪溅闂寸鐞嗚缃敤鎴穒d锛岀敤浜庡墠鍙板睍绀�
+     */
+    private void setUserIdsByProList(List<WorkShopDepart> productionList) {
+        //鏌ヨ璐熻矗閮ㄩ棬涓嶄负绌虹殑鎯呭喌
+        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 productionIds = user.getProductionIds();
+            if (StringUtils.isNotBlank(productionIds)) {
+                String[] productionIdArray = productionIds.split(",");
+                for (String productionId : productionIdArray) {
+                    if (map.containsKey(productionId)) {
+                        String userIds = map.get(productionId) + "," + user.getId();
+                        map.put(productionId, userIds);
+                    } else {
+                        map.put(productionId, user.getId());
+                    }
+                }
+            }
+        }
+        //寰幆璁惧杞﹂棿绠$悊闆嗗悎鎵惧埌璁惧杞﹂棿绠$悊id瀵瑰簲鐨勮礋璐g敤鎴�
+        for (WorkShopDepart WorkShopDepart : productionList) {
+            if (map.containsKey(WorkShopDepart.getId())) {
+                WorkShopDepart.setDirectorUserIds(map.get(WorkShopDepart.getId()).toString());
+            }
+        }
+    }
+
+    /**
+     * delete 鏂规硶璋冪敤 閫掑綊鏌ユ壘瀛愰泦id
+     */
+    private void checkChildrenExists(String id, List<String> idList) {
+        LambdaQueryWrapper<WorkShopDepart> query = new LambdaQueryWrapper<>();
+        query.eq(WorkShopDepart::getParentId, id);
+        List<WorkShopDepart> workShopDepartList = this.list(query);
+        if (workShopDepartList != null && !workShopDepartList.isEmpty()) {
+            for (WorkShopDepart workShopDepart : workShopDepartList) {
+                idList.add(workShopDepart.getId());
+                this.checkChildrenExists(workShopDepart.getId(), idList);
+            }
+        }
+    }
+}

--
Gitblit v1.9.3