自动化立体仓库 - WCS系统
#
18516761980
2022-06-22 2d72f443bb702ffb4e03e64501d6f797fbfbad20
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -698,8 +698,10 @@
                        wrkMast.setUpdMk("Y");
                        wrkMast.setIoPri(14D);
                        wrkMastMapper.updateById(wrkMast);
                        // 生成工作档,将浅库位移转到新的库位中
                        moveLocForDeepLoc(slave, shallowLoc);
                        // 生成工作档、改变浅库位的源库/目标库 库位状态、下发堆垛机命令(立马执行)
                        moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
//                        moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
                    }
                    continue;
                } else if (shallowLoc.getLocSts().equals("Q")){
@@ -833,7 +835,7 @@
                                || Cools.isEmpty(waitWrkMast)) {
                                wrkMast.setUpdMk("Y");
                                wrkMastMapper.updateById(wrkMast);
                                // 生成工作档、改变浅库位的源库/目标库 库位状态、下发堆垛机命令(立马执行)
                                // 生成工作档,将浅库位移转到新的库位中
                                moveLocForDeepLoc(slave, shallowLoc);
                            }
                            log.error("{}任务出库失败,浅库位堵塞!", wrkMast.getWrkNo());
@@ -1589,6 +1591,7 @@
     * tip:同步
     */
    private void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc){
        try {
        List<Integer> rows = locMastService.queryDistinctRow(crn.getId());
        LocMast loc = null;
        for (Integer row : rows) {
@@ -1604,7 +1607,9 @@
                        }
                    }
                }
                if (null != loc) { break; }
                    if (null != loc) {
                        break;
                    }
            }
        }
        if (null == loc) {
@@ -1620,12 +1625,15 @@
                        }
                    }
                    if (null != loc) { break; }
                        if (null != loc) {
                            break;
                        }
                }
            }
        }
        if (null == loc) {
                log.error("双深库位 --- 浅库位阻塞异常! 待移转浅库位:" + shallowLoc.getLocNo());
            throw new CoolException("双深库位 --- 浅库位阻塞异常! 待移转浅库位:" + shallowLoc.getLocNo());
        }
@@ -1689,29 +1697,42 @@
        } else {
            throw new CoolException("移转失败");
        }
        } catch (Exception e) {
            log.error("双深库位阻塞,对浅库位进行移转失败", e);
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
    }
    /**
     * 堆垛机演示  ===>> 库位移转
     */
    public synchronized void crnDemoOfLocMove1(){
        try {
        for (CrnSlave crn : slaveProperties.getCrn()) {
            if (!crn.getDemo()) { continue; }   // 必须为演示状态
                if (!crn.getDemo()) {
                    continue;
                }   // 必须为演示状态
            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
            if (crnProtocol == null) { continue; }
                if (crnProtocol == null) {
                    continue;
                }
            // 只有当堆垛机空闲 并且 无任务时才继续执行
            if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
                // 获取移库工作档信息
                WrkMast wrkMast = wrkMastMapper.selectLocMove(crn.getId());
                if (null != wrkMast) { continue; }
                    if (null != wrkMast) {
                        continue;
                    }
                LocMast sourceLoc = locMastService.queryDemoSourceLoc(crn.getId());
                LocMast loc = locMastService.queryDemoLoc(crn.getId());
                if (null == sourceLoc || null == loc) { continue; }
                    if (null == sourceLoc || null == loc) {
                        continue;
                    }
                String sourceLocNo = sourceLoc.getLocNo();
                String locNo = loc.getLocNo();
@@ -1776,7 +1797,11 @@
                }
            }
            }
        } catch (Exception e) {
            log.error("堆垛机演示  ===>> 库位移转失败", e);
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
    }