소스 검색

首页数据统计

cup 2 년 전
부모
커밋
7879bad936

+ 84 - 16
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/IndexMgrController.java

@@ -1,9 +1,13 @@
 package com.qs.mp.web.controller.api.admin;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.qs.mp.admin.domain.param.IndexQueryParam;
+import com.qs.mp.admin.domain.param.IndexTicketBoxTopQueryParam;
 import com.qs.mp.admin.domain.vo.IndexVO;
 import com.qs.mp.channel.domain.Channel;
+import com.qs.mp.channel.domain.ChannelOrder;
+import com.qs.mp.channel.service.IChannelOrderService;
 import com.qs.mp.channel.service.IChannelService;
 import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.utils.DateUtils;
@@ -14,11 +18,7 @@ import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -45,6 +45,9 @@ public class IndexMgrController extends BaseApiController {
     @Autowired
     private IUserTicketOrderService userTicketOrderService;
 
+	@Autowired
+	private IChannelOrderService channelOrderService;
+
 
 
 	/**
@@ -70,8 +73,20 @@ public class IndexMgrController extends BaseApiController {
 //						.or().eq("t2.channel_no", channel.getChannelNo()));
 //			}
 //		}
-	
+
 		list = userTicketOrderService.selectIndexPayAmtList(queryWrapper);
+
+
+		// 预付票信息
+		List<IndexVO> channelOrderList = new ArrayList<>();
+		QueryWrapper<ChannelOrder> channelOrderQueryWrapper1 = new QueryWrapper<>();
+		channelOrderQueryWrapper1.ge(null != queryParam && null != queryParam.getStartTime(), "t1.created_time", queryParam.getStartTime());
+		channelOrderQueryWrapper1.le(null != queryParam && null != queryParam.getEndTime(), "t1.created_time", queryParam.getEndTime());
+		channelOrderQueryWrapper1.gt("t1.`status`", 0);
+		channelOrderQueryWrapper1.gt("t1.type" , 1);
+		channelOrderList = channelOrderService.selectIndexChannelOrderDailyInfoList(channelOrderQueryWrapper1);
+		list = addPrePayOrderInfo(list, channelOrderList);
+
 		return  AjaxResult.success(getPayAmtList(list, queryParam));
 	}
 	
@@ -459,13 +474,24 @@ public class IndexMgrController extends BaseApiController {
 		List<IndexVO> yestodayList = new ArrayList<IndexVO>();
 		List<IndexVO> todaySiteList = new ArrayList<IndexVO>();
 		List<IndexVO> yetodaySiteList = new ArrayList<IndexVO>();
-		
+
+		List<IndexVO> channelOrderTodayList = new ArrayList<>();
+		List<IndexVO> channelOrderYestodayList= new ArrayList<>();
+
 		QueryWrapper<UserTicketOrder> queryWrapper1 = new QueryWrapper<>();
 		queryWrapper1.ge(null != queryParam && null != queryParam.getStartTime(), "t1.created_time", queryParam.getStartTime());
 		queryWrapper1.le(null != queryParam && null != queryParam.getEndTime(), "t1.created_time", queryParam.getEndTime());
 		queryWrapper1.gt("t1.`status`", 0);
 		todayList = userTicketOrderService.selectIndexDailyInfoList(queryWrapper1);
-		
+
+		QueryWrapper<ChannelOrder> channelOrderQueryWrapper1 = new QueryWrapper<>();
+		channelOrderQueryWrapper1.ge(null != queryParam && null != queryParam.getStartTime(), "t1.created_time", queryParam.getStartTime());
+		channelOrderQueryWrapper1.le(null != queryParam && null != queryParam.getEndTime(), "t1.created_time", queryParam.getEndTime());
+		channelOrderQueryWrapper1.gt("t1.`status`", 0);
+		channelOrderQueryWrapper1.gt("t1.type" , 1);
+		channelOrderTodayList = channelOrderService.selectIndexChannelOrderDailyInfoList(channelOrderQueryWrapper1);
+		todayList = addPrePayOrderInfo(todayList, channelOrderTodayList);
+
 		QueryWrapper<Channel> siteQueryWrapper1 = new QueryWrapper<>();
 		siteQueryWrapper1.ge(null != queryParam && null != queryParam.getStartTime(), "t1.created_time", queryParam.getStartTime());
 		siteQueryWrapper1.le(null != queryParam && null != queryParam.getEndTime(), "t1.created_time", queryParam.getEndTime());
@@ -481,6 +507,14 @@ public class IndexMgrController extends BaseApiController {
 		queryWrapper2.le(null != queryParam && null != queryParam.getEndTime(), "t1.created_time", queryParam.getEndTime());
 		queryWrapper2.gt("t1.`status`", 0);
 		yestodayList = userTicketOrderService.selectIndexDailyInfoList(queryWrapper2);
+
+		QueryWrapper<ChannelOrder> channelOrderQueryWrapper2 = new QueryWrapper<>();
+		channelOrderQueryWrapper2.ge(null != queryParam && null != queryParam.getStartTime(), "t1.created_time", queryParam.getStartTime());
+		channelOrderQueryWrapper2.le(null != queryParam && null != queryParam.getEndTime(), "t1.created_time", queryParam.getEndTime());
+		channelOrderQueryWrapper2.gt("t1.`status`", 0);
+		channelOrderQueryWrapper2.gt("t1.type" , 1);
+		channelOrderYestodayList = channelOrderService.selectIndexChannelOrderDailyInfoList(channelOrderQueryWrapper2);
+		yestodayList = addPrePayOrderInfo(yestodayList, channelOrderYestodayList);
 		
 
 		QueryWrapper<Channel> siteQueryWrapper2 = new QueryWrapper<>();
@@ -491,8 +525,32 @@ public class IndexMgrController extends BaseApiController {
 		
 		return  AjaxResult.success(calcDailyInfoData(todayList, yestodayList, todaySiteList, yetodaySiteList));
 	}
-	
-	
+
+	// 增加预付票的信息
+	private List<IndexVO> addPrePayOrderInfo(List<IndexVO> indexList, List<IndexVO> channelOrderIndexList) {
+		List<IndexVO> newIndexList = new ArrayList<>();
+		if (CollectionUtils.isNotEmpty(indexList) && CollectionUtils.isNotEmpty(channelOrderIndexList)){
+			TreeMap<String, IndexVO> treeMap = new TreeMap<>();
+			indexList.addAll(channelOrderIndexList);
+			for (IndexVO indexVO : indexList) {
+				IndexVO index = treeMap.get(indexVO.getTime());
+				if (Objects.isNull(index)) {
+					treeMap.put(indexVO.getTime(), indexVO);
+				} else {
+					index.setPayAmt(index.getPayAmt() + indexVO.getPayAmt());
+				}
+			}
+			for (String key : treeMap.keySet()) {
+				newIndexList.add(treeMap.get(key));
+			}
+			return newIndexList;
+		}
+		if (CollectionUtils.isEmpty(indexList) && CollectionUtils.isNotEmpty(channelOrderIndexList)) {
+			return channelOrderIndexList;
+		}
+		return indexList;
+	}
+
 	private Map<String,Object> getDailyInfoData(List<IndexVO> list,List<IndexVO> siteList){
 		Map<String,Object> payAmt = new HashMap<String,Object>();
 		Map<String,Object> payUser = new HashMap<String,Object>();
@@ -642,10 +700,10 @@ public class IndexMgrController extends BaseApiController {
 		
 		IndexQueryParam queryParam = getQueryParam(indeQueryParam);
 		List<IndexVO> list = new ArrayList<IndexVO>();
-		QueryWrapper<UserTicketOrder> queryWrapper = new QueryWrapper<>();
-		queryWrapper.ge(null != queryParam && null != queryParam.getStartTime(), "t1.created_time", queryParam.getStartTime());
-		queryWrapper.le(null != queryParam && null != queryParam.getEndTime(), "t1.created_time", queryParam.getEndTime());
-		queryWrapper.gt("t1.`status`", 0);
+//		QueryWrapper<UserTicketOrder> queryWrapper = new QueryWrapper<>();
+//		queryWrapper.ge(null != queryParam && null != queryParam.getStartTime(), "t1.created_time", queryParam.getStartTime());
+//		queryWrapper.le(null != queryParam && null != queryParam.getEndTime(), "t1.created_time", queryParam.getEndTime());
+//		queryWrapper.gt("t1.`status`", 0);
 		
 //		Long channelId = SecurityUtils.getLoginUser().getChannelId();
 //		if(null != channelId && 0 != channelId) {
@@ -656,8 +714,18 @@ public class IndexMgrController extends BaseApiController {
 //				
 //			}
 //		}
-	
-		list = userTicketOrderService.selectIndexTicketBoxTop(queryWrapper);
+
+		IndexTicketBoxTopQueryParam indexTicketBoxTopQueryParam = new IndexTicketBoxTopQueryParam();
+		indexTicketBoxTopQueryParam.setStartTime(queryParam.getStartTime());
+		indexTicketBoxTopQueryParam.setEndTime(queryParam.getEndTime());
+		indexTicketBoxTopQueryParam.setTicketOrderStatus(0);
+		indexTicketBoxTopQueryParam.setChannelOrderStatus(0);
+		indexTicketBoxTopQueryParam.setChannelOrderType(1);
+
+//		list = userTicketOrderService.selectIndexTicketBoxTop(queryWrapper);
+
+		list = userTicketOrderService.selectIndexTicketBoxTopByTicketOrderAndChannelOrder(indexTicketBoxTopQueryParam);
+
 		List<Map<String,Object>> mapList = new ArrayList<>();
 		if(null != list && list.size() > 0) {
 			for(IndexVO indexVo : list) {

+ 3 - 1
mp-quartz/src/main/java/com/qs/mp/quartz/task/AsyncConsumeTask.java

@@ -13,6 +13,7 @@ import com.qs.mp.framework.redis.RedisLockKey;
 import com.qs.mp.framework.service.IAsyncTaskService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.aop.framework.AopContext;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
@@ -51,7 +52,8 @@ public class AsyncConsumeTask {
                 continue;
             }
             try {
-                this.execute(asyncTask);
+                AsyncConsumeTask proxy = (AsyncConsumeTask)AopContext.currentProxy();
+                proxy.execute(asyncTask);
             } catch (Exception e) {
                 // 更新异步任务执行次数
                 asyncTaskService.update(new LambdaUpdateWrapper<AsyncTask>()

+ 31 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/IndexTicketBoxTopQueryParam.java

@@ -0,0 +1,31 @@
+package com.qs.mp.admin.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author Cup
+ * @date 2022/6/8
+ */
+@ApiModel("后台首页盲票组销售统计查询入参类")
+@Data
+public class IndexTicketBoxTopQueryParam {
+
+    @ApiModelProperty(value = "自定义开始时间",required=false)
+    private Date startTime;
+
+    @ApiModelProperty(value = "自定义截止时间",required=false)
+    private Date endTime;
+
+    @ApiModelProperty("盲票订单状态")
+    private Integer ticketOrderStatus;
+
+    @ApiModelProperty("经销商订单状态")
+    private Integer channelOrderStatus;
+
+    @ApiModelProperty("经销商订单类型")
+    private Integer channelOrderType;
+}

+ 10 - 0
mp-service/src/main/java/com/qs/mp/channel/mapper/ChannelOrderMapper.java

@@ -1,5 +1,7 @@
 package com.qs.mp.channel.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qs.mp.admin.domain.vo.IndexVO;
 import com.qs.mp.channel.domain.ChannelOrder;
 import com.qs.mp.channel.domain.vo.ChannelOrderVO;
 
@@ -35,4 +37,12 @@ public interface ChannelOrderMapper extends BaseMapper<ChannelOrder> {
 	 * @return
 	 */
 	int selectChannelOrderCount(@Param(Constants.WRAPPER) Wrapper<ChannelOrder> wrapper);
+
+	/**
+	 * 统计实时交易数据
+	 * @param wrapper
+	 * @return
+	 */
+    List<IndexVO> selectIndexChannelOrderDailyInfoList(@Param(Constants.WRAPPER) QueryWrapper<ChannelOrder> wrapper);
+
 }

+ 10 - 0
mp-service/src/main/java/com/qs/mp/channel/service/IChannelOrderService.java

@@ -1,6 +1,8 @@
 package com.qs.mp.channel.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qs.mp.admin.domain.param.ChannelOrderCancelParam;
+import com.qs.mp.admin.domain.vo.IndexVO;
 import com.qs.mp.admin.domain.vo.TicketCntVO;
 import com.qs.mp.channel.domain.ChannelOrder;
 import com.qs.mp.channel.domain.ChannelOrderDetail;
@@ -87,4 +89,12 @@ public interface IChannelOrderService extends IService<ChannelOrder> {
 	 * @param order
 	 */
     void confirm(ChannelOrder order);
+
+	/**
+	 * 统计实时交易数据
+	 * @param wrapper
+	 * @return
+	 */
+	List<IndexVO> selectIndexChannelOrderDailyInfoList(QueryWrapper<ChannelOrder> wrapper);
+
 }

+ 7 - 0
mp-service/src/main/java/com/qs/mp/channel/service/impl/ChannelOrderServiceImpl.java

@@ -3,6 +3,7 @@ package com.qs.mp.channel.service.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Assert;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qs.mp.admin.domain.TicketBox;
 import com.qs.mp.admin.domain.TicketPackage;
 import com.qs.mp.admin.domain.param.ChannelOrderCancelParam;
+import com.qs.mp.admin.domain.vo.IndexVO;
 import com.qs.mp.admin.service.ITicketBoxService;
 import com.qs.mp.admin.service.ITicketPackageService;
 import com.qs.mp.common.enums.*;
@@ -395,5 +397,10 @@ public class ChannelOrderServiceImpl extends
 		return getBaseMapper().selectChannelOrderCount(wrapper);
 	}
 
