From 9a56c5710eb281afc06e2f3a211b8b595f24bbe1 Mon Sep 17 00:00:00 2001
From: liujie <liujie>
Date: 星期三, 16 八月 2023 09:39:34 +0800
Subject: [PATCH] update
---
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java | 375 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 365 insertions(+), 10 deletions(-)
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java
index e29171a..764e5ff 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java
@@ -1,22 +1,49 @@
package com.stylefeng.guns.modular.system.controller.general;
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.base.controller.BaseController;
+import com.stylefeng.guns.core.base.tips.SuccessTip;
+import com.stylefeng.guns.core.log.LogObjectHolder;
+import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.system.controller.resp.TAppUserDetailOrderResp;
+import com.stylefeng.guns.modular.system.controller.resp.TDriverCommissionResp;
+import com.stylefeng.guns.modular.system.controller.resp.TOrderResp;
+import com.stylefeng.guns.modular.system.controller.util.ExcelUtil;
+import com.stylefeng.guns.modular.system.enums.OrderStateEnum;
+import com.stylefeng.guns.modular.system.model.TAppUser;
+import com.stylefeng.guns.modular.system.model.TDriver;
+import com.stylefeng.guns.modular.system.model.TOrder;
+import com.stylefeng.guns.modular.system.model.TOrderPosition;
+import com.stylefeng.guns.modular.system.service.ITAppUserService;
+import com.stylefeng.guns.modular.system.service.ITCancelOrderService;
+import com.stylefeng.guns.modular.system.service.ITDriverService;
+import com.stylefeng.guns.modular.system.service.ITOrderService;
+import com.stylefeng.guns.modular.system.util.RedisUtil;
+import com.stylefeng.guns.modular.system.util.ResultUtil;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.beans.factory.annotation.Autowired;
-import com.stylefeng.guns.core.log.LogObjectHolder;
+import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
-import com.stylefeng.guns.modular.system.model.TOrder;
-import com.stylefeng.guns.modular.system.service.ITOrderService;
+import org.springframework.web.bind.annotation.ResponseBody;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.math.BigDecimal;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -34,6 +61,19 @@
@Autowired
private ITOrderService tOrderService;
+ @Autowired
+ private ITAppUserService tAppUserService;
+ @Autowired
+ private ITCancelOrderService tCancelOrderService;
+
+ @Autowired
+ private RedisUtil redisUtil;
+
+ @Autowired
+ private ITDriverService driverService;
+
+ @Value("${filePath}")
+ private String filePath;
/**
* 跳转到首页
@@ -63,17 +103,108 @@
}
/**
+ * 跳转异常页面
+ * @return
+ */
+ @RequestMapping("/tOrder-exception")
+ public String tOrderException(Model model) {
+ return PREFIX + "tOrderException.html";
+ }
+
+ /**
+ * 跳转到首页
+ */
+ @RequestMapping("/cancelOrder")
+ public String cancelOrder() {
+ return PREFIX + "tCancelOrder.html";
+ }
+
+ /**
+ * 跳转冻结页面
+ * @return
+ */
+ @RequestMapping("/tOrderException_start_and_stop")
+ public String tAppUserStartAndStop( Integer id,
+ Model model) {
+
+ // 查询订单
+ TOrder tOrder = tOrderService.selectById(id);
+ TAppUser tAppUser = new TAppUser();
+ if(Objects.nonNull(tOrder)){
+ tAppUser = tAppUserService.selectById(tOrder.getUserId());
+ }
+
+ model.addAttribute("id",id);
+ if(Objects.nonNull(tAppUser)){
+ model.addAttribute("status",tAppUser.getStatus());
+ }
+ return PREFIX + "tOrderStartAndStopException.html";
+ }
+
+ /**
+ * 跳转详情页面
+ */
+ @RequestMapping("/orderDetail")
+ public String orderDetail(Integer orderId, Model model) {
+ tOrderService.orderDetail(orderId,model);
+ return PREFIX + "tOrderDetail.html";
+ }
+
+ /**
+ * 跳转异常详情页面
+ */
+ @RequestMapping("/orderExceptionDetail")
+ public String orderExceptionDetail(Integer orderId, Model model) {
+ tOrderService.orderExceptionDetail(orderId,model);
+ return PREFIX + "tOrderExceptionDetail.html";
+ }
+
+ /**
* 获取列表
*/
- @ApiOperation(value = "获取订单列表")
+ @ApiOperation(value = "用户获取订单列表")
@RequestMapping(value = "/list")
@ResponseBody
- public Object list(String condition,Integer userId) {
+ public Object list(Integer userId) {
EntityWrapper<TOrder> wrapper = new EntityWrapper<>();
if(Objects.nonNull(userId)){
wrapper.eq("user_id",userId);
}
+ wrapper.orderBy("createTime",false);
return tOrderService.selectList(wrapper);
+ }
+
+ /**
+ * 获取列表
+ */
+ @ApiOperation(value = "获取订单列表")
+ @RequestMapping(value = "/orderList")
+ @ResponseBody
+ public Object orderList(String createTime,
+ String code,
+ Integer source,
+ String userName,
+ String userPhone,
+ Integer state,
+ String driverName) {
+ return tOrderService.getOrderList(createTime, code, source, userName, userPhone, state, driverName,1);
+ }
+
+ /**
+ * 获取列表
+ */
+ @ApiOperation(value = "获取订单异常列表")
+ @RequestMapping(value = "/orderExceptionList")
+ @ResponseBody
+ public Object orderExceptionList(String createTime,
+ String code,
+ Integer source,
+ String userName,
+ String userPhone,
+ Integer state,
+ String driverName) {
+// return tOrderService.getOrderList(createTime, code, source, userName, userPhone, state, driverName,2);
+ return tCancelOrderService.getCancelOrderList(createTime, code, source, userName, userPhone, state, driverName);
}
/**
@@ -88,18 +219,80 @@
EntityWrapper<TOrder> wrapper = new EntityWrapper<>();
if(Objects.nonNull(userId)){
- wrapper.eq("user_id",userId);
+ wrapper.eq("userId",userId);
}
List<TOrder> tOrders = tOrderService.selectList(wrapper);
for (TOrder tOrder : tOrders) {
TAppUserDetailOrderResp tAppUserDetailOrderResp = new TAppUserDetailOrderResp();
BeanUtils.copyProperties(tOrder,tAppUserDetailOrderResp);
- // TODO 查询里程数等参数
+ // 计算总里程
+ if(Objects.nonNull(tOrder.getActualMileage())){
+ tAppUserDetailOrderResp.setMileageSum(tOrder.getActualMileage()/1000);
+ }
+
+ // 计算总时长
+ long travelTimeSum = 0;
+ if(Objects.nonNull(tAppUserDetailOrderResp.getBoardingTime()) && Objects.nonNull(tAppUserDetailOrderResp.getGetoffTime())){
+ travelTimeSum = DateUtil.between(tAppUserDetailOrderResp.getBoardingTime(), tAppUserDetailOrderResp.getGetoffTime(), DateUnit.MINUTE);
+ }
+ tAppUserDetailOrderResp.setTravelTimeSum(Integer.valueOf(Long.toString(travelTimeSum)));
list.add(tAppUserDetailOrderResp);
}
return list;
+ }
+
+
+
+ @RequestMapping(value = "/getOrderTrack")
+ @ResponseBody
+ public ResultUtil getOrderTrack(Integer orderDetailId){
+ if(ToolUtil.isNotEmpty(orderDetailId)){
+ try {
+ //将数据存储到文件中
+ File file = new File(filePath + orderDetailId + ".json");
+ if(!file.exists()){
+ return ResultUtil.success(new ArrayList<>());
+ }
+ //读取文件(字符流)
+ BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));
+ //循环取出数据
+ String str = null;
+ StringBuffer sb = new StringBuffer();
+ while ((str = in.readLine()) != null) {
+ sb.append(str);
+ }
+ List<TOrderPosition> list = JSONArray.parseArray(sb.toString(), TOrderPosition.class);
+ return ResultUtil.success(list);
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResultUtil.runErr();
+ }
+ }else {
+ return ResultUtil.paranErr();
+ }
+ }
+
+
+
+ /**
+ * 关闭订单
+ */
+ @RequestMapping(value = "/cancelOrderUpdate")
+ @ResponseBody
+ public Object cancelOrderUpdate(@RequestParam Integer tOrderId) {
+ TOrder tOrder = tOrderService.selectById(tOrderId);
+ tOrder.setState(OrderStateEnum.CANCELED.getCode());
+ tOrderService.updateById(tOrder);
+ if(null != tOrder.getDriverId()){
+ redisUtil.delSetValue("orderService", tOrder.getId().toString());
+ TDriver tDriver = driverService.selectById(tOrder.getDriverId());
+ tDriver.setServerStatus(1);
+ driverService.updateById(tDriver);
+ }
+ redisUtil.setStrValue("cancelOrder", "true");
+ return SUCCESS_TIP;
}
@@ -150,4 +343,166 @@
public Object detail(@PathVariable("tOrderId") Integer tOrderId) {
return tOrderService.selectById(tOrderId);
}
+
+ @ApiOperation(value = "导出订单列表",notes="导出订单列表")
+ @RequestMapping(value = "/export")
+ @ResponseBody
+ public void export(String createTime,
+ String code,
+ Integer source,
+ String userName,
+ String userPhone,
+ Integer state,
+ String driverName,HttpServletResponse response) {
+ try {
+ Date date = new Date();
+ DateFormat format = new SimpleDateFormat("yyyyMMdd");
+ String time1 = format.format(date);
+ String fileName = "OrderInfo"+time1+".xls";
+ String[] title = new String[] {"下单时间","订单编号","订单来源","开始服务时间","下单用户昵称",
+ "下单用户手机","起点地址","终点地址","接单司机","司机电话","预估价","取消次数","订单状态"};
+ List<TOrderResp> orderList = tOrderService.getOrderList(createTime, code, source, userName, userPhone, state, driverName,1);
+ String[][] values = new String[orderList.size()][];
+ for (int i = 0; i < orderList.size(); i++) {
+ TOrderResp d = orderList.get(i);
+ values[i] = new String[title.length];
+ values[i][0] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getCreateTime());
+ values[i][1] = d.getCode();
+ Integer source1 = d.getSource();
+ if(1 == source1){
+ values[i][2] = "小程序";
+ }else if(2 == source1){
+ values[i][2] = "司机创建";
+ }
+ if(Objects.nonNull(d.getStartTime())){
+ values[i][3] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getStartTime());
+ }else {
+ values[i][3] = "";
+ }
+ values[i][4] = d.getUserName();
+ values[i][5] = d.getUserPhone();
+ values[i][6] = d.getStartAddress();
+ values[i][7] = d.getEndAddress();
+ values[i][8] = d.getDriverName();
+ values[i][9] = d.getDriverPhone();
+ values[i][10] = String.valueOf(Objects.nonNull(d.getEstimatedPrice())?d.getEstimatedPrice(): BigDecimal.ZERO);
+ values[i][11] = String.valueOf(d.getCancelCount());
+ Integer status1 = d.getState();
+ if(101 == status1){
+ values[i][12] = "待接单";
+ }else if(102 == status1){
+ values[i][12] = "已接单";
+ }else if(103 == status1){
+ values[i][12] = "前往预约点";
+ }else if(104 == status1){
+ values[i][12] = "到达预约点";
+ }else if(105 == status1){
+ values[i][12] = "开始服务";
+ }else if(106 == status1){
+ values[i][12] = "到达目的地";
+ }else if(107 == status1){
+ values[i][12] = "待支付";
+ }else if(108 == status1){
+ values[i][12] = "待评价";
+ }else if(109 == status1){
+ values[i][12] = "已完成";
+ }else if(201 == status1){
+ values[i][12] = "转单中";
+ }else if(301 == status1){
+ values[i][12] = "已取消";
+ }else if(401 == status1){
+ values[i][12] = "等待中";
+ }
+ }
+ HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("Variance"+time1, title, values, null);
+ ExcelUtil.setResponseHeader(response, fileName);
+ OutputStream os = response.getOutputStream();
+ wb.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ @ApiOperation(value = "导出订单列表",notes="导出订单列表")
+ @RequestMapping(value = "/export-exception")
+ @ResponseBody
+ public void exportException(String createTime,
+ String code,
+ Integer source,
+ String userName,
+ String userPhone,
+ Integer state,
+ String driverName,HttpServletResponse response) {
+ try {
+ Date date = new Date();
+ DateFormat format = new SimpleDateFormat("yyyyMMdd");
+ String time1 = format.format(date);
+ String fileName = "OrderExceptionInfo"+time1+".xls";
+ String[] title = new String[] {"下单时间","订单编号","订单来源","乘车时间","下单用户昵称",
+ "下单用户手机","起点","终点","接单司机","司机电话","预估价格","取消次数","订单状态"};
+ List<TOrderResp> orderList = tOrderService.getOrderList(createTime, code, source, userName, userPhone, state, driverName,1);
+ String[][] values = new String[orderList.size()][];
+ for (int i = 0; i < orderList.size(); i++) {
+ TOrderResp d = orderList.get(i);
+ values[i] = new String[title.length];
+ values[i][0] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getCreateTime());
+ values[i][1] = d.getCode();
+ Integer source1 = d.getSource();
+ if(1 == source1){
+ values[i][2] = "小程序";
+ }else if(2 == source1){
+ values[i][2] = "司机创建";
+ }
+ if(Objects.nonNull(d.getStartTime())){
+ values[i][3] = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d.getStartTime());
+ }else {
+ values[i][3] = "";
+ }
+ values[i][4] = d.getUserName();
+ values[i][5] = d.getUserPhone();
+ values[i][6] = d.getStartAddress();
+ values[i][7] = d.getEndAddress();
+ values[i][8] = d.getDriverName();
+ values[i][9] = d.getDriverPhone();
+ values[i][10] = String.valueOf(Objects.nonNull(d.getEstimatedPrice())?d.getEstimatedPrice(): BigDecimal.ZERO);
+ values[i][11] = String.valueOf(d.getCancelCount());
+ Integer status1 = d.getState();
+ if(101 == status1){
+ values[i][12] = "待接单";
+ }else if(102 == status1){
+ values[i][12] = "已接单";
+ }else if(103 == status1){
+ values[i][12] = "前往预约点";
+ }else if(104 == status1){
+ values[i][12] = "到达预约点";
+ }else if(105 == status1){
+ values[i][12] = "开始服务";
+ }else if(106 == status1){
+ values[i][12] = "到达目的地";
+ }else if(107 == status1){
+ values[i][12] = "待支付";
+ }else if(108 == status1){
+ values[i][12] = "待评价";
+ }else if(109 == status1){
+ values[i][12] = "已完成";
+ }else if(201 == status1){
+ values[i][12] = "转单中";
+ }else if(301 == status1){
+ values[i][12] = "已取消";
+ }else if(401 == status1){
+ values[i][12] = "等待中";
+ }
+ }
+ HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("Variance"+time1, title, values, null);
+ ExcelUtil.setResponseHeader(response, fileName);
+ OutputStream os = response.getOutputStream();
+ wb.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
}
--
Gitblit v1.7.1