yanghb
2023-04-21 0481353111afb43a2322e18530dde26f1d841ead
ManagementTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TReassignController.java
@@ -1,12 +1,12 @@
package com.stylefeng.guns.modular.system.controller.specialTrain;
import com.alibaba.fastjson.JSON;
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.shiro.ShiroUser;
import com.stylefeng.guns.core.util.ExcelUtil;
import com.stylefeng.guns.core.util.SinataUtil;
import com.stylefeng.guns.modular.system.dao.LineShiftDriverMapper;
import com.stylefeng.guns.modular.system.dao.OrderCancelMapper;
@@ -16,7 +16,6 @@
import com.stylefeng.guns.modular.system.util.ICBCPayUtil;
import com.stylefeng.guns.modular.system.util.PushURL;
import com.stylefeng.guns.modular.system.util.ResultUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -28,15 +27,11 @@
import org.springframework.web.bind.annotation.RequestParam;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * 快车改派管理控制器
 * 专车改派管理控制器
 *
 * @author fengshuonan
 * @Date 2020-09-03 14:20:27
@@ -86,13 +81,10 @@
    @Autowired
    private ITOrderLogisticsService orderLogisticsService;
    @Autowired
    private ITOrderTaxiService orderTaxiService;
    /**
     * 跳转到快车改派管理首页
     * 跳转到专车改派管理首页
     */
    @RequestMapping("")
    public String index() {
@@ -116,17 +108,9 @@
        return PREFIX + "smallPieceLogistics.html";
    }
    /**
     * 跳转到出租车改派管理首页
     */
    @RequestMapping("/taxiPieceLogistics")
    public String taxiPieceLogistics() {
        return PREFIX + "taxi.html";
    }
    /**
     * 跳转到添加快车改派管理
     * 跳转到添加专车改派管理
     */
    @RequestMapping("/tReassign_add")
    public String tReassignAdd() {
@@ -134,7 +118,7 @@
    }
    /**
     * 跳转到修改快车改派管理
     * 跳转到修改专车改派管理
     */
    @RequestMapping("/tReassign_update/{tReassignId}")
    public String tReassignUpdate(@PathVariable Integer tReassignId, Model model) {
@@ -145,7 +129,7 @@
    }
    /**
     * 跳转到修改快车改派管理
     * 跳转到修改专车改派管理
     */
    @RequestMapping("/tReassign_reassignment/{tReassignId}")
    public String tReassign_reassignment(@PathVariable Integer tReassignId, Model model) {
@@ -172,17 +156,7 @@
    }
    /**
     * 跳转到修改跨城改派管理
     */
    @RequestMapping("/tReassign_reassignmentTaxi/{tReassignId}")
    public String tReassign_reassignmentTaxi(@PathVariable Integer tReassignId, Model model) {
        model.addAttribute("tReassignId",tReassignId);
        return PREFIX + "tReassign_reassignmentTaxi.html";
    }
    /**
     * 获取快车改派管理列表
     * 获取专车改派管理列表
     */
    @RequestMapping(value = "/list")
    @ResponseBody
@@ -202,93 +176,10 @@
            endTime = timeArray[1];
        }
        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
        //page.setRecords(tReassignService.getPrivateCarReassignOrderList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state));
        List<Map<String,Object>> list = tReassignService.getPrivateCarReassignOrderList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state);
        if(!list.isEmpty()){
            Map<String,Object> map = new HashMap<>();
            map.put("insertTime","改派金额合计");
            map.put("money",tReassignService.getPrivateCarReassignOrderListMoney(ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state));
            list.add(map);
        }
        page.setRecords(list);
        page.setRecords(tReassignService.getPrivateCarReassignOrderList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state));
        return super.packForBT(page);
    }
    @RequestMapping("/excel")
    @ResponseBody
    public Object excel(HttpServletResponse response, String insertTime,
                        String originalDriverName,
                        String originalDriverPhone,
                        String orderNum,
                        String nowDriverName,
                        String nowDriverPhone,
                        Integer orderState,
                        Integer state){
        try {
            Date date = new Date();
            DateFormat format = new SimpleDateFormat("yyyyMMdd");
            String time = format.format(date);
            String fileName = "快车改派"+time+".xls";
            String[] title = new String[] {"申请改派时间","申请司机","申请原因","订单编号","下单用户","出发时间","出发地","目的地"
                    ,"原服务车辆","改派处罚金","改派服务司机","改派服务车辆","订单当前状态","改派状态"};
            String beginTime = null;
            String endTime = null;
            if (SinataUtil.isNotEmpty(insertTime)){
                String[] timeArray = insertTime.split(" - ");
                beginTime = timeArray[0];
                endTime = timeArray[1];
            }
            List<Map<String,Object>> mapList = tReassignService.getPrivateCarReassignOrderListEx(ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state);
            String[][] values = new String[mapList.size()][];
            for (int i = 0; i < mapList.size(); i++) {
                Map<String,Object> d=mapList.get(i);
                values[i] = new String[title.length];
                values[i][0]=d.get("insertTime").toString();
                values[i][1]=d.get("originalDriver").toString();
                values[i][2]=d.get("reason").toString();
                values[i][3]=d.get("orderNum").toString();
                values[i][4]=d.get("addOrderUser").toString();
                values[i][5]=d.get("travelTime").toString();
                values[i][6]=d.get("startAddress").toString();
                values[i][7]=d.get("endAddress").toString();
                values[i][8]=d.get("originalCar").toString();
                values[i][9]=d.get("money").toString();
                values[i][10]=d.get("nowDriver")==null?"":d.get("nowDriver").toString();
                values[i][11]=d.get("nowCar")==null?"":d.get("nowCar").toString();
                values[i][12]=d.get("orderState").toString().equals("1")?"待接单":
                        d.get("orderState").toString().equals("2")?"待出发":
                                d.get("orderState").toString().equals("3")?"待到达预约地点":
                                        d.get("orderState").toString().equals("4")?"待取货":
                                                d.get("orderState").toString().equals("5")?"服务中":
                                                        d.get("orderState").toString().equals("6")?"已送达":
                                                                d.get("orderState").toString().equals("7")?"待支付":
                                                                        d.get("orderState").toString().equals("8")?"需补差价":
                                                                                d.get("orderState").toString().equals("9")?"已取货":
                                                                                        d.get("orderState").toString().equals("10")?"已取消":
                                                                                                d.get("orderState").toString().equals("11")?"改派中":
                                                                                                        d.get("orderState").toString().equals("12")?"已支付差价":"";
                values[i][13]=d.get("state").toString().equals("1")?"提交申请":
                        d.get("state").toString().equals("2")?"已支付":
                                d.get("state").toString().equals("3")?"已改派":
                                        d.get("state").toString().equals("4")?"已取消":
                                                d.get("state").toString().equals("5")?"已拒绝":"";
            }
            String fileNameTitle="快车改派";
            HSSFWorkbook wb = ExcelUtil.getHSSFWorkbookTime(fileNameTitle+time, title, values, null,insertTime);
            this.setResponseHeader(response, fileName);
            OutputStream os = response.getOutputStream();
            wb.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            /*return ApiUtil.putFailObj("导出失败");*/
        }
        return SUCCESS_TIP;
    }
    /**
     * 获取跨城改派管理列表
     */
