From 644b6194f8e5bfbe8d4c431eb53e6b3d36026351 Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期五, 19 十二月 2025 12:56:35 +0800
Subject: [PATCH] bug修复

---
 src/main/java/com/zy/asrs/enums/LocStsType.java               |   12 +-
 src/main/java/com/zy/asrs/entity/LocCache.java                |    8 +-
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java   |    2 
 src/main/java/com/zy/asrs/controller/LocCacheController.java  |   11 ++
 src/main/webapp/static/js/locCache/locCache.js                |   51 +++++++++++-
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |   65 ++++++++++++++++
 src/main/webapp/views/locCache/locCache.html                  |   60 +++-----------
 src/main/java/com/zy/asrs/controller/MobileController.java    |   17 ++++
 src/main/java/com/zy/asrs/service/MobileService.java          |    9 ++
 9 files changed, 172 insertions(+), 63 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/LocCacheController.java b/src/main/java/com/zy/asrs/controller/LocCacheController.java
index 10f96cb..e58146f 100644
--- a/src/main/java/com/zy/asrs/controller/LocCacheController.java
+++ b/src/main/java/com/zy/asrs/controller/LocCacheController.java
@@ -10,6 +10,7 @@
 import com.zy.asrs.entity.LocCache;
 import com.zy.asrs.entity.LocMast;
 import com.zy.asrs.entity.param.LocMastInitParam;
+import com.zy.asrs.enums.LocAreaType;
 import com.zy.asrs.service.LocCacheService;
 import com.core.annotations.ManagerAuth;
 import com.core.common.BaseRes;
@@ -77,7 +78,15 @@
         if (Cools.isEmpty(locCache) || null==locCache.getLocNo()){
             return R.error();
         }
-        locCacheService.updateById(locCache);
+        LocCache cache = locCacheService.selectOne(new EntityWrapper<LocCache>()
+        .eq("loc_no", locCache.getLocNo()));
+        if (Cools.isEmpty(cache)){
+            return R.error("搴撲綅涓嶅瓨鍦�");
+        }
+        cache.setSort(locCache.getSort());
+        if (!locCacheService.updateById(cache)) {
+            return R.error("鏇存柊澶辫触");
+        }
         return R.ok();
     }
 
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 18fd4de..1ca86a6 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -344,6 +344,23 @@
         return R.ok("缁勬墭鎴愬姛");
     }
 
