From 9e540bc4c5659835f29c0791d5bd21f1558ce115 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期六, 19 十月 2024 13:57:31 +0800
Subject: [PATCH] 出库到底出库口呼叫agv接货
---
src/main/java/com/zy/asrs/task/handler/AgvHandler.java | 138 ++++++++++++++++++++++++++++++++++
src/main/java/com/zy/asrs/task/AgvScheduler.java | 41 ++++++++++
src/main/java/com/zy/asrs/entity/WrkMast.java | 2
src/main/java/com/zy/common/constant/AgvApiConstant.java | 14 +++
4 files changed, 194 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index 83298e9..949cfd6 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -204,7 +204,7 @@
@TableField("exp_time")
private Double expTime;
- @ApiModelProperty(value= "")
+ @ApiModelProperty(value= "鍑哄簱鍛煎彨agv鎺ヨ揣锛�0榛樿锛�1鍛煎彨鎴愬姛")
@TableField("ref_wrkno")
private Double refWrkno;
diff --git a/src/main/java/com/zy/asrs/task/AgvScheduler.java b/src/main/java/com/zy/asrs/task/AgvScheduler.java
new file mode 100644
index 0000000..68cea4c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/AgvScheduler.java
@@ -0,0 +1,41 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.BasDevp;
+import com.zy.asrs.service.BasDevpService;
+import com.zy.asrs.task.handler.AgvHandler;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @author pang.jiabao
+ * @description AGV鐩稿叧瀹氭椂浠诲姟
+ * @createDate 2024/10/19 9:30
+ */
+@Component
+public class AgvScheduler {
+
+ @Resource
+ private BasDevpService basDevpService;
+
+ @Resource
+ private AgvHandler agvHandller;
+
+ // 鍑哄簱鍛煎彨agv鎺ヨ揣
+ // 223鎴�123鏈夊嚭搴撶殑浠诲姟鍒欏懠鍙玜gv鎺ヨ揣
+ @Scheduled(cron = "0/3 * * * * ? ")
+ private void outboundCallAgvScheduler() {
+
+ // 鑾峰彇涓や釜绔欑偣鏈夌墿锛屾湁宸ヤ綔鍙�
+ List<BasDevp> basDevps = basDevpService.selectList(new EntityWrapper<BasDevp>().in("dev_no", 223, 123).eq("loading", "Y").ne("wrk_no", 0));
+
+ for (BasDevp basDevp : basDevps) {
+ agvHandller.outboundCallAgvHandller(basDevp.getWrkNo());
+ }
+
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/task/handler/AgvHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvHandler.java
new file mode 100644
index 0000000..15564a2
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/AgvHandler.java
@@ -0,0 +1,138 @@
+package com.zy.asrs.task.handler;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.Order;
+import com.zy.asrs.entity.WrkDetl;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.OrderService;
+import com.zy.asrs.service.WrkDetlService;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.common.constant.AgvApiConstant;
+import com.zy.common.utils.HttpHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author pang.jiabao
+ * @description AGV鐩稿叧瀹氭椂浠诲姟澶勭悊
+ * @createDate 2024/10/19 10:05
+ */
+@Slf4j
+@Service
+public class AgvHandler {
+
+ @Resource
+ private WrkMastService wrkMastService;
+
+ @Resource
+ private WrkDetlService wrkDetlService;
+
+ @Resource
+ private ApiLogService apiLogService;
+
+ @Resource
+ private OrderService orderService;
+
+ /**
+ * 鍑哄簱鍛煎彨agv鎺ヨ揣
+ */
+ public void outboundCallAgvHandller(Integer wrkNo) {
+
+ WrkMast wrkMast = wrkMastService.selectById(wrkNo);
+ if (wrkMast == null) {
+ log.error("鍑哄簱鍛煎彨agv鎺ヨ揣锛寋}宸ヤ綔鍙锋病鏈夋壘鍒板伐浣滄。", wrkNo);
+ return;
+ }
+
+ // 宸茬粡鍛煎彨杩嘺gv鎺ヨ揣鍒欒烦杩� WrkMast琛ㄤ腑ref_wrkno鍙橀噺鐢ㄥ仛鏍囪瘑 0鏈懠鍙紝1鍛煎彨鎴愬姛
+ if (wrkMast.getIoType() != 101 && wrkMast.getIoType() != 103 || wrkMast.getRefWrkno() == 1) {
+ return;
+ }
+
+ // 宸ヤ綔鏄庣粏
+ List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo));
+
+ // 璋冪敤缁撴灉
+ boolean success = false;
+
+ // 鏋勯�犺姹傚ご
+ Map<String, Object> headers = new HashMap<>();
+ headers.put("Content-Type", "application/json;charset=UTF-8");
+
+ // 鏋勯�犺姹備綋
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("trayCode", wrkMast.getBarcode()); // 鎵樼洏鏉$爜
+
+ jsonObject.put("taskId", wrkMast.getWrkNo()); // 浠诲姟id
+ // 淇濆瓨涓�涓鍗曟槑缁嗙殑鍗曟嵁缂栧彿
+ String orderNo = "";
+ JSONArray jsonArray = new JSONArray();
+ for (WrkDetl wrkDetl : wrkDetls) {
+ JSONObject jsonObject1 = new JSONObject();
+ jsonObject1.put("num", wrkDetl.getAnfme()); // 鏁伴噺
+ jsonObject1.put("itemId", wrkDetl.getMatnr()); // 鐗╂枡ID
+ jsonObject1.put("itemCode", wrkDetl.getModel()); // 鐗╂枡Code
+ orderNo = wrkDetl.getOrderNo();
+ jsonArray.add(jsonObject1);
+ }
+ jsonObject.put("basicList", jsonArray); // 鐗╂枡鍒楄〃
+
+ Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", orderNo));
+
+ if (order != null) {
+ jsonObject.put("erpCode", orderNo); // 宸ュ崟鍙�
+ jsonObject.put("outBoundtype", order.getDocType$()); // 鍏ュ嚭搴撳崟鎹被鍨�
+ }
+
+ String body = jsonObject.toString();
+ String response = "";
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(AgvApiConstant.AGV_IP_PORT)
+ .setPath(AgvApiConstant.OUTBOUND_CALL_AGV_PATH)
+ .setHeaders(headers)
+ .setJson(body)
+ .build()
+ .doPost();
+ if (!Cools.isEmpty(response)) {
+ JSONObject jsonObject1 = JSONObject.parseObject(response);
+ if ((Integer) jsonObject1.get("code") == 200) {
+ success = true;
+ wrkMast.setRefWrkno(1.0);
+ wrkMastService.updateById(wrkMast);
+ } else {
+ log.error("鍑哄簱鍛煎彨agv鎺ヨ揣鎺ュ彛寮傚父鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", AgvApiConstant.AGV_IP_PORT + AgvApiConstant.OUTBOUND_CALL_AGV_PATH, body, response);
+ }
+ } else {
+ log.error("鍑哄簱鍛煎彨agv鎺ヨ揣鎺ュ彛寮傚父鎺ュ彛寮傚父锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", AgvApiConstant.AGV_IP_PORT + AgvApiConstant.OUTBOUND_CALL_AGV_PATH, body, response);
+ }
+ } catch (Exception e) {
+ log.error("鍑哄簱鍛煎彨agv鎺ヨ揣鎺ュ彛寮傚父锛歿}", e.getMessage());
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "鍑哄簱鍛煎彨agv鎺ヨ揣",
+ AgvApiConstant.AGV_IP_PORT + AgvApiConstant.OUTBOUND_CALL_AGV_PATH,
+ null,
+ "127.0.0.1",
+ jsonObject.toJSONString(),
+ response,
+ success
+ );
+ } catch (Exception e) {
+ log.error("鍑哄簱鍛煎彨agv鎺ヨ揣鎺ュ彛鏃ュ織寮傚父", e);
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/com/zy/common/constant/AgvApiConstant.java b/src/main/java/com/zy/common/constant/AgvApiConstant.java
new file mode 100644
index 0000000..7efddd6
--- /dev/null
+++ b/src/main/java/com/zy/common/constant/AgvApiConstant.java
@@ -0,0 +1,14 @@
+package com.zy.common.constant;
+
+/**
+ * @author pang.jiabao
+ * @description AGV鐩稿叧瀵规帴鍦板潃
+ * @createDate 2024/10/19 10:27
+ */
+public class AgvApiConstant {
+
+ public static final String AGV_IP_PORT = "http://192.168.99.130:80";
+
+ public static final String OUTBOUND_CALL_AGV_PATH = "/wms/api/addOutBoundType";
+
+}
--
Gitblit v1.9.1