自动化立体仓库 - WMS系统
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -1,5 +1,7 @@
package com.zy.asrs.task.handler;
import cn.hutool.core.util.NumberUtil;
import com.alibaba.excel.util.NumberUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.core.common.Cools;
@@ -22,6 +24,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
@@ -43,6 +46,12 @@
    @Autowired
    private DocTypeService docTypeService;
    @Value("${spring.profiles.active}")
    private String active;
    @Value("${u8.report}")
    private Boolean report;
    @Value("${u8.url}")
    private String url;
@@ -51,48 +60,38 @@
    @Transactional
    public ReturnT<String> start(Order order) {
        //List<String> docNames = new ArrayList<>(Arrays.asList("银座采购入库单", "银座委外材料出库单", "银座委外入库单", "银座生产材料出库单"));
        List<String> docNames = new ArrayList<>(Arrays.asList("银座委外入库单", "银座生产材料出库单"));
        List<String> docNames = new ArrayList<>(Arrays.asList("银座采购入库单", "银座委外材料出库单", "银座生产材料出库单"));
        DocType docType = docTypeService.selectById(order.getDocType());
        if (!docNames.contains(docType.getDocName())) {
            order.setSettle(8L);
            orderService.updateById(order);
            return SUCCESS;
        }
//        if("手动出库单".equals(docType.getDocName())
//                || "手动入库单".equals(docType.getDocName())
//                || "自动补货单".equals(docType.getDocName())
//                || "人工补货单".equals(docType.getDocName())){
//            order.setSettle(8L);
//            orderService.updateById(order);
//            return SUCCESS;
//        }
        List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
        ReportErpParam param = new ReportErpParam();
        mappingParam(order, param);
        mappingParamChildren(orderDetlList, param);
        if (Cools.isEmpty(order.getPltType())) {
        } else {
            boolean flag = true;
            List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
            List<OrderDetl> report = new ArrayList<>();
            for (OrderDetl orderDetl : orderDetlList) {
                if (orderDetl.getReportQty() == null || orderDetl.getQty() > orderDetl.getReportQty() || orderDetl.getQty() < orderDetl.getAnfme()) {
                    flag = false;
                }
            }
            if (flag) {
                log.info("单据完结,{}", order);
                order.setSettle(6L);
                orderService.updateById(order);
            }
            return SUCCESS;
        }
        int code = doHttpRequest(param, "单据审核", url, orderReportPath, null, "127.0.0.1");
        if (code == 0) {
            log.info("单据审核,{}", order);
            order.setSettle(6L);
            orderService.updateById(order);
        }
        return SUCCESS;
    }
    @Transactional
    public void timelyStart(Order order) {
        if (!report){
            return;
        }
        List<String> docNames = new ArrayList<>(Arrays.asList("银座采购入库单", "银座委外材料出库单"));
        List<String> docNames = new ArrayList<>(Arrays.asList("银座采购入库单", "银座委外材料出库单", "银座生产材料出库单"));
        DocType docType = docTypeService.selectById(order.getDocType());
        if (docNames.contains(docType.getDocName())) {
@@ -103,19 +102,19 @@
                    report.add(orderDetl);
                }
            }
            if (Cools.isEmpty(order.getPltType())) {
                return;
            }
            if (!Cools.isEmpty(report)) {
                ReportErpParam param = new ReportErpParam();
                mappingParam(order, param);
                mappingParamChildren(report, param);
                if (Cools.isEmpty(order.getPltType())) {
                    return;
                }
                log.info(JSON.toJSONString(param));
                int code = doHttpRequest(param, "单据审核", url, orderReportPath, null, "127.0.0.1");
                if (code == 0) {
                    for (OrderDetl orderDetl : orderDetlList) {
                        orderDetl.setReportQty(orderDetl.getQty());
                    for (OrderDetl orderDetl : report) {
                        log.info("{}单据审核上报了:{}", order.getOrderNo(), orderDetl.getQty() - (orderDetl.getReportQty() == null ? 0D : orderDetl.getReportQty()));
                        orderDetl.setReportQty(orderDetl.getQty());
                        orderDetlService.updateById(orderDetl);
                    }
                }
@@ -125,11 +124,16 @@
    }
    public void mappingParam(Order order, ReportErpParam param) {
        //param.set操作系统号(order.getDefNumber());
        param.set操作系统号("998");
        if (active.equals("prod")) {
            param.set操作系统号(order.getDefNumber());
        } else if (active.equals("dev") || active.equals("loc")) {
            param.set操作系统号("998");
        } else {
            param.set操作系统号(order.getDefNumber());
        }
        param.set操作单据(order.getDocType$());
        param.set操作类型("add");
        param.setDdate(order.getOrderTime());
        param.setDdate(order.getInTime());
        param.setCWhCode(Cools.isEmpty(order.getPltType()) ? "" : order.getPltType() + "");
        param.setCDepCode("YZ");
        param.setCOrderCode(order.getOrderNo());
@@ -146,21 +150,44 @@
            childInfo.setIrowno(orderDetl.getItemNum());
            childInfo.setCInvCode(orderDetl.getMatnr());
            childInfo.setIQuantity(orderDetl.getQty() - (orderDetl.getReportQty() == null ? 0D : orderDetl.getReportQty()) + "");
            childInfo.setCBatch(orderDetl.getBatch());
            String batch = orderDetl.getBatch();
            if (Cools.isEmpty(batch)) {
                childInfo.setCBatch("");
                childInfo.setBFree1("");
            } else {
                String[] s = batch.split("__");
                if (s.length > 1) {
                    childInfo.setCBatch(s[0]);
                    childInfo.setBFree1(s[1]);
                } else if (s.length == 1) {
                    childInfo.setCBatch(s[0]);
                    childInfo.setBFree1("");
                } else {
                    childInfo.setCBatch("");
                    childInfo.setBFree1("");
                }
            }
            childInfo.setINum(orderDetl.getLength() + "");
            childInfo.setIinvexchrate("");
            childInfo.setBFree1(orderDetl.getDeadTime());
            childInfo.setIPOsID(orderDetl.getSku());
            childInfo.setCOrderCode(orderDetl.getOrderNo());
            childInfo.setIvouchrowno(orderDetl.getItemNum());
            childInfo.setDefine22(orderDetl.getThreeCode());
            if (!Cools.isEmpty(orderDetl.getWeight()) && !Cools.isEmpty(orderDetl.getVolume())) {
                BigDecimal mul = NumberUtil.div(childInfo.getIQuantity(), orderDetl.getVolume() + "");
                childInfo.setINum(mul.toString());
            } else {
                childInfo.setINum("1");
            }
            childInfo.setIinvexchrate(Cools.isEmpty(orderDetl.getVolume()) ? "" : orderDetl.getVolume() + "");
            paramChild.add(childInfo);
        }
    }
    private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip) {
    private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String
            ip) {
        String response = "";
        boolean success = false;
@@ -181,7 +208,7 @@
            success = true;
            return code;
        } catch (Exception e) {
            log.error(e.getMessage());
            log.error("报错信息:{},{}", e.getMessage(), JSON.toJSONString(requestParam));
            throw new CoolException("调用接口响应错误");
        } finally {
            apiLogService.save(namespace, url + path, appkey, ip, JSON.toJSONString(JSONObject.toJSONString(requestParam)), response, success);