From bf0492b060a76b94846756656fdb80b213015089 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Mon, 11 Nov 2024 20:55:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8D=95=E6=8D=AE=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BD=93=E5=89=8D=E5=BA=93=E5=AD=98=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/WarehouseGoodsService.java | 2 +- .../service/WarehouseReceiptService.java | 22 +++++++++++++++++++ .../dto/CreateWarehouseReceiptDetailDto.java | 3 ++- .../entity/WarehouseReceiptDetailEntity.java | 4 +++- 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/main/java/cn/lihongjie/coal/warehouseGoods/service/WarehouseGoodsService.java b/src/main/java/cn/lihongjie/coal/warehouseGoods/service/WarehouseGoodsService.java index a8a53b0a..aee8fab6 100644 --- a/src/main/java/cn/lihongjie/coal/warehouseGoods/service/WarehouseGoodsService.java +++ b/src/main/java/cn/lihongjie/coal/warehouseGoods/service/WarehouseGoodsService.java @@ -80,7 +80,7 @@ public class WarehouseGoodsService public Integer goodsCount(GoodsCountRequest request) { return commonMapper.toInt((em.createQuery( - "select sum(case when receipt.receiptType = '0' then number when receipt.receiptType = '1' then number * -1 end ) from WarehouseReceiptDetailEntity where warehouse.id = :warehouseId and goods.id = :goodsIds") + "select sum(case when receiptType = '0' then number when receiptType = '1' then number * -1 end ) from WarehouseReceiptDetailEntity where warehouse.id = :warehouseId and goods.id = :goodsIds") .setParameter("warehouseId", request.getWarehouseId()) .setParameter("goodsIds", request.getGoodsId()) .getSingleResult() + "")); diff --git a/src/main/java/cn/lihongjie/coal/warehouseReceipt/service/WarehouseReceiptService.java b/src/main/java/cn/lihongjie/coal/warehouseReceipt/service/WarehouseReceiptService.java index e1354738..bff877fc 100644 --- a/src/main/java/cn/lihongjie/coal/warehouseReceipt/service/WarehouseReceiptService.java +++ b/src/main/java/cn/lihongjie/coal/warehouseReceipt/service/WarehouseReceiptService.java @@ -3,6 +3,9 @@ package cn.lihongjie.coal.warehouseReceipt.service; import cn.lihongjie.coal.base.dto.CommonQuery; import cn.lihongjie.coal.base.dto.IdRequest; import cn.lihongjie.coal.base.service.BaseService; +import cn.lihongjie.coal.exception.BizException; +import cn.lihongjie.coal.warehouseGoods.dto.GoodsCountRequest; +import cn.lihongjie.coal.warehouseGoods.service.WarehouseGoodsService; import cn.lihongjie.coal.warehouseReceipt.dto.CreateWarehouseReceiptDto; import cn.lihongjie.coal.warehouseReceipt.dto.UpdateWarehouseReceiptDto; import cn.lihongjie.coal.warehouseReceipt.dto.WarehouseReceiptDto; @@ -49,6 +52,8 @@ public class WarehouseReceiptService @Autowired WarehouseReceiptDetailRepository warehouseReceiptDetailRepository; + @Autowired + private WarehouseGoodsService warehouseGoodsService; public WarehouseReceiptDto create(CreateWarehouseReceiptDto request) { @@ -86,6 +91,23 @@ public class WarehouseReceiptService warehouseReceiptDetailEntity.getAmount(), 0.0)) .setScale(2, RoundingMode.HALF_UP) .doubleValue()); + + warehouseReceiptDetailEntity.setReceiptType(entity.getReceiptType()); + + + GoodsCountRequest request = new GoodsCountRequest(); + request.setGoodsId(warehouseReceiptDetailEntity.getGoods().getId()); + request.setWarehouseId(warehouseReceiptDetailEntity.getWarehouse().getId()); + + Integer goodsCount = warehouseGoodsService.goodsCount(request); + + if (ObjectUtils.notEqual(goodsCount, warehouseReceiptDetailEntity.getNumber())){ + + throw new BizException("商品 " + + warehouseGoodsService.getById(warehouseReceiptDetailEntity.getGoods().getId()).getName() + + "库存数量发生变化, 请重新操作"); + } + } diff --git a/src/main/java/cn/lihongjie/coal/warehouseReceiptDetail/dto/CreateWarehouseReceiptDetailDto.java b/src/main/java/cn/lihongjie/coal/warehouseReceiptDetail/dto/CreateWarehouseReceiptDetailDto.java index b947ba19..3f5ee079 100644 --- a/src/main/java/cn/lihongjie/coal/warehouseReceiptDetail/dto/CreateWarehouseReceiptDetailDto.java +++ b/src/main/java/cn/lihongjie/coal/warehouseReceiptDetail/dto/CreateWarehouseReceiptDetailDto.java @@ -26,7 +26,8 @@ public class CreateWarehouseReceiptDetailDto extends OrgCommonDto { @Comment("数量") private Double number; - + @Comment("现有数量") + private Double stock; @Comment("单价") private Double price; diff --git a/src/main/java/cn/lihongjie/coal/warehouseReceiptDetail/entity/WarehouseReceiptDetailEntity.java b/src/main/java/cn/lihongjie/coal/warehouseReceiptDetail/entity/WarehouseReceiptDetailEntity.java index 03980c9f..53d18fe7 100644 --- a/src/main/java/cn/lihongjie/coal/warehouseReceiptDetail/entity/WarehouseReceiptDetailEntity.java +++ b/src/main/java/cn/lihongjie/coal/warehouseReceiptDetail/entity/WarehouseReceiptDetailEntity.java @@ -43,11 +43,13 @@ public class WarehouseReceiptDetailEntity extends OrgCommonEntity { @ManyToOne private WarehouseReceiptEntity receipt; + @Comment("现有库存") + private Double stock; + @Comment("数量") private Double number; - @Comment("单据类型") private String receiptType;