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