diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/ExportController.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/ExportController.java index 19936e7..880254a 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/ExportController.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/ExportController.java @@ -7,6 +7,7 @@ import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import com.easy.admin.common.api.vo.Result; import com.easy.admin.modules.huzhou.dao.ProjectScoreMapper; +import com.easy.admin.modules.huzhou.dto.ProjectInfoTempDTO; import com.easy.admin.modules.huzhou.dto.ProjectTimeOutInfoExportDTO; import com.easy.admin.modules.huzhou.dto.ProjectInfoExportDTO; import com.easy.admin.modules.huzhou.dto.ProjectResultExportDTO; @@ -251,4 +252,34 @@ public class ExportController { + + @GetMapping("/downloadTempInfo") + public void downloadTempInfo(HttpServletResponse response) throws IOException { + + // 封装数据 + List projectInfoList = projectinfoService.queryTempInfo(); + + List dtoList = projectInfoList.stream() + .map(projectInfo -> new ProjectInfoTempDTO(projectInfo.getProjectName(), + projectInfo.getCurrentPointName(), + projectInfo.getTotalCentralMoney(), + projectInfo.getTotalProvincialMoney(), + projectInfo.getHasSub())) + .collect(Collectors.toList()); + + + // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + String flag = "项目信息"; + // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 + LocalDate currentDate = LocalDate.now(); + System.out.println("当前日期: " + currentDate); + String fileName = URLEncoder.encode( flag+currentDate, "UTF-8") + .replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream(), ProjectInfoTempDTO.class) + .sheet("项目信息"+currentDate) + .doWrite(dtoList); + } } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouContractinfoMapper.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouContractinfoMapper.java index 15ca0ef..00a6168 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouContractinfoMapper.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/HuzhouContractinfoMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Mapper; import com.easy.admin.modules.huzhou.entity.HuzhouContractinfo; import com.easy.admin.modules.huzhou.vo.HuzhouContractinfoOV; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.math.BigDecimal; import java.util.List; @@ -30,4 +31,15 @@ public interface HuzhouContractinfoMapper extends BaseMapper List getSortedRealContracts(); int updateSortFlag(@Param("id") String id, @Param("sortFlag") int sortFlag); + + @Select("SELECT SUM(central_money) AS totalCentralMoney " + + "FROM huzhou_contractinfo " + + "WHERE project_id = #{projectId} AND flag = '实际'") + Double getTotalCentralMoneyByProjectId(@Param("projectId") String projectId); + + @Select("SELECT SUM(provincial_money) AS totalProvincialMoney " + + "FROM huzhou_contractinfo " + + "WHERE project_id = #{projectId} AND flag = '实际'") + Double getTotalProvincialMoneyByProjectId(@Param("projectId") String projectId); + } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/dto/ProjectInfoTempDTO.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/dto/ProjectInfoTempDTO.java new file mode 100644 index 0000000..e92a948 --- /dev/null +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/dto/ProjectInfoTempDTO.java @@ -0,0 +1,41 @@ +package com.easy.admin.modules.huzhou.dto; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.HeadStyle; +import com.easy.admin.modules.huzhou.converter.ReformNameConverter; +import com.easy.admin.modules.huzhou.converter.SuperLeaderConverter; +import lombok.Data; + +@HeadStyle(fillForegroundColor = 44) +@Data +public class ProjectInfoTempDTO { + + @ExcelProperty("项目名称") + private String projectName; + + @ExcelProperty("项目所处节点") + private String currentPointName; + + @ExcelProperty("中央资金(总)") + private Double totalCentralMoney; + + @ExcelProperty("省级资金(总)") + private Double totalProvincialMoney; + + @ExcelProperty("是否存在子项目") + private String hasSub; + + public ProjectInfoTempDTO(String projectName, + String currentPointName, + Double totalCentralMoney, + Double totalProvincialMoney, + String hasSub + ) { + this.projectName = projectName; + this.currentPointName = currentPointName; + this.totalCentralMoney = totalCentralMoney; + this.totalProvincialMoney = totalProvincialMoney; + this.hasSub = hasSub; + } +} \ 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 9f5c6d4..4877ef0 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 @@ -279,5 +279,22 @@ public class HuzhouProjectinfo extends BaseEntity { @TableField(exist = false) private Double superiorFundPayRateScore; + /** + * 中央资金(总) + */ + @TableField(exist = false) + private Double totalCentralMoney; + + /** + * 省级资金(总) + */ + @TableField(exist = false) + private Double totalProvincialMoney; + + /** + * 是否存在子项目 + */ + @TableField(exist = false) + private String hasSub; } 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 63284db..ced0985 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 @@ -252,5 +252,7 @@ public interface IHuzhouProjectinfoService extends IService { List querySubContractPaySituation(); List queryContractPaySituation(); + + List queryTempInfo(); } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java index 53bd799..067d13a 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouPlaninfofileServiceImpl.java @@ -682,8 +682,8 @@ public class HuzhouPlaninfofileServiceImpl extends ServiceImpl qw = new LambdaQueryWrapper<>(); qw.eq(HuzhouContractinfo::getProjectId, contractList.get(0).getProjectId()) - .eq(HuzhouContractinfo::getFlag, taskName.equals("合同签订") ? "计划" : "实际"); - + .eq(HuzhouContractinfo::getFlag, taskName.equals("合同签订") ? "计划" : "实际") + .eq(HuzhouContractinfo::getTaskName, taskName); // 3.查询数据库中符合条件的合同信息 List dbList = contractinfoService.list(qw); 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 7c93b3f..9605c5b 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 @@ -3093,6 +3093,69 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl queryTempInfo() { + // 获取所有项目信息 + List projectInfoList = this.list(); + // 根据用户角色权限过滤项目 + Page page = new Page(1, projectInfoList.size()); + HuzhouProjectinfo projectinfo = new HuzhouProjectinfo(); + projectinfo.setStage("4"); + ProjectInfoAuthSelect projectInfoAuthSelect = CommonUtils.setGetProjectInfoAuth(projectinfo); + + Page projectAndChildInfoPageList; + projectAndChildInfoPageList = projectinfoMapper.getProjectAndChildInfoPageList(page, projectInfoAuthSelect); + List records = projectAndChildInfoPageList.getRecords(); + List ids = records.stream() + .map(HuzhouProjectinfoOV::getId) + .collect(Collectors.toList()); + + + projectInfoList= projectInfoList.stream() + .filter(project -> !"-1".equals(project.getStage())) + .filter(project -> ids.contains(project.getId())) + .filter(project -> !"湖州市长兴县浙里健康e生省级试点应用建设项目".equals(project.getProjectName())) + .collect(Collectors.toList()); + + double totalCentralMoney = 0.0; + double totalProvincialMoney = 0.0; + for (HuzhouProjectinfo projectInfo : projectInfoList) { + String projectId = projectInfo.getId(); + // 1.获取当且任务所处的节点名称 + String currentPointName = planinfoMapper.getCurrentPointName(projectId); + projectInfo.setCurrentPointName(currentPointName); + + Double centralMoney = contractinfoMapper.getTotalCentralMoneyByProjectId(projectId); + totalCentralMoney = (centralMoney != null ? centralMoney : 0.0);; + Double provincialMoney = contractinfoMapper.getTotalProvincialMoneyByProjectId(projectId); + totalProvincialMoney = (provincialMoney != null ? provincialMoney : 0.0); + + Boolean flag = this.queryHasSubProject(projectId); + if (flag) { + projectInfo.setHasSub("是"); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(HuzhouSubProjectinfo::getProjectId, projectId); + List subProjects = subProjectinfoMapper.selectList(queryWrapper); + List subIds = subProjects.stream().map(HuzhouSubProjectinfo::getId).distinct().collect(Collectors.toList()); + for (String subId : subIds) { + Double subCentral = contractinfoMapper.getTotalCentralMoneyByProjectId(subId); + Double subProvincial = contractinfoMapper.getTotalProvincialMoneyByProjectId(subId); + + totalCentralMoney += (subCentral != null ? subCentral : 0.0); + totalProvincialMoney += (subProvincial != null ? subProvincial : 0.0); + } + + } + // 设置最终金额 + projectInfo.setTotalCentralMoney(totalCentralMoney); + projectInfo.setTotalProvincialMoney(totalProvincialMoney); + + } + + + return projectInfoList; + } + private void processProjectFundingRate(HuzhouProjectinfo projectInfo) { String projectId = projectInfo.getId(); @@ -3193,37 +3256,33 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl actualFunds = calculateActualFunds(projectId); + Double centralMoney = Optional + .ofNullable(actualFunds.get("centralMoney")) + .orElse(0.0); - // 安全获取实际资金,为 null 时默认 0.0 - Double centralMoney = Optional.ofNullable(actualFunds.get("centralMoney")).orElse(0.0); - Double provincialMoney = Optional.ofNullable(actualFunds.get("provincialMoney")).orElse(0.0); + Double provincialMoney = Optional + .ofNullable(actualFunds.get("provincialMoney")) + .orElse(0.0); // 合同总金额 和 实际支付总金额 BigDecimal totalContractAmount = new BigDecimal(Double.toString(contractCentralMoney + contractProvincialMoney)); BigDecimal totalActualPayment = new BigDecimal(Double.toString(centralMoney + provincialMoney)); - // 支付率初始化为 0.0 + // 初始支付率为 0 BigDecimal rate = BigDecimal.ZERO; // 只有在合同金额大于 0 的情况下才计算并设置上级资金支付率 @@ -3231,17 +3290,18 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl 上级资金支付率为: {}", projectName, percentRateStr); } }