Browse Source

feat:

1. 终验、信创符合性审查合并;
tags/25012001
WendyYang 1 month ago
parent
commit
0b43269faf
14 changed files with 101 additions and 38 deletions
  1. +5
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/action/XcfhxStateChangeAction.java
  2. +2
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/builder/impl/TenderStateMachineBuilderImpl.java
  3. +2
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/external/todo/dto/MhTodoExtraParamDTO.java
  4. +44
    -24
      hz-pm-api/src/main/java/com/hz/pm/api/external/todo/enumerization/MHTodoTypeEnum.java
  5. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ConstructionManage.java
  6. +16
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/FinalAcceptanceManage.java
  7. +8
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java
  8. +3
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/FinalAcceptProgressVO.java
  9. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectManageTodoCountManage.java
  10. +7
    -6
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/status/TenderXcfhxApplyStatus.java
  11. +8
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/IPurchaseStatusChangeService.java
  12. +1
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/MhTodoHandedListener.java
  13. +1
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/MhTodoSendListener.java
  14. +2
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/event/MhTodoSendEvent.java

+ 5
- 0
hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/action/XcfhxStateChangeAction.java View File

@@ -3,6 +3,7 @@ package com.hz.pm.api.common.statemachine.action;
import com.hz.pm.api.common.statemachine.builder.impl.XcfhxStateMachineBuilderImpl; import com.hz.pm.api.common.statemachine.builder.impl.XcfhxStateMachineBuilderImpl;
import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent; import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent;
import com.hz.pm.api.projectdeclared.model.entity.Purchase; import com.hz.pm.api.projectdeclared.model.entity.Purchase;
import com.hz.pm.api.projectlib.model.enumeration.status.TenderMainStatus;
import com.hz.pm.api.projectlib.model.enumeration.status.TenderXcfhxApplyStatus; import com.hz.pm.api.projectlib.model.enumeration.status.TenderXcfhxApplyStatus;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.messaging.Message; import org.springframework.messaging.Message;
@@ -31,6 +32,7 @@ public class XcfhxStateChangeAction {
@OnTransition(source = "TO_BE_SUBMIT_XCFHX_APPLY", target = "ON_XCFHX_APPLY") @OnTransition(source = "TO_BE_SUBMIT_XCFHX_APPLY", target = "ON_XCFHX_APPLY")
public void SUBMIT_XCFHX_APPLY(Message<ProjectStateChangeEvent> message) { public void SUBMIT_XCFHX_APPLY(Message<ProjectStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message); Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderXcfhxApplyStatus.ON_XCFHX_APPLY.getCode());
purchase.setXcfhxApplyStatus(TenderXcfhxApplyStatus.ON_XCFHX_APPLY.getCode()); purchase.setXcfhxApplyStatus(TenderXcfhxApplyStatus.ON_XCFHX_APPLY.getCode());
} }


@@ -42,6 +44,7 @@ public class XcfhxStateChangeAction {
@OnTransition(source = "ON_XCFHX_APPLY", target = "XCFHX_APPLY_PASSED") @OnTransition(source = "ON_XCFHX_APPLY", target = "XCFHX_APPLY_PASSED")
public void XCFHX_APPLY_PASSED(Message<ProjectStateChangeEvent> message) { public void XCFHX_APPLY_PASSED(Message<ProjectStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message); Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderMainStatus.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY.getCode());
purchase.setXcfhxApplyStatus(TenderXcfhxApplyStatus.XCFHX_APPLY_PASSED.getCode()); purchase.setXcfhxApplyStatus(TenderXcfhxApplyStatus.XCFHX_APPLY_PASSED.getCode());
} }


@@ -53,6 +56,7 @@ public class XcfhxStateChangeAction {
@OnTransition(source = "ON_XCFHX_APPLY", target = "XCFHX_APPLY_FAILED") @OnTransition(source = "ON_XCFHX_APPLY", target = "XCFHX_APPLY_FAILED")
public void XCFHX_APPLY_FAILED(Message<ProjectStateChangeEvent> message) { public void XCFHX_APPLY_FAILED(Message<ProjectStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message); Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderXcfhxApplyStatus.XCFHX_APPLY_FAILED.getCode());
purchase.setXcfhxApplyStatus(TenderXcfhxApplyStatus.XCFHX_APPLY_FAILED.getCode()); purchase.setXcfhxApplyStatus(TenderXcfhxApplyStatus.XCFHX_APPLY_FAILED.getCode());
} }


