自动化立体仓库 - WMS系统
zhangc
2025-03-19 8c5ce72e1334c972238578b8e21e6b698a68a457
src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
@@ -7,7 +7,11 @@
import com.core.common.Cools;
import com.core.common.SnowflakeIdWorker;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.constant.AsrsConstants;
import com.zy.asrs.entity.AgvLocDetl;
import com.zy.asrs.entity.AgvLocMast;
import com.zy.asrs.entity.AgvWrkDetl;
import com.zy.asrs.entity.OrderDetl;
import com.zy.asrs.mapper.AgvLocDetlMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
@@ -54,13 +58,18 @@
        List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", taskCode));
        long flowId = snowflakeIdWorker.nextId();
        agvWrkDetls.stream().map(agvWrkDetl -> {
            AgvLocDetl agvLocDetl = new AgvLocDetl();
            log.info("agvWrkDetl: " + agvLocDetl.getBarcode());
            BeanUtils.copyProperties(agvWrkDetl, agvLocDetl);
            agvLocDetl.setLocNo(locNo);
            this.insert(agvLocDetl);
            // 流水 -- 新增订单明细
            OrderDetl orderDetl = orderDetlService.selectItem(agvWrkDetl.getOrderNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode());
            AgvLocDetl agvLocDetl = this.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo).eq("matnr", agvWrkDetl.getMatnr()).eq("three_code", agvWrkDetl.getThreeCode()));
            if (agvLocDetl != null) {
                this.updateAnfme(agvLocDetl.getAnfme() + agvWrkDetl.getAnfme(), agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getBatch(), agvLocDetl.getThreeCode(), agvLocDetl.getDeadTime());
            } else {
                agvLocDetl = new AgvLocDetl();
                //log.info("agvWrkDetl: " + agvLocDetl.getBarcode());
                BeanUtils.copyProperties(agvWrkDetl, agvLocDetl);
                agvLocDetl.setLocNo(locNo);
                //log.info("zc添加库存日志:{}", JSON.toJSON(agvLocDetl));
                this.insert(agvLocDetl);
                // 流水 -- 新增订单明细
                //OrderDetl orderDetl = orderDetlService.selectItem(agvWrkDetl.getOrderNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode());
//            FlowLog flowLog = new FlowLog();
//            flowLog.setFid(String.valueOf(flowId));
//            flowLog.setSpare2(String.valueOf(taskCode));
@@ -86,6 +95,7 @@
//            if (!flowLogService.insert(flowLog)) {
//                throw new CoolException("同步半成品调拨单流水记录失败");
//            }
            }
            return agvLocDetl;
        }).collect(Collectors.toList());
@@ -95,17 +105,28 @@
        //根据物料号和批次找到对应的库存,并且按照修改时间排序
        Wrapper<AgvLocDetl> wrapper = new EntityWrapper<AgvLocDetl>().eq("matnr", matnr).orderBy("modi_time");
        if (type != null) {
            wrapper.notLike("loc_no", "F1");
            if (type.equals(AsrsConstants.ERCHANG)) {
                wrapper.notLike("loc_no", "F3");
            } else {
                if (matnr.startsWith("401") || matnr.startsWith("402")) {
                    //wrapper.notLike("loc_no", "F3");
                    wrapper.notLike("loc_no", "F1");
                } else {
                    wrapper.notLike("loc_no", "F1");
                }
            }
        }
        wapperSetCondition(wrapper, "batch", batch);
        //一直有PE带批次字段导致,无法出库,就注释掉
        //wapperSetCondition(wrapper, "batch", batch);
        wapperSetCondition(wrapper, "three_code", csocode);
        wapperSetCondition(wrapper, "dead_time", isoseq);
        //wapperSetCondition(wrapper, "dead_time", isoseq);
        if ("JG".equals(orderNo.substring(0, 2))) {
            wapperSetCondition(wrapper, "process_sts", "1");
        }
        List<AgvLocDetl> agvLocDetls = this.selectList(wrapper);
        for (AgvLocDetl agvLocDetl : agvLocDetls) {
            //判断当前库位货物是否F在库
@@ -131,7 +152,39 @@
                //当前库位所处楼层
                int floor = Integer.parseInt(agvLocDetl.getLocNo().split("F")[1]);
                //locDto.setAgvStaNos(queryAgvStaNosByFloor(floor));
                locDto.setAgvStaNos(agvBasDevpService.selectCacheShelvesStationCodeByLocType(agvLocMast.getLocType1(), floor));
                //四期
                //locDto.setAgvStaNos(agvBasDevpService.selectCacheShelvesStationCodeByLocType(agvLocMast.getLocType1(), floor));
                List<String> strings = agvBasDevpService.selectCacheShelvesStationCodeByLocType(agvLocMast.getLocType1());
                List<String> agvStaNos = new ArrayList<>();
                if (agvLocDetl.getLocNo().contains("01F1")) {
                    for (String string : strings) {
                        if (string.contains("F1") || string.contains("F4")) {
                            agvStaNos.add(string);
                        }
                    }
                } else if (agvLocDetl.getLocNo().contains("02F1")) {
                    for (String string : strings) {
                        if (string.contains("F1") || string.contains("F4")) {
                            agvStaNos.add(string);
                        }
                    }
                } else if (agvLocDetl.getLocNo().contains("F2")) {
                    for (String string : strings) {
                        if (string.contains("F2") || string.contains("F4")) {
                            agvStaNos.add(string);
                        }
                    }
                } else if (agvLocDetl.getLocNo().contains("F3")) {
                    for (String string : strings) {
                        if (string.contains("F3")) {
                            agvStaNos.add(string);
                        }
                    }
                } else {
                    agvStaNos = strings;
                }
                locDto.setAgvStaNos(agvStaNos);
                locDtoList.add(locDto);
                issued -= anfme;
@@ -141,6 +194,7 @@
        return issued;
    }
    /*
    更新库存明细
@@ -161,8 +215,19 @@
    }
    @Override
    public Double getSumAnfme2(String matnr, String threeCode) {
        return this.baseMapper.selectSumAnfmeByMatnr2(matnr, threeCode);
    }
    @Override
    public AgvLocDetl selectItem(String locNo, String matnr, String batch, String csocode, String isoCode) {
        return this.baseMapper.selectItemByOrderNo(locNo, matnr, batch, csocode, isoCode);
    }
    @Override
    public List<AgvLocDetl> selectItem2(String locNo, String matnr, String batch, String csocode, String isoCode) {
        return this.baseMapper.selectItemByOrderNo2(locNo, matnr, batch, csocode, isoCode);
    }
    @Override
@@ -176,8 +241,18 @@
    }
    @Override
    public Double getSumAnfmeProcessed2(String matnr, String threeCode) {
        return this.baseMapper.selectSumAnfmeByMatnrProcessed2(matnr, threeCode);
    }
    @Override
    public Double getSumAnfmeDb(String matnr, String threeCode, Integer floor) {
        return this.baseMapper.selectSumAnfmeByMatnr2(matnr, threeCode, floor);
        return this.baseMapper.selectSumAnfmeByMatnr22(matnr, threeCode, floor);
    }
    @Override
    public Double getSumAnfmeDb2(String matnr, String threeCode, Integer floor) {
        return this.baseMapper.selectSumAnfmeByMatnr3(matnr, threeCode, floor);
    }
    @Override