@@ -310,96 +201,13 @@
            endTime = timeArray[1];
        }
        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
        //page.setRecords(tReassignService.getCrossReassignOrderList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state));
        List<Map<String,Object>> list = tReassignService.getCrossReassignOrderList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state);
        if(!list.isEmpty()){
            Map<String,Object> map = new HashMap<>();
            map.put("insertTime","改派金额合计");
            map.put("money",tReassignService.getCrossReassignOrderListMoney(ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state));
            list.add(map);
        }
        page.setRecords(list);
        page.setRecords(tReassignService.getCrossReassignOrderList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state));
        return super.packForBT(page);
    }
    @RequestMapping("/excelCross")
    @ResponseBody
    public Object excelCross(HttpServletResponse response, String insertTime,
                        String originalDriverName,
                        String originalDriverPhone,
                        String orderNum,
                        String nowDriverName,
                        String nowDriverPhone,
                        Integer orderState,
                        Integer state){
        try {
            Date date = new Date();
            DateFormat format = new SimpleDateFormat("yyyyMMdd");
            String time = format.format(date);
            String fileName = "快车改派"+time+".xls";
            String[] title = new String[] {"申请改派时间","申请司机","申请原因","订单编号","下单用户","出发时间","出发地","目的地"
                    ,"原服务车辆","改派处罚金","改派服务司机","改派服务车辆","订单当前状态","改派状态"};
            String beginTime = null;
            String endTime = null;
            if (SinataUtil.isNotEmpty(insertTime)){
                String[] timeArray = insertTime.split(" - ");
                beginTime = timeArray[0];
                endTime = timeArray[1];
            }
            List<Map<String,Object>> mapList = tReassignService.getCrossReassignOrderListEx(ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state);
            String[][] values = new String[mapList.size()][];
            for (int i = 0; i < mapList.size(); i++) {
                Map<String,Object> d=mapList.get(i);
                values[i] = new String[title.length];
                values[i][0]=d.get("insertTime").toString();
                values[i][1]=d.get("originalDriver").toString();
                values[i][2]=d.get("reason").toString();
                values[i][3]=d.get("orderNum").toString();
                values[i][4]=d.get("addOrderUser").toString();
                values[i][5]=d.get("travelTime").toString();
                values[i][6]=d.get("startAddress").toString();
                values[i][7]=d.get("endAddress").toString();
                values[i][8]=d.get("originalCar").toString();
                values[i][9]=d.get("money").toString();
                values[i][10]=d.get("nowDriver")==null?"":d.get("nowDriver").toString();
                values[i][11]=d.get("nowCar")==null?"":d.get("nowCar").toString();
                values[i][12]=d.get("orderState").toString().equals("1")?"待接单":
                        d.get("orderState").toString().equals("2")?"待出发":
                                d.get("orderState").toString().equals("3")?"待到达预约地点":
                                        d.get("orderState").toString().equals("4")?"待取货":
                                                d.get("orderState").toString().equals("5")?"服务中":
                                                        d.get("orderState").toString().equals("6")?"已送达":
                                                                d.get("orderState").toString().equals("7")?"待支付":
                                                                        d.get("orderState").toString().equals("8")?"需补差价":
                                                                                d.get("orderState").toString().equals("9")?"已取货":
                                                                                        d.get("orderState").toString().equals("10")?"已取消":
                                                                                                d.get("orderState").toString().equals("11")?"改派中":
                                                                                                        d.get("orderState").toString().equals("12")?"已支付差价":"";
                values[i][13]=d.get("state").toString().equals("1")?"提交申请":
                        d.get("state").toString().equals("2")?"已支付":
                                d.get("state").toString().equals("3")?"已改派":
                                        d.get("state").toString().equals("4")?"已取消":
                                                d.get("state").toString().equals("5")?"已拒绝":"";
            }
            String fileNameTitle="快车改派";
            HSSFWorkbook wb = ExcelUtil.getHSSFWorkbookTime(fileNameTitle+time, title, values, null,insertTime);
            this.setResponseHeader(response, fileName);
            OutputStream os = response.getOutputStream();
            wb.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            /*return ApiUtil.putFailObj("导出失败");*/
        }
        return SUCCESS_TIP;
    }
    /**
     * 获取小件改派管理列表
     * 获取跨城改派管理列表
     */
    @RequestMapping(value = "/listSmallPieceLogistics")
    @ResponseBody
