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