Przeglądaj źródła

统计报表增加预付票统计

cup 2 lat temu
rodzic
commit
f00467f3dc

+ 65 - 21
mp-quartz/src/main/java/com/qs/mp/quartz/task/DayStatTask.java

@@ -4,14 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qs.mp.admin.domain.TicketBox;
 import com.qs.mp.admin.service.ITicketBoxService;
-import com.qs.mp.channel.domain.Channel;
-import com.qs.mp.channel.domain.ChannelCommission;
-import com.qs.mp.channel.domain.ChannelCouponVerifyLog;
-import com.qs.mp.channel.domain.ChannelWithdraw;
-import com.qs.mp.channel.service.IChannelCommissionService;
-import com.qs.mp.channel.service.IChannelCouponVerifyLogService;
-import com.qs.mp.channel.service.IChannelService;
-import com.qs.mp.channel.service.IChannelWithdrawService;
+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;
@@ -35,6 +29,8 @@ import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -79,6 +75,9 @@ public class DayStatTask {
   @Autowired
   private IChannelCouponVerifyLogService channelCouponVerifyLogService;
 
+  @Autowired
+  private IChannelOrderService channelOrderService;
+
   @Value("${export.page-size}")
   private int pageSize;
 
@@ -129,6 +128,9 @@ public class DayStatTask {
     }
     BigDecimal sumSaleAmt = BigDecimal.ZERO;
     BigDecimal sumAllSaleAmt = BigDecimal.ZERO;
+    // 预付的金额统计
+    BigDecimal sumPreSaleAmt = BigDecimal.ZERO;
+    BigDecimal sumAllPreSaleAmt = BigDecimal.ZERO;
     for (int i = 0; i < totalPage; i++) {
       queryWrapper.orderByAsc(TicketBox::getBoxNo);
       queryWrapper.last("limit " + (i * pageSize) + ", " + pageSize);
@@ -141,11 +143,30 @@ public class DayStatTask {
                 .eq(UserTicketOrder::getStatus, UserTicketOrderStatusEnum.FINISHED)
                 .ge(UserTicketOrder::getPayTime, bizDay)
                 .lt(UserTicketOrder::getPayTime, DateUtils.addDays(bizDay, 1)));
-        if (null != orderMap) {
-          BigDecimal orderAmt = new BigDecimal(
-              Integer.valueOf(String.valueOf(orderMap.get("orderAmt")))).divide(new BigDecimal(100),
-              2, RoundingMode.DOWN);
-          sumSaleAmt = sumSaleAmt.add(orderAmt);
+
+        // 预付的金额统计
+        QueryWrapper<ChannelOrder> channelOrderQueryWrapper = new QueryWrapper<>();
+        channelOrderQueryWrapper.eq("t2.box_id", ticketBox.getBoxId());
+        channelOrderQueryWrapper.gt("t1.type" , 1);
+        channelOrderQueryWrapper.gt("t1.status" , 0);
+        channelOrderQueryWrapper.ge("t1.pay_time" , bizDay);
+        channelOrderQueryWrapper.lt("t1.pay_time" , DateUtils.addDays(bizDay, 1));
+        int preSaleAmt = channelOrderService.selectPreSaleAmtByQueryWrapper(channelOrderQueryWrapper);
+
+
+        if (null != orderMap || preSaleAmt > 0) {
+          BigDecimal orderAmt = BigDecimal.ZERO;
+          if (Objects.nonNull(orderMap)) {
+            orderAmt = new BigDecimal(
+                    Integer.valueOf(String.valueOf(orderMap.get("orderAmt")))).divide(new BigDecimal(100),
+                    2, RoundingMode.DOWN);
+            sumSaleAmt = sumSaleAmt.add(orderAmt);
+          }
+
+
+          // 设置预付票金额
+          BigDecimal preOrderAmt = new BigDecimal(preSaleAmt).divide(new BigDecimal(100),2,RoundingMode.DOWN);
+          sumPreSaleAmt = sumPreSaleAmt.add(preOrderAmt);
 
           Map<String, Object> allOrderMap = userTicketOrderService.getMap(
               new QueryWrapper<UserTicketOrder>()
@@ -153,26 +174,49 @@ public class DayStatTask {
                   .lambda().eq(UserTicketOrder::getBoxId, ticketBox.getBoxId())
                   .eq(UserTicketOrder::getStatus, UserTicketOrderStatusEnum.FINISHED)
                   .lt(UserTicketOrder::getPayTime, DateUtils.addDays(bizDay, 1)));
-          BigDecimal allOrderAmt = new BigDecimal(
-              Integer.valueOf(String.valueOf(allOrderMap.get("orderAmt")))).divide(new BigDecimal(100),
-              2, RoundingMode.DOWN);
-          sumAllSaleAmt = sumAllSaleAmt.add(allOrderAmt);
+          BigDecimal allOrderAmt = BigDecimal.ZERO;
+          if (Objects.nonNull(allOrderMap)) {
+            allOrderAmt = new BigDecimal(
+                Integer.valueOf(String.valueOf(allOrderMap.get("orderAmt")))).divide(new BigDecimal(100),
+                2, RoundingMode.DOWN);
+            sumAllSaleAmt = sumAllSaleAmt.add(allOrderAmt);
+          }
+
+          // 预付累积金额
+          QueryWrapper<ChannelOrder> channelOrderQueryWrapper1 = new QueryWrapper<>();
+          channelOrderQueryWrapper1.eq("t2.box_id", ticketBox.getBoxId());
+          channelOrderQueryWrapper1.gt("t1.type" , 1);
+          channelOrderQueryWrapper1.gt("t1.status" , 0);
+          channelOrderQueryWrapper1.lt("t1.pay_time" , DateUtils.addDays(bizDay, 1));
+          int allPreSaleAmt = channelOrderService.selectPreSaleAmtByQueryWrapper(channelOrderQueryWrapper1);
+
+          // 设置预付票累积金额
+          BigDecimal allPreOrderAmt = new BigDecimal(allPreSaleAmt).divide(new BigDecimal(100),2,RoundingMode.DOWN);
+          sumAllPreSaleAmt = sumAllPreSaleAmt.add(allPreOrderAmt);
+
+
+
+
           // 只输出当日销量大于0的票组
-          if (orderAmt.compareTo(BigDecimal.ZERO) > 0) {
+          if (orderAmt.compareTo(BigDecimal.ZERO) > 0 || preOrderAmt.compareTo(BigDecimal.ZERO) > 0) {
             sbDetail.append(ticketBox.getTitle()).append("|").append(ticketBox.getType().getDesc())
                 .append("(").append(
                     new BigDecimal(ticketBox.getSalePrice()).divide(new BigDecimal(100), 2,
-                        RoundingMode.DOWN)).append("元),累计销售额:")
+                        RoundingMode.DOWN)).append("元),累计零售销售额:")
                 .append(allOrderAmt).append("元,当日:")
                 .append(orderAmt).append("元\n");
+
+            sbDetail.append("累计预付销售额:")
+                    .append(allPreOrderAmt).append("元,当日:")
+                    .append(preOrderAmt).append("元\n");
             sbDetail.append("------------------------\n");
           }
         }
       }
     }
 
-    sb.append("累计销售额:").append(sumAllSaleAmt).append("元,当日:").append(sumSaleAmt).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")

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

@@ -45,4 +45,10 @@ public interface ChannelOrderMapper extends BaseMapper<ChannelOrder> {
 	 */
     List<IndexVO> selectIndexChannelOrderDailyInfoList(@Param(Constants.WRAPPER) QueryWrapper<ChannelOrder> wrapper);
 
+	/**
+	 * 预付金额统计
+	 * @param channelOrderQueryWrapper
+	 * @return
+	 */
+    int selectPreSaleAmtByQueryWrapper(@Param(Constants.WRAPPER) QueryWrapper<ChannelOrder> channelOrderQueryWrapper);
 }

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

@@ -97,4 +97,10 @@ public interface IChannelOrderService extends IService<ChannelOrder> {
 	 */
 	List<IndexVO> selectIndexChannelOrderDailyInfoList(QueryWrapper<ChannelOrder> wrapper);
 
+	/**
+	 * 预付金额统计
+	 * @param channelOrderQueryWrapper
+	 * @return
+	 */
+    int selectPreSaleAmtByQueryWrapper(QueryWrapper<ChannelOrder> channelOrderQueryWrapper);
 }

+ 4 - 1
mp-service/src/main/java/com/qs/mp/channel/service/impl/ChannelOrderServiceImpl.java

@@ -410,5 +410,8 @@ public class ChannelOrderServiceImpl extends
         return getBaseMapper().selectIndexChannelOrderDailyInfoList(wrapper);
     }
 
-
+    @Override
+    public int selectPreSaleAmtByQueryWrapper(QueryWrapper<ChannelOrder> channelOrderQueryWrapper) {
+        return getBaseMapper().selectPreSaleAmtByQueryWrapper(channelOrderQueryWrapper);
+    }
 }

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

@@ -60,4 +60,10 @@
         group by time
     </select>
 
+    <select id="selectPreSaleAmtByQueryWrapper" resultType="int">
+        select IFNULL(sum(t1.pay_amt) ,0) as payAmt
+        from mp_channel_order t1
+         left join mp_channel_order_item t2 on t1.order_id = t2.order_id
+        ${ew.customSqlSegment}
+    </select>
 </mapper>