From 180bc26b72656bb5dcc5a0d3806bf1e2d2e862ca Mon Sep 17 00:00:00 2001 From: hzj <826100833@qq.com> Date: Thu, 22 Aug 2024 16:55:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E7=94=A8=E6=88=B7=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E8=AE=BE=E5=A4=87=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/RoleEngineerDevServiceImpl.java | 44 ++++++++++++++++++- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/RoleEngineerDevServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/RoleEngineerDevServiceImpl.java index 076afd1..84aa222 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/RoleEngineerDevServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/RoleEngineerDevServiceImpl.java @@ -1,5 +1,6 @@ package com.njcn.csdevice.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.njcn.csdevice.mapper.*; @@ -15,6 +16,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -119,7 +121,7 @@ public class RoleEngineerDevServiceImpl implements RoleEngineerDevService { List collect = new ArrayList<>(); if( - Objects.equals(role,AppRoleEnum.APP_VIP_USER.getCode())||Objects.equals(role, AppRoleEnum.ENGINEERING_USER.getCode())){ + Objects.equals(role,AppRoleEnum.APP_VIP_USER.getCode())){ csDeviceUserPOQueryWrapper.clear(); csDeviceUserPOQueryWrapper.eq("status","1").and(wq -> { wq.eq("primary_user_id", userIndex) @@ -134,7 +136,45 @@ public class RoleEngineerDevServiceImpl implements RoleEngineerDevService { return collect1; } - else if ( Objects.equals(role,AppRoleEnum.MARKET_USER.getCode())) { + //fix 新需求 工程用户可以看到关注工程的设备和对应的主用户和子用户的设备 + else if (Objects.equals(role, AppRoleEnum.ENGINEERING_USER.getCode())) { + List sumDevId = new ArrayList<>(); + csDeviceUserPOQueryWrapper.clear(); + csDeviceUserPOQueryWrapper.eq("status","1").and(wq -> { + wq.eq("primary_user_id", userIndex) + .or() + .eq("sub_user_id",userIndex); + }); + List csDeviceUserPOS = csDeviceUserPOMapper.selectList(csDeviceUserPOQueryWrapper); + if(!CollectionUtils.isEmpty(csDeviceUserPOS)){ + sumDevId = csDeviceUserPOS.stream().map(CsDeviceUserPO::getDeviceId).distinct().collect(Collectors.toList()); + } + + QueryWrapper csMarketDataQueryWrapper = new QueryWrapper<>(); + csMarketDataQueryWrapper.eq("user_id", userIndex); + List csMarketData = csMarketDataMapper.selectList(csMarketDataQueryWrapper); + List collect2 = csMarketData.stream().map(CsMarketData::getEngineerId).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(collect2)){ + return sumDevId; + } + csLedgerQueryWrapper.clear(); + csLedgerQueryWrapper.lambda().eq(CsLedger::getLevel, 1).eq(CsLedger::getState, 1).in(CsLedger::getPid, collect2); + List csLedgers = csLedgerMapper.selectList(csLedgerQueryWrapper); + Listcollect1 = csLedgers.stream().map(CsLedger::getId).collect(Collectors.toList()); + if(CollectionUtils.isEmpty(collect1)){ + return sumDevId; + } + csLedgerQueryWrapper.clear(); + csLedgerQueryWrapper.lambda().eq(CsLedger::getLevel, 2).eq(CsLedger::getState, 1).in(CsLedger::getPid, collect1); + List csLedgers1 = csLedgerMapper.selectList(csLedgerQueryWrapper); + + collect = csLedgers1.stream().map(CsLedger::getId).collect(Collectors.toList()); + sumDevId.addAll(collect); + sumDevId = sumDevId.stream().distinct().collect(Collectors.toList()); + + return sumDevId; + + } else if ( Objects.equals(role,AppRoleEnum.MARKET_USER.getCode())) { QueryWrapper csMarketDataQueryWrapper = new QueryWrapper<>(); csMarketDataQueryWrapper.eq("user_id", userIndex); List csMarketData = csMarketDataMapper.selectList(csMarketDataQueryWrapper);