Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
34b10dee11
|
|
@ -1,13 +1,13 @@
|
||||||
package com.czg.controller.admin;
|
package com.czg.controller.admin;
|
||||||
|
|
||||||
import com.czg.log.annotation.OperationLog;
|
import com.czg.log.annotation.OperationLog;
|
||||||
|
import com.czg.order.entity.ShopOrderStatistic;
|
||||||
import com.czg.order.param.DataSummaryProductSaleParam;
|
import com.czg.order.param.DataSummaryProductSaleParam;
|
||||||
import com.czg.order.param.DataSummaryTradeParam;
|
import com.czg.order.param.DataSummaryTradeParam;
|
||||||
import com.czg.order.service.DataSummaryService;
|
import com.czg.order.service.DataSummaryService;
|
||||||
import com.czg.order.vo.DataSummaryDateAmountVo;
|
import com.czg.order.vo.DataSummaryDateAmountVo;
|
||||||
import com.czg.order.vo.DataSummaryPayTypeVo;
|
import com.czg.order.vo.DataSummaryPayTypeVo;
|
||||||
import com.czg.order.vo.DataSummaryProductSaleVo;
|
import com.czg.order.vo.DataSummaryProductSaleVo;
|
||||||
import com.czg.order.vo.DataSummaryTradeVo;
|
|
||||||
import com.czg.resp.CzgResult;
|
import com.czg.resp.CzgResult;
|
||||||
import com.czg.sa.StpKit;
|
import com.czg.sa.StpKit;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
|
@ -35,10 +35,10 @@ public class DataSummaryController {
|
||||||
@GetMapping("trade")
|
@GetMapping("trade")
|
||||||
@OperationLog("营业板块-上半部分")
|
@OperationLog("营业板块-上半部分")
|
||||||
//@SaAdminCheckPermission("dataSummary:trade")
|
//@SaAdminCheckPermission("dataSummary:trade")
|
||||||
public CzgResult<DataSummaryTradeVo> getTradeData(DataSummaryTradeParam param) {
|
public CzgResult<ShopOrderStatistic> getTradeData(DataSummaryTradeParam param) {
|
||||||
Long shopId = StpKit.USER.getShopId(0L);
|
Long shopId = StpKit.USER.getShopId(0L);
|
||||||
param.setShopId(shopId);
|
param.setShopId(shopId);
|
||||||
DataSummaryTradeVo data = dataSummaryService.getTradeData(param);
|
ShopOrderStatistic data = dataSummaryService.getTradeData(param);
|
||||||
return CzgResult.success(data);
|
return CzgResult.success(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,19 @@
|
||||||
package com.czg.order.entity;
|
package com.czg.order.entity;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.annotation.JSONField;
|
||||||
import com.mybatisflex.annotation.Id;
|
import com.mybatisflex.annotation.Id;
|
||||||
import com.mybatisflex.annotation.KeyType;
|
import com.mybatisflex.annotation.KeyType;
|
||||||
import com.mybatisflex.annotation.Table;
|
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.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 实体类。
|
* 实体类。
|
||||||
*
|
*
|
||||||
|
|
@ -111,17 +112,40 @@ public class ShopOrderStatistic implements Serializable {
|
||||||
* 主扫支付金额
|
* 主扫支付金额
|
||||||
*/
|
*/
|
||||||
private BigDecimal scanPayAmount = BigDecimal.ZERO;
|
private BigDecimal scanPayAmount = BigDecimal.ZERO;
|
||||||
private Long cashPayCount = 0L;
|
|
||||||
private BigDecimal cashPayAmount = BigDecimal.ZERO;
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 现金支付笔数
|
||||||
|
*/
|
||||||
|
private Long cashPayCount = 0L;
|
||||||
|
/**
|
||||||
|
* 现金支付金额
|
||||||
|
*/
|
||||||
|
private BigDecimal cashPayAmount = BigDecimal.ZERO;
|
||||||
|
/**
|
||||||
|
* 充值金额
|
||||||
|
*/
|
||||||
|
private BigDecimal rechargeAmount = BigDecimal.ZERO;
|
||||||
|
/**
|
||||||
|
* 客单价
|
||||||
|
*/
|
||||||
|
private BigDecimal customerUnitPrice = BigDecimal.ZERO;
|
||||||
|
/**
|
||||||
|
* 翻台率
|
||||||
|
*/
|
||||||
|
private BigDecimal tableTurnoverRate = BigDecimal.ZERO;
|
||||||
/**
|
/**
|
||||||
* 店铺id
|
* 店铺id
|
||||||
*/
|
*/
|
||||||
private Long shopId;
|
private Long shopId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
private Date createDay;
|
@JSONField(format = "yyyy-MM-dd")
|
||||||
|
private LocalDate createDay = LocalDate.now();
|
||||||
|
/**
|
||||||
|
* 最近一次统计时间
|
||||||
|
*/
|
||||||
|
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private LocalDateTime updateTime = LocalDateTime.now();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
package com.czg.order.service;
|
package com.czg.order.service;
|
||||||
|
|
||||||
|
import com.czg.order.entity.ShopOrderStatistic;
|
||||||
import com.czg.order.param.DataSummaryProductSaleParam;
|
import com.czg.order.param.DataSummaryProductSaleParam;
|
||||||
import com.czg.order.param.DataSummaryTradeParam;
|
import com.czg.order.param.DataSummaryTradeParam;
|
||||||
import com.czg.order.vo.DataSummaryDateAmountVo;
|
import com.czg.order.vo.DataSummaryDateAmountVo;
|
||||||
import com.czg.order.vo.DataSummaryPayTypeVo;
|
import com.czg.order.vo.DataSummaryPayTypeVo;
|
||||||
import com.czg.order.vo.DataSummaryProductSaleVo;
|
import com.czg.order.vo.DataSummaryProductSaleVo;
|
||||||
import com.czg.order.vo.DataSummaryTradeVo;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据统计Service接口
|
* 数据统计Service接口
|
||||||
|
|
@ -15,7 +15,7 @@ import com.czg.order.vo.DataSummaryTradeVo;
|
||||||
*/
|
*/
|
||||||
public interface DataSummaryService {
|
public interface DataSummaryService {
|
||||||
|
|
||||||
DataSummaryTradeVo getTradeData(DataSummaryTradeParam param);
|
ShopOrderStatistic getTradeData(DataSummaryTradeParam param);
|
||||||
|
|
||||||
DataSummaryProductSaleVo getProductSaleData(DataSummaryProductSaleParam param);
|
DataSummaryProductSaleVo getProductSaleData(DataSummaryProductSaleParam param);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -162,8 +162,13 @@ public class ShopActivateServiceImpl extends ServiceImpl<ShopActivateMapper, Sho
|
||||||
* 获取优惠券详细信息 目前仅返回 id 名称 剩余数量 赠送数量
|
* 获取优惠券详细信息 目前仅返回 id 名称 剩余数量 赠送数量
|
||||||
*/
|
*/
|
||||||
private List<ShopCoupon> getCoupons(String couponJson) {
|
private List<ShopCoupon> getCoupons(String couponJson) {
|
||||||
Map<String, Integer> couponMap = JSONObject.parseObject(couponJson, new TypeReference<>() {
|
Map<String, Integer> couponMap;
|
||||||
});
|
try {
|
||||||
|
couponMap = JSONObject.parseObject(couponJson, new TypeReference<>() {});
|
||||||
|
} catch (Exception e) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
if (couponMap.isEmpty()) {
|
if (couponMap.isEmpty()) {
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
package com.czg.service.order.mapper;
|
package com.czg.service.order.mapper;
|
||||||
|
|
||||||
import com.mybatisflex.core.BaseMapper;
|
|
||||||
import com.czg.order.entity.ShopOrderStatistic;
|
import com.czg.order.entity.ShopOrderStatistic;
|
||||||
|
import com.czg.order.param.DataSummaryTradeParam;
|
||||||
|
import com.mybatisflex.core.BaseMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 映射层。
|
* 映射层。
|
||||||
|
|
@ -11,4 +12,6 @@ import com.czg.order.entity.ShopOrderStatistic;
|
||||||
*/
|
*/
|
||||||
public interface ShopOrderStatisticMapper extends BaseMapper<ShopOrderStatistic> {
|
public interface ShopOrderStatisticMapper extends BaseMapper<ShopOrderStatistic> {
|
||||||
|
|
||||||
|
ShopOrderStatistic getTradeData(DataSummaryTradeParam param);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,24 +1,35 @@
|
||||||
package com.czg.service.order.service.impl;
|
package com.czg.service.order.service.impl;
|
||||||
|
|
||||||
|
import com.czg.order.entity.ShopOrderStatistic;
|
||||||
import com.czg.order.param.DataSummaryProductSaleParam;
|
import com.czg.order.param.DataSummaryProductSaleParam;
|
||||||
import com.czg.order.param.DataSummaryTradeParam;
|
import com.czg.order.param.DataSummaryTradeParam;
|
||||||
import com.czg.order.service.DataSummaryService;
|
import com.czg.order.service.DataSummaryService;
|
||||||
import com.czg.order.vo.DataSummaryDateAmountVo;
|
import com.czg.order.vo.DataSummaryDateAmountVo;
|
||||||
import com.czg.order.vo.DataSummaryPayTypeVo;
|
import com.czg.order.vo.DataSummaryPayTypeVo;
|
||||||
import com.czg.order.vo.DataSummaryProductSaleVo;
|
import com.czg.order.vo.DataSummaryProductSaleVo;
|
||||||
import com.czg.order.vo.DataSummaryTradeVo;
|
import com.czg.service.order.mapper.ShopOrderStatisticMapper;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据统计Service实现类
|
* 数据统计Service实现类
|
||||||
|
*
|
||||||
* @author tankaikai
|
* @author tankaikai
|
||||||
* @since 2025-03-07 15:32
|
* @since 2025-03-07 15:32
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class DataSummaryServiceImpl implements DataSummaryService {
|
public class DataSummaryServiceImpl implements DataSummaryService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ShopOrderStatisticMapper shopOrderStatisticMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DataSummaryTradeVo getTradeData(DataSummaryTradeParam param) {
|
public ShopOrderStatistic getTradeData(DataSummaryTradeParam param) {
|
||||||
return new DataSummaryTradeVo();
|
ShopOrderStatistic shopOrderStatistic = shopOrderStatisticMapper.getTradeData(param);
|
||||||
|
if (shopOrderStatistic == null) {
|
||||||
|
shopOrderStatistic = new ShopOrderStatistic();
|
||||||
|
}
|
||||||
|
return shopOrderStatistic;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -4,15 +4,17 @@ import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.date.DateTime;
|
import cn.hutool.core.date.DateTime;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.czg.order.entity.OrderInfo;
|
import com.czg.order.entity.OrderInfo;
|
||||||
import com.czg.order.service.OrderInfoService;
|
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
|
||||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
|
||||||
import com.czg.order.entity.ShopOrderStatistic;
|
import com.czg.order.entity.ShopOrderStatistic;
|
||||||
|
import com.czg.order.service.OrderInfoService;
|
||||||
import com.czg.order.service.ShopOrderStatisticService;
|
import com.czg.order.service.ShopOrderStatisticService;
|
||||||
import com.czg.service.order.mapper.ShopOrderStatisticMapper;
|
import com.czg.service.order.mapper.ShopOrderStatisticMapper;
|
||||||
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
@ -90,7 +92,8 @@ public class ShopOrderStatisticServiceImpl extends ServiceImpl<ShopOrderStatisti
|
||||||
if (statistic == null) {
|
if (statistic == null) {
|
||||||
statistic = new ShopOrderStatistic();
|
statistic = new ShopOrderStatistic();
|
||||||
statistic.setShopId(shopId);
|
statistic.setShopId(shopId);
|
||||||
statistic.setCreateDay(DateUtil.date().toSqlDate());
|
statistic.setCreateDay(LocalDate.now());
|
||||||
|
statistic.setUpdateTime(LocalDateTime.now());
|
||||||
}
|
}
|
||||||
BeanUtil.copyProperties(info, statistic);
|
BeanUtil.copyProperties(info, statistic);
|
||||||
saveOrUpdate(statistic);
|
saveOrUpdate(statistic);
|
||||||
|
|
|
||||||
|
|
@ -4,4 +4,39 @@
|
||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.czg.service.order.mapper.ShopOrderStatisticMapper">
|
<mapper namespace="com.czg.service.order.mapper.ShopOrderStatisticMapper">
|
||||||
|
|
||||||
|
<select id="getTradeData" resultType="com.czg.order.entity.ShopOrderStatistic">
|
||||||
|
select
|
||||||
|
sum(sale_amount) as sale_amount,
|
||||||
|
count(sale_count) as sale_count,
|
||||||
|
sum(discount_amount) as discount_amount,
|
||||||
|
count(discount_count) as discount_count,
|
||||||
|
sum(refund_amount) as refund_amount,
|
||||||
|
count(refund_count) as refund_count,
|
||||||
|
count(wechat_pay_count) as wechat_pay_count,
|
||||||
|
sum(wechat_pay_amount) as wechat_pay_amount,
|
||||||
|
count(ali_pay_count) as ali_pay_count,
|
||||||
|
sum(ali_pay_amount) as ali_pay_amount,
|
||||||
|
count(credit_pay_count) as credit_pay_count,
|
||||||
|
sum(credit_pay_amount) as credit_pay_amount,
|
||||||
|
count(member_pay_count) as member_pay_count,
|
||||||
|
sum(member_pay_amount) as member_pay_amount,
|
||||||
|
count(scan_pay_count) as scan_pay_count,
|
||||||
|
sum(scan_pay_amount) as scan_pay_amount,
|
||||||
|
count(cash_pay_count) as cash_pay_count,
|
||||||
|
sum(cash_pay_amount) as cash_pay_amount,
|
||||||
|
sum(recharge_amount) as recharge_amount,
|
||||||
|
avg(customer_unit_price) as customer_unit_price,
|
||||||
|
avg(table_turnover_rate) as table_turnover_rate
|
||||||
|
from tb_shop_order_statistic
|
||||||
|
where shop_id = #{shopId}
|
||||||
|
<if test="beginTime != null">
|
||||||
|
and create_day >= str_to_date(#{beginTime}, '%Y-%m-%d')
|
||||||
|
</if>
|
||||||
|
<if test="endTime != null">
|
||||||
|
<![CDATA[
|
||||||
|
and create_day <= str_to_date(#{endTime}, '%Y-%m-%d')
|
||||||
|
]]>
|
||||||
|
</if>
|
||||||
|
group by shop_id
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
|
|
@ -161,13 +161,13 @@ public class ConsStockFlowServiceImpl extends ServiceImpl<ConsStockFlowMapper, C
|
||||||
@Override
|
@Override
|
||||||
public Page<ConsCheckStockRecordVo> getCheckStockRecordPage(Long conId) {
|
public Page<ConsCheckStockRecordVo> getCheckStockRecordPage(Long conId) {
|
||||||
Long shopId = StpKit.USER.getShopId(0L);
|
Long shopId = StpKit.USER.getShopId(0L);
|
||||||
return super.pageAs(PageUtil.buildPage(), query().eq(ConsStockFlow::getShopId, shopId).eq(ConsStockFlow::getConId, conId).orderBy(ConsStockFlow::getId, true), ConsCheckStockRecordVo.class);
|
return super.pageAs(PageUtil.buildPage(), query().eq(ConsStockFlow::getShopId, shopId).eq(ConsStockFlow::getConId, conId).orderBy(ConsStockFlow::getId, false), ConsCheckStockRecordVo.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ConsCheckStockRecordVo> getCheckStockRecordList(Long conId) {
|
public List<ConsCheckStockRecordVo> getCheckStockRecordList(Long conId) {
|
||||||
Long shopId = StpKit.USER.getShopId(0L);
|
Long shopId = StpKit.USER.getShopId(0L);
|
||||||
return super.mapper.selectListByQueryAs(query().eq(ConsStockFlow::getShopId, shopId).eq(ConsStockFlow::getConId, conId).orderBy(ConsStockFlow::getId, true), ConsCheckStockRecordVo.class);
|
return super.mapper.selectListByQueryAs(query().eq(ConsStockFlow::getShopId, shopId).eq(ConsStockFlow::getConId, conId).orderBy(ConsStockFlow::getId, false), ConsCheckStockRecordVo.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue