admin
2020-05-19 744594ef1a2f530fc3e86ea9dc48b62247f79420
fanli/src/main/java/com/yeshi/fanli/service/impl/count/DailyCountOrderServiceImpl.java
@@ -36,35 +36,34 @@
   @Resource
   private DailyCountOrderDao dailyCountOrderDao;
   @Resource
   private HongBaoV2CountService hongBaoV2CountService;
   @Resource
   private CommonOrderCountService commonOrderCountService;
   @Resource
   private UserInfoRegisterService userInfoRegisterService;
   @Resource
   private UserOrderWeiQuanRecordService userOrderWeiQuanRecordService;
   @Resource
   private TaoBaoOrderService taoBaoOrderService;
   @Resource
   private JDOrderService jdOrderService;
   @Resource
   private PDDOrderService pddOrderService;
   @Resource
   private LostOrderService lostOrderService;
   @Override
   public List<DailyCountOrder> getDailyCountList(String type, Date startTime, Date endTime, String channel) throws Exception {
   public List<DailyCountOrder> getDailyCountList(String type, Date startTime, Date endTime, String channel)
         throws Exception {
      // 查询类型
      DailyCountOrderEnum typeEnum = getTypeEnum(type);
      if (typeEnum == null) {
@@ -79,6 +78,7 @@
   /**
    * 获取枚举类型
    *
    * @param type
    * @return
    */
@@ -86,9 +86,9 @@
      if (StringUtil.isNullOrEmpty(name)) {
         return null;
      }
      DailyCountOrderEnum[] array = DailyCountOrderEnum.values();
      for (int i = 0; i < array.length; i ++) {
      for (int i = 0; i < array.length; i++) {
         if (array[i].name().equals(name)) {
            return array[i];
         }
@@ -96,9 +96,9 @@
      return null;
   }
   /**
    * 获取枚举类型
    *
    * @param type
    * @return
    */
@@ -107,9 +107,9 @@
      if (StringUtil.isNullOrEmpty(name)) {
         return "";
      }
      DailyCountOrderEnum[] array = DailyCountOrderEnum.values();
      for (int i = 0; i < array.length; i ++) {
      for (int i = 0; i < array.length; i++) {
         if (array[i].name().equals(name)) {
            return array[i].getDesc();
         }
@@ -118,22 +118,27 @@
      return "";
   }
   /**
    * 初始数据
    *
    * @param typeEnum
    * @throws Exception
    */
   private void initData(DailyCountOrderEnum typeEnum) throws Exception {
   @Override
   public void initData(DailyCountOrderEnum typeEnum) throws Exception {
      Date lastDate = null;
      DailyCountOrder lastRecord = dailyCountOrderDao.getMaxDate(typeEnum);
      if (lastRecord != null) {
         lastDate = lastRecord.getUpdateDate();
      } else {
         lastDate = TimeUtil.parse("2017-05-06");
         lastDate = TimeUtil.parse("2018-01-20");
      }
      long min = DateUtil.dateDiffMin(lastDate, new Date());
      if (min <= 10) { // 10分钟以内不统计
         return;
      }
      Date today = new Date();
      int betweenDays = DateUtil.daysBetween2(lastDate, today);
      for (int i = 0; i <= betweenDays; i++) {
@@ -176,69 +181,70 @@
   /**
    * 统计订单数量
    *
    * @param preDay
    * @param typeEnum
    * @param orderType
    * @throws Exception
    */
   private void addOrderNumCount(String preDay, DailyCountOrderEnum typeEnum, int orderType) throws Exception {
         Long count = hongBaoV2CountService.countOrderByTypeAndDate(orderType, preDay);
         if (count == null)
            count = 0L;
         DailyCountOrder obj = new DailyCountOrder();
         obj.setTotal(BigDecimal.valueOf(count));
         obj.setType(typeEnum);
         obj.setUpdateDate(new Date());
         obj.setDay(TimeUtil.parse(preDay));
         obj.setId(StringUtil.Md5(preDay + typeEnum.name()));
         dailyCountOrderDao.save(obj);
      Long count = hongBaoV2CountService.countOrderByTypeAndDate(orderType, preDay);
      if (count == null)
         count = 0L;
      DailyCountOrder obj = new DailyCountOrder();
      obj.setTotal(BigDecimal.valueOf(count));
      obj.setType(typeEnum);
      obj.setUpdateDate(new Date());
      obj.setDay(TimeUtil.parse(preDay));
      obj.setId(StringUtil.Md5(preDay + typeEnum.name()));
      dailyCountOrderDao.save(obj);
   }
   /**
    * 统计各个渠道订单数据
    *
    * @param preDay
    * @param typeEnum
    * @throws Exception
    */
   private void addChannelOrderNum(String preDay, DailyCountOrderEnum typeEnum) throws Exception {
      List<UserInfoRegister> listRegister  = null;
      List<UserInfoRegister> listRegister = null;
      // 统计当日订单
      List<CountOrderDTO> listOrder = commonOrderCountService.countValidOrderByDay(preDay);
      if (listOrder != null && listOrder.size() > 0) {
         List<Long> listUid = new ArrayList<>();
         for (CountOrderDTO countOrderDTO: listOrder) {
         for (CountOrderDTO countOrderDTO : listOrder) {
            listUid.add(countOrderDTO.getUid());
         }
         listRegister = userInfoRegisterService.listByMultipleUids(listUid);
      }
      // 统计各个渠道
      ChannelEnum[] channels = ChannelEnum.values();
      for (int i = 0; i < channels.length; i++) {
         long count = 0;
         String channelVlaue = channels[i].getVlaue();
         if (listOrder != null && listOrder.size() > 0 && listRegister != null && listRegister.size() > 0) {
            for (CountOrderDTO dto: listOrder) {
            for (CountOrderDTO dto : listOrder) {
               Long orderUid = dto.getUid();
               if (orderUid == null) {
                  continue;
               }
               for (UserInfoRegister register: listRegister) {
               for (UserInfoRegister register : listRegister) {
                  Long uid = register.getId();
                  String vlaue =register.getChannel().getVlaue();
                  String vlaue = register.getChannel();
                  // 渠道 、用户id匹配
                  if (channelVlaue.equalsIgnoreCase(vlaue) && uid.longValue() == orderUid.longValue()) {
                     count ++;
                     count++;
                     break;
                  }
               }
            }
         }
         DailyCountOrder obj = new DailyCountOrder();
         obj.setTotal(BigDecimal.valueOf(count));
         obj.setType(typeEnum);
@@ -249,9 +255,10 @@
         dailyCountOrderDao.save(obj);
      }
   }
   /**
    * 统计新人24H内下单数量
    *
    * @param preDay
    * @param typeEnum
    * @throws Exception
@@ -260,7 +267,7 @@
      ChannelEnum[] channels = ChannelEnum.values();
      for (int i = 0; i < channels.length; i++) {
         int count = 0;
         List<UserInfoRegister> list = userInfoRegisterService.listByChannelAndDay(channels[i].getVlaue(), preDay);
         if (list != null && list.size() > 0) {
            for (UserInfoRegister user : list) {
@@ -270,7 +277,7 @@
                  count += total;
            }
         }
         DailyCountOrder obj = new DailyCountOrder();
         obj.setTotal(BigDecimal.valueOf(count));
         obj.setType(typeEnum);
@@ -281,43 +288,43 @@
         dailyCountOrderDao.save(obj);
      }
   }
   /**
    * 统计渠道金额
    *
    * @param preDay
    * @param typeEnum
    * @throws Exception
    */
   private void addChannelOrderMoney(String preDay, DailyCountOrderEnum typeEnum) throws Exception {
      List<UserInfoRegister> listRegister  = null;
   public void addChannelOrderMoney(String preDay, DailyCountOrderEnum typeEnum) throws Exception {
      List<UserInfoRegister> listRegister = null;
      // 查询订单佣金
      List<CountOrderDTO> listOrder = commonOrderCountService.countCommissionByDay(preDay);
      if (listOrder != null && listOrder.size() > 0) {
         List<Long> listUid = new ArrayList<>();
         for (CountOrderDTO countOrderDTO: listOrder) {
         for (CountOrderDTO countOrderDTO : listOrder) {
            listUid.add(countOrderDTO.getUid());
         }
         listRegister = userInfoRegisterService.listByMultipleUids(listUid);
      }
      ChannelEnum[] channels = ChannelEnum.values();
      for (int i = 0; i < channels.length; i++) {
         BigDecimal money = new BigDecimal(0);
         String channelVlaue = channels[i].getVlaue();
         if (listOrder != null && listOrder.size() > 0 && listRegister != null && listRegister.size() > 0) {
            for (CountOrderDTO dto: listOrder) {
            for (CountOrderDTO dto : listOrder) {
               Long orderUid = dto.getUid();
               BigDecimal commission = dto.getCommission();
               if (commission != null || orderUid == null) {
               if (commission == null || orderUid == null) {
                  continue;
               }
               for (UserInfoRegister register: listRegister) {
               for (UserInfoRegister register : listRegister) {
                  Long uid = register.getId();
                  String vlaue =register.getChannel().getVlaue();
                  String vlaue = register.getChannel();
                  // 渠道 、用户id匹配
                  if (channelVlaue.equalsIgnoreCase(vlaue) && uid.longValue() == orderUid.longValue()) {
                     money = MoneyBigDecimalUtil.add(money, commission);
@@ -325,8 +332,7 @@
               }
            }
         }
         DailyCountOrder obj = new DailyCountOrder();
         obj.setTotal(money);
         obj.setType(typeEnum);
@@ -337,9 +343,10 @@
         dailyCountOrderDao.save(obj);
      }
   }
   /**
    * 统计维权订单数量
    *
    * @param preDay
    * @param typeEnum
    * @throws Exception
@@ -348,7 +355,7 @@
      Integer count = userOrderWeiQuanRecordService.countWeiQaunOrderNumberByDate(preDay);
      if (count == null)
         count = 0;
      DailyCountOrder obj = new DailyCountOrder();
      obj.setTotal(BigDecimal.valueOf(count));
      obj.setType(typeEnum);
@@ -357,10 +364,10 @@
      obj.setId(StringUtil.Md5(preDay + typeEnum.name()));
      dailyCountOrderDao.save(obj);
   }
   /**
    * 查询维权金额
    *
    * @param preDay
    * @param typeEnum
    * @throws Exception
@@ -369,7 +376,7 @@
      BigDecimal money = userOrderWeiQuanRecordService.countWeiQaunOrderMoneyByDate(preDay);
      if (money == null)
         money = new BigDecimal(0);
      DailyCountOrder obj = new DailyCountOrder();
      obj.setTotal(money);
      obj.setType(typeEnum);
@@ -378,10 +385,10 @@
      obj.setId(StringUtil.Md5(preDay + typeEnum.name()));
      dailyCountOrderDao.save(obj);
   }
   /**
    * 淘宝订单跟踪率
    *
    * @param preDay
    * @param typeEnum
    * @throws Exception
@@ -389,17 +396,20 @@
   private void addTBOrderTrackRate(String preDay, DailyCountOrderEnum typeEnum) throws Exception {
      // 统计跟踪到数据
      Long count = commonOrderCountService.countOrderBySourceTypeAndDay(Constant.SOURCE_TYPE_TAOBAO, preDay);
      Long total = taoBaoOrderService.countOrderByDay(preDay);
      // 计算比例
      BigDecimal rate = new BigDecimal(0);
      if (total != null && total > 0 && count != null && count > 0) {
         rate = MoneyBigDecimalUtil.div(BigDecimal.valueOf(count),BigDecimal.valueOf(total));
         rate = MoneyBigDecimalUtil.div(BigDecimal.valueOf(count), BigDecimal.valueOf(total));
         rate = MoneyBigDecimalUtil.mul(rate, BigDecimal.valueOf(100));
      }
      }
      DailyCountOrder obj = new DailyCountOrder();
      obj.setRate(true);
      obj.setTotalDay(BigDecimal.valueOf(total));
      obj.setTotalValid(BigDecimal.valueOf(count));
      obj.setTotal(rate);
      obj.setType(typeEnum);
      obj.setUpdateDate(new Date());
@@ -407,9 +417,10 @@
      obj.setId(StringUtil.Md5(preDay + typeEnum.name()));
      dailyCountOrderDao.save(obj);
   }
   /**
    * 京东订单跟踪率
    *
    * @param preDay
    * @param typeEnum
    * @throws Exception
@@ -417,17 +428,20 @@
   private void addJDOrderTrackRate(String preDay, DailyCountOrderEnum typeEnum) throws Exception {
      // 统计跟踪到数据
      Long count = commonOrderCountService.countOrderBySourceTypeAndDay(Constant.SOURCE_TYPE_JD, preDay);
      Long total = jdOrderService.countOrderByDay(preDay);
      // 计算比例
      BigDecimal rate = new BigDecimal(0);
      if (total != null && total > 0 && count != null && count > 0) {
         rate = MoneyBigDecimalUtil.div(BigDecimal.valueOf(count),BigDecimal.valueOf(total));
         rate = MoneyBigDecimalUtil.div(BigDecimal.valueOf(count), BigDecimal.valueOf(total));
         rate = MoneyBigDecimalUtil.mul(rate, BigDecimal.valueOf(100));
      }
      }
      DailyCountOrder obj = new DailyCountOrder();
      obj.setRate(true);
      obj.setTotalDay(BigDecimal.valueOf(total));
      obj.setTotalValid(BigDecimal.valueOf(count));
      obj.setTotal(rate);
      obj.setType(typeEnum);
      obj.setUpdateDate(new Date());
@@ -435,11 +449,10 @@
      obj.setId(StringUtil.Md5(preDay + typeEnum.name()));
      dailyCountOrderDao.save(obj);
   }
   /**
    * 拼多多订单跟踪率
    *
    * @param preDay
    * @param typeEnum
    * @throws Exception
@@ -447,16 +460,19 @@
   private void addPDDOrderTrackRate(String preDay, DailyCountOrderEnum typeEnum) throws Exception {
      // 统计跟踪到数据
      Long count = commonOrderCountService.countOrderBySourceTypeAndDay(Constant.SOURCE_TYPE_PDD, preDay);
      Long total = pddOrderService.countOrderByDay(preDay);
      // 计算比例
      BigDecimal rate = new BigDecimal(0);
      if (total != null && total > 0 && count != null && count > 0) {
         rate = MoneyBigDecimalUtil.div(BigDecimal.valueOf(count),BigDecimal.valueOf(total));
         rate = MoneyBigDecimalUtil.div(BigDecimal.valueOf(count), BigDecimal.valueOf(total));
         rate = MoneyBigDecimalUtil.mul(rate, BigDecimal.valueOf(100));
      }
      }
      DailyCountOrder obj = new DailyCountOrder();
      obj.setRate(true);
      obj.setTotalDay(BigDecimal.valueOf(total));
      obj.setTotalValid(BigDecimal.valueOf(count));
      obj.setTotal(rate);
      obj.setType(typeEnum);
      obj.setUpdateDate(new Date());
@@ -467,6 +483,7 @@
   /**
    * 统计申诉订单未处理数量
    *
    * @param preDay
    * @param typeEnum
    * @throws Exception
@@ -475,7 +492,7 @@
      Integer num = lostOrderService.countLostOrderNum(preDay, LostOrder.RESULT_CODE_VERFING);
      if (num == null)
         num = 0;
      DailyCountOrder obj = new DailyCountOrder();
      obj.setTotal(BigDecimal.valueOf(num));
      obj.setType(typeEnum);
@@ -484,10 +501,10 @@
      obj.setId(StringUtil.Md5(preDay + typeEnum.name()));
      dailyCountOrderDao.save(obj);
   }
   /**
    * 统计申诉订单 处理失败
    *
    * @param preDay
    * @param typeEnum
    * @throws Exception
@@ -496,7 +513,7 @@
      Integer num = lostOrderService.countLostOrderNum(preDay, LostOrder.RESULT_CODE_FAIL);
      if (num == null)
         num = 0;
      DailyCountOrder obj = new DailyCountOrder();
      obj.setTotal(BigDecimal.valueOf(num));
      obj.setType(typeEnum);
@@ -505,11 +522,10 @@
      obj.setId(StringUtil.Md5(preDay + typeEnum.name()));
      dailyCountOrderDao.save(obj);
   }
   /**
    * 统计申诉订单 处理成功
    *
    * @param preDay
    * @param typeEnum
    * @throws Exception
@@ -518,7 +534,7 @@
      Integer num = lostOrderService.countLostOrderNum(preDay, LostOrder.RESULT_CODE_SUCCESS);
      if (num == null)
         num = 0;
      DailyCountOrder obj = new DailyCountOrder();
      obj.setTotal(BigDecimal.valueOf(num));
      obj.setType(typeEnum);
@@ -527,9 +543,10 @@
      obj.setId(StringUtil.Md5(preDay + typeEnum.name()));
      dailyCountOrderDao.save(obj);
   }
   /**
    * 订单找回成功统计金额
    *
    * @param preDay
    * @throws Exception
    */
@@ -537,7 +554,7 @@
      BigDecimal money = lostOrderService.countAppealMoney(preDay);
      if (money == null)
         money = new BigDecimal("0");
      DailyCountOrder obj = new DailyCountOrder();
      obj.setTotal(money);
      obj.setType(typeEnum);