From c904f735e0b8a488ef56744c08f8e10258639bce Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期四, 05 六月 2025 15:54:58 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 300 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 299 insertions(+), 1 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 af46969..dd01468 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -21,6 +21,7 @@
import com.zy.common.utils.HttpHandler;
import com.zy.core.CrnThread;
import com.zy.core.DevpThread;
+import com.zy.core.RgvThread;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.*;
@@ -66,6 +67,12 @@
private FillingMastService fillingMastService;
@Autowired
private VacuumMastService vacuumMastService;
+ @Autowired
+ private BasErrLogService basErrLogService;
+ @Autowired
+ private WrkMastStaService wrkMastStaService;
+ @Autowired
+ private BasRgvErrService basRgvErrService;
@Value("${wms.url}")
private String wmsUrl;
@@ -296,7 +303,13 @@
if (rgvComplete){
rgvThread.setPakMk(true);
}
-
+ List<WrkMastSta> wrkMastStas = wrkMastStaMapper.selectList(new EntityWrapper<WrkMastSta>().ne("wrk_sts",3).eq("wrk_no", rgvProtocol.getTaskNo1()));
+ if (!Cools.isEmpty(wrkMastStas) || wrkMastStas.size()<=0){
+ WrkMastSta wrkMastSta = wrkMastStas.get(0);
+ wrkMastSta.setWrkSts(3);
+ wrkMastSta.setBignTime(new Date());
+ wrkMastStaMapper.updateById(wrkMastSta);
+ }
}
}
@@ -380,6 +393,291 @@
}
}
+ public synchronized void DevpTaskAndPut() throws InterruptedException {
+ try {
+ for (DevpSlave devp : slaveProperties.getDevp()) {
+ for (DevpSlave.Sta inSta : devp.getInSta()) {
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+// System.out.println(JSON.toJSONString(staProtocol));
+ if (staProtocol.isAutoing()){
+ WrkMastSta wrkMastSta = new WrkMastSta(new Date(),2,1);
+ Integer count = wrkMastStaMapper.selectCount(new EntityWrapper<WrkMastSta>().ne("wrk_sts",3).eq("wrk_no", wrkMastSta.getWrkNo()));
+ if (count==0){
+ wrkMastSta.setType(1);
+ wrkMastSta.setWrkType(3);
+ wrkMastStaMapper.insert(wrkMastSta);
+ }
+ }else if (staProtocol.isLoading()){
+ WrkMastSta wrkMastSta = new WrkMastSta(new Date(),2,3);
+ Integer count = wrkMastStaMapper.selectCount(new EntityWrapper<WrkMastSta>().ne("wrk_sts",3).eq("wrk_no", wrkMastSta.getWrkNo()));
+ if (count==0){
+ wrkMastSta.setType(1);
+ wrkMastSta.setWrkType(3);
+ wrkMastStaMapper.insert(wrkMastSta);
+ }
+ }else if (staProtocol.isInEnable()){
+ WrkMastSta wrkMastSta = new WrkMastSta(new Date(),2,5);
+ Integer count = wrkMastStaMapper.selectCount(new EntityWrapper<WrkMastSta>().ne("wrk_sts",3).eq("wrk_no", wrkMastSta.getWrkNo()));
+ if (count==0){
+ wrkMastSta.setType(1);
+ wrkMastSta.setWrkType(3);
+ wrkMastStaMapper.insert(wrkMastSta);
+ }
+ }else if (staProtocol.isOutEnable()){
+ WrkMastSta wrkMastSta = new WrkMastSta(new Date(),2,7);
+ Integer count = wrkMastStaMapper.selectCount(new EntityWrapper<WrkMastSta>().ne("wrk_sts",3).eq("wrk_no", wrkMastSta.getWrkNo()));
+ if (count==0){
+ wrkMastSta.setType(1);
+ wrkMastSta.setWrkType(3);
+ wrkMastStaMapper.insert(wrkMastSta);
+ }
+ }
+ if (staProtocol.isEmptyMk()){
+ WrkMastSta wrkMastSta = new WrkMastSta(new Date(),1,10);
+ Integer count = wrkMastStaMapper.selectCount(new EntityWrapper<WrkMastSta>().ne("wrk_sts",3).eq("wrk_no", wrkMastSta.getWrkNo()));
+ if (count==0){
+ wrkMastSta.setType(1);
+ wrkMastSta.setWrkType(3);
+ wrkMastStaMapper.insert(wrkMastSta);
+ }
+ }
+ if (staProtocol.isFullPlt()){
+ WrkMastSta wrkMastSta = new WrkMastSta(new Date(),3,10);
+ Integer count = wrkMastStaMapper.selectCount(new EntityWrapper<WrkMastSta>().ne("wrk_sts",3).eq("wrk_no", wrkMastSta.getWrkNo()));
+ if (count==0){
+ wrkMastSta.setType(1);
+ wrkMastSta.setWrkType(3);
+ wrkMastStaMapper.insert(wrkMastSta);
+ }
+ }
+ if (staProtocol.isCar()){
+ WrkMastSta wrkMastSta = new WrkMastSta(new Date(),5,10);
+ Integer count = wrkMastStaMapper.selectCount(new EntityWrapper<WrkMastSta>().ne("wrk_sts",3).eq("wrk_no", wrkMastSta.getWrkNo()));
+ if (count==0){
+ wrkMastSta.setType(1);
+ wrkMastSta.setWrkType(3);
+ wrkMastStaMapper.insert(wrkMastSta);
+ }
+ }
+ if (staProtocol.isLow()){
+ WrkMastSta wrkMastSta = new WrkMastSta(new Date(),7,10);
+ Integer count = wrkMastStaMapper.selectCount(new EntityWrapper<WrkMastSta>().ne("wrk_sts",3).eq("wrk_no", wrkMastSta.getWrkNo()));
+ if (count==0){
+ wrkMastSta.setType(1);
+ wrkMastSta.setWrkType(3);
+ wrkMastStaMapper.insert(wrkMastSta);
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ log.error("鐢熸垚灏忚溅鎼繍浠诲姟 ===>> 澶辫触", e);
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ }
+ }
+
+ /**
+ * 鎵ц灏忚溅鎼繍浠诲姟
+ */
+ public synchronized void rgvRunWrkMastFullSta() {
+ try{
+ SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, 1);
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ log.error("RGV涓嶅湪绾�");
+ return;
+ }
+ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤
+ if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvProtocol.getLoaded1()==0
+ && rgvProtocol.getTaskNo1() == 0
+ && rgvThread.isPakMk()
+ ) {
+ Integer selectCount = wrkMastStaMapper.selectCount(new EntityWrapper<WrkMastSta>().ne("wrk_sts", 3).ne("wrk_sts", 0));
+ if (selectCount>0){
+ log.error("瀛樺湪鎵цRGV涓换鍔★紝浣嗘槸灏忚溅鐘舵�佺┖闂诧紒锛侊紒");
+ return;
+ }
+
+ List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectList(new EntityWrapper<WrkMastSta>().eq("wrk_sts",0));
+ for (WrkMastSta wrkMastSta : wrkMastStaList){
+ if (wrkMastSta.getType()!=1 || wrkMastSta.getWrkType()!=3){//1:婊$増 3锛氬彇鏀�
+ continue;
+ }
+ boolean sign = rgvTakeFullAll(1, wrkMastSta); //鍛戒护涓嬪彂
+ if (sign){
+ wrkMastSta.setWrkSts(1);
+ wrkMastSta.setUpdateTime(new Date());
+ wrkMastStaMapper.updateById(wrkMastSta);
+ } else {
+ log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+ }
+ break;
+ }
+ }
+ }catch (Exception e){
+ log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�");
+ log.error("3875琛�"+e);
+ }
+ }
+ /*
+ * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
+ * */
+ public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta){
+ try{
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ RgvCommand rgvCommand = new RgvCommand();
+ rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
+ rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+ rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().intValue()); // 宸ヤ綅1宸ヤ綔鍙�
+ rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐�
+ rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅1璧风偣
+ rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅1鐩爣绔欑偣
+ rgvCommand.setCommand((short) 0); //宸ヤ綅1浠诲姟纭
+ if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) {
+ //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔�
+ log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
+ return false;
+ } else {
+ return true;
+ }
+ }catch (Exception e){
+ return false;
+ }
+ }
+
+ public synchronized void recCrnErr() {
+ Date now = new Date();
+
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+ SiemensRgvThread rgvThread = (SiemensRgvThread) SlaveConnection.get(SlaveType.Rgv, 1);
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ return;
+ }
+ if (true) {
+// if (crnProtocol.getModeType() != CrnModeType.STOP) {
+ // 鏈変换鍔�
+ if (rgvProtocol.getTaskNo1() != 0) {
+
+ BasErrLog latest = basErrLogService.findLatestByTaskNo(1, rgvProtocol.getTaskNo1());
+ // 鏈夊紓甯�
+ if (latest == null) {
+ if (rgvProtocol.getAlarm() != null && rgvProtocol.getAlarm() > 0) {
+ WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>()
+ .setSqlSelect("TOP 1 wrk_no as wrkNo , wrk_sts as wrkSts,wrk_start as wrkStart,wrk_end as wrkEnd, create_time as createTime")
+ .eq("wrk_No", rgvProtocol.getTaskNo1())
+ .orderBy("create_time", false)
+
+ );
+ if (wrkMastSta == null) {
+ return;
+ }
+ BasRgvErr rgvErr = basRgvErrService.selectById(rgvProtocol.getAlarm());
+ String errName = rgvErr == null ? String.valueOf(rgvProtocol.getAlarm()) : rgvErr.getErrName();
+ BasErrLog basErrLog = new BasErrLog(
+ null, // 缂栧彿
+ wrkMastSta.getWrkNo().intValue(), // 宸ヤ綔鍙�
+ now, // 鍙戠敓鏃堕棿
+ null, // 缁撴潫鏃堕棿
+ wrkMastSta.getWrkSts().longValue(), // 宸ヤ綔鐘舵��
+ wrkMastSta.getType(), // 鍏ュ嚭搴撶被鍨�
+ 1, // 鍫嗗灈鏈�
+ null, // plc
+ null, // 鐩爣搴撲綅
+ wrkMastSta.getWrkEnd(), // 鐩爣绔�
+ wrkMastSta.getWrkEnd(), // 婧愮珯
+ null, // 婧愬簱浣�
+ null, // 鏉$爜
+ (int) rgvProtocol.getAlarm(), // 寮傚父鐮�
+ errName, // 寮傚父
+ 1, // 寮傚父鎯呭喌
+ now, // 娣诲姞鏃堕棿
+ null, // 娣诲姞浜哄憳
+ now, // 淇敼鏃堕棿
+ null, // 淇敼浜哄憳
+ "浠诲姟涓紓甯�" // 澶囨敞
+ );
+ if (!basErrLogService.insert(basErrLog)) {
+
+ }
+ }
+ } else {
+ // 寮傚父淇
+ if (rgvProtocol.getAlarm() == null || rgvProtocol.getAlarm() == 0) {
+ latest.setEndTime(now);
+ latest.setUpdateTime(now);
+ latest.setStatus(2);
+ if (!basErrLogService.updateById(latest)) {
+
+ }
+ }
+ }
+ // 鏃犱换鍔�
+ } else {
+ BasErrLog latest = basErrLogService.findLatest(1);
+
+ // 鏈夊紓甯�
+ if (rgvProtocol.getAlarm() != null && rgvProtocol.getAlarm() > 0) {
+
+ // 璁板綍鏂板紓甯�
+ if (latest == null || (latest.getErrCode() != rgvProtocol.getAlarm().intValue())) {
+ BasRgvErr rgvErr = basRgvErrService.selectById(rgvProtocol.getAlarm());
+ String errName = rgvErr == null ? String.valueOf(rgvProtocol.getAlarm()) : rgvErr.getErrName();
+ BasErrLog basErrLog = new BasErrLog(
+ null, // 缂栧彿
+ null, // 宸ヤ綔鍙�
+ now, // 鍙戠敓鏃堕棿
+ null, // 缁撴潫鏃堕棿
+ null, // 宸ヤ綔鐘舵��
+ null, // 鍏ュ嚭搴撶被鍨�
+ 1, // 鍫嗗灈鏈�
+ null, // plc
+ null, // 鐩爣搴撲綅
+ null, // 鐩爣绔�
+ null, // 婧愮珯
+ null, // 婧愬簱浣�
+ null, // 鏉$爜
+ (int) rgvProtocol.getAlarm(), // 寮傚父鐮�
+ errName, // 寮傚父
+ 1, // 寮傚父鎯呭喌
+ now, // 娣诲姞鏃堕棿
+ null, // 娣诲姞浜哄憳
+ now, // 淇敼鏃堕棿
+ null, // 淇敼浜哄憳
+ "鏃犱换鍔″紓甯�" // 澶囨敞
+ );
+ if (!basErrLogService.insert(basErrLog)) {
+
+ }
+ }
+ // 鏃犲紓甯�
+ } else {
+ // 寮傚父淇
+ if (latest != null && latest.getStatus() == 1) {
+ latest.setEndTime(now);
+ latest.setUpdateTime(now);
+ latest.setStatus(2);
+ if (!basErrLogService.updateById(latest)) {
+
+ }
+ }
+ }
+ }
+ }
+
+
+// News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄紓甯镐俊鎭褰曟墽琛屽畬鎴�");
+ }
+
}
--
Gitblit v1.9.1