自动化立体仓库 - WMS系统
lty
昨天 81808d6e407b8b5a8d3c4d6225a3148114733f90
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -7,10 +7,7 @@
import com.core.common.SnowflakeIdWorker;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.EmptyPlateOutParam;
import com.zy.asrs.entity.param.FullStoreParam;
import com.zy.asrs.entity.param.LocDetlAdjustParam;
import com.zy.asrs.entity.param.StockOutParam;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.*;
@@ -155,31 +152,81 @@
        return null;
    }
//    @Override
//    @Transactional
//    public void startupFullTakeStore(StockOutFloorParam param, Long userId) {
//        // 目标站点状态检测
//        BasDevp staNo = null;
//        // 获取库位明细
//        List<LocDetlDto> locDetlDtos = new ArrayList<>();
//        for (StockOutFloorParam.LocDetl paramLocDetl : param.getLocDetls()) {
//             staNo = basDevpService.checkSiteStatus(paramLocDetl.getSiteId());
//
//            if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
//                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl);
//                if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
//            }
//        }
//        if (!locDetlDtos.isEmpty()) {
//            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
//            if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) {
//                // 启动出库开始 101.出库
//                stockOut(staNo, locDetlDtos, null, userId);
//            } else {
//                throw new CoolException("所选库位存在状态不为F、D的库位,库位号:" + locMast.getLocNo() + " 、当前状态:" + locMast.getLocSts() + "-" + locMast.getLocSts$());
//            }
//        } else {
//            throw new CoolException("库存不存在");
//        }
//    }
    @Override
    @Transactional
    public void startupFullTakeStore(StockOutParam param, Long userId) {
        // 目标站点状态检测
        BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
        // 获取库位明细
        List<LocDetlDto> locDetlDtos = new ArrayList<>();
        for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
    public void startupFullTakeStore(StockOutFloorParam param, Long userId) {
        // 按 siteId 分组
        Map<Integer, List<LocDetlDto>> siteIdToLocDetlsMap = new HashMap<>();
        for (StockOutFloorParam.LocDetl paramLocDetl : param.getLocDetls()) {
            if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl);
                if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
                if (one != null) {
                    LocDetlDto dto = new LocDetlDto(one, paramLocDetl.getCount());
                    Integer siteId = paramLocDetl.getSiteId();
                    if (siteId != null) {
                        siteIdToLocDetlsMap.computeIfAbsent(siteId, k -> new ArrayList<>()).add(dto);
                    }
                }
            }
        }
        if (!locDetlDtos.isEmpty()) {
            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
            if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) {
                // 启动出库开始 101.出库
                stockOut(staNo, locDetlDtos, null, userId);
            } else {
                throw new CoolException("所选库位存在状态不为F、D的库位,库位号:" + locMast.getLocNo() + " 、当前状态:" + locMast.getLocSts() + "-" + locMast.getLocSts$());
            }
        } else {
        if (siteIdToLocDetlsMap.isEmpty()) {
            throw new CoolException("库存不存在");
        }
        // 遍历分组后的每个 siteId,逐个出库
        for (Map.Entry<Integer, List<LocDetlDto>> entry : siteIdToLocDetlsMap.entrySet()) {
            Integer siteId = entry.getKey();
            List<LocDetlDto> locDetlDtos = entry.getValue();
            // 校验库位状态
            LocMast locMast = locMastService.selectOne(
                    new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo())
            );
            if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) {
                // 校验目标站点
                BasDevp staNo = basDevpService.checkSiteStatus(siteId);
                // 执行出库
                stockOut(staNo, locDetlDtos, null, userId);
            } else {
                throw new CoolException("所选库位存在状态不为F、D的库位,库位号:" +
                        locMast.getLocNo() + " 、当前状态:" + locMast.getLocSts() + "-" + locMast.getLocSts$());
            }
        }
    }
    @Override
    @Transactional
@@ -653,29 +700,77 @@
        return wrkMast;
    }
//    @Override
//    @Transactional
//    public void locCheckOut(StockOutParam param, Long userId) {
//        // 目标站点状态检测
//        BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
//        // 获取库位明细
//        List<LocDetlDto> locDetlDtos = new ArrayList<>();
//        for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
//            if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
//                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl);
//                if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
//            }
//        }
//        if (!locDetlDtos.isEmpty()) {
//            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
//            if (locMast.getLocSts().equals("F")) {
//                // 启动出库开始 107.盘点出库
//                stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId);
//            } else {
//                throw new CoolException("所选库位存在状态不为F的库位,库位号:" + locMast.getLocNo() + " 、当前状态:" + locMast.getLocSts() + "-" + locMast.getLocSts$());
//            }
//        } else {
//            throw new CoolException("库位物料不存在");
//        }
//    }
    @Override
    @Transactional
    public void locCheckOut(StockOutParam param, Long userId) {
        // 目标站点状态检测
        BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
        // 获取库位明细
        List<LocDetlDto> locDetlDtos = new ArrayList<>();
        for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
    public void locCheckOut(StockOutFloorParam param, Long userId) {
        // 按 siteId 分组
        Map<Integer, List<LocDetlDto>> siteIdToLocDetlsMap = new HashMap<>();
        for (StockOutFloorParam.LocDetl paramLocDetl : param.getLocDetls()) {
            if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl);
                if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
                if (one != null) {
                    LocDetlDto dto = new LocDetlDto(one, paramLocDetl.getCount());
                    Integer siteId = paramLocDetl.getSiteId();
                    if (siteId != null) {
                        siteIdToLocDetlsMap.computeIfAbsent(siteId, k -> new ArrayList<>()).add(dto);
                    }
                }
            }
        }
        if (!locDetlDtos.isEmpty()) {
            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
            if (locMast.getLocSts().equals("F")) {
                // 启动出库开始 107.盘点出库
        if (siteIdToLocDetlsMap.isEmpty()) {
            throw new CoolException("库存不存在");
        }
        // 遍历分组后的每个 siteId,逐个出库
        for (Map.Entry<Integer, List<LocDetlDto>> entry : siteIdToLocDetlsMap.entrySet()) {
            Integer siteId = entry.getKey();
            List<LocDetlDto> locDetlDtos = entry.getValue();
            // 校验库位状态
            LocMast locMast = locMastService.selectOne(
                    new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo())
            );
            if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) {
                // 校验目标站点
                BasDevp staNo = basDevpService.checkSiteStatus(siteId);
                // 执行出库
                stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId);
            } else {
                throw new CoolException("所选库位存在状态不为F的库位,库位号:" + locMast.getLocNo() + " 、当前状态:" + locMast.getLocSts() + "-" + locMast.getLocSts$());
                throw new CoolException("所选库位存在状态不为F、D的库位,库位号:" +
                        locMast.getLocNo() + " 、当前状态:" + locMast.getLocSts() + "-" + locMast.getLocSts$());
            }
        } else {
            throw new CoolException("库位物料不存在");
        }
    }