shiyunteng
2026-09-18 c5c284896ce6428cffc5092e9cdef4fefc23409f
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/StatisticServiceImpl.java
@@ -1,6 +1,6 @@
package com.by4cloud.platformx.business.service.impl;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -30,6 +30,7 @@
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@@ -68,7 +69,6 @@
   public R contractAmountAnalysis(AnalysisCommonDTO commonDTO) {
      List<Long> compIds = new ArrayList<>();
      compIds.add(Long.valueOf(sgb));
      compIds.add(Long.valueOf(smj));
      compIds.add(Long.valueOf(tfgs));
      compIds.add(Long.valueOf(ymj));
      compIds.add(Long.valueOf(jxc));
@@ -91,7 +91,7 @@
      compIds.add(Long.valueOf(ymj));
      compIds.add(Long.valueOf(jxc));
      List<ContractIncomeAnalysisVo> contractIncomeAnalysisVoList = contractMapper.contractIncomeAnalysis(commonDTO,compIds);
      if (ArrayUtil.isNotEmpty(contractIncomeAnalysisVoList.toArray())){
      if (CollUtil.isNotEmpty(contractIncomeAnalysisVoList)){
         contractIncomeAnalysisVoList.stream().forEach(contractIncomeAnalysisVo -> {
            if(StrUtil.equals(contractIncomeAnalysisVo.getCompId(),sgb)){
               contractIncomeAnalysisVo.setCompName("石工泵");
@@ -123,7 +123,7 @@
   public R contractAmountAnalysisByArea(AnalysisCommonDTO commonDTO) {
      R<List<SysDictItem>> r = remoteDictService.getDictByType("company_area");
      List<SysDictItem> items = r.getData();
      if (ArrayUtil.isEmpty(items.toArray())){
      if (CollUtil.isEmpty(items)){
         return R.failed("地区字典分类获取异常");
      }
      List<Long> compIds = new ArrayList<>();
@@ -163,7 +163,7 @@
   public R contractAmountAnalysisByIndustry(AnalysisCommonDTO commonDTO) {
      R<List<SysDictItem>> r = remoteDictService.getDictByType("industry_sector");
      List<SysDictItem> items = r.getData();
      if (ArrayUtil.isEmpty(items.toArray())){
      if (CollUtil.isEmpty(items)){
         return R.failed("行业字典分类获取异常");
      }
      List<Long> compIds = new ArrayList<>();
@@ -203,7 +203,7 @@
   public R contractAmountAnalysisByMarket(AnalysisCommonDTO commonDTO) {
      R<List<SysDictItem>> r = remoteDictService.getDictByType("market_type");
      List<SysDictItem> items = r.getData();
      if (ArrayUtil.isEmpty(items.toArray())){
      if (CollUtil.isEmpty(items)){
         return R.failed("市场类型字典分类获取异常");
      }
      List<Long> compIds = new ArrayList<>();
@@ -243,7 +243,7 @@
   public R contractAmountAnalysisBySpcBus(AnalysisCommonDTO commonDTO) {
      R<List<SysDictItem>> r = remoteDictService.getDictByType("supply_attribute");
      List<SysDictItem> items = r.getData();
      if (ArrayUtil.isEmpty(items.toArray())){
      if (CollUtil.isEmpty(items)){
         return R.failed("供应属性字典分类获取异常");
      }
      List<Long> compIds = new ArrayList<>();
@@ -283,7 +283,7 @@
   public R contractAmountAnalysisByExportBus(AnalysisCommonDTO commonDTO) {
      R<List<SysDictItem>> r = remoteDictService.getDictByType("export_attr");
      List<SysDictItem> items = r.getData();
      if (ArrayUtil.isEmpty(items.toArray())){
      if (CollUtil.isEmpty(items)){
         return R.failed("区域字段获取异常");
      }
      List<Long> compIds = new ArrayList<>();
@@ -324,7 +324,7 @@
   public R contractAmountAnalysisBySaleModel(AnalysisCommonDTO commonDTO) {
      R<List<SysDictItem>> r = remoteDictService.getDictByType("sales_model");
      List<SysDictItem> items = r.getData();
      if (ArrayUtil.isEmpty(items.toArray())){
      if (CollUtil.isEmpty(items)){
         return R.failed("销售模式字典分类获取异常");
      }
      List<Long> compIds = new ArrayList<>();
@@ -365,30 +365,40 @@
   public R agingAnalysisByArea(AnalysisCommonDTO commonDTO) {
      R<List<SysDictItem>> r = remoteDictService.getDictByType("company_area");
      List<SysDictItem> items = r.getData();
      if (ArrayUtil.isEmpty(items.toArray())){
      if (CollUtil.isEmpty(items)){
         return R.failed("地区字典分类获取异常");
      }
//      List<AgingCompanyVo> companys = contractPaymentScheduleMapper.selectAgingCompany(DataScope.of("comp_id"));
//      if (ArrayUtil.isEmpty(companys.toArray())){
//      if (CollUtil.isEmpty(companys)){
//         return R.failed("暂无账龄");
//      }
      List<Long> compIds = new ArrayList<>();
      compIds.add(Long.valueOf(sgb));
      compIds.add(Long.valueOf(smj));
      compIds.add(Long.valueOf(tfgs));
      compIds.add(Long.valueOf(ymj));
      compIds.add(Long.valueOf(jxc));
      List<AgingAnalysisVo> result = new ArrayList<>();
      AgingQueryDTO queryDTO = new AgingQueryDTO();
      List<AgingVo> agingVoList = contractPaymentScheduleMapper.selectAgingTotal(null);
      if (CollUtil.contains(compIds,SecurityUtils.getUser().getCompId())){
         queryDTO.setCompanyId(SecurityUtils.getUser().getCompId());
      }
      List<AgingVo> agingVoList = contractPaymentScheduleMapper.selectAgingTotal(queryDTO);
      items.stream().forEach(item->{
         AgingAnalysisVo agingAnalysisVo = new AgingAnalysisVo();
         agingAnalysisVo.setCompanyName(item.getLabel());
         queryDTO.setAreaId(item.getItemValue());
         List<AgingVo> companyAgingVo = contractPaymentScheduleMapper.selectAgingTotal(queryDTO);
         //补全数据
         if (ArrayUtil.isEmpty(companyAgingVo.toArray())){
         if (CollUtil.isEmpty(companyAgingVo)){
            companyAgingVo = new ArrayList<>();
            AgingVo agingVo1 = new AgingVo("0-30天",new BigDecimal("0"),null);
            AgingVo agingVo2 = new AgingVo("31-60天",new BigDecimal("0"),null);
            AgingVo agingVo3 = new AgingVo("61-90天",new BigDecimal("0"),null);
            AgingVo agingVo4 = new AgingVo("91-180天",new BigDecimal("0"),null);
            AgingVo agingVo5 = new AgingVo("181-365天",new BigDecimal("0"),null);
            AgingVo agingVo6 = new AgingVo("1年以上",new BigDecimal("0"),null);
            AgingVo agingVo1 = new AgingVo(1L,"0-30天",new BigDecimal("0"),null);
            AgingVo agingVo2 = new AgingVo(2L,"31-60天",new BigDecimal("0"),null);
            AgingVo agingVo3 = new AgingVo(3L,"61-90天",new BigDecimal("0"),null);
            AgingVo agingVo4 = new AgingVo(4L,"91-180天",new BigDecimal("0"),null);
            AgingVo agingVo5 = new AgingVo(5L,"181-365天",new BigDecimal("0"),null);
            AgingVo agingVo6 = new AgingVo(6L,"1年以上",new BigDecimal("0"),null);
            companyAgingVo.add(agingVo1);
            companyAgingVo.add(agingVo2);
            companyAgingVo.add(agingVo3);
@@ -397,31 +407,32 @@
            companyAgingVo.add(agingVo6);
         }else {
            List<String> overdueRanges = companyAgingVo.stream().map(AgingVo::getOverdueRange).collect(Collectors.toList());
            if (!ArrayUtil.contains(overdueRanges.toArray(),"0-30天")){
               AgingVo agingVo1 = new AgingVo("0-30天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"0-30天")){
               AgingVo agingVo1 = new AgingVo(1L,"0-30天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo1);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"31-60天")){
               AgingVo agingVo2 = new AgingVo("31-60天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"31-60天")){
               AgingVo agingVo2 = new AgingVo(2L,"31-60天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo2);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"61-90天")){
               AgingVo agingVo3 = new AgingVo("61-90天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"61-90天")){
               AgingVo agingVo3 = new AgingVo(3L,"61-90天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo3);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"91-180天")){
               AgingVo agingVo4 = new AgingVo("91-180天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"91-180天")){
               AgingVo agingVo4 = new AgingVo(4L,"91-180天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo4);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"181-365天")){
               AgingVo agingVo5 = new AgingVo("181-365天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"181-365天")){
               AgingVo agingVo5 = new AgingVo(5L,"181-365天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo5);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"1年以上")){
               AgingVo agingVo6 = new AgingVo("1年以上",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"1年以上")){
               AgingVo agingVo6 = new AgingVo(6L,"1年以上",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo6);
            }
         }
         companyAgingVo.sort(Comparator.comparing(AgingVo::getSort));
         agingAnalysisVo.setAmount(companyAgingVo.stream().map(AgingVo::getTotalAmount).collect(Collectors.toList()));
         List<AgingVo> finalCompanyAgingVo = companyAgingVo;
         agingAnalysisVo.setPercent(IntStream.range(0, agingVoList.size())
@@ -461,26 +472,37 @@
   public R agingAnalysisByIndustry(AnalysisCommonDTO commonDTO) {
      R<List<SysDictItem>> r = remoteDictService.getDictByType("industry_sector");
      List<SysDictItem> items = r.getData();
      if (ArrayUtil.isEmpty(items.toArray())){
      if (CollUtil.isEmpty(items)){
         return R.failed("行业字典分类获取异常");
      }
      List<Long> compIds = new ArrayList<>();
      compIds.add(Long.valueOf(smj));
      compIds.add(Long.valueOf(sgb));
      compIds.add(Long.valueOf(jxc));
      compIds.add(Long.valueOf(tfgs));
      compIds.add(Long.valueOf(ymj));
      List<AgingAnalysisVo> result = new ArrayList<>();
      AgingQueryDTO queryDTO = new AgingQueryDTO();
      List<AgingVo> agingVoList = contractPaymentScheduleMapper.selectAgingTotal(null);
      if (CollUtil.contains(compIds,SecurityUtils.getUser().getCompId())){
         queryDTO.setCompanyId(SecurityUtils.getUser().getCompId());
      }
      List<AgingVo> agingVoList = contractPaymentScheduleMapper.selectAgingTotal(queryDTO);
      items.stream().forEach(item->{
         AgingAnalysisVo agingAnalysisVo = new AgingAnalysisVo();
         agingAnalysisVo.setCompanyName(item.getLabel());
         queryDTO.setIndustryId(item.getItemValue());
         List<AgingVo> companyAgingVo = contractPaymentScheduleMapper.selectAgingTotal(queryDTO);
         //补全数据
         if (ArrayUtil.isEmpty(companyAgingVo.toArray())){
         if (CollUtil.isEmpty(companyAgingVo)){
            companyAgingVo = new ArrayList<>();
            AgingVo agingVo1 = new AgingVo("0-30天",new BigDecimal("0"),null);
            AgingVo agingVo2 = new AgingVo("31-60天",new BigDecimal("0"),null);
            AgingVo agingVo3 = new AgingVo("61-90天",new BigDecimal("0"),null);
            AgingVo agingVo4 = new AgingVo("91-180天",new BigDecimal("0"),null);
            AgingVo agingVo5 = new AgingVo("181-365天",new BigDecimal("0"),null);
            AgingVo agingVo6 = new AgingVo("1年以上",new BigDecimal("0"),null);
            AgingVo agingVo1 = new AgingVo(1L,"0-30天",new BigDecimal("0"),null);
            AgingVo agingVo2 = new AgingVo(2L,"31-60天",new BigDecimal("0"),null);
            AgingVo agingVo3 = new AgingVo(3L,"61-90天",new BigDecimal("0"),null);
            AgingVo agingVo4 = new AgingVo(4L,"91-180天",new BigDecimal("0"),null);
            AgingVo agingVo5 = new AgingVo(5L,"181-365天",new BigDecimal("0"),null);
            AgingVo agingVo6 = new AgingVo(6L,"1年以上",new BigDecimal("0"),null);
            companyAgingVo.add(agingVo1);
            companyAgingVo.add(agingVo2);
            companyAgingVo.add(agingVo3);
@@ -489,31 +511,32 @@
            companyAgingVo.add(agingVo6);
         }else {
            List<String> overdueRanges = companyAgingVo.stream().map(AgingVo::getOverdueRange).collect(Collectors.toList());
            if (!ArrayUtil.contains(overdueRanges.toArray(),"0-30天")){
               AgingVo agingVo1 = new AgingVo("0-30天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"0-30天")){
               AgingVo agingVo1 = new AgingVo(1L,"0-30天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo1);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"31-60天")){
               AgingVo agingVo2 = new AgingVo("31-60天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"31-60天")){
               AgingVo agingVo2 = new AgingVo(2L,"31-60天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo2);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"61-90天")){
               AgingVo agingVo3 = new AgingVo("61-90天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"61-90天")){
               AgingVo agingVo3 = new AgingVo(3L,"61-90天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo3);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"91-180天")){
               AgingVo agingVo4 = new AgingVo("91-180天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"91-180天")){
               AgingVo agingVo4 = new AgingVo(4L,"91-180天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo4);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"181-365天")){
               AgingVo agingVo5 = new AgingVo("181-365天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"181-365天")){
               AgingVo agingVo5 = new AgingVo(5L,"181-365天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo5);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"1年以上")){
               AgingVo agingVo6 = new AgingVo("1年以上",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"1年以上")){
               AgingVo agingVo6 = new AgingVo(6L,"1年以上",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo6);
            }
         }
         companyAgingVo.sort(Comparator.comparing(AgingVo::getSort));
         agingAnalysisVo.setAmount(companyAgingVo.stream().map(AgingVo::getTotalAmount).collect(Collectors.toList()));
         List<AgingVo> finalCompanyAgingVo = companyAgingVo;
         agingAnalysisVo.setPercent(IntStream.range(0, agingVoList.size())
@@ -553,11 +576,11 @@
   public R agingAnalysis(AnalysisCommonDTO commonDTO) {
      if (commonDTO.getAgingType().equals("2")) {
         List<Long> compIds = new ArrayList<>();
         compIds.add(Long.valueOf(sgb));
         compIds.add(Long.valueOf(smj));
         compIds.add(Long.valueOf(sgb));
         compIds.add(Long.valueOf(jxc));
         compIds.add(Long.valueOf(tfgs));
         compIds.add(Long.valueOf(ymj));
         compIds.add(Long.valueOf(jxc));
         List<AgingAnalysisVo> result = new ArrayList<>();
         AgingQueryDTO queryDTO = new AgingQueryDTO();
         List<AgingVo> agingVoList = contractPaymentScheduleMapper.selectAgingTotalShip(null);
@@ -568,18 +591,18 @@
            }
            SysDept dept = r.getData();
            AgingAnalysisVo agingAnalysisVo = new AgingAnalysisVo();
            agingAnalysisVo.setCompanyName(dept.getOrgName());
            agingAnalysisVo.setCompanyName(dept.getName());
            queryDTO.setCompanyId(dept.getDeptId());
            List<AgingVo> companyAgingVo = contractPaymentScheduleMapper.selectAgingTotalShip(queryDTO);
            //补全数据
            if (ArrayUtil.isEmpty(companyAgingVo.toArray())){
            if (CollUtil.isEmpty(companyAgingVo)){
               companyAgingVo = new ArrayList<>();
               AgingVo agingVo1 = new AgingVo("0-30天",new BigDecimal("0"),null);
               AgingVo agingVo2 = new AgingVo("31-60天",new BigDecimal("0"),null);
               AgingVo agingVo3 = new AgingVo("61-90天",new BigDecimal("0"),null);
               AgingVo agingVo4 = new AgingVo("91-180天",new BigDecimal("0"),null);
               AgingVo agingVo5 = new AgingVo("181-365天",new BigDecimal("0"),null);
               AgingVo agingVo6 = new AgingVo("1年以上",new BigDecimal("0"),null);
               AgingVo agingVo1 = new AgingVo(1L,"0-30天",new BigDecimal("0"),null);
               AgingVo agingVo2 = new AgingVo(2L,"31-60天",new BigDecimal("0"),null);
               AgingVo agingVo3 = new AgingVo(3L,"61-90天",new BigDecimal("0"),null);
               AgingVo agingVo4 = new AgingVo(4L,"91-180天",new BigDecimal("0"),null);
               AgingVo agingVo5 = new AgingVo(5L,"181-365天",new BigDecimal("0"),null);
               AgingVo agingVo6 = new AgingVo(6L,"1年以上",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo1);
               companyAgingVo.add(agingVo2);
               companyAgingVo.add(agingVo3);
@@ -588,31 +611,32 @@
               companyAgingVo.add(agingVo6);
            }else {
               List<String> overdueRanges = companyAgingVo.stream().map(AgingVo::getOverdueRange).collect(Collectors.toList());
               if (!ArrayUtil.contains(overdueRanges.toArray(),"0-30天")){
                  AgingVo agingVo1 = new AgingVo("0-30天",new BigDecimal("0"),null);
               if (!CollUtil.contains(overdueRanges,"0-30天")){
                  AgingVo agingVo1 = new AgingVo(1L,"0-30天",new BigDecimal("0"),null);
                  companyAgingVo.add(agingVo1);
               }
               if (!ArrayUtil.contains(overdueRanges.toArray(),"31-60天")){
                  AgingVo agingVo2 = new AgingVo("31-60天",new BigDecimal("0"),null);
               if (!CollUtil.contains(overdueRanges,"31-60天")){
                  AgingVo agingVo2 = new AgingVo(2L,"31-60天",new BigDecimal("0"),null);
                  companyAgingVo.add(agingVo2);
               }
               if (!ArrayUtil.contains(overdueRanges.toArray(),"61-90天")){
                  AgingVo agingVo3 = new AgingVo("61-90天",new BigDecimal("0"),null);
               if (!CollUtil.contains(overdueRanges,"61-90天")){
                  AgingVo agingVo3 = new AgingVo(3L,"61-90天",new BigDecimal("0"),null);
                  companyAgingVo.add(agingVo3);
               }
               if (!ArrayUtil.contains(overdueRanges.toArray(),"91-180天")){
                  AgingVo agingVo4 = new AgingVo("91-180天",new BigDecimal("0"),null);
               if (!CollUtil.contains(overdueRanges,"91-180天")){
                  AgingVo agingVo4 = new AgingVo(4L,"91-180天",new BigDecimal("0"),null);
                  companyAgingVo.add(agingVo4);
               }
               if (!ArrayUtil.contains(overdueRanges.toArray(),"181-365天")){
                  AgingVo agingVo5 = new AgingVo("181-365天",new BigDecimal("0"),null);
               if (!CollUtil.contains(overdueRanges,"181-365天")){
                  AgingVo agingVo5 = new AgingVo(5L,"181-365天",new BigDecimal("0"),null);
                  companyAgingVo.add(agingVo5);
               }
               if (!ArrayUtil.contains(overdueRanges.toArray(),"1年以上")){
                  AgingVo agingVo6 = new AgingVo("1年以上",new BigDecimal("0"),null);
               if (!CollUtil.contains(overdueRanges,"1年以上")){
                  AgingVo agingVo6 = new AgingVo(6L,"1年以上",new BigDecimal("0"),null);
                  companyAgingVo.add(agingVo6);
               }
            }
            companyAgingVo.sort(Comparator.comparing(AgingVo::getSort));
            agingAnalysisVo.setAmount(companyAgingVo.stream().map(AgingVo::getTotalAmount).collect(Collectors.toList()));
            List<AgingVo> finalCompanyAgingVo = companyAgingVo;
            agingAnalysisVo.setPercent(IntStream.range(0, agingVoList.size())
@@ -664,18 +688,18 @@
            }
            SysDept dept = r.getData();
            AgingAnalysisVo agingAnalysisVo = new AgingAnalysisVo();
            agingAnalysisVo.setCompanyName(dept.getOrgName());
            agingAnalysisVo.setCompanyName(dept.getName());
            queryDTO.setCompanyId(dept.getDeptId());
            List<AgingVo> companyAgingVo = contractPaymentScheduleMapper.selectAgingTotalInvoice(queryDTO);
            //补全数据
            if (ArrayUtil.isEmpty(companyAgingVo.toArray())){
            if (CollUtil.isEmpty(companyAgingVo)){
               companyAgingVo = new ArrayList<>();
               AgingVo agingVo1 = new AgingVo("0-30天",new BigDecimal("0"),null);
               AgingVo agingVo2 = new AgingVo("31-60天",new BigDecimal("0"),null);
               AgingVo agingVo3 = new AgingVo("61-90天",new BigDecimal("0"),null);
               AgingVo agingVo4 = new AgingVo("91-180天",new BigDecimal("0"),null);
               AgingVo agingVo5 = new AgingVo("181-365天",new BigDecimal("0"),null);
               AgingVo agingVo6 = new AgingVo("1年以上",new BigDecimal("0"),null);
               AgingVo agingVo1 = new AgingVo(1L,"0-30天",new BigDecimal("0"),null);
               AgingVo agingVo2 = new AgingVo(2L,"31-60天",new BigDecimal("0"),null);
               AgingVo agingVo3 = new AgingVo(3L,"61-90天",new BigDecimal("0"),null);
               AgingVo agingVo4 = new AgingVo(4L,"91-180天",new BigDecimal("0"),null);
               AgingVo agingVo5 = new AgingVo(5L,"181-365天",new BigDecimal("0"),null);
               AgingVo agingVo6 = new AgingVo(6L,"1年以上",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo1);
               companyAgingVo.add(agingVo2);
               companyAgingVo.add(agingVo3);
@@ -684,31 +708,32 @@
               companyAgingVo.add(agingVo6);
            }else {
               List<String> overdueRanges = companyAgingVo.stream().map(AgingVo::getOverdueRange).collect(Collectors.toList());
               if (!ArrayUtil.contains(overdueRanges.toArray(),"0-30天")){
                  AgingVo agingVo1 = new AgingVo("0-30天",new BigDecimal("0"),null);
               if (!CollUtil.contains(overdueRanges,"0-30天")){
                  AgingVo agingVo1 = new AgingVo(1L,"0-30天",new BigDecimal("0"),null);
                  companyAgingVo.add(agingVo1);
               }
               if (!ArrayUtil.contains(overdueRanges.toArray(),"31-60天")){
                  AgingVo agingVo2 = new AgingVo("31-60天",new BigDecimal("0"),null);
               if (!CollUtil.contains(overdueRanges,"31-60天")){
                  AgingVo agingVo2 = new AgingVo(2L,"31-60天",new BigDecimal("0"),null);
                  companyAgingVo.add(agingVo2);
               }
               if (!ArrayUtil.contains(overdueRanges.toArray(),"61-90天")){
                  AgingVo agingVo3 = new AgingVo("61-90天",new BigDecimal("0"),null);
               if (!CollUtil.contains(overdueRanges,"61-90天")){
                  AgingVo agingVo3 = new AgingVo(3L,"61-90天",new BigDecimal("0"),null);
                  companyAgingVo.add(agingVo3);
               }
               if (!ArrayUtil.contains(overdueRanges.toArray(),"91-180天")){
                  AgingVo agingVo4 = new AgingVo("91-180天",new BigDecimal("0"),null);
               if (!CollUtil.contains(overdueRanges,"91-180天")){
                  AgingVo agingVo4 = new AgingVo(4L,"91-180天",new BigDecimal("0"),null);
                  companyAgingVo.add(agingVo4);
               }
               if (!ArrayUtil.contains(overdueRanges.toArray(),"181-365天")){
                  AgingVo agingVo5 = new AgingVo("181-365天",new BigDecimal("0"),null);
               if (!CollUtil.contains(overdueRanges,"181-365天")){
                  AgingVo agingVo5 = new AgingVo(5L,"181-365天",new BigDecimal("0"),null);
                  companyAgingVo.add(agingVo5);
               }
               if (!ArrayUtil.contains(overdueRanges.toArray(),"1年以上")){
                  AgingVo agingVo6 = new AgingVo("1年以上",new BigDecimal("0"),null);
               if (!CollUtil.contains(overdueRanges,"1年以上")){
                  AgingVo agingVo6 = new AgingVo(6L,"1年以上",new BigDecimal("0"),null);
                  companyAgingVo.add(agingVo6);
               }
            }
            companyAgingVo.sort(Comparator.comparing(AgingVo::getSort));
            agingAnalysisVo.setAmount(companyAgingVo.stream().map(AgingVo::getTotalAmount).collect(Collectors.toList()));
            List<AgingVo> finalCompanyAgingVo = companyAgingVo;
            agingAnalysisVo.setPercent(IntStream.range(0, agingVoList.size())
@@ -746,56 +771,11 @@
      return R.ok();
   }
   private List<AgingVo> completeData(List<AgingVo> companyAgingVo) {
      if (ArrayUtil.isEmpty(companyAgingVo.toArray())) {
         companyAgingVo = new ArrayList<>();
         AgingVo agingVo1 = new AgingVo("0-30天", new BigDecimal("0"), null);
         AgingVo agingVo2 = new AgingVo("31-60天", new BigDecimal("0"), null);
         AgingVo agingVo3 = new AgingVo("61-90天", new BigDecimal("0"), null);
         AgingVo agingVo4 = new AgingVo("91-180天", new BigDecimal("0"), null);
         AgingVo agingVo5 = new AgingVo("181-365天", new BigDecimal("0"), null);
         AgingVo agingVo6 = new AgingVo("1年以上", new BigDecimal("0"), null);
         companyAgingVo.add(agingVo1);
         companyAgingVo.add(agingVo2);
         companyAgingVo.add(agingVo3);
         companyAgingVo.add(agingVo4);
         companyAgingVo.add(agingVo5);
         companyAgingVo.add(agingVo6);
      } else {
         List<String> overdueRanges = companyAgingVo.stream().map(AgingVo::getOverdueRange).collect(Collectors.toList());
         if (!ArrayUtil.contains(overdueRanges.toArray(), "0-30天")) {
            AgingVo agingVo1 = new AgingVo("0-30天", new BigDecimal("0"), null);
            companyAgingVo.add(agingVo1);
         }
         if (!ArrayUtil.contains(overdueRanges.toArray(), "31-60天")) {
            AgingVo agingVo2 = new AgingVo("31-60天", new BigDecimal("0"), null);
            companyAgingVo.add(agingVo2);
         }
         if (!ArrayUtil.contains(overdueRanges.toArray(), "61-90天")) {
            AgingVo agingVo3 = new AgingVo("61-90天", new BigDecimal("0"), null);
            companyAgingVo.add(agingVo3);
         }
         if (!ArrayUtil.contains(overdueRanges.toArray(), "91-180天")) {
            AgingVo agingVo4 = new AgingVo("91-180天", new BigDecimal("0"), null);
            companyAgingVo.add(agingVo4);
         }
         if (!ArrayUtil.contains(overdueRanges.toArray(), "181-365天")) {
            AgingVo agingVo5 = new AgingVo("181-365天", new BigDecimal("0"), null);
            companyAgingVo.add(agingVo5);
         }
         if (!ArrayUtil.contains(overdueRanges.toArray(), "1年以上")) {
            AgingVo agingVo6 = new AgingVo("1年以上", new BigDecimal("0"), null);
            companyAgingVo.add(agingVo6);
         }
      }
      return companyAgingVo;
   }
   @Override
   public R agingAnalysisByMarket(AnalysisCommonDTO commonDTO) {
      R<List<SysDictItem>> r = remoteDictService.getDictByType("market_type");
      List<SysDictItem> items = r.getData();
      if (ArrayUtil.isEmpty(items.toArray())){
      if (CollUtil.isEmpty(items)){
         return R.failed("市场类型字典分类获取异常");
      }
      List<AgingAnalysisVo> result = new ArrayList<>();
@@ -807,14 +787,14 @@
         queryDTO.setClassId(item.getItemValue());
         List<AgingVo> companyAgingVo = contractPaymentScheduleMapper.selectAgingTotal(queryDTO);
         //补全数据
         if (ArrayUtil.isEmpty(companyAgingVo.toArray())){
         if (CollUtil.isEmpty(companyAgingVo)){
            companyAgingVo = new ArrayList<>();
            AgingVo agingVo1 = new AgingVo("0-30天",new BigDecimal("0"),null);
            AgingVo agingVo2 = new AgingVo("31-60天",new BigDecimal("0"),null);
            AgingVo agingVo3 = new AgingVo("61-90天",new BigDecimal("0"),null);
            AgingVo agingVo4 = new AgingVo("91-180天",new BigDecimal("0"),null);
            AgingVo agingVo5 = new AgingVo("181-365天",new BigDecimal("0"),null);
            AgingVo agingVo6 = new AgingVo("1年以上",new BigDecimal("0"),null);
            AgingVo agingVo1 = new AgingVo(1L,"0-30天",new BigDecimal("0"),null);
            AgingVo agingVo2 = new AgingVo(2L,"31-60天",new BigDecimal("0"),null);
            AgingVo agingVo3 = new AgingVo(3L,"61-90天",new BigDecimal("0"),null);
            AgingVo agingVo4 = new AgingVo(4L,"91-180天",new BigDecimal("0"),null);
            AgingVo agingVo5 = new AgingVo(5L,"181-365天",new BigDecimal("0"),null);
            AgingVo agingVo6 = new AgingVo(6L,"1年以上",new BigDecimal("0"),null);
            companyAgingVo.add(agingVo1);
            companyAgingVo.add(agingVo2);
            companyAgingVo.add(agingVo3);
@@ -823,31 +803,32 @@
            companyAgingVo.add(agingVo6);
         }else {
            List<String> overdueRanges = companyAgingVo.stream().map(AgingVo::getOverdueRange).collect(Collectors.toList());
            if (!ArrayUtil.contains(overdueRanges.toArray(),"0-30天")){
               AgingVo agingVo1 = new AgingVo("0-30天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"0-30天")){
               AgingVo agingVo1 = new AgingVo(1L,"0-30天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo1);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"31-60天")){
               AgingVo agingVo2 = new AgingVo("31-60天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"31-60天")){
               AgingVo agingVo2 = new AgingVo(2L,"31-60天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo2);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"61-90天")){
               AgingVo agingVo3 = new AgingVo("61-90天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"61-90天")){
               AgingVo agingVo3 = new AgingVo(3L,"61-90天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo3);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"91-180天")){
               AgingVo agingVo4 = new AgingVo("91-180天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"91-180天")){
               AgingVo agingVo4 = new AgingVo(4L,"91-180天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo4);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"181-365天")){
               AgingVo agingVo5 = new AgingVo("181-365天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"181-365天")){
               AgingVo agingVo5 = new AgingVo(5L,"181-365天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo5);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"1年以上")){
               AgingVo agingVo6 = new AgingVo("1年以上",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"1年以上")){
               AgingVo agingVo6 = new AgingVo(6L,"1年以上",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo6);
            }
         }
         companyAgingVo.sort(Comparator.comparing(AgingVo::getSort));
         agingAnalysisVo.setAmount(companyAgingVo.stream().map(AgingVo::getTotalAmount).collect(Collectors.toList()));
         List<AgingVo> finalCompanyAgingVo = companyAgingVo;
         agingAnalysisVo.setPercent(IntStream.range(0, agingVoList.size())
@@ -886,11 +867,12 @@
   @Override
   public R agingAnalysisTotalScale(AnalysisCommonDTO commonDTO) {
      List<Long> compIds = new ArrayList<>();
      compIds.add(Long.valueOf(sgb));
      compIds.add(Long.valueOf(smj));
      compIds.add(Long.valueOf(sgb));
      compIds.add(Long.valueOf(tfgs));
      compIds.add(Long.valueOf(ymj));
      compIds.add(Long.valueOf(jxc));
      compIds.add(Long.valueOf(ymj));
      List<AgingAnalysisVo> result = new ArrayList<>();
      AgingQueryDTO queryDTO = new AgingQueryDTO();
      List<AgingVo> agingVoList = contractPaymentScheduleMapper.selectAgingTotalScale(null);
@@ -901,18 +883,18 @@
         }
         SysDept dept = r.getData();
         AgingAnalysisVo agingAnalysisVo = new AgingAnalysisVo();
         agingAnalysisVo.setCompanyName(dept.getOrgName());
         agingAnalysisVo.setCompanyName(dept.getName());
         queryDTO.setCompanyId(dept.getDeptId());
         List<AgingVo> companyAgingVo = contractPaymentScheduleMapper.selectAgingTotalScale(queryDTO);
         //补全数据
         if (ArrayUtil.isEmpty(companyAgingVo.toArray())){
         if (CollUtil.isEmpty(companyAgingVo)){
            companyAgingVo = new ArrayList<>();
            AgingVo agingVo1 = new AgingVo("0-30天",new BigDecimal("0"),null);
            AgingVo agingVo2 = new AgingVo("31-60天",new BigDecimal("0"),null);
            AgingVo agingVo3 = new AgingVo("61-90天",new BigDecimal("0"),null);
            AgingVo agingVo4 = new AgingVo("91-180天",new BigDecimal("0"),null);
            AgingVo agingVo5 = new AgingVo("181-365天",new BigDecimal("0"),null);
            AgingVo agingVo6 = new AgingVo("1年以上",new BigDecimal("0"),null);
            AgingVo agingVo1 = new AgingVo(1L,"0-30天",new BigDecimal("0"),null);
            AgingVo agingVo2 = new AgingVo(2L,"31-60天",new BigDecimal("0"),null);
            AgingVo agingVo3 = new AgingVo(3L,"61-90天",new BigDecimal("0"),null);
            AgingVo agingVo4 = new AgingVo(4L,"91-180天",new BigDecimal("0"),null);
            AgingVo agingVo5 = new AgingVo(5L,"181-365天",new BigDecimal("0"),null);
            AgingVo agingVo6 = new AgingVo(6L,"1年以上",new BigDecimal("0"),null);
            companyAgingVo.add(agingVo1);
            companyAgingVo.add(agingVo2);
            companyAgingVo.add(agingVo3);
@@ -921,31 +903,32 @@
            companyAgingVo.add(agingVo6);
         }else {
            List<String> overdueRanges = companyAgingVo.stream().map(AgingVo::getOverdueRange).collect(Collectors.toList());
            if (!ArrayUtil.contains(overdueRanges.toArray(),"0-30天")){
               AgingVo agingVo1 = new AgingVo("0-30天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"0-30天")){
               AgingVo agingVo1 = new AgingVo(1L,"0-30天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo1);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"31-60天")){
               AgingVo agingVo2 = new AgingVo("31-60天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"31-60天")){
               AgingVo agingVo2 = new AgingVo(2L,"31-60天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo2);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"61-90天")){
               AgingVo agingVo3 = new AgingVo("61-90天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"61-90天")){
               AgingVo agingVo3 = new AgingVo(3L,"61-90天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo3);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"91-180天")){
               AgingVo agingVo4 = new AgingVo("91-180天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"91-180天")){
               AgingVo agingVo4 = new AgingVo(4L,"91-180天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo4);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"181-365天")){
               AgingVo agingVo5 = new AgingVo("181-365天",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"181-365天")){
               AgingVo agingVo5 = new AgingVo(5L,"181-365天",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo5);
            }
            if (!ArrayUtil.contains(overdueRanges.toArray(),"1年以上")){
               AgingVo agingVo6 = new AgingVo("1年以上",new BigDecimal("0"),null);
            if (!CollUtil.contains(overdueRanges,"1年以上")){
               AgingVo agingVo6 = new AgingVo(6L,"1年以上",new BigDecimal("0"),null);
               companyAgingVo.add(agingVo6);
            }
         }
         companyAgingVo.sort(Comparator.comparing(AgingVo::getSort));
         agingAnalysisVo.setAmount(companyAgingVo.stream().map(AgingVo::getTotalAmount).collect(Collectors.toList()));
         List<AgingVo> finalCompanyAgingVo = companyAgingVo;
         agingAnalysisVo.setPercent(IntStream.range(0, agingVoList.size())
@@ -984,95 +967,99 @@
   @Override
   public R homeZbjt() {
      List<HomeZbjtVo> homeZbjtVoList = new ArrayList<>();
      //合同签订 sgb smj jxc tfgs ymj
      HomeZbjtVo htqd = contractMapper.homeZbjt();
      homeZbjtVoList.add(htqd);
      //回款
      HomeZbjtVo hk = paymentSlipMapper.homeZbjt();
      homeZbjtVoList.add(hk);
      //出货
      HomeZbjtVo ch = contractOutBoundMapper.homeZbjt();
      homeZbjtVoList.add(ch);
//      HomeZbjtVo ch = contractOutBoundMapper.homeZbjt();
//      homeZbjtVoList.add(ch);
      //只保留销售收入 回款 新增合同
      //开票
      HomeZbjtVo kp = contractInvoiceMapper.homeZbjt();
      homeZbjtVoList.add(kp);
      //回款
      HomeZbjtVo hk = paymentSlipMapper.homeZbjt();
      homeZbjtVoList.add(hk);
      //合同签订 sgb smj jxc tfgs ymj
      HomeZbjtVo htqd = contractMapper.homeZbjt();
      homeZbjtVoList.add(htqd);
      //赊销产生值 今天发货加今天开票额
//      if (ObjUtil.isNotNull(ch)&&ObjUtil.isNotNull(kp)){
//         HomeZbjtVo sxsy = ch.add(kp);
//         homeZbjtVoList.add(sxsy);
//      }else if (ObjUtil.isNotNull(ch)&&ObjUtil.isNull(kp)){
         homeZbjtVoList.add(ch);
//         homeZbjtVoList.add(ch);
//      }else if (ObjUtil.isNull(ch)&&ObjUtil.isNotNull(kp)){
//         homeZbjtVoList.add(kp);
//      }else {
//         homeZbjtVoList.add(new HomeZbjtVo());
//      }
      //赊销累计剩余值 今日发货且没开票的出货
      HomeZbjtVo sx = contractOutBoundMapper.homeZbjtSX();
      homeZbjtVoList.add(sx);
      HomeZbjtVo yq = currentOverdueMapper.homeZbjt();
      //逾期累计剩余 今日产生逾期 含历史
      HomeZbjtVo ls = historyOverdueMapper.homeZbjt();
      if (ObjUtil.isNotNull(ls)&&ObjUtil.isNotNull(yq)){
         homeZbjtVoList.add(yq.add(ls));
      }else if (ObjUtil.isNotNull(ls)&&ObjUtil.isNull(yq)){
         homeZbjtVoList.add(ls);
      }else if (ObjUtil.isNull(ls)&&ObjUtil.isNotNull(yq)){
         homeZbjtVoList.add(yq);
      }else {
         homeZbjtVoList.add(new HomeZbjtVo());
      }
      //逾期产生值 今天产生-今天已付
      homeZbjtVoList.add(yq);
//      HomeZbjtVo sx = contractOutBoundMapper.homeZbjtSX();
//      homeZbjtVoList.add(sx);
//      HomeZbjtVo yq = currentOverdueMapper.homeZbjt();
//      //逾期累计剩余 今日产生逾期 含历史
//      HomeZbjtVo ls = historyOverdueMapper.homeZbjt();
//      if (ObjUtil.isNotNull(ls)&&ObjUtil.isNotNull(yq)){
//         homeZbjtVoList.add(yq.add(ls));
//      }else if (ObjUtil.isNotNull(ls)&&ObjUtil.isNull(yq)){
//         homeZbjtVoList.add(ls);
//      }else if (ObjUtil.isNull(ls)&&ObjUtil.isNotNull(yq)){
//         homeZbjtVoList.add(yq);
//      }else {
//         homeZbjtVoList.add(new HomeZbjtVo());
//      }
//      //逾期产生值 今天产生-今天已付
//
//      homeZbjtVoList.add(yq);
      return R.ok(homeZbjtVoList);
   }
   @Override
   public R homeZgs() {
      List<HomeZgsVo> homeZbjtVoList = new ArrayList<>();
      //合同签订 华北  西北  东北  海外
      HomeZgsVo htqd = contractMapper.homeZgs(SecurityUtils.getUser().getCompId());
      homeZbjtVoList.add(htqd);
      //回款
      HomeZgsVo hk = paymentSlipMapper.homeZgs(SecurityUtils.getUser().getCompId());
      homeZbjtVoList.add(hk);
      //出货
      HomeZgsVo ch = contractOutBoundMapper.homeZgs(SecurityUtils.getUser().getCompId());
      homeZbjtVoList.add(ch);
//      //出货
//      HomeZgsVo ch = contractOutBoundMapper.homeZgs(SecurityUtils.getUser().getCompId());
//      homeZbjtVoList.add(ch);
      //开票
      HomeZgsVo kp = contractInvoiceMapper.homeZgs(SecurityUtils.getUser().getCompId());
      homeZbjtVoList.add(kp);
      //回款
      HomeZgsVo hk = paymentSlipMapper.homeZgs(SecurityUtils.getUser().getCompId());
      homeZbjtVoList.add(hk);
      //合同签订 华北  西北  东北  海外
      HomeZgsVo htqd = contractMapper.homeZgs(SecurityUtils.getUser().getCompId());
      homeZbjtVoList.add(htqd);
      //赊销产生值
//      if (ObjUtil.isNotNull(ch)&&ObjUtil.isNotNull(kp)){
//         HomeZgsVo sxsy = ch.add(kp);
//         homeZbjtVoList.add(sxsy);
//      }else if (ObjUtil.isNotNull(ch)&&ObjUtil.isNull(kp)){
         homeZbjtVoList.add(ch);
//         homeZbjtVoList.add(ch);
//      }else if (ObjUtil.isNull(ch)&&ObjUtil.isNotNull(kp)){
//         homeZbjtVoList.add(kp);
//      }else {
//         homeZbjtVoList.add(new HomeZgsVo());
//      }
      //赊销累计剩余值
      HomeZgsVo sx = contractOutBoundMapper.homeZgsSX(SecurityUtils.getUser().getCompId());
      homeZbjtVoList.add(sx);
      HomeZgsVo yq = currentOverdueMapper.homeZgs(SecurityUtils.getUser().getCompId());
      //逾期产生值
      HomeZgsVo ls = historyOverdueMapper.homeZgs(SecurityUtils.getUser().getCompId());
      if (ObjUtil.isNotNull(ls)&&ObjUtil.isNotNull(yq)){
         homeZbjtVoList.add(yq.add(ls));
      }else if (ObjUtil.isNotNull(ls)&&ObjUtil.isNull(yq)){
         homeZbjtVoList.add(ls);
      }else if (ObjUtil.isNull(ls)&&ObjUtil.isNotNull(yq)){
         homeZbjtVoList.add(yq);
      }else {
         homeZbjtVoList.add(new HomeZgsVo());
      }
      //逾期累计剩余
      homeZbjtVoList.add(yq);
//      HomeZgsVo sx = contractOutBoundMapper.homeZgsSX(SecurityUtils.getUser().getCompId());
//      homeZbjtVoList.add(sx);
//
//      HomeZgsVo yq = currentOverdueMapper.homeZgs(SecurityUtils.getUser().getCompId());
//
//      //逾期产生值
//      HomeZgsVo ls = historyOverdueMapper.homeZgs(SecurityUtils.getUser().getCompId());
//      if (ObjUtil.isNotNull(ls)&&ObjUtil.isNotNull(yq)){
//         homeZbjtVoList.add(yq.add(ls));
//      }else if (ObjUtil.isNotNull(ls)&&ObjUtil.isNull(yq)){
//         homeZbjtVoList.add(ls);
//      }else if (ObjUtil.isNull(ls)&&ObjUtil.isNotNull(yq)){
//         homeZbjtVoList.add(yq);
//      }else {
//         homeZbjtVoList.add(new HomeZgsVo());
//      }
//      //逾期累计剩余
//      homeZbjtVoList.add(yq);
      return R.ok(homeZbjtVoList);
   }