From cf9fac40a8e39b25ee935a743224ae6c405bbddc Mon Sep 17 00:00:00 2001 From: lty <876263681@qq.com> Date: 星期一, 24 三月 2025 19:33:39 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/jxjdzwcs' into jxjdzwcs --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 227 +++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 165 insertions(+), 62 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 3911ecc..5680365 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,118 @@ private CrnController crnController; @Autowired private SiteController siteController; + //鍑哄簱绔欑偣鑷�112寰幆绔欑偣 + @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()); + StaProtocol staProtocol = devpThread.getStation().get(outSta.getStaNo()); + StaProtocol staProtocol1 = devpThread.getStation().get(1001); + StaProtocol staProtocol2 = devpThread.getStation().get(1002); + StaProtocol staProtocol3 = devpThread.getStation().get(1003); + StaProtocol staProtocol4 = devpThread.getStation().get(1004); + StaProtocol staProtocol6 = devpThread.getStation().get(111); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + if (staProtocol1 == null) { + continue; + } else { + staProtocol1 = staProtocol1.clone(); + } + if (staProtocol2 == null) { + continue; + } else { + staProtocol2 = staProtocol2.clone(); + } + if (staProtocol3 == null) { + continue; + } else { + staProtocol3 = staProtocol3.clone(); + } + if (staProtocol4 == null) { + continue; + } else { + staProtocol4 = staProtocol4.clone(); + } + if (staProtocol6 == null) { + continue; + } else { + staProtocol6 = staProtocol6.clone(); + } + boolean result = false; + switch(outSta.getStaNo()){ + case 105: if (staProtocol1.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 105){ + result = true; + } + case 107: if (staProtocol2.isLoading()){ + result = true; + } + case 109: if (staProtocol3.isLoading()){ + result = true; + } + case 110: if ((staProtocol4.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 110) || ((staProtocol6.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 111))){ + result = true; + } + default: break; + + } + if(result){ + if(staProtocol.getSiteId() == 107 || staProtocol.getSiteId() == 109){ + StaProtocol staProtocol5 = devpThread.getStation().get(staProtocol.getSiteId() - 1); + if (staProtocol5== null) { + continue; + } else { + staProtocol5 = staProtocol5.clone(); + } + if((staProtocol5.isLoading() && staProtocol5.getStaNo() == 107) || ((staProtocol5.isLoading() && staProtocol5.getStaNo() == 109))){ + staProtocol5.setStaNo((short) 112); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol5)); + } + }else{ + staProtocol.setStaNo((short) 112); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + } + } + } + } + }catch (Exception e) { + log.error("generateStoreWrkFile e", e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + } + + //112寰幆绔欑偣鑷冲嚭搴撶珯 + public synchronized void shiftCyclePointToTarget() throws IOException, InterruptedException{ + try{ + for (DevpSlave devp : slaveProperties.getDevp()) { + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + StaProtocol staProtocol = devpThread.getStation().get(112); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + if(staProtocol.getWorkNo() == 0){ + continue; + } + TaskWrk taskWrk = taskWrkMapper.selectStaWorking(Integer.valueOf(staProtocol.getWorkNo())); + if(taskWrk != null && taskWrk.getWrkNo() < 9001 && taskWrk.getWrkNo() > 6000){ + staProtocol.setStaNo(Short.valueOf(taskWrk.getTargetPoint())); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + } + } + }catch (Exception e) { + log.error("generateStoreWrkFile e", e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + } + + public synchronized void generateStoreWrkFile1() throws IOException, InterruptedException { @@ -239,7 +357,9 @@ JSONObject jsonObject1 = JSON.parseObject(response); Boolean bool = false; if(jsonObject1.get("ReturnStatus").equals(0)){ + taskWrk.setStatus(2);//娲惧彂浠诲姟 bool = true; + taskWrkService.updateById(taskWrk); } apiLogService.save("wcs寮�濮嬪叆搴撲换鍔′笂鎶ms" , wmsUrl + TaskExecCallback @@ -720,6 +840,7 @@ continue; } + // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。 TaskWrk taskWrk = taskWrkMapper.selectPakIn(slave.getId(), staProtocol.getWorkNo().intValue(), staDesc.getStnNo().toString()); if (null == taskWrk) { @@ -738,7 +859,7 @@ // int workNo = commonService.getWorkNo(WorkNoType.PAKIN.type);//鑾峰彇鍏ュ簱宸ヤ綔鍙� // taskWrk.setWrkNo(workNo);//宸ヤ綔鍙� - taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//娲惧彂鐘舵�� +// taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//娲惧彂鐘舵�� taskWrk.setAssignTime(new Date());//娲惧彂鏃堕棿 taskWrk.setWrkSts(3);//宸ヤ綔鐘舵�� 3.鍚婅溅鍏ュ簱 taskWrk.setCrnNo(staDesc.getCrnNo());//鍫嗗灈鏈哄彿 @@ -845,6 +966,12 @@ if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { break; } + int storeCount = taskWrkService.getStoreCount(taskWrk.getCrnNo()); + if(storeCount >= maxCount){ + log.error("{}鍙峰爢鍨涙満鏆傚瓨鏁板凡婊�!", taskWrk.getCrnNo()); + break; + } + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) { @@ -863,36 +990,6 @@ command.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞� command.setCommand((short) 1); - if(Cools.isEmpty(taskWrk.getMarkStart())||taskWrk.getMarkStart()==0){ - HashMap<String, Object> hashMap = new HashMap<>(); - hashMap.put("TaskNo",taskWrk.getTaskNo()); - String response = ""; - try { - //寮�濮嬩笂鎶�,鍑哄簱浠诲姟寮�濮嬫椂锛學CS鍥炶皟WMS - response = new HttpHandler.Builder() - .setUri(wmsUrl) - .setPath(taskStatusFeedbackPath) - .setJson(JSON.toJSONString(hashMap)) - .build() - .doPost(); - JSONObject jsonObject = JSON.parseObject(response); - Boolean bool = false; - if(jsonObject.get("ReturnStatus").equals(0)){ - bool = true; - taskWrk.setMarkStart(1); - } - apiLogService.save("wcs寮�濮嬩换鍔′笂鎶ms" - , wmsUrl + TaskExecCallback - , null - , "127.0.0.1" - , JSON.toJSONString(hashMap) - , response - , bool - ); - } catch (Exception e) { - } - } - if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, command), false)) { log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(command)); throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�"); @@ -901,7 +998,6 @@ // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� Date now = new Date(); taskWrk.setWrkSts(12); - taskWrk.setStatus(2); taskWrk.setModiTime(now); if (taskWrkMapper.updateById(taskWrk) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); @@ -1006,15 +1102,15 @@ // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� Date now = new Date(); taskWrk.setWrkSts(12); - taskWrk.setStatus(2); taskWrk.setModiTime(now); if (taskWrkMapper.updateById(taskWrk) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); } + String response = ""; + Boolean bool=false; + HashMap<String, Object> headParam = new HashMap<>(); + headParam.put("TaskNo", taskWrk.getTaskNo()); try { - HashMap<String, Object> headParam = new HashMap<>(); - headParam.put("TaskNo", taskWrk.getTaskNo()); - String response; response = new HttpHandler.Builder() // .setHeaders(headParam) .setUri(wmsUrl) @@ -1023,17 +1119,24 @@ .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); + if(jsonObject.get("ReturnStatus").equals(0)){ + bool = true; + taskWrk.setStatus(2); + taskWrkMapper.updateById(taskWrk); + } + + } catch (Exception e) { + log.error("wcs娲惧彂绉诲簱搴撲换鍔′笂鎶ms澶辫触", taskWrk); +// throw new CoolException("wcs娲惧彂绉诲簱搴撲换鍔′笂鎶ms澶辫触"); + }finally { apiLogService.save("wcs娲惧彂绉诲簱浠诲姟涓婃姤wms" , wmsUrl + taskStatusFeedbackPath , null , "127.0.0.1" , JSON.toJSONString(headParam) , response - , true + , bool ); - } catch (Exception e) { - log.error("wcs娲惧彂绉诲簱搴撲换鍔′笂鎶ms澶辫触", taskWrk); -// throw new CoolException("wcs娲惧彂绉诲簱搴撲换鍔′笂鎶ms澶辫触"); } } @@ -1283,26 +1386,26 @@ } } - //鑷姩娲惧彂浠诲姟 - public synchronized void autoDistribute() { - Config config = configService.selectByCode("autoDistribute"); - if (config == null) { - return; - } - - if (config.getValue().equals("false")) {//鍒ゆ柇鏄惁寮�鍚嚜鍔ㄦ淳鍙戜换鍔� - return; - } - - for (TaskWrk taskWrk : taskWrkService.selectReceive()) { - - try { - taskWrkService.distribute(taskWrk.getTaskNo(), 9527L); - } catch (CoolException e) { - log.info(e.getMessage()); - } - } - } +// //鑷姩娲惧彂浠诲姟 +// public synchronized void autoDistribute() { +// Config config = configService.selectByCode("autoDistribute"); +// if (config == null) { +// return; +// } +// +// if (config.getValue().equals("false")) {//鍒ゆ柇鏄惁寮�鍚嚜鍔ㄦ淳鍙戜换鍔� +// return; +// } +// +// for (TaskWrk taskWrk : taskWrkService.selectReceive()) { +// +// try { +// taskWrkService.distribute(taskWrk.getTaskNo(), 9527L); +// } catch (CoolException e) { +// log.info(e.getMessage()); +// } +// } +// } //agv鍙栨斁璐т换鍔″畬鎴� public synchronized void autoCompleteAGV() { @@ -1486,7 +1589,7 @@ int workNo1 = commonService.getWorkNo(WorkNoType.PAKIN.type);//鑾峰彇鍏ュ簱宸ヤ綔鍙� taskWrk.setTaskNo(result.getTaskNo());//浠诲姟鍙� taskWrk.setWrkNo(workNo1); - taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//浠诲姟鐘舵�侊細娲惧彂 + taskWrk.setStatus(TaskStatusType.RECEIVE.id);//浠诲姟鐘舵�侊細鎺ユ敹 taskWrk.setCreateTime(now); taskWrk.setIoType(1);//浠诲姟绫诲瀷 taskWrk.setIoPri(13);//浼樺厛绾� -- Gitblit v1.9.1