Selaa lähdekoodia

modify:

1. 适配改造、测试验证、系统自测合并为适配改造;
tags/24082201
WendyYang 4 kuukautta sitten
vanhempi
commit
bfd0435eb1
25 muutettua tiedostoa jossa 203 lisäystä ja 127 poistoa
  1. +6
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/action/AdaptStateChangeAction.java
  2. +8
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/action/ProjectStateChangeAction.java
  3. +5
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/action/SelfTestStateChangeAction.java
  4. +25
    -11
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/action/TenderStateChangeAction.java
  5. +5
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/action/TestValidStateChangeAction.java
  6. +6
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/builder/impl/ProjectStateMachineBuilderImpl.java
  7. +17
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/builder/impl/TenderStateMachineBuilderImpl.java
  8. +9
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/event/ProjectStateChangeEvent.java
  9. +6
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/event/TenderStateChangeEvent.java
  10. +10
    -14
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/PurchaseController.java
  11. +0
    -8
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/OperationManage.java
  12. +46
    -71
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java
  13. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/mapper/ProjectChangeHistoryMapper.java
  14. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/ProjectChangeHistory.java
  15. +4
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/PurchaseAdaptionListReq.java
  16. +23
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/PurchaseOrgConfirmReq.java
  17. +16
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/PurchaseAdaptionListVO.java
  18. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IProjectChangeHistoryService.java
  19. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/impl/ProjectChangeHistoryServiceImpl.java
  20. +1
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/stage/ProjectPurchaseHandle.java
  21. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/helper/ProjectChangeStopHelper.java
  22. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectChangeManage.java
  23. +2
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/status/ProjectStatus.java
  24. +4
    -4
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/status/TenderAdaptStatus.java
  25. +4
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/status/TenderStatus.java

+ 6
- 0
hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/action/AdaptStateChangeAction.java Näytä tiedosto

@@ -6,6 +6,7 @@ import com.hz.pm.api.common.statemachine.event.AdaptStateChangeEvent;
import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil;
import com.hz.pm.api.projectdeclared.model.entity.Purchase;
import com.hz.pm.api.projectlib.model.enumeration.status.TenderAdaptStatus;
import com.hz.pm.api.projectlib.model.enumeration.status.TenderSelfTestStatus;
import lombok.extern.slf4j.Slf4j;
import org.springframework.messaging.Message;
import org.springframework.statemachine.annotation.OnTransition;
@@ -32,24 +33,29 @@ public class AdaptStateChangeAction {
@OnTransition(source = "WITHOUT_ADAPT_INFO", target = "ADAPT_INFO_AUDIT")
public void SUBMIT_ADAPT_INFO(Message<AdaptStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderAdaptStatus.ADAPT_INFO_AUDIT.getCode());
purchase.setAdaptStatus(TenderAdaptStatus.ADAPT_INFO_AUDIT.getCode());
}

@OnTransition(source = "ADAPT_INFO_AUDIT", target = "ADAPT_INFO_PASSED")
public void ADAPT_INFO_PASSED(Message<AdaptStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderSelfTestStatus.WITHOUT_SELF_TEST_INFO.getCode());
purchase.setSelfTestStatus(TenderSelfTestStatus.WITHOUT_SELF_TEST_INFO.getCode());
purchase.setAdaptStatus(TenderAdaptStatus.ADAPT_INFO_PASSED.getCode());
}

@OnTransition(source = "ADAPT_INFO_AUDIT", target = "ADAPT_INFO_FAILED")
public void ADAPT_INFO_FAILED(Message<AdaptStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderAdaptStatus.ADAPT_INFO_FAILED.getCode());
purchase.setAdaptStatus(TenderAdaptStatus.ADAPT_INFO_FAILED.getCode());
}

@OnTransition(source = "ADAPT_INFO_FAILED", target = "ADAPT_INFO_AUDIT")
public void RESUBMIT_ADAPT_INFO(Message<AdaptStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderAdaptStatus.ADAPT_INFO_AUDIT.getCode());
purchase.setAdaptStatus(TenderAdaptStatus.ADAPT_INFO_AUDIT.getCode());
}



+ 8
- 2
hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/action/ProjectStateChangeAction.java Näytä tiedosto

@@ -131,8 +131,14 @@ public class ProjectStateChangeAction {
project.setStatus(ProjectStatus.ON_PURCHASING.getCode());
}

