1088 lines
		
	
	
		
			67 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			1088 lines
		
	
	
		
			67 KiB
		
	
	
	
		
			Java
		
	
	
	
package tqq9.lc123.cloud.app.api.controller;
 | 
						||
 | 
						||
import com.alibaba.fastjson.JSONArray;
 | 
						||
import com.alibaba.fastjson.JSONObject;
 | 
						||
import com.drew.lang.annotations.NotNull;
 | 
						||
import com.google.gson.Gson;
 | 
						||
import kd.bos.dataentity.OperateOption;
 | 
						||
import kd.bos.dataentity.entity.DynamicObject;
 | 
						||
import kd.bos.dataentity.utils.StringUtils;
 | 
						||
import kd.bos.entity.botp.runtime.ConvertOperationResult;
 | 
						||
import kd.bos.entity.botp.runtime.PushArgs;
 | 
						||
import kd.bos.entity.botp.runtime.SourceBillReport;
 | 
						||
import kd.bos.entity.operate.result.IOperateInfo;
 | 
						||
import kd.bos.entity.operate.result.OperationResult;
 | 
						||
import kd.bos.openapi.common.custom.annotation.ApiController;
 | 
						||
import kd.bos.openapi.common.custom.annotation.ApiParam;
 | 
						||
import kd.bos.openapi.common.custom.annotation.ApiPostMapping;
 | 
						||
import kd.bos.openapi.common.result.CustomApiResult;
 | 
						||
import kd.bos.orm.query.QCP;
 | 
						||
import kd.bos.orm.query.QFilter;
 | 
						||
import kd.bos.servicehelper.BusinessDataServiceHelper;
 | 
						||
import kd.bos.servicehelper.botp.ConvertServiceHelper;
 | 
						||
import kd.bos.servicehelper.operation.OperationServiceHelper;
 | 
						||
import tqq9.lc123.cloud.app.api.model.WMSXmlReturn;
 | 
						||
import tqq9.lc123.cloud.app.api.utils.ApiResultExt;
 | 
						||
import tqq9.lc123.cloud.app.api.utils.Constants;
 | 
						||
import tqq9.lc123.cloud.app.plugin.utils.BotpParamUtils;
 | 
						||
 | 
						||
import java.math.BigDecimal;
 | 
						||
import java.util.*;
 | 
						||
 | 
						||
/**
 | 
						||
 * 出库回传java接口插件
 | 
						||
 */
 | 
						||
@ApiController(value = "WMSSaleOutController", desc = "WMS-出库回传")
 | 
						||
 | 
						||
