From 54b38b7da2392ddf8e521d253700829af3938cbd Mon Sep 17 00:00:00 2001 From: gjh <1421wake> Date: Fri, 9 May 2025 14:12:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=9C=80=E6=B1=82=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E8=AF=84=E5=88=86=E4=BF=A1=E6=81=AF,=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E4=B8=8E=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../huzhou/controller/ExportController.java | 25 ++++++- .../huzhou/controller/TestController.java | 74 ++++--------------- .../huzhou/dao/ProjectScoreMapper.java | 19 +++++ .../huzhou/dto/ProjectInfoExportDTO.java | 28 ++++++- .../huzhou/entity/HuzhouProjectinfo.java | 15 ++++ .../modules/huzhou/entity/ProjectScore.java | 52 +++++++++++++ .../huzhou/listener/ProjectScoreListener.java | 61 +++++++++++++++ .../huzhou/service/ProjectScoreService.java | 16 ++++ .../impl/HuzhouProjectinfoServiceImpl.java | 19 ++++- .../service/impl/ProjectScoreServiceImpl.java | 29 ++++++++ 10 files changed, 273 insertions(+), 65 deletions(-) create mode 100644 huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/ProjectScoreMapper.java create mode 100644 huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/ProjectScore.java create mode 100644 huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ProjectScoreListener.java create mode 100644 huzhou/src/main/java/com/easy/admin/modules/huzhou/service/ProjectScoreService.java create mode 100644 huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/ProjectScoreServiceImpl.java 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 226baa6..2518923 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 @@ -11,10 +11,13 @@ import com.easy.admin.modules.huzhou.dto.ProjectInfoExportDTO; import com.easy.admin.modules.huzhou.dto.ProjectResultExportDTO; import com.easy.admin.modules.huzhou.entity.HuzhouProjectinfo; import com.easy.admin.modules.huzhou.entity.ProjectManager; +import com.easy.admin.modules.huzhou.entity.ProjectScore; import com.easy.admin.modules.huzhou.handler.CustomMergeStrategy; import com.easy.admin.modules.huzhou.listener.ProjectManagerListener; +import com.easy.admin.modules.huzhou.listener.ProjectScoreListener; import com.easy.admin.modules.huzhou.service.IHuzhouProjectinfoService; import com.easy.admin.modules.huzhou.service.ProjectManagerService; +import com.easy.admin.modules.huzhou.service.ProjectScoreService; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.VerticalAlignment; @@ -48,6 +51,10 @@ public class ExportController { @Resource private IHuzhouProjectinfoService projectinfoService; + @Resource + private ProjectScoreService projectScoreService; + + @PostMapping("/upload") public void upload(MultipartFile file, HttpServletResponse response) throws IOException { long t1 = System.currentTimeMillis(); @@ -108,7 +115,10 @@ public class ExportController { projectInfo.getCurrentStage(), projectInfo.getTotalPercent(), projectInfo.getSuperLeader(), - projectInfo.getReformName())) + projectInfo.getReformName(), + projectInfo.getScore(), + projectInfo.getRedFlagCount(), + projectInfo.getDetail())) .collect(Collectors.toList()); // for (HuzhouProjectinfoExportDTO huzhouProjectinfoExportDTO : dtoList) { @@ -216,4 +226,17 @@ public class ExportController { .sheet("项目成果") .doWrite(dtoList); } + + + @PostMapping("/uploadProjectScore") + public void uploadProjectScore(MultipartFile file, HttpServletResponse response) throws IOException { + long t1 = System.currentTimeMillis(); + + EasyExcel.read(file.getInputStream(), ProjectScore.class, new ProjectScoreListener(projectScoreService)).sheet().doRead(); + + response.setContentType("text/html;charset=utf8"); + long t2 = System.currentTimeMillis(); + response.getWriter().println("导入数据成功!,共用时:"+(t2-t1)); + log.info("导入项目评分数据成功! 共用时:{}ms",(t2-t1)); + } } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/TestController.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/TestController.java index 72a8872..92bda88 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/TestController.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/TestController.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.easy.admin.auth.model.SysUser; import com.easy.admin.common.api.vo.Result; import com.easy.admin.common.core.exception.EasyException; +import com.easy.admin.modules.huzhou.dao.HuzhouContractinfoMapper; import com.easy.admin.modules.huzhou.dao.HuzhouProjectinfoMoneyMapper; import com.easy.admin.modules.huzhou.dao.HuzhouSubProjectinfoMapper; import com.easy.admin.modules.huzhou.dto.FieldInfoDTO; @@ -54,6 +55,9 @@ public class TestController { @Autowired private HuzhouSubProjectinfoMapper subProjectinfoMapper; + @Autowired + private HuzhouContractinfoMapper contractinfoMapper; + @GetMapping("/getContractInfo") public Result getProjectContractInfo(String projectId,String taskName){ // 查询存在的问题:根据提交的合同信息去查询 用户提交的 taskName可能更改,只能根据projectId查询,查询的数据是 有两中Flag区分 @@ -214,70 +218,18 @@ public class TestController { - @GetMapping("/updateMoney") - public Result updateMoney(String fieldChangeGroupid){ - List fieldChangeList = fieldchangehistoryService.getFieldchangeByGroupid(fieldChangeGroupid); - String projectId = fieldChangeList.get(0).getProjectid(); - - List fieldInfoDTOList = new ArrayList<>(); - for (HuzhouFieldchangehistory item : fieldChangeList) { - FieldInfoDTO targetDemo = new FieldInfoDTO(item.getFieldValue(), item.getNewvalue()); - fieldInfoDTOList.add(targetDemo); - } - fieldInfoDTOList.forEach(item -> { - log.info("修改后的计划信息为{}-->{}",item.getFieldValue(),item.getNewvalue()); - }); - - // 初始化一个Map来存储所有的Money值 - Map moneyValues = new HashMap<>(); - List keys = Arrays.asList("totalMoney", "centralMoney", "provincialMoney", - "cityMoney", "countyMoney", "selfMoney", - "payamount2023Money", "payamount2024Money", - "payamount2025Money"); - keys.forEach(key -> moneyValues.put(key, null)); - // 使用Stream API进行处理 - Map finalMoneyValues = fieldInfoDTOList.stream() - .filter(item -> keys.contains(item.getFieldValue())) - .collect(Collectors.toMap( - FieldInfoDTO::getFieldValue, - FieldInfoDTO::getNewvalue - )); - // 更新moneyValues Map - moneyValues.putAll(finalMoneyValues); - moneyValues.forEach((key, value) -> log.info(key + ": " + value)); - HuzhouProjectinfo projectInfo = projectinfoService.getById(projectId); - log.info("projectInfo:{}",projectInfo); - if (null != projectInfo) { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(HuzhouProjectinfo::getId, projectId); - updateWrapper.set(HuzhouProjectinfo::getTotalMoney, finalMoneyValues.get("totalMoney")); - updateWrapper.set(HuzhouProjectinfo::getCentralMoney, finalMoneyValues.get("centralMoney")); - updateWrapper.set(HuzhouProjectinfo::getProvincialMoney, finalMoneyValues.get("provincialMoney")); - updateWrapper.set(HuzhouProjectinfo::getCityMoney,finalMoneyValues.get("cityMoney")); - updateWrapper.set(HuzhouProjectinfo::getCountyMoney, finalMoneyValues.get("countyMoney")); - updateWrapper.set(HuzhouProjectinfo::getSelfMoney, finalMoneyValues.get("selfMoney")); - updateWrapper.set(HuzhouProjectinfo::getPayamount2023Money, finalMoneyValues.get("payamount2023Money")); - updateWrapper.set(HuzhouProjectinfo::getPayamount2024Money, finalMoneyValues.get("payamount2024Money")); - updateWrapper.set(HuzhouProjectinfo::getPayamount2025Money, finalMoneyValues.get("payamount2025Money")); - projectinfoService.update(updateWrapper); - } else { - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.eq(HuzhouSubProjectinfo::getId, projectId); - updateWrapper.set(HuzhouSubProjectinfo::getTotalMoney, finalMoneyValues.get("totalMoney")); - updateWrapper.set(HuzhouSubProjectinfo::getCentralMoney, finalMoneyValues.get("centralMoney")); - updateWrapper.set(HuzhouSubProjectinfo::getProvincialMoney, finalMoneyValues.get("provincialMoney")); - updateWrapper.set(HuzhouSubProjectinfo::getCityMoney,finalMoneyValues.get("cityMoney")); - updateWrapper.set(HuzhouSubProjectinfo::getCountyMoney, finalMoneyValues.get("countyMoney")); - updateWrapper.set(HuzhouSubProjectinfo::getSelfMoney, finalMoneyValues.get("selfMoney")); - updateWrapper.set(HuzhouSubProjectinfo::getPayamount2023Money, finalMoneyValues.get("payamount2023Money")); - updateWrapper.set(HuzhouSubProjectinfo::getPayamount2024Money, finalMoneyValues.get("payamount2024Money")); - updateWrapper.set(HuzhouSubProjectinfo::getPayamount2025Money, finalMoneyValues.get("payamount2025Money")); - subProjectinfoMapper.update(null, updateWrapper); - } - return Result.OK("测试!"); + @GetMapping("/addContractMoney") + public Result addContractMoney(){ + HuzhouContractinfo add = new HuzhouContractinfo(); + add.setProjectId("1783670295257931778"); + add.setTaskName("首付支付"); + add.setFlag("实际"); + contractinfoMapper.insert(add); + return Result.OK("新增合同金额!"); } + } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/ProjectScoreMapper.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/ProjectScoreMapper.java new file mode 100644 index 0000000..e91f3b5 --- /dev/null +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/ProjectScoreMapper.java @@ -0,0 +1,19 @@ +package com.easy.admin.modules.huzhou.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.easy.admin.modules.huzhou.entity.ProjectScore; + + +/** +* @author gjh +* @description 针对表【project_score(项目评分信息)】的数据库操作Mapper +* @createDate 2025-05-09 11:12:04 +* @Entity generator.domain.ProjectScore +*/ +public interface ProjectScoreMapper extends BaseMapper { + +} + + + + diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/dto/ProjectInfoExportDTO.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/dto/ProjectInfoExportDTO.java index e06fb66..16a1c05 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/dto/ProjectInfoExportDTO.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/dto/ProjectInfoExportDTO.java @@ -1,5 +1,6 @@ package com.easy.admin.modules.huzhou.dto; +import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.format.NumberFormat; @@ -33,17 +34,42 @@ public class ProjectInfoExportDTO { @ExcelProperty("项目整体进度(%)") private String totalPercent; + + /** + * 总分 + */ + @ExcelProperty(value = "总分") + private String score; + + /** + * 红旗数量 + */ + @ExcelProperty(value = "红旗数量") + private String redFlagCount; + + /** + * 评分细则 + */ + @ExcelProperty(value = "评分细则") + private String detail; + public ProjectInfoExportDTO(String projectName, Double superiorFundPayRate, String currentStage, String totalPercent, String superLeader, - String reformName) { + String reformName, + String score, + String redFlagCount, + String detail) { this.projectName = projectName; this.superiorFundPayRate = superiorFundPayRate; this.currentStage = currentStage; this.totalPercent = totalPercent; this.superLeader = superLeader; this.reformName = reformName; + this.score = score; + this.redFlagCount = redFlagCount; + this.detail = detail; } } \ 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 68ae409..67a63f3 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 @@ -230,7 +230,22 @@ public class HuzhouProjectinfo extends BaseEntity { @TableField(exist = false) private Double uploadFileRate; + /** + * 评分 + */ + @TableField(exist = false) + private String score; + /** + * 红旗数量 + */ + @TableField(exist = false) + private String redFlagCount; + /** + * 评分细节 + */ + @TableField(exist = false) + private String detail; } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/ProjectScore.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/ProjectScore.java new file mode 100644 index 0000000..6caf029 --- /dev/null +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/ProjectScore.java @@ -0,0 +1,52 @@ +package com.easy.admin.modules.huzhou.entity; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * 项目评分信息 + * @TableName project_score + */ +@TableName(value ="project_score") +@Data +public class ProjectScore implements Serializable { + /** + * 唯一id + */ + @TableField(exist = false) + private Integer id; + + /** + * 项目名称 + */ + @ExcelProperty(value = "项目名称") + private String projectName; + + /** + * 总分 + */ + @ExcelProperty(value = "总分") + private String score; + + /** + * 红旗数量 + */ + @ExcelIgnore + private String redFlagCount; + + /** + * 评分细则 + */ + @ExcelIgnore + private String detail; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ProjectScoreListener.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ProjectScoreListener.java new file mode 100644 index 0000000..979fcc9 --- /dev/null +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/listener/ProjectScoreListener.java @@ -0,0 +1,61 @@ +package com.easy.admin.modules.huzhou.listener; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.listener.ReadListener; +import com.easy.admin.modules.huzhou.entity.ProjectScore; +import com.easy.admin.modules.huzhou.service.ProjectScoreService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.ArrayList; +import java.util.List; + +/** + * 自定义监听器读数据 + * @author gjh + */ +@Slf4j +public class ProjectScoreListener implements ReadListener { + + private List list = new ArrayList<>(); + /** + * 自己定义一个缓冲量 + */ + private static final int BATCH_COUNT = 20; + @Autowired + private ProjectScoreService projectScoreService; + + public ProjectScoreListener(ProjectScoreService projectScoreService) { + this.projectScoreService = projectScoreService; + } + + /** + * 每读一行数据都会调用这个方法 + * + * @param projectManager + * @param analysisContext + */ + @Override + public void invoke(ProjectScore projectManager, AnalysisContext analysisContext) { + // 读取一行数据就添加到集合 + list.add(projectManager); + // 判断是否到达缓存量了 + if (list.size() >= BATCH_COUNT){ + // 操作数据库 + projectScoreService.addData(list); + list = new ArrayList<>(BATCH_COUNT); + } + } + + /** + * 读完整个excel之后再调用这个方法 + * + * @param analysisContext + */ + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + if (list.size()>0){ + projectScoreService.addData(list); + } + } +} diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/ProjectScoreService.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/ProjectScoreService.java new file mode 100644 index 0000000..ba0b3ab --- /dev/null +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/ProjectScoreService.java @@ -0,0 +1,16 @@ +package com.easy.admin.modules.huzhou.service; + +import com.baomidou.mybatisplus.extension.service.IService; + +import com.easy.admin.modules.huzhou.entity.ProjectScore; + +import java.util.List; + +/** +* @author gjh +* @description 针对表【project_score(项目评分信息)】的数据库操作Service +* @createDate 2025-05-09 11:12:04 +*/ +public interface ProjectScoreService extends IService { + public void addData(List list); +} 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 9b9389e..15f8698 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 @@ -122,6 +122,9 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl projectInfoList = this.list(); + projectInfoList= projectInfoList.stream() + .filter(project -> !"-1".equals(project.getStage())) + .collect(Collectors.toList()); + // 创建线程池 int poolSize = Runtime.getRuntime().availableProcessors(); // 根据处理器数量设置线程池大小 @@ -2758,7 +2765,7 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl { String projectId = projectInfo.getId(); - + String projectName = projectInfo.getProjectName(); // 1.填充上级资金执行率 fillSuperiorFundPayRate(projectInfo); @@ -2778,7 +2785,15 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl projectScores = projectScoreMapper.selectList(null); + for (ProjectScore projectScore : projectScores) { + if (projectScore.getProjectName().equals(projectName)) { + projectInfo.setScore(projectScore.getScore()); + projectInfo.setRedFlagCount(projectScore.getRedFlagCount()); + projectInfo.setDetail(projectScore.getDetail()); + } + } return projectInfo; })); } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/ProjectScoreServiceImpl.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/ProjectScoreServiceImpl.java new file mode 100644 index 0000000..bf2417b --- /dev/null +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/ProjectScoreServiceImpl.java @@ -0,0 +1,29 @@ +package com.easy.admin.modules.huzhou.service.impl; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.easy.admin.modules.huzhou.dao.ProjectScoreMapper; +import com.easy.admin.modules.huzhou.entity.ProjectScore; +import com.easy.admin.modules.huzhou.service.ProjectScoreService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** +* @author gjh +* @description 针对表【project_score(项目评分信息)】的数据库操作Service实现 +* @createDate 2025-05-09 11:12:04 +*/ +@Service +public class ProjectScoreServiceImpl extends ServiceImpl + implements ProjectScoreService { + + @Override + public void addData(List list) { + this.saveBatch(list); + } +} + + + +