From 78b8f5141aa11bfa0f94361407ed43362c8852ce Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 19 一月 2026 17:28:55 +0800
Subject: [PATCH] WMS功能完善
---
src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java | 174 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 161 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
index 67cab6e..f8ac53d 100644
--- a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
@@ -10,9 +10,11 @@
import com.zy.asrs.entity.mes.TransParent;
import com.zy.asrs.entity.rcs.*;
import com.zy.asrs.enums.RcsRetMethodEnum;
+import com.zy.asrs.mapper.BasDevpMapper;
import com.zy.asrs.mapper.BlockStationMapper;
import com.zy.asrs.mapper.BlockTaskMapper;
import com.zy.asrs.service.*;
+import com.zy.common.utils.HttpHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -43,6 +45,10 @@
private String HX_URL;
@Value("${mes.defaultUserId}")
public long defaultUserId;
+
+ // wcs鍦板潃
+ @Value("${wcs.url}")
+ private String WCS_URL;
@Resource
@@ -222,17 +228,17 @@
String url = rcsFactory == 2 ? HX_URL : HIK_URL + "api/robot/controller/task/submit";
String response = "";
try {
+ // 妯℃嫙杩斿洖
+// rcsReturn.setCode("SUCCESS");
+// success = true;
+// log.info("鍛煎彨agv鎼繍鎴愬姛锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url, JSON.toJSONString(rcsTaskSubmit), response);
+
+
response = sendPost(url, JSONObject.toJSONString(rcsTaskSubmit));
if (!StringUtils.isEmpty(response) && response.contains("code")) {
rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
if ("SUCCESS".equals(rcsReturn.getCode())) {
- // 妯℃嫙杩斿洖
-// rcsReturn.setCode("SUCCESS");
-// JSONObject jsonObject = new JSONObject();
-// jsonObject.put("robotTaskCode",4);
-// rcsReturn.setData(jsonObject);
success = true;
-
log.info("鍛煎彨agv鎼繍鎴愬姛锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url, JSON.toJSONString(rcsTaskSubmit), response);
} else {
log.error("鍛煎彨agv鎼繍澶辫触锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url, JSON.toJSONString(rcsTaskSubmit), response);
@@ -334,6 +340,9 @@
return 0;
}
+ @Resource
+ private BasDevpMapper basDevpMapper;
+
/**
* 2.2.1浠诲姟鎵ц鍥為
* 鍘傚锛氭捣閲忋�佸崕鏅�
@@ -382,6 +391,100 @@
// JSONObject taskMemo = JSONObject.parseObject(task.getMemo());
// mesService.outFeedbackByTuo(taskMemo.getString("OrderNo"), task);
} break;
+ case APPLY_PUT: { // 鏀捐揣鐢宠
+ String staNo = task.getStaNo();
+ BasDevp basDevp = basDevpMapper.selectById(staNo);
+ if(basDevp.getAutoing().equals("Y") && basDevp.getLoading().equals("N") && basDevp.getWrkNo() == 0) {
+
+ // 205 瑙﹀彂鏉$爜鎵弿
+ if (staNo.equals("205")) {
+ Map<String,Object> params = new HashMap<>();
+ params.put("siteId",staNo);
+ String response = new HttpHandler.Builder()
+ .setUri(WCS_URL)
+ .setPath("/site/startScan")
+ .setParams(params)
+ .build()
+ .doPost();
+ log.info("{}鏀捐揣鐢宠缁檞cs涓嬪彂鏉$爜鎵弿鍘熷杩斿洖:{}",staNo,response);
+ }
+
+ // 婊¤冻鏀捐揣鏉′欢锛岃皟鐢≧CS浠诲姟缁х画鎵ц
+ RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
+ rcsTaskContinue.setRobotTaskCode(robotTaskCode);
+ rcsTaskContinue.setTriggerType("TASK");
+ rcsTaskContinue.setTriggerCode(robotTaskCode);
+ int success = continueTask(rcsTaskContinue, 1);
+ if(success != 1) {
+ rcsReturn.setCode("Err_RobotCodeNotMatch");
+ rcsReturn.setMessage("缁х画鎵ц澶辫触");
+ JSONObject data = new JSONObject();
+ data.put("robotTaskCode", robotTaskCode);
+ rcsReturn.setData(data);
+ return rcsReturn;
+ }
+ }else {
+ log.warn("绔欑偣锛歿}锛屼笉婊¤冻鏀捐揣鏉′欢锛岃嚜鍔細{}锛屾棤鐗╋細{}锛屼换鍔″彿锛歿}",staNo,basDevp.getAutoing(),basDevp.getLoading(),basDevp.getWrkNo());
+ rcsReturn.setCode("Err_RobotCodeNotMatch");
+ rcsReturn.setMessage("绔欑偣涓嶆弧瓒虫斁璐ф潯浠�");
+ JSONObject data = new JSONObject();
+ data.put("robotTaskCode", robotTaskCode);
+ rcsReturn.setData(data);
+ return rcsReturn;
+ }
+ } break;
+ case APPLY_PICK: { // 鍙栬揣鐢宠
+ String staNo = task.getSourceStaNo();
+ BasDevp basDevp = basDevpMapper.selectById(staNo);
+ if(basDevp.getAutoing().equals("Y") && basDevp.getLoading().equals("Y")
+ && basDevp.getWrkNo() > 0 && basDevp.getWrkNo() <= 9990) {
+ // 婊¤冻鏀捐揣鏉′欢锛岃皟鐢≧CS浠诲姟缁х画鎵ц
+ RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
+ rcsTaskContinue.setRobotTaskCode(robotTaskCode);
+ rcsTaskContinue.setTriggerType("TASK");
+ rcsTaskContinue.setTriggerCode(robotTaskCode);
+ int success = continueTask(rcsTaskContinue, 1);
+ if(success != 1) {
+ rcsReturn.setCode("Err_RobotCodeNotMatch");
+ rcsReturn.setMessage("缁х画鎵ц澶辫触");
+ JSONObject data = new JSONObject();
+ data.put("robotTaskCode", robotTaskCode);
+ rcsReturn.setData(data);
+ return rcsReturn;
+ }
+ }else {
+ log.warn("绔欑偣锛歿}锛屼笉婊¤冻鍙栬揣鏉′欢锛岃嚜鍔細{}锛屾棤鐗╋細{}锛屼换鍔″彿锛歿}",staNo,basDevp.getAutoing(),basDevp.getLoading(),basDevp.getWrkNo());
+ rcsReturn.setCode("Err_RobotCodeNotMatch");
+ rcsReturn.setMessage("绔欑偣涓嶆弧瓒虫斁璐ф潯浠�");
+ JSONObject data = new JSONObject();
+ data.put("robotTaskCode", robotTaskCode);
+ rcsReturn.setData(data);
+ return rcsReturn;
+ }
+ } break;
+ case PICK_COMPLETE: { // 鍙栬揣瀹屾垚
+ String staNo = task.getSourceStaNo();
+
+ // 娓呴櫎杈撻�佺嚎浠诲姟鍙�
+ Map<String,Object> params = new HashMap<>();
+ params.put("siteId",staNo);
+ params.put("workNo",0);
+ params.put("staNo", 0);
+ params.put("pakMk","Y");
+ String response = new HttpHandler.Builder()
+ .setUri(WCS_URL)
+ .setPath("/site/detl/update")
+ .setParams(params)
+ .build()
+ .doPost();
+ log.info("agv鍙嶉pickComplete缁檞cs鍙戝懡浠�:{},杩斿洖锛歿}",JSONObject.toJSONString(params),response);
+ // agv缁х画鎵ц
+// TransInOutStationAllow inOutStationAllow = new TransInOutStationAllow();
+// inOutStationAllow.setTaskno(robotTaskCode);
+// inOutStationAllow.setStatus("Y");
+// inOutStationAllow.setAgvCode("agv001");
+// mesService.allowOutStation(inOutStationAllow);
+ } break;
case TASK_END: {
// 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
task.setWrkSts(304L); // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
@@ -389,7 +492,38 @@
task.setModiUser(defaultUserId);
taskService.updateById(task);
// 浠诲姟瀹屾垚
- mesService.reporterTask(rcsReporterTask);
+// mesService.reporterTask(rcsReporterTask);
+
+ // 鍏ョ珛搴撴椂锛屽尯鍒嗘槸绌烘墭杩樻槸婊℃墭锛岀粰杈撻�佺嚎涓嬪彂鍛戒护9990 绌猴紝9995婊�
+ // 渚ч潰205 9996绌猴紝9997婊�
+ String transType = memo.getString("TransType");
+ if("02".equals(transType) || "04".equals(transType)) {
+ int wrkNo = 9995;
+ if("02".equals(transType)) {
+ TaskDetl taskDetl = taskDetlService.selectOne(new EntityWrapper<TaskDetl>().eq("wrk_no", task.getWrkNo()));
+ if (taskDetl != null) {
+ if("tuopan".equals(taskDetl.getMatnr())){
+ wrkNo = 9990;
+ }
+ }
+ }
+ int staNo = Integer.parseInt(task.getStaNo());
+ if(staNo == 205) { // 渚ч潰浠诲姟鍙疯浆鎹�
+ wrkNo = wrkNo == 9990 ? 9996 : 9997;
+ }
+ Map<String,Object> params = new HashMap<>();
+ params.put("siteId",staNo);
+ params.put("workNo",wrkNo);
+ params.put("staNo", staNo == 205 ? 205 : (staNo-1) );
+ params.put("pakMk","Y");
+ String response = new HttpHandler.Builder()
+ .setUri(WCS_URL)
+ .setPath("/site/detl/update")
+ .setParams(params)
+ .build()
+ .doPost();
+ log.info("agv鍙嶉end缁檞cs鍙戝懡浠�:{},杩斿洖锛歿}",JSONObject.toJSONString(params),response);
+ }
// EntityWrapper<TaskDetl> wapper2 = new EntityWrapper<>();
// wapper2.eq("wrk_no", task.getWrkNo())
@@ -428,11 +562,11 @@
mesService.outStation(apply);
// agv缁х画鎵ц
- TransInOutStationAllow inOutStationAllow = new TransInOutStationAllow();
- inOutStationAllow.setTaskno(robotTaskCode);
- inOutStationAllow.setStatus("Y");
- inOutStationAllow.setAgvCode("agv001");
- mesService.allowOutStation(inOutStationAllow);
+// TransInOutStationAllow inOutStationAllow = new TransInOutStationAllow();
+// inOutStationAllow.setTaskno(robotTaskCode);
+// inOutStationAllow.setStatus("Y");
+// inOutStationAllow.setAgvCode("agv001");
+// mesService.allowOutStation(inOutStationAllow);
}
} break;
case ARRIVE_ON_STATION: {
@@ -444,7 +578,7 @@
TransArrivalStation arrivalStation = new TransArrivalStation();
arrivalStation.setTaskno(robotTaskCode);
arrivalStation.setTaskname(memo.getString("taskName"));
- arrivalStation.setTuoPanId(taskDetl == null ? "":taskDetl.getZpallet()); // memo.getString("TuoPanId")
+ arrivalStation.setTuoPanId(task.getBarcode()); // memo.getString("TuoPanId")
arrivalStation.setProductLineId(memo.getString("ProductLineId"));
String transType = memo.getString("TransType");
arrivalStation.setDaotype(transType);
@@ -705,5 +839,19 @@
return result.toString();
}
+ @Override
+ public RcsReturn siteBind(SiteBind siteBind) {
+ RcsReturn rcsReturn = new RcsReturn();
+ String url = HIK_URL + "api/robot/controller/site/bind";
+ String response = sendPost(url, JSONObject.toJSONString(siteBind));
+ if (!StringUtils.isEmpty(response) && response.contains("code")){
+ rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
+ } else {
+ rcsReturn.setCode("ERROR");
+ rcsReturn.setMessage("璋冪敤缁戝畾鎺ュ彛RCS鏃犺繑鍥�");
+ }
+ return rcsReturn;
+ }
+
// endregion
}
--
Gitblit v1.9.1