自动化立体仓库 - WMS系统
zhang
3 天以前 5d6c45fda93e4f80334213205ca5aec4e10436b2
src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java
@@ -1,20 +1,22 @@
package com.zy.asrs.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.DocType;
import com.zy.asrs.entity.Order;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.entity.StoreType;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.service.ReportToThirdService;
import com.zy.asrs.service.StoreTypeService;
import com.zy.nc.SendUtil;
import com.zy.nc.entity.NccCgCgdhdWms;
import com.zy.nc.entity.NccSaleDbddWms;
import com.zy.nc.entity.NccSaleXsfhmxWms;
import com.zy.nc.entity.NccScZkmxbWms;
import com.zy.nc.entity.*;
import com.zy.nc.service.NccScPcdaWmsService;
import com.zy.nc.util.NcResultMessage;
import com.zy.nc.vo.*;
import lombok.extern.slf4j.Slf4j;
@@ -36,6 +38,12 @@
    @Autowired
    private OrderService orderService;
    @Autowired
    private StoreTypeService storeTypeService;
    @Autowired
    private NccScPcdaWmsService nccScPcdaWmsService;
    @Value("${NYNC.ip}")
    private String nyncIp;
@@ -68,15 +76,30 @@
        NcResultMessage response = null;
        Object process1 = null;
        Object process2 = null;
        String memo = order.getMemo();
        String remark = "";
        try {
            switch (order.getDocType$().toString()) {
                case "销售发货":
                    process1 = processXSFH(orderDetls);
                case "销售退货":
                    process1 = processXSFH(orderDetls, true);
                    //发送请求
                    response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1));
                    if (!Cools.isEmpty(response) && response.isSuccess()) {
                        log.info("销售发货response:{}", response);
                        step = 10;
                    } else {
                        remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100);
                    }
                    break;
                case "销售发货":
                    process1 = processXSFH(orderDetls, false);
                    //发送请求
                    response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1));
                    if (!Cools.isEmpty(response) && response.isSuccess()) {
                        log.info("销售发货response:{}", response);
                        step = 10;
                    } else {
                        remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100);
                    }
                    break;
                case "转库-入库":
@@ -86,6 +109,8 @@
                    if (!Cools.isEmpty(response) && response.isSuccess()) {
                        log.info("转库-入库response:{}", response);
                        step = 10;
                    } else {
                        remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100);
                    }
                    break;
                case "采购到货":
@@ -97,11 +122,13 @@
                    if (!Cools.isEmpty(response) && response.isSuccess()) {
                        log.info("采购到货response:{}", response);
                        step = 10;
                    } else {
                        remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100);
                    }
                    break;
                case "转库-出库":
                    if (step == 1) {
                        process2 = processGENERALOUT2(orderDetls);
                        process2 = processGENERALOUT2(orderDetls, order.getOperMemb(), order.getItemId(), memo);
                        List<Object> zkck2 = new ArrayList<>();
                        zkck2.add(process2);
                        //发送请求
@@ -109,6 +136,8 @@
                        if (!Cools.isEmpty(response) && response.isSuccess()) {
                            log.info("转库-出库2response:{}", response);
                            step = 10;
                        } else {
                            remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100);
                        }
                    } else {
                        process1 = processZKCK(order, orderDetls);
@@ -117,9 +146,11 @@
                        //发送请求
                        response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, whstrans, JSONObject.toJSONString(zkck1));
                        if (!Cools.isEmpty(response) && response.isSuccess()) {
                            step = 1;
                            log.info("转库-出库1response:{}", response);
                            memo = response.getData().toString();
                            process2 = processGENERALOUT2(orderDetls);
                            process2 = processGENERALOUT2(orderDetls, order.getOperMemb(), order.getItemId(), memo);
                            List<Object> zkck2 = new ArrayList<>();
                            zkck2.add(process2);
                            //发送请求
@@ -127,9 +158,9 @@
                            if (!Cools.isEmpty(response) && response.isSuccess()) {
                                log.info("转库-出库2response:{}", response);
                                step = 10;
                            } else {
                                remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100);
                            }
                        } else {
                            step = 1;
                        }
                    }
                    break;
@@ -140,6 +171,8 @@
                    if (!Cools.isEmpty(response) && response.isSuccess()) {
                        log.info("集团内部调拨response:{}", response);
                        step = 10;
                    } else {
                        remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100);
                    }
                    break;
                default:
