From 02047d917004c8f7dc44627c847583e54c297226 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期五, 29 五月 2026 15:16:18 +0800
Subject: [PATCH] 入库管理的审批,支持修改入库数量
---
src/main/java/com/ruoyi/stock/controller/StockInRecordController.java | 6 +++---
src/main/java/com/ruoyi/production/service/impl/ProductionOrderPickServiceImpl.java | 7 +++++--
src/main/java/com/ruoyi/stock/service/StockInRecordService.java | 2 +-
src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java | 30 +++++++++++++++++++++++-------
src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java | 14 ++++++++++++++
5 files changed, 46 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionOrderPickServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderPickServiceImpl.java
index 554b95e..5b566b2 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionOrderPickServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionOrderPickServiceImpl.java
@@ -18,6 +18,7 @@
import com.ruoyi.production.pojo.ProductionOrderPick;
import com.ruoyi.production.pojo.ProductionOrderPickRecord;
import com.ruoyi.production.service.ProductionOrderPickService;
+import com.ruoyi.stock.dto.StockInRecordDto;
import com.ruoyi.stock.dto.StockInventoryDto;
import com.ruoyi.stock.mapper.StockInventoryMapper;
import com.ruoyi.stock.pojo.StockInRecord;
@@ -726,9 +727,11 @@
if (stockInRecord == null || stockInRecord.getId() == null) {
throw new ServiceException("鍥炶ˉ搴撳瓨澶辫触锛氭湭鎵惧埌瀵瑰簲鍏ュ簱鐢宠璁板綍");
}
+ StockInRecordDto.StockInRecordApproveItemDto approveItem = new StockInRecordDto.StockInRecordApproveItemDto();
+ approveItem.setId(stockInRecord.getId());
stockInRecordService.batchApprove(
- Collections.singletonList(stockInRecord.getId()),
- ReviewStatusEnum.APPROVED.getCode()
+ ReviewStatusEnum.APPROVED.getCode(),
+ Collections.singletonList(approveItem)
);
} catch (ServiceException ex) {
throw ex;
diff --git a/src/main/java/com/ruoyi/stock/controller/StockInRecordController.java b/src/main/java/com/ruoyi/stock/controller/StockInRecordController.java
index f4ca0cc..774a95c 100644
--- a/src/main/java/com/ruoyi/stock/controller/StockInRecordController.java
+++ b/src/main/java/com/ruoyi/stock/controller/StockInRecordController.java
@@ -61,12 +61,12 @@
@PostMapping("/approve")
@Log(title = "鍏ュ簱绠$悊-瀹℃壒鍏ュ簱", businessType = BusinessType.UPDATE)
- @Operation(summary = "鎵归噺瀹℃壒鍏ュ簱璁板綍")
+ @Operation(summary = "鎵归噺瀹℃壒鍏ュ簱璁板綍锛堟敮鎸佷慨鏀瑰叆搴撴暟閲忥級")
public AjaxResult approve(@RequestBody StockInRecordDto approveDto) {
- if(CollectionUtils.isEmpty(approveDto.getIds())){
+ if(CollectionUtils.isEmpty(approveDto.getItems())){
return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
}
- stockInRecordService.batchApprove(approveDto.getIds(), approveDto.getApprovalStatus());
+ stockInRecordService.batchApprove(approveDto.getApprovalStatus(), approveDto.getItems());
return AjaxResult.success();
}
diff --git a/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java b/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
index f4f03ba..a4a6101 100644
--- a/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
+++ b/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
@@ -4,6 +4,7 @@
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
+import java.math.BigDecimal;
import java.util.List;
@@ -43,4 +44,17 @@
@Schema(description = "婧愬崟鍙�")
private String sourceOrderNo;
+ private List<StockInRecordApproveItemDto> items;
+
+ @Data
+ @Schema(description = "鍏ュ簱瀹℃壒鏄庣粏椤�")
+ public static class StockInRecordApproveItemDto {
+
+ @Schema(description = "鍏ュ簱璁板綍ID")
+ private Long id;
+
+ @Schema(description = "鍏ュ簱鏁伴噺")
+ private BigDecimal stockInNum;
+
+ }
}
diff --git a/src/main/java/com/ruoyi/stock/service/StockInRecordService.java b/src/main/java/com/ruoyi/stock/service/StockInRecordService.java
index 117b70f..9742c3a 100644
--- a/src/main/java/com/ruoyi/stock/service/StockInRecordService.java
+++ b/src/main/java/com/ruoyi/stock/service/StockInRecordService.java
@@ -22,7 +22,7 @@
void exportStockInRecord(HttpServletResponse response, StockInRecordDto stockInRecordDto);
- int batchApprove(List<Long> ids, Integer approvalStatus);
+ int batchApprove(Integer approvalStatus, List<StockInRecordDto.StockInRecordApproveItemDto> items);
int batchReAudit(List<Long> ids);
}
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
index 7facfcf..2436940 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -207,14 +207,18 @@
@Override
@Transactional(rollbackFor = Exception.class)
- public int batchApprove(List<Long> ids, Integer approvalStatus) {
- if (CollectionUtils.isEmpty(ids)) {
+ public int batchApprove(Integer approvalStatus, List<StockInRecordDto.StockInRecordApproveItemDto> items) {
+ if (CollectionUtils.isEmpty(items)) {
throw new BaseException("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
}
if (approvalStatus == null || (!ReviewStatusEnum.APPROVED.getCode().equals(approvalStatus) && !ReviewStatusEnum.REJECTED.getCode().equals(approvalStatus))) {
throw new BaseException("瀹℃壒鐘舵�佸�兼棤鏁�");
}
- for (Long id : ids) {
+ for (StockInRecordDto.StockInRecordApproveItemDto item : items) {
+ Long id = item.getId();
+ if (id == null) {
+ throw new BaseException("鍏ュ簱璁板綍ID涓嶈兘涓虹┖");
+ }
StockInRecord stockInRecord = stockInRecordMapper.selectById(id);
if (stockInRecord == null) {
throw new BaseException("鍏ュ簱璁板綍涓嶅瓨鍦�,鏃犳硶瀹℃壒!!!");
@@ -222,6 +226,17 @@
if (stockInRecord.getApprovalStatus() != null && !ReviewStatusEnum.PENDING_REVIEW.getCode().equals(stockInRecord.getApprovalStatus())) {
throw new BaseException("鍙湁寰呭鎵圭姸鎬佺殑璁板綍鎵嶈兘瀹℃壒,鍏ュ簱鎵规:" + stockInRecord.getInboundBatches());
}
+
+ // 鑾峰彇瀹℃壒鏃朵慨鏀圭殑鍏ュ簱鏁伴噺锛屽鏋滄病鏈変慨鏀瑰垯浣跨敤鍘熸暟閲�
+ final BigDecimal finalStockInNum;
+ if (item.getStockInNum() != null && item.getStockInNum().compareTo(BigDecimal.ZERO) > 0) {
+ finalStockInNum = item.getStockInNum();
+ // 鏇存柊鍏ュ簱璁板綍鐨勫叆搴撴暟閲�
+ stockInRecord.setStockInNum(finalStockInNum);
+ } else {
+ finalStockInNum = stockInRecord.getStockInNum();
+ }
+
stockInRecord.setApprovalStatus(approvalStatus);
stockInRecordMapper.updateById(stockInRecord);
@@ -237,10 +252,11 @@
// 鍚堟牸鍏ュ簱 -> 鍏堟煡搴撳瓨锛屽瓨鍦ㄥ垯鏇存柊锛屼笉瀛樺湪鍒欐柊澧�
StockInventory stockInventory = getStockInventory(stockInRecord.getProductModelId(), stockInRecord.getBatchNo());
StockInventoryDto stockInventoryDto = getStockInventoryDto(stockInRecord);
+ stockInventoryDto.setQualitity(finalStockInNum);
if (stockInventory == null) {
stockInventoryMapper.insert(new StockInventory() {{
setProductModelId(stockInRecord.getProductModelId());
- setQualitity(stockInRecord.getStockInNum());
+ setQualitity(finalStockInNum);
setBatchNo(stockInRecord.getBatchNo());
setRemark(stockInRecord.getRemark());
setWarnNum(stockInRecord.getWarnNum());
@@ -257,14 +273,14 @@
StockUninventoryDto stockUninventoryDto = new StockUninventoryDto();
stockUninventoryDto.setProductModelId(stockInRecord.getProductModelId());
stockUninventoryDto.setBatchNo(stockInRecord.getBatchNo());
- stockUninventoryDto.setQualitity(stockInRecord.getStockInNum());
+ stockUninventoryDto.setQualitity(finalStockInNum);
stockUninventoryDto.setRemark(stockInRecord.getRemark());
stockUninventoryDto.setManufacturerId(stockInRecord.getManufacturerId());
stockUninventoryDto.setSource(stockInRecord.getSource());
if (stockUninventory == null) {
stockUninventoryMapper.insert(new StockUninventory() {{
setProductModelId(stockInRecord.getProductModelId());
- setQualitity(stockInRecord.getStockInNum());
+ setQualitity(finalStockInNum);
setBatchNo(stockInRecord.getBatchNo());
setRemark(stockInRecord.getRemark());
setManufacturerId(stockInRecord.getManufacturerId());
@@ -277,7 +293,7 @@
}
}
}
- return ids.size();
+ return items.size();
}
private static @NonNull StockInventoryDto getStockInventoryDto(StockInRecord stockInRecord) {
--
Gitblit v1.9.3