@@ -64,6 +68,7 @@ public class XcfhxStateChangeAction {
@OnTransition(source = "XCFHX_APPLY_FAILED", target = "ON_XCFHX_APPLY") @OnTransition(source = "XCFHX_APPLY_FAILED", target = "ON_XCFHX_APPLY")
public void RESUBMIT_XCFHX_APPLY(Message<ProjectStateChangeEvent> message) { public void RESUBMIT_XCFHX_APPLY(Message<ProjectStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message); Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderXcfhxApplyStatus.ON_XCFHX_APPLY.getCode());
purchase.setXcfhxApplyStatus(TenderXcfhxApplyStatus.ON_XCFHX_APPLY.getCode()); purchase.setXcfhxApplyStatus(TenderXcfhxApplyStatus.ON_XCFHX_APPLY.getCode());
} }




+ 2
- 1
hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/builder/impl/TenderStateMachineBuilderImpl.java View File

@@ -8,6 +8,7 @@ import com.hz.pm.api.projectdeclared.model.entity.Purchase;
import com.hz.pm.api.projectlib.model.enumeration.status.ITenderStatus; import com.hz.pm.api.projectlib.model.enumeration.status.ITenderStatus;
import com.hz.pm.api.projectlib.model.enumeration.status.TenderAdaptStatus; import com.hz.pm.api.projectlib.model.enumeration.status.TenderAdaptStatus;
import com.hz.pm.api.projectlib.model.enumeration.status.TenderMainStatus; import com.hz.pm.api.projectlib.model.enumeration.status.TenderMainStatus;
import com.hz.pm.api.projectlib.model.enumeration.status.TenderXcfhxApplyStatus;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactory;
@@ -132,7 +133,7 @@ public class TenderStateMachineBuilderImpl implements BaseStateMachineBuilder<Pu
// 上传初验材料 // 上传初验材料
.withExternal() .withExternal()
.source(TenderMainStatus.TO_BE_SUBMIT_FIRST_INSPECTED_INFO) .source(TenderMainStatus.TO_BE_SUBMIT_FIRST_INSPECTED_INFO)
.target(TenderMainStatus.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY)
.target(TenderXcfhxApplyStatus.TO_BE_SUBMIT_XCFHX_APPLY)
.event(TenderStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES) .event(TenderStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES)
.and() .and()
// 终验申报 // 终验申报


+ 2
- 0
hz-pm-api/src/main/java/com/hz/pm/api/external/todo/dto/MhTodoExtraParamDTO.java View File

@@ -58,4 +58,6 @@ public class MhTodoExtraParamDTO {


private Long xinchuangId; private Long xinchuangId;


private Integer activeName;

} }

+ 44
- 24
hz-pm-api/src/main/java/com/hz/pm/api/external/todo/enumerization/MHTodoTypeEnum.java View File

