@@ -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()); | ||||
@@ -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() | ||||
// 终审审核通过,从终审审核中到已归档 | // 终审审核通过,从终审审核中到已归档 | ||||
@@ -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), | |||||
/** | /** | ||||
* 终验审核不通过(项目状态变为:终验审核不通过) | * 终验审核不通过(项目状态变为:终验审核不通过) | ||||
*/ | */ | ||||
@@ -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; | |||||
} | |||||
} |
@@ -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; | |||||
} | |||||
} | |||||
} |
@@ -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); | ||||
} | } | ||||
@@ -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 | ||||
@@ -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); | |||||
} | |||||
} | } | ||||
} | } | ||||
@@ -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; | |||||
} |
@@ -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 | ||||
@@ -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(); | ||||
@@ -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 | ||||
@@ -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; | ||||
@@ -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 | ||||
@@ -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()); | ||||
} | } | ||||
@@ -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); | |||||
} | } | ||||
} | } |
@@ -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 | ||||
@@ -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 | ||||
@@ -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 | ||||
@@ -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), | |||||
/** | /** | ||||
* 项目阶段:已归档 | * 项目阶段:已归档 | ||||
*/ | */ | ||||
@@ -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, "终验完成"); | ||||
@@ -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()) | ||||