Process111.java 4.1 KB
Newer Older
苗卫卫 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
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());
        }
    }
}