From ab14726215678ac69adfeafbd845ebc5b0776ea2 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期二, 14 一月 2025 14:56:41 +0800
Subject: [PATCH] 优化订单同步逻辑及库位查找
---
src/main/java/com/zy/asrs/controller/AgvOpenController.java | 285 +++++++++++++++++++++++++-------------------------------
1 files changed, 129 insertions(+), 156 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/AgvOpenController.java b/src/main/java/com/zy/asrs/controller/AgvOpenController.java
index 4aa441f..66ecba6 100644
--- a/src/main/java/com/zy/asrs/controller/AgvOpenController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvOpenController.java
@@ -6,7 +6,10 @@
import com.core.annotations.AppAuth;
import com.core.common.Cools;
import com.core.common.R;
+import com.zy.asrs.entity.AgvBasDevp;
+import com.zy.asrs.entity.AgvLocMast;
import com.zy.asrs.entity.AgvWrkMast;
+import com.zy.asrs.entity.WrkMastExecute;
import com.zy.asrs.entity.param.AgvTaskCallBackParam;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.AppAuthUtil;
@@ -25,7 +28,9 @@
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.util.Date;
import java.util.EnumSet;
+import java.util.Map;
/**
* 涓婃姤浜嬩欢绫诲瀷锛坋ventType锛夛細
@@ -52,236 +57,204 @@
AgvWrkMastService agvWrkMastService;
@Autowired
ApiLogService apiLogService;
+ @Autowired
+ private WrkMastExecuteService wrkMastExecuteService;
+ @Autowired
+ private AgvBasDevpService agvBasDevpService;
@PostMapping("/task/event/status")
@AppAuth(memo = "ESS浠诲姟鍥炶皟")
public R taskEventStaus(@RequestBody AgvTaskCallBackParam param, HttpServletRequest request){
- apiLogService.save(
- "ESS浠诲姟鍥炶皟",
- "/tzskwms/agv/task/event/status",
- null,
- null,
- JSON.toJSONString(JSONObject.toJSONString(param)),
- null,
- true
- );
+
//save api log (appkey 鍚庣画娣诲姞)
+ R r = new R(0, "鎴愬姛");
+
AppAuthUtil.auth("",param, request);
-
- AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", param.getTaskCode()));
+ int wrkNo = Integer.parseInt(param.getTaskCode());
+ if(wrkNo < 0){
+ wrkNo = -wrkNo;
+ }
+ AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("wrk_no", wrkNo));
if(Cools.isEmpty(agvWrkMast)){
- return R.error("浠诲姟缂栧彿閿欒");
+ agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode",param.getPodCode()));
+ if (Cools.isEmpty(agvWrkMast)){
+ r = R.error("浠诲姟缂栧彿閿欒");
+ logPost(param,JSONObject.toJSONString(r),false);
+ return r;
+ }
}
+ if (agvWrkMast.getIoType().equals(121)){
+ try{
+ if (agvWrkMast.getWrkSts().equals(12L)){
+ WrkMastExecute wrkMastExecute = wrkMastExecuteService.selectOne(new EntityWrapper<WrkMastExecute>().eq("wrk_no", wrkNo));
+ if (Cools.isEmpty(wrkMastExecute) || wrkMastExecute.getWrkSts()!=1){
+ r = R.error("浠诲姟鐘舵�乄rkSts鍙傛暟鏈夎,WrkSts:"+wrkMastExecute.getWrkSts$());
+ logPost(param,"浠诲姟鐘舵�乄rkSts鍙傛暟鏈夎,WrkSts:"+wrkMastExecute.getWrkSts$()+JSONObject.toJSONString(r),false);
+ return r;
+ } else {
+ wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsCode());
+ wrkMastExecuteService.updateById(wrkMastExecute);
+ }
+ }else {
+ r = R.error("浠诲姟寮傚父");
+ logPost(param,JSONObject.toJSONString(r),false);
-// if(!checkParam(param,agvWrkMast)){
-// return R.error("浠诲姟鍙傛暟涓庡伐浣滄。鍙傛暟涓嶇鍚�");
-// }
+ return r;
+ }
+ }catch (Exception e){
+ r = R.error(""+e.getMessage());
+ logPost(param,JSONObject.toJSONString(r),false);
+ return r;
+ }
+ }else {
+ if(agvWrkMast.getWrkSts() >= 205){
+ r = R.error("褰撳墠浠诲姟宸插畬鎴�");
+ logPost(param,JSONObject.toJSONString(r),false);
+ return r;
+ }
- AgvTask agvTask = AgvTask.valueOf(param.getEventType());
- Class<AgvTask> clz = AgvTask.class;
- try {
- Method method = clz.getDeclaredMethod(param.getStatus(), AgvWrkMast.class, AgvTaskCallBackParam.class);
- method.invoke(agvTask,agvWrkMast,param);
- } catch (NoSuchMethodException e) {
- return R.error("浠诲姟鐘舵�乻tatus鍙傛暟鏈夎");
- } catch (InvocationTargetException e) {
- log.error(e.getMessage());
- return R.error();
- } catch (IllegalAccessException e) {
- log.error(e.getMessage());
- return R.error();
+ AgvTask agvTask = AgvTask.valueOf(param.getMethod());
+ Class<AgvTask> clz = AgvTask.class;
+ try {
+ Method method = clz.getDeclaredMethod("success", AgvWrkMast.class, AgvTaskCallBackParam.class);
+ method.invoke(agvTask,agvWrkMast,param);
+ } catch (NoSuchMethodException e) {
+ r = R.error("浠诲姟鐘舵�乻tatus鍙傛暟鏈夎");
+ logPost(param,JSONObject.toJSONString(r),false);
+ return r;
+ } catch (InvocationTargetException e) {
+ log.error(e.getMessage());
+ r = R.error(""+e.getMessage());
+ logPost(param,JSONObject.toJSONString(r),false);
+ return r;
+ } catch (IllegalAccessException e) {
+ log.error(e.getMessage());
+ r = R.error(""+e.getMessage());
+ logPost(param,JSONObject.toJSONString(r),false);
+ return r;
+ }
}
+ logPost(param,JSONObject.toJSONString(r),true);
+ return r;
+ }
+
+ @PostMapping("/conveyor/loadContainerFinish ")
+ @AppAuth(memo = "鍙栬揣鏋跺畬鎴愰�氱煡")
+ public R loadContainerFinish(@RequestBody Map<String,Object> params){
+
return R.ok();
}
- private boolean checkParam(AgvTaskCallBackParam param, AgvWrkMast agvWrkMast){
- if(!agvWrkMast.getLocNo().equals(param.getLocationCode())){
- return false;
- }
- if(!agvWrkMast.getSourceLocNo().equals(param.getStationCode())){
- return false;
- }
- return true;
+ private void logPost( AgvTaskCallBackParam param,String response,boolean success){
+ apiLogService.save(
+ "ESS浠诲姟鍥炶皟",
+ "/phyzwms/agv/task/event/status",
+ null,
+ null,
+ JSON.toJSONString(JSONObject.toJSONString(param)),
+ response,
+ success
+ );
}
-
}
enum AgvTask{
/**
- * 涓婃姤浠诲姟鐘舵��
+ * 涓婃姤浠诲姟瀹屾垚
*/
- task{
+ end{
@Transactional
public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
//淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚
- agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),205);
+ agvWrkMast.setWrkSts(205L);
//鍑哄簱浠诲姟 101.鍑哄簱 || 103.鎷f枡鍑哄簱 || 107.鐩樼偣鍑哄簱
if(agvWrkMast.getIoType() == 101 || agvWrkMast.getIoType() == 103 || agvWrkMast.getIoType() == 107){
//淇敼鍑哄簱绔欑偣鐘舵��
- agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode());
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
}
//鍑哄簱浠诲姟 110.绌烘澘鍑哄簱
if(agvWrkMast.getIoType() == 110){
- agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode());
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+ agvWrkMast.setWrkSts(206L);
}
- }
-
- public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
-
- public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
-
- public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
+ agvWrkMast.setModiTime(new Date());
+ agvWrkMastService.updateById(agvWrkMast);
}
},
/**
- * 涓婃姤浠诲姟鍒嗛厤缁欐満鍣ㄤ汉
+ * 浠诲姟寮�濮�
*/
- task_allocated{
+ start{
@Transactional
public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
-
- public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
-
- public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
-
- public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
+ //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负203.浠诲姟寮�濮�
+ agvWrkMast.setWrkSts(203L);
+ agvWrkMast.setModiTime(new Date());
+ agvWrkMastService.updateById(agvWrkMast);
}
},
/**
- * 涓婃姤鍙栫鐘舵��
+ * 璧板嚭鍌ㄤ綅鐘舵��
*/
- tote_load{
+ outbin{
@Transactional
public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
- //鍏ュ簱浠诲姟 || 鎷f枡鍏ュ簱浠诲姟 ||鐩樼偣鍐嶅叆搴� ||绌烘澘鍏ュ簱
- if(agvWrkMast.getIoType() == 1 || agvWrkMast.getIoType() == 53 || agvWrkMast.getIoType() == 57 || agvWrkMast.getIoType() == 10){
- //淇敼婧愮珯鐐圭姸鎬佷负O.绌猴紝浠ュ強瑙g粦鎵樼洏鏉$爜
- agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","");
+ switch(agvWrkMast.getIoType()) {
+ //鍏ュ簱浠诲姟
+ case 1:
+ // 绌烘澘鍏ュ簱
+ case 10:
+ // 鎷f枡鍏ュ簱浠诲姟
+ case 53:
+ // 鐩樼偣鍐嶅叆搴�
+ case 57:
+ agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",null);
+ break;
}
+ //if(agvWrkMast.getIoType() == 1 || agvWrkMast.getIoType() == 53 || agvWrkMast.getIoType() == 57 || agvWrkMast.getIoType() == 10){
+ // //淇敼婧愮珯鐐圭姸鎬佷负O.绌猴紝浠ュ強瑙g粦鎵樼洏鏉$爜
+ // agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",null);
+ //}
//淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负203.RCS鏀捐揣涓�
- agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),203);
-
-
+ agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),204);
}
- public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
-
- public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
-
- public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
},
/**
* 涓婃姤鏀剧鐘舵��
*/
- tote_unload{
+ cancel{
@Transactional
public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
- //淇敼宸ヤ綔妗g姸鎬佷负204.鏀捐揣瀹屾垚
- agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),204);
- }
- public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
- public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
-
- public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
},
- robot_reach{
+ apply{
@Transactional
public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
-
- public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
-
- public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
-
- public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
- },
- weight{
- @Transactional
- public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
-
- public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
-
- public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
-
- public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
- },
- rfid{
- @Transactional
- public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
-
- public void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
-
- public void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
-
- }
-
- public void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
}
};
//浠诲姟鐘舵�佷负鎴愬姛
public abstract void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param);
- //浠诲姟鐘舵�佷负澶辫触
- public abstract void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param);
- //浠诲姟鐘舵�佷负鍙栨秷
- public abstract void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param);
- //浠诲姟鐘舵�佷负鎸傝捣
- public abstract void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param);
+// //浠诲姟鐘舵�佷负澶辫触
+// public abstract void fail(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param);
+// //浠诲姟鐘舵�佷负鍙栨秷
+// public abstract void cancel(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param);
+// //浠诲姟鐘舵�佷负鎸傝捣
+// public abstract void suspend(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param);
@Setter
AgvBasDevpService agvBasDevpService;
--
Gitblit v1.9.1