zwl
2026-03-20 84e27510eac3b86af8a98d7498eb451b876c5413
src/main/java/com/zy/core/plugin/NormalProcess.java
@@ -4,7 +4,6 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.SpringUtils;
import com.zy.asrs.domain.param.CreateInTaskParam;
import com.zy.asrs.entity.BasCrnp;
import com.zy.asrs.entity.BasDevp;
@@ -163,6 +162,10 @@
                        Integer stationIdVal = stationProtocol.getStationId();
                        String stationBackKey = RedisKeyType.GENERATE_STATION_BACK_LIMIT.key + barcode + "_" + stationIdVal;
                        if (redisUtil.get(stationBackKey) != null) {
                            continue;
                        }
                        // 1. 首先查询是否有已完成的异步响应
                        String response = wmsOperateUtils.queryAsyncInTaskResponse(barcode, stationIdVal);
@@ -203,6 +206,7 @@
                                    News.taskInfo(wrkMast.getWrkNo(), "获取输送线命令失败");
                                    continue;
                                }
                                redisUtil.del(stationBackKey);
                                stationProtocol.setSystemWarning("");
                                MessageQueue.offer(SlaveType.Devp, basDevp.getDevpNo(), new Task(2, command));
                            } else {
@@ -211,12 +215,13 @@
                                StationCommand command = stationThread.getCommand(StationCommandType.WRITE_INFO,
                                        9991, 1015, 1013, 0);
                                MessageQueue.offer(SlaveType.Devp, basDevp.getDevpNo(), new Task(2, command));
                                // 接口返回非200,重新发起请求
                                News.error("WMS入库接口返回非200,重新发起请求,barcode={},stationId={},response={}", barcode,
                                redisUtil.set(stationBackKey, "lock", 15);
                                wmsOperateUtils.clearAsyncInTaskCache(barcode, stationIdVal);
                                // 接口返回非200,先退回,等待下次循环重新请求
                                News.error("WMS入库接口返回非200,先退回后等待重试,barcode={},stationId={},response={}", barcode,
                                        stationIdVal, response);
                                wmsOperateUtils.applyInTaskAsync(barcode, stationIdVal,
                                        stationProtocol.getPalletHeight(),stationProtocol.getWeight());
                                redisUtil.set(RedisKeyType.GENERATE_IN_TASK_LIMIT.key + stationId, "lock", 2);
                                continue;
                            }
                        } else {
                            // 3. 没有响应结果,检查是否有请求正在进行中
@@ -305,14 +310,18 @@
                }
            }
            try {
                WmsOperateUtils wmsOperateUtils = SpringUtils.getBean(WmsOperateUtils.class);
                if (wmsOperateUtils != null) {
                    wmsOperateUtils.reportCrnDb110Status(crnProtocol.getCrnNo(), currentIndices);
                }
            } catch (Exception e) {
                log.error("Report Crn Db110 Status Fail", e);
            if (currentIndices.isEmpty()) {
                continue;
            }
            String reportLockKey = RedisKeyType.REPORT_CRN_DB110_STATUS_LIMIT.key + crnProtocol.getCrnNo();
            if (redisUtil.get(reportLockKey) != null) {
                continue;
            }
            long reportLockSeconds = Math.max(60L, currentIndices.size() * 35L);
            redisUtil.set(reportLockKey, "lock", reportLockSeconds);
            wmsOperateUtils.reportCrnDb110StatusAsync(crnProtocol.getCrnNo(), new ArrayList<>(currentIndices));
        }
    }