+    @Override
+    public List<IndexVO> selectIndexChannelOrderDailyInfoList(QueryWrapper<ChannelOrder> wrapper) {
+        return getBaseMapper().selectIndexChannelOrderDailyInfoList(wrapper);
+    }
+
 
 }

+ 8 - 0
mp-service/src/main/java/com/qs/mp/user/mapper/UserTicketOrderMapper.java

@@ -1,10 +1,12 @@
 package com.qs.mp.user.mapper;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qs.mp.admin.domain.param.IndexTicketBoxTopQueryParam;
 import com.qs.mp.admin.domain.vo.IndexVO;
 import com.qs.mp.admin.domain.vo.TicketCntVO;
 import com.qs.mp.admin.domain.vo.UserTicketOrderDetailVO;
 import com.qs.mp.admin.domain.vo.UserTicketOrderListVO;
+import com.qs.mp.channel.domain.ChannelOrder;
 import com.qs.mp.user.domain.UserDeliverOrder;
 import com.qs.mp.user.domain.UserTicketOrder;
 
@@ -101,4 +103,10 @@ public interface UserTicketOrderMapper extends BaseMapper<UserTicketOrder> {
 	UserTicketOrderDetailVO selectUserTicketOrderDetail(@Param(Constants.WRAPPER) QueryWrapper<UserTicketOrder> queryWrapper);
 
 	int countUserTicketOrder(@Param(Constants.WRAPPER) QueryWrapper<UserTicketOrder> queryWrapper);
+
+	/**
+	 * 统计盲票组销量
+	 * @return
+	 */
+    List<IndexVO> selectIndexTicketBoxTopByTicketOrderAndChannelOrder(@Param("param") IndexTicketBoxTopQueryParam indexTicketBoxTopQueryParam );
 }

