From b1ab4be395a104f6e1bb25249e0b93c520080053 Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期一, 01 十二月 2025 13:51:37 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 255 +++++++++++++++++++++++++++++++++++++--------------
1 files changed, 185 insertions(+), 70 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 7e40f99..a8300f7 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -14,13 +14,17 @@
import com.zy.asrs.entity.result.StockVo;
import com.zy.asrs.mapper.TagMapper;
import com.zy.asrs.service.*;
+import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.utils.MatUtils;
import com.zy.asrs.utils.OrderInAndOutUtil;
import com.zy.asrs.utils.Utils;
+import com.zy.common.constant.AgvConstant;
+import com.zy.common.constant.ArmConstant;
import com.zy.common.model.DetlDto;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
import com.zy.common.utils.NodeUtils;
+import com.zy.erp.kingdee.utils.PostMesDataUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -68,6 +72,8 @@
private LocOwnerService locOwnerService;
@Autowired
private CommonService commonService;
+ @Autowired
+ private LocMastServiceImpl locMastService;
@Override
@Transactional
@@ -661,7 +667,8 @@
.eq("status", 1)
);
if (Cools.isEmpty(basArm)){
- throw new CoolException("鏈烘鑷傞厤缃紓甯革紝鏌ヨ涓嶅埌鏈烘鑷傛暟鎹紒锛侊紒"+ JSON.toJSONString(param));
+ return;
+// throw new CoolException("鏈烘鑷傞厤缃紓甯革紝鏌ヨ涓嶅埌鏈烘鑷傛暟鎹紒锛侊紒"+ JSON.toJSONString(param));
}
try{
@@ -700,7 +707,8 @@
.eq("status", 1)
);
if (Cools.isEmpty(basArmMast)){
- throw new CoolException("鏈煡璇㈠埌鐩稿叧鏈烘鑷傛媶鐮佸灈浠诲姟锛侊紒锛�"+ JSON.toJSONString(param));
+ return;
+// throw new CoolException("鏈煡璇㈠埌鐩稿叧鏈烘鑷傛媶鐮佸灈浠诲姟锛侊紒锛�"+ JSON.toJSONString(param));
}
if (Integer.parseInt(param.getPick_num()) !=1){
basArmMast.setStatus(9);
@@ -731,7 +739,8 @@
if (Cools.isEmpty(basArmMast)){
throw new CoolException("鏈煡璇㈠埌鐩稿叧鏈烘鑷傛媶鐮佸灈浠诲姟锛侊紒锛�"+ JSON.toJSONString(param));
}
- basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),2,3);
+ basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),basArmMast.getStaNo(),1,3);
+ basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),basArmMast.getStaNo(),2,3);
}
@Override
@@ -752,7 +761,7 @@
.eq("status", 5)
);
if (!Cools.isEmpty(basArmMast)){
- basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(), 5,6);
+ basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),basArmMast.getStaNo(), 5,6);
}
}
@@ -790,7 +799,6 @@
if (param == null) {
throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
}
- Integer devpId = 1;
// 鍒涘缓瀵硅薄锛堟瀯閫犲嚱鏁颁腑宸茬敓鎴� timestamp锛�
BasAgvMast basAgvMast = new BasAgvMast();
// 鐢熸垚 WMS 浠诲姟鍙凤紙濡傛棤澶栭儴浼犲叆锛屽彲浠ヤ娇鐢ㄩ洩鑺盜D 鎴栬嚜澧烇級
@@ -800,46 +808,78 @@
basAgvMast.setStaNo(param.getStaNo());
basAgvMast.setSourceLocNo(param.getSourceLocNo());
basAgvMast.setLocNo(param.getLocNo());
+ String locNo = null;
+ String staNo = null;
// 榛樿鍊�
basAgvMast.setPriority(1L); // 榛樿浼樺厛绾�
basAgvMast.setStatus(0); // 鍒濆鐘舵��
basAgvMast.setAppeTime(new Date()); // 娣诲姞鏃堕棿
basAgvMast.setModiTime(new Date()); // 淇敼鏃堕棿
basAgvMast.setIoType(param.getIoType());// 浠诲姟绫诲瀷
- basAgvMast.setDevpId(devpId);
-
+ basAgvMast.setFloorNo(param.getFloorNo()); //妤煎眰
+ switch (basAgvMast.getIoType()){
+ // AGV搴撲綅==銆嬭緭閫佺嚎绔欑偣 0
+ // AGV搴撲綅==銆婣GV搴撲綅 1
+ // 杈撻�佺嚎绔欑偣==銆婣GV搴撲綅 2
+ // 杈撻�佺嚎绔欑偣==銆嬭緭閫佺嚎绔欑偣 3
+ case 0:
+ case 1:
+ locNo = param.getSourceLocNo();
+ break;
+ case 2:
+ case 3:
+ staNo = param.getSourceStaNo().toString();
+ break;
+ }
// 鎻掑叆鏁版嵁搴�
basAgvMastService.insert(basAgvMast);
-
- return true;
+ bindCtnrAndBinParam bindParam = new bindCtnrAndBinParam();
+ bindParam.setBarcode(basAgvMast.getTimestamp().toString());
+ bindParam.setIndBind("1");
+ bindParam.setFloorNo(basAgvMast.getFloorNo());
+ bindParam.setLocNo(locNo);
+ bindParam.setStaNo(staNo);
+ if(bindCtnrAndBin(bindParam)){
+ return true;
+ }else{
+ throw new CoolException("鏈兘缁戝畾");
+ }
}
@Override
@Transactional
- public List<AgvLocListDetlParam> getAgvLocList(AgvLocListParam param){
-
- if (param == null || Cools.isEmpty(param.getLocNoList())) {
- throw new CoolException("搴撲綅鍙蜂笉鑳戒负绌�");
- }
-
- List<String> locNos = param.getLocNoList();
-
+ public List<AgvLocListDetlParam> getAgvLocList(AgvLocListParam param) {
List<AgvLocListDetlParam> result = new ArrayList<>();
- for (String locNo : locNos) {
+ if (Cools.isEmpty(param.getLocNo())) {
+ EntityWrapper<LocMast> locMastEntityWrapper = new EntityWrapper<>();
+ locMastEntityWrapper.setSqlSelect("TOP 5 loc_no as locNo,loc_sts as locSts")
+ .where("loc_sts in ('F','D','S','R') and whs_type = '5'");
+ List<LocMast> locMasts = locMastService.selectList(locMastEntityWrapper);
- // 鏌ヨ璇ュ簱浣� detail
- List<LocDetl> detlList = locDetlService.selectList(
- new EntityWrapper<LocDetl>().eq("loc_no", locNo)
+ for (LocMast locMast : locMasts) {
+ result.add(buildAgvLocListDetlParam(locMast.getLocNo(), locMast.getLocSts$()));
+ }
+ } else {
+ LocMast locMast = locMastService.selectOne(
+ new EntityWrapper<LocMast>().eq("loc_no", param.getLocNo())
);
-
- AgvLocListDetlParam dto = new AgvLocListDetlParam();
- dto.setLocNo(locNo);
- dto.setAgvDetlList(detlList);
- result.add(dto);
+ result.add(buildAgvLocListDetlParam(param.getLocNo(), locMast.getLocSts$()));
}
-
+
return result;
+ }
+
+ private AgvLocListDetlParam buildAgvLocListDetlParam(String locNo, String locSts) {
+ List<LocDetl> detlList = locDetlService.selectList(
+ new EntityWrapper<LocDetl>().eq("loc_no", locNo)
+ );
+
+ AgvLocListDetlParam dto = new AgvLocListDetlParam();
+ dto.setLocNo(locNo);
+ dto.setLocSys(locSts);
+ dto.setAgvDetlList(detlList);
+ return dto;
}
@@ -850,59 +890,134 @@
if (param == null) {
throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
}
- AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam();
- BasAgvLocNoService basAgvLocNoService = SpringUtils.getBean(BasAgvLocNoService.class);
- BasAgvLocNo basAgvLocNoSou = basAgvLocNoService.selectOne(new EntityWrapper<BasAgvLocNo>().eq("loc_no", param.getLocNo()));
- BasAgvLocNo basAgvLocNoEnd = basAgvLocNoService.selectOne(new EntityWrapper<BasAgvLocNo>().eq("sta_no", param.getStaNo()));
- agvBindCtnrAndBinParam.setReqCode(String.valueOf(System.currentTimeMillis()));
- agvBindCtnrAndBinParam.setCtnrCode(param.getBarcode());
- agvBindCtnrAndBinParam.setCtnrTyp("1");
- agvBindCtnrAndBinParam.setPositionCode(
- basAgvLocNoSou != null && basAgvLocNoSou.getAgvLocNo() != null
- ? basAgvLocNoSou.getAgvLocNo()
- : ""
- );
- agvBindCtnrAndBinParam.setStgBinCode(
- basAgvLocNoEnd != null && basAgvLocNoEnd.getAgvLocNo() != null
- ? basAgvLocNoEnd.getAgvLocNo()
- : ""
- );
- agvBindCtnrAndBinParam.setIndBind(param.getIndBind());
- try {
- String URL = "http://10.10.10.200:8181/rcms/services/rest/hikRpcService"; // AGV鎺ュ彛鍦板潃
- String mesPath = "bindCtnrAndBin"; // 鎺ュ彛璺緞
- String response = "";
- boolean success = false;
-
+ if (param.getFloorNo()==1){
+ AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam();
+ BasAgvLocNoService basAgvLocNoService = SpringUtils.getBean(BasAgvLocNoService.class);
+ BasAgvLocNo basAgvLocNoSou = basAgvLocNoService.selectOne(new EntityWrapper<BasAgvLocNo>().eq("loc_no", param.getLocNo()));
+ BasAgvLocNo basAgvLocNoEnd = basAgvLocNoService.selectOne(new EntityWrapper<BasAgvLocNo>().eq("sta_no", param.getStaNo()));
+ agvBindCtnrAndBinParam.setReqCode(String.valueOf(System.currentTimeMillis()));
+ agvBindCtnrAndBinParam.setCtnrCode(param.getBarcode());
+ agvBindCtnrAndBinParam.setCtnrTyp("1");
+ if(basAgvLocNoEnd != null && basAgvLocNoEnd.getAgvLocNo() != null){
+ agvBindCtnrAndBinParam.setStgBinCode(basAgvLocNoEnd.getAgvLocNo());
+ }
+ if(basAgvLocNoSou != null && basAgvLocNoSou.getAgvLocNo() != null){
+ agvBindCtnrAndBinParam.setStgBinCode(basAgvLocNoSou.getAgvLocNo());
+ }
+ agvBindCtnrAndBinParam.setIndBind(param.getIndBind());
try {
- log.info("AGV缁戝畾瀹瑰櫒鎺ュ彛璇锋眰鍙傛暟: {}", JSON.toJSONString(agvBindCtnrAndBinParam));
+ String URL = AgvConstant.AGV_URL+"/"+AgvConstant.AGV_hikRpcService; // AGV鎺ュ彛鍦板潃
+ String mesPath = AgvConstant.getAGVADAPTOR(param.getFloorNo()); // 鎺ュ彛璺緞
+ String response = "";
+ boolean success = false;
+ try {
+ log.info("AGV缁戝畾瀹瑰櫒鎺ュ彛璇锋眰鍙傛暟: {}", JSON.toJSONString(agvBindCtnrAndBinParam));
- response = new HttpHandler.Builder()
- .setUri(URL)
- .setPath(mesPath)
- .setJson(JSON.toJSONString(agvBindCtnrAndBinParam))
- .build()
- .doPost();
+ response = new HttpHandler.Builder()
+ .setUri(URL)
+ .setPath(mesPath)
+ .setJson(JSON.toJSONString(agvBindCtnrAndBinParam))
+ .build()
+ .doPost();
- log.info("AGV缁戝畾瀹瑰櫒鎺ュ彛鍝嶅簲: {}", response);
- JSONObject jsonObject = JSON.parseObject(response);
+ log.info("AGV缁戝畾瀹瑰櫒鎺ュ彛鍝嶅簲: {}", response);
+ JSONObject jsonObject = JSON.parseObject(response);
- if (jsonObject.getInteger("code") != null && jsonObject.getInteger("code").equals(0)) {
- success = true;
- } else {
- log.error("AGV缁戝畾瀹瑰櫒澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", URL + "/" + mesPath, JSON.toJSONString(agvBindCtnrAndBinParam), response);
- throw new CoolException("AGV缁戝畾瀹瑰櫒澶辫触: " + jsonObject.getString("msg"));
+ if (jsonObject.getInteger("code") != null && jsonObject.getInteger("code").equals(0)) {
+ success = true;
+ } else {
+ log.error("AGV缁戝畾瀹瑰櫒澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", URL + "/" + mesPath, JSON.toJSONString(agvBindCtnrAndBinParam), response);
+ throw new CoolException("AGV缁戝畾瀹瑰櫒澶辫触: " + jsonObject.getString("msg"));
+ }
+ } catch (Exception e) {
+ log.error("AGV缁戝畾瀹瑰櫒鎺ュ彛璋冪敤寮傚父锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", URL + "/" + mesPath, JSON.toJSONString(agvBindCtnrAndBinParam), response, e);
+ throw new CoolException("AGV缁戝畾瀹瑰櫒鎺ュ彛璋冪敤寮傚父: " + e.getMessage());
}
} catch (Exception e) {
- log.error("AGV缁戝畾瀹瑰櫒鎺ュ彛璋冪敤寮傚父锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", URL + "/" + mesPath, JSON.toJSONString(agvBindCtnrAndBinParam), response, e);
- throw new CoolException("AGV缁戝畾瀹瑰櫒鎺ュ彛璋冪敤寮傚父: " + e.getMessage());
+ throw new CoolException(e.getMessage());
}
- } catch (Exception e) {
- throw new CoolException(e.getMessage());
- }
+ } else {}
return true;
}
+ @Override
+ @Transactional
+ public boolean agvApplicationPassedTheGrating(ArmAgvGratingParam arm) {
+ ReturnT<String> result = new PostMesDataUtils().postMesDataArmGrating("鍏夋爡璇锋眰涓嬪彂锛�", ArmConstant.getArmUrl(arm.getArmNo()), ArmConstant.ARM_ADAPTOR_GRATING_AGVENTER, arm);
+ if (result.getCode()==200){
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ @Transactional
+ public boolean agvApplicationPassedTheGrating(AgvGoTheArnParam param) {
+ String URL = "http://10.10.10.200:8181/rcms/services/rest/hikRpcService"; // AGV鎺ュ彛鍦板潃
+ String AGVPath = "continueTask"; // 鎺ュ彛璺緞
+ AgvGoParam agvGoParam = new AgvGoParam();
+ agvGoParam.setCode("0");
+ agvGoParam.setMessage("缁х画鎵ц");
+ agvGoParam.setReqCode(param.getReqCode());
+ ReturnT<String> result = new PostMesDataUtils().postMesDataArmGrating("鍏夋爡涓嬪彂鍚庣户缁换鍔★細", URL, AGVPath, agvGoParam);
+ if (result.getCode()==200){
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ @Transactional
+ public boolean agvBindAndBin(String taskNo) {
+ String URL = "http://10.10.10.200:8181/"; // AGV鎺ュ彛鍦板潃
+ String AGVPath = "rcms/services/rest/hikRpcService/bindCtnrAndBin"; // 鎺ュ彛璺緞
+ BasAgvMast basAgvMast = basAgvMastService.selectOne(new EntityWrapper<BasAgvMast>().eq("task_no",taskNo));
+ if (Cools.isEmpty(basAgvMast)){
+ return false;
+ }
+ if (basAgvMast.getFloorNo()==1){
+ BasAgvLocNoService basAgvLocNoService = SpringUtils.getBean(BasAgvLocNoService.class);
+ BasAgvLocNo basAgvLocNoEnd = basAgvLocNoService.selectOne(
+ new EntityWrapper<BasAgvLocNo>().eq("sta_no", basAgvMast.getStaNo())
+ );
+ if (Cools.isEmpty(basAgvMast)){
+ return false;
+ }
+ AgvBindCtnrAndBinParam agvBindCtnrAndBinParam = new AgvBindCtnrAndBinParam();
+ agvBindCtnrAndBinParam.setReqCode(basAgvMast.getTaskNo() + "-" + basAgvMast.getTimestamp());
+ agvBindCtnrAndBinParam.setCtnrCode(basAgvMast.getTimestamp().toString());
+ agvBindCtnrAndBinParam.setCtnrTyp("1");
+ agvBindCtnrAndBinParam.setStgBinCode(basAgvLocNoEnd.getAgvLocNo());
+ agvBindCtnrAndBinParam.setIndBind("0");
+ ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV瀹瑰櫒缁戝畾瑙g粦", URL,AGVPath, agvBindCtnrAndBinParam);
+ if (resultBind.getCode()!=200){
+ basAgvMast.setStatus(4);
+ basAgvMastService.updateById(basAgvMast);
+ return true;
+ }
+ return false;
+ }else {
+ if (basAgvMast.getIoType()==0 && basAgvMast.getStaNo()==2034){
+ AgvBindCtnrAndBinTwoParam agvBindCtnrAndBinTwoParam = new AgvBindCtnrAndBinTwoParam();
+ agvBindCtnrAndBinTwoParam.setReqCode(basAgvMast.getTaskNo() + "-" + basAgvMast.getTimestamp());
+ agvBindCtnrAndBinTwoParam.setPodCode(basAgvMast.getBarcode());
+ agvBindCtnrAndBinTwoParam.setPositionCode(basAgvMast.getStaNo().toString());
+ agvBindCtnrAndBinTwoParam.setIndBind("0");;
+ ReturnT<String> resultBind = new PostMesDataUtils().postMesDataArmGrating("AGV瀹瑰櫒缁戝畾瑙g粦",
+ AgvConstant.AGV_URL+"/"+AgvConstant.AGV_hikRpcService,AgvConstant.getAGVADAPTOR(2), agvBindCtnrAndBinTwoParam);
+ if (resultBind.getCode()!=200){
+ basAgvMast.setStatus(4);
+ basAgvMastService.updateById(basAgvMast);
+ return true;
+ }
+ }
+ }
+
+ return false;
+
+ }
+
+
}
--
Gitblit v1.9.1