diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/SummaryByDayController.java b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/SummaryByDayController.java index efa23af2..7f0812c3 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/SummaryByDayController.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/controller/shop/SummaryByDayController.java @@ -42,10 +42,10 @@ public class SummaryByDayController { } @GetMapping(value = "count") - public List summaryCount(@RequestParam String shopId, + public List summaryCount(ShopSummaryDto summaryDto, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date startTime, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime) { - return summaryService.summaryCount(shopId, startTime, endTime); + return summaryService.summaryCount(summaryDto, startTime, endTime); } } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/dto/ShopSummaryDto.java b/eladmin-system/src/main/java/cn/ysk/cashier/dto/ShopSummaryDto.java index 7f4a73b0..f762d716 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/dto/ShopSummaryDto.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/dto/ShopSummaryDto.java @@ -19,7 +19,9 @@ public class ShopSummaryDto { } public void setCateId(String cateId) { - this.cateId = cateId; + if(StringUtils.isNotBlank(cateId)){ + this.cateId = cateId; + } } public String getShopId() { diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/TbOrderDetailRepository.java b/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/TbOrderDetailRepository.java index fe9f3be7..c535a5f3 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/TbOrderDetailRepository.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/repository/order/TbOrderDetailRepository.java @@ -103,7 +103,7 @@ public interface TbOrderDetailRepository extends JpaRepository queryTbOrderSalesCountByDay(@Param("shopId") Integer shopId,@Param("cateId")String cateId,@Param("proName")String proName, @Param("startTime") Date startTime, @Param("endTime") Date endTime); @Query(value = "SELECT " + - "new cn.ysk.cashier.vo.TbOrderSaleVO(oi.orderNo, od.num, od.price, od.status)\n" + + "new cn.ysk.cashier.vo.TbOrderSaleVO(oi.orderNo, od.num, od.price, od.status,od.productSkuId)\n" + "FROM\n" + "TbOrderInfo oi\n" + "LEFT JOIN TbOrderDetail od ON oi.id = od.orderId \n" + @@ -115,8 +115,24 @@ public interface TbOrderDetailRepository extends JpaRepository querySaleOrderInfo(@Param("startTime") Timestamp startTime, @Param("endTime") Timestamp endTime, @Param("productId") Integer productId, @Param("productSkuId") Integer productSkuId, @Param("shopId") Integer shopId); + @Query("SELECT new cn.ysk.cashier.vo.TbOrderSalesCountByDayVo(" + + "SUM(CASE WHEN orders.orderType!='return' THEN info.num ELSE 0 END)," + + "SUM(CASE WHEN orders.orderType='return' THEN info.num ELSE 0 END), " + + "SUM(info.num), " + + "SUM(CASE WHEN orders.orderType!='return' THEN info.priceAmount ELSE 0 END), " + + "SUM(CASE WHEN orders.orderType='return' THEN info.priceAmount ELSE 0 END)) " + + "FROM TbOrderInfo orders " + + "LEFT JOIN TbOrderDetail info on orders.id=info.orderId " + + "LEFT JOIN TbProduct pro ON info.productId = pro.id " + + "WHERE info.shopId = :shopId " + + "AND (:cateId IS NULL OR pro.categoryId = :cateId) " + + "AND (:proName IS NULL OR info.productName LIKE %:proName%) " + + "AND info.createTime > :startTime AND info.createTime < :endTime " + + "AND (info.status = 'closed' OR info.status = 'refund') ") + TbOrderSalesCountByDayVo queryTbOrderSalesCountByDaysummaryCount(@Param("shopId") Integer shopId,@Param("cateId")String cateId,@Param("proName")String proName, @Param("startTime") Date startTime, @Param("endTime") Date endTime); - @Query("SELECT new cn.ysk.cashier.vo.TbOrderSalesCountByDayVo(" + + + @Query("SELECT new cn.ysk.cashier.vo.TbOrderSalesCountByDayVo(" + "COALESCE(CAST(SUM(CASE WHEN orders.orderType!='return' THEN info.num ELSE 0 END) as long),0), " + "COALESCE(CAST(SUM(CASE WHEN orders.orderType='return' THEN info.num ELSE 0 END) as long),0))" + "FROM TbOrderInfo orders " + diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/SummaryService.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/SummaryService.java index 475cde90..f1e751a3 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/SummaryService.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/SummaryService.java @@ -37,7 +37,7 @@ public interface SummaryService { */ void download(ShopSummaryDto summaryDto, HttpServletResponse response) throws IOException; - List summaryCount(String shopId, Date startTime, Date endTime); + List summaryCount(ShopSummaryDto summaryDto, Date startTime, Date endTime); List selectSummaryTable(Integer shopId, Date startTime, Date endTime); diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/SummaryServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/SummaryServiceImpl.java index b6ddca76..3540f315 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/SummaryServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/SummaryServiceImpl.java @@ -450,7 +450,7 @@ public class SummaryServiceImpl implements SummaryService { } @Override - public List summaryCount(String shopId, Date startTime, Date endTime) { + public List summaryCount(ShopSummaryDto summaryDto, Date startTime, Date endTime) { List list = new ArrayList<>(); Long start = 1704038400000L; Long end = Instant.now().toEpochMilli(); @@ -461,23 +461,35 @@ public class SummaryServiceImpl implements SummaryService { startTime = DateUtil.toDate(DateUtil.fromTimeStamp(1704038400L)); endTime = new Date(); } - TbOrderPayCountVo payCount = tbOrderInfoRepository.queryOrderPayCount(shopId, start, end); - TbOrderPayCountVo refCount = tbOrderInfoRepository.queryTbOrderRefund(shopId, null, start, end); - payCount.setPayAmount(new BigDecimal(payCount.getPayAmount().toString()).subtract(new BigDecimal(refCount.getPayAmount().toString()))); - payCount.setIcon("el-icon-coin"); - list.add(payCount); - TbOrderPayCountVo cashCount = tbOrderInfoRepository.queryOrderPayCash(shopId, start, end); - cashCount.setIcon("el-icon-circle-check"); - list.add(cashCount); - refCount.setPayType("退款金额"); - refCount.setIcon("el-icon-money"); - list.add(refCount); + if (summaryDto.getType() != null && summaryDto.getType() == 1) { + TbOrderPayCountVo payCount = tbOrderInfoRepository.queryOrderPayCount(summaryDto.getShopId(), start, end); + TbOrderPayCountVo refCount = tbOrderInfoRepository.queryTbOrderRefund(summaryDto.getShopId(), null,start, end); + payCount.setPayAmount(new BigDecimal(payCount.getPayAmount().toString()).subtract(new BigDecimal(refCount.getPayAmount().toString()))); + payCount.setIcon("el-icon-coin"); + list.add(payCount); + TbOrderPayCountVo cashCount = tbOrderInfoRepository.queryOrderPayCash(summaryDto.getShopId(), start, end); + cashCount.setIcon("el-icon-circle-check"); + list.add(cashCount); + refCount.setPayType("退款金额"); + refCount.setIcon("el-icon-money"); + list.add(refCount); - TbOrderSalesCountByDayVo numCount = detailRepository.queryTbOrderSalesCount(Integer.valueOf(shopId), startTime, endTime); - TbOrderPayCountVo salesNum = new TbOrderPayCountVo("el-icon-goods", "销售量", "0", numCount.getSalesNum() - numCount.getRefNum()); - TbOrderPayCountVo refNum = new TbOrderPayCountVo("el-icon-goods", "退单量", "0", numCount.getRefNum()); - list.add(salesNum); - list.add(refNum); + TbOrderSalesCountByDayVo numCount = detailRepository.queryTbOrderSalesCount(Integer.valueOf(summaryDto.getShopId()), startTime, endTime); + TbOrderPayCountVo salesNum =new TbOrderPayCountVo("el-icon-goods","销售量","0",numCount.getSalesNum()-numCount.getRefNum()); + TbOrderPayCountVo refNum =new TbOrderPayCountVo("el-icon-goods","退单量","0",numCount.getRefNum()); + list.add(salesNum); + list.add(refNum); + }else { + TbOrderSalesCountByDayVo tbOrderSalesCountByDayVo = detailRepository.queryTbOrderSalesCountByDaysummaryCount(Integer.valueOf(summaryDto.getShopId()), summaryDto.getCateId(), summaryDto.getProName(), summaryDto.getStartTime(), summaryDto.getEndTime()); + TbOrderPayCountVo zong =new TbOrderPayCountVo("el-icon-coin","总金额","1",tbOrderSalesCountByDayVo.getSalesAmount()); + TbOrderPayCountVo tuikuan =new TbOrderPayCountVo("el-icon-money","退款金额","1",tbOrderSalesCountByDayVo.getRefAmount()); + TbOrderPayCountVo xiaoliang =new TbOrderPayCountVo("el-icon-goods","销售量","0",tbOrderSalesCountByDayVo.getSalesNum()); + TbOrderPayCountVo tuidan =new TbOrderPayCountVo("el-icon-goods","退单量","0",tbOrderSalesCountByDayVo.getRefNum()); + list.add(zong); + list.add(tuikuan); + list.add(xiaoliang); + list.add(tuidan); + } return list; } diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/vo/StockV2Vo.java b/eladmin-system/src/main/java/cn/ysk/cashier/vo/StockV2Vo.java index 04f52a8a..9b0c44e2 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/vo/StockV2Vo.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/vo/StockV2Vo.java @@ -266,10 +266,10 @@ public class StockV2Vo { this.type = "称重商品"; break; case "currentPrice": - this.type = "套餐商品/团购卷"; + this.type = "时价商品"; break; case "group": - this.type = "时价商品"; + this.type = "套餐商品/团购卷"; break; default: this.type = type; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/vo/StockVo.java b/eladmin-system/src/main/java/cn/ysk/cashier/vo/StockVo.java index 737b286a..5f943d94 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/vo/StockVo.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/vo/StockVo.java @@ -48,10 +48,10 @@ public class StockVo { this.type = "称重商品"; break; case "currentPrice": - this.type = "套餐商品/团购卷"; + this.type = "时价商品"; break; case "group": - this.type = "时价商品"; + this.type = "套餐商品/团购卷"; break; default: this.type = type; diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderSalesCountByDayVo.java b/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderSalesCountByDayVo.java index de244a76..b994e4d1 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderSalesCountByDayVo.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/vo/TbOrderSalesCountByDayVo.java @@ -152,11 +152,21 @@ public class TbOrderSalesCountByDayVo { count(); } - - + public TbOrderSalesCountByDayVo(Long salesNum, Long refNum, Long num, BigDecimal salesAmount, BigDecimal refAmount) { + this.salesNum = salesNum; + this.refNum = refNum; + this.salesAmount = salesAmount; + this.refAmount = refAmount; + this.num = num; + count(); + } public void count(){ - salesNum=salesNum-refNum; - salesAmount=salesAmount.subtract(refAmount); + if (salesNum == null) salesNum = 0l; + if (refNum == null) refNum = 0l; + salesNum = salesNum - refNum; + if (salesAmount == null) salesAmount = BigDecimal.ZERO; + if (refAmount == null) refAmount = BigDecimal.ZERO; + salesAmount = salesAmount.subtract(refAmount); } }