diff --git a/hz-pm-api/pom.xml b/hz-pm-api/pom.xml index df2e4fc..4a792aa 100644 --- a/hz-pm-api/pom.xml +++ b/hz-pm-api/pom.xml @@ -247,6 +247,10 @@ cn.afterturn easypoi-base + + com.github.oshi + oshi-core + diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/App.java b/hz-pm-api/src/main/java/com/hz/pm/api/App.java index 9de6501..a9ff222 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/App.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/App.java @@ -1,7 +1,7 @@ package com.hz.pm.api; -import com.ningdatech.basic.util.SpringUtils; import com.hz.pm.api.common.util.SpringContextHolder; +import com.ningdatech.basic.util.SpringUtils; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/DeclaredRecordManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/DeclaredRecordManage.java index f09bb06..847d62a 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/DeclaredRecordManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/DeclaredRecordManage.java @@ -397,25 +397,31 @@ public class DeclaredRecordManage { ImportProjectFinanceInfosDTO financeInfo = new ImportProjectFinanceInfosDTO(); financeInfo.setProjectName(projectName); financeInfo.setUnitName(MapUtil.getStr(w, "单位名称")); + Assert.notBlank(financeInfo.getUnitName(), "单位名称不能为空"); financeInfo.setDeclareAmount(MapUtil.get(w, "合计", BigDecimal.class)); financeInfo.setDeclareHaveAmount(MapUtil.get(w, "其他资金", BigDecimal.class)); financeInfo.setDeclareGovOwnFinanceAmount(MapUtil.get(w, "市本级信息化专项资金", BigDecimal.class)); financeInfo.setDeclareGovSuperiorFinanceAmount(MapUtil.get(w, "上级补助资金", BigDecimal.class)); return financeInfo; }); + Map> groupByUnit = CollUtils.group(importDataList, ImportProjectFinanceInfosDTO::getUnitName); List projects = new ArrayList<>(); - for (ImportProjectFinanceInfosDTO importData : importDataList) { - String projectName = importData.getProjectName(); - Project project = projectService.getByProjectName(projectName); - if (project == null) { - log.warn("项目不存在:{}", projectName); + for (Map.Entry> entry : groupByUnit.entrySet()) { + if (entry.getValue().size() != 1) { + log.warn("单位存在多个项目:{}", entry.getKey()); continue; } - log.info("项目存在:{}", projectName); - project.setDeclareAmount(importData.getDeclareAmount()); - project.setDeclareGovOwnFinanceAmount(importData.getDeclareGovOwnFinanceAmount()); - project.setDeclareGovSuperiorFinanceAmount(importData.getDeclareGovSuperiorFinanceAmount()); - project.setDeclareHaveAmount(importData.getDeclareHaveAmount()); + Collection projectsTmp = listProjectsByUnitName(entry.getKey()); + if (projectsTmp.size() != 1) { + log.warn("单位存在多个项目:{}", entry.getKey()); + continue; + } + Project project = new ArrayList<>(projects).get(0); + ImportProjectFinanceInfosDTO importData = entry.getValue().get(0); + project.setApprovalAmount(importData.getDeclareAmount()); + project.setApprovalGovOwnFinanceAmount(importData.getDeclareGovOwnFinanceAmount()); + project.setApprovalGovSuperiorFinanceAmount(importData.getDeclareGovSuperiorFinanceAmount()); + project.setApprovalHaveAmount(importData.getDeclareHaveAmount()); projects.add(project); } if (projects.isEmpty()) { @@ -428,6 +434,13 @@ public class DeclaredRecordManage { } } + private Collection listProjectsByUnitName(String unitName) { + List projects = projectService.list(Wrappers.lambdaQuery(Project.class) + .eq(Project::getBuildOrgName, unitName)); + return BizUtils.groupFirst(projects, Project::getProjectCode, + Comparator.comparing(Project::getCreateOn).reversed()); + } + @Transactional(rollbackFor = Exception.class) public void importReplaceSystemInfos(MultipartFile file) { try (InputStream is = file.getInputStream()) { @@ -444,6 +457,7 @@ public class DeclaredRecordManage { importData.setSourceName(MapUtil.getStr(w, "替代前系统")); importData.setTargetName(MapUtil.getStr(w, "替代后系统")); importData.setUnitName(MapUtil.getStr(w, "单位")); + Assert.notBlank(importData.getUnitName(), "单位名称不能为空"); if (StrUtil.equals(importData.getReplaceType(), "/") || StrUtil.isBlank(importData.getReplaceType())) { importData.setReplaceType(null); @@ -455,15 +469,16 @@ public class DeclaredRecordManage { return importData; }); Map> groupByProject = CollUtils.group(importDataList, - ImportReplaceSystemInfosDTO::getProjectName); + ImportReplaceSystemInfosDTO::getUnitName); List projectIds = new ArrayList<>(); List replaceInfos = new ArrayList<>(); for (Map.Entry> entry : groupByProject.entrySet()) { - Project project = projectService.getByProjectName(entry.getKey()); - if (project == null) { - log.warn("项目不存在:{}", entry.getKey()); + Collection projects = listProjectsByUnitName(entry.getKey()); + if (projects.size() != 1) { + log.warn("单位存在多个项目:{}", entry.getKey()); continue; } + Project project = new ArrayList<>(projects).get(0); projectIds.add(project.getId()); Map batchNoMap = new HashMap<>(); AtomicInteger integer = new AtomicInteger(1); diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/dto/ProjectDTO.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/dto/ProjectDTO.java index 8e14e81..7c30e5d 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/dto/ProjectDTO.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/dto/ProjectDTO.java @@ -180,6 +180,18 @@ public class ProjectDTO { @ApiModelProperty("立项批复资金(万元)") private BigDecimal approvalAmount; + @ApiModelProperty("批复-自有金额(万元)") + @Compare("批复-自有金额") + private BigDecimal approvalHaveAmount; + + @ApiModelProperty("批复-政府投资-本级财政资金(万元)") + @Compare("批复-政府投资-本级财政资金") + private BigDecimal approvalGovOwnFinanceAmount; + + @ApiModelProperty("批复-政府投资-上级补助资金(万元)") + @Compare("批复-政府投资-上级补助资金") + private BigDecimal approvalGovSuperiorFinanceAmount; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime annualPlanAddTime; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/entity/Project.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/entity/Project.java index 59a9fb3..27fc4b0 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/entity/Project.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/entity/Project.java @@ -209,6 +209,20 @@ public class Project implements Serializable { @Compare("资金分配情况-第三方服务") private BigDecimal thirdPartyAmount; + //================================================================================================================== + + @ApiModelProperty("批复-自有金额(万元)") + @Compare("批复-自有金额") + private BigDecimal approvalHaveAmount; + + @ApiModelProperty("批复-政府投资-本级财政资金(万元)") + @Compare("批复-政府投资-本级财政资金") + private BigDecimal approvalGovOwnFinanceAmount; + + @ApiModelProperty("批复-政府投资-上级补助资金(万元)") + @Compare("批复-政府投资-上级补助资金") + private BigDecimal approvalGovSuperiorFinanceAmount; + @ApiModelProperty("立项批复总投资(万元)") @Compare("立项批复总投资") private BigDecimal approvalAmount; diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/ProjectDetailVO.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/ProjectDetailVO.java index ddfd1d7..cb8ac22 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/ProjectDetailVO.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/ProjectDetailVO.java @@ -558,4 +558,16 @@ public class ProjectDetailVO { @ApiModelProperty("政务信息系统改造情况") private List systemReplaceInfos; + @ApiModelProperty("批复-自有金额(万元)") + @Compare("批复-自有金额") + private BigDecimal approvalHaveAmount; + + @ApiModelProperty("批复-政府投资-本级财政资金(万元)") + @Compare("批复-政府投资-本级财政资金") + private BigDecimal approvalGovOwnFinanceAmount; + + @ApiModelProperty("批复-政府投资-上级补助资金(万元)") + @Compare("批复-政府投资-上级补助资金") + private BigDecimal approvalGovSuperiorFinanceAmount; + } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/user/manage/UserInfoManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/user/manage/UserInfoManage.java index 2bbac27..ce7a970 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/user/manage/UserInfoManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/user/manage/UserInfoManage.java @@ -1,6 +1,9 @@ package com.hz.pm.api.user.manage; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.StopWatch; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.system.oshi.OshiUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -37,7 +40,12 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; +import java.util.stream.LongStream; +import java.util.stream.Stream; /** * @author liuxinxin @@ -411,4 +419,30 @@ public class UserInfoManage { return userInfoHelper.getUserFullInfo(userInfo); } + public static void main(String[] args) { + int logicalProcessorCount = OshiUtil.getProcessor().getLogicalProcessorCount(); + int max = (int) Math.max(logicalProcessorCount * 0.25, 1); + ExecutorService fixedThreadPool = Executors.newFixedThreadPool(max); + final int limitCount = 1000000000; + while (true) { + if (System.currentTimeMillis() % 5000 == 0) { + double cpuUsage = OshiUtil.getCpuInfo().getUsed(); + System.out.println(cpuUsage); + if (cpuUsage < 40) { + fixedThreadPool.execute(() -> { + StopWatch watch = new StopWatch(); + watch.start(); + Long sum = Stream.generate(() -> RandomUtil.randomLong(1, limitCount)) + .map(w -> w + limitCount / w) + .limit(limitCount) + .collect(Collectors.summingLong(Long::longValue)); + watch.stop(); + System.out.println("总计:" + sum + " 耗时:" + watch.getTotal(TimeUnit.SECONDS)); + }); + } + } + } + + } + } diff --git a/pom.xml b/pom.xml index 7dc74bf..2ad2e4f 100644 --- a/pom.xml +++ b/pom.xml @@ -158,6 +158,11 @@ easypoi-base 4.4.0 + + com.github.oshi + oshi-core + 6.4.0 +