@OnTransition(source = "ON_PURCHASING", target = "TO_BE_FIRST_INSPECTED")
public void SUBMIT_OPERATION_PLAN(Message<ProjectStateChangeEvent> message) {
@OnTransition(source = "ON_PURCHASING", target = "ON_ADAPTING")
public void SUBMIT_PURCHASE_CONTRACT_RECORD(Message<ProjectStateChangeEvent> message) {
Project project = getProject(message);
project.setStatus(ProjectStatus.ON_ADAPTING.getCode());
}

@OnTransition(source = "ON_ADAPTING", target = "TO_BE_FIRST_INSPECTED")
public void SUBMIT_PURCHASE_ORG_CONFIRM(Message<ProjectStateChangeEvent> message) {
Project project = getProject(message);
project.setStatus(ProjectStatus.TO_BE_FIRST_INSPECTED.getCode());
}


+ 5
- 0
hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/action/SelfTestStateChangeAction.java Näytä tiedosto

@@ -6,6 +6,7 @@ import com.hz.pm.api.common.statemachine.event.SelfTestStateChangeEvent;
import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil;
import com.hz.pm.api.projectdeclared.model.entity.Purchase;
import com.hz.pm.api.projectlib.model.enumeration.status.TenderSelfTestStatus;
import com.hz.pm.api.projectlib.model.enumeration.status.TenderTestValidStatus;
import lombok.extern.slf4j.Slf4j;
import org.springframework.messaging.Message;
import org.springframework.statemachine.annotation.OnTransition;
@@ -32,24 +33,28 @@ public class SelfTestStateChangeAction {
@OnTransition(source = "WITHOUT_SELF_TEST_INFO", target = "SELF_TEST_INFO_AUDIT")
public void SUBMIT_SELF_TEST_INFO(Message<SelfTestStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderSelfTestStatus.SELF_TEST_INFO_AUDIT.getCode());
purchase.setSelfTestStatus(TenderSelfTestStatus.SELF_TEST_INFO_AUDIT.getCode());
}

@OnTransition(source = "SELF_TEST_INFO_AUDIT", target = "SELF_TEST_INFO_PASSED")
public void SELF_TEST_INFO_PASSED(Message<SelfTestStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderTestValidStatus.WITHOUT_TEST_VALID_INFO.getCode());
purchase.setSelfTestStatus(TenderSelfTestStatus.SELF_TEST_INFO_PASSED.getCode());
}

@OnTransition(source = "SELF_TEST_INFO_AUDIT", target = "SELF_TEST_INFO_FAILED")
public void SELF_TEST_INFO_FAILED(Message<SelfTestStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderSelfTestStatus.SELF_TEST_INFO_FAILED.getCode());
purchase.setSelfTestStatus(TenderSelfTestStatus.SELF_TEST_INFO_FAILED.getCode());
}

@OnTransition(source = "SELF_TEST_INFO_FAILED", target = "SELF_TEST_INFO_AUDIT")
public void RESUBMIT_SELF_TEST_INFO(Message<SelfTestStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderSelfTestStatus.WITHOUT_SELF_TEST_INFO.getCode());
purchase.setSelfTestStatus(TenderSelfTestStatus.SELF_TEST_INFO_AUDIT.getCode());
}



+ 25
- 11
hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/action/TenderStateChangeAction.java Näytä tiedosto

@@ -2,9 +2,10 @@ package com.hz.pm.api.common.statemachine.action;

