package com.boco.nbd.wios.flow.process; import cn.hutool.core.collection.CollUtil; import com.boco.nbd.framework.workflow.entity.SubmitFlowRequest; import com.boco.nbd.framework.workflow.entity.SubmitTypeEnum; import com.boco.nbd.framework.workflow.entity.exception.FlowException; import com.boco.nbd.framework.workflow.flow.AbstractFlow; import com.boco.nbd.wios.flow.entity.bo.ConnectUserConfigBO; import com.boco.nbd.wios.flow.entity.bo.LocalSubmitFlowBO; import com.boco.nbd.wios.flow.enums.FlowNodeEnum; import com.boco.nbd.wios.flow.service.INodeService; import com.boco.nbd.wios.manage.entity.bo.OemContractVo; import com.boco.nbd.wios.manage.entity.cams.enums.ContractStatus; import com.boco.nbd.wios.manage.mapper.def.OemContractDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.List; /** * @author:cao hai * @date:2022/6/29 17:35 * @version:V1.0 * @description:ProcessStart * @modify: */ @Service("Process0") public class Process0 extends AbstractFlow { @Autowired protected INodeService nodeService; @Autowired private OemContractDao oemContractDao; /** * 移转订单标识 */ private static final Integer[] ORDER_TYPE = {1, 2}; /** * 预处理(业务数据调整) * * @param request */ @Override protected void preProcess(SubmitFlowRequest request) { LocalSubmitFlowBO bo = (LocalSubmitFlowBO) request; if (SubmitTypeEnum.StartFlow.equals(bo.getSubmitType())) { if (bo.getBusiness().getOemId() == null) { throw new FlowException("工单:" + bo.getBusiness().getId() + ",主机厂信息缺失."); } //验证合同 List<OemContractVo> contractList = oemContractDao.selectByStatusAndOemId(bo.getBusiness().getOemId(), ContractStatus.EFFECTIVE.getType()); if (CollUtil.isEmpty(contractList)) { throw new FlowException("工单:" + bo.getBusiness().getId() + "没有有效合同"); } bo.getBusiness().setContractId(contractList.get(0).getId()); Integer type = bo.getBusiness().getType(); if (type == null || !Arrays.asList(ORDER_TYPE).contains(type)) { bo.getBusiness().setType(1); } bo.setNextNodeEnum(FlowNodeEnum.NODE_101); try { ConnectUserConfigBO configBO = nodeService.getConnectUser(bo.getBusiness().getId(), bo.getBusiness().getOemId()); bo.getUserNames().add(configBO.getUserId()); //modify 2022-09-14 勘测、安装数据与新建时一致 bo.getBusiness().setSurveyPackType(bo.getBusiness().getPackType()); bo.getBusiness().setInstallPackType(bo.getBusiness().getPackType()); bo.getBusiness().setSurveyWallboxModel(bo.getBusiness().getWallboxModel()); bo.getBusiness().setInstallWallboxModel(bo.getBusiness().getWallboxModel()); bo.getBusiness().setSurveyItemModel(bo.getBusiness().getItemModel()); bo.getBusiness().setInstallItemModel(bo.getBusiness().getItemModel()); } catch (FlowException ex) { throw new FlowException(bo.getBusiness().getOemName() + ex.getMessage()); } bo.setCommentMsg("流程启动"); bo.addTaskParam(); } } /** * 验证参数 * 验证注释掉 前端表单部分已验证 * LocalSubmitFlowBO bo = (LocalSubmitFlowBO) request; * ValidateUtil.validate(bo.getBusiness(), OrderPO.VerifyStart.class); * * @param request */ @Override protected void verifyParam(SubmitFlowRequest request) { } /** * 后续处理 * * @param request */ @Override protected void postProcess(SubmitFlowRequest request) { } }