From 23855599412c4d61b38d78f0f3abd3430a48b5b1 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期三, 25 六月 2025 11:51:38 +0800 Subject: [PATCH] Merge branch 'mdc_hyjs_master' --- lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java | 645 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 645 insertions(+), 0 deletions(-) diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java new file mode 100644 index 0000000..291d646 --- /dev/null +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java @@ -0,0 +1,645 @@ +package org.jeecg.modules.system.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.constant.FillRuleConstant; +import org.jeecg.common.system.vo.DictModel; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.FillRuleUtil; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.system.entity.*; +import org.jeecg.modules.system.mapper.MdcProductionEquipmentMapper; +import org.jeecg.modules.system.mapper.MdcProductionMapper; +import org.jeecg.modules.system.mapper.MdcUserProductionMapper; +import org.jeecg.modules.system.mapper.SysUserMapper; +import org.jeecg.modules.system.model.MdcProductionTreeModel; +import org.jeecg.modules.system.model.ProductionIdModel; +import org.jeecg.modules.system.service.IMdcProductionService; +import org.jeecg.modules.system.service.ISysDictService; +import org.jeecg.modules.system.service.ISysParamsService; +import org.jeecg.modules.system.util.FindsProductionsChildrenUtil; +import org.jeecg.modules.system.vo.MdcProOptionsVo; +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; + +/** + * @Description: 浜х嚎琛� + * @Author: liuS + * @Date: 2023-03-23 + * @Version: V1.0 + */ +@Service +public class MdcProductionServiceImpl extends ServiceImpl<MdcProductionMapper, MdcProduction> implements IMdcProductionService { + + @Resource + private SysUserMapper sysUserMapper; + + @Resource + private MdcUserProductionMapper userProductionMapper; + + @Resource + private MdcProductionEquipmentMapper productionEquipmentMapper; + + @Resource + private ISysParamsService sysParamsService; + + @Resource + private ISysDictService sysDictService; + /** + * queryTreeList 瀵瑰簲 queryTreeList 鏌ヨ鎵�鏈夌殑浜х嚎鏁版嵁,浠ユ爲缁撴瀯褰㈠紡鍝嶅簲缁欏墠绔� + */ + @Override + @Cacheable(value = "mdc:cache:production:alldata") + public List<MdcProductionTreeModel> queryTreeList() { + LambdaQueryWrapper<MdcProduction> query = new LambdaQueryWrapper<MdcProduction>(); + query.eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); + query.orderByAsc(MdcProduction::getProductionOrder); + List<MdcProduction> list = this.list(query); + //璁剧疆鐢ㄦ埛id锛岃鍓嶅彴鏄剧ず + this.setUserIdsByProList(list); + //璋冪敤wrapTreeDataToTreeList鏂规硶鐢熸垚鏍戠姸鏁版嵁 + return FindsProductionsChildrenUtil.wrapTreeDataToTreeList(list); + } + + /** + * 鏌ヨ鎵�鏈変骇绾夸俊鎭紝骞跺垎鑺傜偣杩涜鏄剧ず(娣诲姞绯荤粺閰嶇疆) + */ + @Override + public List<MdcProductionTreeModel> queryTreeListByConfig(){ + SysParams sysParams = sysParamsService.getSysPramBySettingKey("dnc_production"); + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + LambdaQueryWrapper<MdcProduction> query = new LambdaQueryWrapper<MdcProduction>(); + if (sysParams == null) { + return null; + }else { + List<String> productionIds = new ArrayList<>(); + if (!("admin").equals(loginUser.getUsername())) { + //涓嶆槸瓒呯骇绠$悊鍛橈紝鑾峰彇鐢ㄦ埛鎷ユ湁鐨勪骇绾� + if (loginUser.getProductionIds() != null) { + if (loginUser.getProductionIds().contains(",")) { + productionIds = Arrays.asList(loginUser.getProductionIds().split(",")); + } else { + productionIds = Collections.singletonList(loginUser.getProductionIds()); + } + } + } + if (("0").equals(sysParams.getSettingValue())){ + query.eq(MdcProduction::getOrgType,"2"); + query.in(!productionIds.isEmpty(), MdcProduction::getId, productionIds); + query.eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); + query.orderByAsc(MdcProduction::getProductionOrder); + List<MdcProduction> list = this.list(query); + //璁剧疆鐢ㄦ埛id锛岃鍓嶅彴鏄剧ず + this.setUserIdsByProList(list); + //灏佽涓�绾ф爲 + List<MdcProductionTreeModel> listResult = new ArrayList<>(); + for (MdcProduction production : list) { + if (production.getDescription().isEmpty()){ + production.setDescription(""); + } + listResult.add(new MdcProductionTreeModel(production)); + } + //璋冪敤wrapTreeDataToTreeList鏂规硶鐢熸垚鏍戠姸鏁版嵁 + return listResult; + }else { + query.eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); + query.orderByAsc(MdcProduction::getProductionOrder); + List<MdcProduction> list = this.list(query); + //璁剧疆鐢ㄦ埛id锛岃鍓嶅彴鏄剧ず + this.setUserIdsByProList(list); + //璋冪敤wrapTreeDataToTreeList鏂规硶鐢熸垚鏍戠姸鏁版嵁 + return FindsProductionsChildrenUtil.wrapTreeDataToTreeList(list); + } + } + } + + /** + * queryTreeList 鏍规嵁浜х嚎id鏌ヨ,鍓嶇鍥炴樉璋冪敤 + */ + @Override + public List<MdcProductionTreeModel> queryTreeList(String ids) { + List<MdcProductionTreeModel> listResult = new ArrayList<>(); + LambdaQueryWrapper<MdcProduction> query = new LambdaQueryWrapper<MdcProduction>(); + query.eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); + if (oConvertUtils.isNotEmpty(ids)) { + query.in(true, MdcProduction::getId, ids.split(",")); + } + query.orderByAsc(MdcProduction::getProductionOrder); + List<MdcProduction> list = this.list(query); + for (MdcProduction production : list) { + if (production.getDescription().isEmpty()){ + production.setDescription(""); + } + listResult.add(new MdcProductionTreeModel(production)); + } + return listResult; + } + + @Override + @Cacheable(value = "mdc:cache:production:allids") + public List<ProductionIdModel> queryProductionIdTreeList() { + LambdaQueryWrapper<MdcProduction> query = new LambdaQueryWrapper<>(); + query.eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); + query.orderByAsc(MdcProduction::getProductionOrder); + List<MdcProduction> list = this.list(query); + //璋冪敤wrapTreeDataToTreeList鏂规硶鐢熸垚鏍戠姸鏁版嵁 + return FindsProductionsChildrenUtil.wrapTreeDataToProductionIdTreeList(list); + } + + /** + * 鏍规嵁鍏抽敭瀛楁悳绱㈢浉鍏崇殑閮ㄩ棬鏁版嵁 + */ + @Override + public List<MdcProductionTreeModel> searchByKeyWord(String keyWord) { + LambdaQueryWrapper<MdcProduction> query = new LambdaQueryWrapper<>(); + List<MdcProductionTreeModel> newList = new ArrayList<>(); + query.like(MdcProduction::getProductionName, keyWord); + MdcProductionTreeModel model = new MdcProductionTreeModel(); + List<MdcProduction> productionList = this.list(query); + if (!productionList.isEmpty()) { + for (MdcProduction mdcProduction : productionList) { + model = new MdcProductionTreeModel(mdcProduction); + model.setChildren(null); + newList.add(model); + } + return newList; + } + return Collections.emptyList(); + } + + /** + * saveProductionData 瀵瑰簲 add 淇濆瓨鐢ㄦ埛鍦ㄩ〉闈㈡坊鍔犵殑鏂扮殑浜х嚎瀵硅薄鏁版嵁 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void saveProductionData(MdcProduction mdcProduction) { + if (mdcProduction != null) { + if (mdcProduction.getParentId() == null) { + mdcProduction.setParentId(""); + } + mdcProduction.setId(IdWorker.getIdStr(mdcProduction)); + // 鍏堝垽鏂瀵硅薄鏈夋棤鐖剁骇ID,鏈夊垯鎰忓懗鐫�涓嶆槸鏈�楂樼骇,鍚﹀垯鎰忓懗鐫�鏄渶楂樼骇 + // 鑾峰彇鐖剁骇ID + String parentId = mdcProduction.getParentId(); + JSONObject formData = new JSONObject(); + formData.put("parentId",parentId); + String[] codeArray = (String[]) FillRuleUtil.executeRule(FillRuleConstant.PRODUCTION,formData); + mdcProduction.setOrgCode(codeArray[0]); + String orgType = codeArray[1]; + mdcProduction.setOrgType(String.valueOf(orgType)); + mdcProduction.setDelFlag(CommonConstant.DEL_FLAG_0.toString()); + this.save(mdcProduction); + + //澶勭悊瀛樺湪鐖跺瓙鍏崇郴 mdc鏍囪缁熶竴鐨勯棶棰� + //1.mdc鏍囪 涓� 1 寮�鍚� 鐖剁骇鑺傜偣瑕佺粺涓�寮�鍚� + //2.mdc鏍囪 涓� 0 鍏抽棴 瀛愮骇鑺傜偣瑕佺粺涓�鍏抽棴 鏂板鎿嶄綔 涓嶅瓨鍦ㄦ鎯呭喌 + if(StringUtils.isNotBlank(parentId) && CommonConstant.DEFAULT_1.equals(mdcProduction.getMdcFlag())){ + openParentMdcFlag(parentId); + } + } + } + + /** + * updateProductionDataById 瀵瑰簲 edit 鏍规嵁浜х嚎涓婚敭鏉ユ洿鏂板搴旂殑浜х嚎鏁版嵁 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean updateProductionDataById(MdcProduction mdcProduction) { + if (mdcProduction != null) { + this.updateById(mdcProduction); + + //澶勭悊瀛樺湪鐖跺瓙鍏崇郴 mdc鏍囪缁熶竴鐨勯棶棰� + //1.mdc鏍囪 涓� 1 寮�鍚� 鐖剁骇鑺傜偣瑕佺粺涓�寮�鍚� + //2.mdc鏍囪 涓� 0 鍏抽棴 瀛愮骇鑺傜偣瑕佺粺涓�鍏抽棴 + String parentId = mdcProduction.getParentId(); + if(StringUtils.isNotBlank(parentId) && CommonConstant.DEFAULT_1.equals(mdcProduction.getMdcFlag())){ + openParentMdcFlag(parentId); + } + if(CommonConstant.DEFAULT_0.equals(mdcProduction.getMdcFlag())){ + //鍏抽棴 + closeChildrenMdcFlag(mdcProduction.getId()); + } + 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鍒犻櫎鐢ㄦ埛涓庝骇绾垮叧绯� + userProductionMapper.delete(new LambdaQueryWrapper<MdcUserProduction>().in(MdcUserProduction::getProId, idList)); + //鏍规嵁浜х嚎id鍒犻櫎浜х嚎涓庤澶囧叧绯� + productionEquipmentMapper.delete(new LambdaQueryWrapper<MdcProductionEquipment>().in(MdcProductionEquipment::getProductionId, 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鍒犻櫎鐢ㄦ埛涓庝骇绾垮叧绯� + userProductionMapper.delete(new LambdaQueryWrapper<MdcUserProduction>().in(MdcUserProduction::getProId, idList)); + //鏍规嵁浜х嚎id鍒犻櫎浜х嚎涓庤澶囧叧绯� + productionEquipmentMapper.delete(new LambdaQueryWrapper<MdcProductionEquipment>().in(MdcProductionEquipment::getProductionId, idList)); + } + + /** + * 鏍规嵁id鏌ヨ涓嬬骇浜х嚎 + */ + @Override + public List<MdcProduction> queryProdByPid(String pid) { + return this.baseMapper.queryProdByPid(pid); + } + + /** + * 閫掑綊鏌ヨ鎵�鏈夊瓙鑺傜偣 + */ + @Override + public List<MdcProduction> recursionChildrenByPid(String pid){ + List<String> ids=this.recursionChildren(pid); + return super.list(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()).in(MdcProduction::getId, ids)); + } + + /** + * 鏍规嵁鐢ㄦ埛id鑾峰彇浜х嚎涓嬫媺鏍戦�夐」 + */ + @Override + public List<ProductionIdModel> loadProductionTreeOptions(String userId) { + //鑾峰彇鎵�鏈変骇绾挎暟鎹� + List<MdcProduction> productionList = this.baseMapper.selectList(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()).orderByAsc(MdcProduction::getProductionOrder)); + //鏍规嵁鐢ㄦ埛id鑾峰彇鎷ユ湁鐨勪骇绾夸俊鎭泦鍚� + List<String> productionIds = userProductionMapper.queryProductionIdsByUserId(userId); + List<String> allProductionIds = new ArrayList<>(); + //鎵惧埌鎵�鏈変骇绾縤d鐨勪笂绾d + if (productionIds != null && !productionIds.isEmpty()) { + for (String productionId : productionIds) { + this.getAllProductionIds(productionList, productionId, allProductionIds); + } + } + //杩囨护浜х嚎鏁版嵁 + List<MdcProduction> list = productionList.stream().filter((MdcProduction mdcProduction) -> allProductionIds.contains(mdcProduction.getId())).collect(Collectors.toList()); + return FindsProductionsChildrenUtil.wrapTreeDataToProductionIdTreeList(list); + } + + /** + * 閫掑綊鏌ヨ鎵�鏈夊瓙鑺傜偣id + */ + @Override + public List<String> recursionChildren(String productionId) { + return this.baseMapper.recursionChildren(productionId); + } + + /** + * 鏍规嵁鐢ㄦ埛id鍜岃溅闂磇d鑾峰彇鐢ㄦ埛鎷ユ湁鐨勮溅闂磇d + * @param userId + * @param productionId + * @return + */ + @Override + public String findFirstProduction(String userId, String productionId) { + return this.baseMapper.findFirstProduction(userId, productionId); + } + + /** + * 鏍规嵁鐢ㄦ埛id鏌ヨ鐢ㄦ埛宸ユ鏉冮檺 + */ + @Override + public String findThreeProductionId(String userId) { + return this.baseMapper.findThreeProductionId(userId); + } + + /** + * delete 鏂规硶璋冪敤 閫掑綊鏌ユ壘瀛愰泦id + */ + private void checkChildrenExists(String id, List<String> idList) { + LambdaQueryWrapper<MdcProduction> query = new LambdaQueryWrapper<>(); + query.eq(MdcProduction::getParentId, id); + List<MdcProduction> productionList = this.list(query); + if (productionList != null && !productionList.isEmpty()) { + for (MdcProduction production : productionList) { + idList.add(production.getId()); + this.checkChildrenExists(production.getId(), idList); + } + } + } + + /** + * 鑾峰彇鎵�鏈夌殑浜х嚎id锛堝寘鍚墍鏈変笂绾э級 + */ + private void getAllProductionIds(List<MdcProduction> productionList, String productionId, List<String> allProductionIds) { + if (!allProductionIds.contains(productionId)) { + allProductionIds.add(productionId); + } + for (MdcProduction mdcProduction : productionList) { + if (StringUtils.isEmpty(mdcProduction.getParentId())) { + continue; + } + if (productionId.equals(mdcProduction.getId())) { + if (!allProductionIds.contains(mdcProduction.getParentId())) { + allProductionIds.add(mdcProduction.getParentId()); + getAllProductionIds(productionList, mdcProduction.getParentId(), allProductionIds); + } + } + } + } + + /** + * 閫氳繃浜х嚎闆嗗悎涓轰骇绾胯缃敤鎴穒d锛岀敤浜庡墠鍙板睍绀� + */ + private void setUserIdsByProList(List<MdcProduction> 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 (MdcProduction mdcProduction : productionList) { + if (map.containsKey(mdcProduction.getId())) { + mdcProduction.setDirectorUserIds(map.get(mdcProduction.getId()).toString()); + } + } + } + + /** + * 鏌ヨ鎵�鏈夌埗鑺傜偣鍜屾湰鑺傜偣鍚嶇О + * @param id + * @return + */ + @Override + public List<String> findListParentTreeAll(String id){ + MdcProductionEquipment mdcProductionEquipment=productionEquipmentMapper.selectOne(new QueryWrapper<MdcProductionEquipment>().eq("equipment_id",id)); + if (mdcProductionEquipment==null) { + return null; + } + List<String> strings = new ArrayList<>(); + MdcProduction en=super.getById(mdcProductionEquipment.getProductionId()); + if (en == null) { + return null; + } + strings.add(en.getProductionName()); + if (StringUtils.isEmpty(en.getParentId())) { + return strings; + } else { + return findListParentTree(en.getParentId(),strings); + } + } + + // 鏌ヨ鎵�浠ョ埗鑺傜偣 + @Override + public List<String> findListParentTree(String parentId,List<String> stringList){ + if (StringUtils.isEmpty(parentId)) { + return null; + } + if (stringList == null || stringList.isEmpty()) { + stringList = new ArrayList<>(); + } + boolean p = true; + if (p) { + MdcProduction en = super.getById(parentId); + if (en != null) { + stringList.add(0,en.getProductionName()); + } + if (StringUtils.isNotBlank(en.getParentId())) { + parentId = en.getParentId(); + findListParentTree(parentId,stringList); + } else { + p = false; + return stringList; + } + } + return stringList; + } + + /** + * 鑾峰彇鐢ㄦ埛宸插垎閰嶇殑閮ㄩ棬鍒楄〃 + * @param userId + * @return + */ + @Override + public Map<String, MdcProduction> getUserAssignedDepart(String userId){ + if(StrUtil.isEmpty(userId)) + return null; + List<MdcProduction> userPermDepart = this.baseMapper.findAllProductionId(userId); + if(userPermDepart == null || userPermDepart.isEmpty()) + return null; + Map<String, MdcProduction> map = new HashMap<>(); + userPermDepart.forEach(item -> { + map.put(item.getId(), item); + }); + return map; + } + + /** + * 閫氳繃涓�缁刬d鑾峰彇閮ㄩ棬 + * @param ids + * @return + */ + @Override + public List<String> findAllProductionIds(List<String> ids){ + return this.baseMapper.recursionChildrenByList(ids); + } + + @Override + public List<String> findParentIdsForProduction(String parentId, List<String> idList) { + if (StringUtils.isEmpty(parentId)) { + return null; + } + if (idList == null || idList.isEmpty()) { + idList = new ArrayList<>(); + } + boolean p = true; + if (p) { + MdcProduction en = super.getById(parentId); + if (en != null) { + idList.add(0, en.getId()); + } + if (StringUtils.isNotBlank(en.getParentId())) { + parentId = en.getParentId(); + findParentIdsForProduction(parentId, idList); + } else { + p = false; + return idList; + } + } + return idList; + } + + @Override + public List<MdcProductionTreeModel> queryTreeListByMdc(String ids) { + List<MdcProductionTreeModel> listResult = new ArrayList<>(); + LambdaQueryWrapper<MdcProduction> query = new LambdaQueryWrapper<MdcProduction>(); + query.eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); + query.eq(MdcProduction::getMdcFlag, CommonConstant.DEFAULT_1); + if (oConvertUtils.isNotEmpty(ids)) { + query.in(true, MdcProduction::getId, ids.split(",")); + } + query.orderByAsc(MdcProduction::getProductionOrder); + List<MdcProduction> list = this.list(query); + for (MdcProduction production : list) { + if (production.getDescription().isEmpty()){ + production.setDescription(""); + } + listResult.add(new MdcProductionTreeModel(production)); + } + return listResult; + } + + @Override + public List<MdcProductionTreeModel> queryTreeListByMdc() { + LambdaQueryWrapper<MdcProduction> query = new LambdaQueryWrapper<MdcProduction>(); + query.eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()); + query.eq(MdcProduction::getMdcFlag, CommonConstant.DEFAULT_1); + query.orderByAsc(MdcProduction::getProductionOrder); + List<MdcProduction> list = this.list(query); + //璁剧疆鐢ㄦ埛id锛岃鍓嶅彴鏄剧ず + this.setUserIdsByProList(list); + //璋冪敤wrapTreeDataToTreeList鏂规硶鐢熸垚鏍戠姸鏁版嵁 + return FindsProductionsChildrenUtil.wrapTreeDataToTreeList(list); + } + + @Override + public List<String> findChildren(List<String> mdcProductionIds) { + return this.baseMapper.findChildren(mdcProductionIds); + } + + /** + * 鏍规嵁鐢ㄦ埛id鑾峰彇浜х嚎(涓績)鎴栫彮缁勪笅鎷夐�夐」 + * @param userId + * @param productionId + * @return + */ + @Override + public List<MdcProOptionsVo> loadProductionOptions(String userId, String productionId) { + List<MdcProOptionsVo> result = new ArrayList<>(); + List<MdcProduction> mdcProductionList = this.baseMapper.loadProductionOptions(userId, productionId); + if (mdcProductionList != null && !mdcProductionList.isEmpty()) { + for (MdcProduction mdcProduction : mdcProductionList) { + MdcProOptionsVo vo = new MdcProOptionsVo().convert(mdcProduction); + result.add(vo); + } + } + return result; + } + + @Override + public List<MdcProduction> findMdcPros(String userId, String productionId) { + return this.baseMapper.loadProductionOptions(userId, productionId); + } + + @Override + public List<MdcProOptionsVo> loadTeamOptions(String userId, String productionId) { + List<MdcProOptionsVo> result = new ArrayList<>(); + List<String> productionList = this.findChildren(Arrays.asList(productionId.split(","))); + if (productionList != null && !productionList.isEmpty()) { + List<String> dictValues = this.baseMapper.findTeamValue(userId, productionList); + if (dictValues != null && !dictValues.isEmpty()) { + List<DictModel> dictModels = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_MDC_STAFF_TEAM); + if (dictModels != null && !dictModels.isEmpty()) { + for (DictModel dictModel : dictModels) { + if (dictValues.contains(dictModel.getValue())) { + MdcProOptionsVo vo = new MdcProOptionsVo(); + vo.setKey(dictModel.getValue()); + vo.setValue(dictModel.getValue()); + vo.setTitle(dictModel.getText()); + result.add(vo); + } + } + } + } + } + return result; + } + + @Override + public List<String> findProIdsByUId(String userId, List<String> allProductionIds) { + return this.baseMapper.findProIdsByUId(userId, allProductionIds); + } + + /** + * 鎵撳紑 鐖惰妭鐐� 鍙� 浠ヤ笂鐨刴dc鏍囪 + * @param parentId + */ + private void openParentMdcFlag(String parentId) { + List<String> listParentTree = findParentIdsForProduction(parentId, new ArrayList<>()); + if (!CollectionUtil.isEmpty(listParentTree)) { + UpdateWrapper<MdcProduction> updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("id", listParentTree); + updateWrapper.set("mdc_flag", "1"); + super.update(updateWrapper); + } + } + + /** + * 鍏抽棴鎵�鏈夊瓙鑺傜偣鐨刴dc鏍囪 + * @param productionId + */ + private void closeChildrenMdcFlag(String productionId) { + List<String> childrenList = recursionChildren(productionId); + if (!CollectionUtil.isEmpty(childrenList)) { + UpdateWrapper<MdcProduction> updateWrapper = new UpdateWrapper<>(); + updateWrapper.in("id", childrenList); + updateWrapper.set("mdc_flag", "0"); + super.update(updateWrapper); + } + } + + @Override + public List<String> findChildByProId(String productionId) { + return this.baseMapper.findChildByProId(productionId); + } + + @Override + public String findProName(String equipmentId) { + return this.baseMapper.findProName(equipmentId); + } + + @Override + public MdcProduction findByOrgCode(String orgCode){ + return this.baseMapper.selectOne(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getOrgCode, orgCode)); + } +} -- Gitblit v1.9.3