From 0578c6c76f13e367b5dc7d0882efe3c69ca4cb0e Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期五, 15 五月 2026 16:29:30 +0800
Subject: [PATCH] feat(customer): 添加客户银行代码字段并实现批量删除功能
---
src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java | 193 ++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 186 insertions(+), 7 deletions(-)
diff --git a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
index ce2cbc9..2840974 100644
--- a/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
+++ b/src/main/java/com/ruoyi/procurementrecord/utils/StockUtils.java
@@ -1,24 +1,203 @@
package com.ruoyi.procurementrecord.utils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
+import com.ruoyi.stock.dto.StockInRecordDto;
+import com.ruoyi.stock.dto.StockInventoryDto;
+import com.ruoyi.stock.dto.StockOutRecordDto;
+import com.ruoyi.stock.dto.StockUninventoryDto;
+import com.ruoyi.stock.mapper.StockInventoryMapper;
+import com.ruoyi.stock.pojo.StockInRecord;
+import com.ruoyi.stock.pojo.StockOutRecord;
+import com.ruoyi.stock.service.StockInRecordService;
+import com.ruoyi.stock.service.StockInventoryService;
+import com.ruoyi.stock.service.StockOutRecordService;
+import com.ruoyi.stock.service.StockUninventoryService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
+import java.util.Collections;
@Component
@RequiredArgsConstructor
public class StockUtils {
private final ProcurementRecordOutMapper procurementRecordOutMapper;
private final ProcurementRecordMapper procurementRecordMapper;
+ private final StockUninventoryService stockUninventoryService;
+ private final StockInventoryService stockInventoryService;
+ private final StockInRecordService stockInRecordService;
+ private final StockOutRecordService stockOutRecordService;
+ private final StockInventoryMapper stockInventoryMapper;
- // 鑾峰彇鍟嗗搧鍓╀綑搴撳瓨
- public BigDecimal getStockQuantity(Long productModelId) {
- // 鍏ュ簱鏁伴噺
- BigDecimal sumQuantity = procurementRecordMapper.getSumQuantity(productModelId);
- // 鍑哄簱鏁伴噺
- BigDecimal outQuantity = procurementRecordOutMapper.getSumQuantity(productModelId);
- return outQuantity.compareTo(sumQuantity) > 0 ? BigDecimal.ZERO : sumQuantity.subtract(outQuantity);
+ /**
+ * 娑撳秴鎮庨弽鐓庡弳鎼�?
+ *
+ * @param productModelId
+ * @param quantity
+ * @param recordType
+ * @param recordId
+ */
+ public void addUnStock(Long productModelId, BigDecimal quantity, String recordType, Long recordId) {
+ StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
+ stockUninventoryDto.setRecordId(recordId);
+ stockUninventoryDto.setRecordType(String.valueOf(recordType));
+ stockUninventoryDto.setQualitity(quantity);
+ stockUninventoryDto.setProductModelId(productModelId);
+ stockUninventoryService.addStockUninventory(stockUninventoryDto);
+ }
+
+ /**
+ * 娑撳秴鎮庨弽鐓庡毉鎼�?
+ *
+ * @param productModelId
+ * @param quantity
+ * @param recordType
+ * @param recordId
+ */
+ public void subtractUnStock(Long productModelId, BigDecimal quantity, Integer recordType, Long recordId) {
+ StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
+ stockUninventoryDto.setRecordId(recordId);
+ stockUninventoryDto.setRecordType(String.valueOf(recordType));
+ stockUninventoryDto.setQualitity(quantity);
+ stockUninventoryDto.setProductModelId(productModelId);
+ stockUninventoryService.subtractStockUninventory(stockUninventoryDto);
+ }
+
+ /**
+ * 閸氬牊鐗搁崗銉ョ氨
+ * @param recordType
+ * @param recordId
+ */
+ public void addStock(Long productModelId, BigDecimal quantity, String recordType, Long recordId) {
+ addStock(productModelId, quantity, recordType, recordId, resolveWarehouseInfoId(null, productModelId, null));
+ }
+
+ public void addStock(Long productModelId, BigDecimal quantity, String recordType, Long recordId, Long warehouseInfoId) {
+ StockInventoryDto stockInventoryDto = new StockInventoryDto();
+ stockInventoryDto.setRecordId(recordId);
+ stockInventoryDto.setRecordType(String.valueOf(recordType));
+ stockInventoryDto.setQualitity(quantity);
+ stockInventoryDto.setProductModelId(productModelId);
+ stockInventoryDto.setWarehouseInfoId(warehouseInfoId);
+ stockInventoryService.addStockInRecordOnly(stockInventoryDto);
+ }
+
+ /**
+ * 閸氬牊鐗搁崗銉ョ氨鐢附澹掑▎鈥冲娇
+ * @param productModelId
+ * @param quantity
+ * @param recordType
+ * @param recordId
+ */
+ public StockInRecordDto addStockWithBatchNo(Long productModelId, BigDecimal quantity, String recordType, Long recordId, String batchNo) {
+ return addStockWithBatchNo(productModelId, quantity, recordType, recordId, batchNo,
+ resolveWarehouseInfoId(null, productModelId, batchNo));
+ }
+
+ public StockInRecordDto addStockWithBatchNo(Long productModelId, BigDecimal quantity, String recordType, Long recordId, String batchNo, Long warehouseInfoId) {
+ StockInventoryDto stockInventoryDto = new StockInventoryDto();
+ stockInventoryDto.setRecordId(recordId);
+ stockInventoryDto.setRecordType(String.valueOf(recordType));
+ stockInventoryDto.setQualitity(quantity);
+ stockInventoryDto.setProductModelId(productModelId);
+ stockInventoryDto.setBatchNo(batchNo);
+ stockInventoryDto.setWarehouseInfoId(warehouseInfoId);
+ return stockInventoryService.addStockInRecordOnly(stockInventoryDto);
+ }
+
+ /**
+ * 閸氬牊鐗搁崙鍝勭氨
+ *
+ * @param productModelId
+ * @param quantity
+ * @param recordType
+ * @param recordId
+ */
+ public void substractStock(Long productModelId, BigDecimal quantity, String recordType, Long recordId) {
+ substractStock(productModelId, quantity, recordType, recordId, resolveWarehouseInfoId(null, productModelId, null));
+ }
+
+ public void substractStock(Long productModelId, BigDecimal quantity, String recordType, Long recordId, Long warehouseInfoId) {
+ StockInventoryDto stockInventoryDto = new StockInventoryDto();
+ stockInventoryDto.setRecordId(recordId);
+ stockInventoryDto.setRecordType(String.valueOf(recordType));
+ stockInventoryDto.setQualitity(quantity);
+ stockInventoryDto.setProductModelId(productModelId);
+ stockInventoryDto.setWarehouseInfoId(warehouseInfoId);
+ stockInventoryService.subtractStockInventory(stockInventoryDto);
+ }
+
+ public StockOutRecordDto substractStock(Long productModelId, BigDecimal quantity, String recordType, Long recordId, String batchNo) {
+ return substractStock(productModelId, quantity, recordType, recordId, batchNo,
+ resolveWarehouseInfoId(null, productModelId, batchNo));
+ }
+
+ public StockOutRecordDto substractStock(Long productModelId, BigDecimal quantity, String recordType, Long recordId, String batchNo, Long warehouseInfoId) {
+ StockInventoryDto stockInventoryDto = new StockInventoryDto();
+ stockInventoryDto.setRecordId(recordId);
+ stockInventoryDto.setRecordType(String.valueOf(recordType));
+ stockInventoryDto.setQualitity(quantity);
+ stockInventoryDto.setProductModelId(productModelId);
+ stockInventoryDto.setBatchNo(batchNo);
+ stockInventoryDto.setWarehouseInfoId(warehouseInfoId);
+ return stockInventoryService.addStockOutRecordOnly(stockInventoryDto);
+ }
+
+ /**
+ * @param recordType
+ * @param recordId
+ */
+ public void shipmentStatus(String recordType, Long recordId) {
+ LambdaQueryWrapper<StockOutRecord> queryWrapper = new LambdaQueryWrapper<StockOutRecord>().eq(StockOutRecord::getRecordType, recordType)
+ .eq(StockOutRecord::getRecordId, recordId);
+ StockOutRecord stockOutRecord = stockOutRecordService.getOne(queryWrapper);
+ stockOutRecord.setApprovalStatus(0);
+ stockOutRecordService.updateById(stockOutRecord);
+ }
+
+ public void deleteStockInRecord(Long recordId, String recordType) {
+ StockInRecord one = stockInRecordService.getOne(new QueryWrapper<StockInRecord>()
+ .lambda().eq(StockInRecord::getRecordId, recordId)
+ .eq(StockInRecord::getRecordType, recordType));
+ if (ObjectUtils.isNotEmpty(one)) {
+ stockInRecordService.batchDelete(Collections.singletonList(one.getId()));
+ StockInventoryDto stockInventoryDto = new StockInventoryDto();
+ stockInventoryDto.setRecordId(recordId);
+ stockInventoryDto.setRecordType(recordType);
+ stockInventoryDto.setQualitity(one.getStockInNum());
+ stockInventoryDto.setProductModelId(one.getProductModelId());
+ stockInventoryDto.setBatchNo(one.getBatchNo());
+ stockInventoryMapper.updateSubtractStockInventory((stockInventoryDto));
+ }
+
+ }
+
+ public void deleteStockOutRecord(Long recordId, String recordType) {
+ StockOutRecord one = stockOutRecordService.getOne(new QueryWrapper<StockOutRecord>()
+ .lambda().eq(StockOutRecord::getRecordId, recordId)
+ .eq(StockOutRecord::getRecordType, recordType));
+ if (ObjectUtils.isNotEmpty(one)) {
+ stockOutRecordService.batchDelete(Collections.singletonList(one.getId()));
+ StockInventoryDto stockInventoryDto = new StockInventoryDto();
+ stockInventoryDto.setRecordId(recordId);
+ stockInventoryDto.setRecordType(recordType);
+ stockInventoryDto.setQualitity(one.getStockOutNum());
+ stockInventoryDto.setProductModelId(one.getProductModelId());
+ stockInventoryDto.setBatchNo(one.getBatchNo());
+ stockInventoryDto.setWarehouseInfoId(one.getWarehouseInfoId());
+ stockInventoryMapper.updateAddStockInventory((stockInventoryDto));
+ }
+
+ }
+
+ private Long resolveWarehouseInfoId(Long warehouseInfoId, Long productModelId, String batchNo) {
+ if (warehouseInfoId == null) {
+ throw new IllegalArgumentException("warehouseInfoId涓嶈兘涓虹┖");
+ }
+ return warehouseInfoId;
}
}
--
Gitblit v1.9.3