@@ -67,57 +67,13 @@ public class TenderStateChangeAction { | |||||
* | * | ||||
* @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_FINALLY_INSPECTED_APPLY") | |||||
public void SUBMIT_FIRST_INSPECTED_FILES(Message<ProjectStateChangeEvent> 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()); | |||||
} | |||||
/** | |||||
* 信创符合性申请 | |||||
* | |||||
* @param message \ | |||||
*/ | |||||
@OnTransition(source = "TO_BE_SUBMIT_XCFHX_APPLY", target = "ON_XCFHX_APPLY") | |||||
public void SUBMIT_XCFHX_APPLY(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | |||||
purchase.setStatus(TenderStatusEnum.ON_XCFHX_APPLY.getTenderStatus()); | |||||
} | |||||
/** | |||||
* 信创符合性申请通过 | |||||
* | |||||
* @param message \ | |||||
*/ | |||||
@OnTransition(source = "ON_XCFHX_APPLY", target = "TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY") | |||||
public void XCFHX_APPLY_PASSED(Message<ProjectStateChangeEvent> 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()); | ||||
} | } | ||||
/** | /** | ||||
* 信创符合性申请失败 | |||||
* | |||||
* @param message \ | |||||
*/ | |||||
@OnTransition(source = "ON_XCFHX_APPLY", target = "XCFHX_APPLY_FAILED") | |||||
public void XCFHX_APPLY_FAILED(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | |||||
purchase.setStatus(TenderStatusEnum.XCFHX_APPLY_FAILED.getTenderStatus()); | |||||
} | |||||
/** | |||||
* 重新提交信创符合性申请 | |||||
* | |||||
* @param message \ | |||||
*/ | |||||
@OnTransition(source = "XCFHX_APPLY_FAILED", target = "ON_XCFHX_APPLY") | |||||
public void RESUBMIT_XCFHX_APPLY(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | |||||
purchase.setStatus(TenderStatusEnum.ON_XCFHX_APPLY.getTenderStatus()); | |||||
} | |||||
/** | |||||
* 终验申报 | * 终验申报 | ||||
* | * | ||||
* @param message \ | * @param message \ | ||||
@@ -0,0 +1,76 @@ | |||||
package com.hz.pm.api.common.statemachine.action; | |||||
import cn.hutool.core.lang.Assert; | |||||
import com.hz.pm.api.common.statemachine.builder.impl.XcfhxStateMachineBuilderImpl; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.util.TenderStateMachineUtil; | |||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | |||||
import com.hz.pm.api.projectlib.model.enumeration.TenderXcfhxApplyStatusEnum; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.messaging.Message; | |||||
import org.springframework.statemachine.annotation.OnTransition; | |||||
import org.springframework.statemachine.annotation.WithStateMachine; | |||||
/** | |||||
* <p> | |||||
* XcfhxStateChangeAction | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 11:40 2024/4/8 | |||||
*/ | |||||
@Slf4j | |||||
@WithStateMachine(id = XcfhxStateMachineBuilderImpl.MACHINE_ID) | |||||
public class XcfhxStateChangeAction { | |||||
private Purchase getPurchaseInfo(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = (Purchase) message.getHeaders().get(TenderStateMachineUtil.PURCHASE); | |||||
Assert.notNull(purchase, "未获取到需要状态变更的标段信息"); | |||||
return purchase; | |||||
} | |||||
/** | |||||
* 信创符合性申请 | |||||
* | |||||
* @param message \ | |||||
*/ | |||||
@OnTransition(source = "TO_BE_SUBMIT_XCFHX_APPLY", target = "ON_XCFHX_APPLY") | |||||
public void SUBMIT_XCFHX_APPLY(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | |||||
purchase.setXcfhxApplyStatus(TenderXcfhxApplyStatusEnum.ON_XCFHX_APPLY.getCode()); | |||||
} | |||||
/** | |||||
* 信创符合性申请通过 | |||||
* | |||||
* @param message \ | |||||
*/ | |||||
@OnTransition(source = "ON_XCFHX_APPLY", target = "XCFHX_APPLY_PASSED") | |||||
public void XCFHX_APPLY_PASSED(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | |||||
purchase.setXcfhxApplyStatus(TenderXcfhxApplyStatusEnum.XCFHX_APPLY_PASSED.getCode()); | |||||
} | |||||
/** | |||||
* 信创符合性申请失败 | |||||
* | |||||
* @param message \ | |||||
*/ | |||||
@OnTransition(source = "ON_XCFHX_APPLY", target = "XCFHX_APPLY_FAILED") | |||||
public void XCFHX_APPLY_FAILED(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | |||||
purchase.setXcfhxApplyStatus(TenderXcfhxApplyStatusEnum.XCFHX_APPLY_FAILED.getCode()); | |||||
} | |||||
/** | |||||
* 重新提交信创符合性申请 | |||||
* | |||||
* @param message \ | |||||
*/ | |||||
@OnTransition(source = "XCFHX_APPLY_FAILED", target = "ON_XCFHX_APPLY") | |||||
public void RESUBMIT_XCFHX_APPLY(Message<ProjectStateChangeEvent> message) { | |||||
Purchase purchase = getPurchaseInfo(message); | |||||
purchase.setXcfhxApplyStatus(TenderXcfhxApplyStatusEnum.ON_XCFHX_APPLY.getCode()); | |||||
} | |||||
} |
@@ -90,31 +90,8 @@ public class TenderStateMachineBuilderImpl implements BaseStateMachineBuilder<Pu | |||||
// 上传初验材料 | // 上传初验材料 | ||||
.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) | |||||
.event(TenderStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES) | |||||
.and() | |||||
// 信创符合性申请 | |||||
.withExternal() | |||||
.source(TenderStatusEnum.TO_BE_SUBMIT_XCFHX_APPLY) | |||||
.target(TenderStatusEnum.ON_XCFHX_APPLY) | |||||
.event(TenderStateChangeEvent.SUBMIT_XCFHX_APPLY) | |||||
.and()// 信创符合性申请 | |||||
.withExternal() | |||||
.source(TenderStatusEnum.XCFHX_APPLY_FAILED) | |||||
.target(TenderStatusEnum.ON_XCFHX_APPLY) | |||||
.event(TenderStateChangeEvent.RESUBMIT_XCFHX_APPLY) | |||||
.and() | |||||
// 信创符合性申请通过 | |||||
.withExternal() | |||||
.source(TenderStatusEnum.ON_XCFHX_APPLY) | |||||
.target(TenderStatusEnum.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY) | .target(TenderStatusEnum.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY) | ||||
.event(TenderStateChangeEvent.XCFHX_APPLY_PASSED) | |||||
.and() | |||||
// 信创符合性申请失败 | |||||
.withExternal() | |||||
.source(TenderStatusEnum.ON_XCFHX_APPLY) | |||||
.target(TenderStatusEnum.XCFHX_APPLY_FAILED) | |||||
.event(TenderStateChangeEvent.XCFHX_APPLY_FAILED) | |||||
.event(TenderStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES) | |||||
.and() | .and() | ||||
// 终验申报 | // 终验申报 | ||||
.withExternal() | .withExternal() | ||||
@@ -0,0 +1,121 @@ | |||||
package com.hz.pm.api.common.statemachine.builder.impl; | |||||
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.TenderStateChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.event.XcfhxStateChangeEvent; | |||||
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.TenderStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.enumeration.TenderXcfhxApplyStatusEnum; | |||||
import com.ningdatech.basic.exception.BizException; | |||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.beans.factory.BeanFactory; | |||||
import org.springframework.context.annotation.Bean; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.StateMachineContext; | |||||
import org.springframework.statemachine.StateMachineException; | |||||
import org.springframework.statemachine.StateMachinePersist; | |||||
import org.springframework.statemachine.config.EnableStateMachine; | |||||
import org.springframework.statemachine.config.StateMachineBuilder; | |||||
import org.springframework.statemachine.persist.DefaultStateMachinePersister; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
import org.springframework.statemachine.support.DefaultStateMachineContext; | |||||
import org.springframework.stereotype.Component; | |||||
import java.util.EnumSet; | |||||
/** | |||||
* <p> | |||||
* 标段信创符合性申请状态机 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 16:38 2024/2/24 | |||||
*/ | |||||
@Slf4j | |||||
@Component | |||||
@EnableStateMachine(name = XcfhxStateMachineBuilderImpl.MACHINE_ID) | |||||
@RequiredArgsConstructor | |||||
public class XcfhxStateMachineBuilderImpl implements BaseStateMachineBuilder<Purchase, XcfhxStateChangeEvent, TenderXcfhxApplyStatusEnum> { | |||||
public static final String MACHINE_ID = "xcfhxStateMachine"; | |||||
private final BeanFactory beanFactory; | |||||
@Override | |||||
public StateMachine<TenderXcfhxApplyStatusEnum, XcfhxStateChangeEvent> build() throws StateMachineException { | |||||
StateMachine<TenderXcfhxApplyStatusEnum, XcfhxStateChangeEvent> stateMachine = build(beanFactory); | |||||
log.info("状态机ID:{}", stateMachine.getId()); | |||||
stateMachine.start(); | |||||
return stateMachine; | |||||
} | |||||
@Override | |||||
public StateMachine<TenderXcfhxApplyStatusEnum, XcfhxStateChangeEvent> build(BeanFactory beanFactory) throws StateMachineException { | |||||
try { | |||||
return buildStateMachine(beanFactory); | |||||
} catch (Exception e) { | |||||
throw new StateMachineException("状态机构建失败", e); | |||||
} | |||||
} | |||||
private StateMachine<TenderXcfhxApplyStatusEnum, XcfhxStateChangeEvent> buildStateMachine(BeanFactory factory) throws Exception { | |||||
StateMachineBuilder.Builder<TenderXcfhxApplyStatusEnum, XcfhxStateChangeEvent> builder = StateMachineBuilder.builder(); | |||||
builder.configureConfiguration() | |||||
.withConfiguration() | |||||
.machineId(MACHINE_ID) | |||||
.beanFactory(factory); | |||||
builder.configureStates() | |||||
.withStates() | |||||
.initial(TenderXcfhxApplyStatusEnum.TO_BE_SUBMIT_XCFHX_APPLY) | |||||
.states(EnumSet.allOf(TenderXcfhxApplyStatusEnum.class)); | |||||
builder.configureTransitions() | |||||
// 信创符合性申请 | |||||
.withExternal() | |||||
.source(TenderXcfhxApplyStatusEnum.TO_BE_SUBMIT_XCFHX_APPLY) | |||||
.target(TenderXcfhxApplyStatusEnum.ON_XCFHX_APPLY) | |||||
.event(XcfhxStateChangeEvent.SUBMIT_XCFHX_APPLY) | |||||
.and()// 信创符合性申请 | |||||
.withExternal() | |||||
.source(TenderXcfhxApplyStatusEnum.XCFHX_APPLY_FAILED) | |||||
.target(TenderXcfhxApplyStatusEnum.ON_XCFHX_APPLY) | |||||
.event(XcfhxStateChangeEvent.RESUBMIT_XCFHX_APPLY) | |||||
.and() | |||||
// 信创符合性申请通过 | |||||
.withExternal() | |||||
.source(TenderXcfhxApplyStatusEnum.ON_XCFHX_APPLY) | |||||
.target(TenderXcfhxApplyStatusEnum.XCFHX_APPLY_PASSED) | |||||
.event(XcfhxStateChangeEvent.XCFHX_APPLY_PASSED) | |||||
.and() | |||||
// 信创符合性申请失败 | |||||
.withExternal() | |||||
.source(TenderXcfhxApplyStatusEnum.ON_XCFHX_APPLY) | |||||
.target(TenderXcfhxApplyStatusEnum.XCFHX_APPLY_FAILED) | |||||
.event(XcfhxStateChangeEvent.XCFHX_APPLY_FAILED) | |||||
.and(); | |||||
return builder.build(); | |||||
} | |||||
@Override | |||||
@Bean(name = "xcfhxStatePersister") | |||||
public StateMachinePersister<TenderXcfhxApplyStatusEnum, XcfhxStateChangeEvent, Purchase> stateMachinePersister() { | |||||
return new DefaultStateMachinePersister<>(new StateMachinePersist<TenderXcfhxApplyStatusEnum, XcfhxStateChangeEvent, Purchase>() { | |||||
@Override | |||||
public void write(StateMachineContext<TenderXcfhxApplyStatusEnum, XcfhxStateChangeEvent> context, Purchase contextObj) { | |||||
log.info("当前项目为:{}", contextObj); | |||||
} | |||||
@Override | |||||
public StateMachineContext<TenderXcfhxApplyStatusEnum, XcfhxStateChangeEvent> read(Purchase contextObj) { | |||||
TenderXcfhxApplyStatusEnum status = TenderXcfhxApplyStatusEnum.get(contextObj.getXcfhxApplyStatus()) | |||||
.orElseThrow(() -> BizException.wrap("信创符合性申请状态无效")); | |||||
return new DefaultStateMachineContext<>(status, null, null, null, null, MACHINE_ID); | |||||
} | |||||
}); | |||||
} | |||||
} |
@@ -32,22 +32,6 @@ public enum TenderStateChangeEvent implements AbstractStateChangeEvent { | |||||
*/ | */ | ||||
SUBMIT_FIRST_INSPECTED_FILES(201, null, null), | SUBMIT_FIRST_INSPECTED_FILES(201, null, null), | ||||
/** | /** | ||||
* 信创符合性申请 | |||||
*/ | |||||
SUBMIT_XCFHX_APPLY(301, null, null), | |||||
/** | |||||
* 信创符合性重新申请 | |||||
*/ | |||||
RESUBMIT_XCFHX_APPLY(303, null, null), | |||||
/** | |||||
* 信创符合性申请通过 | |||||
*/ | |||||
XCFHX_APPLY_PASSED(302, null, null), | |||||
/** | |||||
* 信创符合性申请不通过 | |||||
*/ | |||||
XCFHX_APPLY_FAILED(null, 302, null), | |||||
/** | |||||
* 终验申报 | * 终验申报 | ||||
*/ | */ | ||||
SUBMIT_FINALLY_INSPECTED(401, null, null), | SUBMIT_FINALLY_INSPECTED(401, null, null), | ||||
@@ -0,0 +1,40 @@ | |||||
package com.hz.pm.api.common.statemachine.event; | |||||
import lombok.AllArgsConstructor; | |||||
import lombok.Getter; | |||||
/** | |||||
* <p> | |||||
* TenderStatusChangeEvent | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 00:14 2024/2/24 | |||||
*/ | |||||
@Getter | |||||
@AllArgsConstructor | |||||
public enum XcfhxStateChangeEvent implements AbstractStateChangeEvent { | |||||
/** | |||||
* 信创符合性申请 | |||||
*/ | |||||
SUBMIT_XCFHX_APPLY(301, null, null), | |||||
/** | |||||
* 信创符合性重新申请 | |||||
*/ | |||||
RESUBMIT_XCFHX_APPLY(303, null, null), | |||||
/** | |||||
* 信创符合性申请通过 | |||||
*/ | |||||
XCFHX_APPLY_PASSED(302, null, null), | |||||
/** | |||||
* 信创符合性申请不通过 | |||||
*/ | |||||
XCFHX_APPLY_FAILED(null, 302, null); | |||||
private final Integer passStatusCode; | |||||
private final Integer rejectStatusCode; | |||||
private final Integer withdrawStatusCode; | |||||
} |
@@ -0,0 +1,70 @@ | |||||
package com.hz.pm.api.common.statemachine.util; | |||||
import com.hz.pm.api.common.statemachine.builder.impl.XcfhxStateMachineBuilderImpl; | |||||
import com.hz.pm.api.common.statemachine.event.XcfhxStateChangeEvent; | |||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | |||||
import com.hz.pm.api.projectdeclared.utils.ProjectIdCodeCacheUtil; | |||||
import com.hz.pm.api.projectlib.entity.PurchaseStatusChange; | |||||
import com.hz.pm.api.projectlib.model.enumeration.TenderXcfhxApplyStatusEnum; | |||||
import com.hz.pm.api.projectlib.service.IPurchaseStatusChangeService; | |||||
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; | |||||
/** | |||||
* <p> | |||||
* 标段状态机工具类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 17:06 2024/2/24 | |||||
*/ | |||||
@Slf4j | |||||
@Component | |||||
@RequiredArgsConstructor | |||||
public class XcfhxStateMachineUtil implements AbstractStateMachineUtil<Purchase, XcfhxStateChangeEvent> { | |||||
public static final String PURCHASE = "purchaseInfo"; | |||||
//================================================================================================================== | |||||
private final XcfhxStateMachineBuilderImpl xcfhxStateMachineBuilder; | |||||
private final IPurchaseStatusChangeService purchaseStatusChangeService; | |||||
@Override | |||||
public Function<Purchase, Integer> statusFunction() { | |||||
return Purchase::getXcfhxApplyStatus; | |||||
} | |||||
@Override | |||||
public void execute(Purchase purchase, XcfhxStateChangeEvent event) throws Exception { | |||||
log.info("调用状态机前的标段状态为:{}", purchase.getStatus()); | |||||
// 获取TO状态机 | |||||
PurchaseStatusChange change = new PurchaseStatusChange(); | |||||
change.setBeforeStatus(purchase.getXcfhxApplyStatus()); | |||||
change.setEvent(event.name()); | |||||
change.setBidId(purchase.getId()); | |||||
change.setProjectId(purchase.getProjectId()); | |||||
change.setProjectCode(ProjectIdCodeCacheUtil.get(purchase.getProjectId())); | |||||
change.setCreateOn(LocalDateTime.now()); | |||||
StateMachine<TenderXcfhxApplyStatusEnum, XcfhxStateChangeEvent> stateMachine = xcfhxStateMachineBuilder.build(); | |||||
Message<XcfhxStateChangeEvent> message = MessageBuilder.withPayload(event) | |||||
.setHeader(PURCHASE, purchase) | |||||
.build(); | |||||
//初始化状态机 | |||||
StateMachinePersister<TenderXcfhxApplyStatusEnum, XcfhxStateChangeEvent, Purchase> stateMachinePersister = xcfhxStateMachineBuilder.stateMachinePersister(); | |||||
stateMachinePersister.restore(stateMachine, purchase); | |||||
stateMachine.sendEvent(message); | |||||
change.setAfterStatus(purchase.getXcfhxApplyStatus()); | |||||
purchaseStatusChangeService.save(change); | |||||
log.info("调用状态机后的标段状态为:{}", purchase.getStatus()); | |||||
} | |||||
} |
@@ -3,12 +3,10 @@ package com.hz.pm.api.projectdeclared.controller; | |||||
import com.hz.pm.api.common.util.ExcelDownUtil; | import com.hz.pm.api.common.util.ExcelDownUtil; | ||||
import com.hz.pm.api.projectdeclared.manage.PurchaseManage; | import com.hz.pm.api.projectdeclared.manage.PurchaseManage; | ||||
import com.hz.pm.api.projectdeclared.model.dto.PurchaseSaveDTO; | import com.hz.pm.api.projectdeclared.model.dto.PurchaseSaveDTO; | ||||
import com.hz.pm.api.projectdeclared.model.req.SubmitPurchaseNoticeReq; | |||||
import com.hz.pm.api.projectdeclared.model.req.SubmitPurchaseRecordReq; | |||||
import com.hz.pm.api.projectdeclared.model.req.TestValidInfoReq; | |||||
import com.hz.pm.api.projectdeclared.model.req.TestValidListReq; | |||||
import com.hz.pm.api.projectdeclared.model.req.*; | |||||
import com.hz.pm.api.projectdeclared.model.vo.PurchaseVO; | import com.hz.pm.api.projectdeclared.model.vo.PurchaseVO; | ||||
import com.hz.pm.api.projectdeclared.model.vo.TestValidListVO; | import com.hz.pm.api.projectdeclared.model.vo.TestValidListVO; | ||||
import com.hz.pm.api.projectdeclared.model.vo.XcfhxApplyListVO; | |||||
import com.hz.pm.api.projectlib.model.req.ProjectListReq; | import com.hz.pm.api.projectlib.model.req.ProjectListReq; | ||||
import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO; | import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO; | ||||
import com.ningdatech.basic.model.PageVo; | import com.ningdatech.basic.model.PageVo; | ||||
@@ -117,4 +115,10 @@ public class PurchaseController { | |||||
purchaseManage.submitSelfTestInfo(req); | purchaseManage.submitSelfTestInfo(req); | ||||
} | } | ||||
@GetMapping("/pageXcfhxApply") | |||||
@ApiOperation("获取信创符合性申请列表") | |||||
public PageVo<XcfhxApplyListVO> pageXcfhxApply(XcfhxListReq req) { | |||||
return purchaseManage.pageXcfhxApply(req); | |||||
} | |||||
} | } |
@@ -12,6 +12,7 @@ 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.ProjectStateMachineUtil; | 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.statemachine.util.XcfhxStateMachineUtil; | |||||
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; | ||||
import com.hz.pm.api.common.util.ExcelExportStyle; | import com.hz.pm.api.common.util.ExcelExportStyle; | ||||
@@ -34,6 +35,7 @@ import com.hz.pm.api.projectlib.model.entity.ProjectInst; | |||||
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.enumeration.ProjectTypeNewEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum; | ||||
import com.hz.pm.api.projectlib.model.enumeration.TenderStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.TenderStatusEnum; | ||||
import com.hz.pm.api.projectlib.model.enumeration.TenderXcfhxApplyStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.req.ProjectListReq; | import com.hz.pm.api.projectlib.model.req.ProjectListReq; | ||||
import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO; | import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO; | ||||
import com.hz.pm.api.projectlib.model.vo.TenderListInfoVO; | import com.hz.pm.api.projectlib.model.vo.TenderListInfoVO; | ||||
@@ -92,6 +94,7 @@ public class ConstructionManage { | |||||
private final ProjectStateMachineUtil projectStateMachineUtil; | private final ProjectStateMachineUtil projectStateMachineUtil; | ||||
private final IProjectAnnualPaymentPlanService projectPaymentPlanService; | private final IProjectAnnualPaymentPlanService projectPaymentPlanService; | ||||
private final TenderStateMachineUtil tenderStateMachineUtil; | private final TenderStateMachineUtil tenderStateMachineUtil; | ||||
private final XcfhxStateMachineUtil xcfhxStateMachineUtil; | |||||
/** | /** | ||||
* 待采购的-项目列表 | * 待采购的-项目列表 | ||||
@@ -338,9 +341,6 @@ public class ConstructionManage { | |||||
static { | static { | ||||
PRE_INSPECTED_PURCHASE_STATUS = new ArrayList<>(); | PRE_INSPECTED_PURCHASE_STATUS = new ArrayList<>(); | ||||
PRE_INSPECTED_PURCHASE_STATUS.add(TenderStatusEnum.TO_BE_SUBMIT_FIRST_INSPECTED_INFO); | PRE_INSPECTED_PURCHASE_STATUS.add(TenderStatusEnum.TO_BE_SUBMIT_FIRST_INSPECTED_INFO); | ||||
PRE_INSPECTED_PURCHASE_STATUS.add(TenderStatusEnum.TO_BE_SUBMIT_XCFHX_APPLY); | |||||
PRE_INSPECTED_PURCHASE_STATUS.add(TenderStatusEnum.ON_XCFHX_APPLY); | |||||
PRE_INSPECTED_PURCHASE_STATUS.add(TenderStatusEnum.XCFHX_APPLY_FAILED); | |||||
} | } | ||||
/** | /** | ||||
@@ -568,8 +568,8 @@ public class ConstructionManage { | |||||
@Transactional(rollbackFor = Exception.class) | @Transactional(rollbackFor = Exception.class) | ||||
public synchronized void submitXcfhxApply(XcfhxApplyReq req) { | public synchronized void submitXcfhxApply(XcfhxApplyReq req) { | ||||
Purchase purchase = purchaseService.getById(req.getBidId()); | Purchase purchase = purchaseService.getById(req.getBidId()); | ||||
if (!TenderStatusEnum.TO_BE_SUBMIT_XCFHX_APPLY.eq(purchase.getStatus()) | |||||
&& !TenderStatusEnum.XCFHX_APPLY_FAILED.eq(purchase.getStatus())) { | |||||
if (!TenderXcfhxApplyStatusEnum.TO_BE_SUBMIT_XCFHX_APPLY.eq(purchase.getXcfhxApplyStatus()) | |||||
&& !TenderXcfhxApplyStatusEnum.XCFHX_APPLY_FAILED.eq(purchase.getXcfhxApplyStatus())) { | |||||
throw BizException.wrap("该标段不支持提交信创符合性申请"); | throw BizException.wrap("该标段不支持提交信创符合性申请"); | ||||
} | } | ||||
@@ -600,7 +600,7 @@ public class ConstructionManage { | |||||
purchase.setMatchXcfhx(req.getMatchXcfhx()); | purchase.setMatchXcfhx(req.getMatchXcfhx()); | ||||
purchase.setXcfhxApplyRemark(req.getXcfhxApplyRemark()); | purchase.setXcfhxApplyRemark(req.getXcfhxApplyRemark()); | ||||
purchase.setXcfhxReportFiles(req.getXcfhxReportFiles()); | purchase.setXcfhxReportFiles(req.getXcfhxReportFiles()); | ||||
tenderStateMachineUtil.pass(purchase); | |||||
xcfhxStateMachineUtil.pass(purchase); | |||||
purchaseService.updateById(purchase); | purchaseService.updateById(purchase); | ||||
PurchaseInst purchaseInst = new PurchaseInst(); | PurchaseInst purchaseInst = new PurchaseInst(); | ||||
@@ -38,13 +38,11 @@ import com.hz.pm.api.projectdeclared.model.entity.Purchase; | |||||
import com.hz.pm.api.projectdeclared.model.entity.PurchaseInst; | import com.hz.pm.api.projectdeclared.model.entity.PurchaseInst; | ||||
import com.hz.pm.api.projectdeclared.model.enumerization.BidTypeEnum; | import com.hz.pm.api.projectdeclared.model.enumerization.BidTypeEnum; | ||||
import com.hz.pm.api.projectdeclared.model.enumerization.PurchaseScopeEnum; | import com.hz.pm.api.projectdeclared.model.enumerization.PurchaseScopeEnum; | ||||
import com.hz.pm.api.projectdeclared.model.req.SubmitPurchaseNoticeReq; | |||||
import com.hz.pm.api.projectdeclared.model.req.*; | |||||
import com.hz.pm.api.projectdeclared.model.req.SubmitPurchaseNoticeReq.PurchaseNoticeTenderDTO; | import com.hz.pm.api.projectdeclared.model.req.SubmitPurchaseNoticeReq.PurchaseNoticeTenderDTO; | ||||
import com.hz.pm.api.projectdeclared.model.req.SubmitPurchaseRecordReq; | |||||
import com.hz.pm.api.projectdeclared.model.req.TestValidInfoReq; | |||||
import com.hz.pm.api.projectdeclared.model.req.TestValidListReq; | |||||
import com.hz.pm.api.projectdeclared.model.vo.PurchaseVO; | import com.hz.pm.api.projectdeclared.model.vo.PurchaseVO; | ||||
import com.hz.pm.api.projectdeclared.model.vo.TestValidListVO; | import com.hz.pm.api.projectdeclared.model.vo.TestValidListVO; | ||||
import com.hz.pm.api.projectdeclared.model.vo.XcfhxApplyListVO; | |||||
import com.hz.pm.api.projectdeclared.service.IContractService; | import com.hz.pm.api.projectdeclared.service.IContractService; | ||||
import com.hz.pm.api.projectdeclared.service.IOperationService; | import com.hz.pm.api.projectdeclared.service.IOperationService; | ||||
import com.hz.pm.api.projectdeclared.service.IPurchaseInstService; | import com.hz.pm.api.projectdeclared.service.IPurchaseInstService; | ||||
@@ -74,7 +72,6 @@ import com.ningdatech.basic.util.NdDateUtils; | |||||
import com.ningdatech.file.entity.File; | import com.ningdatech.file.entity.File; | ||||
import com.ningdatech.file.entity.vo.result.FileResultVO; | import com.ningdatech.file.entity.vo.result.FileResultVO; | ||||
import com.ningdatech.file.service.FileService; | import com.ningdatech.file.service.FileService; | ||||
import com.sun.org.apache.xpath.internal.operations.Bool; | |||||
import com.wflow.bean.entity.WflowModels; | import com.wflow.bean.entity.WflowModels; | ||||
import com.wflow.exception.BusinessException; | import com.wflow.exception.BusinessException; | ||||
import com.wflow.workflow.bean.dto.OrgInfoDTO; | import com.wflow.workflow.bean.dto.OrgInfoDTO; | ||||
@@ -83,7 +80,6 @@ import com.wflow.workflow.service.ProcessInstanceService; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.springframework.beans.BeanUtils; | import org.springframework.beans.BeanUtils; | ||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.beans.factory.annotation.Value; | import org.springframework.beans.factory.annotation.Value; | ||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import org.springframework.transaction.annotation.Transactional; | import org.springframework.transaction.annotation.Transactional; | ||||
@@ -381,6 +377,7 @@ public class PurchaseManage { | |||||
purchase.setTestValidStatus(TenderTestValidStatusEnum.WITHOUT_TEST_VALID_INFO.getCode()); | purchase.setTestValidStatus(TenderTestValidStatusEnum.WITHOUT_TEST_VALID_INFO.getCode()); | ||||
purchase.setAdaptStatus(TenderAdaptStatusEnum.WITHOUT_ADAPT_INFO.getCode()); | purchase.setAdaptStatus(TenderAdaptStatusEnum.WITHOUT_ADAPT_INFO.getCode()); | ||||
purchase.setStatus(TenderStatusEnum.TO_BE_SUBMIT_PURCHASE_INFO.getTenderStatus()); | purchase.setStatus(TenderStatusEnum.TO_BE_SUBMIT_PURCHASE_INFO.getTenderStatus()); | ||||
purchase.setXcfhxApplyStatus(TenderXcfhxApplyStatusEnum.TO_BE_SUBMIT_XCFHX_APPLY.getCode()); | |||||
if (Boolean.TRUE.equals(mhPurchaseNoticeOpen)) { | if (Boolean.TRUE.equals(mhPurchaseNoticeOpen)) { | ||||
notices.add(buildPurchaseNotice(w, user)); | notices.add(buildPurchaseNotice(w, user)); | ||||
} | } | ||||
@@ -710,4 +707,49 @@ public class PurchaseManage { | |||||
} | } | ||||
} | } | ||||
public PageVo<XcfhxApplyListVO> pageXcfhxApply(XcfhxListReq req) { | |||||
LambdaQueryWrapper<Purchase> query = Wrappers.lambdaQuery(Purchase.class) | |||||
.like(StrUtil.isNotBlank(req.getBidName()), Purchase::getBidName, req.getBidName()) | |||||
.le(req.getCreateOnMax() != null, Purchase::getCreateOn, req.getCreateOnMax()) | |||||
.ge(req.getCreateOnMin() != null, Purchase::getCreateOn, req.getCreateOnMin()) | |||||
.eq(req.getStatus() != null, Purchase::getXcfhxApplyStatus, req.getStatus()) | |||||
.orderByDesc(Purchase::getCreateOn); | |||||
if (Boolean.TRUE.equals(req.getFinished())) { | |||||
query.eq(Purchase::getXcfhxApplyStatus, TenderXcfhxApplyStatusEnum.XCFHX_APPLY_PASSED.getCode()); | |||||
} else { | |||||
query.ne(Purchase::getXcfhxApplyStatus, TenderXcfhxApplyStatusEnum.XCFHX_APPLY_PASSED.getCode()); | |||||
} | |||||
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | |||||
if (!buildPurchaseQueryPermission(query, user)) { | |||||
return PageVo.empty(); | |||||
} | |||||
Page<Purchase> page = purchaseService.page(req.page(), query); | |||||
if (page.getTotal() == 0) { | |||||
return PageVo.empty(); | |||||
} | |||||
List<Purchase> records = page.getRecords(); | |||||
Set<Long> projectIds = CollUtils.fieldSet(records, Purchase::getProjectId); | |||||
List<Project> projects = projectService.listByIds(projectIds); | |||||
Map<Long, Project> projectMap = CollUtils.listToMap(projects, Project::getId); | |||||
Map<Long, Contract> contractMap = contractService.listByProjectIds(projectIds); | |||||
List<XcfhxApplyListVO> data = records.stream().map(w -> { | |||||
Project project = projectMap.get(w.getProjectId()); | |||||
XcfhxApplyListVO item = XcfhxApplyListVO.builder() | |||||
.bidId(w.getId()) | |||||
.bizName(w.getBidName()) | |||||
.status(w.getXcfhxApplyStatus()) | |||||
.projectId(w.getProjectId()) | |||||
.projectCode(project.getProjectCode()) | |||||
.projectName(project.getProjectName()) | |||||
.createOn(w.getCreateOn()) | |||||
.build(); | |||||
Contract contract = contractMap.get(w.getId()); | |||||
if (contract != null) { | |||||
item.setContractAmount(contract.getTotalAmount()); | |||||
} | |||||
return item; | |||||
}).collect(Collectors.toList()); | |||||
return PageVo.of(data, page.getTotal()); | |||||
} | |||||
} | } |
@@ -155,4 +155,7 @@ public class Purchase { | |||||
@ApiModelProperty("测试验证状态") | @ApiModelProperty("测试验证状态") | ||||
private Integer testValidStatus; | private Integer testValidStatus; | ||||
@ApiModelProperty("信创符合性申请状态") | |||||
private Integer xcfhxApplyStatus; | |||||
} | } |
@@ -0,0 +1,34 @@ | |||||
package com.hz.pm.api.projectdeclared.model.req; | |||||
import com.ningdatech.basic.model.PagePo; | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
import org.springframework.format.annotation.DateTimeFormat; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* XcfhxListReq | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 14:49 2024/3/27 | |||||
*/ | |||||
@Data | |||||
@EqualsAndHashCode(callSuper = true) | |||||
public class XcfhxListReq extends PagePo { | |||||
private String bidName; | |||||
private Integer status; | |||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") | |||||
private LocalDateTime createOnMin; | |||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") | |||||
private LocalDateTime createOnMax; | |||||
private Boolean finished; | |||||
} |
@@ -0,0 +1,44 @@ | |||||
package com.hz.pm.api.projectdeclared.model.vo; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Builder; | |||||
import lombok.Data; | |||||
import java.math.BigDecimal; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* TestValidListVO | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 14:43 2024/3/27 | |||||
*/ | |||||
@Data | |||||
@Builder | |||||
public class XcfhxApplyListVO { | |||||
@ApiModelProperty("标段ID") | |||||
private Long bidId; | |||||
@ApiModelProperty("标段名称") | |||||
private String bizName; | |||||
@ApiModelProperty("项目名称") | |||||
private String projectName; | |||||
@ApiModelProperty("合同金额") | |||||
private BigDecimal contractAmount; | |||||
@ApiModelProperty("状态") | |||||
private Integer status; | |||||
@ApiModelProperty("创建时间") | |||||
private LocalDateTime createOn; | |||||
private Long projectId; | |||||
private String projectCode; | |||||
} |
@@ -300,11 +300,6 @@ public class DeclaredRecordManage { | |||||
projectInfo.setSuperOrg(user.getMhUnitName()); | projectInfo.setSuperOrg(user.getMhUnitName()); | ||||
} | } | ||||
//如果是重新提交的话 判断下 项目是否存在 | |||||
if (Objects.nonNull(projectInfo.getId())) { | |||||
//新申报的项目不允许带项目id | |||||
projectInfo.setId(null); | |||||
} | |||||
ProjectProcessStageEnum instType = ProjectProcessStageEnum.PROJECT_RECORD_APPROVAL_PROCESS; | ProjectProcessStageEnum instType = ProjectProcessStageEnum.PROJECT_RECORD_APPROVAL_PROCESS; | ||||
WflowModels model = processModelManage.getWflowModels(instType, user.getMhUnitId()); | WflowModels model = processModelManage.getWflowModels(instType, user.getMhUnitId()); | ||||
if (Objects.isNull(model)) { | if (Objects.isNull(model)) { | ||||
@@ -23,9 +23,6 @@ public enum TenderStatusEnum { | |||||
TO_BE_SUBMIT_CONSTRUCTION_INFO(ProjectStatusEnum.ON_PURCHASING, 102, "待填写合同信息"), | TO_BE_SUBMIT_CONSTRUCTION_INFO(ProjectStatusEnum.ON_PURCHASING, 102, "待填写合同信息"), | ||||
TO_BE_SUBMIT_OPERATION_PLAN(ProjectStatusEnum.ON_PURCHASING, 103, "待填写实施计划"), | TO_BE_SUBMIT_OPERATION_PLAN(ProjectStatusEnum.ON_PURCHASING, 103, "待填写实施计划"), | ||||
TO_BE_SUBMIT_FIRST_INSPECTED_INFO(ProjectStatusEnum.TO_BE_FIRST_INSPECTED, 201, "待上传初验材料"), | TO_BE_SUBMIT_FIRST_INSPECTED_INFO(ProjectStatusEnum.TO_BE_FIRST_INSPECTED, 201, "待上传初验材料"), | ||||
TO_BE_SUBMIT_XCFHX_APPLY(ProjectStatusEnum.ON_FIRST_INSPECTED, 301, "待信创符合性申请"), | |||||
ON_XCFHX_APPLY(ProjectStatusEnum.ON_FIRST_INSPECTED, 302, "信创符合性申请中"), | |||||
XCFHX_APPLY_FAILED(ProjectStatusEnum.ON_FIRST_INSPECTED, 303, "信创符合性申请不通过"), | |||||
TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY(ProjectStatusEnum.ON_FIRST_INSPECTED, 401, "待终验申报"), | TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY(ProjectStatusEnum.ON_FIRST_INSPECTED, 401, "待终验申报"), | ||||
ON_FINALLY_INSPECTED_APPLY(ProjectStatusEnum.ON_FINALLY_INSPECTED, 501, "终验申报中"), | ON_FINALLY_INSPECTED_APPLY(ProjectStatusEnum.ON_FINALLY_INSPECTED, 501, "终验申报中"), | ||||
FINALLY_INSPECTED_FAILED(ProjectStatusEnum.ON_FINALLY_INSPECTED, 502, "终验申报不通过"), | FINALLY_INSPECTED_FAILED(ProjectStatusEnum.ON_FINALLY_INSPECTED, 502, "终验申报不通过"), | ||||
@@ -0,0 +1,44 @@ | |||||
package com.hz.pm.api.projectlib.model.enumeration; | |||||
import lombok.AllArgsConstructor; | |||||
import lombok.Getter; | |||||
import java.util.Arrays; | |||||
import java.util.Optional; | |||||
/** | |||||
* <p> | |||||
* 信创符合性申请状态 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 10:59 2024/4/8 | |||||
*/ | |||||
@Getter | |||||
@AllArgsConstructor | |||||
public enum TenderXcfhxApplyStatusEnum { | |||||
TO_BE_SUBMIT_XCFHX_APPLY(301, "待信创符合性申请"), | |||||
ON_XCFHX_APPLY(302, "信创符合性申请中"), | |||||
XCFHX_APPLY_FAILED(303, "信创符合性申请不通过"), | |||||
XCFHX_APPLY_PASSED(304, "信创符合性申请不通过"); | |||||
private final Integer code; | |||||
private final String val; | |||||
public boolean eq(Integer code) { | |||||
return this.code.equals(code); | |||||
} | |||||
public static Optional<TenderXcfhxApplyStatusEnum> get(Integer code) { | |||||
return Arrays.stream(values()) | |||||
.filter(w -> w.getCode().equals(code)) | |||||
.findFirst(); | |||||
} | |||||
public static String getVal(Integer code) { | |||||
return get(code).flatMap(w -> Optional.of(w.getVal())).orElse(""); | |||||
} | |||||
} |
@@ -1,43 +0,0 @@ | |||||
package com.hz.pm.api.sys.controller; | |||||
import com.ningdatech.log.annotation.WebLog; | |||||
import com.hz.pm.api.sys.manage.CpuManage; | |||||
import io.swagger.annotations.Api; | |||||
import io.swagger.annotations.ApiOperation; | |||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.validation.annotation.Validated; | |||||
import org.springframework.web.bind.annotation.*; | |||||
/** | |||||
* @Classname CpuController | |||||
* @Description | |||||
* @Date 2023/10/30 11:06 | |||||
* @Author PoffyZhang | |||||
*/ | |||||
@Slf4j | |||||
@Validated | |||||
@RestController | |||||
@RequestMapping("/api/v1/cpu") | |||||
@Api(value = "CpuController", tags = "CPU提升和关闭提升") | |||||
@RequiredArgsConstructor | |||||
public class CpuController { | |||||
private final CpuManage cpuManage; | |||||
@ApiOperation(value = "提升cpu 增加一个线程", notes = "提升cpu 增加一个线程") | |||||
@PostMapping("/high") | |||||
@WebLog("提升cpu") | |||||
public String high() { | |||||
cpuManage.high(); | |||||
return "提高成功"; | |||||
} | |||||
@ApiOperation(value = "关闭提升cpu", notes = "关闭提升cpu") | |||||
@PostMapping("/close") | |||||
@WebLog("关闭提升cpu") | |||||
public String close() { | |||||
cpuManage.close(); | |||||
return "关闭成功"; | |||||
} | |||||
} |
@@ -1,46 +0,0 @@ | |||||
package com.hz.pm.api.sys.manage; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.stereotype.Component; | |||||
import java.util.concurrent.*; | |||||
/** | |||||
* @Classname CpuManage | |||||
* @Description | |||||
* @Date 2023/8/7 9:25 | |||||
* @Author PoffyZhang | |||||
*/ | |||||
@Component | |||||
@Slf4j | |||||
public class CpuManage { | |||||
private static ExecutorService executorService = Executors.newFixedThreadPool(10); | |||||
private static volatile boolean flag = true; | |||||
public void high() { | |||||
flag = true; | |||||
executorService.execute(() -> { | |||||
while (flag) { | |||||
// 一个复杂的计算任务 | |||||
long x = 123456789123456789L; | |||||
for (int j = 0; j < 10000; j++) { | |||||
if(!flag){ | |||||
break; | |||||
} | |||||
x = (x * 123456789123456789L) % 123456789; | |||||
} | |||||
} | |||||
}); | |||||
} | |||||
public void close(){ | |||||
try{ | |||||
executorService.shutdownNow(); | |||||
flag = false; | |||||
executorService = Executors.newFixedThreadPool(10); | |||||
}catch (Exception e){ | |||||
log.error(e.getMessage()); | |||||
} | |||||
} | |||||
} |
@@ -103,6 +103,7 @@ public class HandlerManage { | |||||
private final SelfTestStateMachineUtil selfTestStateMachineUtil; | private final SelfTestStateMachineUtil selfTestStateMachineUtil; | ||||
private final AdaptStateMachineUtil adaptStateMachineUtil; | private final AdaptStateMachineUtil adaptStateMachineUtil; | ||||
private final TestValidStateMachineUtil testValidStateMachineUtil; | private final TestValidStateMachineUtil testValidStateMachineUtil; | ||||
private final XcfhxStateMachineUtil xcfhxStateMachineUtil; | |||||
private final WflowHelper wflowHelper; | private final WflowHelper wflowHelper; | ||||
@Value("${spring.profiles.active}") | @Value("${spring.profiles.active}") | ||||
@@ -166,7 +167,8 @@ public class HandlerManage { | |||||
|| InstTypeEnum.APPLY_BORROW.eq(instType) | || InstTypeEnum.APPLY_BORROW.eq(instType) | ||||
|| InstTypeEnum.TEST_VALID.eq(instType) | || InstTypeEnum.TEST_VALID.eq(instType) | ||||
|| InstTypeEnum.SELF_TEST.eq(instType) | || InstTypeEnum.SELF_TEST.eq(instType) | ||||
|| InstTypeEnum.ADAPTION.eq(instType)) { | |||||
|| InstTypeEnum.ADAPTION.eq(instType) | |||||
|| InstTypeEnum.XCFHX_APPLY.eq(instType)) { | |||||
switch (instTypeEnum) { | switch (instTypeEnum) { | ||||
case APPLY_DELAY: | case APPLY_DELAY: | ||||
// 保存延期申请记录,更新项目建设周期和计划验收时间 | // 保存延期申请记录,更新项目建设周期和计划验收时间 | ||||
@@ -179,6 +181,7 @@ public class HandlerManage { | |||||
case ADAPTION: | case ADAPTION: | ||||
case SELF_TEST: | case SELF_TEST: | ||||
case TEST_VALID: | case TEST_VALID: | ||||
case XCFHX_APPLY: | |||||
purchaseOperationPassedCallback(project.getId(), instanceId, instTypeEnum); | purchaseOperationPassedCallback(project.getId(), instanceId, instTypeEnum); | ||||
break; | break; | ||||
default: | default: | ||||
@@ -253,6 +256,9 @@ public class HandlerManage { | |||||
case TEST_VALID: | case TEST_VALID: | ||||
testValidStateMachineUtil.pass(purchase); | testValidStateMachineUtil.pass(purchase); | ||||
break; | break; | ||||
case XCFHX_APPLY: | |||||
xcfhxStateMachineUtil.pass(purchase); | |||||
break; | |||||
default: | default: | ||||
throw BizException.wrap("无效的流程类型"); | throw BizException.wrap("无效的流程类型"); | ||||
} | } | ||||
@@ -272,6 +278,9 @@ public class HandlerManage { | |||||
case TEST_VALID: | case TEST_VALID: | ||||
testValidStateMachineUtil.reject(purchase); | testValidStateMachineUtil.reject(purchase); | ||||
break; | break; | ||||
case XCFHX_APPLY: | |||||
xcfhxStateMachineUtil.reject(purchase); | |||||
break; | |||||
default: | default: | ||||
throw BizException.wrap("无效的流程类型"); | throw BizException.wrap("无效的流程类型"); | ||||
} | } | ||||