From 6923315545b3f97c86719148f85dac1220a14a63 Mon Sep 17 00:00:00 2001
From: chen.llin <1442464845@qq.comm>
Date: 星期三, 14 一月 2026 19:23:54 +0800
Subject: [PATCH] agv空托入库接口以及机器人组站点配置

---
 src/main/java/com/zy/common/web/RouterController.java          |    9 +
 src/main/java/com/zy/common/properties/AgvProperties.java      |  102 +++++++++++++++++
 src/main/java/com/zy/asrs/task/handler/AgvHandler.java         |   61 ++++++++-
 src/main/java/com/zy/common/constant/ApiInterfaceConstant.java |    2 
 src/main/java/com/zy/asrs/controller/AppVersionController.java |   29 ++++
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java  |   62 +++++++++-
 src/main/resources/application-dev.yml                         |   22 +++
 src/main/resources/application-prod.yml                        |   26 ++++
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java    |    2 
 9 files changed, 296 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/AppVersionController.java b/src/main/java/com/zy/asrs/controller/AppVersionController.java
index 0d5d98e..2b5aed4 100644
--- a/src/main/java/com/zy/asrs/controller/AppVersionController.java
+++ b/src/main/java/com/zy/asrs/controller/AppVersionController.java
@@ -12,6 +12,10 @@
 import com.zy.asrs.entity.AppVersion;
 import com.zy.asrs.service.AppVersionService;
 import com.zy.common.web.BaseController;
+import com.zy.system.entity.Permission;
+import com.zy.system.entity.RolePermission;
+import com.zy.system.service.PermissionService;
+import com.zy.system.service.RolePermissionService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.util.ClassUtils;
@@ -22,10 +26,15 @@
 import java.io.*;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @RestController
 public class AppVersionController extends BaseController {
 
+    @Autowired
+    private PermissionService permissionService;
+    @Autowired
+    private RolePermissionService rolePermissionService;
     @Autowired
     private AppVersionService appVersionService;
 
@@ -57,6 +66,7 @@
     public R checkUpdate(@PathVariable("version") String version,
                          @PathVariable("type") Integer type) {
         EntityWrapper<AppVersion> wrapper = new EntityWrapper<>();
+        wrapper.eq("type", type);
         AppVersion appVersion = appVersionService.selectOne(wrapper);
         if (Cools.isEmpty(appVersion)) {
             return R.ok("宸叉槸鏈�鏂扮増鏈�");
@@ -220,4 +230,23 @@
             response.setStatus(404);
         }
     }
+    @RequestMapping("/menu/pda/auth")
+    @ManagerAuth
+    public R menuPda(){
+        Long userId = getUserId();
+        List<RolePermission> rolePermissions;
+        if (userId == 9527L) {
+            rolePermissions = rolePermissionService.selectList(new EntityWrapper<>());
+        } else {
+            Long roleId = getUser().getRoleId();
+            rolePermissions = rolePermissionService.selectList(new EntityWrapper<RolePermission>().eq("role_id", roleId));
+        }
+        if (Cools.isEmpty(rolePermissions)) {
+            return R.ok();
+        }
+        List<Long> collect = rolePermissions.stream().map(RolePermission::getPermissionId).distinct().collect(Collectors.toList());
+        List<Permission> permissions = permissionService.selectBatchIds(collect);
+        return R.ok().add(permissions);
+    }
 }
+
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 8cb66c6..6a89950 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -23,6 +23,7 @@
 import com.zy.common.model.DetlDto;
 import com.zy.common.model.MesCombParam;
 import com.zy.common.model.enums.WorkNoType;
+import com.zy.common.properties.AgvProperties;
 import com.zy.common.service.CommonService;
 import com.zy.common.utils.HttpHandler;
 import lombok.extern.slf4j.Slf4j;
@@ -122,6 +123,9 @@
     @Resource
     private BasDevpMapper basDevpMapper;
 
