DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/controller/CrossCityShiftController.java
@@ -12,6 +12,7 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -52,9 +53,11 @@ if (null == driverId) { return ResultUtil.tokenErr(); } ResultUtil<DriverShiftListWarpper> driverShiftListWarpperResultUtil = validateDate(date); if (driverShiftListWarpperResultUtil.getCode().equals(ResultUtil.ERROR)) { return driverShiftListWarpperResultUtil; if (StringUtils.isNotBlank(date)) { ResultUtil<DriverShiftListWarpper> driverShiftListWarpperResultUtil = validateDate(date); if (driverShiftListWarpperResultUtil.getCode().equals(ResultUtil.ERROR)) { return driverShiftListWarpperResultUtil; } } DriverShiftListWarpper result = lineShiftDriverService.queryDriverShiftList(driverId, date); return ResultUtil.success(result); DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/LineShiftDriverMapper.java
@@ -34,4 +34,12 @@ * @return 班次详情数据 */ Map<String, Object> getDetail(Integer lineShiftDriverId); /** * 【202601】查询司机可预约的班次列表(包括已预约和未预约的) * @param driverId 司机id * @param date 日期(yyyy-MM-dd) * @return 班次列表 */ List<Map<String, Object>> queryDriverAvailableShifts(@Param("driverId") Integer driverId, @Param("date") String date); } DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineShiftDriverMapper.xml
@@ -85,6 +85,10 @@ (SELECT s.name FROM t_site s JOIN t_line_site tls ON s.id = tls.siteId WHERE tls.lineId = l.id AND tls.type = 1 LIMIT 1) as startSiteName, (SELECT siteId FROM t_line_site WHERE lineId = l.id AND type = 2 LIMIT 1) as endSiteId, (SELECT s.name FROM t_site s JOIN t_line_site tls ON s.id = tls.siteId WHERE tls.lineId = l.id AND tls.type = 2 LIMIT 1) as endSiteName, (SELECT s.city FROM t_site s JOIN t_line_site tls ON s.id = tls.siteId WHERE tls.lineId = l.id AND tls.type = 1 LIMIT 1) as startCityName, (SELECT s.city FROM t_site s JOIN t_line_site tls ON s.id = tls.siteId WHERE tls.lineId = l.id AND tls.type = 2 LIMIT 1) as endCityName, (SELECT s.lonLat FROM t_site s JOIN t_line_site tls ON s.id = tls.siteId WHERE tls.lineId = l.id AND tls.type = 1 LIMIT 1) as startLonLat, (SELECT s.lonLat FROM t_site s JOIN t_line_site tls ON s.id = tls.siteId WHERE tls.lineId = l.id AND tls.type = 2 LIMIT 1) as endLonLat, -- 默认点信息(从起点站点获取) (SELECT s.defaultPointAddress FROM t_site s JOIN t_line_site tls ON s.id = tls.siteId WHERE tls.lineId = l.id AND tls.type = 2 LIMIT 1) as defaultPointAddress, @@ -106,4 +110,27 @@ LEFT JOIN t_line_price lp ON l.id = lp.lineId AND cs.serverCarModelId = lp.serverCarModelId AND lp.state = 1 WHERE lsd.id = #{lineShiftDriverId} </select> <!-- 【202601】查询司机可预约的班次列表(包括已预约和未预约的) --> <select id="queryDriverAvailableShifts" resultType="java.util.Map"> SELECT ls.id as lineShiftId, ls.lineId as lineId, l.name as lineName, ls.startTime as startTime, ls.endTime as endTime, ls.carNum as carNum, lsd.id as lineShiftDriverId, lsd.laveSeat as laveSeat, lsd.totalSeat as totalSeat, CASE WHEN lsd.id IS NOT NULL THEN 1 ELSE 0 END as isReserved FROM t_driver_line dl INNER JOIN t_line l ON dl.lineId = l.id AND l.state = 1 INNER JOIN t_line_shift ls ON l.id = ls.lineId AND ls.state = 1 LEFT JOIN t_line_shift_driver lsd ON ls.id = lsd.lineShiftId AND lsd.driverId = #{driverId} AND DATE_FORMAT(lsd.`day`, '%Y-%m-%d') = #{date} WHERE dl.driverId = #{driverId} ORDER BY l.id, ls.startTime </select> </mapper> DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineShiftDriverServiceImpl.java
@@ -258,8 +258,8 @@ } } // 查询司机在指定日期的排班信息 List<Map<String, Object>> shiftList = lineShiftDriverMapper.queryDriverShiftByDate(driverId, date); // 查询司机可预约的班次列表(包括已预约和未预约的) List<Map<String, Object>> shiftList = lineShiftDriverMapper.queryDriverAvailableShifts(driverId, date); // 按线路分组 Map<Integer, List<Map<String, Object>>> lineGroupMap = new LinkedHashMap<>(); @@ -308,35 +308,72 @@ for (Map<String, Object> shiftMap : entry.getValue()) { LineShiftItemWarpper shiftItem = new LineShiftItemWarpper(); shiftItem.setLineShiftId(Integer.valueOf(shiftMap.get("lineShiftId").toString())); shiftItem.setLineShiftDriverId(Integer.valueOf(shiftMap.get("lineShiftDriverId").toString())); shiftItem.setStartTime(shiftMap.get("startTime").toString()); shiftItem.setEndTime(shiftMap.get("endTime").toString()); shiftItem.setLaveSeat(Integer.valueOf(shiftMap.get("laveSeat").toString())); shiftItem.setTotalSeat(Integer.valueOf(shiftMap.get("totalSeat").toString())); // 判断状态:已预约的班次,判断是否过期 String endTime = shiftMap.get("endTime").toString(); boolean isExpired = false; // 判断是否已预约 Integer isReserved = Integer.valueOf(shiftMap.get("isReserved").toString()); // 如果是今天,比较时间;如果是过去的日期,则已过期 if (date.equals(today)) { // 比较当前时间和班次结束时间 isExpired = currentTime.compareTo(endTime) >= 0; } else if (date.compareTo(today) < 0) { // 过去的日期 isExpired = true; } if (isReserved == 1) { // 已预约的班次 shiftItem.setLineShiftDriverId(Integer.valueOf(shiftMap.get("lineShiftDriverId").toString())); shiftItem.setLaveSeat(Integer.valueOf(shiftMap.get("laveSeat").toString())); shiftItem.setTotalSeat(Integer.valueOf(shiftMap.get("totalSeat").toString())); if (isExpired) { // 已过期 shiftItem.setStatus(2); shiftItem.setStatusText("已过期"); shiftItem.setCanOperate(false); // 判断是否过期 String endTime = shiftMap.get("endTime").toString(); boolean isExpired = false; // 如果是今天,比较时间;如果是过去的日期,则已过期 if (date.equals(today)) { // 比较当前时间和班次结束时间 isExpired = currentTime.compareTo(endTime) >= 0; } else if (date.compareTo(today) < 0) { // 过去的日期 isExpired = true; } if (isExpired) { // 已过期 shiftItem.setStatus(2); shiftItem.setStatusText("已过期"); shiftItem.setCanOperate(false); } else { // 已预约可操作 shiftItem.setStatus(1); shiftItem.setStatusText("已预约"); shiftItem.setCanOperate(true); } } else { // 已预约可操作 shiftItem.setStatus(1); shiftItem.setStatusText("已预约"); shiftItem.setCanOperate(true); // 未预约的班次 shiftItem.setLineShiftDriverId(null); shiftItem.setLaveSeat(null); shiftItem.setTotalSeat(null); // 判断是否可预约(未过期) String endTime = shiftMap.get("endTime").toString(); boolean isExpired = false; // 如果是今天,比较时间;如果是过去的日期,则已过期 if (date.equals(today)) { // 比较当前时间和班次结束时间 isExpired = currentTime.compareTo(endTime) >= 0; } else if (date.compareTo(today) < 0) { // 过去的日期 isExpired = true; } if (isExpired) { // 已过期,不可预约 shiftItem.setStatus(2); shiftItem.setStatusText("已过期"); shiftItem.setCanOperate(false); } else { // 可预约 shiftItem.setStatus(3); shiftItem.setStatusText("可预约"); shiftItem.setCanOperate(false); } } shifts.add(shiftItem); @@ -394,6 +431,12 @@ result.setStartSiteName(data.get("startSiteName") != null ? data.get("startSiteName").toString() : null); result.setEndSiteId(data.get("endSiteId") != null ? Integer.parseInt(data.get("endSiteId").toString()) : null); result.setEndSiteName(data.get("endSiteName") != null ? data.get("endSiteName").toString() : null); // 城市信息 result.setStartCityName(data.get("startCityName") != null ? data.get("startCityName").toString() : null); result.setEndCityName(data.get("endCityName") != null ? data.get("endCityName").toString() : null); // 经纬度信息 result.setStartLonLat(data.get("startLonLat") != null ? data.get("startLonLat").toString() : null); result.setEndLonLat(data.get("endLonLat") != null ? data.get("endLonLat").toString() : null); // 默认点信息 result.setDefaultPointAddress(data.get("defaultPointAddress") != null ? data.get("defaultPointAddress").toString() : null); result.setDefaultPointLon(data.get("defaultPointLon") != null ? Double.parseDouble(data.get("defaultPointLon").toString()) : null); DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/ScanOrderDetailWarpper.java
@@ -74,6 +74,24 @@ @ApiModelProperty("默认下车站点名称") private String endSiteName; @ApiModelProperty("线路起点站点城市名称") private String startCityName; @ApiModelProperty("线路起点站点城市ID") private String startCityId; @ApiModelProperty("线路结束站点城市名称") private String endCityName; @ApiModelProperty("线路结束站点城市ID") private String endCityId; @ApiModelProperty("起点站点经纬度") private String startLonLat; @ApiModelProperty("终点站点经纬度") private String endLonLat; // ========== 其他信息 ========== @ApiModelProperty("其他费用") private Double otherFee; DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/DriverMapper.xml
@@ -512,7 +512,8 @@ (select count(id) from t_order_logistics where driverId = a.id and state in (6, 9) and DATE_FORMAT(insertTime, '%Y%m') = DATE_FORMAT(now(), '%Y%m')) ) as mouthNum, ((select sum(fraction) from t_order_evaluate where driverId = a.id) / (select count(fraction) from t_order_evaluate where driverId = a.id)) as score, if((select count(id) from t_driver_work where driverId = a.id and state = 1) != 0, 1, 2) as `work` if((select count(id) from t_driver_work where driverId = a.id and state = 1) != 0, 1, 2) as `work`, (select `type` from t_driver_work where driverId = a.id and state = 1 order by startTime desc limit 1) as workType from t_driver a left join t_car b on (a.carId = b.id) left join t_car_model c on (b.carModelId = c.id) DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/HomeWarpper.java
@@ -21,6 +21,8 @@ private Integer activity; @ApiModelProperty("上下班状态(1=上班,2=下班)") private Integer work; @ApiModelProperty("上班业务类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城,6=包车)多个用逗号分隔") private String workType; public String getLicensePlate() { return licensePlate; @@ -86,6 +88,14 @@ this.work = work; } public String getWorkType() { return workType; } public void setWorkType(String workType) { this.workType = workType; } @Override public String toString() { return "HomeWarpper{" + @@ -96,6 +106,7 @@ ", score=" + score + ", activity=" + activity + ", work=" + work + ", workType='" + workType + '\'' + '}'; } @@ -109,6 +120,7 @@ homeWarpper.setScore(null != map.get("score") ? Double.valueOf(String.valueOf(map.get("score"))) : 0); homeWarpper.setActivity(null != map.get("activity") ? Integer.valueOf(String.valueOf(map.get("activity"))) : 0); homeWarpper.setWork(null != map.get("work") ? Integer.valueOf(String.valueOf(map.get("work"))) : 0); homeWarpper.setWorkType(null != map.get("workType") ? String.valueOf(map.get("workType")) : ""); } return homeWarpper; }