@@ -419,201 +227,10 @@
            endTime = timeArray[1];
        }
        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
        List<Map<String,Object>> list = tReassignService.getSmallPieceLogisticsList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state);
        if(!list.isEmpty()){
            Map<String,Object> map = new HashMap<>();
            map.put("insertTime","改派金额合计");
            map.put("money",tReassignService.getSmallPieceLogisticsListMoney(ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state));
            list.add(map);
        }
        page.setRecords(list);
        page.setRecords(tReassignService.getSmallPieceLogisticsList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state));
        return super.packForBT(page);
    }
    @RequestMapping("/excelSmallPieceLogistics")
    @ResponseBody
    public Object excelSmallPieceLogistics(HttpServletResponse response, String insertTime,
                             String originalDriverName,
                             String originalDriverPhone,
                             String orderNum,
                             String nowDriverName,
                             String nowDriverPhone,
                             Integer orderState,
                             Integer state){
        try {
            Date date = new Date();
            DateFormat format = new SimpleDateFormat("yyyyMMdd");
            String time = format.format(date);
            String fileName = "快车改派"+time+".xls";
            String[] title = new String[] {"申请改派时间","申请司机","申请原因","订单编号","下单用户","出发时间","出发地","目的地"
                    ,"原服务车辆","改派处罚金","改派服务司机","改派服务车辆","订单当前状态","改派状态"};
            String beginTime = null;
            String endTime = null;
            if (SinataUtil.isNotEmpty(insertTime)){
                String[] timeArray = insertTime.split(" - ");
                beginTime = timeArray[0];
                endTime = timeArray[1];
            }
            List<Map<String,Object>> mapList = tReassignService.getSmallPieceLogisticsListEx(ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state);
            String[][] values = new String[mapList.size()][];
            for (int i = 0; i < mapList.size(); i++) {
                Map<String,Object> d=mapList.get(i);
                values[i] = new String[title.length];
                values[i][0]=d.get("insertTime").toString();
                values[i][1]=d.get("originalDriver").toString();
                values[i][2]=d.get("reason").toString();
                values[i][3]=d.get("orderNum").toString();
                values[i][4]=d.get("addOrderUser").toString();
                values[i][5]=d.get("travelTime").toString();
                values[i][6]=d.get("startAddress").toString();
                values[i][7]=d.get("endAddress").toString();
                values[i][8]=d.get("originalCar").toString();
                values[i][9]=d.get("money").toString();
                values[i][10]=d.get("nowDriver")==null?"":d.get("nowDriver").toString();
                values[i][11]=d.get("nowCar")==null?"":d.get("nowCar").toString();
                values[i][12]=d.get("orderState").toString().equals("1")?"待接单":
                        d.get("orderState").toString().equals("2")?"待出发":
                                d.get("orderState").toString().equals("3")?"待到达预约地点":
                                        d.get("orderState").toString().equals("4")?"待取货":
                                                d.get("orderState").toString().equals("5")?"服务中":
                                                        d.get("orderState").toString().equals("6")?"已送达":
                                                                d.get("orderState").toString().equals("7")?"待支付":
                                                                        d.get("orderState").toString().equals("8")?"需补差价":
                                                                                d.get("orderState").toString().equals("9")?"已取货":
                                                                                        d.get("orderState").toString().equals("10")?"已取消":
                                                                                                d.get("orderState").toString().equals("11")?"改派中":
                                                                                                        d.get("orderState").toString().equals("12")?"已支付差价":"";
                values[i][13]=d.get("state").toString().equals("1")?"提交申请":
                        d.get("state").toString().equals("2")?"已支付":
                                d.get("state").toString().equals("3")?"已改派":
                                        d.get("state").toString().equals("4")?"已取消":
                                                d.get("state").toString().equals("5")?"已拒绝":"";
            }
            String fileNameTitle="快车改派";
            HSSFWorkbook wb = ExcelUtil.getHSSFWorkbookTime(fileNameTitle+time, title, values, null,insertTime);
            this.setResponseHeader(response, fileName);
            OutputStream os = response.getOutputStream();
            wb.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            /*return ApiUtil.putFailObj("导出失败");*/
        }
        return SUCCESS_TIP;
    }
    /**
     * 获取出租车改派管理列表
     */
    @RequestMapping(value = "/listTaxi")
    @ResponseBody
    public Object listTaxi(String insertTime,
                            String originalDriverName,
                            String originalDriverPhone,
                            String orderNum,
                            String nowDriverName,
                            String nowDriverPhone,
                            Integer orderState,
                            Integer state) {
        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(tReassignService.getTaxiReassignOrderList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state));
        List<Map<String,Object>> list = tReassignService.getTaxiReassignOrderList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state);
        if(!list.isEmpty()){
            Map<String,Object> map = new HashMap<>();
            map.put("insertTime","改派金额合计");
            map.put("money",tReassignService.getTaxiReassignOrderListMoney(ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state));
            list.add(map);
        }
        page.setRecords(list);
        return super.packForBT(page);
    }
    @RequestMapping("/excelTaxi")
    @ResponseBody
    public Object excelTaxi(HttpServletResponse response, String insertTime,
                                           String originalDriverName,
                                           String originalDriverPhone,
                                           String orderNum,
                                           String nowDriverName,
                                           String nowDriverPhone,
                                           Integer orderState,
                                           Integer state){
        try {
            Date date = new Date();
            DateFormat format = new SimpleDateFormat("yyyyMMdd");
            String time = format.format(date);
            String fileName = "快车改派"+time+".xls";
            String[] title = new String[] {"申请改派时间","申请司机","申请原因","订单编号","下单用户","出发时间","出发地","目的地"
                    ,"原服务车辆","改派处罚金","改派服务司机","改派服务车辆","订单当前状态","改派状态"};
            String beginTime = null;
            String endTime = null;
            if (SinataUtil.isNotEmpty(insertTime)){
                String[] timeArray = insertTime.split(" - ");
                beginTime = timeArray[0];
                endTime = timeArray[1];
            }
            List<Map<String,Object>> mapList = tReassignService.getTaxiReassignOrderListEx(ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state);
            String[][] values = new String[mapList.size()][];
            for (int i = 0; i < mapList.size(); i++) {
                Map<String,Object> d=mapList.get(i);
                values[i] = new String[title.length];
                values[i][0]=d.get("insertTime").toString();
                values[i][1]=d.get("originalDriver").toString();
                values[i][2]=d.get("reason").toString();
                values[i][3]=d.get("orderNum").toString();
                values[i][4]=d.get("addOrderUser").toString();
                values[i][5]=d.get("travelTime").toString();
                values[i][6]=d.get("startAddress").toString();
                values[i][7]=d.get("endAddress").toString();
                values[i][8]=d.get("originalCar").toString();
                values[i][9]=d.get("money").toString();
                values[i][10]=d.get("nowDriver")==null?"":d.get("nowDriver").toString();
                values[i][11]=d.get("nowCar")==null?"":d.get("nowCar").toString();
                values[i][12]=d.get("orderState").toString().equals("1")?"待接单":
                        d.get("orderState").toString().equals("2")?"待出发":
                                d.get("orderState").toString().equals("3")?"待到达预约地点":
                                        d.get("orderState").toString().equals("4")?"待取货":
                                                d.get("orderState").toString().equals("5")?"服务中":
                                                        d.get("orderState").toString().equals("6")?"已送达":
                                                                d.get("orderState").toString().equals("7")?"待支付":
                                                                        d.get("orderState").toString().equals("8")?"需补差价":
                                                                                d.get("orderState").toString().equals("9")?"已取货":
                                                                                        d.get("orderState").toString().equals("10")?"已取消":
                                                                                                d.get("orderState").toString().equals("11")?"改派中":
                                                                                                        d.get("orderState").toString().equals("12")?"已支付差价":"";
                values[i][13]=d.get("state").toString().equals("1")?"提交申请":
                        d.get("state").toString().equals("2")?"已支付":
                                d.get("state").toString().equals("3")?"已改派":
                                        d.get("state").toString().equals("4")?"已取消":
                                                d.get("state").toString().equals("5")?"已拒绝":"";
            }
            String fileNameTitle="快车改派";
            HSSFWorkbook wb = ExcelUtil.getHSSFWorkbookTime(fileNameTitle+time, title, values, null,insertTime);
            this.setResponseHeader(response, fileName);
            OutputStream os = response.getOutputStream();
            wb.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            /*return ApiUtil.putFailObj("导出失败");*/
        }
        return SUCCESS_TIP;
    }
    /**
     * 选择司机列表
@@ -626,7 +243,7 @@
        TReassign reassign = tReassignService.selectById(orderId);
        TOrderPrivateCar privateCar = itOrderPrivateCarService.selectById(reassign.getOrderId());
        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
        page.setRecords(tReassignService.getCanSelectPrivateCarDriverList(page,privateCar.getCompanyId(),name,phone, privateCar.getDriverId()));
        page.setRecords(tReassignService.getCanSelectPrivateCarDriverList(page,privateCar.getCompanyId(),name,phone));
        return super.packForBT(page);
    }
@@ -665,23 +282,7 @@
    /**
     * 选择司机列表
     */
    @RequestMapping(value = "/selectTaxiDriver/{orderId}")
    @ResponseBody
    public Object selectTaxiDriver(@PathVariable Integer orderId,
                                    String name,
                                    String phone) {
        TReassign reassign = tReassignService.selectById(orderId);
        TOrderTaxi tOrderTaxi = orderTaxiService.selectById(reassign.getOrderId());
        Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
        page.setRecords(tReassignService.getCanSelectTaxiCarDriverList(page,tOrderTaxi.getCompanyId(),name,phone,tOrderTaxi.getDriverId()));
        return super.packForBT(page);
    }
    /**
     * 操作快车改派管理
     * 操作专车改派管理
     * optType 1=拒绝 2=取消
     */
    @RequestMapping(value = "/opt")