@@ -152,7 +185,7 @@
                }
            } else if (step != 0) {
                // 修改订单状态 做标记
                if (!orderService.updateSettleStep(order.getId(), 4L, null, step)) {
                if (!orderService.updateSettleStep(order.getId(), 4L, null, step, memo, remark)) {
                    throw new CoolException("服务器内部错误,请联系管理员");
                }
            }
@@ -166,21 +199,23 @@
    }
    private Object processXSFH(List<OrderDetl> orderDetls) {
    private Object processXSFH(List<OrderDetl> orderDetls, Boolean flag) {
        //组装对象数据
        Map<String, Object> data = new HashMap<String, Object>();
        SaleOutHeadVO saleOutHeadVO = new SaleOutHeadVO();
        saleOutHeadVO.setPk_org("FYT");
        saleOutHeadVO.setCwarehouseid("6101");
        SaleOutBodyVO saleOutBodyVO = null;
        List<SaleOutBodyVO> saleOutBodyVOList = new ArrayList<>();
        for (OrderDetl orderDetl : orderDetls) {
            if (orderDetl.getQty() <= 0) {
                continue;
            }
            saleOutBodyVO = new SaleOutBodyVO();
            String remark = orderDetl.getRemark();
            if (!Cools.isEmpty(remark)) {
                NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class);
                saleOutBodyVO.setCsourcetype("4331");
                saleOutBodyVO.setClocationid("610101");
                //saleOutBodyVO.setClocationid("610101");
                saleOutBodyVO.setCsourcebillbid(nccSaleXsfhmxWms.getCdeliverybid());
                saleOutBodyVO.setCsourcebillhid(nccSaleXsfhmxWms.getCdeliveryid());
                saleOutHeadVO.setVdef2(nccSaleXsfhmxWms.getVdef2());
@@ -191,9 +226,11 @@
                saleOutHeadVO.setVdef13(nccSaleXsfhmxWms.getVdef13());
                saleOutHeadVO.setVdef14(nccSaleXsfhmxWms.getVdef14());
            }
            saleOutHeadVO.setCwarehouseid(orderDetl.getStandby1());
            saleOutBodyVO.setVbatchcode(orderDetl.getBatch());
            saleOutBodyVO.setNshouldnum(orderDetl.getAnfme());
            saleOutBodyVO.setNnum(orderDetl.getQty());
            saleOutBodyVO.setNshouldnum(flag ? -orderDetl.getQty() : orderDetl.getQty());
            saleOutBodyVO.setNnum(flag ? -orderDetl.getQty() : orderDetl.getQty());
            saleOutBodyVOList.add(saleOutBodyVO);
        }
        data.put("SaleOutHeadVO", saleOutHeadVO);
@@ -206,7 +243,6 @@
        Map<String, Object> data = new HashMap<String, Object>();
        GeneralInHeadVO generalInHeadVO = new GeneralInHeadVO();
        generalInHeadVO.setPk_org("FYT");
        generalInHeadVO.setCwarehouseid("6101");
        GeneralInBodyVO generalInBodyVO = null;
        List<GeneralInBodyVO> generalInBodyVOS = new ArrayList<>();
        for (OrderDetl orderDetl : orderDetls) {
@@ -220,7 +256,9 @@
                generalInBodyVO.setNnum(orderDetl.getQty());
                generalInBodyVO.setNshouldnum(orderDetl.getAnfme());
                generalInBodyVO.setCsourcetype(nccScZkmxbWms.getZklxbm());
            }
            generalInHeadVO.setCwarehouseid(orderDetl.getStandby1());
            generalInBodyVOS.add(generalInBodyVO);
        }
        data.put("GeneralInHeadVO", generalInHeadVO);
@@ -260,7 +298,7 @@
        Map<String, Object> data = new HashMap<String, Object>();
        WhsTransBillHeaderVO whsTransBillHeaderVO = new WhsTransBillHeaderVO();
        whsTransBillHeaderVO.setPk_org("FYT");
        whsTransBillHeaderVO.setCwarehouseid(order.getItemId());
        whsTransBillHeaderVO.setCotherwhid(order.getItemId());
        whsTransBillHeaderVO.setCtrantypeid("4K-01");
        WhsTransBillBodyVO whsTransBillBodyVO = null;
        List<WhsTransBillBodyVO> whsTransBillBodyVOS = new ArrayList<>();
@@ -273,7 +311,7 @@
            whsTransBillBodyVO.setCmaterialoid(orderDetl.getMatnr());
            whsTransBillBodyVO.setVbatchcode(orderDetl.getBatch());
            //}
            whsTransBillHeaderVO.setCotherbizid(orderDetl.getStandby1());
            whsTransBillHeaderVO.setCwarehouseid(orderDetl.getStandby1());
            whsTransBillBodyVOS.add(whsTransBillBodyVO);
        }
        data.put("WhsTransBillHeaderVO", whsTransBillHeaderVO);
