|
@@ -6,12 +6,7 @@ import com.qs.mp.admin.domain.TicketBox;
|
|
|
import com.qs.mp.admin.service.ITicketBoxService;
|
|
|
import com.qs.mp.channel.domain.*;
|
|
|
import com.qs.mp.channel.service.*;
|
|
|
-import com.qs.mp.common.enums.ChannelWithdrawStatusEnum;
|
|
|
-import com.qs.mp.common.enums.CoinLogTypeEnum;
|
|
|
-import com.qs.mp.common.enums.CouponDiscountTypeEnum;
|
|
|
-import com.qs.mp.common.enums.TicketBoxStatusEnum;
|
|
|
-import com.qs.mp.common.enums.TicketTypeEnum;
|
|
|
-import com.qs.mp.common.enums.UserTicketOrderStatusEnum;
|
|
|
+import com.qs.mp.common.enums.*;
|
|
|
import com.qs.mp.common.utils.DateUtils;
|
|
|
import com.qs.mp.common.utils.LogUtil;
|
|
|
import com.qs.mp.common.utils.StringUtils;
|
|
@@ -19,9 +14,11 @@ import com.qs.mp.common.utils.WebhookService;
|
|
|
import com.qs.mp.system.domain.SysUser;
|
|
|
import com.qs.mp.system.service.ISysUserService;
|
|
|
import com.qs.mp.user.domain.UserCoinLog;
|
|
|
+import com.qs.mp.user.domain.UserCoupon;
|
|
|
import com.qs.mp.user.domain.UserExchangeOrder;
|
|
|
import com.qs.mp.user.domain.UserTicketOrder;
|
|
|
import com.qs.mp.user.service.IUserCoinLogService;
|
|
|
+import com.qs.mp.user.service.IUserCouponService;
|
|
|
import com.qs.mp.user.service.IUserExchangeOrderService;
|
|
|
import com.qs.mp.user.service.IUserTicketOrderService;
|
|
|
import java.math.BigDecimal;
|
|
@@ -78,6 +75,9 @@ public class DayStatTask {
|
|
|
@Autowired
|
|
|
private IChannelOrderService channelOrderService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IUserCouponService userCouponService;
|
|
|
+
|
|
|
@Value("${export.page-size}")
|
|
|
private int pageSize;
|
|
|
|
|
@@ -128,6 +128,16 @@ public class DayStatTask {
|
|
|
}
|
|
|
BigDecimal sumSaleAmt = BigDecimal.ZERO;
|
|
|
BigDecimal sumAllSaleAmt = BigDecimal.ZERO;
|
|
|
+
|
|
|
+
|
|
|
+ // 线上销售额和汇总
|
|
|
+ BigDecimal onlineSumSaleAmt = BigDecimal.ZERO;
|
|
|
+ BigDecimal onlineSumAllSaleAmt = BigDecimal.ZERO;
|
|
|
+ // 线下销售额和汇总
|
|
|
+ BigDecimal offlineSumSaleAmt = BigDecimal.ZERO;
|
|
|
+ BigDecimal offlineSumAllSaleAmt = BigDecimal.ZERO;
|
|
|
+
|
|
|
+
|
|
|
// 预付的金额统计
|
|
|
BigDecimal sumPreSaleAmt = BigDecimal.ZERO;
|
|
|
BigDecimal sumAllPreSaleAmt = BigDecimal.ZERO;
|
|
@@ -135,7 +145,13 @@ public class DayStatTask {
|
|
|
queryWrapper.orderByAsc(TicketBox::getBoxNo);
|
|
|
queryWrapper.last("limit " + (i * pageSize) + ", " + pageSize);
|
|
|
List<TicketBox> ticketBoxList = ticketBoxService.list(queryWrapper);
|
|
|
+ // 区分线上和线下标识
|
|
|
+ boolean isOnline = true;
|
|
|
for (TicketBox ticketBox : ticketBoxList) {
|
|
|
+ if (TicketTypeEnum.OFFLINE.equals(ticketBox.getType())) {
|
|
|
+ isOnline = false;
|
|
|
+ }
|
|
|
+
|
|
|
Map<String, Object> orderMap = userTicketOrderService.getMap(
|
|
|
new QueryWrapper<UserTicketOrder>()
|
|
|
.select("IFNULL(sum(pay_amt) ,0) as orderAmt")
|
|
@@ -160,7 +176,12 @@ public class DayStatTask {
|
|
|
orderAmt = new BigDecimal(
|
|
|
Integer.valueOf(String.valueOf(orderMap.get("orderAmt")))).divide(new BigDecimal(100),
|
|
|
2, RoundingMode.DOWN);
|
|
|
- sumSaleAmt = sumSaleAmt.add(orderAmt);
|
|
|
+// sumSaleAmt = sumSaleAmt.add(orderAmt);
|
|
|
+ if (isOnline) {
|
|
|
+ onlineSumSaleAmt = onlineSumSaleAmt.add(orderAmt);
|
|
|
+ } else {
|
|
|
+ offlineSumSaleAmt = offlineSumSaleAmt.add(orderAmt);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
@@ -179,7 +200,12 @@ public class DayStatTask {
|
|
|
allOrderAmt = new BigDecimal(
|
|
|
Integer.valueOf(String.valueOf(allOrderMap.get("orderAmt")))).divide(new BigDecimal(100),
|
|
|
2, RoundingMode.DOWN);
|
|
|
- sumAllSaleAmt = sumAllSaleAmt.add(allOrderAmt);
|
|
|
+// sumAllSaleAmt = sumAllSaleAmt.add(allOrderAmt);
|
|
|
+ if (isOnline) {
|
|
|
+ onlineSumAllSaleAmt = onlineSumAllSaleAmt.add(allOrderAmt);
|
|
|
+ } else {
|
|
|
+ offlineSumAllSaleAmt = offlineSumAllSaleAmt.add(allOrderAmt);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 预付累积金额
|
|
@@ -215,8 +241,11 @@ public class DayStatTask {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- sb.append("累计零售销售额:").append(sumAllSaleAmt).append("元,当日:").append(sumSaleAmt).append("元\n");
|
|
|
- sb.append("累计预付销售额:").append(sumAllPreSaleAmt).append("元,当日:").append(sumPreSaleAmt).append("元\n");
|
|
|
+ sb.append("线上累计零售销售金额:").append(onlineSumAllSaleAmt).append("元,当日:").append(onlineSumSaleAmt).append("元\n");
|
|
|
+ sb.append("线下累计零售销售金额:").append(offlineSumAllSaleAmt).append("元,当日:").append(offlineSumSaleAmt).append("元,").append("累计预付销售金额:").append(sumAllPreSaleAmt).append("元,当日:").append(sumPreSaleAmt).append("元\n");
|
|
|
+
|
|
|
+// sb.append("累计零售销售额:").append(sumAllSaleAmt).append("元,当日:").append(sumSaleAmt).append("元\n");
|
|
|
+// sb.append("累计预付销售额:").append(sumAllPreSaleAmt).append("元,当日:").append(sumPreSaleAmt).append("元\n");
|
|
|
Map<String, Object> commMap = channelCommissionService.getMap(
|
|
|
new QueryWrapper<ChannelCommission>()
|
|
|
.select("IFNULL(sum(comm_amt) ,0) as commAmt")
|
|
@@ -235,24 +264,48 @@ public class DayStatTask {
|
|
|
new BigDecimal(100), 2, RoundingMode.DOWN)).append("元\n");
|
|
|
}
|
|
|
|
|
|
- Map<String, Object> couponMap = channelCouponVerifyLogService.getMap(
|
|
|
- new QueryWrapper<ChannelCouponVerifyLog>()
|
|
|
- .select("IFNULL(sum(discount) ,0) as discount")
|
|
|
- .lambda().ge(ChannelCouponVerifyLog::getCreatedTime, bizDay)
|
|
|
- .lt(ChannelCouponVerifyLog::getCreatedTime, DateUtils.addDays(bizDay, 1))
|
|
|
- .eq(ChannelCouponVerifyLog::getDiscountType, CouponDiscountTypeEnum.MONEY_OFF));
|
|
|
- Map<String, Object> allCouponMap = channelCouponVerifyLogService.getMap(
|
|
|
- new QueryWrapper<ChannelCouponVerifyLog>()
|
|
|
- .select("IFNULL(sum(discount) ,0) as discount")
|
|
|
- .lambda().lt(ChannelCouponVerifyLog::getCreatedTime, DateUtils.addDays(bizDay, 1))
|
|
|
- .eq(ChannelCouponVerifyLog::getDiscountType, CouponDiscountTypeEnum.MONEY_OFF));
|
|
|
if (null != commMap) {
|
|
|
- sb.append("累计核销:").append(
|
|
|
- new BigDecimal(Integer.valueOf(String.valueOf(allCouponMap.get("discount")))).divide(
|
|
|
- new BigDecimal(100), 2, RoundingMode.DOWN))
|
|
|
- .append("元,当日:").append(
|
|
|
- new BigDecimal(Integer.valueOf(String.valueOf(couponMap.get("discount")))).divide(
|
|
|
- new BigDecimal(100), 2, RoundingMode.DOWN)).append("元\n");
|
|
|
+ // 线上核销统计
|
|
|
+ QueryWrapper<ChannelCouponVerifyLog> onlineDisCountQueryWrapper = new QueryWrapper<>();
|
|
|
+ onlineDisCountQueryWrapper.ge("t1.created_time", bizDay);
|
|
|
+ onlineDisCountQueryWrapper.lt("t1.created_time", DateUtils.addDays(bizDay, 1));
|
|
|
+ onlineDisCountQueryWrapper.eq("t1.discount_type", CouponDiscountTypeEnum.MONEY_OFF);
|
|
|
+ onlineDisCountQueryWrapper.eq("t3.type", CouponTypeEnum.TICKET_ORDER);
|
|
|
+ Integer onlineDisCount = channelCouponVerifyLogService.sumDisCountByQueryWrapper(onlineDisCountQueryWrapper);
|
|
|
+ QueryWrapper<ChannelCouponVerifyLog> onlineAllDisCountQueryWrapper = new QueryWrapper<>();
|
|
|
+ onlineAllDisCountQueryWrapper.lt("t1.created_time", DateUtils.addDays(bizDay, 1));
|
|
|
+ onlineAllDisCountQueryWrapper.eq("t1.discount_type", CouponDiscountTypeEnum.MONEY_OFF);
|
|
|
+ onlineAllDisCountQueryWrapper.eq("t3.type", CouponTypeEnum.TICKET_ORDER);
|
|
|
+ Integer onlineAllDisCount = channelCouponVerifyLogService.sumDisCountByQueryWrapper(onlineAllDisCountQueryWrapper);
|
|
|
+
|
|
|
+ // 线下核销统计
|
|
|
+ QueryWrapper<ChannelCouponVerifyLog> offlineDisCountQueryWrapper = new QueryWrapper<>();
|
|
|
+ offlineDisCountQueryWrapper.ge("t1.created_time", bizDay);
|
|
|
+ offlineDisCountQueryWrapper.lt("t1.created_time", DateUtils.addDays(bizDay, 1));
|
|
|
+ offlineDisCountQueryWrapper.eq("t1.discount_type", CouponDiscountTypeEnum.MONEY_OFF);
|
|
|
+ offlineDisCountQueryWrapper.eq("t3.type", CouponTypeEnum.SITE_CONSUME);
|
|
|
+ Integer offlineDisCount = channelCouponVerifyLogService.sumDisCountByQueryWrapper(offlineDisCountQueryWrapper);
|
|
|
+ QueryWrapper<ChannelCouponVerifyLog> offlineAllDisCountQueryWrapper = new QueryWrapper<>();
|
|
|
+ offlineAllDisCountQueryWrapper.lt("t1.created_time", DateUtils.addDays(bizDay, 1));
|
|
|
+ offlineAllDisCountQueryWrapper.eq("t1.discount_type", CouponDiscountTypeEnum.MONEY_OFF);
|
|
|
+ offlineAllDisCountQueryWrapper.eq("t3.type", CouponTypeEnum.SITE_CONSUME);
|
|
|
+ Integer offlineAllDisCount = channelCouponVerifyLogService.sumDisCountByQueryWrapper(offlineAllDisCountQueryWrapper);
|
|
|
+
|
|
|
+
|
|
|
+ sb.append("线上券累计核销金额:").append(
|
|
|
+ new BigDecimal(Integer.valueOf(String.valueOf(onlineAllDisCount))).divide(
|
|
|
+ new BigDecimal(100), 2, RoundingMode.DOWN))
|
|
|
+ .append("元,当日:").append(
|
|
|
+ new BigDecimal(Integer.valueOf(String.valueOf(onlineDisCount))).divide(
|
|
|
+ new BigDecimal(100), 2, RoundingMode.DOWN)).append("元\n");
|
|
|
+
|
|
|
+ sb.append("线下券累计核销金额:").append(
|
|
|
+ new BigDecimal(Integer.valueOf(String.valueOf(offlineAllDisCount))).divide(
|
|
|
+ new BigDecimal(100), 2, RoundingMode.DOWN))
|
|
|
+ .append("元,当日:").append(
|
|
|
+ new BigDecimal(Integer.valueOf(String.valueOf(offlineDisCount))).divide(
|
|
|
+ new BigDecimal(100), 2, RoundingMode.DOWN)).append("元\n");
|
|
|
+
|
|
|
}
|
|
|
|
|
|
Map<String, Object> withdrawMap = channelWithdrawService.getMap(
|
|
@@ -281,6 +334,52 @@ public class DayStatTask {
|
|
|
new BigDecimal(100), 2, RoundingMode.DOWN)).append("元\n");
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ // 线上和线下派发券金额统计
|
|
|
+ QueryWrapper<UserCoupon> onlineUserCouponQueryWrapper = new QueryWrapper<>();
|
|
|
+ onlineUserCouponQueryWrapper.ge("t1.created_time", bizDay);
|
|
|
+ onlineUserCouponQueryWrapper.lt("t1.created_time", DateUtils.addDays(bizDay, 1));
|
|
|
+ onlineUserCouponQueryWrapper.eq("t2.discount_type", CouponDiscountTypeEnum.MONEY_OFF);
|
|
|
+ onlineUserCouponQueryWrapper.eq("t2.type", CouponTypeEnum.TICKET_ORDER);
|
|
|
+ Integer onlineUserCouponDisSum = userCouponService.sumDiscountByQueryWrapper(onlineUserCouponQueryWrapper);
|
|
|
+
|
|
|
+
|
|
|
+ QueryWrapper<UserCoupon> onlineAllUserCouponQueryWrapper = new QueryWrapper<>();
|
|
|
+ onlineAllUserCouponQueryWrapper.lt("t1.created_time", DateUtils.addDays(bizDay, 1));
|
|
|
+ onlineAllUserCouponQueryWrapper.eq("t2.discount_type", CouponDiscountTypeEnum.MONEY_OFF);
|
|
|
+ onlineAllUserCouponQueryWrapper.eq("t2.type", CouponTypeEnum.TICKET_ORDER);
|
|
|
+ Integer onlineAllUserCouponDisSum = userCouponService.sumDiscountByQueryWrapper(onlineAllUserCouponQueryWrapper);
|
|
|
+
|
|
|
+
|
|
|
+ QueryWrapper<UserCoupon> offlineUserCouponQueryWrapper = new QueryWrapper<>();
|
|
|
+ offlineUserCouponQueryWrapper.ge("t1.created_time", bizDay);
|
|
|
+ offlineUserCouponQueryWrapper.lt("t1.created_time", DateUtils.addDays(bizDay, 1));
|
|
|
+ offlineUserCouponQueryWrapper.eq("t2.discount_type", CouponDiscountTypeEnum.MONEY_OFF);
|
|
|
+ offlineUserCouponQueryWrapper.eq("t2.type", CouponTypeEnum.SITE_CONSUME);
|
|
|
+ Integer offlineUserCouponDisSum = userCouponService.sumDiscountByQueryWrapper(offlineUserCouponQueryWrapper);
|
|
|
+
|
|
|
+
|
|
|
+ QueryWrapper<UserCoupon> offlineAllUserCouponQueryWrapper = new QueryWrapper<>();
|
|
|
+ offlineAllUserCouponQueryWrapper.lt("t1.created_time", DateUtils.addDays(bizDay, 1));
|
|
|
+ offlineAllUserCouponQueryWrapper.eq("t2.discount_type", CouponDiscountTypeEnum.MONEY_OFF);
|
|
|
+ offlineAllUserCouponQueryWrapper.eq("t2.type", CouponTypeEnum.SITE_CONSUME);
|
|
|
+ Integer offlineAllUserCouponDisSum = userCouponService.sumDiscountByQueryWrapper(offlineAllUserCouponQueryWrapper);
|
|
|
+
|
|
|
+ sb.append("线上累计派券金额:").append(
|
|
|
+ new BigDecimal(Integer.valueOf(String.valueOf(onlineAllUserCouponDisSum))).divide(
|
|
|
+ new BigDecimal(100), 2, RoundingMode.DOWN))
|
|
|
+ .append("元,当日:").append(
|
|
|
+ new BigDecimal(Integer.valueOf(String.valueOf(onlineUserCouponDisSum))).divide(
|
|
|
+ new BigDecimal(100), 2, RoundingMode.DOWN)).append("元\n");
|
|
|
+
|
|
|
+ sb.append("线下累计派券金额:").append(
|
|
|
+ new BigDecimal(Integer.valueOf(String.valueOf(offlineAllUserCouponDisSum))).divide(
|
|
|
+ new BigDecimal(100), 2, RoundingMode.DOWN))
|
|
|
+ .append("元,当日:").append(
|
|
|
+ new BigDecimal(Integer.valueOf(String.valueOf(offlineUserCouponDisSum))).divide(
|
|
|
+ new BigDecimal(100), 2, RoundingMode.DOWN)).append("元\n");
|
|
|
+
|
|
|
+
|
|
|
int exCnt = userExchangeOrderService.count(new LambdaQueryWrapper<UserExchangeOrder>()
|
|
|
.ge(UserExchangeOrder::getCreatedTime, bizDay)
|
|
|
.lt(UserExchangeOrder::getCreatedTime, DateUtils.addDays(bizDay, 1)));
|
|
@@ -319,7 +418,25 @@ public class DayStatTask {
|
|
|
}
|
|
|
sb.append("===================\n");
|
|
|
sb.append(sbDetail);
|
|
|
- LogUtil.info(logger, "通知发送结果:" + WebhookService.sendBizData(sb.toString()));
|
|
|
+
|
|
|
+ // 分割,超过15条则分批发送
|
|
|
+ String data = sb.toString();
|
|
|
+ String[] dataArray = data.split("------------------------");
|
|
|
+ if (dataArray.length >= 15) {
|
|
|
+ int count = 0;
|
|
|
+ StringBuilder body = new StringBuilder();
|
|
|
+ for (int i = 0; i < dataArray.length; i++) {
|
|
|
+ count++;
|
|
|
+ body.append(dataArray[i]).append("------------------------");
|
|
|
+ if (count >= 15 || i >= dataArray.length - 1) {
|
|
|
+ LogUtil.info(logger, "通知发送结果:" + WebhookService.sendBizData(body.toString()));
|
|
|
+ body.delete(0, body.length());
|
|
|
+ count = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ LogUtil.info(logger, "通知发送结果:" + WebhookService.sendBizData(data));
|
|
|
+ }
|
|
|
LogUtil.info(logger, sb.toString());
|
|
|
LogUtil.info(logger, "...日统计任务结束..." );
|
|
|
}
|