自动化立体仓库 - WMS系统
zhang
2025-05-21 ee2e593c5736c27dad7d93f9fca98290f578b5da
src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java
@@ -10,12 +10,11 @@
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.service.ReportToThirdService;
import com.zy.common.utils.Synchro;
import com.zy.nc.SendUtil;
import com.zy.nc.entity.NccCgCgdhdWms;
import com.zy.nc.entity.NccSaleXsfhmxWms;
import com.zy.nc.util.NcResultMessage;
import com.zy.nc.vo.SaleOutBodyVO;
import com.zy.nc.vo.SaleOutHeadVO;
import com.zy.nc.vo.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -48,63 +47,101 @@
    @Override
    public void report(Order order, List<OrderDetl> orderDetls, DocType docType) {
        Boolean http = false;
        int step = (Cools.isEmpty(order.getStep()) || order.getStep() == 0) ? 0 : order.getStep();
        NcResultMessage response = null;
        Object process1 = null;
        Object process2 = null;
        Object process3 = null;
        try {
            switch (order.getDocType().toString()) {
                case "35":
                    //组装对象数据
                    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) {
                        saleOutBodyVO = new SaleOutBodyVO();
                        String remark = orderDetl.getRemark();
                        if (!Cools.isEmpty(remark)) {
                            NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class);
                            Synchro.Copy(nccSaleXsfhmxWms, saleOutBodyVO);
                            saleOutBodyVO.setCsourcetype("4331-01");
                            saleOutBodyVO.setCsourcebillbid(nccSaleXsfhmxWms.getCdeliverybid());
                            saleOutBodyVO.setCsourcebillhid(nccSaleXsfhmxWms.getCdeliveryid());
                        }
                        saleOutBodyVO.setNnum(orderDetl.getQty());
                        saleOutBodyVOList.add(saleOutBodyVO);
                    }
//                    saleOutHeadVO.setVdef2("");
//                    saleOutHeadVO.setVdef3("");
//                    saleOutHeadVO.setVdef4("");
//                    saleOutHeadVO.setVdef7("");
//                    saleOutHeadVO.setVdef8("");
//                    saleOutHeadVO.setVdef13("");
//                    saleOutHeadVO.setVdef14("");
                    data.put("SaleOutHeadVO", saleOutHeadVO);
                    data.put("SaleOutBodyVO", saleOutBodyVOList);
            switch (order.getDocType$().toString()) {
                case "销售发货":
                    process1 = processXSFH(orderDetls);
                    //发送请求
                    response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(data));
                    response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1));
                    if (!Cools.isEmpty(response) && response.isSuccess()) {
                        log.info("response:{}", response);
                        http = true;
                        step = 10;
                    }
                    break;
                case "产成品入库":
                case "转库":
                    process1 = processQTRK(orderDetls);
                    //发送请求
                    response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1));
                    if (!Cools.isEmpty(response) && response.isSuccess()) {
                        log.info("response:{}", response);
                        step = 10;
                    }
                    break;
                case "辅料采购入库":
                case "采购到货":
                    process1 = processCGDH(orderDetls);
                    //发送请求
                    response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1));
                    if (!Cools.isEmpty(response) && response.isSuccess()) {
                        log.info("response:{}", response);
                        step = 10;
                    }
                    break;
                case "辅料及成品转库":
                case "产成品入库单":
                    if (step == 2) {
                        process3 = processQTRK(orderDetls);
                        //发送请求
                        response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process3));
                        if (!Cools.isEmpty(response) && response.isSuccess()) {
                            log.info("response:{}", response);
                            step = 10;
                        }
                    } else if (step == 1) {
                        process2 = processGENERALOUT(orderDetls);
                        //发送请求
                        response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process2));
                        if (!Cools.isEmpty(response) && response.isSuccess()) {
                            log.info("response:{}", response);
                            step = 2;
                        }
                        process3 = processQTRK(orderDetls);
                        //发送请求
                        response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process3));
                        if (!Cools.isEmpty(response) && response.isSuccess()) {
                            log.info("response:{}", response);
                            step = 10;
                        }
                    } else if (step == 0) {
                        process1 = processZK(orderDetls);
                        //发送请求
                        response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process1));
                        if (!Cools.isEmpty(response) && response.isSuccess()) {
                            log.info("response:{}", response);
                            step = 1;
                        }
                        process2 = processGENERALOUT(orderDetls);
                        //发送请求
                        response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process2));
                        if (!Cools.isEmpty(response) && response.isSuccess()) {
                            log.info("response:{}", response);
                            step = 2;
                        }
                        process3 = processQTRK(orderDetls);
                        //发送请求
                        response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, saveRefDelivery, JSONObject.toJSONString(process3));
                        if (!Cools.isEmpty(response) && response.isSuccess()) {
                            log.info("response:{}", response);
                            step = 10;
                        }
                    }
                    break;
                case "自动包装入库":
                    break;
                case "内部调拨":
                    break;
