| | |
| | | |
| | | 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 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; |
| | | import com.yeshi.fanli.entity.admin.count.DailyCountUser; |
| | | import com.yeshi.fanli.service.inter.count.DailyCountCouponService; |
| | | 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; |
| | |
| | | public class CountChartsAdminController { |
| | | |
| | | @Resource |
| | | private UserInfoCountService userInfoCountService; |
| | | |
| | | @Resource |
| | | private CommonOrderCountService commonOrderCountService; |
| | | |
| | | @Resource |
| | | private DailyCountCouponService dailyCountCouponService; |
| | | |
| | | @Resource |
| | |
| | | @Resource |
| | | private DailyCountOrderService dailyCountOrderService; |
| | | |
| | | |
| | | 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; |
| | | } |
| | | } |
| | | @Resource |
| | | private DailyCountMomentsService dailyCountMomentsService; |
| | | |
| | | |
| | | 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 dateType |
| | | * @param year |
| | | * @param startTime |
| | | * @param endTime |
| | | * @param countType 统计类型: 1-当日下单 、 2-当周下单、3-当周下3单 |
| | | * @param type 查询类型 |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getNewUserDownOder") |
| | | public void getNewUserDownOder(String callback, String channelArray, Integer dateType, String year, |
| | | String startTime, String endTime, Integer countType, PrintWriter out) { |
| | | @RequestMapping(value = "getOrderCharts") |
| | | public void getOrderCharts(String callback, Integer dateType, String year, String startTime, String endTime, |
| | | String typeArray, String channelArray, PrintWriter out) { |
| | | try { |
| | | // 数据验证处理 |
| | | verifyQueryData(callback, dateType, year, startTime, endTime, out); |
| | |
| | | |
| | | 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) { |
| | | 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); |
| | | String type = typelList.get(0); |
| | | for (String channel: channelList) { |
| | | List<DailyCountOrder> listData = dailyCountOrderService.getDailyCountList(type, beginDate, endDate, channel); |
| | | // 处理数据 |
| | | List<Object> list = machineDailyCountOrder(dateList, dateType, listData); |
| | | |
| | | JSONObject innerList = new JSONObject(); |
| | | innerList.put("name", channel); |
| | |
| | | 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); |
| | | for (String type: typelList) { |
| | | List<DailyCountOrder> listData = dailyCountOrderService.getDailyCountList(type, beginDate, endDate, null); |
| | | // 处理数据 |
| | | List<Object> list = machineDailyCountOrder(dateList, dateType, listData); |
| | | |
| | | JSONObject innerList = new JSONObject(); |
| | | innerList.put("name", dailyCountOrderService.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)); |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | private List<Object> machineDailyCountOrder(List<String> dateList, Integer dateType, List<DailyCountOrder> 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 (DailyCountOrder 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 channelArray |
| | | * @param dateType |
| | | * @param year |
| | | * @param startTime |
| | | * @param endTime |
| | | * @param countType 1-新用户24小时订单 、 2- 总订单数量 |
| | | * @param type 查询类型 |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getDownOderNum") |
| | | public void getDownOderNum(String callback, String channelArray, Integer dateType, String year, |
| | | String startTime, String endTime, Integer countType, PrintWriter 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); |
| | |
| | | |
| | | 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) { |
| | |
| | | } |
| | | |
| | | 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); |
| | | 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); |
| | |
| | | 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); |
| | | 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", channel); |
| | | innerList.put("name", dailyCountUserService.getTypeEnumDesc(type)); |
| | | 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)); |
| | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 订单找回 金额、订单号数量 |
| | | * @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); |
| | | 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); |
| | | |
| | | 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; |
| | | 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 == 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; |
| | | } |
| | | } 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(downValue != 0) { |
| | | proportion = upValue / (double) downValue; |
| | | } |
| | | } |
| | | list.add(Double.parseDouble(df.format(proportion * 100)) + ""); |
| | | |
| | | // 判断是否计算比例 |
| | | if ((dateType == 2 || dateType == 3) && totalDay.compareTo(BigDecimal.valueOf(0)) > 0){ |
| | | result = MoneyBigDecimalUtil.div(totalValid, totalDay); |
| | | result = MoneyBigDecimalUtil.mul(result, BigDecimal.valueOf(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(); |
| | | list.add(result); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 券相关图表数据 |
| | | * @param callback |
| | |
| | | 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) { |
| | | |
| | | @RequestMapping(value = "getMomentsCharts") |
| | | public void getMomentsCharts(String callback, Integer dateType, String year, String startTime, String endTime, |
| | | String typeArray, PrintWriter out) { |
| | | try { |
| | | // 数据验证处理 |
| | | verifyQueryData(callback, dateType, year, startTime, endTime, out); |
| | |
| | | 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); |
| | | } |
| | | for (String type: typelList) { |
| | | List<DailyCountMoments> listData = dailyCountMomentsService.getDailyCountList(type, beginDate, endDate); |
| | | // 处理数据 |
| | | List<Object> list = machineDailyCountMoments(dateList, dateType, listData); |
| | | |
| | | JSONObject innerList = new JSONObject(); |
| | | innerList.put("name", dailyCountMomentsService.getTypeEnumDesc(type)); |
| | | innerList.put("data", gson.toJson(list)); |
| | | line_list.add(innerList); |
| | | } |
| | | |
| | | JSONObject data = new JSONObject(); |
| | |
| | | } |
| | | |
| | | |
| | | private List<Object> machineDailyCountUser(List<String> dateList, Integer dateType, List<DailyCountUser> listData) { |
| | | private List<Object> machineDailyCountMoments(List<String> dateList, Integer dateType, List<DailyCountMoments> listData) { |
| | | List<Object> list = new ArrayList<>(); |
| | | for (String date: dateList) { |
| | | BigDecimal result = new BigDecimal(0); |
| | | |
| | | if (listData != null) { |
| | | for (DailyCountUser history: listData) { |
| | | for (DailyCountMoments 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()); |
| | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 用户相关图表数据 |
| | | * @param callback |
| | | * @param dateType |
| | | * @param year |
| | | * @param startTime |
| | | * @param endTime |
| | | * @param type 查询类型 |
| | | * @param out |
| | | */ |
| | | @RequestMapping(value = "getOrderCharts") |
| | | public void getOrderCharts(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<DailyCountOrder> listData = dailyCountOrderService.getDailyCountList(type, beginDate, endDate, channel); |
| | | // 处理数据 |
| | | List<Object> list = machineDailyCountOrder(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<DailyCountOrder> listData = dailyCountOrderService.getDailyCountList(type, beginDate, endDate, null); |
| | | // 处理数据 |
| | | List<Object> list = machineDailyCountOrder(dateList, dateType, listData); |
| | | |
| | | JSONObject innerList = new JSONObject(); |
| | | innerList.put("name", dailyCountOrderService.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 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 List<Object> machineDailyCountOrder(List<String> dateList, Integer dateType, List<DailyCountOrder> listData) { |
| | | List<Object> list = new ArrayList<>(); |
| | | for (String date: dateList) { |
| | | BigDecimal result = new BigDecimal(0); |
| | | |
| | | if (listData != null) { |
| | | for (DailyCountOrder 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()); |
| | | } |
| | | } |
| | | } |
| | | 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); |
| | | } |
| | | list.add(result); |
| | | calendar.clear(); |
| | | calendar.set(Calendar.YEAR, currentYear); |
| | | beginDate =calendar.getTime(); |
| | | } else if (dateType == 3) { |
| | | beginDate = TimeUtil.parse("2018-01-01"); |
| | | } |
| | | return list; |
| | | 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; |
| | | } |
| | | |
| | | } |