自动化立体仓库 - WMS系统
#
Administrator
4 天以前 1ee1574b1fce92407e45438b0141121d266efd3d
src/main/java/com/zy/common/service/CommonService.java
@@ -162,7 +162,7 @@
    @Transactional
    public StartupDto getLocNoV2(Integer staDescId, Integer sourceStaNo, WrkMast wrkMast, LocTypeDto locTypeDto) {
        try {
            Integer whsType = Utils.GetWhsType(sourceStaNo);
            Integer whsType = 1;
            RowLastno rowLastno = rowLastnoService.selectById(whsType);
            RowLastnoType rowLastnoType = rowLastnoTypeService.selectById(rowLastno.getTypeId());
            /**
@@ -409,7 +409,7 @@
    }
    /**
     * 当回源库位不在本巷道时,出库至1070重新检索巷道根据1,2巷道之间分配,3,4巷道全局分配规则
     * 当回源库位不在本巷道时,重新检索巷道根据1,2巷道之间分配,3,4巷道全局分配规则
     */
    @Transactional
    public StartupDto getLocNoRunV2(Integer whsType, Integer staDescId, Integer sourceStaNo, WrkMast wrkMast, Integer moveCrnNo, LocTypeDto locTypeDto, int times) {
@@ -420,18 +420,18 @@
            detl = wrkDetl.get(0);
        }
        String matnr = detl == null ? null : detl.getMatnr();
        int[] candidates = wrkMast.getCrnNo() != null && wrkMast.getCrnNo() < 3 ? new int[]{1, 2} : new int[]{1, 2, 3, 4};
        Integer sourceCrnNo = null;
        if (!Cools.isEmpty(wrkMast.getLocNo())) {
            LocMast sourceLoc = locMastService.selectById(wrkMast.getLocNo());
            if (!Cools.isEmpty(sourceLoc) && sourceLoc.getCrnNo() != null) {
                sourceCrnNo = sourceLoc.getCrnNo();
            }
        }
        int[] candidates = sourceCrnNo != null && sourceCrnNo < 5 ? new int[]{1, 2} : new int[]{1, 2, 3, 4};
        Integer chosenCrnNo = null;
        Integer chosenCount = null;
        for (int candidate : candidates) {
            if (!basCrnpService.checkSiteError(candidate, true)) {
                continue;
            }
            StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                    .eq("type_no", staDescId)
                    .eq("stn_no", sourceStaNo)
                    .eq("crn_no", candidate));
            if (Cools.isEmpty(staDesc)) {
            if (sourceCrnNo != null && candidate == sourceCrnNo) {
                continue;
            }
            //判断该巷道是否存在空位
@@ -457,23 +457,44 @@
                chosenCount = count;
            }
        }
        if (chosenCrnNo == null) {
            throw new CoolException("没有空库位");
        LocMast locMast = null;
        if (chosenCrnNo != null) {
            locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
                    .eq("crn_no", chosenCrnNo)
                    .eq("loc_sts", "O")
                    .eq("frozen", 0)
                    .eq("deleted", 0)
                    .eq("whs_type", 1)
                    .orderBy("lev1,bay1"));
        }
        StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                .eq("type_no", staDescId)
                .eq("stn_no", sourceStaNo)
                .eq("crn_no", chosenCrnNo));
        if (Cools.isEmpty(staDesc)) {
            throw new CoolException("入库路径不存在");
        if (!Cools.isEmpty(locMast) && sourceCrnNo != null && sourceCrnNo.equals(locMast.getCrnNo())) {
            locMast = null;
        }
        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
                .eq("crn_no", chosenCrnNo)
                .eq("loc_sts", "O")
                .eq("frozen", 0)
                .eq("deleted", 0)
                .eq("whs_type", 1)
                .orderBy("lev1,bay1"));
        if (Cools.isEmpty(locMast)) {
            List<LocMast> anyLocs = locMastService.selectList(new EntityWrapper<LocMast>()
                    .eq("loc_sts", "O")
                    .eq("frozen", 0)
                    .eq("deleted", 0)
                    .eq("whs_type", 1)
                    .orderBy("lev1,bay1"));
            if (!Cools.isEmpty(anyLocs)) {
                for (LocMast anyLoc : anyLocs) {
                    if (anyLoc == null || anyLoc.getCrnNo() == null) {
                        continue;
                    }
                    if (sourceCrnNo != null && sourceCrnNo.equals(anyLoc.getCrnNo())) {
                        continue;
                    }
                    if (!basCrnpService.checkSiteError(anyLoc.getCrnNo(), true)) {
                        continue;
                    }
                    chosenCrnNo = anyLoc.getCrnNo();
                    locMast = anyLoc;
                    break;
                }
            }
        }
        if (Cools.isEmpty(locMast)) {
            throw new CoolException("没有空库位");
        }
@@ -481,9 +502,7 @@
        int workNo = getWorkNo(0);
        startupDto.setWorkNo(workNo);
        startupDto.setCrnNo(chosenCrnNo);
        startupDto.setSourceStaNo(sourceStaNo);
        startupDto.setLocNo(locNo);
        startupDto.setStaNo(staDesc.getCrnStn());
        return startupDto;
    }