package com.boco.nbd.wios.flow.process; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.boco.nbd.cams.core.util.LambdaUtils; import com.boco.nbd.framework.workflow.entity.SubmitFlowRequest; import com.boco.nbd.framework.workflow.entity.SubmitTypeEnum; import com.boco.nbd.framework.workflow.entity.TaskInfoResponse; 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.LocalSubmitFlowBO; import com.boco.nbd.wios.flow.entity.po.OrderPO; import com.boco.nbd.wios.flow.enums.FlowNodeEnum; import com.boco.nbd.wios.flow.service.IOrderService; import com.boco.nbd.wios.flow.util.ProcessUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * @author:cao hai * @date:2022/6/30 17:04 * @version:V1.0 * @description:Process103 * @modify: */ @Service("Process103") public class Process103 extends AbstractFlow { @Autowired protected IOrderService orderService; /** * 预处理(业务数据调整) * * @param request */ @Override protected void preProcess(SubmitFlowRequest request) { LocalSubmitFlowBO bo = (LocalSubmitFlowBO) request; if (SubmitTypeEnum.TaskFlow.equals(bo.getSubmitType())) { StringBuffer builder = new StringBuffer(); boolean refuseFlag = ProcessUtil.compare(bo.getBusiness().getWhether(), 0); builder.append(refuseFlag ? "拒单:" : "接单"); if (refuseFlag) { if (StrUtil.isEmpty(bo.getBusiness().getRefuseOrderReason())) { throw new FlowException(LambdaUtils.getFieldApiModelProperty(OrderPO::getRefuseOrderReason) + "未填写."); } builder.append(";" + System.lineSeparator()); builder.append(LambdaUtils.getFieldApiModelProperty(OrderPO::getRefuseOrderReason) + ":" + bo.getBusiness().getRefuseOrderReason()); bo.setNextNodeEnum(FlowNodeEnum.NODE_102); //根据轨迹获取上一节点操作 List<TaskInfoResponse> tracks = orderService.getTrackByWorkId(bo.getWorkId()); if (CollUtil.isEmpty(tracks)) { throw new FlowException(bo.getWorkId() + "根据估计获取上一节点操作信息异常."); } bo.getUserNames().add(tracks.get(0).getDealUser()); } else { if (bo.getBusiness().getSurveyStaffId() == null) { throw new FlowException("未选择下一节点操作用户."); } bo.getUserNames().add(bo.getBusiness().getSurveyStaffId() + ""); bo.setNextNodeEnum(FlowNodeEnum.NODE_104); } bo.setCommentMsg(builder.toString()); } } /** * 验证参数 * * @param request */ @Override protected void verifyParam(SubmitFlowRequest request) { } /** * 后续处理 * * @param request */ @Override protected void postProcess(SubmitFlowRequest request) { } }