|
@@ -2,17 +2,24 @@ package cn.com.ctop.bytedance.service.impl;
|
|
|
|
|
|
import cn.com.ctop.bytedance.entity.BytedanceAdvertiserDailyReport;
|
|
|
import cn.com.ctop.bytedance.mapper.BytedanceAdvertiserDailyReportMapper;
|
|
|
+import cn.com.ctop.bytedance.mapper.ReportMapper;
|
|
|
import cn.com.ctop.bytedance.service.IBytedanceReportService;
|
|
|
import cn.com.ctop.common.module.entity.UserAllocation;
|
|
|
import cn.com.ctop.common.module.mapper.UserAllocationMapper;
|
|
|
import cn.com.ctop.common.module.utils.Check;
|
|
|
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportDailyAccount;
|
|
|
+import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportDailyAccountMapper;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import org.jeecg.common.util.DateUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
@Service
|
|
|
public class BytedanceReportServiceImpl implements IBytedanceReportService {
|
|
@@ -22,25 +29,28 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
|
|
|
@Autowired
|
|
|
private BytedanceAdvertiserDailyReportMapper bytedanceAdvertiserDailyReportMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ReportMapper reportMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private KuaishouReportDailyAccountMapper kuaishouReportDailyAccountMapper;
|
|
|
+
|
|
|
/**
|
|
|
- * 获取 媒体昨日总消耗
|
|
|
+ * 媒体昨日总消耗
|
|
|
*
|
|
|
* @param loginId
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public JSONObject getCost(String loginId) {
|
|
|
-
|
|
|
+ public JSONObject getAccountReport(String loginId) {
|
|
|
JSONObject returnJson = new JSONObject();
|
|
|
-
|
|
|
-
|
|
|
QueryWrapper<UserAllocation> queryWrapper = new QueryWrapper<>();
|
|
|
queryWrapper.eq("user_id", loginId);
|
|
|
- queryWrapper.eq("media_id", 1);
|
|
|
queryWrapper.isNotNull("account_id");
|
|
|
queryWrapper.groupBy("account_id");
|
|
|
List<UserAllocation> userAllocations = userAllocationMapper.selectList(queryWrapper);
|
|
|
if (!Check.isNull(userAllocations)) {
|
|
|
+ // 头条相关
|
|
|
JSONObject bytedanceJson = new JSONObject();
|
|
|
BigDecimal byteDanceCost = new BigDecimal(0);
|
|
|
Long byteDanceClick = 0L;
|
|
@@ -49,26 +59,105 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
|
|
|
Long byteDanceForm = 0L;
|
|
|
Long byteDanceNextDayOpen = 0L;
|
|
|
Long byteDanceActive = 0L;
|
|
|
+ JSONArray bytedanceDetail = new JSONArray();
|
|
|
+
|
|
|
+ // 快手相关
|
|
|
+ JSONArray kuaishouDetail = new JSONArray();
|
|
|
+ JSONObject kuaishouJson = new JSONObject();
|
|
|
+ BigDecimal kuaishouCost = new BigDecimal(0);
|
|
|
+
|
|
|
+ Long kuaishouClick = 0L;
|
|
|
+ Long kuaishouShow = 0L;
|
|
|
+ Long kuaishouConvert = 0L;
|
|
|
+ Long kuaishouForm = 0L;
|
|
|
+ Long kuaishouNextDayOpen = 0L;
|
|
|
+ Long kuaishouActive = 0L;
|
|
|
+
|
|
|
+
|
|
|
for (UserAllocation userAllocation : userAllocations) {
|
|
|
- QueryWrapper<BytedanceAdvertiserDailyReport> bytedanceAdvertiserDailyReportQueryWrapper = new QueryWrapper<>();
|
|
|
- bytedanceAdvertiserDailyReportQueryWrapper.eq("advertiser_id", userAllocation.getAccountId());
|
|
|
- // Map<String, Object> beforeDate = DateUtils.getBeforeDate();
|
|
|
- // bytedanceAdvertiserDailyReportQueryWrapper.between("stat_datetime", beforeDate.get("startDate"), beforeDate.get("endDate"));
|
|
|
- bytedanceAdvertiserDailyReportQueryWrapper.between("stat_datetime", "2019-07-01 00:00:00", "2019-07-01 23:59:59");
|
|
|
- bytedanceAdvertiserDailyReportQueryWrapper.orderByDesc("create_time");
|
|
|
- bytedanceAdvertiserDailyReportQueryWrapper.last("limit 1");
|
|
|
- BytedanceAdvertiserDailyReport bytedanceAdvertiserDailyReport = bytedanceAdvertiserDailyReportMapper.selectOne(bytedanceAdvertiserDailyReportQueryWrapper);
|
|
|
-
|
|
|
- if (!Check.isNull(bytedanceAdvertiserDailyReport)) {
|
|
|
- byteDanceCost = byteDanceCost.add(bytedanceAdvertiserDailyReport.getCost());
|
|
|
- byteDanceClick += bytedanceAdvertiserDailyReport.getClick();
|
|
|
- byteDanceShow += bytedanceAdvertiserDailyReport.getShowNum();
|
|
|
- byteDanceConvert += bytedanceAdvertiserDailyReport.getConvertNum();
|
|
|
- byteDanceForm += bytedanceAdvertiserDailyReport.getForm();
|
|
|
- byteDanceNextDayOpen += bytedanceAdvertiserDailyReport.getNextDayOpen();
|
|
|
- byteDanceActive += bytedanceAdvertiserDailyReport.getActive();
|
|
|
- }
|
|
|
+ if ("1".equals(userAllocation.getMediaId())) {
|
|
|
+ QueryWrapper<BytedanceAdvertiserDailyReport> bytedanceAdvertiserDailyReportQueryWrapper = new QueryWrapper<>();
|
|
|
+ bytedanceAdvertiserDailyReportQueryWrapper.eq("advertiser_id", userAllocation.getAccountId());
|
|
|
+ // Map<String, Object> beforeDate = DateUtils.getBeforeDate();
|
|
|
+ // bytedanceAdvertiserDailyReportQueryWrapper.between("stat_datetime", beforeDate.get("startDate"), beforeDate.get("endDate"));
|
|
|
+ bytedanceAdvertiserDailyReportQueryWrapper.between("stat_datetime", "2019-07-01 00:00:00", "2019-07-01 23:59:59");
|
|
|
+ bytedanceAdvertiserDailyReportQueryWrapper.orderByDesc("create_time");
|
|
|
+ bytedanceAdvertiserDailyReportQueryWrapper.last("limit 1");
|
|
|
+ BytedanceAdvertiserDailyReport bytedanceAdvertiserDailyReport = bytedanceAdvertiserDailyReportMapper.selectOne(bytedanceAdvertiserDailyReportQueryWrapper);
|
|
|
+ if (!Check.isNull(bytedanceAdvertiserDailyReport)) {
|
|
|
+ JSONObject bytedanceDetailJson = new JSONObject();
|
|
|
+ BigDecimal cost = bytedanceAdvertiserDailyReport.getCost();
|
|
|
+ bytedanceDetailJson.put("cost", cost); // 账号总消耗
|
|
|
+ byteDanceCost = byteDanceCost.add(cost);
|
|
|
+ Long click = bytedanceAdvertiserDailyReport.getClick();
|
|
|
+ bytedanceDetailJson.put("click", click); // 账号总点击
|
|
|
+ byteDanceClick += click;
|
|
|
+ Long showNum = bytedanceAdvertiserDailyReport.getShowNum();
|
|
|
+ bytedanceDetailJson.put("show", showNum); // 账号总展示
|
|
|
+ byteDanceShow += showNum;
|
|
|
+ Long convertNum = bytedanceAdvertiserDailyReport.getConvertNum();
|
|
|
+ bytedanceDetailJson.put("convert", convertNum); // 账号总转化
|
|
|
+ byteDanceConvert += convertNum;
|
|
|
+ Long form = bytedanceAdvertiserDailyReport.getForm();
|
|
|
+ bytedanceDetailJson.put("form", form); // 账号总表单提交
|
|
|
+ byteDanceForm += form;
|
|
|
+ Long nextDayOpen = bytedanceAdvertiserDailyReport.getNextDayOpen();
|
|
|
+ bytedanceDetailJson.put("nextDayOpen", nextDayOpen); // 账号总次日留存
|
|
|
+ byteDanceNextDayOpen += nextDayOpen;
|
|
|
+ Long active = bytedanceAdvertiserDailyReport.getActive();
|
|
|
+ bytedanceDetailJson.put("active", active); // 账号总激活
|
|
|
+ byteDanceActive += active;
|
|
|
+ bytedanceDetailJson.put("accountId", userAllocation.getAccountId()); // 账号
|
|
|
+ bytedanceDetailJson.put("accountName", userAllocation.getAuthName()); // 账号 名称
|
|
|
+ bytedanceDetail.add(bytedanceDetailJson);
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if ("2".equals(userAllocation.getMediaId())) {
|
|
|
+ // 查询快手相关报表数据
|
|
|
+
|
|
|
+ QueryWrapper<KuaishouReportDailyAccount> kuaishouReportDailyAccountQueryWrapper = new QueryWrapper<>();
|
|
|
+ kuaishouReportDailyAccountQueryWrapper.eq("account_id", userAllocation.getAccountId());
|
|
|
+ // Map<String, Object> beforeDate = DateUtils.getBeforeDate();
|
|
|
+ // kuaishouReportDailyAccountQueryWrapper.between("stat_datetime", beforeDate.get("startDate"), beforeDate.get("endDate"));
|
|
|
+ kuaishouReportDailyAccountQueryWrapper.between("stat_date", "2019-10-08 00:00:00", "2019-10-08 23:59:59");
|
|
|
+ kuaishouReportDailyAccountQueryWrapper.orderByDesc("create_time");
|
|
|
+ kuaishouReportDailyAccountQueryWrapper.last("limit 1");
|
|
|
+ KuaishouReportDailyAccount reportDailyAccount = kuaishouReportDailyAccountMapper.selectOne(kuaishouReportDailyAccountQueryWrapper);
|
|
|
+ if (!Check.isNull(reportDailyAccount)) {
|
|
|
+ JSONObject kuaishouDetailJson = new JSONObject();
|
|
|
+ kuaishouDetailJson.put("accountId", userAllocation.getAccountId());
|
|
|
+ kuaishouDetailJson.put("accountName", userAllocation.getAuthName());
|
|
|
+
|
|
|
+ BigDecimal cost = reportDailyAccount.getCharge();// 花费
|
|
|
+ kuaishouDetailJson.put("cost", cost);
|
|
|
+ kuaishouCost = kuaishouCost.add(cost);
|
|
|
+
|
|
|
+ Long click = reportDailyAccount.getAclick();
|
|
|
+ kuaishouDetailJson.put("click", click);
|
|
|
+ kuaishouClick += click;
|
|
|
+
|
|
|
+ Long show = reportDailyAccount.getShow();
|
|
|
+ kuaishouDetailJson.put("show", show);
|
|
|
+ kuaishouShow += show;
|
|
|
+
|
|
|
+ Long convert = reportDailyAccount.getBclick();
|
|
|
+ kuaishouDetailJson.put("convert", convert);
|
|
|
+ kuaishouConvert += convert;
|
|
|
+
|
|
|
+ Long form = reportDailyAccount.getSubmit();
|
|
|
+ kuaishouDetailJson.put("form", form);
|
|
|
+ kuaishouForm += form;
|
|
|
+
|
|
|
|
|
|
+ Long active = reportDailyAccount.getActivation();
|
|
|
+ kuaishouDetailJson.put("active", active);
|
|
|
+ kuaishouActive += active;
|
|
|
+
|
|
|
+ kuaishouDetail.add(kuaishouDetailJson);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
bytedanceJson.put("cost", byteDanceCost); // 总消耗
|
|
|
bytedanceJson.put("click", byteDanceClick); // 总点击
|
|
@@ -78,15 +167,329 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
|
|
|
bytedanceJson.put("nextDayOpen", byteDanceNextDayOpen); // 总次留数
|
|
|
bytedanceJson.put("active", byteDanceActive); // 总激活
|
|
|
|
|
|
-
|
|
|
returnJson.put("bytedance", bytedanceJson);
|
|
|
+ returnJson.put("bytedanceDetail", bytedanceDetail);
|
|
|
+
|
|
|
+
|
|
|
+ kuaishouJson.put("cost", kuaishouCost);
|
|
|
+ kuaishouJson.put("click", kuaishouClick);
|
|
|
+ kuaishouJson.put("show", kuaishouShow);
|
|
|
+ kuaishouJson.put("convert", kuaishouConvert);
|
|
|
+ kuaishouJson.put("form", kuaishouForm);
|
|
|
+ kuaishouJson.put("nextDayOpen", 0);
|
|
|
+ kuaishouJson.put("active", kuaishouActive);
|
|
|
+ returnJson.put("kuaishou", kuaishouJson);
|
|
|
+ returnJson.put("kuaishouDetail", kuaishouDetail);
|
|
|
System.err.println(returnJson);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
- return null;
|
|
|
+ return returnJson;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 快手-大盘报表
|
|
|
+ *
|
|
|
+ * @param requestJson
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public JSONObject getKuaiShouAccountReport(JSONObject requestJson) {
|
|
|
+ Integer type = requestJson.getInteger("type");
|
|
|
+ JSONObject accountJson = new JSONObject();
|
|
|
+
|
|
|
+ try {
|
|
|
+ String nowDate = DateUtils.getNowDate("yyyy-MM-dd"); // 当前日期
|
|
|
+ String anotherDay = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -1); // 当前日期-1
|
|
|
+ if (type == 1) { // 今日总消耗
|
|
|
+ accountJson = reportMapper.selectDayReport(nowDate);
|
|
|
+ JSONObject yesterJson = reportMapper.selectYesterday(anotherDay);
|
|
|
+ if (!Check.isNull(yesterJson)) {
|
|
|
+ BigDecimal cost = accountJson.getBigDecimal("cost"); // 今日消耗
|
|
|
+ BigDecimal yesterCost = yesterJson.getBigDecimal("cost");// 昨日消耗
|
|
|
+ BigDecimal compareBigDecima = new BigDecimal(0);
|
|
|
+ if (yesterCost.compareTo(compareBigDecima) != 0) {
|
|
|
+ BigDecimal costProportion = (cost.subtract(yesterCost)).divide(yesterCost, BigDecimal.ROUND_HALF_UP);
|
|
|
+ accountJson.put("costProportion", costProportion); // 较昨日增加比例
|
|
|
+ } else {
|
|
|
+ accountJson.put("costProportion", 0); // 较昨日增加比例
|
|
|
+ }
|
|
|
+
|
|
|
+ Long photoShow = accountJson.getLong("photoShow");// 今日封面展示
|
|
|
+ Long yesterPhotoShow = yesterJson.getLong("photoShow");// 昨日封面展示
|
|
|
+ if (yesterPhotoShow != 0L) {
|
|
|
+ double showProportion = (photoShow.doubleValue() - yesterPhotoShow.doubleValue()) / yesterPhotoShow.doubleValue();
|
|
|
+ accountJson.put("showProportion", showProportion); // 较昨日增加比例
|
|
|
+ } else {
|
|
|
+ accountJson.put("showProportion", 0); // 较昨日增加比例
|
|
|
+ }
|
|
|
+
|
|
|
+ Long photoClick = accountJson.getLong("photoClick");// 今日封面展示
|
|
|
+ Long yesterphotoClick = yesterJson.getLong("photoShow");// 昨日封面展示
|
|
|
+ if (yesterPhotoShow != 0L) {
|
|
|
+ double photoClickProportion = (photoClick.doubleValue() - yesterphotoClick.doubleValue()) / yesterphotoClick.doubleValue();
|
|
|
+ accountJson.put("photoClickProportion", photoClickProportion); // 较昨日增加比例
|
|
|
+ } else {
|
|
|
+ accountJson.put("photoClickProportion", 0); // 较昨日增加比例
|
|
|
+ }
|
|
|
+
|
|
|
+ Long aclick = accountJson.getLong("aclick");// 今日封面展示
|
|
|
+ Long yesterAclick = yesterJson.getLong("photoShow");// 昨日封面展示
|
|
|
+ if (yesterPhotoShow != 0L) {
|
|
|
+ double aClickProportion = (aclick.doubleValue() - yesterAclick.doubleValue()) / yesterAclick.doubleValue();
|
|
|
+ accountJson.put("aClickProportion", aClickProportion); // 较昨日增加比例
|
|
|
+ } else {
|
|
|
+ accountJson.put("aClickProportion", 0); // 较昨日增加比例
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ } else if (type == 2) { // 昨日总消耗
|
|
|
+ accountJson = reportMapper.selectYesterday(anotherDay);
|
|
|
+
|
|
|
+ } else if (type == 3) { // 近七天
|
|
|
+ String endDate = DateUtils.getAnotherDay("yyyy-MM-dd", anotherDay, -7);
|
|
|
+ accountJson = reportMapper.selectByDate(anotherDay, endDate);
|
|
|
+
|
|
|
+ } else if (type == 4) { // 近15天
|
|
|
+ String endDate = DateUtils.getAnotherDay("yyyy-MM-dd", anotherDay, -15);
|
|
|
+ accountJson = reportMapper.selectByDate(anotherDay, endDate);
|
|
|
+
|
|
|
+ } else if (type == 5) {// 近一个月
|
|
|
+ String endDate = DateUtils.getMonthBefore("yyyy-MM-dd", anotherDay, -1);
|
|
|
+ accountJson = reportMapper.selectByDate(anotherDay, endDate);
|
|
|
+
|
|
|
+ } else if (type == 6) {// 近三个月
|
|
|
+ String endDate = DateUtils.getMonthBefore("yyyy-MM-dd", anotherDay, -3);
|
|
|
+ accountJson = reportMapper.selectByDate(anotherDay, endDate);
|
|
|
+
|
|
|
+ } else if (type == 7) {// 近六个月
|
|
|
+ String endDate = DateUtils.getMonthBefore("yyyy-MM-dd", anotherDay, -6);
|
|
|
+ accountJson = reportMapper.selectByDate(anotherDay, endDate);
|
|
|
+
|
|
|
+ } else if (type == 8) { // 所有
|
|
|
+ accountJson = reportMapper.selectAllAccount();
|
|
|
+
|
|
|
+ } else if (type == 9) { // 自定义查询日期
|
|
|
+ String startDate = requestJson.getString("startDate");
|
|
|
+ String endDate = requestJson.getString("endDate");
|
|
|
+ accountJson = reportMapper.selectByDate(startDate, endDate);
|
|
|
+ } else if (type == 10) {
|
|
|
+ String sign = requestJson.getString("sign");
|
|
|
+ String bigDate = requestJson.getString("bigDate");
|
|
|
+ String smallDate = requestJson.getString("smallDate");
|
|
|
+ if ("month".equals(sign)) {
|
|
|
+ Map<String, Object> dateMap = DateUtils.compare_date("yyyy-MM", bigDate, smallDate);
|
|
|
+ JSONObject beComparedJson = reportMapper.selectMonthReportByDate((String) dateMap.get("smallDate")); // 被除数数据
|
|
|
+ JSONObject comparedJson = reportMapper.selectMonthReportByDate((String) dateMap.get("bigDate")); // 除数数据
|
|
|
+ BigDecimal cost = comparedJson.getBigDecimal("cost");
|
|
|
+ BigDecimal comparedCost = beComparedJson.getBigDecimal("cost");
|
|
|
+
|
|
|
+ if (comparedCost.compareTo(new BigDecimal(0)) != 0) {
|
|
|
+ BigDecimal costProportion = (cost.subtract(comparedCost)).divide(comparedCost, BigDecimal.ROUND_HALF_UP);
|
|
|
+ comparedJson.put("costProportion", costProportion);
|
|
|
+ } else {
|
|
|
+ comparedJson.put("costProportion", 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ Long photoClick = comparedJson.getLong("photoClick");
|
|
|
+ Long comparedPhotoClick = beComparedJson.getLong("photoShow");
|
|
|
+ if (comparedPhotoClick != 0L) {
|
|
|
+ double photoClickProportion = (photoClick.doubleValue() - comparedPhotoClick.doubleValue()) / comparedPhotoClick.doubleValue();
|
|
|
+ comparedJson.put("photoClickProportion", photoClickProportion);
|
|
|
+ } else {
|
|
|
+ comparedJson.put("photoClickProportion", 0);
|
|
|
+ }
|
|
|
+ Long comparedPhotoShow = beComparedJson.getLong("photoShow");
|
|
|
+ Long photoShow = comparedJson.getLong("photoShow");
|
|
|
+ if (comparedPhotoShow != 0L) {
|
|
|
+ double showProportion = (photoShow.doubleValue() - comparedPhotoShow.doubleValue()) / comparedPhotoShow.doubleValue();
|
|
|
+ comparedJson.put("showProportion", showProportion);
|
|
|
+ } else {
|
|
|
+ comparedJson.put("showProportion", 0);
|
|
|
+ }
|
|
|
+ Long aClick = comparedJson.getLong("aclick");
|
|
|
+ Long comparedAclick = beComparedJson.getLong("photoShow");
|
|
|
+ if (comparedAclick != 0L) {
|
|
|
+ double aClickProportion = (aClick.doubleValue() - comparedAclick.doubleValue()) / comparedAclick.doubleValue();
|
|
|
+ comparedJson.put("comparedAclick", aClickProportion);
|
|
|
+ } else {
|
|
|
+ comparedJson.put("comparedAclick", 0);
|
|
|
+ }
|
|
|
+ accountJson.put("beCompared", beComparedJson);
|
|
|
+ accountJson.put("compared", comparedJson);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ return accountJson;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<JSONObject> getKuaiShouAccounDetailtReport(JSONObject requestJson) {
|
|
|
+ Integer type = requestJson.getInteger("type");
|
|
|
+ List<JSONObject> detail = new ArrayList<>();
|
|
|
+ try {
|
|
|
+ String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
|
|
|
+ String anotherDay = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -1);
|
|
|
+ if (type == 1) { // 今日明细
|
|
|
+ List<JSONObject> dayDetail = reportMapper.selectReportDetail(nowDate);
|
|
|
+ for (int i = 0; i < dayDetail.size(); i++) {
|
|
|
+ JSONObject detailJson = dayDetail.get(i);
|
|
|
+ String statHour = detailJson.getString("statHour");
|
|
|
+
|
|
|
+ JSONObject yesterDayJson = reportMapper.selectYesterdayByHourAndDate(anotherDay, statHour);
|
|
|
+ if (!Check.isNull(yesterDayJson)) {
|
|
|
+ BigDecimal cost = detailJson.getBigDecimal("cost"); // 今日消耗
|
|
|
+ BigDecimal yesterCost = yesterDayJson.getBigDecimal("cost");// 昨日消耗
|
|
|
+ BigDecimal compareBigDecima = new BigDecimal(0);
|
|
|
+ if (yesterCost.compareTo(compareBigDecima) != 0) {
|
|
|
+ BigDecimal costProportion = (cost.subtract(yesterCost)).divide(yesterCost, BigDecimal.ROUND_HALF_UP);
|
|
|
+ detailJson.put("proportion", costProportion); // 较昨日增加比例
|
|
|
+ } else {
|
|
|
+ detailJson.put("proportion", 0); // 较昨日增加比例
|
|
|
+ }
|
|
|
+ Long photoShow = detailJson.getLong("photoShow");// 今日封面展示
|
|
|
+ Long yesterPhotoShow = yesterDayJson.getLong("photoShow");// 昨日封面展示
|
|
|
+ if (yesterPhotoShow != 0L) {
|
|
|
+ double showProportion = (photoShow.doubleValue() - yesterPhotoShow.doubleValue()) / yesterPhotoShow.doubleValue();
|
|
|
+ detailJson.put("proportion", showProportion); // 较昨日增加比例
|
|
|
+ } else {
|
|
|
+ detailJson.put("proportion", 0); // 较昨日增加比例
|
|
|
+ }
|
|
|
|
|
|
+ Long photoClick = detailJson.getLong("photoClick");// 今日封面展示
|
|
|
+ Long yesterphotoClick = yesterDayJson.getLong("photoShow");// 昨日封面展示
|
|
|
+ if (yesterPhotoShow != 0L) {
|
|
|
+ double photoClickroportion = (photoClick.doubleValue() - yesterphotoClick.doubleValue()) / yesterphotoClick.doubleValue();
|
|
|
+ detailJson.put("proportion", photoClickroportion); // 较昨日增加比例
|
|
|
+ } else {
|
|
|
+ detailJson.put("proportion", 0); // 较昨日增加比例
|
|
|
+ }
|
|
|
+ Long aclick = detailJson.getLong("aclick");// 今日封面展示
|
|
|
+ Long yesterAclick = yesterDayJson.getLong("photoShow");// 昨日封面展示
|
|
|
+ if (yesterPhotoShow != 0L) {
|
|
|
+ double aClickProportion = (aclick.doubleValue() - yesterAclick.doubleValue()) / yesterAclick.doubleValue();
|
|
|
+ detailJson.put("proportion", aClickProportion); // 较昨日增加比例
|
|
|
+ } else {
|
|
|
+ detailJson.put("proportion", 0); // 较昨日增加比例
|
|
|
+ }
|
|
|
+ detail.add(detailJson);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ System.err.println(detail);
|
|
|
+ } else if (type == 2) { // 昨日明细
|
|
|
+ detail = reportMapper.selectReportDetail(anotherDay);
|
|
|
+ System.err.println(detail);
|
|
|
+ } else if (type == 3) { // 近七天明细
|
|
|
+ String endDate = DateUtils.getAnotherDay("yyyy-MM-dd", anotherDay, -7);
|
|
|
+ detail = reportMapper.selectDayDetailByDate(anotherDay, endDate);
|
|
|
+
|
|
|
+ } else if (type == 4) { // 近十五天明细
|
|
|
+ String endDate = DateUtils.getAnotherDay("yyyy-MM-dd", anotherDay, -15);
|
|
|
+ detail = reportMapper.selectDayDetailByDate(anotherDay, endDate);
|
|
|
+ } else if (type == 5) { // 近1个月明细
|
|
|
+ String endDate = DateUtils.getMonthBefore("yyyy-MM-dd", anotherDay, -1);
|
|
|
+ detail = reportMapper.selectDayDetailByDate(anotherDay, endDate);
|
|
|
+ } else if (type == 6) { // 近三个月明细
|
|
|
+ String endDate = DateUtils.getMonthBefore("yyyy-MM-dd", anotherDay, -3);
|
|
|
+ detail = reportMapper.selectDayDetailByDate(anotherDay, endDate);
|
|
|
+ } else if (type == 7) { // 近半年明细
|
|
|
+ String endDate = DateUtils.getMonthBefore("yyyy-MM-dd", anotherDay, -6);
|
|
|
+ detail = reportMapper.selectDayDetailByMonth(anotherDay, endDate);
|
|
|
+ } else if (type == 8) {
|
|
|
+ detail = reportMapper.selectAllDayDetailByMonth();
|
|
|
+ } else if (type == 9) {
|
|
|
+ String startDate = requestJson.getString("startDate");
|
|
|
+ String endDate = requestJson.getString("endDate");
|
|
|
+ detail = reportMapper.selectDayDetailByDate(startDate, endDate);
|
|
|
+ } else if (type == 10) {
|
|
|
+ String sign = requestJson.getString("sign");
|
|
|
+ String bigDate = requestJson.getString("bigDate");
|
|
|
+ String smallDate = requestJson.getString("smallDate");
|
|
|
+ if ("month".equals(sign)) {
|
|
|
+ Map<String, Object> dateMap = DateUtils.compare_date("yyyy-MM", bigDate, smallDate);
|
|
|
+ List<JSONObject> comparedArr = reportMapper.selectDayDetailsByMonth((String) dateMap.get("bigDate")); // 除数数据
|
|
|
+ String comparedDate = (String) dateMap.get("bigDate");
|
|
|
+ for (int i = 0; i < comparedArr.size(); i++) {
|
|
|
+ JSONObject comparedJson = comparedArr.get(i);
|
|
|
+ if (!Check.isNull(comparedJson)) {
|
|
|
+ String statDate = comparedJson.getString("statDate");
|
|
|
+ String day = DateUtils.getDay("yyyy-MM-dd", statDate);
|
|
|
+ String beComparedDate = comparedDate + "-" + day;
|
|
|
+ JSONObject beComparedJson = reportMapper.selectDayDailyByDate(beComparedDate);
|
|
|
+ if (!Check.isNull(beComparedJson)) {
|
|
|
+ JSONObject json = new JSONObject();
|
|
|
+ BigDecimal cost = comparedJson.getBigDecimal("cost");
|
|
|
+ Long photoShow = comparedJson.getLong("photoShow");
|
|
|
+ Long photoClick = comparedJson.getLong("photoClick");
|
|
|
+ Long aClick = comparedJson.getLong("aclick");
|
|
|
+ json.put("cost", cost);
|
|
|
+ json.put("photoShow", photoShow);
|
|
|
+ json.put("photoClick", photoClick);
|
|
|
+ json.put("aClick", aClick);
|
|
|
+ json.put("statDate", statDate);
|
|
|
+
|
|
|
+ BigDecimal comparedCost = beComparedJson.getBigDecimal("cost");
|
|
|
+ Long comparedPhotoShow = beComparedJson.getLong("photoShow");
|
|
|
+ Long comparedPhotoClick = beComparedJson.getLong("photoClick");
|
|
|
+ Long comparedAClick = beComparedJson.getLong("aclick");
|
|
|
+ json.put("beComparedCost", comparedCost);
|
|
|
+ json.put("beComparedPhotoShow", comparedPhotoShow);
|
|
|
+ json.put("beComparedPhotoClick", comparedPhotoClick);
|
|
|
+ json.put("beComparedAClick", comparedAClick);
|
|
|
+ json.put("beComparedDate", beComparedDate);
|
|
|
+ if (comparedCost.compareTo(new BigDecimal(0)) != 0) {
|
|
|
+ BigDecimal costProportion = (cost.subtract(comparedCost)).divide(comparedCost, BigDecimal.ROUND_HALF_UP);
|
|
|
+ json.put("costProportion", costProportion);
|
|
|
+ } else {
|
|
|
+ json.put("costProportion", 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (comparedPhotoClick != 0L) {
|
|
|
+ double photoClickProportion = (photoClick.doubleValue() - comparedPhotoClick.doubleValue()) / comparedPhotoClick.doubleValue();
|
|
|
+ json.put("photoClickProportion", photoClickProportion);
|
|
|
+ } else {
|
|
|
+ json.put("photoClickProportion", 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (comparedPhotoShow != 0L) {
|
|
|
+ double showProportion = (photoShow.doubleValue() - comparedPhotoShow.doubleValue()) / comparedPhotoShow.doubleValue();
|
|
|
+ json.put("showProportion", showProportion);
|
|
|
+ } else {
|
|
|
+ json.put("showProportion", 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (comparedAClick != 0L) {
|
|
|
+ double aClickProportion = (aClick.doubleValue() - comparedAClick.doubleValue()) / comparedAClick.doubleValue();
|
|
|
+ json.put("comparedAclick", aClickProportion);
|
|
|
+ } else {
|
|
|
+ json.put("comparedAclick", 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ detail.add(json);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return detail;
|
|
|
+ }
|
|
|
}
|