自动化立体仓库 - WMS系统
lsh
2024-08-21 f72b0dc0ae80fee81a7a678deb0e3d97f89a0e1b
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -94,7 +94,7 @@
        // 检索库位
        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
        List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList());
        StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matnrs, locTypeDto);
        StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matnrs, locTypeDto,0);
        // 生成工作号
        int workNo = dto.getWorkNo();
        // 生成工作档
@@ -167,17 +167,25 @@
        for(StockOutParam.LocDetl one : param.getLocDetls()){
            locs.add(one.getLocNo());
        }
        boolean sign = true;
        for (StockOutParam.LocDetl locDetl : param.getLocDetls()) {
            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo()));
            //获取同一库位组的外侧库位号
            List<String> groupOuterSingleLoc = Utils.getGroupOuterSingleLoc(locDetl.getLocNo());
            if (locMast.getLocType2().equals((short)3)){
                groupOuterSingleLoc = Utils.getGroupOuterSingleLocLowFrequency(locDetl.getLocNo());
            }
        List<StockOutParam.LocDetl> stockOutParamLocDetlSort = Utils.getStockOutParamLocDetlSort(param.getLocDetls());
        boolean sign = true;
        List<String> locNoWeighting = new ArrayList<>();
        for (StockOutParam.LocDetl locDetl : stockOutParamLocDetlSort) {
            if (Cools.isEmpty(locNoWeighting)){
                locNoWeighting.add(locDetl.getLocNo());
            }else {
                if (!Utils.getLocNoWeighting(locNoWeighting,locDetl.getLocNo())){
                    locNoWeighting.add(locDetl.getLocNo());
                    sign = true;
                }
            }
            if (sign){
                if (locMast.getLocType2().equals((short)3)) {
                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo()));
                //获取同一库位组的外侧库位号
                List<String> groupOuterSingleLoc = Utils.getGroupOuterSingleLoc(locDetl.getLocNo());
                if (locMast.getLocType2().equals((short)3)){
                    groupOuterSingleLoc = Utils.getGroupOuterSingleLocLowFrequency(locDetl.getLocNo());
                    sign = false;
                }
                for (String locNo : groupOuterSingleLoc) {
@@ -470,21 +478,44 @@
        Date now = new Date();
        // 合并同类项
        Set<String> locNos = new HashSet<>();
        ArrayList<String> locNos2 = new ArrayList<String>();
        List<OutLocDto> dtos = new ArrayList<>();
        for (LocDetlDto locDetlDto : locDetlDtos) {
            String locNo = locDetlDto.getLocDetl().getLocNo();
            if (locNos.contains(locNo)) {
                for (OutLocDto dto : dtos) {
                    if (dto.getLocNo().equals(locNo)) {
                        dto.getLocDetlDtos().add(locDetlDto);
                        break;
            locNos2.add(locNo);
            //if (locNos.contains(locNo)) {
                //for (OutLocDto dto : dtos) {
                //    if (dto.getLocNo().equals(locNo)) {
                //        dto.getLocDetlDtos().add(locDetlDto);
                //        break;
                //    }
                //}
            //} else {
                //locNos.add(locNo);
                //dtos.add(new OutLocDto(locNo, locDetlDto));
            //}
        }
        List<String> innermostSideLoc = Utils.getInnermostSideLoc(locNos2, true);
        System.out.println(innermostSideLoc);
        for (LocDetlDto locDetlDto : locDetlDtos) {
            String locNo = locDetlDto.getLocDetl().getLocNo();
            if(innermostSideLoc.contains(locNo)) {
                if (locNos.contains(locNo)) {
                    for (OutLocDto dto : dtos) {
                        if (dto.getLocNo().equals(locNo)) {
                            dto.getLocDetlDtos().add(locDetlDto);
                            break;
                        }
                    }
                } else {
                    locNos.add(locNo);
                    dtos.add(new OutLocDto(locNo, locDetlDto));
                }
            } else {
                locNos.add(locNo);
                dtos.add(new OutLocDto(locNo, locDetlDto));
                //dtos.add(new OutLocDto(locNo,locDetlDto));
            }
        }
        Integer ioType = null;
        List<String> excludeLocNos = dtos.stream().map(OutLocDto::getLocNo).distinct().collect(Collectors.toList());
        // 生成工作档
@@ -815,7 +846,7 @@
                        }
                        WaitPakin waitPakin = new WaitPakin();
                        waitPakin.sync(mat);
                        waitPakin.setBatch("");
                        //waitPakin.setBatch("");
                        waitPakin.setZpallet(locDetl.getZpallet());   // 托盘码
                        waitPakin.setIoStatus("N");     // 入出状态
                        waitPakin.setAnfme(locDetl.getAnfme());  // 数量
@@ -1193,7 +1224,7 @@
        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
        // 检索库位
        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
        StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, null, locTypeDto);
        StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, null, locTypeDto,0);
        int workNo = dto.getWorkNo();
        // 生成工作档
        WrkMast wrkMast = new WrkMast();
@@ -1504,6 +1535,7 @@
                    AdjDetl adjDetl = new AdjDetl();
                    adjDetl.setLocNo(locDetl.getLocNo());
                    adjDetl.setMatnr(locDetl.getMatnr());
                    adjDetl.setSpecs(locDetl.getSpecs());
                    adjDetl.setBatch(locDetl.getBatch());
                    adjDetl.setOriQty(locDetl.getAnfme());
                    adjDetl.setAdjQty(adjust.getCount());
@@ -1655,7 +1687,7 @@
        for (WrkDetl wrkDetl : wrkDetls) {
            if (!Cools.isEmpty(wrkDetl.getOrderNo())){
                String[] orderNos = GetOrderNo(wrkDetl.getOrderNo());
                if (!Cools.isEmpty(orderNos)){
                if (!Cools.isEmpty(orderNos) && orderNos.length!=0){
                    String[] anfmes = GetAnfme(wrkDetl.getOrderNo());
                    int i = 0;
                    for (String orderNo : orderNos) {
@@ -1729,8 +1761,7 @@
        if (!wrkMastRes || !locMastRes) {
            throw new CoolException("保存数据失败");
        }
        WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
        waitPakinService.delete(new EntityWrapper<>(waitPakin));
        waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
    }
    @Override