| | |
| | | // 堆垛机对应一楼出库站点 |
| | | private static final int[] oneFloorOutSite = new int[]{0,3002,3003,3006,3008,3009,3012}; |
| | | |
| | | // 堆垛机对应一楼入库站点 |
| | | private static final int[] oneFloorInSite = new int[]{0,3001,3004,3005,3007,3010,3011}; |
| | | |
| | | public void startCkrwPushGwcs(WrkMast wrkMast) { |
| | | |
| | | // 获取请求头 |
| | |
| | | wrkMast.setModiTime(new Date()); |
| | | } else if(wrkMast.getIoType() == 12) { // 跨巷道转移 |
| | | wrkMast.setWrkSts(1L); // 状态改为1.生成入库id |
| | | wrkMast.setCrnNo(Arrays.binarySearch(oneFloorInSite,wrkMast.getStaNo()));// 堆垛机转换为入库的堆垛机 |
| | | wrkMast.setModiTime(new Date()); |
| | | } |
| | | wrkMastMapper.updateById(wrkMast); |
| | |
| | | String staLocNo = null; |
| | | Integer wrkCount = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", i)); |
| | | if(wrkCount > 0) { |
| | | log.warn("{}号堆垛机已存在任务",i); |
| | | // log.warn("{}号堆垛机已存在任务",i); |
| | | continue; |
| | | } |
| | | // 根据堆垛机号查询到对应的深库位和浅库位 深库位4*n-3和4*n 浅库位4*n-2和4*n-1 |
| | |
| | | } |
| | | // 没有找到源库位 |
| | | if (sourceLocNo == null) { |
| | | log.warn("没有找到源库位,堆垛机:{}",i); |
| | | // log.warn("没有找到源库位,堆垛机:{}",i); |
| | | continue; |
| | | } |
| | | // 寻找一个备货的目标库位,先深后浅 |
| | | List<LocMast> locMasts1 = locMastMapper.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("crn_no", i).in("row1", s1, s2) |
| | | .le("bay1", columnNum)); |
| | | .le("bay1", columnNum).orderBy("lev1,bay1,row1")); |
| | | if (locMasts1.isEmpty()) { |
| | | // 深库位为空了,取浅库位 |
| | | List<LocMast> locMasts2 = locMastMapper.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("crn_no", i).in("row1", q1, q2) |
| | | .le("bay1", columnNum)); |
| | | .le("bay1", columnNum).orderBy("lev1,bay1,row1")); |
| | | if (!locMasts2.isEmpty()) { |
| | | staLocNo = locMasts2.get(0).getLocNo(); |
| | | } |
| | |
| | | // 寻找一箱一卷的,没有理货的,不在备货区的物料明细 |
| | | List<LocDetl> tallyGoosList = locDetlMapper.selectTallyGoosList(columnNum); |
| | | |
| | | // 过滤掉木箱规格宽度大于600的(大于600一个托盘只能放一箱) |
| | | tallyGoosList = tallyGoosList.stream().filter(locDetl -> { |
| | | String[] split = locDetl.getColor().split("\\*"); |
| | | if (split.length == 3) { |
| | | return Integer.parseInt(split[1]) <= 600; |
| | | } else { |
| | | return false; |
| | | } |
| | | }).collect(Collectors.toList()); |
| | | |
| | | // 寻找满足理货条件的两个木箱 |
| | | LocDetl leftLocDetl = null; |
| | | LocDetl rightLocDetl = null; |