自动化立体仓库 - WMS系统
#
Junjie
2025-07-18 7896e6e42007b3d23f97b0d260dd68a18f49ba3b
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -1,5 +1,6 @@
package com.zy.asrs.task.handler;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
@@ -11,12 +12,15 @@
import com.zy.asrs.utils.MathUtils;
import com.zy.asrs.utils.OrderInAndOutUtil;
import com.zy.common.model.DetlDto;
import com.zy.nc.entity.NccSaleDbddWms;
import com.zy.nc.entity.NccSaleXsfhmxWms;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@@ -185,18 +189,21 @@
            return SUCCESS;
        }
        Order orderSou = orderService.selectByNo(order.getOrderNo());
        if (orderSou == null) {
            return FAIL.setMsg("订单不存在,请联系管理员");
        }
        if (!orderSou.getSettle().equals(2L)) {
            return FAIL.setMsg("订单状态不正确,请联系管理员");
        }
        List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId());
        boolean complete = true;
        for (OrderDetl orderDetl : orderDetls) {
            if (orderDetl.getAnfme() > orderDetl.getQty()) {
                complete = false;
                break;
            }
        }
//        for (OrderDetl orderDetl : orderDetls) {
//            if (orderDetl.getAnfme() > orderDetl.getQty()) {
//                complete = false;
//                break;
//            }
//        }
        if (complete) {
            List<OrderDetl> old = orderDetlService.selectByOrderId(orderSou.getId());
            if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo()))) {
@@ -218,13 +225,49 @@
                //先按照批次匹配,再按照无批次号批次,因为销售发货,批次号可能带,有可能不携带,所以就会有问题;而且考虑到一条订单里如果相同物料,一条带批次,一条不带批次,情况
                for (OrderDetl xxx : old) {
                    if (xxx.beSimilar(wrkDetl)) {
                        orderDetl.setRemark(xxx.getRemark());
                        if(Cools.isEmpty(orderDetl.getRemark())) {
                            orderDetl.setRemark(xxx.getRemark());
                        }else {
                            NccSaleXsfhmxWms currentData = JSONObject.parseObject(orderDetl.getRemark(), NccSaleXsfhmxWms.class);
                            if (currentData == null) {
                                continue;
                            }
                            NccSaleXsfhmxWms nextData = JSONObject.parseObject(xxx.getRemark(), NccSaleXsfhmxWms.class);
                            if (nextData == null) {
                                continue;
                            }
                            BigDecimal currentFslDecimal = currentData.getNastnum();
                            BigDecimal nextFslDecimal = nextData.getNastnum();
                            if(currentFslDecimal.doubleValue() < nextFslDecimal.doubleValue()) {
                                orderDetl.setRemark(xxx.getRemark());
                            }
                        }
                    }
                }
                if (Cools.isEmpty(orderDetl.getRemark())) {
                    for (OrderDetl xxx : old) {
                        if (xxx.beSimilarByWrkDetl(wrkDetl)) {
                            orderDetl.setRemark(xxx.getRemark());
                            if(Cools.isEmpty(orderDetl.getRemark())) {
                                orderDetl.setRemark(xxx.getRemark());
                            }else {
                                NccSaleXsfhmxWms currentData = JSONObject.parseObject(orderDetl.getRemark(), NccSaleXsfhmxWms.class);
                                if (currentData == null) {
                                    continue;
                                }
                                NccSaleXsfhmxWms nextData = JSONObject.parseObject(xxx.getRemark(), NccSaleXsfhmxWms.class);
                                if (nextData == null) {
                                    continue;
                                }
                                BigDecimal currentFslDecimal = currentData.getNastnum();
                                BigDecimal nextFslDecimal = nextData.getNastnum();
                                if(currentFslDecimal.doubleValue() < nextFslDecimal.doubleValue()) {
                                    orderDetl.setRemark(xxx.getRemark());
                                }
                            }
                        }
                    }
                }
@@ -253,18 +296,21 @@
            return SUCCESS;
        }
        Order orderSou = orderService.selectByNo(order.getOrderNo());
        if (orderSou == null) {
            return FAIL.setMsg("订单不存在,请联系管理员");
        }
        if (!orderSou.getSettle().equals(2L)) {
            return FAIL.setMsg("订单状态不正确,请联系管理员");
        }
        List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId());
        boolean complete = true;
        for (OrderDetl orderDetl : orderDetls) {
            if (orderDetl.getAnfme() > orderDetl.getQty()) {
                complete = false;
                break;
            }
        }
//        for (OrderDetl orderDetl : orderDetls) {
//            if (orderDetl.getAnfme() > orderDetl.getQty()) {
//                complete = false;
//                break;
//            }
//        }
        if (complete) {
            List<OrderDetl> old = orderDetlService.selectByOrderId(orderSou.getId());
            if (!orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_no", order.getOrderNo()))) {
@@ -286,13 +332,49 @@
                //先按照批次匹配,再按照无批次号批次,因为销售发货,批次号可能带,有可能不携带,所以就会有问题;而且考虑到一条订单里如果相同物料,一条带批次,一条不带批次,情况
                for (OrderDetl xxx : old) {
                    if (xxx.beSimilar(wrkDetl)) {
                        orderDetl.setRemark(xxx.getRemark());
                        if(Cools.isEmpty(orderDetl.getRemark())) {
                            orderDetl.setRemark(xxx.getRemark());
                        }else {
                            NccSaleDbddWms currentData = JSONObject.parseObject(orderDetl.getRemark(), NccSaleDbddWms.class);
                            if (currentData == null) {
                                continue;
                            }
                            NccSaleDbddWms nextData = JSONObject.parseObject(xxx.getRemark(), NccSaleDbddWms.class);
                            if (nextData == null) {
                                continue;
                            }
                            BigDecimal currentFslDecimal = currentData.getFsl();
                            BigDecimal nextFslDecimal = nextData.getFsl();
                            if(currentFslDecimal.doubleValue() < nextFslDecimal.doubleValue()) {
                                orderDetl.setRemark(xxx.getRemark());
                            }
                        }
                    }
                }
                if (Cools.isEmpty(orderDetl.getRemark())) {
                    for (OrderDetl xxx : old) {
                        if (xxx.beSimilarByWrkDetl(wrkDetl)) {
                            orderDetl.setRemark(xxx.getRemark());
                            if(Cools.isEmpty(orderDetl.getRemark())) {
                                orderDetl.setRemark(xxx.getRemark());
                            }else {
                                NccSaleDbddWms currentData = JSONObject.parseObject(orderDetl.getRemark(), NccSaleDbddWms.class);
                                if (currentData == null) {
                                    continue;
                                }
                                NccSaleDbddWms nextData = JSONObject.parseObject(xxx.getRemark(), NccSaleDbddWms.class);
                                if (nextData == null) {
                                    continue;
                                }
                                BigDecimal currentFslDecimal = currentData.getFsl();
                                BigDecimal nextFslDecimal = nextData.getFsl();
                                if(currentFslDecimal.doubleValue() < nextFslDecimal.doubleValue()) {
                                    orderDetl.setRemark(xxx.getRemark());
                                }
                            }
                        }
                    }
                }