From b59ec69cc3d75df8ad115c22edc9c07312351169 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期一, 24 三月 2025 09:33:36 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jxjdzwcs' into jxjdzwcs
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 219 +++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 149 insertions(+), 70 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 1a45968..b03a68a 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -42,12 +42,14 @@
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 +96,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,9 +112,98 @@
private CrnController crnController;
@Autowired
private SiteController siteController;
+ //鍑哄簱绔欑偣鑷�112寰幆绔欑偣
+ public synchronized 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);
+ 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();
+ }
+ boolean result = false;
+ switch(outSta.getStaNo()){
+ case 105: if (staProtocol1.isLoading()){
+ result = true;
+ }
+ case 107: if (staProtocol2.isLoading()){
+ result = true;
+ }
+ case 109: if (staProtocol3.isLoading()){
+ result = true;
+ }
+ case 110: if (staProtocol4.isLoading()){
+ result = true;
+ }
+ default: break;
+
+ }
+ if(result){
+ 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();
+ }
+ WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
+ if(wrkMast != null && wrkMast.getWrkNo() < 9000 && wrkMast.getWrkNo() > 7000){
+ staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ }
+ }
+ }catch (Exception e) {
+ log.error("generateStoreWrkFile e", e);
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ }
+ }
- public void generateStoreWrkFile1() throws IOException, InterruptedException {
+
+
+ public synchronized void generateStoreWrkFile1() throws IOException, InterruptedException {
try {
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
for (DevpSlave devp : slaveProperties.getDevp()) {
@@ -239,7 +333,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
@@ -311,7 +407,7 @@
}
}
- public void generateStoreWrkFile() throws IOException, InterruptedException {
+ public synchronized void generateStoreWrkFile() throws IOException, InterruptedException {
try {
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
for (DevpSlave devp : slaveProperties.getDevp()) {
@@ -588,7 +684,7 @@
/**
* 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
*/
- public void crnStnToOutStn() {
+ public synchronized void crnStnToOutStn() {
for (CrnSlave crnSlave : slaveProperties.getCrn()) {
// 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯
for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) {
@@ -693,7 +789,7 @@
/**
* 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鍒板簱浣�
*/
- public void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol) throws IOException {
+ public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol) throws IOException {
for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", slave.getId()).eq("crn_stn", crnStn.getStaNo()));
for (StaDesc staDesc : staDescs) {
@@ -720,6 +816,7 @@
continue;
}
+
// 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
TaskWrk taskWrk = taskWrkMapper.selectPakIn(slave.getId(), staProtocol.getWorkNo().intValue(), staDesc.getStnNo().toString());
if (null == taskWrk) {
@@ -738,7 +835,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());//鍫嗗灈鏈哄彿
@@ -778,7 +875,7 @@
* 鍑哄簱 ===>> 搴撲綅鍒板爢鍨涙満绔�
* 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
*/
- public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol) {
+ public synchronized void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol) {
List<TaskWrk> taskWrksInitial = taskWrkMapper.selectPakOut(slave.getId(), null);
if (taskWrksInitial.size() == 0) {
return;
@@ -845,6 +942,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 +966,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 +974,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());
@@ -947,7 +1019,7 @@
/**
* 搴撲綅绉昏浆
*/
- public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol) {
+ public synchronized void locToLoc(CrnSlave slave, CrnProtocol crnProtocol) {
for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
// 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑绉诲簱宸ヤ綔妗�
List<TaskWrk> taskWrks = taskWrkMapper.selectList(new EntityWrapper<TaskWrk>()
@@ -1006,15 +1078,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 +1095,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澶辫触");
}
}
@@ -1094,7 +1173,7 @@
/**
* 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
*/
- public void storeFinished() throws InterruptedException {
+ public synchronized void storeFinished() throws InterruptedException {
for (CrnSlave crn : slaveProperties.getCrn()) {
// 鑾峰彇鍫嗗灈鏈轰俊鎭�
CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
@@ -1168,7 +1247,7 @@
/**
* 鍫嗗灈鏈哄紓甯镐俊鎭褰�
*/
- public void recCrnErr() {
+ public synchronized void recCrnErr() {
Date now = new Date();
for (CrnSlave crn : slaveProperties.getCrn()) {
// 鑾峰彇鍫嗗灈鏈轰俊鎭�
@@ -1283,26 +1362,26 @@
}
}
- //鑷姩娲惧彂浠诲姟
- public 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 +1565,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