From c18be7accbae71ff346ca7af60e820a1b07d0317 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期四, 15 五月 2025 16:26:15 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 223 ++++++++++++++++++++++++++-----------------------------
1 files changed, 105 insertions(+), 118 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 f20e742..3a85a83 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -7,10 +7,10 @@
import com.core.exception.CoolException;
import com.zy.asrs.domain.dto.NotifyCustomDataDto;
import com.zy.asrs.domain.enums.NotifyMsgType;
+import com.zy.asrs.domain.enums.RedisKeyType;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.domain.enums.WorkNoType;
import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.Result;
import com.zy.asrs.mapper.*;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.CommandUtils;
@@ -19,6 +19,7 @@
import com.zy.asrs.utils.Utils;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
+import com.zy.common.utils.RedisUtil;
import com.zy.core.CrnThread;
import com.zy.core.DevpThread;
import com.zy.core.cache.MessageQueue;
@@ -42,6 +43,7 @@
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.io.IOException;
+import java.text.SimpleDateFormat;
import java.util.*;
/**
@@ -72,13 +74,9 @@
@Autowired
private TaskWrkService taskWrkService;
@Autowired
- private ConfigService configService;
- @Autowired
private StaDescMapper staDescMapper;
@Autowired
private CommandInfoService commandInfoService;
- @Autowired
- private OpenServiceImpl openServiceImpl;
@Autowired
private StaDescService staDescService;
@Autowired
@@ -89,6 +87,8 @@
private CrnOperaUtils crnOperaUtils;
@Autowired
private NotifyUtils notifyUtils;
+ @Autowired
+ private RedisUtil redisUtil;
@Value("${wms.count}")
private Integer maxCount;
@Value("${wms.url}")
@@ -96,9 +96,7 @@
@Value("${wms.inboundTaskApplyPath}")
private String inboundTaskApplyPath;
@Value("${wms.TaskExecCallback}")
- private String TaskExecCallback;
- @Value("${wms.taskStatusFeedbackPath}")
- private String taskStatusFeedbackPath;
+ private String taskExecCallback;
public synchronized void generateStoreWrkFile1() {
try {
@@ -114,8 +112,6 @@
} else {
staProtocol = staProtocol.clone();
}
- Short workNo = staProtocol.getWorkNo();
- Short stano = staProtocol.getStaNo();
// 灏哄妫�娴嬪紓甯�
boolean back = false;
@@ -148,11 +144,15 @@
errMsg = "鎵爜澶辫触";
back = true;
}
+
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
- if (staProtocol.isAutoing() && staProtocol.isLoading()
+ if (staProtocol.isAutoing()
+ && staProtocol.isLoading()
&& staProtocol.isInEnable()
- && !staProtocol.isEmptyMk() && workNo >= 9790
- && staProtocol.isPakMk()) {
+ && !staProtocol.isEmptyMk()
+ && staProtocol.isPakMk()
+ && staProtocol.getWorkNo() == 9999
+ ) {
// 鑾峰彇鏉$爜鎵弿浠俊鎭�
BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
if (barcodeThread == null) {
@@ -167,18 +167,23 @@
}
HashMap<String, Object> requestParam = new HashMap<>();
- requestParam.put("BoxNo", barcode);//鎵樼洏鐮�
- requestParam.put("TerminalNo", inSta.getStaNo());//鍏ュ簱鍙�
+ requestParam.put("barcode", barcode);//鎵樼洏鐮�
+ requestParam.put("stationCode", inSta.getStaNo());//鍏ュ簱鍙�
if (back) {
- requestParam.put("WCSStatus", 1);//澶辫触
- requestParam.put("WCSErrorMessage", errMsg);//澶辫触鍘熷洜
+ requestParam.put("wcsStatus", 1);//澶辫触
+ requestParam.put("wcsErrorMessage", errMsg);//澶辫触鍘熷洜
}else {
- requestParam.put("WCSStatus", 0);//鎴愬姛
+ requestParam.put("wcsStatus", 0);//鎴愬姛
}
String response = "";
Boolean success = false;
try {
+ Object object = redisUtil.get(RedisKeyType.IN_TASK_LOCK.key);
+ if(object != null) {
+ continue;
+ }
+
response = new HttpHandler.Builder()
.setUri(wmsUrl)
.setPath(inboundTaskApplyPath)
@@ -186,80 +191,84 @@
.build()
.doPost();
JSONObject jsonObject = JSON.parseObject(response);
-
- if (back) {
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ redisUtil.set(RedisKeyType.IN_TASK_LOCK.key, "lock", 5);
+ if (jsonObject.getInteger("code") != 200) {
+ log.info("鏉$爜锛�" + barcode + "鐢宠WMS澶辫触,response=" + JSON.toJSONString(jsonObject));
continue;
}
- int returnStatus = Integer.parseInt(jsonObject.get("ReturnStatus").toString());
- if (returnStatus == 0) {
- Result result = JSON.parseObject(jsonObject.get("Result").toString(), Result.class);
- // 鍒涙柊涓�涓叆搴撳伐浣滄。
- TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo());
- if(taskWrk != null) {
- log.info("浠诲姟锛�" + result.getTaskNo() + "宸茬粡瀛樺湪");
- continue;
- }
+ JSONObject result = jsonObject.getJSONObject("data");
+ Integer resultWrkNo = result.getInteger("wrkNo");
+ Integer resultStaNo = result.getInteger("stnNo");
+ String resultLocNo = result.getString("locNo");
- String locNo = Utils.getLocNo(result.getRow(), result.getFloor(), result.getColumn());
- LocMast locMast = locMastService.selectByLocNo(locNo);
- if (locMast == null) {
- log.info(locNo + "搴撲綅涓嶅瓨鍦�");
- continue;
- }
+ // 鍒涙柊涓�涓叆搴撳伐浣滄。
+ TaskWrk taskWrk = taskWrkService.selectByTaskNo(String.valueOf(resultWrkNo));
+ if(taskWrk != null) {
+ log.info("浠诲姟锛�" + resultWrkNo + "宸茬粡瀛樺湪");
+ continue;
+ }
- if (!locMast.getLocSts().equals("O")) {
- log.info(locNo + "搴撲綅涓嶅浜庣┖搴撲綅");
- continue;
- }
+ LocMast locMast = locMastService.selectByLocNo(resultLocNo);
+ if (locMast == null) {
+ log.info(resultLocNo + "搴撲綅涓嶅瓨鍦�");
+ continue;
+ }
- Date now = new Date();
- taskWrk = new TaskWrk();
- taskWrk.setTaskNo(result.getTaskNo());//浠诲姟鍙�
- taskWrk.setWrkNo(commonService.getWorkNo(WorkNoType.PAKIN.type));//鑾峰彇鍏ュ簱宸ヤ綔鍙�
- taskWrk.setStatus(TaskStatusType.RECEIVE.id);//浠诲姟鐘舵�侊細鎺ユ敹
- taskWrk.setWrkSts(2);//2.璁惧涓婅蛋
- taskWrk.setCreateTime(now);
- taskWrk.setIoType(1);//浠诲姟绫诲瀷
- taskWrk.setIoPri(13);//浼樺厛绾�
- taskWrk.setBarcode(barcode);//鏉$爜
- taskWrk.setCrnNo(locMast.getCrnNo());
- taskWrk.setTargetPoint(locNo);
- taskWrk.setStartPoint(String.valueOf(staProtocol.getStaNo()));
- if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
- taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint());
- }
+ if (!locMast.getLocSts().equals("O")) {
+ log.info(resultLocNo + "搴撲綅涓嶅浜庣┖搴撲綅");
+ continue;
+ }
- if (!taskWrkService.insert(taskWrk)) {
- log.info("浠诲姟锛�" + result.getTaskNo() + "浠诲姟鍒涘缓澶辫触");
- continue;
- }
+ Date now = new Date();
+ taskWrk = new TaskWrk();
+ taskWrk.setTaskNo(String.valueOf(resultWrkNo));//浠诲姟鍙�
+ taskWrk.setWrkNo(commonService.getWorkNo(WorkNoType.PAKIN.type));//鑾峰彇鍏ュ簱宸ヤ綔鍙�
+ taskWrk.setStatus(TaskStatusType.RECEIVE.id);//浠诲姟鐘舵�侊細鎺ユ敹
+ taskWrk.setWrkSts(2);//2.璁惧涓婅蛋
+ taskWrk.setCreateTime(now);
+ taskWrk.setIoType(1);//浠诲姟绫诲瀷
+ taskWrk.setIoPri(13);//浼樺厛绾�
+ taskWrk.setBarcode(barcode);//鏉$爜
+ taskWrk.setCrnNo(locMast.getCrnNo());
+ taskWrk.setTargetPoint(resultLocNo);
+ taskWrk.setStartPoint(String.valueOf(staProtocol.getStaNo()));
+ if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
+ taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint());
+ }
- locMast.setLocSts("S");
- locMast.setModiTime(new Date());
- locMastService.updateById(locMast);
+ if (!taskWrkService.insert(taskWrk)) {
+ log.info("浠诲姟锛�" + resultWrkNo + "浠诲姟鍒涘缓澶辫触");
+ continue;
+ }
- StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
- .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
- staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
- staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
- MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ locMast.setLocSts("S");
+ locMast.setModiTime(new Date());
+ locMastService.updateById(locMast);
- //涓婃姤
- HashMap<String, Object> hashMap = new HashMap<>();
- hashMap.put("TaskNo", taskWrk.getTaskNo());
+ StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
+ .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
+ staProtocol.setWorkNo(taskWrk.getWrkNo());
+ staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- NotifyCustomDataDto customDataDto = new NotifyCustomDataDto();
- customDataDto.setUri(wmsUrl);
- customDataDto.setPath(taskStatusFeedbackPath);
- customDataDto.setData(JSON.toJSONString(hashMap));
- boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto);
- if(notifyResult) {
- taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//浠诲姟娲惧彂
- taskWrkService.updateById(taskWrk);
- }
+ //涓婃姤
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
+ HashMap<String, Object> hashMap = new HashMap<>();
+ hashMap.put("taskNo", taskWrk.getTaskNo());
+ hashMap.put("status", TaskStatusType.DISTRIBUTE.id);
+ hashMap.put("ioType", 1);
+ hashMap.put("barcode", taskWrk.getBarcode());
+ hashMap.put("reportTime", format.format(new Date()));
+
+ NotifyCustomDataDto customDataDto = new NotifyCustomDataDto();
+ customDataDto.setUri(wmsUrl);
+ customDataDto.setPath(taskExecCallback);
+ customDataDto.setData(JSON.toJSONString(hashMap));
+ boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto);
+ if(notifyResult) {
+ taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//浠诲姟娲惧彂
+ taskWrkService.updateById(taskWrk);
}
} catch (Exception e) {
log.error("璇锋眰鍏ュ簱璋冪敤鎺ュ彛澶辫触");
@@ -315,7 +324,8 @@
} else {
staProtocol = staProtocol.clone();
}
- if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) {
+
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) {
// 鏌ヨ宸ヤ綔妗�
TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnSlave.getId(), staDesc.getStnNo().toString());
if (taskWrk == null) {
@@ -323,7 +333,7 @@
}
log.info("涓嬪彂杈撻�佺嚎浠诲姟锛歵askWrk:" + JSON.toJSONString(taskWrk));
// R r = siteController.siteDetlUpdate(Integer.valueOf(taskWrk.getTargetPoint()), taskWrk.getWrkNo().shortValue(), (short) 0, "Y", false, false);
- staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
+ staProtocol.setWorkNo(taskWrk.getWrkNo());
staProtocol.setStaNo(staDesc.getStnNo().shortValue());
boolean offer = false;
try {
@@ -424,6 +434,7 @@
log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
continue;
}
+
if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
&& staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
flag = true;
@@ -547,8 +558,8 @@
}
// 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
- if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
- && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
+ if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
+ ) {
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
// 鍫嗗灈鏈烘帶鍒惰繃婊�
@@ -597,12 +608,17 @@
}
//涓婃姤-鍑哄簱浠诲姟寮�濮嬫椂锛學CS鍥炶皟WMS
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:ss:mm");
HashMap<String, Object> hashMap = new HashMap<>();
- hashMap.put("TaskNo", taskWrk.getTaskNo());
+ hashMap.put("taskNo", taskWrk.getTaskNo());
+ hashMap.put("status", TaskStatusType.DISTRIBUTE.id);
+ hashMap.put("ioType", 2);
+ hashMap.put("barcode", taskWrk.getBarcode());
+ hashMap.put("reportTime", format.format(new Date()));
NotifyCustomDataDto customDataDto = new NotifyCustomDataDto();
customDataDto.setUri(wmsUrl);
- customDataDto.setPath(taskStatusFeedbackPath);
+ customDataDto.setPath(taskExecCallback);
customDataDto.setData(JSON.toJSONString(hashMap));
boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto);
if(notifyResult) {
@@ -690,7 +706,7 @@
response = new HttpHandler.Builder()
// .setHeaders(headParam)
.setUri(wmsUrl)
- .setPath(taskStatusFeedbackPath)
+ .setPath(taskExecCallback)
.setJson(JSON.toJSONString(headParam))
.build()
.doPost();
@@ -706,7 +722,7 @@
// throw new CoolException("wcs娲惧彂绉诲簱搴撲换鍔′笂鎶ms澶辫触");
}finally {
apiLogService.save("wcs娲惧彂绉诲簱浠诲姟涓婃姤wms"
- , wmsUrl + taskStatusFeedbackPath
+ , wmsUrl + taskExecCallback
, null
, "127.0.0.1"
, JSON.toJSONString(headParam)
@@ -800,42 +816,13 @@
if (taskWrk.getIoType() == 1 && taskWrk.getWrkSts() == 3) {
taskWrk.setWrkSts(4);//鍏ュ簱瀹屾垚
taskWrk.setStatus(5);//瀹岀粨
-
- //鏇存柊搴撲綅鐘舵��
- LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
- locMast.setLocSts("F");//F.鍦ㄥ簱
- locMast.setBarcode(taskWrk.getBarcode());//鎵樼洏鐮�
- locMast.setModiTime(new Date());
- locMast.setModiUser(9999L);
- locMastService.updateById(locMast);
} else if (taskWrk.getIoType() == 2 && taskWrk.getWrkSts() == 12) {
taskWrk.setWrkSts(13);//鍑哄簱瀹屾垚
taskWrk.setStatus(5);//瀹岀粨
- //鏇存柊搴撲綅鐘舵��
- LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
- locMast.setLocSts("O");//O.绌哄簱浣�
- locMast.setBarcode("");//鎵樼洏鐮�
- locMast.setModiTime(new Date());
- locMast.setModiUser(9999L);
- locMastService.updateById(locMast);
} else if (taskWrk.getIoType() == 3 && taskWrk.getWrkSts() == 12) {
taskWrk.setWrkSts(4);//鍏ュ簱瀹屾垚
taskWrk.setStatus(5);//瀹岀粨
- //鏇存柊搴撲綅鐘舵��
- LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
- locMast.setLocSts("F");//F.鍦ㄥ簱
- locMast.setBarcode(taskWrk.getBarcode());//鎵樼洏鐮�
- locMast.setModiTime(new Date());
- locMast.setModiUser(9999L);
- locMastService.updateById(locMast);
-
- LocMast locMast1 = locMastService.selectByLocNo(taskWrk.getStartPoint());
- locMast1.setLocSts("O");//O.绌哄簱浣�
- locMast1.setBarcode("");//鎵樼洏鐮�
- locMast1.setModiTime(new Date());
- locMast1.setModiUser(9999L);
- locMastService.updateById(locMast1);
}
taskWrkService.updateById(taskWrk);
}
--
Gitblit v1.9.1