@@ -697,6 +298,12 @@
            TOrderPrivateCar tOrderPrivateCar = itOrderPrivateCarService.selectById(tReassign.getOrderId());
            tOrderPrivateCar.setState(tOrderPrivateCar.getOldState());
            itOrderPrivateCarService.updateById(tOrderPrivateCar);
            //回退金额
            Map<String,String> map = new HashMap<>();
            map.put("reassignId", tReassignId.toString());
            String result = HttpRequestUtil.postRequest(PushURL.reassign_rollback_amount, map);
            System.out.println("专车拒绝改派回退金额:【orderId="+tOrderPrivateCar.getId().toString()+"】,调用接口:"+result);
        }else if (2 == optType){
            tReassign.setState(4);
            tReassignService.updateById(tReassign);
@@ -723,29 +330,19 @@
            orderCancel.setUserId(user.getId());
            orderCancelMapper.insert(orderCancel);
            //调用推送
            //回退金额
            Map<String,String> map = new HashMap<>();
            map.put("id", tOrderPrivateCar.getId().toString());
            map.put("orderType", "1");
            String result = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map);
            System.out.println("快车取消:【orderId="+tOrderPrivateCar.getId().toString()+"】,调用接口:"+result);
            map.put("reassignId", tReassignId.toString());
            String result = HttpRequestUtil.postRequest(PushURL.reassign_rollback_amount, map);
            System.out.println("专车取消回退金额:【orderId="+tOrderPrivateCar.getId().toString()+"】,调用接口:"+result);
            //调用推送
            Map<String,String> map1 = new HashMap<>();
            map1.put("id", tOrderPrivateCar.getId().toString());
            map1.put("orderType", "1");
            String result1 = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map1);
            System.out.println("专车取消:【orderId="+tOrderPrivateCar.getId().toString()+"】,调用接口:"+result1);
        }
        //返回驾驶员处罚金
        TDriver originalDriver = itDriverService.selectById(tReassign.getOriginalDriverId());
        //增加交易明细
        TPubTransactionDetails details = new TPubTransactionDetails();
        details.setUserId(originalDriver.getId());
        details.setInsertTime(new Date());
        details.setRemark("【快车改派】:改派失败或订单取消");
        details.setMoney(new BigDecimal(tReassign.getMoney()));
        details.setState(1);
        details.setType(1);
        details.setUserType(2);
        details.setOrderType(1);
        details.setOrderId(tReassign.getOrderId());
        itPubTransactionDetailsService.insert(details);
        return SUCCESS_TIP;
    }
