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 | 328 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 323 insertions(+), 5 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 b67f5cc..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.*; @@ -29,13 +30,11 @@ import com.zy.core.model.command.LedCommand; import com.zy.core.model.command.RgvCommand; import com.zy.core.model.protocol.CrnProtocol; +import com.zy.core.model.protocol.ExtProtocol; import com.zy.core.model.protocol.RgvProtocol; import com.zy.core.model.protocol.StaProtocol; import com.zy.core.properties.SlaveProperties; -import com.zy.core.thread.BarcodeThread; -import com.zy.core.thread.LedThread; -import com.zy.core.thread.SiemensDevpThread; -import com.zy.core.thread.SiemensRgvThread; +import com.zy.core.thread.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -68,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; @@ -298,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); + } } } @@ -360,6 +371,313 @@ } } + public synchronized void ExtTaskAndPut() throws InterruptedException { + for (ExtSlave extSlave : slaveProperties.getExt()) { +// if (!rgv.getDemo()) { +// continue; +// } + MelsecExtThread extThread = (MelsecExtThread) SlaveConnection.get(SlaveType.Ext, extSlave.getId()); + ExtProtocol extProtocol = extThread.getExtProtocol(); + if (extProtocol == null) { + continue; + } +// else { +// extProtocol = extProtocol.clone(); +// } + if (extProtocol.isTake()){//鍏佽鍙� + + }else if (extProtocol.isPut()){//鍏佽鏀� + + } + + } + } + + 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