Browse Source

fix: 库存支持负值,移除扣减时的库存不足限制

移除 decreaseStock 中 beforeStock < quantity 的异常抛出,以及前端扣减按钮
的禁用和数量校验,允许库存扣至负值以适应识别错误导致的误扣减场景。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
skyline 1 week ago
parent
commit
7ef4d6dbe9

+ 2 - 8
haha-admin-web/src/views/inventory/components/DeviceInventoryDetail.vue

@@ -185,10 +185,6 @@ async function handleStockOut(row: GoodsDisplay) {
     message("请输入大于 0 的数量", { type: "warning" });
     message("请输入大于 0 的数量", { type: "warning" });
     return;
     return;
   }
   }
-  if (quantity > row.realStock) {
-    message(`扣减数量不能超过当前库存(${row.realStock})`, { type: "warning" });
-    return;
-  }
   try {
   try {
     await adjustStock({
     await adjustStock({
       deviceId: deviceId.value,
       deviceId: deviceId.value,
@@ -246,7 +242,7 @@ defineExpose({ open });
           <el-table-column label="实时库存" width="90" align="center">
           <el-table-column label="实时库存" width="90" align="center">
             <template #default="{ row }">
             <template #default="{ row }">
               <el-tag
               <el-tag
-                :type="row.realStock === 0 ? 'danger' : row.realStock <= row.warningThreshold ? 'warning' : 'success'"
+                :type="row.realStock <= 0 ? 'danger' : row.realStock <= row.warningThreshold ? 'warning' : 'success'"
                 size="small"
                 size="small"
               >
               >
                 {{ row.realStock }}
                 {{ row.realStock }}
@@ -265,7 +261,6 @@ defineExpose({ open });
                   class="stock-btn stock-btn-minus"
                   class="stock-btn stock-btn-minus"
                   size="small"
                   size="small"
                   circle
                   circle
-                  :disabled="row.realStock <= 0"
                   @click="handleStockOut(row)"
                   @click="handleStockOut(row)"
                 >
                 >
@@ -314,7 +309,7 @@ defineExpose({ open });
           <el-table-column label="实时库存" width="90" align="center">
           <el-table-column label="实时库存" width="90" align="center">
             <template #default="{ row }">
             <template #default="{ row }">
               <el-tag
               <el-tag
-                :type="row.realStock === 0 ? 'danger' : row.realStock <= row.warningThreshold ? 'warning' : 'success'"
+                :type="row.realStock <= 0 ? 'danger' : row.realStock <= row.warningThreshold ? 'warning' : 'success'"
                 size="small"
                 size="small"
               >
               >
                 {{ row.realStock }}
                 {{ row.realStock }}
@@ -333,7 +328,6 @@ defineExpose({ open });
                   class="stock-btn stock-btn-minus"
                   class="stock-btn stock-btn-minus"
                   size="small"
                   size="small"
                   circle
                   circle
-                  :disabled="row.realStock <= 0"
                   @click="handleStockOut(row)"
                   @click="handleStockOut(row)"
                 >
                 >

+ 0 - 4
haha-service/src/main/java/com/haha/service/impl/DeviceInventoryServiceImpl.java

@@ -150,10 +150,6 @@ public class DeviceInventoryServiceImpl extends ServiceImpl<DeviceInventoryMappe
         }
         }
 
 
         int beforeStock = inventory.getStock();
         int beforeStock = inventory.getStock();
-        if (beforeStock < quantity) {
-            throw new BusinessException(400, "库存不足,当前库存: " + beforeStock + ",需扣减: " + quantity);
-        }
-
         int newStock = beforeStock - quantity;
         int newStock = beforeStock - quantity;
         inventory.setStock(newStock);
         inventory.setStock(newStock);
         inventory.setUpdateTime(LocalDateTime.now());
         inventory.setUpdateTime(LocalDateTime.now());