+    /**
+     * @author Ryan
+     * @date 2025/9/24
+     * @description: 鍛煎彨AGV杩斿洖
+     * @version 1.0
+     */
+    @ManagerAuth(memo = "鍛煎彨AGV杩斿洖")
+    @RequestMapping("/agv/call/back")
+    public R callAgvBack(@RequestBody AgvCallParams callAgvBackParam) {
+        if (Objects.isNull(callAgvBackParam.getOrgSite())) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖!!");
+        }
+    
+       return mobileService.agvCallback(callAgvBackParam, getUserId());
+    }
+
+
     @ManagerAuth(memo = "缂撳啿搴撶‘璁や笂鏋�(妯℃嫙鐗╃悊鎸夐挳)")
     @RequestMapping("/cache/comb/pub")
     public R cacheCombPub(@RequestBody CompleteParam combParam) {
diff --git a/src/main/java/com/zy/asrs/entity/LocCache.java b/src/main/java/com/zy/asrs/entity/LocCache.java
index 8fad291..3309548 100644
--- a/src/main/java/com/zy/asrs/entity/LocCache.java
+++ b/src/main/java/com/zy/asrs/entity/LocCache.java
@@ -1,12 +1,10 @@
 package com.zy.asrs.entity;
 
 import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.enums.IdType;
 import com.baomidou.mybatisplus.annotations.TableField;
 import com.core.common.SpringUtils;
 import com.zy.asrs.enums.LocStsType;
 import com.zy.asrs.service.BasWhsTypeService;
-import com.zy.asrs.service.BasCrnpService;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -17,6 +15,8 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+
 import java.io.Serializable;
 
 @Data
@@ -27,7 +27,7 @@
 
 
     @ApiModelProperty("涓婚敭ID")
-    @TableId
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     /**
@@ -214,7 +214,7 @@
         } else if (locSts.equals(LocStsType.LOC_STS_TYPE_D.type)) {
             return LocStsType.LOC_STS_TYPE_D.desc;
         } else if (locSts.equals(LocStsType.LOC_STS_TYPE_O.type)) {
-            return LocStsType.LOC_STS_TYPE_F.desc;
+            return LocStsType.LOC_STS_TYPE_O.desc;
         } else if (locSts.equals(LocStsType.LOC_STS_TYPE_R.type)) {
             return LocStsType.LOC_STS_TYPE_R.desc;
         } else if (locSts.equals(LocStsType.LOC_STS_TYPE_S.type)) {
diff --git a/src/main/java/com/zy/asrs/enums/LocStsType.java b/src/main/java/com/zy/asrs/enums/LocStsType.java
index fe48c4d..f2bc325 100644
--- a/src/main/java/com/zy/asrs/enums/LocStsType.java
+++ b/src/main/java/com/zy/asrs/enums/LocStsType.java
@@ -3,17 +3,17 @@
 public enum LocStsType {
 
     //绌烘澘
-    LOC_STS_TYPE_D("D", "绌烘澘"),
+    LOC_STS_TYPE_D("D", "D.绌烘澘"),
     //鍦ㄥ簱
-    LOC_STS_TYPE_F("F", "鍦ㄥ簱"),
+    LOC_STS_TYPE_F("F", "F.鍦ㄥ簱"),
     //绌哄簱
-    LOC_STS_TYPE_O("O", "绌哄簱"),
+    LOC_STS_TYPE_O("O", "O.绌哄簱"),
     //绂佺敤
-    LOC_STS_TYPE_X("X", "绂佺敤"),
+    LOC_STS_TYPE_X("X", "X.绂佺敤"),
     //鍏ュ簱棰勭害
-    LOC_STS_TYPE_S("S", "鍏ュ簱棰勭害"),
+    LOC_STS_TYPE_S("S", "S.鍏ュ簱棰勭害"),
     //鍑哄簱棰勭害
-    LOC_STS_TYPE_R("R", "鍑哄簱棰勭害"),
+    LOC_STS_TYPE_R("R", "R.鍑哄簱棰勭害"),
     ;
 
     public String type;
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index 7696931..3d2864f 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -159,4 +159,13 @@
     R collectionPakin(CollectionPakinParams params, Long userId);
 
     R collectionPakinView(CollectionPakinParams params);
+
+    /**
+     * 鍛煎彨AGV杩斿洖
+     * @author Ryan
+     * @date 2025/9/24
+     * @param callAgvBackParam
+     * @return com.core.common.R
+     */
+    R agvCallback(AgvCallParams callAgvBackParam, Long userId);
 }
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 09ec30e..72bb2ae 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -2529,4 +2529,69 @@
         }
         return result;
     }
