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