#
Junjie
2024-09-09 2caa2f2df08c71b3c908a450cd37daeeda6f5c58
#
2个文件已修改
1个文件已添加
117 ■■■■ 已修改文件
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/LocBindType.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/OrderUtils.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/LocBindType.java
New file
@@ -0,0 +1,65 @@
package com.zy.asrs.wms.asrs.entity.enums;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.framework.common.SpringUtils;
import com.zy.asrs.framework.exception.CoolException;
import com.zy.asrs.wms.asrs.entity.LocType;
import com.zy.asrs.wms.asrs.service.LocTypeService;
import java.util.ArrayList;
import java.util.List;
public enum LocBindType {
    HEIGHT("locTypeHeight", "高低类型"),
    WEIGHT("locTypeWeight", "宽窄类型"),
    ;
    public String flag;
    public String desc;
    LocBindType(String flag, String desc) {
        this.flag = flag;
        this.desc = desc;
    }
    public long val() {
        LocTypeService service = SpringUtils.getBean(LocTypeService.class);
        LocType locType = service.getOne(new LambdaQueryWrapper<LocType>().eq(LocType::getFlag, flag));
        if (locType == null) {
            throw new CoolException("LocType Error!");
        }
        return locType.getId();
    }
    public List<Long> list() {
        LocTypeService service = SpringUtils.getBean(LocTypeService.class);
        LocType locType = service.getOne(new LambdaQueryWrapper<LocType>().eq(LocType::getFlag, flag));
        if (locType == null) {
            throw new CoolException("LocType Error!");
        }
        List<LocType> list = service.list(new LambdaQueryWrapper<LocType>().eq(LocType::getParentId, locType.getId()));
        ArrayList<Long> longs = new ArrayList<>();
        for (LocType type : list) {
            longs.add(type.getId());
        }
        if (longs.isEmpty()) {
            throw new CoolException("LocType Error!");
        }
        return longs;
    }
    public static LocBindType get(String flag) {
        for (LocBindType value : LocBindType.values()) {
            if (flag.equals(value.flag)) {
                return value;
            }
        }
        return null;
    }
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java
@@ -8,6 +8,7 @@
import com.zy.asrs.wms.asrs.entity.param.GeneratePakInParam;
import com.zy.asrs.wms.asrs.service.*;
import com.zy.asrs.wms.utils.LocUtils;
import com.zy.asrs.wms.utils.OrderUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -57,6 +58,8 @@
    private LocTypeService locTypeService;
    @Autowired
    private MatService matService;
    @Autowired
    private OrderUtils orderUtils;
    @Override
    public String generateTaskNo(Long taskType) {
@@ -496,19 +499,7 @@
            //回滚订单
            for (TaskDetl taskDetl : taskDetls) {
                if (taskDetl.getDetlId() != null) {
                    OrderDetl orderDetl = orderDetlService.getById(taskDetl.getDetlId());
                    if(orderDetl == null){
                        throw new CoolException("订单明细不存在");
                    }
                    //回滚工作数量
                    orderDetl.setWorkQty(orderDetl.getWorkQty() - taskDetl.getAnfme());
                    orderDetl.setUpdateTime(new Date());
                    boolean orderDetlUpdate = orderDetlService.updateById(orderDetl);
                    if(!orderDetlUpdate){
                        throw new CoolException("工作数量回滚失败");
                    }
                    orderUtils.updateWorkQty(taskDetl.getDetlId(), taskDetl.getAnfme(), false);
                }
                //入库回滚组托通知档
@@ -586,7 +577,7 @@
        }
        //获取源库位高度
        LocTypeBind locTypeBind = locTypeBindService.getOne(new LambdaQueryWrapper<LocTypeBind>().eq(LocTypeBind::getLocId, originLoc.getId()));
        LocTypeBind locTypeBind = locTypeBindService.getOne(new LambdaQueryWrapper<LocTypeBind>().eq(LocTypeBind::getLocId, originLoc.getId()).in(LocTypeBind::getTypeId, LocBindType.HEIGHT.list()));
        if(locTypeBind == null){
            throw new CoolException("库位类型不存在");
        }
zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/OrderUtils.java
@@ -1,5 +1,6 @@
package com.zy.asrs.wms.utils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.framework.exception.CoolException;
import com.zy.asrs.wms.asrs.entity.Order;
import com.zy.asrs.wms.asrs.entity.OrderDetl;
@@ -11,6 +12,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
@Component
public class OrderUtils {
@@ -22,13 +24,18 @@
    @Transactional
    public void updateWorkQty(Long orderDetlId, Double qty) {
        updateWorkQty(orderDetlId, qty, true);
    }
    @Transactional
    public void updateWorkQty(Long orderDetlId, Double qty, boolean increase) {
        OrderDetl orderDetl = orderDetlService.getById(orderDetlId);
        if(orderDetl == null) {
        if (orderDetl == null) {
            throw new CoolException("订单明细不存在");
        }
        Order order = orderService.getById(orderDetl.getOrderId());
        if(order == null) {
        if (order == null) {
            throw new CoolException("订单不存在");
        }
@@ -40,16 +47,32 @@
        }
        Double workQty = orderDetl.getWorkQty();
        orderDetl.setWorkQty(workQty + qty);
        if (increase) {
            orderDetl.setWorkQty(workQty + qty);
        }else {
            orderDetl.setWorkQty(workQty - qty);
        }
        orderDetl.setUpdateTime(new Date());
        if (!orderDetlService.updateById(orderDetl)) {
            throw new CoolException("订单明细更新失败");
        }
        List<OrderDetl> orderDetls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, order.getId()));
        boolean flag = false;
        for (OrderDetl detl : orderDetls) {
            if ((detl.getQty() + detl.getWorkQty()) > 0) {
                flag = true;
                break;
            }
        }
        order.setOrderSettle(OrderSettleType.WORKING.val());
        if (flag) {
            order.setOrderSettle(OrderSettleType.WORKING.val());
        } else {
            order.setOrderSettle(OrderSettleType.WAIT.val());
        }
        order.setUpdateTime(new Date());
        if(!orderService.updateById(order)) {
        if (!orderService.updateById(order)) {
            throw new CoolException("订单更新失败");
        }
    }