From ed16e86aa6f3b912d02a7f370494a36c30cfd446 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Sun, 29 Dec 2024 21:11:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=95=86=E5=93=81?= =?UTF-8?q?=E4=BB=B7=E6=A0=BC=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WarehouseGoodsController.java | 5 ++- .../service/WarehouseGoodsService.java | 40 +++++++++++++++++-- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/src/main/java/cn/lihongjie/coal/warehouseGoods/controller/WarehouseGoodsController.java b/src/main/java/cn/lihongjie/coal/warehouseGoods/controller/WarehouseGoodsController.java index 57c871c5..4353317c 100644 --- a/src/main/java/cn/lihongjie/coal/warehouseGoods/controller/WarehouseGoodsController.java +++ b/src/main/java/cn/lihongjie/coal/warehouseGoods/controller/WarehouseGoodsController.java @@ -58,7 +58,10 @@ public class WarehouseGoodsController { return this.service.searchByCode(request); } - + @PostMapping("/goodsPrice") + public Object goodsPrice(@RequestBody IdRequest request) { + return this.service.goodsPrice(request); + } } 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 ca3af123..98f46677 100644 --- a/src/main/java/cn/lihongjie/coal/warehouseGoods/service/WarehouseGoodsService.java +++ b/src/main/java/cn/lihongjie/coal/warehouseGoods/service/WarehouseGoodsService.java @@ -5,6 +5,7 @@ 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.common.Ctx; +import cn.lihongjie.coal.common.JpaUtils; import cn.lihongjie.coal.exception.BizException; import cn.lihongjie.coal.warehouseGoods.dto.CreateWarehouseGoodsDto; import cn.lihongjie.coal.warehouseGoods.dto.UpdateWarehouseGoodsDto; @@ -18,6 +19,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; +import jakarta.persistence.Tuple; import jakarta.persistence.criteria.CriteriaBuilder; import jakarta.persistence.criteria.CriteriaQuery; import jakarta.persistence.criteria.Predicate; @@ -36,7 +38,10 @@ import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; +import java.util.Collections; import java.util.List; +import java.util.Map; @Service @Slf4j @@ -66,9 +71,7 @@ public class WarehouseGoodsService return getById(entity.getId()); } - @Autowired - WarehouseReceiptService warehouseReceiptService; - + @Autowired WarehouseReceiptService warehouseReceiptService; public void delete(IdRequest request) { @@ -141,4 +144,35 @@ public class WarehouseGoodsService return mapper.toDto(all.get(0)); } } + + public Object goodsPrice(IdRequest request) { + + Object result = + em.createNativeQuery( + """ + select min(d.price) as min_price, + max(d.price) as max_price, + avg(d.price) as avg_price, + + min(d.price) filter ( where d.receipt_type = '0' ) as type_0_min_price, + max(d.price) filter ( where d.receipt_type = '0' ) as type_0_max_price, + avg(d.price) filter ( where d.receipt_type = '0' ) as type_0_avg_price, + + min(d.price) filter ( where d.receipt_type = '1' ) as type_1_min_price, + max(d.price) filter ( where d.receipt_type = '1' ) as type_1_max_price, + avg(d.price) filter ( where d.receipt_type = '1' ) as type_1_avg_price + from t_warehouse_receipt_detail d + where id = :id + + + + """, + Tuple.class) + .setParameter("id", request.getId()) + .getSingleResult(); + + List maps = JpaUtils.convertTuplesToRawMap(Collections.singletonList((Tuple) result)); + + return maps.get(0); + } }