@@ -772,6 +369,12 @@
                TOrderCrossCity tOrderCrossCity = itOrderCrossCityService.selectById(tReassign.getOrderId());
                tOrderCrossCity.setState(tOrderCrossCity.getOldState());
                itOrderCrossCityService.updateById(tOrderCrossCity);
                //回退金额
                Map<String,String> map = new HashMap<>();
                map.put("reassignId", tReassignId.toString());
                String result = HttpRequestUtil.postRequest(PushURL.reassign_rollback_amount, map);
                System.out.println("跨城取消回退金额:【orderId="+tOrderCrossCity.getId().toString()+"】,调用接口:"+result);
            }else if (2 == optType){
                tReassign.setState(4);
                tReassign.setReviewer(user.getId());
@@ -812,64 +415,26 @@
                    itDriverService.updateById(driver);
                }
                //调用推送
                //回退金额
                Map<String,String> map = new HashMap<>();
                map.put("id", orderCrossCity.getId().toString());
                map.put("orderType", "3");
                String result = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map);
                System.out.println("跨城出行取消:【orderId="+orderCrossCity.getId().toString()+"】,调用接口:"+result);
                map.put("reassignId", tReassignId.toString());
                String result = HttpRequestUtil.postRequest(PushURL.reassign_rollback_amount, map);
                System.out.println("跨城取消回退金额:【orderId="+orderCrossCity.getId().toString()+"】,调用接口:"+result);
