@@ -2,7 +2,6 @@ package com.hz.pm.api.common.statemachine.action; | |||||
import cn.hutool.core.lang.Assert; | import cn.hutool.core.lang.Assert; | ||||
import com.hz.pm.api.common.statemachine.builder.impl.AdaptStateMachineBuilderImpl; | import com.hz.pm.api.common.statemachine.builder.impl.AdaptStateMachineBuilderImpl; | ||||
import com.hz.pm.api.common.statemachine.builder.impl.TestValidStateMachineBuilderImpl; | |||||
import com.hz.pm.api.common.statemachine.event.AdaptStateChangeEvent; | import com.hz.pm.api.common.statemachine.event.AdaptStateChangeEvent; | ||||
import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil; | import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | import com.hz.pm.api.projectdeclared.model.entity.Purchase; | ||||
@@ -22,7 +21,7 @@ import org.springframework.statemachine.annotation.WithStateMachine; | |||||
*/ | */ | ||||
@Slf4j | @Slf4j | ||||
@WithStateMachine(id = AdaptStateMachineBuilderImpl.MACHINE_ID) | @WithStateMachine(id = AdaptStateMachineBuilderImpl.MACHINE_ID) | ||||
public class AdaptAction { | |||||
public class AdaptStateChangeAction { | |||||
private Purchase getPurchaseInfo(Message<AdaptStateChangeEvent> message) { | private Purchase getPurchaseInfo(Message<AdaptStateChangeEvent> message) { | ||||
Purchase purchase = (Purchase) message.getHeaders().get(TenderStateMachineUtil.PURCHASE); | Purchase purchase = (Purchase) message.getHeaders().get(TenderStateMachineUtil.PURCHASE); |
@@ -5,7 +5,7 @@ import cn.hutool.json.JSONUtil; | |||||
import com.baomidou.mybatisplus.core.toolkit.Assert; | import com.baomidou.mybatisplus.core.toolkit.Assert; | ||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | import com.hz.pm.api.common.model.constant.StateMachineConst; | ||||
import com.hz.pm.api.common.enumeration.CommonEnum; | import com.hz.pm.api.common.enumeration.CommonEnum; | ||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | ||||
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.ProjectApplication; | import com.hz.pm.api.projectlib.model.entity.ProjectApplication; | ||||
@@ -24,12 +24,12 @@ import static com.hz.pm.api.common.model.constant.StateMachineConst.APPLICATION_ | |||||
* @since 2023/02/07 22:31 | * @since 2023/02/07 22:31 | ||||
*/ | */ | ||||
@Slf4j | @Slf4j | ||||
public class ProjectDeclareActionChoice implements Action<ProjectStatusEnum, ProjectStatusChangeEvent> { | |||||
public class ProjectDeclareActionChoice implements Action<ProjectStatusEnum, ProjectStateChangeEvent> { | |||||
private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | ||||
@Override | @Override | ||||
public void execute(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) { | |||||
public void execute(StateContext<ProjectStatusEnum, ProjectStateChangeEvent> stateContext) { | |||||
log.info(String.valueOf(stateContext.getTarget().getId())); | log.info(String.valueOf(stateContext.getTarget().getId())); | ||||
ProjectStatusEnum projectStatusEnum = stateContext.getTarget().getId(); | ProjectStatusEnum projectStatusEnum = stateContext.getTarget().getId(); | ||||
switch (projectStatusEnum) { | switch (projectStatusEnum) { | ||||
@@ -47,7 +47,7 @@ public class ProjectDeclareActionChoice implements Action<ProjectStatusEnum, Pro | |||||
} | } | ||||
} | } | ||||
private void approvedAfterChoice(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) { | |||||
private void approvedAfterChoice(StateContext<ProjectStatusEnum, ProjectStateChangeEvent> stateContext) { | |||||
Project project = getProject(stateContext); | Project project = getProject(stateContext); | ||||
List<ProjectApplication> projectApplications = getProjectApplication(stateContext); | List<ProjectApplication> projectApplications = getProjectApplication(stateContext); | ||||
log.info("立项批复之后,项目的状态为:{}", project.getStatus()); | log.info("立项批复之后,项目的状态为:{}", project.getStatus()); | ||||
@@ -72,26 +72,26 @@ public class ProjectDeclareActionChoice implements Action<ProjectStatusEnum, Pro | |||||
} | } | ||||
} | } | ||||
private void preDeclareChoice(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) { | |||||
private void preDeclareChoice(StateContext<ProjectStatusEnum, ProjectStateChangeEvent> stateContext) { | |||||
Project project = getProject(stateContext); | Project project = getProject(stateContext); | ||||
log.info("预审申报事件之前,项目的状态为:{}", project.getStatus()); | log.info("预审申报事件之前,项目的状态为:{}", project.getStatus()); | ||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | ||||
} | } | ||||
private void preWithDrawChoice(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) { | |||||
private void preWithDrawChoice(StateContext<ProjectStatusEnum, ProjectStateChangeEvent> stateContext) { | |||||
Project project = getProject(stateContext); | Project project = getProject(stateContext); | ||||
log.info("预审中撤回事件之前,项目的状态为:{}", project.getStatus()); | log.info("预审中撤回事件之前,项目的状态为:{}", project.getStatus()); | ||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | ||||
} | } | ||||
private Project getProject(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) { | |||||
private Project getProject(StateContext<ProjectStatusEnum, ProjectStateChangeEvent> stateContext) { | |||||
Project project = stateContext.getMessage().getHeaders().get(PROJECT_DECLARE, Project.class); | Project project = stateContext.getMessage().getHeaders().get(PROJECT_DECLARE, Project.class); | ||||
Assert.notNull(project, "项目信息获取失败%s", JSONUtil.toJsonStr(stateContext.getMessage())); | Assert.notNull(project, "项目信息获取失败%s", JSONUtil.toJsonStr(stateContext.getMessage())); | ||||
return project; | return project; | ||||
} | } | ||||
@SuppressWarnings("unchecked") | @SuppressWarnings("unchecked") | ||||
private List<ProjectApplication> getProjectApplication(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) { | |||||
private List<ProjectApplication> getProjectApplication(StateContext<ProjectStatusEnum, ProjectStateChangeEvent> stateContext) { | |||||
return stateContext.getMessage().getHeaders().get(APPLICATION_DECLARE, List.class); | return stateContext.getMessage().getHeaders().get(APPLICATION_DECLARE, List.class); | ||||
} | } | ||||
@@ -2,8 +2,8 @@ package com.hz.pm.api.common.statemachine.action; | |||||
import cn.hutool.core.lang.Assert; | import cn.hutool.core.lang.Assert; | ||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | import com.hz.pm.api.common.model.constant.StateMachineConst; | ||||
import com.hz.pm.api.common.statemachine.builder.impl.ProjectDeclareStateMachineBuilderImpl; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.builder.impl.ProjectStateMachineBuilderImpl; | |||||
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.Project; | ||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
@@ -18,180 +18,180 @@ import org.springframework.statemachine.annotation.WithStateMachine; | |||||
* @since 2023/02/08 13:48 | * @since 2023/02/08 13:48 | ||||
*/ | */ | ||||
@Slf4j | @Slf4j | ||||
@WithStateMachine(id = ProjectDeclareStateMachineBuilderImpl.MACHINE_ID) | |||||
public class ProjectDeclareAction { | |||||
@WithStateMachine(id = ProjectStateMachineBuilderImpl.MACHINE_ID) | |||||
public class ProjectStateChangeAction { | |||||
private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | ||||
private Project getProject(Message<ProjectStatusChangeEvent> message) { | |||||
private Project getProject(Message<ProjectStateChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | ||||
Assert.notNull(project, "未获取到需要状态变更的项目信息"); | Assert.notNull(project, "未获取到需要状态变更的项目信息"); | ||||
return project; | return project; | ||||
} | } | ||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "PENDING_PREQUALIFICATION") | @OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "PENDING_PREQUALIFICATION") | ||||
public void UNDER_INTERNAL_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
public void UNDER_INTERNAL_PASS(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | ||||
} | } | ||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "UNDER_INTERNAL_AUDIT_NOT_PASS") | @OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "UNDER_INTERNAL_AUDIT_NOT_PASS") | ||||
public void UNDER_INTERNAL_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
public void UNDER_INTERNAL_REJECT(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode()); | project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode()); | ||||
} | } | ||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "TO_BE_DECLARED") | @OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "TO_BE_DECLARED") | ||||
public void UNDER_INTERNAL_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
public void UNDER_INTERNAL_WITHDRAW(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.TO_BE_DECLARED.getCode()); | project.setStatus(ProjectStatusEnum.TO_BE_DECLARED.getCode()); | ||||
} | } | ||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT_NOT_PASS", target = "UNDER_INTERNAL_AUDIT") | @OnTransition(source = "UNDER_INTERNAL_AUDIT_NOT_PASS", target = "UNDER_INTERNAL_AUDIT") | ||||
public void UNDER_INTERNAL_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
public void UNDER_INTERNAL_REJECT_RESUBMIT(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | ||||
} | } | ||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "PENDING_PREQUALIFICATION_CHOICE") | @OnTransition(source = "PENDING_PREQUALIFICATION", target = "PENDING_PREQUALIFICATION_CHOICE") | ||||
public void PRELIMINARY_REVIEW_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
public void PRELIMINARY_REVIEW_DECLARE(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | ||||
} | } | ||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "UNDER_INTERNAL_AUDIT") | @OnTransition(source = "PENDING_PREQUALIFICATION", target = "UNDER_INTERNAL_AUDIT") | ||||
public void PENDING_PREQUALIFICATION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
public void PENDING_PREQUALIFICATION_WITHDRAW(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | ||||
} | } | ||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS") | @OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS") | ||||
public void PROVINCIAL_DEPARTMENT_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_PASS(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS.getCode()); | project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS.getCode()); | ||||
} | } | ||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS", target = "PRE_APPLYING") | @OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS", target = "PRE_APPLYING") | ||||
public void PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW(Message<ProjectStatusChangeEvent> message) { | |||||
public void PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | ||||
} | } | ||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED") | @OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED") | ||||
public void PROVINCIAL_DEPARTMENT_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_REJECT(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED.getCode()); | project.setStatus(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED.getCode()); | ||||
} | } | ||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "PENDING_PREQUALIFICATION") | @OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "PENDING_PREQUALIFICATION") | ||||
public void JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
public void JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | ||||
} | } | ||||
@OnTransition(source = "PRE_APPLYING", target = "DEPARTMENT_JOINT_REVIEW") | @OnTransition(source = "PRE_APPLYING", target = "DEPARTMENT_JOINT_REVIEW") | ||||
public void PRELIMINARY_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
public void PRELIMINARY_REVIEW_PASS(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | ||||
} | } | ||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_FAILED") | @OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_FAILED") | ||||
public void PRELIMINARY_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
public void PRELIMINARY_REVIEW_REJECT(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode()); | project.setStatus(ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode()); | ||||
} | } | ||||
@OnTransition(source = "PREQUALIFICATION_FAILED", target = "PENDING_PREQUALIFICATION_CHOICE") | @OnTransition(source = "PREQUALIFICATION_FAILED", target = "PENDING_PREQUALIFICATION_CHOICE") | ||||
public void PRELIMINARY_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
public void PRELIMINARY_REVIEW_REJECT_RESUBMIT(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | ||||
} | } | ||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_WITHDRAW_CHOICE") | @OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_WITHDRAW_CHOICE") | ||||
public void PRE_APPLYING_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
public void PRE_APPLYING_WITHDRAW(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE.getCode()); | project.setStatus(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE.getCode()); | ||||
} | } | ||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "IN_THE_ANNUAL_PLAN") | @OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "IN_THE_ANNUAL_PLAN") | ||||
public void DEPARTMENT_UNITED_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
public void DEPARTMENT_UNITED_REVIEW_PASS(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | ||||
} | } | ||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "DEPARTMENT_JOINT_REVIEW_FAILED") | @OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "DEPARTMENT_JOINT_REVIEW_FAILED") | ||||
public void DEPARTMENT_UNITED_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
public void DEPARTMENT_UNITED_REVIEW_REJECT(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED.getCode()); | project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED.getCode()); | ||||
} | } | ||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "PRE_APPLYING") | @OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "PRE_APPLYING") | ||||
public void DEPARTMENT_JOINT_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
public void DEPARTMENT_JOINT_REVIEW_WITHDRAW(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | ||||
} | } | ||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "PLAN_TO_BE_DECLARED") | @OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "PLAN_TO_BE_DECLARED") | ||||
public void ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
public void ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | ||||
} | } | ||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "BE_SUSPENDED") | @OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "BE_SUSPENDED") | ||||
public void ANNUAL_PLAN_SUSPEND(Message<ProjectStatusChangeEvent> message) { | |||||
public void ANNUAL_PLAN_SUSPEND(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.BE_SUSPENDED.getCode()); | project.setStatus(ProjectStatusEnum.BE_SUSPENDED.getCode()); | ||||
} | } | ||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "DEPARTMENT_JOINT_REVIEW") | @OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "DEPARTMENT_JOINT_REVIEW") | ||||
public void IN_THE_ANNUAL_PLAN_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
public void IN_THE_ANNUAL_PLAN_WITHDRAW(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | ||||
} | } | ||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "SCHEME_UNDER_REVIEW") | @OnTransition(source = "PLAN_TO_BE_DECLARED", target = "SCHEME_UNDER_REVIEW") | ||||
public void DECLARE_PLAN(Message<ProjectStatusChangeEvent> message) { | |||||
public void DECLARE_PLAN(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | ||||
} | } | ||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "IN_THE_ANNUAL_PLAN") | @OnTransition(source = "PLAN_TO_BE_DECLARED", target = "IN_THE_ANNUAL_PLAN") | ||||
public void PLAN_TO_DECLARE_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
public void PLAN_TO_DECLARE_WITHDRAW(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | ||||
} | } | ||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | @OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | ||||
public void DECLARE_PLAN_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
public void DECLARE_PLAN_RESUBMIT(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | ||||
} | } | ||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "TO_BE_APPROVED") | @OnTransition(source = "SCHEME_UNDER_REVIEW", target = "TO_BE_APPROVED") | ||||
public void PLAN_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
public void PLAN_REVIEW_PASS(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | ||||
} | } | ||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "SCHEME_REVIEW_FAILED") | @OnTransition(source = "SCHEME_UNDER_REVIEW", target = "SCHEME_REVIEW_FAILED") | ||||
public void PLAN_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
public void PLAN_REVIEW_REJECT(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode()); | project.setStatus(ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode()); | ||||
} | } | ||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | @OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | ||||
public void PLAN_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
public void PLAN_REVIEW_REJECT_RESUBMIT(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | ||||
} | } | ||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "PLAN_TO_BE_DECLARED") | @OnTransition(source = "SCHEME_UNDER_REVIEW", target = "PLAN_TO_BE_DECLARED") | ||||
public void SCHEME_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
public void SCHEME_UNDER_REVIEW_WITHDRAW(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | ||||
} | } | ||||
@@ -199,20 +199,20 @@ public class ProjectDeclareAction { | |||||
//================================================================================================================== | //================================================================================================================== | ||||
@OnTransition(source = "DECLARED_APPROVED_TO_BE_RECORD", target = "DECLARED_APPROVED_RECORD_AUDITING") | @OnTransition(source = "DECLARED_APPROVED_TO_BE_RECORD", target = "DECLARED_APPROVED_RECORD_AUDITING") | ||||
public void DECLARED_RECORD_SUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
public void DECLARED_RECORD_SUBMIT(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
// 待立项批复批复后,项目一级状态变更为已立项 | // 待立项批复批复后,项目一级状态变更为已立项 | ||||
project.setStatus(ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING.getCode()); | project.setStatus(ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING.getCode()); | ||||
} | } | ||||
@OnTransition(source = "DECLARED_APPROVED_RECORD_FAILED", target = "DECLARED_APPROVED_RECORD_AUDITING") | @OnTransition(source = "DECLARED_APPROVED_RECORD_FAILED", target = "DECLARED_APPROVED_RECORD_AUDITING") | ||||
public void DECLARED_RECORD_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
public void DECLARED_RECORD_RESUBMIT(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING.getCode()); | project.setStatus(ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING.getCode()); | ||||
} | } | ||||
@OnTransition(source = "DECLARED_APPROVED_RECORD_AUDITING", target = "TO_BE_PURCHASED") | @OnTransition(source = "DECLARED_APPROVED_RECORD_AUDITING", target = "TO_BE_PURCHASED") | ||||
public void DECLARED_RECORD_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
public void DECLARED_RECORD_PASS(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
// 待立项批复批复后,项目一级状态变更为已立项 | // 待立项批复批复后,项目一级状态变更为已立项 | ||||
project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | ||||
@@ -220,7 +220,7 @@ public class ProjectDeclareAction { | |||||
} | } | ||||
@OnTransition(source = "DECLARED_APPROVED_RECORD_AUDITING", target = "DECLARED_APPROVED_RECORD_FAILED") | @OnTransition(source = "DECLARED_APPROVED_RECORD_AUDITING", target = "DECLARED_APPROVED_RECORD_FAILED") | ||||
public void DECLARED_RECORD_FAILED(Message<ProjectStatusChangeEvent> message) { | |||||
public void DECLARED_RECORD_FAILED(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.DECLARED_APPROVED_RECORD_FAILED.getCode()); | project.setStatus(ProjectStatusEnum.DECLARED_APPROVED_RECORD_FAILED.getCode()); | ||||
} | } | ||||
@@ -228,7 +228,7 @@ public class ProjectDeclareAction { | |||||
//================================================================================================================== | //================================================================================================================== | ||||
@OnTransition(source = "TO_BE_APPROVED", target = "TO_BE_PURCHASED") | @OnTransition(source = "TO_BE_APPROVED", target = "TO_BE_PURCHASED") | ||||
public void PROJECT_APPROVAL(Message<ProjectStatusChangeEvent> message) { | |||||
public void PROJECT_APPROVAL(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
// 待立项批复批复后,项目一级状态变更为已立项 | // 待立项批复批复后,项目一级状态变更为已立项 | ||||
project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | ||||
@@ -236,25 +236,25 @@ public class ProjectDeclareAction { | |||||
} | } | ||||
@OnTransition(source = "TO_BE_APPROVED", target = "SCHEME_UNDER_REVIEW") | @OnTransition(source = "TO_BE_APPROVED", target = "SCHEME_UNDER_REVIEW") | ||||
public void TO_BE_APPROVED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
public void TO_BE_APPROVED_WITHDRAW(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | ||||
} | } | ||||
@OnTransition(source = "TO_BE_PURCHASED", target = "OPERATION") | @OnTransition(source = "TO_BE_PURCHASED", target = "OPERATION") | ||||
public void PURCHASE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
public void PURCHASE_PUT_ON_RECORD(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.OPERATION.getCode()); | project.setStatus(ProjectStatusEnum.OPERATION.getCode()); | ||||
} | } | ||||
@OnTransition(source = "OPERATION", target = "UNDER_CONSTRUCTION") | @OnTransition(source = "OPERATION", target = "UNDER_CONSTRUCTION") | ||||
public void START_TO_WORK(Message<ProjectStatusChangeEvent> message) { | |||||
public void START_TO_WORK(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | ||||
} | } | ||||
@OnTransition(source = "TO_BE_PURCHASED", target = "TO_BE_APPROVED") | @OnTransition(source = "TO_BE_PURCHASED", target = "TO_BE_APPROVED") | ||||
public void TO_BE_PURCHASED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
public void TO_BE_PURCHASED_WITHDRAW(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
// 待采购状态撤回后,项目一级状态回退到未立项 | // 待采购状态撤回后,项目一级状态回退到未立项 | ||||
project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); | project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); | ||||
@@ -263,56 +263,56 @@ public class ProjectDeclareAction { | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_FINALLY_INSPECTED") | @OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_FINALLY_INSPECTED") | ||||
public void PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
public void PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode()); | project.setStatus(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode()); | ||||
} | } | ||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_PURCHASED") | @OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_PURCHASED") | ||||
public void UNDER_CONSTRUCTION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
public void UNDER_CONSTRUCTION_WITHDRAW(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | ||||
} | } | ||||
@OnTransition(source = "TO_BE_PURCHASED", target = "ON_PURCHASING") | @OnTransition(source = "TO_BE_PURCHASED", target = "ON_PURCHASING") | ||||
public void SUBMIT_PURCHASE_NOTICE(Message<ProjectStatusChangeEvent> message) { | |||||
public void SUBMIT_PURCHASE_NOTICE(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.ON_PURCHASING.getCode()); | project.setStatus(ProjectStatusEnum.ON_PURCHASING.getCode()); | ||||
} | } | ||||
@OnTransition(source = "ON_PURCHASING", target = "TO_BE_FIRST_INSPECTED") | @OnTransition(source = "ON_PURCHASING", target = "TO_BE_FIRST_INSPECTED") | ||||
public void SUBMIT_OPERATION_PLAN(Message<ProjectStatusChangeEvent> message) { | |||||
public void SUBMIT_OPERATION_PLAN(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
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_FIRST_INSPECTED") | ||||
public void SUBMIT_FIRST_INSPECTED_FILES(Message<ProjectStatusChangeEvent> 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()); | project.setStatus(ProjectStatusEnum.ON_FIRST_INSPECTED.getCode()); | ||||
} | } | ||||
@OnTransition(source = "ON_FIRST_INSPECTED", target = "TO_BE_FINALLY_INSPECTED") | @OnTransition(source = "ON_FIRST_INSPECTED", target = "TO_BE_FINALLY_INSPECTED") | ||||
public void FIRST_INSPECTED_PASSED(Message<ProjectStatusChangeEvent> message) { | |||||
public void FIRST_INSPECTED_PASSED(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode()); | project.setStatus(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode()); | ||||
} | } | ||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | @OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | ||||
public void FINAL_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> 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()); | ||||
} | } | ||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "UNDER_CONSTRUCTION") | @OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "UNDER_CONSTRUCTION") | ||||
public void TO_BE_FINALLY_INSPECTED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
public void TO_BE_FINALLY_INSPECTED_WITHDRAW(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | ||||
} | } | ||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "ARCHIVED") | @OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "ARCHIVED") | ||||
public void FINAL_ACCEPTANCE_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
public void FINAL_ACCEPTANCE_PASS(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
// 终验审核通过后,项目一级状态变更为已归档 | // 终验审核通过后,项目一级状态变更为已归档 | ||||
project.setStage(ProjectStatusEnum.ARCHIVED.getCode()); | project.setStage(ProjectStatusEnum.ARCHIVED.getCode()); | ||||
@@ -320,19 +320,19 @@ public class ProjectDeclareAction { | |||||
} | } | ||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_REVIEW_FAILED") | @OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_REVIEW_FAILED") | ||||
public void FINAL_ACCEPTANCE_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
public void FINAL_ACCEPTANCE_REJECT(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED.getCode()); | project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED.getCode()); | ||||
} | } | ||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "TO_BE_FINALLY_INSPECTED") | @OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "TO_BE_FINALLY_INSPECTED") | ||||
public void FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
public void FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW(Message<ProjectStateChangeEvent> message) { | |||||
Project project = getProject(message); | Project project = getProject(message); | ||||
project.setStatus(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode()); | project.setStatus(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode()); | ||||
} | } | ||||
@OnTransition(source = "FINAL_ACCEPTANCE_REVIEW_FAILED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | @OnTransition(source = "FINAL_ACCEPTANCE_REVIEW_FAILED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | ||||
public void FINAL_RE_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
public void FINAL_RE_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,7 +2,6 @@ package com.hz.pm.api.common.statemachine.action; | |||||
import cn.hutool.core.lang.Assert; | import cn.hutool.core.lang.Assert; | ||||
import com.hz.pm.api.common.statemachine.builder.impl.SelfTestStateMachineBuilderImpl; | import com.hz.pm.api.common.statemachine.builder.impl.SelfTestStateMachineBuilderImpl; | ||||
import com.hz.pm.api.common.statemachine.builder.impl.TestValidStateMachineBuilderImpl; | |||||
import com.hz.pm.api.common.statemachine.event.SelfTestStateChangeEvent; | import com.hz.pm.api.common.statemachine.event.SelfTestStateChangeEvent; | ||||
import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil; | import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | import com.hz.pm.api.projectdeclared.model.entity.Purchase; | ||||
@@ -22,7 +21,7 @@ import org.springframework.statemachine.annotation.WithStateMachine; | |||||
*/ | */ | ||||
@Slf4j | @Slf4j | ||||
@WithStateMachine(id = SelfTestStateMachineBuilderImpl.MACHINE_ID) | @WithStateMachine(id = SelfTestStateMachineBuilderImpl.MACHINE_ID) | ||||
public class SelfTestAction { | |||||
public class SelfTestStateChangeAction { | |||||
private Purchase getPurchaseInfo(Message<SelfTestStateChangeEvent> message) { | private Purchase getPurchaseInfo(Message<SelfTestStateChangeEvent> message) { | ||||
Purchase purchase = (Purchase) message.getHeaders().get(TenderStateMachineUtil.PURCHASE); | Purchase purchase = (Purchase) message.getHeaders().get(TenderStateMachineUtil.PURCHASE); | ||||
@@ -48,7 +47,7 @@ public class SelfTestAction { | |||||
purchase.setSelfTestStatus(TenderSelfTestStatusEnum.SELF_TEST_INFO_FAILED.getCode()); | purchase.setSelfTestStatus(TenderSelfTestStatusEnum.SELF_TEST_INFO_FAILED.getCode()); | ||||
} | } | ||||
@OnTransition(source = "SELF_TEST_INFO_FAILED", target = "TEST_VALID_INFO_AUDIT") | |||||
@OnTransition(source = "SELF_TEST_INFO_FAILED", target = "SELF_TEST_INFO_AUDIT") | |||||
public void RESUBMIT_SELF_TEST_INFO(Message<SelfTestStateChangeEvent> message) { | public void RESUBMIT_SELF_TEST_INFO(Message<SelfTestStateChangeEvent> message) { | ||||
Purchase purchase = getPurchaseInfo(message); | Purchase purchase = getPurchaseInfo(message); | ||||
purchase.setSelfTestStatus(TenderSelfTestStatusEnum.SELF_TEST_INFO_AUDIT.getCode()); | purchase.setSelfTestStatus(TenderSelfTestStatusEnum.SELF_TEST_INFO_AUDIT.getCode()); |
@@ -2,7 +2,7 @@ package com.hz.pm.api.common.statemachine.action; | |||||
import cn.hutool.core.lang.Assert; | import cn.hutool.core.lang.Assert; | ||||
import com.hz.pm.api.common.statemachine.builder.impl.TenderStateMachineBuilderImpl; | import com.hz.pm.api.common.statemachine.builder.impl.TenderStateMachineBuilderImpl; | ||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil; | import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | import com.hz.pm.api.projectdeclared.model.entity.Purchase; | ||||
import com.hz.pm.api.projectlib.model.enumeration.TenderStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.TenderStatusEnum; | ||||
@@ -21,9 +21,9 @@ import org.springframework.statemachine.annotation.WithStateMachine; | |||||
*/ | */ | ||||
@Slf4j | @Slf4j | ||||
@WithStateMachine(id = TenderStateMachineBuilderImpl.MACHINE_ID) | @WithStateMachine(id = TenderStateMachineBuilderImpl.MACHINE_ID) | ||||
public class TenderAction { | |||||
public class TenderStateChangeAction { | |||||
private Purchase getPurchaseInfo(Message<ProjectStatusChangeEvent> message) { | |||||
private Purchase getPurchaseInfo(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = (Purchase) message.getHeaders().get(TenderStateMachineUtil.PURCHASE); | Purchase purchase = (Purchase) message.getHeaders().get(TenderStateMachineUtil.PURCHASE); | ||||
Assert.notNull(purchase, "未获取到需要状态变更的标段信息"); | Assert.notNull(purchase, "未获取到需要状态变更的标段信息"); | ||||
return purchase; | return purchase; | ||||
@@ -35,7 +35,7 @@ public class TenderAction { | |||||
* @param message \ | * @param message \ | ||||
*/ | */ | ||||
@OnTransition(source = "TO_BE_SUBMIT_PURCHASE_INFO", target = "TO_BE_SUBMIT_CONSTRUCTION_INFO") | @OnTransition(source = "TO_BE_SUBMIT_PURCHASE_INFO", target = "TO_BE_SUBMIT_CONSTRUCTION_INFO") | ||||
public void SUBMIT_PURCHASE_INFO(Message<ProjectStatusChangeEvent> message) { | |||||
public void SUBMIT_PURCHASE_INFO(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | Purchase purchase = getPurchaseInfo(message); | ||||
purchase.setStatus(TenderStatusEnum.TO_BE_SUBMIT_CONSTRUCTION_INFO.getTenderStatus()); | purchase.setStatus(TenderStatusEnum.TO_BE_SUBMIT_CONSTRUCTION_INFO.getTenderStatus()); | ||||
} | } | ||||
@@ -46,7 +46,7 @@ public class TenderAction { | |||||
* @param message \ | * @param message \ | ||||
*/ | */ | ||||
@OnTransition(source = "TO_BE_SUBMIT_CONSTRUCTION_INFO", target = "TO_BE_SUBMIT_OPERATION_PLAN") | @OnTransition(source = "TO_BE_SUBMIT_CONSTRUCTION_INFO", target = "TO_BE_SUBMIT_OPERATION_PLAN") | ||||
public void SUBMIT_CONSTRUCTION_INFO(Message<ProjectStatusChangeEvent> message) { | |||||
public void SUBMIT_CONSTRUCTION_INFO(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | Purchase purchase = getPurchaseInfo(message); | ||||
purchase.setStatus(TenderStatusEnum.TO_BE_SUBMIT_OPERATION_PLAN.getTenderStatus()); | purchase.setStatus(TenderStatusEnum.TO_BE_SUBMIT_OPERATION_PLAN.getTenderStatus()); | ||||
} | } | ||||
@@ -57,7 +57,7 @@ public class TenderAction { | |||||
* @param message \ | * @param message \ | ||||
*/ | */ | ||||
@OnTransition(source = "TO_BE_SUBMIT_OPERATION_PLAN", target = "TO_BE_SUBMIT_FIRST_INSPECTED_INFO") | @OnTransition(source = "TO_BE_SUBMIT_OPERATION_PLAN", target = "TO_BE_SUBMIT_FIRST_INSPECTED_INFO") | ||||
public void SUBMIT_OPERATION_PLAN(Message<ProjectStatusChangeEvent> message) { | |||||
public void SUBMIT_OPERATION_PLAN(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | Purchase purchase = getPurchaseInfo(message); | ||||
purchase.setStatus(TenderStatusEnum.TO_BE_SUBMIT_FIRST_INSPECTED_INFO.getTenderStatus()); | purchase.setStatus(TenderStatusEnum.TO_BE_SUBMIT_FIRST_INSPECTED_INFO.getTenderStatus()); | ||||
} | } | ||||
@@ -68,7 +68,7 @@ public class TenderAction { | |||||
* @param message \ | * @param message \ | ||||
*/ | */ | ||||
@OnTransition(source = "TO_BE_SUBMIT_FIRST_INSPECTED_INFO", target = "TO_BE_SUBMIT_XCFHX_APPLY") | @OnTransition(source = "TO_BE_SUBMIT_FIRST_INSPECTED_INFO", target = "TO_BE_SUBMIT_XCFHX_APPLY") | ||||
public void SUBMIT_FIRST_INSPECTED_FILES(Message<ProjectStatusChangeEvent> message) { | |||||
public void SUBMIT_FIRST_INSPECTED_FILES(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | Purchase purchase = getPurchaseInfo(message); | ||||
purchase.setStatus(TenderStatusEnum.TO_BE_SUBMIT_XCFHX_APPLY.getTenderStatus()); | purchase.setStatus(TenderStatusEnum.TO_BE_SUBMIT_XCFHX_APPLY.getTenderStatus()); | ||||
} | } | ||||
@@ -79,7 +79,7 @@ public class TenderAction { | |||||
* @param message \ | * @param message \ | ||||
*/ | */ | ||||
@OnTransition(source = "TO_BE_SUBMIT_XCFHX_APPLY", target = "ON_XCFHX_APPLY") | @OnTransition(source = "TO_BE_SUBMIT_XCFHX_APPLY", target = "ON_XCFHX_APPLY") | ||||
public void SUBMIT_XCFHX_APPLY(Message<ProjectStatusChangeEvent> message) { | |||||
public void SUBMIT_XCFHX_APPLY(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | Purchase purchase = getPurchaseInfo(message); | ||||
purchase.setStatus(TenderStatusEnum.ON_XCFHX_APPLY.getTenderStatus()); | purchase.setStatus(TenderStatusEnum.ON_XCFHX_APPLY.getTenderStatus()); | ||||
} | } | ||||
@@ -90,7 +90,7 @@ public class TenderAction { | |||||
* @param message \ | * @param message \ | ||||
*/ | */ | ||||
@OnTransition(source = "ON_XCFHX_APPLY", target = "TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY") | @OnTransition(source = "ON_XCFHX_APPLY", target = "TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY") | ||||
public void XCFHX_APPLY_PASSED(Message<ProjectStatusChangeEvent> message) { | |||||
public void XCFHX_APPLY_PASSED(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | Purchase purchase = getPurchaseInfo(message); | ||||
purchase.setStatus(TenderStatusEnum.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY.getTenderStatus()); | purchase.setStatus(TenderStatusEnum.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY.getTenderStatus()); | ||||
} | } | ||||
@@ -101,7 +101,7 @@ public class TenderAction { | |||||
* @param message \ | * @param message \ | ||||
*/ | */ | ||||
@OnTransition(source = "ON_XCFHX_APPLY", target = "XCFHX_APPLY_FAILED") | @OnTransition(source = "ON_XCFHX_APPLY", target = "XCFHX_APPLY_FAILED") | ||||
public void XCFHX_APPLY_FAILED(Message<ProjectStatusChangeEvent> message) { | |||||
public void XCFHX_APPLY_FAILED(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | Purchase purchase = getPurchaseInfo(message); | ||||
purchase.setStatus(TenderStatusEnum.XCFHX_APPLY_FAILED.getTenderStatus()); | purchase.setStatus(TenderStatusEnum.XCFHX_APPLY_FAILED.getTenderStatus()); | ||||
} | } | ||||
@@ -112,7 +112,7 @@ public class TenderAction { | |||||
* @param message \ | * @param message \ | ||||
*/ | */ | ||||
@OnTransition(source = "XCFHX_APPLY_FAILED", target = "ON_XCFHX_APPLY") | @OnTransition(source = "XCFHX_APPLY_FAILED", target = "ON_XCFHX_APPLY") | ||||
public void RESUBMIT_XCFHX_APPLY(Message<ProjectStatusChangeEvent> message) { | |||||
public void RESUBMIT_XCFHX_APPLY(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | Purchase purchase = getPurchaseInfo(message); | ||||
purchase.setStatus(TenderStatusEnum.ON_XCFHX_APPLY.getTenderStatus()); | purchase.setStatus(TenderStatusEnum.ON_XCFHX_APPLY.getTenderStatus()); | ||||
} | } | ||||
@@ -123,7 +123,7 @@ public class TenderAction { | |||||
* @param message \ | * @param message \ | ||||
*/ | */ | ||||
@OnTransition(source = "TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY", target = "ON_FINALLY_INSPECTED_APPLY") | @OnTransition(source = "TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY", target = "ON_FINALLY_INSPECTED_APPLY") | ||||
public void SUBMIT_FINALLY_INSPECTED(Message<ProjectStatusChangeEvent> message) { | |||||
public void SUBMIT_FINALLY_INSPECTED(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | Purchase purchase = getPurchaseInfo(message); | ||||
purchase.setStatus(TenderStatusEnum.ON_FINALLY_INSPECTED_APPLY.getTenderStatus()); | purchase.setStatus(TenderStatusEnum.ON_FINALLY_INSPECTED_APPLY.getTenderStatus()); | ||||
} | } | ||||
@@ -134,7 +134,7 @@ public class TenderAction { | |||||
* @param message \ | * @param message \ | ||||
*/ | */ | ||||
@OnTransition(source = "FINALLY_INSPECTED_FAILED", target = "ON_FINALLY_INSPECTED_APPLY") | @OnTransition(source = "FINALLY_INSPECTED_FAILED", target = "ON_FINALLY_INSPECTED_APPLY") | ||||
public void RESUBMIT_FINALLY_INSPECTED(Message<ProjectStatusChangeEvent> message) { | |||||
public void RESUBMIT_FINALLY_INSPECTED(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | Purchase purchase = getPurchaseInfo(message); | ||||
purchase.setStatus(TenderStatusEnum.ON_FINALLY_INSPECTED_APPLY.getTenderStatus()); | purchase.setStatus(TenderStatusEnum.ON_FINALLY_INSPECTED_APPLY.getTenderStatus()); | ||||
} | } | ||||
@@ -145,7 +145,7 @@ public class TenderAction { | |||||
* @param message \ | * @param message \ | ||||
*/ | */ | ||||
@OnTransition(source = "ON_FINALLY_INSPECTED_APPLY", target = "FINALLY_INSPECTED_PASSED") | @OnTransition(source = "ON_FINALLY_INSPECTED_APPLY", target = "FINALLY_INSPECTED_PASSED") | ||||
public void FINALLY_INSPECTED_PASSED(Message<ProjectStatusChangeEvent> message) { | |||||
public void FINALLY_INSPECTED_PASSED(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | Purchase purchase = getPurchaseInfo(message); | ||||
purchase.setStatus(TenderStatusEnum.FINALLY_INSPECTED_PASSED.getTenderStatus()); | purchase.setStatus(TenderStatusEnum.FINALLY_INSPECTED_PASSED.getTenderStatus()); | ||||
} | } | ||||
@@ -156,7 +156,7 @@ public class TenderAction { | |||||
* @param message \ | * @param message \ | ||||
*/ | */ | ||||
@OnTransition(source = "ON_FINALLY_INSPECTED_APPLY", target = "FINALLY_INSPECTED_FAILED") | @OnTransition(source = "ON_FINALLY_INSPECTED_APPLY", target = "FINALLY_INSPECTED_FAILED") | ||||
public void FINALLY_INSPECTED_FAILED(Message<ProjectStatusChangeEvent> message) { | |||||
public void FINALLY_INSPECTED_FAILED(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | Purchase purchase = getPurchaseInfo(message); | ||||
purchase.setStatus(TenderStatusEnum.FINALLY_INSPECTED_FAILED.getTenderStatus()); | purchase.setStatus(TenderStatusEnum.FINALLY_INSPECTED_FAILED.getTenderStatus()); | ||||
} | } |
@@ -21,7 +21,7 @@ import org.springframework.statemachine.annotation.WithStateMachine; | |||||
*/ | */ | ||||
@Slf4j | @Slf4j | ||||
@WithStateMachine(id = TestValidStateMachineBuilderImpl.MACHINE_ID) | @WithStateMachine(id = TestValidStateMachineBuilderImpl.MACHINE_ID) | ||||
public class TestValidAction { | |||||
public class TestValidStateChangeAction { | |||||
private Purchase getPurchaseInfo(Message<TestValidStateChangeEvent> message) { | private Purchase getPurchaseInfo(Message<TestValidStateChangeEvent> message) { | ||||
Purchase purchase = (Purchase) message.getHeaders().get(TenderStateMachineUtil.PURCHASE); | Purchase purchase = (Purchase) message.getHeaders().get(TenderStateMachineUtil.PURCHASE); |
@@ -1,38 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.builder; | |||||
import com.hz.pm.api.common.statemachine.event.AdaptStateChangeEvent; | |||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | |||||
import com.hz.pm.api.projectlib.model.enumeration.TenderAdaptStatusEnum; | |||||
import org.springframework.beans.factory.BeanFactory; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.StateMachineException; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
/** | |||||
* 项目申报状态机 | |||||
* | |||||
* @author CMM | |||||
* @since 2023/02/07 15:56 | |||||
*/ | |||||
public interface AdaptStateMachineBuilder { | |||||
StateMachine<TenderAdaptStatusEnum, AdaptStateChangeEvent> build() throws StateMachineException; | |||||
/** | |||||
* 构建状态机 | |||||
* | |||||
* @param beanFactory \ | |||||
*/ | |||||
StateMachine<TenderAdaptStatusEnum, AdaptStateChangeEvent> build(BeanFactory beanFactory) throws StateMachineException; | |||||
/** | |||||
* 持久化配置 | |||||
* | |||||
* @author CMM | |||||
* @since 2023/02/07 16:22 | |||||
*/ | |||||
StateMachinePersister<TenderAdaptStatusEnum, AdaptStateChangeEvent, Purchase> stateMachinePersister(); | |||||
} |
@@ -0,0 +1,37 @@ | |||||
package com.hz.pm.api.common.statemachine.builder; | |||||
import org.springframework.beans.factory.BeanFactory; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.StateMachineException; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
/** | |||||
* <p> | |||||
* 状态机构建基础类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 20:52 2024/4/2 | |||||
*/ | |||||
public interface BaseStateMachineBuilder<T, E, S> { | |||||
StateMachine<S, E> build() throws StateMachineException; | |||||
/** | |||||
* 构建状态机 | |||||
* | |||||
* @param beanFactory \ | |||||
* @author CMM | |||||
* @since 2023/02/07 16:15 | |||||
*/ | |||||
StateMachine<S, E> build(BeanFactory beanFactory) throws StateMachineException; | |||||
/** | |||||
* 持久化配置 | |||||
* | |||||
* @author CMM | |||||
* @since 2023/02/07 16:22 | |||||
*/ | |||||
StateMachinePersister<S, E, T> stateMachinePersister(); | |||||
} |
@@ -1,34 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.builder; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import org.springframework.beans.factory.BeanFactory; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
/** | |||||
* 项目申报状态机 | |||||
* | |||||
* @author CMM | |||||
* @since 2023/02/07 15:56 | |||||
*/ | |||||
public interface ProjectDeclareStateMachineBuilder { | |||||
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build() throws Exception; | |||||
/** | |||||
* 构建状态机 | |||||
* @param beanFactory \ | |||||
* @author CMM | |||||
* @since 2023/02/07 16:15 | |||||
*/ | |||||
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build(BeanFactory beanFactory) throws Exception; | |||||
/** | |||||
* 持久化配置 | |||||
* @author CMM | |||||
* @since 2023/02/07 16:22 | |||||
*/ | |||||
StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> getProjectPersister(); | |||||
} |
@@ -1,38 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.builder; | |||||
import com.hz.pm.api.common.statemachine.event.SelfTestStateChangeEvent; | |||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | |||||
import com.hz.pm.api.projectlib.model.enumeration.TenderSelfTestStatusEnum; | |||||
import org.springframework.beans.factory.BeanFactory; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.StateMachineException; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
/** | |||||
* 项目申报状态机 | |||||
* | |||||
* @author CMM | |||||
* @since 2023/02/07 15:56 | |||||
*/ | |||||
public interface SelfTestStateMachineBuilder { | |||||
StateMachine<TenderSelfTestStatusEnum, SelfTestStateChangeEvent> build() throws StateMachineException; | |||||
/** | |||||
* 构建状态机 | |||||
* | |||||
* @param beanFactory \ | |||||
*/ | |||||
StateMachine<TenderSelfTestStatusEnum, SelfTestStateChangeEvent> build(BeanFactory beanFactory) throws StateMachineException; | |||||
/** | |||||
* 持久化配置 | |||||
* | |||||
* @author CMM | |||||
* @since 2023/02/07 16:22 | |||||
*/ | |||||
StateMachinePersister<TenderSelfTestStatusEnum, SelfTestStateChangeEvent, Purchase> stateMachinePersister(); | |||||
} |
@@ -1,36 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.builder; | |||||
import com.hz.pm.api.common.statemachine.event.TenderStatusChangeEvent; | |||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | |||||
import com.hz.pm.api.projectlib.model.enumeration.TenderStatusEnum; | |||||
import org.springframework.beans.factory.BeanFactory; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.StateMachineException; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
/** | |||||
* 项目申报状态机 | |||||
* | |||||
* @author CMM | |||||
* @since 2023/02/07 15:56 | |||||
*/ | |||||
public interface TenderStateMachineBuilder { | |||||
StateMachine<TenderStatusEnum, TenderStatusChangeEvent> build() throws StateMachineException; | |||||
/** | |||||
* 构建状态机 | |||||
* | |||||
* @param beanFactory \ | |||||
*/ | |||||
StateMachine<TenderStatusEnum, TenderStatusChangeEvent> build(BeanFactory beanFactory) throws StateMachineException; | |||||
/** | |||||
* 持久化配置 | |||||
* | |||||
* @author CMM | |||||
* @since 2023/02/07 16:22 | |||||
*/ | |||||
StateMachinePersister<TenderStatusEnum, TenderStatusChangeEvent, Purchase> stateMachinePersister(); | |||||
} |
@@ -1,38 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.builder; | |||||
import com.hz.pm.api.common.statemachine.event.TestValidStateChangeEvent; | |||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | |||||
import com.hz.pm.api.projectlib.model.enumeration.TenderTestValidStatusEnum; | |||||
import org.springframework.beans.factory.BeanFactory; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.StateMachineException; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
/** | |||||
* 项目申报状态机 | |||||
* | |||||
* @author CMM | |||||
* @since 2023/02/07 15:56 | |||||
*/ | |||||
public interface TestValidStateMachineBuilder { | |||||
StateMachine<TenderTestValidStatusEnum, TestValidStateChangeEvent> build() throws StateMachineException; | |||||
/** | |||||
* 构建状态机 | |||||
* | |||||
* @param beanFactory \ | |||||
*/ | |||||
StateMachine<TenderTestValidStatusEnum, TestValidStateChangeEvent> build(BeanFactory beanFactory) throws StateMachineException; | |||||
/** | |||||
* 持久化配置 | |||||
* | |||||
* @author CMM | |||||
* @since 2023/02/07 16:22 | |||||
*/ | |||||
StateMachinePersister<TenderTestValidStatusEnum, TestValidStateChangeEvent, Purchase> stateMachinePersister(); | |||||
} |
@@ -1,6 +1,6 @@ | |||||
package com.hz.pm.api.common.statemachine.builder.impl; | package com.hz.pm.api.common.statemachine.builder.impl; | ||||
import com.hz.pm.api.common.statemachine.builder.AdaptStateMachineBuilder; | |||||
import com.hz.pm.api.common.statemachine.builder.BaseStateMachineBuilder; | |||||
import com.hz.pm.api.common.statemachine.event.AdaptStateChangeEvent; | import com.hz.pm.api.common.statemachine.event.AdaptStateChangeEvent; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | import com.hz.pm.api.projectdeclared.model.entity.Purchase; | ||||
import com.hz.pm.api.projectlib.model.enumeration.TenderAdaptStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.TenderAdaptStatusEnum; | ||||
@@ -24,7 +24,7 @@ import java.util.EnumSet; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
* 标段状态机 | |||||
* 标段适配改造状态机 | |||||
* </p> | * </p> | ||||
* | * | ||||
* @author WendyYang | * @author WendyYang | ||||
@@ -34,7 +34,7 @@ import java.util.EnumSet; | |||||
@Component | @Component | ||||
@EnableStateMachine(name = AdaptStateMachineBuilderImpl.MACHINE_ID) | @EnableStateMachine(name = AdaptStateMachineBuilderImpl.MACHINE_ID) | ||||
@RequiredArgsConstructor | @RequiredArgsConstructor | ||||
public class AdaptStateMachineBuilderImpl implements AdaptStateMachineBuilder { | |||||
public class AdaptStateMachineBuilderImpl implements BaseStateMachineBuilder<Purchase, AdaptStateChangeEvent, TenderAdaptStatusEnum> { | |||||
public static final String MACHINE_ID = "adaptStateMachine"; | public static final String MACHINE_ID = "adaptStateMachine"; | ||||
@@ -53,7 +53,7 @@ public class AdaptStateMachineBuilderImpl implements AdaptStateMachineBuilder { | |||||
try { | try { | ||||
return buildStateMachine(beanFactory); | return buildStateMachine(beanFactory); | ||||
} catch (Exception e) { | } catch (Exception e) { | ||||
throw new StateMachineException("状态机构件失败", e); | |||||
throw new StateMachineException("状态机构建失败", e); | |||||
} | } | ||||
} | } | ||||
@@ -1,8 +1,8 @@ | |||||
package com.hz.pm.api.common.statemachine.builder.impl; | package com.hz.pm.api.common.statemachine.builder.impl; | ||||
import com.hz.pm.api.common.statemachine.action.ProjectDeclareActionChoice; | import com.hz.pm.api.common.statemachine.action.ProjectDeclareActionChoice; | ||||
import com.hz.pm.api.common.statemachine.builder.ProjectDeclareStateMachineBuilder; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.builder.BaseStateMachineBuilder; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.factory.ProjectDeclareGuardFactory.PendingPreQualificationChoiceGuard; | import com.hz.pm.api.common.statemachine.factory.ProjectDeclareGuardFactory.PendingPreQualificationChoiceGuard; | ||||
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.enumeration.ProjectStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | ||||
@@ -12,6 +12,7 @@ import org.springframework.beans.factory.BeanFactory; | |||||
import org.springframework.context.annotation.Bean; | import org.springframework.context.annotation.Bean; | ||||
import org.springframework.statemachine.StateMachine; | import org.springframework.statemachine.StateMachine; | ||||
import org.springframework.statemachine.StateMachineContext; | import org.springframework.statemachine.StateMachineContext; | ||||
import org.springframework.statemachine.StateMachineException; | |||||
import org.springframework.statemachine.StateMachinePersist; | import org.springframework.statemachine.StateMachinePersist; | ||||
import org.springframework.statemachine.config.EnableStateMachine; | import org.springframework.statemachine.config.EnableStateMachine; | ||||
import org.springframework.statemachine.config.StateMachineBuilder; | import org.springframework.statemachine.config.StateMachineBuilder; | ||||
@@ -31,17 +32,17 @@ import java.util.EnumSet; | |||||
*/ | */ | ||||
@Slf4j | @Slf4j | ||||
@Component | @Component | ||||
@EnableStateMachine(name = ProjectDeclareStateMachineBuilderImpl.MACHINE_ID) | |||||
@EnableStateMachine(name = ProjectStateMachineBuilderImpl.MACHINE_ID) | |||||
@RequiredArgsConstructor | @RequiredArgsConstructor | ||||
public class ProjectDeclareStateMachineBuilderImpl implements ProjectDeclareStateMachineBuilder { | |||||
public class ProjectStateMachineBuilderImpl implements BaseStateMachineBuilder<Project, ProjectStateChangeEvent, ProjectStatusEnum> { | |||||
public static final String MACHINE_ID = "projectDeclareStateMachine"; | public static final String MACHINE_ID = "projectDeclareStateMachine"; | ||||
private final BeanFactory beanFactory; | private final BeanFactory beanFactory; | ||||
@Override | @Override | ||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build() throws Exception { | |||||
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> stateMachine = build(beanFactory); | |||||
public StateMachine<ProjectStatusEnum, ProjectStateChangeEvent> build() throws StateMachineException { | |||||
StateMachine<ProjectStatusEnum, ProjectStateChangeEvent> stateMachine = build(beanFactory); | |||||
log.info("状态机ID:" + stateMachine.getId()); | log.info("状态机ID:" + stateMachine.getId()); | ||||
stateMachine.start(); | stateMachine.start(); | ||||
return stateMachine; | return stateMachine; | ||||
@@ -50,13 +51,19 @@ public class ProjectDeclareStateMachineBuilderImpl implements ProjectDeclareStat | |||||
/** | /** | ||||
* 构建状态机 | * 构建状态机 | ||||
* | * | ||||
* @param beanFactory | |||||
* @author CMM | |||||
* @since 2023/02/07 16:15 | |||||
* @param beanFactory \ | |||||
*/ | */ | ||||
@Override | @Override | ||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build(BeanFactory beanFactory) throws Exception { | |||||
StateMachineBuilder.Builder<ProjectStatusEnum, ProjectStatusChangeEvent> builder = StateMachineBuilder.builder(); | |||||
public StateMachine<ProjectStatusEnum, ProjectStateChangeEvent> build(BeanFactory beanFactory) throws StateMachineException { | |||||
try { | |||||
return buildStateMachine(beanFactory); | |||||
} catch (Exception e) { | |||||
throw new StateMachineException("状态机构建失败", e); | |||||
} | |||||
} | |||||
private StateMachine<ProjectStatusEnum, ProjectStateChangeEvent> buildStateMachine(BeanFactory beanFactory) throws Exception { | |||||
StateMachineBuilder.Builder<ProjectStatusEnum, ProjectStateChangeEvent> builder = StateMachineBuilder.builder(); | |||||
builder.configureConfiguration() | builder.configureConfiguration() | ||||
.withConfiguration() | .withConfiguration() | ||||
.machineId(MACHINE_ID) | .machineId(MACHINE_ID) | ||||
@@ -74,27 +81,27 @@ public class ProjectDeclareStateMachineBuilderImpl implements ProjectDeclareStat | |||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | .source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | ||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | .target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | ||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_PASS).and() | |||||
.event(ProjectStateChangeEvent.UNDER_INTERNAL_PASS).and() | |||||
// 单位内部审核驳回,从单位内部审核中到单位内部审核不通过 | // 单位内部审核驳回,从单位内部审核中到单位内部审核不通过 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | .source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | ||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | .target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | ||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT).and() | |||||
.event(ProjectStateChangeEvent.UNDER_INTERNAL_REJECT).and() | |||||
// 单位内部审核中撤回,从单位内部审核中到待申报 | // 单位内部审核中撤回,从单位内部审核中到待申报 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | .source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | ||||
.target(ProjectStatusEnum.TO_BE_DECLARED) | .target(ProjectStatusEnum.TO_BE_DECLARED) | ||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_WITHDRAW).and() | |||||
.event(ProjectStateChangeEvent.UNDER_INTERNAL_WITHDRAW).and() | |||||
// 单位内部审核不通过重新提交,从单位内部审核不通过到单位内部审核中 | // 单位内部审核不通过重新提交,从单位内部审核不通过到单位内部审核中 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | .source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | ||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | .target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | ||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT_RESUBMIT).and() | |||||
.event(ProjectStateChangeEvent.UNDER_INTERNAL_REJECT_RESUBMIT).and() | |||||
// 待预审预审申报,从待预审到待预审选择 | // 待预审预审申报,从待预审到待预审选择 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION) | .source(ProjectStatusEnum.PENDING_PREQUALIFICATION) | ||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | .target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | ||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_DECLARE).and() | |||||
.event(ProjectStateChangeEvent.PRELIMINARY_REVIEW_DECLARE).and() | |||||
// 待预审申报,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | // 待预审申报,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | ||||
.withChoice() | .withChoice() | ||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | .source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | ||||
@@ -105,38 +112,38 @@ public class ProjectDeclareStateMachineBuilderImpl implements ProjectDeclareStat | |||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | .source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | ||||
.target(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | .target(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | ||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_PASS).and() | |||||
.event(ProjectStateChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_PASS).and() | |||||
// 省级部门联审通过,从省级部门联审成功到预审中 | // 省级部门联审通过,从省级部门联审成功到预审中 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | .source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | ||||
.target(ProjectStatusEnum.PRE_APPLYING) | .target(ProjectStatusEnum.PRE_APPLYING) | ||||
.event(ProjectStatusChangeEvent.PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW).and() | |||||
.event(ProjectStateChangeEvent.PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW).and() | |||||
// 省级部门联审不通过,从省级部门联审中到省级部门联审不通过 | // 省级部门联审不通过,从省级部门联审中到省级部门联审不通过 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | .source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | ||||
.target(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED) | .target(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED) | ||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_REJECT).and() | |||||
.event(ProjectStateChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_REJECT).and() | |||||
// 省级部门联审中撤回,从省级部门联审中到待预审 | // 省级部门联审中撤回,从省级部门联审中到待预审 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | .source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | ||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | .target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | ||||
.event(ProjectStatusChangeEvent.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW).and() | |||||
.event(ProjectStateChangeEvent.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW).and() | |||||
// 预审通过,从预审中到部门联审中 | // 预审通过,从预审中到部门联审中 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.PRE_APPLYING) | .source(ProjectStatusEnum.PRE_APPLYING) | ||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | .target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | ||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_PASS).and() | |||||
.event(ProjectStateChangeEvent.PRELIMINARY_REVIEW_PASS).and() | |||||
// 预审驳回,从预审中到预审不通过 | // 预审驳回,从预审中到预审不通过 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.PRE_APPLYING) | .source(ProjectStatusEnum.PRE_APPLYING) | ||||
.target(ProjectStatusEnum.PREQUALIFICATION_FAILED) | .target(ProjectStatusEnum.PREQUALIFICATION_FAILED) | ||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT).and() | |||||
.event(ProjectStateChangeEvent.PRELIMINARY_REVIEW_REJECT).and() | |||||
// 预审中撤回,从预审中到预审中撤回选择态 | // 预审中撤回,从预审中到预审中撤回选择态 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.PRE_APPLYING) | .source(ProjectStatusEnum.PRE_APPLYING) | ||||
.target(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | .target(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | ||||
.event(ProjectStatusChangeEvent.PRE_APPLYING_WITHDRAW).and() | |||||
.event(ProjectStateChangeEvent.PRE_APPLYING_WITHDRAW).and() | |||||
// 预审中撤回,从预审中撤回选择态->省级部门联审成功,待预审,完成其中一种状态 | // 预审中撤回,从预审中撤回选择态->省级部门联审成功,待预审,完成其中一种状态 | ||||
.withChoice() | .withChoice() | ||||
.source(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | .source(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | ||||
@@ -147,7 +154,7 @@ public class ProjectDeclareStateMachineBuilderImpl implements ProjectDeclareStat | |||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.PREQUALIFICATION_FAILED) | .source(ProjectStatusEnum.PREQUALIFICATION_FAILED) | ||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | .target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | ||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT_RESUBMIT).and() | |||||
.event(ProjectStateChangeEvent.PRELIMINARY_REVIEW_REJECT_RESUBMIT).and() | |||||
// 预审不通过重新提交,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | // 预审不通过重新提交,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | ||||
.withChoice() | .withChoice() | ||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | .source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | ||||
@@ -157,129 +164,129 @@ public class ProjectDeclareStateMachineBuilderImpl implements ProjectDeclareStat | |||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | .source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | ||||
.target(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | .target(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | ||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_PASS).and() | |||||
.event(ProjectStateChangeEvent.DEPARTMENT_UNITED_REVIEW_PASS).and() | |||||
// 部门联审驳回,从部门联审中到部门联审不通过 | // 部门联审驳回,从部门联审中到部门联审不通过 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | .source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | ||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED) | .target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED) | ||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_REJECT).and() | |||||
.event(ProjectStateChangeEvent.DEPARTMENT_UNITED_REVIEW_REJECT).and() | |||||
// 部门联审中撤回,从部门联审中到预审中 | // 部门联审中撤回,从部门联审中到预审中 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | .source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | ||||
.target(ProjectStatusEnum.PRE_APPLYING) | .target(ProjectStatusEnum.PRE_APPLYING) | ||||
.event(ProjectStatusChangeEvent.DEPARTMENT_JOINT_REVIEW_WITHDRAW).and() | |||||
.event(ProjectStateChangeEvent.DEPARTMENT_JOINT_REVIEW_WITHDRAW).and() | |||||
// 年度计划中开启方案申报,从年度计划中到方案待申报 | // 年度计划中开启方案申报,从年度计划中到方案待申报 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | .source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | ||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | .target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | ||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE).and() | |||||
.event(ProjectStateChangeEvent.ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE).and() | |||||
// 年度计划中暂缓,从年度计划中到被暂缓 | // 年度计划中暂缓,从年度计划中到被暂缓 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | .source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | ||||
.target(ProjectStatusEnum.BE_SUSPENDED) | .target(ProjectStatusEnum.BE_SUSPENDED) | ||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_SUSPEND).and() | |||||
.event(ProjectStateChangeEvent.ANNUAL_PLAN_SUSPEND).and() | |||||
// 方案待申报申报方案,从方案待申报到方案评审中 | // 方案待申报申报方案,从方案待申报到方案评审中 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | .source(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | ||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | .target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | ||||
.event(ProjectStatusChangeEvent.DECLARE_PLAN).and() | |||||
.event(ProjectStateChangeEvent.DECLARE_PLAN).and() | |||||
// 方案评审通过,从方案评审中到待立项批复 | // 方案评审通过,从方案评审中到待立项批复 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | .source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | ||||
.target(ProjectStatusEnum.TO_BE_APPROVED) | .target(ProjectStatusEnum.TO_BE_APPROVED) | ||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_PASS).and() | |||||
.event(ProjectStateChangeEvent.PLAN_REVIEW_PASS).and() | |||||
// 方案评审驳回,从方案评审中到方案评审不通过 | // 方案评审驳回,从方案评审中到方案评审不通过 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | .source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | ||||
.target(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | .target(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | ||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT).and() | |||||
.event(ProjectStateChangeEvent.PLAN_REVIEW_REJECT).and() | |||||
// 方案评审中撤回,从方案评审中到方案待申报 | // 方案评审中撤回,从方案评审中到方案待申报 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | .source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | ||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | .target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | ||||
.event(ProjectStatusChangeEvent.SCHEME_UNDER_REVIEW_WITHDRAW).and() | |||||
.event(ProjectStateChangeEvent.SCHEME_UNDER_REVIEW_WITHDRAW).and() | |||||
// 方案评审不通过重新提交,从方案评审不通过到方案评审中 | // 方案评审不通过重新提交,从方案评审不通过到方案评审中 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | .source(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | ||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | .target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | ||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT_RESUBMIT).and() | |||||
.event(ProjectStateChangeEvent.PLAN_REVIEW_REJECT_RESUBMIT).and() | |||||
// 立项备案 | // 立项备案 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.DECLARED_APPROVED_TO_BE_RECORD) | .source(ProjectStatusEnum.DECLARED_APPROVED_TO_BE_RECORD) | ||||
.target(ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING) | .target(ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING) | ||||
.event(ProjectStatusChangeEvent.DECLARED_RECORD_SUBMIT).and() | |||||
.event(ProjectStateChangeEvent.DECLARED_RECORD_SUBMIT).and() | |||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.DECLARED_APPROVED_RECORD_FAILED) | .source(ProjectStatusEnum.DECLARED_APPROVED_RECORD_FAILED) | ||||
.target(ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING) | .target(ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING) | ||||
.event(ProjectStatusChangeEvent.DECLARED_RECORD_RESUBMIT).and() | |||||
.event(ProjectStateChangeEvent.DECLARED_RECORD_RESUBMIT).and() | |||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING) | .source(ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING) | ||||
.target(ProjectStatusEnum.TO_BE_PURCHASED) | .target(ProjectStatusEnum.TO_BE_PURCHASED) | ||||
.event(ProjectStatusChangeEvent.DECLARED_RECORD_PASS).and() | |||||
.event(ProjectStateChangeEvent.DECLARED_RECORD_PASS).and() | |||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING) | .source(ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING) | ||||
.target(ProjectStatusEnum.DECLARED_APPROVED_RECORD_FAILED) | .target(ProjectStatusEnum.DECLARED_APPROVED_RECORD_FAILED) | ||||
.event(ProjectStatusChangeEvent.DECLARED_RECORD_FAILED).and() | |||||
.event(ProjectStateChangeEvent.DECLARED_RECORD_FAILED).and() | |||||
// 待立项批复批复,从待立项批复到待采购 | // 待立项批复批复,从待立项批复到待采购 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.TO_BE_APPROVED) | .source(ProjectStatusEnum.TO_BE_APPROVED) | ||||
.target(ProjectStatusEnum.TO_BE_PURCHASED) | .target(ProjectStatusEnum.TO_BE_PURCHASED) | ||||
.event(ProjectStatusChangeEvent.PROJECT_APPROVAL).and() | |||||
.event(ProjectStateChangeEvent.PROJECT_APPROVAL).and() | |||||
// 待采购采购备案,从待采购到实施中 | // 待采购采购备案,从待采购到实施中 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.TO_BE_PURCHASED) | .source(ProjectStatusEnum.TO_BE_PURCHASED) | ||||
.target(ProjectStatusEnum.ON_PURCHASING) | .target(ProjectStatusEnum.ON_PURCHASING) | ||||
.event(ProjectStatusChangeEvent.SUBMIT_PURCHASE_NOTICE).and() | |||||
.event(ProjectStateChangeEvent.SUBMIT_PURCHASE_NOTICE).and() | |||||
// 填写试试计划 -> 待初验 | // 填写试试计划 -> 待初验 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.ON_PURCHASING) | .source(ProjectStatusEnum.ON_PURCHASING) | ||||
.target(ProjectStatusEnum.TO_BE_FIRST_INSPECTED) | .target(ProjectStatusEnum.TO_BE_FIRST_INSPECTED) | ||||
.event(ProjectStatusChangeEvent.SUBMIT_OPERATION_PLAN).and() | |||||
.event(ProjectStateChangeEvent.SUBMIT_OPERATION_PLAN).and() | |||||
// 上传初验材料 | // 上传初验材料 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.TO_BE_FIRST_INSPECTED) | .source(ProjectStatusEnum.TO_BE_FIRST_INSPECTED) | ||||
.target(ProjectStatusEnum.ON_FIRST_INSPECTED) | .target(ProjectStatusEnum.ON_FIRST_INSPECTED) | ||||
.event(ProjectStatusChangeEvent.SUBMIT_FIRST_INSPECTED_FILES).and() | |||||
.event(ProjectStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES).and() | |||||
// 初验审批通过 | // 初验审批通过 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.ON_FIRST_INSPECTED) | .source(ProjectStatusEnum.ON_FIRST_INSPECTED) | ||||
.target(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | .target(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | ||||
.event(ProjectStatusChangeEvent.FIRST_INSPECTED_PASSED).and() | |||||
.event(ProjectStateChangeEvent.FIRST_INSPECTED_PASSED).and() | |||||
// 待开工 实施,从实施到建设中 | // 待开工 实施,从实施到建设中 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.OPERATION) | .source(ProjectStatusEnum.OPERATION) | ||||
.target(ProjectStatusEnum.UNDER_CONSTRUCTION) | .target(ProjectStatusEnum.UNDER_CONSTRUCTION) | ||||
.event(ProjectStatusChangeEvent.START_TO_WORK).and() | |||||
.event(ProjectStateChangeEvent.START_TO_WORK).and() | |||||
// 建设中初验备案,从建设中到待终验 | // 建设中初验备案,从建设中到待终验 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.UNDER_CONSTRUCTION) | .source(ProjectStatusEnum.UNDER_CONSTRUCTION) | ||||
.target(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | .target(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | ||||
.event(ProjectStatusChangeEvent.PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD).and() | |||||
.event(ProjectStateChangeEvent.PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD).and() | |||||
// 待终验终验申请,从待终验到终验审核中 | // 待终验终验申请,从待终验到终验审核中 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | .source(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | ||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | .target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | ||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_APPLICATION).and() | |||||
.event(ProjectStateChangeEvent.FINAL_ACCEPTANCE_APPLICATION).and() | |||||
// 终审审核通过,从终审审核中到已归档 | // 终审审核通过,从终审审核中到已归档 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | .source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | ||||
.target(ProjectStatusEnum.ARCHIVED) | .target(ProjectStatusEnum.ARCHIVED) | ||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_PASS).and() | |||||
.event(ProjectStateChangeEvent.FINAL_ACCEPTANCE_PASS).and() | |||||
// 终审审核不通过,从终审审核中到终审审核不通过 | // 终审审核不通过,从终审审核中到终审审核不通过 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | .source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | ||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | .target(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | ||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_REJECT).and() | |||||
.event(ProjectStateChangeEvent.FINAL_ACCEPTANCE_REJECT).and() | |||||
// 终审审核中撤回,从终审审核中到待终验 | // 终审审核中撤回,从终审审核中到待终验 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | .source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | ||||
.target(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | .target(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | ||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW).and() | |||||
.event(ProjectStateChangeEvent.FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW).and() | |||||
// 终验中 重新提交 | // 终验中 重新提交 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | .source(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | ||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | .target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | ||||
.event(ProjectStatusChangeEvent.FINAL_RE_ACCEPTANCE_APPLICATION).and(); | |||||
.event(ProjectStateChangeEvent.FINAL_RE_ACCEPTANCE_APPLICATION).and(); | |||||
return builder.build(); | return builder.build(); | ||||
} | } | ||||
@@ -291,15 +298,15 @@ public class ProjectDeclareStateMachineBuilderImpl implements ProjectDeclareStat | |||||
*/ | */ | ||||
@Bean(name = "projectDeclareStatePersister") | @Bean(name = "projectDeclareStatePersister") | ||||
@Override | @Override | ||||
public StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> getProjectPersister() { | |||||
return new DefaultStateMachinePersister<>(new StateMachinePersist<ProjectStatusEnum, ProjectStatusChangeEvent, Project>() { | |||||
public StateMachinePersister<ProjectStatusEnum, ProjectStateChangeEvent, Project> stateMachinePersister() { | |||||
return new DefaultStateMachinePersister<>(new StateMachinePersist<ProjectStatusEnum, ProjectStateChangeEvent, Project>() { | |||||
@Override | @Override | ||||
public void write(StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> context, Project contextObj) { | |||||
public void write(StateMachineContext<ProjectStatusEnum, ProjectStateChangeEvent> context, Project contextObj) { | |||||
log.info("当前项目为:{}", contextObj); | log.info("当前项目为:{}", contextObj); | ||||
} | } | ||||
@Override | @Override | ||||
public StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> read(Project contextObj) { | |||||
public StateMachineContext<ProjectStatusEnum, ProjectStateChangeEvent> read(Project contextObj) { | |||||
return new DefaultStateMachineContext<>(ProjectStatusEnum.match(contextObj.getStatus()), | return new DefaultStateMachineContext<>(ProjectStatusEnum.match(contextObj.getStatus()), | ||||
null, null, null, null, MACHINE_ID); | null, null, null, null, MACHINE_ID); | ||||
} | } |
@@ -1,6 +1,6 @@ | |||||
package com.hz.pm.api.common.statemachine.builder.impl; | package com.hz.pm.api.common.statemachine.builder.impl; | ||||
import com.hz.pm.api.common.statemachine.builder.SelfTestStateMachineBuilder; | |||||
import com.hz.pm.api.common.statemachine.builder.BaseStateMachineBuilder; | |||||
import com.hz.pm.api.common.statemachine.event.SelfTestStateChangeEvent; | import com.hz.pm.api.common.statemachine.event.SelfTestStateChangeEvent; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | import com.hz.pm.api.projectdeclared.model.entity.Purchase; | ||||
import com.hz.pm.api.projectlib.model.enumeration.TenderSelfTestStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.TenderSelfTestStatusEnum; | ||||
@@ -24,7 +24,7 @@ import java.util.EnumSet; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
* 标段状态机 | |||||
* 标段系统自测状态机 | |||||
* </p> | * </p> | ||||
* | * | ||||
* @author WendyYang | * @author WendyYang | ||||
@@ -34,7 +34,7 @@ import java.util.EnumSet; | |||||
@Component | @Component | ||||
@EnableStateMachine(name = SelfTestStateMachineBuilderImpl.MACHINE_ID) | @EnableStateMachine(name = SelfTestStateMachineBuilderImpl.MACHINE_ID) | ||||
@RequiredArgsConstructor | @RequiredArgsConstructor | ||||
public class SelfTestStateMachineBuilderImpl implements SelfTestStateMachineBuilder { | |||||
public class SelfTestStateMachineBuilderImpl implements BaseStateMachineBuilder<Purchase, SelfTestStateChangeEvent, TenderSelfTestStatusEnum> { | |||||
public static final String MACHINE_ID = "selfTestStateMachine"; | public static final String MACHINE_ID = "selfTestStateMachine"; | ||||
@@ -53,7 +53,7 @@ public class SelfTestStateMachineBuilderImpl implements SelfTestStateMachineBuil | |||||
try { | try { | ||||
return buildStateMachine(beanFactory); | return buildStateMachine(beanFactory); | ||||
} catch (Exception e) { | } catch (Exception e) { | ||||
throw new StateMachineException("状态机构件失败", e); | |||||
throw new StateMachineException("状态机构建失败", e); | |||||
} | } | ||||
} | } | ||||
@@ -1,7 +1,7 @@ | |||||
package com.hz.pm.api.common.statemachine.builder.impl; | package com.hz.pm.api.common.statemachine.builder.impl; | ||||
import com.hz.pm.api.common.statemachine.builder.TenderStateMachineBuilder; | |||||
import com.hz.pm.api.common.statemachine.event.TenderStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.builder.BaseStateMachineBuilder; | |||||
import com.hz.pm.api.common.statemachine.event.TenderStateChangeEvent; | |||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | import com.hz.pm.api.projectdeclared.model.entity.Purchase; | ||||
import com.hz.pm.api.projectlib.model.enumeration.TenderStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.TenderStatusEnum; | ||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
@@ -33,31 +33,31 @@ import java.util.EnumSet; | |||||
@Component | @Component | ||||
@EnableStateMachine(name = TenderStateMachineBuilderImpl.MACHINE_ID) | @EnableStateMachine(name = TenderStateMachineBuilderImpl.MACHINE_ID) | ||||
@RequiredArgsConstructor | @RequiredArgsConstructor | ||||
public class TenderStateMachineBuilderImpl implements TenderStateMachineBuilder { | |||||
public class TenderStateMachineBuilderImpl implements BaseStateMachineBuilder<Purchase, TenderStateChangeEvent, TenderStatusEnum> { | |||||
public static final String MACHINE_ID = "tenderStateMachine"; | public static final String MACHINE_ID = "tenderStateMachine"; | ||||
private final BeanFactory beanFactory; | private final BeanFactory beanFactory; | ||||
@Override | @Override | ||||
public StateMachine<TenderStatusEnum, TenderStatusChangeEvent> build() throws StateMachineException { | |||||
StateMachine<TenderStatusEnum, TenderStatusChangeEvent> stateMachine = build(beanFactory); | |||||
public StateMachine<TenderStatusEnum, TenderStateChangeEvent> build() throws StateMachineException { | |||||
StateMachine<TenderStatusEnum, TenderStateChangeEvent> stateMachine = build(beanFactory); | |||||
log.info("状态机ID:" + stateMachine.getId()); | log.info("状态机ID:" + stateMachine.getId()); | ||||
stateMachine.start(); | stateMachine.start(); | ||||
return stateMachine; | return stateMachine; | ||||
} | } | ||||
@Override | @Override | ||||
public StateMachine<TenderStatusEnum, TenderStatusChangeEvent> build(BeanFactory beanFactory) throws StateMachineException { | |||||
public StateMachine<TenderStatusEnum, TenderStateChangeEvent> build(BeanFactory beanFactory) throws StateMachineException { | |||||
try { | try { | ||||
return buildStateMachine(beanFactory); | return buildStateMachine(beanFactory); | ||||
} catch (Exception e) { | } catch (Exception e) { | ||||
throw new StateMachineException("状态机构件失败", e); | |||||
throw new StateMachineException("状态机构建失败", e); | |||||
} | } | ||||
} | } | ||||
private StateMachine<TenderStatusEnum, TenderStatusChangeEvent> buildStateMachine(BeanFactory factory) throws Exception { | |||||
StateMachineBuilder.Builder<TenderStatusEnum, TenderStatusChangeEvent> builder = StateMachineBuilder.builder(); | |||||
private StateMachine<TenderStatusEnum, TenderStateChangeEvent> buildStateMachine(BeanFactory factory) throws Exception { | |||||
StateMachineBuilder.Builder<TenderStatusEnum, TenderStateChangeEvent> builder = StateMachineBuilder.builder(); | |||||
builder.configureConfiguration() | builder.configureConfiguration() | ||||
.withConfiguration() | .withConfiguration() | ||||
.machineId(MACHINE_ID) | .machineId(MACHINE_ID) | ||||
@@ -73,87 +73,87 @@ public class TenderStateMachineBuilderImpl implements TenderStateMachineBuilder | |||||
.withExternal() | .withExternal() | ||||
.source(TenderStatusEnum.TO_BE_SUBMIT_PURCHASE_INFO) | .source(TenderStatusEnum.TO_BE_SUBMIT_PURCHASE_INFO) | ||||
.target(TenderStatusEnum.TO_BE_SUBMIT_CONSTRUCTION_INFO) | .target(TenderStatusEnum.TO_BE_SUBMIT_CONSTRUCTION_INFO) | ||||
.event(TenderStatusChangeEvent.SUBMIT_PURCHASE_INFO) | |||||
.event(TenderStateChangeEvent.SUBMIT_PURCHASE_INFO) | |||||
.and() | .and() | ||||
// 填写合同信息 | // 填写合同信息 | ||||
.withExternal() | .withExternal() | ||||
.source(TenderStatusEnum.TO_BE_SUBMIT_CONSTRUCTION_INFO) | .source(TenderStatusEnum.TO_BE_SUBMIT_CONSTRUCTION_INFO) | ||||
.target(TenderStatusEnum.TO_BE_SUBMIT_OPERATION_PLAN) | .target(TenderStatusEnum.TO_BE_SUBMIT_OPERATION_PLAN) | ||||
.event(TenderStatusChangeEvent.SUBMIT_CONSTRUCTION_INFO) | |||||
.event(TenderStateChangeEvent.SUBMIT_CONSTRUCTION_INFO) | |||||
.and() | .and() | ||||
// 填写实施计划 | // 填写实施计划 | ||||
.withExternal() | .withExternal() | ||||
.source(TenderStatusEnum.TO_BE_SUBMIT_OPERATION_PLAN) | .source(TenderStatusEnum.TO_BE_SUBMIT_OPERATION_PLAN) | ||||
.target(TenderStatusEnum.TO_BE_SUBMIT_FIRST_INSPECTED_INFO) | .target(TenderStatusEnum.TO_BE_SUBMIT_FIRST_INSPECTED_INFO) | ||||
.event(TenderStatusChangeEvent.SUBMIT_OPERATION_PLAN) | |||||
.event(TenderStateChangeEvent.SUBMIT_OPERATION_PLAN) | |||||
.and() | .and() | ||||
// 上传初验材料 | // 上传初验材料 | ||||
.withExternal() | .withExternal() | ||||
.source(TenderStatusEnum.TO_BE_SUBMIT_FIRST_INSPECTED_INFO) | .source(TenderStatusEnum.TO_BE_SUBMIT_FIRST_INSPECTED_INFO) | ||||
.target(TenderStatusEnum.TO_BE_SUBMIT_XCFHX_APPLY) | .target(TenderStatusEnum.TO_BE_SUBMIT_XCFHX_APPLY) | ||||
.event(TenderStatusChangeEvent.SUBMIT_FIRST_INSPECTED_FILES) | |||||
.event(TenderStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES) | |||||
.and() | .and() | ||||
// 信创符合性申请 | // 信创符合性申请 | ||||
.withExternal() | .withExternal() | ||||
.source(TenderStatusEnum.TO_BE_SUBMIT_XCFHX_APPLY) | .source(TenderStatusEnum.TO_BE_SUBMIT_XCFHX_APPLY) | ||||
.target(TenderStatusEnum.ON_XCFHX_APPLY) | .target(TenderStatusEnum.ON_XCFHX_APPLY) | ||||
.event(TenderStatusChangeEvent.SUBMIT_XCFHX_APPLY) | |||||
.event(TenderStateChangeEvent.SUBMIT_XCFHX_APPLY) | |||||
.and()// 信创符合性申请 | .and()// 信创符合性申请 | ||||
.withExternal() | .withExternal() | ||||
.source(TenderStatusEnum.XCFHX_APPLY_FAILED) | .source(TenderStatusEnum.XCFHX_APPLY_FAILED) | ||||
.target(TenderStatusEnum.ON_XCFHX_APPLY) | .target(TenderStatusEnum.ON_XCFHX_APPLY) | ||||
.event(TenderStatusChangeEvent.RESUBMIT_XCFHX_APPLY) | |||||
.event(TenderStateChangeEvent.RESUBMIT_XCFHX_APPLY) | |||||
.and() | .and() | ||||
// 信创符合性申请通过 | // 信创符合性申请通过 | ||||
.withExternal() | .withExternal() | ||||
.source(TenderStatusEnum.ON_XCFHX_APPLY) | .source(TenderStatusEnum.ON_XCFHX_APPLY) | ||||
.target(TenderStatusEnum.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY) | .target(TenderStatusEnum.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY) | ||||
.event(TenderStatusChangeEvent.XCFHX_APPLY_PASSED) | |||||
.event(TenderStateChangeEvent.XCFHX_APPLY_PASSED) | |||||
.and() | .and() | ||||
// 信创符合性申请失败 | // 信创符合性申请失败 | ||||
.withExternal() | .withExternal() | ||||
.source(TenderStatusEnum.ON_XCFHX_APPLY) | .source(TenderStatusEnum.ON_XCFHX_APPLY) | ||||
.target(TenderStatusEnum.XCFHX_APPLY_FAILED) | .target(TenderStatusEnum.XCFHX_APPLY_FAILED) | ||||
.event(TenderStatusChangeEvent.XCFHX_APPLY_FAILED) | |||||
.event(TenderStateChangeEvent.XCFHX_APPLY_FAILED) | |||||
.and() | .and() | ||||
// 终验申报 | // 终验申报 | ||||
.withExternal() | .withExternal() | ||||
.source(TenderStatusEnum.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY) | .source(TenderStatusEnum.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY) | ||||
.target(TenderStatusEnum.ON_FINALLY_INSPECTED_APPLY) | .target(TenderStatusEnum.ON_FINALLY_INSPECTED_APPLY) | ||||
.event(TenderStatusChangeEvent.SUBMIT_FINALLY_INSPECTED) | |||||
.event(TenderStateChangeEvent.SUBMIT_FINALLY_INSPECTED) | |||||
.and() | .and() | ||||
// 终验申报重新提交 | // 终验申报重新提交 | ||||
.withExternal() | .withExternal() | ||||
.source(TenderStatusEnum.FINALLY_INSPECTED_FAILED) | .source(TenderStatusEnum.FINALLY_INSPECTED_FAILED) | ||||
.target(TenderStatusEnum.ON_FINALLY_INSPECTED_APPLY) | .target(TenderStatusEnum.ON_FINALLY_INSPECTED_APPLY) | ||||
.event(TenderStatusChangeEvent.RESUBMIT_FINALLY_INSPECTED) | |||||
.event(TenderStateChangeEvent.RESUBMIT_FINALLY_INSPECTED) | |||||
.and() | .and() | ||||
// 终验申报通过 | // 终验申报通过 | ||||
.withExternal() | .withExternal() | ||||
.source(TenderStatusEnum.ON_FINALLY_INSPECTED_APPLY) | .source(TenderStatusEnum.ON_FINALLY_INSPECTED_APPLY) | ||||
.target(TenderStatusEnum.FINALLY_INSPECTED_PASSED) | .target(TenderStatusEnum.FINALLY_INSPECTED_PASSED) | ||||
.event(TenderStatusChangeEvent.FINALLY_INSPECTED_PASSED) | |||||
.event(TenderStateChangeEvent.FINALLY_INSPECTED_PASSED) | |||||
.and() | .and() | ||||
// 终验申报拒绝 | // 终验申报拒绝 | ||||
.withExternal() | .withExternal() | ||||
.source(TenderStatusEnum.ON_FINALLY_INSPECTED_APPLY) | .source(TenderStatusEnum.ON_FINALLY_INSPECTED_APPLY) | ||||
.target(TenderStatusEnum.FINALLY_INSPECTED_FAILED) | .target(TenderStatusEnum.FINALLY_INSPECTED_FAILED) | ||||
.event(TenderStatusChangeEvent.FINALLY_INSPECTED_FAILED) | |||||
.event(TenderStateChangeEvent.FINALLY_INSPECTED_FAILED) | |||||
.and(); | .and(); | ||||
return builder.build(); | return builder.build(); | ||||
} | } | ||||
@Override | @Override | ||||
@Bean(name = "tenderStatePersister") | @Bean(name = "tenderStatePersister") | ||||
public StateMachinePersister<TenderStatusEnum, TenderStatusChangeEvent, Purchase> stateMachinePersister() { | |||||
return new DefaultStateMachinePersister<>(new StateMachinePersist<TenderStatusEnum, TenderStatusChangeEvent, Purchase>() { | |||||
public StateMachinePersister<TenderStatusEnum, TenderStateChangeEvent, Purchase> stateMachinePersister() { | |||||
return new DefaultStateMachinePersister<>(new StateMachinePersist<TenderStatusEnum, TenderStateChangeEvent, Purchase>() { | |||||
@Override | @Override | ||||
public void write(StateMachineContext<TenderStatusEnum, TenderStatusChangeEvent> context, Purchase contextObj) { | |||||
public void write(StateMachineContext<TenderStatusEnum, TenderStateChangeEvent> context, Purchase contextObj) { | |||||
log.info("当前项目为:{}", contextObj); | log.info("当前项目为:{}", contextObj); | ||||
} | } | ||||
@Override | @Override | ||||
public StateMachineContext<TenderStatusEnum, TenderStatusChangeEvent> read(Purchase contextObj) { | |||||
public StateMachineContext<TenderStatusEnum, TenderStateChangeEvent> read(Purchase contextObj) { | |||||
return new DefaultStateMachineContext<>(TenderStatusEnum.getByStatus(contextObj.getStatus()), | return new DefaultStateMachineContext<>(TenderStatusEnum.getByStatus(contextObj.getStatus()), | ||||
null, null, null, null, MACHINE_ID); | null, null, null, null, MACHINE_ID); | ||||
} | } | ||||
@@ -1,6 +1,6 @@ | |||||
package com.hz.pm.api.common.statemachine.builder.impl; | package com.hz.pm.api.common.statemachine.builder.impl; | ||||
import com.hz.pm.api.common.statemachine.builder.TestValidStateMachineBuilder; | |||||
import com.hz.pm.api.common.statemachine.builder.BaseStateMachineBuilder; | |||||
import com.hz.pm.api.common.statemachine.event.TestValidStateChangeEvent; | import com.hz.pm.api.common.statemachine.event.TestValidStateChangeEvent; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | import com.hz.pm.api.projectdeclared.model.entity.Purchase; | ||||
import com.hz.pm.api.projectlib.model.enumeration.TenderTestValidStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.TenderTestValidStatusEnum; | ||||
@@ -24,7 +24,7 @@ import java.util.EnumSet; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
* 标段状态机 | |||||
* 标段测试验证状态机 | |||||
* </p> | * </p> | ||||
* | * | ||||
* @author WendyYang | * @author WendyYang | ||||
@@ -34,7 +34,7 @@ import java.util.EnumSet; | |||||
@Component | @Component | ||||
@EnableStateMachine(name = TestValidStateMachineBuilderImpl.MACHINE_ID) | @EnableStateMachine(name = TestValidStateMachineBuilderImpl.MACHINE_ID) | ||||
@RequiredArgsConstructor | @RequiredArgsConstructor | ||||
public class TestValidStateMachineBuilderImpl implements TestValidStateMachineBuilder { | |||||
public class TestValidStateMachineBuilderImpl implements BaseStateMachineBuilder<Purchase, TestValidStateChangeEvent, TenderTestValidStatusEnum> { | |||||
public static final String MACHINE_ID = "testValidStateMachine"; | public static final String MACHINE_ID = "testValidStateMachine"; | ||||
@@ -53,7 +53,7 @@ public class TestValidStateMachineBuilderImpl implements TestValidStateMachineBu | |||||
try { | try { | ||||
return buildStateMachine(beanFactory); | return buildStateMachine(beanFactory); | ||||
} catch (Exception e) { | } catch (Exception e) { | ||||
throw new StateMachineException("状态机构件失败", e); | |||||
throw new StateMachineException("状态机构建失败", e); | |||||
} | } | ||||
} | } | ||||
@@ -0,0 +1,58 @@ | |||||
package com.hz.pm.api.common.statemachine.event; | |||||
import com.ningdatech.basic.exception.BizException; | |||||
import org.apache.commons.lang3.EnumUtils; | |||||
import java.util.Objects; | |||||
/** | |||||
* <p> | |||||
* BaseTenderAction | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 18:58 2024/4/2 | |||||
*/ | |||||
public interface AbstractStateChangeEvent { | |||||
Integer getPassStatusCode(); | |||||
Integer getRejectStatusCode(); | |||||
Integer getWithdrawStatusCode(); | |||||
static <E extends Enum<E> & AbstractStateChangeEvent> E getPassEvent(Class<E> eClass, Integer code) { | |||||
if (Objects.nonNull(code)) { | |||||
for (E t : EnumUtils.getEnumList(eClass)) { | |||||
if (code.equals(t.getPassStatusCode())) { | |||||
return t; | |||||
} | |||||
} | |||||
} | |||||
throw BizException.wrap("该状态下没有对应的通过操作!"); | |||||
} | |||||
static <E extends Enum<E> & AbstractStateChangeEvent> E getRejectEvent(Class<E> eClass, Integer code) { | |||||
if (Objects.nonNull(code)) { | |||||
for (E t : EnumUtils.getEnumList(eClass)) { | |||||
if (code.equals(t.getRejectStatusCode())) { | |||||
return t; | |||||
} | |||||
} | |||||
} | |||||
throw BizException.wrap("该状态下没有对应的驳回操作!"); | |||||
} | |||||
static <E extends Enum<E> & AbstractStateChangeEvent> E getWithdrawEvent(Class<E> eClass, Integer code) { | |||||
if (Objects.nonNull(code)) { | |||||
for (E t : EnumUtils.getEnumList(eClass)) { | |||||
if (code.equals(t.getWithdrawStatusCode())) { | |||||
return t; | |||||
} | |||||
} | |||||
} | |||||
throw BizException.wrap("该状态下没有对应的撤回操作!"); | |||||
} | |||||
} |
@@ -3,8 +3,6 @@ package com.hz.pm.api.common.statemachine.event; | |||||
import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||
import lombok.Getter; | import lombok.Getter; | ||||
import java.util.Objects; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
* TenderStatusChangeEvent | * TenderStatusChangeEvent | ||||
@@ -15,7 +13,7 @@ import java.util.Objects; | |||||
*/ | */ | ||||
@Getter | @Getter | ||||
@AllArgsConstructor | @AllArgsConstructor | ||||
public enum AdaptStateChangeEvent { | |||||
public enum AdaptStateChangeEvent implements AbstractStateChangeEvent { | |||||
SUBMIT_ADAPT_INFO(2100, null, null), | SUBMIT_ADAPT_INFO(2100, null, null), | ||||
ADAPT_INFO_PASSED(2101, null, null), | ADAPT_INFO_PASSED(2101, null, null), | ||||
@@ -27,40 +25,4 @@ public enum AdaptStateChangeEvent { | |||||
private final Integer rejectStatusCode; | private final Integer rejectStatusCode; | ||||
private final Integer withdrawStatusCode; | private final Integer withdrawStatusCode; | ||||
public static AdaptStateChangeEvent getPassValueByCode(Integer code) { | |||||
if (Objects.isNull(code)) { | |||||
return null; | |||||
} | |||||
for (AdaptStateChangeEvent t : AdaptStateChangeEvent.values()) { | |||||
if (code.equals(t.getPassStatusCode())) { | |||||
return t; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
public static AdaptStateChangeEvent getRejectValueByCode(Integer code) { | |||||
if (Objects.isNull(code)) { | |||||
return null; | |||||
} | |||||
for (AdaptStateChangeEvent t : AdaptStateChangeEvent.values()) { | |||||
if (code.equals(t.getRejectStatusCode())) { | |||||
return t; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
public static AdaptStateChangeEvent getWithdrawValueByCode(Integer code) { | |||||
if (Objects.isNull(code)) { | |||||
return null; | |||||
} | |||||
for (AdaptStateChangeEvent t : AdaptStateChangeEvent.values()) { | |||||
if (code.equals(t.getWithdrawStatusCode())) { | |||||
return t; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
} | } |
@@ -3,21 +3,18 @@ package com.hz.pm.api.common.statemachine.event; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | ||||
import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||
import lombok.Getter; | import lombok.Getter; | ||||
import lombok.NoArgsConstructor; | |||||
import java.util.Objects; | |||||
/** | /** | ||||
* 项目状态改变事件 | |||||
* <p> | |||||
* ProjectStatusChangeEvent | |||||
* </p> | |||||
* | * | ||||
* @author CMM | |||||
* @return | |||||
* @since 2023/02/07 9:22 | |||||
* @author WendyYang | |||||
* @since 20:20 2024/4/2 | |||||
*/ | */ | ||||
@Getter | @Getter | ||||
@AllArgsConstructor | @AllArgsConstructor | ||||
@NoArgsConstructor | |||||
public enum ProjectStatusChangeEvent { | |||||
public enum ProjectStateChangeEvent implements AbstractStateChangeEvent { | |||||
/** | /** | ||||
* 项目申报暂存(项目状态进入:待申报) | * 项目申报暂存(项目状态进入:待申报) | ||||
@@ -205,43 +202,8 @@ public enum ProjectStatusChangeEvent { | |||||
FINAL_RE_ACCEPTANCE_APPLICATION(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED.getCode(), null, null); | FINAL_RE_ACCEPTANCE_APPLICATION(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED.getCode(), null, null); | ||||
private Integer passProjectStatusCode; | |||||
private Integer rejectProjectStatusCode; | |||||
private Integer withdrawProjectStatusCode; | |||||
public static ProjectStatusChangeEvent getPassValueByCode(Integer code) { | |||||
if (Objects.isNull(code)) { | |||||
return null; | |||||
} | |||||
for (ProjectStatusChangeEvent t : ProjectStatusChangeEvent.values()) { | |||||
if (code.equals(t.getPassProjectStatusCode())) { | |||||
return t; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
public static ProjectStatusChangeEvent getRejectValueByCode(Integer code) { | |||||
if (Objects.isNull(code)) { | |||||
return null; | |||||
} | |||||
for (ProjectStatusChangeEvent t : ProjectStatusChangeEvent.values()) { | |||||
if (code.equals(t.getRejectProjectStatusCode())) { | |||||
return t; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
public static ProjectStatusChangeEvent getWithdrawValueByCode(Integer code) { | |||||
if (Objects.isNull(code)) { | |||||
return null; | |||||
} | |||||
for (ProjectStatusChangeEvent t : ProjectStatusChangeEvent.values()) { | |||||
if (code.equals(t.getWithdrawProjectStatusCode())) { | |||||
return t; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
private final Integer passStatusCode; | |||||
private final Integer rejectStatusCode; | |||||
private final Integer withdrawStatusCode; | |||||
} | } |
@@ -3,8 +3,6 @@ package com.hz.pm.api.common.statemachine.event; | |||||
import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||
import lombok.Getter; | import lombok.Getter; | ||||
import java.util.Objects; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
* SelfTestStateChangeEvent | * SelfTestStateChangeEvent | ||||
@@ -15,7 +13,7 @@ import java.util.Objects; | |||||
*/ | */ | ||||
@Getter | @Getter | ||||
@AllArgsConstructor | @AllArgsConstructor | ||||
public enum SelfTestStateChangeEvent { | |||||
public enum SelfTestStateChangeEvent implements AbstractStateChangeEvent { | |||||
SUBMIT_SELF_TEST_INFO(1100, null, null), | SUBMIT_SELF_TEST_INFO(1100, null, null), | ||||
SELF_TEST_PASSED(1101, null, null), | SELF_TEST_PASSED(1101, null, null), | ||||
@@ -27,40 +25,4 @@ public enum SelfTestStateChangeEvent { | |||||
private final Integer rejectStatusCode; | private final Integer rejectStatusCode; | ||||
private final Integer withdrawStatusCode; | private final Integer withdrawStatusCode; | ||||
public static SelfTestStateChangeEvent getPassValueByCode(Integer code) { | |||||
if (Objects.isNull(code)) { | |||||
return null; | |||||
} | |||||
for (SelfTestStateChangeEvent t : SelfTestStateChangeEvent.values()) { | |||||
if (code.equals(t.getPassStatusCode())) { | |||||
return t; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
public static SelfTestStateChangeEvent getRejectValueByCode(Integer code) { | |||||
if (Objects.isNull(code)) { | |||||
return null; | |||||
} | |||||
for (SelfTestStateChangeEvent t : SelfTestStateChangeEvent.values()) { | |||||
if (code.equals(t.getRejectStatusCode())) { | |||||
return t; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
public static SelfTestStateChangeEvent getWithdrawValueByCode(Integer code) { | |||||
if (Objects.isNull(code)) { | |||||
return null; | |||||
} | |||||
for (SelfTestStateChangeEvent t : SelfTestStateChangeEvent.values()) { | |||||
if (code.equals(t.getWithdrawStatusCode())) { | |||||
return t; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
} | } |
@@ -3,8 +3,6 @@ package com.hz.pm.api.common.statemachine.event; | |||||
import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||
import lombok.Getter; | import lombok.Getter; | ||||
import java.util.Objects; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
* TenderStatusChangeEvent | * TenderStatusChangeEvent | ||||
@@ -15,7 +13,7 @@ import java.util.Objects; | |||||
*/ | */ | ||||
@Getter | @Getter | ||||
@AllArgsConstructor | @AllArgsConstructor | ||||
public enum TenderStatusChangeEvent { | |||||
public enum TenderStateChangeEvent implements AbstractStateChangeEvent { | |||||
/** | /** | ||||
* 填写采购信息 | * 填写采购信息 | ||||
@@ -71,40 +69,4 @@ public enum TenderStatusChangeEvent { | |||||
private final Integer rejectStatusCode; | private final Integer rejectStatusCode; | ||||
private final Integer withdrawStatusCode; | private final Integer withdrawStatusCode; | ||||
public static TenderStatusChangeEvent getPassValueByCode(Integer code) { | |||||
if (Objects.isNull(code)) { | |||||
return null; | |||||
} | |||||
for (TenderStatusChangeEvent t : TenderStatusChangeEvent.values()) { | |||||
if (code.equals(t.getPassStatusCode())) { | |||||
return t; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
public static TenderStatusChangeEvent getRejectValueByCode(Integer code) { | |||||
if (Objects.isNull(code)) { | |||||
return null; | |||||
} | |||||
for (TenderStatusChangeEvent t : TenderStatusChangeEvent.values()) { | |||||
if (code.equals(t.getRejectStatusCode())) { | |||||
return t; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
public static TenderStatusChangeEvent getWithdrawValueByCode(Integer code) { | |||||
if (Objects.isNull(code)) { | |||||
return null; | |||||
} | |||||
for (TenderStatusChangeEvent t : TenderStatusChangeEvent.values()) { | |||||
if (code.equals(t.getWithdrawStatusCode())) { | |||||
return t; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
} | } |
@@ -3,8 +3,6 @@ package com.hz.pm.api.common.statemachine.event; | |||||
import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||
import lombok.Getter; | import lombok.Getter; | ||||
import java.util.Objects; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
* TenderStatusChangeEvent | * TenderStatusChangeEvent | ||||
@@ -15,7 +13,7 @@ import java.util.Objects; | |||||
*/ | */ | ||||
@Getter | @Getter | ||||
@AllArgsConstructor | @AllArgsConstructor | ||||
public enum TestValidStateChangeEvent { | |||||
public enum TestValidStateChangeEvent implements AbstractStateChangeEvent { | |||||
/** | /** | ||||
* 填写测试验证信息 | * 填写测试验证信息 | ||||
@@ -39,40 +37,4 @@ public enum TestValidStateChangeEvent { | |||||
private final Integer rejectStatusCode; | private final Integer rejectStatusCode; | ||||
private final Integer withdrawStatusCode; | private final Integer withdrawStatusCode; | ||||
public static TestValidStateChangeEvent getPassValueByCode(Integer code) { | |||||
if (Objects.isNull(code)) { | |||||
return null; | |||||
} | |||||
for (TestValidStateChangeEvent t : TestValidStateChangeEvent.values()) { | |||||
if (code.equals(t.getPassStatusCode())) { | |||||
return t; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
public static TestValidStateChangeEvent getRejectValueByCode(Integer code) { | |||||
if (Objects.isNull(code)) { | |||||
return null; | |||||
} | |||||
for (TestValidStateChangeEvent t : TestValidStateChangeEvent.values()) { | |||||
if (code.equals(t.getRejectStatusCode())) { | |||||
return t; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
public static TestValidStateChangeEvent getWithdrawValueByCode(Integer code) { | |||||
if (Objects.isNull(code)) { | |||||
return null; | |||||
} | |||||
for (TestValidStateChangeEvent t : TestValidStateChangeEvent.values()) { | |||||
if (code.equals(t.getWithdrawStatusCode())) { | |||||
return t; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
} | } |
@@ -1,6 +1,6 @@ | |||||
package com.hz.pm.api.common.statemachine.factory; | package com.hz.pm.api.common.statemachine.factory; | ||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | ||||
import org.springframework.statemachine.StateContext; | import org.springframework.statemachine.StateContext; | ||||
import org.springframework.statemachine.guard.Guard; | import org.springframework.statemachine.guard.Guard; | ||||
@@ -16,9 +16,9 @@ public class ProjectDeclareGuardFactory { | |||||
private ProjectDeclareGuardFactory() { | private ProjectDeclareGuardFactory() { | ||||
} | } | ||||
public static class PendingPreQualificationChoiceGuard implements Guard<ProjectStatusEnum, ProjectStatusChangeEvent> { | |||||
public static class PendingPreQualificationChoiceGuard implements Guard<ProjectStatusEnum, ProjectStateChangeEvent> { | |||||
@Override | @Override | ||||
public boolean evaluate(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> context) { | |||||
public boolean evaluate(StateContext<ProjectStatusEnum, ProjectStateChangeEvent> context) { | |||||
// 判断申报项目是否是市级项目,且申报金额是否大于等于1000万元 | // 判断申报项目是否是市级项目,且申报金额是否大于等于1000万元 | ||||
return true; | return true; | ||||
} | } | ||||
@@ -0,0 +1,68 @@ | |||||
package com.hz.pm.api.common.statemachine.util; | |||||
import com.hz.pm.api.common.statemachine.event.AbstractStateChangeEvent; | |||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.wflow.exception.BusinessException; | |||||
import org.slf4j.LoggerFactory; | |||||
import java.lang.reflect.ParameterizedType; | |||||
import java.lang.reflect.Type; | |||||
import java.util.function.Function; | |||||
/** | |||||
* <p> | |||||
* AbstractStateMachineUtil | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 19:39 2024/4/2 | |||||
*/ | |||||
public interface AbstractStateMachineUtil<O, E extends Enum<E> & AbstractStateChangeEvent> { | |||||
/** | |||||
* 获取状态变更事件类型 | |||||
* | |||||
* @return java.lang.Class<E> | |||||
**/ | |||||
default Class<E> eventClass() { | |||||
Type type = getClass().getGenericInterfaces()[0]; | |||||
return (Class<E>) ((ParameterizedType) type).getActualTypeArguments()[1]; | |||||
} | |||||
//通过审核 | |||||
default void pass(O obj) { | |||||
try { | |||||
execute(obj, AbstractStateChangeEvent.getPassEvent(eventClass(), statusFunction().apply(obj))); | |||||
} catch (Exception e) { | |||||
LoggerFactory.getLogger(this.getClass()).info("状态机 通过失败 :{}", e.getMessage()); | |||||
throw BizException.wrap("状态机通过失败"); | |||||
} | |||||
} | |||||
//拒绝 | |||||
default void reject(O obj) { | |||||
try { | |||||
execute(obj, AbstractStateChangeEvent.getRejectEvent(eventClass(), statusFunction().apply(obj))); | |||||
} catch (Exception e) { | |||||
LoggerFactory.getLogger(this.getClass()).info("状态机 拒绝失败 :{}", e.getMessage()); | |||||
throw new BusinessException("状态机拒绝失败"); | |||||
} | |||||
} | |||||
//撤回 | |||||
default void withDraw(O obj) { | |||||
try { | |||||
execute(obj, AbstractStateChangeEvent.getWithdrawEvent(eventClass(), statusFunction().apply(obj))); | |||||
} catch (Exception e) { | |||||
LoggerFactory.getLogger(this.getClass()).info("状态机 撤回失败 :{}", e.getMessage()); | |||||
throw new BusinessException("状态机撤回失败"); | |||||
} | |||||
} | |||||
Function<O, Integer> statusFunction(); | |||||
void execute(O o, E event) throws Exception; | |||||
} |
@@ -1,15 +1,12 @@ | |||||
package com.hz.pm.api.common.statemachine.util; | package com.hz.pm.api.common.statemachine.util; | ||||
import com.hz.pm.api.common.statemachine.builder.AdaptStateMachineBuilder; | |||||
import com.hz.pm.api.common.statemachine.builder.impl.AdaptStateMachineBuilderImpl; | |||||
import com.hz.pm.api.common.statemachine.event.AdaptStateChangeEvent; | import com.hz.pm.api.common.statemachine.event.AdaptStateChangeEvent; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | import com.hz.pm.api.projectdeclared.model.entity.Purchase; | ||||
import com.hz.pm.api.projectdeclared.utils.ProjectIdCodeCacheUtil; | import com.hz.pm.api.projectdeclared.utils.ProjectIdCodeCacheUtil; | ||||
import com.hz.pm.api.projectlib.entity.PurchaseStatusChange; | import com.hz.pm.api.projectlib.entity.PurchaseStatusChange; | ||||
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.projectlib.service.IPurchaseStatusChangeService; | import com.hz.pm.api.projectlib.service.IPurchaseStatusChangeService; | ||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.wflow.exception.BusinessException; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.springframework.messaging.Message; | import org.springframework.messaging.Message; | ||||
@@ -19,7 +16,7 @@ import org.springframework.statemachine.persist.StateMachinePersister; | |||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||
import java.util.Objects; | |||||
import java.util.function.Function; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
@@ -32,46 +29,21 @@ import java.util.Objects; | |||||
@Slf4j | @Slf4j | ||||
@Component | @Component | ||||
@RequiredArgsConstructor | @RequiredArgsConstructor | ||||
public class AdaptStateMachineUtil { | |||||
public class AdaptStateMachineUtil implements AbstractStateMachineUtil<Purchase, AdaptStateChangeEvent> { | |||||
public static final String PURCHASE = "purchaseInfo"; | public static final String PURCHASE = "purchaseInfo"; | ||||
//================================================================================================================== | //================================================================================================================== | ||||
private final AdaptStateMachineBuilder adaptStateMachineBuilder; | |||||
private final AdaptStateMachineBuilderImpl adaptStateMachineBuilder; | |||||
private final IPurchaseStatusChangeService purchaseStatusChangeService; | private final IPurchaseStatusChangeService purchaseStatusChangeService; | ||||
//通过审核 | |||||
public void pass(Purchase purchase) { | |||||
try { | |||||
execute(purchase, getPassEvent(purchase.getAdaptStatus())); | |||||
} catch (Exception e) { | |||||
log.info("状态机 通过失败 :{}", e.getMessage()); | |||||
throw new BusinessException("状态机 通过失败: " + e); | |||||
} | |||||
} | |||||
//拒绝 | |||||
public void reject(Purchase purchase) { | |||||
try { | |||||
execute(purchase, getRejectEvent(purchase.getAdaptStatus())); | |||||
} catch (Exception e) { | |||||
log.info("状态机 拒绝失败 :{}", e.getMessage()); | |||||
throw new BusinessException("状态机 拒绝失败: " + e); | |||||
} | |||||
} | |||||
//撤回 | |||||
public void withDraw(Purchase purchase) { | |||||
try { | |||||
execute(purchase, getWithdrawEvent(purchase.getAdaptStatus())); | |||||
} catch (Exception e) { | |||||
log.info("状态机 撤回失败 :{}", e.getMessage()); | |||||
throw new BusinessException("状态机 撤回失败: " + e); | |||||
} | |||||
@Override | |||||
public Function<Purchase, Integer> statusFunction() { | |||||
return Purchase::getAdaptStatus; | |||||
} | } | ||||
@Override | |||||
public void execute(Purchase purchase, AdaptStateChangeEvent event) throws Exception { | public void execute(Purchase purchase, AdaptStateChangeEvent event) throws Exception { | ||||
log.info("调用状态机前的标段状态为:{}", purchase.getStatus()); | log.info("调用状态机前的标段状态为:{}", purchase.getStatus()); | ||||
// 获取TO状态机 | // 获取TO状态机 | ||||
@@ -95,29 +67,4 @@ public class AdaptStateMachineUtil { | |||||
log.info("调用状态机后的标段状态为:{}", purchase.getAdaptStatus()); | log.info("调用状态机后的标段状态为:{}", purchase.getAdaptStatus()); | ||||
} | } | ||||
public AdaptStateChangeEvent getPassEvent(Integer status) { | |||||
AdaptStateChangeEvent event = AdaptStateChangeEvent.getPassValueByCode(status); | |||||
if (Objects.isNull(event)) { | |||||
throw new BizException("该状态下没有对应的通过操作!"); | |||||
} | |||||
return event; | |||||
} | |||||
public AdaptStateChangeEvent getRejectEvent(Integer status) { | |||||
AdaptStateChangeEvent event = AdaptStateChangeEvent.getRejectValueByCode(status); | |||||
if (Objects.isNull(event)) { | |||||
throw new BizException("该状态下没有对应的驳回操作!"); | |||||
} | |||||
return event; | |||||
} | |||||
public AdaptStateChangeEvent getWithdrawEvent(Integer status) { | |||||
AdaptStateChangeEvent event = AdaptStateChangeEvent.getWithdrawValueByCode(status); | |||||
if (Objects.isNull(event)) { | |||||
throw new BizException("该状态下没有对应的撤回操作!"); | |||||
} | |||||
return event; | |||||
} | |||||
} | } |
@@ -0,0 +1,77 @@ | |||||
package com.hz.pm.api.common.statemachine.util; | |||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | |||||
import com.hz.pm.api.common.statemachine.builder.impl.ProjectStateMachineBuilderImpl; | |||||
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.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.service.IProjectApplicationService; | |||||
import com.hz.pm.api.projectlib.service.IProjectStatusChangeService; | |||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.messaging.Message; | |||||
import org.springframework.messaging.support.MessageBuilder; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
import org.springframework.stereotype.Component; | |||||
import java.time.LocalDateTime; | |||||
import java.util.function.Function; | |||||
/** | |||||
* 状态机工具类 | |||||
* | |||||
* @author CMM | |||||
* @since 2023/02/07 22:49 | |||||
*/ | |||||
@Slf4j | |||||
@Component | |||||
@RequiredArgsConstructor | |||||
public class ProjectStateMachineUtil implements AbstractStateMachineUtil<Project, ProjectStateChangeEvent> { | |||||
private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | |||||
private static final String APPLICATION_DECLARE = StateMachineConst.APPLICATION_DECLARE; | |||||
//================================================================================================================== | |||||
private final ProjectStateMachineBuilderImpl projectStateMachineBuilder; | |||||
private final IProjectStatusChangeService projectStatusChangeService; | |||||
private final IProjectApplicationService projectApplicationService; | |||||
@Override | |||||
public Function<Project, Integer> statusFunction() { | |||||
return Project::getStatus; | |||||
} | |||||
@Override | |||||
public void execute(Project project, ProjectStateChangeEvent event) throws Exception { | |||||
log.info("调用状态机前的项目状态为:{}", project.getStatus()); | |||||
// 将状态变更记录保存到项目状态变更表中 | |||||
ProjectStatusChange projectStatusChange = new ProjectStatusChange(); | |||||
projectStatusChange.setBeforeStatus(project.getStatus()); | |||||
// 获取TO状态机 | |||||
StateMachine<ProjectStatusEnum, ProjectStateChangeEvent> stateMachine = projectStateMachineBuilder.build(); | |||||
Message<ProjectStateChangeEvent> message = MessageBuilder.withPayload(event) | |||||
.setHeader(PROJECT_DECLARE, project) | |||||
.setHeader(APPLICATION_DECLARE, projectApplicationService.getApplicationsByProject(project)) | |||||
.build(); | |||||
//初始化状态机 | |||||
StateMachinePersister<ProjectStatusEnum, ProjectStateChangeEvent, Project> projectDeclareStateMachinePersister = projectStateMachineBuilder.stateMachinePersister(); | |||||
projectDeclareStateMachinePersister.restore(stateMachine, project); | |||||
stateMachine.sendEvent(message); | |||||
projectStatusChange.setProjectId(project.getId()); | |||||
projectStatusChange.setAfterStatus(project.getStatus()); | |||||
projectStatusChange.setEvent(event.name()); | |||||
projectStatusChange.setCreateOn(LocalDateTime.now()); | |||||
projectStatusChange.setProjectCode(project.getProjectCode()); | |||||
// 插入项目状态变更表中 | |||||
projectStatusChangeService.save(projectStatusChange); | |||||
log.info("调用状态机后的项目状态为:{}", project.getStatus()); | |||||
} | |||||
} |
@@ -1,15 +1,12 @@ | |||||
package com.hz.pm.api.common.statemachine.util; | package com.hz.pm.api.common.statemachine.util; | ||||
import com.hz.pm.api.common.statemachine.builder.SelfTestStateMachineBuilder; | |||||
import com.hz.pm.api.common.statemachine.builder.impl.SelfTestStateMachineBuilderImpl; | |||||
import com.hz.pm.api.common.statemachine.event.SelfTestStateChangeEvent; | import com.hz.pm.api.common.statemachine.event.SelfTestStateChangeEvent; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | import com.hz.pm.api.projectdeclared.model.entity.Purchase; | ||||
import com.hz.pm.api.projectdeclared.utils.ProjectIdCodeCacheUtil; | import com.hz.pm.api.projectdeclared.utils.ProjectIdCodeCacheUtil; | ||||
import com.hz.pm.api.projectlib.entity.PurchaseStatusChange; | import com.hz.pm.api.projectlib.entity.PurchaseStatusChange; | ||||
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.TenderSelfTestStatusEnum; | ||||
import com.hz.pm.api.projectlib.service.IPurchaseStatusChangeService; | import com.hz.pm.api.projectlib.service.IPurchaseStatusChangeService; | ||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.wflow.exception.BusinessException; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.springframework.messaging.Message; | import org.springframework.messaging.Message; | ||||
@@ -19,7 +16,7 @@ import org.springframework.statemachine.persist.StateMachinePersister; | |||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||
import java.util.Objects; | |||||
import java.util.function.Function; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
@@ -32,45 +29,21 @@ import java.util.Objects; | |||||
@Slf4j | @Slf4j | ||||
@Component | @Component | ||||
@RequiredArgsConstructor | @RequiredArgsConstructor | ||||
public class SelfTestStateMachineUtil { | |||||
public class SelfTestStateMachineUtil implements AbstractStateMachineUtil<Purchase, SelfTestStateChangeEvent> { | |||||
public static final String PURCHASE = "purchaseInfo"; | public static final String PURCHASE = "purchaseInfo"; | ||||
//================================================================================================================== | //================================================================================================================== | ||||
private final SelfTestStateMachineBuilder selfTestStateMachineBuilder; | |||||
private final SelfTestStateMachineBuilderImpl selfTestStateMachineBuilder; | |||||
private final IPurchaseStatusChangeService purchaseStatusChangeService; | private final IPurchaseStatusChangeService purchaseStatusChangeService; | ||||
//通过审核 | |||||
public void pass(Purchase purchase) { | |||||
try { | |||||
execute(purchase, getPassEvent(purchase.getSelfTestStatus())); | |||||
} catch (Exception e) { | |||||
log.info("状态机 通过失败 :{}", e.getMessage()); | |||||
throw new BusinessException("状态机 通过失败: " + e); | |||||
} | |||||
} | |||||
//拒绝 | |||||
public void reject(Purchase purchase) { | |||||
try { | |||||
execute(purchase, getRejectEvent(purchase.getSelfTestStatus())); | |||||
} catch (Exception e) { | |||||
log.info("状态机 拒绝失败 :{}", e.getMessage()); | |||||
throw new BusinessException("状态机 拒绝失败: " + e); | |||||
} | |||||
} | |||||
//撤回 | |||||
public void withDraw(Purchase purchase) { | |||||
try { | |||||
execute(purchase, getWithdrawEvent(purchase.getSelfTestStatus())); | |||||
} catch (Exception e) { | |||||
log.info("状态机 撤回失败 :{}", e.getMessage()); | |||||
throw new BusinessException("状态机 撤回失败: " + e); | |||||
} | |||||
@Override | |||||
public Function<Purchase, Integer> statusFunction() { | |||||
return Purchase::getSelfTestStatus; | |||||
} | } | ||||
@Override | |||||
public void execute(Purchase purchase, SelfTestStateChangeEvent event) throws Exception { | public void execute(Purchase purchase, SelfTestStateChangeEvent event) throws Exception { | ||||
log.info("调用状态机前的标段状态为:{}", purchase.getSelfTestStatus()); | log.info("调用状态机前的标段状态为:{}", purchase.getSelfTestStatus()); | ||||
// 获取TO状态机 | // 获取TO状态机 | ||||
@@ -94,29 +67,4 @@ public class SelfTestStateMachineUtil { | |||||
log.info("调用状态机后的标段状态为:{}", purchase.getSelfTestStatus()); | log.info("调用状态机后的标段状态为:{}", purchase.getSelfTestStatus()); | ||||
} | } | ||||
public SelfTestStateChangeEvent getPassEvent(Integer status) { | |||||
SelfTestStateChangeEvent event = SelfTestStateChangeEvent.getPassValueByCode(status); | |||||
if (Objects.isNull(event)) { | |||||
throw new BizException("该状态下没有对应的通过操作!"); | |||||
} | |||||
return event; | |||||
} | |||||
public SelfTestStateChangeEvent getRejectEvent(Integer status) { | |||||
SelfTestStateChangeEvent event = SelfTestStateChangeEvent.getRejectValueByCode(status); | |||||
if (Objects.isNull(event)) { | |||||
throw new BizException("该状态下没有对应的驳回操作!"); | |||||
} | |||||
return event; | |||||
} | |||||
public SelfTestStateChangeEvent getWithdrawEvent(Integer status) { | |||||
SelfTestStateChangeEvent event = SelfTestStateChangeEvent.getWithdrawValueByCode(status); | |||||
if (Objects.isNull(event)) { | |||||
throw new BizException("该状态下没有对应的撤回操作!"); | |||||
} | |||||
return event; | |||||
} | |||||
} | } |
@@ -1,140 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.util; | |||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | |||||
import com.hz.pm.api.common.statemachine.builder.ProjectDeclareStateMachineBuilder; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
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.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.service.IProjectStatusChangeService; | |||||
import com.hz.pm.api.projectlib.service.IProjectApplicationService; | |||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.wflow.exception.BusinessException; | |||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.messaging.Message; | |||||
import org.springframework.messaging.support.MessageBuilder; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
import org.springframework.stereotype.Component; | |||||
import java.math.BigDecimal; | |||||
import java.time.LocalDateTime; | |||||
import java.util.Objects; | |||||
/** | |||||
* 状态机工具类 | |||||
* | |||||
* @author CMM | |||||
* @since 2023/02/07 22:49 | |||||
*/ | |||||
@Slf4j | |||||
@Component | |||||
@RequiredArgsConstructor | |||||
public class StateMachineUtil { | |||||
private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | |||||
private static final String APPLICATION_DECLARE = StateMachineConst.APPLICATION_DECLARE; | |||||
//================================================================================================================== | |||||
private final ProjectDeclareStateMachineBuilder projectDeclareStateMachineBuilder; | |||||
private final IProjectStatusChangeService projectStatusChangeService; | |||||
private final IProjectApplicationService projectApplicationService; | |||||
//通过审核 | |||||
public void pass(Project project) { | |||||
try { | |||||
execute(project, getProjectStatusPassEvent(project.getStatus())); | |||||
} catch (Exception e) { | |||||
log.info("状态机 通过失败 :{}", e.getMessage()); | |||||
throw new BusinessException("状态机 通过失败: " + e); | |||||
} | |||||
} | |||||
//拒绝 | |||||
public void reject(Project project) { | |||||
try { | |||||
execute(project, getProjectStatusRejectEvent(project.getStatus())); | |||||
} catch (Exception e) { | |||||
log.info("状态机 拒绝失败 :{}", e.getMessage()); | |||||
throw new BusinessException("状态机 拒绝失败: " + e); | |||||
} | |||||
} | |||||
//撤回 | |||||
public void withDraw(Project project) { | |||||
try { | |||||
execute(project, getProjectStatusWithdrawEvent(project.getStatus())); | |||||
} catch (Exception e) { | |||||
log.info("状态机 撤回失败 :{}", e.getMessage()); | |||||
throw new BusinessException("状态机 撤回失败: " + e); | |||||
} | |||||
} | |||||
public void execute(Project project, ProjectStatusChangeEvent event) throws Exception { | |||||
log.info("调用状态机前的项目状态为:{}", project.getStatus()); | |||||
// 将状态变更记录保存到项目状态变更表中 | |||||
ProjectStatusChange projectStatusChange = new ProjectStatusChange(); | |||||
projectStatusChange.setBeforeStatus(project.getStatus()); | |||||
// 获取TO状态机 | |||||
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> stateMachine = projectDeclareStateMachineBuilder.build(); | |||||
Message<ProjectStatusChangeEvent> message = MessageBuilder.withPayload(event) | |||||
.setHeader(PROJECT_DECLARE, project) | |||||
.setHeader(APPLICATION_DECLARE, projectApplicationService.getApplicationsByProject(project)) | |||||
.build(); | |||||
//初始化状态机 | |||||
StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> projectDeclareStateMachinePersister = projectDeclareStateMachineBuilder.getProjectPersister(); | |||||
projectDeclareStateMachinePersister.restore(stateMachine, project); | |||||
stateMachine.sendEvent(message); | |||||
projectStatusChange.setProjectId(project.getId()); | |||||
projectStatusChange.setAfterStatus(project.getStatus()); | |||||
projectStatusChange.setEvent(event.name()); | |||||
projectStatusChange.setCreateOn(LocalDateTime.now()); | |||||
projectStatusChange.setProjectCode(project.getProjectCode()); | |||||
// 插入项目状态变更表中 | |||||
projectStatusChangeService.save(projectStatusChange); | |||||
log.info("调用状态机后的项目状态为:{}", project.getStatus()); | |||||
} | |||||
/** | |||||
* 判断项目申报金额是否大于1000万元 | |||||
* | |||||
* @param project \ | |||||
* @return boolean | |||||
* @since 2023/02/07 17:13 | |||||
*/ | |||||
public static boolean judgeDeclareAmount(Project project, BigDecimal targetAmount) { | |||||
int flag = project.getDeclareAmount().compareTo(targetAmount); | |||||
return flag > 0 || flag == 0; | |||||
} | |||||
public ProjectStatusChangeEvent getProjectStatusPassEvent(Integer status) { | |||||
ProjectStatusChangeEvent event = ProjectStatusChangeEvent.getPassValueByCode(status); | |||||
if (Objects.isNull(event)) { | |||||
throw new BizException("该状态下没有对应的通过操作!"); | |||||
} | |||||
return event; | |||||
} | |||||
public ProjectStatusChangeEvent getProjectStatusRejectEvent(Integer status) { | |||||
ProjectStatusChangeEvent event = ProjectStatusChangeEvent.getRejectValueByCode(status); | |||||
if (Objects.isNull(event)) { | |||||
throw new BizException("该状态下没有对应的驳回操作!"); | |||||
} | |||||
return event; | |||||
} | |||||
public ProjectStatusChangeEvent getProjectStatusWithdrawEvent(Integer status) { | |||||
ProjectStatusChangeEvent event = ProjectStatusChangeEvent.getWithdrawValueByCode(status); | |||||
if (Objects.isNull(event)) { | |||||
throw new BizException("该状态下没有对应的撤回操作!"); | |||||
} | |||||
return event; | |||||
} | |||||
} |
@@ -1,14 +1,12 @@ | |||||
package com.hz.pm.api.common.statemachine.util; | package com.hz.pm.api.common.statemachine.util; | ||||
import com.hz.pm.api.common.statemachine.builder.TenderStateMachineBuilder; | |||||
import com.hz.pm.api.common.statemachine.event.TenderStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.builder.impl.TenderStateMachineBuilderImpl; | |||||
import com.hz.pm.api.common.statemachine.event.TenderStateChangeEvent; | |||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | import com.hz.pm.api.projectdeclared.model.entity.Purchase; | ||||
import com.hz.pm.api.projectdeclared.utils.ProjectIdCodeCacheUtil; | import com.hz.pm.api.projectdeclared.utils.ProjectIdCodeCacheUtil; | ||||
import com.hz.pm.api.projectlib.entity.PurchaseStatusChange; | import com.hz.pm.api.projectlib.entity.PurchaseStatusChange; | ||||
import com.hz.pm.api.projectlib.model.enumeration.TenderStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.TenderStatusEnum; | ||||
import com.hz.pm.api.projectlib.service.IPurchaseStatusChangeService; | import com.hz.pm.api.projectlib.service.IPurchaseStatusChangeService; | ||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.wflow.exception.BusinessException; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.springframework.messaging.Message; | import org.springframework.messaging.Message; | ||||
@@ -18,7 +16,7 @@ import org.springframework.statemachine.persist.StateMachinePersister; | |||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||
import java.util.Objects; | |||||
import java.util.function.Function; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
@@ -31,91 +29,42 @@ import java.util.Objects; | |||||
@Slf4j | @Slf4j | ||||
@Component | @Component | ||||
@RequiredArgsConstructor | @RequiredArgsConstructor | ||||
public class TenderStateMachineUtil { | |||||
public class TenderStateMachineUtil implements AbstractStateMachineUtil<Purchase, TenderStateChangeEvent> { | |||||
public static final String PURCHASE = "purchaseInfo"; | public static final String PURCHASE = "purchaseInfo"; | ||||
//================================================================================================================== | //================================================================================================================== | ||||
private final TenderStateMachineBuilder tenderStateMachineBuilder; | |||||
private final TenderStateMachineBuilderImpl tenderStateMachineBuilder; | |||||
private final IPurchaseStatusChangeService purchaseStatusChangeService; | private final IPurchaseStatusChangeService purchaseStatusChangeService; | ||||
//通过审核 | |||||
public void pass(Purchase purchase) { | |||||
try { | |||||
execute(purchase, getPassEvent(purchase.getStatus())); | |||||
} catch (Exception e) { | |||||
log.info("状态机 通过失败 :{}", e.getMessage()); | |||||
throw new BusinessException("状态机 通过失败: " + e); | |||||
} | |||||
@Override | |||||
public Function<Purchase, Integer> statusFunction() { | |||||
return Purchase::getStatus; | |||||
} | } | ||||
//拒绝 | |||||
public void reject(Purchase purchase) { | |||||
try { | |||||
execute(purchase, getRejectEvent(purchase.getStatus())); | |||||
} catch (Exception e) { | |||||
log.info("状态机 拒绝失败 :{}", e.getMessage()); | |||||
throw new BusinessException("状态机 拒绝失败: " + e); | |||||
} | |||||
} | |||||
//撤回 | |||||
public void withDraw(Purchase purchase) { | |||||
try { | |||||
execute(purchase, getWithdrawEvent(purchase.getStatus())); | |||||
} catch (Exception e) { | |||||
log.info("状态机 撤回失败 :{}", e.getMessage()); | |||||
throw new BusinessException("状态机 撤回失败: " + e); | |||||
} | |||||
} | |||||
public void execute(Purchase purchase, TenderStatusChangeEvent event) throws Exception { | |||||
@Override | |||||
public void execute(Purchase purchase, TenderStateChangeEvent event) throws Exception { | |||||
log.info("调用状态机前的标段状态为:{}", purchase.getStatus()); | log.info("调用状态机前的标段状态为:{}", purchase.getStatus()); | ||||
// 获取TO状态机 | // 获取TO状态机 | ||||
PurchaseStatusChange change = new PurchaseStatusChange(); | PurchaseStatusChange change = new PurchaseStatusChange(); | ||||
change.setBeforeStatus(purchase.getAdaptStatus()); | |||||
change.setBeforeStatus(purchase.getStatus()); | |||||
change.setEvent(event.name()); | change.setEvent(event.name()); | ||||
change.setBidId(purchase.getId()); | change.setBidId(purchase.getId()); | ||||
change.setProjectId(purchase.getProjectId()); | change.setProjectId(purchase.getProjectId()); | ||||
change.setProjectCode(ProjectIdCodeCacheUtil.get(purchase.getProjectId())); | change.setProjectCode(ProjectIdCodeCacheUtil.get(purchase.getProjectId())); | ||||
change.setCreateOn(LocalDateTime.now()); | change.setCreateOn(LocalDateTime.now()); | ||||
StateMachine<TenderStatusEnum, TenderStatusChangeEvent> stateMachine = tenderStateMachineBuilder.build(); | |||||
Message<TenderStatusChangeEvent> message = MessageBuilder.withPayload(event) | |||||
StateMachine<TenderStatusEnum, TenderStateChangeEvent> stateMachine = tenderStateMachineBuilder.build(); | |||||
Message<TenderStateChangeEvent> message = MessageBuilder.withPayload(event) | |||||
.setHeader(PURCHASE, purchase) | .setHeader(PURCHASE, purchase) | ||||
.build(); | .build(); | ||||
//初始化状态机 | //初始化状态机 | ||||
StateMachinePersister<TenderStatusEnum, TenderStatusChangeEvent, Purchase> stateMachinePersister = tenderStateMachineBuilder.stateMachinePersister(); | |||||
StateMachinePersister<TenderStatusEnum, TenderStateChangeEvent, Purchase> stateMachinePersister = tenderStateMachineBuilder.stateMachinePersister(); | |||||
stateMachinePersister.restore(stateMachine, purchase); | stateMachinePersister.restore(stateMachine, purchase); | ||||
stateMachine.sendEvent(message); | stateMachine.sendEvent(message); | ||||
change.setAfterStatus(purchase.getAdaptStatus()); | |||||
change.setAfterStatus(purchase.getStatus()); | |||||
purchaseStatusChangeService.save(change); | purchaseStatusChangeService.save(change); | ||||
log.info("调用状态机后的标段状态为:{}", purchase.getStatus()); | log.info("调用状态机后的标段状态为:{}", purchase.getStatus()); | ||||
} | } | ||||
public TenderStatusChangeEvent getPassEvent(Integer status) { | |||||
TenderStatusChangeEvent event = TenderStatusChangeEvent.getPassValueByCode(status); | |||||
if (Objects.isNull(event)) { | |||||
throw new BizException("该状态下没有对应的通过操作!"); | |||||
} | |||||
return event; | |||||
} | |||||
public TenderStatusChangeEvent getRejectEvent(Integer status) { | |||||
TenderStatusChangeEvent event = TenderStatusChangeEvent.getRejectValueByCode(status); | |||||
if (Objects.isNull(event)) { | |||||
throw new BizException("该状态下没有对应的驳回操作!"); | |||||
} | |||||
return event; | |||||
} | |||||
public TenderStatusChangeEvent getWithdrawEvent(Integer status) { | |||||
TenderStatusChangeEvent event = TenderStatusChangeEvent.getWithdrawValueByCode(status); | |||||
if (Objects.isNull(event)) { | |||||
throw new BizException("该状态下没有对应的撤回操作!"); | |||||
} | |||||
return event; | |||||
} | |||||
} | } |
@@ -1,15 +1,12 @@ | |||||
package com.hz.pm.api.common.statemachine.util; | package com.hz.pm.api.common.statemachine.util; | ||||
import com.hz.pm.api.common.statemachine.builder.TestValidStateMachineBuilder; | |||||
import com.hz.pm.api.common.statemachine.builder.impl.TestValidStateMachineBuilderImpl; | |||||
import com.hz.pm.api.common.statemachine.event.TestValidStateChangeEvent; | import com.hz.pm.api.common.statemachine.event.TestValidStateChangeEvent; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | import com.hz.pm.api.projectdeclared.model.entity.Purchase; | ||||
import com.hz.pm.api.projectdeclared.utils.ProjectIdCodeCacheUtil; | import com.hz.pm.api.projectdeclared.utils.ProjectIdCodeCacheUtil; | ||||
import com.hz.pm.api.projectlib.entity.PurchaseStatusChange; | import com.hz.pm.api.projectlib.entity.PurchaseStatusChange; | ||||
import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum; | |||||
import com.hz.pm.api.projectlib.model.enumeration.TenderTestValidStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.TenderTestValidStatusEnum; | ||||
import com.hz.pm.api.projectlib.service.IPurchaseStatusChangeService; | import com.hz.pm.api.projectlib.service.IPurchaseStatusChangeService; | ||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.wflow.exception.BusinessException; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.springframework.messaging.Message; | import org.springframework.messaging.Message; | ||||
@@ -19,7 +16,7 @@ import org.springframework.statemachine.persist.StateMachinePersister; | |||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||
import java.util.Objects; | |||||
import java.util.function.Function; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
@@ -32,45 +29,21 @@ import java.util.Objects; | |||||
@Slf4j | @Slf4j | ||||
@Component | @Component | ||||
@RequiredArgsConstructor | @RequiredArgsConstructor | ||||
public class TestValidStateMachineUtil { | |||||
public class TestValidStateMachineUtil implements AbstractStateMachineUtil<Purchase, TestValidStateChangeEvent> { | |||||
public static final String PURCHASE = "purchaseInfo"; | public static final String PURCHASE = "purchaseInfo"; | ||||
//================================================================================================================== | //================================================================================================================== | ||||
private final TestValidStateMachineBuilder testValidStateMachineBuilder; | |||||
private final TestValidStateMachineBuilderImpl testValidStateMachineBuilder; | |||||
private final IPurchaseStatusChangeService purchaseStatusChangeService; | private final IPurchaseStatusChangeService purchaseStatusChangeService; | ||||
//通过审核 | |||||
public void pass(Purchase purchase) { | |||||
try { | |||||
execute(purchase, getPassEvent(purchase.getTestValidStatus())); | |||||
} catch (Exception e) { | |||||
log.info("状态机 通过失败 :{}", e.getMessage()); | |||||
throw new BusinessException("状态机 通过失败: " + e); | |||||
} | |||||
} | |||||
//拒绝 | |||||
public void reject(Purchase purchase) { | |||||
try { | |||||
execute(purchase, getRejectEvent(purchase.getTestValidStatus())); | |||||
} catch (Exception e) { | |||||
log.info("状态机 拒绝失败 :{}", e.getMessage()); | |||||
throw new BusinessException("状态机 拒绝失败: " + e); | |||||
} | |||||
} | |||||
//撤回 | |||||
public void withDraw(Purchase purchase) { | |||||
try { | |||||
execute(purchase, getWithdrawEvent(purchase.getTestValidStatus())); | |||||
} catch (Exception e) { | |||||
log.info("状态机 撤回失败 :{}", e.getMessage()); | |||||
throw new BusinessException("状态机 撤回失败: " + e); | |||||
} | |||||
@Override | |||||
public Function<Purchase, Integer> statusFunction() { | |||||
return Purchase::getTestValidStatus; | |||||
} | } | ||||
@Override | |||||
public void execute(Purchase purchase, TestValidStateChangeEvent event) throws Exception { | public void execute(Purchase purchase, TestValidStateChangeEvent event) throws Exception { | ||||
log.info("调用状态机前的标段状态为:{}", purchase.getStatus()); | log.info("调用状态机前的标段状态为:{}", purchase.getStatus()); | ||||
// 获取TO状态机 | // 获取TO状态机 | ||||
@@ -94,29 +67,4 @@ public class TestValidStateMachineUtil { | |||||
log.info("调用状态机后的标段状态为:{}", purchase.getStatus()); | log.info("调用状态机后的标段状态为:{}", purchase.getStatus()); | ||||
} | } | ||||
public TestValidStateChangeEvent getPassEvent(Integer status) { | |||||
TestValidStateChangeEvent event = TestValidStateChangeEvent.getPassValueByCode(status); | |||||
if (Objects.isNull(event)) { | |||||
throw new BizException("该状态下没有对应的通过操作!"); | |||||
} | |||||
return event; | |||||
} | |||||
public TestValidStateChangeEvent getRejectEvent(Integer status) { | |||||
TestValidStateChangeEvent event = TestValidStateChangeEvent.getRejectValueByCode(status); | |||||
if (Objects.isNull(event)) { | |||||
throw new BizException("该状态下没有对应的驳回操作!"); | |||||
} | |||||
return event; | |||||
} | |||||
public TestValidStateChangeEvent getWithdrawEvent(Integer status) { | |||||
TestValidStateChangeEvent event = TestValidStateChangeEvent.getWithdrawValueByCode(status); | |||||
if (Objects.isNull(event)) { | |||||
throw new BizException("该状态下没有对应的撤回操作!"); | |||||
} | |||||
return event; | |||||
} | |||||
} | } |
@@ -10,7 +10,7 @@ import com.google.common.collect.Lists; | |||||
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; | import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; | ||||
import com.hz.pm.api.common.helper.UserInfoHelper; | import com.hz.pm.api.common.helper.UserInfoHelper; | ||||
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.util.StateMachineUtil; | |||||
import com.hz.pm.api.common.statemachine.util.ProjectStateMachineUtil; | |||||
import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil; | import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil; | ||||
import com.hz.pm.api.common.util.DecimalUtil; | import com.hz.pm.api.common.util.DecimalUtil; | ||||
import com.hz.pm.api.common.util.ExcelDownUtil; | import com.hz.pm.api.common.util.ExcelDownUtil; | ||||
@@ -89,7 +89,7 @@ public class ConstructionManage { | |||||
private final DefaultDeclaredProjectManage defaultDeclaredProjectManage; | private final DefaultDeclaredProjectManage defaultDeclaredProjectManage; | ||||
private final IPreInsAcceptancePersonService acceptancePersonService; | private final IPreInsAcceptancePersonService acceptancePersonService; | ||||
private final ProcessInstanceService processInstanceService; | private final ProcessInstanceService processInstanceService; | ||||
private final StateMachineUtil stateMachineUtil; | |||||
private final ProjectStateMachineUtil projectStateMachineUtil; | |||||
private final IProjectAnnualPaymentPlanService projectPaymentPlanService; | private final IProjectAnnualPaymentPlanService projectPaymentPlanService; | ||||
private final TenderStateMachineUtil tenderStateMachineUtil; | private final TenderStateMachineUtil tenderStateMachineUtil; | ||||
@@ -560,7 +560,7 @@ public class ConstructionManage { | |||||
.last(BizConst.LIMIT_1); | .last(BizConst.LIMIT_1); | ||||
if (purchaseService.count(purchaseQuery) == 0) { | if (purchaseService.count(purchaseQuery) == 0) { | ||||
Project project = projectService.getById(req.getProjectId()); | Project project = projectService.getById(req.getProjectId()); | ||||
stateMachineUtil.pass(project); | |||||
projectStateMachineUtil.pass(project); | |||||
projectService.updateById(project); | projectService.updateById(project); | ||||
} | } | ||||
} | } | ||||
@@ -7,10 +7,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||
import com.hz.pm.api.common.enumeration.CommonEnum; | import com.hz.pm.api.common.enumeration.CommonEnum; | ||||
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; | import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; | ||||
import com.hz.pm.api.common.helper.UserInfoHelper; | |||||
import com.hz.pm.api.common.model.constant.BizConst; | import com.hz.pm.api.common.model.constant.BizConst; | ||||
import com.hz.pm.api.common.model.constant.CommonConst; | import com.hz.pm.api.common.model.constant.CommonConst; | ||||
import com.hz.pm.api.common.statemachine.util.StateMachineUtil; | |||||
import com.hz.pm.api.common.statemachine.util.ProjectStateMachineUtil; | |||||
import com.hz.pm.api.common.util.ExcelDownUtil; | import com.hz.pm.api.common.util.ExcelDownUtil; | ||||
import com.hz.pm.api.common.util.ExcelExportStyle; | import com.hz.pm.api.common.util.ExcelExportStyle; | ||||
import com.hz.pm.api.projectdeclared.model.dto.ConstructionPlanExportDTO; | import com.hz.pm.api.projectdeclared.model.dto.ConstructionPlanExportDTO; | ||||
@@ -46,7 +45,6 @@ import com.wflow.exception.BusinessException; | |||||
import com.wflow.workflow.bean.dto.OrgInfoDTO; | import com.wflow.workflow.bean.dto.OrgInfoDTO; | ||||
import com.wflow.workflow.bean.vo.ProcessStartParamsVo; | import com.wflow.workflow.bean.vo.ProcessStartParamsVo; | ||||
import com.wflow.workflow.service.ProcessInstanceService; | import com.wflow.workflow.service.ProcessInstanceService; | ||||
import com.wflow.workflow.service.ProcessModelService; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
@@ -77,7 +75,7 @@ public class ConstructionPlanManage { | |||||
private final ProcessModelManage processModelManage; | private final ProcessModelManage processModelManage; | ||||
private final IProjectService projectService; | private final IProjectService projectService; | ||||
private final ProcessInstanceService processService; | private final ProcessInstanceService processService; | ||||
private final StateMachineUtil stateMachineUtil; | |||||
private final ProjectStateMachineUtil projectStateMachineUtil; | |||||
private final IProjectInstService projectInstService; | private final IProjectInstService projectInstService; | ||||
private final ProjectLibManage projectLibManage; | private final ProjectLibManage projectLibManage; | ||||
private final DefaultDeclaredProjectManage declaredProjectManage; | private final DefaultDeclaredProjectManage declaredProjectManage; | ||||
@@ -136,8 +134,8 @@ public class ConstructionPlanManage { | |||||
//如果被禁用了的话 直接跳过 进入到下一个状态 | //如果被禁用了的话 直接跳过 进入到下一个状态 | ||||
if (Boolean.TRUE.equals(wflowModels.getIsStop())) { | if (Boolean.TRUE.equals(wflowModels.getIsStop())) { | ||||
//被禁用了 调2次状态机 | //被禁用了 调2次状态机 | ||||
stateMachineUtil.pass(constructProject); | |||||
stateMachineUtil.pass(constructProject); | |||||
projectStateMachineUtil.pass(constructProject); | |||||
projectStateMachineUtil.pass(constructProject); | |||||
constructProject.setUpdateOn(LocalDateTime.now()); | constructProject.setUpdateOn(LocalDateTime.now()); | ||||
projectService.updateById(constructProject); | projectService.updateById(constructProject); | ||||
return "因为建设方案流程被禁用了 直接跳过!"; | return "因为建设方案流程被禁用了 直接跳过!"; | ||||
@@ -171,7 +169,7 @@ public class ConstructionPlanManage { | |||||
} | } | ||||
private Project contructionPlanModifyProject(Project project, String instanceId) { | private Project contructionPlanModifyProject(Project project, String instanceId) { | ||||
stateMachineUtil.pass(project); | |||||
projectStateMachineUtil.pass(project); | |||||
project.setUpdateOn(LocalDateTime.now()); | project.setUpdateOn(LocalDateTime.now()); | ||||
project.setInstCode(instanceId); | project.setInstCode(instanceId); | ||||
projectService.updateById(project); | projectService.updateById(project); | ||||
@@ -222,7 +220,7 @@ public class ConstructionPlanManage { | |||||
project.setInstCode(instanceId); | project.setInstCode(instanceId); | ||||
project.setConstructionPlanFile(constructionPlanFile); | project.setConstructionPlanFile(constructionPlanFile); | ||||
//调用状态机 进入下一个通过状态 | //调用状态机 进入下一个通过状态 | ||||
stateMachineUtil.pass(project); | |||||
projectStateMachineUtil.pass(project); | |||||
projectService.updateById(project); | projectService.updateById(project); | ||||
//保存项目和实例的关系 | //保存项目和实例的关系 | ||||
@@ -1,7 +1,6 @@ | |||||
package com.hz.pm.api.projectdeclared.manage; | package com.hz.pm.api.projectdeclared.manage; | ||||
import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||
import cn.hutool.core.util.ArrayUtil; | |||||
import com.alibaba.excel.EasyExcel; | import com.alibaba.excel.EasyExcel; | ||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Assert; | import com.baomidou.mybatisplus.core.toolkit.Assert; | ||||
@@ -10,12 +9,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
import com.google.common.collect.Lists; | import com.google.common.collect.Lists; | ||||
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; | import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; | ||||
import com.hz.pm.api.common.helper.UserInfoHelper; | import com.hz.pm.api.common.helper.UserInfoHelper; | ||||
import com.hz.pm.api.common.model.constant.BizConst; | |||||
import com.hz.pm.api.common.statemachine.util.StateMachineUtil; | |||||
import com.hz.pm.api.common.statemachine.util.ProjectStateMachineUtil; | |||||
import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil; | import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil; | ||||
import com.hz.pm.api.common.util.ExcelDownUtil; | import com.hz.pm.api.common.util.ExcelDownUtil; | ||||
import com.hz.pm.api.common.util.ExcelExportStyle; | import com.hz.pm.api.common.util.ExcelExportStyle; | ||||
import com.hz.pm.api.common.util.StrUtils; | |||||
import com.hz.pm.api.projectdeclared.model.dto.DeclaredProjectExportDTO; | import com.hz.pm.api.projectdeclared.model.dto.DeclaredProjectExportDTO; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Contract; | import com.hz.pm.api.projectdeclared.model.entity.Contract; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | import com.hz.pm.api.projectdeclared.model.entity.Purchase; | ||||
@@ -52,7 +49,6 @@ import com.wflow.exception.BusinessException; | |||||
import com.wflow.workflow.bean.dto.OrgInfoDTO; | import com.wflow.workflow.bean.dto.OrgInfoDTO; | ||||
import com.wflow.workflow.bean.vo.ProcessStartParamsVo; | import com.wflow.workflow.bean.vo.ProcessStartParamsVo; | ||||
import com.wflow.workflow.service.ProcessInstanceService; | import com.wflow.workflow.service.ProcessInstanceService; | ||||
import com.wflow.workflow.service.ProcessModelService; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
@@ -86,7 +82,7 @@ public class FinalAcceptanceManage { | |||||
private final DefaultDeclaredProjectManage declaredProjectManage; | private final DefaultDeclaredProjectManage declaredProjectManage; | ||||
private final IContractService contractService; | private final IContractService contractService; | ||||
private final IProjectAnnualPaymentPlanService projectAnnualPaymentPlanService; | private final IProjectAnnualPaymentPlanService projectAnnualPaymentPlanService; | ||||
private final StateMachineUtil stateMachineUtil; | |||||
private final ProjectStateMachineUtil projectStateMachineUtil; | |||||
private final TenderStateMachineUtil tenderStateMachineUtil; | private final TenderStateMachineUtil tenderStateMachineUtil; | ||||
private final IProjectInstService projectInstService; | private final IProjectInstService projectInstService; | ||||
private final HandlerManage handlerManage; | private final HandlerManage handlerManage; | ||||
@@ -296,7 +292,7 @@ public class FinalAcceptanceManage { | |||||
List<PurchaseInst> currPurchaseInstList = purchaseInstService.list(purchaseInstQuery); | List<PurchaseInst> currPurchaseInstList = purchaseInstService.list(purchaseInstQuery); | ||||
Set<Long> finalInspectedBidIds = CollUtils.fieldSet(currPurchaseInstList, PurchaseInst::getBidId); | Set<Long> finalInspectedBidIds = CollUtils.fieldSet(currPurchaseInstList, PurchaseInst::getBidId); | ||||
if (finalInspectedBidIds.size() == purchases.size()) { | if (finalInspectedBidIds.size() == purchases.size()) { | ||||
stateMachineUtil.pass(project); | |||||
projectStateMachineUtil.pass(project); | |||||
projectService.updateById(project); | projectService.updateById(project); | ||||
} | } | ||||
} | } | ||||
@@ -4,7 +4,7 @@ import cn.hutool.core.bean.BeanUtil; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Assert; | import com.baomidou.mybatisplus.core.toolkit.Assert; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.hz.pm.api.common.statemachine.util.StateMachineUtil; | |||||
import com.hz.pm.api.common.statemachine.util.ProjectStateMachineUtil; | |||||
import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil; | import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil; | ||||
import com.hz.pm.api.projectdeclared.model.dto.OperationReq; | import com.hz.pm.api.projectdeclared.model.dto.OperationReq; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Operation; | import com.hz.pm.api.projectdeclared.model.entity.Operation; | ||||
@@ -47,7 +47,7 @@ public class OperationManage { | |||||
private final IPurchaseService purchaseService; | private final IPurchaseService purchaseService; | ||||
private final IProjectService projectService; | private final IProjectService projectService; | ||||
private final TenderStateMachineUtil tenderStateMachineUtil; | private final TenderStateMachineUtil tenderStateMachineUtil; | ||||
private final StateMachineUtil stateMachineUtil; | |||||
private final ProjectStateMachineUtil projectStateMachineUtil; | |||||
/** | /** | ||||
* 获取实施详情 | * 获取实施详情 | ||||
@@ -102,7 +102,7 @@ public class OperationManage { | |||||
long operationCount = operationService.countByBidIds(purchaseMap.keySet()); | long operationCount = operationService.countByBidIds(purchaseMap.keySet()); | ||||
if (operationCount == purchaseMap.size()) { | if (operationCount == purchaseMap.size()) { | ||||
// 修改项目状态 | // 修改项目状态 | ||||
stateMachineUtil.pass(project); | |||||
projectStateMachineUtil.pass(project); | |||||
projectService.updateById(project); | projectService.updateById(project); | ||||
} | } | ||||
// 修改标段状态 | // 修改标段状态 | ||||
@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
import com.google.common.collect.Lists; | import com.google.common.collect.Lists; | ||||
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; | import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; | ||||
import com.hz.pm.api.common.helper.UserInfoHelper; | import com.hz.pm.api.common.helper.UserInfoHelper; | ||||
import com.hz.pm.api.common.statemachine.util.StateMachineUtil; | |||||
import com.hz.pm.api.common.statemachine.util.ProjectStateMachineUtil; | |||||
import com.hz.pm.api.common.util.ExcelDownUtil; | import com.hz.pm.api.common.util.ExcelDownUtil; | ||||
import com.hz.pm.api.common.util.ExcelExportStyle; | import com.hz.pm.api.common.util.ExcelExportStyle; | ||||
import com.hz.pm.api.projectdeclared.model.dto.DefaultDeclaredDTO; | import com.hz.pm.api.projectdeclared.model.dto.DefaultDeclaredDTO; | ||||
@@ -73,7 +73,7 @@ public class PrequalificationDeclaredProjectManage { | |||||
private final ProjectLibManage projectLibManage; | private final ProjectLibManage projectLibManage; | ||||
private final StateMachineUtil stateMachineUtil; | |||||
private final ProjectStateMachineUtil projectStateMachineUtil; | |||||
private final IProjectStagingService projectStagingService; | private final IProjectStagingService projectStagingService; | ||||
@@ -119,7 +119,7 @@ public class PrequalificationDeclaredProjectManage { | |||||
if (StringUtils.isNotBlank(projectDto.getHigherLineSuperOrgReviewComments())) { | if (StringUtils.isNotBlank(projectDto.getHigherLineSuperOrgReviewComments())) { | ||||
projectInfo.setHigherLineSuperOrgReviewComments(projectDto.getHigherLineSuperOrgReviewComments()); | projectInfo.setHigherLineSuperOrgReviewComments(projectDto.getHigherLineSuperOrgReviewComments()); | ||||
} | } | ||||
stateMachineUtil.pass(projectInfo); | |||||
projectStateMachineUtil.pass(projectInfo); | |||||
String instanceId; | String instanceId; | ||||
//如果是省级部门 需要联审的(申报金额大于1000万 并且是市级项目) | //如果是省级部门 需要联审的(申报金额大于1000万 并且是市级项目) | ||||
if (ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS | if (ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS | ||||
@@ -106,7 +106,7 @@ public class PurchaseManage { | |||||
private final IContractService contractService; | private final IContractService contractService; | ||||
private final IPurchaseService purchaseService; | private final IPurchaseService purchaseService; | ||||
private final TenderStateMachineUtil tenderStateMachineUtil; | private final TenderStateMachineUtil tenderStateMachineUtil; | ||||
private final StateMachineUtil stateMachineUtil; | |||||
private final ProjectStateMachineUtil projectStateMachineUtil; | |||||
private final MhApiClient mhApiClient; | private final MhApiClient mhApiClient; | ||||
private final MhFileClient mhFileClient; | private final MhFileClient mhFileClient; | ||||
private final FileService fileService; | private final FileService fileService; | ||||
@@ -307,7 +307,7 @@ public class PurchaseManage { | |||||
}); | }); | ||||
if (purchaseService.saveOrUpdateBatch(purchaseEntities)) { | if (purchaseService.saveOrUpdateBatch(purchaseEntities)) { | ||||
stateMachineUtil.pass(project); | |||||
projectStateMachineUtil.pass(project); | |||||
project.setUpdateOn(LocalDateTime.now()); | project.setUpdateOn(LocalDateTime.now()); | ||||
// 获取总的成交时间及金额 | // 获取总的成交时间及金额 | ||||
@@ -369,7 +369,7 @@ public class PurchaseManage { | |||||
return purchase; | return purchase; | ||||
}).collect(Collectors.toList()); | }).collect(Collectors.toList()); | ||||
purchaseService.saveOrUpdateBatch(purchases); | purchaseService.saveOrUpdateBatch(purchases); | ||||
stateMachineUtil.pass(project); | |||||
projectStateMachineUtil.pass(project); | |||||
projectService.updateById(project); | projectService.updateById(project); | ||||
// 发布采购公告 | // 发布采购公告 | ||||
mhApiClient.publishPurchaseNotice(notices); | mhApiClient.publishPurchaseNotice(notices); | ||||
@@ -23,10 +23,10 @@ public class TestValidListReq extends PagePo { | |||||
private Integer status; | private Integer status; | ||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") | |||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") | |||||
private LocalDateTime createOnMin; | private LocalDateTime createOnMin; | ||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") | |||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") | |||||
private LocalDateTime createOnMax; | private LocalDateTime createOnMax; | ||||
private Boolean display; | private Boolean display; | ||||
@@ -0,0 +1,42 @@ | |||||
package com.hz.pm.api.projectlib.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import lombok.Data; | |||||
import java.io.Serializable; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* 标段状态变更记录 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2024-04-01 | |||||
*/ | |||||
@Data | |||||
@TableName("ND_PURCHASE_STATUS_CHANGE") | |||||
public class PurchaseStatusChange implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@TableId(value = "ID", type = IdType.AUTO) | |||||
private Long id; | |||||
private Long projectId; | |||||
private Integer beforeStatus; | |||||
private Integer afterStatus; | |||||
private String event; | |||||
private LocalDateTime createOn; | |||||
private String projectCode; | |||||
private Long bidId; | |||||
} |
@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.hz.pm.api.common.model.constant.BizConst; | import com.hz.pm.api.common.model.constant.BizConst; | ||||
import com.hz.pm.api.common.model.constant.CommonConst; | import com.hz.pm.api.common.model.constant.CommonConst; | ||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | ||||
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; | ||||
@@ -82,7 +82,7 @@ public class AnnualPlanHandle extends AbstractProcessBusinessHandle { | |||||
.last(BizConst.LIMIT_1); | .last(BizConst.LIMIT_1); | ||||
if (ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode().equals(status)) { | if (ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode().equals(status)) { | ||||
// 根据部门联审通过的时间获取 | // 根据部门联审通过的时间获取 | ||||
pscQuery.eq(ProjectStatusChange::getEvent, ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_PASS); | |||||
pscQuery.eq(ProjectStatusChange::getEvent, ProjectStateChangeEvent.DEPARTMENT_UNITED_REVIEW_PASS); | |||||
ProjectStatusChange projectStatusChange = projectStatusChangeService.getOne(pscQuery); | ProjectStatusChange projectStatusChange = projectStatusChangeService.getOne(pscQuery); | ||||
if (Objects.nonNull(projectStatusChange)) { | if (Objects.nonNull(projectStatusChange)) { | ||||
processDetailVO.setFinishTime(projectStatusChange.getCreateOn()); | processDetailVO.setFinishTime(projectStatusChange.getCreateOn()); | ||||
@@ -90,7 +90,7 @@ public class AnnualPlanHandle extends AbstractProcessBusinessHandle { | |||||
} | } | ||||
} else if (ProjectStatusEnum.BE_SUSPENDED.getCode().equals(status)) { | } else if (ProjectStatusEnum.BE_SUSPENDED.getCode().equals(status)) { | ||||
// 根据年度计划暂缓的时间获取 | // 根据年度计划暂缓的时间获取 | ||||
pscQuery.eq(ProjectStatusChange::getEvent, ProjectStatusChangeEvent.ANNUAL_PLAN_SUSPEND); | |||||
pscQuery.eq(ProjectStatusChange::getEvent, ProjectStateChangeEvent.ANNUAL_PLAN_SUSPEND); | |||||
ProjectStatusChange projectStatusChange = projectStatusChangeService.getOne(pscQuery); | ProjectStatusChange projectStatusChange = projectStatusChangeService.getOne(pscQuery); | ||||
if (Objects.nonNull(projectStatusChange)) { | if (Objects.nonNull(projectStatusChange)) { | ||||
processDetailVO.setFinishTime(projectStatusChange.getCreateOn()); | processDetailVO.setFinishTime(projectStatusChange.getCreateOn()); | ||||
@@ -98,7 +98,7 @@ public class AnnualPlanHandle extends AbstractProcessBusinessHandle { | |||||
} | } | ||||
} else { | } else { | ||||
// 根据开启方案申报的时间获取 | // 根据开启方案申报的时间获取 | ||||
pscQuery.eq(ProjectStatusChange::getEvent, ProjectStatusChangeEvent.ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE); | |||||
pscQuery.eq(ProjectStatusChange::getEvent, ProjectStateChangeEvent.ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE); | |||||
ProjectStatusChange projectStatusChange = projectStatusChangeService.getOne(pscQuery); | ProjectStatusChange projectStatusChange = projectStatusChangeService.getOne(pscQuery); | ||||
if (Objects.nonNull(projectStatusChange)) { | if (Objects.nonNull(projectStatusChange)) { | ||||
processDetailVO.setFinishTime(projectStatusChange.getCreateOn()); | processDetailVO.setFinishTime(projectStatusChange.getCreateOn()); | ||||
@@ -13,7 +13,7 @@ import org.springframework.core.annotation.Order; | |||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.hz.pm.api.common.model.constant.CommonConst; | import com.hz.pm.api.common.model.constant.CommonConst; | ||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | ||||
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; | ||||
@@ -56,7 +56,7 @@ public class ArchivedHandle extends AbstractProcessBusinessHandle { | |||||
// 根据项目终验获取归档时间 | // 根据项目终验获取归档时间 | ||||
ProjectStatusChange projectStatusChange = projectStatusChangeService.getOne(Wrappers.lambdaQuery(ProjectStatusChange.class) | ProjectStatusChange projectStatusChange = projectStatusChangeService.getOne(Wrappers.lambdaQuery(ProjectStatusChange.class) | ||||
.in(ProjectStatusChange::getProjectId, allVersionProjectIds) | .in(ProjectStatusChange::getProjectId, allVersionProjectIds) | ||||
.eq(ProjectStatusChange::getEvent, ProjectStatusChangeEvent.FINAL_ACCEPTANCE_PASS.name()) | |||||
.eq(ProjectStatusChange::getEvent, ProjectStateChangeEvent.FINAL_ACCEPTANCE_PASS.name()) | |||||
.orderByDesc(ProjectStatusChange::getCreateOn) | .orderByDesc(ProjectStatusChange::getCreateOn) | ||||
.last(BizConst.LIMIT_1)); | .last(BizConst.LIMIT_1)); | ||||
if(Objects.nonNull(projectStatusChange)){ | if(Objects.nonNull(projectStatusChange)){ | ||||
@@ -1,18 +1,12 @@ | |||||
package com.hz.pm.api.projectlib.handle; | package com.hz.pm.api.projectlib.handle; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.google.common.collect.Lists; | import com.google.common.collect.Lists; | ||||
import com.hz.pm.api.common.model.constant.BizConst; | |||||
import com.hz.pm.api.common.model.constant.ProjectDeclareConst; | |||||
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; | import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; | ||||
import com.hz.pm.api.common.statemachine.util.StateMachineUtil; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | import com.hz.pm.api.projectlib.model.entity.Project; | ||||
import com.hz.pm.api.projectlib.service.IProjectService; | |||||
import com.hz.pm.api.sys.manage.ProcessModelManage; | import com.hz.pm.api.sys.manage.ProcessModelManage; | ||||
import com.wflow.bean.entity.WflowModels; | import com.wflow.bean.entity.WflowModels; | ||||
import com.wflow.workflow.bean.vo.ProcessDetailVO; | import com.wflow.workflow.bean.vo.ProcessDetailVO; | ||||
import com.wflow.workflow.enums.StepStatusEnum; | import com.wflow.workflow.enums.StepStatusEnum; | ||||
import com.wflow.workflow.service.ProcessModelService; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
@@ -1,7 +1,7 @@ | |||||
package com.hz.pm.api.projectlib.handle; | package com.hz.pm.api.projectlib.handle; | ||||
import com.hz.pm.api.common.model.constant.CommonConst; | import com.hz.pm.api.common.model.constant.CommonConst; | ||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
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.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.model.enumeration.ProjectStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | ||||
@@ -58,9 +58,9 @@ public class ProjectApprovalHandle extends AbstractProcessBusinessHandle { | |||||
|| ProjectStatusEnum.DECLARED_APPROVED_TO_BE_RECORD.eq(status) | || ProjectStatusEnum.DECLARED_APPROVED_TO_BE_RECORD.eq(status) | ||||
|| ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING.eq(status)) { | || ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING.eq(status)) { | ||||
// 根据建设方案评审通过的时间获取 | // 根据建设方案评审通过的时间获取 | ||||
final List<ProjectStatusChangeEvent> events = Arrays.asList(ProjectStatusChangeEvent.PLAN_REVIEW_PASS, | |||||
ProjectStatusChangeEvent.DECLARED_RECORD_SUBMIT, | |||||
ProjectStatusChangeEvent.DECLARED_RECORD_RESUBMIT); | |||||
final List<ProjectStateChangeEvent> events = Arrays.asList(ProjectStateChangeEvent.PLAN_REVIEW_PASS, | |||||
ProjectStateChangeEvent.DECLARED_RECORD_SUBMIT, | |||||
ProjectStateChangeEvent.DECLARED_RECORD_RESUBMIT); | |||||
ProjectStatusChange projectStatusChange = projectStatusChangeService.getLastOne(allProjectIds, events); | ProjectStatusChange projectStatusChange = projectStatusChangeService.getLastOne(allProjectIds, events); | ||||
if (projectStatusChange != null) { | if (projectStatusChange != null) { | ||||
processDetail.setFinishTime(projectStatusChange.getCreateOn()); | processDetail.setFinishTime(projectStatusChange.getCreateOn()); | ||||
@@ -68,9 +68,9 @@ public class ProjectApprovalHandle extends AbstractProcessBusinessHandle { | |||||
processDetail.setStepStatus(StepStatusEnum.ON_GOING); | processDetail.setStepStatus(StepStatusEnum.ON_GOING); | ||||
} else { | } else { | ||||
// 取 状态机 改变状态时间 | // 取 状态机 改变状态时间 | ||||
final List<ProjectStatusChangeEvent> events = Arrays.asList(ProjectStatusChangeEvent.PLAN_REVIEW_PASS, | |||||
ProjectStatusChangeEvent.DECLARED_RECORD_FAILED, | |||||
ProjectStatusChangeEvent.DECLARED_RECORD_PASS); | |||||
final List<ProjectStateChangeEvent> events = Arrays.asList(ProjectStateChangeEvent.PLAN_REVIEW_PASS, | |||||
ProjectStateChangeEvent.DECLARED_RECORD_FAILED, | |||||
ProjectStateChangeEvent.DECLARED_RECORD_PASS); | |||||
ProjectStatusChange projectStatusChange = projectStatusChangeService.getLastOne(allProjectIds, events); | ProjectStatusChange projectStatusChange = projectStatusChangeService.getLastOne(allProjectIds, events); | ||||
if (Objects.nonNull(projectStatusChange)) { | if (Objects.nonNull(projectStatusChange)) { | ||||
processDetail.setFinishTime(projectStatusChange.getCreateOn()); | processDetail.setFinishTime(projectStatusChange.getCreateOn()); | ||||
@@ -15,7 +15,7 @@ import org.springframework.stereotype.Component; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.ningdatech.basic.util.CollUtils; | import com.ningdatech.basic.util.CollUtils; | ||||
import com.hz.pm.api.common.model.constant.CommonConst; | import com.hz.pm.api.common.model.constant.CommonConst; | ||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | ||||
import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange; | import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange; | ||||
import com.hz.pm.api.projectlib.model.entity.Project; | import com.hz.pm.api.projectlib.model.entity.Project; | ||||
@@ -76,7 +76,7 @@ public class ProjectPreliminaryInspectionHandle extends AbstractProcessBusinessH | |||||
// 根据初验备案的时间获取 | // 根据初验备案的时间获取 | ||||
ProjectStatusChange projectStatusChange = projectStatusChangeService.getOne(Wrappers.lambdaQuery(ProjectStatusChange.class) | ProjectStatusChange projectStatusChange = projectStatusChangeService.getOne(Wrappers.lambdaQuery(ProjectStatusChange.class) | ||||
.in(ProjectStatusChange::getProjectId, allVersionProjectIds) | .in(ProjectStatusChange::getProjectId, allVersionProjectIds) | ||||
.eq(ProjectStatusChange::getEvent, ProjectStatusChangeEvent.PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD.name()) | |||||
.eq(ProjectStatusChange::getEvent, ProjectStateChangeEvent.PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD.name()) | |||||
.orderByDesc(ProjectStatusChange::getCreateOn) | .orderByDesc(ProjectStatusChange::getCreateOn) | ||||
.last(BizConst.LIMIT_1)); | .last(BizConst.LIMIT_1)); | ||||
if(Objects.nonNull(projectStatusChange)){ | if(Objects.nonNull(projectStatusChange)){ | ||||
@@ -3,7 +3,7 @@ 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.model.constant.CommonConst; | import com.hz.pm.api.common.model.constant.CommonConst; | ||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | ||||
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; | ||||
@@ -74,7 +74,7 @@ public class TenderPurchaseHandle extends AbstractProcessBusinessHandle { | |||||
// 根据采购备案的时间获取 | // 根据采购备案的时间获取 | ||||
ProjectStatusChange projectStatusChange = projectStatusChangeService.getOne(Wrappers.lambdaQuery(ProjectStatusChange.class) | ProjectStatusChange projectStatusChange = projectStatusChangeService.getOne(Wrappers.lambdaQuery(ProjectStatusChange.class) | ||||
.in(ProjectStatusChange::getProjectId, allVersionProjectIds) | .in(ProjectStatusChange::getProjectId, allVersionProjectIds) | ||||
.eq(ProjectStatusChange::getEvent, ProjectStatusChangeEvent.SUBMIT_PURCHASE_NOTICE.name()) | |||||
.eq(ProjectStatusChange::getEvent, ProjectStateChangeEvent.SUBMIT_PURCHASE_NOTICE.name()) | |||||
.orderByDesc(ProjectStatusChange::getCreateOn) | .orderByDesc(ProjectStatusChange::getCreateOn) | ||||
.last(BizConst.LIMIT_1)); | .last(BizConst.LIMIT_1)); | ||||
if (projectStatusChange != null) { | if (projectStatusChange != null) { | ||||
@@ -17,7 +17,7 @@ import com.hz.pm.api.common.model.constant.CommonConst; | |||||
import com.hz.pm.api.common.enumeration.CommonEnum; | import com.hz.pm.api.common.enumeration.CommonEnum; | ||||
import com.hz.pm.api.common.helper.UserInfoHelper; | import com.hz.pm.api.common.helper.UserInfoHelper; | ||||
import com.hz.pm.api.common.model.entity.ExcelExportWriter; | import com.hz.pm.api.common.model.entity.ExcelExportWriter; | ||||
import com.hz.pm.api.common.statemachine.util.StateMachineUtil; | |||||
import com.hz.pm.api.common.statemachine.util.ProjectStateMachineUtil; | |||||
import com.hz.pm.api.common.util.BizUtils; | import com.hz.pm.api.common.util.BizUtils; | ||||
import com.hz.pm.api.common.util.ExcelDownUtil; | import com.hz.pm.api.common.util.ExcelDownUtil; | ||||
import com.hz.pm.api.datascope.model.DataScopeDTO; | import com.hz.pm.api.datascope.model.DataScopeDTO; | ||||
@@ -82,7 +82,7 @@ public class AnnualPlanLibManage { | |||||
private final IProjectService projectService; | private final IProjectService projectService; | ||||
private final MhUnitCache mhUnitCache; | private final MhUnitCache mhUnitCache; | ||||
private final IProjectApplicationService applicationService; | private final IProjectApplicationService applicationService; | ||||
private final StateMachineUtil stateMachine; | |||||
private final ProjectStateMachineUtil stateMachine; | |||||
private final UserInfoHelper userInfoHelper; | private final UserInfoHelper userInfoHelper; | ||||
private final IProjectRenewalFundDeclarationService projectRenewalFundDeclarationService; | private final IProjectRenewalFundDeclarationService projectRenewalFundDeclarationService; | ||||
@@ -15,7 +15,7 @@ import com.hz.pm.api.common.enumeration.CommonEnum; | |||||
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; | import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; | ||||
import com.hz.pm.api.common.helper.UserInfoHelper; | import com.hz.pm.api.common.helper.UserInfoHelper; | ||||
import com.hz.pm.api.common.model.constant.TypeReferenceConst; | import com.hz.pm.api.common.model.constant.TypeReferenceConst; | ||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent; | |||||
import com.hz.pm.api.common.util.BizUtils; | import com.hz.pm.api.common.util.BizUtils; | ||||
import com.hz.pm.api.datascope.model.DataScopeDTO; | import com.hz.pm.api.datascope.model.DataScopeDTO; | ||||
import com.hz.pm.api.datascope.utils.DataScopeUtil; | import com.hz.pm.api.datascope.utils.DataScopeUtil; | ||||
@@ -334,7 +334,7 @@ public class DeclaredRecordManage { | |||||
ProjectProcessStageEnum.PROJECT_RECORD_APPROVAL_PROCESS); | ProjectProcessStageEnum.PROJECT_RECORD_APPROVAL_PROCESS); | ||||
// 保存状态变更 | // 保存状态变更 | ||||
saveProjectStatusChangeLog(ProjectStatusEnum.DECLARED_APPROVED_TO_BE_RECORD, | saveProjectStatusChangeLog(ProjectStatusEnum.DECLARED_APPROVED_TO_BE_RECORD, | ||||
newProj, ProjectStatusChangeEvent.DECLARED_RECORD_SUBMIT); | |||||
newProj, ProjectStateChangeEvent.DECLARED_RECORD_SUBMIT); | |||||
if (Objects.nonNull(projectInfo.getDraftId())) { | if (Objects.nonNull(projectInfo.getDraftId())) { | ||||
//如果是草稿箱提交 删除对应的草稿箱 | //如果是草稿箱提交 删除对应的草稿箱 | ||||
projectDraftService.removeById(projectInfo.getDraftId()); | projectDraftService.removeById(projectInfo.getDraftId()); | ||||
@@ -417,7 +417,7 @@ public class DeclaredRecordManage { | |||||
instType); | instType); | ||||
// 保存状态变更 | // 保存状态变更 | ||||
saveProjectStatusChangeLog(ProjectStatusEnum.DECLARED_APPROVED_RECORD_FAILED, | saveProjectStatusChangeLog(ProjectStatusEnum.DECLARED_APPROVED_RECORD_FAILED, | ||||
newProj, ProjectStatusChangeEvent.DECLARED_RECORD_RESUBMIT); | |||||
newProj, ProjectStateChangeEvent.DECLARED_RECORD_RESUBMIT); | |||||
//发送给第一个审批人消息 | //发送给第一个审批人消息 | ||||
noticeManage.sendFirstUser(newProj, model.getFormName(), instId, | noticeManage.sendFirstUser(newProj, model.getFormName(), instId, | ||||
WorkNoticeConst.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); | WorkNoticeConst.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); | ||||
@@ -425,7 +425,7 @@ public class DeclaredRecordManage { | |||||
return instId; | return instId; | ||||
} | } | ||||
private void saveProjectStatusChangeLog(ProjectStatusEnum beforeStatus, Project project, ProjectStatusChangeEvent event) { | |||||
private void saveProjectStatusChangeLog(ProjectStatusEnum beforeStatus, Project project, ProjectStateChangeEvent event) { | |||||
ProjectStatusChange change = new ProjectStatusChange(); | ProjectStatusChange change = new ProjectStatusChange(); | ||||
change.setAfterStatus(project.getStatus()); | change.setAfterStatus(project.getStatus()); | ||||
change.setProjectId(project.getId()); | change.setProjectId(project.getId()); | ||||
@@ -20,7 +20,7 @@ import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; | |||||
import com.hz.pm.api.common.helper.UserInfoHelper; | import com.hz.pm.api.common.helper.UserInfoHelper; | ||||
import com.hz.pm.api.common.model.constant.CommonConst; | import com.hz.pm.api.common.model.constant.CommonConst; | ||||
import com.hz.pm.api.common.model.entity.ExcelExportWriter; | import com.hz.pm.api.common.model.entity.ExcelExportWriter; | ||||
import com.hz.pm.api.common.statemachine.util.StateMachineUtil; | |||||
import com.hz.pm.api.common.statemachine.util.ProjectStateMachineUtil; | |||||
import com.hz.pm.api.common.util.BizUtils; | import com.hz.pm.api.common.util.BizUtils; | ||||
import com.hz.pm.api.common.util.ExcelDownUtil; | import com.hz.pm.api.common.util.ExcelDownUtil; | ||||
import com.hz.pm.api.common.util.StrUtils; | import com.hz.pm.api.common.util.StrUtils; | ||||
@@ -127,7 +127,7 @@ public class ProjectLibManage { | |||||
private final IProjectApplicationService projectApplicationService; | private final IProjectApplicationService projectApplicationService; | ||||
private final ProjectCodeGenUtil projectCodeGenUtil; | private final ProjectCodeGenUtil projectCodeGenUtil; | ||||
private final IProjectInstService projectInstService; | private final IProjectInstService projectInstService; | ||||
private final StateMachineUtil stateMachineUtil; | |||||
private final ProjectStateMachineUtil projectStateMachineUtil; | |||||
private final INdProjectDelayApplyService projectDelayApplyService; | private final INdProjectDelayApplyService projectDelayApplyService; | ||||
private final INdProjectApplyBorrowService projectApplyBorrowService; | private final INdProjectApplyBorrowService projectApplyBorrowService; | ||||
private final IPurchaseService purchaseService; | private final IPurchaseService purchaseService; | ||||
@@ -1040,7 +1040,7 @@ public class ProjectLibManage { | |||||
project.setCreateOn(LocalDateTime.now()); | project.setCreateOn(LocalDateTime.now()); | ||||
project.setUpdateOn(LocalDateTime.now()); | project.setUpdateOn(LocalDateTime.now()); | ||||
project.setIsBackReject(Boolean.FALSE); | project.setIsBackReject(Boolean.FALSE); | ||||
stateMachineUtil.pass(project); | |||||
projectStateMachineUtil.pass(project); | |||||
projectService.save(project); | projectService.save(project); | ||||
oldProject.setIsBackReject(Boolean.TRUE); | oldProject.setIsBackReject(Boolean.TRUE); | ||||
@@ -1180,7 +1180,7 @@ public class ProjectLibManage { | |||||
project.setIsBackReject(isBackReject); | project.setIsBackReject(isBackReject); | ||||
//终验材料 | //终验材料 | ||||
project.setFinalAcceptanceMaterials(dto.getFinalAcceptanceMaterials()); | project.setFinalAcceptanceMaterials(dto.getFinalAcceptanceMaterials()); | ||||
stateMachineUtil.pass(project); | |||||
projectStateMachineUtil.pass(project); | |||||
oldProject.setIsBackReject(isBackReject); | oldProject.setIsBackReject(isBackReject); | ||||
projectService.updateById(oldProject); | projectService.updateById(oldProject); | ||||
@@ -1215,7 +1215,7 @@ public class ProjectLibManage { | |||||
project.setUpdateOn(LocalDateTime.now()); | project.setUpdateOn(LocalDateTime.now()); | ||||
// 标识保存的项目信息是否为建设方案申报项目 | // 标识保存的项目信息是否为建设方案申报项目 | ||||
project.setIsConstruct(Boolean.FALSE); | project.setIsConstruct(Boolean.FALSE); | ||||
stateMachineUtil.pass(project); | |||||
projectStateMachineUtil.pass(project); | |||||
oldProject.setIsBackReject(Boolean.TRUE); | oldProject.setIsBackReject(Boolean.TRUE); | ||||
projectService.updateById(oldProject); | projectService.updateById(oldProject); | ||||
@@ -0,0 +1,16 @@ | |||||
package com.hz.pm.api.projectlib.mapper; | |||||
import com.hz.pm.api.projectlib.entity.PurchaseStatusChange; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
/** | |||||
* <p> | |||||
* Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2024-04-01 | |||||
*/ | |||||
public interface PurchaseStatusChangeMapper extends BaseMapper<PurchaseStatusChange> { | |||||
} |
@@ -0,0 +1,5 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||||
<mapper namespace="com.hz.pm.api.projectlib.mapper.PurchaseStatusChangeMapper"> | |||||
</mapper> |
@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.baomidou.mybatisplus.extension.service.IService; | import com.baomidou.mybatisplus.extension.service.IService; | ||||
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.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange; | import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange; | ||||
import java.util.Collection; | import java.util.Collection; | ||||
@@ -20,7 +20,7 @@ import java.util.Collection; | |||||
*/ | */ | ||||
public interface IProjectStatusChangeService extends IService<ProjectStatusChange> { | public interface IProjectStatusChangeService extends IService<ProjectStatusChange> { | ||||
default ProjectStatusChange getLastOne(ProjectStatusChangeEvent event, Long projectId) { | |||||
default ProjectStatusChange getLastOne(ProjectStateChangeEvent event, Long projectId) { | |||||
Wrapper<ProjectStatusChange> query = Wrappers.lambdaQuery(ProjectStatusChange.class) | Wrapper<ProjectStatusChange> query = Wrappers.lambdaQuery(ProjectStatusChange.class) | ||||
.eq(ProjectStatusChange::getEvent, event) | .eq(ProjectStatusChange::getEvent, event) | ||||
.eq(ProjectStatusChange::getProjectId, projectId) | .eq(ProjectStatusChange::getProjectId, projectId) | ||||
@@ -29,7 +29,7 @@ public interface IProjectStatusChangeService extends IService<ProjectStatusChang | |||||
return getOne(query); | return getOne(query); | ||||
} | } | ||||
default ProjectStatusChange getLastOne(ProjectStatusChangeEvent event, Collection<Long> projectIds) { | |||||
default ProjectStatusChange getLastOne(ProjectStateChangeEvent event, Collection<Long> projectIds) { | |||||
Wrapper<ProjectStatusChange> query = Wrappers.lambdaQuery(ProjectStatusChange.class) | Wrapper<ProjectStatusChange> query = Wrappers.lambdaQuery(ProjectStatusChange.class) | ||||
.in(ProjectStatusChange::getProjectId, projectIds) | .in(ProjectStatusChange::getProjectId, projectIds) | ||||
.eq(ProjectStatusChange::getEvent, event) | .eq(ProjectStatusChange::getEvent, event) | ||||
@@ -38,7 +38,7 @@ public interface IProjectStatusChangeService extends IService<ProjectStatusChang | |||||
return getOne(query); | return getOne(query); | ||||
} | } | ||||
default ProjectStatusChange getLastOne(Collection<Long> projectIds, Collection<ProjectStatusChangeEvent> events) { | |||||
default ProjectStatusChange getLastOne(Collection<Long> projectIds, Collection<ProjectStateChangeEvent> events) { | |||||
LambdaQueryWrapper<ProjectStatusChange> pscQuery = Wrappers.lambdaQuery(ProjectStatusChange.class) | LambdaQueryWrapper<ProjectStatusChange> pscQuery = Wrappers.lambdaQuery(ProjectStatusChange.class) | ||||
.in(ProjectStatusChange::getProjectId, projectIds) | .in(ProjectStatusChange::getProjectId, projectIds) | ||||
.in(ProjectStatusChange::getEvent, events) | .in(ProjectStatusChange::getEvent, events) | ||||
@@ -47,7 +47,7 @@ public interface IProjectStatusChangeService extends IService<ProjectStatusChang | |||||
return getOne(pscQuery); | return getOne(pscQuery); | ||||
} | } | ||||
default ProjectStatusChange getLastOne(String projectCode, Collection<ProjectStatusChangeEvent> events) { | |||||
default ProjectStatusChange getLastOne(String projectCode, Collection<ProjectStateChangeEvent> events) { | |||||
LambdaQueryWrapper<ProjectStatusChange> pscQuery = Wrappers.lambdaQuery(ProjectStatusChange.class) | LambdaQueryWrapper<ProjectStatusChange> pscQuery = Wrappers.lambdaQuery(ProjectStatusChange.class) | ||||
.eq(ProjectStatusChange::getProjectCode, projectCode) | .eq(ProjectStatusChange::getProjectCode, projectCode) | ||||
.in(ProjectStatusChange::getEvent, events) | .in(ProjectStatusChange::getEvent, events) | ||||
@@ -0,0 +1,16 @@ | |||||
package com.hz.pm.api.projectlib.service; | |||||
import com.hz.pm.api.projectlib.entity.PurchaseStatusChange; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
/** | |||||
* <p> | |||||
* 服务类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2024-04-01 | |||||
*/ | |||||
public interface IPurchaseStatusChangeService extends IService<PurchaseStatusChange> { | |||||
} |
@@ -0,0 +1,20 @@ | |||||
package com.hz.pm.api.projectlib.service.impl; | |||||
import com.hz.pm.api.projectlib.entity.PurchaseStatusChange; | |||||
import com.hz.pm.api.projectlib.mapper.PurchaseStatusChangeMapper; | |||||
import com.hz.pm.api.projectlib.service.IPurchaseStatusChangeService; | |||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||||
import org.springframework.stereotype.Service; | |||||
/** | |||||
* <p> | |||||
* 服务实现类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2024-04-01 | |||||
*/ | |||||
@Service | |||||
public class PurchaseStatusChangeServiceImpl extends ServiceImpl<PurchaseStatusChangeMapper, PurchaseStatusChange> implements IPurchaseStatusChangeService { | |||||
} |
@@ -3,7 +3,7 @@ package com.hz.pm.api.scheduler.listener; | |||||
import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||
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.util.StateMachineUtil; | |||||
import com.hz.pm.api.common.statemachine.util.ProjectStateMachineUtil; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | import com.hz.pm.api.projectlib.model.entity.Project; | ||||
import com.hz.pm.api.projectlib.model.entity.ProjectInst; | import com.hz.pm.api.projectlib.model.entity.ProjectInst; | ||||
import com.hz.pm.api.projectlib.service.IProjectInstService; | import com.hz.pm.api.projectlib.service.IProjectInstService; | ||||
@@ -38,7 +38,7 @@ public class ProcessStartListener { | |||||
private final HistoryService historyService; | private final HistoryService historyService; | ||||
private final IProjectInstService projectInstService; | private final IProjectInstService projectInstService; | ||||
private final IProjectService projectService; | private final IProjectService projectService; | ||||
private final StateMachineUtil stateMachineUtil; | |||||
private final ProjectStateMachineUtil projectStateMachineUtil; | |||||
@Async | @Async | ||||
@EventListener | @EventListener | ||||
@@ -80,7 +80,7 @@ public class ProcessStartListener { | |||||
//如果真的没有实时任务和历史任务 那么说明 该项目没有人审批 需要去调用状态机 | //如果真的没有实时任务和历史任务 那么说明 该项目没有人审批 需要去调用状态机 | ||||
Long projectId = projectInst.getProjectId(); | Long projectId = projectInst.getProjectId(); | ||||
Project project = projectService.getNewProject(projectId); | Project project = projectService.getNewProject(projectId); | ||||
stateMachineUtil.pass(project); | |||||
projectStateMachineUtil.pass(project); | |||||
project.setUpdateOn(LocalDateTime.now()); | project.setUpdateOn(LocalDateTime.now()); | ||||
projectService.updateById(project); | projectService.updateById(project); | ||||
} | } | ||||
@@ -7,7 +7,7 @@ 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.model.constant.ProjectDeclareConst; | import com.hz.pm.api.common.model.constant.ProjectDeclareConst; | ||||
import com.hz.pm.api.common.model.constant.RegionConst; | import com.hz.pm.api.common.model.constant.RegionConst; | ||||
import com.hz.pm.api.common.statemachine.util.StateMachineUtil; | |||||
import com.hz.pm.api.common.statemachine.util.ProjectStateMachineUtil; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | ||||
import com.hz.pm.api.projectlib.model.entity.Project; | import com.hz.pm.api.projectlib.model.entity.Project; | ||||
import com.hz.pm.api.projectlib.service.IProjectService; | import com.hz.pm.api.projectlib.service.IProjectService; | ||||
@@ -42,7 +42,7 @@ public class CheckProvincialReviewResultTask { | |||||
private final IJoinReviewProvincialBureauService reviewProvincialBureauService; | private final IJoinReviewProvincialBureauService reviewProvincialBureauService; | ||||
private final IProjectService projectService; | private final IProjectService projectService; | ||||
private final StateMachineUtil stateMachineUtil; | |||||
private final ProjectStateMachineUtil projectStateMachineUtil; | |||||
@Value("${hostname:}") | @Value("${hostname:}") | ||||
private String HOST_NAME; | private String HOST_NAME; | ||||
@@ -96,7 +96,7 @@ public class CheckProvincialReviewResultTask { | |||||
//在省级联审 才调状态机 否则 只改变 联审结果 | //在省级联审 才调状态机 否则 只改变 联审结果 | ||||
if(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS.getCode().equals( | if(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS.getCode().equals( | ||||
project.getStatus())){ | project.getStatus())){ | ||||
stateMachineUtil.pass(project); | |||||
projectStateMachineUtil.pass(project); | |||||
} | } | ||||
log.info("已经审批完成 进入下一状态"); | log.info("已经审批完成 进入下一状态"); | ||||
} | } | ||||
@@ -87,7 +87,7 @@ public class HandlerManage { | |||||
private final TaskService taskService; | private final TaskService taskService; | ||||
private final HistoryService historyService; | private final HistoryService historyService; | ||||
private final IProjectService projectService; | private final IProjectService projectService; | ||||
private final StateMachineUtil stateMachineUtil; | |||||
private final ProjectStateMachineUtil projectStateMachineUtil; | |||||
private final ProcessInstanceService processInstanceService; | private final ProcessInstanceService processInstanceService; | ||||
private final IProjectApplicationService projectApplicationService; | private final IProjectApplicationService projectApplicationService; | ||||
private final IProjectStagingService projectStagingService; | private final IProjectStagingService projectStagingService; | ||||
@@ -303,7 +303,7 @@ public class HandlerManage { | |||||
return; | return; | ||||
} | } | ||||
if (wflowHelper.allInstancesFinished(instCodes)) { | if (wflowHelper.allInstancesFinished(instCodes)) { | ||||
stateMachineUtil.pass(project); | |||||
projectStateMachineUtil.pass(project); | |||||
projectService.updateById(project); | projectService.updateById(project); | ||||
} | } | ||||
} | } | ||||
@@ -521,7 +521,7 @@ public class HandlerManage { | |||||
*/ | */ | ||||
public void updatePassProjectStatus(Long userId, Project project) { | public void updatePassProjectStatus(Long userId, Project project) { | ||||
try { | try { | ||||
stateMachineUtil.pass(project); | |||||
projectStateMachineUtil.pass(project); | |||||
project.setUpdateOn(LocalDateTime.now()); | project.setUpdateOn(LocalDateTime.now()); | ||||
project.setUpdateBy(userId); | project.setUpdateBy(userId); | ||||
projectService.updateById(project); | projectService.updateById(project); | ||||
@@ -541,7 +541,7 @@ public class HandlerManage { | |||||
* @since 2023/02/08 | * @since 2023/02/08 | ||||
*/ | */ | ||||
private void updateRejectProjectStatus(Long userId, Project project, Integer instType) { | private void updateRejectProjectStatus(Long userId, Project project, Integer instType) { | ||||
stateMachineUtil.reject(project); | |||||
projectStateMachineUtil.reject(project); | |||||
project.setUpdateOn(LocalDateTime.now()); | project.setUpdateOn(LocalDateTime.now()); | ||||
project.setUpdateBy(userId); | project.setUpdateBy(userId); | ||||
projectService.updateById(project); | projectService.updateById(project); | ||||
@@ -579,7 +579,7 @@ public class HandlerManage { | |||||
//删除项目的实例信息 | //删除项目的实例信息 | ||||
historyService.deleteHistoricProcessInstance(project.getInstCode()); | historyService.deleteHistoricProcessInstance(project.getInstCode()); | ||||
stateMachineUtil.withDraw(project); | |||||
projectStateMachineUtil.withDraw(project); | |||||
project.setUpdateOn(LocalDateTime.now()); | project.setUpdateOn(LocalDateTime.now()); | ||||
project.setUpdateBy(userId); | project.setUpdateBy(userId); | ||||
project.setInstCode(TodoCenterConst.Declared.NULL_INST_CODE); | project.setInstCode(TodoCenterConst.Declared.NULL_INST_CODE); | ||||
@@ -3,7 +3,7 @@ package com.hz.pm.api.sys.project; | |||||
import cn.hutool.core.date.StopWatch; | import cn.hutool.core.date.StopWatch; | ||||
import com.alibaba.fastjson.JSON; | import com.alibaba.fastjson.JSON; | ||||
import com.hz.pm.api.AppTests; | import com.hz.pm.api.AppTests; | ||||
import com.hz.pm.api.common.statemachine.util.StateMachineUtil; | |||||
import com.hz.pm.api.common.statemachine.util.ProjectStateMachineUtil; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | ||||
import com.hz.pm.api.projectlib.model.entity.Project; | import com.hz.pm.api.projectlib.model.entity.Project; | ||||
import com.hz.pm.api.projectlib.service.IProjectService; | import com.hz.pm.api.projectlib.service.IProjectService; | ||||
@@ -20,7 +20,7 @@ import javax.annotation.Resource; | |||||
public class ProjectStateTest extends AppTests { | public class ProjectStateTest extends AppTests { | ||||
@Resource | @Resource | ||||
private StateMachineUtil stateMachineUtil; | |||||
private ProjectStateMachineUtil projectStateMachineUtil; | |||||
@Resource | @Resource | ||||
private IProjectService projectService; | private IProjectService projectService; | ||||
@@ -37,7 +37,7 @@ public class ProjectStateTest extends AppTests { | |||||
project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); | project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); | ||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | ||||
//调用状态机 进入下一个通过状态 | //调用状态机 进入下一个通过状态 | ||||
stateMachineUtil.pass(project); | |||||
projectStateMachineUtil.pass(project); | |||||
stopWatch.stop(); | stopWatch.stop(); | ||||
System.out.println("调用状态机结束 :" + stopWatch.getTotalTimeSeconds()); | System.out.println("调用状态机结束 :" + stopWatch.getTotalTimeSeconds()); | ||||