#
luxiaotao1123
2023-02-15 6421f3acf199f951e9e98919b9e38610beedd438
#
3个文件已修改
196 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/css/console.css 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -70,11 +70,7 @@
    @Override
    public Boolean isShuttle(String locNo) {
        int row = Utils.getRow(locNo);
        if (row >= 2 && row <= 30) {
            return Boolean.TRUE;
        }
        return Boolean.FALSE;
    }
    @Override
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -736,85 +736,6 @@
            wrkMast.setIoPri((double) 9999);
            wrkMastMapper.updateById(wrkMast);
            // 判断是否为穿梭库
            if (!locMastService.isShuttle(wrkMast.getLocNo())) {
                // 非穿梭库入库 【 堆垛机直接入库 】
                if (wrkMast.getWrkSts() == 2) {
                    // 已经存在吊车执行任务时,则过滤
                    if (wrkMastMapper.selectWorking(slave.getId()) != null) {
                        continue;
                    }
                    // 双深库位且浅库位有货,则需先对浅库位进行库位移转
                    if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) {
                        String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getLocNo());
                        LocMast shallowLoc = locMastService.selectById(shallowLocNo);
                        // O.空库位、Q.拣料/盘点/并板再入库、S.入库预约、X.禁用 直接搬!
                        if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
                            WrkMast waitWrkMast = wrkMastMapper.selectBySourceLocNo(shallowLocNo);
                            if (null == waitWrkMast) {
                                News.error("{}库位异常,未检索到相应工作档!", shallowLocNo);
                            } else {
                                if (waitWrkMast.getWrkSts() < 17) {
                                    waitWrkMast.setIoPri(30D);
                                    waitWrkMast.setModiTime(new Date());
                                    if (wrkMastMapper.updateById(waitWrkMast) == 0) {
                                        News.error("调整工作档优先级失败!工作号={}", waitWrkMast.getWrkNo());
                                    }
                                    //20220719 Add,如果浅库位状态为P/R,工作状态为14/15,说明浅库位已经空了,可以执行入库任务
                                }
                            }
                            continue;
                        }
                        if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
                            // 此标记避免多次执行移库任务
                            if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
                                wrkMast.setUpdMk("Y");
                                wrkMast.setIoPri(20D);
                                wrkMastMapper.updateById(wrkMast);
                                // 生成工作档、改变浅库位的源库/目标库 库位状态、下发堆垛机命令(立马执行)
                                moveLocForDeepLoc(slave, shallowLoc);
                            }
                            continue;
                        }
                        if (shallowLoc.getLocSts().equals("Q")) {
                            WrkMast waitWrkMast = wrkMastMapper.selectBySourceLocNo(shallowLocNo);
                            if (null != waitWrkMast && waitWrkMast.getWrkSts() == 9) {
                                continue;
                            }
                        }
                    }
                    // 堆垛机入库 命令下发区 --------------------------------------------------------------------------
                    CrnCommand crnCommand = new CrnCommand();
                    crnCommand.setCrnNo(slave.getId()); // 堆垛机编号
                    crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 工作号
                    crnCommand.setAckFinish((short) 0);  // 任务完成确认位
                    crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式:  库位移转
                    crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 源库位排
                    crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 源库位列
                    crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 源库位层
                    crnCommand.setDestinationPosX(locMast.getRow1().shortValue());     // 目标库位排
                    crnCommand.setDestinationPosY(locMast.getBay1().shortValue());     // 目标库位列
                    crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 目标库位层
                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
                        News.error("堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
                    } else {
                        // 修改工作档状态  7.吊车入库中
                        Date now = new Date();
                        wrkMast.setWrkSts(7L);
                        wrkMast.setCrnStrTime(now);
                        wrkMast.setModiTime(now);
                        if (wrkMastMapper.updateById(wrkMast) == 0) {
                            News.error("修改工作档状态 {} => 7.吊车入库中 失败!!,工作号={}", wrkMast.getWrkSts$(), wrkMast.getWrkNo());
                        } else {
                            return true;
                        }
                    }
                }
            } else {
                // 目标库位 ===>> 最外层库位
                if (locMastService.isOutMost(wrkMast.getLocNo(), true)) {
                    // 判断小车是否在最外层库位,如果是则搬走,如果不是,则直接堆垛机入库
@@ -954,8 +875,6 @@
                    }
                }
            }
        }
        return false;
    }
@@ -1031,9 +950,6 @@
                // 置顶任务
                wrkMast.setIoPri((double) 9998);
                wrkMastMapper.updateById(wrkMast);
                // 判断是否为穿梭库
                if (!locMastService.isShuttle(wrkMast.getSourceLocNo())) {
                    // 双深库位且浅库位有货,则需先对浅库位进行库位移转
                    if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
@@ -1233,8 +1149,6 @@
                            }
                        }
                    }
                }
            }
        }
        return false;
