From 56dfe0d4bf81262622a1919cceb2b039fd356209 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 03 九月 2024 16:52:49 +0800 Subject: [PATCH] 代码提交 bug解决 --- ruoyi-modules/ruoyi-management/src/main/java/com/ruoyi/management/service/impl/HomeStatisticsServiceImpl.java | 145 ++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 115 insertions(+), 30 deletions(-) diff --git a/ruoyi-modules/ruoyi-management/src/main/java/com/ruoyi/management/service/impl/HomeStatisticsServiceImpl.java b/ruoyi-modules/ruoyi-management/src/main/java/com/ruoyi/management/service/impl/HomeStatisticsServiceImpl.java index dc0b0b2..ef1ad64 100644 --- a/ruoyi-modules/ruoyi-management/src/main/java/com/ruoyi/management/service/impl/HomeStatisticsServiceImpl.java +++ b/ruoyi-modules/ruoyi-management/src/main/java/com/ruoyi/management/service/impl/HomeStatisticsServiceImpl.java @@ -2,16 +2,17 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.ruoyi.management.domain.SlGoodsMaterials; -import com.ruoyi.management.domain.SlStoreManagement; -import com.ruoyi.management.domain.SlVolumeProductionCk; -import com.ruoyi.management.domain.SlVolumeProductionRk; +import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.management.domain.*; import com.ruoyi.management.domain.dto.HomeStatisticsQuery; import com.ruoyi.management.domain.vo.HomeStatisticsVO; import com.ruoyi.management.domain.vo.goodsMaterialsNmVO; import com.ruoyi.management.domain.vo.homeVO; import com.ruoyi.management.service.*; +import com.ruoyi.system.api.domain.SysUser; +import com.ruoyi.system.api.feignClient.SysUserClient; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; @@ -32,6 +33,12 @@ @Resource private SlVolumeProductionCkService slVolumeProductionCkService; + @Resource + private SysUserClient sysUserClient; + @Resource + private ManagementGoodsMaterialsService managementGoodsMaterialsService; + @Resource + private SlVolumeProductionZyService slVolumeProductionZyService; @Override @@ -39,19 +46,20 @@ LambdaQueryWrapper<SlStoreManagement> wrapper= Wrappers.lambdaQuery(); if (homeStatisticsQuery.getStoreManagementName()!=null&&homeStatisticsQuery.getStoreManagementName()!=""){ - wrapper.eq(SlStoreManagement::getStoreManagementName,homeStatisticsQuery.getStoreManagementName()); + wrapper.eq(SlStoreManagement::getId,homeStatisticsQuery.getStoreManagementName()); } if(homeStatisticsQuery.getStoreManagementNo()!=null&&homeStatisticsQuery.getStoreManagementNo()!=""){ wrapper.eq(SlStoreManagement::getStoreManagementNo,homeStatisticsQuery.getStoreManagementNo()); } - if (homeStatisticsQuery.getStoreManagementGrade()!=null && homeStatisticsQuery.getStoreManagementGrade()!=0 ){ - wrapper.eq(SlStoreManagement::getStoreManagementGrade,homeStatisticsQuery.getStoreManagementGrade()); + if (StringUtils.hasLength(homeStatisticsQuery.getStoreManagementGrade())&& !homeStatisticsQuery.getStoreManagementGrade().equals("0")){ + String[] split = homeStatisticsQuery.getStoreManagementGrade().split(","); + if (split.length>0){ + wrapper.in(SlStoreManagement::getStoreManagementGrade,split); + } } - if ( homeStatisticsQuery.getStoreManagementNumber()!=null&& homeStatisticsQuery.getStoreManagementNumber()!=0 ){ wrapper.eq(SlStoreManagement::getStoreManagementNumber,homeStatisticsQuery.getStoreManagementNumber()); } - if (homeStatisticsQuery.getCityCode()!=null){ wrapper.eq(SlStoreManagement::getCityCode,homeStatisticsQuery.getCityCode()); } @@ -59,18 +67,16 @@ wrapper.eq(SlStoreManagement::getCountyCode,homeStatisticsQuery.getCountyCode()); } if (homeStatisticsQuery.getTownCode()!=null){ - wrapper.eq(SlStoreManagement::getCountyCode,homeStatisticsQuery.getTownCode()); + wrapper.eq(SlStoreManagement::getTownCode,homeStatisticsQuery.getTownCode()); } + wrapper.eq(SlStoreManagement::getDelFlag,"0"); List<SlStoreManagement> list = slStoreManagementService.list(wrapper); - Set<Long> slStoreManagementIdList = null; slStoreManagementIdList = list.stream().map(SlStoreManagement::getId) .collect(Collectors.toSet()); - LambdaQueryWrapper<SlGoodsMaterials> wrapper1= Wrappers.lambdaQuery(); - if (homeStatisticsQuery.getGoodsMaterialsName()!=null&&homeStatisticsQuery.getStoreManagementName()!=""){ - wrapper1.eq(SlGoodsMaterials::getGoodsMaterialsName,homeStatisticsQuery.getGoodsMaterialsName()); + wrapper1.like(SlGoodsMaterials::getGoodsMaterialsName,homeStatisticsQuery.getGoodsMaterialsName()); } List<SlGoodsMaterials> list1 = slGoodsMaterialsService.list(wrapper1); @@ -97,36 +103,102 @@ if (homeStatisticsQuery.getShelfId()!=null){ wrapper2.eq(SlVolumeProductionRk::getShelfId,homeStatisticsQuery.getShelfId()); } - + wrapper2.isNotNull(SlVolumeProductionRk::getNewAddTime); + Long userId = SecurityUtils.getUserId(); + SysUser data = sysUserClient.getSysUser(userId).getData(); + List<Long> collect = new ArrayList<>(); + if (data!=null){ + if (!data.getUserType().equals("00")){ + switch (data.getRoleType()){ + case 3: + collect = slStoreManagementService.lambdaQuery().eq(SlStoreManagement::getDelFlag, "0") + .ge(SlStoreManagement::getStoreManagementGrade, 3).eq(SlStoreManagement::getCityCode, data.getCityCode()) + .list().stream().map(SlStoreManagement::getId).collect(Collectors.toList()); + wrapper2.in(SlVolumeProductionRk::getManagementId, collect); + break; + case 4: + collect = slStoreManagementService.lambdaQuery().eq(SlStoreManagement::getDelFlag, "0") + .ge(SlStoreManagement::getStoreManagementGrade, 4).eq(SlStoreManagement::getCountyCode, data.getCountyCode()) + .list().stream().map(SlStoreManagement::getId).collect(Collectors.toList()); + wrapper2.in(SlVolumeProductionRk::getManagementId, collect); + break; + case 5: + collect = slStoreManagementService.lambdaQuery().eq(SlStoreManagement::getDelFlag, "0") + .ge(SlStoreManagement::getStoreManagementGrade, 5).eq(SlStoreManagement::getTownCode, data.getTownCode()) + .list().stream().map(SlStoreManagement::getId).collect(Collectors.toList()); + wrapper2.in(SlVolumeProductionRk::getManagementId, collect); + break; + case 6: + collect = slStoreManagementService.lambdaQuery().eq(SlStoreManagement::getDelFlag, "0") + .ge(SlStoreManagement::getStoreManagementGrade, 6).eq(SlStoreManagement::getTownCode, data.getTownCode()) + .list().stream().map(SlStoreManagement::getId).collect(Collectors.toList()); + wrapper2.in(SlVolumeProductionRk::getManagementId, collect); + break; + } + } + } List<SlVolumeProductionRk> list2 = slVolumeProductionRkService.list(wrapper2); Map<Long, List<SlVolumeProductionRk>> groupByUserNameMap = list2.stream().collect(Collectors.groupingBy(SlVolumeProductionRk::getMaterialsId)); - HomeStatisticsVO homeStatisticsVO=new HomeStatisticsVO(); - homeStatisticsVO.setGoodsMaterialsSumNum(groupByUserNameMap.size()); - + // 物资总数 + Long temp = 0L; + // 将list2中的在库数量累加起来 Double d=0.0; - - for (SlVolumeProductionRk li:list2){ - Long repertoryZhai = li.getRepertoryZhai(); + List<String> longs = new ArrayList<>(); + for (SlVolumeProductionRk li:list2){ + Long repertoryZhai = li.getRepertoryZhai(); + li.setRepertoryZhai(repertoryZhai); + if (longs.isEmpty()){ + longs.add(li.getManagementId()+"-"+li.getMaterialsId()); + // 根据仓库id和物资id 查询遗失数量 + ManagementGoodsMaterials one = managementGoodsMaterialsService.lambdaQuery().eq(ManagementGoodsMaterials::getGoodsMaterialsId, li.getMaterialsId()) + .eq(ManagementGoodsMaterials::getManagementId, li.getManagementId()) + .eq(ManagementGoodsMaterials::getDelFlag, "0").one(); + if (one!=null){ + d=d+li.getRkPice().multiply(new BigDecimal(li.getRkNum()-one.getRepertoryYishi())).doubleValue(); + temp+=li.getRkNum()-one.getRepertoryYishi(); + li.setRepertoryZhai(li.getRkNum()-one.getRepertoryYishi()); + }else{ + d=d+li.getRkPice().multiply(new BigDecimal(li.getRkNum())).doubleValue(); + temp+=li.getRkNum(); + } + }else if(longs.contains(li.getManagementId()+"-"+li.getMaterialsId())){ + d=d+li.getRkPice().multiply(new BigDecimal(li.getRkNum())).doubleValue(); + temp+=li.getRkNum(); + }else{ + longs.add(li.getManagementId()+"-"+li.getMaterialsId()); + // 根据仓库id和物资id 查询遗失数量 + ManagementGoodsMaterials one = managementGoodsMaterialsService.lambdaQuery().eq(ManagementGoodsMaterials::getGoodsMaterialsId, li.getMaterialsId()) + .eq(ManagementGoodsMaterials::getManagementId, li.getManagementId()) + .eq(ManagementGoodsMaterials::getDelFlag, "0").one(); + if (one!=null){ + d=d+li.getRkPice().multiply(new BigDecimal(li.getRkNum()-one.getRepertoryYishi())).doubleValue(); + temp+=li.getRkNum()-one.getRepertoryYishi(); + li.setRepertoryZhai(li.getRkNum()-one.getRepertoryYishi()); + }else{ + d=d+li.getRkPice().multiply(new BigDecimal(li.getRkNum())).doubleValue(); + temp+=li.getRkNum(); + } + } + // 查询这个入库记录有没有转移 转移了的话 需要扣去转移数量 + Long tem = 0L; + List<SlVolumeProductionZy> list3 = slVolumeProductionZyService.lambdaQuery().eq(SlVolumeProductionZy::getRkId, li.getId()) + .eq(SlVolumeProductionZy::getDelFlag, "0").list(); + if (!list3.isEmpty()){ + tem+= list3.stream().map(SlVolumeProductionZy::getZyNum).reduce(0, Integer::sum); + } + temp-=tem; LambdaQueryWrapper<SlVolumeProductionCk> wrapper3= Wrappers.lambdaQuery(); wrapper3.eq(SlVolumeProductionCk::getRkId,li.getId()); wrapper3.eq(SlVolumeProductionCk::getIsGh,1); - List<SlVolumeProductionCk> list3 = slVolumeProductionCkService.list(wrapper3); - if (list3.size()>0){ - for (SlVolumeProductionCk li1:list3){ - repertoryZhai=repertoryZhai+li1.getCkNum(); - } - } if (li.getRkPice() == null){ li.setRkPice(BigDecimal.ZERO); } - d=d+li.getRkPice().multiply(new BigDecimal(li.getRkPice().intValue())).doubleValue(); - li.setRepertoryZhai(repertoryZhai); } - + homeStatisticsVO.setGoodsMaterialsSumNum(temp); homeStatisticsVO.setGoodsMaterialsSumPice(d); //非消耗 @@ -140,6 +212,17 @@ h.setId(byId.getId()); h.setGoodsMaterialsName(byId.getGoodsMaterialsName()); h.setGoodsMaterialsNum(l.getRepertoryZhai()); + // 判断物资预警库存 + if (byId.getRepertory()==null || byId.getRepertory() == 0){ + h.setColor(1); + }else{ + if (l.getRepertoryZhai()<=byId.getRepertory()){ + h.setColor(2); + }else{ + h.setColor(1); + } + } + if (byId.getIsConsume()==1){ arr.add(h); }else{ @@ -156,6 +239,7 @@ goodsMaterialsNmVO.setGoodsMaterialsName(key); goodsMaterialsNmVO.setGoodsMaterialsId(entry.getValue().get(0).getId()); List<homeVO> value = entry.getValue(); + goodsMaterialsNmVO.setColor(entry.getValue().get(0).getColor()); // 处理键和值 int a=0; for (homeVO vo : value) { @@ -178,6 +262,7 @@ String key = entry.getKey(); goodsMaterialsNmVO1.setGoodsMaterialsName(key); goodsMaterialsNmVO1.setGoodsMaterialsId(entry.getValue().get(0).getId()); + goodsMaterialsNmVO1.setColor(entry.getValue().get(0).getColor()); List<homeVO> value = entry.getValue(); // 处理键和值 int a=0; -- Gitblit v1.7.1