From 2816415f539ef54839e331657edae7055c243ad8 Mon Sep 17 00:00:00 2001
From: chen.llin <1442464845@qq.comm>
Date: 星期六, 17 一月 2026 19:27:45 +0800
Subject: [PATCH] agv缓存库位清空和标记功能
---
src/main/java/com/zy/asrs/service/impl/LocCacheServiceImpl.java | 301 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 301 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/LocCacheServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocCacheServiceImpl.java
index 328e073..d4701c3 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocCacheServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocCacheServiceImpl.java
@@ -17,6 +17,7 @@
import org.springframework.stereotype.Service;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Date;
import java.util.List;
@@ -98,4 +99,304 @@
return R.error("鍒濆鍖栧け璐�===>" + e.getMessage());
}
}
+
+ /**
+ * 閿佸畾/瑙i攣缂撳瓨搴撲綅锛堝鐢ˋGV鎼揣鍚庣殑搴撲綅鏈夎揣閫昏緫锛�
+ * 閿佸畾锛氭弧鎵樿缃负 "F"锛堝湪搴擄級锛岀┖鎵樿缃负 "D"锛堢┖妗�/绌烘爤鏉匡級
+ * 瑙i攣锛氱粺涓�璁剧疆涓� "O"锛堢┖搴撲綅锛�
+ * @param locNo 搴撲綅鍙�
+ * @param lock 鏄惁閿佸畾锛宼rue-閿佸畾锛宖alse-瑙i攣
+ * @param fullPlt 鏄惁婊℃墭锛宼rue-婊℃墭锛堣缃负F锛夛紝false-绌烘墭锛堣缃负D锛夛紝瑙i攣鏃跺拷鐣ユ鍙傛暟
+ * @param userId 鐢ㄦ埛ID
+ * @return 鎿嶄綔缁撴灉
+ */
+ @Override
+ public R lockOrUnlockLocCache(String locNo, Boolean lock, Boolean fullPlt, Long userId) {
+ try {
+ if (Cools.isEmpty(locNo)) {
+ return R.error("搴撲綅鍙蜂笉鑳戒负绌�");
+ }
+
+ // 鏍规嵁搴撲綅鍙锋煡璇㈠簱浣�
+ EntityWrapper<LocCache> wrapper = new EntityWrapper<>();
+ wrapper.eq("loc_no", locNo);
+ LocCache locCache = this.selectOne(wrapper);
+
+ if (Cools.isEmpty(locCache)) {
+ return R.error("搴撲綅涓嶅瓨鍦細" + locNo);
+ }
+
+ // 鏇存柊搴撲綅鐘舵��
+ String locSts;
+ if (lock) {
+ // 閿佸畾锛氭弧鎵樿缃负"F"锛堝湪搴擄級锛岀┖鎵樿缃负"D"锛堢┖妗�/绌烘爤鏉匡級
+ if (fullPlt == null) {
+ return R.error("閿佸畾鎿嶄綔鏃讹紝婊℃墭鍙傛暟涓嶈兘涓虹┖");
+ }
+ locSts = fullPlt ? "F" : "D";
+ locCache.setFullPlt(fullPlt ? "Y" : "N");
+ } else {
+ // 瑙i攣锛氱粺涓�璁剧疆涓�"O"锛堢┖搴撲綅锛�
+ locSts = "O";
+ locCache.setFullPlt("N");
+ }
+
+ locCache.setLocSts(locSts);
+ locCache.setModiUser(userId);
+ locCache.setModiTime(new Date());
+
+ boolean success = this.updateById(locCache);
+ if (success) {
+ String action = lock ? "閿佸畾" : "瑙i攣";
+ String detail = lock ? (fullPlt ? "婊℃墭" : "绌烘墭") : "";
+ log.info("{}搴撲綅鎴愬姛锛歿}锛屽簱浣嶇姸鎬侊細{}锛寋}锛屾搷浣滀汉锛歿}", action, locNo, locCache.getLocSts(), detail, userId);
+ return R.ok(action + "鎴愬姛");
+ } else {
+ return R.error("鎿嶄綔澶辫触");
+ }
+ } catch (Exception e) {
+ log.error("閿佸畾/瑙i攣搴撲綅澶辫触", e);
+ return R.error("鎿嶄綔澶辫触锛�" + e.getMessage());
+ }
+ }
+
+ /**
+ * 閿佸畾/瑙i攣褰撳墠鎺掔殑鎵�鏈夊簱浣�
+ * @param locNo 搴撲綅鍙凤紙鐢ㄤ簬鑾峰彇鎺掑彿锛�
+ * @param lock 鏄惁閿佸畾锛宼rue-閿佸畾锛宖alse-瑙i攣
+ * @param userId 鐢ㄦ埛ID
+ * @return 鎿嶄綔缁撴灉
+ */
+ @Override
+ public R lockOrUnlockRowLocCache(String locNo, Boolean lock, Boolean fullPlt, Long userId) {
+ try {
+ if (Cools.isEmpty(locNo)) {
+ return R.error("搴撲綅鍙蜂笉鑳戒负绌�");
+ }
+
+ // 鏍规嵁搴撲綅鍙锋煡璇㈠簱浣嶏紝鑾峰彇鎺掑彿
+ EntityWrapper<LocCache> wrapper = new EntityWrapper<>();
+ wrapper.eq("loc_no", locNo);
+ LocCache locCache = this.selectOne(wrapper);
+
+ if (Cools.isEmpty(locCache)) {
+ return R.error("搴撲綅涓嶅瓨鍦細" + locNo);
+ }
+
+ Integer row = locCache.getRow1();
+ if (Cools.isEmpty(row)) {
+ return R.error("搴撲綅鎺掑彿涓虹┖锛�" + locNo);
+ }
+
+ // 鏌ヨ褰撳墠鎺掔殑1銆�2銆�3鍒楃殑鎵�鏈夊簱浣嶏紙瑙i攣鏁存帓鏃跺彧娓呯┖1銆�2銆�3鍒楋級
+ EntityWrapper<LocCache> rowWrapper = new EntityWrapper<>();
+ rowWrapper.eq("row1", row)
+ .in("bay1", Arrays.asList(1, 2, 3)); // 鍙煡璇�1銆�2銆�3鍒�
+ // 濡傛灉搴撲綅鏈夊簱鍖篒D锛屼篃鍔犱笂搴撳尯鏉′欢
+ if (!Cools.isEmpty(locCache.getAreaId())) {
+ rowWrapper.eq("area_id", locCache.getAreaId());
+ }
+ List<LocCache> locCacheList = this.selectList(rowWrapper);
+
+ if (Cools.isEmpty(locCacheList)) {
+ return R.error("褰撳墠鎺掓病鏈夋壘鍒板簱浣�");
+ }
+
+ // 鎵归噺鏇存柊搴撲綅鐘舵��
+ Date now = new Date();
+ int successCount = 0;
+ String locSts;
+ if (lock) {
+ // 閿佸畾锛氭弧鎵樿缃负"F"锛堝湪搴擄級锛岀┖鎵樿缃负"D"锛堢┖妗�/绌烘爤鏉匡級
+ if (fullPlt == null) {
+ return R.error("閿佸畾鎿嶄綔鏃讹紝婊℃墭鍙傛暟涓嶈兘涓虹┖");
+ }
+ locSts = fullPlt ? "F" : "D";
+ } else {
+ // 瑙i攣锛氱粺涓�璁剧疆涓�"O"锛堢┖搴撲綅锛�
+ locSts = "O";
+ }
+
+ for (LocCache cache : locCacheList) {
+ cache.setLocSts(locSts);
+ if (lock) {
+ cache.setFullPlt(fullPlt ? "Y" : "N");
+ } else {
+ cache.setFullPlt("N");
+ }
+ cache.setModiUser(userId);
+ cache.setModiTime(now);
+ if (this.updateById(cache)) {
+ successCount++;
+ }
+ }
+
+ String action = lock ? "閿佸畾" : "瑙i攣";
+ log.info("{}鎺抺}鎵�鏈夊簱浣嶆垚鍔燂紝鍏眥}涓簱浣嶏紝鎿嶄綔浜猴細{}", action, row, successCount, userId);
+ return R.ok(String.format("%s鎴愬姛锛屽叡澶勭悊 %d 涓簱浣�", action, successCount));
+ } catch (Exception e) {
+ log.error("閿佸畾/瑙i攣鎺掑簱浣嶅け璐�", e);
+ return R.error("鎿嶄綔澶辫触锛�" + e.getMessage());
+ }
+ }
+
+ /**
+ * 閿佸畾/瑙i攣褰撳墠鍒楃殑鎵�鏈夊簱浣�
+ * @param locNo 搴撲綅鍙凤紙鐢ㄤ簬鑾峰彇鍒楀彿bay1锛�
+ * @param lock 鏄惁閿佸畾锛宼rue-閿佸畾锛宖alse-瑙i攣
+ * @param fullPlt 鏄惁婊℃墭锛宼rue-婊℃墭锛堣缃负F锛夛紝false-绌烘墭锛堣缃负D锛夛紝瑙i攣鏃跺拷鐣ユ鍙傛暟
+ * @param userId 鐢ㄦ埛ID
+ * @return 鎿嶄綔缁撴灉
+ */
+ @Override
+ public R lockOrUnlockBayLocCache(String locNo, Boolean lock, Boolean fullPlt, Long userId) {
+ try {
+ if (Cools.isEmpty(locNo)) {
+ return R.error("搴撲綅鍙蜂笉鑳戒负绌�");
+ }
+
+ // 鏍规嵁搴撲綅鍙锋煡璇㈠簱浣嶏紝鑾峰彇鍒楀彿
+ EntityWrapper<LocCache> wrapper = new EntityWrapper<>();
+ wrapper.eq("loc_no", locNo);
+ LocCache locCache = this.selectOne(wrapper);
+
+ if (Cools.isEmpty(locCache)) {
+ return R.error("搴撲綅涓嶅瓨鍦細" + locNo);
+ }
+
+ Integer bay = locCache.getBay1();
+ if (Cools.isEmpty(bay)) {
+ return R.error("搴撲綅鍒楀彿涓虹┖锛�" + locNo);
+ }
+
+ // 鏌ヨ褰撳墠鍒楃殑鎵�鏈夊簱浣�
+ EntityWrapper<LocCache> bayWrapper = new EntityWrapper<>();
+ bayWrapper.eq("bay1", bay);
+ // 濡傛灉搴撲綅鏈夊簱鍖篒D锛屼篃鍔犱笂搴撳尯鏉′欢
+ if (!Cools.isEmpty(locCache.getAreaId())) {
+ bayWrapper.eq("area_id", locCache.getAreaId());
+ }
+ List<LocCache> locCacheList = this.selectList(bayWrapper);
+
+ if (Cools.isEmpty(locCacheList)) {
+ return R.error("褰撳墠鍒楁病鏈夋壘鍒板簱浣�");
+ }
+
+ // 鎵归噺鏇存柊搴撲綅鐘舵��
+ Date now = new Date();
+ int successCount = 0;
+ String locSts;
+ if (lock) {
+ // 閿佸畾锛氭弧鎵樿缃负"F"锛堝湪搴擄級锛岀┖鎵樿缃负"D"锛堢┖妗�/绌烘爤鏉匡級
+ if (fullPlt == null) {
+ return R.error("閿佸畾鎿嶄綔鏃讹紝婊℃墭鍙傛暟涓嶈兘涓虹┖");
+ }
+ locSts = fullPlt ? "F" : "D";
+ } else {
+ // 瑙i攣锛氱粺涓�璁剧疆涓�"O"锛堢┖搴撲綅锛�
+ locSts = "O";
+ }
+
+ for (LocCache cache : locCacheList) {
+ cache.setLocSts(locSts);
+ if (lock) {
+ cache.setFullPlt(fullPlt ? "Y" : "N");
+ } else {
+ cache.setFullPlt("N");
+ }
+ cache.setModiUser(userId);
+ cache.setModiTime(now);
+ if (this.updateById(cache)) {
+ successCount++;
+ }
+ }
+
+ String action = lock ? "閿佸畾" : "瑙i攣";
+ log.info("{}鍒梴}鎵�鏈夊簱浣嶆垚鍔燂紝鍏眥}涓簱浣嶏紝鎿嶄綔浜猴細{}", action, bay, successCount, userId);
+ return R.ok(String.format("%s鎴愬姛锛屽叡澶勭悊 %d 涓簱浣�", action, successCount));
+ } catch (Exception e) {
+ log.error("閿佸畾/瑙i攣鍒楀簱浣嶅け璐�", e);
+ return R.error("鎿嶄綔澶辫触锛�" + e.getMessage());
+ }
+ }
+
+ /**
+ * 娓呯┖鏁存帓鐨勬墍鏈夊簱浣嶏紙鎵�鏈夊垪锛�
+ * @param locNo 搴撲綅鍙凤紙鐢ㄤ簬鑾峰彇鎺掑彿row1锛�
+ * @param lock 鏄惁閿佸畾锛宼rue-閿佸畾锛宖alse-瑙i攣锛堟竻绌猴級
+ * @param fullPlt 鏄惁婊℃墭锛宼rue-婊℃墭锛堣缃负F锛夛紝false-绌烘墭锛堣缃负D锛夛紝瑙i攣鏃跺拷鐣ユ鍙傛暟
+ * @param userId 鐢ㄦ埛ID
+ * @return 鎿嶄綔缁撴灉
+ */
+ @Override
+ public R clearAllColumnsInRow(String locNo, Boolean lock, Boolean fullPlt, Long userId) {
+ try {
+ if (Cools.isEmpty(locNo)) {
+ return R.error("搴撲綅鍙蜂笉鑳戒负绌�");
+ }
+
+ // 鏍规嵁搴撲綅鍙锋煡璇㈠簱浣嶏紝鑾峰彇鎺掑彿
+ EntityWrapper<LocCache> wrapper = new EntityWrapper<>();
+ wrapper.eq("loc_no", locNo);
+ LocCache locCache = this.selectOne(wrapper);
+
+ if (Cools.isEmpty(locCache)) {
+ return R.error("搴撲綅涓嶅瓨鍦細" + locNo);
+ }
+
+ Integer row = locCache.getRow1();
+ if (Cools.isEmpty(row)) {
+ return R.error("搴撲綅鎺掑彿涓虹┖锛�" + locNo);
+ }
+
+ // 鏌ヨ褰撳墠鎺掔殑鎵�鏈夊簱浣嶏紙鎵�鏈夊垪锛屼笉闄愬埗bay1锛�
+ EntityWrapper<LocCache> rowWrapper = new EntityWrapper<>();
+ rowWrapper.eq("row1", row);
+ // 濡傛灉搴撲綅鏈夊簱鍖篒D锛屼篃鍔犱笂搴撳尯鏉′欢
+ if (!Cools.isEmpty(locCache.getAreaId())) {
+ rowWrapper.eq("area_id", locCache.getAreaId());
+ }
+ List<LocCache> locCacheList = this.selectList(rowWrapper);
+
+ if (Cools.isEmpty(locCacheList)) {
+ return R.error("褰撳墠鎺掓病鏈夋壘鍒板簱浣�");
+ }
+
+ // 鎵归噺鏇存柊搴撲綅鐘舵��
+ Date now = new Date();
+ int successCount = 0;
+ String locSts;
+ if (lock) {
+ // 閿佸畾锛氭弧鎵樿缃负"F"锛堝湪搴擄級锛岀┖鎵樿缃负"D"锛堢┖妗�/绌烘爤鏉匡級
+ if (fullPlt == null) {
+ return R.error("閿佸畾鎿嶄綔鏃讹紝婊℃墭鍙傛暟涓嶈兘涓虹┖");
+ }
+ locSts = fullPlt ? "F" : "D";
+ } else {
+ // 瑙i攣锛氱粺涓�璁剧疆涓�"O"锛堢┖搴撲綅锛�
+ locSts = "O";
+ }
+
+ for (LocCache cache : locCacheList) {
+ cache.setLocSts(locSts);
+ if (lock) {
+ cache.setFullPlt(fullPlt ? "Y" : "N");
+ } else {
+ cache.setFullPlt("N");
+ }
+ cache.setModiUser(userId);
+ cache.setModiTime(now);
+ if (this.updateById(cache)) {
+ successCount++;
+ }
+ }
+
+ String action = lock ? "閿佸畾" : "娓呯┖";
+ log.info("{}鎺抺}鎵�鏈夊簱浣嶏紙鎵�鏈夊垪锛夋垚鍔燂紝鍏眥}涓簱浣嶏紝鎿嶄綔浜猴細{}", action, row, successCount, userId);
+ return R.ok(String.format("%s鎴愬姛锛屽叡澶勭悊 %d 涓簱浣�", action, successCount));
+ } catch (Exception e) {
+ log.error("娓呯┖鏁存帓搴撲綅澶辫触", e);
+ return R.error("鎿嶄綔澶辫触锛�" + e.getMessage());
+ }
+ }
}
--
Gitblit v1.9.1