diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/gov/manage/GovProjectCollectionManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/gov/manage/GovProjectCollectionManage.java index 9765fc7..d8b5a93 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/gov/manage/GovProjectCollectionManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/gov/manage/GovProjectCollectionManage.java @@ -8,7 +8,6 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.hz.pm.api.common.helper.RegionCacheHelper; import com.hz.pm.api.common.model.constant.BizConst; @@ -29,10 +28,8 @@ import com.hz.pm.api.projectdeclared.model.entity.Purchase; import com.hz.pm.api.projectdeclared.service.IOperationService; import com.hz.pm.api.projectdeclared.service.IPreInsAcceptancePersonService; import com.hz.pm.api.projectdeclared.service.IPurchaseService; -import com.hz.pm.api.projectdeclared.utils.GenerateProjectCodeUtil; +import com.hz.pm.api.projectdeclared.utils.ProjectCodeGenUtil; import com.hz.pm.api.projectlib.model.entity.*; -import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeEnum; -import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum; import com.hz.pm.api.projectlib.model.req.ProjectListReq; import com.hz.pm.api.projectlib.service.*; import com.hz.pm.api.safety.model.entity.PersonSafetyInfo; @@ -106,7 +103,7 @@ public class GovProjectCollectionManage { private final IGovBizProjectProcureService procureService; - private final GenerateProjectCodeUtil generateProjectCodeUtil; + private final ProjectCodeGenUtil projectCodeGenUtil; private final IGovBizProjectDraftService draftService; @@ -682,7 +679,7 @@ public class GovProjectCollectionManage { //如果是新增的话 要生成 项目编号 if (StringUtils.isBlank(baseProjId) || DRAFT.equals(baseProjId)) { - baseProjId = generateProjectCodeUtil.generateProjectCode(req); + baseProjId = projectCodeGenUtil.generateProjectCode(req); saveBase.setBaseProjId(baseProjId); } @@ -882,7 +879,7 @@ public class GovProjectCollectionManage { //如果是新增的话 要生成 项目编号 if (StringUtils.isBlank(baseProjId) || DRAFT.equals(baseProjId)) { - baseProjId = generateProjectCodeUtil.generateProjectCode(saveDTO); + baseProjId = projectCodeGenUtil.generateProjectCode(saveDTO); saveBase.setBaseProjId(baseProjId); } @@ -1757,7 +1754,7 @@ public class GovProjectCollectionManage { GovBizProjectSaveDTO saveDTO = new GovBizProjectSaveDTO(); saveDTO.setApply(BeanUtil.copyProperties(apply, GovBizProjectApplyDTO.class)); saveDTO.setBaseinfo(BeanUtil.copyProperties(baseinfo, GovBizProjectBaseinfoDTO.class)); - String newProjId = generateProjectCodeUtil.generateProjectCode(saveDTO); + String newProjId = projectCodeGenUtil.generateProjectCode(saveDTO); baseinfo.setBaseProjId(newProjId); baseinfoService.updateById(baseinfo); @@ -1820,7 +1817,7 @@ public class GovProjectCollectionManage { GovOperationProjectSaveDTO saveDTO = new GovOperationProjectSaveDTO(); saveDTO.setApply(BeanUtil.copyProperties(apply, GovBizProjectApplyDTO.class)); saveDTO.setBaseinfo(BeanUtil.copyProperties(operationBase, GovOperationProjectBaseinfoDTO.class)); - String newProjId = generateProjectCodeUtil.generateProjectCode(saveDTO); + String newProjId = projectCodeGenUtil.generateProjectCode(saveDTO); operationBase.setBaseProjId(newProjId); operationProjectBaseinfoService.updateById(operationBase); diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/utils/GenerateProjectCodeUtil.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/utils/ProjectCodeGenUtil.java similarity index 70% rename from hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/utils/GenerateProjectCodeUtil.java rename to hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/utils/ProjectCodeGenUtil.java index c0426a3..5060e59 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/utils/GenerateProjectCodeUtil.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/utils/ProjectCodeGenUtil.java @@ -1,10 +1,9 @@ package com.hz.pm.api.projectdeclared.utils; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.ningdatech.basic.function.VUtils; import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.RegionConst; -import com.hz.pm.api.gov.contants.BizProjectContant; import com.hz.pm.api.gov.model.dto.*; import com.hz.pm.api.gov.model.entity.GovBizProjectBaseinfo; import com.hz.pm.api.gov.model.entity.GovOperationProjectBaseinfo; @@ -19,7 +18,7 @@ import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; -import java.time.LocalDateTime; +import java.time.LocalDate; import java.util.Objects; /** @@ -30,23 +29,19 @@ import java.util.Objects; */ @Component @RequiredArgsConstructor -public class GenerateProjectCodeUtil { +public class ProjectCodeGenUtil { private final IProjectService projectService; private final IGovBizProjectBaseinfoService baseinfoService; private final IGovOperationProjectBaseinfoService operationProjectBaseinfoService; public String generateProjectCode(ProjectDTO project) { - // 获取所属行政区划代码(9位) - // String areaCode = project.getAreaCode() + ProjectCodeContant.REGION_LAST_3; String areaCode = RegionConst.RC_HZ + ProjectCodeContant.REGION_LAST_3; // 获取建设年度 (10-13) String year = Objects.nonNull(project.getProjectYear()) ? String.valueOf(project.getProjectYear()) - : String.valueOf(LocalDateTime.now().getYear()); - // 14-15 项目类型 - String projectType = project.getProjectType(); + : String.valueOf(LocalDate.now().getYear()); // 16-20 项目序号00001 - String currentCode = areaCode + year + projectType; + String currentCode = areaCode + year; // 16-20 项目序号00001 //要查询 两边的项目序号 Long max = getMaxProjectCode(currentCode); @@ -56,15 +51,12 @@ public class GenerateProjectCodeUtil { public String generateProjectCode(ProjectCollection project) { // 获取所属行政区划代码(9位) - // String areaCode = project.getAreaCode() + ProjectCodeContant.REGION_LAST_3; String areaCode = RegionConst.RC_HZ + ProjectCodeContant.REGION_LAST_3; // 获取建设年度 (10-13) String year = Objects.nonNull(project.getProjectYear()) ? String.valueOf(project.getProjectYear()) - : String.valueOf(LocalDateTime.now().getYear()); - // 14-15 项目类型 - String projectType = ProjectCodeContant.PROJECT_TYPE_PREFIX + project.getProjectType(); + : String.valueOf(LocalDate.now().getYear()); // 16-20 项目序号00001 - String currentCode = areaCode + year + projectType; + String currentCode = areaCode + year; // 16-20 项目序号00001 //要查询 最大的项目编号 Long max = getMaxProjectCode(currentCode); @@ -75,20 +67,15 @@ public class GenerateProjectCodeUtil { public String generateProjectCode(GovBizProjectSaveDTO dto) { // 获取所属行政区划代码(9位) GovBizProjectBaseinfoDTO baseinfo = dto.getBaseinfo(); + Assert.notNull(baseinfo, "没有项目基本信息 无法生成项目编号!"); GovBizProjectApplyDTO apply = dto.getApply(); + Assert.notNull(apply, "没有项目申报信息 无法生成项目编号!"); - VUtils.isTrue(Objects.isNull(baseinfo)).throwMessage("没有项目基本信息 无法生成项目编号!"); - VUtils.isTrue(Objects.isNull(apply)).throwMessage("没有项目申报信息 无法生成项目编号!"); - - // String areaCode = (StringUtils.isNotBlank(baseinfo.getBaseAreaCode()) ? baseinfo.getBaseAreaCode() : RegionConst.RC_HZ + BizConst.NINE_AREA_CODE_LAST); String areaCode = RegionConst.RC_HZ + BizConst.NINE_AREA_CODE_LAST; // 获取建设年度 (10-13) String year = Objects.nonNull(apply.getBaseProjSetYear()) ? apply.getBaseProjSetYear() - : String.valueOf(LocalDateTime.now().getYear()); - // 14-15 项目类型 - String projectType = StringUtils.isNotBlank(baseinfo.getBaseProjType()) ? baseinfo.getBaseProjType() : - BizProjectContant.ProjectCollection.IS_EFFECTIVE; - String currentCode = areaCode + year + projectType; + : String.valueOf(LocalDate.now().getYear()); + String currentCode = areaCode + year; // 16-20 项目序号00001 //要查询 最大的项目编号 Long max = getMaxProjectCode(currentCode); @@ -99,20 +86,15 @@ public class GenerateProjectCodeUtil { public String generateProjectCode(GovOperationProjectSaveDTO dto) { // 获取所属行政区划代码(9位) GovOperationProjectBaseinfoDTO baseinfo = dto.getBaseinfo(); + Assert.notNull(baseinfo, "没有项目基本信息 无法生成项目编号!"); GovBizProjectApplyDTO apply = dto.getApply(); + Assert.notNull(apply, "没有项目申报信息 无法生成项目编号!"); - VUtils.isTrue(Objects.isNull(baseinfo)).throwMessage("没有项目基本信息 无法生成项目编号!"); - VUtils.isTrue(Objects.isNull(apply)).throwMessage("没有项目申报信息 无法生成项目编号!"); - - // String areaCode = (StringUtils.isNotBlank(baseinfo.getBaseAreaCode()) ? baseinfo.getBaseAreaCode() : RegionConst.RC_HZ + BizConst.NINE_AREA_CODE_LAST); String areaCode = RegionConst.RC_HZ + BizConst.NINE_AREA_CODE_LAST; // 获取建设年度 (10-13) String year = Objects.nonNull(apply.getBaseProjSetYear()) ? apply.getBaseProjSetYear() - : String.valueOf(LocalDateTime.now().getYear()); - // 14-15 项目类型 - String projectType = StringUtils.isNotBlank(baseinfo.getBaseProjType()) ? baseinfo.getBaseProjType() : - BizProjectContant.ProjectCollection.IS_EFFECTIVE; - String currentCode = areaCode + year + projectType; + : String.valueOf(LocalDate.now().getYear()); + String currentCode = areaCode + year; // 16-20 项目序号00001 //要查询 最大的项目编号 Long max = getMaxProjectCode(currentCode); @@ -120,7 +102,7 @@ public class GenerateProjectCodeUtil { return currentCode + String.format(ProjectCodeContant.SHUZI_5, max); } - private Long getMaxProjectCode(String currentCode) { + private synchronized Long getMaxProjectCode(String currentCode) { long max = 0L; GovBizProjectBaseinfo baseMax = baseinfoService.getOne(Wrappers.lambdaQuery(GovBizProjectBaseinfo.class) .like(GovBizProjectBaseinfo::getBaseProjId, currentCode) @@ -148,4 +130,5 @@ public class GenerateProjectCodeUtil { max = max + 1; return max; } + } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/controller/MhProjectController.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/controller/MhProjectController.java index d860237..8bbd814 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/controller/MhProjectController.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/controller/MhProjectController.java @@ -10,6 +10,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid; @@ -53,5 +54,20 @@ public class MhProjectController { declaredRecordManage.restartDeclaredRecord(req); } + @ApiOperation("初始化信产项目至项目库") + @GetMapping("/initProjectLib") + public void initMhProjectToProjectLib() { + declaredRecordManage.initMhProjectToProject(); + } + + @GetMapping("/importReplaceSystemInfos") + public void importReplaceSystemInfos(MultipartFile file) { + declaredRecordManage.importReplaceSystemInfos(file); + } + + @GetMapping("/importProjectFinanceInfos") + public void importProjectFinanceInfos(MultipartFile file) { + declaredRecordManage.importProjectFinanceInfos(file); + } } 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 3494c4d..77fee4a 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 @@ -1,9 +1,13 @@ package com.hz.pm.api.projectlib.manage; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.lang.Assert; +import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.poi.excel.ExcelUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -19,19 +23,21 @@ import com.hz.pm.api.projectdeclared.manage.DefaultDeclaredProjectManage; import com.hz.pm.api.projectdeclared.model.dto.DefaultDeclaredDTO; import com.hz.pm.api.projectdeclared.model.dto.ProjectConditionDTO; import com.hz.pm.api.projectdeclared.service.IProjectDraftService; +import com.hz.pm.api.projectdeclared.utils.ProjectCodeGenUtil; +import com.hz.pm.api.projectlib.entity.ProjectGovSystemReplaceInfos; +import com.hz.pm.api.projectlib.model.dto.ImportProjectFinanceInfosDTO; +import com.hz.pm.api.projectlib.model.dto.ImportReplaceSystemInfosDTO; import com.hz.pm.api.projectlib.model.dto.ProjectDTO; import com.hz.pm.api.projectlib.model.entity.MhProject; import com.hz.pm.api.projectlib.model.entity.MhProjectSchemaTargetData; import com.hz.pm.api.projectlib.model.entity.Project; import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange; +import com.hz.pm.api.projectlib.model.enumeration.GovSystemReplaceTypeEnum; import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; import com.hz.pm.api.projectlib.model.req.DeclaredProjectListReq; import com.hz.pm.api.projectlib.model.vo.DeclaredProjectListVO; import com.hz.pm.api.projectlib.model.vo.MhProjectBaseInfoVO; -import com.hz.pm.api.projectlib.service.IMhProjectSchemaTargetDataService; -import com.hz.pm.api.projectlib.service.IMhProjectService; -import com.hz.pm.api.projectlib.service.INdProjectStatusChangeService; -import com.hz.pm.api.projectlib.service.IProjectService; +import com.hz.pm.api.projectlib.service.*; import com.hz.pm.api.staging.enums.MsgTypeEnum; import com.hz.pm.api.sys.manage.NoticeManage; import com.hz.pm.api.todocenter.constant.WorkNoticeConst; @@ -53,9 +59,13 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; +import java.io.InputStream; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -71,6 +81,7 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class DeclaredRecordManage { + private final ProjectCodeGenUtil projectCodeGenUtil; private final IMhProjectService mhProjectService; private final IMhProjectSchemaTargetDataService schemaTargetDataService; private final IProjectService projectService; @@ -82,6 +93,7 @@ public class DeclaredRecordManage { private final ProcessInstanceService processInstanceService; private final ProjectLibManage projectLibManage; private final INdProjectStatusChangeService projectStatusChangeService; + private final IProjectGovSystemReplaceInfosService systemReplaceInfosService; private LambdaQueryWrapper buildQuery(DeclaredProjectListReq req) { LambdaQueryWrapper query = Wrappers.lambdaQuery(MhProject.class) @@ -337,5 +349,133 @@ public class DeclaredRecordManage { projectStatusChangeService.save(change); } + @Transactional(rollbackFor = Exception.class) + public synchronized void initMhProjectToProject() { + Wrapper query = Wrappers.lambdaQuery(MhProject.class) + .isNotNull(MhProject::getProjectCode); + List mhProjects = mhProjectService.list(query); + if (mhProjects.isEmpty()) { + return; + } + for (MhProject mhProject : mhProjects) { + if (StrUtil.isNotBlank(mhProject.getProjectCode())) { + continue; + } + LocalDateTime now = LocalDateTime.now(); + Project project = new Project(); + project.setProjectName(mhProject.getProjectName()); + project.setBuildOrgCode(String.valueOf(mhProject.getUnitId())); + project.setBuildOrgName(mhProject.getUnitName()); + project.setUnitStrip(mhProject.getUnitStrip()); + project.setVersion(0); + project.setNewest(Boolean.TRUE); + project.setStatus(ProjectStatusEnum.DECLARED_APPROVED_TO_BE_RECORD.getCode()); + project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); + ProjectDTO tmpProject = BeanUtil.copyProperties(project, ProjectDTO.class); + String projectCode = projectCodeGenUtil.generateProjectCode(tmpProject); + project.setProjectCode(projectCode); + project.setCreateOn(now); + project.setCreateBy(0L); + project.setUpdateOn(now); + project.setUpdateBy(0L); + projectService.save(project); + mhProjectService.update(Wrappers.lambdaUpdate(MhProject.class) + .set(MhProject::getProjectCode, projectCode) + .eq(MhProject::getId, mhProject.getId())); + } + } + + public void importProjectFinanceInfos(MultipartFile file) { + try (InputStream is = file.getInputStream()) { + List> rows = ExcelUtil.getReader(is).readAll(); + if (rows.isEmpty()) { + return; + } + List importDataList = CollUtils.fieldList(rows, w -> { + String projectName = MapUtil.getStr(w, "项目名称"); + Assert.notBlank(projectName, "项目名称不能为空"); + ImportProjectFinanceInfosDTO financeInfo = new ImportProjectFinanceInfosDTO(); + financeInfo.setProjectName(projectName); + financeInfo.setUnitName(MapUtil.getStr(w, "单位名称")); + 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; + }); + List projects = new ArrayList<>(); + for (ImportProjectFinanceInfosDTO importData : importDataList) { + Project project = projectService.getByProjectName(importData.getProjectName()); + Assert.notNull(project, "项目不存在:%s", importData.getProjectName()); + project.setDeclareAmount(importData.getDeclareAmount()); + project.setDeclareGovOwnFinanceAmount(importData.getDeclareGovOwnFinanceAmount()); + project.setDeclareGovSuperiorFinanceAmount(importData.getDeclareGovSuperiorFinanceAmount()); + project.setDeclareHaveAmount(importData.getDeclareHaveAmount()); + projects.add(project); + } + projectService.updateBatchById(projects); + } catch (Exception e) { + log.info("读取数据失败:", e); + throw new BizException(e); + } + } + + @Transactional(rollbackFor = Exception.class) + public void importReplaceSystemInfos(MultipartFile file) { + try (InputStream is = file.getInputStream()) { + List> rows = ExcelUtil.getReader(is) + .readAll(); + if (rows.isEmpty()) { + return; + } + List importDataList = CollUtils.convert(rows, w -> { + ImportReplaceSystemInfosDTO importData = new ImportReplaceSystemInfosDTO(); + importData.setProjectName(MapUtil.getStr(w, "项目名称")); + Assert.notBlank(importData.getProjectName(), "项目名称不能为空"); + importData.setReplaceType(MapUtil.getStr(w, "替代方式")); + importData.setSourceName(MapUtil.getStr(w, "替代前系统")); + importData.setTargetName(MapUtil.getStr(w, "替代后系统")); + importData.setUnitName(MapUtil.getStr(w, "单位")); + if (StrUtil.equals(importData.getReplaceType(), "/") + || StrUtil.isBlank(importData.getReplaceType())) { + importData.setReplaceType(null); + } else { + GovSystemReplaceTypeEnum typeEnum = GovSystemReplaceTypeEnum.getByVal(importData.getReplaceType()) + .orElseThrow(() -> BizException.wrap("替代方式无效:%s", importData.getReplaceType())); + importData.setReplaceTypeCode(typeEnum.getCode()); + } + return importData; + }); + Map> groupByProject = CollUtils.group(importDataList, + ImportReplaceSystemInfosDTO::getProjectName); + List projectIds = new ArrayList<>(); + List replaceInfos = new ArrayList<>(); + for (Map.Entry> entry : groupByProject.entrySet()) { + Project project = projectService.getByProjectName(entry.getKey()); + Assert.notNull(project, "项目不存在:%s", entry.getKey()); + projectIds.add(project.getId()); + Map batchNoMap = new HashMap<>(); + AtomicInteger integer = new AtomicInteger(1); + for (ImportReplaceSystemInfosDTO w : entry.getValue()) { + Integer batchNo = batchNoMap.computeIfAbsent(w.getTargetName(), + k -> integer.getAndIncrement()); + ProjectGovSystemReplaceInfos replaceInfo = new ProjectGovSystemReplaceInfos(); + replaceInfo.setProjectId(project.getId()); + Integer typeCode = w.getReplaceTypeCode(); + replaceInfo.setReplaceType(typeCode == null ? "/" : typeCode.toString()); + replaceInfo.setBatchNo(batchNo); + replaceInfo.setSourceSystem(w.getSourceName()); + replaceInfo.setTargetSystem(w.getTargetName()); + replaceInfos.add(replaceInfo); + } + } + systemReplaceInfosService.removeByProjectIds(projectIds); + systemReplaceInfosService.saveBatch(replaceInfos); + } catch (Exception e) { + log.info("读取数据失败:", e); + throw new BizException(e); + } + } + } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectCollectionManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectCollectionManage.java index 646c1db..a1e4e40 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectCollectionManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectCollectionManage.java @@ -8,13 +8,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.RegionConst; import com.hz.pm.api.common.helper.RegionCacheHelper; -import com.hz.pm.api.projectdeclared.utils.GenerateProjectCodeUtil; +import com.hz.pm.api.projectdeclared.utils.ProjectCodeGenUtil; import com.hz.pm.api.projectlib.model.dto.ProjectCollectionSaveDTO; import com.hz.pm.api.projectlib.model.entity.ProjectCollection; import com.hz.pm.api.projectlib.model.req.ProjectListReq; import com.hz.pm.api.projectlib.model.vo.ProjectCollectionVO; import com.hz.pm.api.projectlib.service.IProjectCollectionService; -import com.hz.pm.api.sys.model.dto.RegionDTO; import com.hz.pm.api.user.security.model.UserInfoDetails; import com.hz.pm.api.user.util.LoginUserUtil; import com.ningdatech.basic.function.VUtils; @@ -44,7 +43,7 @@ public class ProjectCollectionManage { private final RegionCacheHelper regionCacheHelper; - private final GenerateProjectCodeUtil generateProjectCodeUtil; + private final ProjectCodeGenUtil projectCodeGenUtil; /** * 项目归集 @@ -110,7 +109,7 @@ public class ProjectCollectionManage { VUtils.isTrue(Objects.isNull(old)).throwMessage("该项目归集不存在!"); projectCollection.setId(dto.getId()); } else { - projectCollection.setProjectCode(generateProjectCodeUtil.generateProjectCode(projectCollection)); + projectCollection.setProjectCode(projectCodeGenUtil.generateProjectCode(projectCollection)); projectCollection.setCreateBy(user.getUsername()); projectCollection.setCreateOn(LocalDateTime.now()); } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectLibManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectLibManage.java index 5ebd4fa..1c42e84 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectLibManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectLibManage.java @@ -22,6 +22,7 @@ import com.hz.pm.api.common.model.entity.ExcelExportWriter; import com.hz.pm.api.common.statemachine.util.StateMachineUtil; import com.hz.pm.api.common.util.BizUtils; import com.hz.pm.api.common.util.ExcelDownUtil; +import com.hz.pm.api.common.util.StrUtils; import com.hz.pm.api.dashboard.handle.ApplicationHandler; import com.hz.pm.api.datascope.model.DataScopeDTO; import com.hz.pm.api.datascope.utils.DataScopeUtil; @@ -49,7 +50,7 @@ import com.hz.pm.api.projectdeclared.model.vo.*; import com.hz.pm.api.projectdeclared.service.IOperationService; import com.hz.pm.api.projectdeclared.service.IPreInsAcceptancePersonService; import com.hz.pm.api.projectdeclared.service.IPurchaseService; -import com.hz.pm.api.projectdeclared.utils.GenerateProjectCodeUtil; +import com.hz.pm.api.projectdeclared.utils.ProjectCodeGenUtil; import com.hz.pm.api.projectlib.entity.ProjectGovSystemReplaceInfos; import com.hz.pm.api.projectlib.handle.ProcessExecuteChainHandle; import com.hz.pm.api.projectlib.helper.ProjectHelper; @@ -125,7 +126,7 @@ public class ProjectLibManage { private final ProcessExecuteChainHandle processExecuteHandle; private final FileService fileService; private final IProjectApplicationService projectApplicationService; - private final GenerateProjectCodeUtil generateProjectCodeUtil; + private final ProjectCodeGenUtil projectCodeGenUtil; private final IProjectInstService projectInstService; private final StateMachineUtil stateMachineUtil; private final INdProjectDelayApplyService projectDelayApplyService; @@ -701,10 +702,12 @@ public class ProjectLibManage { } vo.setSystemReplaceInfos(getGovSystemReplaceInfos(project.getId())); //审批信息 - ProcessDetailReq req = new ProcessDetailReq(); - req.setInstanceId(project.getInstCode()); - req.setProjectId(project.getId()); - vo.setProcess(todoService.getProcessDetail(req)); + if (StrUtils.isNotBlank(project.getInstCode())) { + ProcessDetailReq req = new ProcessDetailReq(); + req.setInstanceId(project.getInstCode()); + req.setProjectId(project.getId()); + vo.setProcess(todoService.getProcessDetail(req)); + } List allVersionProjectIds = projectService.allVersionProjectIds(projectCode); // 查询采购备案 @@ -883,7 +886,7 @@ public class ProjectLibManage { project.setStatus(status.getCode()); project.setInstCode(instanceId); project.setSponsor(String.valueOf(userId)); - String projectCode = generateProjectCodeUtil.generateProjectCode(projectDto); + String projectCode = projectCodeGenUtil.generateProjectCode(projectDto); project.setProjectCode(projectCode); if (projectService.save(project)) { saveApplication(projectDto, project, null); diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/dto/ImportProjectFinanceInfosDTO.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/dto/ImportProjectFinanceInfosDTO.java new file mode 100644 index 0000000..28262b9 --- /dev/null +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/dto/ImportProjectFinanceInfosDTO.java @@ -0,0 +1,50 @@ +package com.hz.pm.api.projectlib.model.dto; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + *

+ * ImportReplaceSystemInfosDTO + *

+ * + * @author WendyYang + * @since 16:01 2024/3/2 + */ +@Data +public class ImportProjectFinanceInfosDTO { + + /** + * 单位名称 + */ + + private String unitName; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 合计 + */ + private BigDecimal declareAmount; + + /** + * 其他资金 + */ + private BigDecimal declareHaveAmount; + + /** + * 市本级信息化专项资金 + */ + private BigDecimal declareGovOwnFinanceAmount; + + /** + * 上级补助资金 + */ + private BigDecimal declareGovSuperiorFinanceAmount; + + +} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/dto/ImportReplaceSystemInfosDTO.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/dto/ImportReplaceSystemInfosDTO.java new file mode 100644 index 0000000..f14141b --- /dev/null +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/dto/ImportReplaceSystemInfosDTO.java @@ -0,0 +1,28 @@ +package com.hz.pm.api.projectlib.model.dto; + +import lombok.Data; + +/** + *

+ * ImportReplaceSystemInfosDTO + *

+ * + * @author WendyYang + * @since 16:01 2024/3/2 + */ +@Data +public class ImportReplaceSystemInfosDTO { + + private String unitName; + + private String sourceName; + + private String replaceType; + + private String targetName; + + private String projectName; + + private Integer replaceTypeCode; + +} diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/GovSystemReplaceTypeEnum.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/GovSystemReplaceTypeEnum.java index 0808f71..85b5903 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/GovSystemReplaceTypeEnum.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/GovSystemReplaceTypeEnum.java @@ -41,6 +41,12 @@ public enum GovSystemReplaceTypeEnum { .findFirst(); } + public static Optional getByVal(String val) { + return Arrays.stream(values()) + .filter(w -> w.getVal().equals(val)) + .findFirst(); + } + public static String getVal(Integer code) { return get(code) .flatMap(w -> Optional.of(w.getVal())) diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/IProjectGovSystemReplaceInfosService.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/IProjectGovSystemReplaceInfosService.java index 5520551..b93b580 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/IProjectGovSystemReplaceInfosService.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/IProjectGovSystemReplaceInfosService.java @@ -1,11 +1,15 @@ package com.hz.pm.api.projectlib.service; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.hz.pm.api.projectlib.entity.ProjectGovSystemReplaceInfos; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; + /** *

- * 服务类 + * 服务类 *

* * @author WendyYang @@ -13,4 +17,11 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface IProjectGovSystemReplaceInfosService extends IService { + default void removeByProjectIds(Collection projectIds) { + LambdaQueryWrapper query = Wrappers + .lambdaQuery(ProjectGovSystemReplaceInfos.class) + .in(ProjectGovSystemReplaceInfos::getProjectId, projectIds); + remove(query); + } + } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/IProjectService.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/IProjectService.java index 5e532ef..aa22cee 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/IProjectService.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/IProjectService.java @@ -74,4 +74,12 @@ public interface IProjectService extends IService { return list(query); } + default Project getByProjectName(String projectName) { + LambdaQueryWrapper query = Wrappers.lambdaQuery(Project.class) + .eq(Project::getProjectName, projectName) + .orderByDesc(Project::getVersion) + .last(BizConst.LIMIT_1); + return getOne(query); + } + }