From a4fdb7922a4a05a4f735f77c3f7b9c20c75c8d2f Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期四, 16 五月 2024 19:18:55 +0800 Subject: [PATCH] 接送机,录音修改,改派订单,接送机订单,人脸识别异常记录部分 --- ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriver.java | 39 + ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderTransferMapper.java | 26 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverFacialFail.java | 128 ++++ ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderTransferController.java | 229 +++++++ ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar_orderDetail.html | 11 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer_trajectory.html | 52 + ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TDriverFacialFailMapper.java | 22 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer_add.html | 89 ++ ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_detail.html | 12 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer.html | 101 +++ ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTransfer/tOrderTransfer.js | 379 +++++++++++ ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderTransferService.java | 30 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar.html | 12 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java | 8 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TDriverFacialFailMapper.xml | 21 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCrossCity.java | 22 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverFacialFailServiceImpl.java | 20 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer_orderDetail.html | 136 ++++ ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTransferServiceImpl.java | 12 ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTransfer/tOrderTransfer_info.js | 248 +++++++ ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderTransferMapper.xml | 88 ++ ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCharteredCar.java | 7 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverFacialFailService.java | 16 ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderTransfer.java | 26 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail.html | 45 + ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCarModel/tCarModel.html | 10 ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail_add.html | 38 + ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail_edit.html | 39 + ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPrivateCar.java | 25 29 files changed, 1,870 insertions(+), 21 deletions(-) diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderTransferController.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderTransferController.java new file mode 100644 index 0000000..cec1a7e --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderTransferController.java @@ -0,0 +1,229 @@ +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.SinataUtil; +import com.stylefeng.guns.core.util.ToolUtil; +import com.stylefeng.guns.modular.system.dao.OrderCancelMapper; +import com.stylefeng.guns.modular.system.model.*; +import com.stylefeng.guns.modular.system.service.ITDriverService; +import com.stylefeng.guns.modular.system.service.ITOrderPositionService; +import com.stylefeng.guns.modular.system.service.ITOrderTransferService; +import com.stylefeng.guns.modular.system.service.ITServerCarmodelService; +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 java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStreamReader; +import java.util.*; + +/** + * 接送机订单控制器 + * + * @author fengshuonan + * @Date 2020-09-02 17:28:59 + */ +@Controller +@RequestMapping("/tOrderTransfer") +public class TOrderTransferController extends BaseController { + + private String PREFIX = "/system/tOrderTransfer/"; + + @Autowired + private ITOrderTransferService tOrderTransferService; + + @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("") + public String index(Model model) { + //服务接送机车型 + List<TServerCarmodel> carmodelList = tServerCarmodelService.selectList(new EntityWrapper<TServerCarmodel>().eq("type", 1).eq("state", 1)); + model.addAttribute("carmodelList",carmodelList); + return PREFIX + "tOrderTransfer.html"; + } + + /** + * 跳转到修改接送机订单 + */ + @RequestMapping("/tOrderTransfer_orderDetail/{tOrderTransferId}") + public String tOrderTransferUpdate(@PathVariable Integer tOrderTransferId, Model model) { + Map<String, Object> item = tOrderTransferService.getTransferOrderDetailById(tOrderTransferId); + model.addAttribute("item",item); + return PREFIX + "tOrderTransfer_orderDetail.html"; + } + + /** + * 跳转到出租车订单轨迹页面 + */ + @RequestMapping("/tOrderTransfer_trajectory/{tOrderTransferId}") + public String tOrderTaxi_trajectory(@PathVariable Integer tOrderTransferId, Model model) { + model.addAttribute("tOrderTransferId",tOrderTransferId); + return PREFIX + "tOrderTransfer_trajectory.html"; + } + + /** + * 获取接送机订单列表 + */ + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String insertTime, + String orderNum, + Integer orderSource, + String userName, + String userPhone, + String passengers, + String passengersPhone, + Integer serverCarModelId, + String driver, + 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(tOrderTransferService.getTransferOrderList(page,beginTime,endTime,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),orderNum,orderSource,userName,userPhone,passengers,passengersPhone,serverCarModelId,driver,state)); + 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; + } + + /** + * 取消接送机订单 + */ + @RequestMapping(value = "/cancel") + @ResponseBody + public Object cancel(@RequestParam Integer tOrderTransferId) { + TOrderTransfer tOrderTransfer = tOrderTransferService.selectById(tOrderTransferId); + + //修改之前司机状态 -- 空闲 + if(null != tOrderTransfer.getDriverId()){ + TDriver driver = tDriverService.selectById(tOrderTransfer.getDriverId()); + driver.setState(2); + tDriverService.updateById(driver); + } + + tOrderTransfer.setState(10); + tOrderTransferService.updateById(tOrderTransfer); + + OrderCancel orderCancel = new OrderCancel(); + orderCancel.setOrderId(tOrderTransferId); + orderCancel.setOrderType(1); + orderCancel.setReason("平台取消订单"); + orderCancel.setRemark("平台取消订单"); + orderCancel.setUserType(2); + orderCancel.setState(2); + orderCancel.setInsertTime(new Date()); + orderCancelMapper.insert(orderCancel); + + //增加推送 + Map<String,String> map = new HashMap<>(); + map.put("id", tOrderTransfer.getId().toString()); + map.put("orderType", "1"); + String result = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map); + System.out.println("接送机取消:【orderId="+tOrderTransfer.getId().toString()+"】,调用接口:"+result); + + new Thread(new Runnable() { + @Override + public void run() { + if(pushMinistryOfTransport){//上传数据 + pushMinistryOfTransportUtil.orderCancel(tOrderTransferId); + } + } + }).start(); + + return SUCCESS_TIP; + } + + /** + * 删除接送机订单 + */ + @RequestMapping(value = "/delete") + @ResponseBody + public Object delete(@RequestParam Integer tOrderTransferId) { + TOrderTransfer tOrderTransfer = tOrderTransferService.selectById(tOrderTransferId); + tOrderTransfer.setIsDelete(2); + tOrderTransferService.updateById(tOrderTransfer); + return SUCCESS_TIP; + } +} diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java index b3f1d26..6a60dbb 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java @@ -125,10 +125,10 @@ loginFailures.put(username, f); } - if(f > 5 && (System.currentTimeMillis() - t) <= (30 * 60 * 1000)){ - model.addAttribute("tips", "登录次数过多,请等30分钟再试!"); - return "/login.html"; - } +// if(f > 5 && (System.currentTimeMillis() - t) <= (30 * 60 * 1000)){ +// model.addAttribute("tips", "登录次数过多,请等30分钟再试!"); +// return "/login.html"; +// } //验证验证码是否正确 if (KaptchaUtil.getKaptchaOnOff()) { String kaptcha = super.getPara("kaptcha").trim(); diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TDriverFacialFailMapper.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TDriverFacialFailMapper.java new file mode 100644 index 0000000..b458103 --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TDriverFacialFailMapper.java @@ -0,0 +1,22 @@ +package com.stylefeng.guns.modular.system.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.stylefeng.guns.modular.system.model.TCarModel; +import com.stylefeng.guns.modular.system.model.TDriverFacialFail; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * <p> + * 人脸识别失败记录表 Mapper 接口 + * </p> + * + * @author 吕雪 + * @since 2020-06-05 + */ +public interface TDriverFacialFailMapper extends BaseMapper<TDriverFacialFail> { + +} diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderTransferMapper.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderTransferMapper.java index c60ede1..7ad1e85 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderTransferMapper.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderTransferMapper.java @@ -11,12 +11,36 @@ /** * <p> - * 订单-专车 Mapper 接口 + * 订单-接送机 Mapper 接口 * </p> * * @author 吕雪 * @since 2020-09-02 */ public interface TOrderTransferMapper extends BaseMapper<TOrderTransfer> { + /** + * 根据条件查询专车订单列表 + * @return + */ + List<Map<String,Object>> getTransferOrderList(@Param("page") Page<Map<String, Object>> page, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("roleType") Integer roleType, + @Param("nowUserId") Integer nowUserId, + @Param("orderNum") String orderNum, + @Param("orderSource") Integer orderSource, + @Param("userName") String userName, + @Param("userPhone") String userPhone, + @Param("passengers") String passengers, + @Param("passengersPhone") String passengersPhone, + @Param("serverCarModelId") Integer serverCarModelId, + @Param("driver") String driver, + @Param("state") Integer state); + /** + * 根据专车订单ID获取专车订单详情 + * @param orderId + * @return + */ + Map<String,Object> getTransferOrderDetailById(@Param("orderId") Integer orderId); } diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TDriverFacialFailMapper.xml b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TDriverFacialFailMapper.xml new file mode 100644 index 0000000..74f84f9 --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TDriverFacialFailMapper.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.stylefeng.guns.modular.system.dao.TDriverFacialFailMapper"> + + <!-- 通用查询映射结果 --> + <resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.TDriverFacialFail"> + <id column="id" property="id" /> + <result column="driverId" property="driverId" /> + <result column="city" property="city" /> + <result column="cityCode" property="cityCode" /> + <result column="facialPicture" property="facialPicture" /> + <result column="createTime" property="createTime" /> + <result column="isDelete" property="isDelete" /> + </resultMap> + + <!-- 通用查询结果列 --> + <sql id="Base_Column_List"> + id, driverId, city, cityCode, facialPicture, createTime, isDelete + </sql> + +</mapper> diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderTransferMapper.xml b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderTransferMapper.xml index 53d9dc2..0b2b537 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderTransferMapper.xml +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderTransferMapper.xml @@ -74,6 +74,94 @@ <sql id="Base_Column_List"> id, type, userId, driverId, carId, orderNum, placementLon, placementLat, placementAddress, startLon, startLat, endLon, startAddress, endLat, endAddress, boardingLon, boardingLat, boardingAddress, boardingTime, getoffLon, getoffLat, getoffAddress, getoffTime, mileage, payManner, payType, orderMoney, startMoney, mileageMoney, durationMoney, longDistanceMoney, parkMoney, roadTollMoney, redPacketMoney, couponMoney, redPacketId, couponId, discount, discountMoney, activityId, companyId, payMoney, substitute, passengers, passengersPhone, state, insertTime, travelTime, snatchOrderTime, setOutTime, arriveTime, startServiceTime, endServiceTime, orderType, orderSource, invoiceId, isReassign, reassignNotice, trackId, isDelete, oldState, telX, bindId, serverCarModelId </sql> + <!--根据条件查询专车订单列表--> + <select id="getTransferOrderList" resultType="map" parameterType="com.baomidou.mybatisplus.plugins.Page"> + SELECT * FROM (SELECT ui.nickName as userName,ui.phone as userPhone,CONCAT(di.`name`,'-',di.phone) as driver,CONCAT(cb.`name`,'-',ci.carLicensePlate) as car, + sc.`name` as serverCarModel,ot.* FROM t_order_transfer as ot + LEFT JOIN t_user as ui on ui.id = ot.userId + LEFT JOIN t_driver as di on di.id = ot.driverId + LEFT JOIN t_car as ci on ci.id= ot.carId + LEFT JOIN t_car_brand as cb on cb.id = ci.carBrandId + LEFT JOIN t_server_carmodel as sc on sc.id = ot.serverCarModelId + ) as o + <where> + o.isDelete = 1 and o.type = 7 + <if test="beginTime != null and beginTime != '' and endTime != null and endTime != ''"> + AND (o.insertTime between CONCAT(#{beginTime},' 00:00:00') and CONCAT(#{endTime},' 23:59:59')) + </if> + <if test="orderNum != null and orderNum != ''"> + and o.orderNum LIKE CONCAT('%',#{orderNum},'%') + </if> + <if test="orderSource != null and orderSource != ''"> + and o.orderSource = #{orderSource} + </if> + <if test="userName != null and userName != ''"> + and o.userName LIKE CONCAT('%',#{userName},'%') + </if> + <if test="userPhone != null and userPhone != ''"> + and o.userPhone LIKE CONCAT('%',#{userPhone},'%') + </if> + <if test="passengers != null and passengers != ''"> + and o.passengers LIKE CONCAT('%',#{passengers},'%') + </if> + <if test="passengersPhone != null and passengersPhone != ''"> + and o.passengersPhone LIKE CONCAT('%',#{passengersPhone},'%') + </if> + <if test="serverCarModelId != null and serverCarModelId != ''"> + and o.serverCarModelId = #{serverCarModelId} + </if> + <if test="driver != null and driver != ''"> + and o.driver LIKE CONCAT('%',#{driver},'%') + </if> + <if test="state != null and state != ''"> + and o.state = #{state} + </if> + <if test="roleType != null and roleType != '' and roleType == 2"> + and (o.companyId = #{nowUserId} or FIND_IN_SET(o.companyId,(SELECT GROUP_CONCAT(id) as ids FROM t_company where superiorId = #{nowUserId} GROUP BY superiorId))) + </if> + <if test="roleType != null and roleType != '' and roleType == 3"> + and o.companyId = #{nowUserId} + </if> + </where> + order by o.id desc + </select> + <!--根据专车订单ID获取专车订单详情--> + <select id="getTransferOrderDetailById" resultType="map"> + SELECT + DATE_FORMAT(ot.insertTime,'%Y-%m-%d %H:%i') as insertTimeStr, + DATE_FORMAT(ot.travelTime,'%Y-%m-%d %H:%i') as travelTimeStr, + DATE_FORMAT(ot.boardingTime,'%Y-%m-%d %H:%i') as boardingTimeStr, + DATE_FORMAT(ot.getoffTime,'%Y-%m-%d %H:%i') as getoffTimeStr, + case when ot.orderSource = 1 then 'APP下单' + when ot.orderSource = 2 then '扫码下单' + when ot.orderSource = 3 then '小程序下单' + when ot.orderSource = 4 then '司机下单' + when ot.orderSource = 5 then '调度下单' else '' end orderSourceStr, + ui.nickName as userName,ui.phone as userPhone, + case when ot.payType = 1 then '微信' + when ot.payType = 2 then '支付宝' + when ot.payType = 3 then '余额' else '' end as payTypeStr, + sc.`name` as serverCarModel, + case when income1.type = 1 then income1.money else 0 end as platIncome, + case when income1.type = 2 then income1.money else 0 end as companyIncome, + case when income1.type = 3 then income1.money else 0 end as franchiseeIncome, + IFNULL(income2.money,0) as driverIncome, + CONCAT(di.`name`,'-',di.phone) as driver, + CONCAT(cb.`name`,'-',ci.carLicensePlate) as car, + cc.`name` as companyName,ot.* + FROM t_order_transfer as ot + LEFT JOIN t_user as ui on ui.id = ot.userId + LEFT JOIN t_driver as di on di.id = ot.driverId + LEFT JOIN t_car as ci on ci.id= ot.carId + LEFT JOIN t_car_brand as cb on cb.id = ci.carBrandId + LEFT JOIN t_company as cc on cc.id = ot.companyId + LEFT JOIN t_server_carmodel as sc on sc.id = ot.serverCarModelId + LEFT JOIN (SELECT ii.money,ii.incomeId,cc.type FROM t_income as ii + LEFT JOIN t_company as cc on ii.objectId = cc.id + where ii.userType = 1 and ii.type = 2 and ii.orderType = 7 GROUP BY ii.incomeId) as income1 on income1.incomeId = ot.id + LEFT JOIN (SELECT * FROM t_income where userType = 2 and type = 2 and orderType = 7 GROUP BY incomeId) as income2 on income2.incomeId = ot.id + where ot.id = #{orderId} + </select> </mapper> diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriver.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriver.java index 211bdef..7b95fcf 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriver.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriver.java @@ -277,6 +277,45 @@ */ private Integer addObjectId; + /** + * 人脸识别失败次数 5次进行下线 + */ + private Integer failCount; + + /** + * 是否需要进行人脸识别 1=是 0=否 + */ + private Integer isNeedFacial; + + /** + * 上次人脸识别时间 + */ + private Date lastFacialTime; + + public Integer getFailCount() { + return failCount; + } + + public void setFailCount(Integer failCount) { + this.failCount = failCount; + } + + public Integer getIsNeedFacial() { + return isNeedFacial; + } + + public void setIsNeedFacial(Integer isNeedFacial) { + this.isNeedFacial = isNeedFacial; + } + + public Date getLastFacialTime() { + return lastFacialTime; + } + + public void setLastFacialTime(Date lastFacialTime) { + this.lastFacialTime = lastFacialTime; + } + public BigDecimal getBalance() { return balance; } diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverFacialFail.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverFacialFail.java new file mode 100644 index 0000000..43db96f --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TDriverFacialFail.java @@ -0,0 +1,128 @@ +package com.stylefeng.guns.modular.system.model; + +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; + +import java.io.Serializable; +import java.util.Date; + +/** + * <p> + * 司机人脸识别失败记录 + * </p> + * + * @author 吕雪 + * @since 2020-06-05 + */ +@TableName("t_driver_facial_fail") +public class TDriverFacialFail extends Model<TDriverFacialFail> { + + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 司机id + */ + private Integer driverId; + + /** + * 所属城市 + */ + private String city; + /** + * 城市code + */ + private String cityCode; + /** + * 识别失败图片 + */ + private String facialPicture; + /** + * 识别时间 + */ + private String createTime; + /** + * 是否删除 1=否 2=是 + */ + private String isDelete; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getDriverId() { + return driverId; + } + + public void setDriverId(Integer driverId) { + this.driverId = driverId; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getCityCode() { + return cityCode; + } + + public void setCityCode(String cityCode) { + this.cityCode = cityCode; + } + + public String getFacialPicture() { + return facialPicture; + } + + public void setFacialPicture(String facialPicture) { + this.facialPicture = facialPicture; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getIsDelete() { + return isDelete; + } + + public void setIsDelete(String isDelete) { + this.isDelete = isDelete; + } + + @Override + public String toString() { + return "TDriverFacialFail{" + + "id=" + id + + ", driverId=" + driverId + + ", city='" + city + '\'' + + ", cityCode='" + cityCode + '\'' + + ", facialPicture='" + facialPicture + '\'' + + ", createTime='" + createTime + '\'' + + ", isDelete='" + isDelete + '\'' + + '}'; + } + + @Override + protected Serializable pkVal() { + return this.id; + } +} diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCharteredCar.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCharteredCar.java index 2ff78a0..28d2628 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCharteredCar.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCharteredCar.java @@ -1,5 +1,6 @@ package com.stylefeng.guns.modular.system.model; +import java.math.BigDecimal; import java.util.Date; import com.baomidou.mybatisplus.activerecord.Model; import com.baomidou.mybatisplus.annotations.TableName; @@ -38,7 +39,7 @@ /** * 用车时长(天) */ - private Integer carTime; + private BigDecimal carTime; /** * 服务车型id */ @@ -117,11 +118,11 @@ this.traveltime = traveltime; } - public Integer getCarTime() { + public BigDecimal getCarTime() { return carTime; } - public void setCarTime(Integer carTime) { + public void setCarTime(BigDecimal carTime) { this.carTime = carTime; } diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCrossCity.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCrossCity.java index 6780793..06a0544 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCrossCity.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderCrossCity.java @@ -266,7 +266,29 @@ * 移动小号绑定关系id */ private String bindId; + /** + * 行程录音 + */ + private String routeRecord; + /** + * 录音时间 + */ + private Date recordTime; + public Date getRecordTime() { + return recordTime; + } + + public void setRecordTime(Date recordTime) { + this.recordTime = recordTime; + } + public String getRouteRecord() { + return routeRecord; + } + + public void setRouteRecord(String routeRecord) { + this.routeRecord = routeRecord; + } public Integer getOldState() { return oldState; } diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPrivateCar.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPrivateCar.java index 205edda..81a0222 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPrivateCar.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderPrivateCar.java @@ -279,6 +279,29 @@ */ private Integer serverCarModelId; + /** + * 行程录音 + */ + private String routeRecord; + /** + * 录音时间 + */ + private Date recordTime; + + public Date getRecordTime() { + return recordTime; + } + + public void setRecordTime(Date recordTime) { + this.recordTime = recordTime; + } + public String getRouteRecord() { + return routeRecord; + } + + public void setRouteRecord(String routeRecord) { + this.routeRecord = routeRecord; + } public Integer getId() { return id; @@ -799,7 +822,7 @@ @Override public String toString() { - return "TOrderPrivateCar{" + + return "TOrderTransfer{" + "id=" + id + ", type=" + type + ", userId=" + userId + diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderTransfer.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderTransfer.java index eea4f1f..0c052e0 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderTransfer.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/TOrderTransfer.java @@ -279,7 +279,31 @@ * 专车车型ID 关联t_server_carmodel表 */ private Integer serverCarModelId; + /** + * 行程录音 + */ + private String routeRecord; + /** + * 录音时间 + */ + private Date recordTime; + + public Date getRecordTime() { + return recordTime; + } + + public void setRecordTime(Date recordTime) { + this.recordTime = recordTime; + } + + public String getRouteRecord() { + return routeRecord; + } + + public void setRouteRecord(String routeRecord) { + this.routeRecord = routeRecord; + } public Integer getId() { return id; @@ -800,7 +824,7 @@ @Override public String toString() { - return "TOrderPrivateCar{" + + return "TOrderTransfer{" + "id=" + id + ", type=" + type + ", userId=" + userId + diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverFacialFailService.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverFacialFailService.java new file mode 100644 index 0000000..871eaa4 --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverFacialFailService.java @@ -0,0 +1,16 @@ +package com.stylefeng.guns.modular.system.service; + +import com.baomidou.mybatisplus.service.IService; +import com.stylefeng.guns.modular.system.model.TDriverFacialFail; + +/** + * <p> + * 人脸识别失败记录表 服务类 + * </p> + * + * @author 吕雪 + * @since 2020-06-05 + */ +public interface ITDriverFacialFailService extends IService<TDriverFacialFail> { + +} diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderTransferService.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderTransferService.java index d7d9d13..b5b7759 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderTransferService.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderTransferService.java @@ -1,8 +1,13 @@ package com.stylefeng.guns.modular.system.service; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.IService; import com.stylefeng.guns.modular.system.model.TOrderPrivateCar; import com.stylefeng.guns.modular.system.model.TOrderTransfer; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; /** * <p> @@ -14,4 +19,29 @@ */ public interface ITOrderTransferService extends IService<TOrderTransfer> { + /** + * 根据条件查询专车订单列表 + * @return + */ + List<Map<String,Object>> getTransferOrderList(@Param("page") Page<Map<String, Object>> page, + @Param("beginTime") String beginTime, + @Param("endTime") String endTime, + @Param("roleType") Integer roleType, + @Param("nowUserId") Integer nowUserId, + @Param("orderNum") String orderNum, + @Param("orderSource") Integer orderSource, + @Param("userName") String userName, + @Param("userPhone") String userPhone, + @Param("passengers") String passengers, + @Param("passengersPhone") String passengersPhone, + @Param("serverCarModelId") Integer serverCarModelId, + @Param("driver") String driver, + @Param("state") Integer state); + + /** + * 根据专车订单ID获取专车订单详情 + * @param orderId + * @return + */ + Map<String,Object> getTransferOrderDetailById(@Param("orderId") Integer orderId); } diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverFacialFailServiceImpl.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverFacialFailServiceImpl.java new file mode 100644 index 0000000..37710c4 --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverFacialFailServiceImpl.java @@ -0,0 +1,20 @@ +package com.stylefeng.guns.modular.system.service.impl; + +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.stylefeng.guns.modular.system.dao.TDriverFacialFailMapper; +import com.stylefeng.guns.modular.system.model.TDriverFacialFail; +import com.stylefeng.guns.modular.system.service.ITDriverFacialFailService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 人脸识别失败记录表 服务实现类 + * </p> + * + * @author 吕雪 + * @since 2020-06-05 + */ +@Service +public class TDriverFacialFailServiceImpl extends ServiceImpl<TDriverFacialFailMapper, TDriverFacialFail> implements ITDriverFacialFailService { + +} diff --git a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTransferServiceImpl.java b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTransferServiceImpl.java index 95208cc..d9e4ec5 100644 --- a/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTransferServiceImpl.java +++ b/ManagementNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderTransferServiceImpl.java @@ -1,10 +1,14 @@ package com.stylefeng.guns.modular.system.service.impl; +import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.stylefeng.guns.modular.system.dao.TOrderTransferMapper; import com.stylefeng.guns.modular.system.model.TOrderTransfer; import com.stylefeng.guns.modular.system.service.ITOrderTransferService; import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; /** * <p> @@ -16,5 +20,13 @@ */ @Service public class TOrderTransferServiceImpl extends ServiceImpl<TOrderTransferMapper, TOrderTransfer> implements ITOrderTransferService { + @Override + public List<Map<String, Object>> getTransferOrderList(Page<Map<String, Object>> page, String beginTime, String endTime, Integer roleType, Integer nowUserId, String orderNum, Integer orderSource, String userName, String userPhone, String passengers, String passengersPhone, Integer serverCarModelId, String driver, Integer state) { + return this.baseMapper.getTransferOrderList(page, beginTime, endTime, roleType, nowUserId, orderNum, orderSource, userName, userPhone, passengers, passengersPhone, serverCarModelId, driver, state); + } + @Override + public Map<String, Object> getTransferOrderDetailById(Integer orderId) { + return this.baseMapper.getTransferOrderDetailById(orderId); + } } diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCarModel/tCarModel.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCarModel/tCarModel.html index 5baa5d7..4158d58 100644 --- a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCarModel/tCarModel.html +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tCarModel/tCarModel.html @@ -16,19 +16,19 @@ <#NameCon id="name" name="名称" /> </div> <div class="col-sm-3"> - <#button name="搜索" icon="fa-search" clickFun="TCharteredService.search()"/> - <#button name="重置" icon="fa-trash" clickFun="TCharteredService.resetSearch()" space="true"/> + <#button name="搜索" icon="fa-search" clickFun="TCarModel.search()"/> + <#button name="重置" icon="fa-trash" clickFun="TCarModel.resetSearch()" space="true"/> </div> </div> <div class="hidden-xs" id="TCarModelTableToolbar" role="group"> @if(shiro.hasPermission("/tCarModel/add")){ - <#button name="添加" icon="fa-plus" clickFun="TCharteredService.openAddTCarModel()"/> + <#button name="添加" icon="fa-plus" clickFun="TCarModel.openAddTCarModel()"/> @} @if(shiro.hasPermission("/tCarModel/update")){ - <#button name="编辑" icon="fa-edit" clickFun="TCharteredService.openTCarModelDetail()" space="true"/> + <#button name="编辑" icon="fa-edit" clickFun="TCarModel.openTCarModelDetail()" space="true"/> @} @if(shiro.hasPermission("/tCarModel/delete")){ - <#button name="删除" icon="fa-remove" clickFun="TCharteredService.delete()" space="true"/> + <#button name="删除" icon="fa-remove" clickFun="TCarModel.delete()" space="true"/> @} </div> <#table id="TCarModelTable"/> diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail.html new file mode 100644 index 0000000..1030241 --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail.html @@ -0,0 +1,45 @@ +@layout("/common/_container.html"){ +<div class="row"> + <div class="col-sm-12"> + <div class="ibox float-e-margins"> + <div class="ibox-title"> + <h5>车辆类型管理</h5> + </div> + <div class="ibox-content"> + <div class="row row-lg"> + <div class="col-sm-12"> + <div class="row"> + <div class="col-sm-3"> + <#TimeCon id="createTime" name="添加时间" isTime="false"/> + </div> + <div class="col-sm-3"> + <#NameCon id="phone" name="手机号"/> + </div> + <div class="col-sm-3"> + <#NameCon id="name" name="名称" /> + </div> + <div class="col-sm-3"> + <#button name="搜索" icon="fa-search" clickFun="TDriverFacialFail.search()"/> + <#button name="重置" icon="fa-trash" clickFun="TDriverFacialFail.resetSearch()" space="true"/> + </div> + </div> + <div class="hidden-xs" id="TDriverFacialFailTableToolbar" role="group"> + @if(shiro.hasPermission("/tDriverFacialFail/deleteBatch")){ + <#button name="批量删除" icon="fa-remove" clickFun="TDriverFacialFail.deleteBatch()" space="true"/> + @} + </div> + <#table id="TDriverFacialFailTable"/> + </div> + </div> + </div> + </div> + </div> +</div> +<script src="${ctxPath}/static/modular/system/tDriverFacialFail/tDriverFacialFail.js"></script> +<script> + laydate.render({ + elem: '#createTime' + ,range: true + }); +</script> +@} diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail_add.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail_add.html new file mode 100644 index 0000000..5866855 --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail_add.html @@ -0,0 +1,38 @@ +@layout("/common/_container.html"){ +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="form-horizontal" id="driverFacialFailInfoForm"> + <div class="row"> + <div class="col-sm-11"> + <#input id="name" name="类型名称" /> + <#select id="seat" name="座位数:"> + <option value="5">5座</option> + <option value="7">7座</option> + </#select> + <#select id="brandId" name="所属车辆品牌:" > + <option value="">选择所属车辆品牌</option> + @for(obj in brandList){ + <option value="${obj.id}">${obj.name}</option> + @} + </#select> + <div class="form-group"> + <label class="col-sm-3 control-label">备注:</label> + <div class="col-sm-9"> + <textarea type="text/plain" class="form-control" name="remark" id="remark" style="width:100%;height:150px;"></textarea> + </div> + </div> + </div> + </div> + + <div class="row btn-group-m-t"> + <div class="col-sm-10 col-sm-offset-5"> + <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TDriverFacialFailInfoDlg.addSubmit()"/> + <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TDriverFacialFailInfoDlg.close()"/> + </div> + </div> + </div> + + </div> +</div> +<script src="${ctxPath}/static/modular/system/tDriverFacialFail/tDriverFacialFail_info.js"></script> +@} diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail_edit.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail_edit.html new file mode 100644 index 0000000..4ed26f3 --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverFacialFail/tDriverFacialFail_edit.html @@ -0,0 +1,39 @@ +@layout("/common/_container.html"){ +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="form-horizontal" id="driverFacialFailInfoForm"> + <input type="hidden" id="id" name="id" value="${item.id}"> + <div class="row"> + <div class="col-sm-11"> + <#input id="name" name="类型名称" value="${item.name}"/> + <#select id="seat" name="座位数:"> + <option value="5" ${5 == item.seat ? 'selected=selected' : ''}>5座</option> + <option value="7" ${7 == item.seat ? 'selected=selected' : ''}>7座</option> + </#select> + <#select id="brandId" name="所属车辆品牌:" > + <option value="">选择所属车辆品牌</option> + @for(obj in brandList){ + <option value="${obj.id}" ${obj.id == item.brandId ? 'selected=selected' : ''}>${obj.name}</option> + @} + </#select> + <div class="form-group"> + <label class="col-sm-3 control-label">备注:</label> + <div class="col-sm-9"> + <textarea type="text/plain" class="form-control" name="remark" id="remark" style="width:100%;height:150px;">${item.remark}</textarea> + </div> + </div> + </div> + </div> + + <div class="row btn-group-m-t"> + <div class="col-sm-10 col-sm-offset-5"> + <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TDriverFacialFailInfoDlg.editSubmit()"/> + <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TDriverFacialFailInfoDlg.close()"/> + </div> + </div> + </div> + + </div> +</div> +<script src="${ctxPath}/static/modular/system/tDriverFacialFail/tDriverFacialFail_info.js"></script> +@} diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_detail.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_detail.html index 891f774..aaa036f 100644 --- a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_detail.html +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderCrossCity/tOrderCrossCity_detail.html @@ -120,6 +120,18 @@ </div> </div> </div> + + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-1"> + <h2 class="h3Class" style="font-weight: 700;">行程录音</h2> + </div> + <div class="col-sm-10"> + <audio id="audio" src="http://www.w3capi.com/upload/audio/audio_example.mp3" controls muted data-enabled="false"> + <!-- <source src="${item.routeRecord}" type="audio/mpeg">--> + </audio> + </div> + </div> + </div> </div> diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar.html index 1ff3203..d4af45c 100644 --- a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar.html +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar.html @@ -66,22 +66,22 @@ </#SelectCon> </div> <div class="col-sm-3"> - <#button name="搜索" icon="fa-search" clickFun="TOrderPrivateCar.search()"/> - <#button name="重置" icon="fa-trash" clickFun="TOrderPrivateCar.resetSearch()" space="true"/> + <#button name="搜索" icon="fa-search" clickFun="TOrderTransfer.search()"/> + <#button name="重置" icon="fa-trash" clickFun="TOrderTransfer.resetSearch()" space="true"/> </div> </div> <div class="hidden-xs" id="TOrderPrivateCarTableToolbar" role="group"> @if(shiro.hasPermission("/tOrderPrivateCar/orderDetail")){ - <#button name="订单详情" icon="fa-plus" clickFun="TOrderPrivateCar.orderDetail()"/> + <#button name="订单详情" icon="fa-plus" clickFun="TOrderTransfer.orderDetail()"/> @} @if(shiro.hasPermission("/tOrderPrivateCar/cancelOrder")){ - <#button name="取消订单" icon="fa-edit" clickFun="TOrderPrivateCar.cancelOrder()" space="true"/> + <#button name="取消订单" icon="fa-edit" clickFun="TOrderTransfer.cancelOrder()" space="true"/> @} @if(shiro.hasPermission("/tOrderPrivateCar/orderTrack")){ - <#button name="订单轨迹" icon="fa-edit" clickFun="TOrderPrivateCar.trajectory()" space="true"/> + <#button name="订单轨迹" icon="fa-edit" clickFun="TOrderTransfer.trajectory()" space="true"/> @} @if(shiro.hasPermission("/tOrderPrivateCar/deleteOrder")){ - <#button name="删除记录" icon="fa-remove" clickFun="TOrderPrivateCar.deleteOrder()" space="true"/> + <#button name="删除记录" icon="fa-remove" clickFun="TOrderTransfer.deleteOrder()" space="true"/> @} </div> <#table id="TOrderPrivateCarTable"/> diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar_orderDetail.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar_orderDetail.html index f5acceb..9ec61d7 100644 --- a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar_orderDetail.html +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderPrivateCar/tOrderPrivateCar_orderDetail.html @@ -105,6 +105,17 @@ </div> </div> + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-1"> + <h2 class="h3Class" style="font-weight: 700;">行程录音</h2> + </div> + <div class="col-sm-10"> + <audio id="audio" src="http://www.w3capi.com/upload/audio/audio_example.mp3" controls muted data-enabled="false"> + <!-- <source src="${item.routeRecord}" type="audio/mpeg">--> + </audio> + </div> + </div> + </div> </div> </div> diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer.html new file mode 100644 index 0000000..e56965b --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer.html @@ -0,0 +1,101 @@ +@layout("/common/_container.html"){ +<div class="row"> + <div class="col-sm-12"> + <div class="ibox float-e-margins"> + <div class="ibox-title"> + <h5>接送机订单管理</h5> + </div> + <div class="ibox-content"> + <div class="row row-lg"> + <div class="col-sm-12"> + <div class="row"> + <div class="col-sm-3"> + <#TimeCon id="insertTime" name="订单时间" isTime="false"/> + </div> + <div class="col-sm-3"> + <#NameCon id="orderNum" name="订单编号" /> + </div> + <div class="col-sm-3"> + <#SelectCon id="orderSource" name="订单来源" > + <option value="">全部</option> + <option value="1">APP下单</option> + <option value="2">扫码下单</option> + <option value="3">小程序下单</option> + <option value="4">司机下单</option> + <option value="5">调度下单</option> + </#SelectCon> + </div> + <div class="col-sm-3"> + <#NameCon id="userName" name="下单用户昵称" /> + </div> + <div class="col-sm-3"> + <#NameCon id="userPhone" name="下单用户手机" /> + </div> + <div class="col-sm-3"> + <#NameCon id="passengers" name="乘车用户姓名" /> + </div> + <div class="col-sm-3"> + <#NameCon id="passengersPhone" name="乘车用户手机" /> + </div> + <div class="col-sm-3"> + <#SelectCon id="serverCarModelId" name="车型" > + <option value="">全部</option> + @for(obj in carmodelList){ + <option value="${obj.id}">${obj.name}</option> + @} + </#SelectCon> + </div> + <div class="col-sm-3"> + <#NameCon id="driver" name="接单司机" /> + </div> + <div class="col-sm-3"> + <#SelectCon id="state" name="状态" > + <option value="">全部</option> + <option value="1">待接单</option> + <option value="2">待出发</option> + <option value="3">待到达预约地点</option> + <option value="4">待乘客上车</option> + <option value="5">服务中</option> + <option value="6">完成服务</option> + <option value="7">待支付</option> + <option value="8">待评价</option> + <option value="9">已完成</option> + <option value="10">已取消</option> + <option value="11">改派中</option> + <option value="12">取消待支付</option> + </#SelectCon> + </div> + <div class="col-sm-3"> + <#button name="搜索" icon="fa-search" clickFun="TOrderTransfer.search()"/> + <#button name="重置" icon="fa-trash" clickFun="TOrderTransfer.resetSearch()" space="true"/> + </div> + </div> + <div class="hidden-xs" id="TOrderTransferTableToolbar" role="group"> + @if(shiro.hasPermission("/tOrderTransfer/orderDetail")){ + <#button name="订单详情" icon="fa-plus" clickFun="TOrderTransfer.orderDetail()"/> + @} + @if(shiro.hasPermission("/tOrderTransfer/cancelOrder")){ + <#button name="取消订单" icon="fa-edit" clickFun="TOrderTransfer.cancelOrder()" space="true"/> + @} + @if(shiro.hasPermission("/tOrderTransfer/orderTrack")){ + <#button name="订单轨迹" icon="fa-edit" clickFun="TOrderTransfer.trajectory()" space="true"/> + @} + @if(shiro.hasPermission("/tOrderTransfer/deleteOrder")){ + <#button name="删除记录" icon="fa-remove" clickFun="TOrderTransfer.deleteOrder()" space="true"/> + @} + </div> + <#table id="TOrderTransferTable"/> + </div> + </div> + </div> + </div> + </div> +</div> +<script src="${ctxPath}/static/modular/system/tOrderTransfer/tOrderTransfer.js"></script> +<script> + laydate.render({ + elem: '#insertTime' + ,range: true + }); +</script> +@} diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer_add.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer_add.html new file mode 100644 index 0000000..25a08ee --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer_add.html @@ -0,0 +1,89 @@ +@layout("/common/_container.html"){ +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="form-horizontal"> + + <div class="row"> + <div class="col-sm-6 b-r"> + <#input id="id" name="主键id" underline="true"/> + <#input id="type" name="类型(1=普通订单,2=摆渡订单)" underline="true"/> + <#input id="userId" name="用户id" underline="true"/> + <#input id="driverId" name="接单司机ID" underline="true"/> + <#input id="carId" name="车辆id" underline="true"/> + <#input id="orderNum" name="订单号" underline="true"/> + <#input id="placementLon" name="下单地点经度" underline="true"/> + <#input id="placementLat" name="下单地点纬度" underline="true"/> + <#input id="placementAddress" name="下单地点" underline="true"/> + <#input id="startLon" name="出发地经度值" underline="true"/> + <#input id="startLat" name="出发地纬度值" underline="true"/> + <#input id="endLon" name="目的地经度" underline="true"/> + <#input id="startAddress" name="出发地地点" underline="true"/> + <#input id="endLat" name="目的地纬度" underline="true"/> + <#input id="endAddress" name="目的地地点" underline="true"/> + <#input id="boardingLon" name="上车点经度" underline="true"/> + <#input id="boardingLat" name="上车点纬度" underline="true"/> + <#input id="boardingAddress" name="上车点" underline="true"/> + <#input id="boardingTime" name="上车时间" underline="true"/> + <#input id="getoffLon" name="下车点经度" underline="true"/> + <#input id="getoffLat" name="下车点纬度" underline="true"/> + <#input id="getoffAddress" name="下车地点" underline="true"/> + <#input id="getoffTime" name="下车时间" underline="true"/> + <#input id="mileage" name="行驶里程数(米)" underline="true"/> + <#input id="payManner" name="支付方式(1=未来平台支付,2=其他方式支付)" underline="true"/> + <#input id="payType" name="支付方式(1=微信,2=支付宝,3=其他)" underline="true"/> + <#input id="orderMoney" name="订单金额" underline="true"/> + <#input id="startMoney" name="起步价" underline="true"/> + <#input id="mileageMoney" name="里程费" underline="true"/> + <#input id="durationMoney" name="时长费" underline="true"/> + <#input id="longDistanceMoney" name="远途费" underline="true"/> + <#input id="parkMoney" name="停车费"/> + </div> + + <div class="col-sm-6"> + <#input id="roadTollMoney" name="过路费" underline="true"/> + <#input id="redPacketMoney" name="红包抵扣金额" underline="true"/> + <#input id="couponMoney" name="优惠券抵扣金额" underline="true"/> + <#input id="redPacketId" name="红包记录id" underline="true"/> + <#input id="couponId" name="优惠券id" underline="true"/> + <#input id="discount" name="折扣" underline="true"/> + <#input id="discountMoney" name="折扣优惠金额" underline="true"/> + <#input id="activityId" name="折扣活动id" underline="true"/> + <#input id="companyId" name="公司id" underline="true"/> + <#input id="payMoney" name="支付金额" underline="true"/> + <#input id="substitute" name="是否是代下单(0:否,1:是)" underline="true"/> + <#input id="passengers" name="乘车人" underline="true"/> + <#input id="passengersPhone" name="乘车人电话" underline="true"/> + <#input id="state" name="状态(1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中,12=取消待支付)" underline="true"/> + <#input id="insertTime" name="下单时间" underline="true"/> + <#input id="travelTime" name="出行时间" underline="true"/> + <#input id="snatchOrderTime" name="抢单时间" underline="true"/> + <#input id="setOutTime" name="司机点出发时间" underline="true"/> + <#input id="arriveTime" name="司机到达预约地点时间" underline="true"/> + <#input id="startServiceTime" name="开始服务时间" underline="true"/> + <#input id="endServiceTime" name="结束服务时间" underline="true"/> + <#input id="orderType" name="订单类型(1=普通,2=预约)" underline="true"/> + <#input id="orderSource" name="下单方式(1:APP下单,2:扫码下单,3:小程序下单,4:司机下单,5:调度下单)" underline="true"/> + <#input id="invoiceId" name="发票id" underline="true"/> + <#input id="isReassign" name="是否是改派单(1=否,2=是)" underline="true"/> + <#input id="reassignNotice" name="改派通知(0=没有改派,1=改派中,2=已改派)" underline="true"/> + <#input id="trackId" name="高德猎鹰上的轨迹id" underline="true"/> + <#input id="isDelete" name="是否删除 1=否 2=是" underline="true"/> + <#input id="oldState" name="状态(改派前订单状态)" underline="true"/> + <#input id="telX" name="移动小号" underline="true"/> + <#input id="bindId" name="移动小号绑定关系id" underline="true"/> + <#input id="serverCarModelId" name="接送机车型ID 关联t_server_carmodel表" underline="true"/> + </div> + </div> + + <div class="row btn-group-m-t"> + <div class="col-sm-10"> + <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TOrderTransferInfoDlg.addSubmit()"/> + <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TOrderTransferInfoDlg.close()"/> + </div> + </div> + </div> + + </div> +</div> +<script src="${ctxPath}/static/modular/system/tOrderTransfer/tOrderTransfer_info.js"></script> +@} diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer_orderDetail.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer_orderDetail.html new file mode 100644 index 0000000..13110b2 --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer_orderDetail.html @@ -0,0 +1,136 @@ +@layout("/common/_container.html"){ +<style type="text/css"> + html, body, #container { + height: 100%; + width: 100%; + } + + .input-card .btn{ + margin-right: 1.2rem; + width: 9rem; + } + + .input-card .btn:last-child{ + margin-right: 0; + } +</style> +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="form-horizontal"> + <input type="hidden" id="id" name="id" value="${item.id}"> + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-4"> + <h2 class="h3Class" style="font-weight: 700;">订单详情</h2> + </div> + </div> + <div class="row"> + <div class="col-sm-6 b-r"> + <#label id="insertTimeStr" name="下单时间" value="${item.insertTimeStr}"/> + <#label id="orderSourceStr" name="订单来源" value="${item.orderSourceStr}"/> + <#label id="userName" name="下单用户昵称" value="${item.userName}"/> + <#label id="passengers" name="乘车用户昵称" value="${item.passengers}"/> + <#label id="placementAddress" name="起点" value="${item.startAddress}"/> + <#label id="serverCarModel" name="选择车型" value="${item.serverCarModel}"/> + <#label id="car" name="接单车辆" value="${item.car}"/> + <#label id="boardingAddress" name="上车地点" value="${item.boardingAddress}"/> + <#label id="getoffAddress" name="下车地点" value="${item.getoffAddress}"/> + </div> + + <div class="col-sm-6"> + <#label id="orderNum" name="订单编号" value="${item.orderNum}"/> + <#label id="travelTimeStr" name="乘车时间" value="${item.travelTimeStr}"/> + <#label id="userPhone" name="下单用户手机号" value="${item.userPhone}"/> + <#label id="passengersPhone" name="乘车用户手机号" value="${item.passengersPhone}"/> + <#label id="endAddress" name="终点" value="${item.endAddress}"/> + <#label id="driver" name="接单司机" value="${item.driver}"/> + <#label id="companyName" name="车辆所属机构" value="${item.companyName}"/> + <#label id="boardingTimeStr" name="上车时间" value="${item.boardingTimeStr}"/> + <#label id="getoffTimeStr" name="下车时间" value="${item.getoffTimeStr}"/> + </div> + </div> + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-4"> + <h2 class="h3Class" style="font-weight: 700;">费用明细</h2> + </div> + </div> + <div class="row"> + @if(isNotEmpty(item.orderMoney) && item.orderMoney > 0){ + <div class="col-sm-6 b-r"> + <#label id="orderMoney" name="订单总价" value="${item.orderMoney}元"/> + <#label id="travelMoney" name="行程费" value="${item.travelMoney}元"/> + <#label id="parkMoney" name="停车费" value="${item.parkMoney}元"/> + <#label id="roadTollMoney" name="过路费" value="${item.roadTollMoney}元"/> + <#label id="tipMoney" name="小费" value="${item.tipMoney}元"/> + + @if(isNotEmpty(item.payMoney)){ + <#label id="payMoney" name="实际支付费用" value="${item.payMoney}元"/> + @}else{ + <#label id="payMoney" name="实际支付费用" value="0.00元"/> + @} + + <#label id="payTypeStr" name="支付方式" value="${item.payTypeStr}"/> + <#label id="couponMoney" name="优惠券抵扣费用" value="${item.couponMoney}元"/> + <#label id="redPacketMoney" name="红包抵扣金额" value="${item.redPacketMoney}元"/> + </div> + <div class="col-sm-6"> + <#label id="platIncome" name="平台收益" value="${item.platIncome}元"/> + <#label id="companyIncome" name="分公司收益" value="${item.companyIncome}元"/> + <#label id="franchiseeIncome" name="加盟商收益" value="${item.franchiseeIncome}元"/> + <#label id="driverIncome" name="司机收益" value="${item.driverIncome}元"/> + </div> + @}else{ + <h4 style="margin-left: 10%">暂无费用明细</h4> + @} + </div> + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-4"> + <h2 class="h3Class" style="font-weight: 700;">线路轨迹</h2> + </div> + </div> + <div class="row"> + <div class="col-sm-10"> + <div class="form-horizontal" id="container" style="margin-left: 50px;width: 100%; height: 500px;"></div> + <div class="input-card" style="margin-left: 50px;"> + <h4>轨迹回放控制</h4> + <div class="input-item"> + <input type="button" class="btn" value="开始动画" id="start" onclick="startAnimation()"/> + <input type="button" class="btn" value="暂停动画" id="pause" onclick="pauseAnimation()"/> + <input type="button" class="btn" value="继续动画" id="resume" onclick="resumeAnimation()"/> + <input type="button" class="btn" value="停止动画" id="stop" onclick="stopAnimation()"/> + </div> + <div class="input-item"> + + </div> + </div> + </div> + </div> + + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-1"> + <h2 class="h3Class" style="font-weight: 700;">行程录音</h2> + </div> + <div class="col-sm-10"> + <audio id="audio" src="http://www.w3capi.com/upload/audio/audio_example.mp3" controls muted data-enabled="false"> + <!-- <source src="${item.routeRecord}" type="audio/mpeg">--> + </audio> + </div> + </div> + + </div> + </div> +</div> +<script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script> +<script src="https://webapi.amap.com/maps?v=1.4.8&key=e17d799b2506d05faf7f88320a266803"></script> +<script src="https://cache.amap.com/lbs/static/addToolbar.js"></script> +<script src="${ctxPath}/static/modular/system/tOrderTransfer/tOrderTransfer_info.js"></script> +<script> + $(function (){ + var myAudio = document.getElementById('audio'); + console.log(myAudio.dataset.enabled); + if (myAudio.dataset.enabled === 'false') { + console.log('audio is disabled'); + myAudio.pause(); + } + }) +</script> +@} diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer_trajectory.html b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer_trajectory.html new file mode 100644 index 0000000..2ce7f78 --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOrderTransfer/tOrderTransfer_trajectory.html @@ -0,0 +1,52 @@ +@layout("/common/_container.html"){ +<style type="text/css"> + html, body, #container { + height: 100%; + width: 100%; + } + + .input-card .btn{ + margin-right: 1.2rem; + width: 9rem; + } + + .input-card .btn:last-child{ + margin-right: 0; + } +</style> +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="form-horizontal"> + <input type="hidden" id="id" name="id" value="${tOrderTransferId}"> + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-4"> + <h2 class="h3Class" style="font-weight: 700;">线路轨迹</h2> + </div> + </div> + <div class="row" style="margin-top: 30px;"> + <div class="col-sm-10"> + <div class="form-horizontal" id="container" style="margin-left: 50px;width: 100%; height: 500px;"></div> + <div class="input-card" style="margin-left: 50px;"> + <h4>轨迹回放控制</h4> + <div class="input-item"> + <input type="button" class="btn" value="开始动画" id="start" onclick="startAnimation()"/> + <input type="button" class="btn" value="暂停动画" id="pause" onclick="pauseAnimation()"/> + <input type="button" class="btn" value="继续动画" id="resume" onclick="resumeAnimation()"/> + <input type="button" class="btn" value="停止动画" id="stop" onclick="stopAnimation()"/> + </div> + <div class="input-item"> + + </div> + </div> + </div> + </div> + + </div> + + </div> +</div> +<script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script> +<script src="https://webapi.amap.com/maps?v=1.4.8&key=e17d799b2506d05faf7f88320a266803"></script> +<script src="https://cache.amap.com/lbs/static/addToolbar.js"></script> +<script src="${ctxPath}/static/modular/system/tOrderTransfer/tOrderTransfer_info.js"></script> +@} diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTransfer/tOrderTransfer.js b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTransfer/tOrderTransfer.js new file mode 100644 index 0000000..8366e6f --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTransfer/tOrderTransfer.js @@ -0,0 +1,379 @@ +/** + * 接送机订单管理初始化 + */ +var TOrderTransfer = { + id: "TOrderTransferTable", //表格id + seItem: null, //选中的条目 + table: null, + layerIndex: -1 +}; + +/** + * 初始化表格的列 + */ +TOrderTransfer.initColumn = function () { + return [ + {field: 'selectItem', radio: true}, + {title: '主键id', field: 'id', visible: false, align: 'center', valign: 'middle'}, + {title: '下单时间', field: 'insertTime', visible: true, align: 'center', valign: 'middle',width:'8%', + formatter: function (value, row) { + var btn = ""; + if(row.insertTime != '' && row.insertTime != null) { + var time = row.insertTime.replace(" ",'<br>'); + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.insertTime + '" onfocus="TUser.tooltip()">' + time + '</p>'] + } + return btn; + } + }, + {title: '订单编号', field: 'orderNum', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.orderNum != '' && row.orderNum != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.orderNum + '" onfocus="TUser.tooltip()">' + row.orderNum + '</p>'] + } + return btn; + } + }, + {title: '订单来源', field: 'orderSource', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.orderSource != '' && row.orderSource != null) { + if (row.orderSource == 1){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="APP下单" onfocus="TUser.tooltip()">APP下单</p>'] + } else if (row.orderSource == 2){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="扫码下单" onfocus="TUser.tooltip()">扫码下单</p>'] + } else if (row.orderSource == 3){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="小程序下单" onfocus="TUser.tooltip()">小程序下单</p>'] + } else if (row.orderSource == 4){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="司机下单" onfocus="TUser.tooltip()">司机下单</p>'] + } else if (row.orderSource == 5){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="调度下单" onfocus="TUser.tooltip()">调度下单</p>'] + } + } + return btn; + } + }, + {title: '乘车时间', field: 'travelTime', visible: true, align: 'center', valign: 'middle',width:'10%', + formatter: function (value, row) { + var btn = ""; + if(row.travelTime != '' && row.travelTime != null) { + var time = row.travelTime.replace(" ",'<br>'); + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.travelTime + '" onfocus="TUser.tooltip()">' + time + '</p>'] + } + return btn; + } + }, + {title: '用户id', field: 'userId', visible: false, align: 'center', valign: 'middle'}, + {title: '下单用<br/>户昵称', field: 'userName', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.userName != '' && row.userName != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.userName + '" onfocus="TUser.tooltip()">' + row.userName + '</p>'] + } + return btn; + } + }, + {title: '下单用<br/>户手机', field: 'userPhone', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.userPhone != '' && row.userPhone != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.userPhone + '" onfocus="TUser.tooltip()">' + row.userPhone + '</p>'] + } + return btn; + } + }, + {title: '乘车用<br/>户姓名', field: 'passengers', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.passengers != '' && row.passengers != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.passengers + '" onfocus="TUser.tooltip()">' + row.passengers + '</p>'] + } + return btn; + } + }, + {title: '乘车用<br/>户手机', field: 'passengersPhone', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.passengersPhone != '' && row.passengersPhone != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.passengersPhone + '" onfocus="TUser.tooltip()">' + row.passengersPhone + '</p>'] + } + return btn; + } + }, + {title: '起点', field: 'startAddress', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.startAddress != '' && row.startAddress != null) { + var str = row.startAddress; + var str1 = ""; + var arr = ""; + for(var i=0,len=str.length/15;i<len;i++) { + str1 = str.substr(0,15); + str = str.replace(str1,''); + arr += str1 + "<br>"; + } + arr = arr.substring(0,arr.length-4); + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.startAddress + '" onfocus="TUser.tooltip()">' + arr + '</p>'] + } + return btn; + } + }, + {title: '终点', field: 'endAddress', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.endAddress != '' && row.endAddress != null) { + var str = row.endAddress; + var str1 = ""; + var arr = ""; + for(var i=0,len=str.length/15;i<len;i++) { + str1 = str.substr(0,15); + str = str.replace(str1,''); + arr += str1 + "<br>"; + } + arr = arr.substring(0,arr.length-4); + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.endAddress + '" onfocus="TUser.tooltip()">' + arr + '</p>'] + } + return btn; + } + }, + {title: '选择车型', field: 'serverCarModel', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.serverCarModel != '' && row.serverCarModel != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.serverCarModel + '" onfocus="TUser.tooltip()">' + row.serverCarModel + '</p>'] + } + return btn; + } + }, + {title: '接单司机', field: 'driver', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.driver != '' && row.driver != null) { + var driverName1 = row.driver.replace("-","<br>"); + var driverName2 = row.driver.replace("-"," "); + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + driverName2 + '" onfocus="TUser.tooltip()">' + driverName1 + '</p>'] + } + return btn; + } + }, + {title: '接单车辆', field: 'car', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.car != '' && row.car != null) { + var car1 = row.car.replace("-","<br>"); + var car2 = row.car.replace("-"," "); + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + car2 + '" onfocus="TUser.tooltip()">' + car1 + '</p>'] + } + return btn; + } + }, + {title: '订单金额', field: 'orderMoney', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.orderMoney != '' && row.orderMoney != null) { + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="' + row.orderMoney + '" onfocus="TUser.tooltip()">' + row.orderMoney + '</p>'] + } + return btn; + } + }, + {title: '状态', field: 'state', visible: true, align: 'center', valign: 'middle', + formatter: function (value, row) { + var btn = ""; + if(row.state != '' && row.state != null) { + if (row.state == 1){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待接单" onfocus="TUser.tooltip()">待接单</p>'] + } else if (row.state == 2){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待出发" onfocus="TUser.tooltip()">待出发</p>'] + } else if (row.state == 3){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待到达预约地点" onfocus="TUser.tooltip()">待到达预约地点</p>'] + } else if (row.state == 4){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待乘客上车" onfocus="TUser.tooltip()">待乘客上车</p>'] + } else if (row.state == 5){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="服务中" onfocus="TUser.tooltip()">服务中</p>'] + } else if (row.state == 6){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="完成服务" onfocus="TUser.tooltip()">完成服务</p>'] + } else if (row.state == 7){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待支付" onfocus="TUser.tooltip()">待支付</p>'] + } else if (row.state == 8){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待评价" onfocus="TUser.tooltip()">待评价</p>'] + } else if (row.state == 9){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="已完成" onfocus="TUser.tooltip()">已完成</p>'] + } else if (row.state == 10){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="已取消" onfocus="TUser.tooltip()">已取消</p>'] + } else if (row.state == 11){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="改派中" onfocus="TUser.tooltip()">改派中</p>'] + } else if (row.state == 12){ + btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="取消待支付" onfocus="TUser.tooltip()">取消待支付</p>'] + } + } + return btn; + } + } + ]; +}; + +/** + * 检查是否选中 + */ +TOrderTransfer.check = function () { + var selected = $('#' + this.id).bootstrapTable('getSelections'); + if(selected.length == 0){ + Feng.info("请先选中表格中的某一记录!"); + return false; + }else{ + TOrderTransfer.seItem = selected[0]; + return true; + } +}; + +/** + * 打开查看接送机订单详情 + */ +TOrderTransfer.orderDetail = function () { + if (this.check()) { + var index = layer.open({ + type: 2, + title: '接送机订单详情', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tOrderTransfer/tOrderTransfer_orderDetail/' + TOrderTransfer.seItem.id + }); + this.layerIndex = index; + } +}; + +/** + * 取消订单 + */ +TOrderTransfer.cancelOrder = function(){ + if (this.check()) { + var nickname = TOrderTransfer.seItem.orderNum; + if (nickname == "" || nickname == null || nickname == undefined) { + nickname = "该订单"; + } else { + nickname = "【" + nickname + "】"; + } + if (TOrderTransfer.seItem.state == 7 || TOrderTransfer.seItem.state == 8 || TOrderTransfer.seItem.state == 9 || TOrderTransfer.seItem.state == 10 ) { + swal("取消失败", "【待评价】【已完成】【已取消】状态下不能执行此操作", "warning"); + return; + } + swal({ + title: "您是否确认取消订单" + nickname + "?", + text: "请谨慎操作,取消后数据无法恢复!", + type: "warning", + showCancelButton: true, + confirmButtonColor: "#DD6B55", + confirmButtonText: "取消订单", + closeOnConfirm: false + }, function () { + var ajax = new $ax(Feng.ctxPath + "/tOrderTransfer/cancel", function (data) { + layer.msg("加载中...",{ + icon:16, + time:-1 + }); + swal("取消订单成功", "您已经成功取消了" + nickname + "。", "success"); + TOrderTransfer.table.refresh(); + layer.closeAll() + }, function (data) { + swal("取消订单失败", data.responseJSON.message + "!", "warning"); + layer.closeAll() + }); + ajax.set("tOrderTransferId", TOrderTransfer.seItem.id); + ajax.start(); + }); + } +} + +/** + * 订单轨迹 + */ +TOrderTransfer.trajectory = function(){ + if (this.check()) { + var index = layer.open({ + type: 2, + title: '接送机订单轨迹', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tOrderTransfer/tOrderTransfer_trajectory/' + TOrderTransfer.seItem.id + }); + this.layerIndex = index; + } +} + + +/** + * 删除接送机订单 + */ +TOrderTransfer.deleteOrder = function () { + if (this.check()) { + var orderNum = TOrderTransfer.seItem.orderNum; + if (orderNum == "" || orderNum == null || orderNum == undefined) { + orderNum = "该订单"; + } else { + orderNum = "【" + orderNum + "】"; + } + if (TOrderTransfer.seItem.state != 10) { + swal("删除失败", "【已取消】状态下才能执行此操作", "warning"); + return; + } + swal({ + title: "您是否确认删除" + orderNum + "?", + text: "请谨慎操作,删除后数据无法恢复!", + type: "warning", + showCancelButton: true, + confirmButtonColor: "#DD6B55", + confirmButtonText: "删除", + closeOnConfirm: false + }, function () { + var ajax = new $ax(Feng.ctxPath + "/tOrderTransfer/delete", function (data) { + swal("删除成功", "您已经删除了" + orderNum + "。", "success"); + TOrderTransfer.table.refresh(); + }, function (data) { + swal("删除失败", data.responseJSON.message + "!", "warning"); + }); + ajax.set("tOrderTransferId", TOrderTransfer.seItem.id); + ajax.start(); + }); + } +}; + +/** + * 查询接送机订单列表 + */ +TOrderTransfer.search = function () { + var queryData = {}; + queryData['insertTime'] = $("#insertTime").val(); + queryData['orderNum'] = $("#orderNum").val(); + queryData['orderSource'] = $("#orderSource").val(); + queryData['userName'] = $("#userName").val(); + queryData['userPhone'] = $("#userPhone").val(); + queryData['passengers'] = $("#passengers").val(); + queryData['passengersPhone'] = $("#passengersPhone").val(); + queryData['serverCarModelId'] = $("#serverCarModelId").val(); + queryData['driver'] = $("#driver").val(); + queryData['state'] = $("#state").val(); + TOrderTransfer.table.refresh({query: queryData}); +}; + +TOrderTransfer.resetSearch = function () { + $("#insertTime").val(""); + $("#orderNum").val(""); + $("#orderSource").val(""); + $("#userName").val(""); + $("#userPhone").val(""); + $("#passengers").val(""); + $("#passengersPhone").val(""); + $("#serverCarModelId").val(""); + $("#driver").val(""); + $("#state").val(""); + TOrderTransfer.search(); +}; + +$(function () { + var defaultColunms = TOrderTransfer.initColumn(); + var table = new BSTable(TOrderTransfer.id, "/tOrderTransfer/list", defaultColunms); + table.setPaginationType("server"); + TOrderTransfer.table = table.init(); +}); diff --git a/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTransfer/tOrderTransfer_info.js b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTransfer/tOrderTransfer_info.js new file mode 100644 index 0000000..992809e --- /dev/null +++ b/ManagementNTTravel/guns-admin/src/main/webapp/static/modular/system/tOrderTransfer/tOrderTransfer_info.js @@ -0,0 +1,248 @@ +/** + * 初始化专车订单详情对话框 + */ +var TOrderTransferInfoDlg = { + tOrderTransferInfoData : {} +}; + +/** + * 清除数据 + */ +TOrderTransferInfoDlg.clearData = function() { + this.tOrderTransferInfoData = {}; +} + +/** + * 设置对话框中的数据 + * + * @param key 数据的名称 + * @param val 数据的具体值 + */ +TOrderTransferInfoDlg.set = function(key, val) { + this.tOrderTransferInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val; + return this; +} + +/** + * 设置对话框中的数据 + * + * @param key 数据的名称 + * @param val 数据的具体值 + */ +TOrderTransferInfoDlg.get = function(key) { + return $("#" + key).val(); +} + +/** + * 关闭此对话框 + */ +TOrderTransferInfoDlg.close = function() { + parent.layer.close(window.parent.TOrderTransfer.layerIndex); +} + +/** + * 收集数据 + */ +TOrderTransferInfoDlg.collectData = function() { + this + .set('id') + .set('type') + .set('userId') + .set('driverId') + .set('carId') + .set('orderNum') + .set('placementLon') + .set('placementLat') + .set('placementAddress') + .set('startLon') + .set('startLat') + .set('endLon') + .set('startAddress') + .set('endLat') + .set('endAddress') + .set('boardingLon') + .set('boardingLat') + .set('boardingAddress') + .set('boardingTime') + .set('getoffLon') + .set('getoffLat') + .set('getoffAddress') + .set('getoffTime') + .set('mileage') + .set('payManner') + .set('payType') + .set('orderMoney') + .set('startMoney') + .set('mileageMoney') + .set('durationMoney') + .set('longDistanceMoney') + .set('parkMoney') + .set('roadTollMoney') + .set('redPacketMoney') + .set('couponMoney') + .set('redPacketId') + .set('couponId') + .set('discount') + .set('discountMoney') + .set('activityId') + .set('companyId') + .set('payMoney') + .set('substitute') + .set('passengers') + .set('passengersPhone') + .set('state') + .set('insertTime') + .set('travelTime') + .set('snatchOrderTime') + .set('setOutTime') + .set('arriveTime') + .set('startServiceTime') + .set('endServiceTime') + .set('orderType') + .set('orderSource') + .set('invoiceId') + .set('isReassign') + .set('reassignNotice') + .set('trackId') + .set('isDelete') + .set('oldState') + .set('telX') + .set('bindId') + .set('serverCarModelId'); +} + +/** + * 提交添加 + */ +TOrderTransferInfoDlg.addSubmit = function() { + + this.clearData(); + this.collectData(); + + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/tOrderTransfer/add", function(data){ + Feng.success("添加成功!"); + window.parent.TOrderTransfer.table.refresh(); + TOrderTransferInfoDlg.close(); + },function(data){ + Feng.error("添加失败!" + data.responseJSON.message + "!"); + }); + ajax.set(this.tOrderTransferInfoData); + ajax.start(); +} + +/** + * 提交修改 + */ +TOrderTransferInfoDlg.editSubmit = function() { + + this.clearData(); + this.collectData(); + + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/tOrderTransfer/update", function(data){ + Feng.success("修改成功!"); + window.parent.TOrderTransfer.table.refresh(); + TOrderTransferInfoDlg.close(); + },function(data){ + Feng.error("修改失败!" + data.responseJSON.message + "!"); + }); + ajax.set(this.tOrderTransferInfoData); + ajax.start(); +} + +var map = new AMap.Map("container", { + resizeEnable: true, + zoom: 14 +}); +$(function() { + getTrajectory(); +}); + +function getTrajectory() { + $.ajax({ + url: Feng.ctxPath + '/tOrderTransfer/getOrderTrack', + type: 'POST', + data:{ + orderDetailId: $("#id").val() + }, + success: function (res) { + if(res.status == 200){ + var data = res.data; + if(data.length > 0){ + orderTrack(data); + }/*else{ + Feng.error("当前订单没有轨迹"); + }*/ + }else{ + Feng.error(res.msg); + } + } + }); +} + +var marker, lineArr = []; + +function orderTrack(data) { + for(var i in data){ + var waypoints = []; + var lon = parseFloat(data[i].lon); + var lat = parseFloat(data[i].lat); + waypoints.push(lon); + waypoints.push(lat); + lineArr.push(waypoints); + } + + marker = new AMap.Marker({ + map: map, + position: lineArr[0], + icon: "https://webapi.amap.com/images/car.png", + offset: new AMap.Pixel(-26, -13), + autoRotation: true, + angle:-90, + }); + + // 绘制轨迹 + var polyline = new AMap.Polyline({ + map: map, + path: lineArr, + showDir:true, + strokeColor: "#28F", //线颜色 + // strokeOpacity: 1, //线透明度 + strokeWeight: 6, //线宽 + // strokeStyle: "solid" //线样式 + }); + + var passedPolyline = new AMap.Polyline({ + map: map, + // path: lineArr, + strokeColor: "#AF5", //线颜色 + // strokeOpacity: 1, //线透明度 + strokeWeight: 6, //线宽 + // strokeStyle: "solid" //线样式 + }); + + + marker.on('moving', function (e) { + passedPolyline.setPath(e.passedPath); + }); + + map.setFitView(); +} + + +function startAnimation () { + marker.moveAlong(lineArr, 200); +} + +function pauseAnimation () { + marker.pauseMove(); +} + +function resumeAnimation () { + marker.resumeMove(); +} + +function stopAnimation () { + marker.stopMove(); +} -- Gitblit v1.7.1