@@ -20,87 +20,105 @@ public enum MHTodoTypeEnum {
"您单位的【%s】开工文件备案已通过,可在过程管理-适配改造中进行提交系统自测信息的操作。", "您单位的【%s】开工文件备案已通过,可在过程管理-适配改造中进行提交系统自测信息的操作。",
"【%s】系统自测信息需要您处理,请及时处理", "【%s】系统自测信息需要您处理,请及时处理",
"/declareManage/projectManages/adaptiveTransformation", "/declareManage/projectManages/adaptiveTransformation",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=1100"),
20010,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=${activeName}"),
TEST_VALID_APPLY("监理核实验证", null, TEST_VALID_APPLY("监理核实验证", null,
"您单位的【%s】系统自测备案已通过,可在过程管理-适配改造中进行填写监理核实验证信息的操作。", "您单位的【%s】系统自测备案已通过,可在过程管理-适配改造中进行填写监理核实验证信息的操作。",
"【%s】监理核实验证需要您处理,请及时处理", "【%s】监理核实验证需要您处理,请及时处理",
"/declareManage/projectManages/adaptiveTransformation", "/declareManage/projectManages/adaptiveTransformation",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=3100"),
20010,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=${activeName}"),
XCFHX_TEST_APPLY("信创符合性测评", null,
"您单位的【%s】已完成初验备案,可在过程管理-终验申请中进行信创符合性测评备案的操作。",
"【%s】信创符合性测评需要您处理,请及时处理",
"/declareManage/projectManages/finalInspectionDeclare",
302,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=${activeName}"),
FINAL_INSPECT_APPLY("终验申请", null, FINAL_INSPECT_APPLY("终验申请", null,
"您单位的【%s】已完成初验备案,可在过程管理-终验申请中进行终验申请的操作。",
"您单位的【%s】信创符合性测评备案已通过,可在过程管理-终验申请中进行终验申请的操作。",
"【%s】终验申请需要您处理,请及时处理", "【%s】终验申请需要您处理,请及时处理",
"/declareManage/projectManages/finalInspectionDeclare", "/declareManage/projectManages/finalInspectionDeclare",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=401"),
401,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=${activeName}"),
ADAPTION_APPLY("上传开工文件", null, ADAPTION_APPLY("上传开工文件", null,
"您单位的【%s】已完成实施计划填写,可在过程管理-适配改造中进行上传开工文件的操作。", "您单位的【%s】已完成实施计划填写,可在过程管理-适配改造中进行上传开工文件的操作。",
"【%s】上传开工文件需要您处理,请及时处理", "【%s】上传开工文件需要您处理,请及时处理",
"/declareManage/projectManages/adaptiveTransformation", "/declareManage/projectManages/adaptiveTransformation",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=2100"),
20010,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=${activeName}"),
PROJECT_REVIEW_APPLY("项目复核", null, PROJECT_REVIEW_APPLY("项目复核", null,
"您单位的【%s】的专家评审已通过,可在过程管理-项目评审-项目复核中进行提交复核的操作。", "您单位的【%s】的专家评审已通过,可在过程管理-项目评审-项目复核中进行提交复核的操作。",
"【%s】项目复核需要您处理,请及时处理", "【%s】项目复核需要您处理,请及时处理",
"/declareManage/projectManages/projectRecheck", "/declareManage/projectManages/projectRecheck",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=10040"),
10040,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=${activeName}"),
WITHOUT_BUILD_SCHEME("上传建设方案盖章件", null, WITHOUT_BUILD_SCHEME("上传建设方案盖章件", null,
"您单位的【%s】的合规性审査已通过,可在过程管理-项目评审-专家评审中进行上传建设方案盖章件的操作。", "您单位的【%s】的合规性审査已通过,可在过程管理-项目评审-专家评审中进行上传建设方案盖章件的操作。",
"【%s】上传建设方案盖章件需要您处理,请及时处理", "【%s】上传建设方案盖章件需要您处理,请及时处理",
"/declareManage/projectManages/expertReview", "/declareManage/projectManages/expertReview",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=10050"),
10050,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=${activeName}"),
WITHOUT_PURCHASE_NOTICE("发布采购公告", null, WITHOUT_PURCHASE_NOTICE("发布采购公告", null,
"您单位的【%s】立项备案已通过,可在过程管理-招标采购中进行发布采购公告的操作。", "您单位的【%s】立项备案已通过,可在过程管理-招标采购中进行发布采购公告的操作。",
"【%s】发布采购公告需要您处理,请及时处理", "【%s】发布采购公告需要您处理,请及时处理",
"/declareManage/projectManages/purchaseResults", "/declareManage/projectManages/purchaseResults",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=20001"),
20001,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=${activeName}"),
WITHOUT_PURCHASE_CONTRACT("采购&合同信息备案", null, WITHOUT_PURCHASE_CONTRACT("采购&合同信息备案", null,
"您单位的【%s】已完成发布采购公告,可在过程管理-招标采购中进行采购&合同信息备案的操作。", "您单位的【%s】已完成发布采购公告,可在过程管理-招标采购中进行采购&合同信息备案的操作。",
"【%s】采购&合同信息备案需要您处理,请及时处理", "【%s】采购&合同信息备案需要您处理,请及时处理",
"/declareManage/projectManages/purchaseResults", "/declareManage/projectManages/purchaseResults",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=101"),
101,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=${activeName}"),
WITHOUT_OPERATION_PLAN("实施计划填写", null, WITHOUT_OPERATION_PLAN("实施计划填写", null,
"您单位的【%s】已完成采购&合同信息备案,可在过程管理-适配改造中进行填写实施计划的操作。", "您单位的【%s】已完成采购&合同信息备案,可在过程管理-适配改造中进行填写实施计划的操作。",
"【%s】实施计划需要您处理,请及时处理", "【%s】实施计划需要您处理,请及时处理",
"/declareManage/projectManages/adaptiveTransformation", "/declareManage/projectManages/adaptiveTransformation",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=103"),
null,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=${activeName}"),
WITHOUT_FIRST_ACCEPT_RECORD("初验备案", null, WITHOUT_FIRST_ACCEPT_RECORD("初验备案", null,
"您单位的【%s】已完成适配改造,可在过程管理-初验申请中进行初验备案的操作。", "您单位的【%s】已完成适配改造,可在过程管理-初验申请中进行初验备案的操作。",
"【%s】初验备案需要您处理,请及时处理", "【%s】初验备案需要您处理,请及时处理",
"/declareManage/projectManages/initialInspectionRecord", "/declareManage/projectManages/initialInspectionRecord",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=201"),
null,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=${activeName}"),
WITHOUT_ORG_CONFIRM("单位确认", null, WITHOUT_ORG_CONFIRM("单位确认", null,
"您单位的【%s】监理核实验证备案已通过,可在过程管理-适配改造中进行单位确认的操作。", "您单位的【%s】监理核实验证备案已通过,可在过程管理-适配改造中进行单位确认的操作。",
"【%s】单位确认需要您处理,请及时处理", "【%s】单位确认需要您处理,请及时处理",
"/declareManage/projectManages/adaptiveTransformation", "/declareManage/projectManages/adaptiveTransformation",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=104"),
20010,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=${activeName}"),
DECLARED_RECORD_APPLY("立项备案申请", null, DECLARED_RECORD_APPLY("立项备案申请", null,
"您单位的【%s】已下达资金,可在过程管理-项目立项中进行立项备案的操作。", "您单位的【%s】已下达资金,可在过程管理-项目立项中进行立项备案的操作。",
"【%s】立项备案需要您处理,请及时处理", "【%s】立项备案需要您处理,请及时处理",
"/declareManage/projectManages/projectFiling", "/declareManage/projectManages/projectFiling",
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=10022"),
10022,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&activeName=${activeName}"),
/** /**
* 流程审批待办 * 流程审批待办
*/ */


SELF_TEST_AUDIT("系统自测审批", TEST_VALID_APPLY, null, null, null,
SELF_TEST_AUDIT("系统自测审批", TEST_VALID_APPLY, null, null, null, null,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"),
ADAPTION_AUDIT("开工文件审批", SELF_TEST_APPLY, null, null, null,
ADAPTION_AUDIT("开工文件审批", SELF_TEST_APPLY, null, null, null, null,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"),
TEST_VALID_AUDIT("监理核实验证审批", WITHOUT_ORG_CONFIRM, null, null, null,
TEST_VALID_AUDIT("监理核实验证审批", WITHOUT_ORG_CONFIRM, null, null, null, null,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"),
COMPLIANCE_REVIEW_AUDIT("合规性审查审批", WITHOUT_BUILD_SCHEME, null, null, null,
COMPLIANCE_REVIEW_AUDIT("合规性审查审批", WITHOUT_BUILD_SCHEME, null, null, null, null,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"),
PROJECT_REVIEW_AUDIT("项目复核审批", null, null, null, null,
PROJECT_REVIEW_AUDIT("项目复核审批", null, null, null, null, null,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"),
PROJECT_STOPPED_AUDIT("项目终止审批", null, "您单位的【%s】已通过项目终止审核。", null, null,
PROJECT_STOPPED_AUDIT("项目终止审批", null, "您单位的【%s】已通过项目终止审核。", null, null, null,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"),
PROJECT_CHANGE_AUDIT("项目变更审批", null, "您单位的【%s】已通过项目变更审核。", null, null,
PROJECT_CHANGE_AUDIT("项目变更审批", null, "您单位的【%s】已通过项目变更审核。", null, null, null,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"),
FINAL_INSPECT_AUDIT("终验审批", null, "您单位的【%s】已通过终验审核。", null, null,
FINAL_INSPECT_AUDIT("终验审批", null, "您单位的【%s】已通过终验审核。", null, null, null,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"),
PURCHASE_NOTICE_AUDIT("增加标项复核审批", WITHOUT_PURCHASE_CONTRACT, null, null, null,
PURCHASE_NOTICE_AUDIT("增加标项复核审批", WITHOUT_PURCHASE_CONTRACT, null, null, null, null,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"), "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"),
XCFHX_INSPECT_AUDIT("信创符合性审查审批", WITHOUT_BUILD_SCHEME, null, null, null,
XCFHX_INSPECT_AUDIT("信创符合性审查审批", FINAL_INSPECT_APPLY, null, null, null, null,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&xinchuangId={xinchuangId}"), "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}&xinchuangId={xinchuangId}"),
DECLARED_RECORD_AUDIT("立项备案审批", WITHOUT_PURCHASE_NOTICE, null, null, null,
DECLARED_RECORD_AUDIT("立项备案审批", WITHOUT_PURCHASE_NOTICE, null, null, null, null,
"instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}"); "instanceId=${instanceId}&projectId=${projectId}&nodeId=${nodeId}&taskId=${taskId}&bidId=${bizId}&userId=${userId}&userName=${userName}&path=${path}");


private final String val; private final String val;
@@ -117,6 +135,8 @@ public enum MHTodoTypeEnum {
*/ */
private final String pagePath; private final String pagePath;


private final Integer activeName;

private final String referLinkParam; private final String referLinkParam;


} }

+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ConstructionManage.java View File

@@ -598,7 +598,7 @@ public class ConstructionManage {
projectStateMachineUtil.pass(project); projectStateMachineUtil.pass(project);
projectService.updateById(project); projectService.updateById(project);
} }
SpringUtil.publishEvent(MhTodoSendEvent.of(MHTodoTypeEnum.FINAL_INSPECT_APPLY, project, purchase));
SpringUtil.publishEvent(MhTodoSendEvent.of(MHTodoTypeEnum.XCFHX_TEST_APPLY, project, purchase));
SpringUtil.publishEvent(MhTodoHandedEvent.of(MHTodoTypeEnum.WITHOUT_FIRST_ACCEPT_RECORD, req.getBidId())); SpringUtil.publishEvent(MhTodoHandedEvent.of(MHTodoTypeEnum.WITHOUT_FIRST_ACCEPT_RECORD, req.getBidId()));
} }




+ 16
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/FinalAcceptanceManage.java View File

@@ -33,8 +33,10 @@ import com.hz.pm.api.projectlib.helper.ProjectManageUtil;
import com.hz.pm.api.projectlib.model.entity.Project; 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.ProjectInst;
import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum; import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum;
import com.hz.pm.api.projectlib.model.enumeration.status.ITenderStatus;
import com.hz.pm.api.projectlib.model.enumeration.status.ProjectStatus; import com.hz.pm.api.projectlib.model.enumeration.status.ProjectStatus;
import com.hz.pm.api.projectlib.model.enumeration.status.TenderMainStatus; import com.hz.pm.api.projectlib.model.enumeration.status.TenderMainStatus;
import com.hz.pm.api.projectlib.model.enumeration.status.TenderXcfhxApplyStatus;
import com.hz.pm.api.projectlib.model.req.ProjectListReq; 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.ProjectLibListItemVO;
import com.hz.pm.api.projectlib.model.vo.TenderListInfoVO; import com.hz.pm.api.projectlib.model.vo.TenderListInfoVO;
@@ -98,6 +100,11 @@ public class FinalAcceptanceManage {


static { static {
FINAL_INSPECTED_TENDER_STATUS = new ArrayList<>(); FINAL_INSPECTED_TENDER_STATUS = new ArrayList<>();
// 信创符合性申请
FINAL_INSPECTED_TENDER_STATUS.add(TenderXcfhxApplyStatus.TO_BE_SUBMIT_XCFHX_APPLY.getCode());
FINAL_INSPECTED_TENDER_STATUS.add(TenderXcfhxApplyStatus.ON_XCFHX_APPLY.getCode());
FINAL_INSPECTED_TENDER_STATUS.add(TenderXcfhxApplyStatus.XCFHX_APPLY_FAILED.getCode());
// 终验
FINAL_INSPECTED_TENDER_STATUS.add(TenderMainStatus.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY.getCode()); FINAL_INSPECTED_TENDER_STATUS.add(TenderMainStatus.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY.getCode());
FINAL_INSPECTED_TENDER_STATUS.add(TenderMainStatus.ON_FINALLY_INSPECTED_APPLY.getCode()); FINAL_INSPECTED_TENDER_STATUS.add(TenderMainStatus.ON_FINALLY_INSPECTED_APPLY.getCode());
FINAL_INSPECTED_TENDER_STATUS.add(TenderMainStatus.FINALLY_INSPECTED_PASSED.getCode()); FINAL_INSPECTED_TENDER_STATUS.add(TenderMainStatus.FINALLY_INSPECTED_PASSED.getCode());
@@ -138,12 +145,16 @@ public class FinalAcceptanceManage {
.filter(purchase -> projectIds.contains(purchase.getProjectId())) .filter(purchase -> projectIds.contains(purchase.getProjectId()))
.collect(Collectors.groupingBy(Purchase::getProjectId, .collect(Collectors.groupingBy(Purchase::getProjectId,
Collectors.mapping(Purchase::getStatus, Collectors.toList()))); Collectors.mapping(Purchase::getStatus, Collectors.toList())));
BiFunction<Map<Long, List<Integer>>, TenderMainStatus, Integer> counter = (statusMap, status) -> {
BiFunction<Map<Long, List<Integer>>, ITenderStatus, Integer> counter = (statusMap, status) -> {
Set<Map.Entry<Long, List<Integer>>> entries = statusMap.entrySet(); Set<Map.Entry<Long, List<Integer>>> entries = statusMap.entrySet();
return CollUtil.count(entries, entry -> entry.getValue().contains(status.getCode())); return CollUtil.count(entries, entry -> entry.getValue().contains(status.getCode()));
}; };
Integer xcfhxApplyingCount = counter.apply(purchaseStatusMap, TenderXcfhxApplyStatus.TO_BE_SUBMIT_XCFHX_APPLY)
+ counter.apply(purchaseStatusMap, TenderXcfhxApplyStatus.ON_XCFHX_APPLY)
+ counter.apply(purchaseStatusMap, TenderXcfhxApplyStatus.XCFHX_APPLY_FAILED);
return FinalAcceptProgressVO.builder() return FinalAcceptProgressVO.builder()
.totalCount(projects.size()) .totalCount(projects.size())
.xcfhxCount(xcfhxApplyingCount)
.auditCount(counter.apply(purchaseStatusMap, TenderMainStatus.ON_FINALLY_INSPECTED_APPLY)) .auditCount(counter.apply(purchaseStatusMap, TenderMainStatus.ON_FINALLY_INSPECTED_APPLY))
.todoCount(counter.apply(purchaseStatusMap, TenderMainStatus.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY)) .todoCount(counter.apply(purchaseStatusMap, TenderMainStatus.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY))
.failedCount(counter.apply(purchaseStatusMap, TenderMainStatus.FINALLY_INSPECTED_FAILED)) .failedCount(counter.apply(purchaseStatusMap, TenderMainStatus.FINALLY_INSPECTED_FAILED))
@@ -169,6 +180,10 @@ public class FinalAcceptanceManage {
.eq(Purchase::getBidType, BidTypeEnum.BUILD_APP.getCode()); .eq(Purchase::getBidType, BidTypeEnum.BUILD_APP.getCode());
if (req.getTabStatus() == null) { if (req.getTabStatus() == null) {
purchaseQuery.in(Purchase::getStatus, FINAL_INSPECTED_TENDER_STATUS); purchaseQuery.in(Purchase::getStatus, FINAL_INSPECTED_TENDER_STATUS);
} else if (TenderXcfhxApplyStatus.ON_XCFHX_APPLY.eq(req.getTabStatus())) {
purchaseQuery.in(Purchase::getStatus, TenderXcfhxApplyStatus.TO_BE_SUBMIT_XCFHX_APPLY.getCode(),
TenderXcfhxApplyStatus.ON_XCFHX_APPLY.getCode(),
TenderXcfhxApplyStatus.XCFHX_APPLY_FAILED.getCode());
} else { } else {
purchaseQuery.eq(Purchase::getStatus, req.getTabStatus()); purchaseQuery.eq(Purchase::getStatus, req.getTabStatus());
} }


+ 8
- 2
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java View File

@@ -712,7 +712,10 @@ public class PurchaseManage {
} }
SpringUtil.publishEvent(MhTodoHandedEvent.of(MHTodoTypeEnum.WITHOUT_PURCHASE_CONTRACT, purchase.getId())); SpringUtil.publishEvent(MhTodoHandedEvent.of(MHTodoTypeEnum.WITHOUT_PURCHASE_CONTRACT, purchase.getId()));
if (BidTypeEnum.BUILD_APP.eq(purchase.getBidType())) { if (BidTypeEnum.BUILD_APP.eq(purchase.getBidType())) {
SpringUtil.publishEvent(MhTodoSendEvent.of(MHTodoTypeEnum.WITHOUT_OPERATION_PLAN, project, purchase));
boolean exists = purchaseStatusChangeService.exists(project.getProjectCode(), TenderStateChangeEvent.SUBMIT_OPERATION_PLAN);
MhTodoSendEvent event = MhTodoSendEvent.of(MHTodoTypeEnum.WITHOUT_OPERATION_PLAN, project, purchase);
event.setActiveName((exists ? ProjectStatus.ON_ADAPTING : ProjectStatus.TO_BE_ADAPT).getCode());
SpringUtil.publishEvent(event);
} }
stagingManage.delete(StagingType.PURCHASE_RECORD, req.getBidId()); stagingManage.delete(StagingType.PURCHASE_RECORD, req.getBidId());
} }
@@ -1148,7 +1151,10 @@ public class PurchaseManage {
projectService.updateById(project); projectService.updateById(project);
} }
SpringUtil.publishEvent(MhTodoHandedEvent.of(MHTodoTypeEnum.WITHOUT_ORG_CONFIRM, req.getBidId())); SpringUtil.publishEvent(MhTodoHandedEvent.of(MHTodoTypeEnum.WITHOUT_ORG_CONFIRM, req.getBidId()));
SpringUtil.publishEvent(MhTodoSendEvent.of(MHTodoTypeEnum.WITHOUT_FIRST_ACCEPT_RECORD, project, purchase));
boolean exists = purchaseStatusChangeService.exists(project.getProjectCode(), TenderStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES);
MhTodoSendEvent todoEvent = MhTodoSendEvent.of(MHTodoTypeEnum.WITHOUT_FIRST_ACCEPT_RECORD, project, purchase);
todoEvent.setActiveName((exists ? ProjectStatus.ON_FIRST_INSPECTING : TO_BE_SUBMIT_FIRST_INSPECTED_INFO).getCode());
SpringUtil.publishEvent(todoEvent);
} }


private boolean allPurchaseOrgConfirmed(Long projectId) { private boolean allPurchaseOrgConfirmed(Long projectId) {


+ 3
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/FinalAcceptProgressVO.java View File

@@ -19,6 +19,9 @@ public class FinalAcceptProgressVO {
@ApiModelProperty("总数量") @ApiModelProperty("总数量")
private Integer totalCount; private Integer totalCount;


@ApiModelProperty("信创符合性申请数量")
private Integer xcfhxCount;

@ApiModelProperty("审核中数量") @ApiModelProperty("审核中数量")
private Integer auditCount; private Integer auditCount;




+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectManageTodoCountManage.java View File

@@ -104,7 +104,7 @@ public class ProjectManageTodoCountManage {
projReqOrg.setBuildOrgCode(req.getBuildOrgCode()); projReqOrg.setBuildOrgCode(req.getBuildOrgCode());
FinalAcceptProgressVO finalAccept = finalAcceptanceManage.finalAcceptProgress(projReqOrg); FinalAcceptProgressVO finalAccept = finalAcceptanceManage.finalAcceptProgress(projReqOrg);
ret.setFinalAccept(sum(finalAccept, FinalAcceptProgressVO::getTodoCount, ret.setFinalAccept(sum(finalAccept, FinalAcceptProgressVO::getTodoCount,
FinalAcceptProgressVO::getFailedCount));
FinalAcceptProgressVO::getFailedCount, FinalAcceptProgressVO::getXcfhxCount));
}, ThreadPoolUtil.REQUEST)); }, ThreadPoolUtil.REQUEST));
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join(); CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
return ret; return ret;


+ 7
- 6
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/status/TenderXcfhxApplyStatus.java View File

@@ -18,13 +18,14 @@ import java.util.Optional;
*/ */
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
public enum TenderXcfhxApplyStatus implements IStatus<Integer, String> {
public enum TenderXcfhxApplyStatus implements ITenderStatus {


TO_BE_SUBMIT_XCFHX_APPLY(301, "待信创符合性申请"),
ON_XCFHX_APPLY(302, "信创符合性申请中"),
XCFHX_APPLY_FAILED(303, "信创符合性申请不通过"),
XCFHX_APPLY_PASSED(304, "信创符合性申请通过");
TO_BE_SUBMIT_XCFHX_APPLY(null, 301, "待信创符合性申请"),
ON_XCFHX_APPLY(null, 302, "信创符合性申请中"),
XCFHX_APPLY_FAILED(null, 303, "信创符合性申请不通过"),
XCFHX_APPLY_PASSED(null, 304, "信创符合性申请通过");


private final ProjectStatus projectStatus;
private final Integer code; private final Integer code;
private final String desc; private final String desc;


@@ -33,7 +34,7 @@ public enum TenderXcfhxApplyStatus implements IStatus<Integer, String> {
} }


public static TenderXcfhxApplyStatus getNoNull(Integer code) { public static TenderXcfhxApplyStatus getNoNull(Integer code) {
return get(code).orElseThrow(() -> BizException.wrap("无效的信创符合性审查状态:%s",code));
return get(code).orElseThrow(() -> BizException.wrap("无效的信创符合性审查状态:%s", code));
} }


public static String getDesc(Integer code) { public static String getDesc(Integer code) {


+ 8
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/IPurchaseStatusChangeService.java View File

@@ -1,5 +1,6 @@
package com.hz.pm.api.projectlib.service; package com.hz.pm.api.projectlib.service;


import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.BizConst;
@@ -25,6 +26,13 @@ import java.util.Map;
* @since 2024-04-01 * @since 2024-04-01
*/ */
public interface IPurchaseStatusChangeService extends IService<PurchaseStatusChange> { public interface IPurchaseStatusChangeService extends IService<PurchaseStatusChange> {
default boolean exists(String projectCode, TenderStateChangeEvent event) {
Wrapper<PurchaseStatusChange> pscQuery = Wrappers.lambdaQuery(PurchaseStatusChange.class)
.eq(PurchaseStatusChange::getProjectCode, projectCode)
.eq(PurchaseStatusChange::getEvent, event);
return count(pscQuery) > 0;
}

default PurchaseStatusChange getLastOne(String projectCode, Collection<TenderStateChangeEvent> events) { default PurchaseStatusChange getLastOne(String projectCode, Collection<TenderStateChangeEvent> events) {
LambdaQueryWrapper<PurchaseStatusChange> pscQuery = Wrappers.lambdaQuery(PurchaseStatusChange.class) LambdaQueryWrapper<PurchaseStatusChange> pscQuery = Wrappers.lambdaQuery(PurchaseStatusChange.class)
.eq(PurchaseStatusChange::getProjectCode, projectCode) .eq(PurchaseStatusChange::getProjectCode, projectCode)


+ 1
- 2
hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/MhTodoHandedListener.java View File

@@ -1,7 +1,6 @@
package com.hz.pm.api.scheduler.listener; package com.hz.pm.api.scheduler.listener;


import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hz.pm.api.scheduler.listener.event.MhTodoHandedEvent; import com.hz.pm.api.scheduler.listener.event.MhTodoHandedEvent;
@@ -36,7 +35,7 @@ public class MhTodoHandedListener {
if (CollUtil.isNotEmpty(event.getBizIds())) { if (CollUtil.isNotEmpty(event.getBizIds())) {
wrapper.in(MhTodoRecord::getBizId, CollUtils.convert(event.getBizIds(), String::valueOf)); wrapper.in(MhTodoRecord::getBizId, CollUtils.convert(event.getBizIds(), String::valueOf));
} else { } else {
wrapper.eq(MhTodoRecord::getBizId, event.getBizId().toString());
wrapper.eq(MhTodoRecord::getBizId, event.getBizId());
} }
mhTodoRecordService.update(wrapper); mhTodoRecordService.update(wrapper);
} }


+ 1
- 0
hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/MhTodoSendListener.java View File

@@ -81,6 +81,7 @@ public class MhTodoSendListener {
.path(nextStep.getPagePath()) .path(nextStep.getPagePath())
.userName(user.getRealName()) .userName(user.getRealName())
.userId(createBy) .userId(createBy)
.activeName(ObjUtil.defaultIfNull(event.getActiveName(), todoType.getActiveName()))
.build(); .build();
mhTodoClient.addTodo(paramObj, user, nextStep, bizId.toString(), todoMsg); mhTodoClient.addTodo(paramObj, user, nextStep, bizId.toString(), todoMsg);
} }


+ 2
- 0
hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/event/MhTodoSendEvent.java View File

@@ -55,4 +55,6 @@ public class MhTodoSendEvent extends ApplicationEvent {


private Xinchuang xinchuang; private Xinchuang xinchuang;


private Integer activeName;

} }

Loading…
Cancel
Save