统计数据归档查询、商品数据分类缓存、已知问题修复

This commit is contained in:
Tankaikai
2025-04-16 15:24:32 +08:00
parent ff8a1e5de2
commit 954f2329bc
29 changed files with 611 additions and 273 deletions

View File

@@ -1,5 +1,7 @@
package com.czg.service;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONWriter;
import jakarta.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -598,4 +600,54 @@ public class RedisService {
return redisTemplate.opsForList().rightPop(key);
}
/**
* 右模糊查找key
*
* @param key 模糊匹配的key前缀
* @return 匹配的keys
*/
public Set<String> rightLikeKey(String key) {
return redisTemplate.keys(key + "*");
}
/**
* JsonString缓存放入
*
* @param key 键
* @param value 值
* @return true成功 false失败
*/
public boolean setJsonStr(String key, Object value) {
try {
redisTemplate.opsForValue().set(key, JSON.toJSONString(value, JSONWriter.Feature.WriteMapNullValue));
return true;
} catch (Exception e) {
log.error("redis error:{}", e + "");
return false;
}
}
/**
* JsonString缓存获取
*
* @param key 键
* @return 值
*/
public String getJsonStr(String key) {
return key == null ? null : (String) redisTemplate.opsForValue().get(key);
}
/**
* JsonString缓存获取
*
* @param key 键
* @return 值
*/
public <T> List<T> getJsonToBeanList(String key, Class<T> type) {
String jsonStr = getJsonStr(key);
if (jsonStr == null) {
return null;
}
return JSON.parseArray(jsonStr, type);
}
}

View File