+
+    /**
+     * 鍛煎彨AGV杩斿洖
+     * @author Ryan
+     * @date 2025/9/24
+     * @param callAgvBackParam
+     * @return com.core.common.R
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R agvCallback(AgvCallParams callAgvBackParam, Long userId) {
+        if (Objects.isNull(callAgvBackParam.getOrgSite())) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖!!");
+        }
+
+        // 鎸夊綋鍓嶆煡鎵惧簱浣嶉『搴忥紝鏌ュ埌涓�涓悗锛屼笉鍐嶅線涓嬫煡璇�
+        LocCache locCache = findPriorityLocCache();
+        
+        if (Objects.isNull(locCache)) {
+            return R.error("鏈煡璇㈠埌鍙敤搴撲綅");
+        }
+        
+        try {
+            generateAgvTask("agv", locCache, callAgvBackParam.getOrgSite(), callAgvBackParam.getBarcode(), userId);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.error(e.getMessage());
+        }
+
+        return R.ok(locCache);
+    }
+
+    /**
+     * 鎸変紭鍏堢骇鏌ユ壘鍙敤搴撲綅
+     * 椤哄簭锛氬叆搴撶紦瀛樺尯 -> SO鍖� -> EO鍖�
+     */
+    private LocCache findPriorityLocCache() {
+        // 1. Try Inbound Cache Area
+        LocCache loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_IN_CACHE);
+        if (loc != null) return loc;
+
+        // 2. Try SO Area
+        loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_SO);
+        if (loc != null) return loc;
+
+        // 3. Try EO Area
+        loc = findAvailableLocByAreaType(LocAreaType.LOC_AREA_TYPE_EO);
+        return loc;
+    }
+
+    /**
+     * 鏍规嵁鍖哄煙绫诲瀷鏌ユ壘鍙敤搴撲綅
+     */
+    private LocCache findAvailableLocByAreaType(LocAreaType areaType) {
+        BasAreas area = basAreasService.selectOne(new EntityWrapper<BasAreas>().eq("whs_type_id", areaType.type));
+        if (area == null) {
+            return null;
+        }
+        return locCacheService.selectOne(new EntityWrapper<LocCache>()
+                .eq("area_id", area.getId())
+                .eq("frozen", 0)
+                .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type)
+                .orderAsc(Arrays.asList("loc_no"))
+                .last("OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY"));
+    }
 }
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index adf0ee2..cbe7d75 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -739,7 +739,7 @@
     /**
      * @author Ryan
      * @date 2025/9/25
-     * @description: AGV鍑哄簱浠诲姟
+     * @description: AGV鍑哄簱浠�
      * @version 1.0
      */
     @Transactional(rollbackFor = Exception.class)
diff --git a/src/main/webapp/static/js/locCache/locCache.js b/src/main/webapp/static/js/locCache/locCache.js
index b44b445..b836a62 100644
--- a/src/main/webapp/static/js/locCache/locCache.js
+++ b/src/main/webapp/static/js/locCache/locCache.js
@@ -23,13 +23,11 @@
         cols: [[{type: 'checkbox'}, {field: 'locNo', align: 'center', title: '搴撲綅鍙�', width: 120}
             , {field: 'barcode', align: 'center', title: '鎵樼洏鐮�'}
             , {field: 'areaName', align: 'center', title: '搴撳尯鍚嶇О'}
-            // , {field: 'whsType$', align: 'center', title: '搴撲綅绫诲瀷'}
-            , {field: 'locSts', align: 'center', title: '搴撲綅鐘舵��'}
+            , {field: 'locSts$', align: 'center', title: '搴撲綅鐘舵��'}
             , {field: 'row1', align: 'center', title: '鎺�'}
             , {field: 'bay1', align: 'center', title: '鍒�'}
             , {field: 'lev1', align: 'center', title: '灞�'}
-            // , {field: 'locType', align: 'center', title: '搴撲綅绫诲瀷'}
-            , {field: 'sort', align: 'center', title: '浼樺厛绾�'}
+            , {field: 'sort', align: 'center', title: '浼樺厛绾�', sort: true}
             , {field: 'modiUser$', align: 'center', title: '淇敼浜哄憳'}
             , {field: 'modiTime$', align: 'center', title: '淇敼鏃堕棿'}
             , {field: 'appeUser$', align: 'center', title: '鍒涘缓鑰�'}
@@ -38,6 +36,8 @@
             , {field: 'frozenMemo', align: 'center', title: '鍐荤粨澶囨敞', hide: true}
             , {fixed: 'right', title: '鎿嶄綔', align: 'center', toolbar: '#operate', width: 160}]
         ],
+
+
         request: {
             pageName: 'curr', pageSize: 'limit'
         },
@@ -171,6 +171,49 @@
         })
     });
 
