From 2b4b99dd3e01ece258fae4ac9c6e96e9ddde5310 Mon Sep 17 00:00:00 2001 From: lijiarao Date: Mon, 22 Jul 2024 11:38:52 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=81=E4=B8=9A=E6=9D=A5=E6=AC=BE?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1-=E5=88=86=E7=B1=BB=E7=BB=9F=E8=AE=A1=20?= =?UTF-8?q?=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/PayCompanyManagementMapper.java | 2 + .../mapper/xml/PayCompanyManagementMapper.xml | 9 ++ .../service/IPayCompanyManagementService.java | 1 + .../impl/PayCompanyManagementServiceImpl.java | 5 + .../mapper/xml/PayWorkingGroupMapper.xml | 2 +- .../CompanyComeMoneyStatisticsController.java | 95 ++++++++++++++----- 6 files changed, 88 insertions(+), 26 deletions(-) diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/mapper/PayCompanyManagementMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/mapper/PayCompanyManagementMapper.java index 57d92f4b..064af4f4 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/mapper/PayCompanyManagementMapper.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/mapper/PayCompanyManagementMapper.java @@ -33,4 +33,6 @@ public interface PayCompanyManagementMapper extends BaseMapper pageSafetyCenter(Page page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + + Page pageHaveMoney(Page page, @Param("chargeCompanyIds") List chargeCompanyIds); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/mapper/xml/PayCompanyManagementMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/company/mapper/xml/PayCompanyManagementMapper.xml index 3071f2c3..d62ee0de 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/mapper/xml/PayCompanyManagementMapper.xml +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/mapper/xml/PayCompanyManagementMapper.xml @@ -46,4 +46,13 @@ left join pay_functional_safety_center_subitem pfscs on pcm.id = pfscs.company_id ${ew.customSqlSegment} + + \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayCompanyManagementService.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayCompanyManagementService.java index 2cb6d3bb..057da062 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayCompanyManagementService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/IPayCompanyManagementService.java @@ -127,4 +127,5 @@ public interface IPayCompanyManagementService extends IService pageSafetyCenter(Page page, QueryWrapper queryWrapper); + Page pageHaveMoney(Page page, List chargeCompanyIds); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayCompanyManagementServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayCompanyManagementServiceImpl.java index e4ba21a2..ad57b75a 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayCompanyManagementServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/service/impl/PayCompanyManagementServiceImpl.java @@ -715,6 +715,11 @@ public class PayCompanyManagementServiceImpl extends ServiceImpl pageHaveMoney(Page page, List chargeCompanyIds) { + return payCompanyManagementMapper.pageHaveMoney(page, chargeCompanyIds); + } + /** * 校验企业名称和信用代码是否匹配 * @param payCompanyManagement diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/xml/PayWorkingGroupMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/xml/PayWorkingGroupMapper.xml index bd3fa5ba..21d63fcb 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/xml/PayWorkingGroupMapper.xml +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/xml/PayWorkingGroupMapper.xml @@ -2713,7 +2713,7 @@ #{item} - + #{item} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/statistics/controller/CompanyComeMoneyStatisticsController.java b/jero-boot-incoming-payment/src/main/java/com/jero/statistics/controller/CompanyComeMoneyStatisticsController.java index e4ee8392..68937b93 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/statistics/controller/CompanyComeMoneyStatisticsController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/statistics/controller/CompanyComeMoneyStatisticsController.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollStreamUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.common.api.vo.Result; @@ -28,7 +29,9 @@ import org.apache.poi.ss.usermodel.Workbook; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.jeecgframework.poi.excel.ExcelExportUtil; import org.jeecgframework.poi.excel.entity.TemplateExportParams; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -238,15 +241,20 @@ public class CompanyComeMoneyStatisticsController { @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { String chargeCompanyId = companyComeMoneySearch.getChargeCompanyId(); - List chargeCompanyIds; + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + List chargeCompanyIds = new ArrayList<>(); + CompanyComeMoneySearch allSearch = new CompanyComeMoneySearch(); if (StringUtils.isNotBlank(chargeCompanyId)){ chargeCompanyIds = StrUtil.split(chargeCompanyId, ','); - companyComeMoneySearch.setChargeCompanyIds(chargeCompanyIds); - }else { - List list = payCompanyManagementService.list(); - chargeCompanyIds = list.stream().map(PayCompanyManagement::getId).collect(Collectors.toList()); - companyComeMoneySearch.setChargeCompanyIds(chargeCompanyIds); + allSearch.setChargeCompanyIds(chargeCompanyIds); + wrapper.in(PayCompanyManagement::getId,chargeCompanyIds); } + //获取分页后需要统计的企业 + Page page = new Page<>(pageNo, pageSize); + Page companyManagementPage = payCompanyManagementService.pageHaveMoney(page,chargeCompanyIds); + chargeCompanyIds = companyManagementPage.getRecords().stream().map(PayCompanyManagement::getId).collect(Collectors.toList()); + companyComeMoneySearch.setChargeCompanyIds(chargeCompanyIds); + String year_begin = companyComeMoneySearch.getYear_begin(); String year_end = companyComeMoneySearch.getYear_end(); int integer1 = Integer.parseInt(year_begin); @@ -254,14 +262,21 @@ public class CompanyComeMoneyStatisticsController { int i = integer2 - integer1; List years = new LinkedList<>(); years.add(year_begin); - for (int i1 = 0; i1 < i; i1++) { + for (int i1 = 1; i1 <= i; i1++) { years.add(String.valueOf(integer1+i1)); } companyComeMoneySearch.setYears(years); + allSearch.setYears(years); + //获取当前分页数据 + List list = payWorkingGroupService.queryPageListForCompanyClassification(companyComeMoneySearch); + //获取总金额 + List allMoneyList = payWorkingGroupService.queryPageListForCompanyClassification(allSearch); + //拼接返回值map Map map = new HashMap<>(); //获取表头 List dictModels = sysBaseAPI.queryDictItemsByCode("payment_charge_use"); List> titleList = new ArrayList<>(); + //总金额map Map allMap = new HashMap<>(); BigDecimal zero = new BigDecimal("0.00"); for (String s : years) { @@ -283,8 +298,7 @@ public class CompanyComeMoneyStatisticsController { } } map.put("titleList", titleList); - //获取数据 - List list = payWorkingGroupService.queryPageListForCompanyClassification(companyComeMoneySearch); + //统计金额 List> valList = new ArrayList<>(); //先按企业id分组 Map> companyIdKeyMap = CollStreamUtil.groupByKey(list, CompanyComeMoneyClassificationList::getCompanyId); @@ -292,7 +306,7 @@ public class CompanyComeMoneyStatisticsController { Map lm = new HashMap<>(); //获取单一企业数据 List companyDateList = companyIdKeyMap.get(companyId); - if (companyDateList.isEmpty()) { + if (CollectionUtil.isEmpty(companyDateList)) { continue; }else { String companyName = companyDateList.get(0).getCompanyName(); @@ -311,9 +325,6 @@ public class CompanyComeMoneyStatisticsController { } } lm.put(yearKey, bigDecimal.toString()); - String allStr = allMap.get(yearKey); - BigDecimal all = new BigDecimal(allStr).add(bigDecimal); - allMap.put(yearKey,all.toString()); } for (String yearKey : years) { //获得单一年数据 @@ -331,15 +342,51 @@ public class CompanyComeMoneyStatisticsController { } String key = yearKey + "_" + value; lm.put(key, bigDecimal.toString()); - String allStr = allMap.get(key); - BigDecimal all = new BigDecimal(allStr).add(bigDecimal); - allMap.put(key,all.toString()); } } valList.add(lm); } map.put("valList", valList); + //存入总金额 + //按年份分组 + Map> yearKeyMap = CollStreamUtil.groupByKey(allMoneyList, CompanyComeMoneyClassificationList::getYear); + for (String yearKey : years) { + //获得单一年数据 + List dataList = yearKeyMap.get(yearKey); + BigDecimal bigDecimal = new BigDecimal("0.00"); + if (dataList != null){ + for (CompanyComeMoneyClassificationList list1 : dataList) { + String allMoney = list1.getAllMoney(); + bigDecimal = bigDecimal.add(new BigDecimal(allMoney)); + } + } + String allStr = allMap.get(yearKey); + BigDecimal all = new BigDecimal(allStr).add(bigDecimal); + allMap.put(yearKey,all.toString()); + } + for (String yearKey : years) { + //获得单一年数据 + List dataList = yearKeyMap.get(yearKey); + for (DictModel dictModel : dictModels) { + BigDecimal bigDecimal = new BigDecimal("0.00"); + String value = dictModel.getValue(); + if (dataList != null){ + for (CompanyComeMoneyClassificationList list2 : dataList) { + if (list2.getChargeUse().equals(value)) { + String allMoney = list2.getAllMoney(); + bigDecimal = bigDecimal.add(new BigDecimal(allMoney)); + } + } + } + String key = yearKey + "_" + value; + String allStr = allMap.get(key); + BigDecimal all = new BigDecimal(allStr).add(bigDecimal); + allMap.put(key,all.toString()); + } + } map.put("allMap", allMap); + + map.put("page", page.setRecords(null)); return Result.OK(map); }/** @@ -353,14 +400,11 @@ public class CompanyComeMoneyStatisticsController { public void classificationExcel(CompanyComeMoneySearch companyComeMoneySearch, HttpServletResponse response) { String chargeCompanyId = companyComeMoneySearch.getChargeCompanyId(); - List chargeCompanyIds; + List chargeCompanyIds = new ArrayList<>(); + CompanyComeMoneySearch allSearch = new CompanyComeMoneySearch(); if (StringUtils.isNotBlank(chargeCompanyId)){ chargeCompanyIds = StrUtil.split(chargeCompanyId, ','); - companyComeMoneySearch.setChargeCompanyIds(chargeCompanyIds); - }else { - List list = payCompanyManagementService.list(); - chargeCompanyIds = list.stream().map(PayCompanyManagement::getId).collect(Collectors.toList()); - companyComeMoneySearch.setChargeCompanyIds(chargeCompanyIds); + allSearch.setChargeCompanyIds(chargeCompanyIds); } String year_begin = companyComeMoneySearch.getYear_begin(); @@ -370,10 +414,11 @@ public class CompanyComeMoneyStatisticsController { int i = integer2 - integer1; List years = new LinkedList<>(); years.add(year_begin); - for (int i1 = 0; i1 < i; i1++) { + for (int i1 = 1; i1 <= i; i1++) { years.add(String.valueOf(integer1+i1)); } companyComeMoneySearch.setYears(years); + allSearch.setYears(years); Map map = new HashMap<>(); //获取表头 List dictModels = sysBaseAPI.queryDictItemsByCode("payment_charge_use"); @@ -397,7 +442,7 @@ public class CompanyComeMoneyStatisticsController { } map.put("titleList", titleList); //获取数据 - List list = payWorkingGroupService.queryPageListForCompanyClassification(companyComeMoneySearch); + List list = payWorkingGroupService.queryPageListForCompanyClassification(allSearch); List> valList = new ArrayList<>(); //先按企业id分组 Map> companyIdKeyMap = CollStreamUtil.groupByKey(list, CompanyComeMoneyClassificationList::getCompanyId); @@ -458,7 +503,7 @@ public class CompanyComeMoneyStatisticsController { response.setContentType("application/x-download"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Disposition", - "attachment;filename=".concat(String.valueOf(URLEncoder.encode("征集问题.xls", "UTF-8")))); + "attachment;filename=".concat(String.valueOf(URLEncoder.encode("企业来款分类统计.xlsx", "UTF-8")))); ServletOutputStream outputStream = response.getOutputStream(); workbook.write(outputStream); workbook.close();