package com.stylefeng.guns.modular.system.controller.taxi;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
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.log.LogObjectHolder;
|
import com.stylefeng.guns.core.shiro.ShiroKit;
|
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.dto.DriverRankingTimeDTO;
|
import com.stylefeng.guns.modular.system.model.*;
|
import com.stylefeng.guns.modular.system.service.*;
|
import com.stylefeng.guns.modular.system.util.*;
|
import com.stylefeng.guns.modular.system.util.redisqueue.RedisFifoQueue;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.ui.Model;
|
import org.springframework.util.StringUtils;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.BufferedReader;
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.io.InputStreamReader;
|
import java.math.BigDecimal;
|
import java.text.SimpleDateFormat;
|
import java.time.LocalDate;
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
import java.util.*;
|
|
/**
|
* 出租车订单控制器
|
*
|
* @author fengshuonan
|
* @Date 2020-06-08 10:25:55
|
*/
|
@Controller
|
@RequestMapping("/tOrderTaxiDriver")
|
public class TOrderTaxiDriverController extends BaseController {
|
|
public static List<Integer> orderIds = new ArrayList<>();
|
private String PREFIX = "/system/tOrderTaxiDriver/";
|
@Autowired
|
private ITOrderTaxiService tOrderTaxiService;
|
@Autowired
|
private ITOrderPositionService tOrderPositionService;
|
@Autowired
|
private ITDriverService tDriverService;
|
@Autowired
|
private GDMapElectricFenceUtil gdMapElectricFenceUtil;
|
@Autowired
|
private GDMapGeocodingUtil gdMapGeocodingUtil;
|
@Autowired
|
private ITUserService itUserService;
|
@Autowired
|
private PushUtil pushUtil;
|
@Autowired
|
private ITCompanyCityService companyCityService;
|
@Autowired
|
private ITSysPushOrderService pushOrderService;
|
@Autowired
|
private RedisUtil redisUtil;
|
|
@Autowired
|
private ITDriverService driverService;
|
@Autowired
|
private ITSystemNoticeService systemNoticeService;
|
@Value("${filePath}")
|
private String filePath;
|
private ResultUtil resultUtil;
|
@Autowired
|
private RedisFifoQueue redisFifoQueue;
|
|
/**
|
* 跳转到出租车订单首页
|
*/
|
@RequestMapping("")
|
public String index() {
|
return PREFIX + "tOrderTaxiDriver.html";
|
}
|
|
@RequestMapping("/tOrderTaxiDriver_list")
|
public String tOrderTaxiList(String insertTime ,
|
String driverName ,
|
String driverPhone ,
|
String timeSlot1Start ,
|
String timeSlot1End ,
|
String timeSlot2Start ,
|
String timeSlot2End ,
|
String timeSlot3Start ,
|
String timeSlot3End ,
|
String timeSlot4Start ,
|
String timeSlot4End , Model model) {
|
String beginTime = null;
|
String endTime = null;
|
|
|
if (SinataUtil.isNotEmpty(insertTime)){
|
String[] timeArray = insertTime.split(" - ");
|
beginTime = timeArray[0];
|
endTime = timeArray[1];
|
}else{
|
// 首次初始化默认查询当天数据
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
Date s = new Date();
|
s.setHours(0);
|
s.setMinutes(0);
|
s.setSeconds(0);
|
Date e = new Date();
|
e.setHours(23);
|
e.setMinutes(59);
|
e.setSeconds(59);
|
beginTime = simpleDateFormat.format(s);
|
endTime = simpleDateFormat.format(e);
|
}
|
DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
LocalDate startDate = LocalDate.parse(beginTime, DATE_FORMATTER);
|
LocalDate endDate = LocalDate.parse(endTime, DATE_FORMATTER);
|
List<DriverRankingTimeDTO> startTimeList = new ArrayList<>();
|
|
// 遍历日期范围内的每一天
|
LocalDate currentDate = startDate;
|
while (!currentDate.isAfter(endDate)) {
|
String currentDateStr = currentDate.format(DATE_FORMATTER);
|
if (SinataUtil.isNotEmpty(timeSlot1Start)) {
|
String s = currentDateStr + " "+timeSlot1Start;
|
String e = currentDateStr + " "+timeSlot1End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
if (SinataUtil.isNotEmpty(timeSlot2Start)) {
|
String s = currentDateStr + " "+timeSlot2Start;
|
String e = currentDateStr + " "+timeSlot2End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
if (SinataUtil.isNotEmpty(timeSlot3Start)) {
|
String s = currentDateStr + " "+timeSlot3Start;
|
String e = currentDateStr + " "+timeSlot3End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
if (SinataUtil.isNotEmpty(timeSlot4Start)) {
|
String s = currentDateStr + " "+timeSlot4Start;
|
String e = currentDateStr + " "+timeSlot4End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
// 移动到下一天
|
currentDate = currentDate.plusDays(1);
|
}
|
if (StringUtils.hasLength(timeSlot1Start)||
|
StringUtils.hasLength(timeSlot2Start)||
|
StringUtils.hasLength(timeSlot3Start)||
|
StringUtils.hasLength(timeSlot4Start)){
|
beginTime="";
|
endTime="";
|
}
|
model.addAttribute("insertTime",insertTime);
|
model.addAttribute("driverName",driverName);
|
model.addAttribute("driverPhone",driverPhone);
|
model.addAttribute("timeSlot1Start",timeSlot1Start);
|
model.addAttribute("timeSlot1End",timeSlot1End);
|
model.addAttribute("timeSlot2Start",timeSlot2Start);
|
model.addAttribute("timeSlot2End",timeSlot2End);
|
model.addAttribute("timeSlot3Start",timeSlot3Start);
|
model.addAttribute("timeSlot3End",timeSlot3End);
|
model.addAttribute("timeSlot4Start",timeSlot4Start);
|
model.addAttribute("timeSlot4End",timeSlot4End);
|
model.addAttribute("beginTime",beginTime);
|
model.addAttribute("endTime",endTime);
|
return PREFIX + "tOrderTaxi.html";
|
}
|
|
/**
|
* 查询司机排行榜
|
*/
|
@RequestMapping(value = "/list")
|
@ResponseBody
|
public Object list(String insertTime,
|
String driverName,
|
String driverPhone,
|
String timeSlot1Start,
|
String timeSlot1End,
|
String timeSlot2Start,
|
String timeSlot2End,
|
String timeSlot3Start,
|
String timeSlot3End ,
|
String timeSlot4Start,
|
String timeSlot4End
|
|
|
) {
|
String beginTime = null;
|
String endTime = null;
|
|
|
if (SinataUtil.isNotEmpty(insertTime)){
|
String[] timeArray = insertTime.split(" - ");
|
beginTime = timeArray[0];
|
endTime = timeArray[1];
|
}else{
|
// 首次初始化默认查询当天数据
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
Date s = new Date();
|
Date e = new Date();
|
beginTime = simpleDateFormat.format(s);
|
endTime = simpleDateFormat.format(e);
|
}
|
DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
LocalDate startDate = LocalDate.parse(beginTime, DATE_FORMATTER);
|
LocalDate endDate = LocalDate.parse(endTime, DATE_FORMATTER);
|
List<DriverRankingTimeDTO> startTimeList = new ArrayList<>();
|
|
// 遍历日期范围内的每一天
|
LocalDate currentDate = startDate;
|
while (!currentDate.isAfter(endDate)) {
|
String currentDateStr = currentDate.format(DATE_FORMATTER);
|
if (SinataUtil.isNotEmpty(timeSlot1Start)) {
|
String s = currentDateStr + " "+timeSlot1Start;
|
String e = currentDateStr + " "+timeSlot1End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
if (SinataUtil.isNotEmpty(timeSlot2Start)) {
|
String s = currentDateStr + " "+timeSlot2Start;
|
String e = currentDateStr + " "+timeSlot2End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
if (SinataUtil.isNotEmpty(timeSlot3Start)) {
|
String s = currentDateStr + " "+timeSlot3Start;
|
String e = currentDateStr + " "+timeSlot3End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
if (SinataUtil.isNotEmpty(timeSlot4Start)) {
|
String s = currentDateStr + " "+timeSlot4Start;
|
String e = currentDateStr + " "+timeSlot4End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
// 移动到下一天
|
currentDate = currentDate.plusDays(1);
|
}
|
if (StringUtils.hasLength(timeSlot1Start)||
|
StringUtils.hasLength(timeSlot2Start)||
|
StringUtils.hasLength(timeSlot3Start)||
|
StringUtils.hasLength(timeSlot4Start)){
|
beginTime=null;
|
endTime=null;
|
}else{
|
beginTime =beginTime+" 00:00:00";
|
endTime = endTime+" 23:59:59";
|
}
|
|
|
Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
|
page.setRecords(tOrderTaxiService.getTaxiOrderDriverList(page,
|
beginTime,endTime,
|
driverName,
|
driverPhone,
|
startTimeList));
|
|
List<Map<String, Object>> res =tOrderTaxiService.getTaxiOrderDriverListNoPage(
|
beginTime,endTime,
|
driverName,
|
driverPhone,
|
startTimeList);
|
page.setTotal(res.size());
|
return super.packForBT(page);
|
}
|
@GetMapping("/export")
|
public void export(String insertTime,
|
String driverName,
|
String driverPhone,
|
String timeSlot1Start,
|
String timeSlot1End,
|
String timeSlot2Start,
|
String timeSlot2End,
|
String timeSlot3Start,
|
String timeSlot3End ,
|
String timeSlot4Start,
|
String timeSlot4End, HttpServletRequest request, HttpServletResponse response){
|
String beginTime = null;
|
String endTime = null;
|
|
|
if (SinataUtil.isNotEmpty(insertTime)){
|
String[] timeArray = insertTime.split(" - ");
|
beginTime = timeArray[0];
|
endTime = timeArray[1];
|
}else{
|
// 首次初始化默认查询当天数据
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
Date s = new Date();
|
Date e = new Date();
|
beginTime = simpleDateFormat.format(s);
|
endTime = simpleDateFormat.format(e);
|
}
|
DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
LocalDate startDate = LocalDate.parse(beginTime, DATE_FORMATTER);
|
LocalDate endDate = LocalDate.parse(endTime, DATE_FORMATTER);
|
List<DriverRankingTimeDTO> startTimeList = new ArrayList<>();
|
|
// 遍历日期范围内的每一天
|
LocalDate currentDate = startDate;
|
while (!currentDate.isAfter(endDate)) {
|
String currentDateStr = currentDate.format(DATE_FORMATTER);
|
if (SinataUtil.isNotEmpty(timeSlot1Start)) {
|
String s = currentDateStr + " "+timeSlot1Start;
|
String e = currentDateStr + " "+timeSlot1End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
if (SinataUtil.isNotEmpty(timeSlot2Start)) {
|
String s = currentDateStr + " "+timeSlot2Start;
|
String e = currentDateStr + " "+timeSlot2End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
if (SinataUtil.isNotEmpty(timeSlot3Start)) {
|
String s = currentDateStr + " "+timeSlot3Start;
|
String e = currentDateStr + " "+timeSlot3End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
if (SinataUtil.isNotEmpty(timeSlot4Start)) {
|
String s = currentDateStr + " "+timeSlot4Start;
|
String e = currentDateStr + " "+timeSlot4End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
// 移动到下一天
|
currentDate = currentDate.plusDays(1);
|
}
|
if (StringUtils.hasLength(timeSlot1Start)||
|
StringUtils.hasLength(timeSlot2Start)||
|
StringUtils.hasLength(timeSlot3Start)||
|
StringUtils.hasLength(timeSlot4Start)){
|
beginTime=null;
|
endTime=null;
|
}else{
|
beginTime =beginTime+" 00:00:00";
|
endTime = endTime+" 23:59:59";
|
}
|
|
|
|
List<Map<String, Object>> res =tOrderTaxiService.getTaxiOrderDriverListNoPage(
|
beginTime,endTime,
|
driverName,
|
driverPhone,
|
startTimeList);
|
|
// 表格数据【封装】
|
List<List<String>> dataList = new ArrayList<>();
|
|
// 列【封装】
|
List<String> shellList = new ArrayList<String>();
|
shellList.add("排名");
|
shellList.add("司机");
|
shellList.add("司机手机号");
|
shellList.add("所属公司");
|
shellList.add("总订单量");
|
shellList.add("真实单量");
|
shellList.add("已核退单量");
|
shellList.add("接单率");
|
dataList.add(shellList);
|
for (Map<String,Object> object : res){
|
// 详细数据列【封装】
|
shellList = new ArrayList<String>();
|
if(SinataUtil.isNotEmpty(object.get("ranking"))){
|
shellList.add(object.get("ranking").toString());
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("driverName"))){
|
shellList.add(object.get("driverName").toString());
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("driverPhone"))){
|
shellList.add(object.get("driverPhone").toString());
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("companyName"))){
|
shellList.add(object.get("companyName").toString());
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("totalOrders"))){
|
shellList.add(object.get("totalOrders").toString());
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("realOrders"))){
|
shellList.add(object.get("realOrders").toString());
|
}else{
|
shellList.add("-");
|
} if(SinataUtil.isNotEmpty(object.get("refundedOrders"))){
|
shellList.add(object.get("refundedOrders").toString());
|
}else{
|
shellList.add("-");
|
} if(SinataUtil.isNotEmpty(object.get("acceptanceRate"))){
|
shellList.add(object.get("acceptanceRate").toString()+"%");
|
}else{
|
shellList.add("-");
|
}
|
dataList.add(shellList);
|
}
|
try {
|
// 调用工具类进行导出
|
ExcelExportUtil.easySheet("司机排行榜"+ DateUtil.formatDate(new Date(), "YYYYMMddHHmmss"), "司机排行榜", dataList,request, response);
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
@RequestMapping(value = "/listOrder")
|
@ResponseBody
|
public Object listOrder(String insertTime,
|
String driverName,
|
String driverPhone,
|
String timeSlot1Start,
|
String timeSlot1End,
|
String timeSlot2Start,
|
String timeSlot2End,
|
String timeSlot3Start,
|
String timeSlot3End ,
|
String timeSlot4Start,
|
String timeSlot4End,
|
String orderNum,
|
Integer orderSource,
|
String userName,
|
String userPhone,
|
String passengers,
|
String passengersPhone,
|
Integer state
|
|
) {
|
String beginTime = null;
|
String endTime = null;
|
|
|
if (SinataUtil.isNotEmpty(insertTime)){
|
String[] timeArray = insertTime.split(" - ");
|
beginTime = timeArray[0];
|
endTime = timeArray[1];
|
}else{
|
Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
|
page.setRecords(new ArrayList<>());
|
return super.packForBT(page);
|
}
|
DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
List<DriverRankingTimeDTO> startTimeList = new ArrayList<>();
|
if (beginTime!=null){
|
LocalDate startDate = LocalDate.parse(beginTime, DATE_FORMATTER);
|
LocalDate endDate = LocalDate.parse(endTime, DATE_FORMATTER);
|
|
// 遍历日期范围内的每一天
|
LocalDate currentDate = startDate;
|
while (!currentDate.isAfter(endDate)) {
|
String currentDateStr = currentDate.format(DATE_FORMATTER);
|
if (SinataUtil.isNotEmpty(timeSlot1Start)) {
|
String s = currentDateStr + " "+timeSlot1Start;
|
String e = currentDateStr + " "+timeSlot1End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
if (SinataUtil.isNotEmpty(timeSlot2Start)) {
|
String s = currentDateStr + " "+timeSlot2Start;
|
String e = currentDateStr + " "+timeSlot2End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
if (SinataUtil.isNotEmpty(timeSlot3Start)) {
|
String s = currentDateStr + " "+timeSlot3Start;
|
String e = currentDateStr + " "+timeSlot3End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
if (SinataUtil.isNotEmpty(timeSlot4Start)) {
|
String s = currentDateStr + " "+timeSlot4Start;
|
String e = currentDateStr + " "+timeSlot4End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
// 移动到下一天
|
currentDate = currentDate.plusDays(1);
|
}
|
if (StringUtils.hasLength(timeSlot1Start)||
|
StringUtils.hasLength(timeSlot2Start)||
|
StringUtils.hasLength(timeSlot3Start)||
|
StringUtils.hasLength(timeSlot4Start)){
|
beginTime=null;
|
endTime=null;
|
}else{
|
beginTime =beginTime+" 00:00:00";
|
endTime = endTime+" 23:59:59";
|
}
|
}else{
|
Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
|
page.setRecords(new ArrayList<>());
|
return super.packForBT(page);
|
}
|
|
|
|
Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
|
page.setRecords(tOrderTaxiService.getTaxiOrderDetailList(page,beginTime,endTime,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),orderNum,orderSource,userName,userPhone,passengers,passengersPhone,state,driverPhone,startTimeList));
|
return super.packForBT(page);
|
|
}
|
@GetMapping("/exportOrder")
|
public void exportOrder(String insertTime,
|
String driverName,
|
String driverPhone,
|
String timeSlot1Start,
|
String timeSlot1End,
|
String timeSlot2Start,
|
String timeSlot2End,
|
String timeSlot3Start,
|
String timeSlot3End ,
|
String timeSlot4Start,
|
String timeSlot4End,
|
String orderNum,
|
Integer orderSource,
|
String userName,
|
String userPhone,
|
String passengers,
|
String passengersPhone,
|
Integer state
|
, HttpServletRequest request, HttpServletResponse response
|
|
) {
|
String beginTime = null;
|
String endTime = null;
|
|
|
if (SinataUtil.isNotEmpty(insertTime)){
|
String[] timeArray = insertTime.split(" - ");
|
beginTime = timeArray[0];
|
endTime = timeArray[1];
|
}else{
|
Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
|
page.setRecords(new ArrayList<>());
|
return ;
|
}
|
DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
List<DriverRankingTimeDTO> startTimeList = new ArrayList<>();
|
if (beginTime!=null){
|
LocalDate startDate = LocalDate.parse(beginTime, DATE_FORMATTER);
|
LocalDate endDate = LocalDate.parse(endTime, DATE_FORMATTER);
|
|
// 遍历日期范围内的每一天
|
LocalDate currentDate = startDate;
|
while (!currentDate.isAfter(endDate)) {
|
String currentDateStr = currentDate.format(DATE_FORMATTER);
|
if (SinataUtil.isNotEmpty(timeSlot1Start)) {
|
String s = currentDateStr + " "+timeSlot1Start;
|
String e = currentDateStr + " "+timeSlot1End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
if (SinataUtil.isNotEmpty(timeSlot2Start)) {
|
String s = currentDateStr + " "+timeSlot2Start;
|
String e = currentDateStr + " "+timeSlot2End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
if (SinataUtil.isNotEmpty(timeSlot3Start)) {
|
String s = currentDateStr + " "+timeSlot3Start;
|
String e = currentDateStr + " "+timeSlot3End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
if (SinataUtil.isNotEmpty(timeSlot4Start)) {
|
String s = currentDateStr + " "+timeSlot4Start;
|
String e = currentDateStr + " "+timeSlot4End ;
|
DriverRankingTimeDTO driverRankingTimeDTO = new DriverRankingTimeDTO();
|
driverRankingTimeDTO.setStartTime(s);
|
driverRankingTimeDTO.setEndTime(e);
|
startTimeList.add(driverRankingTimeDTO);
|
}
|
// 移动到下一天
|
currentDate = currentDate.plusDays(1);
|
}
|
if (StringUtils.hasLength(timeSlot1Start)||
|
StringUtils.hasLength(timeSlot2Start)||
|
StringUtils.hasLength(timeSlot3Start)||
|
StringUtils.hasLength(timeSlot4Start)){
|
beginTime=null;
|
endTime=null;
|
}else{
|
beginTime =beginTime+" 00:00:00";
|
endTime = endTime+" 23:59:59";
|
}
|
}else{
|
Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
|
page.setRecords(new ArrayList<>());
|
return ;
|
}
|
|
List<Map<String, Object>> res =tOrderTaxiService.getTaxiOrderDetailListNoPage(beginTime,endTime,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),orderNum,orderSource,userName,userPhone,passengers,passengersPhone,state,driverPhone,startTimeList);
|
// 表格数据【封装】
|
List<List<String>> dataList = new ArrayList<>();
|
|
// 列【封装】
|
List<String> shellList = new ArrayList<String>();
|
shellList.add("下单时间");
|
shellList.add("订单编号");
|
shellList.add("订单来源");
|
shellList.add("乘车时间");
|
shellList.add("下单用户昵称");
|
shellList.add("下单用户手机");
|
shellList.add("乘车用户姓名");
|
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<String,Object> object : res){
|
// 详细数据列【封装】
|
shellList = new ArrayList<String>();
|
if(SinataUtil.isNotEmpty(object.get("insertTime"))){
|
shellList.add(com.stylefeng.guns.core.util.DateUtil.formatDate(com.stylefeng.guns.core.util.DateUtil.parse(object.get("insertTime").toString(),"YYYY-MM-dd HH:mm:ss.S"), "YYYY-MM-dd HH:mm"));
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("orderNum"))){
|
shellList.add(object.get("orderNum").toString());
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("orderSource"))){
|
switch (object.get("orderSource").toString()){
|
case "1":
|
shellList.add("APP下单");
|
break;
|
case "2":
|
shellList.add("扫码下单");
|
break;
|
case "3":
|
shellList.add("小程序下单");
|
break;
|
case "4":
|
shellList.add("司机下单");
|
break;
|
case "5":
|
shellList.add("调度下单");
|
break;
|
case "6":
|
shellList.add("电话下单");
|
break;
|
case "7":
|
shellList.add("95128电召");
|
break;
|
}
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("travelTime"))){
|
shellList.add(com.stylefeng.guns.core.util.DateUtil.formatDate(com.stylefeng.guns.core.util.DateUtil.parse(object.get("travelTime").toString(),"YYYY-MM-dd HH:mm:ss.S"), "YYYY-MM-dd HH:mm"));
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("userName"))){
|
shellList.add(object.get("userName").toString());
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("userPhone"))){
|
shellList.add(object.get("userPhone").toString());
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("passengers"))){
|
shellList.add(object.get("passengers").toString());
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("passengersPhone"))){
|
shellList.add(object.get("passengersPhone").toString());
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("startAddress"))){
|
shellList.add(object.get("startAddress").toString());
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("endAddress"))){
|
shellList.add(object.get("endAddress").toString());
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("driver"))){
|
shellList.add(object.get("driver").toString().split("-")[0]);
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("driver"))){
|
shellList.add(object.get("driver").toString().split("-")[1]);
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("company"))){
|
shellList.add(object.get("company").toString());
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("car"))){
|
shellList.add(object.get("car").toString());
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("payMoney"))){
|
shellList.add(object.get("payMoney").toString());
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("commission"))){
|
shellList.add(object.get("commission").toString());
|
}else{
|
shellList.add("-");
|
}
|
if(SinataUtil.isNotEmpty(object.get("state"))){
|
switch (object.get("state").toString()){
|
case "1":
|
shellList.add("待接单");
|
break;
|
case "2":
|
shellList.add("待出发");
|
break;
|
case "3":
|
shellList.add("待到达预约地点");
|
break;
|
case "4":
|
shellList.add("待乘客上车");
|
break;
|
case "5":
|
shellList.add("服务中");
|
break;
|
case "6":
|
shellList.add("完成服务");
|
break;
|
case "7":
|
shellList.add("待支付");
|
break;
|
case "8":
|
shellList.add("待评价");
|
break;
|
case "9":
|
shellList.add("已完成");
|
break;
|
case "10":
|
shellList.add("已取消");
|
break;
|
case "11":
|
shellList.add("改派中");
|
break;
|
case "12":
|
shellList.add("取消待支付");
|
break;
|
}
|
}else{
|
shellList.add("-");
|
}
|
dataList.add(shellList);
|
}
|
try {
|
// 调用工具类进行导出
|
ExcelExportUtil.easySheet("出租车订单"+ DateUtil.formatDate(new Date(), "YYYYMMddHHmmss"), "出租车订单", dataList,request, response);
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|