package com.stylefeng.guns.modular.system.controller.general; 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.modular.system.service.ITOrderCrossCityService; import com.stylefeng.guns.modular.system.service.ITOrderLogisticsService; import com.stylefeng.guns.modular.system.service.ITOrderTaxiService; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; /** * 财务报表 * @author zhibing.pu * @Date 2025/4/22 10:55 */ @Controller @RequestMapping("/financialStatement") public class FinancialStatementController extends BaseController { private String PREFIX = "/system/financialStatement/"; @Resource private ITOrderTaxiService orderTaxiService; @Resource private ITOrderCrossCityService orderCrossCityService; @Resource private ITOrderLogisticsService orderLogisticsService; /** * 跳转支付订单统计页 * @return */ @GetMapping("/paymentOrderStatistics") public String paymentOrderStatistics(){ return PREFIX + "paymentOrderStatistics/paymentOrderStatistics.html"; } /** * 跳转线下订单统计页 * @return */ @GetMapping("/offlineOrderStatistics") public String offlineOrderStatistics(){ return PREFIX + "offlineOrderStatistics/offlineOrderStatistics.html"; } /** * 获取支付订单统计列表 * @param paymentCode * @param orderCode * @param userPhone * @param driverPhone * @param createTime * @param paymentTime * @return */ @ResponseBody @RequestMapping("/paymentOrderStatisticsList") public Object paymentOrderStatisticsList(String paymentCode, String orderCode, String userPhone, String driverPhone, String createTime, String paymentTime,Integer orderType){ Page> page = new PageFactory>().defaultPage(); List> list = orderTaxiService.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTime, paymentTime,orderType); List> list1 = orderCrossCityService.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTime, paymentTime,orderType); List> list2 = orderLogisticsService.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTime, paymentTime,orderType); list.addAll(list1); list.addAll(list2); list.sort((o1, o2) -> { String insertTime = o1.get("insertTime").toString(); String insertTime1 = o2.get("insertTime").toString(); Date o1Date = null; Date o2Date = null; try { o1Date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(insertTime); o2Date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(insertTime1); return o2Date.compareTo(o1Date); } catch (ParseException e) { throw new RuntimeException(e); } }); return super.packForBT(page.setRecords(list)); } /** * 导出支付订单统计列表 * @param paymentCode * @param orderCode * @param userPhone * @param driverPhone * @param createTime * @param paymentTime */ @ResponseBody @RequestMapping("/paymentOrderStatisticsList_export") public void paymentOrderStatisticsList_export(String paymentCode, String orderCode, String userPhone, String driverPhone, String createTime, String paymentTime,Integer orderType, HttpServletRequest request, HttpServletResponse response){ Page> page = new Page(1, 9999); List> list = orderTaxiService.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTime, paymentTime,orderType); List> list1 = orderCrossCityService.paymentOrderStatisticsList(page, paymentCode, orderCode, userPhone, driverPhone, createTime, paymentTime,orderType); list.addAll(list1); list.sort((o1, o2) -> { String insertTime = o1.get("insertTime").toString(); String insertTime1 = o2.get("insertTime").toString(); Date o1Date = null; Date o2Date = null; try { o1Date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(insertTime); o2Date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(insertTime1); return o2Date.compareTo(o1Date); } catch (ParseException e) { throw new RuntimeException(e); } }); // 表格数据【封装】 List> dataList = new ArrayList<>(); // 列【封装】 List shellList = new ArrayList(); shellList.add("支付流水号"); shellList.add("订单号"); shellList.add("订单类型"); shellList.add("支付用户手机号"); shellList.add("支付金额"); shellList.add("接单司机手机号"); shellList.add("司机所属机构"); shellList.add("扣除司机抽成"); shellList.add("下单时间"); shellList.add("支付时间"); dataList.add(shellList); for (Map object : list){ // 详细数据列【封装】 shellList = new ArrayList(); if(SinataUtil.isNotEmpty(object.get("paymentCode"))){ shellList.add(object.get("paymentCode").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("orderNum"))){ shellList.add(object.get("orderNum").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("orderType"))){ int orderType1 = Integer.parseInt(object.get("orderType").toString()); switch (orderType1){ case 2: shellList.add("出租车订单"); break; case 3: shellList.add("跨城出行订单"); break; } }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("userPhone"))){ shellList.add(object.get("userPhone").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("amount"))){ shellList.add(object.get("amount").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("driverPhone"))){ shellList.add(object.get("driverPhone").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("company"))){ shellList.add(object.get("company").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("income"))){ shellList.add(object.get("income").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("insertTime"))){ shellList.add(object.get("insertTime").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("paymentTime"))){ shellList.add(object.get("paymentTime").toString()); }else{ shellList.add("-"); } dataList.add(shellList); } try { // 调用工具类进行导出 ExcelExportUtil.easySheet("支付订单统计"+DateUtil.formatDate(new Date(), "YYYYMMddHHmmss"), "支付订单统计", dataList,request, response); } catch (Exception e) { e.printStackTrace(); } } /** * 获取线下订单统计 * @param orderCode * @param userPhone * @param driverPhone * @param createTime * @param orderSource * @return */ @ResponseBody @RequestMapping("/offlineOrderStatisticsList") public Object offlineOrderStatisticsList(String orderCode, String userPhone, String driverPhone, String createTime, Integer orderSource){ Page> page = new PageFactory>().defaultPage(); List> list = orderTaxiService.offlineOrderStatisticsList(page, orderCode, userPhone, driverPhone, createTime, orderSource); return super.packForBT(page.setRecords(list)); } /** * 导出线下订单统计 * @param orderCode * @param userPhone * @param driverPhone * @param createTime * @param orderSource */ @ResponseBody @RequestMapping("/offlineOrderStatisticsList_export") public void offlineOrderStatisticsList_export(String orderCode, String userPhone, String driverPhone, String createTime, Integer orderSource, HttpServletRequest request, HttpServletResponse response){ Page> page = new Page(1, 9999); List> list = orderTaxiService.offlineOrderStatisticsList(page, orderCode, userPhone, driverPhone, createTime, orderSource); // 表格数据【封装】 List> dataList = new ArrayList<>(); // 列【封装】 List shellList = new ArrayList(); shellList.add("订单号"); shellList.add("用户手机号"); shellList.add("打车方式"); shellList.add("接单司机手机号"); shellList.add("司机所属机构"); shellList.add("扣除司机抽成"); shellList.add("下单时间"); dataList.add(shellList); for (Map object : list){ shellList = new ArrayList(); // 详细数据列【封装】 if(SinataUtil.isNotEmpty(object.get("orderNum"))){ shellList.add(object.get("orderNum").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("userPhone"))){ shellList.add(object.get("userPhone").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("orderSource"))){ shellList.add(object.get("orderSource").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("driverPhone"))){ shellList.add(object.get("driverPhone").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("company"))){ shellList.add(object.get("company").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("income"))){ shellList.add(object.get("income").toString()); }else{ shellList.add("-"); } if(SinataUtil.isNotEmpty(object.get("insertTime"))){ shellList.add(object.get("insertTime").toString()); }else{ shellList.add("-"); } dataList.add(shellList); } try { // 调用工具类进行导出 ExcelExportUtil.easySheet("线下订单统计"+DateUtil.formatDate(new Date(), "YYYYMMddHHmmss"), "线下订单统计", dataList,request, response); } catch (Exception e) { e.printStackTrace(); } } }