Selaa lähdekoodia

信创符合性申请审批修改

tags/24082201
WendyYang 1 vuosi sitten
vanhempi
commit
e9efe476ca
22 muutettua tiedostoa jossa 337 lisäystä ja 251 poistoa
  1. +3
    -15
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/action/ProjectStateChangeAction.java
  2. +2
    -17
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/builder/impl/ProjectStateMachineBuilderImpl.java
  3. +1
    -9
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/event/ProjectStateChangeEvent.java
  4. +0
    -59
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/AbstractProcessBusinessHandle.java
  5. +92
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/AbstractProcessHandle.java
  6. +5
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ApprovalAmountHandle.java
  7. +38
    -24
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/FinalInspectionHandle.java
  8. +18
    -16
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/FirstInspectedHandle.java
  9. +30
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/HandleParamContext.java
  10. +19
    -16
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/PilotRunningHandle.java
  11. +9
    -7
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ProcessProgressContext.java
  12. +22
    -16
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ProjectAdaptionHandle.java
  13. +4
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ProjectApprovalHandle.java
  14. +4
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ProjectDeclareHandle.java
  15. +11
    -6
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ProjectPurchaseHandle.java
  16. +4
    -4
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ProjectReviewHandle.java
  17. +19
    -10
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ProjectSelfTestHandle.java
  18. +27
    -20
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ProjectTestValidHandle.java
  19. +26
    -19
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/XcfhxReviewHandle.java
  20. +1
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/ProjectStatusEnum.java
  21. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/TenderStatusEnum.java
  22. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/todocenter/manage/HandlerManage.java

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

@@ -241,12 +241,6 @@ public class ProjectStateChangeAction {
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode());
} }


@OnTransition(source = "TO_BE_PURCHASED", target = "OPERATION")
public void PURCHASE_PUT_ON_RECORD(Message<ProjectStateChangeEvent> message) {
Project project = getProject(message);
project.setStatus(ProjectStatusEnum.OPERATION.getCode());
}

@OnTransition(source = "OPERATION", target = "UNDER_CONSTRUCTION") @OnTransition(source = "OPERATION", target = "UNDER_CONSTRUCTION")
public void START_TO_WORK(Message<ProjectStateChangeEvent> message) { public void START_TO_WORK(Message<ProjectStateChangeEvent> message) {
Project project = getProject(message); Project project = getProject(message);
@@ -286,19 +280,13 @@ public class ProjectStateChangeAction {
project.setStatus(ProjectStatusEnum.TO_BE_FIRST_INSPECTED.getCode()); project.setStatus(ProjectStatusEnum.TO_BE_FIRST_INSPECTED.getCode());
} }


@OnTransition(source = "TO_BE_FIRST_INSPECTED", target = "ON_FIRST_INSPECTED")
@OnTransition(source = "TO_BE_FIRST_INSPECTED", target = "ON_PILOT_RUNNING")
public void SUBMIT_FIRST_INSPECTED_FILES(Message<ProjectStateChangeEvent> message) { public void SUBMIT_FIRST_INSPECTED_FILES(Message<ProjectStateChangeEvent> message) {
Project project = getProject(message); Project project = getProject(message);
project.setStatus(ProjectStatusEnum.ON_FIRST_INSPECTED.getCode());
}

@OnTransition(source = "ON_FIRST_INSPECTED", target = "TO_BE_FINALLY_INSPECTED")
public void FIRST_INSPECTED_PASSED(Message<ProjectStateChangeEvent> message) {
Project project = getProject(message);
project.setStatus(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode());
project.setStatus(ProjectStatusEnum.ON_PILOT_RUNNING.getCode());
} }


@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW")
@OnTransition(source = "ON_PILOT_RUNNING", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW")
public void FINAL_ACCEPTANCE_APPLICATION(Message<ProjectStateChangeEvent> message) { public void FINAL_ACCEPTANCE_APPLICATION(Message<ProjectStateChangeEvent> message) {
Project project = getProject(message); Project project = getProject(message);
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode());


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

@@ -245,26 +245,11 @@ public class ProjectStateMachineBuilderImpl implements BaseStateMachineBuilder<P
// 上传初验材料 // 上传初验材料
.withExternal() .withExternal()
.source(ProjectStatusEnum.TO_BE_FIRST_INSPECTED) .source(ProjectStatusEnum.TO_BE_FIRST_INSPECTED)
.target(ProjectStatusEnum.ON_FIRST_INSPECTED)
.target(ProjectStatusEnum.ON_PILOT_RUNNING)
.event(ProjectStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES).and() .event(ProjectStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES).and()
// 初验审批通过
.withExternal()
.source(ProjectStatusEnum.ON_FIRST_INSPECTED)
.target(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED)
.event(ProjectStateChangeEvent.FIRST_INSPECTED_PASSED).and()
// 待开工 实施,从实施到建设中
.withExternal()
.source(ProjectStatusEnum.OPERATION)
.target(ProjectStatusEnum.UNDER_CONSTRUCTION)
.event(ProjectStateChangeEvent.START_TO_WORK).and()
// 建设中初验备案,从建设中到待终验
.withExternal()
.source(ProjectStatusEnum.UNDER_CONSTRUCTION)
.target(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED)
.event(ProjectStateChangeEvent.PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD).and()
// 待终验终验申请,从待终验到终验审核中 // 待终验终验申请,从待终验到终验审核中
.withExternal() .withExternal()
.source(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED)
.source(ProjectStatusEnum.ON_PILOT_RUNNING)
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) .target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW)
.event(ProjectStateChangeEvent.FINAL_ACCEPTANCE_APPLICATION).and() .event(ProjectStateChangeEvent.FINAL_ACCEPTANCE_APPLICATION).and()
// 终审审核通过,从终审审核中到已归档 // 终审审核通过,从终审审核中到已归档


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

@@ -145,21 +145,13 @@ public enum ProjectStateChangeEvent implements AbstractStateChangeEvent {
*/ */
SUBMIT_FIRST_INSPECTED_FILES(ProjectStatusEnum.TO_BE_FIRST_INSPECTED.getCode(), null, null), SUBMIT_FIRST_INSPECTED_FILES(ProjectStatusEnum.TO_BE_FIRST_INSPECTED.getCode(), null, null),
/** /**
* 初验通过
*/
FIRST_INSPECTED_PASSED(ProjectStatusEnum.ON_FIRST_INSPECTED.getCode(), null, null),
/**
* 开工 到建设中
*/
START_TO_WORK(ProjectStatusEnum.OPERATION.getCode(), null, null),
/**
* 初验备案(项目状态变为:待终验) * 初验备案(项目状态变为:待终验)
*/ */
PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode(), null, null), PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode(), null, null),
/** /**
* 终验申请(项目状态变为:终验审核中) * 终验申请(项目状态变为:终验审核中)
*/ */
FINAL_ACCEPTANCE_APPLICATION(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode(), null, null),
FINAL_ACCEPTANCE_APPLICATION(ProjectStatusEnum.ON_PILOT_RUNNING.getCode(), null, null),
/** /**
* 终验审核不通过(项目状态变为:终验审核不通过) * 终验审核不通过(项目状态变为:终验审核不通过)
*/ */


+ 0
- 59
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/AbstractProcessBusinessHandle.java Näytä tiedosto

@@ -1,59 +0,0 @@
package com.hz.pm.api.projectlib.handle;

import com.hz.pm.api.projectlib.model.entity.Project;
import com.wflow.workflow.bean.vo.ProcessDetailVO;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.springframework.core.Ordered;

import java.util.List;

/**
* 流程业务抽象处理类
*
* @author CMM
* @since 2023/02/24 14:22
*/

