package com.yeshi.fanli.controller.admin;
|
|
import java.io.PrintWriter;
|
import java.math.BigDecimal;
|
import java.text.DecimalFormat;
|
import java.util.ArrayList;
|
import java.util.Calendar;
|
import java.util.Date;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.yeshi.utils.JsonUtil;
|
|
import com.google.gson.Gson;
|
import com.google.gson.reflect.TypeToken;
|
import com.yeshi.fanli.controller.admin.utils.AdminUtils;
|
import com.yeshi.fanli.entity.admin.count.CountOrderInfo;
|
import com.yeshi.fanli.entity.admin.count.CountOrderTrackRate;
|
import com.yeshi.fanli.entity.admin.count.CountUserInfo;
|
import com.yeshi.fanli.service.inter.count.UserInfoCountService;
|
import com.yeshi.fanli.service.inter.order.CommonOrderCountService;
|
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.TimeUtil;
|
|
import net.sf.json.JSONArray;
|
import net.sf.json.JSONObject;
|
|
@Controller
|
@RequestMapping("admin/new/api/v1/countCharts")
|
public class CountChartsAdminController {
|
|
@Resource
|
private UserInfoCountService userInfoCountService;
|
|
@Resource
|
private CommonOrderCountService commonOrderCountService;
|
|
|
|
private void verifyQueryData(String callback, Integer dateType, String year, String startTime,
|
String endTime, PrintWriter out) throws Exception {
|
String validateMsg = null;
|
if (dateType == null) {
|
validateMsg = "请选择视图类型";
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(validateMsg));
|
return;
|
}
|
if (dateType == 1 && (StringUtil.isNullOrEmpty(startTime) || StringUtil.isNullOrEmpty(endTime))) {
|
validateMsg = "请选择时间区间";
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(validateMsg));
|
return;
|
}
|
}
|
|
|
private Date getBeginDate(Integer dateType, String year, String startTime) throws Exception{
|
Date beginDate = null;
|
if (dateType == 1) {
|
beginDate = TimeUtil.parse(startTime);
|
} else if (dateType == 2) {
|
Calendar calendar=Calendar.getInstance();
|
int currentYear = calendar.get(Calendar.YEAR);
|
if (!StringUtil.isNullOrEmpty(year)) {
|
currentYear = Integer.parseInt(year);
|
}
|
calendar.clear();
|
calendar.set(Calendar.YEAR, currentYear);
|
beginDate =calendar.getTime();
|
} else if (dateType == 3) {
|
beginDate = TimeUtil.parse("2018-01-01");
|
}
|
return beginDate;
|
}
|
|
|
private Date getEndDate(Integer dateType, String year, String endTime) throws Exception{
|
Date endDate = null;
|
if (dateType == 1) {
|
endDate = TimeUtil.parse(endTime);
|
} else if (dateType == 2) {
|
Calendar calendar=Calendar.getInstance();
|
int currentYear = calendar.get(Calendar.YEAR);
|
if (!StringUtil.isNullOrEmpty(year)) {
|
currentYear = Integer.parseInt(year);
|
}
|
calendar.clear();
|
calendar.set(Calendar.YEAR, currentYear);
|
calendar.roll(Calendar.DAY_OF_YEAR, -1);
|
endDate=calendar.getTime();
|
} else if (dateType == 3) {
|
endDate = new Date();
|
}
|
return endDate;
|
}
|
|
private List<Object> machineOrderResultNum(List<String> dateList, Integer dateType, List<CountOrderInfo> listHistory) {
|
List<Object> list = new ArrayList<>();
|
for (String date: dateList) {
|
int value = 0;
|
if (listHistory != null) {
|
for (CountOrderInfo history: listHistory) {
|
if (dateType == 1) {
|
String gernalTime = TimeUtil.getGernalTime(history.getDay().getTime());
|
if (gernalTime.equalsIgnoreCase(date)) {
|
value += history.getNum();
|
continue;
|
}
|
} else if (dateType == 2){
|
String gernalTime = TimeUtil.getMonthOnlyMM(history.getDay());
|
if(gernalTime.startsWith("0")) {
|
gernalTime = gernalTime.substring(1, 2);
|
}
|
|
if (gernalTime.equalsIgnoreCase(date)) {
|
value += history.getNum();
|
continue;
|
}
|
} else if (dateType == 3) {
|
String gernalTime = TimeUtil.getYearOnlyYYYY(history.getDay());
|
if (gernalTime.equalsIgnoreCase(date)) {
|
value += history.getNum();
|
continue;
|
}
|
}
|
}
|
}
|
list.add(value + "");
|
}
|
return list;
|
}
|
|
|
private List<Object> machineOrderResultMoney(List<String> dateList, Integer dateType, List<CountOrderInfo> listHistory) {
|
List<Object> list = new ArrayList<>();
|
for (String date: dateList) {
|
BigDecimal money = new BigDecimal(0);
|
if (listHistory != null) {
|
for (CountOrderInfo history: listHistory) {
|
if (dateType == 1) {
|
String gernalTime = TimeUtil.getGernalTime(history.getDay().getTime());
|
if (gernalTime.equalsIgnoreCase(date)) {
|
if (history.getMoney() != null) {
|
money = MoneyBigDecimalUtil.add(money, history.getMoney());
|
}
|
continue;
|
}
|
} else if (dateType == 2){
|
String gernalTime = TimeUtil.getMonthOnlyMM(history.getDay());
|
if(gernalTime.startsWith("0")) {
|
gernalTime = gernalTime.substring(1, 2);
|
}
|
if (gernalTime.equalsIgnoreCase(date) && history.getMoney() != null) {
|
money = MoneyBigDecimalUtil.add(money, history.getMoney());
|
}
|
} else if (dateType == 3) {
|
String gernalTime = TimeUtil.getYearOnlyYYYY(history.getDay());
|
if (gernalTime.equalsIgnoreCase(date)) {
|
if (history.getMoney() != null) {
|
money = MoneyBigDecimalUtil.add(money, history.getMoney());
|
}
|
}
|
}
|
}
|
}
|
list.add(money + "");
|
}
|
return list;
|
}
|
|
private List<Object> machineResultNum(List<String> dateList, Integer dateType, List<CountUserInfo> listHistory) {
|
List<Object> list = new ArrayList<>();
|
for (String date: dateList) {
|
int value = 0;
|
if (listHistory != null) {
|
for (CountUserInfo history: listHistory) {
|
if (dateType == 1) {
|
String gernalTime = TimeUtil.getGernalTime(history.getDay().getTime());
|
if (gernalTime.equalsIgnoreCase(date)) {
|
value += history.getNum();
|
continue;
|
}
|
} else if (dateType == 2){
|
String gernalTime = TimeUtil.getMonthOnlyMM(history.getDay());
|
if(gernalTime.startsWith("0")) {
|
gernalTime = gernalTime.substring(1, 2);
|
}
|
|
if (gernalTime.equalsIgnoreCase(date)) {
|
value += history.getNum();
|
continue;
|
}
|
} else if (dateType == 3) {
|
String gernalTime = TimeUtil.getYearOnlyYYYY(history.getDay());
|
if (gernalTime.equalsIgnoreCase(date)) {
|
value += history.getNum();
|
continue;
|
}
|
}
|
}
|
}
|
list.add(value + "");
|
}
|
return list;
|
}
|
|
/**
|
* 统计新人下单情况
|
* @param callback
|
* @param channelArray
|
* @param dateType 日期类型
|
* @param year
|
* @param startTime
|
* @param endTime
|
* @param countType 统计类型: 1-当日下单 、 2-当周下单、3-当周下3单
|
* @param out
|
*/
|
@RequestMapping(value = "getNewUserDownOder")
|
public void getNewUserDownOder(String callback, String channelArray, Integer dateType, String year,
|
String startTime, String endTime, Integer countType, PrintWriter out) {
|
try {
|
// 数据验证处理
|
verifyQueryData(callback, dateType, year, startTime, endTime, out);
|
|
Date beginDate = getBeginDate(dateType, year, startTime);
|
Date endDate = getEndDate(dateType, year, endTime);
|
|
Gson gson = new Gson();
|
List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
|
// 渠道
|
List<String> channelList = null;
|
if (channelArray != null && channelArray.trim().length() > 4) {
|
channelList = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {}.getType());
|
}
|
|
JSONArray line_list = new JSONArray();
|
if (channelList != null && channelList.size() > 0) {
|
for (String channel : channelList) {
|
List<CountUserInfo> listData = null;
|
if (countType == 1) {
|
listData = userInfoCountService.countUserDownOrderByChannelAndToday(channel, beginDate, endDate);
|
} else if (countType == 2) {
|
listData = userInfoCountService.countUseByChannelAndWeekOrder(channel, beginDate, endDate);
|
} else if (countType == 3) {
|
listData = userInfoCountService.countUseByChannelAndWeekThreeOrder(channel, beginDate, endDate);
|
}
|
List<Object> list = machineResultNum(dateList, dateType, listData);
|
|
JSONObject innerList = new JSONObject();
|
innerList.put("name", channel);
|
innerList.put("data", gson.toJson(list));
|
line_list.add(innerList);
|
}
|
} else {
|
List<CountUserInfo> listData = null;
|
if (countType == 1) {
|
listData = userInfoCountService.countUserDownOrderByChannelAndToday(null, beginDate, endDate);
|
} else if (countType == 2) {
|
listData = userInfoCountService.countUseByChannelAndWeekOrder(null, beginDate, endDate);
|
} else if (countType == 3) {
|
listData = userInfoCountService.countUseByChannelAndWeekThreeOrder(null, beginDate, endDate);
|
}
|
List<Object> list = machineResultNum(dateList, dateType, listData);
|
|
JSONObject innerList = new JSONObject();
|
innerList.put("name", "全部");
|
innerList.put("data", gson.toJson(list));
|
line_list.add(innerList);
|
}
|
|
JSONObject data = new JSONObject();
|
data.put("line_list", line_list);
|
data.put("xAxis_list", gson.toJson(dateList));
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("系统异常"));
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 统计订单情况
|
* @param callback
|
* @param channelArray
|
* @param dateType
|
* @param year
|
* @param startTime
|
* @param endTime
|
* @param countType 1-新用户24小时订单 、 2- 总订单数量
|
* @param out
|
*/
|
@RequestMapping(value = "getDownOderNum")
|
public void getDownOderNum(String callback, String channelArray, Integer dateType, String year,
|
String startTime, String endTime, Integer countType, PrintWriter out) {
|
try {
|
// 数据验证处理
|
verifyQueryData(callback, dateType, year, startTime, endTime, out);
|
|
Date beginDate = getBeginDate(dateType, year, startTime);
|
Date endDate = getEndDate(dateType, year, endTime);
|
|
Gson gson = new Gson();
|
List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
|
// 渠道
|
List<String> channelList = null;
|
if (channelArray != null && channelArray.trim().length() > 4) {
|
channelList = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {}.getType());
|
}
|
|
JSONArray line_list = new JSONArray();
|
if (channelList != null && channelList.size() > 0) {
|
for (String channel : channelList) {
|
List<CountOrderInfo> listData = null;
|
if (countType == 1) {
|
listData = userInfoCountService.count24HOderByChannel(channel, beginDate, endDate);
|
} else if (countType == 2) {
|
listData = userInfoCountService.countOderByChannel(channel, beginDate, endDate);
|
}
|
List<Object> list = machineOrderResultNum(dateList, dateType, listData);
|
|
JSONObject innerList = new JSONObject();
|
innerList.put("name", channel);
|
innerList.put("data", gson.toJson(list));
|
line_list.add(innerList);
|
}
|
} else {
|
List<CountOrderInfo> listData = null;
|
if (countType == 1) {
|
listData = userInfoCountService.count24HOderByChannel(null, beginDate, endDate);
|
} else if (countType == 2) {
|
listData = userInfoCountService.countOderByChannel(null, beginDate, endDate);
|
}
|
List<Object> list = machineOrderResultNum(dateList, dateType, listData);
|
|
JSONObject innerList = new JSONObject();
|
innerList.put("name", "全部");
|
innerList.put("data", gson.toJson(list));
|
line_list.add(innerList);
|
}
|
|
JSONObject data = new JSONObject();
|
data.put("line_list", line_list);
|
data.put("xAxis_list", gson.toJson(dateList));
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("系统异常"));
|
e.printStackTrace();
|
}
|
}
|
|
|
/**
|
* 统计订单佣金
|
* @param callback
|
* @param channelArray
|
* @param dateType
|
* @param year
|
* @param startTime
|
* @param endTime
|
* @param out
|
*/
|
@RequestMapping(value = "getCommissionMoney")
|
public void getCommissionMoney(String callback, String channelArray, Integer dateType, String year,
|
String startTime, String endTime, PrintWriter out) {
|
try {
|
// 数据验证处理
|
verifyQueryData(callback, dateType, year, startTime, endTime, out);
|
|
Date beginDate = getBeginDate(dateType, year, startTime);
|
Date endDate = getEndDate(dateType, year, endTime);
|
|
Gson gson = new Gson();
|
List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
|
// 渠道
|
List<String> channelList = null;
|
if (channelArray != null && channelArray.trim().length() > 4) {
|
channelList = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {}.getType());
|
}
|
|
JSONArray line_list = new JSONArray();
|
if (channelList != null && channelList.size() > 0) {
|
for (String channel : channelList) {
|
List<CountOrderInfo> listData = userInfoCountService.countHongBaoByChannel(channel, beginDate, endDate);
|
List<Object> list = machineOrderResultMoney(dateList, dateType, listData);
|
JSONObject innerList = new JSONObject();
|
innerList.put("name", channel);
|
innerList.put("data", gson.toJson(list));
|
line_list.add(innerList);
|
}
|
} else {
|
List<CountOrderInfo> listData = userInfoCountService.countHongBaoByChannel(null, beginDate, endDate);
|
List<Object> list = machineOrderResultMoney(dateList, dateType, listData);
|
JSONObject innerList = new JSONObject();
|
innerList.put("name", "全部");
|
innerList.put("data", gson.toJson(list));
|
line_list.add(innerList);
|
}
|
|
JSONObject data = new JSONObject();
|
data.put("line_list", line_list);
|
data.put("xAxis_list", gson.toJson(dateList));
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("系统异常"));
|
e.printStackTrace();
|
}
|
}
|
|
|
/**
|
* 统计订单佣金
|
* @param callback
|
* @param channelArray
|
* @param dateType
|
* @param year
|
* @param startTime
|
* @param endTime
|
* @param out
|
*/
|
@RequestMapping(value = "getOrderTypeNum")
|
public void getOrderTypeNum(String callback, String typeArray, Integer dateType, String year,
|
String startTime, String endTime, Integer countType, PrintWriter out) {
|
try {
|
// 数据验证处理
|
verifyQueryData(callback, dateType, year, startTime, endTime, out);
|
|
Date beginDate = getBeginDate(dateType, year, startTime);
|
Date endDate = getEndDate(dateType, year, endTime);
|
|
Gson gson = new Gson();
|
List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
|
// 渠道
|
List<Integer> typeList = null;
|
if (typeArray != null && typeArray.trim().length() > 4) {
|
typeList = gson.fromJson(typeArray, new TypeToken<ArrayList<Integer>>() {}.getType());
|
}
|
|
JSONArray line_list = new JSONArray();
|
if (typeList != null && typeList.size() > 0) {
|
for (Integer type : typeList) {
|
List<CountOrderInfo> listData = userInfoCountService.countOrderType(type, beginDate, endDate);
|
List<Object> list = machineOrderResultMoney(dateList, dateType, listData);
|
JSONObject innerList = new JSONObject();
|
|
String name = "";
|
if (type == 1) {
|
name = "自购订单";
|
} else if (type == 2) {
|
name = "分享订单";
|
} else if (type == 3) {
|
name = "邀请订单";
|
}
|
innerList.put("name", name);
|
innerList.put("data", gson.toJson(list));
|
line_list.add(innerList);
|
}
|
} else {
|
List<CountOrderInfo> listData = userInfoCountService.countOrderType(null, beginDate, endDate);
|
List<Object> list = machineOrderResultMoney(dateList, dateType, listData);
|
JSONObject innerList = new JSONObject();
|
innerList.put("name", "全部");
|
innerList.put("data", gson.toJson(list));
|
line_list.add(innerList);
|
}
|
|
JSONObject data = new JSONObject();
|
data.put("line_list", line_list);
|
data.put("xAxis_list", gson.toJson(dateList));
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("系统异常"));
|
e.printStackTrace();
|
}
|
}
|
|
|
/**
|
* 维权订单 金额、订单号数量
|
* @param callback
|
* @param channelArray
|
* @param dateType
|
* @param year
|
* @param startTime
|
* @param endTime
|
* @param out
|
*/
|
@RequestMapping(value = "getWeiQuanOrderInfo")
|
public void getWeiQuanOrderInfo(String callback, Integer dateType, String year,
|
String startTime, String endTime, Integer countType, PrintWriter out) {
|
try {
|
// 数据验证处理
|
verifyQueryData(callback, dateType, year, startTime, endTime, out);
|
|
Date beginDate = getBeginDate(dateType, year, startTime);
|
Date endDate = getEndDate(dateType, year, endTime);
|
|
Gson gson = new Gson();
|
List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
|
|
JSONArray line_list = new JSONArray();
|
|
List<Object> list = null;
|
String name = "";
|
if (countType == 1) {
|
name = "维权数量";
|
List<CountOrderInfo> listData = userInfoCountService.countWeiQuanOrder(beginDate, endDate);
|
list = machineOrderResultNum(dateList, dateType, listData);
|
} else if (countType == 2) {
|
name = "维权金额";
|
List<CountOrderInfo> listData = userInfoCountService.countWeiQuanOrderMoney(beginDate, endDate);
|
list = machineOrderResultMoney(dateList, dateType, listData);
|
}
|
|
JSONObject innerList = new JSONObject();
|
innerList.put("name", name);
|
innerList.put("data", gson.toJson(list));
|
line_list.add(innerList);
|
|
JSONObject data = new JSONObject();
|
data.put("line_list", line_list);
|
data.put("xAxis_list", gson.toJson(dateList));
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("系统异常"));
|
e.printStackTrace();
|
}
|
}
|
|
|
/**
|
* 订单找回 金额、订单号数量
|
* @param callback
|
* @param channelArray
|
* @param dateType
|
* @param year
|
* @param startTime
|
* @param endTime
|
* @param out
|
*/
|
@RequestMapping(value = "getLostOrderInfo")
|
public void getLostOrderInfo(String callback, Integer dateType, String year,
|
String startTime, String endTime, Integer countType, PrintWriter out) {
|
try {
|
// 数据验证处理
|
verifyQueryData(callback, dateType, year, startTime, endTime, out);
|
|
Date beginDate = getBeginDate(dateType, year, startTime);
|
Date endDate = getEndDate(dateType, year, endTime);
|
|
Gson gson = new Gson();
|
List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
|
|
JSONArray line_list = new JSONArray();
|
|
List<Object> list = null;
|
String name = "";
|
if (countType == 1) {
|
name = "申诉数量";
|
List<CountOrderInfo> listData = userInfoCountService.counOrderLastNum(beginDate, endDate);
|
list = machineOrderResultNum(dateList, dateType, listData);
|
} else if (countType == 2) {
|
name = "申诉佣金";
|
List<CountOrderInfo> listData = userInfoCountService.counOrderLastMoney(beginDate, endDate);
|
list = machineOrderResultMoney(dateList, dateType, listData);
|
}
|
|
JSONObject innerList = new JSONObject();
|
innerList.put("name", name);
|
innerList.put("data", gson.toJson(list));
|
line_list.add(innerList);
|
|
JSONObject data = new JSONObject();
|
data.put("line_list", line_list);
|
data.put("xAxis_list", gson.toJson(dateList));
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("系统异常"));
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 订单找回 金额、订单号数量
|
* @param callback
|
* @param channelArray
|
* @param dateType
|
* @param year
|
* @param startTime
|
* @param endTime
|
* @param out
|
*/
|
@RequestMapping(value = "getOrderCount")
|
public void getOrderCount(String callback, Integer dateType, String year, String startTime, String endTime,
|
Integer countType, PrintWriter out) {
|
try {
|
// 数据验证处理
|
verifyQueryData(callback, dateType, year, startTime, endTime, out);
|
|
Date beginDate = getBeginDate(dateType, year, startTime);
|
Date endDate = getEndDate(dateType, year, endTime);
|
|
Gson gson = new Gson();
|
List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
|
|
JSONArray line_list = new JSONArray();
|
|
List<Object> list = null;
|
String name = "";
|
if (countType == 1) {
|
name = "单数";
|
List<CountOrderInfo> listData = userInfoCountService.counOrderTotalNum(beginDate, endDate);
|
list = machineOrderResultNum(dateList, dateType, listData);
|
} else if (countType == 2) {
|
name = "佣金";
|
List<CountOrderInfo> listData = userInfoCountService.counOrderTotalCommission(beginDate, endDate);
|
list = machineOrderResultMoney(dateList, dateType, listData);
|
}
|
|
JSONObject innerList = new JSONObject();
|
innerList.put("name", name);
|
innerList.put("data", gson.toJson(list));
|
line_list.add(innerList);
|
|
JSONObject data = new JSONObject();
|
data.put("line_list", line_list);
|
data.put("xAxis_list", gson.toJson(dateList));
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("系统异常"));
|
e.printStackTrace();
|
}
|
}
|
|
|
|
/**
|
* 订单跟踪率
|
* @param callback
|
* @param channelArray
|
* @param dateType
|
* @param year
|
* @param startTime
|
* @param endTime
|
* @param out
|
*/
|
@RequestMapping(value = "getOrderTrackRate")
|
public void getOrderTrackRate(String callback, Integer dateType, String year, String startTime, String endTime,
|
Integer countType, PrintWriter out) {
|
try {
|
// 数据验证处理
|
verifyQueryData(callback, dateType, year, startTime, endTime, out);
|
|
Date beginDate = getBeginDate(dateType, year, startTime);
|
Date endDate = getEndDate(dateType, year, endTime);
|
|
Gson gson = new Gson();
|
List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
|
|
JSONArray line_list = new JSONArray();
|
|
List<CountOrderTrackRate> listHistory = commonOrderCountService.getOrderTrackRate(countType, beginDate, endDate);
|
|
List<Object> list = new ArrayList<>();
|
DecimalFormat df = new DecimalFormat("#.00");
|
for (String date: dateList) {
|
double proportion = 0;
|
if (listHistory != null) {
|
Long upValue = 0L;
|
Long downValue = 0L;
|
for (CountOrderTrackRate history: listHistory) {
|
if (dateType == 1) {
|
String gernalTime = TimeUtil.getGernalTime(history.getDay().getTime());
|
if (gernalTime.equalsIgnoreCase(date)) {
|
if(history.getNum() != null)
|
upValue = history.getNum();
|
if(history.getTotalNum() != null)
|
downValue = history.getTotalNum();
|
continue;
|
}
|
} else if (dateType == 2){
|
String gernalTime = TimeUtil.getMonthOnlyMM(history.getDay());
|
if(gernalTime.startsWith("0")) {
|
gernalTime = gernalTime.substring(1, 2);
|
}
|
|
if (gernalTime.equalsIgnoreCase(date)) {
|
if(history.getNum() != null)
|
upValue = history.getNum();
|
if(history.getTotalNum() != null)
|
downValue = history.getTotalNum();
|
continue;
|
}
|
} else if (dateType == 3) {
|
String gernalTime = TimeUtil.getYearOnlyYYYY(history.getDay());
|
if (gernalTime.equalsIgnoreCase(date)) {
|
if(history.getNum() != null)
|
upValue = history.getNum();
|
if(history.getTotalNum() != null)
|
downValue = history.getTotalNum();
|
continue;
|
}
|
}
|
}
|
if(downValue != 0) {
|
proportion = upValue / (double) downValue;
|
}
|
}
|
list.add(Double.parseDouble(df.format(proportion * 100)) + "");
|
}
|
|
JSONObject innerList = new JSONObject();
|
innerList.put("name", "跟踪率");
|
innerList.put("data", gson.toJson(list));
|
line_list.add(innerList);
|
|
JSONObject data = new JSONObject();
|
data.put("line_list", line_list);
|
data.put("xAxis_list", gson.toJson(dateList));
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
} catch (Exception e) {
|
JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("系统异常"));
|
e.printStackTrace();
|
}
|
}
|
}
|