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-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PermissionStreamNewServiceImpl.java | 300 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 300 insertions(+), 0 deletions(-) diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PermissionStreamNewServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PermissionStreamNewServiceImpl.java new file mode 100644 index 0000000..672b6ab --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/PermissionStreamNewServiceImpl.java @@ -0,0 +1,300 @@ +package org.jeecg.modules.dnc.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.collections4.ListUtils; +import org.jeecg.modules.dnc.entity.PermissionStreamNew; +import org.jeecg.modules.dnc.entity.ProductMix; +import org.jeecg.modules.dnc.mapper.PermissionStreamNewMapper; +import org.jeecg.modules.dnc.service.IPermissionStreamNewService; +import org.jeecg.modules.system.entity.SysUser; +import org.jeecg.modules.system.service.ISysUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +@Service +public class PermissionStreamNewServiceImpl extends ServiceImpl<PermissionStreamNewMapper, PermissionStreamNew> implements IPermissionStreamNewService { + @Autowired + private ISysUserService sysUserService; + + /** + * 鏍规嵁鐢ㄦ埛id鑾峰彇缁撴瀯鏍戞潈闄� + * @param userId + * @return + */ + @Override + public List<ProductMix> loadProductMix(String userId,List<String> productIdList){ + return baseMapper.loadProductMix(userId,productIdList); + } + + /** + * 鏍规嵁鐢ㄦ埛id銆侀儴闂ㄥ垪琛ㄣ�乮d銆佷笟鍔$被鍨嬭幏鍙栧搴旂粨鏋勬爲鏉冮檺 + * @param userId + * @param productIdList + * @param businessId + * @param businessType + * @return + */ + @Override + public List<ProductMix> loadProductMixByBusinessIdAndBusinessType(String userId,List<String> productIdList, + String businessId,String businessType){ + return baseMapper.loadProductMixByBusinessId(userId,productIdList,businessId,businessType); + } + + /** + * 绠$悊鍛樿幏鍙栨墍鏈夋潈闄� + * @return + */ + @Override + public List<ProductMix> loadProductMixAll(String userId){ + return baseMapper.loadProductMixAll(userId); + } + + /** + * 閫氳繃涓氬姟id鍜屼笟鍔$被鍨嬭幏鍙栨潈闄� + * @param businessId + * @param businessType + * @return + */ + @Override + public List<PermissionStreamNew> loadPermissionStreamNewByBusinessId(String businessId,String businessType,String type){ + QueryWrapper<PermissionStreamNew> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotEmpty(businessId),"business_id",businessId); + queryWrapper.eq(StrUtil.isNotEmpty(businessType),"business_type",businessType); + //鐢ㄦ埛鏉冮檺锛岄儴闂ㄥ瓧娈典负绌� + if("0".equals(type)) { + queryWrapper.isNotNull("user_id"); + }else if("1".equals(type)){ + queryWrapper.isNull("user_id"); + } + queryWrapper.eq("delete_flag",0); + return baseMapper.selectList(queryWrapper); + } + + /** + * 閫氳繃涓氬姟id鍜岀敤鎴穒d鑾峰彇鏉冮檺 + * @param businessId + * @param userId + * @return + */ + @Override + public PermissionStreamNew loadPermissionStreamNewByBusinessIdAndUserId(String businessId, String userId,String businessType){ + QueryWrapper<PermissionStreamNew> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotEmpty(businessId),"business_id",businessId); + queryWrapper.eq(StrUtil.isNotEmpty(userId),"user_id",userId); + queryWrapper.eq(StrUtil.isNotEmpty(businessType),"business_type",businessType); + queryWrapper.eq("delete_flag",0); + queryWrapper.isNull("depart_id"); + return baseMapper.selectOne(queryWrapper); + } + + /** + * 閫氳繃涓氬姟id鍜屼笟鍔$被鍨嬪拰閮ㄩ棬id鑾峰彇閮ㄩ棬鏉冮檺 + * @param businessId + * @param businessType + * @param departId + * @return + */ + @Override + public PermissionStreamNew loadPermissionStreamNewByBusinessIdAndDepartId(String businessId, String departId,String businessType){ + QueryWrapper<PermissionStreamNew> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotEmpty(businessId),"business_id",businessId); + queryWrapper.eq(StrUtil.isNotEmpty(departId),"depart_id",departId); + queryWrapper.eq(StrUtil.isNotEmpty(businessType),"business_type",businessType); + queryWrapper.eq("delete_flag",0); + queryWrapper.isNull("user_id"); + return baseMapper.selectOne(queryWrapper); + } + + /** + * 閫氳繃businessId鑾峰彇鏉冮檺 + * @param businessId + * @return + */ + @Override + public List<PermissionStreamNew> loadProductMixByBusinessId(String businessId,String businessType){ + QueryWrapper<PermissionStreamNew> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotEmpty(businessId),"business_id",businessId); + queryWrapper.eq(StrUtil.isNotEmpty(businessType),"business_type",businessType); + queryWrapper.eq("delete_flag",0); + return baseMapper.selectList(queryWrapper); + } + + /** + * 閫氳繃涓氬姟id涓庣被鍨嬪垹闄ゆ潈闄� + * @param businessId + * @param businessType + * @param type 0锛氱敤鎴锋潈闄愶紝1锛氶儴闂ㄦ潈闄� + * @return + */ + @Override + public boolean deletePermissionStreamNewByBusinessId(String businessId,String businessType,String type){ + QueryWrapper<PermissionStreamNew> queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotEmpty(businessId),"business_id",businessId); + queryWrapper.eq(StrUtil.isNotEmpty(businessType),"business_type",businessType); + //鐢ㄦ埛鏉冮檺锛岄儴闂ㄥ瓧娈典负绌� + if("0".equals(type)){ + queryWrapper.isNotNull("user_id"); + queryWrapper.isNull("depart_id"); + }else if("1".equals(type)){ + queryWrapper.isNull("user_id"); + queryWrapper.isNotNull("depart_id"); + } + queryWrapper.eq("delete_flag",0); + return baseMapper.delete(queryWrapper)>0; + } + + /** + * 閫氳繃List<PermissionStreamNew>鎵归噺鍒犻櫎 + * @param permissionStreamNewList + * @return + */ + @Override + public boolean deletePermissionStreamNewByList(List<PermissionStreamNew> permissionStreamNewList){ + if(permissionStreamNewList == null || permissionStreamNewList.isEmpty()) + return false; + if(permissionStreamNewList.size() == 1) { + return super.removeById(permissionStreamNewList.get(0).getId()); + } + List<String> ids = new ArrayList<>(); + permissionStreamNewList.forEach(item -> { + ids.add(item.getId()); + }); + if (ids.size()>1000) { + List<List<String>> partition = ListUtils.partition(ids, 1000); + for (List<String> partitionList : partition) { + super.removeByIds(partitionList); + } + }else { + super.removeByIds(ids); + } + return true; + } + + /** + * 閫氳繃涓�缁勪笟鍔d鍜岀敤鎴穒d鍜岀被鍨嬫煡璇� + * @param businessIds + * @param userIds + * @param businessType + * @return + */ + @Override + public List<PermissionStreamNew> loadPermissionStreamNewByBusinessIdsAndUserIds(List<String> businessIds,List<String> userIds,String businessType){ + if(businessIds == null || businessIds.isEmpty() || userIds == null || userIds.isEmpty()) + return null; + List<PermissionStreamNew> total = new ArrayList<>(); + List<List<String>> compListArr; + List<List<String>> userIdsArr; + if(businessIds.size() > 1000){ + compListArr = ListUtils.partition(businessIds, 100); + }else { + compListArr = ListUtils.partition(businessIds, 1000); + } + if(userIds.size() > 1000){ + userIdsArr = ListUtils.partition(userIds, 100); + }else { + userIdsArr = ListUtils.partition(userIds, 1000); + } + for(List<String> compList : compListArr) { + for(List<String> userIdList : userIdsArr){ + LambdaQueryWrapper<PermissionStreamNew> queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.in(PermissionStreamNew::getBusinessId, compList); + queryWrapper.in(PermissionStreamNew::getUserId, userIdList); + queryWrapper.eq(PermissionStreamNew::getBusinessType, businessType); + queryWrapper.isNull(PermissionStreamNew::getDepartId); + queryWrapper.eq(PermissionStreamNew::getDeleteFlag,0); + List<PermissionStreamNew> list = super.list(queryWrapper); + if(list != null && !list.isEmpty()){ + total.addAll(list); + } + } + } + return total; + } + + /** + * 閫氳繃涓�缁勪笟鍔d鍜岄儴闂╥d鍜岀被鍨嬫煡璇� + * @param businessIds + * @param departIds + * @param businessType + * @return + */ + @Override + public List<PermissionStreamNew> loadPermissionStreamNewByBusinessIdsAndDepartIds(List<String> businessIds,List<String> departIds,String businessType){ + if(businessIds == null || businessIds.isEmpty() || departIds == null || departIds.isEmpty()) + return null; + List<PermissionStreamNew> total = new ArrayList<>(); + List<List<String>> compListArr; + List<List<String>> departListArr; + if(businessIds.size() > 1000){ + compListArr = ListUtils.partition(businessIds, 100); + }else { + compListArr = ListUtils.partition(businessIds, 1000); + } + if(departIds.size() > 1000){ + departListArr = ListUtils.partition(departIds, 100); + }else { + departListArr = ListUtils.partition(departIds, 1000); + } + for(List<String> compList : compListArr) { + for(List<String> departList : departListArr){ + LambdaQueryWrapper<PermissionStreamNew> queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.in(PermissionStreamNew::getBusinessId, compList); + queryWrapper.in(PermissionStreamNew::getDepartId, departList); + queryWrapper.eq(PermissionStreamNew::getBusinessType, businessType); + queryWrapper.isNull(PermissionStreamNew::getUserId); + queryWrapper.eq(PermissionStreamNew::getDeleteFlag,0); + List<PermissionStreamNew> list = super.list(queryWrapper); + if(list != null && !list.isEmpty()){ + total.addAll(list); + } + } + } + return total; + } + + /** + * 閫氳繃娣诲姞鏉冮檺 + * @param permissionStream + * @return + */ + @Override + public boolean addPermissionStreamNew(PermissionStreamNew permissionStream) { + // 楠岃瘉鍙傛暟鏈夋晥鎬� + if (permissionStream == null) { + return false; + } + // 鑾峰彇绠$悊鍛樼敤鎴� + SysUser adminUser = sysUserService.getUserByName("admin"); + if (adminUser == null) { + // 鑻ョ鐞嗗憳鐢ㄦ埛涓嶅瓨鍦紝鍙牴鎹疄闄呮儏鍐靛鐞嗭紝杩欓噷绠�鍗曡繑鍥� false + return false; + } + try { + boolean isAdmin = Objects.equals(permissionStream.getUserId(), adminUser.getId()); + // 淇濆瓨鏈韩鏉冮檺 + super.save(permissionStream); + if (!isAdmin) { + // 鑻ヤ笉鏄鐞嗗憳锛屽鍒朵竴涓柊鐨� PermissionStreamNew 瀵硅薄骞惰缃负绠$悊鍛� ID 鍚庝繚瀛� + PermissionStreamNew adminPermissionStream = new PermissionStreamNew(); + adminPermissionStream.setUserId(adminUser.getId()); + adminPermissionStream.setBusinessId(permissionStream.getBusinessId()); + adminPermissionStream.setBusinessType(permissionStream.getBusinessType()); + super.save(adminPermissionStream); + } + return true; + } catch (Exception e) { + // 璁板綍寮傚父淇℃伅锛屾柟渚垮悗缁帓鏌ラ棶棰� + e.printStackTrace(); + return false; + } + } + +} -- Gitblit v1.9.3