Pu Zhibing
5 天以前 f1ba329891967bca6d083a9d5722683a9fa2080b
ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarConfirmController.java
New file
@@ -0,0 +1,221 @@
package com.stylefeng.guns.modular.system.controller.specialTrain;
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.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.controller.util.PushUtil;
import com.stylefeng.guns.modular.system.dao.OrderCancelMapper;
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.HttpRequestUtil;
import com.stylefeng.guns.modular.system.util.PushMinistryOfTransportUtil;
import com.stylefeng.guns.modular.system.util.PushURL;
import com.stylefeng.guns.modular.system.util.ResultUtil;
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.web.bind.annotation.*;
import javax.annotation.Resource;
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.util.*;
/**
 * 专车订单控制器
 *
 * @author fengshuonan
 * @Date 2020-09-02 17:28:59
 */
@Controller
@RequestMapping("/tOrderPrivateCarConfirm")
public class TOrderPrivateCarConfirmController extends BaseController {
    private String PREFIXCONFIRM = "/system/tOrderPrivateCarConfirm/";
    @Autowired
    private ITOrderPrivateCarService tOrderPrivateCarService;
    @Autowired
    private ITServerCarmodelService tServerCarmodelService;
    @Autowired
    private ITOrderPositionService tOrderPositionService;
    @Autowired
    private ITDriverService tDriverService;
    @Autowired
    private PushMinistryOfTransportUtil pushMinistryOfTransportUtil;
    @Resource
    private OrderCancelMapper orderCancelMapper;
    @Value("${pushMinistryOfTransport}")
    private boolean pushMinistryOfTransport;
    @Value("${filePath}")
    private String filePath;
    /**
     * 跳转到修改专车订单
     */
    @RequestMapping("/tOrderPrivateCar_orderDetail/{tOrderPrivateCarId}")
    public String tOrderPrivateCarUpdate(@PathVariable Integer tOrderPrivateCarId, Model model) {
        Map<String, Object> item = tOrderPrivateCarService.getPrivateCarOrderDetailById(tOrderPrivateCarId);
        model.addAttribute("item",item);
        return PREFIXCONFIRM + "tOrderPrivateCar_orderDetail.html";
    }
    /**
     * 跳转到专车订单首页
     */
    @RequestMapping("")
    public String confirmIndex(Model model) {
        //服务专车车型
        List<TServerCarmodel> carmodelList = tServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 1).eq("state", 1)
        );
        model.addAttribute("carmodelList",carmodelList);
        return PREFIXCONFIRM + "tOrderPrivateCar.html";
    }
    /**
     * 跳转到确认金额页面
     */
    @RequestMapping("/toConfirmMoney/{tOrderPrivateCarId}")
    public String toConfirmMoney(@PathVariable Integer tOrderPrivateCarId, Model model) {
        Map<String, Object> item = tOrderPrivateCarService.getPrivateCarOrderDetailById(tOrderPrivateCarId);
        model.addAttribute("item",item);
        return PREFIXCONFIRM + "toConfirmMoney.html";
    }
    /**
     * 获取专车订单列表
     */
    @RequestMapping(value = "/listConfirm")
    @ResponseBody
    public Object listConfirm(String insertTime,
                       String orderNum,
                       Integer orderSource,
                       String userName,
                       String userPhone,
                       String passengers,
                       String passengersPhone,
                       Integer serverCarModelId,
                       String driver,
                       Integer state,
                       Integer smsNumber) {
        String beginTime = null;
        String endTime = null;
        if (SinataUtil.isNotEmpty(insertTime)){
            String[] timeArray = insertTime.split(" - ");
            beginTime = timeArray[0];
            endTime = timeArray[1];
        }
        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
        page.setRecords(tOrderPrivateCarService.getPrivateCarOrderListConfirm(page,beginTime,endTime,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),orderNum,orderSource,userName,userPhone,passengers,passengersPhone,serverCarModelId,driver,state,smsNumber));
        return super.packForBT(page);
    }
    private ResultUtil resultUtil;
    /**
     * 获取订单轨迹
     * @param orderDetailId
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/getOrderTrack", method = RequestMethod.POST)
    public ResultUtil getOrderTrack(String orderDetailId){
        if(ToolUtil.isNotEmpty(orderDetailId)){
            try {
//                List<TOrderPosition> list = tOrderPositionService.selectList(new EntityWrapper<TOrderPosition>().eq("orderType", 1).eq("orderId", orderDetailId).orderBy("insertTime"));
                /*if(list.size() == 0){
                    return ResultUtil.error("该订单没有运行轨迹");
                }*/
                //将数据存储到文件中
                File file = new File(filePath + orderDetailId + "_1.txt");
                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);
                resultUtil = ResultUtil.success(list);
            }catch (Exception e){
                e.printStackTrace();
                resultUtil = ResultUtil.runErr();
            }
        }else {
            resultUtil = ResultUtil.paranErr();
        }
        return resultUtil;
    }
    @Autowired
    private ITCompanyService companyService;
    @Autowired
    private ITDriverService driverService;
    @Autowired
    private IIncomeService incomeService;
    @Autowired
    private PushUtil pushUtil;
    /**
     * 支付专车订单
     */
    @RequestMapping(value = "/confirmMoney")
    @ResponseBody
    public Object confirmMoney(Integer id,BigDecimal money) {
        TOrderPrivateCar orderPrivateCar = tOrderPrivateCarService.selectById(id);
        orderPrivateCar.setAbnormalMoney(orderPrivateCar.getOrderMoney());
        orderPrivateCar.setOrderMoney(money);
        orderPrivateCar.setIsException(0);
        orderPrivateCar.setPriceAuditState(2);
        orderPrivateCar.setState(7);
        orderPrivateCar.updateById();
        // 推送消息
        TOrderPrivateCar finalOrderPrivateCar = orderPrivateCar;
        new Thread(new Runnable() {
            @Override
            public void run() {
                pushUtil.pushOrderState(1, finalOrderPrivateCar.getUserId(), finalOrderPrivateCar.getId(), 1, finalOrderPrivateCar.getState());
                pushUtil.pushOrderState(2, finalOrderPrivateCar.getDriverId(), finalOrderPrivateCar.getId(), 1, finalOrderPrivateCar.getState());
            }
        }).start();
        return SUCCESS_TIP;
    }
}