+    // 淇敼浼樺厛绾�
+    form.on('submit(updateProi)', function (data) {
+        var checkStatus = table.checkStatus('locCache').data;
+        if (checkStatus.length === 0) {
+            layer.msg('璇烽�夋嫨闇�瑕佷慨鏀圭殑鏁版嵁淇℃伅', {icon: 2});
+            return false;
+        }
+        var sortVal = data.field.identifying;
+        var loadIndex = layer.load(2);
+        var promises = checkStatus.map(function (item) {
+            return new Promise(function (resolve, reject) {
+                $.ajax({
+                    url: baseUrl + "/locCache/update/auth",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {
+                        id: item.id,
+                        locNo: item.locNo,
+                        sort: sortVal
+                    },
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code === 200) resolve(res);
+                        else reject(res);
+                    },
+                    error: function (err) {
+                        reject(err);
+                    }
+                });
+            });
+        });
+
+        Promise.all(promises).then(function () {
+            layer.close(loadIndex);
+            layer.closeAll();
+            layer.msg("淇敼鎴愬姛");
+            tableReload(false);
+        }).catch(function (err) {
+            layer.close(loadIndex);
+            layer.msg("淇敼澶辫触: " + (err.msg || "鏈煡閿欒"));
+        });
+        return false;
+    });
+
     function batchModifies() {
         layer.open({
             type: 1,
diff --git a/src/main/webapp/views/locCache/locCache.html b/src/main/webapp/views/locCache/locCache.html
index ec258aa..5d019ad 100644
--- a/src/main/webapp/views/locCache/locCache.html
+++ b/src/main/webapp/views/locCache/locCache.html
@@ -30,6 +30,15 @@
                     </div>
                     <div class="layui-inline">
                         <div class="layui-input-inline">
+                            <select name="area_name">
+                                <option value="">搴撳尯鍚嶇О</option>
+                                <option value="鍏ュ簱鍖�">鍏ュ簱鍖�</option>
+                                <option value="闆嗚揣鍖�">闆嗚揣鍖�</option>
+                            </select>
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
                             <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�"
                                    autocomplete="off">
                         </div>
@@ -63,57 +72,14 @@
     <div class="layui-form layui-form-pane">
         <div class="layui-form-item">
             <div class="layui-inline">
-                <label class="layui-form-label"><span class="not-null">*</span>搴撳尯鍚嶇О锛�</label>
-                <div class="layui-input-inline cool-auto-complete">
-                    <input id="identifying" name="identifying" class="layui-input" type="text" style="display: none">
-                    <input id="identifying$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)"
-                           type="text" onfocus=this.blur()>
-                    <div class="cool-auto-complete-window">
-                        <input class="cool-auto-complete-window-input" data-key="basAreasQueryBywhsType"
-                               onkeyup="autoLoad(this.getAttribute('data-key'))">
-                        <select class="cool-auto-complete-window-select" data-key="basAreasQueryBywhsTypeSelect"
-                                onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
-                        </select>
-                    </div>
+                <label class="layui-form-label"><span class="not-null">*</span>浼樺厛绾э細</label>
+                <div class="layui-input-inline">
+                    <input id="identifying" name="identifying" class="layui-input" type="text">
                 </div>
             </div>
         </div>
-        <!-- 搴撲綅绫诲瀷 -->
-        <div class="layui-form-item">
-            <label class="layui-form-label">楂樹綆绫诲瀷</label>
-            <div class="layui-input-inline">
-                <select name="locType1">
-                    <option style="display: none"></option>
-                    <option value="0">鏈煡</option>
-                    <option value="1">浣庡簱浣�</option>
-                    <option value="2">楂樺簱浣�</option>
-                </select>
-            </div>
-        </div>
-        <div class="layui-form-item">
-            <label class="layui-form-label">瀹界獎绫诲瀷</label>
-            <div class="layui-input-inline">
-                <select name="locType2">
-                    <option style="display: none"></option>
-                    <option value="0">鏈煡</option>
-                    <option value="1">绐勫簱浣�</option>
-                    <option value="2">瀹藉簱浣�</option>
-                </select>
-            </div>
-        </div>
-        <div class="layui-form-item">
-            <label class="layui-form-label">杞婚噸绫诲瀷</label>
-            <div class="layui-input-inline">
-                <select name="locType3">
-                    <option style="display: none"></option>
-                    <option value="0">鏈煡</option>
-                    <option value="1">杞诲簱浣�</option>
-                    <option value="2">閲嶅簱浣�</option>
-                </select>
-            </div>
-        </div>
         <div style="text-align: center; margin-top: 20px">
-            <button class="layui-btn layui-btn-normal" id="initDo" lay-submit lay-filter="initDo">
+            <button class="layui-btn layui-btn-normal" id="updateProi" lay-submit lay-filter="updateProi">
                 纭畾
             </button>
         </div>

--
Gitblit v1.9.1