+    @Resource
+    private AgvProperties agvProperties;
+
     @Override
     public R inLocCallAgv(CallAgvParam param,Long userId) {
         int type = param.getType();
@@ -159,23 +163,33 @@
                 locCacheService.updateById(locCache);
                 break;
             case 3:
-                // 鍒ゆ柇鏉$爜鍦╳ms涓嶅瓨鍦紝鏄┖鎵樼洏
-                // 宸茬粍鎵�
+                // 鍒ゆ柇鏄惁涓虹┖鎵樺叆搴擄細妫�鏌ユ潯鐮佸湪wms涓笉瀛樺湪锛岀‘璁や负绌烘墭鐩�
+                log.info("寮�濮嬪垽鏂槸鍚︿负绌烘墭鍏ュ簱锛屾潯鐮侊細{}", barcode);
+                
+                // 妫�鏌ユ槸鍚﹀凡缁勬墭
                 int waitPakInCount = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", barcode));
                 if (waitPakInCount != 0) {
+                    log.warn("鏉$爜缁勬墭妗e凡瀛樺湪锛屼笉鏄┖鎵樼洏锛歿}", barcode);
                     throw new CoolException("鏉$爜缁勬墭妗e凡瀛樺湪锛�" + barcode);
                 }
-                // 鏈変换鍔�
+                
+                // 妫�鏌ユ槸鍚︽湁浠诲姟
                 int wrkMastCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", barcode));
                 if (wrkMastCount != 0) {
+                    log.warn("鏉$爜浠诲姟妗e凡瀛樺湪锛屼笉鏄┖鎵樼洏锛歿}", barcode);
                     throw new CoolException("鏉$爜浠诲姟妗e凡瀛樺湪锛�" + barcode);
                 }
-                // 鏈夊簱瀛�
+                
+                // 妫�鏌ユ槸鍚︽湁搴撳瓨
                 int locDetlCount = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", barcode));
                 if (locDetlCount != 0) {
+                    log.warn("鏉$爜搴撳瓨宸插瓨鍦紝涓嶆槸绌烘墭鐩橈細{}", barcode);
                     throw new CoolException("鏉$爜搴撳瓨宸插瓨鍦細" + barcode);
                 }
+                
+                // 閫氳繃鎵�鏈夋鏌ワ紝纭涓虹┖鎵樼洏锛岃缃负绌烘墭鍏ュ簱
                 ioType = 10;
+                log.info("纭涓虹┖鎵樼洏锛岃缃负绌烘墭鍏ュ簱锛屾潯鐮侊細{}锛宨oType锛歿}", barcode, ioType);
                 break;
             default:
                 throw new CoolException("鍏ュ簱绫诲瀷閿欒,type锛�" + type);
@@ -186,15 +200,47 @@
             throw new CoolException(barcode+ "锛氭潯鐮佸瓨鍦╝gv鎼繍浠诲姟!");
         }
 
