From 58d0d8e9e781532f7d4437c5ba29ff9f9a0195ee Mon Sep 17 00:00:00 2001 From: Jinyuanyuan <1197651512@qq.com> Date: Thu, 6 Jun 2024 13:20:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E4=BD=8D=E4=B8=BB=E4=BD=93=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E6=8E=92=E5=BA=8F=E3=80=81=E7=A4=BA=E8=8C=83=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=88=86=E9=A1=B5=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/HuzhouProjectController.java | 27 +++-- .../huzhou/dao/HuzhouProjectinfoMapper.java | 6 +- .../dao/mapping/HuzhouProjectinfoMapper.xml | 100 ++++++++++++++---- .../impl/HuzhouProjectinfoServiceImpl.java | 90 +++++++++++++--- 4 files changed, 177 insertions(+), 46 deletions(-) diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java index 72055aa..0787f50 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java @@ -25,6 +25,7 @@ import java.time.ZoneId; import java.time.temporal.ChronoUnit; import java.util.Date; import java.util.List; +import java.util.Objects; @RestController @@ -199,8 +200,13 @@ public class HuzhouProjectController { public Result getDimensionPageSorted(HuzhouProjectinfo projectInfo, @RequestParam(name="current", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - @RequestParam(name="orderBy", defaultValue="duty_workplace") String orderBy, - @RequestParam(name="orderDir", defaultValue="desc") String orderDir){ + @RequestParam(name="sortField", defaultValue="duty_workplace") String orderBy, + @RequestParam(name="sortOrder", defaultValue="desc") String orderDir){ + if(Objects.equals(orderDir, "descend")){ + orderDir="desc"; + } else if (Objects.equals(orderDir, "ascend")) { + orderDir="asc"; + } IPage dimensionPage = projectinfoService.getDimensionPage(projectInfo, pageNo, pageSize, orderBy, orderDir); return Result.OK(dimensionPage); @@ -214,8 +220,13 @@ public class HuzhouProjectController { public Result getPageSorted(HuzhouProjectinfo projectInfo, @RequestParam(name="current", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - @RequestParam(name="orderBy", defaultValue="duty_workplace") String orderBy, - @RequestParam(name="orderDir", defaultValue="desc") String orderDir){ + @RequestParam(name="sortField", defaultValue="duty_workplace") String orderBy, + @RequestParam(name="sortOrder", defaultValue="desc") String orderDir){ + if(Objects.equals(orderDir, "descend")){ + orderDir="desc"; + } else if (Objects.equals(orderDir, "ascend")) { + orderDir="asc"; + } IPage projectPage = projectinfoService.getProjectPage(projectInfo, pageNo, pageSize, orderBy, orderDir); return Result.OK(projectPage); } @@ -228,16 +239,16 @@ public class HuzhouProjectController { } @GetMapping("/showCountBoardByReformName") - public Result showCountBoardByReformName(@RequestParam(name="orderBy",defaultValue="") String orderBy, - @RequestParam(name="orderDir",defaultValue="") String orderDir){ + public Result showCountBoardByReformName(@RequestParam(name="sortField",defaultValue="") String orderBy, + @RequestParam(name="sortOrder",defaultValue="") String orderDir){ String condition="reformName"; CountByConditionOV result = projectinfoService.countByCondition(condition,orderBy,orderDir); return Result.ok(result); } @GetMapping("/showCountBoardByAdminDivision") - public Result showCountBoardByAdminDivision(@RequestParam(name="orderBy",defaultValue="") String orderBy, - @RequestParam(name="orderDir",defaultValue="") String orderDir){ + public Result showCountBoardByAdminDivision(@RequestParam(name="sortField",defaultValue="") String orderBy, + @RequestParam(name="sortOrder",defaultValue="") String orderDir){ String condition="adminDivision"; CountByConditionOV result = projectinfoService.countByCondition(condition,orderBy,orderDir); return Result.ok(result); diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouProjectinfoMapper.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouProjectinfoMapper.java index a56a70a..cb80b66 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouProjectinfoMapper.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouProjectinfoMapper.java @@ -60,17 +60,21 @@ public interface HuzhouProjectinfoMapper extends BaseMapper { */ IPage getDimensionPageSorted(Page page, @Param("info") HuzhouProjectinfo info, @Param("orderBy") String orderBy, @Param("orderDir") String orderDir); + IPage getDimensionPageNoSorted(Page page, @Param("info") HuzhouProjectinfo info); + /** * 获取项目信息列表(排序) * @param info 查询条件 * @return List */ IPage getProjectPageSorted(Page page, @Param("info") HuzhouProjectinfo info, @Param("orderBy") String orderBy, @Param("orderDir") String orderDir); - + IPage getProjectPageNoSorted(Page page, @Param("info") HuzhouProjectinfo info); List getListByCondition(@Param("info") HuzhouProjectinfo info,@Param("condition") String condition); List getNumByType(@Param("info") HuzhouProjectinfo info); //根据一组项目id返回总金额、总中央资金、总省级资金 Map getTotalByProjectIds(@Param("projectIds") List projectIds); + + List getListByConditions(@Param("info") HuzhouProjectinfo info); } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/mapping/HuzhouProjectinfoMapper.xml b/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/mapping/HuzhouProjectinfoMapper.xml index ef6014d..f09d471 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/mapping/HuzhouProjectinfoMapper.xml +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/mapping/HuzhouProjectinfoMapper.xml @@ -247,29 +247,47 @@ order by create_date desc sum(provincial_money) as provincialMoney from huzhou_projectinfo - - - and project_name like #{tempStr} - - - and admin_division like #{tempStr} + + and admin_division like #{tempStr1} - - and duty_workplace like #{tempStr} + + and duty_workplace like #{tempStr2} - - and workplace_properties like #{tempStr} + + and workplace_properties like #{tempStr3} + + + and super_leader = #{info.superLeader} + + + and type = #{info.type} + + + group by duty_workplace,admin_division,workplace_properties,super_leader + order by ${orderBy} ${orderDir} + + + + + \ No newline at end of file diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java index fd7bb77..3f21b57 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java @@ -762,6 +762,16 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl test=new ArrayList<>(); +// test.add("1787757791784607745"); +// List t = planinfoService.listByProjectIds(test); +// fininshNum = (int) t.stream().filter(x -> (x.getIsfinish().equals("2"))).count(); +// unfininshNum = t.size() - fininshNum; +// progress = (double) fininshNum / t.size(); +// formatted = String.format("%.2f", progress); + if (Ids.size() != 0) { List planInfoList = planinfoService.listByProjectIds(Ids); fininshNum = (int) planInfoList.stream().filter(x -> (x.getIsfinish().equals("2"))).count(); @@ -900,27 +910,37 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl getDimensionPage(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize, String orderBy, String orderDir) { - Page page = new Page(pageNo, pageSize); +// Page page1 = new Page(pageNo, pageSize); //只要入库项目 projectInfo.setType("1"); ProjectInfoAuthSelect projectInfoAuthSelect = CommonUtils.setGetProjectInfoAuth(projectInfo); - //获取全部 - - IPage pageSorted = projectinfoMapper.getDimensionPageSorted(page, projectInfoAuthSelect, orderBy, orderDir); + Page page = new Page(1, 1000); + IPage pageSorted; + if((Objects.equals(orderBy, "paymentExecutionRate"))||(Objects.equals(orderBy, "superiorFundExecutionRate"))||Objects.equals(orderBy, "projectProgress")){ + pageSorted = projectinfoMapper.getDimensionPageNoSorted(page,projectInfoAuthSelect); + }else { + pageSorted = projectinfoMapper.getDimensionPageSorted(page,projectInfoAuthSelect, orderBy, orderDir); + } List records = pageSorted.getRecords(); List newRecords = new ArrayList<>(); IPage result = new Page<>(); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - List projectIds = new ArrayList<>(); + HuzhouProjectinfo info =new HuzhouProjectinfo(); for (DimensionPageOV r : records) { - queryWrapper.eq(HuzhouProjectinfo::getDutyWorkplace, r.getDutyWorkplace()).eq(HuzhouProjectinfo::getAdminDivision, r.getAdminDivision()) - .eq(HuzhouProjectinfo::getWorkplaceProperties, r.getWorkplaceProperties()).eq(HuzhouProjectinfo::getSuperLeader, r.getSuperLeader()); - projectIds.addAll(projectinfoMapper.selectList(queryWrapper).stream().map(x -> x.getId()).collect(Collectors.toList())); - NewFundOV fund = this.getFund(projectIds); + info.setAdminDivision(r.getAdminDivision()); + info.setDutyWorkplace(r.getDutyWorkplace()); + info.setWorkplaceProperties(r.getWorkplaceProperties()); + info.setSuperLeader(r.getSuperLeader()); + info.setType("1"); + ProjectInfoAuthSelect projectInfoAuthSelect1 = CommonUtils.setGetProjectInfoAuth(info); + List listByConditions = projectinfoMapper.getListByConditions(projectInfoAuthSelect1); + List projectIds = listByConditions.stream().map(x -> x.getId()).collect(Collectors.toList()); + //进度 ProjectProgressOV progress = this.getProgress(projectIds); + //按单位划分的各类资金总额和执行率情况 + NewFundOV fund = this.getFund(projectIds); DimensionPageResponse build = new DimensionPageResponse(); BeanUtils.copyProperties(r, build); BigDecimal totalDecimal = BigDecimal.valueOf(r.getTotalMoney()); @@ -938,17 +958,41 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl sortedDimensionPageResponse = newRecords.stream().sorted(Comparator.comparing(DimensionPageResponse::getPaymentExecutionRate).reversed()).collect(Collectors.toList());; + if (Objects.equals(orderBy, "paymentExecutionRate")&& Objects.equals(orderDir, "desc")){ + sortedDimensionPageResponse=newRecords.stream().sorted(Comparator.comparing(DimensionPageResponse::getPaymentExecutionRate).reversed()).collect(Collectors.toList()); + } else if (Objects.equals(orderBy, "paymentExecutionRate") && Objects.equals(orderDir, "asc")) { + sortedDimensionPageResponse=newRecords.stream().sorted(Comparator.comparing(DimensionPageResponse::getPaymentExecutionRate)).collect(Collectors.toList()); + }else if (Objects.equals(orderBy, "superiorFundExecutionRate")&& Objects.equals(orderDir, "desc")){ + sortedDimensionPageResponse=newRecords.stream().sorted(Comparator.comparing(DimensionPageResponse::getSuperiorFundExecutionRate).reversed()).collect(Collectors.toList()); + } else if (Objects.equals(orderBy, "superiorFundExecutionRate") && Objects.equals(orderDir, "asc")) { + sortedDimensionPageResponse=newRecords.stream().sorted(Comparator.comparing(DimensionPageResponse::getSuperiorFundExecutionRate)).collect(Collectors.toList()); + }else if (Objects.equals(orderBy, "projectProgress")&& Objects.equals(orderDir, "desc")){ + sortedDimensionPageResponse=newRecords.stream().sorted(Comparator.comparing(DimensionPageResponse::getProjectProgress).reversed()).collect(Collectors.toList()); + } else if (Objects.equals(orderBy, "projectProgress") && Objects.equals(orderDir, "asc")) { + sortedDimensionPageResponse=newRecords.stream().sorted(Comparator.comparing(DimensionPageResponse::getProjectProgress)).collect(Collectors.toList()); + } + //手动分页 + int fromIndex = (pageNo - 1) * pageSize; + List currentPageData = sortedDimensionPageResponse.subList(fromIndex, Math.min(fromIndex + pageSize, sortedDimensionPageResponse.size())); + result.setSize(pageSize).setCurrent(pageNo).setRecords(currentPageData).setTotal(pageSorted.getTotal()); return result; } @Override public IPage getProjectPage(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize, String orderBy, String orderDir) { - Page page = new Page(pageNo, pageSize); //只要入库项目 projectInfo.setType("1"); ProjectInfoAuthSelect projectInfoAuthSelect = CommonUtils.setGetProjectInfoAuth(projectInfo); - IPage pageSorted = projectinfoMapper.getProjectPageSorted(page, projectInfoAuthSelect, orderBy, orderDir); + Page page = new Page(1, 1000); + IPage pageSorted; + if((Objects.equals(orderBy, "paymentExecutionRate"))||(Objects.equals(orderBy, "superiorFundExecutionRate"))||Objects.equals(orderBy, "projectProgress")){ + pageSorted = projectinfoMapper.getProjectPageNoSorted(page,projectInfoAuthSelect); + }else { + pageSorted = projectinfoMapper.getProjectPageSorted(page, projectInfoAuthSelect, orderBy, orderDir); + } + List records = pageSorted.getRecords(); List newRecords = new ArrayList<>(); IPage result = new Page<>(); @@ -974,7 +1018,25 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl sortedProjectPageResponse = newRecords.stream().sorted(Comparator.comparing(ProjectPageResponse::getPaymentExecutionRate).reversed()).collect(Collectors.toList());; + if (Objects.equals(orderBy, "paymentExecutionRate")&& Objects.equals(orderDir, "desc")){ + sortedProjectPageResponse=newRecords.stream().sorted(Comparator.comparing(ProjectPageResponse::getPaymentExecutionRate).reversed()).collect(Collectors.toList()); + } else if (Objects.equals(orderBy, "paymentExecutionRate") && Objects.equals(orderDir, "asc")) { + sortedProjectPageResponse=newRecords.stream().sorted(Comparator.comparing(ProjectPageResponse::getPaymentExecutionRate)).collect(Collectors.toList()); + }else if (Objects.equals(orderBy, "superiorFundExecutionRate")&& Objects.equals(orderDir, "desc")){ + sortedProjectPageResponse=newRecords.stream().sorted(Comparator.comparing(ProjectPageResponse::getSuperiorFundExecutionRate).reversed()).collect(Collectors.toList()); + } else if (Objects.equals(orderBy, "superiorFundExecutionRate") && Objects.equals(orderDir, "asc")) { + sortedProjectPageResponse=newRecords.stream().sorted(Comparator.comparing(ProjectPageResponse::getSuperiorFundExecutionRate)).collect(Collectors.toList()); + }else if (Objects.equals(orderBy, "projectProgress")&& Objects.equals(orderDir, "desc")){ + sortedProjectPageResponse=newRecords.stream().sorted(Comparator.comparing(ProjectPageResponse::getProjectProgress).reversed()).collect(Collectors.toList()); + } else if (Objects.equals(orderBy, "projectProgress") && Objects.equals(orderDir, "asc")) { + sortedProjectPageResponse=newRecords.stream().sorted(Comparator.comparing(ProjectPageResponse::getProjectProgress)).collect(Collectors.toList()); + } + //手动分页 + int fromIndex = (pageNo - 1) * pageSize; + List currentPageData = sortedProjectPageResponse.subList(fromIndex, Math.min(fromIndex + pageSize, sortedProjectPageResponse.size())); + result.setSize(pageSorted.getSize()).setCurrent(pageSorted.getCurrent()).setRecords(currentPageData).setTotal(pageSorted.getTotal()); return result; }