#
luxiaotao1123
2022-10-25 b78b9ca2ef71de6b9af4a31b45defb12304289b7
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3,7 +3,6 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
@@ -153,6 +152,11 @@
                        continue;
                    }
                    // 过滤盘点/拣料/并板任务
                    if (null != wrkMastMapper.selectPickStepByBarcode(barcode)) {
                        continue;
                    }
                    // 判断重复工作档
                    WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
                    if (wrkMast != null) {
@@ -183,6 +187,8 @@
                            staProtocol.setWorkNo(dto.getWorkNo().shortValue());
                            staProtocol.setStaNo(dto.getStaNo().shortValue());
                            devpThread.setPakMk(staProtocol.getSiteId(), false);
                            ledThread.errorReset();
                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                            if (!result) {
@@ -342,7 +348,7 @@
                        && staProtocol.isInEnable()
                        // 0 - 9990 或者 9996
                        && ((staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9990) || staProtocol.getWorkNo() == 9996)
                        && staProtocol.getStaNo().equals(staProtocol.getWorkNo())
                        && staProtocol.getStaNo().equals(staProtocol.getSiteId().shortValue())
                        && staProtocol.isPakMk()){
                    // 获取条码扫描仪信息
@@ -425,16 +431,18 @@
                        if (code.equals(200)) {
                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
                            // 获取目标站
                            Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                                    .eq("type_no", wrkMast.getIoType() - 50)
                                    .eq("stn_no", pickSta.getStaNo()) // 作业站点 = 拣料出库的目标站
                                    .eq("crn_no", dto.getCrnNo()); // 堆垛机号
                            StaDesc staDesc = staDescService.selectOne(wrapper);
                            if (Cools.isEmpty(staDesc)) {
                                log.error("入库路径不存在!type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
                                continue;
                            }
//                            // 获取目标站
//                            Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
//                                    .eq("type_no", wrkMast.getIoType() - 50)
//                                    .eq("stn_no", pickSta.getStaNo()) // 作业站点 = 拣料出库的目标站
//                                    .eq("crn_no", dto.getCrnNo()); // 堆垛机号
//                            StaDesc staDesc = staDescService.selectOne(wrapper);
//                            if (Cools.isEmpty(staDesc)) {
//                                log.error("入库路径不存在!type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
//                                continue;
//                            }
//                            // 堆垛机站点(目标站)
//                            Integer staNo = staDesc.getCrnStn();
                            // 保存工作明细档历史档
//                        if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) {
@@ -445,13 +453,12 @@
                                throw new CoolException(wrkMast.getWrkNo() + "保存工作主档历史档失败");
                            }
                            // 堆垛机站点(目标站)
                            Integer staNo = staDesc.getCrnStn();
                            String sourceLocNo = wrkMast.getSourceLocNo().trim();
                            // 更新工作档数据状态
                            wrkMast.setIoType(wrkMast.getIoType() - 50); // 入出库类型: 103->53,104->54,107->57
                            wrkMast.setWrkSts(2L); // 工作状态: 2.设备上走
                            wrkMast.setSourceStaNo(pickSta.getStaNo()); // 源站
                            wrkMast.setStaNo(staNo); // 目标站
                            wrkMast.setStaNo(dto.getStaNo()); // 目标站
                            wrkMast.setCrnNo(dto.getCrnNo());
                            wrkMast.setLocNo(dto.getLocNo()); // 目标库位 = 出库时的源库位
                            wrkMast.setSourceLocNo(""); // 源库位清空
@@ -463,7 +470,7 @@
                                throw new CoolException(wrkMast.getWrkNo() + "更新工作档数据状态失败");
                            }
                            // 修改源库位状态 O.空库位
                            LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
                            LocMast locMast = locMastService.selectById(sourceLocNo);
                            locMast.setLocSts("O");
                            locMast.setModiTime(new Date());
                            if (!locMastService.updateById(locMast)) {
@@ -477,12 +484,14 @@
                                throw new CoolException(wrkMast.getWrkNo() + "修改目标库位状态 Q.拣料/盘点/并板再入库");
                            }
                            // 库存明细转移
                            if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) {
                            if (!locDetlService.updateLocNo(wrkMast.getLocNo(), sourceLocNo)) {
                                throw new CoolException(wrkMast.getWrkNo() + "任务库存明细转移失败!!!");
                            }
                            // 条码设备处理
                            barcodeThread.setBarcode("");
                            ledThread.errorReset();
                            // 更新站点信息 且 下发plc命令
                            staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
@@ -689,7 +698,19 @@
                continue;
            }
            // 过滤
            // 检测是否存在出库任务
//            WrkMast pakoutWrkMast = wrkMastMapper.selectPakout(slave.getId(), null);
//            if (null != pakoutWrkMast) {
//                if ((pakoutWrkMast.getIoType() == 103 || pakoutWrkMast.getIoType() == 104 || pakoutWrkMast.getIoType() == 107)
//                        && pakoutWrkMast.getWrkSts() == 17
//                        && basDevpService.selectByWrkNo(pakoutWrkMast.getWrkNo()) != null
//                ) {
//
//                } else {
//                    log.error("{}入库任务无法作业,因存在出库中任务!", wrkMast.getWrkNo());
//                    continue;
//                }
//            }
            if (null != wrkMastMapper.selectPakout(slave.getId(), null)) {
                log.error("{}入库任务无法作业,因存在出库中任务!", wrkMast.getWrkNo());
                continue;
@@ -1000,6 +1021,22 @@
                            SteThread steThread = queryIdleCar(wrkMast);
                            if (steThread != null) {
                                // 没有其他任务
//                                boolean hasPakout = true;
//                                WrkMast pakoutWrkMast = wrkMastMapper.selectPakout(slave.getId(), steNo);
//                                if (null != pakoutWrkMast) {
//                                    if ((pakoutWrkMast.getIoType() == 103 || pakoutWrkMast.getIoType() == 104 || pakoutWrkMast.getIoType() == 107)
//                                            && pakoutWrkMast.getWrkSts() == 17
//                                            && basDevpService.selectByWrkNo(pakoutWrkMast.getWrkNo()) != null
//                                    ) {
//                                        hasPakout = false;
//                                    }
//                                } else {
//                                    hasPakout = false;
//                                }
//                                if (!hasPakout) {
//                                    // 让小车等待搬运待续
//                                    this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getSourceLocNo());
//                                }
                                if (null == wrkMastMapper.selectPakout(slave.getId(), steNo)) {
                                    // 让小车等待搬运待续
                                    this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getSourceLocNo());
@@ -1965,6 +2002,7 @@
            SteProtocol steProtocol = steThread.getSteProtocol();
            if (steProtocol == null) { continue; }
            if (steProtocol.getWaiting() && steProtocol.getTaskNo() != 0) {
                log.info("ste[id={}] 执行工作档完成,任务号={}", steProtocol.getSteNo(), steProtocol.getTaskNo());
                if (steProtocol.getTaskNo() == 9999) {
                    steThread.setResetFlag(true);
                } else {
@@ -2383,6 +2421,8 @@
                        if (code.equals(200)) {
                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
                            ledThread.errorReset();
                            // 更新站点信息 且 下发plc命令
                            staProtocol.setWorkNo(dto.getWorkNo().shortValue());
                            staProtocol.setStaNo(dto.getStaNo().shortValue());