puzhibing
2023-06-01 c4a098e3f88bc5071e36b92b9e5dcceb51129957
management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java
@@ -4,11 +4,22 @@
import cn.hutool.core.date.DateUtil;
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.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.model.TAppUser;
import com.stylefeng.guns.modular.system.model.TDriver;
import com.stylefeng.guns.modular.system.model.TOrder;
import com.stylefeng.guns.modular.system.service.ITAppUserService;
import com.stylefeng.guns.modular.system.service.ITCancelOrderService;
import com.stylefeng.guns.modular.system.service.ITOrderService;
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.stereotype.Controller;
@@ -18,7 +29,13 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
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;
@@ -36,6 +53,10 @@
    @Autowired
    private ITOrderService tOrderService;
    @Autowired
    private ITAppUserService tAppUserService;
    @Autowired
    private ITCancelOrderService tCancelOrderService;
    /**
     * 跳转到首页
@@ -65,17 +86,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);
    }
    /**
@@ -90,7 +202,7 @@
        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) {
@@ -98,10 +210,15 @@
            BeanUtils.copyProperties(tOrder,tAppUserDetailOrderResp);
            // 计算总里程
            if(Objects.nonNull(tOrder.getActualMileage())){
                tAppUserDetailOrderResp.setMileageSum(tOrder.getActualMileage()/1000);
            }
            // 计算总时长
            long travelTimeSum = DateUtil.between(tAppUserDetailOrderResp.getBoardingTime(), tAppUserDetailOrderResp.getGetoffTime(), DateUnit.MINUTE);
            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);
@@ -157,4 +274,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();
        }
    }
}