1
zhang
2026-01-07 5d24f639d62119f4c661e7f04ac7cc5b0f5ce827
src/main/java/com/zy/asrs/service/impl/CtuMainServiceImpl.java
@@ -6,9 +6,6 @@
import com.core.exception.CoolException;
import com.zy.asrs.domain.param.OpenBusSubmitParam;
import com.zy.asrs.domain.param.TaskDto;
import com.zy.asrs.mapper.WrkMastMapper;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.WrkMastService;
import com.zy.common.utils.HttpHandler;
import com.zy.common.utils.News;
import com.zy.core.cache.MessageQueue;
@@ -56,24 +53,31 @@
    @Autowired
    private SlaveProperties slaveProperties;
    @Autowired
    private WrkMastMapper wrkMastMapper;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private WrkMastService wrkMastService;
    private boolean flag1001 = false;
    private boolean flag1007 = false;
    private Map<Integer, Long> staNoSet = new HashMap<>();
    public Map<Integer, Long> getStaNoSet() {
        return staNoSet;
    }
    public void setStaNoSet(Map<Integer, Long> staNoSet) {
        this.staNoSet = staNoSet;
    }
    /**
     * 入库,从拣料站到入库站(CTU取货站)
     */
    public synchronized void generateStoreWrkFile(Integer mark) {
        for (Map.Entry<Integer, Long> entry : staNoSet.entrySet()) {
            if (entry.getValue() != null && System.currentTimeMillis() - entry.getValue() > 1000 * 60 * 5) {
                log.info("超时:{}", entry.getKey());
                staNoSet.remove(entry.getKey());
            }
        }
        // 根据输送线plc遍历
        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
        StaProtocol staProtocol = devpThread.getStation().get(1004);
@@ -83,9 +87,13 @@
            staProtocol = staProtocol.clone();
        }
        // 判断是否满足条件
//        if (!staProtocol.isLoading()) {
//            return;
//        }
        if (!staProtocol.isLoading()) {
            return;
        }
        Long i = staNoSet.get(staProtocol.getWorkNo());
        if (i != null) {
            return;
        }
        // && staProtocol.isInEnable()
        if (staProtocol.getWorkNo() > 0 && staProtocol.isAutoing() && !staProtocol.isEmptyMk() && staProtocol.isPakMk()) {
            if (staProtocol.getStaNo() == 1004) {
@@ -96,6 +104,7 @@
                }
                staProtocol.setStaNo((short) 1007);
                boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
                staNoSet.put(staProtocol.getWorkNo(), System.currentTimeMillis());
                log.info("入库输送线下发:{},{}", staProtocol.getWorkNo(), 1007);
            }
@@ -146,7 +155,9 @@
            return;
        }
        if (flag1007 && staProtocol.getWorkNo() > 0 && staProtocol.isAutoing() && !staProtocol.isEmptyMk() && staProtocol.isPakMk()) {
            boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol));
            staProtocol.setWorkNo(0);
            staProtocol.setStaNo((short) 0);
            boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
            log.info("取走写入确认位:{},{}", staProtocol.getWorkNo(), 1007);
        }
    }