@@ -1846,20 +1760,6 @@
                if (wrkMast.getIoType() != 11) {
                    // 入库 ==>> 货物搬入库
                    if (wrkMast.getWrkSts() == 7){
                        if (!locMastService.isShuttle(wrkMast.getLocNo())) {
                            // ==> 9.入库完成
                            wrkMast.setWrkSts(9L);
                            Date now = new Date();
                            wrkMast.setCrnEndTime(now);
                            wrkMast.setModiTime(now);
                            // 修改成功后复位堆垛机
                            if (wrkMastMapper.updateById(wrkMast) > 0) {
                                // 堆垛机复位
                                crnThread.setResetFlag(true);
                            } else {
                                News.error("修改工作档状态 7.吊车入库中 => 9.入库完成 失败!!,工作号={}", wrkMast.getWrkNo());
                            }
                        } else {
                            // 判断是否需要小车入库
                            if (locMastService.isOutMost(wrkMast.getLocNo(), true)) {
                                // ==> 9.入库完成
@@ -1899,7 +1799,6 @@
                                            crnThread.setResetFlag(true);
                                        } else {
                                            News.error("修改工作档状态 7.吊车入库中 => 8.小车搬入库 失败!!,工作号={}", wrkMast.getWrkNo());
                                        }
                                    }
                                }
                            }
@@ -2002,21 +1901,6 @@
                            }
                        }
                        // 移库 ===>> 堆垛机搬至目标库位组 完成
                    }
                // 库位移转
                } else {
                    if (!locMastService.isShuttle(wrkMast.getLocNo())) {
                        if (wrkMast.getWrkSts() == 16 && wrkMast.getIoType() == 11){
                            // 更新工作档状态为 17.出库完成
                            wrkMast.setWrkSts(17L);
                            wrkMast.setCrnEndTime(new Date());
                            if (wrkMastMapper.updateById(wrkMast) != 0) {
                                // 复位堆垛机
                                crnThread.setResetFlag(true);
                            } else {
                                News.error("更新工作档的工作状态为 17.出库完成 失败!!! [工作号:{}]", wrkMast.getWrkNo());
                            }
                        }
                    }
                }
            }
src/main/webapp/static/css/console.css
@@ -208,7 +208,7 @@
/* 站点 */
.site {
    color: #333;
    height: 18px;
    height: 24px;
    border: 1px solid rgb(108,167,168);
    cursor: pointer;
    width: 50px;
@@ -305,29 +305,32 @@
    left: 415px;
}
.site-row-1 {
    top: 67px;
    left: 392px;
    top: 130px;
    left: 801px;
    z-index: 9999;
}
.site-row-1 .site {
    width: 80px;
}
.site-row-2 {
    top: 67px;
    left: 474px;
    top: 130px;
    left: 801px;
    z-index: 9999;
}
.site-row-2 .site {
    width: 80px;
}
.site-row-3 {
    top: 67px;
    left: 556px;
    top: 130px;
    left: 801px;
    z-index: 9999;
}
.site-row-3 .site {
    width: 80px;
}
.site-row-4 {
    top: 67px;
    left: 638px;
    top: 0px;
    left: 1000px;
}
.site-row-4 .site {
    width: 80px;
@@ -373,8 +376,8 @@
/* ------------------ 货架总成 ------------------ */
.main-part {
    position: absolute;
    top: 20px;
    left: 720px;
    top: 100px;
    left: 480px;
}
.main-part .lane {
    margin-top: 30px;
@@ -389,7 +392,8 @@
/* 库位组 */
.stock-group .item {
    width: 30px;
    width: 80px;
    height: 30px;
    float: left;
    border-top: 1px solid rgb(194,76,65);
    border-bottom: 1px solid rgb(194,76,65);
@@ -622,3 +626,51 @@
    width: auto;
}
.floorBtn {
    position: absolute;
    border-radius: 5px;
    right: 200px;
    width: 90px;
    height: 40px;
    color: #ffffff;
    font-size: 24px;
    font-weight: 500;
    letter-spacing: 5px;
    cursor:pointer;
    transition: all 0.3s ease;
    font-family: 'Lato', sans-serif;
    background: transparent;
    box-shadow: inset 2px 2px 2px 0px rgba(255, 255, 255, 0.5), 7px 7px 20px 0px rgba(0, 0, 0, 0.1),
    4px 4px 5px 0px rgba(0, 0, 0, 0.1);
}
/* 16 */
.btn-16 {
    border: none;
    color: #fff;
}
.btn-16:after {
    position: absolute;
    content: '';
    width: 0;
    height: 100%;
    top: 0;
    left: 0;
    direction: rtl;
    z-index: -1;
    box-shadow: -7px -7px 20px 0px #fff9, -4px -4px 5px 0px #fff9, 7px 7px 20px 0px #0002,
    4px 4px 5px 0px #0001;
    transition: all 0.3s ease;
}
.btn-16:hover {
    color: #323131;
}
.btn-16:hover:after {
    left: auto;
    right: 0;
    width: 100%;
}
.btn-16:active {
    top: 2px;
}