public class WMSSaleOutController {
 | 
						||
 | 
						||
    private static String SM_DELIVERNOTICE = "sm_delivernotice";//发货通知单
 | 
						||
    private static String IM_SALOUTBILL = "im_saloutbill";//销售出库单
 | 
						||
    private static String BILLENTRY = "billentry";//分录
 | 
						||
    private static String SM_RETURNAPPLY = "sm_returnapply";//销售退货申请单
 | 
						||
    private static String TQQ9_OTHEROUTAPPLY = "tqq9_otheroutapply";//其他出库申请
 | 
						||
    private static String IM_OTHEROUTBILL = "im_otheroutbill";//其他出库
 | 
						||
 | 
						||
    private final static HashMap<String, String> billTypeMap = new HashMap<String, String>() {{
 | 
						||
        put("采购订单", "pm_receiptnotice");
 | 
						||
        put("其他入库单", "tqq9_otherinapply");
 | 
						||
        put("销售退货单", "sm_returnapply");
 | 
						||
        put("调拨入库单", "tqq9_otherinapply");
 | 
						||
        put("采购退货单", "pm_purrefundapplybill");
 | 
						||
        put("销售订单", "sm_delivernotice");
 | 
						||
        put("其他出库单", "tqq9_otheroutapply");
 | 
						||
        put("调拨出库单", "tqq9_otheroutapply");
 | 
						||
        put("PTCK", "sm_delivernotice");
 | 
						||
        put("CGTH", "pm_purrefundapplybill");
 | 
						||
        put("DBCK", "tqq9_otheroutapply");
 | 
						||
        put("PKCK", "tqq9_otheroutapply");
 | 
						||
        put("TZCK", "tqq9_otheroutapply");
 | 
						||
        put("YPCK", "tqq9_otheroutapply");
 | 
						||
        put("BSCK", "tqq9_otheroutapply");
 | 
						||
        put("GQCK", "tqq9_otheroutapply");
 | 
						||
        put("CGRK", "pm_receiptnotice");
 | 
						||
        put("DBRK", "tqq9_otherinapply");
 | 
						||
        put("THRK", "sm_returnapply");
 | 
						||
        put("ZPRK", "tqq9_otherinapply");
 | 
						||
        put("PYRK", "tqq9_otherinapply");
 | 
						||
        put("TZRK", "tqq9_otherinapply");
 | 
						||
    }};
 | 
						||
 | 
						||
    @ApiPostMapping(value = "/WMS_SaleOutnPush", desc = "WMS-出库回传")
 | 
						||
    public CustomApiResult<ApiResultExt> WMS_SaleOutnPush
 | 
						||
            (
 | 
						||
                    @NotNull @ApiParam(value = "金蝶源头单据号", required = true) String erpOrderCode,
 | 
						||
                    @NotNull @ApiParam(value = "WMS出库单号", required = true) String wmsOrderCode,
 | 
						||
                    @NotNull @ApiParam(value = "单据类型", required = true) String VoucherType,
 | 
						||
                    @NotNull @ApiParam(value = "库区编号", required = true) String wareCode,
 | 
						||
                    @NotNull @ApiParam(value = "归属", required = true) String companyType,
 | 
						||
                    @NotNull @ApiParam(value = "明细", required = true) JSONArray details) {
 | 
						||
        //返回值初始化
 | 
						||
        ApiResultExt resultExt = new ApiResultExt();
 | 
						||
        List<ApiResultExt.ResultBean> results = new ArrayList<>();
 | 
						||
        resultExt.setResult(results);
 | 
						||
        String billno = erpOrderCode;//单据编号
 | 
						||
        ApiResultExt.ResultBean resultBean = new ApiResultExt.ResultBean();
 | 
						||
        results.add(resultBean);
 | 
						||
        JSONObject key = new JSONObject();
 | 
						||
        key.put("billno", billno);
 | 
						||
        resultBean.setKeys(key);
 | 
						||
        ApiResultExt.Error error = new ApiResultExt.Error();
 | 
						||
        resultBean.setErrors(error);
 | 
						||
        ArrayList<String> rowmsg = new ArrayList<>();
 | 
						||
        error.setRowMsg(rowmsg);
 | 
						||
        String errormsg = null;
 | 
						||
        resultBean.setBillIndex(0);
 | 
						||
        resultBean.setKeys(key);
 | 
						||
        resultBean.setNumber(billno);
 | 
						||
        resultBean.setType(Constants.TYPE_PUSH);
 | 
						||
        //判断回传类型
 | 
						||
        VoucherType=billTypeMap.get(VoucherType);
 | 
						||
        String entityType = "";
 | 
						||
        switch (VoucherType) {
 | 
						||
            case "sm_delivernotice":
 | 
						||
                entityType = "im_saloutbill";
 | 
						||
                break;
 | 
						||
            case "sm_returnapply":
 | 
						||
                entityType = "im_saloutbill";
 | 
						||
                break;
 | 
						||
            case "tqq9_otheroutapply":
 | 
						||
                entityType = "im_otheroutbill";
 | 
						||
                break;
 | 
						||
            default:
 | 
						||
                errormsg = "传入参数 VoucherType 为无效值";
 | 
						||
                resultExt = ApiResultExt.errorRetrun(entityType, errormsg, error, resultExt);
 | 
						||
                return CustomApiResult.success(resultExt);
 | 
						||
        }
 | 
						||
        //必填项校验
 | 
						||
        if (ApiResultExt.validateRequired(VoucherType, "String")) {
 | 
						||
            errormsg = "传入参数 VoucherType 为空";
 | 
						||
            resultExt = ApiResultExt.errorRetrun(entityType, errormsg, error, resultExt);
 | 
						||
        }
 | 
						||
        if (ApiResultExt.validateRequired(billno, "String")) {
 | 
						||
            errormsg = "传入参数 erpOrderCode 为空";
 | 
						||
            resultExt = ApiResultExt.errorRetrun(entityType, errormsg, error, resultExt);
 | 
						||
        }
 | 
						||
        for (int i = 0; i < details.size(); i++) {
 | 
						||
            Object detali = details.get(i);
 | 
						||
            JSONObject detali1 = (JSONObject) detali;
 | 
						||
            BigDecimal quantity = detali1.getBigDecimal("quantity");//出库数量
 | 
						||
            String entryId = detali1.getString("erpDetailId");//金蝶源头单据细单号
 | 
						||
            if (detali1.getString("erpDetailId").length() > 19) {
 | 
						||
                errormsg = "Value " + entryId + " is out of range for a Long. Using default value.";
 | 
						||
                resultExt = ApiResultExt.errorRetrun(entityType, errormsg, error, resultExt);
 | 
						||
                return CustomApiResult.success(resultExt);
 | 
						||
            }
 | 
						||
            DynamicObject isexsit = BusinessDataServiceHelper.loadSingle(VoucherType, new QFilter[]{new QFilter("billentry.id", QCP.equals, detali1.getLong("erpDetailId"))});
 | 
						||
            if (isexsit == null) {
 | 
						||
                errormsg = "传入参数 erpDetailId 在金蝶系统中未查询到对应单据";
 | 
						||
                resultExt = ApiResultExt.errorRetrun(entityType, errormsg, error, resultExt);
 | 
						||
                return CustomApiResult.success(resultExt);
 | 
						||
            }
 | 
						||
            if (ApiResultExt.validateRequired(quantity, "BigDecimal")) {
 | 
						||
                errormsg = "传入参数 quantity 为空";
 | 
						||
                resultExt = ApiResultExt.errorRetrun(entityType, errormsg, error, resultExt);
 | 
						||
            }
 | 
						||
            if (ApiResultExt.validateRequired(entryId, "String")) {
 | 
						||
                errormsg = "传入参数 erpDetailId 为空";
 | 
						||
                resultExt = ApiResultExt.errorRetrun(entityType, errormsg, error, resultExt);
 | 
						||
            }
 | 
						||
        }
 | 
						||
        rowmsg = resultExt.getResult().get(0).getErrors().getRowMsg();
 | 
						||
        if (!rowmsg.isEmpty()) {
 | 
						||
            return CustomApiResult.success(resultExt);
 | 
						||
        }
 | 
						||
        //发货通知单
 | 
						||
        if (StringUtils.equals("sm_delivernotice", VoucherType)) {
 | 
						||
            //查询单据在金蝶系统中是否存在
 | 
						||
            DynamicObject sm_delivernotice = BusinessDataServiceHelper.loadSingle(SM_DELIVERNOTICE, new QFilter[]{new QFilter("billno", QCP.equals, billno)});
 | 
						||
            if (sm_delivernotice == null) {
 | 
						||
                errormsg = "根据传入编号:" + billno + "未找到对应发货通知单";
 | 
						||
                resultExt = ApiResultExt.errorRetrun(entityType, errormsg, error, resultExt);
 | 
						||
                return CustomApiResult.success(resultExt);
 | 
						||
            }
 | 
						||
            //参数值组装
 | 
						||
            Long id = sm_delivernotice.getLong("id");
 | 
						||
            Map<String, Object> param = new HashMap<>();//传入转换规则处理参数
 | 
						||
            HashMap<Long, Set<Long>> entitypkMap = new HashMap<>();//上下游id映射Map
 | 
						||
            JSONObject detailObject = new JSONObject();
 | 
						||
            for (Object detail : details) {
 | 
						||
                JSONObject detail1 = (JSONObject) detail;
 | 
						||
                String entryId = detail1.getString("erpDetailId");//金蝶源头单据细单号
 | 
						||
                BigDecimal quantity = detail1.getBigDecimal("quantity");//出库数量
 | 
						||
                String uniqueCode = detail1.getString("uniqueCode");//商品编码
 | 
						||
                Date manufactureDate = detail1.getDate("manufactureDate");//生产日期
 | 
						||
                Date expirationDate = detail1.getDate("expirationDate");//失效期
 | 
						||
                String batch = detail1.getString("batch");//批次
 | 
						||
                String registrationCode = detail1.getString("registrationCode");//注册证号
 | 
						||
                String licenceCode = detail1.getString("licenceCode");//生产许可证
 | 
						||
                String producer = detail1.getString("producer");//生产厂商
 | 
						||
                detailObject.put("entryId", entryId);
 | 
						||
                detailObject.put("uniqueCode", uniqueCode);
 | 
						||
                detailObject.put("quantity", quantity);
 | 
						||
                detailObject.put("manufactureDate", manufactureDate);
 | 
						||
                detailObject.put("expirationDate", expirationDate);
 | 
						||
                detailObject.put("batch", batch);
 | 
						||
                detailObject.put("registrationCode", registrationCode);
 | 
						||
                detailObject.put("licenceCode", licenceCode);
 | 
						||
                detailObject.put("producer", producer);
 | 
						||
                detailObject.put("VoucherType", VoucherType);
 | 
						||
                entitypkMap.computeIfAbsent(id, k -> new HashSet<>()).add(detail1.getLong("erpDetailId"));
 | 
						||
                param.put(entryId, detailObject);
 | 
						||
            }
 | 
						||
            //开始下推
 | 
						||
            String rule = BotpParamUtils.getBotpRuleId(SM_DELIVERNOTICE, IM_SALOUTBILL, "发货通知单_销售出库单_转换规则_扩展");
 | 
						||
            PushArgs pushArgs = BotpParamUtils.getPushArgs(SM_DELIVERNOTICE, IM_SALOUTBILL, BILLENTRY, param, entitypkMap, rule);
 | 
						||
            ConvertOperationResult pushResult = ConvertServiceHelper.pushAndSave(pushArgs);
 | 
						||
            List<SourceBillReport> billReports = pushResult.getBillReports();
 | 
						||
            //下推失败直接返回
 | 
						||
            if (!pushResult.isSuccess()) {
 | 
						||
                for (SourceBillReport billReport : billReports) {
 | 
						||
                    String billMessage = billReport.getFailMessage();
 | 
						||
                    resultExt = ApiResultExt.errorRetrun(entityType, billMessage, error, resultExt);
 | 
						||
                }
 | 
						||
                rowmsg = resultExt.getResult().get(0).getErrors().getRowMsg();
 | 
						||
                if (!rowmsg.isEmpty()) {
 | 
						||
                    return CustomApiResult.success(resultExt);
 | 
						||
                }
 | 
						||
            }
 | 
						||
            //获取下推单据id准备提交审核操作
 | 
						||
            Set<Object> targetBillIds = pushResult.getTargetBillIds();
 | 
						||
            DynamicObject[] load = new DynamicObject[targetBillIds.size()];
 | 
						||
            Iterator<Object> iterator = targetBillIds.iterator();
 | 
						||
            for (int i = 0; iterator.hasNext(); i++) {
 | 
						||
                Object next = iterator.next();
 | 
						||
                DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(IM_SALOUTBILL, new QFilter[]{new QFilter("id", QCP.equals, next)});
 | 
						||
                load[i] = dynamicObject;
 | 
						||
                resultBean.setId(next.toString());
 | 
						||
                resultBean.setBillStatus(true);
 | 
						||
            }
 | 
						||
//            results.add(resultBean);
 | 
						||
            //开始提交
 | 
						||
            OperateOption operateOption = OperateOption.create();
 | 
						||
            OperationResult sumbitResult = OperationServiceHelper.executeOperate(Constants.TYPE_SUBMIT, IM_SALOUTBILL, load, operateOption);
 | 
						||
            if (!sumbitResult.isSuccess()) {
 | 
						||
                List<IOperateInfo> allErrorOrValidateInfo = sumbitResult.getAllErrorOrValidateInfo();
 | 
						||
                if (allErrorOrValidateInfo.size() != 0) {
 | 
						||
                    for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) {
 | 
						||
                        HashMap<String, Object> returnMap = resultExt.addErrorToResultBeanByNumber(results, iOperateInfo, IM_SALOUTBILL);
 | 
						||
                        results = (List<ApiResultExt.ResultBean>) returnMap.get("ResultBeanList");
 | 
						||
                    }
 | 
						||
                } else if (StringUtils.isNotBlank(sumbitResult.getMessage())) {
 | 
						||
                    HashMap<String, Object> returnMap = resultExt.addOneErrorToResultBeanByNumber(results, sumbitResult.getMessage(), IM_SALOUTBILL);
 | 
						||
                    results = (List<ApiResultExt.ResultBean>) returnMap.get("ResultBeanList");
 | 
						||
                } else {
 | 
						||
                    HashMap<String, Object> returnMap = resultExt.addOneErrorToResultBeanByNumber(results, sumbitResult.getInteractionContext().getSimpleMessage(), IM_SALOUTBILL);
 | 
						||
                    results = (List<ApiResultExt.ResultBean>) returnMap.get("ResultBeanList");
 | 
						||
                }
 | 
						||
            } else {
 | 
						||
                //开始审核
 | 
						||
                OperationResult auditResult = OperationServiceHelper.executeOperate(Constants.TYPE_AUDIT, IM_SALOUTBILL, load, operateOption);
 | 
						||
                if (!auditResult.isSuccess()) {
 | 
						||
                    List<IOperateInfo> allErrorOrValidateInfo1 = auditResult.getAllErrorOrValidateInfo();
 | 
						||
                    if (allErrorOrValidateInfo1.size() != 0) {
 | 
						||
                        for (IOperateInfo iOperateInfo : allErrorOrValidateInfo1) {
 | 
						||
                            HashMap<String, Object> returnMap = resultExt.addErrorToResultBeanByNumber(results, iOperateInfo, IM_SALOUTBILL);
 | 
						||
                            results = (List<ApiResultExt.ResultBean>) returnMap.get("ResultBeanList");
 | 
						||
                        }
 | 
						||
                    } else if (StringUtils.isNotBlank(auditResult.getMessage())) {
 | 
						||
                        HashMap<String, Object> returnMap = resultExt.addOneErrorToResultBeanByNumber(results, auditResult.getMessage(), IM_SALOUTBILL);
 | 
						||
                        results = (List<ApiResultExt.ResultBean>) returnMap.get("ResultBeanList");
 | 
						||
                    } else {
 | 
						||
                        HashMap<String, Object> returnMap = resultExt.addOneErrorToResultBeanByNumber(results, auditResult.getInteractionContext().getSimpleMessage(), IM_SALOUTBILL);
 | 
						||
                        results = (List<ApiResultExt.ResultBean>) returnMap.get("ResultBeanList");
 | 
						||
                    }
 | 
						||
                }
 | 
						||
            }
 | 
						||
            //销售退货单
 | 
						||
        } else if (StringUtils.equals("sm_returnapply", VoucherType)) {
 | 
						||
            //查询单据在金蝶系统中是否存在
 | 
						||
            DynamicObject sm_returnapply = BusinessDataServiceHelper.loadSingle(SM_RETURNAPPLY, new QFilter[]{new QFilter("billno", QCP.equals, billno)});
 | 
						||
            if (sm_returnapply == null) {
 | 
						||
                errormsg = "根据传入编号:" + billno + "未找到对应销售退货单";
 | 
						||
                resultExt = ApiResultExt.errorRetrun(entityType, errormsg, error, resultExt);
 | 
						||
                return CustomApiResult.success(resultExt);
 | 
						||
            }
 | 
						||
            //参数值组装
 | 
						||
            Long id = sm_returnapply.getLong("id");
 | 
						||
            Map<String, Object> param = new HashMap<>();//传入转换规则处理参数
 | 
						||
            HashMap<Long, Set<Long>> entitypkMap = new HashMap<>();//上下游id映射Map
 | 
						||
            JSONObject detailObject = new JSONObject();
 | 
						||
            for (Object detail : details) {
 | 
						||
                JSONObject detail1 = (JSONObject) detail;
 | 
						||
                String entryId = detail1.getString("erpDetailId");//金蝶源头单据细单号
 | 
						||
                BigDecimal quantity = detail1.getBigDecimal("quantity");//出库数量
 | 
						||
                String uniqueCode = detail1.getString("uniqueCode");//商品编码
 | 
						||
                Date manufactureDate = detail1.getDate("manufactureDate");//生产日期
 | 
						||
                Date expirationDate = detail1.getDate("expirationDate");//失效期
 | 
						||
                String batch = detail1.getString("batch");//批次
 | 
						||
                String registrationCode = detail1.getString("registrationCode");//注册证号
 | 
						||
                String licenceCode = detail1.getString("licenceCode");//生产许可证
 | 
						||
                String producer = detail1.getString("producer");//生产厂商
 | 
						||
                detailObject.put("entryId", entryId);
 | 
						||
                detailObject.put("uniqueCode", uniqueCode);
 | 
						||
                detailObject.put("quantity", quantity);
 | 
						||
                detailObject.put("manufactureDate", manufactureDate);
 | 
						||
                detailObject.put("expirationDate", expirationDate);
 | 
						||
                detailObject.put("batch", batch);
 | 
						||
                detailObject.put("registrationCode", registrationCode);
 | 
						||
                detailObject.put("licenceCode", licenceCode);
 | 
						||
                detailObject.put("producer", producer);
 | 
						||
                detailObject.put("VoucherType", VoucherType);
 | 
						||
                entitypkMap.computeIfAbsent(id, k -> new HashSet<>()).add(detail1.getLong("erpDetailId"));
 | 
						||
                param.put(entryId, detailObject);
 | 
						||
            }
 | 
						||
            //开始下推
 | 
						||
            String rule = BotpParamUtils.getBotpRuleId(SM_RETURNAPPLY, IM_SALOUTBILL, "销售退货申请单_销售出库单_转换规则_扩展");
 | 
						||
            PushArgs pushArgs = BotpParamUtils.getPushArgs(SM_RETURNAPPLY, IM_SALOUTBILL, BILLENTRY, param, entitypkMap, rule);
 | 
						||
            ConvertOperationResult pushResult = ConvertServiceHelper.pushAndSave(pushArgs);
 | 
						||
            List<SourceBillReport> billReports = pushResult.getBillReports();
 | 
						||
            if (!pushResult.isSuccess()) {
 | 
						||
                for (SourceBillReport billReport : billReports) {
 | 
						||
                    String billMessage = billReport.getFailMessage();
 | 
						||
                    resultExt = ApiResultExt.errorRetrun(entityType, billMessage, error, resultExt);
 | 
						||
                }
 | 
						||
                rowmsg = resultExt.getResult().get(0).getErrors().getRowMsg();
 | 
						||
                if (!rowmsg.isEmpty()) {
 | 
						||
                    return CustomApiResult.success(resultExt);
 | 
						||
                }
 | 
						||
            }
 | 
						||
            //获取下推单据id准备提交审核操作
 | 
						||
            Set<Object> targetBillIds = pushResult.getTargetBillIds();
 | 
						||
            DynamicObject[] load = new DynamicObject[targetBillIds.size()];
 | 
						||
            Iterator<Object> iterator = targetBillIds.iterator();
 | 
						||
            for (int i = 0; iterator.hasNext(); i++) {
 | 
						||
                Object next = iterator.next();
 | 
						||
                DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(IM_SALOUTBILL, new QFilter[]{new QFilter("id", QCP.equals, next)});
 | 
						||
                load[i] = dynamicObject;
 | 
						||
                resultBean.setId(next.toString());
 | 
						||
                resultBean.setBillStatus(true);
 | 
						||
            }
 | 
						||
            //开始提交
 | 
						||
            OperateOption operateOption = OperateOption.create();
 | 
						||
            OperationResult sumbitResult = OperationServiceHelper.executeOperate(Constants.TYPE_SUBMIT, IM_SALOUTBILL, load, operateOption);
 | 
						||
            if (!sumbitResult.isSuccess()) {
 | 
						||
                List<IOperateInfo> allErrorOrValidateInfo = sumbitResult.getAllErrorOrValidateInfo();
 | 
						||
                if (allErrorOrValidateInfo.size() != 0) {
 | 
						||
                    for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) {
 | 
						||
                        HashMap<String, Object> returnMap = resultExt.addErrorToResultBeanByNumber(results, iOperateInfo, IM_SALOUTBILL);
 | 
						||
                        results = (List<ApiResultExt.ResultBean>) returnMap.get("ResultBeanList");
 | 
						||
                    }
 | 
						||
                } else if (StringUtils.isNotBlank(sumbitResult.getMessage())) {
 | 
						||
                    HashMap<String, Object> returnMap = resultExt.addOneErrorToResultBeanByNumber(results, sumbitResult.getMessage(), IM_SALOUTBILL);
 | 
						||
                    results = (List<ApiResultExt.ResultBean>) returnMap.get("ResultBeanList");
 | 
						||
                } else {
 | 
						||
                    HashMap<String, Object> returnMap = resultExt.addOneErrorToResultBeanByNumber(results, sumbitResult.getInteractionContext().getSimpleMessage(), IM_SALOUTBILL);
 | 
						||
                    results = (List<ApiResultExt.ResultBean>) returnMap.get("ResultBeanList");
 | 
						||
                }
 | 
						||
            } else {
 | 
						||
                //开始审核
 | 
						||
                OperationResult auditResult = OperationServiceHelper.executeOperate(Constants.TYPE_AUDIT, IM_SALOUTBILL, load, operateOption);
 | 
						||
                if (!auditResult.isSuccess()) {
 | 
						||
                    List<IOperateInfo> allErrorOrValidateInfo1 = auditResult.getAllErrorOrValidateInfo();
 | 
						||
                    if (allErrorOrValidateInfo1.size() != 0) {
 | 
						||
                        for (IOperateInfo iOperateInfo : allErrorOrValidateInfo1) {
 | 
						||
                            HashMap<String, Object> returnMap = resultExt.addErrorToResultBeanByNumber(results, iOperateInfo, IM_SALOUTBILL);
 | 
						||
                            results = (List<ApiResultExt.ResultBean>) returnMap.get("ResultBeanList");
 | 
						||
                        }
 | 
						||
                    } else if (StringUtils.isNotBlank(auditResult.getMessage())) {
 | 
						||
                        HashMap<String, Object> returnMap = resultExt.addOneErrorToResultBeanByNumber(results, auditResult.getMessage(), IM_SALOUTBILL);
 | 
						||
                        results = (List<ApiResultExt.ResultBean>) returnMap.get("ResultBeanList");
 | 
						||
                    } else {
 | 
						||
                        HashMap<String, Object> returnMap = resultExt.addOneErrorToResultBeanByNumber(results, auditResult.getInteractionContext().getSimpleMessage(), IM_SALOUTBILL);
 | 
						||
                        results = (List<ApiResultExt.ResultBean>) returnMap.get("ResultBeanList");
 | 
						||
                    }
 | 
						||
                }
 | 
						||
            }
 | 
						||
            //销售退货单
 | 
						||
        } else if (StringUtils.equals("tqq9_otheroutapply", VoucherType)) {
 | 
						||
            //查询单据在金蝶系统中是否存在
 | 
						||
            DynamicObject tqq9_otheroutapply = BusinessDataServiceHelper.loadSingle(TQQ9_OTHEROUTAPPLY, new QFilter[]{new QFilter("billno", QCP.equals, billno)});
 | 
						||
            if (tqq9_otheroutapply == null) {
 | 
						||
                errormsg = "根据传入编号:" + billno + "未找到对应其他出库申请单";
 | 
						||
                resultExt = ApiResultExt.errorRetrun(entityType, errormsg, error, resultExt);
 | 
						||
                return CustomApiResult.success(resultExt);
 | 
						||
            }
 | 
						||
            //根据业务类型判断转换规则名称
 | 
						||
            DynamicObject bd_biztype = tqq9_otheroutapply.getDynamicObject("tqq9_biztype");//业务类型
 | 
						||
            String rulanema = null;
 | 
						||
            if (!StringUtils.equals("612", bd_biztype.getString("number"))) {
 | 
						||
                rulanema = "除调拨类型";
 | 
						||
            } else {
 | 
						||
                String tqq9_dblx = tqq9_otheroutapply.getString("tqq9_dblx");//调拨类型
 | 
						||
                if (StringUtils.equals("A", tqq9_dblx)) {
 | 
						||
                    rulanema = "组织内调拨";
 | 
						||
                } else {
 | 
						||
                    rulanema = "跨组织调拨";
 | 
						||
                }
 | 
						||
            }
 | 
						||
            String rule = BotpParamUtils.getBotpRuleId(TQQ9_OTHEROUTAPPLY, IM_OTHEROUTBILL, rulanema);
 | 
						||
            //组装参数值
 | 
						||
            Long id = tqq9_otheroutapply.getLong("id");
 | 
						||
            Map<String, Object> param = new HashMap<>();//传入转换规则处理参数
 | 
						||
            HashMap<Long, Set<Long>> entitypkMap = new HashMap<>();//上下游id映射Map
 | 
						||
            JSONObject detailObject = new JSONObject();
 | 
						||
            for (Object detail : details) {
 | 
						||
                JSONObject detail1 = (JSONObject) detail;
 | 
						||
                String entryId = detail1.getString("erpDetailId");//金蝶源头单据细单号
 | 
						||
                BigDecimal quantity = detail1.getBigDecimal("quantity");//出库数量
 | 
						||
                String uniqueCode = detail1.getString("uniqueCode");//商品编码
 | 
						||
                Date manufactureDate = detail1.getDate("manufactureDate");//生产日期
 | 
						||
                Date expirationDate = detail1.getDate("expirationDate");//失效期
 | 
						||
                String batch = detail1.getString("batch");//批次
 | 
						||
                String registrationCode = detail1.getString("registrationCode");//注册证号
 | 
						||
                String licenceCode = detail1.getString("licenceCode");//生产许可证
 | 
						||
                String producer = detail1.getString("producer");//生产厂商
 | 
						||
                detailObject.put("entryId", entryId);
 | 
						||
                detailObject.put("uniqueCode", uniqueCode);
 | 
						||
                detailObject.put("quantity", quantity);
 | 
						||
                detailObject.put("manufactureDate", manufactureDate);
 | 
						||
                detailObject.put("expirationDate", expirationDate);
 | 
						||
                detailObject.put("batch", batch);
 | 
						||
                detailObject.put("registrationCode", registrationCode);
 | 
						||
                detailObject.put("licenceCode", licenceCode);
 | 
						||
                detailObject.put("producer", producer);
 | 
						||
                detailObject.put("VoucherType", VoucherType);
 | 
						||
                entitypkMap.computeIfAbsent(id, k -> new HashSet<>()).add(detail1.getLong("erpDetailId"));
 | 
						||
                param.put(entryId, detailObject);
 | 
						||
            }
 | 
						||
            //开始下推
 | 
						||
            PushArgs pushArgs = BotpParamUtils.getPushArgs(TQQ9_OTHEROUTAPPLY, IM_OTHEROUTBILL, BILLENTRY, param, entitypkMap, rule);
 | 
						||
            ConvertOperationResult pushResult = ConvertServiceHelper.pushAndSave(pushArgs);
 | 
						||
            List<SourceBillReport> billReports = pushResult.getBillReports();
 | 
						||
            if (!pushResult.isSuccess()) {
 | 
						||
                for (SourceBillReport billReport : billReports) {
 | 
						||
                    String billMessage = billReport.getFailMessage();
 | 
						||
                    resultExt = ApiResultExt.errorRetrun(entityType, billMessage, error, resultExt);
 | 
						||
                }
 | 
						||
                rowmsg = resultExt.getResult().get(0).getErrors().getRowMsg();
 | 
						||
                if (!rowmsg.isEmpty()) {
 | 
						||
                    return CustomApiResult.success(resultExt);
 | 
						||
                }
 | 
						||
            }
 | 
						||
            //获取下推单据id准备提交审核操作
 | 
						||
            Set<Object> targetBillIds = pushResult.getTargetBillIds();
 | 
						||
            DynamicObject[] load = new DynamicObject[targetBillIds.size()];
 | 
						||
            Iterator<Object> iterator = targetBillIds.iterator();
 | 
						||
            for (int i = 0; iterator.hasNext(); i++) {
 | 
						||
                Object next = iterator.next();
 | 
						||
                DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(IM_OTHEROUTBILL, new QFilter[]{new QFilter("id", QCP.equals, next)});
 | 
						||
                load[i] = dynamicObject;
 | 
						||
                resultBean.setId(next.toString());
 | 
						||
                resultBean.setBillStatus(true);
 | 
						||
            }
 | 
						||
//            results.add(resultBean);
 | 
						||
            //开始提交
 | 
						||
            OperateOption operateOption = OperateOption.create();
 | 
						||
            OperationResult sumbitResult = OperationServiceHelper.executeOperate(Constants.TYPE_SUBMIT, IM_OTHEROUTBILL, load, operateOption);
 | 
						||
            if (!sumbitResult.isSuccess()) {
 | 
						||
                List<IOperateInfo> allErrorOrValidateInfo = sumbitResult.getAllErrorOrValidateInfo();
 | 
						||
                if (allErrorOrValidateInfo.size() != 0) {
 | 
						||
                    for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) {
 | 
						||
                        HashMap<String, Object> returnMap = resultExt.addErrorToResultBeanByNumber(results, iOperateInfo, IM_OTHEROUTBILL);
 | 
						||
                        results = (List<ApiResultExt.ResultBean>) returnMap.get("ResultBeanList");
 | 
						||
                    }
 | 
						||
                } else if (StringUtils.isNotBlank(sumbitResult.getMessage())) {
 | 
						||
                    HashMap<String, Object> returnMap = resultExt.addOneErrorToResultBeanByNumber(results, sumbitResult.getMessage(), IM_OTHEROUTBILL);
 | 
						||
                    results = (List<ApiResultExt.ResultBean>) returnMap.get("ResultBeanList");
 | 
						||
                } else {
 | 
						||
                    HashMap<String, Object> returnMap = resultExt.addOneErrorToResultBeanByNumber(results, sumbitResult.getInteractionContext().getSimpleMessage(), IM_OTHEROUTBILL);
 | 
						||
                    results = (List<ApiResultExt.ResultBean>) returnMap.get("ResultBeanList");
 | 
						||
                }
 | 
						||
            } else {
 | 
						||
                //开始审核
 | 
						||
                OperationResult auditResult = OperationServiceHelper.executeOperate(Constants.TYPE_AUDIT, IM_OTHEROUTBILL, load, operateOption);
 | 
						||
                if (!auditResult.isSuccess()) {
 | 
						||
                    List<IOperateInfo> allErrorOrValidateInfo1 = auditResult.getAllErrorOrValidateInfo();
 | 
						||
                    if (allErrorOrValidateInfo1.size() != 0) {
 | 
						||
                        for (IOperateInfo iOperateInfo : allErrorOrValidateInfo1) {
 | 
						||
                            HashMap<String, Object> returnMap = resultExt.addErrorToResultBeanByNumber(results, iOperateInfo, IM_OTHEROUTBILL);
 | 
						||
                            results = (List<ApiResultExt.ResultBean>) returnMap.get("ResultBeanList");
 | 
						||
                        }
 | 
						||
                    } else if (StringUtils.isNotBlank(auditResult.getMessage())) {
 | 
						||
                        HashMap<String, Object> returnMap = resultExt.addOneErrorToResultBeanByNumber(results, auditResult.getMessage(), IM_OTHEROUTBILL);
 | 
						||
                        results = (List<ApiResultExt.ResultBean>) returnMap.get("ResultBeanList");
 | 
						||
                    } else {
 | 
						||
                        HashMap<String, Object> returnMap = resultExt.addOneErrorToResultBeanByNumber(results, auditResult.getInteractionContext().getSimpleMessage(), IM_OTHEROUTBILL);
 | 
						||
                        results = (List<ApiResultExt.ResultBean>) returnMap.get("ResultBeanList");
 | 
						||
                    }
 | 
						||
                }
 | 
						||
            }
 | 
						||
        }
 | 
						||
        //回传成功
 | 
						||
        int failCount = 0;//失败数量
 | 
						||
        int successCount = 1;//成功数量
 | 
						||
        resultExt.setFailCount(failCount);
 | 
						||
        resultExt.setSuccessCount(successCount);
 | 
						||
        resultExt.setResult(results);
 | 
						||
        return CustomApiResult.success(resultExt);
 | 
						||
    }
 | 
						||
 | 
						||
    @ApiPostMapping(value = "/WMS_SaleOutnPush_SH", desc = "WMS-出库回传")
 | 
						||
    public CustomApiResult<WMSXmlReturn> WMS_SaleOutnPush_SH
 | 
						||
            (@NotNull @ApiParam(value = "入参", required = true) Map<String, Object> dataMap) {
 | 
						||
        //返回值初始化
 | 
						||
        Gson gson = new Gson();
 | 
						||
        JSONObject data = gson.fromJson(dataMap.toString(), JSONObject.class);
 | 
						||
        JSONObject request = data.getJSONObject("request");
 | 
						||
        JSONObject deliveryOrder = request.getJSONObject("deliveryOrder");
 | 
						||
        String billno = deliveryOrder.getString("deliveryOrderCode");
 | 
						||
        String orderType = deliveryOrder.getString("orderType");
 | 
						||
        orderType=billTypeMap.get(orderType);
 | 
						||
        JSONObject orderLines = request.getJSONObject("orderLines");
 | 
						||
        WMSXmlReturn wmsXmlReturn = new WMSXmlReturn();
 | 
						||
        WMSXmlReturn.Response response = new WMSXmlReturn.Response();
 | 
						||
        wmsXmlReturn.setResponse(response);
 | 
						||
        response.setCode("0");
 | 
						||
        response.setFlag("success");
 | 
						||
        response.setMessage("成功");
 | 
						||
        StringBuilder errormsg = new StringBuilder();
 | 
						||
        ArrayList<String> entryOrderTypes = new ArrayList<>();
 | 
						||
        entryOrderTypes.add(SM_DELIVERNOTICE);
 | 
						||
        entryOrderTypes.add(SM_RETURNAPPLY);
 | 
						||
        entryOrderTypes.add(TQQ9_OTHEROUTAPPLY);
 | 
						||
        if (!entryOrderTypes.contains(orderType)) {
 | 
						||
            errormsg = errormsg.append(";").append("传入参数 orderType 为无效值");
 | 
						||
            response.setMessage(errormsg.substring(1));
 | 
						||
            response.setCode("-1");
 | 
						||
            response.setFlag("failure");
 | 
						||
            return CustomApiResult.success(wmsXmlReturn);
 | 
						||
        }
 | 
						||
        //必填项校验
 | 
						||
        if (ApiResultExt.validateRequired(orderType, "String")) {
 | 
						||
            errormsg = errormsg.append(";").append("传入参数 orderType 为空");
 | 
						||
        }
 | 
						||
        if (ApiResultExt.validateRequired(billno, "String")) {
 | 
						||
            errormsg = errormsg.append(";").append("传入参数 deliveryOrderCode 为空");
 | 
						||
        }
 | 
						||
        if (orderLines.get("orderLine") instanceof Map) {
 | 
						||
            JSONObject orderLine = orderLines.getJSONObject("orderLine");
 | 
						||
            BigDecimal actualQty = orderLine.getBigDecimal("actualQty");//出库数量
 | 
						||
            String orderLineNo = orderLine.getString("orderLineNo");//金蝶源头单据细单号
 | 
						||
            if (orderLine.getString("orderLineNo").length() > 19) {
 | 
						||
                errormsg = errormsg.append(";").append("Value " + orderLineNo + " is out of range for a Long. Using default value");
 | 
						||
                response.setMessage(errormsg.substring(1));
 | 
						||
                response.setCode("-1");
 | 
						||
                response.setFlag("failure");
 | 
						||
                return CustomApiResult.success(wmsXmlReturn);
 | 
						||
            }
 | 
						||
            DynamicObject isexsit = BusinessDataServiceHelper.loadSingle(orderType, new QFilter[]{new QFilter("billentry.id", QCP.equals, orderLine.getLong("orderLineNo"))});
 | 
						||
            if (isexsit == null) {
 | 
						||
                errormsg = errormsg.append(";").append("传入参数 orderLineNo 在金蝶系统中未查询到对应单据");
 | 
						||
            }
 | 
						||
            if (ApiResultExt.validateRequired(actualQty, "BigDecimal")) {
 | 
						||
                errormsg = errormsg.append(";").append("传入参数 actualQty 为空");
 | 
						||
            }
 | 
						||
            if (ApiResultExt.validateRequired(orderLineNo, "String")) {
 | 
						||
                errormsg = errormsg.append(";").append("传入参数 orderLineNo 为空");
 | 
						||
            }
 | 
						||
            if (errormsg.length() > 0) {
 | 
						||
                response.setMessage(errormsg.substring(1));
 | 
						||
                response.setCode("-1");
 | 
						||
                response.setFlag("failure");
 | 
						||
                return CustomApiResult.success(wmsXmlReturn);
 | 
						||
            }
 | 
						||
        } else {
 | 
						||
            JSONArray orderLine = orderLines.getJSONArray("orderLine");
 | 
						||
            for (Object obj : orderLine) {
 | 
						||
                JSONObject orderLine1 = gson.fromJson(gson.toJson(obj), JSONObject.class);
 | 
						||
                BigDecimal actualQty = orderLine1.getBigDecimal("actualQty");//出库数量
 | 
						||
                String orderLineNo = orderLine1.getString("orderLineNo");//金蝶源头单据细单号
 | 
						||
                if (orderLineNo.length() > 19) {
 | 
						||
                    errormsg = errormsg.append(";").append("Value " + orderLineNo + " is out of range for a Long. Using default value");
 | 
						||
                    response.setMessage(errormsg.substring(1));
 | 
						||
                    response.setCode("-1");
 | 
						||
                    response.setFlag("failure");
 | 
						||
                    return CustomApiResult.success(wmsXmlReturn);
 | 
						||
                }
 | 
						||
                DynamicObject isexsit = BusinessDataServiceHelper.loadSingle(orderType, new QFilter[]{new QFilter("billentry.id", QCP.equals, orderLine1.getLong("orderLineNo"))});
 | 
						||
                if (isexsit == null) {
 | 
						||
                    errormsg = errormsg.append(";").append("传入参数 orderLineNo 在金蝶系统中未查询到对应单据");
 | 
						||
                }
 | 
						||
                if (ApiResultExt.validateRequired(actualQty, "BigDecimal")) {
 | 
						||
                    errormsg = errormsg.append(";").append("传入参数 actualQty 为空");
 | 
						||
                }
 | 
						||
                if (ApiResultExt.validateRequired(orderLineNo, "String")) {
 | 
						||
                    errormsg = errormsg.append(";").append("传入参数 orderLineNo 为空");
 | 
						||
                }
 | 
						||
            }
 | 
						||
            if (errormsg.length() > 0) {
 | 
						||
                response.setMessage(errormsg.substring(1));
 | 
						||
                response.setCode("-1");
 | 
						||
                response.setFlag("failure");
 | 
						||
                return CustomApiResult.success(wmsXmlReturn);
 | 
						||
            }
 | 
						||
        }
 | 
						||
        //发货通知单
 | 
						||
        if (StringUtils.equals("sm_delivernotice", orderType)) {
 | 
						||
            //查询单据在金蝶系统中是否存在
 | 
						||
            DynamicObject sm_delivernotice = BusinessDataServiceHelper.loadSingle(SM_DELIVERNOTICE, new QFilter[]{new QFilter("billno", QCP.equals, billno)});
 | 
						||
            if (sm_delivernotice == null) {
 | 
						||
                errormsg = errormsg.append(";").append("根据传入编号:" + billno + "未找到对应发货通知单");
 | 
						||
                response.setMessage(errormsg.substring(1));
 | 
						||
                response.setCode("-1");
 | 
						||
                response.setFlag("failure");
 | 
						||
                return CustomApiResult.success(wmsXmlReturn);
 | 
						||
            }
 | 
						||
            Map<String, Object> param = new HashMap<>();//传入转换规则处理参数
 | 
						||
            HashMap<Long, Set<Long>> entitypkMap = new HashMap<>();//上下游id映射Map
 | 
						||
            //参数值组装
 | 
						||
            if (orderLines.get("orderLine") instanceof Map) {
 | 
						||
                JSONObject orderLine = orderLines.getJSONObject("orderLine");
 | 
						||
                Long id = sm_delivernotice.getLong("id");
 | 
						||
                JSONObject detailObject = new JSONObject();
 | 
						||
                String orderLineNo = orderLine.getString("orderLineNo");//金蝶源头单据细单号
 | 
						||
                BigDecimal actualQty = orderLine.getBigDecimal("actualQty");//出库数量
 | 
						||
                String itemCode = orderLine.getString("itemCode");//商品编码
 | 
						||
                Date productDate = orderLine.getDate("productDate");//生产日期
 | 
						||
                Date expireDate = orderLine.getDate("expireDate");//失效期
 | 
						||
                String batchCode = orderLine.getString("batchCode");//批次
 | 
						||
                String key1 = null;//注册证号
 | 
						||
                String key3 = null;//生产许可证
 | 
						||
                String key2 = null;//生产厂商
 | 
						||
                if (orderLine.get("extendProps") instanceof Map) {
 | 
						||
                    JSONObject extendProps = orderLine.getJSONObject("extendProps");//批次信息
 | 
						||
                    key1 = extendProps.getString("key1");//注册证号
 | 
						||
                    key3 = extendProps.getString("key3");//生产许可证
 | 
						||
                    key2 = extendProps.getString("key2");//生产厂商
 | 
						||
                }else{
 | 
						||
                    JSONArray extendProps = orderLine.getJSONArray("extendProps");
 | 
						||
                    for (Object o : extendProps) {
 | 
						||
                        JSONObject extendProp = gson.fromJson(gson.toJson(o), JSONObject.class);
 | 
						||
                        if(extendProp.getString("key1")!=null){
 | 
						||
                            key1 = extendProp.getString("key1");//注册证号
 | 
						||
                            key3 = extendProp.getString("key3");//生产许可证
 | 
						||
                            key2 = extendProp.getString("key2");//生产厂商
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                detailObject.put("entryId", orderLineNo);
 | 
						||
                detailObject.put("uniqueCode", itemCode);
 | 
						||
                detailObject.put("quantity", actualQty);
 | 
						||
                detailObject.put("manufactureDate", productDate);
 | 
						||
                detailObject.put("expirationDate", expireDate);
 | 
						||
                detailObject.put("batch", batchCode);
 | 
						||
                detailObject.put("registrationCode", key1);
 | 
						||
                detailObject.put("licenceCode", key3);
 | 
						||
                detailObject.put("producer", key2);
 | 
						||
                detailObject.put("VoucherType", orderType);
 | 
						||
                entitypkMap.computeIfAbsent(id, k -> new HashSet<>()).add(orderLine.getLong("orderLineNo"));
 | 
						||
                param.put(orderLineNo, detailObject);
 | 
						||
            } else {
 | 
						||
                JSONArray orderLine = orderLines.getJSONArray("orderLine");
 | 
						||
                for (Object obj : orderLine) {
 | 
						||
                    JSONObject orderLine1 = gson.fromJson(gson.toJson(obj), JSONObject.class);
 | 
						||
                    Long id = sm_delivernotice.getLong("id");
 | 
						||
                    JSONObject detailObject = new JSONObject();
 | 
						||
                    String orderLineNo = orderLine1.getString("orderLineNo");//金蝶源头单据细单号
 | 
						||
                    BigDecimal actualQty = orderLine1.getBigDecimal("actualQty");//出库数量
 | 
						||
                    String itemCode = orderLine1.getString("itemCode");//商品编码
 | 
						||
                    Date productDate = orderLine1.getDate("productDate");//生产日期
 | 
						||
                    Date expireDate = orderLine1.getDate("expireDate");//失效期
 | 
						||
                    String batchCode = orderLine1.getString("batchCode");//批次
 | 
						||
                    String key1 = null;//注册证号
 | 
						||
                    String key3 = null;//生产许可证
 | 
						||
                    String key2 = null;//生产厂商
 | 
						||
                    if (orderLine1.get("extendProps") instanceof Map) {
 | 
						||
                        JSONObject extendProps = orderLine1.getJSONObject("extendProps");//批次信息
 | 
						||
                        key1 = extendProps.getString("key1");//注册证号
 | 
						||
                        key3 = extendProps.getString("key3");//生产许可证
 | 
						||
                        key2 = extendProps.getString("key2");//生产厂商
 | 
						||
                    }else{
 | 
						||
                        JSONArray extendProps = orderLine1.getJSONArray("extendProps");
 | 
						||
                        for (Object o : extendProps) {
 | 
						||
                            JSONObject extendProp = gson.fromJson(gson.toJson(o), JSONObject.class);
 | 
						||
                            if(extendProp.getString("key1")!=null){
 | 
						||
                                key1 = extendProp.getString("key1");//注册证号
 | 
						||
                                key3 = extendProp.getString("key3");//生产许可证
 | 
						||
                                key2 = extendProp.getString("key2");//生产厂商
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                    detailObject.put("entryId", orderLineNo);
 | 
						||
                    detailObject.put("uniqueCode", itemCode);
 | 
						||
                    detailObject.put("quantity", actualQty);
 | 
						||
                    detailObject.put("manufactureDate", productDate);
 | 
						||
                    detailObject.put("expirationDate", expireDate);
 | 
						||
                    detailObject.put("batch", batchCode);
 | 
						||
                    detailObject.put("registrationCode", key1);
 | 
						||
                    detailObject.put("licenceCode", key3);
 | 
						||
                    detailObject.put("producer", key2);
 | 
						||
                    detailObject.put("VoucherType", orderType);
 | 
						||
                    entitypkMap.computeIfAbsent(id, k -> new HashSet<>()).add(orderLine1.getLong("orderLineNo"));
 | 
						||
                    param.put(orderLineNo, detailObject);
 | 
						||
                }
 | 
						||
            }
 | 
						||
            //开始下推
 | 
						||
            String rule = BotpParamUtils.getBotpRuleId(SM_DELIVERNOTICE, IM_SALOUTBILL, "发货通知单_销售出库单_转换规则_扩展");
 | 
						||
            PushArgs pushArgs = BotpParamUtils.getPushArgs(SM_DELIVERNOTICE, IM_SALOUTBILL, BILLENTRY, param, entitypkMap, rule);
 | 
						||
            ConvertOperationResult pushResult = ConvertServiceHelper.pushAndSave(pushArgs);
 | 
						||
            List<SourceBillReport> billReports = pushResult.getBillReports();
 | 
						||
            //下推失败直接返回
 | 
						||
            if (!pushResult.isSuccess()) {
 | 
						||
                for (SourceBillReport billReport : billReports) {
 | 
						||
                    String billMessage = billReport.getFailMessage();
 | 
						||
                    errormsg = errormsg.append(";").append(billMessage);
 | 
						||
                }
 | 
						||
                response.setMessage(errormsg.substring(1));
 | 
						||
                response.setCode("-1");
 | 
						||
                response.setFlag("failure");
 | 
						||
                return CustomApiResult.success(wmsXmlReturn);
 | 
						||
            }
 | 
						||
            //获取下推单据id准备提交审核操作
 | 
						||
            Set<Object> targetBillIds = pushResult.getTargetBillIds();
 | 
						||
            DynamicObject[] load = new DynamicObject[targetBillIds.size()];
 | 
						||
            Iterator<Object> iterator = targetBillIds.iterator();
 | 
						||
            for (int i = 0; iterator.hasNext(); i++) {
 | 
						||
                Object next = iterator.next();
 | 
						||
                DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(IM_SALOUTBILL, new QFilter[]{new QFilter("id", QCP.equals, next)});
 | 
						||
                load[i] = dynamicObject;
 | 
						||
            }
 | 
						||
            //开始提交
 | 
						||
            OperateOption operateOption = OperateOption.create();
 | 
						||
            OperationResult sumbitResult = OperationServiceHelper.executeOperate(Constants.TYPE_SUBMIT, IM_SALOUTBILL, load, operateOption);
 | 
						||
            if (!sumbitResult.isSuccess()) {
 | 
						||
                List<IOperateInfo> allErrorOrValidateInfo = sumbitResult.getAllErrorOrValidateInfo();
 | 
						||
                if (allErrorOrValidateInfo.size() != 0) {
 | 
						||
                    for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) {
 | 
						||
                        String message = iOperateInfo.getMessage();
 | 
						||
                        errormsg = errormsg.append(";").append(message);
 | 
						||
                    }
 | 
						||
                } else if (StringUtils.isNotBlank(sumbitResult.getMessage())) {
 | 
						||
                    errormsg = errormsg.append(";").append(sumbitResult.getMessage());
 | 
						||
                } else {
 | 
						||
                    errormsg = errormsg.append(";").append(sumbitResult.getInteractionContext().getSimpleMessage());
 | 
						||
                }
 | 
						||
                response.setMessage(errormsg.substring(1));
 | 
						||
                response.setCode("-1");
 | 
						||
                response.setFlag("failure");
 | 
						||
                return CustomApiResult.success(wmsXmlReturn);
 | 
						||
            } else {
 | 
						||
                //开始审核
 | 
						||
                OperationResult auditResult = OperationServiceHelper.executeOperate(Constants.TYPE_AUDIT, IM_SALOUTBILL, load, operateOption);
 | 
						||
                if (!auditResult.isSuccess()) {
 | 
						||
                    List<IOperateInfo> allErrorOrValidateInfo1 = auditResult.getAllErrorOrValidateInfo();
 | 
						||
                    if (allErrorOrValidateInfo1.size() != 0) {
 | 
						||
                        for (IOperateInfo iOperateInfo : allErrorOrValidateInfo1) {
 | 
						||
                            String message = iOperateInfo.getMessage();
 | 
						||
                            errormsg = errormsg.append(";").append(message);
 | 
						||
                        }
 | 
						||
                    } else if (StringUtils.isNotBlank(auditResult.getMessage())) {
 | 
						||
                        errormsg = errormsg.append(";").append(auditResult.getMessage());
 | 
						||
                    } else {
 | 
						||
                        errormsg = errormsg.append(";").append(auditResult.getInteractionContext().getSimpleMessage());
 | 
						||
                    }
 | 
						||
                    response.setMessage(errormsg.substring(1));
 | 
						||
                    response.setCode("-1");
 | 
						||
                    response.setFlag("failure");
 | 
						||
                    return CustomApiResult.success(wmsXmlReturn);
 | 
						||
                }
 | 
						||
            }
 | 
						||
            //销售退货单
 | 
						||
        } else if (StringUtils.equals("sm_returnapply", orderType)) {
 | 
						||
            //查询单据在金蝶系统中是否存在
 | 
						||
            DynamicObject sm_returnapply = BusinessDataServiceHelper.loadSingle(SM_RETURNAPPLY, new QFilter[]{new QFilter("billno", QCP.equals, billno)});
 | 
						||
            if (sm_returnapply == null) {
 | 
						||
                errormsg = errormsg.append(";").append("根据传入编号:" + billno + "未找到对应销售退货单");
 | 
						||
                response.setMessage(errormsg.substring(1));
 | 
						||
                response.setCode("-1");
 | 
						||
                response.setFlag("failure");
 | 
						||
                return CustomApiResult.success(wmsXmlReturn);
 | 
						||
            }
 | 
						||
            //参数值组装
 | 
						||
            Map<String, Object> param = new HashMap<>();//传入转换规则处理参数
 | 
						||
            HashMap<Long, Set<Long>> entitypkMap = new HashMap<>();//上下游id映射Map
 | 
						||
            if (orderLines.get("orderLine") instanceof Map) {
 | 
						||
                JSONObject orderLine = orderLines.getJSONObject("orderLine");
 | 
						||
                Long id = sm_returnapply.getLong("id");
 | 
						||
                JSONObject detailObject = new JSONObject();
 | 
						||
                String orderLineNo = orderLine.getString("orderLineNo");//金蝶源头单据细单号
 | 
						||
                BigDecimal actualQty = orderLine.getBigDecimal("actualQty");//出库数量
 | 
						||
                String itemCode = orderLine.getString("itemCode");//商品编码
 | 
						||
                Date productDate = orderLine.getDate("productDate");//生产日期
 | 
						||
                Date expireDate = orderLine.getDate("expireDate");//失效期
 | 
						||
                String batchCode = orderLine.getString("batchCode");//批次
 | 
						||
                String key1 = null;//注册证号
 | 
						||
                String key3 = null;//生产许可证
 | 
						||
                String key2 = null;//生产厂商
 | 
						||
                if (orderLine.get("extendProps") instanceof Map) {
 | 
						||
                    JSONObject extendProps = orderLine.getJSONObject("extendProps");//批次信息
 | 
						||
                    key1 = extendProps.getString("key1");//注册证号
 | 
						||
                    key3 = extendProps.getString("key3");//生产许可证
 | 
						||
                    key2 = extendProps.getString("key2");//生产厂商
 | 
						||
                }else{
 | 
						||
                    JSONArray extendProps = orderLine.getJSONArray("extendProps");
 | 
						||
                    for (Object o : extendProps) {
 | 
						||
                        JSONObject extendProp = gson.fromJson(gson.toJson(o), JSONObject.class);
 | 
						||
                        if(extendProp.getString("key1")!=null){
 | 
						||
                            key1 = extendProp.getString("key1");//注册证号
 | 
						||
                            key3 = extendProp.getString("key3");//生产许可证
 | 
						||
                            key2 = extendProp.getString("key2");//生产厂商
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                detailObject.put("entryId", orderLineNo);
 | 
						||
                detailObject.put("uniqueCode", itemCode);
 | 
						||
                detailObject.put("quantity", actualQty);
 | 
						||
                detailObject.put("manufactureDate", productDate);
 | 
						||
                detailObject.put("expirationDate", expireDate);
 | 
						||
                detailObject.put("batch", batchCode);
 | 
						||
                detailObject.put("registrationCode", key1);
 | 
						||
                detailObject.put("licenceCode", key3);
 | 
						||
                detailObject.put("producer", key2);
 | 
						||
                detailObject.put("VoucherType", orderType);
 | 
						||
                entitypkMap.computeIfAbsent(id, k -> new HashSet<>()).add(orderLine.getLong("orderLineNo"));
 | 
						||
                param.put(orderLineNo, detailObject);
 | 
						||
            } else {
 | 
						||
                JSONArray orderLine = orderLines.getJSONArray("orderLine");
 | 
						||
                for (Object obj : orderLine) {
 | 
						||
                    JSONObject orderLine1 = gson.fromJson(gson.toJson(obj), JSONObject.class);
 | 
						||
                    Long id = sm_returnapply.getLong("id");
 | 
						||
                    JSONObject detailObject = new JSONObject();
 | 
						||
                    String orderLineNo = orderLine1.getString("orderLineNo");//金蝶源头单据细单号
 | 
						||
                    BigDecimal actualQty = orderLine1.getBigDecimal("actualQty");//出库数量
 | 
						||
                    String itemCode = orderLine1.getString("itemCode");//商品编码
 | 
						||
                    Date productDate = orderLine1.getDate("productDate");//生产日期
 | 
						||
                    Date expireDate = orderLine1.getDate("expireDate");//失效期
 | 
						||
                    String batchCode = orderLine1.getString("batchCode");//批次
 | 
						||
                    String key1 = null;//注册证号
 | 
						||
                    String key3 = null;//生产许可证
 | 
						||
                    String key2 = null;//生产厂商
 | 
						||
                    if (orderLine1.get("extendProps") instanceof Map) {
 | 
						||
                        JSONObject extendProps = orderLine1.getJSONObject("extendProps");//批次信息
 | 
						||
                        key1 = extendProps.getString("key1");//注册证号
 | 
						||
                        key3 = extendProps.getString("key3");//生产许可证
 | 
						||
                        key2 = extendProps.getString("key2");//生产厂商
 | 
						||
                    }else{
 | 
						||
                        JSONArray extendProps = orderLine1.getJSONArray("extendProps");
 | 
						||
                        for (Object o : extendProps) {
 | 
						||
                            JSONObject extendProp = gson.fromJson(gson.toJson(o), JSONObject.class);
 | 
						||
                            if(extendProp.getString("key1")!=null){
 | 
						||
                                key1 = extendProp.getString("key1");//注册证号
 | 
						||
                                key3 = extendProp.getString("key3");//生产许可证
 | 
						||
                                key2 = extendProp.getString("key2");//生产厂商
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                    detailObject.put("entryId", orderLineNo);
 | 
						||
                    detailObject.put("uniqueCode", itemCode);
 | 
						||
                    detailObject.put("quantity", actualQty);
 | 
						||
                    detailObject.put("manufactureDate", productDate);
 | 
						||
                    detailObject.put("expirationDate", expireDate);
 | 
						||
                    detailObject.put("batch", batchCode);
 | 
						||
                    detailObject.put("registrationCode", key1);
 | 
						||
                    detailObject.put("licenceCode", key3);
 | 
						||
                    detailObject.put("producer", key2);
 | 
						||
                    detailObject.put("VoucherType", orderType);
 | 
						||
                    entitypkMap.computeIfAbsent(id, k -> new HashSet<>()).add(orderLine1.getLong("orderLineNo"));
 | 
						||
                    param.put(orderLineNo, detailObject);
 | 
						||
                }
 | 
						||
            }
 | 
						||
            //开始下推
 | 
						||
            String rule = BotpParamUtils.getBotpRuleId(SM_RETURNAPPLY, IM_SALOUTBILL, "销售退货申请单_销售出库单_转换规则_扩展");
 | 
						||
            PushArgs pushArgs = BotpParamUtils.getPushArgs(SM_RETURNAPPLY, IM_SALOUTBILL, BILLENTRY, param, entitypkMap, rule);
 | 
						||
            ConvertOperationResult pushResult = ConvertServiceHelper.pushAndSave(pushArgs);
 | 
						||
            List<SourceBillReport> billReports = pushResult.getBillReports();
 | 
						||
            if (!pushResult.isSuccess()) {
 | 
						||
                for (SourceBillReport billReport : billReports) {
 | 
						||
                    String billMessage = billReport.getFailMessage();
 | 
						||
                    errormsg = errormsg.append(";").append(billMessage);
 | 
						||
                }
 | 
						||
                response.setMessage(errormsg.substring(1));
 | 
						||
                response.setCode("-1");
 | 
						||
                response.setFlag("failure");
 | 
						||
                return CustomApiResult.success(wmsXmlReturn);
 | 
						||
            }
 | 
						||
            //获取下推单据id准备提交审核操作
 | 
						||
            Set<Object> targetBillIds = pushResult.getTargetBillIds();
 | 
						||
            DynamicObject[] load = new DynamicObject[targetBillIds.size()];
 | 
						||
            Iterator<Object> iterator = targetBillIds.iterator();
 | 
						||
            for (int i = 0; iterator.hasNext(); i++) {
 | 
						||
                Object next = iterator.next();
 | 
						||
                DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(IM_SALOUTBILL, new QFilter[]{new QFilter("id", QCP.equals, next)});
 | 
						||
                load[i] = dynamicObject;
 | 
						||
            }
 | 
						||
            //开始提交
 | 
						||
            OperateOption operateOption = OperateOption.create();
 | 
						||
            OperationResult sumbitResult = OperationServiceHelper.executeOperate(Constants.TYPE_SUBMIT, IM_SALOUTBILL, load, operateOption);
 | 
						||
            if (!sumbitResult.isSuccess()) {
 | 
						||
                List<IOperateInfo> allErrorOrValidateInfo = sumbitResult.getAllErrorOrValidateInfo();
 | 
						||
                if (allErrorOrValidateInfo.size() != 0) {
 | 
						||
                    for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) {
 | 
						||
                        String billMessage = iOperateInfo.getMessage();
 | 
						||
                        errormsg = errormsg.append(";").append(billMessage);
 | 
						||
                    }
 | 
						||
                } else if (StringUtils.isNotBlank(sumbitResult.getMessage())) {
 | 
						||
                    errormsg = errormsg.append(";").append(sumbitResult.getMessage());
 | 
						||
                } else {
 | 
						||
                    errormsg = errormsg.append(";").append(sumbitResult.getInteractionContext().getSimpleMessage());
 | 
						||
                }
 | 
						||
                response.setMessage(errormsg.substring(1));
 | 
						||
                response.setCode("-1");
 | 
						||
                response.setFlag("failure");
 | 
						||
                return CustomApiResult.success(wmsXmlReturn);
 | 
						||
            } else {
 | 
						||
                //开始审核
 | 
						||
                OperationResult auditResult = OperationServiceHelper.executeOperate(Constants.TYPE_AUDIT, IM_SALOUTBILL, load, operateOption);
 | 
						||
                if (!auditResult.isSuccess()) {
 | 
						||
                    List<IOperateInfo> allErrorOrValidateInfo1 = auditResult.getAllErrorOrValidateInfo();
 | 
						||
                    if (allErrorOrValidateInfo1.size() != 0) {
 | 
						||
                        for (IOperateInfo iOperateInfo : allErrorOrValidateInfo1) {
 | 
						||
                            String billMessage = iOperateInfo.getMessage();
 | 
						||
                            errormsg = errormsg.append(";").append(billMessage);
 | 
						||
                        }
 | 
						||
                    } else if (StringUtils.isNotBlank(auditResult.getMessage())) {
 | 
						||
                        errormsg = errormsg.append(";").append(auditResult.getMessage());
 | 
						||
 | 
						||
                    } else {
 | 
						||
                        errormsg = errormsg.append(";").append(auditResult.getInteractionContext().getSimpleMessage());
 | 
						||
                    }
 | 
						||
                    response.setMessage(errormsg.substring(1));
 | 
						||
                    response.setCode("-1");
 | 
						||
                    response.setFlag("failure");
 | 
						||
                    return CustomApiResult.success(wmsXmlReturn);
 | 
						||
                }
 | 
						||
            }
 | 
						||
            //销售退货单
 | 
						||
        } else if (StringUtils.equals("tqq9_otheroutapply", orderType)) {
 | 
						||
            //查询单据在金蝶系统中是否存在
 | 
						||
            DynamicObject tqq9_otheroutapply = BusinessDataServiceHelper.loadSingle(TQQ9_OTHEROUTAPPLY, new QFilter[]{new QFilter("billno", QCP.equals, billno)});
 | 
						||
            if (tqq9_otheroutapply == null) {
 | 
						||
                errormsg = errormsg.append(";").append("根据传入编号:" + billno + "未找到对应其他出库申请单");
 | 
						||
                response.setMessage(errormsg.substring(1));
 | 
						||
                response.setCode("-1");
 | 
						||
                response.setFlag("failure");
 | 
						||
                return CustomApiResult.success(wmsXmlReturn);
 | 
						||
            }
 | 
						||
            //根据业务类型判断转换规则名称
 | 
						||
            DynamicObject bd_biztype = tqq9_otheroutapply.getDynamicObject("tqq9_biztype");//业务类型
 | 
						||
            String rulanema = null;
 | 
						||
            if (!StringUtils.equals("612", bd_biztype.getString("number"))) {
 | 
						||
                rulanema = "除调拨类型";
 | 
						||
            } else {
 | 
						||
                String tqq9_dblx = tqq9_otheroutapply.getString("tqq9_dblx");//调拨类型
 | 
						||
                if (StringUtils.equals("A", tqq9_dblx)) {
 | 
						||
                    rulanema = "组织内调拨";
 | 
						||
                } else {
 | 
						||
                    rulanema = "跨组织调拨";
 | 
						||
                }
 | 
						||
            }
 | 
						||
            String rule = BotpParamUtils.getBotpRuleId(TQQ9_OTHEROUTAPPLY, IM_OTHEROUTBILL, rulanema);
 | 
						||
            //组装参数值
 | 
						||
            Map<String, Object> param = new HashMap<>();//传入转换规则处理参数
 | 
						||
            HashMap<Long, Set<Long>> entitypkMap = new HashMap<>();//上下游id映射Map
 | 
						||
            if (orderLines.get("orderLine") instanceof Map) {
 | 
						||
                JSONObject orderLine = orderLines.getJSONObject("orderLine");
 | 
						||
                Long id = tqq9_otheroutapply.getLong("id");
 | 
						||
                JSONObject detailObject = new JSONObject();
 | 
						||
                String orderLineNo = orderLine.getString("orderLineNo");//金蝶源头单据细单号
 | 
						||
                BigDecimal actualQty = orderLine.getBigDecimal("actualQty");//出库数量
 | 
						||
                String itemCode = orderLine.getString("itemCode");//商品编码
 | 
						||
                Date productDate = orderLine.getDate("productDate");//生产日期
 | 
						||
                Date expireDate = orderLine.getDate("expireDate");//失效期
 | 
						||
                String batchCode = orderLine.getString("batchCode");//批次
 | 
						||
                String key1 = null;//注册证号
 | 
						||
                String key3 = null;//生产许可证
 | 
						||
                String key2 = null;//生产厂商
 | 
						||
                if (orderLine.get("extendProps") instanceof Map) {
 | 
						||
                    JSONObject extendProps = orderLine.getJSONObject("extendProps");//批次信息
 | 
						||
                    key1 = extendProps.getString("key1");//注册证号
 | 
						||
                    key3 = extendProps.getString("key3");//生产许可证
 | 
						||
                    key2 = extendProps.getString("key2");//生产厂商
 | 
						||
                }else{
 | 
						||
                    JSONArray extendProps = orderLine.getJSONArray("extendProps");
 | 
						||
                    for (Object o : extendProps) {
 | 
						||
                        JSONObject extendProp = gson.fromJson(gson.toJson(o), JSONObject.class);
 | 
						||
                        if(extendProp.getString("key1")!=null){
 | 
						||
                            key1 = extendProp.getString("key1");//注册证号
 | 
						||
                            key3 = extendProp.getString("key3");//生产许可证
 | 
						||
                            key2 = extendProp.getString("key2");//生产厂商
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                }
 | 
						||
                detailObject.put("entryId", orderLineNo);
 | 
						||
                detailObject.put("uniqueCode", itemCode);
 | 
						||
                detailObject.put("quantity", actualQty);
 | 
						||
                detailObject.put("manufactureDate", productDate);
 | 
						||
                detailObject.put("expirationDate", expireDate);
 | 
						||
                detailObject.put("batch", batchCode);
 | 
						||
                detailObject.put("registrationCode", key1);
 | 
						||
                detailObject.put("licenceCode", key3);
 | 
						||
                detailObject.put("producer", key2);
 | 
						||
                detailObject.put("VoucherType", orderType);
 | 
						||
                entitypkMap.computeIfAbsent(id, k -> new HashSet<>()).add(orderLine.getLong("orderLineNo"));
 | 
						||
                param.put(orderLineNo, detailObject);
 | 
						||
            } else {
 | 
						||
                JSONArray orderLine = orderLines.getJSONArray("orderLine");
 | 
						||
                for (Object obj : orderLine) {
 | 
						||
                    JSONObject orderLine1 = gson.fromJson(gson.toJson(obj), JSONObject.class);
 | 
						||
                    Long id = tqq9_otheroutapply.getLong("id");
 | 
						||
                    JSONObject detailObject = new JSONObject();
 | 
						||
                    String orderLineNo = orderLine1.getString("orderLineNo");//金蝶源头单据细单号
 | 
						||
                    BigDecimal actualQty = orderLine1.getBigDecimal("actualQty");//出库数量
 | 
						||
                    String itemCode = orderLine1.getString("itemCode");//商品编码
 | 
						||
                    Date productDate = orderLine1.getDate("productDate");//生产日期
 | 
						||
                    Date expireDate = orderLine1.getDate("expireDate");//失效期
 | 
						||
                    String batchCode = orderLine1.getString("batchCode");//批次
 | 
						||
                    String key1 = null;//注册证号
 | 
						||
                    String key3 = null;//生产许可证
 | 
						||
                    String key2 = null;//生产厂商
 | 
						||
                    if (orderLine1.get("extendProps") instanceof Map) {
 | 
						||
                        JSONObject extendProps = orderLine1.getJSONObject("extendProps");//批次信息
 | 
						||
                        key1 = extendProps.getString("key1");//注册证号
 | 
						||
                        key3 = extendProps.getString("key3");//生产许可证
 | 
						||
                        key2 = extendProps.getString("key2");//生产厂商
 | 
						||
                    }else{
 | 
						||
                        JSONArray extendProps = orderLine1.getJSONArray("extendProps");
 | 
						||
                        for (Object o : extendProps) {
 | 
						||
                            JSONObject extendProp = gson.fromJson(gson.toJson(o), JSONObject.class);
 | 
						||
                            if(extendProp.getString("key1")!=null){
 | 
						||
                                key1 = extendProp.getString("key1");//注册证号
 | 
						||
                                key3 = extendProp.getString("key3");//生产许可证
 | 
						||
                                key2 = extendProp.getString("key2");//生产厂商
 | 
						||
                            }
 | 
						||
                        }
 | 
						||
                    }
 | 
						||
                    detailObject.put("entryId", orderLineNo);
 | 
						||
                    detailObject.put("uniqueCode", itemCode);
 | 
						||
                    detailObject.put("quantity", actualQty);
 | 
						||
                    detailObject.put("manufactureDate", productDate);
 | 
						||
                    detailObject.put("expirationDate", expireDate);
 | 
						||
                    detailObject.put("batch", batchCode);
 | 
						||
                    detailObject.put("registrationCode", key1);
 | 
						||
                    detailObject.put("licenceCode", key3);
 | 
						||
                    detailObject.put("producer", key2);
 | 
						||
                    detailObject.put("VoucherType", orderType);
 | 
						||
                    entitypkMap.computeIfAbsent(id, k -> new HashSet<>()).add(orderLine1.getLong("orderLineNo"));
 | 
						||
                    param.put(orderLineNo, detailObject);
 | 
						||
                }
 | 
						||
            }
 | 
						||
            //开始下推
 | 
						||
            PushArgs pushArgs = BotpParamUtils.getPushArgs(TQQ9_OTHEROUTAPPLY, IM_OTHEROUTBILL, BILLENTRY, param, entitypkMap, rule);
 | 
						||
            ConvertOperationResult pushResult = ConvertServiceHelper.pushAndSave(pushArgs);
 | 
						||
            List<SourceBillReport> billReports = pushResult.getBillReports();
 | 
						||
            if (!pushResult.isSuccess()) {
 | 
						||
                for (SourceBillReport billReport : billReports) {
 | 
						||
                    String billMessage = billReport.getFailMessage();
 | 
						||
                    errormsg = errormsg.append(";").append(billMessage);
 | 
						||
                }
 | 
						||
                response.setMessage(errormsg.substring(1));
 | 
						||
                response.setCode("-1");
 | 
						||
                response.setFlag("failure");
 | 
						||
                return CustomApiResult.success(wmsXmlReturn);
 | 
						||
            }
 | 
						||
            //获取下推单据id准备提交审核操作
 | 
						||
            Set<Object> targetBillIds = pushResult.getTargetBillIds();
 | 
						||
            DynamicObject[] load = new DynamicObject[targetBillIds.size()];
 | 
						||
            Iterator<Object> iterator = targetBillIds.iterator();
 | 
						||
            for (int i = 0; iterator.hasNext(); i++) {
 | 
						||
                Object next = iterator.next();
 | 
						||
                DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(IM_OTHEROUTBILL, new QFilter[]{new QFilter("id", QCP.equals, next)});
 | 
						||
                load[i] = dynamicObject;
 | 
						||
            }
 | 
						||
            //开始提交
 | 
						||
            OperateOption operateOption = OperateOption.create();
 | 
						||
            OperationResult sumbitResult = OperationServiceHelper.executeOperate(Constants.TYPE_SUBMIT, IM_OTHEROUTBILL, load, operateOption);
 | 
						||
            if (!sumbitResult.isSuccess()) {
 | 
						||
                List<IOperateInfo> allErrorOrValidateInfo = sumbitResult.getAllErrorOrValidateInfo();
 | 
						||
                if (allErrorOrValidateInfo.size() != 0) {
 | 
						||
                    for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) {
 | 
						||
                        String billMessage = iOperateInfo.getMessage();
 | 
						||
                        errormsg = errormsg.append(";").append(billMessage);
 | 
						||
                    }
 | 
						||
                } else if (StringUtils.isNotBlank(sumbitResult.getMessage())) {
 | 
						||
                    errormsg = errormsg.append(";").append(sumbitResult.getMessage());
 | 
						||
                } else {
 | 
						||
                    errormsg = errormsg.append(";").append(sumbitResult.getInteractionContext().getSimpleMessage());
 | 
						||
                }
 | 
						||
                response.setMessage(errormsg.substring(1));
 | 
						||
                response.setCode("-1");
 | 
						||
                response.setFlag("failure");
 | 
						||
                return CustomApiResult.success(wmsXmlReturn);
 | 
						||
            } else {
 | 
						||
                //开始审核
 | 
						||
                OperationResult auditResult = OperationServiceHelper.executeOperate(Constants.TYPE_AUDIT, IM_OTHEROUTBILL, load, operateOption);
 | 
						||
                if (!auditResult.isSuccess()) {
 | 
						||
                    List<IOperateInfo> allErrorOrValidateInfo1 = auditResult.getAllErrorOrValidateInfo();
 | 
						||
                    if (allErrorOrValidateInfo1.size() != 0) {
 | 
						||
                        for (IOperateInfo iOperateInfo : allErrorOrValidateInfo1) {
 | 
						||
                            String billMessage = iOperateInfo.getMessage();
 | 
						||
                            errormsg = errormsg.append(";").append(billMessage);
 | 
						||
                        }
 | 
						||
                    } else if (StringUtils.isNotBlank(auditResult.getMessage())) {
 | 
						||
                        errormsg = errormsg.append(";").append(auditResult.getMessage());
 | 
						||
                    } else {
 | 
						||
                        errormsg = errormsg.append(";").append(auditResult.getInteractionContext().getSimpleMessage());
 | 
						||
                    }
 | 
						||
                    response.setMessage(errormsg.substring(1));
 | 
						||
                    response.setCode("-1");
 | 
						||
                    response.setFlag("failure");
 | 
						||
                    return CustomApiResult.success(wmsXmlReturn);
 | 
						||
                }
 | 
						||
            }
 | 
						||
        }
 | 
						||
        //回传成功
 | 
						||
        return CustomApiResult.success(wmsXmlReturn);
 | 
						||
    }
 | 
						||
 | 
						||
} |