@@ -172,7 +183,7 @@
                    continue;
                }
                //&& staProtocol.isOutEnable()
                if (flag1001 && staProtocol.isAutoing() && !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999) && staProtocol.isPakMk()) {
                if (staProtocol.isAutoing() && !staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() == 9999) && staProtocol.isPakMk()) {
                    News.warnNoLog("" + mark + " - 0" + " - 开始执行");
                    // 判断重复工作档
                    // 106也算上,以后106-》107用于更新库存
@@ -190,6 +201,11 @@
                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                    log.info("输送线下发3:{},{}", staProtocol.getWorkNo(), 1004);
                    if (result) {
                        try {
                            Thread.sleep(8000L);
                        } catch (InterruptedException e) {
                            throw new RuntimeException(e);
                        }
                        setFlag1001(false);
                    } else {
                        News.error("" + mark + " - 2" + " - 发布命令至输送线队列失败!!! [plc编号:{}]", devp.getId());
@@ -299,9 +315,20 @@
            OpenBusSubmitParam openBusSubmitParam = new OpenBusSubmitParam();
            openBusSubmitParam.setBatch(DateUtils.convert(new Date()));
            List<TaskDto> taskList = new ArrayList<>();
            Random rand = new Random();
            TaskDto taskDto = new TaskDto();
            taskDto.setSeqNum(Math.random() * 1000 + "");
            taskDto.setSeqNum("SSX-CK" + rand.nextInt() * 10000);
            taskDto.setOriLoc(getFLoc("1001", "16"));
            taskDto.setDestSta("1001");
            taskDto.setPriority(123);
            taskList.add(taskDto);
            String fLoc = getFLoc("1001", "16");
            if (fLoc == taskDto.getOriLoc()) {
                fLoc = getFLoc("1001", "16");
            }
            taskDto = new TaskDto();
            taskDto.setSeqNum("SSX-CK" + rand.nextInt() * 10000);
            taskDto.setOriLoc(fLoc);
            taskDto.setDestSta("1001");
            taskDto.setPriority(123);
            taskList.add(taskDto);
@@ -310,7 +337,11 @@
        }
    }
    /**
     * 1007入库
     *
     * @param mark
     */
    public synchronized void autoIn(Integer mark) {
        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
        StaProtocol staProtocol = devpThread.getStation().get(1007);
@@ -326,20 +357,21 @@
        if (!staProtocol.isLoading()) {
            return;
        }
        if (staProtocol.getStaNo() > 0) {
        if (staProtocol.getStaNo() <= 0) {
            return;
        }
        OpenBusSubmitParam openBusSubmitParam = new OpenBusSubmitParam();
        openBusSubmitParam.setBatch(DateUtils.convert(new Date()));
        List<TaskDto> taskList = new ArrayList<>();
        TaskDto taskDto = new TaskDto();
        taskDto.setSeqNum(Math.random() * 1000 + "");
        taskDto.setSeqNum("SSX-RK" + staProtocol.getWorkNo());
        taskDto.setDestLoc(getFLoc("1007", "15"));
        taskDto.setOriLoc("1007");
        taskDto.setOriSta("1007");
        taskDto.setPriority(123);
        taskList.add(taskDto);
        openBusSubmitParam.setTaskList(taskList);
        sendTask(openBusSubmitParam, staProtocol);
    }
@@ -358,7 +390,7 @@
    }
    @Transactional
    public void sendTask(OpenBusSubmitParam openBusSubmitParam, StaProtocol staProtocol) {
    public boolean sendTask(OpenBusSubmitParam openBusSubmitParam, StaProtocol staProtocol) {
        String response = "";
        try {
            response = new HttpHandler.Builder()
@@ -371,13 +403,15 @@
            JSONObject jsonObject = JSON.parseObject(response);
            if (jsonObject.getInteger("code").equals(200)) {
                log.info("下发任务返回数据:{}", response);
                return true;
            } else {
                log.error("请求接口失败!!!url:{};request:{};response:{}", ctuUrl + sendTask, JSON.toJSONString(openBusSubmitParam), response);
                //log.error("请求接口失败!!!url:{};request:{};response:{}", ctuUrl + sendTask, JSON.toJSONString(openBusSubmitParam), response);
                throw new CoolException("调用下发任务接口报错");
            }
        } catch (Exception e) {
            log.error("fail", e);
            //log.error("fail", e);
        }
        return false;
    }
    @Transactional
@@ -426,7 +460,7 @@
                JSONObject loc = JSON.parseObject(jsonObject.getString("data"));
                return loc.getString("locNo");
            } else {
                log.error("请求接口失败!!!url:{};request:{};response:{}", ctuUrl + sendTask, JSON.toJSONString(data), response);
                //log.error("请求接口失败!!!url:{};request:{};response:{}", ctuUrl + sendTask, JSON.toJSONString(data), response);
                throw new CoolException("调用下发任务接口报错");
            }
        } catch (Exception e) {