@@ -298,7 +336,6 @@
                NccCgCgdhdWms nccCgCgdhdWms = JSONObject.parseObject(remark, NccCgCgdhdWms.class);
                ic_purchasein_h.setCvendorid(nccCgCgdhdWms.getGysbm());
                ic_purchasein_h.setCtrantypeid(nccCgCgdhdWms.getDhlxbm());
                ic_purchasein_b.setCsourcebillbid(nccCgCgdhdWms.getPkArriveorderB());
                ic_purchasein_b.setCsourcebillhid(nccCgCgdhdWms.getPkArriveorder());
@@ -331,7 +368,7 @@
            String remark = orderDetl.getRemark();
            if (!Cools.isEmpty(remark)) {
                NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class);
                generalout_b.setMaterialvid(orderDetl.getMatnr());
                generalout_b.setCmaterialvid(orderDetl.getMatnr());
                generalout_b.setNshouldassistnum(orderDetl.getQty());
                generalout_b.setVbatchcode(orderDetl.getBatch());
            }
@@ -347,7 +384,16 @@
     * @param orderDetls
     * @return
     */
    private Object processGENERALOUT2(List<OrderDetl> orderDetls) {
    private Object processGENERALOUT2(List<OrderDetl> orderDetls, String renyuan, String rukucangku, String memo) {
        Object o = JSONObject.parseArray(memo).get(0);
        JSONObject jsonObject = JSONObject.parseObject(o.toString());
        String cspecialhid = JSONObject.parseObject(jsonObject.getString("ic.WhsTransBillHeaderVO")).getString("cspecialhid");
        List<String> s = new ArrayList<>();
        JSONArray objects = JSONObject.parseArray(jsonObject.getString("ic.WhsTransBillBodyVO"));
        for (int i = 0; i < objects.size(); i++) {
            s.add(objects.getJSONObject(i).getString("cspecialbid"));
        }
        //组装对象数据
        Map<String, Object> data = new HashMap<String, Object>();
        ic_generalout_h generalout_h = new ic_generalout_h();
@@ -355,15 +401,26 @@
        generalout_h.setCwarehouseid("6101");
        ic_generalout_b generalout_b = null;
        List<ic_generalout_b> ic_purchasein_bs = new ArrayList<>();
        for (OrderDetl orderDetl : orderDetls) {
            generalout_b = new ic_generalout_b();
            String remark = orderDetl.getRemark();
            if (!Cools.isEmpty(remark)) {
                NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class);
                generalout_b.setMaterialvid(orderDetl.getMatnr());
                generalout_b.setNshouldassistnum(orderDetl.getQty());
                generalout_b.setVbatchcode(orderDetl.getBatch());
        for (int i = 0; i < orderDetls.size(); i++) {
            NccScPcdaWms nccScPcdaWms = nccScPcdaWmsService.selectOne(new EntityWrapper<NccScPcdaWms>().eq("vbatchcode", orderDetls.get(i).getBatch()).eq("wlbm", orderDetls.get(i).getMatnr()));
            if (nccScPcdaWms == null) {
                throw new CoolException("批次[{}]物料[{}]未找到" + orderDetls.get(i).getBatch() + orderDetls.get(i).getMatnr());
            }
            OrderDetl orderDetl = orderDetls.get(i);
            generalout_b = new ic_generalout_b();
            generalout_b.setCsourcebillbid(s.get(i));
            generalout_b.setCsourcetype("4K-01");
            generalout_b.setCsourcebillhid(cspecialhid);
            generalout_b.setCmaterialvid(orderDetl.getMatnr());
            generalout_b.setCstateid(nccScPcdaWms.getVcode());
            StoreType storeType = storeTypeService.selectOne(new EntityWrapper<StoreType>().eq("store_id", orderDetl.getStandby1()));
            generalout_b.setCdptvid(storeType.getDepartmentId());
            generalout_b.setBillmaker(renyuan);
            StoreType storeType2 = storeTypeService.selectOne(new EntityWrapper<StoreType>().eq("store_id", rukucangku));
            generalout_b.setCotherwhid(rukucangku);
            generalout_b.setCothercalbodyvid(storeType2.getDepartmentId());
            generalout_b.setNshouldassistnum(orderDetl.getQty());
            generalout_b.setVbatchcode(orderDetl.getBatch());
            ic_purchasein_bs.add(generalout_b);
        }
        data.put("ic_generalout_h", generalout_h);