public abstract class AbstractProcessBusinessHandle implements Ordered {
/**
* 构造,子类必须实现
*/
protected AbstractProcessBusinessHandle() {

}

/**
* 抽象的,所有具体处理者应该实现的处理逻辑
*
* @param project \
* @param processSchedule \
*/
abstract void businessHandle(Project project, List<ProcessDetailVO> processSchedule);

abstract ProcessNode getProcessNode();

@Getter
@AllArgsConstructor
enum ProcessNode {

PROJECT_DECLARED("项目申报", 1),
PROJECT_REVIEW("项目评审", 2),
APPROVAL_AMOUNT("资金下达", 3),
PROJECT_APPROVAL("项目立项", 4),
PROJECT_PURCHASE("招标采购", 5),
PROJECT_ADAPTION("适配改造", 6),
SYSTEM_SELF_TEST("系统自测", 7),
SYSTEM_TEST_VALID("测试验证", 8),
FIRST_INSPECTED("项目初验", 9),
PILOT_RUNNING("上线试运行", 10),
XCFHX_REVIEW("信创测评", 11),
FINAL_INSPECTED("项目终验", 12);


private final String name;
private final Integer order;

}

}

+ 92
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/AbstractProcessHandle.java Näytä tiedosto

@@ -0,0 +1,92 @@
package com.hz.pm.api.projectlib.handle;

import com.google.common.collect.Maps;
import com.wflow.workflow.bean.vo.ProcessDetailVO;
import com.wflow.workflow.bean.vo.ProcessInfoVO;
import com.wflow.workflow.enums.ProcessStatusEnum;
import com.wflow.workflow.enums.StepStatusEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.springframework.core.Ordered;

import java.util.*;
import java.util.stream.Collectors;

/**
* 流程业务抽象处理类
*
* @author CMM
* @since 2023/02/24 14:22
*/

public abstract class AbstractProcessHandle implements Ordered {
/**
* 构造,子类必须实现
*/
protected AbstractProcessHandle() {

}

/**
* 抽象的,所有具体处理者应该实现的处理逻辑
*
* @param ctx ctx
*/
abstract void handle(HandleParamContext ctx);

abstract ProcessNode getProcessNode();

@Getter
@AllArgsConstructor
enum ProcessNode {

PROJECT_DECLARED("项目申报", 1),
PROJECT_REVIEW("项目评审", 2),
APPROVAL_AMOUNT("资金下达", 3),
PROJECT_APPROVAL("项目立项", 4),
PROJECT_PURCHASE("招标采购", 5),
PROJECT_ADAPTION("适配改造", 6),
SYSTEM_SELF_TEST("系统自测", 7),
SYSTEM_TEST_VALID("测试验证", 8),
FIRST_INSPECTED("项目初验", 9),
PILOT_RUNNING("上线试运行", 10),
XCFHX_REVIEW("信创测评", 11),
FINAL_INSPECTED("项目终验", 12);


private final String name;
private final Integer order;

}

private static final Map<ProcessStatusEnum, Integer> PROCESS_STATUS_PRIORITY_MAP = new HashMap<>();

static {
PROCESS_STATUS_PRIORITY_MAP.put(ProcessStatusEnum.APPROVED, 3);
PROCESS_STATUS_PRIORITY_MAP.put(ProcessStatusEnum.UNDER_REVIEW, 1);
PROCESS_STATUS_PRIORITY_MAP.put(ProcessStatusEnum.BE_REJECTED, 2);
}

static StepStatusEnum getPurchaseStatus(List<ProcessInfoVO> processes) {
Optional<Integer> min = processes.stream().map(w -> {
ProcessStatusEnum status = Arrays.stream(ProcessStatusEnum.values())
.filter(s -> s.getDesc().equals(w.getProcessProgressVo().getStatus()))
.findFirst()
.orElse(ProcessStatusEnum.NOT_SUBMITTED);
return PROCESS_STATUS_PRIORITY_MAP.getOrDefault(status, 0);
}).min(Comparator.comparingInt(Integer::intValue));
if (min.isPresent()) {
int miniOrder = min.get();
if (miniOrder == 1) {
return StepStatusEnum.ON_GOING;
} else if (miniOrder == 2) {
return StepStatusEnum.REJECTED;
} else {
return StepStatusEnum.COMPLETED;
}
} else {
return StepStatusEnum.NOT_START;
}
}

}

+ 5
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ApprovalAmountHandle.java Näytä tiedosto