+        // 鏍规嵁whs_type閫夋嫨绔欑偣鍜屾満鍣ㄤ汉缁�
+        Long whsType = locCache.getWhsType();
+        List<String> targetStations;
+        String robotGroup;
+        
+        if (whsType != null && whsType.equals(agvProperties.getWhsTypeMapping().getInboundArea())) {
+            // whs_type = 1: 鍏ュ簱鍖猴紝浣跨敤涓滀晶绔欑偣鍜孏roup-001
+            targetStations = agvProperties.getEastStations();
+            robotGroup = agvProperties.getRobotGroupEast();
+            log.info("搴撲綅whs_type={}锛屼娇鐢ㄥ叆搴撳尯閰嶇疆锛堜笢渚х珯鐐瑰拰Group-001锛�", whsType);
+        } else if (whsType != null && whsType.equals(agvProperties.getWhsTypeMapping().getCacheArea())) {
+            // whs_type = 2: 缂撳瓨鍖猴紝浣跨敤瑗夸晶绔欑偣鍜孏roup-002
+            targetStations = agvProperties.getWestStations();
+            robotGroup = agvProperties.getRobotGroupWest();
+            log.info("搴撲綅whs_type={}锛屼娇鐢ㄧ紦瀛樺尯閰嶇疆锛堣タ渚х珯鐐瑰拰Group-002锛�", whsType);
+        } else {
+            // whs_type涓虹┖鎴栧叾浠栧�硷紝鏍规嵁type鍒ゆ柇锛堝吋瀹规棫閫昏緫锛�
+            if (type == 1) {
+                targetStations = agvProperties.getEastStations();
+                robotGroup = agvProperties.getRobotGroupEast();
+            } else {
+                targetStations = agvProperties.getWestStations();
+                robotGroup = agvProperties.getRobotGroupWest();
+            }
+            log.warn("搴撲綅whs_type={}鏈厤缃垨涓嶅湪鏄犲皠鑼冨洿鍐咃紝浣跨敤type={}鐨勯粯璁ら�昏緫", whsType, type);
+        }
+        
+        // 灏嗙珯鐐瑰瓧绗︿覆鍒楄〃杞崲涓烘暣鏁板垪琛�
+        List<Integer> siteIntList = targetStations.stream()
+                .map(Integer::parseInt)
+                .collect(Collectors.toList());
+        
         // 鍒ゆ柇鑳藉叆绔欑偣
         List<Integer> sites = basDevpMapper.selectList(
                 new EntityWrapper<BasDevp>()
                         .eq("canining", "Y")
-                        .in("dev_no", type == 1 ? Arrays.asList(1003, 1005, 1007) : Arrays.asList(1044, 1046, 1048))
+                        .in("dev_no", siteIntList)
         ).stream().map(BasDevp::getDevNo).collect(Collectors.toList());
 
         if (sites.isEmpty()) {
-            throw new CoolException("娌℃湁鑳藉叆绔欑偣,type锛�" + type);
+            throw new CoolException("娌℃湁鑳藉叆绔欑偣,whs_type锛�" + whsType + ",type锛�" + type);
         }
 
         // 鑾峰彇娌℃湁鍑哄簱浠诲姟鐨勭珯鐐�
@@ -228,10 +274,12 @@
                 .setTaskType("agv")
                 .setIoPri(10D)
                 .setStaNo(String.valueOf(endSite))
+                .setSourceStaNo(sourceSite) // 璁剧疆婧愮珯鐐�
+                .setInvWh(robotGroup) // 鏍规嵁whs_type璁剧疆鏈哄櫒浜虹粍
                 .setFullPlt(ioType != 10 ? "N" : "Y")// 婊℃澘锛歒
                 .setPicking("N") // 鎷f枡
                 .setExitMk("N")// 閫�鍑�
