自动化立体仓库 - WMS系统
#
ytfl
1 天以前 7e8c672d13a4d5c9ef6d8b62f6fc1ce092a6c123
#
8个文件已修改
156 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MobileController.java 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/WorkController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/StaDescService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/Utils.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -366,42 +366,41 @@
            ckbmList.add(storeType.getStoreId());
        }
        NccSaleXclGgsybWms nccSaleXclGgsybWms = nccSaleXclGgsybWmsService.selectOne(new EntityWrapper<NccSaleXclGgsybWms>()
                .eq("WLBM", combMat.getMatnr())
                .eq("VBATCHCODE", combMat.getBatch())
                .in("CKBM", ckbmList)
        );
        if(null == nccSaleXclGgsybWms) {
            return R.error("未查到ERP库存");
        }
        //ERP库存数量
        BigDecimal zsl = nccSaleXclGgsybWms.getZsl();
        //获取立库数量
        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
                .eq("matnr", combMat.getMatnr())
                .eq("batch", combMat.getBatch())
        );
        BigDecimal stockNum = new BigDecimal(0);
        for (LocDetl locDetl : locDetls) {
            stockNum = stockNum.add(BigDecimal.valueOf(locDetl.getAnfme()));
        }
        //加上组托数量
        for (CombParam.CombMat mat : combParam.getCombMats()) {
            stockNum = stockNum.add(BigDecimal.valueOf(mat.getAnfme()));
        }
        if(stockNum.doubleValue() > zsl.doubleValue()) {
            return R.error("组托数量超过ERP库存");
        }
        List<CombParam.CombMat> combMats = combParam.getCombMats();
        for (CombParam.CombMat mat : combMats) {
            mat.setStandby1(nccSaleXclGgsybWms.getCkbm());
            mat.setCstateid(nccSaleXclGgsybWms.getCstateid());
        }
//        NccSaleXclGgsybWms nccSaleXclGgsybWms = nccSaleXclGgsybWmsService.selectOne(new EntityWrapper<NccSaleXclGgsybWms>()
//                .eq("WLBM", combMat.getMatnr())
//                .eq("VBATCHCODE", combMat.getBatch())
//                .in("CKBM", ckbmList)
//        );
//        if(null == nccSaleXclGgsybWms) {
//            return R.error("未查到ERP库存");
//        }
//
//        //ERP库存数量
//        BigDecimal zsl = nccSaleXclGgsybWms.getZsl();
//
//        //获取立库数量
//        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>()
//                .eq("matnr", combMat.getMatnr())
//                .eq("batch", combMat.getBatch())
//        );
//        BigDecimal stockNum = new BigDecimal(0);
//        for (LocDetl locDetl : locDetls) {
//            stockNum = stockNum.add(BigDecimal.valueOf(locDetl.getAnfme()));
//        }
//
//        //加上组托数量
//        for (CombParam.CombMat mat : combParam.getCombMats()) {
//            stockNum = stockNum.add(BigDecimal.valueOf(mat.getAnfme()));
//        }
//
//        if(stockNum.doubleValue() > zsl.doubleValue()) {
//            return R.error("组托数量超过ERP库存");
//        }
//
//        List<CombParam.CombMat> combMats = combParam.getCombMats();
//        for (CombParam.CombMat mat : combMats) {
//            mat.setStandby1(nccSaleXclGgsybWms.getCkbm());
//        }
        mobileService.comb(combParam, getUserId());
        return R.ok("组托成功");
src/main/java/com/zy/asrs/controller/WorkController.java
@@ -101,6 +101,9 @@
    @RequestMapping("/plate/out/start")
    @ManagerAuth(memo = "出库作业")
    public R fullStoreTakeStart(@RequestBody StockOutParam param) {
        /*if (getUser().getRoleId()!=2 && getUser().getRoleId()!=14){
            return R.error("无权限 请联系管理员");
        }*/
        workService.startupFullTakeStore(param, getUserId());
        return R.ok("出库启动成功");
    }
src/main/java/com/zy/asrs/service/StaDescService.java
@@ -11,7 +11,7 @@
    List<StaDesc> queryCrnStn(Integer typeNo, Integer crnNo, Integer stnNo);
    StaDesc queryCrnStnAuto(Integer typeNo, Integer crnNo, Integer stnNo);
    StaDesc queryCrnStnAuto(Integer typeNo, Integer crnNo, Integer stnNo,Integer row);
    StaDesc queryCrnStn(Integer crnNo);
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -1295,7 +1295,7 @@
                    .setJson(JSON.toJSONString(map))
                    .build()
                    .doPost();
            log.info("toOutSta:{}", response);
            log.info("toOutSta:{},{}",map, response);
        } catch (Exception e) {
            log.error("fail", e);
        }
