From 885083450a1d48336337cf07fe1de24d70d3aa2b Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期一, 27 四月 2020 14:51:16 +0800
Subject: [PATCH] 数据统计

---
 fanli/src/main/java/com/yeshi/fanli/controller/admin/CountChartsAdminController.java | 1132 ++++++++++++++--------------------------------------------
 1 files changed, 280 insertions(+), 852 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/admin/CountChartsAdminController.java b/fanli/src/main/java/com/yeshi/fanli/controller/admin/CountChartsAdminController.java
index a16da09..6af82744 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/admin/CountChartsAdminController.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/admin/CountChartsAdminController.java
@@ -2,7 +2,6 @@
 
 import java.io.PrintWriter;
 import java.math.BigDecimal;
-import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
@@ -17,9 +16,6 @@
 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.entity.admin.count.DailyCountCoupon;
 import com.yeshi.fanli.entity.admin.count.DailyCountMoments;
 import com.yeshi.fanli.entity.admin.count.DailyCountOrder;
@@ -28,8 +24,6 @@
 import com.yeshi.fanli.service.inter.count.DailyCountMomentsService;
 import com.yeshi.fanli.service.inter.count.DailyCountOrderService;
 import com.yeshi.fanli.service.inter.count.DailyCountUserService;
-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;
@@ -41,12 +35,6 @@
 @RequestMapping("admin/new/api/v1/countCharts")
 public class CountChartsAdminController {
 
-	@Resource
-	private UserInfoCountService userInfoCountService;
-	
-	@Resource
-	private CommonOrderCountService commonOrderCountService;
-	
 	@Resource
 	private DailyCountCouponService dailyCountCouponService;
 	
@@ -60,846 +48,6 @@
 	private DailyCountMomentsService dailyCountMomentsService;
 	
 	
-	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();
-		}
-	}
-	
-	
-	/**
-	 * 缁熻璁㈠崟浣i噾
-	 * @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 = "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 = "鐢宠瘔浣i噾";
-				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 = "浣i噾";
-				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();
-		}
-	}
-	
-	
-	
-	/**
-	 * 鍒哥浉鍏冲浘琛ㄦ暟鎹�
-	 * @param callback
-	 * @param dateType
-	 * @param year
-	 * @param startTime
-	 * @param endTime
-	 * @param type 鏌ヨ绫诲瀷
-	 * @param out
-	 */
-	@RequestMapping(value = "getCouponCharts")
-	public void getCouponCharts(String callback, Integer dateType, String year, String startTime, String endTime, 
-			String typeArray, 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> typelList = null;
-			if (typeArray != null && typeArray.trim().length() > 4) {
-				typelList = gson.fromJson(typeArray, new TypeToken<ArrayList<String>>() {}.getType());
-			}
-			
-			JSONArray line_list = new JSONArray();
-			
-			if (typelList != null && typelList.size() > 0) {
-				for (String type: typelList) {
-					List<DailyCountCoupon> listData = dailyCountCouponService.getDailyCountList(type, beginDate, endDate);
-					// 澶勭悊鏁版嵁
-					List<Object> list = machineDailyCountCoupon(dateList, dateType, listData);
-					
-					JSONObject innerList = new JSONObject();
-					innerList.put("name", dailyCountCouponService.getTypeEnumDesc(type));
-					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();
-		}
-	}
-	
-	
-	private List<Object> machineDailyCountCoupon(List<String> dateList, Integer dateType, List<DailyCountCoupon> listData) {
-		List<Object> list = new ArrayList<>();
-		for (String date: dateList) {
-			BigDecimal result = new BigDecimal(0);
-			
-			if (listData != null) {
-				for (DailyCountCoupon history: listData) {
-					if (dateType == 1) {
-						String gernalTime = TimeUtil.getGernalTime(history.getDay().getTime());
-						if (gernalTime.equalsIgnoreCase(date)) {
-							result = MoneyBigDecimalUtil.add(result, history.getTotal());
-							continue;
-						}
-					} else if (dateType == 2){
-						String gernalTime = TimeUtil.getMonthOnlyMM(history.getDay());
-						if(gernalTime.startsWith("0")) {
-							gernalTime = gernalTime.substring(1, 2);
-						}
-						if (gernalTime.equalsIgnoreCase(date)) {
-							result = MoneyBigDecimalUtil.add(result, history.getTotal());
-						}
-					} else if (dateType == 3) {
-						String gernalTime = TimeUtil.getYearOnlyYYYY(history.getDay());
-						if (gernalTime.equalsIgnoreCase(date)) {
-							result = MoneyBigDecimalUtil.add(result, history.getTotal());
-						}
-					}
-				}
-			}
-			list.add(result);
-		}
-		return list;
-	}
-	
-
-	/**
-	 * 鐢ㄦ埛鐩稿叧鍥捐〃鏁版嵁
-	 * @param callback
-	 * @param dateType
-	 * @param year
-	 * @param startTime
-	 * @param endTime
-	 * @param type 鏌ヨ绫诲瀷
-	 * @param out
-	 */
-	@RequestMapping(value = "getUserCharts")
-	public void getUserCharts(String callback, Integer dateType, String year, String startTime, String endTime, 
-			String typeArray, String channelArray, 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> typelList = null;
-			if (typeArray != null && typeArray.trim().length() > 4) {
-				typelList = gson.fromJson(typeArray, new TypeToken<ArrayList<String>>() {}.getType());
-			}
-			if (typelList == null || typelList.size() == 0) {
-				JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("浼犻�掔被鍨嬮敊璇�"));
-				return;
-			}
-			
-			// 娓犻亾
-			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) {
-				String type = typelList.get(0);
-				for (String channel: channelList) {
-					List<DailyCountUser> listData = dailyCountUserService.getDailyCountList(type, beginDate, endDate, channel);
-					// 澶勭悊鏁版嵁
-					List<Object> list = machineDailyCountUser(dateList, dateType, listData);
-					
-					JSONObject innerList = new JSONObject();
-					innerList.put("name", channel);
-					innerList.put("data", gson.toJson(list));
-					line_list.add(innerList);
-				}
-			} else {
-				for (String type: typelList) {
-					List<DailyCountUser> listData = dailyCountUserService.getDailyCountList(type, beginDate, endDate, null);
-					// 澶勭悊鏁版嵁
-					List<Object> list = machineDailyCountUser(dateList, dateType, listData);
-					
-					JSONObject innerList = new JSONObject();
-					innerList.put("name", dailyCountUserService.getTypeEnumDesc(type));
-					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();
-		}
-	}
-	
-	
-	private List<Object> machineDailyCountUser(List<String> dateList, Integer dateType, List<DailyCountUser> listData) {
-		List<Object> list = new ArrayList<>();
-		for (String date: dateList) {
-			BigDecimal result = new BigDecimal(0);
-			
-			if (listData != null) {
-				 BigDecimal totalDay = new BigDecimal(0);
-				 BigDecimal totalValid = new BigDecimal(0);
-				
-				for (DailyCountUser history: listData) {
-					if (dateType == 1) {
-						String gernalTime = TimeUtil.getGernalTime(history.getDay().getTime());
-						if (gernalTime.equalsIgnoreCase(date)) {
-							result = MoneyBigDecimalUtil.add(result, history.getTotal());
-							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.isRate()) {
-								result = MoneyBigDecimalUtil.add(result, history.getTotal());
-							} else {
-								totalDay = MoneyBigDecimalUtil.add(totalDay, history.getTotalDay());
-								totalValid = MoneyBigDecimalUtil.add(totalValid, history.getTotalValid());
-							}
-						}
-					} else if (dateType == 3) {
-						String gernalTime = TimeUtil.getYearOnlyYYYY(history.getDay());
-						if (gernalTime.equalsIgnoreCase(date)) {
-							if (!history.isRate()) {
-								result = MoneyBigDecimalUtil.add(result, history.getTotal());
-							} else {
-								totalDay = MoneyBigDecimalUtil.add(totalDay, history.getTotalDay());
-								totalValid = MoneyBigDecimalUtil.add(totalValid, history.getTotalValid());
-							}
-						}
-					}
-				}
-				
-				// 鍒ゆ柇鏄惁璁$畻姣斾緥
-				if ((dateType == 2 || dateType == 3) && totalDay.compareTo(BigDecimal.valueOf(0)) > 0){
-					result = MoneyBigDecimalUtil.div(totalValid, totalDay);
-					result = MoneyBigDecimalUtil.mul(result, BigDecimal.valueOf(100));
-				}
-			}
-			list.add(result);
-		}
-		return list;
-	}
 	
 	
 	/**
@@ -1035,6 +183,227 @@
 	
 	
 	
+
+	/**
+	 * 鐢ㄦ埛鐩稿叧鍥捐〃鏁版嵁
+	 * @param callback
+	 * @param dateType
+	 * @param year
+	 * @param startTime
+	 * @param endTime
+	 * @param type 鏌ヨ绫诲瀷
+	 * @param out
+	 */
+	@RequestMapping(value = "getUserCharts")
+	public void getUserCharts(String callback, Integer dateType, String year, String startTime, String endTime, 
+			String typeArray, String channelArray, 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> typelList = null;
+			if (typeArray != null && typeArray.trim().length() > 4) {
+				typelList = gson.fromJson(typeArray, new TypeToken<ArrayList<String>>() {}.getType());
+			}
+			if (typelList == null || typelList.size() == 0) {
+				JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("浼犻�掔被鍨嬮敊璇�"));
+				return;
+			}
+			
+			// 娓犻亾
+			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) {
+				String type = typelList.get(0);
+				for (String channel: channelList) {
+					List<DailyCountUser> listData = dailyCountUserService.getDailyCountList(type, beginDate, endDate, channel);
+					// 澶勭悊鏁版嵁
+					List<Object> list = machineDailyCountUser(dateList, dateType, listData);
+					
+					JSONObject innerList = new JSONObject();
+					innerList.put("name", channel);
+					innerList.put("data", gson.toJson(list));
+					line_list.add(innerList);
+				}
+			} else {
+				for (String type: typelList) {
+					List<DailyCountUser> listData = dailyCountUserService.getDailyCountList(type, beginDate, endDate, null);
+					// 澶勭悊鏁版嵁
+					List<Object> list = machineDailyCountUser(dateList, dateType, listData);
+					
+					JSONObject innerList = new JSONObject();
+					innerList.put("name", dailyCountUserService.getTypeEnumDesc(type));
+					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();
+		}
+	}
+	
+	
+	private List<Object> machineDailyCountUser(List<String> dateList, Integer dateType, List<DailyCountUser> listData) {
+		List<Object> list = new ArrayList<>();
+		for (String date: dateList) {
+			BigDecimal result = new BigDecimal(0);
+			
+			if (listData != null) {
+				 BigDecimal totalDay = new BigDecimal(0);
+				 BigDecimal totalValid = new BigDecimal(0);
+				
+				for (DailyCountUser history: listData) {
+					if (dateType == 1) {
+						String gernalTime = TimeUtil.getGernalTime(history.getDay().getTime());
+						if (gernalTime.equalsIgnoreCase(date)) {
+							result = MoneyBigDecimalUtil.add(result, history.getTotal());
+							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.isRate()) {
+								result = MoneyBigDecimalUtil.add(result, history.getTotal());
+							} else {
+								totalDay = MoneyBigDecimalUtil.add(totalDay, history.getTotalDay());
+								totalValid = MoneyBigDecimalUtil.add(totalValid, history.getTotalValid());
+							}
+						}
+					} else if (dateType == 3) {
+						String gernalTime = TimeUtil.getYearOnlyYYYY(history.getDay());
+						if (gernalTime.equalsIgnoreCase(date)) {
+							if (!history.isRate()) {
+								result = MoneyBigDecimalUtil.add(result, history.getTotal());
+							} else {
+								totalDay = MoneyBigDecimalUtil.add(totalDay, history.getTotalDay());
+								totalValid = MoneyBigDecimalUtil.add(totalValid, history.getTotalValid());
+							}
+						}
+					}
+				}
+				
+				// 鍒ゆ柇鏄惁璁$畻姣斾緥
+				if ((dateType == 2 || dateType == 3) && totalDay.compareTo(BigDecimal.valueOf(0)) > 0){
+					result = MoneyBigDecimalUtil.div(totalValid, totalDay);
+					result = MoneyBigDecimalUtil.mul(result, BigDecimal.valueOf(100));
+				}
+			}
+			list.add(result);
+		}
+		return list;
+	}
+	
+
+	/**
+	 * 鍒哥浉鍏冲浘琛ㄦ暟鎹�
+	 * @param callback
+	 * @param dateType
+	 * @param year
+	 * @param startTime
+	 * @param endTime
+	 * @param type 鏌ヨ绫诲瀷
+	 * @param out
+	 */
+	@RequestMapping(value = "getCouponCharts")
+	public void getCouponCharts(String callback, Integer dateType, String year, String startTime, String endTime, 
+			String typeArray, 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> typelList = null;
+			if (typeArray != null && typeArray.trim().length() > 4) {
+				typelList = gson.fromJson(typeArray, new TypeToken<ArrayList<String>>() {}.getType());
+			}
+			
+			JSONArray line_list = new JSONArray();
+			
+			if (typelList != null && typelList.size() > 0) {
+				for (String type: typelList) {
+					List<DailyCountCoupon> listData = dailyCountCouponService.getDailyCountList(type, beginDate, endDate);
+					// 澶勭悊鏁版嵁
+					List<Object> list = machineDailyCountCoupon(dateList, dateType, listData);
+					
+					JSONObject innerList = new JSONObject();
+					innerList.put("name", dailyCountCouponService.getTypeEnumDesc(type));
+					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();
+		}
+	}
+	
+	
+	private List<Object> machineDailyCountCoupon(List<String> dateList, Integer dateType, List<DailyCountCoupon> listData) {
+		List<Object> list = new ArrayList<>();
+		for (String date: dateList) {
+			BigDecimal result = new BigDecimal(0);
+			
+			if (listData != null) {
+				for (DailyCountCoupon history: listData) {
+					if (dateType == 1) {
+						String gernalTime = TimeUtil.getGernalTime(history.getDay().getTime());
+						if (gernalTime.equalsIgnoreCase(date)) {
+							result = MoneyBigDecimalUtil.add(result, history.getTotal());
+							continue;
+						}
+					} else if (dateType == 2){
+						String gernalTime = TimeUtil.getMonthOnlyMM(history.getDay());
+						if(gernalTime.startsWith("0")) {
+							gernalTime = gernalTime.substring(1, 2);
+						}
+						if (gernalTime.equalsIgnoreCase(date)) {
+							result = MoneyBigDecimalUtil.add(result, history.getTotal());
+						}
+					} else if (dateType == 3) {
+						String gernalTime = TimeUtil.getYearOnlyYYYY(history.getDay());
+						if (gernalTime.equalsIgnoreCase(date)) {
+							result = MoneyBigDecimalUtil.add(result, history.getTotal());
+						}
+					}
+				}
+			}
+			list.add(result);
+		}
+		return list;
+	}
+	
+	
 	@RequestMapping(value = "getMomentsCharts")
 	public void getMomentsCharts(String callback, Integer dateType, String year, String startTime, String endTime, 
 			String typeArray, PrintWriter out) {
@@ -1115,4 +484,63 @@
 		}
 		return list;
 	}
+	
+	
+	
+	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;
+	}
+	
 }

--
Gitblit v1.8.0