//                Map<String,String> map2 = new HashMap<>();
//                map2.put("orderId", tReassign.getOrderId().toString());
//                map2.put("orderType", tReassign.getOrderType().toString());
//                String result2 = HttpRequestUtil.postRequest(PushURL.cancel_order_rollback_amount, map2);
//                System.out.println("取消订单回退金额:【orderId="+orderCrossCity.getId().toString()+"】,调用接口:"+result2);
                //已支付的情况下进行退款操作
                if(null != orderCrossCity.getPayType() && null != orderCrossCity.getPayMoney()){
                    if(orderCrossCity.getPayType() == 3){//余额支付
                        TUser tUser = userService.selectById(orderCrossCity.getUserId());
                        tUser.setBalance(tUser.getBalance().add(orderCrossCity.getPayMoney()));
                        userService.updateById(tUser);
                        //添加交易明细
                        transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", orderCrossCity.getPayMoney().doubleValue(), 1, 1, 1, 3, tReassign.getOrderId());
                    }else{
                        PaymentRecord query = paymentRecordService.query(1, null, null, tReassign.getOrderId(), 3, null, 2).get(0);
                        if(null == query){
                            return ResultUtil.error("订单还未进行支付");
                        }
                        Map<String, Object> merrefund = icbcPayUtil.merrefund(query.getCode(), "", query.getAmount(), tReassign.getOrderId() + "_3", orderCrossCity.getOrderNum());
                        if(Integer.valueOf(merrefund.get("code").toString()) == 0){
                            boolean b = true;
                            while (b){
                                Map<String, Object> refundqry = icbcPayUtil.refundqry("", query.getCode(), orderCrossCity.getOrderNum());
                                if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 0){//成功
                                    //添加交易明细
                                    transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", query.getAmount(), 1, 1, 1, 3, tReassign.getOrderId());
                                }
                                if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 1){//失败
                                    return ResultUtil.error("订单取消失败(退款不成功)");
                                }
                                if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 2){//未知
                                    return ResultUtil.error("退款返回未知异常");
                                }
                            }
                        }
                    }
                //调用推送
                Map<String,String> map3 = new HashMap<>();
                map3.put("id", orderCrossCity.getId().toString());
                map3.put("orderType", "3");
                String result1 = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map3);
                System.out.println("跨城出行取消:【orderId="+orderCrossCity.getId().toString()+"】,调用接口:"+result1);
                    //添加负的收入明细
                    List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("type", 2).eq("incomeId", tReassign.getOrderId()).eq("orderType", 3));
                    for(Income income : incomes){
                        if(income.getUserType() == 2){//处理司机的收入
                            TDriver driver = itDriverService.selectById(income.getObjectId());
                            driver.setBalance(driver.getBalance().subtract(new BigDecimal(income.getMoney())));
                            driver.setLaveBusinessMoney(new BigDecimal(driver.getLaveBusinessMoney()).subtract(new BigDecimal(income.getMoney())).doubleValue());
                            driver.setBusinessMoney(new BigDecimal(driver.getBusinessMoney()).subtract(new BigDecimal(income.getMoney())).doubleValue());
                            itDriverService.updateById(driver);
                        }
                        Income income1 = new Income();
                        BeanUtils.copyProperties(income, income1);
                        income1.setMoney(income.getMoney() * -1);
                        income1.setId(null);
                        income1.setInsertTime(new Date());
                        incomeService.insert(income1);
                    }
                }
                //添加取消记录
                OrderCancel orderCancel = new OrderCancel();
@@ -883,22 +448,6 @@
                orderCancel.setUserId(user.getId());
                orderCancelMapper.insert(orderCancel);
            }
            //返回驾驶员处罚金
            TDriver originalDriver = itDriverService.selectById(tReassign.getOriginalDriverId());
            //增加交易明细
            TPubTransactionDetails details = new TPubTransactionDetails();
            details.setUserId(originalDriver.getId());
            details.setInsertTime(new Date());
            details.setRemark("【跨城改派】:改派失败或订单取消");
            details.setMoney(new BigDecimal(tReassign.getMoney()));
            details.setState(1);
            details.setType(1);
            details.setUserType(2);
            details.setOrderType(3);
            details.setOrderId(tReassign.getOrderId());
            itPubTransactionDetailsService.insert(details);
        }catch (Exception e){
            e.printStackTrace();
        }
@@ -908,7 +457,7 @@
    /**
     * 操作小件改派管理
     * 操作专车改派管理
     * optType 1=拒绝 2=取消
     */
    @RequestMapping(value = "/optSmall")