+ 10 - 0
mp-service/src/main/java/com/qs/mp/user/service/IUserTicketOrderService.java

@@ -1,11 +1,13 @@
 package com.qs.mp.user.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qs.mp.admin.domain.param.IndexTicketBoxTopQueryParam;
 import com.qs.mp.admin.domain.param.UserTicketOrderQueryParam;
 import com.qs.mp.admin.domain.vo.IndexVO;
 import com.qs.mp.admin.domain.vo.TicketCntVO;
 import com.qs.mp.admin.domain.vo.UserTicketOrderDetailVO;
 import com.qs.mp.admin.domain.vo.UserTicketOrderListVO;
+import com.qs.mp.channel.domain.ChannelOrder;
 import com.qs.mp.channel.domain.ChannelOrderDetail;
 import com.qs.mp.pay.domain.PayOrder;
 import com.qs.mp.user.domain.UserDeliverOrder;
@@ -155,4 +157,12 @@ public interface IUserTicketOrderService extends IService<UserTicketOrder> {
      * @return
      */
     int countUserTicketOrder(QueryWrapper<UserTicketOrder> queryWrapper);
+
+    /**
+     * 统计盲票组销量
+     * @param queryWrapper
+     * @param channelOrderQueryWrapper
+     * @return
+     */
+    List<IndexVO> selectIndexTicketBoxTopByTicketOrderAndChannelOrder(IndexTicketBoxTopQueryParam indexTicketBoxTopQueryParam );
 }

