package com.boco.nbd.wios.flow.process; import cn.hutool.core.collection.CollUtil; import com.boco.nbd.cams.core.util.LambdaUtils; import com.boco.nbd.framework.common.ResponseMessage2; 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.FlowConstant; import com.boco.nbd.wios.flow.entity.bo.LocalSubmitFlowBO; import com.boco.nbd.wios.flow.entity.bo.SapStatisticsBO; 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.log.entity.po.InterfaceMonitorPO; import com.boco.nbd.wios.log.enums.InterfaceMonitorEnum; import com.boco.nbd.wios.manage.entity.cams.enums.UploadFileType; import com.boco.nbd.wios.manage.entity.common.bo.UploadFile; import com.boco.nbd.wios.manage.service.impl.OrderService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; /** * @author:cao hai * @date:2022/6/30 17:05 * @version:V1.0 * @description:Process111 * @modify: */ @Service("Process111") @Slf4j public class Process111 extends AbstractFlow { @Autowired protected IOrderService orderService; @Autowired private OrderService oldOrderService; /** * 预处理(业务数据调整) * * @param request */ @Override protected void preProcess(SubmitFlowRequest request) { LocalSubmitFlowBO bo = (LocalSubmitFlowBO) request; if (SubmitTypeEnum.Transfer.equals(bo.getSubmitType())) { bo.userNamesHandler(); bo.getTaskParam().put(FlowConstant.SUPPLIER_ID, bo.getBusiness().getInstallSupplierId()); bo.getTaskParam().put(FlowConstant.SUPPLIER_NAME, bo.getBusiness().getInstallSupplierName()); bo.setCommentMsg(bo.getCurrentNodeEnum().getValue() + "工单转派" + bo.getBusiness().getInstallStaffName()); } else if (SubmitTypeEnum.TaskFlow.equals(bo.getSubmitType())) { bo.setNextNodeEnum(FlowNodeEnum.NODE_112); bo.getBusiness().setInstallSubmitExamineTime(new Date()); bo.setCommentMsg(FlowNodeEnum.NODE_111.getValue()); //不更新order中address bo.getBusiness().setAddress(null); if (bo.getBusinessSurvey() != null) { bo.getBusinessSurvey().setAddress(null); } } } /** * 验证参数 * * @param request */ @Override protected void verifyParam(SubmitFlowRequest request) { } /** * 后续处理 * * @param request */ @Override protected void postProcess(SubmitFlowRequest request) { LocalSubmitFlowBO bo = (LocalSubmitFlowBO) request; //处理增项费用、高附加值 orderService.saveInstallItem(bo); //附件 String fieldName = LambdaUtils.getFieldName(OrderPO::getFiles); if (CollUtil.isNotEmpty(bo.getFormData()) && bo.getFormData().containsKey(fieldName)) { List<UploadFile> fileList = UploadFile.jsonHandle(bo.getFormData().get(fieldName) + "", false); log.info("开始安装资料上传"); // 添加文件 orderService.saveFileItem(fileList, UploadFileType.INSTALL_ORDER, request.getWorkId() + ""); } //调用Sap接口 try { ResponseMessage2<SapStatisticsBO> response = oldOrderService.pushAddNewItems(request.getWorkId()); SapStatisticsBO sapStatisticsBO = response.getData(); if (sapStatisticsBO != null) { InterfaceMonitorPO interfaceMonitorPO = sapStatisticsBO.create(InterfaceMonitorEnum.Evaluation_SyncNewItemSap); orderService.addMonitorLog(interfaceMonitorPO); } } catch (Exception ex) { throw new FlowException(request.getWorkId() + " sap增项推送失败:" + ex.getMessage()); } } }