@@ -1,7 +1,6 @@
package com.czg.order.entity;
import com.alibaba.fastjson2.annotation.JSONField;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
@@ -141,7 +140,6 @@ public class ShopOrderStatistic implements Serializable {
/**
* 新增会员数
*/
@Column(ignore = true)
private Long newMemberCount = 0L;
/**
* 店铺id

View File

@@ -3,16 +3,15 @@ package com.czg.order.entity;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Date;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 实体类。
*

View File

@@ -3,16 +3,15 @@ package com.czg.order.entity;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Date;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 台桌订单统计表 实体类。
*
@@ -32,8 +31,22 @@ public class ShopTableOrderStatistic implements Serializable {
@Id(keyType = KeyType.Auto)
private Long id;
/**
* 台桌id
*/
private Long tableId;
/**
* 台桌id
*/
private String tableCode;
/**
* 台桌名称
*/
private String tableName;
/**
* 区域名称
*/
private String areaName;
/**
* 订单数量
*/
@@ -56,7 +69,7 @@ public class ShopTableOrderStatistic implements Serializable {
/**
* 退款数量
*/
private long refundCount;
private Long refundCount;
/**
* 退款金额
*/

View File

@@ -18,7 +18,9 @@ import java.util.List;
*/
public interface DataSummaryService {
ShopOrderStatistic getTradeData(DataSummaryTradeParam param);
ShopOrderStatistic getArchiveTradeData(DataSummaryTradeParam param);
ShopOrderStatistic getRealTimeTradeData(DataSummaryTradeParam param);
Page<DataSummaryProductSaleRankingVo> getProductSaleRankingPage(DataSummaryProductSaleParam param);

View File

@@ -1,7 +1,8 @@
package com.czg.order.service;
import com.mybatisflex.core.service.IService;
import cn.hutool.core.date.DateTime;
import com.czg.order.entity.ShopOrderStatistic;
import com.mybatisflex.core.service.IService;
/**
* 服务层。
@@ -11,6 +12,6 @@ import com.czg.order.entity.ShopOrderStatistic;
*/
public interface ShopOrderStatisticService extends IService<ShopOrderStatistic> {
void statistic();
void statistic(DateTime dateTime);
}

View File

@@ -1,7 +1,8 @@
package com.czg.order.service;
import com.mybatisflex.core.service.IService;
import cn.hutool.core.date.DateTime;
import com.czg.order.entity.ShopProdStatistic;
import com.mybatisflex.core.service.IService;
/**
* 服务层。
@@ -11,6 +12,6 @@ import com.czg.order.entity.ShopProdStatistic;
*/
public interface ShopProdStatisticService extends IService<ShopProdStatistic> {
void statistic();
void statistic(DateTime dateTime);
}

View File

@@ -1,8 +1,9 @@
package com.czg.order.service;
import cn.hutool.core.date.DateTime;
import com.czg.order.entity.ShopTableOrderStatistic;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.czg.order.entity.ShopTableOrderStatistic;
import java.math.BigDecimal;
@@ -25,5 +26,5 @@ public interface ShopTableOrderStatisticService extends IService<ShopTableOrderS
*/
boolean addInfo(long shopId, long tableId, long count, BigDecimal amount);
void statistic();
void statistic(DateTime dateTime);
}

View File

@@ -5,7 +5,6 @@ import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@@ -26,27 +25,4 @@ public class DataSummaryDateAmountVo implements Serializable {
*/
private List<TotalVo> total = new ArrayList<>();
/**
* TotalVo
*/
@NoArgsConstructor
@Data
public static class TotalVo {
/**
* 实收金额
*/
private BigDecimal actualAmount = BigDecimal.ZERO;
/**
* 优惠金额
*/
private BigDecimal discountAmount = BigDecimal.ZERO;
/**
* 订单金额
*/
private BigDecimal orderAmount = BigDecimal.ZERO;
/**
* 日期
*/
private String tradeDay;
}
}

View File

@@ -19,6 +19,11 @@ public class DataSummaryProductSaleRankingVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 商品名称
*/
private Long productId;
/**
* 商品名称
*/
@@ -34,4 +39,14 @@ public class DataSummaryProductSaleRankingVo implements Serializable {
*/
private BigDecimal amount;
/**
* 退单量
*/
private BigDecimal refundCount;
/**
* 退单金额
*/
private BigDecimal refundAmount;
}

View File

@@ -32,6 +32,11 @@ public class TableSummaryInfoVo implements Serializable {
@ExcelIgnore
@JSONField(serialize = false)
private Long lineNum;
/**
* 台桌id
*/
@ExcelIgnore
private Long tableId;
/**
* 台桌码
*/

View File

@@ -0,0 +1,38 @@
package com.czg.order.vo;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 销售趋势柱状图 左下
* @author tankaikai
* @since 2025-03-07 16:08
*/
@NoArgsConstructor
@Data
public class TotalVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 实收金额
*/
private BigDecimal actualAmount = BigDecimal.ZERO;
/**
* 优惠金额
*/
private BigDecimal discountAmount = BigDecimal.ZERO;
/**
* 订单金额
*/
private BigDecimal orderAmount = BigDecimal.ZERO;
/**
* 日期
*/
private String tradeDay;
}

View File

@@ -34,6 +34,19 @@ public interface ProductService extends IService<Product> {
*/
List<ProductDTO> getProductList(ProductDTO param);
/**
* 从缓存里面获取商品列表
*
* @param param 查询参数
* @return 商品列表数据
*/
List<ProductDTO> getProductCacheList(ProductDTO param);
/**
* 清除某个商品分类的缓存
*/
void clearProductCache(Long... categoryIds);
/**
* 获取商品详情
*

View File

@@ -73,9 +73,14 @@ public class PageUtil {
*/
public QueryWrapper buildSortQueryWrapper() {
QueryWrapper queryWrapper = QueryWrapper.create();
String orderBy = ServletUtil.getRequest().getParameter(ORDER_BY);
if (StrUtil.isNotEmpty(orderBy)) {
queryWrapper.orderBy(SqlUtil.escapeOrderBySql(orderBy));
try {
HttpServletRequest request = ServletUtil.getRequest();
String orderBy = request.getParameter(ORDER_BY);
if (StrUtil.isNotEmpty(orderBy)) {
queryWrapper.orderBy(SqlUtil.escapeOrderBySql(orderBy));
}
} catch (Exception e) {
//System.out.println("排序参数异常");
}
return queryWrapper;
}