-                .setSourceLocNo(sourceSite)
+                .setSourceLocNo(locCache.getLocNo()) // 璁剧疆婧愬簱浣嶇紪鍙凤紝鐢ㄤ簬AGV fromBin
                 .setEmptyMk(ioType == 10 ? "Y" : "N")// 绌烘澘
                 .setBarcode(barcode)// 鎵樼洏鐮�
                 .setLinkMis("N")
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 70d664c..b3804f3 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -61,7 +61,7 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public R agvCallback(AgvCallbackDto param) {
-        log.debug("agvCallback param:{}", param);
+        log.debug("agv鍥炶皟 param:{}", param);
         // 浼樺厛浣跨敤taskId锛屽鏋滄病鏈夊垯浣跨敤id锛堝悜鍚庡吋瀹癸級
         String taskId = Cools.isEmpty(param.getTaskId()) ? param.getId() : param.getTaskId();
         if (Cools.isEmpty(taskId)) {
diff --git a/src/main/java/com/zy/asrs/task/handler/AgvHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvHandler.java
index 96d2be9..fdc0fe8 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvHandler.java
@@ -12,17 +12,19 @@
 import com.zy.asrs.service.TaskLogService;
 import com.zy.asrs.service.TaskService;
 import com.zy.common.constant.ApiInterfaceConstant;
+import com.zy.common.properties.AgvProperties;
 import com.zy.common.utils.HttpHandler;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -49,15 +51,15 @@
     @Resource
     private BasStationMapper basStationMapper;
 
-    @Value("${Agv.sendTask}")
-    private boolean agvSendTask;
+    @Resource
+    private AgvProperties agvProperties;
 
     /**
      * 鍛煎彨agv鎼繍
      */
     public void callAgv(List<Task> taskList) {
 
-        if (!agvSendTask) {
+        if (!agvProperties.isSendTask()) {
             return;
         }
 
@@ -99,6 +101,7 @@
                     success = true;
                     task.setWrkSts(8L);
                     taskService.updateById(task);
+                    log.info(namespace + "鍛煎彨agv鎼繍璇锋眰鍙傛暟锛歿}", body);
                     log.info(namespace + "鍛煎彨agv鎼繍鎴愬姛锛歿}", task.getId());
                 } else {
                     log.error(namespace + "鍛煎彨agv鎼繍澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url, body, response);
@@ -131,19 +134,34 @@
         JSONObject object = new JSONObject();
         // taskId浣跨敤浠诲姟ID锛屾牸寮忥細T + 浠诲姟ID
         object.put("taskId", "T" + task.getId());
-        object.put("fromBin", task.getSourceStaNo());
+        // fromBin浣跨敤婧愬簱浣嶇紪鍙凤紙sourceLocNo锛夛紝濡傛灉涓虹┖鍒欎娇鐢ㄦ簮绔欑偣缂栧彿锛坰ourceStaNo锛変綔涓哄閫�
+        String fromBin = task.getSourceLocNo();
+        if (fromBin == null || fromBin.isEmpty()) {
+            fromBin = task.getSourceStaNo();
+        }
+        if (fromBin == null || fromBin.isEmpty() || "0".equals(fromBin)) {
+            log.warn("浠诲姟{}鐨勬簮搴撲綅鍜屾簮绔欑偣閮戒负绌猴紝浣跨敤榛樿鍊�", task.getId());
+            fromBin = "0";
+        }
+        object.put("fromBin", fromBin);
+        // toBin浣跨敤鐩爣绔欑偣缂栧彿
         object.put("toBin", task.getStaNo());
-        // robotGroup浠巌nvWh瀛楁鑾峰彇锛屽鏋滄病鏈夊垯浣跨敤榛樿鍊�
+        // robotGroup浠巌nvWh瀛楁鑾峰彇锛屽鏋滄病鏈夊垯鏍规嵁绔欑偣缂栧彿鍒ゆ柇
         String robotGroup = task.getInvWh();
         if (robotGroup == null || robotGroup.isEmpty()) {
-            robotGroup = "Group-001"; // 榛樿鏈哄櫒浜虹粍
+            robotGroup = determineRobotGroupByStation(task.getStaNo());
         }
         object.put("robotGroup", robotGroup);
         // kind鏍规嵁浠诲姟绫诲瀷鏄犲皠
         String kind = "";
         switch (nameSpace) {
             case "鍏ュ簱":
-                kind = "瀹炴墭鍏ュ簱";
+                // 鍒ゆ柇鏄惁涓虹┖鎵樺叆搴擄細ioType=10 鎴� emptyMk="Y"
+                if (task.getIoType() == 10 || "Y".equals(task.getEmptyMk())) {
+                    kind = "绌烘墭鍏ュ簱";
+                } else {
+                    kind = "瀹炴墭鍏ュ簱";
+                }
                 break;
             case "鍑哄簱":
                 kind = "瀹炴墭鍑哄簱";
@@ -156,6 +174,31 @@
         }
         object.put("kind", kind);
         return object.toJSONString();
+    }
+
+    /**
+     * 鏍规嵁绔欑偣缂栧彿鍒ゆ柇鏈哄櫒浜虹粍
+     * @param staNo 绔欑偣缂栧彿
+     * @return 鏈哄櫒浜虹粍鍚嶇О
+     */
+    private String determineRobotGroupByStation(String staNo) {
+        if (staNo == null || staNo.isEmpty()) {
+            return agvProperties.getRobotGroupEast(); // 榛樿浣跨敤涓滀晶鏈哄櫒浜虹粍
+        }
+        
+        // 浠庨厤缃腑鑾峰彇绔欑偣鍒楄〃
+        Set<String> eastStations = new HashSet<>(agvProperties.getEastStations());
+        Set<String> westStations = new HashSet<>(agvProperties.getWestStations());
+        
+        // 鍒ゆ柇绔欑偣灞炰簬鍝竴渚�
+        if (eastStations.contains(staNo)) {
+            return agvProperties.getRobotGroupEast(); // 涓滀晶鏈哄櫒浜�
+        } else if (westStations.contains(staNo)) {
+            return agvProperties.getRobotGroupWest(); // 瑗夸晶鏈哄櫒浜�
+        } else {
+            log.warn("绔欑偣缂栧彿涓嶅湪閰嶇疆鍒楄〃涓紝浣跨敤榛樿鏈哄櫒浜虹粍锛歿}", staNo);
+            return agvProperties.getRobotGroupEast(); // 榛樿浣跨敤涓滀晶鏈哄櫒浜虹粍
+        }
     }
 
     /**
@@ -231,7 +274,7 @@
      * @return 鏄惁鎴愬姛
      */
     public boolean cancelAgvTask(Task task) {
-        if (!agvSendTask) {
+        if (!agvProperties.isSendTask()) {
             return false;
         }
 
diff --git a/src/main/java/com/zy/common/constant/ApiInterfaceConstant.java b/src/main/java/com/zy/common/constant/ApiInterfaceConstant.java
index 0d955f4..3eab7a6 100644
--- a/src/main/java/com/zy/common/constant/ApiInterfaceConstant.java
+++ b/src/main/java/com/zy/common/constant/ApiInterfaceConstant.java
@@ -33,7 +33,7 @@
      */
 //    public static final String AGV_IP = "http://192.168.99.130:80";
     // 娴嬭瘯鍦板潃
-    public static final String AGV_IP = "http://127.0.0.1:8080/yhfzwms/open/asrs";
+    public static final String AGV_IP = "http://10.10.10.200:8080/agv";
 
     /**
      * 浠欏伐M4 - 鍒涘缓浠诲姟锛堣揣鐗╄浆杩愩�佸疄鎵樺叆搴擄紝瀹炴墭鍑哄簱锛�
diff --git a/src/main/java/com/zy/common/properties/AgvProperties.java b/src/main/java/com/zy/common/properties/AgvProperties.java
new file mode 100644
index 0000000..c8119c8
--- /dev/null
+++ b/src/main/java/com/zy/common/properties/AgvProperties.java
@@ -0,0 +1,102 @@
+package com.zy.common.properties;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * AGV閰嶇疆灞炴��
+ * 
+ * @author system
+ */
+@Data
+@Configuration
+@ConfigurationProperties(prefix = "agv")
+public class AgvProperties {
+
+    /**
+     * 鏄惁鍙戦�佷换鍔�
+     */
+    private boolean sendTask = false;
+
+    /**
+     * 涓滀晶閰嶇疆
+     */
+    private RobotGroupConfig east = new RobotGroupConfig();
+
+    /**
+     * 瑗夸晶閰嶇疆
+     */
+    private RobotGroupConfig west = new RobotGroupConfig();
+
+    /**
+     * whs_type鏄犲皠閰嶇疆
+     * 1: 鍏ュ簱鍖猴紙涓滀晶锛夛紝2: 缂撳瓨鍖猴紙瑗夸晶锛�
+     */
+    private WhsTypeMapping whsTypeMapping = new WhsTypeMapping();
+
+    /**
+     * whs_type鏄犲皠閰嶇疆鍐呴儴绫�
+     */
+    @Data
+    public static class WhsTypeMapping {
+        /**
+         * 鍏ュ簱鍖哄搴旂殑whs_type鍊硷紙榛樿1锛�
+         */
+        private Long inboundArea = 1L;
+
+        /**
+         * 缂撳瓨鍖哄搴旂殑whs_type鍊硷紙榛樿2锛�
+         */
+        private Long cacheArea = 2L;
+    }
+
+    /**
+     * 鏈哄櫒浜虹粍閰嶇疆鍐呴儴绫�
+     */
+    @Data
+    public static class RobotGroupConfig {
+        /**
+         * 鏈哄櫒浜虹粍缂栧彿
+         */
+        private String robotGroup = "";
+
+        /**
+         * 绔欑偣鍒楄〃
+         */
+        private List<String> stations = new ArrayList<>();
+    }
+
+    /**
+     * 鑾峰彇涓滀晶绔欑偣鍒楄〃锛堝吋瀹规棫浠g爜锛�
+     */
+    public List<String> getEastStations() {
+        return east != null ? east.getStations() : new ArrayList<>();
+    }
+
+    /**
+     * 鑾峰彇瑗夸晶绔欑偣鍒楄〃锛堝吋瀹规棫浠g爜锛�
+     */
+    public List<String> getWestStations() {
+        return west != null ? west.getStations() : new ArrayList<>();
+    }
+
+    /**
+     * 鑾峰彇涓滀晶鏈哄櫒浜虹粍缂栧彿锛堝吋瀹规棫浠g爜锛�
+     */
+    public String getRobotGroupEast() {
+        return east != null && east.getRobotGroup() != null && !east.getRobotGroup().isEmpty() 
+            ? east.getRobotGroup() : "Group-001";
+    }
+
+    /**
+     * 鑾峰彇瑗夸晶鏈哄櫒浜虹粍缂栧彿锛堝吋瀹规棫浠g爜锛�
+     */
+    public String getRobotGroupWest() {
+        return west != null && west.getRobotGroup() != null && !west.getRobotGroup().isEmpty() 
+            ? west.getRobotGroup() : "Group-002";
+    }
+}
diff --git a/src/main/java/com/zy/common/web/RouterController.java b/src/main/java/com/zy/common/web/RouterController.java
index b054349..e6db536 100644
--- a/src/main/java/com/zy/common/web/RouterController.java
+++ b/src/main/java/com/zy/common/web/RouterController.java
@@ -51,4 +51,13 @@
         }
     }
 
+    @RequestMapping("/rfid")
+    public void rfid(HttpServletResponse response) {
+        try {
+            response.sendRedirect(contextPath + "/views/rfid.html");
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+    }
+
 }
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 29e4ebe..3d333c3 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -68,6 +68,28 @@
 
 Agv:
   sendTask: false
+  # 涓滀晶閰嶇疆
+  east:
+    robotGroup: "Group-001"
+    stations:
+      - "1001"
+      - "1003"
+      - "1005"
+      - "1007"
+  # 瑗夸晶閰嶇疆
+  west:
+    robotGroup: "Group-002"
+    stations:
+      - "1042"
+      - "1044"
+      - "1046"
+      - "1048"
+  # whs_type鏄犲皠閰嶇疆
+  whsTypeMapping:
+    # 鍏ュ簱鍖簑hs_type鍊硷紙瀵瑰簲涓滀晶锛�
+    inboundArea: 1
+    # 缂撳瓨鍖簑hs_type鍊硷紙瀵瑰簲瑗夸晶锛�
+    cacheArea: 2
 
 # 瓒婂簱閰嶇疆
 cross-dock:
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index 39cf6db..516a3e7 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -66,6 +66,31 @@
   # 鍙虫繁搴撲綅鎺掑彿
   doubleLocsRight: 4,8,12,16,20,24,28,32
 
+Agv:
+  sendTask: false
+  # 涓滀晶閰嶇疆
+  east:
+    robotGroup: "Group-001"
+    stations:
+      - "1001"
+      - "1003"
+      - "1005"
+      - "1007"
+  # 瑗夸晶閰嶇疆
+  west:
+    robotGroup: "Group-002"
+    stations:
+      - "1042"
+      - "1044"
+      - "1046"
+      - "1048"
+  # whs_type鏄犲皠閰嶇疆
+  whsTypeMapping:
+    # 鍏ュ簱鍖簑hs_type鍊硷紙瀵瑰簲涓滀晶锛�
+    inboundArea: 1
+    # 缂撳瓨鍖簑hs_type鍊硷紙瀵瑰簲瑗夸晶锛�
+    cacheArea: 2
+
 # 瓒婂簱閰嶇疆
 cross-dock:
   # 瓒婂簱鍏ュ簱鍗曠被鍨婭D
@@ -74,4 +99,3 @@
   outbound-doc-type-id: 36
   # 铏氭嫙搴撲綅缂栧彿
   virtual-location-no: VIRTUAL
-

--
Gitblit v1.9.1