自动化立体仓库 - WMS系统
#
lty
8 天以前 d8cbd9c0b6ae133dc0cf09488f124d66296e70ee
src/main/java/com/zy/asrs/task/handler/OrderReportHander.java
@@ -33,11 +33,11 @@
    //端口
    private String URL;
    @Value("${erp.address.inaddressSave}")
    //上报入库地址
    private String inaddressSave;
//    @Value("${erp.address.inaddressSave}")
//    //上报入库地址
//    private String inaddressSave;
    @Value("${erp.address.outaddressSave}")
    //上报出库地址
    //上报出入库地址
    private String outaddressSave;
    @Autowired
    private OrderService orderService;
@@ -51,16 +51,16 @@
    private LoginAuthenticationHandler loginAuthenticationHandler;
    public ReturnT<String> startPakIn() {
        // 先查出 memo 为 null 的所有数据入库单
        // 查出所有数据入库单
        List<Order> orderList = orderService.selectList(new EntityWrapper<Order>().eq("doc_type", 34));
        for(Order order : orderList){
            List<OrderDetl> orderMemoList = orderDetlService.selectList(new EntityWrapper<OrderDetl>()
                    .isNull("memo")
                    .eq("order_No", order.getOrderNo()));
                    .eq("order_No", order.getOrderNo()));//memo为空表示仍未上报
            List<OrderDetl> toReportList = new ArrayList<>();
            // 循环判断 anfme 和 qty 是否相等
            // 循环判断 anfme 和 qty 是否相等,相等则表示已完成入库
            for (OrderDetl orderDetl : orderMemoList) {
                if (orderDetl.getAnfme() != null && orderDetl.getQty() != null
                        && orderDetl.getAnfme().doubleValue() == orderDetl.getQty().doubleValue()) {
@@ -70,12 +70,15 @@
            // 如果有符合条件的数据,执行上报
            if (!toReportList.isEmpty()) {
                reportPakIn(toReportList);
                for (OrderDetl detl : toReportList) {
                    detl.setMemo("1");
                    orderDetlService.updateById(detl);
                    log.info("已完成单据上报 =====> " + detl);
                boolean flag = reportPakIn(toReportList);
                if(flag){
                    for (OrderDetl detl : toReportList) {
                        detl.setMemo("1");
                        orderDetlService.updateById(detl);
                        log.info("已完成单据上报 =====> " + detl);
                    }
                } else {
                    log.warn("入库上报失败,未更新明细 memo 标志");
                }
            }
        }
@@ -83,10 +86,8 @@
        return SUCCESS;
    }
    private void reportPakIn(List<OrderDetl> orderDetls) {
    private boolean reportPakIn(List<OrderDetl> orderDetls) {
        ReturnT<String> start = loginAuthenticationHandler.start();
        KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get("入库单");
        Date now = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -94,7 +95,7 @@
        JSONObject requestBody = new JSONObject();
        requestBody.put("billType", "入库单");
        // 从第一个明细中提取订单号等信息(你可以根据实际情况调整)
        // 从第一个明细中提取订单号等信息
        if (!orderDetls.isEmpty()) {
            OrderDetl first = orderDetls.get(0);
            requestBody.put("orderNo", first.getOrderNo());
@@ -122,13 +123,13 @@
        boolean success = false;
        try {
            HashMap<String, Object> headers = new HashMap<>();
            // 假设你已经提前登录并获取了 cookie
            //  cookie
            headers.put("Cookie", loginAuthenticationHandler.start().getContent());
            response = new HttpHandler.Builder()
                    .setHeaders(headers)
                    .setUri(URL)
                    .setPath(inaddressSave) // 设置你的接口路径
                    .setPath(outaddressSave) // 设置你的接口路径
                    .setJson(requestBody.toJSONString())
                    .build()
                    .doPost();
@@ -146,7 +147,7 @@
            try {
                apiLogService.save(
                        "入库上报",
                        URL + inaddressSave,
                        URL + outaddressSave,
                        null,
                        "127.0.0.1",
                        requestBody.toJSONString(),
@@ -157,10 +158,11 @@
                log.error("日志保存失败", e);
            }
        }
        return success;
    }
    public ReturnT<String> startPakOut() {
        // 先查出 memo 为 null 的所有数据出库单
        // 所有数据出库单
        List<Order> orderList = orderService.selectList(new EntityWrapper<Order>().eq("doc_type", 33));
        for(Order order : orderList){
            List<OrderDetl> orderMemoList = orderDetlService.selectList(new EntityWrapper<OrderDetl>()
@@ -179,12 +181,15 @@
            // 如果有符合条件的数据,执行上报
            if (!toReportList.isEmpty()) {
                reportPakOut(toReportList);
                for (OrderDetl detl : toReportList) {
                    detl.setMemo("1");
                    orderDetlService.updateById(detl);
                    log.info("已完成单据上报 =====> " + detl);
                boolean flag = reportPakOut(toReportList);
                if(flag){
                    for (OrderDetl detl : toReportList) {
                        detl.setMemo("1");
                        orderDetlService.updateById(detl);
                        log.info("已完成单据上报 =====> " + detl);
                    }
                } else {
                    log.warn("出库上报失败,未更新明细 memo 标志");
                }
            }
        }
@@ -192,10 +197,8 @@
        return SUCCESS;
    }
    private void reportPakOut(List<OrderDetl> orderDetls) {
    private boolean reportPakOut(List<OrderDetl> orderDetls) {
        ReturnT<String> start = loginAuthenticationHandler.start();
        KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get("出库单");
        Date now = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -203,7 +206,7 @@
        JSONObject requestBody = new JSONObject();
        requestBody.put("billType", "出库单");
        // 从第一个明细中提取订单号等信息(你可以根据实际情况调整)
        // 从第一个明细中提取订单号等信息
        if (!orderDetls.isEmpty()) {
            OrderDetl first = orderDetls.get(0);
            requestBody.put("orderNo", first.getOrderNo());
@@ -231,13 +234,13 @@
        boolean success = false;
        try {
            HashMap<String, Object> headers = new HashMap<>();
            // 假设你已经提前登录并获取了 cookie
            //cookie
            headers.put("Cookie", loginAuthenticationHandler.start().getContent());
            response = new HttpHandler.Builder()
                    .setHeaders(headers)
                    .setUri(URL)
                    .setPath(inaddressSave) // 设置你的接口路径
                    .setPath(outaddressSave) // 设置你的接口路径
                    .setJson(requestBody.toJSONString())
                    .build()
                    .doPost();
@@ -266,6 +269,7 @@
                log.error("日志保存失败", e);
            }
        }
        return success;
    }
    public static Object findValueByKey(JSONObject json, String key) {