diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInSaveReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInSaveReqVO.java index 80edeec..ba2feb3 100644 --- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInSaveReqVO.java +++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/purchase/vo/in/ErpPurchaseInSaveReqVO.java @@ -1,6 +1,8 @@ package cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.in; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.Valid; +import jakarta.validation.constraints.DecimalMin; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -39,6 +41,7 @@ public class ErpPurchaseInSaveReqVO { private String remark; @Schema(description = "入库清单列表") + @Valid private List items; @Data @@ -68,6 +71,7 @@ public class ErpPurchaseInSaveReqVO { @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") @NotNull(message = "产品数量不能为空") + @DecimalMin(value = "0", inclusive = false, message = "产品数量必须大于 0") private BigDecimal count; @Schema(description = "税率,百分比", example = "99.88") diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java index 63ff1ca..75d1671 100644 --- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java +++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/stock/ErpStockMapper.java @@ -36,6 +36,10 @@ public interface ErpStockMapper extends BaseMapperX { } default int updateCountIncrement(Long id, BigDecimal count, boolean negativeEnable) { + // 数量为 0 无库存增量(历史脏数据防护):直接跳过,避免生成空 SET 的 UPDATE 抛异常 500 + if (count.compareTo(BigDecimal.ZERO) == 0) { + return 0; + } LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper() .eq(ErpStockDO::getId, id); if (count.compareTo(BigDecimal.ZERO) > 0) {