自动化立体仓库 - WMS系统
pang.jiabao
2024-07-08 f873c89d87eb16ee83c0058d9a841a97d8e2bf14
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -13,7 +13,6 @@
import com.zy.asrs.entity.param.LocDetlAdjustParam;
import com.zy.asrs.entity.param.StockOutParam;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.OutboundAllocationUtil;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.*;
import com.zy.common.model.enums.IoWorkType;
@@ -28,7 +27,6 @@
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
 * Created by vincent on 2020/6/11
@@ -255,10 +253,12 @@
                orderDetl.setSpecs(locDetl.getSpecs());//规格
                orderDetl.setBrand(locDetl.getBrand());//木箱类型
                orderDetl.setBarcode(locDetl.getZpallet());//木箱类型
                orderDetl.setWeight(locDetl.getWeight());
//                orderDetl.setWorkQty(locDetl.getAnfme());
                orderDetl.setWorkQty(0.0);
                orderDetl.setOrderId(order.getId());
                orderDetl.setOrderNo(order.getOrderNo());
                orderDetl.setOrigin(locDetl.getOrigin());
                orderDetl.setCreateBy(userId);
                orderDetl.setCreateTime(now);
                orderDetl.setUpdateBy(userId);
@@ -401,7 +401,48 @@
        LocMast locMast = locMastService.selectById(taskDto.getLocNo());
        // 获取路径
        int ioType = taskDto.isAll() ? 101 : 103;
        StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
//        StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
        // 根据库位排号+出库站点,获取出库源站点
        int row = Integer.parseInt(locMast.getLocNo().substring(0, 2));
        int souresStaNo = 0;
        if (taskDto.getStaNo() < 3000) { // 二楼
            switch (row) {
                case 1: case 2: case 3:
                case 4: souresStaNo = 2062; break;
                case 5: case 6: case 7:
                case 8: souresStaNo = 2065; break;
                case 9: case 10: case 11:
                case 12: souresStaNo = 2068; break;
                case 13: case 14: case 15:
                case 16: souresStaNo = 2070; break;
                case 17: case 18: case 19:
                case 20: souresStaNo = 2073; break;
                case 21: case 22: case 23:
                case 24: souresStaNo = 2076; break;
                default:
            }
        } else { // 一楼
            switch (row) {
                case 1: case 2: case 3:
                case 4: souresStaNo = 3002; break;
                case 5: case 6: case 7:
                case 8: souresStaNo = 3003; break;
                case 9: case 10: case 11:
                case 12: souresStaNo = 3006; break;
                case 13: case 14: case 15:
                case 16: souresStaNo = 3008; break;
                case 17: case 18: case 19:
                case 20: souresStaNo = 3009; break;
                case 21: case 22: case 23:
                case 24: souresStaNo = 3012; break;
                default:
            }
        }
        if (souresStaNo == 0) {
            throw new CoolException("源站点转换异常:" + row);
        }
        // 生成工作号
        int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
        // 生成工作档
@@ -412,8 +453,8 @@
        wrkMast.setIoType(ioType); // 入出库状态
        wrkMast.setIoPri(13D); // 优先级:13
        wrkMast.setCrnNo(locMast.getCrnNo());
        wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 源站
        wrkMast.setStaNo(staDesc.getStnNo()); // 目标站
        wrkMast.setSourceStaNo(souresStaNo); // 源站
        wrkMast.setStaNo(taskDto.getStaNo()); // 目标站
        wrkMast.setSourceLocNo(taskDto.getLocNo()); // 源库位
        wrkMast.setFullPlt("Y"); // 满板:Y
        wrkMast.setPicking("N"); // 拣料
@@ -436,9 +477,17 @@
                orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
            }
            WrkDetl wrkDetl = new WrkDetl();
            wrkDetl.sync(orderDetl);
//            wrkDetl.sync(orderDetl);
            wrkDetl.setZpallet(wrkMast.getBarcode());
            wrkDetl.setIoTime(now);
            wrkDetl.setMatnr(locDto.getMatnr());
            wrkDetl.setMaktx(locDto.getMaktx());
            wrkDetl.setWeight(locDto.getWeight()); // 净重
            wrkDetl.setVolume(locDto.getVolume()); // 毛重
            wrkDetl.setOrigin(locDto.getOrigin()); // 木箱在托盘位置
            wrkDetl.setPrice(locDto.getPrice());
            wrkDetl.setSpecs(locDto.getSpecs());
            wrkDetl.setModel(locDto.getModel());
            wrkDetl.setWrkNo(workNo);
            wrkDetl.setBatch(locDto.getBatch());
            wrkDetl.setOrderNo(locDto.getOrderNo());
@@ -968,7 +1017,7 @@
                locMast.setModiUser(userId);
                locMastService.updateById(locMast);
            }
        } else if (wrkMast.getIoType()==202){
        } else if (wrkMast.getIoType()==202 || wrkMast.getIoType()==212){
        } else {
            throw new CoolException("当前工作状态无法取消");
        }
@@ -1056,7 +1105,7 @@
            // 删除工作档明细
            boolean wrkDetlRes = wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo));
        }
        if (wrkMast.getIoType()==202){
        if (wrkMast.getIoType()==202 || wrkMast.getIoType()==212){
            return;
        }
@@ -1245,7 +1294,7 @@
        }
        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("matnr", param.getLocDetls().get(0).getMatnr()));
        if (Cools.isEmpty(locDetls) || locDetls.size()<1){
            throw new CoolException("待修改商品无库存,无需修改!  品号:"+param.getLocDetls().get(0).getMatnr());
            throw new CoolException("待修改商品无库存,无需修改!  规格:"+param.getLocDetls().get(0).getMatnr());
        }
        try {
            locDetlService.updateMatTurn(param.getLocDetls().get(0).getMatnr(),mat.getMatnr());