//                case "内部调拨":
//                    break;
                default:
                    break;
                    throw new CoolException("不能识别的单据类型");
            }
            if (http) {
            if (step == 10) {
                // 修改订单状态 4.完成 ===>> 6.已上报
                if (!orderService.updateSettle(order.getId(), 6L, null)) {
                    throw new CoolException("服务器内部错误,请联系管理员");
                }
            } else if (step != 0) {
                // 修改订单状态 做标记
                if (!orderService.updateSettleStep(order.getId(), 6L, null, step)) {
                    throw new CoolException("服务器内部错误,请联系管理员");
                }
            }
@@ -117,6 +154,154 @@
    }
    private Object processXSFH(List<OrderDetl> orderDetls) {
        //组装对象数据
        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) {
            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.setCsourcebillbid(nccSaleXsfhmxWms.getCdeliverybid());
                saleOutBodyVO.setCsourcebillhid(nccSaleXsfhmxWms.getCdeliveryid());
                saleOutHeadVO.setVdef2(nccSaleXsfhmxWms.getVdef2());
                saleOutHeadVO.setVdef3(nccSaleXsfhmxWms.getVdef3());
                saleOutHeadVO.setVdef4(nccSaleXsfhmxWms.getVdef4());
                saleOutHeadVO.setVdef7(nccSaleXsfhmxWms.getVdef7());
                saleOutHeadVO.setVdef8(nccSaleXsfhmxWms.getVdef8());
                saleOutHeadVO.setVdef13(nccSaleXsfhmxWms.getVdef13());
                saleOutHeadVO.setVdef14(nccSaleXsfhmxWms.getVdef14());
            }
            saleOutBodyVO.setVbatchcode(orderDetl.getBatch());
            saleOutBodyVO.setNshouldnum(orderDetl.getAnfme());
            saleOutBodyVO.setNnum(orderDetl.getQty());
            saleOutBodyVOList.add(saleOutBodyVO);
        }
        data.put("SaleOutHeadVO", saleOutHeadVO);
        data.put("SaleOutBodyVO", saleOutBodyVOList);
        return data;
    }
    private Object processQTRK(List<OrderDetl> orderDetls) {
        //组装对象数据
        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) {
            generalInBodyVO = new GeneralInBodyVO();
            String remark = orderDetl.getRemark();
            if (!Cools.isEmpty(remark)) {
                NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class);
                generalInBodyVO.setCsourcetype("4331");
                generalInBodyVO.setClocationid("610101");
                generalInBodyVO.setCsourcebillbid(nccSaleXsfhmxWms.getCdeliverybid());
                generalInBodyVO.setCsourcebillhid(nccSaleXsfhmxWms.getCdeliveryid());
                generalInBodyVO.setNnum(orderDetl.getQty());
                generalInBodyVO.setVbatchcode(orderDetl.getBatch());
                generalInBodyVO.setCmaterialoid(orderDetl.getMatnr());
            }
            generalInBodyVOS.add(generalInBodyVO);
        }
        data.put("GeneralInHeadVO", generalInHeadVO);
        data.put("GeneralInBodyVO", generalInBodyVOS);
        return data;
    }
    private Object processZK(List<OrderDetl> orderDetls) {
        //组装对象数据
        Map<String, Object> data = new HashMap<String, Object>();
        WhsTransBillHeaderVO whsTransBillHeaderVO = new WhsTransBillHeaderVO();
        whsTransBillHeaderVO.setPk_org("FYT");
        whsTransBillHeaderVO.setCwarehouseid("6101");
        WhsTransBillBodyVO whsTransBillBodyVO = null;
        List<WhsTransBillBodyVO> whsTransBillBodyVOS = new ArrayList<>();
        for (OrderDetl orderDetl : orderDetls) {
            whsTransBillBodyVO = new WhsTransBillBodyVO();
            String remark = orderDetl.getRemark();
            if (!Cools.isEmpty(remark)) {
                NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class);
                whsTransBillBodyVO.setCsourcetype("4331");
                whsTransBillBodyVO.setClocationid("610101");
                whsTransBillBodyVO.setCsourcebillbid(nccSaleXsfhmxWms.getCdeliverybid());
                whsTransBillBodyVO.setCsourcebillhid(nccSaleXsfhmxWms.getCdeliveryid());
                whsTransBillBodyVO.setNnum(orderDetl.getQty());
                whsTransBillBodyVO.setVbatchcode(orderDetl.getBatch());
                whsTransBillBodyVO.setCmaterialoid(orderDetl.getMatnr());
            }
            whsTransBillBodyVOS.add(whsTransBillBodyVO);
        }
        data.put("WhsTransBillHeaderVO", whsTransBillHeaderVO);
        data.put("WhsTransBillBodyVO", whsTransBillBodyVOS);
        return data;
    }
    private Object processCGDH(List<OrderDetl> orderDetls) {
        //组装对象数据
        Map<String, Object> data = new HashMap<String, Object>();
        ic_purchasein_h ic_purchasein_h = new ic_purchasein_h();
        ic_purchasein_h.setPk_org("FYT");
        ic_purchasein_h.setCwarehouseid("6101");
        ic_purchasein_b ic_purchasein_b = null;
        List<ic_purchasein_b> ic_purchasein_bs = new ArrayList<>();
        for (OrderDetl orderDetl : orderDetls) {
            ic_purchasein_b = new ic_purchasein_b();
            String remark = orderDetl.getRemark();
            if (!Cools.isEmpty(remark)) {
                NccCgCgdhdWms nccCgCgdhdWms = JSONObject.parseObject(remark, NccCgCgdhdWms.class);
                ic_purchasein_b.setCsourcebillbid(nccCgCgdhdWms.getPkArriveorderB());
                ic_purchasein_b.setCsourcebillhid(nccCgCgdhdWms.getPkArriveorder());
                ic_purchasein_b.setCmaterialvid(orderDetl.getMaktx());
                ic_purchasein_b.setNnum(orderDetl.getQty());
                ic_purchasein_b.setNshouldassistnum(orderDetl.getQty());
                //ic_purchasein_b.setNorigprice(nccSaleXsfhmxWms.getNorigprice().doubleValue());
            }
            ic_purchasein_bs.add(ic_purchasein_b);
        }
        data.put("ic_purchasein_h", ic_purchasein_h);
        data.put("ic_purchasein_b", ic_purchasein_b);
        return data;
    }
    /**
     * @param orderDetls
     * @return
     */
    private Object processGENERALOUT(List<OrderDetl> orderDetls) {
        //组装对象数据
        Map<String, Object> data = new HashMap<String, Object>();
        ic_purchasein_h ic_purchasein_h = new ic_purchasein_h();
        ic_purchasein_h.setPk_org("FYT");
        ic_purchasein_h.setCwarehouseid("6101");
        ic_purchasein_b ic_purchasein_b = null;
        List<ic_purchasein_b> ic_purchasein_bs = new ArrayList<>();
        for (OrderDetl orderDetl : orderDetls) {
            ic_purchasein_b = new ic_purchasein_b();
            String remark = orderDetl.getRemark();
            if (!Cools.isEmpty(remark)) {
                NccSaleXsfhmxWms nccSaleXsfhmxWms = JSONObject.parseObject(remark, NccSaleXsfhmxWms.class);
            }
            ic_purchasein_bs.add(ic_purchasein_b);
        }
        data.put("ic_purchasein_h", ic_purchasein_h);
        data.put("ic_purchasein_b", ic_purchasein_b);
        return data;
    }
    private Boolean reportApiLog(Object data, String docType, String url, String path) {
        String response = "";
        boolean success = false;