import cn.hutool.core.lang.Assert;
import com.hz.pm.api.common.statemachine.builder.impl.TenderStateMachineBuilderImpl;
import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent;
import com.hz.pm.api.common.statemachine.event.TenderStateChangeEvent;
import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil;
import com.hz.pm.api.projectdeclared.model.entity.Purchase;
import com.hz.pm.api.projectlib.model.enumeration.status.TenderAdaptStatus;
import com.hz.pm.api.projectlib.model.enumeration.status.TenderStatus;
import lombok.extern.slf4j.Slf4j;
import org.springframework.messaging.Message;
@@ -23,7 +24,7 @@ import org.springframework.statemachine.annotation.WithStateMachine;
@WithStateMachine(id = TenderStateMachineBuilderImpl.MACHINE_ID)
public class TenderStateChangeAction {

private Purchase getPurchaseInfo(Message<ProjectStateChangeEvent> message) {
public static Purchase getPurchaseInfo(Message<TenderStateChangeEvent> message) {
Purchase purchase = (Purchase) message.getHeaders().get(TenderStateMachineUtil.PURCHASE);
Assert.notNull(purchase, "未获取到需要状态变更的标段信息");
return purchase;
@@ -35,29 +36,42 @@ public class TenderStateChangeAction {
* @param message \
*/
@OnTransition(source = "TO_BE_SUBMIT_PURCHASE_CONSTRUCTION_INFO", target = "TO_BE_SUBMIT_OPERATION_PLAN")
public void SUBMIT_PURCHASE_CONSTRUCTION_INFO(Message<ProjectStateChangeEvent> message) {
public void SUBMIT_PURCHASE_CONSTRUCTION_INFO(Message<TenderStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setAdaptStatus(TenderAdaptStatus.WITHOUT_ADAPT_INFO.getCode());
purchase.setStatus(TenderStatus.TO_BE_SUBMIT_OPERATION_PLAN.getCode());
}

/**
* 填写实施计划
* 填写合同信息
*
* @param message \
*/
@OnTransition(source = "TO_BE_SUBMIT_OPERATION_PLAN", target = "TO_BE_SUBMIT_FIRST_INSPECTED_INFO")
public void SUBMIT_OPERATION_PLAN(Message<ProjectStateChangeEvent> message) {
@OnTransition(source = "TO_BE_SUBMIT_PURCHASE_CONSTRUCTION_INFO", target = "TO_BE_SUBMIT_FIRST_INSPECTED_INFO")
public void SUBMIT_PURCHASE_CONSTRUCTION_INFO2(Message<TenderStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderStatus.TO_BE_SUBMIT_FIRST_INSPECTED_INFO.getCode());
}

/**
* 填写实施计划
*
* @param message \
*/
@OnTransition(source = "TO_BE_SUBMIT_OPERATION_PLAN", target = "WITHOUT_ADAPT_INFO")
public void SUBMIT_OPERATION_PLAN(Message<TenderStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setAdaptStatus(TenderAdaptStatus.WITHOUT_ADAPT_INFO.getCode());
purchase.setStatus(TenderAdaptStatus.WITHOUT_ADAPT_INFO.getCode());
}

/**
* 上传初验材料
*
* @param message \
*/
@OnTransition(source = "TO_BE_SUBMIT_FIRST_INSPECTED_INFO", target = "TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY")
public void SUBMIT_FIRST_INSPECTED_FILES(Message<ProjectStateChangeEvent> message) {
public void SUBMIT_FIRST_INSPECTED_FILES(Message<TenderStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderStatus.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY.getCode());
}
@@ -68,7 +82,7 @@ public class TenderStateChangeAction {
* @param message \
*/
@OnTransition(source = "TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY", target = "ON_FINALLY_INSPECTED_APPLY")
public void SUBMIT_FINALLY_INSPECTED(Message<ProjectStateChangeEvent> message) {
public void SUBMIT_FINALLY_INSPECTED(Message<TenderStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderStatus.ON_FINALLY_INSPECTED_APPLY.getCode());
}
@@ -79,7 +93,7 @@ public class TenderStateChangeAction {
* @param message \
*/
@OnTransition(source = "FINALLY_INSPECTED_FAILED", target = "ON_FINALLY_INSPECTED_APPLY")
public void RESUBMIT_FINALLY_INSPECTED(Message<ProjectStateChangeEvent> message) {
public void RESUBMIT_FINALLY_INSPECTED(Message<TenderStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderStatus.ON_FINALLY_INSPECTED_APPLY.getCode());
}
@@ -90,7 +104,7 @@ public class TenderStateChangeAction {
* @param message \
*/
@OnTransition(source = "ON_FINALLY_INSPECTED_APPLY", target = "FINALLY_INSPECTED_PASSED")
public void FINALLY_INSPECTED_PASSED(Message<ProjectStateChangeEvent> message) {
public void FINALLY_INSPECTED_PASSED(Message<TenderStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderStatus.FINALLY_INSPECTED_PASSED.getCode());
}
@@ -101,7 +115,7 @@ public class TenderStateChangeAction {
* @param message \
*/
@OnTransition(source = "ON_FINALLY_INSPECTED_APPLY", target = "FINALLY_INSPECTED_FAILED")
public void FINALLY_INSPECTED_FAILED(Message<ProjectStateChangeEvent> message) {
public void FINALLY_INSPECTED_FAILED(Message<TenderStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderStatus.FINALLY_INSPECTED_FAILED.getCode());
}


+ 5
- 0
hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/action/TestValidStateChangeAction.java Näytä tiedosto

@@ -5,6 +5,7 @@ import com.hz.pm.api.common.statemachine.builder.impl.TestValidStateMachineBuild
import com.hz.pm.api.common.statemachine.event.TestValidStateChangeEvent;
import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil;
import com.hz.pm.api.projectdeclared.model.entity.Purchase;
import com.hz.pm.api.projectlib.model.enumeration.status.TenderStatus;
import com.hz.pm.api.projectlib.model.enumeration.status.TenderTestValidStatus;
import lombok.extern.slf4j.Slf4j;
import org.springframework.messaging.Message;
@@ -32,24 +33,28 @@ public class TestValidStateChangeAction {
@OnTransition(source = "WITHOUT_TEST_VALID_INFO", target = "TEST_VALID_INFO_AUDIT")
public void SUBMIT_TEST_VALID_INFO(Message<TestValidStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderTestValidStatus.TEST_VALID_INFO_AUDIT.getCode());
purchase.setTestValidStatus(TenderTestValidStatus.TEST_VALID_INFO_AUDIT.getCode());
}

@OnTransition(source = "TEST_VALID_INFO_AUDIT", target = "TEST_VALID_INFO_PASSED")
public void TEST_VALID_INFO_PASSED(Message<TestValidStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderStatus.WAIT_ORG_CONFIRM.getCode());
purchase.setTestValidStatus(TenderTestValidStatus.TEST_VALID_INFO_PASSED.getCode());
}

@OnTransition(source = "TEST_VALID_INFO_AUDIT", target = "TEST_VALID_INFO_FAILED")
public void TEST_VALID_INFO_FAILED(Message<TestValidStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderTestValidStatus.TEST_VALID_INFO_FAILED.getCode());
purchase.setTestValidStatus(TenderTestValidStatus.TEST_VALID_INFO_FAILED.getCode());
}

@OnTransition(source = "TEST_VALID_INFO_FAILED", target = "TEST_VALID_INFO_AUDIT")
public void RESUBMIT_TEST_VALID_INFO(Message<TestValidStateChangeEvent> message) {
Purchase purchase = getPurchaseInfo(message);
purchase.setStatus(TenderTestValidStatus.TEST_VALID_INFO_AUDIT.getCode());
purchase.setTestValidStatus(TenderTestValidStatus.TEST_VALID_INFO_AUDIT.getCode());
}



+ 6
- 1
hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/builder/impl/ProjectStateMachineBuilderImpl.java Näytä tiedosto

@@ -146,8 +146,13 @@ public class ProjectStateMachineBuilderImpl implements BaseStateMachineBuilder<P
// 填写试试计划 -> 待初验
.withExternal()
.source(ProjectStatus.ON_PURCHASING)
.target(ProjectStatus.ON_ADAPTING)
.event(ProjectStateChangeEvent.SUBMIT_PURCHASE_CONTRACT_RECORD).and()
// 填写试试计划 -> 待初验
.withExternal()
.source(ProjectStatus.ON_ADAPTING)
.target(ProjectStatus.TO_BE_FIRST_INSPECTED)
.event(ProjectStateChangeEvent.SUBMIT_OPERATION_PLAN).and()
.event(ProjectStateChangeEvent.SUBMIT_PURCHASE_ORG_CONFIRM).and()
// 上传初验材料
.withExternal()
.source(ProjectStatus.TO_BE_FIRST_INSPECTED)


+ 17
- 1
hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/builder/impl/TenderStateMachineBuilderImpl.java Näytä tiedosto

@@ -1,8 +1,10 @@
package com.hz.pm.api.common.statemachine.builder.impl;

import com.hz.pm.api.common.statemachine.action.TenderStateChangeAction;
import com.hz.pm.api.common.statemachine.builder.BaseStateMachineBuilder;
import com.hz.pm.api.common.statemachine.event.TenderStateChangeEvent;
import com.hz.pm.api.projectdeclared.model.entity.Purchase;
import com.hz.pm.api.projectdeclared.model.enumerization.BidTypeEnum;
import com.hz.pm.api.projectlib.model.enumeration.status.TenderStatus;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -75,12 +77,26 @@ public class TenderStateMachineBuilderImpl implements BaseStateMachineBuilder<Pu
.target(TenderStatus.TO_BE_SUBMIT_OPERATION_PLAN)
.event(TenderStateChangeEvent.SUBMIT_PURCHASE_CONSTRUCTION_INFO)
.and()
.withExternal()
.source(TenderStatus.TO_BE_SUBMIT_PURCHASE_CONSTRUCTION_INFO)
.target(TenderStatus.TO_BE_SUBMIT_FIRST_INSPECTED_INFO)
.event(TenderStateChangeEvent.SUBMIT_PURCHASE_CONSTRUCTION_INFO)
.guard(ctx -> {
Purchase purchase = TenderStateChangeAction.getPurchaseInfo(ctx.getMessage());
return !BidTypeEnum.BUILD_APP.eq(purchase.getBidType());
})
.and()
// 填写实施计划
.withExternal()
.source(TenderStatus.TO_BE_SUBMIT_OPERATION_PLAN)
.target(TenderStatus.TO_BE_SUBMIT_FIRST_INSPECTED_INFO)
.target(TenderStatus.WITHOUT_ADAPT_INFO)
.event(TenderStateChangeEvent.SUBMIT_OPERATION_PLAN)
.and()
.withExternal()
.source(TenderStatus.WAIT_ORG_CONFIRM)
.target(TenderStatus.TO_BE_SUBMIT_FIRST_INSPECTED_INFO)
.event(TenderStateChangeEvent.SUBMIT_PURCHASE_ORG_CONFIRM)
.and()
// 上传初验材料
.withExternal()
.source(TenderStatus.TO_BE_SUBMIT_FIRST_INSPECTED_INFO)


+ 9
- 2
hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/event/ProjectStateChangeEvent.java Näytä tiedosto

@@ -101,11 +101,18 @@ public enum ProjectStateChangeEvent implements AbstractStateChangeEvent {
SUBMIT_PURCHASE_NOTICE(ProjectStatus.TO_BE_PURCHASED.getCode(), null, null),

/**
* 填写采购合同备案
*
* @see ProjectStateChangeAction#SUBMIT_PURCHASE_CONTRACT_RECORD(Message)
*/
SUBMIT_PURCHASE_CONTRACT_RECORD(ProjectStatus.ON_PURCHASING.getCode(), null, null),

/**
* 填写实施计划
*
* @see ProjectStateChangeAction#SUBMIT_OPERATION_PLAN(Message)
* @see ProjectStateChangeAction#SUBMIT_PURCHASE_ORG_CONFIRM(Message)
*/
SUBMIT_OPERATION_PLAN(ProjectStatus.ON_PURCHASING.getCode(), null, null),
SUBMIT_PURCHASE_ORG_CONFIRM(ProjectStatus.ON_ADAPTING.getCode(), null, null),

/**
* 上传初验材料


+ 6
- 0
hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/event/TenderStateChangeEvent.java Näytä tiedosto

@@ -23,6 +23,12 @@ public enum TenderStateChangeEvent implements AbstractStateChangeEvent {
* 填写实施计划
*/
SUBMIT_OPERATION_PLAN(103, null, null),

/**
* 单位确认
*/
SUBMIT_PURCHASE_ORG_CONFIRM(104, null, null),

/**
* 上传初验材料
*/


+ 10
- 14
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/PurchaseController.java Näytä tiedosto

@@ -8,7 +8,7 @@ import com.hz.pm.api.projectdeclared.model.dto.XcfhxApplySaveDTO;
import com.hz.pm.api.projectdeclared.model.req.*;
import com.hz.pm.api.projectdeclared.model.req.SubmitPurchaseNoticeReq.PurchaseNoticeTenderDTO;
import com.hz.pm.api.projectdeclared.model.vo.PurchaseVO;
import com.hz.pm.api.projectdeclared.model.vo.TestValidListVO;
import com.hz.pm.api.projectdeclared.model.vo.PurchaseAdaptionListVO;
import com.hz.pm.api.projectdeclared.model.vo.XcfhxApplyListVO;
import com.hz.pm.api.projectdeclared.model.vo.XinchuangVO;
import com.hz.pm.api.projectlib.model.req.ProjectListReq;
@@ -23,6 +23,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.UnsupportedEncodingException;
import java.util.List;

@@ -81,21 +82,9 @@ public class PurchaseController {
purchaseManage.submitPurchaseRecord(req);
}

@GetMapping("/pageTestValid")
@ApiOperation("获取测试验证列表")
public PageVo<TestValidListVO> pageTestValid(TestValidListReq req) {
return purchaseManage.testValidList(req);
}

@GetMapping("/pageSelfTest")
@ApiOperation("获取系统自测列表")
public PageVo<TestValidListVO> pageSelfTest(TestValidListReq req) {
return purchaseManage.selfTestList(req);
}

@GetMapping("/pageAdaption")
@ApiOperation("获取适配改造列表")
public PageVo<TestValidListVO> pageAdaption(TestValidListReq req) {
public PageVo<PurchaseAdaptionListVO> pageAdaption(PurchaseAdaptionListReq req) {
return purchaseManage.adaptList(req);
}

@@ -164,4 +153,11 @@ public class PurchaseController {
return purchaseManage.listPurchaseIntention(unitId);
}

@PostMapping("/orgConfirm")
@ApiOperation("单位确认")
@WebLog("单位确认")
public void orgConfirm(@RequestBody @Valid PurchaseOrgConfirmReq req){
purchaseManage.purchaseOrgConfirm(req);
}

}

+ 0
- 8
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/OperationManage.java Näytä tiedosto

@@ -91,14 +91,6 @@ public class OperationManage {
operation.setUpdateOn(now);
operation.setUpdateBy(user.getUsername());
operationService.saveOrUpdate(operation);
Wrapper<Operation> oQuery = Wrappers.lambdaQuery(Operation.class)
.eq(Operation::getProjectId, project.getId())
.isNotNull(Operation::getProjectStartDate);
if (operationService.count(oQuery) == purchaseMap.size()) {
// 修改项目状态
projectStateMachineUtil.pass(project);
projectService.updateById(project);
}
// 修改标段状态
tenderStateMachineUtil.pass(purchase);
purchaseService.updateById(purchase);


+ 46
- 71
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java Näytä tiedosto

@@ -1,6 +1,7 @@
package com.hz.pm.api.projectdeclared.manage;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.io.FileUtil;
@@ -28,6 +29,7 @@ import com.hz.pm.api.external.MhApiClient;
import com.hz.pm.api.external.MhFileClient;
import com.hz.pm.api.external.model.dto.MhPurchaseIntentionDTO;
import com.hz.pm.api.external.model.dto.MhPurchaseNoticeDTO;
import com.hz.pm.api.external.model.enumeration.MhUnitStripEnum;
import com.hz.pm.api.projectdeclared.helper.MhXchxFileHelper;
import com.hz.pm.api.projectdeclared.model.dto.DeclaredProjectExportDTO;
import com.hz.pm.api.projectdeclared.model.dto.PurchaseSaveDTO;
@@ -40,7 +42,7 @@ import com.hz.pm.api.projectdeclared.model.enumerization.PurchaseSourceTypeEnum;
import com.hz.pm.api.projectdeclared.model.req.*;
import com.hz.pm.api.projectdeclared.model.req.SubmitPurchaseNoticeReq.PurchaseNoticeTenderDTO;
import com.hz.pm.api.projectdeclared.model.vo.PurchaseVO;
import com.hz.pm.api.projectdeclared.model.vo.TestValidListVO;
import com.hz.pm.api.projectdeclared.model.vo.PurchaseAdaptionListVO;
import com.hz.pm.api.projectdeclared.model.vo.XcfhxApplyListVO;
import com.hz.pm.api.projectdeclared.model.vo.XinchuangVO;
import com.hz.pm.api.projectdeclared.service.*;
@@ -361,9 +363,6 @@ public class PurchaseManage {
if (purchase.getId() == null) {
purchase.setCreateBy(user.getUserIdStr());
}
purchase.setSelfTestStatus(TenderSelfTestStatus.WITHOUT_SELF_TEST_INFO.getCode());
purchase.setTestValidStatus(TenderTestValidStatus.WITHOUT_TEST_VALID_INFO.getCode());
purchase.setAdaptStatus(TenderAdaptStatus.WITHOUT_ADAPT_INFO.getCode());
purchase.setStatus(TenderStatus.TO_BE_SUBMIT_PURCHASE_CONSTRUCTION_INFO.getCode());
purchase.setXcfhxApplyStatus(TenderXcfhxApplyStatus.TO_BE_SUBMIT_XCFHX_APPLY.getCode());
if (Boolean.TRUE.equals(mhPurchaseNoticeOpen) && Boolean.TRUE.equals(w.getPublishMhNotice())) {
@@ -477,26 +476,16 @@ public class PurchaseManage {
projectService.updateById(project);
}

private PageVo<TestValidListVO> queryData(TestValidListReq req,
SFunction<Purchase, Integer> function,
String actualTimeColumn) {
private PageVo<PurchaseAdaptionListVO> queryData(PurchaseAdaptionListReq req) {
LambdaQueryWrapper<Purchase> query = Wrappers.lambdaQuery(Purchase.class)
.like(StrUtil.isNotBlank(req.getBidName()), Purchase::getBidName, req.getBidName())
.le(req.getCreateOnMax() != null, Purchase::getCreateOn, req.getCreateOnMax())
.ge(req.getCreateOnMin() != null, Purchase::getCreateOn, req.getCreateOnMin())
.eq(req.getStatus() != null, function, req.getStatus())
.eq(req.getStatus() != null, Purchase::getStatus, req.getStatus())
.eq(Purchase::getBidType, BidTypeEnum.BUILD_APP.getCode())
.notExists(ExistsSqlConst.PURCHASE_EXISTS_PROJECT
+ "and np.stage = {0}", ProjectStatus.STOPPED.getCode())
.isNotNull(function)
.orderByDesc(Purchase::getCreateOn);
boolean display = !Boolean.FALSE.equals(req.getDisplay());
String existsSql = String.format(ExistsSqlConst.PURCHASE_EXISTS_OPERATION + " and npo.%s is not null", actualTimeColumn);
if (display) {
query.and(q1 -> q1.eq(Purchase::getBidType, BidTypeEnum.BUILD_APP.getCode())
.or(q2 -> q2.exists(existsSql)));
} else {
query.ne(Purchase::getBidType, BidTypeEnum.BUILD_APP.getCode()).notExists(existsSql);
}
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
if (!purchaseService.buildPurchaseQueryPermission(query, user)) {
return PageVo.empty();
@@ -506,74 +495,34 @@ public class PurchaseManage {
return PageVo.empty();
}
List<Purchase> records = page.getRecords();
Map<Long, LocalDateTime> createOnMap = new HashMap<>();
if (display) {
List<Long> bidIds = CollUtils.fieldList(records, Purchase::getId);
AbstractStateChangeEvent event;
if ("actual_test_valid_time".equals(actualTimeColumn)) {
event = TestValidStateChangeEvent.SUBMIT_TEST_VALID_INFO;
} else if ("actual_adaption_time".equals(actualTimeColumn)) {
event = AdaptStateChangeEvent.SUBMIT_ADAPT_INFO;
} else {
event = SelfTestStateChangeEvent.SUBMIT_SELF_TEST_INFO;
}
Wrapper<PurchaseStatusChange> pscQuery = Wrappers.lambdaQuery(PurchaseStatusChange.class)
.in(PurchaseStatusChange::getEvent, event.name())
.in(PurchaseStatusChange::getBidId, bidIds)
.orderByAsc(PurchaseStatusChange::getCreateOn);
List<PurchaseStatusChange> changes = purchaseStatusChangeService.list(pscQuery);
Map<Long, PurchaseStatusChange> mapByBidId = BizUtils.groupFirstMap(changes,
PurchaseStatusChange::getBidId, Comparator.comparing(PurchaseStatusChange::getCreateOn));
records.forEach(w -> {
if (BidTypeEnum.BUILD_APP.getCode().equals(w.getBidType())) {
createOnMap.put(w.getId(), w.getCreateOn());
} else {
PurchaseStatusChange change = mapByBidId.get(w.getId());
if (change != null) {
createOnMap.put(w.getId(), change.getCreateOn());
}
}
});
}
List<Long> projectIds = CollUtils.fieldList(records, Purchase::getProjectId);
List<Project> projects = projectService.listByIds(projectIds);
Map<Long, Project> projectMap = CollUtils.listToMap(projects, Project::getId);
Map<Long, Contract> contractMap = contractService.listByProjectIds(projectIds);
List<TestValidListVO> data = records.stream().map(w -> {
TestValidListVO item = new TestValidListVO();
item.setBidId(w.getId());
List<PurchaseAdaptionListVO> data = records.stream().map(w -> {
PurchaseAdaptionListVO adaption = new PurchaseAdaptionListVO();
adaption.setBidId(w.getId());
Project project = projectMap.get(w.getProjectId());
if (project != null) {
item.setProjectName(project.getProjectName());
item.setBuildOrg(project.getBuildOrgName());
}
item.setBizName(w.getBidName());
item.setProjectId(w.getProjectId());
adaption.setProjectName(project.getProjectName());
adaption.setBuildOrg(project.getBuildOrgName());
adaption.setProjectStatus(project.getStatus());
adaption.setBizName(w.getBidName());
adaption.setProjectId(w.getProjectId());
String projectCode = ProjectIdCodeCacheUtil.get(w.getProjectId());
item.setProjectCode(projectCode);
adaption.setProjectCode(projectCode);
adaption.setUnitStripName(MhUnitStripEnum.getVal(project.getUnitStrip()));
Contract contract = contractMap.get(w.getId());
if (contract != null) {
item.setContractAmount(contract.getTotalAmount());
}
item.setStatus(function.apply(w));
if (display) {
item.setCreateOn(createOnMap.get(w.getId()));
adaption.setContractAmount(contract.getTotalAmount());
}
return item;
return adaption;
}).collect(Collectors.toList());
return PageVo.of(data, page.getTotal());
}

public PageVo<TestValidListVO> testValidList(TestValidListReq req) {
return queryData(req, Purchase::getTestValidStatus, "actual_test_valid_time");
}

public PageVo<TestValidListVO> adaptList(TestValidListReq req) {
return queryData(req, Purchase::getAdaptStatus, "actual_adaption_time");
}

public PageVo<TestValidListVO> selfTestList(TestValidListReq req) {
return queryData(req, Purchase::getSelfTestStatus, "actual_self_test_time");
public PageVo<PurchaseAdaptionListVO> adaptList(PurchaseAdaptionListReq req) {
return queryData(req);
}

@Transactional(rollbackFor = Exception.class)
@@ -832,4 +781,30 @@ public class PurchaseManage {
public void exportXcfhFile(String code, HttpServletResponse response) throws UnsupportedEncodingException {
mhXchxFileHelper.exportReport(code, response);
}

@Transactional(rollbackFor = Exception.class)
public synchronized void purchaseOrgConfirm(PurchaseOrgConfirmReq req) {
Purchase purchase = purchaseService.getById(req.getBidId());
if (!TenderStatus.WAIT_ORG_CONFIRM.eq(purchase.getStatus())) {
throw BizException.wrap("该标段不支持单位确认");
}
tenderStateMachineUtil.pass(purchase);
purchaseService.updateById(purchase);
LambdaQueryWrapper<Purchase> purchaseQuery = Wrappers.lambdaQuery(Purchase.class)
.select(Purchase::getStatus, Purchase::getBidType)
.eq(Purchase::getProjectId, purchase.getProjectId());
List<Purchase> purchases = purchaseService.list(purchaseQuery);
boolean changeProjectStatus = CollUtil.allMatch(purchases, w -> {
if (!BidTypeEnum.BUILD_APP.eq(w.getBidType())) {
return true;
}
return TenderStatus.TO_BE_SUBMIT_FIRST_INSPECTED_INFO.eq(w.getStatus());
});
if (changeProjectStatus) {
Project project = projectService.getNewestNoNull(purchase.getProjectId());
projectStateMachineUtil.pass(project);
projectService.updateById(project);
}
}

}

+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/mapper/ProjectChangeHistoryMapper.java Näytä tiedosto

@@ -1,6 +1,6 @@
package com.hz.pm.api.projectdeclared.mapper;

import com.hz.pm.api.projectdeclared.entity.ProjectChangeHistory;
import com.hz.pm.api.projectdeclared.model.entity.ProjectChangeHistory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

/**


hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/entity/ProjectChangeHistory.java → hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/ProjectChangeHistory.java Näytä tiedosto

@@ -1,4 +1,4 @@
package com.hz.pm.api.projectdeclared.entity;
package com.hz.pm.api.projectdeclared.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;

hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/TestValidListReq.java → hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/PurchaseAdaptionListReq.java Näytä tiedosto

@@ -1,6 +1,7 @@
package com.hz.pm.api.projectdeclared.model.req;

import com.ningdatech.basic.model.PagePo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
@@ -9,7 +10,7 @@ import java.time.LocalDateTime;

/**
* <p>
* TestValidListReq
* PurchaseAdaptionListReq
* </p>
*
* @author WendyYang
@@ -17,10 +18,11 @@ import java.time.LocalDateTime;
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class TestValidListReq extends PagePo {
public class PurchaseAdaptionListReq extends PagePo {

private String bidName;

@ApiModelProperty("标段状态")
private Integer status;

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

+ 23
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/PurchaseOrgConfirmReq.java Näytä tiedosto

@@ -0,0 +1,23 @@
package com.hz.pm.api.projectdeclared.model.req;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;

/**
* <p>
* OrgConfirmReq
* </p>
*
* @author WendyYang
* @since 00:44 2024/8/17
*/
@Data
public class PurchaseOrgConfirmReq {

@ApiModelProperty("标段ID")
@NotNull(message = "标段ID不能为空")
private Long bidId;

}

hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/TestValidListVO.java → hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/PurchaseAdaptionListVO.java Näytä tiedosto

@@ -1,21 +1,29 @@
package com.hz.pm.api.projectdeclared.model.vo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Tolerate;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
* <p>
* TestValidListVO
* PurchaseAdaptionListVO
* </p>
*
* @author WendyYang
* @since 14:43 2024/3/27
*/
@Data
public class TestValidListVO {
@Builder
public class PurchaseAdaptionListVO {

@Tolerate
public PurchaseAdaptionListVO() {
// 默认构造方法
}

@ApiModelProperty("标段ID")
private Long bidId;
@@ -35,6 +43,12 @@ public class TestValidListVO {
@ApiModelProperty("创建时间")
private LocalDateTime createOn;

@ApiModelProperty("所属领域")
private String unitStripName;

@ApiModelProperty("项目状态")
private Integer projectStatus;

private Long projectId;

private String projectCode;

+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IProjectChangeHistoryService.java Näytä tiedosto

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

import com.hz.pm.api.projectdeclared.entity.ProjectChangeHistory;
import com.hz.pm.api.projectdeclared.model.entity.ProjectChangeHistory;
import com.baomidou.mybatisplus.extension.service.IService;

/**


+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/impl/ProjectChangeHistoryServiceImpl.java Näytä tiedosto

@@ -1,6 +1,6 @@
package com.hz.pm.api.projectdeclared.service.impl;

import com.hz.pm.api.projectdeclared.entity.ProjectChangeHistory;
import com.hz.pm.api.projectdeclared.model.entity.ProjectChangeHistory;
import com.hz.pm.api.projectdeclared.mapper.ProjectChangeHistoryMapper;
import com.hz.pm.api.projectdeclared.service.IProjectChangeHistoryService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;


+ 1
- 2
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/stage/ProjectPurchaseHandle.java Näytä tiedosto

@@ -17,7 +17,6 @@ import org.springframework.stereotype.Component;

import java.util.List;

import static com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent.SUBMIT_OPERATION_PLAN;
import static com.hz.pm.api.projectlib.model.enumeration.status.ProjectStatus.ON_PURCHASING;
import static com.hz.pm.api.projectlib.model.enumeration.status.ProjectStatus.TO_BE_PURCHASED;

@@ -61,7 +60,7 @@ public class ProjectPurchaseHandle extends AbstractProcessHandle {
detail.setStepStatus(StepStatusEnum.ON_GOING);
} else {
// 根据采购备案的时间获取
ProjectStatusChange change = ctx.getProjectStateChange(SUBMIT_OPERATION_PLAN);
ProjectStatusChange change = ctx.getProjectStateChange(ProjectStateChangeEvent.SUBMIT_PURCHASE_CONTRACT_RECORD);
if (change == null) {
detail.setStepStatus(StepStatusEnum.NOT_START);
} else {


+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/helper/ProjectChangeStopHelper.java Näytä tiedosto

@@ -12,7 +12,7 @@ import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent;
import com.hz.pm.api.common.statemachine.event.TenderStateChangeEvent;
import com.hz.pm.api.common.util.BizUtils;
import com.hz.pm.api.projectdeclared.entity.ProjectChangeHistory;
import com.hz.pm.api.projectdeclared.model.entity.ProjectChangeHistory;
import com.hz.pm.api.projectdeclared.model.dto.*;
import com.hz.pm.api.projectdeclared.model.entity.Contract;
import com.hz.pm.api.projectdeclared.model.entity.Operation;


+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectChangeManage.java Näytä tiedosto

@@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.external.model.enumeration.MhUnitStripEnum;
import com.hz.pm.api.projectdeclared.entity.ProjectChangeHistory;
import com.hz.pm.api.projectdeclared.model.entity.ProjectChangeHistory;
import com.hz.pm.api.projectdeclared.manage.DeclaredProjectHelper;
import com.hz.pm.api.projectdeclared.model.dto.*;
import com.hz.pm.api.projectdeclared.model.vo.*;


+ 2
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/status/ProjectStatus.java Näytä tiedosto

@@ -55,6 +55,8 @@ public enum ProjectStatus implements IStatus<Integer, String> {
TO_BE_PURCHASED(20001, "待采购"),
ON_PURCHASING(20007, "采购中"),

ON_ADAPTING(20010, "适配改造中"),

TO_BE_FIRST_INSPECTED(20008, "待上传初验材料"),
ON_PILOT_RUNNING(20009, "试运行中"),



+ 4
- 4
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/status/TenderAdaptStatus.java Näytä tiedosto

@@ -20,10 +20,10 @@ import java.util.Optional;
@AllArgsConstructor
public enum TenderAdaptStatus implements IStatus<Integer, String> {

WITHOUT_ADAPT_INFO(2100, "待填写适配改造信息"),
ADAPT_INFO_AUDIT(2101, "适配改造信息审核中"),
ADAPT_INFO_FAILED(2102, "适配改造信息审核失败"),
ADAPT_INFO_PASSED(2103, "适配改造信息审核通过");
WITHOUT_ADAPT_INFO(2100, "待上传开工文件"),
ADAPT_INFO_AUDIT(2101, "开工文件审核中"),
ADAPT_INFO_FAILED(2102, "开工文件审核失败"),
ADAPT_INFO_PASSED(2103, "开工文件审核通过");

private final Integer code;
private final String desc;


+ 4
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/status/TenderStatus.java Näytä tiedosto

@@ -21,7 +21,10 @@ import java.util.Optional;
public enum TenderStatus implements IStatus<Integer, String> {

TO_BE_SUBMIT_PURCHASE_CONSTRUCTION_INFO(ProjectStatus.ON_PURCHASING, 101, "待填写采购&合同信息"),
TO_BE_SUBMIT_OPERATION_PLAN(ProjectStatus.ON_PURCHASING, 103, "待填写实施计划"),
TO_BE_SUBMIT_OPERATION_PLAN(ProjectStatus.ON_ADAPTING, 103, "待填写实施计划"),
// 衔接状态
WITHOUT_ADAPT_INFO(ProjectStatus.ON_ADAPTING, TenderAdaptStatus.WITHOUT_ADAPT_INFO.getCode(), "待填写适配改造信息"),
WAIT_ORG_CONFIRM(ProjectStatus.ON_ADAPTING, 104, "待单位确认"),
TO_BE_SUBMIT_FIRST_INSPECTED_INFO(ProjectStatus.TO_BE_FIRST_INSPECTED, 201, "待上传初验材料"),
TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY(ProjectStatus.ON_PILOT_RUNNING, 401, "待终验申报"),
ON_FINALLY_INSPECTED_APPLY(ProjectStatus.ON_FINALLY_INSPECTED, 501, "终验申报中"),


Loading…
Peruuta
Tallenna