From 2f80aaf62144f6ea315334335ad46fbe0ab911e8 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期五, 18 十月 2024 14:52:02 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  129 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 129 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index c05f38f..5fc5a05 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1,9 +1,44 @@
 package com.zy.asrs.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.BasCircularShuttle;
+import com.zy.asrs.entity.BasDevpPosition;
+import com.zy.asrs.entity.BasRgv;
+import com.zy.asrs.entity.BasSte;
+import com.zy.asrs.service.BasCircularShuttleService;
+import com.zy.asrs.service.BasDevpPositionService;
+import com.zy.asrs.service.BasDevpService;
+import com.zy.asrs.utils.SortTheExecutionOfTheCarUtil;
+import com.zy.asrs.utils.Utils;
+import com.zy.core.DevpThread;
+import com.zy.core.News;
+import com.zy.core.cache.MessageQueue;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.*;
+import com.zy.core.model.DevpSlave;
+import com.zy.core.model.RgvSlave;
+import com.zy.core.model.SteSlave;
+import com.zy.core.model.Task;
+import com.zy.core.model.command.SteCommand;
+import com.zy.core.model.protocol.RgvProtocol;
+import com.zy.core.model.protocol.StaProtocol;
+import com.zy.core.model.protocol.SteProtocol;
+import com.zy.core.properties.SlaveProperties;
+import com.zy.core.thread.RgvThread;
+import com.zy.core.thread.SiemensDevpThread;
+import com.zy.core.thread.SteThread;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
@@ -14,4 +49,98 @@
 @Transactional
 public class MainServiceImpl {
 
+    @Autowired
+    private SlaveProperties slaveProperties;
+    @Autowired
+    private BasDevpService basDevpService;
+    @Autowired
+    private BasRgvServiceImpl basRgvService;
+    @Autowired
+    private BasDevpPositionService basDevpPositionService;
+    @Autowired
+    private BasCircularShuttleService basCircularShuttleService;
+    /**
+     * 绔欑偣浠诲姟妫�娴�  涓嬪彂灏忚溅鍙栨斁浠诲姟
+     */
+    public synchronized void updateStePosition() {
+        try{
+            boolean sign = false;
+            Integer rgvNo = 0;
+            List<BasCircularShuttle> basCircularShuttleList = basCircularShuttleService.selectList(new EntityWrapper<BasCircularShuttle>().orderBy("rgv_id", true));
+            for (BasCircularShuttle basCircularShuttle : basCircularShuttleList){
+                RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basCircularShuttle.getRgvNo());
+                RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+                if (rgvProtocol.modeType != RgvModeType.AUTO || (rgvProtocol.getStatusType() != RgvStatusType.IDLE && rgvProtocol.getStatusType() != RgvStatusType.SOS1001) ){
+                    sign = true;
+                } else {
+                    rgvNo = basCircularShuttle.getRgvNo();
+                    break;
+                }
+            }
+            if (sign && rgvNo!=0){
+                int[][] ints = new int[basCircularShuttleList.size()][2];
+                for (BasCircularShuttle basCircularShuttle : basCircularShuttleList){
+                    ints[basCircularShuttle.getRgvNo()-1] = new int[]{basCircularShuttle.getRgvNo(),basCircularShuttle.getRgvId()};
+                }
+                String[] oldList = new String[ints.length];
+                for (int[] rgv : ints){
+                    oldList[rgv[0]-1] = Arrays.toString(rgv);
+                }
+                int[][] rgvList = SortTheExecutionOfTheCarUtil.ReorderSteId(ints, rgvNo);
+                String[] newList = new String[rgvList.length];
+                for (int[] rgv : rgvList){
+                    newList[rgv[0]-1] = Arrays.toString(rgv);
+                }
+
+                log.info("鏇存柊灏忚溅鎺掑簭淇℃伅锛氬師濮嬪皬杞﹀彿rgvNo={},灏忚溅閲嶆柊鎺掑簭淇℃伅={},灏忚溅鍘熷鎺掑簭淇℃伅={}",rgvNo,Arrays.toString(newList),Arrays.toString(oldList));
+                for (BasCircularShuttle basCircularShuttle : basCircularShuttleList){
+                    int[] rgv = rgvList[basCircularShuttle.getRgvNo() - 1];
+                    basCircularShuttle.setRgvId(rgv[1]);
+                    basCircularShuttleService.updateById(basCircularShuttle);
+                }
+            }
+
+        } catch (Exception e) {
+            log.error("鑷姩鏇存柊灏忚溅鎺掑簭淇℃伅澶辫触锛屽紓甯革細"+e);
+        }
+    }
+    /**
+     * 绔欑偣浠诲姟妫�娴�  涓嬪彂灏忚溅鍙栨斁浠诲姟
+     */
+    public synchronized void DevpTaskNoRun() {
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            // 閬嶅巻绌烘澘鍏ュ簱鍙�
+            for (DevpSlave.Sta sta : devp.getInSta()) {
+                // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭�
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                StaProtocol staProtocol = devpThread.getStation().get(sta.getStaNo());
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
+            }
+        }
+    }
+
+    public synchronized void loopSteCharge() {
+        for (RgvSlave rgv : slaveProperties.getRgv()) {
+            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
+            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+            BasRgv basRgv = basRgvService.selectById(rgv.getId());
+            if (Cools.isEmpty(rgvProtocol, basRgv)) { continue; }
+            try {
+                // 鍦ㄧ嚎 绌洪棽   鏃犱綔涓氭爣璁�   涓嶅湪鍏呯數
+                if (rgvProtocol.getMode() == 0
+                        || !rgvProtocol.statusType.equals(RgvStatusType.IDLE)
+                        || basRgv.getPakMk().equals("Y")
+//                        || steProtocol.getChargeStatus() == 1
+                ) {
+                    continue;
+                }
+            } catch (Exception e) {
+                News.error("fail", e);
+            }
+        }
+    }
 }

--
Gitblit v1.9.1