From 66942458f7753fe4ddee7c5ed3386d61cff28b24 Mon Sep 17 00:00:00 2001 From: 野心家 <1051256694@qq.com> Date: 星期二, 01 四月 2025 13:55:21 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/jxjdzwcs' into jxjdzwcs --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 125 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 123 insertions(+), 2 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 6d68728..c270c19 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -39,15 +39,18 @@ import com.zy.core.thread.SiemensDevpThread; import com.zy.system.entity.Config; import com.zy.system.service.ConfigService; +import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.io.IOException; import java.util.*; +import java.util.concurrent.CompletableFuture; /** * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔� @@ -94,7 +97,10 @@ private ApiLogService apiLogService; @Autowired private CommonService commonService; - + @Value("${wms.count}") + private Integer maxCount; + @Autowired + private WrkMastService wrkMastService; @Value("${wms.url}") private String wmsUrl; @Value("${wms.inboundTaskApplyPath}") @@ -107,6 +113,115 @@ private CrnController crnController; @Autowired private SiteController siteController; + @Synchronized + public void shiftTargetToCyclePoint() throws IOException, InterruptedException { + try { + for (DevpSlave devp : slaveProperties.getDevp()) { + for (DevpSlave.Sta outSta : devp.getOutSta()) { + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + if (devpThread == null) { + continue; + } + + StaProtocol staProtocol = getClonedStation(devpThread, outSta.getStaNo()); + if (staProtocol == null) { + continue; + } + + // 鑾峰彇鍏朵粬鐩稿叧绔欑偣 + StaProtocol staProtocol1 = getClonedStation(devpThread, 1001); + StaProtocol staProtocol2 = getClonedStation(devpThread, 1002); + StaProtocol staProtocol3 = getClonedStation(devpThread, 1003); + StaProtocol staProtocol4 = getClonedStation(devpThread, 1004); + StaProtocol staProtocol6 = getClonedStation(devpThread, 111); + + boolean result = false; + switch (outSta.getStaNo()) { + case 105: + result = (staProtocol1 != null && staProtocol1.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 105); + break; + case 107: + result = (staProtocol2 != null && staProtocol2.isLoading()); + break; + case 109: + result = (staProtocol3 != null && staProtocol3.isLoading()); + break; + case 110: + result = ((staProtocol4 != null && staProtocol4.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 110) || + (staProtocol6 != null && staProtocol6.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 111)); + break; + default: + break; + } + + if (result) { + if (staProtocol.getSiteId() == 107 || staProtocol.getSiteId() == 109) { + StaProtocol staProtocol5 = getClonedStation(devpThread, staProtocol.getSiteId() - 1); + if (staProtocol5 != null && (staProtocol5.isLoading() && (staProtocol5.getStaNo() == 107 || staProtocol5.getStaNo() == 109))) { + short workNo = staProtocol5.getWorkNo(); + staProtocol5.setWorkNo(workNo); + staProtocol5.setStaNo((short) 112); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(4, staProtocol5)); + } + } else { + if(staProtocol.isLoading() && (staProtocol.getStaNo() == 105 || staProtocol.getStaNo() == 110 || staProtocol.getStaNo() == 111)){ + short workNo = staProtocol.getWorkNo(); + staProtocol.setWorkNo(workNo); + staProtocol.setStaNo((short) 112); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(4, staProtocol)); + } + } + } + } + } + } catch (Exception e) { + log.error("shiftTargetToCyclePoint error", e); + } + } + + /** + * 鑾峰彇绔欑偣骞跺厠闅� + */ + private StaProtocol getClonedStation(DevpThread devpThread, int staNo) { + StaProtocol staProtocol = devpThread.getStation().get(staNo); + return (staProtocol != null) ? staProtocol.clone() : null; + } + + // 112寰幆绔欑偣鑷冲嚭搴撶珯 + public synchronized void shiftCyclePointToTarget() throws IOException, InterruptedException { + try { + for (DevpSlave devp : slaveProperties.getDevp()) { + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + if (devpThread == null) { + continue; + } + + StaProtocol staProtocol = devpThread.getStation().get(112); + if (staProtocol.getStaNo() != 112 || staProtocol.getWorkNo() == 0 || !staProtocol.isLoading() || staProtocol.getWorkNo() > 9000 || staProtocol.getWorkNo() < 6000) { + continue; + } + // 鏌ヨ浠诲姟淇℃伅 + TaskWrk taskWrk = taskWrkMapper.selectStaWorking(Integer.valueOf(staProtocol.getWorkNo())); + if (taskWrk == null || taskWrk.getWrkNo() < 6001 || taskWrk.getWrkNo() > 9000) { + continue; + } + + short workNo = staProtocol.getWorkNo(); + // 鍐嶅啓鍏ョ洰鏍囩珯鐐� + staProtocol.setWorkNo(workNo); + staProtocol.setStaNo(Short.valueOf(taskWrk.getTargetPoint())); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(4, staProtocol)); + Thread.sleep(200); + + log.info("Shifted from cycle station 112 to target {}, workNo: {}", taskWrk.getTargetPoint(), workNo); + } + } catch (Exception e) { + log.error("shiftCyclePointToTarget error", e); + } + } + + + public synchronized void generateStoreWrkFile1() throws IOException, InterruptedException { @@ -205,7 +320,7 @@ staProtocol.setStaNo((short)107); }else if (staProtocol.getWorkNo()>=9851&&staProtocol.getWorkNo()<=9875) { staProtocol.setStaNo((short)109); - }else{ + }else if (staProtocol.getWorkNo()>=9876 && staProtocol.getWorkNo() <= 9900){ staProtocol.setStaNo((short)110); } devpThread.setPakMk(staProtocol.getSiteId(), false); @@ -848,6 +963,12 @@ if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { break; } + int storeCount = basDevpService.getStoreCount(); + if(storeCount >= maxCount){ + log.error("杈撻�佺嚎鏆傚瓨鏁拌揪鍒颁笂闄恵}",storeCount); + break; + } + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) { -- Gitblit v1.9.1