+ 6 - 0
mp-service/src/main/java/com/qs/mp/user/service/impl/UserTicketOrderServiceImpl.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qs.mp.admin.domain.Ticket;
 import com.qs.mp.admin.domain.TicketBox;
 import com.qs.mp.admin.domain.TicketPackage;
+import com.qs.mp.admin.domain.param.IndexTicketBoxTopQueryParam;
 import com.qs.mp.admin.domain.param.UserTicketOrderQueryParam;
 import com.qs.mp.admin.domain.vo.*;
 import com.qs.mp.admin.service.ITicketBoxService;
@@ -567,6 +568,11 @@ public class UserTicketOrderServiceImpl extends
     return getBaseMapper().countUserTicketOrder(queryWrapper);
   }
 
+  @Override
+  public List<IndexVO> selectIndexTicketBoxTopByTicketOrderAndChannelOrder(IndexTicketBoxTopQueryParam indexTicketBoxTopQueryParam ) {
+    return getBaseMapper().selectIndexTicketBoxTopByTicketOrderAndChannelOrder(indexTicketBoxTopQueryParam);
+  }
+
   @Override
   public UserTicketOrderDetailVO detail(String orderId) {
     QueryWrapper<UserTicketOrder> queryWrapper = new QueryWrapper<>();

+ 9 - 0
mp-service/src/main/resources/mapper/channel/ChannelOrderMapper.xml

@@ -51,4 +51,13 @@
 		${ew.customSqlSegment}
 	</select>
 
+    <select id="selectIndexChannelOrderDailyInfoList" resultType="com.qs.mp.admin.domain.vo.IndexVO">
+        select
+            DATE_FORMAT(t1.created_time, '%Y%m%d') AS time,
+        SUM(t1.pay_amt) AS payAmt
+        from mp_channel_order t1
+        ${ew.customSqlSegment}
+        group by time
+    </select>
+
 </mapper>

+ 27 - 0
mp-service/src/main/resources/mapper/user/UserTicketOrderMapper.xml

@@ -180,4 +180,31 @@
 		left join mp_ticket_box t3 on t1.box_id = t3.box_id
 		${ew.customSqlSegment}
 	</select>
+
+    <select id="selectIndexTicketBoxTopByTicketOrderAndChannelOrder" resultType="com.qs.mp.admin.domain.vo.IndexVO">
+		select SUM(a.pay_amt) as payAmt,
+				b.title,
+				a.box_id
+		from (select t1.box_id,
+		SUM(t1.pay_amt) AS pay_amt
+		from `mp_user_ticket_order` t1
+		where t1.created_time between #{param.startTime} and #{param.endTime}
+		and t1.status > #{param.ticketOrderStatus}
+		group by t1.box_id
+
+		union
+
+		select a2.box_id,
+		sum(a1.pay_amt) as pay_amt
+		from mp_channel_order a1
+		left join mp_channel_order_item a2
+		on a1.order_id = a2.order_id
+		where a1.created_time between #{param.startTime} and #{param.endTime}
+		and a1.status > #{param.channelOrderStatus}
+		and  a1.type > #{param.channelOrderType}
+		group by a2.box_id) a
+		left join mp_ticket_box b on a.box_id = b.box_id
+		group by a.box_id
+		ORDER BY payAmt DESC
+	</select>
 </mapper>