|
|
@@ -24,6 +24,8 @@ import com.ruixuan.system.service.ISysUserService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
|
import java.util.Comparator;
|
|
|
@@ -390,18 +392,14 @@ public class KuaishouItemCollectSamplesServiceImpl implements IKuaishouItemColle
|
|
|
|
|
|
//渠道数据
|
|
|
private JSONObject getgetOrderDataByChannel(Long userId, String startDate, String endDate) {
|
|
|
- long startTime = System.currentTimeMillis();
|
|
|
JSONObject data = new JSONObject();
|
|
|
List<Long> promoterIds = promoterService.selectPromoterIdList(userId);
|
|
|
- System.out.println("用时1:"+(System.currentTimeMillis()-startTime)/1000 +"s");
|
|
|
if (Check.isNotNull(promoterIds)) {
|
|
|
data.put("promoterCount", promoterIds.size());//达人总数
|
|
|
JSONObject Sample = kuaishouItemCollectSamplesMapper.queryTheNumberOfCompletedJobs(promoterIds, startDate, endDate);
|
|
|
- System.out.println("用时2:"+(System.currentTimeMillis()-startTime)/1000 +"s");
|
|
|
data.put("completeCount", Sample.getInteger("completeCount"));//完成作业数
|
|
|
data.put("completeRate", Sample.getString("completeRate"));//合格作业率
|
|
|
JSONObject order = supplyChainService.selectOrderInfo(promoterIds, startDate, endDate);
|
|
|
- System.out.println("用时3:"+(System.currentTimeMillis()-startTime)/1000 +"s");
|
|
|
data.put("allNumber", order.getInteger("allNumber"));//订单总数
|
|
|
data.put("validOrderNUm", order.getInteger("validOrderNUm"));//有效订单数
|
|
|
data.put("inValidOrderNUm", order.getInteger("allNumber") - order.getInteger("validOrderNUm"));//失效订单数
|
|
|
@@ -419,22 +417,32 @@ public class KuaishouItemCollectSamplesServiceImpl implements IKuaishouItemColle
|
|
|
String start = DateUtils.getSubtractTime(date, 6);
|
|
|
//上个近七天的开始日期
|
|
|
String LastStart = DateUtils.getSubtractTime(date, 13);
|
|
|
-
|
|
|
- //日环比
|
|
|
- JSONObject dateOrderRate = supplyChainService.selectOrderRate(promoterIds, null, today, today, yesterday, yesterday);
|
|
|
- System.out.println("用时4:"+(System.currentTimeMillis()-startTime)/1000 +"s");
|
|
|
- data.put("dateOrderRate", dateOrderRate.getString("orderRate"));
|
|
|
- data.put("dateAmountRate", dateOrderRate.getString("amountRate"));
|
|
|
+ //当天数据
|
|
|
+ JSONObject toData = supplyChainService.selectOrderRate(promoterIds, null, today, today);
|
|
|
+ //昨日数据
|
|
|
+ JSONObject yesData = supplyChainService.selectOrderRate(promoterIds, null, yesterday, yesterday);
|
|
|
+ //上周当日数据
|
|
|
+ JSONObject weeklyDayData = supplyChainService.selectOrderRate(promoterIds, null, todayOfLastWeek, todayOfLastWeek);
|
|
|
+ //当前近七天的数据
|
|
|
+ JSONObject inDayData = supplyChainService.selectOrderRate(promoterIds, null, start, today);
|
|
|
+ //上个近七天的数据
|
|
|
+ JSONObject lastDayData = supplyChainService.selectOrderRate(promoterIds, null, LastStart, todayOfLastWeek);
|
|
|
+
|
|
|
+ //日环比 (今天-昨天)/昨天*100%
|
|
|
+ BigDecimal dateOrder = toData.getBigDecimal("allNumber").subtract(yesData.getBigDecimal("allNumber")).divide(yesData.getBigDecimal("allNumber"), 4, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal dateAmount = toData.getBigDecimal("orderAmount").subtract(yesData.getBigDecimal("orderAmount")).divide(yesData.getBigDecimal("orderAmount"), 4, RoundingMode.HALF_UP);
|
|
|
+ data.put("dateOrderRate", dateOrder);
|
|
|
+ data.put("dateAmountRate", dateAmount);
|
|
|
//周同比
|
|
|
- JSONObject monthOrderRate = supplyChainService.selectOrderRate(promoterIds, null, today, today, todayOfLastWeek, todayOfLastWeek);
|
|
|
- System.out.println("用时5:"+(System.currentTimeMillis()-startTime)/1000 +"s");
|
|
|
- data.put("monthOrderRate", monthOrderRate.getString("orderRate"));
|
|
|
- data.put("monthAmountRate", monthOrderRate.getString("amountRate"));
|
|
|
+ BigDecimal monthOrder = toData.getBigDecimal("allNumber").subtract(weeklyDayData.getBigDecimal("allNumber")).divide(weeklyDayData.getBigDecimal("allNumber"), 4, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal monthAmount = toData.getBigDecimal("orderAmount").subtract(weeklyDayData.getBigDecimal("orderAmount")).divide(weeklyDayData.getBigDecimal("orderAmount"), 4, RoundingMode.HALF_UP);
|
|
|
+ data.put("monthOrderRate", monthOrder);
|
|
|
+ data.put("monthAmountRate", monthAmount);
|
|
|
//数据对比
|
|
|
- JSONObject dataOrderRate = supplyChainService.selectOrderRate(promoterIds, null, start, today, LastStart, todayOfLastWeek);
|
|
|
- System.out.println("用时6:"+(System.currentTimeMillis()-startTime)/1000 +"s");
|
|
|
- data.put("dataOrderRate", dataOrderRate.getString("orderRate"));
|
|
|
- data.put("dataAmountRate", dataOrderRate.getString("amountRate"));
|
|
|
+ BigDecimal dataOrder = inDayData.getBigDecimal("allNumber").subtract(lastDayData.getBigDecimal("allNumber")).divide(lastDayData.getBigDecimal("allNumber"), 4, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal dataAmount = inDayData.getBigDecimal("orderAmount").subtract(lastDayData.getBigDecimal("orderAmount")).divide(lastDayData.getBigDecimal("orderAmount"), 4, RoundingMode.HALF_UP);
|
|
|
+ data.put("dataOrderRate", dataOrder);
|
|
|
+ data.put("dataAmountRate", dataAmount);
|
|
|
}
|
|
|
return data;
|
|
|
}
|
|
|
@@ -449,40 +457,55 @@ public class KuaishouItemCollectSamplesServiceImpl implements IKuaishouItemColle
|
|
|
}
|
|
|
//查询登录人(创建人)的所有商品
|
|
|
List<Long> itemIds = kuaishouItemCollectSamplesMapper.getItemIdsByCreateId(userId);
|
|
|
- JSONObject order = supplyChainService.selectOrderInfoByItemIds(itemIds, startDate, endDate);
|
|
|
- data.put("sendCount", order.getInteger("sendCount"));//发货数
|
|
|
- data.put("sendRate", order.getString("sendRate"));//订单发货率
|
|
|
- data.put("allNumber", order.getInteger("allNumber"));//订单总数
|
|
|
- data.put("validOrderNUm", order.getInteger("validOrderNUm"));//有效订单数
|
|
|
- data.put("inValidOrderNUm", order.getInteger("allNumber") - order.getInteger("validOrderNUm"));//失效订单数
|
|
|
- data.put("orderAmount", order.getInteger("orderAmount"));//订单金额
|
|
|
- data.put("regimentalPromotionAmount", order.getInteger("regimentalPromotionAmount"));//预估服务费
|
|
|
- data.put("baseAmount", order.getInteger("baseAmount"));//累计货贷基数
|
|
|
- //当天
|
|
|
- String today = DateUtils.getNowDateStr();
|
|
|
- Date date = new Date();
|
|
|
- //昨天
|
|
|
- String yesterday = DateUtils.getSubtractTime(date, 1);
|
|
|
- //上周的同一天(上个近七天的结束日期)
|
|
|
- String todayOfLastWeek = DateUtils.getSubtractTime(date, 7);
|
|
|
- //当前近七天的开始日期
|
|
|
- String start = DateUtils.getSubtractTime(date, 6);
|
|
|
- //上个近七天的开始日期
|
|
|
- String LastStart = DateUtils.getSubtractTime(date, 13);
|
|
|
-
|
|
|
- //日环比
|
|
|
- JSONObject dateOrderRate = supplyChainService.selectOrderRate(null, itemIds, today, today, yesterday, yesterday);
|
|
|
- data.put("dateOrderRate", dateOrderRate.getString("orderRate"));
|
|
|
- data.put("dateAmountRate", dateOrderRate.getString("amountRate"));
|
|
|
- //周同比
|
|
|
- JSONObject monthOrderRate = supplyChainService.selectOrderRate(null, itemIds, today, today, todayOfLastWeek, todayOfLastWeek);
|
|
|
- data.put("monthOrderRate", monthOrderRate.getString("orderRate"));
|
|
|
- data.put("monthAmountRate", monthOrderRate.getString("amountRate"));
|
|
|
- //数据对比
|
|
|
- JSONObject dataOrderRate = supplyChainService.selectOrderRate(null, itemIds, start, today, LastStart, todayOfLastWeek);
|
|
|
- data.put("dataOrderRate", dataOrderRate.getString("orderRate"));
|
|
|
- data.put("dataAmountRate", dataOrderRate.getString("amountRate"));
|
|
|
+ if (Check.isNotNull(itemIds)) {
|
|
|
+ JSONObject order = supplyChainService.selectOrderInfoByItemIds(itemIds, startDate, endDate);
|
|
|
+ data.put("sendCount", order.getInteger("sendCount"));//发货数
|
|
|
+ data.put("sendRate", order.getString("sendRate"));//订单发货率
|
|
|
+ data.put("allNumber", order.getInteger("allNumber"));//订单总数
|
|
|
+ data.put("validOrderNUm", order.getInteger("validOrderNUm"));//有效订单数
|
|
|
+ data.put("inValidOrderNUm", order.getInteger("allNumber") - order.getInteger("validOrderNUm"));//失效订单数
|
|
|
+ data.put("orderAmount", order.getInteger("orderAmount"));//订单金额
|
|
|
+ data.put("regimentalPromotionAmount", order.getInteger("regimentalPromotionAmount"));//预估服务费
|
|
|
+ data.put("baseAmount", order.getInteger("baseAmount"));//累计货贷基数
|
|
|
+ //当天
|
|
|
+ String today = DateUtils.getNowDateStr();
|
|
|
+ Date date = new Date();
|
|
|
+ //昨天
|
|
|
+ String yesterday = DateUtils.getSubtractTime(date, 1);
|
|
|
+ //上周的同一天(上个近七天的结束日期)
|
|
|
+ String todayOfLastWeek = DateUtils.getSubtractTime(date, 7);
|
|
|
+ //当前近七天的开始日期
|
|
|
+ String start = DateUtils.getSubtractTime(date, 6);
|
|
|
+ //上个近七天的开始日期
|
|
|
+ String LastStart = DateUtils.getSubtractTime(date, 13);
|
|
|
|
|
|
+ //当天数据
|
|
|
+ JSONObject toData = supplyChainService.selectOrderRate(null, itemIds, today, today);
|
|
|
+ //昨日数据
|
|
|
+ JSONObject yesData = supplyChainService.selectOrderRate(null, itemIds, yesterday, yesterday);
|
|
|
+ //上周当日数据
|
|
|
+ JSONObject weeklyDayData = supplyChainService.selectOrderRate(null, itemIds, todayOfLastWeek, todayOfLastWeek);
|
|
|
+ //当前近七天的数据
|
|
|
+ JSONObject inDayData = supplyChainService.selectOrderRate(null, itemIds, start, today);
|
|
|
+ //上个近七天的数据
|
|
|
+ JSONObject lastDayData = supplyChainService.selectOrderRate(null, itemIds, LastStart, todayOfLastWeek);
|
|
|
+
|
|
|
+ //日环比 (今天-昨天)/昨天*100%
|
|
|
+ BigDecimal dateOrder = toData.getBigDecimal("allNumber").subtract(yesData.getBigDecimal("allNumber")).divide(yesData.getBigDecimal("allNumber"), 4, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal dateAmount = toData.getBigDecimal("orderAmount").subtract(yesData.getBigDecimal("orderAmount")).divide(yesData.getBigDecimal("orderAmount"), 4, RoundingMode.HALF_UP);
|
|
|
+ data.put("dateOrderRate", dateOrder);
|
|
|
+ data.put("dateAmountRate", dateAmount);
|
|
|
+ //周同比
|
|
|
+ BigDecimal monthOrder = toData.getBigDecimal("allNumber").subtract(weeklyDayData.getBigDecimal("allNumber")).divide(weeklyDayData.getBigDecimal("allNumber"), 4, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal monthAmount = toData.getBigDecimal("orderAmount").subtract(weeklyDayData.getBigDecimal("orderAmount")).divide(weeklyDayData.getBigDecimal("orderAmount"), 4, RoundingMode.HALF_UP);
|
|
|
+ data.put("monthOrderRate", monthOrder);
|
|
|
+ data.put("monthAmountRate", monthAmount);
|
|
|
+ //数据对比
|
|
|
+ BigDecimal dataOrder = inDayData.getBigDecimal("allNumber").subtract(lastDayData.getBigDecimal("allNumber")).divide(lastDayData.getBigDecimal("allNumber"), 4, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal dataAmount = inDayData.getBigDecimal("orderAmount").subtract(lastDayData.getBigDecimal("orderAmount")).divide(lastDayData.getBigDecimal("orderAmount"), 4, RoundingMode.HALF_UP);
|
|
|
+ data.put("dataOrderRate", dataOrder);
|
|
|
+ data.put("dataAmountRate", dataAmount);
|
|
|
+ }
|
|
|
return data;
|
|
|
}
|
|
|
|
|
|
@@ -508,7 +531,14 @@ public class KuaishouItemCollectSamplesServiceImpl implements IKuaishouItemColle
|
|
|
String end = DateUtils.getNowDateStr();
|
|
|
//当前月份第一天
|
|
|
String start = DateUtils.getFirstDayByMonth();
|
|
|
- List<JSONObject> list = supplyChainService.getMonthOrderAmount(promoterIds, userId, start, end);
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("start", start);
|
|
|
+ map.put("end", end);
|
|
|
+ map.put("userId", userId);
|
|
|
+ map.put("promoterIds", promoterIds);
|
|
|
+ map.put("startLong", DateUtils.getStartLongTime(start));
|
|
|
+ map.put("endLong", DateUtils.getEndLongTime(end));
|
|
|
+ List<JSONObject> list = supplyChainService.getMonthOrderAmount(map);
|
|
|
List<String> allDates = DateUtils.getAllDatesOfTwoTimes(start, end);
|
|
|
if (Check.isNull(list) || list.size() != allDates.size()) {
|
|
|
String orderAmountStr = JSONObject.toJSONString(list);
|
|
|
@@ -531,7 +561,8 @@ public class KuaishouItemCollectSamplesServiceImpl implements IKuaishouItemColle
|
|
|
});
|
|
|
}
|
|
|
data.put("list", list);
|
|
|
- JSONObject amount = supplyChainService.getMonthOrderAmountTotal(promoterIds, start, end);
|
|
|
+ map.put("toStartLong", DateUtils.getStartLongTime(end));
|
|
|
+ JSONObject amount = supplyChainService.getMonthOrderAmountTotal(map);
|
|
|
if (Check.isNotNull(amount)) {
|
|
|
data.put("orderAmount", amount.getInteger("orderAmount"));
|
|
|
data.put("totalRegimentalSettleAmount", amount.getInteger("totalRegimentalSettleAmount"));
|
|
|
@@ -557,7 +588,15 @@ public class KuaishouItemCollectSamplesServiceImpl implements IKuaishouItemColle
|
|
|
String end = DateUtils.getNowDateStr();
|
|
|
//当前月份第一天
|
|
|
String start = DateUtils.getFirstDayByMonth();
|
|
|
- List<JSONObject> list = supplyChainService.getMonthOrderAmountByItems(itemIds, start, end);
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("start", start);
|
|
|
+ map.put("end", end);
|
|
|
+ map.put("userId", userId);
|
|
|
+ map.put("itemIds", itemIds);
|
|
|
+ map.put("startLong", DateUtils.getStartLongTime(start));
|
|
|
+ map.put("toStartLong", DateUtils.getStartLongTime(end));
|
|
|
+ map.put("endLong", DateUtils.getEndLongTime(end));
|
|
|
+ List<JSONObject> list = supplyChainService.getMonthOrderAmountByItems(map);
|
|
|
List<String> allDates = DateUtils.getAllDatesOfTwoTimes(start, end);
|
|
|
if (Check.isNull(list) || list.size() != allDates.size()) {
|
|
|
String orderAmountStr = JSONObject.toJSONString(list);
|
|
|
@@ -580,7 +619,7 @@ public class KuaishouItemCollectSamplesServiceImpl implements IKuaishouItemColle
|
|
|
});
|
|
|
}
|
|
|
data.put("list", list);
|
|
|
- JSONObject amount = supplyChainService.getMonthOrderAmountTotalByItems(itemIds, start, end);
|
|
|
+ JSONObject amount = supplyChainService.getMonthOrderAmountTotalByItems(map);
|
|
|
if (Check.isNotNull(amount)) {
|
|
|
data.put("orderAmount", amount.getInteger("orderAmount"));
|
|
|
data.put("totalRegimentalSettleAmount", amount.getInteger("totalRegimentalSettleAmount"));
|