自动化立体仓库 - WCS系统
#
yxFwq
2025-02-26 25e8446bcddc3dc81307be31f2966577a0a1d6ee
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1953,13 +1953,15 @@
                } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
                    // 此标记避免多次执行移库任务
                    if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
                        // 生成工作档,将浅库位移转到新的库位中
//                        boolean moveLocForDeepLoc = moveLocForDeepLoc(slave, shallowLoc);
                        // 生成工作档、改变浅库位的源库/目标库 库位状态、下发堆垛机命令(立马执行)
//                        moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
                        if (moveLocForDeepLoc(slave, shallowLoc)){
                        wrkMast.setUpdMk("Y");
                        wrkMast.setIoPri(14D);
                        wrkMastMapper.updateById(wrkMast);
                        // 生成工作档,将浅库位移转到新的库位中
                        moveLocForDeepLoc(slave, shallowLoc);
                        // 生成工作档、改变浅库位的源库/目标库 库位状态、下发堆垛机命令(立马执行)
//                        moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
                        }
                    }
                    continue;
                } else if (shallowLoc.getLocSts().equals("Q")) {
@@ -4645,7 +4647,7 @@
     * 因双深库位阻塞,对浅库位进行移转(立即执行版)
     * tip:同步
     */
    private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc) {
    private synchronized boolean moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc) {
        try {
            log.info("移库:CrnSlave:{}、LocMast:{}",JSON.toJSON(crn),JSON.toJSON(shallowLoc));
            List<Integer> rows = locMastService.queryDistinctRow(crn.getId());
@@ -4690,8 +4692,10 @@
            if (null == loc) {
                log.error("双深库位 --- 浅库位阻塞异常! 待移转浅库位:" + shallowLoc.getLocNo());
                return false;
//                throw new CoolException("双深库位 --- 浅库位阻塞异常! 待移转浅库位:" + shallowLoc.getLocNo());
            } else {
                try {
                // 获取工作号
                int workNo = commonService.getWorkNo(0);
                // 保存工作档
@@ -4752,12 +4756,16 @@
                } else {
                    throw new CoolException("移转失败");
                }
                } catch (Exception e){
                    log.error("双深库位阻塞,对浅库位进行移转失败", e);
                }
            }
        } catch (Exception e) {
            log.error("双深库位阻塞,对浅库位进行移转失败", e);
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//            e.printStackTrace();
//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
        return true;
    }
    /**