package com.stylefeng.guns.modular.system.controller.general; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.stylefeng.guns.core.base.controller.BaseController; import com.stylefeng.guns.core.common.constant.factory.PageFactory; import com.stylefeng.guns.core.util.DateUtil; import com.stylefeng.guns.core.util.ExcelExportUtil; import com.stylefeng.guns.core.util.SinataUtil; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.model.TCompany; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.ResultUtil; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; /** * 报表控制器 */ @Controller @RequestMapping("/report") public class ReportController extends BaseController { private String PREFIX = "/system/report/"; @Autowired private ITCompanyService companyService; @Autowired private IUserCouponRecordService userCouponRecordService; @Autowired private IUserRedPacketRecordService redPacketRecordService; @Autowired private IUserActivityDiscount1Service userActivityDiscount1Service; @Autowired private ITDriverService driverService; /** * 跳转到日常运营数据汇总页 * @return */ @RequestMapping("/showOperationalData") public String showOperationalData(Model model){ List tCompanies = companyService.selectList(new EntityWrapper().eq("state", 0).ne("flag", 3)); model.addAttribute("company", tCompanies); return PREFIX + "operationalData.html"; } /** * 跳转到优惠券统计页 * @param model * @return */ @RequestMapping("/showCouponStatistics") public String showCouponStatistics(Model model){ List tCompanies = companyService.selectList(new EntityWrapper().eq("state", 0).ne("flag", 3)); model.addAttribute("company", tCompanies); return PREFIX + "couponStatistics.html"; } /** * 跳转到优惠券统计详情页 * @param type * @param model * @return */ @RequestMapping("/showCouponStatisticsInfo") public String showCouponStatisticsInfo(Integer type, Model model){ List tCompanies = companyService.selectList(new EntityWrapper().eq("state", 0).ne("flag", 3)); model.addAttribute("company", tCompanies); model.addAttribute("type", type); return PREFIX + "couponStatisticsInfo.html"; } /** * 获取日常运营数据 * @param type * @param time * @param companyId * @param offset * @param limit * @return */ @ResponseBody @RequestMapping(value = "/queryOperationalData", method = RequestMethod.POST) public Object queryOperationalData(Integer type, String time, Integer companyId, Integer offset, Integer limit){ try { String start = null; String end = null; if(ToolUtil.isNotEmpty(time)){ start = time.split(" - ")[0]; end = time.split(" - ")[1]; } return companyService.queryOperationalData(type, start, end, companyId, offset, limit); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 下载日常运营数据汇总表 * @param type * @param time * @param companyId * @param response */ @ResponseBody @RequestMapping(value = "/downloadOperationalData", method = RequestMethod.GET) public void downloadOperationalData(Integer type, String time, Integer companyId, HttpServletResponse response){ try { String start = null; String end = null; if(ToolUtil.isNotEmpty(time)){ start = time.split(" - ")[0]; end = time.split(" - ")[1]; } HSSFWorkbook hssfWorkbook = companyService.downloadOperationalData(type, start, end, companyId); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("日常运营数据汇总表.xls", "utf-8")); response.setContentType("application/vnd.ms-excel"); ServletOutputStream out = response.getOutputStream(); hssfWorkbook.write(out); out.flush(); out.close(); }catch (Exception e){ e.printStackTrace(); } } /** * 获取优惠券统计 * @param type * @param name * @param time * @param companyId * @param offset * @param limit * @return */ @ResponseBody @RequestMapping(value = "/queryCouponRegister", method = RequestMethod.POST) public Object queryCouponRegister(Integer type, String name, String time, Integer companyId, Integer offset, Integer limit){ try { return userCouponRecordService.queryCouponRegister(type, name, time, companyId, offset, limit); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 下载优惠券领取数据 * @param type * @param name * @param time * @param companyId * @param response */ @ResponseBody @RequestMapping(value = "/downloadCouponRegister", method = RequestMethod.GET) public void downloadCouponRegister(Integer type, String name, String time, Integer companyId, HttpServletResponse response){ try { String na = ""; if(type == 2){ na = "注册优惠券奖励"; } if(type == 3){ na = "邀请优惠券奖励"; } if(type == 4){ na = "充值优惠券奖励"; } HSSFWorkbook hssfWorkbook = userCouponRecordService.downloadCouponRegister(type, name, time, companyId); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(na + ".xls", "utf-8")); response.setContentType("application/vnd.ms-excel"); ServletOutputStream out = response.getOutputStream(); hssfWorkbook.write(out); out.flush(); out.close(); }catch (Exception e){ e.printStackTrace(); } } /** * 获取红包统计数据 * @param name * @param time * @param companyId * @param offset * @param limit * @return */ @ResponseBody @RequestMapping(value = "/queryRedEnvelopes", method = RequestMethod.POST) public Object queryRedEnvelopes(String name, String time, Integer companyId, Integer offset, Integer limit){ try { return redPacketRecordService.queryRedEnvelopes(name, time, companyId, offset, limit); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 下载红包奖励 * @param name * @param time * @param companyId * @param response */ @ResponseBody @RequestMapping(value = "/downloadRedEnvelopes", method = RequestMethod.GET) public void downloadRedEnvelopes(String name, String time, Integer companyId, HttpServletResponse response){ try { HSSFWorkbook hssfWorkbook = redPacketRecordService.downloadRedEnvelopes(name, time, companyId); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("红包奖励.xls", "utf-8")); response.setContentType("application/vnd.ms-excel"); ServletOutputStream out = response.getOutputStream(); hssfWorkbook.write(out); out.flush(); out.close(); }catch (Exception e){ e.printStackTrace(); } } /** * 获取折扣统计 * @param name * @param time * @param companyId * @param offset * @param limit * @return */ @ResponseBody @RequestMapping(value = "/queryDiscount1", method = RequestMethod.POST) public Object queryDiscount1(String name, String time, Integer companyId, Integer offset, Integer limit){ try { return userActivityDiscount1Service.queryDiscount1(name, time, companyId, offset, limit); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 下载折扣优惠活动 * @param name * @param time * @param companyId * @param response */ @ResponseBody @RequestMapping(value = "/downloadDiscount1", method = RequestMethod.GET) public void downloadDiscount1(String name, String time, Integer companyId, HttpServletResponse response){ try { HSSFWorkbook hssfWorkbook = userActivityDiscount1Service.downloadDiscount1(name, time, companyId); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("折扣优惠活动.xls", "utf-8")); response.setContentType("application/vnd.ms-excel"); ServletOutputStream out = response.getOutputStream(); hssfWorkbook.write(out); out.flush(); out.close(); }catch (Exception e){ e.printStackTrace(); } } /** * 获取优惠券统计明细 * @param type * @param name * @param time * @param companyId * @param offset * @param limit * @return */ @ResponseBody @RequestMapping(value = "/queryCouponRegisterInfo", method = RequestMethod.POST) public Object queryCouponRegisterInfo(Integer type, String name, String time, Integer companyId, Integer offset, Integer limit){ try { type += 1; return userCouponRecordService.queryCouponRegisterInfo(type, name, time, companyId, offset, limit); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 获取充值赠送优惠券明细 * @param name * @param time * @param companyId * @param offset * @param limit * @return */ @ResponseBody @RequestMapping(value = "/queryCouponRegisterInfo1", method = RequestMethod.POST) public Object queryCouponRegisterInfo1(String name, String time, Integer companyId, Integer offset, Integer limit){ try { return userCouponRecordService.queryCouponRegisterInfo1( name, time, companyId, offset, limit); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 获取折扣优惠详情 * @param time * @param companyId * @param offset * @param limit * @return */ @ResponseBody @RequestMapping(value = "/queryDiscountInfo", method = RequestMethod.POST) public Object queryDiscountInfo(String name, String time, Integer companyId, Integer offset, Integer limit){ try { return userActivityDiscount1Service.queryDiscountInfo(name, time, companyId, offset, limit); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 获取红包领取详情 * @param name * @param time * @param companyId * @param offset * @param limit * @return */ @ResponseBody @RequestMapping(value = "/queryRedEnvelopesInfo", method = RequestMethod.POST) public Object queryRedEnvelopesInfo(String name, String time, Integer companyId, Integer offset, Integer limit){ try { return redPacketRecordService.queryRedEnvelopesInfo(name, time, companyId, offset, limit); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 优惠明细下载 * @param type * @param name * @param time * @param companyId * @param response */ @ResponseBody @RequestMapping(value = "/downloadCouponStatisticsInfo", method = RequestMethod.GET) public void downloadCouponStatisticsInfo(Integer type, String name, String time, Integer companyId, HttpServletResponse response){ try { if(type == 1 || type == 2){ type += 1; HSSFWorkbook hssfWorkbook = userCouponRecordService.downloadCouponRegisterInfo(type, name, time, companyId); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode((type == 2 ? "注册奖励明细" : "邀请奖励明细") + ".xls", "utf-8")); response.setContentType("application/vnd.ms-excel"); ServletOutputStream out = response.getOutputStream(); hssfWorkbook.write(out); out.flush(); out.close(); } if(type == 3){ HSSFWorkbook hssfWorkbook = userCouponRecordService.downloadCouponRegisterInfo1(name, time, companyId); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("充值奖励明细.xls", "utf-8")); response.setContentType("application/vnd.ms-excel"); ServletOutputStream out = response.getOutputStream(); hssfWorkbook.write(out); out.flush(); out.close(); } if(type == 4){ HSSFWorkbook hssfWorkbook = userActivityDiscount1Service.downloadDiscountInfo(name, time, companyId); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("折扣优惠明细.xls", "utf-8")); response.setContentType("application/vnd.ms-excel"); ServletOutputStream out = response.getOutputStream(); hssfWorkbook.write(out); out.flush(); out.close(); } if(type == 5){ HSSFWorkbook hssfWorkbook = redPacketRecordService.downloadRedEnvelopesInfo(name, time, companyId); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("红包优惠明细.xls", "utf-8")); response.setContentType("application/vnd.ms-excel"); ServletOutputStream out = response.getOutputStream(); hssfWorkbook.write(out); out.flush(); out.close(); } }catch (Exception e){ e.printStackTrace(); } } /** * 司机收益统计页面 * @author yxh * @date 2021/4/2 17:07 * @param model */ @RequestMapping("/driverIncomeStatisticsInfo") public String ShowDriverIncomeList(Model model){ List tCompanies = companyService.selectList(new EntityWrapper().eq("state", 0).ne("flag", 3)); model.addAttribute("company", tCompanies); return PREFIX + "driverIncomeData.html"; } /** * 司机收益统计排行 * @author yxh * @date 2021/4/2 17:35 * @return java.lang.Object */ @ResponseBody @RequestMapping(value = "/queryDriverIncomeData", method = RequestMethod.POST) public Object queryDriverIncomeData(Integer type, String time, Integer companyId){ try { String start = null; String end = null; if(ToolUtil.isNotEmpty(time)){ start = time.split(" - ")[0]; end = time.split(" - ")[1]; } Page> page = new PageFactory>().defaultPage(); page.setRecords(driverService.queryDriverIncomeData(page,type,start,end,companyId)); return super.packForBT(page); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 导出司机收益排行 * @author yxh * @date 2021/4/7 9:32 * @param type * @param time * @param companyId * @param response */ @RequestMapping(value = "/downloadDriverIncomeData", method = RequestMethod.GET) public void downloadDriverIncomeData(Integer type, String time, Integer companyId, HttpServletRequest request, HttpServletResponse response){ String start = null; String end = null; if(ToolUtil.isNotEmpty(time)){ start = time.split(" - ")[0]; end = time.split(" - ")[1]; } List> list = driverService.queryDriverIncomeDataNoPage(type,start,end,companyId); // 表格数据 List> dataList = new ArrayList<>(); // 表头行 List shellList = new ArrayList(); shellList.add("姓名"); shellList.add("账号/手机号"); shellList.add("所属分公司"); shellList.add("订单总数"); shellList.add("未支付订单数"); shellList.add("取消订单数"); shellList.add("订单总金额"); shellList.add("未支付订单金额"); dataList.add(shellList); for (Map map : list) { //数据行 shellList = new ArrayList(); if(SinataUtil.isNotEmpty(map.get("driverName"))){ shellList.add(map.get("driverName").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(map.get("driverPhone"))){ shellList.add(map.get("driverPhone").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(map.get("companyName"))){ shellList.add(map.get("companyName").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(map.get("privateCarTotalNum"))){ shellList.add(map.get("privateCarTotalNum").toString()); }else{ shellList.add("0"); } if(SinataUtil.isNotEmpty(map.get("privateCarNotPayNum"))){ shellList.add(map.get("privateCarNotPayNum").toString()); }else{ shellList.add("0"); } if(SinataUtil.isNotEmpty(map.get("privateCarcancelNum"))){ shellList.add(map.get("privateCarcancelNum").toString()); }else{ shellList.add("0"); } if(SinataUtil.isNotEmpty(map.get("privateCarTotalMoney"))){ shellList.add(map.get("privateCarTotalMoney").toString()); }else{ shellList.add("0"); } if(SinataUtil.isNotEmpty(map.get("privateCarNotPayMoney"))){ shellList.add(map.get("privateCarNotPayMoney").toString()); }else{ shellList.add("0"); } dataList.add(shellList); } try { // 调用工具类进行导出 ExcelExportUtil.easySheet("司机收益导出记录"+ DateUtil.formatDate(new Date(), "YYYYMMddHHmmss"), "司机收益导出记录", dataList,request, response); } catch (Exception e) { e.printStackTrace(); } } }