From e5d1fb3d5ce9468b92e79825bbcb38f05ea73aff Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期一, 12 十月 2026 18:12:34 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceRecordServiceImpl.java | 56 ++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 38 insertions(+), 18 deletions(-)
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceRecordServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceRecordServiceImpl.java
index 0fb8618..4b53f5d 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceRecordServiceImpl.java
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceRecordServiceImpl.java
@@ -36,31 +36,51 @@
@Override
public void borrowSubstance(FeStandardSubstanceRecord feStandardSubstanceRecord) {
- FeStandardSubstance standardSubstance = feStandardSubstanceMapper.selectOne(Wrappers.<FeStandardSubstance>lambdaQuery()
- .eq(FeStandardSubstance::getId, feStandardSubstanceRecord.getSubstanceId())
- .eq(FeStandardSubstance::getState, 0)
- .last("limit 1"));
- if (ObjectUtils.isEmpty(standardSubstance)){
- throw new ErrorException("璇ョ墿璐ㄥ凡琚�熷嚭锛�");
+ Long borrowQuantity = feStandardSubstanceRecord.getBorrowQuantity();
+ if (borrowQuantity == null || borrowQuantity <= 0) {
+ throw new ErrorException("璇峰~鍐欐纭殑棰嗙敤鏁伴噺锛�");
}
+ FeStandardSubstance standardSubstance = feStandardSubstanceMapper.selectById(feStandardSubstanceRecord.getSubstanceId());
+ if (ObjectUtils.isEmpty(standardSubstance)){
+ throw new ErrorException("璇ユ爣鍑嗙墿璐ㄤ笉瀛樺湪锛�");
+ }
+ long remaining = calcRemaining(standardSubstance);
+ if (remaining <= 0) {
+ throw new ErrorException("璇ユ爣鍑嗙墿璐ㄥ凡鍏ㄩ儴棰嗙敤锛屽墿浣欐暟閲忎负0锛�");
+ }
+ if (borrowQuantity > remaining) {
+ throw new ErrorException("棰嗙敤鏁伴噺涓嶈兘瓒呰繃鍓╀綑鏁伴噺锛堝綋鍓嶅墿浣�" + remaining + "锛夛紒");
+ }
+ long remainingAfter = remaining - borrowQuantity;
+ feStandardSubstanceRecord.setRemainingQuantity(remainingAfter);
+ // 璁板綍棰嗙敤褰撴椂鐨勫師濮嬫暟閲忓揩鐓э紝涔嬪悗娓呭崟閲屽啀鏀规暟閲忎笉褰卞搷鍘嗗彶棰嗙敤璁板綍
+ feStandardSubstanceRecord.setOriginalQuantity(standardSubstance.getQuantity());
this.baseMapper.insert(feStandardSubstanceRecord);
- standardSubstance.setState(1);
+ standardSubstance.setState(remainingAfter == 0 ? 1 : 0);
feStandardSubstanceMapper.updateById(standardSubstance);
}
@Override
- public void returnSubstance(FeStandardSubstanceRecord feStandardSubstanceRecord) {
- FeStandardSubstance standardSubstance = feStandardSubstanceMapper.selectOne(Wrappers.<FeStandardSubstance>lambdaQuery()
- .eq(FeStandardSubstance::getId, feStandardSubstanceRecord.getSubstanceId())
- .eq(FeStandardSubstance::getState, 1));
- if (ObjectUtils.isEmpty(standardSubstance)){
- throw new ErrorException("璇ョ墿璐ㄦ湭琚鐢紝鏃犻渶褰掕繕锛�");
+ public Long getRemainingQuantity(Integer substanceId) {
+ FeStandardSubstance standardSubstance = feStandardSubstanceMapper.selectById(substanceId);
+ if (ObjectUtils.isEmpty(standardSubstance)) {
+ return 0L;
}
- standardSubstance.setState(0);
- feStandardSubstanceMapper.updateById(standardSubstance);
- baseMapper.update(feStandardSubstanceRecord, Wrappers.<FeStandardSubstanceRecord>lambdaUpdate()
- .eq(FeStandardSubstanceRecord::getSubstanceId, feStandardSubstanceRecord.getSubstanceId())
- .eq(FeStandardSubstanceRecord::getStatus, 0));
+ return Math.max(calcRemaining(standardSubstance), 0L);
+ }
+
+ private long calcRemaining(FeStandardSubstance substance) {
+ long total = substance.getQuantity() == null ? 0L : substance.getQuantity();
+ long borrowed = 0L;
+ List<FeStandardSubstanceRecord> records = this.baseMapper.selectList(Wrappers.<FeStandardSubstanceRecord>lambdaQuery()
+ .eq(FeStandardSubstanceRecord::getSubstanceId, substance.getId()));
+ for (FeStandardSubstanceRecord record : records) {
+ if ("1".equals(record.getStatus())) { // 鍘嗗彶褰掕繕璁板綍涓嶈鍏ュ凡棰嗙敤
+ continue;
+ }
+ borrowed += record.getBorrowQuantity() == null ? total : record.getBorrowQuantity();
+ }
+ return total - borrowed;
}
@Override
--
Gitblit v1.9.3