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 ec3c94d..dede3f4 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 @@ -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 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 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 result = projectinfoService.getProjectDetailPage(projectinfo, pageNo, pageSize); 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 fc79c33..ec0634e 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 @@ -78,4 +78,14 @@ public interface HuzhouProjectinfoMapper extends BaseMapper { List getListByConditions(@Param("info") HuzhouProjectinfo info); PagegetUnitedTechnicalReviewList(Page page, @Param("info") ProjectInfoAuthSelect info); + + List getProjectSummaryPageList(@Param("projectIds") List projectIds); + + List listIdsByDutyWorkplace(@Param("dutyWorkplace") String dutyWorkplace); + + Map countMoneyByIds(@Param("projectIds") List projectIds); + + Map getMoneyById(@Param("projectId") String projectId); + + List getIds(@Param("reformName") String reformName,@Param("superLeader") String superLeader); } 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 1244887..2675a0a 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 @@ -78,6 +78,18 @@ + + + + + + + + + + + + (1=1 @@ -470,4 +482,48 @@ order by create_date desc order by subquery.create_date desc + + + + + + + + + + + + + + + + + + \ No newline at end of file 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 25f6ce4..5cb629d 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 @@ -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 { CountNumberOV countSupportingNumber(); - FoundByTypeOV countStoragedFound(); + FundByTypeOV countStoragedFound(); + + FundByTypeOV countSupportingFound(); + + IPage getProjectSummaryPage(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize); + + IPage getProjectSummaryPageByTask(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize); + + IPage getProjectDetailPage(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize); - FoundByTypeOV countSupportingFound(); } 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 16299a6..59e4ef2 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 @@ -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 getProjectSummaryPage(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize){ + IPage result = new Page<>(); + List records=new ArrayList<>(); + //只要入库项目 + projectInfo.setType("1"); + ProjectInfoAuthSelect projectInfoAuthSelect = CommonUtils.setGetProjectInfoAuth(projectInfo); + Page page = new Page(1, 10000); + Page projectAndChildInfoPageList = projectinfoMapper.getProjectAndChildInfoPageList(page, projectInfoAuthSelect); + Map> projectsMap = projectAndChildInfoPageList.getRecords().stream().collect(Collectors.groupingBy(x -> x.getDutyWorkplace())); + for(Map.Entry> entry : projectsMap.entrySet()){ + ProjectSummaryOV projectSummary=new ProjectSummaryOV(); + projectSummary.setDutyWorkplace(entry.getKey()); + projectSummary.setProjectNum(entry.getValue().size()); + List 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 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 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 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 currentPageData = records.subList(fromIndex, Math.min(fromIndex + pageSize, records.size())); + result.setSize(pageSize).setCurrent(pageNo).setRecords(currentPageData).setTotal(records.size()); + return result; + + + } + public IPage getProjectSummaryPageByTask(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize){ + IPage result = new Page<>(); + //只要入库项目 + projectInfo.setType("1"); + ProjectInfoAuthSelect projectInfoAuthSelect = CommonUtils.setGetProjectInfoAuth(projectInfo); + Page page = new Page(1, 10000); + Page projectAndChildInfoPageList = projectinfoMapper.getProjectAndChildInfoPageList(page, projectInfoAuthSelect); + List ids = projectAndChildInfoPageList.getRecords().stream().map(x -> x.getId()).collect(Collectors.toList()); + List projectSummaryPageList = projectinfoMapper.getProjectSummaryPageList(ids); + for(ProjectSummaryOV p:projectSummaryPageList){ + List projectIds = projectinfoMapper.getIds(p.getReformName(), p.getSuperLeader()); + ProjectProgressOV progress = this.getProgress(projectIds); + p.setProjectProgress(progress.getProjectProgress()); + } + //手动分页 + int fromIndex = (pageNo - 1) * pageSize; + List currentPageData = projectSummaryPageList.subList(fromIndex, Math.min(fromIndex + pageSize, projectSummaryPageList.size())); + result.setSize(pageSize).setCurrent(pageNo).setRecords(currentPageData).setTotal(projectSummaryPageList.size()); + return result; + } + public IPage getProjectDetailPage(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize){ + IPage result = new Page<>(); + List records=new ArrayList<>(); + //只要入库项目 + projectInfo.setType("1"); + projectInfo.setDutyWorkplace(projectInfo.getDutyWorkplace()); + ProjectInfoAuthSelect projectInfoAuthSelect = CommonUtils.setGetProjectInfoAuth(projectInfo); + Page page = new Page(pageNo, pageSize); + Page projectAndChildInfoPageList = projectinfoMapper.getProjectAndChildInfoPageList(page, projectInfoAuthSelect); + List 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 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 query=new LambdaQueryWrapper<>(); + query.eq(HuzhouPlaninfo::getProjectId,p.getId()); + query.eq(HuzhouPlaninfo::getIsfinish,"2"); + Map planMap = planinfoService.list(query).stream().collect(Collectors.toMap(x -> x.getTaskLevel(), o -> o)); + String taskName; + if(moneyMap != null && !moneyMap.isEmpty()){ + List splitList = planMap.keySet().stream().map(x -> x.split("\\.")).collect(Collectors.toList()); + List 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 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; + } + + } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/FoundByTypeOV.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/FundByTypeOV.java similarity index 91% rename from huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/FoundByTypeOV.java rename to huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/FundByTypeOV.java index 48ca416..3d8a242 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/FoundByTypeOV.java +++ b/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; diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/ProjectDetailOV.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/ProjectDetailOV.java new file mode 100644 index 0000000..83cafa8 --- /dev/null +++ b/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; + + + +} diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/ProjectSummaryOV.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/ProjectSummaryOV.java new file mode 100644 index 0000000..24cd226 --- /dev/null +++ b/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; + + + +}