@@ -16,12 +16,14 @@ import java.util.List;
* @since 21:02 2024/4/8 * @since 21:02 2024/4/8
*/ */
@Component @Component
public class ApprovalAmountHandle extends AbstractProcessBusinessHandle {
public class ApprovalAmountHandle extends AbstractProcessHandle {


@Override @Override
void businessHandle(Project project, List<ProcessDetailVO> processSchedule) {
void handle(HandleParamContext ctx) {
Project project = ctx.getProject();
List<ProcessDetailVO> processDetails = ctx.getProcessDetails();
ProcessDetailVO detail = new ProcessDetailVO(); ProcessDetailVO detail = new ProcessDetailVO();
processSchedule.add(detail);
processDetails.add(detail);
detail.setProcessName(getProcessNode().getName()); detail.setProcessName(getProcessNode().getName());
detail.setStepStatus(project.getApprovalAmount() != null ? StepStatusEnum.COMPLETED : StepStatusEnum.NOT_START); detail.setStepStatus(project.getApprovalAmount() != null ? StepStatusEnum.COMPLETED : StepStatusEnum.NOT_START);
} }


+ 38
- 24
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/FinalInspectionHandle.java Näytä tiedosto

@@ -4,10 +4,10 @@ import com.hz.pm.api.projectdeclared.model.entity.Purchase;
import com.hz.pm.api.projectdeclared.model.entity.PurchaseInst; import com.hz.pm.api.projectdeclared.model.entity.PurchaseInst;
import com.hz.pm.api.projectdeclared.service.IPurchaseInstService; import com.hz.pm.api.projectdeclared.service.IPurchaseInstService;
import com.hz.pm.api.projectdeclared.service.IPurchaseService; import com.hz.pm.api.projectdeclared.service.IPurchaseService;
import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum; import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum;
import com.hz.pm.api.projectlib.model.enumeration.TenderStatusEnum; import com.hz.pm.api.projectlib.model.enumeration.TenderStatusEnum;
import com.hz.pm.api.todocenter.utils.BuildUserUtils; import com.hz.pm.api.todocenter.utils.BuildUserUtils;
import com.wflow.workflow.bean.process.ProgressNode;
import com.wflow.workflow.bean.vo.ProcessDetailVO; import com.wflow.workflow.bean.vo.ProcessDetailVO;
import com.wflow.workflow.bean.vo.ProcessInfoVO; import com.wflow.workflow.bean.vo.ProcessInfoVO;
import com.wflow.workflow.bean.vo.ProcessProgressVo; import com.wflow.workflow.bean.vo.ProcessProgressVo;
@@ -31,7 +31,7 @@ import java.util.stream.Collectors;
*/ */
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
public class FinalInspectionHandle extends AbstractProcessBusinessHandle {
public class FinalInspectionHandle extends AbstractProcessHandle {


private final IPurchaseInstService purchaseInstService; private final IPurchaseInstService purchaseInstService;
private final IPurchaseService purchaseService; private final IPurchaseService purchaseService;
@@ -44,32 +44,46 @@ public class FinalInspectionHandle extends AbstractProcessBusinessHandle {
} }


@Override @Override
void businessHandle(Project project, List<ProcessDetailVO> processSchedule) {
List<Purchase> purchases = purchaseService.listByProjectId(project.getId());
Map<Long, Purchase> purchaseMap = purchases.stream()
.filter(w -> TenderStatusEnum.FINALLY_INSPECTED_FAILED.eq(w.getStatus())
|| TenderStatusEnum.FINALLY_INSPECTED_PASSED.eq(w.getStatus()))
.collect(Collectors.toMap(Purchase::getId, Function.identity()));
if (purchaseMap.isEmpty()) {
return;
}
void handle(HandleParamContext ctx) {
ProcessDetailVO detail = new ProcessDetailVO(); ProcessDetailVO detail = new ProcessDetailVO();
ctx.getProcessDetails().add(detail);
detail.setProcessName(getProcessNode().getName()); detail.setProcessName(getProcessNode().getName());
detail.setStepStatus(StepStatusEnum.COMPLETED);
detail.setProcessInfoList(new ArrayList<>());
processSchedule.add(detail);
Map<Long, PurchaseInst> instMap = purchaseInstService.list(purchaseMap.keySet(), InstTypeEnum.PROJECT_FINAL_INSPECTION.getCode());
for (Map.Entry<Long, PurchaseInst> entry : instMap.entrySet()) {
if (detail.getFinishTime() == null || detail.getFinishTime().isBefore(entry.getValue().getCreateOn())) {
detail.setFinishTime(entry.getValue().getCreateOn());
if (!ctx.getPreStepStatus().equals(StepStatusEnum.COMPLETED)) {
detail.setStepStatus(StepStatusEnum.NOT_START);
} else {
List<Purchase> purchases = ctx.getPurchases();
Map<Long, Purchase> purchaseMap = purchases.stream()
.filter(w -> TenderStatusEnum.FINALLY_INSPECTED_FAILED.eq(w.getStatus())
|| TenderStatusEnum.FINALLY_INSPECTED_PASSED.eq(w.getStatus())
|| TenderStatusEnum.ON_FINALLY_INSPECTED_APPLY.eq(w.getStatus()))
.collect(Collectors.toMap(Purchase::getId, Function.identity()));
StepStatusEnum stepStatus;
if (purchaseMap.isEmpty()) {
stepStatus = StepStatusEnum.NOT_START;
} else {
List<ProcessInfoVO> processes = new ArrayList<>();
Map<Long, PurchaseInst> instMap = purchaseInstService.list(purchaseMap.keySet(), InstTypeEnum.PROJECT_FINAL_INSPECTION.getCode());
List<ProgressNode> progressNodes = new ArrayList<>();
instMap.forEach((bidId, inst) -> {
if (detail.getFinishTime() == null || detail.getFinishTime().isBefore(inst.getCreateOn())) {
detail.setFinishTime(inst.getCreateOn());
}
ProcessProgressVo instanceDetail = processInstanceService.getProgressInstanceDetail(null, inst.getInstCode());
progressNodes.addAll(instanceDetail.getProgressInfo());
ProcessInfoVO tenderProgress = new ProcessInfoVO();
tenderProgress.setProcessName(purchaseMap.get(bidId).getBidName());
tenderProgress.setProcessProgressVo(instanceDetail);
processes.add(tenderProgress);
});
stepStatus = getPurchaseStatus(detail.getProcessInfoList());
if (stepStatus != StepStatusEnum.NOT_START) {
buildUserUtils.buildUserByProcessInfo(progressNodes);
detail.setProcessInfoList(processes);
}
} }
ProcessProgressVo instanceDetail = processInstanceService.getProgressInstanceDetail(null, entry.getValue().getInstCode());
buildUserUtils.buildUserByProcessInfo(instanceDetail.getProgressInfo());
ProcessInfoVO tenderProgress = new ProcessInfoVO();
tenderProgress.setProcessName(purchaseMap.get(entry.getKey()).getBidName());
tenderProgress.setProcessProgressVo(instanceDetail);
detail.getProcessInfoList().add(tenderProgress);
detail.setStepStatus(stepStatus);
} }

} }


@Override @Override


+ 18
- 16
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/FirstInspectedHandle.java Näytä tiedosto

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
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;
import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent; import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent;
import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange; import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange;
import com.hz.pm.api.projectlib.service.IProjectStatusChangeService; import com.hz.pm.api.projectlib.service.IProjectStatusChangeService;
import com.wflow.workflow.bean.vo.ProcessDetailVO; import com.wflow.workflow.bean.vo.ProcessDetailVO;
@@ -12,8 +11,6 @@ import com.wflow.workflow.enums.StepStatusEnum;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;


import java.util.List;

/** /**
* 初验处理 * 初验处理
* *
@@ -22,7 +19,7 @@ import java.util.List;
*/ */
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
public class FirstInspectedHandle extends AbstractProcessBusinessHandle {
public class FirstInspectedHandle extends AbstractProcessHandle {


private final IProjectStatusChangeService projectStatusChangeService; private final IProjectStatusChangeService projectStatusChangeService;


@@ -37,21 +34,26 @@ public class FirstInspectedHandle extends AbstractProcessBusinessHandle {
} }


@Override @Override
void businessHandle(Project project, List<ProcessDetailVO> processSchedule) {
void handle(HandleParamContext ctx) {
ProcessDetailVO detail = new ProcessDetailVO(); ProcessDetailVO detail = new ProcessDetailVO();
detail.setProcessName(getProcessNode().getName()); detail.setProcessName(getProcessNode().getName());
processSchedule.add(detail);
Wrapper<ProjectStatusChange> query = Wrappers.lambdaQuery(ProjectStatusChange.class)
.eq(ProjectStatusChange::getProjectCode, project.getProjectCode())
.eq(ProjectStatusChange::getEvent, ProjectStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES)
.orderByDesc(ProjectStatusChange::getCreateOn)
.last(BizConst.LIMIT_1);
ProjectStatusChange change = projectStatusChangeService.getOne(query);
if (change != null) {
detail.setStepStatus(StepStatusEnum.COMPLETED);
detail.setFinishTime(change.getCreateOn());
} else {
ctx.getProcessDetails().add(detail);
if (!ctx.getPreStepStatus().equals(StepStatusEnum.COMPLETED)) {
detail.setStepStatus(StepStatusEnum.NOT_START); detail.setStepStatus(StepStatusEnum.NOT_START);
} else {
Wrapper<ProjectStatusChange> query = Wrappers.lambdaQuery(ProjectStatusChange.class)
.eq(ProjectStatusChange::getProjectCode, ctx.getProject().getProjectCode())
.eq(ProjectStatusChange::getEvent, ProjectStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES)
.orderByDesc(ProjectStatusChange::getCreateOn)
.last(BizConst.LIMIT_1);
ProjectStatusChange change = projectStatusChangeService.getOne(query);
if (change != null) {
detail.setFinishTime(change.getCreateOn());
ctx.setPreStepStatus(StepStatusEnum.COMPLETED);
} else {
detail.setStepStatus(StepStatusEnum.NOT_START);
ctx.setPreStepStatus(StepStatusEnum.NOT_START);
}
} }
} }




+ 30
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/HandleParamContext.java Näytä tiedosto

@@ -0,0 +1,30 @@
package com.hz.pm.api.projectlib.handle;

import com.hz.pm.api.projectdeclared.model.entity.Purchase;
import com.hz.pm.api.projectlib.model.entity.Project;
import com.wflow.workflow.bean.vo.ProcessDetailVO;
import com.wflow.workflow.enums.StepStatusEnum;
import lombok.Data;

import java.util.List;

/**
* <p>
* HandleParamContext
* </p>
*
* @author WendyYang
* @since 16:38 2024/4/9
*/
@Data
public final class HandleParamContext {

private Project project;

private List<ProcessDetailVO> processDetails;

private List<Purchase> purchases;

private StepStatusEnum preStepStatus;

}

+ 19
- 16
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/PilotRunningHandle.java Näytä tiedosto

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
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;
import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent; import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent;
import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange; import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange;
import com.hz.pm.api.projectlib.service.IProjectStatusChangeService; import com.hz.pm.api.projectlib.service.IProjectStatusChangeService;
import com.wflow.workflow.bean.vo.ProcessDetailVO; import com.wflow.workflow.bean.vo.ProcessDetailVO;
@@ -12,8 +11,6 @@ import com.wflow.workflow.enums.StepStatusEnum;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;


import java.util.List;

/** /**
* <p> * <p>
* PilotRunningHandle * PilotRunningHandle
@@ -24,27 +21,33 @@ import java.util.List;
*/ */
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
public class PilotRunningHandle extends AbstractProcessBusinessHandle {
public class PilotRunningHandle extends AbstractProcessHandle {


private final IProjectStatusChangeService projectStatusChangeService; private final IProjectStatusChangeService projectStatusChangeService;


@Override @Override
void businessHandle(Project project, List<ProcessDetailVO> processSchedule) {
void handle(HandleParamContext ctx) {
ProcessDetailVO detail = new ProcessDetailVO(); ProcessDetailVO detail = new ProcessDetailVO();
detail.setProcessName(getProcessNode().getName()); detail.setProcessName(getProcessNode().getName());
processSchedule.add(detail);
Wrapper<ProjectStatusChange> query = Wrappers.lambdaQuery(ProjectStatusChange.class)
.eq(ProjectStatusChange::getProjectCode, project.getProjectCode())
.eq(ProjectStatusChange::getEvent, ProjectStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES)
.orderByDesc(ProjectStatusChange::getCreateOn)
.last(BizConst.LIMIT_1);
ProjectStatusChange change = projectStatusChangeService.getOne(query);
if (change != null) {
detail.setStepStatus(StepStatusEnum.COMPLETED);
detail.setFinishTime(change.getCreateOn());
} else {
ctx.getProcessDetails().add(detail);
if (!ctx.getPreStepStatus().equals(StepStatusEnum.COMPLETED)) {
detail.setStepStatus(StepStatusEnum.NOT_START); detail.setStepStatus(StepStatusEnum.NOT_START);
} else {
Wrapper<ProjectStatusChange> query = Wrappers.lambdaQuery(ProjectStatusChange.class)
.eq(ProjectStatusChange::getProjectCode, ctx.getProject().getProjectCode())
.eq(ProjectStatusChange::getEvent, ProjectStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES)
.orderByDesc(ProjectStatusChange::getCreateOn)
.last(BizConst.LIMIT_1);
ProjectStatusChange change = projectStatusChangeService.getOne(query);
if (change != null) {
detail.setFinishTime(change.getCreateOn());
ctx.setPreStepStatus(StepStatusEnum.COMPLETED);
} else {
detail.setStepStatus(StepStatusEnum.NOT_START);
ctx.setPreStepStatus(StepStatusEnum.NOT_START);
}
} }

} }


@Override @Override


+ 9
- 7
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ProcessProgressContext.java Näytä tiedosto

@@ -2,7 +2,6 @@ package com.hz.pm.api.projectlib.handle;


import com.hz.pm.api.projectlib.model.entity.Project; import com.hz.pm.api.projectlib.model.entity.Project;
import com.wflow.workflow.bean.vo.ProcessDetailVO; import com.wflow.workflow.bean.vo.ProcessDetailVO;
import com.wflow.workflow.enums.StepStatusEnum;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;


@@ -23,15 +22,18 @@ public class ProcessProgressContext {
/** /**
* 具体处理者的集合 * 具体处理者的集合
*/ */
private final List<AbstractProcessBusinessHandle> processBusinessHandles;
private final List<AbstractProcessHandle> processBusinessHandles;


public List<ProcessDetailVO> handle(Project project, List<ProcessDetailVO> processSchedule) { public List<ProcessDetailVO> handle(Project project, List<ProcessDetailVO> processSchedule) {
HandleParamContext handleParamContext = new HandleParamContext();
handleParamContext.setProject(project);
handleParamContext.setProcessDetails(processSchedule);
if (!processBusinessHandles.isEmpty()) { if (!processBusinessHandles.isEmpty()) {
processBusinessHandles.sort(Comparator.comparing(AbstractProcessBusinessHandle::getOrder));
for (AbstractProcessBusinessHandle processBusinessHandle : processBusinessHandles) {
processBusinessHandle.businessHandle(project, processSchedule);
processBusinessHandles.sort(Comparator.comparing(AbstractProcessHandle::getOrder));
for (AbstractProcessHandle processBusinessHandle : processBusinessHandles) {
processBusinessHandle.handle(handleParamContext);
} }
for (int i = processSchedule.size() - 1; i >= 1; i--) {
/*for (int i = processSchedule.size() - 1; i >= 1; i--) {
ProcessDetailVO curr = processSchedule.get(i); ProcessDetailVO curr = processSchedule.get(i);
if (curr.getStepStatus() == null || if (curr.getStepStatus() == null ||
curr.getStepStatus().equals(StepStatusEnum.NOT_START)) { curr.getStepStatus().equals(StepStatusEnum.NOT_START)) {
@@ -39,7 +41,7 @@ public class ProcessProgressContext {
} }
ProcessDetailVO pre = processSchedule.get(i - 1); ProcessDetailVO pre = processSchedule.get(i - 1);
pre.setStepStatus(StepStatusEnum.COMPLETED); pre.setStepStatus(StepStatusEnum.COMPLETED);
}
}*/
return processSchedule; return processSchedule;
} }
return Collections.emptyList(); return Collections.emptyList();


+ 22
- 16
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ProjectAdaptionHandle.java Näytä tiedosto

@@ -3,11 +3,10 @@ package com.hz.pm.api.projectlib.handle;
import com.hz.pm.api.projectdeclared.model.entity.Purchase; import com.hz.pm.api.projectdeclared.model.entity.Purchase;
import com.hz.pm.api.projectdeclared.model.entity.PurchaseInst; import com.hz.pm.api.projectdeclared.model.entity.PurchaseInst;
import com.hz.pm.api.projectdeclared.service.IPurchaseInstService; import com.hz.pm.api.projectdeclared.service.IPurchaseInstService;
import com.hz.pm.api.projectdeclared.service.IPurchaseService;
import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum; import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum;
import com.hz.pm.api.projectlib.model.enumeration.TenderAdaptStatusEnum; import com.hz.pm.api.projectlib.model.enumeration.TenderAdaptStatusEnum;
import com.hz.pm.api.todocenter.utils.BuildUserUtils; import com.hz.pm.api.todocenter.utils.BuildUserUtils;
import com.wflow.workflow.bean.process.ProgressNode;
import com.wflow.workflow.bean.vo.ProcessDetailVO; import com.wflow.workflow.bean.vo.ProcessDetailVO;
import com.wflow.workflow.bean.vo.ProcessInfoVO; import com.wflow.workflow.bean.vo.ProcessInfoVO;
import com.wflow.workflow.bean.vo.ProcessProgressVo; import com.wflow.workflow.bean.vo.ProcessProgressVo;
@@ -32,40 +31,47 @@ import java.util.stream.Collectors;
*/ */
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
public class ProjectAdaptionHandle extends AbstractProcessBusinessHandle {
public class ProjectAdaptionHandle extends AbstractProcessHandle {


private final IPurchaseService purchaseService;
private final IPurchaseInstService purchaseInstService; private final IPurchaseInstService purchaseInstService;
private final BuildUserUtils buildUserUtils; private final BuildUserUtils buildUserUtils;
private final ProcessInstanceService processInstanceService; private final ProcessInstanceService processInstanceService;


@Override @Override
void businessHandle(Project project, List<ProcessDetailVO> processSchedule) {
List<Purchase> purchases = purchaseService.listByProjectId(project.getId());
void handle(HandleParamContext ctx) {
if (!ctx.getPreStepStatus().equals(StepStatusEnum.COMPLETED)) {
return;
}
List<Purchase> purchases = ctx.getPurchases();
Map<Long, Purchase> purchaseMap = purchases.stream() Map<Long, Purchase> purchaseMap = purchases.stream()
.filter(w -> TenderAdaptStatusEnum.ADAPT_INFO_PASSED.eq(w.getAdaptStatus()) .filter(w -> TenderAdaptStatusEnum.ADAPT_INFO_PASSED.eq(w.getAdaptStatus())
|| TenderAdaptStatusEnum.ADAPT_INFO_FAILED.eq(w.getAdaptStatus()))
|| TenderAdaptStatusEnum.ADAPT_INFO_FAILED.eq(w.getAdaptStatus())
|| TenderAdaptStatusEnum.ADAPT_INFO_AUDIT.eq(w.getAdaptStatus()))
.collect(Collectors.toMap(Purchase::getId, Function.identity())); .collect(Collectors.toMap(Purchase::getId, Function.identity()));
if (purchaseMap.isEmpty()) { if (purchaseMap.isEmpty()) {
return; return;
} }
ProcessDetailVO detail = new ProcessDetailVO(); ProcessDetailVO detail = new ProcessDetailVO();
detail.setProcessName(getProcessNode().getName()); detail.setProcessName(getProcessNode().getName());
detail.setStepStatus(StepStatusEnum.COMPLETED);
detail.setProcessInfoList(new ArrayList<>()); detail.setProcessInfoList(new ArrayList<>());
processSchedule.add(detail);
ctx.getProcessDetails().add(detail);
Map<Long, PurchaseInst> instMap = purchaseInstService.list(purchaseMap.keySet(), InstTypeEnum.ADAPTION.getCode()); Map<Long, PurchaseInst> instMap = purchaseInstService.list(purchaseMap.keySet(), InstTypeEnum.ADAPTION.getCode());
for (Map.Entry<Long, PurchaseInst> entry : instMap.entrySet()) {
if (detail.getFinishTime() == null || detail.getFinishTime().isBefore(entry.getValue().getCreateOn())) {
detail.setFinishTime(entry.getValue().getCreateOn());
List<ProgressNode> progressNodes = new ArrayList<>();
instMap.forEach((bidId, inst) -> {
if (detail.getFinishTime() == null || detail.getFinishTime().isBefore(inst.getCreateOn())) {
detail.setFinishTime(inst.getCreateOn());
} }
ProcessProgressVo instanceDetail = processInstanceService.getProgressInstanceDetail(null, entry.getValue().getInstCode());
buildUserUtils.buildUserByProcessInfo(instanceDetail.getProgressInfo());
ProcessProgressVo instanceDetail = processInstanceService.getProgressInstanceDetail(null, inst.getInstCode());
progressNodes.addAll(instanceDetail.getProgressInfo());
ProcessInfoVO tenderProgress = new ProcessInfoVO(); ProcessInfoVO tenderProgress = new ProcessInfoVO();
tenderProgress.setProcessName(purchaseMap.get(entry.getKey()).getBidName());
tenderProgress.setProcessName(purchaseMap.get(bidId).getBidName());
tenderProgress.setProcessProgressVo(instanceDetail); tenderProgress.setProcessProgressVo(instanceDetail);
detail.getProcessInfoList().add(tenderProgress); detail.getProcessInfoList().add(tenderProgress);
}
});
buildUserUtils.buildUserByProcessInfo(progressNodes);
StepStatusEnum stepStatus = getPurchaseStatus(detail.getProcessInfoList());
detail.setStepStatus(stepStatus);
ctx.setPreStepStatus(stepStatus);
} }


@Override @Override


+ 4
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ProjectApprovalHandle.java Näytä tiedosto

@@ -31,7 +31,7 @@ import java.util.Objects;
*/ */
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
public class ProjectApprovalHandle extends AbstractProcessBusinessHandle {
public class ProjectApprovalHandle extends AbstractProcessHandle {


private final IProjectStatusChangeService projectStatusChangeService; private final IProjectStatusChangeService projectStatusChangeService;
private final IProjectService projectService; private final IProjectService projectService;
@@ -45,11 +45,12 @@ public class ProjectApprovalHandle extends AbstractProcessBusinessHandle {
} }


@Override @Override
void businessHandle(Project project, List<ProcessDetailVO> processSchedule) {
void handle(HandleParamContext ctx) {
ProcessDetailVO detail = new ProcessDetailVO(); ProcessDetailVO detail = new ProcessDetailVO();
detail.setProcessName(getProcessNode().getName()); detail.setProcessName(getProcessNode().getName());
processSchedule.add(detail);
ctx.getProcessDetails().add(detail);
//查出历史版本的 所有项目ID //查出历史版本的 所有项目ID
Project project = ctx.getProject();
Integer status = project.getStatus(); Integer status = project.getStatus();
if (Objects.isNull(status)) { if (Objects.isNull(status)) {
return; return;


+ 4
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ProjectDeclareHandle.java Näytä tiedosto

@@ -17,7 +17,7 @@ import java.util.List;
*/ */
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
public class ProjectDeclareHandle extends AbstractProcessBusinessHandle {
public class ProjectDeclareHandle extends AbstractProcessHandle {


@Override @Override
ProcessNode getProcessNode() { ProcessNode getProcessNode() {
@@ -25,15 +25,16 @@ public class ProjectDeclareHandle extends AbstractProcessBusinessHandle {
} }


@Override @Override
void businessHandle(Project project, List<ProcessDetailVO> processSchedule) {
void handle(HandleParamContext ctx) {
// 因为此时在项目库中的项目,都是已经申报过的项目,所以直接设置环节状态为已完成 // 因为此时在项目库中的项目,都是已经申报过的项目,所以直接设置环节状态为已完成
ProcessDetailVO processDetailVO = new ProcessDetailVO(); ProcessDetailVO processDetailVO = new ProcessDetailVO();
processDetailVO.setStepStatus(StepStatusEnum.COMPLETED); processDetailVO.setStepStatus(StepStatusEnum.COMPLETED);
// 项目库中查出申报完成时间 // 项目库中查出申报完成时间
Project project = ctx.getProject();
LocalDateTime createOn = project.getCreateOn(); LocalDateTime createOn = project.getCreateOn();
processDetailVO.setFinishTime(createOn); processDetailVO.setFinishTime(createOn);
processDetailVO.setProcessName(getProcessNode().getName()); processDetailVO.setProcessName(getProcessNode().getName());
processSchedule.add(processDetailVO);
ctx.getProcessDetails().add(processDetailVO);
} }


@Override @Override


+ 11
- 6
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ProjectPurchaseHandle.java Näytä tiedosto

@@ -3,6 +3,8 @@ package com.hz.pm.api.projectlib.handle;
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;
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.service.IPurchaseService;
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.ProjectStatusChange; import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange;
import com.hz.pm.api.projectlib.service.IProjectService; import com.hz.pm.api.projectlib.service.IProjectService;
@@ -25,10 +27,10 @@ import static com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum.TO_BE
*/ */
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
public class ProjectPurchaseHandle extends AbstractProcessBusinessHandle {
public class ProjectPurchaseHandle extends AbstractProcessHandle {


private final IProjectStatusChangeService projectStatusChangeService; private final IProjectStatusChangeService projectStatusChangeService;
private final IProjectService projectService;
private final IPurchaseService purchaseService;


@Override @Override
public int getOrder() { public int getOrder() {
@@ -41,21 +43,21 @@ public class ProjectPurchaseHandle extends AbstractProcessBusinessHandle {
} }


@Override @Override
void businessHandle(Project project, List<ProcessDetailVO> processSchedule) {
void handle(HandleParamContext ctx) {
ProcessDetailVO detail = new ProcessDetailVO(); ProcessDetailVO detail = new ProcessDetailVO();
detail.setProcessName(getProcessNode().getName()); detail.setProcessName(getProcessNode().getName());
processSchedule.add(detail);
ctx.getProcessDetails().add(detail);
// 根据项目是否通过立项批复(立项批复时间)来判断招标采购是否开始 // 根据项目是否通过立项批复(立项批复时间)来判断招标采购是否开始
// 进行了立项批复且项目状态是待采购 // 进行了立项批复且项目状态是待采购
Project project = ctx.getProject();
if (TO_BE_PURCHASED.eq(project.getStatus())) { if (TO_BE_PURCHASED.eq(project.getStatus())) {
detail.setStepStatus(StepStatusEnum.NOT_START); detail.setStepStatus(StepStatusEnum.NOT_START);
} else if (ON_PURCHASING.eq(project.getStatus())) { } else if (ON_PURCHASING.eq(project.getStatus())) {
detail.setStepStatus(StepStatusEnum.ON_GOING); detail.setStepStatus(StepStatusEnum.ON_GOING);
} else { } else {
List<Long> projectIds = projectService.allVersionProjectIds(project.getProjectCode());
// 根据采购备案的时间获取 // 根据采购备案的时间获取
ProjectStatusChange change = projectStatusChangeService.getOne(Wrappers.lambdaQuery(ProjectStatusChange.class) ProjectStatusChange change = projectStatusChangeService.getOne(Wrappers.lambdaQuery(ProjectStatusChange.class)
.in(ProjectStatusChange::getProjectId, projectIds)
.eq(ProjectStatusChange::getProjectCode, project.getProjectCode())
.eq(ProjectStatusChange::getEvent, ProjectStateChangeEvent.SUBMIT_OPERATION_PLAN) .eq(ProjectStatusChange::getEvent, ProjectStateChangeEvent.SUBMIT_OPERATION_PLAN)
.orderByDesc(ProjectStatusChange::getCreateOn) .orderByDesc(ProjectStatusChange::getCreateOn)
.last(BizConst.LIMIT_1)); .last(BizConst.LIMIT_1));
@@ -64,8 +66,11 @@ public class ProjectPurchaseHandle extends AbstractProcessBusinessHandle {
} else { } else {
detail.setStepStatus(StepStatusEnum.COMPLETED); detail.setStepStatus(StepStatusEnum.COMPLETED);
detail.setFinishTime(change.getCreateOn()); detail.setFinishTime(change.getCreateOn());
List<Purchase> purchases = purchaseService.listByProjectId(project.getId());
ctx.setPurchases(purchases);
} }
} }
ctx.setPreStepStatus(detail.getStepStatus());
detail.setProcessName(getProcessNode().getName()); detail.setProcessName(getProcessNode().getName());
} }




+ 4
- 4
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ProjectReviewHandle.java Näytä tiedosto

@@ -16,7 +16,7 @@ import java.util.List;
*/ */


@Component @Component
public class ProjectReviewHandle extends AbstractProcessBusinessHandle {
public class ProjectReviewHandle extends AbstractProcessHandle {


@Override @Override
ProcessNode getProcessNode() { ProcessNode getProcessNode() {
@@ -29,15 +29,15 @@ public class ProjectReviewHandle extends AbstractProcessBusinessHandle {
} }


@Override @Override
void businessHandle(Project project, List<ProcessDetailVO> processSchedule) {
void handle(HandleParamContext ctx) {
// 因为此时在项目库中的项目,都是已经申报过的项目,所以直接设置环节状态为已完成 // 因为此时在项目库中的项目,都是已经申报过的项目,所以直接设置环节状态为已完成
ProcessDetailVO processDetailVO = new ProcessDetailVO(); ProcessDetailVO processDetailVO = new ProcessDetailVO();
processDetailVO.setStepStatus(StepStatusEnum.COMPLETED); processDetailVO.setStepStatus(StepStatusEnum.COMPLETED);
// 项目库中查出申报完成时间 // 项目库中查出申报完成时间
LocalDateTime createOn = project.getCreateOn();
LocalDateTime createOn = ctx.getProject().getCreateOn();
processDetailVO.setFinishTime(createOn); processDetailVO.setFinishTime(createOn);
processDetailVO.setProcessName(getProcessNode().getName()); processDetailVO.setProcessName(getProcessNode().getName());
processSchedule.add(processDetailVO);
ctx.getProcessDetails().add(processDetailVO);
} }


} }

+ 19
- 10
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ProjectSelfTestHandle.java Näytä tiedosto

@@ -4,10 +4,9 @@ import com.hz.pm.api.projectdeclared.model.entity.Purchase;
import com.hz.pm.api.projectdeclared.model.entity.PurchaseInst; import com.hz.pm.api.projectdeclared.model.entity.PurchaseInst;
import com.hz.pm.api.projectdeclared.service.IPurchaseInstService; import com.hz.pm.api.projectdeclared.service.IPurchaseInstService;
import com.hz.pm.api.projectdeclared.service.IPurchaseService; import com.hz.pm.api.projectdeclared.service.IPurchaseService;
import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum; import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum;
import com.hz.pm.api.projectlib.model.enumeration.TenderSelfTestStatusEnum;
import com.hz.pm.api.todocenter.utils.BuildUserUtils; import com.hz.pm.api.todocenter.utils.BuildUserUtils;
import com.wflow.workflow.bean.process.ProgressNode;
import com.wflow.workflow.bean.vo.ProcessDetailVO; import com.wflow.workflow.bean.vo.ProcessDetailVO;
import com.wflow.workflow.bean.vo.ProcessInfoVO; import com.wflow.workflow.bean.vo.ProcessInfoVO;
import com.wflow.workflow.bean.vo.ProcessProgressVo; import com.wflow.workflow.bean.vo.ProcessProgressVo;
@@ -22,6 +21,8 @@ import java.util.Map;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;


import static com.hz.pm.api.projectlib.model.enumeration.TenderSelfTestStatusEnum.*;

/** /**
* <p> * <p>
* SelfTestHandle * SelfTestHandle
@@ -32,7 +33,7 @@ import java.util.stream.Collectors;
*/ */
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
public class ProjectSelfTestHandle extends AbstractProcessBusinessHandle {
public class ProjectSelfTestHandle extends AbstractProcessHandle {


private final IPurchaseService purchaseService; private final IPurchaseService purchaseService;
private final IPurchaseInstService purchaseInstService; private final IPurchaseInstService purchaseInstService;
@@ -40,32 +41,40 @@ public class ProjectSelfTestHandle extends AbstractProcessBusinessHandle {
private final ProcessInstanceService processInstanceService; private final ProcessInstanceService processInstanceService;


@Override @Override
void businessHandle(Project project, List<ProcessDetailVO> processSchedule) {
List<Purchase> purchases = purchaseService.listByProjectId(project.getId());
void handle(HandleParamContext ctx) {
if (!ctx.getPreStepStatus().equals(StepStatusEnum.COMPLETED)) {
return;
}
List<Purchase> purchases = ctx.getPurchases();
Map<Long, Purchase> purchaseMap = purchases.stream() Map<Long, Purchase> purchaseMap = purchases.stream()
.filter(w -> TenderSelfTestStatusEnum.SELF_TEST_INFO_PASSED.eq(w.getSelfTestStatus())
|| TenderSelfTestStatusEnum.SELF_TEST_INFO_FAILED.eq(w.getSelfTestStatus()))
.filter(w -> SELF_TEST_INFO_PASSED.eq(w.getSelfTestStatus())
|| SELF_TEST_INFO_FAILED.eq(w.getSelfTestStatus())
|| SELF_TEST_INFO_AUDIT.eq(w.getSelfTestStatus()))
.collect(Collectors.toMap(Purchase::getId, Function.identity())); .collect(Collectors.toMap(Purchase::getId, Function.identity()));
if (purchaseMap.isEmpty()) { if (purchaseMap.isEmpty()) {
return; return;
} }
ProcessDetailVO detail = new ProcessDetailVO(); ProcessDetailVO detail = new ProcessDetailVO();
detail.setProcessName(getProcessNode().getName()); detail.setProcessName(getProcessNode().getName());
detail.setStepStatus(StepStatusEnum.COMPLETED);
detail.setProcessInfoList(new ArrayList<>()); detail.setProcessInfoList(new ArrayList<>());
processSchedule.add(detail);
ctx.getProcessDetails().add(detail);
Map<Long, PurchaseInst> instMap = purchaseInstService.list(purchaseMap.keySet(), InstTypeEnum.SELF_TEST.getCode()); Map<Long, PurchaseInst> instMap = purchaseInstService.list(purchaseMap.keySet(), InstTypeEnum.SELF_TEST.getCode());
List<ProgressNode> progressNodes = new ArrayList<>();
for (Map.Entry<Long, PurchaseInst> entry : instMap.entrySet()) { for (Map.Entry<Long, PurchaseInst> entry : instMap.entrySet()) {
if (detail.getFinishTime() == null || detail.getFinishTime().isBefore(entry.getValue().getCreateOn())) { if (detail.getFinishTime() == null || detail.getFinishTime().isBefore(entry.getValue().getCreateOn())) {
detail.setFinishTime(entry.getValue().getCreateOn()); detail.setFinishTime(entry.getValue().getCreateOn());
} }
ProcessProgressVo instanceDetail = processInstanceService.getProgressInstanceDetail(null, entry.getValue().getInstCode()); ProcessProgressVo instanceDetail = processInstanceService.getProgressInstanceDetail(null, entry.getValue().getInstCode());
buildUserUtils.buildUserByProcessInfo(instanceDetail.getProgressInfo());
progressNodes.addAll(instanceDetail.getProgressInfo());
ProcessInfoVO tenderProgress = new ProcessInfoVO(); ProcessInfoVO tenderProgress = new ProcessInfoVO();
tenderProgress.setProcessName(purchaseMap.get(entry.getKey()).getBidName()); tenderProgress.setProcessName(purchaseMap.get(entry.getKey()).getBidName());
tenderProgress.setProcessProgressVo(instanceDetail); tenderProgress.setProcessProgressVo(instanceDetail);
detail.getProcessInfoList().add(tenderProgress); detail.getProcessInfoList().add(tenderProgress);
} }
buildUserUtils.buildUserByProcessInfo(progressNodes);
StepStatusEnum stepStatus = getPurchaseStatus(detail.getProcessInfoList());
detail.setStepStatus(stepStatus);
ctx.setPreStepStatus(stepStatus);
} }


@Override @Override


+ 27
- 20
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ProjectTestValidHandle.java Näytä tiedosto

@@ -3,12 +3,9 @@ package com.hz.pm.api.projectlib.handle;
import com.hz.pm.api.projectdeclared.model.entity.Purchase; import com.hz.pm.api.projectdeclared.model.entity.Purchase;
import com.hz.pm.api.projectdeclared.model.entity.PurchaseInst; import com.hz.pm.api.projectdeclared.model.entity.PurchaseInst;
import com.hz.pm.api.projectdeclared.service.IPurchaseInstService; import com.hz.pm.api.projectdeclared.service.IPurchaseInstService;
import com.hz.pm.api.projectdeclared.service.IPurchaseService;
import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum; import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum;
import com.hz.pm.api.projectlib.model.enumeration.TenderSelfTestStatusEnum;
import com.hz.pm.api.projectlib.model.enumeration.TenderTestValidStatusEnum;
import com.hz.pm.api.todocenter.utils.BuildUserUtils; import com.hz.pm.api.todocenter.utils.BuildUserUtils;
import com.wflow.workflow.bean.process.ProgressNode;
import com.wflow.workflow.bean.vo.ProcessDetailVO; import com.wflow.workflow.bean.vo.ProcessDetailVO;
import com.wflow.workflow.bean.vo.ProcessInfoVO; import com.wflow.workflow.bean.vo.ProcessInfoVO;
import com.wflow.workflow.bean.vo.ProcessProgressVo; import com.wflow.workflow.bean.vo.ProcessProgressVo;
@@ -23,6 +20,8 @@ import java.util.Map;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;


import static com.hz.pm.api.projectlib.model.enumeration.TenderTestValidStatusEnum.*;

/** /**
* <p> * <p>
* SelfTestHandle * SelfTestHandle
@@ -33,40 +32,48 @@ import java.util.stream.Collectors;
*/ */
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
public class ProjectTestValidHandle extends AbstractProcessBusinessHandle {
public class ProjectTestValidHandle extends AbstractProcessHandle {


private final IPurchaseService purchaseService;
private final IPurchaseInstService purchaseInstService; private final IPurchaseInstService purchaseInstService;
private final BuildUserUtils buildUserUtils; private final BuildUserUtils buildUserUtils;
private final ProcessInstanceService processInstanceService; private final ProcessInstanceService processInstanceService;


@Override @Override
void businessHandle(Project project, List<ProcessDetailVO> processSchedule) {
List<Purchase> purchases = purchaseService.listByProjectId(project.getId());
void handle(HandleParamContext ctx) {
if (!ctx.getPreStepStatus().equals(StepStatusEnum.COMPLETED)) {
return;
}
List<ProcessDetailVO> processDetails = ctx.getProcessDetails();
List<Purchase> purchases = ctx.getPurchases();
Map<Long, Purchase> purchaseMap = purchases.stream() Map<Long, Purchase> purchaseMap = purchases.stream()
.filter(w -> TenderTestValidStatusEnum.TEST_VALID_INFO_PASSED.eq(w.getTestValidStatus())
|| TenderTestValidStatusEnum.TEST_VALID_INFO_FAILED.eq(w.getTestValidStatus()))
.filter(w -> TEST_VALID_INFO_PASSED.eq(w.getTestValidStatus())
|| TEST_VALID_INFO_FAILED.eq(w.getTestValidStatus())
|| TEST_VALID_INFO_AUDIT.eq(w.getTestValidStatus()))
.collect(Collectors.toMap(Purchase::getId, Function.identity())); .collect(Collectors.toMap(Purchase::getId, Function.identity()));
if (purchaseMap.isEmpty()) { if (purchaseMap.isEmpty()) {
return; return;
} }
ProcessDetailVO detail = new ProcessDetailVO(); ProcessDetailVO detail = new ProcessDetailVO();
detail.setProcessName(getProcessNode().getName()); detail.setProcessName(getProcessNode().getName());
detail.setStepStatus(StepStatusEnum.COMPLETED);
detail.setProcessInfoList(new ArrayList<>()); detail.setProcessInfoList(new ArrayList<>());
processSchedule.add(detail);
processDetails.add(detail);
Map<Long, PurchaseInst> instMap = purchaseInstService.list(purchaseMap.keySet(), InstTypeEnum.TEST_VALID.getCode()); Map<Long, PurchaseInst> instMap = purchaseInstService.list(purchaseMap.keySet(), InstTypeEnum.TEST_VALID.getCode());
for (Map.Entry<Long, PurchaseInst> entry : instMap.entrySet()) {
if (detail.getFinishTime() == null || detail.getFinishTime().isBefore(entry.getValue().getCreateOn())) {
detail.setFinishTime(entry.getValue().getCreateOn());
List<ProgressNode> progressNodes = new ArrayList<>();
instMap.forEach((bidId, inst) -> {
if (detail.getFinishTime() == null || detail.getFinishTime().isBefore(inst.getCreateOn())) {
detail.setFinishTime(inst.getCreateOn());
} }
ProcessProgressVo instanceDetail = processInstanceService.getProgressInstanceDetail(null, entry.getValue().getInstCode());
buildUserUtils.buildUserByProcessInfo(instanceDetail.getProgressInfo());
ProcessProgressVo instDetail = processInstanceService.getProgressInstanceDetail(null, inst.getInstCode());
progressNodes.addAll(instDetail.getProgressInfo());
ProcessInfoVO tenderProgress = new ProcessInfoVO(); ProcessInfoVO tenderProgress = new ProcessInfoVO();
tenderProgress.setProcessName(purchaseMap.get(entry.getKey()).getBidName());
tenderProgress.setProcessProgressVo(instanceDetail);
tenderProgress.setProcessName(purchaseMap.get(bidId).getBidName());
tenderProgress.setProcessProgressVo(instDetail);
detail.getProcessInfoList().add(tenderProgress); detail.getProcessInfoList().add(tenderProgress);
}
});
buildUserUtils.buildUserByProcessInfo(progressNodes);
StepStatusEnum stepStatus = getPurchaseStatus(detail.getProcessInfoList());
detail.setStepStatus(stepStatus);
ctx.setPreStepStatus(stepStatus);
} }


@Override @Override


+ 26
- 19
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/XcfhxReviewHandle.java Näytä tiedosto

@@ -3,11 +3,9 @@ package com.hz.pm.api.projectlib.handle;
import com.hz.pm.api.projectdeclared.model.entity.Purchase; import com.hz.pm.api.projectdeclared.model.entity.Purchase;
import com.hz.pm.api.projectdeclared.model.entity.PurchaseInst; import com.hz.pm.api.projectdeclared.model.entity.PurchaseInst;
import com.hz.pm.api.projectdeclared.service.IPurchaseInstService; import com.hz.pm.api.projectdeclared.service.IPurchaseInstService;
import com.hz.pm.api.projectdeclared.service.IPurchaseService;
import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum; import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum;
import com.hz.pm.api.projectlib.model.enumeration.TenderXcfhxApplyStatusEnum;
import com.hz.pm.api.todocenter.utils.BuildUserUtils; import com.hz.pm.api.todocenter.utils.BuildUserUtils;
import com.wflow.workflow.bean.process.ProgressNode;
import com.wflow.workflow.bean.vo.ProcessDetailVO; import com.wflow.workflow.bean.vo.ProcessDetailVO;
import com.wflow.workflow.bean.vo.ProcessInfoVO; import com.wflow.workflow.bean.vo.ProcessInfoVO;
import com.wflow.workflow.bean.vo.ProcessProgressVo; import com.wflow.workflow.bean.vo.ProcessProgressVo;
@@ -22,6 +20,8 @@ import java.util.Map;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;


import static com.hz.pm.api.projectlib.model.enumeration.TenderXcfhxApplyStatusEnum.*;

/** /**
* <p> * <p>
* XcfhxReviewHandle * XcfhxReviewHandle
@@ -32,41 +32,48 @@ import java.util.stream.Collectors;
*/ */
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
public class XcfhxReviewHandle extends AbstractProcessBusinessHandle {
public class XcfhxReviewHandle extends AbstractProcessHandle {


private final IPurchaseService purchaseService;
private final IPurchaseInstService purchaseInstService; private final IPurchaseInstService purchaseInstService;
private final BuildUserUtils buildUserUtils; private final BuildUserUtils buildUserUtils;
private final ProcessInstanceService processInstanceService; private final ProcessInstanceService processInstanceService;




@Override @Override
void businessHandle(Project project, List<ProcessDetailVO> processSchedule) {
List<Purchase> purchases = purchaseService.listByProjectId(project.getId());
void handle(HandleParamContext ctx) {
if (!ctx.getPreStepStatus().equals(StepStatusEnum.COMPLETED)) {
return;
}
List<Purchase> purchases = ctx.getPurchases();
Map<Long, Purchase> purchaseMap = purchases.stream() Map<Long, Purchase> purchaseMap = purchases.stream()
.filter(w -> TenderXcfhxApplyStatusEnum.XCFHX_APPLY_PASSED.eq(w.getXcfhxApplyStatus())
|| TenderXcfhxApplyStatusEnum.XCFHX_APPLY_FAILED.eq(w.getXcfhxApplyStatus()))
.filter(w -> XCFHX_APPLY_PASSED.eq(w.getXcfhxApplyStatus())
|| XCFHX_APPLY_FAILED.eq(w.getXcfhxApplyStatus())
|| ON_XCFHX_APPLY.eq(w.getXcfhxApplyStatus()))
.collect(Collectors.toMap(Purchase::getId, Function.identity())); .collect(Collectors.toMap(Purchase::getId, Function.identity()));
if (purchaseMap.isEmpty()) { if (purchaseMap.isEmpty()) {
return; return;
} }
ProcessDetailVO detail = new ProcessDetailVO(); ProcessDetailVO detail = new ProcessDetailVO();
detail.setProcessName(getProcessNode().getName()); detail.setProcessName(getProcessNode().getName());
detail.setStepStatus(StepStatusEnum.COMPLETED);
detail.setProcessInfoList(new ArrayList<>()); detail.setProcessInfoList(new ArrayList<>());
processSchedule.add(detail);
ctx.getProcessDetails().add(detail);
Map<Long, PurchaseInst> instMap = purchaseInstService.list(purchaseMap.keySet(), InstTypeEnum.XCFHX_APPLY.getCode()); Map<Long, PurchaseInst> instMap = purchaseInstService.list(purchaseMap.keySet(), InstTypeEnum.XCFHX_APPLY.getCode());
for (Map.Entry<Long, PurchaseInst> entry : instMap.entrySet()) {
if (detail.getFinishTime() == null || detail.getFinishTime().isBefore(entry.getValue().getCreateOn())) {
detail.setFinishTime(entry.getValue().getCreateOn());
List<ProgressNode> progressNodes = new ArrayList<>();
instMap.forEach((bidId, inst) -> {
if (detail.getFinishTime() == null || detail.getFinishTime().isBefore(inst.getCreateOn())) {
detail.setFinishTime(inst.getCreateOn());
} }
ProcessProgressVo instanceDetail = processInstanceService.getProgressInstanceDetail(null, entry.getValue().getInstCode());
buildUserUtils.buildUserByProcessInfo(instanceDetail.getProgressInfo());
ProcessProgressVo instDetail = processInstanceService.getProgressInstanceDetail(null, inst.getInstCode());
progressNodes.addAll(instDetail.getProgressInfo());
ProcessInfoVO tenderProgress = new ProcessInfoVO(); ProcessInfoVO tenderProgress = new ProcessInfoVO();
tenderProgress.setProcessName(purchaseMap.get(entry.getKey()).getBidName());
tenderProgress.setProcessProgressVo(instanceDetail);
tenderProgress.setProcessName(purchaseMap.get(bidId).getBidName());
tenderProgress.setProcessProgressVo(instDetail);
detail.getProcessInfoList().add(tenderProgress); detail.getProcessInfoList().add(tenderProgress);
}
});
buildUserUtils.buildUserByProcessInfo(progressNodes);
StepStatusEnum stepStatus = getPurchaseStatus(detail.getProcessInfoList());
detail.setStepStatus(stepStatus);
ctx.setPreStepStatus(stepStatus);
} }


@Override @Override


+ 1
- 2
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/ProjectStatusEnum.java Näytä tiedosto

@@ -62,10 +62,9 @@ public enum ProjectStatusEnum {
TO_BE_FINALLY_INSPECTED(20003, "待终验", GovProjectStatusEnum.HAS_PRE_INS), TO_BE_FINALLY_INSPECTED(20003, "待终验", GovProjectStatusEnum.HAS_PRE_INS),
ON_FINALLY_INSPECTED(20010, "终验中", GovProjectStatusEnum.HAS_PRE_INS), ON_FINALLY_INSPECTED(20010, "终验中", GovProjectStatusEnum.HAS_PRE_INS),
TO_BE_FIRST_INSPECTED(20008, "待初验", null), TO_BE_FIRST_INSPECTED(20008, "待初验", null),
ON_FIRST_INSPECTED(20009, "初验中", null),
ON_PILOT_RUNNING(20009, "试运行中", null),
FINAL_ACCEPTANCE_IS_UNDER_REVIEW(20004, "终验审核中", null), FINAL_ACCEPTANCE_IS_UNDER_REVIEW(20004, "终验审核中", null),
FINAL_ACCEPTANCE_REVIEW_FAILED(20005, "终验审核不通过", null), FINAL_ACCEPTANCE_REVIEW_FAILED(20005, "终验审核不通过", null),
OPERATION(20006, "待开工", GovProjectStatusEnum.PURCHASED),
/** /**
* 项目阶段:已归档 * 项目阶段:已归档
*/ */


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

@@ -23,7 +23,7 @@ public enum TenderStatusEnum {
TO_BE_SUBMIT_CONSTRUCTION_INFO(ProjectStatusEnum.ON_PURCHASING, 102, "待填写合同信息"), TO_BE_SUBMIT_CONSTRUCTION_INFO(ProjectStatusEnum.ON_PURCHASING, 102, "待填写合同信息"),
TO_BE_SUBMIT_OPERATION_PLAN(ProjectStatusEnum.ON_PURCHASING, 103, "待填写实施计划"), TO_BE_SUBMIT_OPERATION_PLAN(ProjectStatusEnum.ON_PURCHASING, 103, "待填写实施计划"),
TO_BE_SUBMIT_FIRST_INSPECTED_INFO(ProjectStatusEnum.TO_BE_FIRST_INSPECTED, 201, "待上传初验材料"), TO_BE_SUBMIT_FIRST_INSPECTED_INFO(ProjectStatusEnum.TO_BE_FIRST_INSPECTED, 201, "待上传初验材料"),
TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY(ProjectStatusEnum.ON_FIRST_INSPECTED, 401, "待终验申报"),
TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY(ProjectStatusEnum.ON_PILOT_RUNNING, 401, "待终验申报"),
ON_FINALLY_INSPECTED_APPLY(ProjectStatusEnum.ON_FINALLY_INSPECTED, 501, "终验申报中"), ON_FINALLY_INSPECTED_APPLY(ProjectStatusEnum.ON_FINALLY_INSPECTED, 501, "终验申报中"),
FINALLY_INSPECTED_FAILED(ProjectStatusEnum.ON_FINALLY_INSPECTED, 502, "终验申报不通过"), FINALLY_INSPECTED_FAILED(ProjectStatusEnum.ON_FINALLY_INSPECTED, 502, "终验申报不通过"),
FINALLY_INSPECTED_PASSED(ProjectStatusEnum.ACCEPTED, 601, "终验完成"); FINALLY_INSPECTED_PASSED(ProjectStatusEnum.ACCEPTED, 601, "终验完成");


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

@@ -213,7 +213,7 @@ public class HandlerManage {
break; break;
case ON_PURCHASING: case ON_PURCHASING:
case TO_BE_FIRST_INSPECTED: case TO_BE_FIRST_INSPECTED:
case ON_FIRST_INSPECTED:
case ON_PILOT_RUNNING:
case TO_BE_FINALLY_INSPECTED: case TO_BE_FINALLY_INSPECTED:
case ON_FINALLY_INSPECTED: case ON_FINALLY_INSPECTED:
ProjectProcessStageEnum processStage = ProjectProcessStageEnum.get(instTypeEnum.getCode()) ProjectProcessStageEnum processStage = ProjectProcessStageEnum.get(instTypeEnum.getCode())


Loading…
Peruuta
Tallenna