From 0406c675e143bbb08284fd55381261afcc587afc Mon Sep 17 00:00:00 2001
From: chen.llin <1442464845@qq.comm>
Date: 星期日, 18 一月 2026 15:51:36 +0800
Subject: [PATCH] 月结增加明细
---
src/main/java/com/zy/asrs/service/impl/LocCacheServiceImpl.java | 326 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 322 insertions(+), 4 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 f82741d..d4701c3 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocCacheServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocCacheServiceImpl.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.core.common.Cools;
import com.core.common.R;
+import com.core.common.SnowflakeIdWorker;
import com.core.exception.CoolException;
import com.zy.asrs.entity.BasAreas;
import com.zy.asrs.entity.LocCache;
@@ -16,6 +17,7 @@
import org.springframework.stereotype.Service;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Date;
import java.util.List;
@@ -26,6 +28,9 @@
@Autowired
private BasAreasService basAreasService;
+
+ @Autowired
+ private SnowflakeIdWorker snowflakeIdWorker;
/**
* @author Ryan
@@ -48,12 +53,13 @@
String locNo = areas.getAreaNo() + String.format("%02d", r) + String.format("%03d", b) + String.format("%02d", l);
Date now = new Date();
LocCache locMast = new LocCache();
+ // 鎵嬪姩鐢熸垚ID
+ locMast.setId(snowflakeIdWorker.nextId());
locMast.setLocNo(locNo);
locMast.setLocSts("O");
locMast.setRow1(r); // 鎺�
locMast.setBay1(b); // 鍒�
locMast.setLev1(l); // 灞�
- locMast.setId(null);
locMast.setLocType1(!Cools.isEmpty(param.getLocType1()) ? param.getLocType1() : 1);
locMast.setLocType2(param.getLocType2());
locMast.setLocType3(param.getLocType3());
@@ -73,12 +79,324 @@
}
}
- if (!this.insertBatch(list)) {
- throw new CoolException("娣诲姞澶辫触锛侊紒");
+ // SQL Server 鎵归噺鎻掑叆鑾峰彇鐢熸垚閿彲鑳藉け璐ワ紝鏀圭敤寰幆鍗曟潯鎻掑叆纭繚鎵�鏈夎褰曢兘鑳芥垚鍔熸彃鍏�
+ int successCount = 0;
+ for (LocCache locCache : list) {
+ if (this.insert(locCache)) {
+ successCount++;
+ } else {
+ log.error("鎻掑叆搴撲綅澶辫触: {}", locCache.getLocNo());
+ }
}
- return R.ok("鍒濆鍖栨垚鍔�");
+
+ if (successCount != list.size()) {
+ throw new CoolException(String.format("娣诲姞澶辫触锛佹垚鍔熸彃鍏� %d 鏉★紝搴旀彃鍏� %d 鏉�", successCount, list.size()));
+ }
+
+ return R.ok("鍒濆鍖栨垚鍔燂紝鍏辨彃鍏� " + successCount + " 鏉¤褰�");
} catch (Exception e) {
+ log.error("鍒濆鍖栧簱浣嶅け璐�", e);
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