From 2b72251421b15984711107e6aa061a36562d9d87 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期一, 24 十一月 2025 13:59:47 +0800
Subject: [PATCH] #pda接口

---
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java |  210 +++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 182 insertions(+), 28 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 7183047..7e40f99 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -1,10 +1,12 @@
 package com.zy.asrs.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.common.SnowflakeIdWorker;
+import com.core.common.SpringUtils;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.*;
@@ -16,6 +18,8 @@
 import com.zy.asrs.utils.OrderInAndOutUtil;
 import com.zy.asrs.utils.Utils;
 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 lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -58,6 +62,12 @@
     private BasArmMastService basArmMastService;
     @Autowired
     private BasArmMastSignService basArmMastSignService;
+    @Autowired
+    private BasAgvMastService basAgvMastService;
+    @Autowired
+    private LocOwnerService locOwnerService;
+    @Autowired
+    private CommonService commonService;
 
     @Override
     @Transactional
@@ -68,6 +78,12 @@
         }
         DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.TRUE);
         Date now = new Date();
+        LocOwner locOwner = null;
+        if (!Cools.isEmpty(param.getOwnerId())) {
+            locOwner = locOwnerService.selectById(param.getOwnerId());
+        } else {
+            locOwner = locOwnerService.selectById(1);
+        }
         // 鍗曟嵁涓绘。
         order = new Order(
                 String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
@@ -75,12 +91,12 @@
                 DateUtils.convert(now),    // 鍗曟嵁鏃ユ湡
                 docType.getDocId(),    // 鍗曟嵁绫诲瀷
                 null,    // 椤圭洰缂栧彿
-                null,    //
+                param.getStandby1(),    //椤圭洰鍚嶇О 瀹㈡埛PO鍙�
                 null,    // 璋冩嫧椤圭洰缂栧彿
                 null,    // 鍒濆绁ㄦ嵁鍙�
                 null,    // 绁ㄦ嵁鍙�
                 null,    // 瀹㈡埛缂栧彿
-                null,    // 瀹㈡埛
+                locOwner.getOwner(),    // 瀹㈡埛
                 null,    // 鑱旂郴鏂瑰紡
                 null,    // 鎿嶄綔浜哄憳
                 null,    // 鍚堣閲戦
@@ -136,6 +152,9 @@
             orderDetl.setStandby1(detlDto.getStandby1());
             orderDetl.setStandby2(detlDto.getStandby2());
             orderDetl.setStandby3(detlDto.getStandby3());
+            orderDetl.setBoxType1(detlDto.getBoxType1());
+            orderDetl.setBoxType2(detlDto.getBoxType2());
+            orderDetl.setBoxType3(detlDto.getBoxType3());
             orderDetl.setOrderId(order.getId());
             orderDetl.setOrderNo(order.getOrderNo());
             orderDetl.setCreateBy(9527L);
@@ -228,6 +247,12 @@
         }
         DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.FALSE);
         Date now = new Date();