@@ -925,6 +474,12 @@
                TOrderLogistics tOrderLogistics = orderLogisticsService.selectById(tReassign.getOrderId());
                tOrderLogistics.setState(tOrderLogistics.getOldState());
                orderLogisticsService.updateById(tOrderLogistics);
                //回退金额
                Map<String,String> map = new HashMap<>();
                map.put("reassignId", tReassignId.toString());
                String result = HttpRequestUtil.postRequest(PushURL.reassign_rollback_amount, map);
                System.out.println("小件物流取消回退金额:【orderId="+tOrderLogistics.getId().toString()+"】,调用接口:"+result);
            }else if (2 == optType){
                tReassign.setState(4);
                tReassignService.updateById(tReassign);
@@ -946,82 +501,25 @@
                orderCancel.setUserId(user.getId());
                orderCancelMapper.insert(orderCancel);
                //调用推送
                //回退金额
                Map<String,String> map = new HashMap<>();
                map.put("id", tOrderLogistics.getId().toString());
                map.put("orderType", tOrderLogistics.getType().toString());
                String result = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map);
                System.out.println("小件物流取消:【orderId="+tOrderLogistics.getId().toString()+"】,调用接口:"+result);
                map.put("reassignId", tReassignId.toString());
                String result = HttpRequestUtil.postRequest(PushURL.reassign_rollback_amount, map);
                System.out.println("小件物流取消回退金额:【orderId="+tOrderLogistics.getId().toString()+"】,调用接口:"+result);
                //已支付的情况下进行退款操作
                if(null != tOrderLogistics.getPayType() && null != tOrderLogistics.getPayMoney()) {
                    if (tOrderLogistics.getPayType() == 3) {//余额支付
                        TUser tUser = userService.selectById(tOrderLogistics.getUserId());
                        tUser.setBalance(tUser.getBalance().add(tOrderLogistics.getPayMoney()));
                        userService.updateById(tUser);
                    } else {
                        List<PaymentRecord> paymentRecords = paymentRecordService.query(1, null, null, tOrderLogistics.getId(), tOrderLogistics.getType(), null, 2);
                        if (paymentRecords.size() == 0) {
                            return ResultUtil.error("订单还未进行支付");
                        }
                        boolean b = false;
                        for(PaymentRecord query : paymentRecords){
                            Map<String, Object> merrefund = icbcPayUtil.merrefund(query.getCode(), "", query.getAmount(), tOrderLogistics.getId() + "_" + tOrderLogistics.getType(), tOrderLogistics.getOrderNum());
                            if (Integer.valueOf(merrefund.get("code").toString()) == 0) {
                                Map<String, Object> refundqry = icbcPayUtil.refundqry("", query.getCode(), tOrderLogistics.getOrderNum());
                                if (Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 0) {//成功
                                    b = true;
                                }
                                if (Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 1) {//失败
                                    return ResultUtil.error("订单取消失败(退款不成功)");
                                }
                                if (Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 2) {//未知
                                    return ResultUtil.error("退款返回未知异常");
                                }
                            }
                        }
                        if(b){
                            //添加交易明细
//                Map<String,String> map2 = new HashMap<>();
//                map2.put("orderId", tReassign.getOrderId().toString());
//                map2.put("orderType", tReassign.getOrderType().toString());
//                String result2 = HttpRequestUtil.postRequest(PushURL.cancel_order_rollback_amount, map2);
//                System.out.println("取消订单回退金额:【orderId="+tOrderLogistics.getId().toString()+"】,调用接口:"+result2);
                //调用推送
                Map<String, String> map3 = new HashMap<>();
                map3.put("id", tOrderLogistics.getId().toString());
                map3.put("orderType", tOrderLogistics.getType().toString());
                String result1 = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map3);
                System.out.println("小件物流取消:【orderId=" + tOrderLogistics.getId().toString() + "】,调用接口:" + result1);
                        }
                    }
                    transactionDetailsService.saveData(tOrderLogistics.getUserId(), "小件订单取消退款", tOrderLogistics.getPayMoney().doubleValue(), 1, 1, 1, 4, tOrderLogistics.getId());
                    //添加负的收入明细
                    List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("type", 2).eq("incomeId", tOrderLogistics.getId()).eq("orderType", tOrderLogistics.getType()));
                    for(Income income : incomes){
                        if(income.getUserType() == 2){//处理司机的收入
                            TDriver driver = itDriverService.selectById(income.getObjectId());
                            driver.setBalance(driver.getBalance().subtract(new BigDecimal(income.getMoney())));
                            driver.setLaveBusinessMoney(new BigDecimal(driver.getLaveBusinessMoney()).subtract(new BigDecimal(income.getMoney())).doubleValue());
                            driver.setBusinessMoney(new BigDecimal(driver.getBusinessMoney()).subtract(new BigDecimal(income.getMoney())).doubleValue());
                            itDriverService.updateById(driver);
                        }
                        Income income1 = new Income();
                        BeanUtils.copyProperties(income, income1);
                        income1.setMoney(income.getMoney() * -1);
                        income1.setId(null);
                        income1.setInsertTime(new Date());
                        incomeService.insert(income1);
                    }
                }
            }
            //返回驾驶员处罚金
            TDriver originalDriver = itDriverService.selectById(tReassign.getOriginalDriverId());
            //增加交易明细
            TPubTransactionDetails details = new TPubTransactionDetails();
            details.setUserId(originalDriver.getId());
            details.setInsertTime(new Date());
            details.setRemark("【小件物流】:改派失败或订单取消");
            details.setMoney(new BigDecimal(tReassign.getMoney()));
            details.setState(1);
            details.setType(1);
            details.setUserType(2);
            details.setOrderType(tReassign.getOrderType());
            details.setOrderId(tReassign.getOrderId());
            itPubTransactionDetailsService.insert(details);
        }catch (Exception e){
            e.printStackTrace();
        }
@@ -1030,78 +528,7 @@
    /**
     * 操作出租车改派管理
     * optType 1=拒绝 2=取消
     */
    @RequestMapping(value = "/optTaxi")
    @ResponseBody
    public Object optTaxi(@RequestParam Integer tReassignId,@RequestParam Integer optType) {
        ShiroUser user = ShiroKit.getUser();
        TReassign tReassign = tReassignService.selectById(tReassignId);
        if (1 == optType){
            tReassign.setState(5);
            tReassignService.updateById(tReassign);
            //还原订单状态
            TOrderTaxi tOrderTaxi = orderTaxiService.selectById(tReassign.getOrderId());
            tOrderTaxi.setState(tOrderTaxi.getOldState());
            orderTaxiService.updateById(tOrderTaxi);
        }else if (2 == optType){
            tReassign.setState(4);
            tReassignService.updateById(tReassign);
            //修改订单状态"已取消"
            TOrderTaxi tOrderTaxi = orderTaxiService.selectById(tReassign.getOrderId());
            tOrderTaxi.setState(10);
            orderTaxiService.updateById(tOrderTaxi);
            //修改司机状态"空闲"
            TDriver driver = itDriverService.selectById(tReassign.getOriginalDriverId());
            driver.setState(2);
            itDriverService.updateById(driver);
            //添加取消记录
            OrderCancel orderCancel = new OrderCancel();
            orderCancel.setOrderId(tReassign.getOrderId());
            orderCancel.setOrderType(tReassign.getOrderType());
            orderCancel.setReason("调度端取消订单");
            orderCancel.setRemark("调度“" + user.getName() + "-" + user.getId() + "”执行取消操作");
            orderCancel.setState(2);
            orderCancel.setInsertTime(new Date());
            orderCancel.setUserType(3);
            orderCancel.setUserId(user.getId());
            orderCancelMapper.insert(orderCancel);
            //调用推送
            Map<String,String> map = new HashMap<>();
            map.put("id", tOrderTaxi.getId().toString());
            map.put("orderType", "2");
            String result = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map);
            System.out.println("出租车取消:【orderId="+tOrderTaxi.getId().toString()+"】,调用接口:"+result);
        }
        //返回驾驶员处罚金
        TDriver originalDriver = itDriverService.selectById(tReassign.getOriginalDriverId());
        //增加交易明细
        TPubTransactionDetails details = new TPubTransactionDetails();
        details.setUserId(originalDriver.getId());
        details.setInsertTime(new Date());
        details.setRemark("【出租车改派】:改派失败或订单取消");
        details.setMoney(new BigDecimal(tReassign.getMoney()));
        details.setState(1);
        details.setType(1);
        details.setUserType(2);
        details.setOrderType(2);
        details.setOrderId(tReassign.getOrderId());
        itPubTransactionDetailsService.insert(details);
        return SUCCESS_TIP;
    }
    /**
     * 快车订单改派司机
     * 专车订单改派司机
     */
    @RequestMapping(value = "/selectDriver")
    @ResponseBody
