#
ytfl
2025-07-15 3d53b8a757df0bc9dbc7307454f5c6302ddae216
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -13,7 +13,6 @@
import com.zy.asrs.mapper.WrkMastMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
import com.zy.asrs.utils.VersionUtils;
import com.zy.common.constant.RedisConstantType;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.MatDto;
@@ -644,6 +643,10 @@
     */
    public synchronized void crnMove() {
        for (CrnSlave crn : slaveProperties.getCrn()) {
            if (crn.getId() == 1) {
                continue;
            }
            // 获取堆垛机信息
            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
@@ -792,12 +795,14 @@
                    if (null == waitWrkMast) {
                        News.error(""+mark+" - 1"+" - 10"+" - {}库位异常,未检索到相应工作档!", shallowLocNo);
                    } else {
                        waitWrkMast.setIoPri(15D);
                        waitWrkMast.setModiTime(new Date());
                        if (wrkMastMapper.updateById(waitWrkMast) == 0) {
                            News.error(""+mark+" - 1"+" - 11"+" - 调整工作档优先级失败!工作号={}", waitWrkMast.getWrkNo());
                        if (waitWrkMast.getWrkSts() != 14 && waitWrkMast.getIoType() > 100) {
                            waitWrkMast.setIoPri(15D);
                            waitWrkMast.setModiTime(new Date());
                            if (wrkMastMapper.updateById(waitWrkMast) == 0) {
                                News.error(""+mark+" - 1"+" - 11"+" - 调整工作档优先级失败!工作号={}", waitWrkMast.getWrkNo());
                            }
                            continue;
                        }
                        continue;
                    }
                } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
@@ -963,7 +968,7 @@
                    if (crnProtocol.getCrnNo() == 1) {
                        //判断堆垛机和当前任务是否处于一个巷道
                        if (Utils.getLaneByLocNo(wrkMast.getLocNo()) != crnProtocol.getCrnLane()) {
                        if (Utils.getLaneByLocNo(wrkMast.getSourceLocNo()) != crnProtocol.getCrnLane()) {
                            //判断堆垛机所在巷道是否存在其他任务,如存在则优先执行
                            List<WrkMast> currentWrkMasts = wrkMastService.selectLaneWrkMast(crnProtocol.getCrnLane(), false);
                            if (!currentWrkMasts.isEmpty()) {
@@ -2207,13 +2212,16 @@
        ArrayList<Integer> list = new ArrayList<Integer>(){{add(2003);add(2002);}};
        for (Integer staNo : list) {
            Integer devpId = null;
            Integer rgvStaNoDevpId = null;
            Integer rgvStaNo = null;
            if (staNo == 2003) {
                devpId = 1;
                rgvStaNo = 2002;
                rgvStaNoDevpId = 2;
            }else {
                devpId = 2;
                rgvStaNo = 2003;
                rgvStaNoDevpId = 1;
            }
            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devpId);
@@ -2229,12 +2237,54 @@
            if (staProtocol.isAutoing()
                    && staProtocol.isLoading()
//                    && staProtocol.isInEnable()
                    && staProtocol.isInEnable()
                    && staProtocol.getWorkNo() > 0
            ) {
                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
                        .eq("wrk_no", staProtocol.getWorkNo()));
                if (wrkMast == null) {
                    continue;
                }
                if (wrkMast.getWrkSts() == 201) {
                    continue;
                }
                SiemensDevpThread devpThread2 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvStaNoDevpId);
                if (devpThread2 == null) {
                    continue;
                }
                StaProtocol staProtocolRgvStaNo = devpThread2.getStation().get(rgvStaNo);
                if (staProtocolRgvStaNo == null) {
                    continue;
                }
                if (!staProtocolRgvStaNo.isAutoing()) {
                    continue;
                }
                if (staProtocolRgvStaNo.isLoading()) {
                    continue;
                }
                // 获取RGV信息
                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, 1);
                if (rgvThread == null) {
                    continue;
                }
                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
                if (rgvProtocol == null) {
                    continue;
                }
                if (rgvProtocol.statusType1 != RgvStatusType.IDLE && rgvProtocol.getTaskNo1() != 0) {
                    continue;
                }
                Object object = redisUtil.get(RedisConstantType.RGV_MOVE_LOCK + wrkMast.getWrkNo());
                if (object != null) {
                    continue;
                }
@@ -2255,6 +2305,7 @@
                wrkMast.setWrkSts(201L);//201.RGV搬运中
                wrkMast.setModiTime(new Date());
                wrkMastService.updateById(wrkMast);
                redisUtil.set(RedisConstantType.RGV_MOVE_LOCK + wrkMast.getWrkNo(), "lock", 60 * 60);
            }
        }
    }
@@ -2274,7 +2325,7 @@
            }
            //  状态:等待确认 并且  任务完成位 = 1
            if (rgvProtocol.statusType == RgvStatusType.WAITING && rgvProtocol.getTaskNo1() != 0) {
            if (rgvProtocol.statusType1 == RgvStatusType.WAITING && rgvProtocol.getTaskNo1() != 0) {
                News.warnNoLog(""+mark+" - 0"+" - 开始执行对RGV工作档的完成操作");
                // 获取入库待确认工作档
                WrkMast wrkMast = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
@@ -2283,25 +2334,25 @@
                    continue;
                }
                if (Cools.isEmpty(wrkMast.getMemo())) {
                    News.error(""+mark+" - 1"+" - RGV处于等待确认且任务完成状态,但工作档数据异常。RGV号={},工作号={}", rgvSlave.getId(), rgvProtocol.getTaskNo1());
                if (wrkMast.getWrkSts() != 201) {
                    continue;
                }
                Integer devpId = null;
                Integer devpStaNo = null;
                String locNo = null;
                Long updateWrkSts = null;
                if (wrkMast.getIoType() < 100) {
                    //入库
                    wrkMast.setWrkSts(2L);
                    updateWrkSts = 2L;
                    devpId = 1;
                    devpStaNo = 1090;
                    devpStaNo = 2003;
                    locNo = wrkMast.getLocNo();
                }else {
                    //出库
                    wrkMast.setWrkSts(15L);
                    updateWrkSts = 15L;
                    devpId = 2;
                    devpStaNo = 1091;
                    devpStaNo = 2002;
                    locNo = wrkMast.getSourceLocNo();
                }
@@ -2328,11 +2379,7 @@
                    if (!result) {
                        throw new CoolException("更新plc站点信息失败");
                    }
                    Date now = new Date();
                    wrkMast.setModiTime(now);
                    wrkMastMapper.updateById(wrkMast);
                    wrkMastMapper.updateWrkSts(updateWrkSts, wrkMast.getWrkNo());
                    rgvThread.setResetFlag1(true);
                }
            }