From bee0d39f851d008baf471095a68c006d4cf498b9 Mon Sep 17 00:00:00 2001 From: WendyYang Date: Wed, 28 Feb 2024 23:39:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=8A=E4=BC=A0=E5=88=9D?= =?UTF-8?q?=E9=AA=8C=E6=9D=90=E6=96=99=E7=8A=B6=E6=80=81=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event/TenderStatusChangeEvent.java | 4 +-- .../controller/ConstructionController.java | 3 +- .../controller/DeclaredProjectController.java | 4 +-- .../projectdeclared/manage/ConstructionManage.java | 39 +++++++++++++--------- .../manage/DeclaredProjectManage.java | 10 +++--- .../manage/FinalAcceptanceManage.java | 14 ++++++-- .../api/projectdeclared/model/entity/Purchase.java | 25 +++++++------- .../model/req/SubmitPurchaseNoticeReq.java | 10 ++++++ .../projectdeclared/model/req/XcfhxApplyReq.java | 5 +++ .../projectdeclared/service/IPurchaseService.java | 7 ++-- .../hz/pm/api/todocenter/manage/HandlerManage.java | 6 ++-- 11 files changed, 81 insertions(+), 46 deletions(-) diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/event/TenderStatusChangeEvent.java b/hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/event/TenderStatusChangeEvent.java index aa19110..4640242 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/event/TenderStatusChangeEvent.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/event/TenderStatusChangeEvent.java @@ -52,11 +52,11 @@ public enum TenderStatusChangeEvent { /** * 终验申报重新提交 */ - RESUBMIT_FINALLY_INSPECTED(402, null, null), + RESUBMIT_FINALLY_INSPECTED(502, null, null), /** * 终验申报通过 */ - FINALLY_INSPECTED_PASSED(502, null, null), + FINALLY_INSPECTED_PASSED(501, null, null), /** * 终验申报拒绝 */ diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/ConstructionController.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/ConstructionController.java index 019158d..58211bb 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/ConstructionController.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/ConstructionController.java @@ -21,6 +21,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; import java.util.List; /** @@ -106,7 +107,7 @@ public class ConstructionController { @ApiOperation("信创符合性申请") @WebLog("信创符合性申请") @PostMapping("/submitXcfhxApply") - public void submitXcfhxApply(@RequestBody XcfhxApplyReq req) { + public void submitXcfhxApply(@RequestBody @Valid XcfhxApplyReq req) { constructionManage.submitXcfhxApply(req); } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/DeclaredProjectController.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/DeclaredProjectController.java index 91cc12f..6bd6f17 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/DeclaredProjectController.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/DeclaredProjectController.java @@ -78,14 +78,14 @@ public class DeclaredProjectController { @WebLog("申报项目保存至草稿箱") @PostMapping("/save-to-draft") public Object saveToDraft(@Validated @RequestBody ProjectDraftSaveDTO dto) { - return declaredProjectManage.saveToDraft(dto, ProjectDraftTypeEnum.PROJECT_DECLARED.getCode()); + return declaredProjectManage.saveToDraft(dto, ProjectDraftTypeEnum.PROJECT_DECLARED); } @ApiOperation(value = "立项备案保存至草稿箱", notes = "立项备案保存至草稿箱") @WebLog("立项备案保存至草稿箱") @PostMapping("/declaredRecord/save-to-draft") public Object declaredRecordSaveToDraft(@Validated @RequestBody ProjectDraftSaveDTO dto) { - return declaredProjectManage.saveToDraft(dto, ProjectDraftTypeEnum.DECLARED_RECORD.getCode()); + return declaredProjectManage.saveToDraft(dto, ProjectDraftTypeEnum.DECLARED_RECORD); } @ApiOperation(value = "申报项目", notes = "申报项目") diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ConstructionManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ConstructionManage.java index 6c2c51a..dd5fe79 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ConstructionManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ConstructionManage.java @@ -29,16 +29,16 @@ import com.hz.pm.api.projectdeclared.model.vo.ProjectContractListVO; import com.hz.pm.api.projectdeclared.service.*; import com.hz.pm.api.projectlib.helper.ProjectHelper; import com.hz.pm.api.projectlib.model.entity.Project; -import com.hz.pm.api.projectlib.model.entity.ProjectInst; import com.hz.pm.api.projectlib.model.entity.ProjectAnnualPaymentPlan; +import com.hz.pm.api.projectlib.model.entity.ProjectInst; import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum; import com.hz.pm.api.projectlib.model.enumeration.TenderStatusEnum; import com.hz.pm.api.projectlib.model.req.ProjectListReq; import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO; import com.hz.pm.api.projectlib.model.vo.TenderListInfoVO; -import com.hz.pm.api.projectlib.service.IProjectInstService; import com.hz.pm.api.projectlib.service.IProjectAnnualPaymentPlanService; +import com.hz.pm.api.projectlib.service.IProjectInstService; import com.hz.pm.api.projectlib.service.IProjectService; import com.hz.pm.api.user.security.model.UserFullInfoDTO; import com.hz.pm.api.user.security.model.UserInfoDetails; @@ -334,6 +334,16 @@ public class ConstructionManage { return "填写成功"; } + private static final List PRE_INSPECTED_PURCHASE_STATUS; + + static { + PRE_INSPECTED_PURCHASE_STATUS = new ArrayList<>(); + PRE_INSPECTED_PURCHASE_STATUS.add(TenderStatusEnum.TO_BE_SUBMIT_FIRST_INSPECTED_INFO); + PRE_INSPECTED_PURCHASE_STATUS.add(TenderStatusEnum.TO_BE_SUBMIT_XCFHX_APPLY); + PRE_INSPECTED_PURCHASE_STATUS.add(TenderStatusEnum.ON_XCFHX_APPLY); + PRE_INSPECTED_PURCHASE_STATUS.add(TenderStatusEnum.XCFHX_APPLY_FAILED); + } + /** * 待初验项目列表 * @@ -342,11 +352,12 @@ public class ConstructionManage { */ public PageVo preProjectList(ProjectListReq req) { UserInfoDetails user = LoginUserUtil.loginUserDetail(); - VUtils.isTrue(Objects.isNull(user)).throwMessage("获取登录用户失败!"); + Set projectIds = purchaseService.listProjectIdByStatus(PRE_INSPECTED_PURCHASE_STATUS); + if (projectIds.isEmpty()) { + return PageVo.empty(); + } LambdaQueryWrapper query = ProjectHelper.projectQuery(req); - //建设中状态 - query.in(Project::getStatus, ProjectStatusEnum.TO_BE_FIRST_INSPECTED.getCode(), - ProjectStatusEnum.ON_FIRST_INSPECTED.getCode()); + query.in(Project::getId, projectIds); query.eq(Project::getStage, ProjectStatusEnum.PROJECT_APPROVED.getCode()); query.eq(Project::getNewest, Boolean.TRUE); //只能看自己单位的 @@ -357,12 +368,8 @@ public class ConstructionManage { if ((total = page.getTotal()) == 0) { return PageVo.empty(); } - - List projectIds = new ArrayList<>(); - for (Project project : page.getRecords()) { - projectIds.add(project.getId()); - } - List purchases = purchaseService.listByProjectIds(projectIds); + List currPageProjectIds = CollUtils.fieldList(page.getRecords(), Project::getId); + List purchases = purchaseService.listByProjectIds(currPageProjectIds); Map> purchaseMap = CollUtils.group(purchases, Purchase::getProjectId); Map contractMap = contractService.listByProjectIds(projectIds); Map> paymentPlansMap = projectPaymentPlanService.listByProjectIds(projectIds); @@ -621,9 +628,11 @@ public class ConstructionManage { purchase.setActualPerformanceIndicators(req.getActualPerformanceIndicators()); purchaseService.updateById(purchase); // 判断是否所有标段都上传了初验材料 - List purchases = purchaseService.listByProjectId(req.getProjectId()); - boolean finishedPreInst = purchases.stream().noneMatch(w -> TenderStatusEnum.TO_BE_SUBMIT_FIRST_INSPECTED_INFO.eq(w.getStatus())); - if (finishedPreInst) { + LambdaQueryWrapper purchaseQuery = Wrappers.lambdaQuery(Purchase.class) + .eq(Purchase::getProjectId, req.getProjectId()) + .apply("LENGTH(NVL(preliminary_inspection_materials,'')) = 0") + .last(BizConst.LIMIT_1); + if (purchaseService.count(purchaseQuery) == 0) { Project project = projectService.getById(req.getProjectId()); stateMachineUtil.pass(project); projectService.updateById(project); diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectManage.java index 45d8c6f..4f0d478 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectManage.java @@ -26,6 +26,7 @@ import com.hz.pm.api.irs.manage.ProjectIrsManage; import com.hz.pm.api.projectdeclared.contants.DeclaredProjectConst; import com.hz.pm.api.projectdeclared.model.dto.*; import com.hz.pm.api.projectdeclared.model.entity.ProjectDraft; +import com.hz.pm.api.projectdeclared.model.enumerization.ProjectDraftTypeEnum; import com.hz.pm.api.projectdeclared.model.vo.ProjectDraftVO; import com.hz.pm.api.projectdeclared.service.IProjectDraftService; import com.hz.pm.api.projectlib.helper.ProjectHelper; @@ -312,9 +313,8 @@ public class DeclaredProjectManage { * @param dto \ * @return \ */ - public Long saveToDraft(ProjectDraftSaveDTO dto, Integer draftType) { + public Long saveToDraft(ProjectDraftSaveDTO dto, ProjectDraftTypeEnum draftType) { UserInfoDetails user = LoginUserUtil.loginUserDetail(); - Long userId = user.getUserId(); ProjectDTO projectInfo = dto.getProjectInfo(); ProjectDraft draft = new ProjectDraft(); @@ -323,7 +323,7 @@ public class DeclaredProjectManage { //写死 是否有主管单位 draft.setIsHigherSuperOrg(CommonEnum.YES.getCode()); draft.setIsSuperOrg(CommonEnum.YES.getCode()); - draft.setUserId(String.valueOf(userId)); + draft.setUserId(user.getUserIdStr()); draft.setBuildOrgCode(user.getMhUnitIdStr()); draft.setBuildOrgName(user.getMhUnitName()); @@ -344,9 +344,9 @@ public class DeclaredProjectManage { draft.setCreateOn(LocalDateTime.now()); } } - draft.setDraftType(draftType); + draft.setDraftType(draftType.getCode()); draft.setUpdateOn(LocalDateTime.now()); - draft.setUserId(String.valueOf(userId)); + draft.setUserId(user.getUserIdStr()); projectDraftService.saveOrUpdate(draft); return draft.getId(); } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/FinalAcceptanceManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/FinalAcceptanceManage.java index 56c107a..cd39c0e 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/FinalAcceptanceManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/FinalAcceptanceManage.java @@ -1,6 +1,7 @@ package com.hz.pm.api.projectdeclared.manage; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ArrayUtil; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Assert; @@ -89,6 +90,15 @@ public class FinalAcceptanceManage { private final IProjectInstService projectInstService; private final HandlerManage handlerManage; + private static final List FINAL_INSPECTED_TENDER_STATUS; + + static { + FINAL_INSPECTED_TENDER_STATUS = new ArrayList<>(); + FINAL_INSPECTED_TENDER_STATUS.add(TenderStatusEnum.FINALLY_INSPECTED_FAILED); + FINAL_INSPECTED_TENDER_STATUS.add(TenderStatusEnum.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY); + FINAL_INSPECTED_TENDER_STATUS.add(TenderStatusEnum.ON_FINALLY_INSPECTED_APPLY); + } + /** * 待采购的-项目列表 @@ -97,12 +107,12 @@ public class FinalAcceptanceManage { * @return \ */ public PageVo projectLibList(ProjectListReq req) { + UserInfoDetails user = LoginUserUtil.loginUserDetail(); LambdaQueryWrapper query = ProjectHelper.projectQuery(req); //待终验 并且还未过期 //只能看自己单位的 - Set projectIds = purchaseService.listProjectIdByStatus(TenderStatusEnum.FINALLY_INSPECTED_FAILED, - TenderStatusEnum.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY); + Set projectIds = purchaseService.listProjectIdByStatus(FINAL_INSPECTED_TENDER_STATUS); if (projectIds.isEmpty()) { return PageVo.empty(); } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/Purchase.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/Purchase.java index 67bd2b3..f132bf7 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/Purchase.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/Purchase.java @@ -1,27 +1,24 @@ package com.hz.pm.api.projectdeclared.model.entity; import com.baomidou.mybatisplus.annotation.*; -import com.hz.pm.api.common.compare.Compare; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; import lombok.Data; -import lombok.NoArgsConstructor; import java.math.BigDecimal; import java.time.LocalDateTime; /** - * @Classname Purchase - * @Description - * @Date 2023/5/29 10:00 - * @Author PoffyZhang + *

+ * 采购信息(标段) + *

+ * + * @author WendyYang + * @since 15:07 2024/2/28 */ -@TableName("nd_purchase") -@ApiModel(value = "采购对象", description = "采购对象") @Data -@AllArgsConstructor -@NoArgsConstructor +@TableName("nd_purchase") +@ApiModel(value = "采购对象") public class Purchase { @TableId(type = IdType.AUTO) @@ -43,9 +40,11 @@ public class Purchase { private LocalDateTime updateOn; @ApiModelProperty("创建人 工号") + @TableField(fill = FieldFill.INSERT) private String createBy; @ApiModelProperty("修改人 工号") + @TableField(fill = FieldFill.INSERT_UPDATE) private String updateBy; @ApiModelProperty("供应商") @@ -104,10 +103,10 @@ public class Purchase { @ApiModelProperty("初验材料") private String preliminaryInspectionMaterials; - @ApiModelProperty("是否完成日志数据归集") + @ApiModelProperty("(初验)是否完成日志数据归集") private Boolean isCompletedLogCollection; - @ApiModelProperty("实际成效指标") + @ApiModelProperty("(初验)实际成效指标") private String actualPerformanceIndicators; @ApiModelProperty("终验申报材料") diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/SubmitPurchaseNoticeReq.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/SubmitPurchaseNoticeReq.java index b885a26..a1a04ab 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/SubmitPurchaseNoticeReq.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/SubmitPurchaseNoticeReq.java @@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -27,6 +29,7 @@ public class SubmitPurchaseNoticeReq { private Long projectId; @ApiModelProperty("标段信息") + @NotEmpty(message = "标段信息不能为空") private List tenders; @Data @@ -36,26 +39,33 @@ public class SubmitPurchaseNoticeReq { private Long bidId; @ApiModelProperty("标段名称") + @NotBlank(message = "标段名称不能为空") private String bidName; @ApiModelProperty("标段预算") + @NotNull(message = "标段预算不能为空") private BigDecimal bidBudget; @ApiModelProperty("开标时间") + @NotNull(message = "开标时间不能为空") @JsonFormat(pattern = "yyyy-MM-dd HH:mm") private LocalDateTime bidStartTime; @ApiModelProperty("投标截止时间") + @NotNull(message = "投标截止时间不能为空") @JsonFormat(pattern = "yyyy-MM-dd HH:mm") private LocalDateTime bidEndTime; @ApiModelProperty("投标地址") + @NotBlank(message = "投标地址不能为空") private String bidAddress; @ApiModelProperty("采购方式") + @NotBlank(message = "采购方式不能为空") private String purchaseMethod; @ApiModelProperty("招标文件") + @NotBlank(message = "招标文件不能为空") private String bidDoc; } diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/XcfhxApplyReq.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/XcfhxApplyReq.java index 7b5b25e..425423e 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/XcfhxApplyReq.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/XcfhxApplyReq.java @@ -3,6 +3,8 @@ package com.hz.pm.api.projectdeclared.model.req; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; + /** *

* 信创符合性申请参数类 @@ -15,12 +17,15 @@ import lombok.Data; public class XcfhxApplyReq { @ApiModelProperty("项目ID") + @NotNull(message = "项目ID不能为空") private Long projectId; @ApiModelProperty("标段ID") + @NotNull(message = "标段ID不能为空") private Long bidId; @ApiModelProperty("是否符合信创符合性要求") + @NotNull(message = "是否符合信创符合性要求不能为空") private Boolean matchXcfhx; @ApiModelProperty("备注") diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IPurchaseService.java b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IPurchaseService.java index ebad432..cbeb96e 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IPurchaseService.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IPurchaseService.java @@ -1,5 +1,6 @@ package com.hz.pm.api.projectdeclared.service; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ArrayUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -33,11 +34,11 @@ public interface IPurchaseService extends IService { .orderByAsc(Purchase::getId)); } - default Set listProjectIdByStatus(TenderStatusEnum... status) { - if (ArrayUtil.isEmpty(status)) { + default Set listProjectIdByStatus(Collection status) { + if (CollUtil.isEmpty(status)) { return Collections.emptySet(); } - List statusCodes = Arrays.stream(status) + List statusCodes = status.stream() .map(TenderStatusEnum::getTenderStatus) .collect(Collectors.toList()); LambdaQueryWrapper query = Wrappers.lambdaQuery(Purchase.class) diff --git a/hz-pm-api/src/main/java/com/hz/pm/api/todocenter/manage/HandlerManage.java b/hz-pm-api/src/main/java/com/hz/pm/api/todocenter/manage/HandlerManage.java index 4eb2fdf..3de0f6c 100644 --- a/hz-pm-api/src/main/java/com/hz/pm/api/todocenter/manage/HandlerManage.java +++ b/hz-pm-api/src/main/java/com/hz/pm/api/todocenter/manage/HandlerManage.java @@ -417,7 +417,7 @@ public class HandlerManage { // 保存到草稿箱中 private void saveToDraft(Project req) { - ProjectDraftSaveDTO draftSaveDto = new ProjectDraftSaveDTO(); + ProjectDraftSaveDTO projectDraft = new ProjectDraftSaveDTO(); ProjectDTO projectInfo = new ProjectDTO(); BeanUtils.copyProperties(req, projectInfo); // 查询出项目关联的应用信息 @@ -432,8 +432,8 @@ public class HandlerManage { new TypeReference>() { }); projectInfo.setDynamicForm(dynamicMap); - draftSaveDto.setProjectInfo(projectInfo); - declaredProjectManage.saveToDraft(draftSaveDto, ProjectDraftTypeEnum.PROJECT_DECLARED.getCode()); + projectDraft.setProjectInfo(projectInfo); + declaredProjectManage.saveToDraft(projectDraft, ProjectDraftTypeEnum.PROJECT_DECLARED); } /**