@@ -1120,13 +547,13 @@
        nowDriver.setState(3);
        itDriverService.updateById(nowDriver);
        //修改快车订单
        //修改专车订单
        tOrderPrivateCar.setState(tOrderPrivateCar.getOldState());
        tOrderPrivateCar.setDriverId(driverId);
        tOrderPrivateCar.setCarId(nowDriver.getCarId());
        itOrderPrivateCarService.updateById(tOrderPrivateCar);
        //修改快车改派订单
        //修改专车改派订单
        tReassign.setNowDriverId(driverId);
        tReassign.setNowCarId(nowDriver.getCarId());
        tReassign.setState(3);
@@ -1138,7 +565,7 @@
        map.put("orderId", tOrderPrivateCar.getId().toString());
        map.put("orderType", "1");
        String result = HttpRequestUtil.postRequest(PushURL.order_push_url, map);
        System.out.println("快车改派:【orderId="+tOrderPrivateCar.getId().toString()+"】,调用接口:"+result);
        System.out.println("专车改派:【orderId="+tOrderPrivateCar.getId().toString()+"】,调用接口:"+result);
        return SUCCESS_TIP;
    }
@@ -1222,7 +649,7 @@
        }
        itOrderCrossCityService.updateAllColumnById(tOrderCrossCity);
        //修改快车改派订单
        //修改专车改派订单
        tReassign.setNowDriverId(driverId);
        tReassign.setNowCarId(driver.getCarId());
        tReassign.setState(3);
@@ -1258,7 +685,7 @@
    /**
     * 小件订单改派司机
     * 专车订单改派司机
     */
    @RequestMapping(value = "/selectSmallDriver")
    @ResponseBody
@@ -1268,7 +695,7 @@
        TOrderLogistics tOrderLogistics = orderLogisticsService.selectById(tReassign.getOrderId());
        TDriver nowDriver = itDriverService.selectById(driverId);
        //修改快车订单
        //修改专车订单
        tOrderLogistics.setState(tOrderLogistics.getOldState());
        tOrderLogistics.setDriverId(driverId);
        tOrderLogistics.setCarId(nowDriver.getCarId());
@@ -1305,64 +732,5 @@
        String result = HttpRequestUtil.postRequest(PushURL.order_push_url, map);
        System.out.println("小件物流改派:【orderId="+tOrderLogistics.getId().toString()+"】,调用接口:"+result);
        return SUCCESS_TIP;
    }
    /**
     * 出租车订单改派司机
     */
    @RequestMapping(value = "/selectTaxiDriver")
    @ResponseBody
    public Object selectTaxiDriver(@RequestParam Integer orderId,@RequestParam Integer driverId) {
        //修改订单
        TReassign tReassign = tReassignService.selectById(orderId);
        TOrderTaxi tOrderTaxi = orderTaxiService.selectById(tReassign.getOrderId());
        //修改之前司机状态 -- 空闲
        TDriver oldDriver = itDriverService.selectById(tReassign.getOriginalDriverId());
        oldDriver.setState(2);
        itDriverService.updateById(oldDriver);
        //查找司机对象
        TDriver nowDriver = itDriverService.selectById(driverId);
        nowDriver.setState(3);
        itDriverService.updateById(nowDriver);
        //修改快车订单
        tOrderTaxi.setState(tOrderTaxi.getOldState());
        tOrderTaxi.setDriverId(driverId);
        tOrderTaxi.setCarId(nowDriver.getCarId());
        orderTaxiService.updateById(tOrderTaxi);
        //修改快车改派订单
        tReassign.setNowDriverId(driverId);
        tReassign.setNowCarId(nowDriver.getCarId());
        tReassign.setState(3);
        tReassign.setCompleteTime(new Date());
        tReassignService.updateById(tReassign);
        //增加推送
        Map<String,String> map = new HashMap<>();
        map.put("orderId", tOrderTaxi.getId().toString());
        map.put("orderType", "2");
        String result = HttpRequestUtil.postRequest(PushURL.order_push_url, map);
        System.out.println("出租车改派:【orderId="+tOrderTaxi.getId().toString()+"】,调用接口:"+result);
        return SUCCESS_TIP;
    }
    /**
     * 设置文件响应头
     * @param response
     * @param fileName
     */
    private void setResponseHeader(HttpServletResponse response, String fileName) {
        try {
            response.setContentType("application/octet-stream;charset=UTF-8");
            response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(),"iso-8859-1"));
            response.addHeader("Pargam", "no-cache");
            response.addHeader("Cache-Control", "no-cache");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}