Browse Source

统计分页

master
Jinyuanyuan 2 weeks ago
parent
commit
d09c65eba0
  1. 31
      huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java
  2. 10
      huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouProjectinfoMapper.java
  3. 56
      huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/mapping/HuzhouProjectinfoMapper.xml
  4. 14
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java
  5. 131
      huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java
  6. 2
      huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/FundByTypeOV.java
  7. 41
      huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/ProjectDetailOV.java
  8. 34
      huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/ProjectSummaryOV.java

31
huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java

@ -11,7 +11,6 @@ import com.easy.admin.common.api.vo.Result;
import com.easy.admin.modules.huzhou.entity.*;
import com.easy.admin.modules.huzhou.service.*;
import org.antlr.v4.runtime.atn.SemanticContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@ -20,10 +19,6 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@ -295,14 +290,34 @@ public class HuzhouProjectController {
}
@GetMapping("/getStoragedFound")
public Result<?> getStoragedFound(){
FoundByTypeOV result = projectinfoService.countStoragedFound();
FundByTypeOV result = projectinfoService.countStoragedFound();
return Result.ok(result);
}
@GetMapping("/getSupportingFound")
public Result<?> getSupportingFound(){
FoundByTypeOV result = projectinfoService.countSupportingFound();
FundByTypeOV result = projectinfoService.countSupportingFound();
return Result.ok(result);
}
@GetMapping("/getProjectSummaryPage")
public Result<?> getProjectSummaryPage(HuzhouProjectinfoOV projectinfo,
@RequestParam(name="current", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
IPage<ProjectSummaryOV> result = projectinfoService.getProjectSummaryPage(projectinfo,pageNo,pageSize);
return Result.ok(result);
}
@GetMapping("/getProjectSummaryPageByTask")
public Result<?> getProjectSummaryPageByTask(HuzhouProjectinfoOV projectinfo,
@RequestParam(name="current", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
IPage<ProjectSummaryOV> result = projectinfoService.getProjectSummaryPageByTask(projectinfo,pageNo,pageSize);
return Result.ok(result);
}
@GetMapping("/getProjectDetailPage")
public Result<?> getProjectDetailPage(HuzhouProjectinfoOV projectinfo,
@RequestParam(name="current", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize){
IPage<ProjectDetailOV> result = projectinfoService.getProjectDetailPage(projectinfo, pageNo, pageSize);
return Result.ok(result);
}
}

10
huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouProjectinfoMapper.java

@ -78,4 +78,14 @@ public interface HuzhouProjectinfoMapper extends BaseMapper<HuzhouProjectinfo> {
List<HuzhouProjectinfoOV> getListByConditions(@Param("info") HuzhouProjectinfo info);
Page<HuzhouProjectinfoOV>getUnitedTechnicalReviewList(Page page, @Param("info") ProjectInfoAuthSelect info);
List<ProjectSummaryOV> getProjectSummaryPageList(@Param("projectIds") List<String> projectIds);
List<String> listIdsByDutyWorkplace(@Param("dutyWorkplace") String dutyWorkplace);
Map<String,BigDecimal> countMoneyByIds(@Param("projectIds") List<String> projectIds);
Map<String,BigDecimal> getMoneyById(@Param("projectId") String projectId);
List<String> getIds(@Param("reformName") String reformName,@Param("superLeader") String superLeader);
}

56
huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/mapping/HuzhouProjectinfoMapper.xml

@ -78,6 +78,18 @@
<result property="type" column="type" jdbcType="VARCHAR"/>
<result property="num" column="num" jdbcType="NUMERIC"/>
</resultMap>
<resultMap id="ProjectSummaryPageMap" type="com.easy.admin.modules.huzhou.vo.ProjectSummaryOV">
<result property="dutyWorkplace" column="dutyWorkplace" jdbcType="VARCHAR"/>
<result property="reformName" column="reformName" jdbcType="VARCHAR"/>
<result property="superLeader" column="superLeader" jdbcType="VARCHAR"/>
<result property="projectNum" column="projectNum" jdbcType="INTEGER"/>
<result property="totalMoney" column="totalMoney" jdbcType="NUMERIC"/>
<result property="centralMoney" column="centralMoney" jdbcType="NUMERIC"/>
<result property="estimateMoney" column="estimateMoney" jdbcType="NUMERIC"/>
<result property="contractMoney" column="contractMoney" jdbcType="NUMERIC"/>
<result property="contractCentralMoney" column="contractCentralMoney" jdbcType="NUMERIC"/>
<result property="projectProgress" column="projectProgress" jdbcType="VARCHAR"/>
</resultMap>
<sql id="selectAuthSql">
(1=1
<if test="info.projectContacts!=null and info.projectContacts!=''">
@ -470,4 +482,48 @@ order by create_date desc
</where>
order by subquery.create_date desc
</select>
<!-- <select id="getProjectSummaryPageList" resultMap="ProjectSummaryPageMap" parameterType="com.easy.admin.modules.huzhou.vo.ProjectSummaryOV">-->
<!-- select u.duty_workplace as dutyWorkplace,count(*) as projectNum,sum(u.total_money) as totalMoney,-->
<!-- sum(u.urt_estimated_amount) as estimateMoney,sum(m.contract_total_money) as contractMoney,-->
<!-- sum(m.contract_central_money) as contractCentralMoney from huzhou_projectinfo u left join huzhou_projectinfo_money m on u.id=m.id-->
<!-- <where>-->
<!-- <include refid="selectAuthSql"/>-->
<!-- <if test="info.dutyWorkplace!=null and info.dutyWorkplace!=''">-->
<!-- <bind name="dutyWorkplace" value="'%' + info.dutyWorkplace + '%'" />-->
<!-- and u.duty_workplace like #{dutyWorkplace}-->
<!-- </if>-->
<!-- </where>-->
<!-- group by u.duty_workplace-->
<!-- </select>-->
<select id="listIdsByDutyWorkplace" resultType="java.lang.String" >
select id from huzhou_projectinfo
<where>
<include refid="selectAuthSql"/>
and u.duty_workplace like #{dutyWorkplace}
</where>
</select>
<select id="countMoneyByIds" resultType="Map" >
select sum(contract_total_money) as contractMoney,sum(contract_central_money) as contractCentralMoney
from huzhou_projectinfo_money where id in
<foreach item="projectId" index="index" collection="projectIds" open="(" separator="," close=")">
#{projectId}
</foreach>
</select>
<select id="getMoneyById" resultType="Map" >
select u.total_money as totalMoney,u.central_money as centralMoney,u.urt_estimated_amount as estimateMoney, m.contract_total_money as contractMoney,m.contract_central_money as contractCentralMoney
from huzhou_projectinfo_money where id=#{projectId}
</select>
<select id="getProjectSummaryPageList" resultMap="ProjectSummaryPageMap" parameterType="com.easy.admin.modules.huzhou.vo.ProjectSummaryOV">
select u.reform_name as reformName,u.super_leader as superLeader,count(*) as projectNum,
sum(u.total_money) as totalMoney, sum(u.urt_estimated_amount) as estimateMoney,
sum(m.contract_total_money) as contractMoney,sum(m.contract_central_money) as contractCentralMoney
from huzhou_projectinfo u left join huzhou_projectinfo_money m on u.id=m.id where u.id in
<foreach item="projectId" index="index" collection="projectIds" open="(" separator="," close=")">
#{projectId}
</foreach>
group by u.reform_name,u.super_leader
</select>
<select id="getIds" resultType="java.lang.String" >
select id from huzhou_projectinfo where reform_name=#{reformName} and super_leader=#{superLeader}
</select>
</mapper>

14
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java

@ -1,12 +1,9 @@
package com.easy.admin.modules.huzhou.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.easy.admin.common.api.vo.Result;
import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.easy.admin.modules.huzhou.vo.*;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
@ -188,9 +185,16 @@ public interface IHuzhouProjectinfoService extends IService<HuzhouProjectinfo> {
CountNumberOV countSupportingNumber();
FoundByTypeOV countStoragedFound();
FundByTypeOV countStoragedFound();
FundByTypeOV countSupportingFound();
IPage<ProjectSummaryOV> getProjectSummaryPage(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize);
IPage<ProjectSummaryOV> getProjectSummaryPageByTask(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize);
IPage<ProjectDetailOV> getProjectDetailPage(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize);
FoundByTypeOV countSupportingFound();
}

131
huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java

@ -21,6 +21,7 @@ import com.easy.admin.modules.huzhou.service.*;
import com.easy.admin.modules.huzhou.vo.*;
import com.easy.admin.sys.model.SysDict;
import com.easy.admin.sys.service.SysDictService;
import kotlin.collections.EmptyList;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
@ -44,6 +45,8 @@ import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.DoubleStream;
import java.util.stream.Stream;
@Service
@Transactional
@ -1282,17 +1285,17 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
return result;
}
public FoundByTypeOV countStoragedFound(){
FoundByTypeOV result = countFoundByType("1");
public FundByTypeOV countStoragedFound(){
FundByTypeOV result = countFoundByType("1");
return result;
}
public FoundByTypeOV countSupportingFound(){
FoundByTypeOV result = countFoundByType("2");
public FundByTypeOV countSupportingFound(){
FundByTypeOV result = countFoundByType("2");
return result;
}
public FoundByTypeOV countFoundByType(String type){
public FundByTypeOV countFoundByType(String type){
BigDecimal defVal = new BigDecimal("0.00");
BigDecimal totalAmount = new BigDecimal("0.00");
BigDecimal totalCentral = new BigDecimal("0.00");
@ -1317,7 +1320,7 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
totalCounty = totalMap != null ? totalMap.get("countyAcount") : defVal;
totalSelf = totalMap != null ? totalMap.get("selfAcount") : defVal;
}
FoundByTypeOV result=new FoundByTypeOV();
FundByTypeOV result=new FundByTypeOV();
result.setTotalMoney(totalAmount);
result.setTotalCentral(totalCentral);
result.setTotalProvincial(totalProvincial);
@ -1327,4 +1330,120 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM
return result;
}
public IPage<ProjectSummaryOV> getProjectSummaryPage(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize){
IPage<ProjectSummaryOV> result = new Page<>();
List<ProjectSummaryOV> records=new ArrayList<>();
//只要入库项目
projectInfo.setType("1");
ProjectInfoAuthSelect projectInfoAuthSelect = CommonUtils.setGetProjectInfoAuth(projectInfo);
Page page = new Page(1, 10000);
Page<HuzhouProjectinfoOV> projectAndChildInfoPageList = projectinfoMapper.getProjectAndChildInfoPageList(page, projectInfoAuthSelect);
Map<String, List<HuzhouProjectinfoOV>> projectsMap = projectAndChildInfoPageList.getRecords().stream().collect(Collectors.groupingBy(x -> x.getDutyWorkplace()));
for(Map.Entry<String, List<HuzhouProjectinfoOV>> entry : projectsMap.entrySet()){
ProjectSummaryOV projectSummary=new ProjectSummaryOV();
projectSummary.setDutyWorkplace(entry.getKey());
projectSummary.setProjectNum(entry.getValue().size());
List<Double> totalList = entry.getValue().stream().map(x->Optional.ofNullable(x.getTotalMoney()).orElse(0.00)).collect(Collectors.toList());
double total = totalList.isEmpty()? 0.00 : totalList.stream().reduce(0.00, Double::sum);
BigDecimal totalMoney = new BigDecimal(String.valueOf(total));
projectSummary.setTotalMoney(totalMoney);
List<Double> estimatedList = entry.getValue().stream().map(x->Optional.ofNullable(x.getUrtEstimatedAmount()).orElse(0.00)).collect(Collectors.toList());
Double estimate = estimatedList.isEmpty()? 0.00 : estimatedList.stream().reduce(0.00, Double::sum);
BigDecimal estimateMoney = new BigDecimal(String.valueOf(estimate));
projectSummary.setEstimateMoney(estimateMoney);
List<String> ids = entry.getValue().stream().map(x -> x.getId()).collect(Collectors.toList());
BigDecimal contractMoney=new BigDecimal("0");
BigDecimal contractCentralMoney=new BigDecimal("0");
if(!ids.isEmpty()){
Map<String, BigDecimal> moneyMap = projectinfoMapper.countMoneyByIds(ids);
if(moneyMap != null && moneyMap.isEmpty()){
contractMoney=Optional.ofNullable(moneyMap.get("contractMoney")).orElse(new BigDecimal("0"));
contractCentralMoney=Optional.ofNullable(moneyMap.get("contractCentralMoney")).orElse(new BigDecimal("0"));
}
projectSummary.setContractMoney(contractMoney);
projectSummary.setContractCentralMoney(contractCentralMoney);
}
ProjectProgressOV progress = this.getProgress(ids);
projectSummary.setProjectProgress(progress.getProjectProgress());
records.add(projectSummary);
}
//手动分页
int fromIndex = (pageNo - 1) * pageSize;
List<ProjectSummaryOV> currentPageData = records.subList(fromIndex, Math.min(fromIndex + pageSize, records.size()));
result.setSize(pageSize).setCurrent(pageNo).setRecords(currentPageData).setTotal(records.size());
return result;
}
public IPage<ProjectSummaryOV> getProjectSummaryPageByTask(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize){
IPage<ProjectSummaryOV> result = new Page<>();
//只要入库项目
projectInfo.setType("1");
ProjectInfoAuthSelect projectInfoAuthSelect = CommonUtils.setGetProjectInfoAuth(projectInfo);
Page page = new Page(1, 10000);
Page<HuzhouProjectinfoOV> projectAndChildInfoPageList = projectinfoMapper.getProjectAndChildInfoPageList(page, projectInfoAuthSelect);
List<String> ids = projectAndChildInfoPageList.getRecords().stream().map(x -> x.getId()).collect(Collectors.toList());
List<ProjectSummaryOV> projectSummaryPageList = projectinfoMapper.getProjectSummaryPageList(ids);
for(ProjectSummaryOV p:projectSummaryPageList){
List<String> projectIds = projectinfoMapper.getIds(p.getReformName(), p.getSuperLeader());
ProjectProgressOV progress = this.getProgress(projectIds);
p.setProjectProgress(progress.getProjectProgress());
}
//手动分页
int fromIndex = (pageNo - 1) * pageSize;
List<ProjectSummaryOV> currentPageData = projectSummaryPageList.subList(fromIndex, Math.min(fromIndex + pageSize, projectSummaryPageList.size()));
result.setSize(pageSize).setCurrent(pageNo).setRecords(currentPageData).setTotal(projectSummaryPageList.size());
return result;
}
public IPage<ProjectDetailOV> getProjectDetailPage(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize){
IPage<ProjectDetailOV> result = new Page<>();
List<ProjectDetailOV> records=new ArrayList<>();
//只要入库项目
projectInfo.setType("1");
projectInfo.setDutyWorkplace(projectInfo.getDutyWorkplace());
ProjectInfoAuthSelect projectInfoAuthSelect = CommonUtils.setGetProjectInfoAuth(projectInfo);
Page page = new Page(pageNo, pageSize);
Page<HuzhouProjectinfoOV> projectAndChildInfoPageList = projectinfoMapper.getProjectAndChildInfoPageList(page, projectInfoAuthSelect);
List<HuzhouProjectinfoOV> projectAndChildInfoList = projectAndChildInfoPageList.getRecords().stream().collect(Collectors.toList());
BigDecimal contractMoney=new BigDecimal("0");
BigDecimal contractCentralMoney=new BigDecimal("0");
for(HuzhouProjectinfoOV p:projectAndChildInfoList){
ProjectDetailOV projectDetail=new ProjectDetailOV();
BeanUtils.copyProperties(p,projectDetail);
Map<String, BigDecimal> moneyMap = projectinfoMapper.countMoneyById(p.getId());
if(moneyMap != null && !moneyMap.isEmpty()){
contractMoney=Optional.ofNullable(moneyMap.get("contractMoney")).orElse(new BigDecimal("0"));
contractCentralMoney=Optional.ofNullable(moneyMap.get("contractCentralMoney")).orElse(new BigDecimal("0"));
}
projectDetail.setContractMoney(contractMoney);
projectDetail.setContractCentralMoney(contractCentralMoney);
//当前阶段
LambdaQueryWrapper<HuzhouPlaninfo> query=new LambdaQueryWrapper<>();
query.eq(HuzhouPlaninfo::getProjectId,p.getId());
query.eq(HuzhouPlaninfo::getIsfinish,"2");
Map<String, HuzhouPlaninfo> planMap = planinfoService.list(query).stream().collect(Collectors.toMap(x -> x.getTaskLevel(), o -> o));
String taskName;
if(moneyMap != null && !moneyMap.isEmpty()){
List<String[]> splitList = planMap.keySet().stream().map(x -> x.split("\\.")).collect(Collectors.toList());
List<String[]> keyList = splitList.stream().filter(x -> x.length == 1).collect(Collectors.toList());
int max = keyList.stream().mapToInt(x -> Integer.parseInt(x[0])).summaryStatistics().getMax();
String key=String.valueOf(max);
taskName=planMap.get(key).getTaskName();
}else {
taskName="项目立项阶段";
}
projectDetail.setProjectStage(taskName);
// 进度
List<String> projectIds=new ArrayList<>();
projectIds.add(p.getId());
ProjectProgressOV progress = this.getProgress(projectIds);
projectDetail.setProjectProgress(progress.getProjectProgress());
records.add(projectDetail);
}
result.setCurrent(pageNo).setSize(pageSize).setRecords(records).setTotal(projectAndChildInfoPageList.getTotal());
return result;
}
}

2
huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/FoundByTypeOV.java → huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/FundByTypeOV.java

@ -6,7 +6,7 @@ import lombok.Data;
import java.math.BigDecimal;
@Data
public class FoundByTypeOV {
public class FundByTypeOV {
private BigDecimal totalMoney;
private BigDecimal totalCentral;

41
huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/ProjectDetailOV.java

@ -0,0 +1,41 @@
package com.easy.admin.modules.huzhou.vo;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ProjectDetailOV {
private String id;
private String projectName;
private String adminDivision;
private String dutyWorkplace;
private String workplaceProperties;
private String reformName;
private String superLeader;
private BigDecimal totalMoney;
private BigDecimal centralMoney;
private BigDecimal estimateMoney;
private BigDecimal contractMoney;
private BigDecimal contractCentralMoney;
private String projectStage;
private String projectProgress;
}

34
huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/ProjectSummaryOV.java

@ -0,0 +1,34 @@
package com.easy.admin.modules.huzhou.vo;
import io.swagger.v3.oas.models.security.SecurityScheme;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ProjectSummaryOV {
private String dutyWorkplace;
private String reformName;
private String superLeader;
private Integer projectNum;
private BigDecimal totalMoney;
private BigDecimal centralMoney;
private BigDecimal estimateMoney;
private BigDecimal contractMoney;
private BigDecimal contractCentralMoney;
private String projectProgress;
}
Loading…
Cancel
Save