From 98339b977a92ebedb0edac11d993ffcb1364d923 Mon Sep 17 00:00:00 2001 From: Jinyuanyuan <1197651512@qq.com> Date: Mon, 3 Jun 2024 17:11:45 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9C=8B=E6=9D=BF1.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/HuzhouProjectController.java | 13 ++- .../huzhou/dao/HuzhouProjectinfoMapper.java | 10 ++ .../dao/mapping/HuzhouProjectinfoMapper.xml | 86 ++++++++++++++++ .../huzhou/entity/HuzhouProjectinfo.java | 2 + .../service/IHuzhouProjectinfoService.java | 31 +++++- .../impl/HuzhouProjectinfoServiceImpl.java | 99 ++++++++++++++++++- .../modules/huzhou/vo/DimensionPageOV.java | 66 +++++++++++++ .../huzhou/vo/DimensionPageResponse.java | 64 ++++++++++++ .../admin/modules/huzhou/vo/NewFundOV.java | 6 ++ .../modules/huzhou/vo/ProjectProgressOV.java | 2 + .../modules/huzhou/vo/TypeResponseOV.java | 2 + 11 files changed, 370 insertions(+), 11 deletions(-) create mode 100644 huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/DimensionPageOV.java create mode 100644 huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/DimensionPageResponse.java 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 07ea1f7..e747250 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 @@ -189,14 +189,19 @@ public class HuzhouProjectController { } /** - * 状态更新 + * 测试 * @param * @param */ @GetMapping("/acount") - public Result acount(){ - NewFundOV result = projectinfoService.getFundByType(); - return Result.OK(result); + public Result acount(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){ + IPage dimensionPage = projectinfoService.getDimensionPage(projectInfo, pageNo, pageSize, orderBy, orderDir); + return Result.OK(dimensionPage); } + } 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 d93a30f..3d4b5f4 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 @@ -1,7 +1,9 @@ package com.easy.admin.modules.huzhou.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.easy.admin.modules.huzhou.vo.DimensionPageOV; import com.easy.admin.modules.huzhou.vo.HuzhouProjectinfoOV; import org.apache.ibatis.annotations.Mapper; import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo; @@ -48,4 +50,12 @@ public interface HuzhouProjectinfoMapper extends BaseMapper { Integer updateType(); + /** + * 获取项目信息和子项目信息列表(排序) + * @param info 查询条件 + * @return List + */ + IPage getPageSorted(Page page, @Param("info") HuzhouProjectinfo info, @Param("orderBy") String orderBy, @Param("orderDir") String orderDir); + + } 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 e559ee5..54d39d4 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 @@ -54,6 +54,15 @@ + + + + + + + + + (1=1 @@ -213,4 +222,81 @@ order by create_date desc SET type = "0" WHERE type = "2" and (central_money!='' or provincial_money!='') + + + \ No newline at end of file diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java index 05b2f13..b10b210 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java @@ -151,5 +151,7 @@ public class HuzhouProjectinfo extends BaseEntity { private String type; + + } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java index 17ec138..4503f9b 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java @@ -122,6 +122,7 @@ public interface IHuzhouProjectinfoService extends IService { */ CountOV countByProperties(); + /** * 更新状态 * @@ -130,22 +131,46 @@ public interface IHuzhouProjectinfoService extends IService { Boolean updateType(); /** - * 返回项目总数量、入库项目id列表、配套项目id列表 + * 返回项目总数量、入库项目id列表、配套项目id列表(不涉及子项目) + * + * @param + */ + public TypeResponseOV getIds(); + + /** + * 返回项目总数量、入库项目id列表、配套项目id列表(涉及子项目) * * @param */ TypeResponseOV getIdsByType(); - //返回入库项目的进度 + //不涉及子项目 + ProjectProgressOV getProgress(List Ids); + + //返回入库项目的进度(涉及子项目) ProjectProgressOV getProgressByType(); /** - * 根据id列表返回项目总进度和资金拨付情况 + * 根据id列表返回项目总进度和资金拨付情况(不涉及子项目) + * + * @param + */ + NewFundOV getFund(List Ids); + + /** + * 根据id列表返回项目总进度和资金拨付情况(涉及子项目) * * @param */ NewFundOV getFundByType(); + /** + * 分维度返回page + * + * @param + */ + IPage getDimensionPage(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize,String orderBy,String orderDir); + } 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 d6d37cd..6bf6b52 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 @@ -40,6 +40,7 @@ import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; @@ -707,6 +708,20 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl projectAndChildInfoPageList = projectinfoMapper.getProjectAndChildInfoPageList(projectInfoAuthSelect); + Map> zxmMap = projectAndChildInfoPageList.stream().collect(Collectors.groupingBy(HuzhouProjectinfo::getType)); + int total = projectAndChildInfoPageList.size(); + List rkIds = zxmMap.get("1").stream().map(x -> x.getId()).collect(Collectors.toList()); + List ptIds= zxmMap.get("2").stream().map(x -> x.getId()).collect(Collectors.toList()); + TypeResponseOV.TypeResponseOVBuilder result = TypeResponseOV.builder().total(total).rkIdsList(rkIds).ptIdsList(ptIds).pageList(projectAndChildInfoPageList); + return null; + } + @Override public TypeResponseOV getIdsByType() { HuzhouProjectinfo projectInfo =new HuzhouProjectinfo(); @@ -717,12 +732,10 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl cxm = new ArrayList<>(); for(HuzhouProjectinfoOV info:projectAndChildInfoPageList){ if(info.getChildren()!=null){ - for(HuzhouSubProjectinfo child:info.getChildren()){ - cxm.add(child); - } + cxm.addAll(info.getChildren()); } } - Map> cxmMap = cxm.stream().collect(Collectors.groupingBy(HuzhouProjectinfo::getType)); + Map> cxmMap = cxm.stream().collect(Collectors.groupingBy(x->x.getType())); int zxmNum=0; int cxmNum=0; for (String key:zxmMap.keySet()) { @@ -741,6 +754,25 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl Ids) { + int fininshNum=0; + int unfininshNum=0; + BigDecimal progress = new BigDecimal("0.00"); + if(Ids.size()!=0){ + List planInfoList = planinfoService.listByProjectIds(Ids); + fininshNum = (int) planInfoList.stream().filter(x -> (x.getIsfinish().equals("2"))).count(); + unfininshNum = planInfoList.size()-fininshNum; + + progress= BigDecimal.valueOf(((double) fininshNum/planInfoList.size())); + } + + ProjectProgressOV result = ProjectProgressOV.builder().fininshNum(fininshNum) + .unfininshNum(unfininshNum) + .projectProgress(String.valueOf(progress)).build(); + return result; + } + @Override public ProjectProgressOV getProgressByType() { int fininshNum=0; @@ -761,6 +793,33 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl Ids) { + NewFundOV result = null; + if(Ids.size()!=0){ + Map totalMap = contractinfoMapper.getTotalByProjectIds(Ids); + Map paymentMap = contractinfoMapper.getPaymentsByProjectIds(Ids); + BigDecimal totalAmount = totalMap.get("totalAcount"); + BigDecimal totalCentral = totalMap.get("centralAcount"); + BigDecimal totalProvincial = totalMap.get("provincialAcount"); + BigDecimal payAmount = paymentMap.get("totalPayment"); + BigDecimal payCentral = paymentMap.get("centralPayment"); + BigDecimal payProvincial = paymentMap.get("provincialPayment"); + //资金执行率 + BigDecimal paymentExecutionRate = payAmount.divide(totalAmount, 2, RoundingMode.HALF_UP); + BigDecimal SuperiorFundPayment = payCentral.add(payProvincial); + BigDecimal SuperiorFundTotal = totalCentral.add(totalProvincial); + //上级资金执行率 + BigDecimal superiorFundExecutionRate = SuperiorFundPayment.divide(SuperiorFundTotal, 2, RoundingMode.HALF_UP); + result=NewFundOV.builder().totalMoney(String.valueOf(totalAmount)).payAmount(String.valueOf(payAmount)) + .totalCentral(String.valueOf(totalCentral)).payCentral(String.valueOf(payCentral)) + .totalProvincial(String.valueOf(totalProvincial)).payProvincial(String.valueOf(payProvincial)) + .paymentExecutionRate(String.valueOf(paymentExecutionRate)) + .superiorFundExecutionRate(String.valueOf(superiorFundExecutionRate)).build(); + } + return result; + } + @Override public NewFundOV getFundByType() { List projectIds = this.getIdsByType().getRkIdsList(); @@ -783,6 +842,38 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl getDimensionPage(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize,String orderBy,String orderDir) { + Page page = new Page(pageNo, pageSize); + ProjectInfoAuthSelect projectInfoAuthSelect = CommonUtils.setGetProjectInfoAuth(projectInfo); + + IPage pageSorted = projectinfoMapper.getPageSorted(page, projectInfoAuthSelect, orderBy, orderDir); + + List records = pageSorted.getRecords(); + List newRecords = new ArrayList<>(); + IPage result=new Page<>(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + List projectIds=new ArrayList<>(); + DimensionPageResponse build = DimensionPageResponse.builder().build(); + 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); + ProjectProgressOV progress = this.getProgress(projectIds); + BeanUtils.copyProperties(build,r); + build.setTotalMoney(String.valueOf(r.getTotalMoney())).setCentralMoney(String.valueOf(r.getCentralMoney())) + .setProvincialMoney(String.valueOf(r.getProvincialMoney())) + .setPaymentExecutionRate(fund.getPaymentExecutionRate()) + .setSuperiorFundExecutionRate(fund.getSuperiorFundExecutionRate()) + .setProjectProgress(progress.getProjectProgress()); + newRecords.add(build); + } + result.setSize(pageSorted.getSize()).setCurrent(pageSorted.getCurrent()).setRecords(newRecords).setTotal(pageSorted.getTotal()); + return result; + } + + } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/DimensionPageOV.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/DimensionPageOV.java new file mode 100644 index 0000000..7da06fd --- /dev/null +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/DimensionPageOV.java @@ -0,0 +1,66 @@ +package com.easy.admin.modules.huzhou.vo; + +import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.Builder; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +@Builder(toBuilder = true) + +public class DimensionPageOV { + + /** + * 责任单位 + */ + private String dutyWorkplace; + + /** + * 行政区划 + */ + private String adminDivision; + + /** + * 单位属性 + */ + private String workplaceProperties; + + /** + * 上级指导处室 + */ + private String superLeader; + + /** + * 总投资 + */ + private Double totalMoney; + +// /** +// * 合同支付执行率 +// */ +// private Double paymentExecutionRate; + + /** + * 中央资金 + */ + private Double centralMoney; + + /** + * 省级资金 + */ + private Double provincialMoney; + +// /** +// * 合同支付执行率 +// */ +// private Double superiorFundExecutionRate; +// +// /** +// * 项目总进度 +// */ +// private Double projectProgress; + + +} diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/DimensionPageResponse.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/DimensionPageResponse.java new file mode 100644 index 0000000..bd0efb8 --- /dev/null +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/DimensionPageResponse.java @@ -0,0 +1,64 @@ +package com.easy.admin.modules.huzhou.vo; + +import lombok.Builder; +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +@Builder(toBuilder = true) + +public class DimensionPageResponse extends DimensionPageOV{ + + /** + * 责任单位 + */ + private String dutyWorkplace; + + /** + * 行政区划 + */ + private String adminDivision; + + /** + * 单位属性 + */ + private String workplaceProperties; + + /** + * 上级指导处室 + */ + private String superLeader; + + /** + * 总投资 + */ + private String totalMoney; + + /** + * 合同支付执行率 + */ + private String paymentExecutionRate; + + /** + * 中央资金 + */ + private String centralMoney; + + /** + * 省级资金 + */ + private String provincialMoney; + + /** + * 合同支付执行率 + */ + private String superiorFundExecutionRate; + + /** + * 项目总进度 + */ + private String projectProgress; + + +} diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/NewFundOV.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/NewFundOV.java index 5f2bc66..ad2abea 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/NewFundOV.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/NewFundOV.java @@ -4,6 +4,8 @@ import lombok.Builder; import lombok.Data; import lombok.experimental.Accessors; +import java.math.BigDecimal; + @Data @Accessors(chain = true) @Builder(toBuilder = true) @@ -16,4 +18,8 @@ public class NewFundOV { private String payAmount; private String payCentral; private String payProvincial; + + private String paymentExecutionRate; + + private String superiorFundExecutionRate; } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/ProjectProgressOV.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/ProjectProgressOV.java index 6a174ca..b0da882 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/ProjectProgressOV.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/ProjectProgressOV.java @@ -10,4 +10,6 @@ import lombok.experimental.Accessors; public class ProjectProgressOV { private Integer fininshNum; private Integer unfininshNum; + + private String projectProgress; } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/TypeResponseOV.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/TypeResponseOV.java index 60a0a80..a157821 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/TypeResponseOV.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/TypeResponseOV.java @@ -17,4 +17,6 @@ public class TypeResponseOV { //子项目中的入库项目id列表 List crkIdsList; List ptIdsList; + + List pageList; }