lubo 3 months ago
parent
commit
743835373f

+ 57 - 25
ruoyi-admin/src/main/java/com/ruoyi/web/controller/line/OnlineOrderController.java

@@ -11,6 +11,8 @@ import com.ruoyi.business.service.IBusinessService;
 import com.ruoyi.businessDayBill.domain.bo.BusinessDayBillCountBo;
 import com.ruoyi.businessDayBill.domain.vo.BusinessDayBillVo;
 import com.ruoyi.businessDayBill.service.IBusinessDayBillService;
+import com.ruoyi.onlineorder.domain.vo.OnlineOrderCountVo;
+import com.ruoyi.subsidy.domain.bo.SubsidyQueueBo;
 import com.ruoyi.subsidy.enums.SubsidyCountType;
 import com.ruoyi.subsidy.service.ISubsidyQueueService;
 import lombok.RequiredArgsConstructor;
@@ -164,69 +166,99 @@ public class OnlineOrderController extends BaseController {
     @ApiOperation("平台获取补贴排队统计")
     @SaCheckPermission("subsidy:subsidyQueue:statistics")
     @GetMapping("/statistics")
-    public R<Map<String, Object>> statistics() {
-        return R.ok( businessStatistics(null));
+    public R<Map<String, Object>> statistics(@Validated(QueryGroup.class) OnlineOrderBo bo) {
+        return R.ok( businessStatistics(bo));
     }
 
 
     @ApiOperation("连锁店店铺获取补贴排队统计")
     @SaCheckPermission("subsidy:subsidyQueue:chainBusinessStatistics")
-    @GetMapping("/chain-business-statistics/{businessId}")
-    public R<Map<String, Object>> chainBusinessStatistics(@PathVariable("businessId") Long businessId) {
+    @GetMapping("/chain-business-statistics")
+    public R<Map<String, Object>> chainBusinessStatistics(@Validated(QueryGroup.class) OnlineOrderBo bo) {
 
-        if(ObjectUtil.isNotNull(businessId))
+        if(ObjectUtil.isNotNull(bo.getBusinessId()))
         {
-            return R.ok( businessStatistics(businessId));
+            return R.ok( businessStatistics(bo));
         }
         else
         {
-            return R.ok(chainBusinessStatistics(iBusinessService.queryBusinessIdsByBusinessId(getBusinessId(true))));
+            List<Long> ids = iBusinessService.queryBusinessIdsByBusinessId(getBusinessId(true));
+            if(CollectionUtil.isEmpty(ids))
+            {
+                ids.add(0L);
+            }
+            bo.setChainBusinessIds(ids);
+            return R.ok(chainStatistics(bo));
         }
 
     }
 
-
-
     @ApiOperation("店铺获取补贴排队统计")
     @SaCheckPermission("subsidy:subsidyQueue:businessStatistics")
     @GetMapping("/business-statistics")
-    public R<Map<String, Object>> businessSingleStatistics() {
-        return R.ok( businessStatistics(getBusinessId(true)));
+    public R<Map<String, Object>> businessSingleStatistics(@Validated(QueryGroup.class) OnlineOrderBo bo) {
+        bo.setBusinessId(getBusinessId(true));
+        return R.ok( businessStatistics(bo));
     }
 
-    private Map<String, Object> businessStatistics(Long businessId) {
+    private Map<String, Object> businessStatistics(OnlineOrderBo onlineOrderBo) {
         Map<String, Object> map = new HashMap<>();
-        map.put("subsidyComplete", iSubsidyQueueService.getStatistics(businessId, SubsidyCountType.COMPLETE,null));
+        SubsidyQueueBo subsidyQueueBo = new SubsidyQueueBo();
+        subsidyQueueBo.setCurrentBusinessId(onlineOrderBo.getBusinessId());
+        subsidyQueueBo.setConsumeStartTime(onlineOrderBo.getPayStartTime());
+        subsidyQueueBo.setConsumeEndTime(onlineOrderBo.getPayEndTime());
+        subsidyQueueBo.setOrderNo(onlineOrderBo.getOrderNo());
+        subsidyQueueBo.setRefundStartTime(onlineOrderBo.getRefundStartTime());
+        subsidyQueueBo.setRefundEndTime(onlineOrderBo.getRefundEndTime());
+        subsidyQueueBo.setCurrentBusinessName(onlineOrderBo.getBusinessName());
+        subsidyQueueBo.setOrderStatus(onlineOrderBo.getOrderStatus());
+        subsidyQueueBo.setPayType(onlineOrderBo.getPayType());
+
+        map.put("subsidyComplete", iSubsidyQueueService.getStatistics(onlineOrderBo.getBusinessId(), SubsidyCountType.COMPLETE,subsidyQueueBo));
         //今日收款
         BusinessDayBillCountBo bo = new BusinessDayBillCountBo();
         bo.setType("today");
-        bo.setBusinessId(businessId);
+        bo.setBusinessId(onlineOrderBo.getBusinessId());
         BusinessDayBillVo statistics = iBusinessDayBillService.getStatistics(bo);
         map.put("todayAmount", ObjectUtil.isNotNull( statistics)? statistics.getOnlineOrderAmount() : 0);
+
+
         //累计收款
-        bo.setType("all");
-        BusinessDayBillVo allStatistics = iBusinessDayBillService.getStatistics(bo);
-        map.put("totalAmount", allStatistics.getOnlineOrderAmount());
+        OnlineOrderCountVo countVo = iOnlineOrderService.getStatistics(bo);
+        map.put("totalAmount", countVo.getOrderTotalAmount());
+
         //已退款
-        map.put("totalRefund", allStatistics.getOnlineRefundOrderAmount());
+        map.put("totalRefund", countVo.getRefundTotalAmount());
         return map;
     }
 
-    private Map<String, Object> chainBusinessStatistics(List<Long> businessIds) {
+    private Map<String, Object> chainStatistics(OnlineOrderBo onlineOrderBo) {
         Map<String, Object> map = new HashMap<>();
-        map.put("subsidyComplete", iSubsidyQueueService.getStatistics(businessIds, SubsidyCountType.COMPLETE,null));
+        SubsidyQueueBo subsidyQueueBo = new SubsidyQueueBo();
+        subsidyQueueBo.setChainBusinessIds(onlineOrderBo.getChainBusinessIds());
+        subsidyQueueBo.setConsumeStartTime(onlineOrderBo.getPayStartTime());
+        subsidyQueueBo.setConsumeEndTime(onlineOrderBo.getPayEndTime());
+        subsidyQueueBo.setOrderNo(onlineOrderBo.getOrderNo());
+        subsidyQueueBo.setRefundStartTime(onlineOrderBo.getRefundStartTime());
+        subsidyQueueBo.setRefundEndTime(onlineOrderBo.getRefundEndTime());
+        subsidyQueueBo.setCurrentBusinessName(onlineOrderBo.getBusinessName());
+        subsidyQueueBo.setOrderStatus(onlineOrderBo.getOrderStatus());
+        subsidyQueueBo.setPayType(onlineOrderBo.getPayType());
+        map.put("subsidyComplete", iSubsidyQueueService.getStatistics(onlineOrderBo.getChainBusinessIds(), SubsidyCountType.COMPLETE,null));
+
         //今日收款
         BusinessDayBillCountBo bo = new BusinessDayBillCountBo();
         bo.setType("today");
-        bo.setChainBusinessIds(businessIds);
+        bo.setChainBusinessIds(onlineOrderBo.getChainBusinessIds());
         BusinessDayBillVo statistics = iBusinessDayBillService.getStatistics(bo);
         map.put("todayAmount", ObjectUtil.isNotNull( statistics)? statistics.getOnlineOrderAmount() : 0);
+
         //累计收款
-        bo.setType("all");
-        BusinessDayBillVo allStatistics = iBusinessDayBillService.getStatistics(bo);
-        map.put("totalAmount", allStatistics.getOnlineOrderAmount());
+        OnlineOrderCountVo countVo = iOnlineOrderService.getStatistics(bo);
+        map.put("totalAmount", countVo.getOrderTotalAmount());
+
         //已退款
-        map.put("totalRefund", allStatistics.getOnlineRefundOrderAmount());
+        map.put("totalRefund", countVo.getRefundTotalAmount());
         return map;
     }
 

+ 27 - 0
ruoyi-line/src/main/java/com/ruoyi/onlineorder/domain/vo/OnlineOrderCountVo.java

@@ -0,0 +1,27 @@
+package com.ruoyi.onlineorder.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel("在线订单统计视图对象")
+@ExcelIgnoreUnannotated
+public class OnlineOrderCountVo {
+
+    /**
+     * 累计收款
+     */
+    private BigDecimal orderTotalAmount;
+
+    /**
+     * 累计退款金额
+     */
+    @ExcelProperty(value = "退款金额")
+    @ApiModelProperty(value = "退款金额")
+    private BigDecimal refundTotalAmount;
+}

+ 4 - 0
ruoyi-line/src/main/java/com/ruoyi/onlineorder/mapper/OnlineOrderMapper.java

@@ -2,8 +2,10 @@ package com.ruoyi.onlineorder.mapper;
 
 import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.businessDayBill.domain.bo.BusinessDayBillCountBo;
 import com.ruoyi.onlineorder.domain.OnlineOrder;
 import com.ruoyi.onlineorder.domain.bo.OnlineOrderBo;
+import com.ruoyi.onlineorder.domain.vo.OnlineOrderCountVo;
 import com.ruoyi.onlineorder.domain.vo.OnlineOrderVo;
 import com.ruoyi.common.core.mapper.BaseMapperPlus;
 import org.apache.ibatis.annotations.Param;
@@ -24,4 +26,6 @@ public interface OnlineOrderMapper extends BaseMapperPlus<OnlineOrderMapper, Onl
     Page<OnlineOrderVo> queryCustomPageList(Page<OnlineOrderVo> build, @Param("bo") OnlineOrderBo bo);
 
     List<OnlineOrderVo> queryCustomList(@Param("bo") OnlineOrderBo bo);
+
+    OnlineOrderCountVo getStatistics(@Param("bo") BusinessDayBillCountBo bo);
 }

+ 9 - 0
ruoyi-line/src/main/java/com/ruoyi/onlineorder/service/IOnlineOrderService.java

@@ -1,6 +1,7 @@
 package com.ruoyi.onlineorder.service;
 
 import cn.hutool.core.date.DateTime;
+import com.ruoyi.businessDayBill.domain.bo.BusinessDayBillCountBo;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.fubeiPay.domain.PayVo;
@@ -8,6 +9,7 @@ import com.ruoyi.newwxpay.pay.PayNotifyResult;
 import com.ruoyi.onlineorder.domain.OnlineOrder;
 import com.ruoyi.onlineorder.domain.bo.CreateOnlineOrderBo;
 import com.ruoyi.onlineorder.domain.bo.OnlineOrderBo;
+import com.ruoyi.onlineorder.domain.vo.OnlineOrderCountVo;
 import com.ruoyi.onlineorder.domain.vo.OnlineOrderVo;
 import com.ruoyi.onlineorder.domain.vo.PayOnlineOrderVo;
 
@@ -151,4 +153,11 @@ public interface IOnlineOrderService {
     PayVo thirdPay(OnlineOrderBo bo, Long userId);
 
     String queryOrderNoByPayOrderNo(String payOrderNo);
+
+    /**
+     * 获取订单统计信息
+     * @param bo 订单统计参数
+     * @return 订单统计信息
+     */
+    OnlineOrderCountVo getStatistics(BusinessDayBillCountBo bo);
 }

+ 7 - 0
ruoyi-line/src/main/java/com/ruoyi/onlineorder/service/impl/OnlineOrderServiceImpl.java

@@ -12,6 +12,7 @@ import com.ruoyi.base.revenue.service.IRevenueSharingConfigService;
 import com.ruoyi.business.domain.Business;
 import com.ruoyi.business.domain.OnLineOrderProperties;
 import com.ruoyi.business.service.IBusinessService;
+import com.ruoyi.businessDayBill.domain.bo.BusinessDayBillCountBo;
 import com.ruoyi.common.core.domain.PageQuery;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.CallInterfaceStatus;
@@ -27,6 +28,7 @@ import com.ruoyi.newwxpay.pay.PayNotifyResult;
 import com.ruoyi.onlineorder.domain.OnlineOrder;
 import com.ruoyi.onlineorder.domain.bo.CreateOnlineOrderBo;
 import com.ruoyi.onlineorder.domain.bo.OnlineOrderBo;
+import com.ruoyi.onlineorder.domain.vo.OnlineOrderCountVo;
 import com.ruoyi.onlineorder.domain.vo.OnlineOrderVo;
 import com.ruoyi.onlineorder.domain.vo.PayOnlineOrderVo;
 import com.ruoyi.onlineorder.enums.OnlineOrderCancelType;
@@ -371,6 +373,11 @@ public class OnlineOrderServiceImpl implements IOnlineOrderService {
         return ObjectUtil.isNotNull(onlineOrder) ? onlineOrder.getOrderNo() : null;
     }
 
+    @Override
+    public OnlineOrderCountVo getStatistics(BusinessDayBillCountBo bo) {
+        return baseMapper.getStatistics(bo);
+    }
+
     private PayVo fubeiPay(OnlineOrder onlineOrder, Business business, Long userId) {
         //先更新支付订单号
         onlineOrder.setPayOrderNo(onlineOrder.buildOrderNo());

+ 32 - 0
ruoyi-line/src/main/java/com/ruoyi/subsidy/domain/bo/SubsidyQueueBo.java

@@ -4,7 +4,9 @@ import com.alibaba.excel.annotation.ExcelProperty;
 import com.ruoyi.common.core.domain.BaseTimeEntity;
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.onlineorder.enums.OnlineOrderPayType;
 import com.ruoyi.onlineorder.enums.OnlineOrderRefundStatus;
+import com.ruoyi.onlineorder.enums.OnlineOrderStatus;
 import com.ruoyi.subsidy.enums.PurchaseSource;
 import com.ruoyi.subsidy.enums.SubsidyCancelType;
 import com.ruoyi.subsidy.enums.SubsidyStatus;
@@ -278,6 +280,24 @@ public class SubsidyQueueBo extends BaseTimeEntity {
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date queueEndTime;
 
+
+    /**
+     * 查询用退款开始时间
+     */
+    @ApiModelProperty(value = "查询用退款开始时间", required = true)
+    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date refundStartTime;
+
+
+    /**
+     * 查询用退款结束时间
+     */
+    @ApiModelProperty(value = "查询用退款结束时间", required = true)
+    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date refundEndTime;
+
     /**
      * 排序的方向desc或者asc
      */
@@ -289,4 +309,16 @@ public class SubsidyQueueBo extends BaseTimeEntity {
      */
     @ApiModelProperty(value = "连锁商家IDs", required = true)
     private List<Long> chainBusinessIds;
+
+    /**
+     * 查询用订单状态
+     */
+    @ApiModelProperty(value = "查询用订单状态", required = true)
+    private OnlineOrderStatus orderStatus;
+
+    /**
+     * 查询支付方式(0:原生微信,1原生支付宝,10:第三方微信,11:第三方支付宝)
+     */
+    @ApiModelProperty(value = "查询支付方式(0:原生微信,1原生支付宝,10:第三方微信,11:第三方支付宝)", required = true)
+    private OnlineOrderPayType payType;
 }

+ 18 - 7
ruoyi-line/src/main/resources/mapper/onlineorder/OnlineOrderMapper.xml

@@ -44,11 +44,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         SELECT IFNULL(SUM(pay_amount),0) as total FROM tb_online_order
         WHERE user_id = #{userId} AND create_time &gt;= #{startTime} AND create_time &lt;= #{endTime} AND  pay_status = 5
     </select>
-
-    <sql id="listsql">
-        select too.*,tor.refund_amount,ts.actual_subsidy_amount,ts.subsidy_status from tb_online_order as too
-        left join tb_online_refund_order as tor on too.order_id = tor.order_id
-        left join tb_subsidy_queue as ts on too.order_id = ts.order_id
+    <sql id="whereSql">
         <where>
             <if test="bo.orderNo != null and bo.orderNo!=''">
                 and too.order_no like concat('%',#{bo.orderNo},'%')
@@ -60,10 +56,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 and too.business_name like concat('%',#{bo.businessName},'%')
             </if>
             <if test="bo.orderStatus != null">
-                and too.order_status = #{bo.orderStatus}
+                and too.order_status = #{bo.orderStatus.code}
             </if>
             <if test="bo.payType != null">
-                and too.pay_type = #{bo.payType}
+                and too.pay_type = #{bo.payType.code}
             </if>
             <if test="bo.payStartTime != null">
                 and too.pay_time &gt;= #{bo.payStartTime}
@@ -84,6 +80,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 </foreach>
             </if>
         </where>
+    </sql>
+    <sql id="listsql">
+        select too.*,tor.refund_amount,ts.actual_subsidy_amount,ts.subsidy_status from tb_online_order as too
+        left join tb_online_refund_order as tor on too.order_id = tor.order_id
+        left join tb_subsidy_queue as ts on too.order_id = ts.order_id
+        <include refid="whereSql" />
         order by too.create_time desc
     </sql>
     <select id="queryCustomPageList" resultType="com.ruoyi.onlineorder.domain.vo.OnlineOrderVo">
@@ -93,4 +95,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="queryCustomList" resultType="com.ruoyi.onlineorder.domain.vo.OnlineOrderVo">
         <include refid="listsql" />
     </select>
+
+    <select id="getStatistics" resultType="com.ruoyi.onlineorder.domain.vo.OnlineOrderCountVo">
+        SELECT
+        NULLIF(SUM(too.order_amount),0) as order_total_amount,
+        NULLIF(SUM(tor.refund_amount),0) as refund_total_amount
+        FROM tb_online_order as too
+        LEFT JOIN tb_online_refund_order as tor ON too.order_id = tor.order_id
+        <include refid="whereSql" />
+    </select>
 </mapper>

+ 30 - 17
ruoyi-line/src/main/resources/mapper/subsidy/SubsidyQueueMapper.xml

@@ -51,61 +51,74 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <sql id="boWhere">
 
         <if test="query.bo!=null and query.bo.currentBusinessName!=null and query.bo.currentBusinessName!=''">
-            and current_business_name like concat('%',#{query.bo.currentBusinessName},'%')
+            and tsq.current_business_name like concat('%',#{query.bo.currentBusinessName},'%')
         </if>
         <if test="query.bo!=null and query.bo.orderNo!=null and query.bo.orderNo!=''">
-            and order_no like concat('%',#{query.bo.orderNo},'%')
+            and tsq.order_no like concat('%',#{query.bo.orderNo},'%')
         </if>
         <if test="query.bo!=null and bo.userMobile!=null and query.bo.userMobile!=''">
-            and user_mobile like concat('%',#{query.bo.userMobile},'%')
+            and tsq.user_mobile like concat('%',#{query.bo.userMobile},'%')
         </if>
         <if test="query.bo!=null and query.bo.userName!=null and query.bo.userName!=''">
-            and user_name like concat('%',#{query.bo.userName},'%')
+            and tsq.user_name like concat('%',#{query.bo.userName},'%')
         </if>
         <if test="query.bo!=null and query.bo.subsidyStatus!=null">
-            and subsidy_status = #{query.bo.subsidyStatus}
+            and tsq.subsidy_status = #{query.bo.subsidyStatus}
         </if>
         <if test="query.bo!=null and query.bo.consumeStartTime!=null">
-            and consume_time &gt;= #{query.bo.consumeStartTime}
+            and tsq.consume_time &gt;= #{query.bo.consumeStartTime}
         </if>
         <if test="query.bo!=null and query.bo.consumeEndTime!=null">
-            and consume_time &lt;= #{query.bo.consumeEndTime}
+            and tsq.consume_time &lt;= #{query.bo.consumeEndTime}
         </if>
         <if test="query.bo!=null and query.bo.queueStartTime!=null">
-            and queue_time &gt;= #{query.bo.queueStartTime}
+            and tsq.queue_time &gt;= #{query.bo.queueStartTime}
         </if>
         <if test="query.bo!=null and query.bo.queueEndTime!=null">
-            and queue_time &lt;= #{query.bo.queueEndTime}
+            and tsq.queue_time &lt;= #{query.bo.queueEndTime}
+        </if>
+        <if test="query.bo!=null and query.bo.refundStartTime!=null">
+            and too.refund_time &gt;= #{query.bo.refundStartTime}
+        </if>
+        <if test="query.bo!=null and query.bo.refundEndTime!=null">
+            and too.refund_time &lt;= #{query.bo.refundEndTime}
+        </if>
+        <if test="query.bo!=null and query.bo.orderStatus!=null">
+            and too.order_status = #{query.bo.orderStatus.code}
+        </if>
+        <if test="query.bo!=null and query.bo.payType!=null">
+            and too.pay_type = #{query.bo.payType.code}
         </if>
     </sql>
 
     <select id="getSubsidyAmount" resultType="java.math.BigDecimal">
         select
         <if test="query.countType == 1">
-            IFNULL(sum(actual_subsidy_amount),0)
+            IFNULL(sum(tsq.actual_subsidy_amount),0)
         </if>
         <if test="query.countType == 2">
-            IFNULL(sum(subsidy_points),0)
+            IFNULL(sum(tsq.subsidy_points),0)
         </if>
         <if test="query.countType == 3">
-            IFNULL(sum(should_subsidy_amount-actual_subsidy_amount),0)
+            IFNULL(sum(tsq.should_subsidy_amount-tsq.actual_subsidy_amount),0)
         </if>
-        from tb_subsidy_queue
+        from tb_subsidy_queue as tsq
+        left join tb_online_order as too on tsq.order_id = too.order_id
         <where>
             <if test="query.businessId != null">
-                and current_business_id = #{businessId}
+                and tsq.current_business_id = #{businessId}
             </if>
             <if test="query.businessIds != null and query.businessIds.size>0">
-                and current_business_id in
+                and tsq.current_business_id in
                 <foreach item="item" collection="query.businessIds" separator="," open="(" close=")" index="">
                     #{item}
                 </foreach>
             </if>
             <if test="query.countType == 3">
-                and subsidy_status = 0
+                and tsq.subsidy_status = 0
             </if>
             <if test="query.countType == 1">
-                and subsidy_status = 1
+                and tsq.subsidy_status = 1
             </if>
             <include refid="boWhere" />
         </where>