+        LocOwner locOwner = null;
+        if (!Cools.isEmpty(param.getOwnerId())) {
+            locOwner = locOwnerService.selectById(param.getOwnerId());
+        } else {
+            locOwner = locOwnerService.selectById(1);
+        }
         // 鍗曟嵁涓绘。
         order = new Order(
                 String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
@@ -235,12 +260,12 @@
                 DateUtils.convert(now),    // 鍗曟嵁鏃ユ湡
                 docType.getDocId(),    // 鍗曟嵁绫诲瀷
                 null,    // 椤圭洰缂栧彿
-                null,    //
+                param.getStandby1(),    //椤圭洰鍚嶇О 瀹㈡埛PO鍙�
                 null,    // 璋冩嫧椤圭洰缂栧彿
                 null,    // 鍒濆绁ㄦ嵁鍙�
                 null,    // 绁ㄦ嵁鍙�
                 null,    // 瀹㈡埛缂栧彿
-                null,    // 瀹㈡埛
+                locOwner.getOwner(),    // 瀹㈡埛
                 null,    // 鑱旂郴鏂瑰紡
                 null,    // 鎿嶄綔浜哄憳
                 null,    // 鍚堣閲戦
@@ -298,6 +323,9 @@
             orderDetl.setStandby1(detlDto.getStandby1());
             orderDetl.setStandby2(detlDto.getStandby2());
             orderDetl.setStandby3(detlDto.getStandby3());
+            orderDetl.setBoxType1(detlDto.getBoxType1());
+            orderDetl.setBoxType2(detlDto.getBoxType2());
+            orderDetl.setBoxType3(detlDto.getBoxType3());
             orderDetl.setOrderId(order.getId());
             orderDetl.setOrderNo(order.getOrderNo());
             orderDetl.setCreateBy(9527L);
@@ -619,20 +647,8 @@
         );
         if (Cools.isEmpty(basArmMastOld)){
             basArmMastService.insert(basArmMast);
-            try{
-                BasArmMastSign basArmMastSign = basArmMastSignService.selectOne(
-                        new EntityWrapper<BasArmMastSign>()
-                                .eq("matnr", param.getSku())
-                                .eq("order_no", param.getOrderNo())
-                );
-                if (Cools.isEmpty(basArmMastSign)){
-                    basArmMastSign.setStatus(1);
-                    basArmMastSignService.updateById(basArmMastSign);
-                }
-            } catch (Exception e){
-            }
         } else {
-            throw new CoolException("鏈煡璇㈠埌鐩稿叧鏈烘鑷傛媶鐮佸灈浠诲姟锛侊紒锛�"+ JSON.toJSONString(param));
+            throw new CoolException("绛夊緟鍓嶈竟璐х墿鎶撳彇锛侊紒锛�"+ JSON.toJSONString(param));
         }
     }
 
@@ -646,6 +662,20 @@
         );
         if (Cools.isEmpty(basArm)){
             throw new CoolException("鏈烘鑷傞厤缃紓甯革紝鏌ヨ涓嶅埌鏈烘鑷傛暟鎹紒锛侊紒"+ JSON.toJSONString(param));
+        }
+
+        try{
+            BasArmMastSign basArmMastSign = basArmMastSignService.selectOne(
+                    new EntityWrapper<BasArmMastSign>()
+                            .eq("matnr", param.getMatnr())
+                            .eq("order_no", param.getOrderNo())
+                            .eq("create_time", param.getBindingTags())
+            );
+            if (!Cools.isEmpty(basArmMastSign)){
+                basArmMastSign.setStatus(1);
+                basArmMastSignService.updateById(basArmMastSign);
+            }
+        } catch (Exception e){
         }
 
         BasArmMast basArmMastListError = basArmMastService.selectOne(
@@ -729,20 +759,10 @@
     @Override
     @Transactional
     public boolean TaskArmWorkOrderSign(OrderArmEndParam param) {
-        BasArmMastSign basArmMastSign = basArmMastSignService.selectOne(
-                new EntityWrapper<BasArmMastSign>()
-                        .eq("matnr", param.getSku())
-                        .eq("order_no", param.getOrderNo())
-        );
-        if (Cools.isEmpty(basArmMastSign)){
-//            throw new CoolException("鏈煡璇㈠埌鐩稿叧鏈烘鑷傛媶鐮佸灈浠诲姟锛侊紒锛�"+ JSON.toJSONString(param));
-            return false;
-        }
         BasArmMastSign basArmMastSignNew = basArmMastSignService.selectOne(
                 new EntityWrapper<BasArmMastSign>()
-                        .eq("matnr", param.getSku())
                         .eq("order_no", param.getOrderNo())
-                        .eq("create_time", basArmMastSign.getCreateTime())
+                        .eq("create_time", param.getBindingTags())
                         .eq("status", 0)
         );
         if (Cools.isEmpty(basArmMastSignNew)){
@@ -751,4 +771,138 @@
         return true;
     }
 
+    @Override
+    @Transactional
+    public boolean TaskAgvReport(TaskAgvReportParam param) {
+        BasAgvMast basAgvMast = basAgvMastService.selectOne(new EntityWrapper<BasAgvMast>().eq("task_no", param.getTaskNo()));
+        if (Cools.isEmpty(basAgvMast)){
+            return false;
+        }
+        basAgvMast.setStatus(2);
+        basAgvMastService.updateById(basAgvMast);
+        return true;
+    }
+
+    @Override
+    @Transactional
+    public boolean taskAgvCreate(TaskAgvCreateParam param) {
+        // 鍙傛暟妫�鏌�
+        if (param == null) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
+        }
+        Integer devpId = 1;
+        // 鍒涘缓瀵硅薄锛堟瀯閫犲嚱鏁颁腑宸茬敓鎴� timestamp锛�
+        BasAgvMast basAgvMast = new BasAgvMast();
+        // 鐢熸垚 WMS 浠诲姟鍙凤紙濡傛棤澶栭儴浼犲叆锛屽彲浠ヤ娇鐢ㄩ洩鑺盜D 鎴栬嚜澧烇級
+        basAgvMast.setTaskNo(commonService.getWorkNo(0));
+        // 璧嬪�煎弬鏁�
+        basAgvMast.setSourceStaNo(param.getSourceStaNo());
+        basAgvMast.setStaNo(param.getStaNo());
+        basAgvMast.setSourceLocNo(param.getSourceLocNo());
+        basAgvMast.setLocNo(param.getLocNo());
+        // 榛樿鍊�
+        basAgvMast.setPriority(1L);          // 榛樿浼樺厛绾�
+        basAgvMast.setStatus(0);             // 鍒濆鐘舵��
+        basAgvMast.setAppeTime(new Date());  // 娣诲姞鏃堕棿
+        basAgvMast.setModiTime(new Date());  // 淇敼鏃堕棿
+        basAgvMast.setIoType(param.getIoType());// 浠诲姟绫诲瀷
+        basAgvMast.setDevpId(devpId);
+
+        // 鎻掑叆鏁版嵁搴�
+        basAgvMastService.insert(basAgvMast);
+
+        return true;
+    }
+
+    @Override
+    @Transactional
+    public List<AgvLocListDetlParam> getAgvLocList(AgvLocListParam param){
+
+        if (param == null || Cools.isEmpty(param.getLocNoList())) {
+            throw new CoolException("搴撲綅鍙蜂笉鑳戒负绌�");
+        }
+
+        List<String> locNos = param.getLocNoList();
+
+        List<AgvLocListDetlParam> result = new ArrayList<>();
+
+        for (String locNo : locNos) {
+
+            // 鏌ヨ璇ュ簱浣� detail
+            List<LocDetl> detlList = locDetlService.selectList(
+                    new EntityWrapper<LocDetl>().eq("loc_no", locNo)
+            );
+
+            AgvLocListDetlParam dto = new AgvLocListDetlParam();
+            dto.setLocNo(locNo);
+            dto.setAgvDetlList(detlList);
+            result.add(dto);
+        }
+
+        return result;
+    }
+
+
+    @Override
+    @Transactional
+    public boolean bindCtnrAndBin(bindCtnrAndBinParam param) {
+        // 鍙傛暟妫�鏌�
+        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;
+
+            try {
+                log.info("AGV缁戝畾瀹瑰櫒鎺ュ彛璇锋眰鍙傛暟: {}", JSON.toJSONString(agvBindCtnrAndBinParam));
+
+                response = new HttpHandler.Builder()
+                        .setUri(URL)
+                        .setPath(mesPath)
+                        .setJson(JSON.toJSONString(agvBindCtnrAndBinParam))
+                        .build()
+                        .doPost();
+
+                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"));
+                }
+            } 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) {
+            throw new CoolException(e.getMessage());
+        }
+        return true;
+    }
+
+
+
 }

--
Gitblit v1.9.1