From 2e1ad4cc8f0dc32b15288673818f6446dc511a32 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Wed, 11 Dec 2024 20:50:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=95=B0=E6=8D=AE=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/WarehouseRepository.java | 10 +++- .../warehouse/service/WarehouseService.java | 6 +++ .../service/WarehouseGoodsService.java | 11 +++++ .../WarehouseGoodsBrandRepository.java | 11 ++++- .../service/WarehouseGoodsBrandService.java | 6 +++ .../WarehouseGoodsCategoryRepository.java | 5 +- .../WarehouseGoodsUnitRepository.java | 9 +++- .../service/WarehouseGoodsUnitService.java | 6 +++ .../service/WarehouseReceiptService.java | 46 +++++++++++-------- .../repository/WarehouseShelveRepository.java | 9 +++- .../service/WarehouseShelveService.java | 6 +++ .../WarehouseSupplierRepository.java | 9 +++- .../service/WarehouseSupplierService.java | 7 +++ 13 files changed, 116 insertions(+), 25 deletions(-) diff --git a/src/main/java/cn/lihongjie/coal/warehouse/repository/WarehouseRepository.java b/src/main/java/cn/lihongjie/coal/warehouse/repository/WarehouseRepository.java index 04401550..0de0f51a 100644 --- a/src/main/java/cn/lihongjie/coal/warehouse/repository/WarehouseRepository.java +++ b/src/main/java/cn/lihongjie/coal/warehouse/repository/WarehouseRepository.java @@ -3,7 +3,15 @@ package cn.lihongjie.coal.warehouse.repository; import cn.lihongjie.coal.base.dao.BaseRepository; import cn.lihongjie.coal.warehouse.entity.WarehouseEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository -public interface WarehouseRepository extends BaseRepository {} +public interface WarehouseRepository extends BaseRepository { + @Query("select exists (select 1 from WarehouseGoodsEntity e where e.defaultWarehouse.id in :ids union all select 1 from WarehouseReceiptDetailEntity d where d.warehouse.id in :ids or d.warehouse2.id in :ids) ") + boolean isLinked(@Param("ids") List ids); + +} diff --git a/src/main/java/cn/lihongjie/coal/warehouse/service/WarehouseService.java b/src/main/java/cn/lihongjie/coal/warehouse/service/WarehouseService.java index dd4af2d9..5dec8ab0 100644 --- a/src/main/java/cn/lihongjie/coal/warehouse/service/WarehouseService.java +++ b/src/main/java/cn/lihongjie/coal/warehouse/service/WarehouseService.java @@ -3,6 +3,7 @@ package cn.lihongjie.coal.warehouse.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.warehouse.dto.CreateWarehouseDto; import cn.lihongjie.coal.warehouse.dto.UpdateWarehouseDto; import cn.lihongjie.coal.warehouse.dto.WarehouseDto; @@ -61,6 +62,11 @@ public class WarehouseService extends BaseService 0) { + throw new BizException("该商品已经被使用,无法删除"); + } + this.repository.deleteAllById(request.getIds()); } diff --git a/src/main/java/cn/lihongjie/coal/warehouseGoodsBrand/repository/WarehouseGoodsBrandRepository.java b/src/main/java/cn/lihongjie/coal/warehouseGoodsBrand/repository/WarehouseGoodsBrandRepository.java index 8878e8df..efe7b305 100644 --- a/src/main/java/cn/lihongjie/coal/warehouseGoodsBrand/repository/WarehouseGoodsBrandRepository.java +++ b/src/main/java/cn/lihongjie/coal/warehouseGoodsBrand/repository/WarehouseGoodsBrandRepository.java @@ -3,7 +3,16 @@ package cn.lihongjie.coal.warehouseGoodsBrand.repository; import cn.lihongjie.coal.base.dao.BaseRepository; import cn.lihongjie.coal.warehouseGoodsBrand.entity.WarehouseGoodsBrandEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository -public interface WarehouseGoodsBrandRepository extends BaseRepository {} +public interface WarehouseGoodsBrandRepository extends BaseRepository { + + + @Query("select exists (select 1 from WarehouseGoodsEntity e where e.brand.id in :ids ) ") + boolean isLinked(@Param("ids") List ids); +} diff --git a/src/main/java/cn/lihongjie/coal/warehouseGoodsBrand/service/WarehouseGoodsBrandService.java b/src/main/java/cn/lihongjie/coal/warehouseGoodsBrand/service/WarehouseGoodsBrandService.java index a17037bf..90ce8edb 100644 --- a/src/main/java/cn/lihongjie/coal/warehouseGoodsBrand/service/WarehouseGoodsBrandService.java +++ b/src/main/java/cn/lihongjie/coal/warehouseGoodsBrand/service/WarehouseGoodsBrandService.java @@ -59,6 +59,12 @@ public class WarehouseGoodsBrandService } public void delete(IdRequest request) { + + if (this.repository.isLinked(request.getIds())){ + throw new RuntimeException("品牌已被关联,无法删除"); + } + + this.repository.deleteAllById(request.getIds()); } diff --git a/src/main/java/cn/lihongjie/coal/warehouseGoodsCategory/repository/WarehouseGoodsCategoryRepository.java b/src/main/java/cn/lihongjie/coal/warehouseGoodsCategory/repository/WarehouseGoodsCategoryRepository.java index e654d28e..24b53f38 100644 --- a/src/main/java/cn/lihongjie/coal/warehouseGoodsCategory/repository/WarehouseGoodsCategoryRepository.java +++ b/src/main/java/cn/lihongjie/coal/warehouseGoodsCategory/repository/WarehouseGoodsCategoryRepository.java @@ -4,6 +4,7 @@ import cn.lihongjie.coal.base.dao.BaseRepository; import cn.lihongjie.coal.warehouseGoodsCategory.entity.WarehouseGoodsCategoryEntity; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.List; @@ -11,6 +12,6 @@ import java.util.List; @Repository public interface WarehouseGoodsCategoryRepository extends BaseRepository { - @Query("select false") - boolean isLinked(List ids); + @Query("select exists (select 1 from WarehouseGoodsEntity e where e.category.id in :ids ) ") + boolean isLinked(@Param("ids") List ids); } diff --git a/src/main/java/cn/lihongjie/coal/warehouseGoodsUnit/repository/WarehouseGoodsUnitRepository.java b/src/main/java/cn/lihongjie/coal/warehouseGoodsUnit/repository/WarehouseGoodsUnitRepository.java index f7462c69..913bc7ff 100644 --- a/src/main/java/cn/lihongjie/coal/warehouseGoodsUnit/repository/WarehouseGoodsUnitRepository.java +++ b/src/main/java/cn/lihongjie/coal/warehouseGoodsUnit/repository/WarehouseGoodsUnitRepository.java @@ -3,7 +3,14 @@ package cn.lihongjie.coal.warehouseGoodsUnit.repository; import cn.lihongjie.coal.base.dao.BaseRepository; import cn.lihongjie.coal.warehouseGoodsUnit.entity.WarehouseGoodsUnitEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository -public interface WarehouseGoodsUnitRepository extends BaseRepository {} +public interface WarehouseGoodsUnitRepository extends BaseRepository { + @Query("select exists (select 1 from WarehouseGoodsEntity e where e.unit.id in :ids ) ") + boolean isLinked(@Param("ids")List ids); +} diff --git a/src/main/java/cn/lihongjie/coal/warehouseGoodsUnit/service/WarehouseGoodsUnitService.java b/src/main/java/cn/lihongjie/coal/warehouseGoodsUnit/service/WarehouseGoodsUnitService.java index ffc5b188..f35cc3a6 100644 --- a/src/main/java/cn/lihongjie/coal/warehouseGoodsUnit/service/WarehouseGoodsUnitService.java +++ b/src/main/java/cn/lihongjie/coal/warehouseGoodsUnit/service/WarehouseGoodsUnitService.java @@ -4,6 +4,7 @@ import cn.lihongjie.coal.base.dto.CommonQuery; import cn.lihongjie.coal.base.dto.IdRequest; import cn.lihongjie.coal.base.mapper.CommonMapper; import cn.lihongjie.coal.base.service.BaseService; +import cn.lihongjie.coal.exception.BizException; import cn.lihongjie.coal.warehouseGoodsUnit.dto.BatchAddRequest; import cn.lihongjie.coal.warehouseGoodsUnit.dto.CreateWarehouseGoodsUnitDto; import cn.lihongjie.coal.warehouseGoodsUnit.dto.UpdateWarehouseGoodsUnitDto; @@ -60,6 +61,11 @@ public class WarehouseGoodsUnitService } public void delete(IdRequest request) { + + if (this.repository.isLinked(request.getIds())) { + throw new BizException("已经关联了商品,不能删除"); + } + this.repository.deleteAllById(request.getIds()); } 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 e9666eed..a5731e50 100644 --- a/src/main/java/cn/lihongjie/coal/warehouseReceipt/service/WarehouseReceiptService.java +++ b/src/main/java/cn/lihongjie/coal/warehouseReceipt/service/WarehouseReceiptService.java @@ -82,7 +82,6 @@ public class WarehouseReceiptService createType2Receipt(entity); } - return getById(entity.getId()); } @@ -266,15 +265,18 @@ public class WarehouseReceiptService WarehouseGoodsDto goods = warehouseGoodsService.getById( warehouseReceiptDetailEntity.getGoods().getId()); -// if (ObjectUtils.notEqual( -// goodsCount, warehouseReceiptDetailEntity.getStock().intValue())) { -// -// throw new BizException("商品 " + goods.getName() + " 库存数量发生变化, 请重新操作"); -// } + // if (ObjectUtils.notEqual( + // goodsCount, + // warehouseReceiptDetailEntity.getStock().intValue())) { + // + // throw new BizException("商品 " + goods.getName() + " 库存数量发生变化, + // 请重新操作"); + // } if (StringUtils.equals(entity.getReceiptType(), "1")) { if (goodsCount < warehouseReceiptDetailEntity.getNumber()) { - throw new BizException("商品 " + goods.getName() + " 库存数量不足: 当前库存数量为 " + goodsCount); + throw new BizException( + "商品 " + goods.getName() + " 库存数量不足: 当前库存数量为 " + goodsCount); } } } @@ -343,20 +345,13 @@ public class WarehouseReceiptService this.repository.deleteById(request.getId()); - - - - CreateWarehouseReceiptDto dto = new CreateWarehouseReceiptDto(); BeanUtil.copyProperties(request, dto); dto.setId(null); dto.getDetail().forEach(x -> x.setId(null)); return this.create(dto); - } - - public void delete(IdRequest dto) { /** 获取所有单据 1。 用户选中的 2. 用户选中的单据的子单据 */ @@ -574,17 +569,19 @@ public class WarehouseReceiptService round((sum(d.amount) filter (where d.receipt_type = '1') over (partition by w.id, gs.id<#if shelveSummary>,ws.id))::::numeric, 2) as type1_amount, - round((sum(d.amount) + case when (sum(d.number) + filter (where d.receipt_type = '0') over (partition by w.id, gs.id <#if shelveSummary>,ws.id))::::numeric !=0 then round((sum(d.amount) filter (where d.receipt_type = '0') over (partition by w.id, gs.id <#if shelveSummary>,ws.id) / sum(d.number) filter (where d.receipt_type = '0') over (partition by w.id, gs.id <#if shelveSummary>,ws.id))::::numeric, - 2) as type0_price, + 2) else 0 end as type0_price, - round((sum(d.amount) + case when (sum(d.number) + filter (where d.receipt_type = '1') over (partition by w.id, gs.id <#if shelveSummary>,ws.id))::::numeric !=0 then round((sum(d.amount) filter (where d.receipt_type = '1') over (partition by w.id, gs.id <#if shelveSummary>,ws.id) / sum(d.number) filter (where d.receipt_type = '1') over (partition by w.id, gs.id <#if shelveSummary>,ws.id))::::numeric, - 2) as type1_price + 2) else 0 end as type1_price from t_warehouse_goods gs inner join t_warehouse w on 1 = 1 <#if excludeEmpty> @@ -882,4 +879,17 @@ from ( return new PageImpl<>(ans, PageRequest.of(0, request.getPageSize()), count); } + + public int countByGoodsId(List ids) { + + return (int) + this.repository.count( + (Specification) + (root, query, criteriaBuilder) -> + criteriaBuilder.and( + root.get("detail") + .get("goods") + .get("id") + .in(ids))); + } } diff --git a/src/main/java/cn/lihongjie/coal/warehouseShelve/repository/WarehouseShelveRepository.java b/src/main/java/cn/lihongjie/coal/warehouseShelve/repository/WarehouseShelveRepository.java index 6d80204b..0278b72f 100644 --- a/src/main/java/cn/lihongjie/coal/warehouseShelve/repository/WarehouseShelveRepository.java +++ b/src/main/java/cn/lihongjie/coal/warehouseShelve/repository/WarehouseShelveRepository.java @@ -3,7 +3,14 @@ package cn.lihongjie.coal.warehouseShelve.repository; import cn.lihongjie.coal.base.dao.BaseRepository; import cn.lihongjie.coal.warehouseShelve.entity.WarehouseShelveEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository -public interface WarehouseShelveRepository extends BaseRepository {} +public interface WarehouseShelveRepository extends BaseRepository { + @Query("select exists (select 1 from WarehouseGoodsEntity e where e.defaultShelve.id in :ids union all select 1 from WarehouseReceiptDetailEntity d where d.shelve.id in :ids or d.shelve2.id in :ids) ") + boolean isLinked(@Param("ids") List ids); +} diff --git a/src/main/java/cn/lihongjie/coal/warehouseShelve/service/WarehouseShelveService.java b/src/main/java/cn/lihongjie/coal/warehouseShelve/service/WarehouseShelveService.java index 5128fe03..c00de2c0 100644 --- a/src/main/java/cn/lihongjie/coal/warehouseShelve/service/WarehouseShelveService.java +++ b/src/main/java/cn/lihongjie/coal/warehouseShelve/service/WarehouseShelveService.java @@ -3,6 +3,7 @@ package cn.lihongjie.coal.warehouseShelve.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.warehouseShelve.dto.CreateWarehouseShelveDto; import cn.lihongjie.coal.warehouseShelve.dto.UpdateWarehouseShelveDto; import cn.lihongjie.coal.warehouseShelve.dto.WarehouseShelveDto; @@ -48,6 +49,11 @@ public class WarehouseShelveService } public void delete(IdRequest request) { + + if (this.repository.isLinked(request.getIds())) { + throw new BizException("删除失败,该货架已被使用"); + } + this.repository.deleteAllById(request.getIds()); } diff --git a/src/main/java/cn/lihongjie/coal/warehouseSupplier/repository/WarehouseSupplierRepository.java b/src/main/java/cn/lihongjie/coal/warehouseSupplier/repository/WarehouseSupplierRepository.java index 4efeeb14..dbec63fd 100644 --- a/src/main/java/cn/lihongjie/coal/warehouseSupplier/repository/WarehouseSupplierRepository.java +++ b/src/main/java/cn/lihongjie/coal/warehouseSupplier/repository/WarehouseSupplierRepository.java @@ -3,7 +3,14 @@ package cn.lihongjie.coal.warehouseSupplier.repository; import cn.lihongjie.coal.base.dao.BaseRepository; import cn.lihongjie.coal.warehouseSupplier.entity.WarehouseSupplierEntity; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository -public interface WarehouseSupplierRepository extends BaseRepository {} +public interface WarehouseSupplierRepository extends BaseRepository { + @Query("select exists (select 1 from WarehouseReceiptDetailEntity e where e.supplier.id in :ids union all select 1 from WarehouseGoodsEntity g where g.defaultSupplier.id in :ids) ") + boolean isLinked(@Param("ids") List ids); +} diff --git a/src/main/java/cn/lihongjie/coal/warehouseSupplier/service/WarehouseSupplierService.java b/src/main/java/cn/lihongjie/coal/warehouseSupplier/service/WarehouseSupplierService.java index 32413a9c..320686dd 100644 --- a/src/main/java/cn/lihongjie/coal/warehouseSupplier/service/WarehouseSupplierService.java +++ b/src/main/java/cn/lihongjie/coal/warehouseSupplier/service/WarehouseSupplierService.java @@ -3,6 +3,7 @@ package cn.lihongjie.coal.warehouseSupplier.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.warehouseSupplier.dto.CreateWarehouseSupplierDto; import cn.lihongjie.coal.warehouseSupplier.dto.UpdateWarehouseSupplierDto; import cn.lihongjie.coal.warehouseSupplier.dto.WarehouseSupplierDto; @@ -48,6 +49,12 @@ public class WarehouseSupplierService } public void delete(IdRequest request) { + + if (this.repository.isLinked(request.getIds())) { + throw new BizException("删除失败,该供应商已被使用"); + } + + this.repository.deleteAllById(request.getIds()); }