src/main/java/com/zy/asrs/service/impl/StaDescServiceImpl.java
@@ -43,7 +43,18 @@
    }
    @Override
    public StaDesc queryCrnStnAuto(Integer typeNo, Integer crnNo, Integer stnNo) {
    public StaDesc queryCrnStnAuto(Integer typeNo, Integer crnNo, Integer stnNo, Integer row) {
        if (crnNo == 1 && row > 3) {
            Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                    .eq("type_no", typeNo)
                    .eq("stn_no", stnNo)
                    .eq("crn_no", crnNo)
                    .orderBy("stn_no", false);
            StaDesc staDesc = this.selectOne(wrapper);
            if (staDesc != null) {
                return staDesc;
            }
        }
        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                .eq("type_no", typeNo)
                .eq("stn_no", stnNo)
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -465,7 +465,7 @@
        String orderNo = taskDto.getLocDtos().get(0).getOrderNo();
        OrderPakout orderPakout = orderPakOutService.selectByNo(orderNo);
        int ioType = orderPakout.getDocType() == 8 ? 107 : (taskDto.isAll() ? 101 : 103);
        StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
        StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo(),locMast.getRow1());
        // 生成工作号
        int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
        // 生成工作档
src/main/java/com/zy/asrs/utils/Utils.java
@@ -143,8 +143,8 @@
        if (row == 1 || row == 6) {
            return null;
        }
        //2,7,11,15,19,23
        if (row == 2 || row == 8 || row == 12 || row == 16 || row == 20 || row == 24) {
        //2,8,11,15,19,23
        if (row == 5 || row == 8 || row == 12 || row == 16 || row == 20 || row == 24) {
            return zerofill(String.valueOf(row - 1), 2) + shallowLoc.substring(2);
        } else {
            return zerofill(String.valueOf(row + 1), 2) + shallowLoc.substring(2);
src/main/java/com/zy/common/service/CommonService.java
@@ -293,9 +293,10 @@
                if (nearRow == 0) {
                    throw new CoolException("无可用堆垛机");
                }
            } else {
                throw new CoolException("无可用堆垛机");
            }
//            else {
//                throw new CoolException("无可用堆垛机");
//            }
        }
        boolean signRule1 = false;
@@ -443,40 +444,22 @@
        StaDesc staDesc = null;
        BasDevp staNo = null;
        if (Utils.BooleanWhsTypeSta(rowLastno, staDescId)) {
            // 获取目标站
            wrapper = new EntityWrapper<StaDesc>()
                    .eq("type_no", staDescId)
                    .eq("stn_no", sourceStaNo)
                    .eq("crn_no", crnNo);
            staDesc = staDescService.selectOne(wrapper);
            if (Cools.isEmpty(staDesc)) {
                log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo);
//                throw new CoolException("入库路径不存在");
                crnNo = 0;
            } else {
                staNo = basDevpService.selectById(staDesc.getCrnStn());
                if (!staNo.getAutoing().equals("Y")) {
                    log.error("目标站" + staDesc.getCrnStn() + "不可用");
//                throw new CoolException("目标站"+staDesc.getCrnStn()+"不可用");
                    crnNo = 0;
                }
                startupDto.setStaNo(staNo.getDevNo());
            }
            // 更新库位排号
            if (Cools.isEmpty(locMast)) {
                rowLastno.setCurrentRow(curRow);
                rowLastnoService.updateById(rowLastno);
            }
        }
        // 开始查找库位 ==============================>>
        // 1.按规则查找库位
        if (Cools.isEmpty(locMast) && crnNo != 0) {
            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
                    .eq("row1", nearRow)
                    .eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue())
                    .eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()).ne("inv_wh",1)
                    .orderBy("lev1", true).orderBy("bay1", true));
            for (LocMast locMast1 : locMasts) {
                if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
@@ -552,7 +535,7 @@
//                locTypeDto.setLocType1((short)i);
//                return getLocNo(1, staDescId, sourceStaNo, matnr,batch,grade, locTypeDto, 0);
//            }
            log.error("系统没有空库位!!! 尺寸规格: {}, 轮询次数:{}", JSON.toJSONString(locTypeDto), times);
            log.error("系统没有空库位!!! 尺寸规格: {}, 轮询次数:{},{}", JSON.toJSONString(locTypeDto), times,moveCrnNo);
            throw new CoolException("没有空库位");
        }
@@ -567,18 +550,40 @@
        //针对1号堆垛机打的补丁,防止找到库位时,找到最浅库位
        String deepLoc2 = Utils.getDeepLoc2(slaveProperties, locMast.getLocNo());
        if (!Cools.isEmpty(deepLoc2)) {
            LocMast locMastNew = locMastService.selectOne(new EntityWrapper<LocMast>()
            LocMast locMastNew = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no",locMast.getCrnNo())
                    .eq("loc_no", deepLoc2).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()));
            if (!Cools.isEmpty(locMastNew)) {
                locMast = locMastNew;
            }
        }
            // 获取目标站
            wrapper = new EntityWrapper<StaDesc>()
                    .eq("type_no", staDescId)
                    .eq("stn_no", sourceStaNo)
                    .eq("crn_no", locMast.getCrnNo());
            staDesc = staDescService.selectOne(wrapper);
            if (Cools.isEmpty(staDesc)) {
                log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo);
//                throw new CoolException("入库路径不存在");
                crnNo = 0;
            } else {
                staNo = basDevpService.selectById(staDesc.getCrnStn());
                if (!staNo.getAutoing().equals("Y")) {
                    log.error("目标站" + staDesc.getCrnStn() + "不可用");
//                throw new CoolException("目标站"+staDesc.getCrnStn()+"不可用");
                    crnNo = 0;
                }
                startupDto.setStaNo(staNo.getDevNo());
        }
        String locNo = locMast.getLocNo();
        // 生成工作号
        int workNo = getWorkNo(0);
        // 返回dto
        startupDto.setWorkNo(workNo);
        startupDto.setCrnNo(crnNo);
        startupDto.setCrnNo(locMast.getCrnNo());
        startupDto.setSourceStaNo(sourceStaNo);
        startupDto.setLocNo(locNo);
        return startupDto;
@@ -960,6 +965,8 @@
                    .eq("row1", nearRow)
                    .eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue())
                    .orderBy("lev1", true).orderBy("bay1", true));//最浅库位
            //System.out.println(nearRow);
            //System.out.println(curRow);
            for (LocMast locMast1 : locMasts) {
                if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
                    continue;