DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -27,6 +27,7 @@ import com.stylefeng.guns.modular.system.warpper.MerchantCouponListWarpper; import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper; import com.stylefeng.guns.modular.taxi.model.OrderTaxi; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.DateFormatUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -684,8 +685,11 @@ lineShiftDriver.setLaveSeatNumber(""); }else{//拼车 lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() - orderCrossCity.getPeopleNumber()); String[] split = orderCrossCity.getSeatNumber().split(","); String[] split1 = lineShiftDriver.getLaveSeatNumber().split(","); if (StringUtils.isNotEmpty(orderCrossCity.getSeatNumber())){ // 用户已选座的情况 String[] split = orderCrossCity.getSeatNumber().split(","); String seatNumber = ""; //先判断选中座位号和剩余座位号是否匹配 for(String spl : split){ @@ -713,6 +717,38 @@ } } lineShiftDriver.setLaveSeatNumber(ToolUtil.isNotEmpty(seatNumber) ? seatNumber.substring(0, seatNumber.length() - 1) : ""); } else { // 用户未选座的情况,自动分配剩余座位的前peopleNumber个 StringBuilder assignedSeats = new StringBuilder(); StringBuilder remainingSeats = new StringBuilder(); for(int i = 0; i < split1.length; i++){ if(ToolUtil.isEmpty(split1[i])){ continue; } if(i < orderCrossCity.getPeopleNumber()){ // 分配给当前订单的座位 if(assignedSeats.length() > 0){ assignedSeats.append(","); } assignedSeats.append(split1[i]); } else { // 剩余的座位 if(remainingSeats.length() > 0){ remainingSeats.append(","); } remainingSeats.append(split1[i]); } } // 设置订单的座位号 orderCrossCity.setSeatNumber(assignedSeats.toString()); this.updateById(orderCrossCity); // 更新班次的剩余座位号 lineShiftDriver.setLaveSeatNumber(remainingSeats.toString()); } } lineShiftDriverMapper.updateById(lineShiftDriver); @@ -1607,11 +1643,11 @@ return ResultUtil.error("该乘客有未完成的订单"); } // 9. 检查司机是否正在服务中 List<OrderCrossCity> orderCrossCities2 = orderCrossCityMapper.queryOrders(driverId, warpper.getLineShiftDriverId(), Arrays.asList(5)); if (orderCrossCities2.size() > 0) { return ResultUtil.error("司机正在服务中"); } // // 9. 检查司机是否正在服务中 // List<OrderCrossCity> orderCrossCities2 = orderCrossCityMapper.queryOrders(driverId, warpper.getLineShiftDriverId(), Arrays.asList(5)); // if (orderCrossCities2.size() > 0) { // return ResultUtil.error("司机正在服务中"); // } // // 10. 计算价格 // Map<String, String> distanceMap = gdMapElectricFenceUtil.getDistance( ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSite/tSite_add.html
@@ -45,41 +45,16 @@ </div> <label class="col-sm-1 control-label">类型:</label> <div class="col-sm-2" style="display: flex;align-items: center;"> <div class="radio radio-info radio-inline"> <input type="radio" id="areaType1" value="1" name="areaType" checked="" onclick="TSiteInfoDlg.areaTypeClick(1)"> <label for="areaType1"> 行政区域 </label> </div> <div class="radio radio-success radio-inline"> <input type="radio" id="areaType2" value="2" name="areaType" onclick="TSiteInfoDlg.areaTypeClick(2)"> <label for="areaType2"> 电子围栏 </label> </div> <input type="hidden" id="areaType2" value="2" name="areaType"> <span class="form-control-static">电子围栏</span> </div> <div class="col-sm-2"> <#button btnCss="info" name="添加" id="ensure" icon="fa-check" clickFun="TSiteInfoDlg.addArea()"/> </div> </div> <div class="form-group" id="areaType1Div"> <label class="col-sm-2 control-label">行政区域:</label> <div class="col-sm-2"> <select class="form-control" id="provinceCode1" onchange="TSiteInfoDlg.provinceChange1(this)"> <option value="">选择省</option> @for(obj in provinceList){ <option value="${obj.code}">${obj.name}</option> @} </select> <div class="form-group" id="areaType1Div" style="display: none;"> </div> <div class="col-sm-2"> <select class="form-control" id="cityCode1" onchange="TSiteInfoDlg.cityChange1(this)"> <option value="">选择市</option> </select> </div> <div class="col-sm-2"> <select class="form-control" id="districtCode1"> <option value="">选择区</option> </select> </div> </div> <div class="form-group" id="areaType2Div" style="display: none;"> <div class="form-group" id="areaType2Div"> <label class="col-sm-2 control-label">电子围栏:</label> <div class="col-sm-8"> <div id="container" style="height: 550px;width: 1000px;"></div> ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tSite/tSite_edit.html
@@ -52,41 +52,16 @@ </div> <label class="col-sm-1 control-label">类型:</label> <div class="col-sm-2" style="display: flex;align-items: center;"> <div class="radio radio-info radio-inline"> <input type="radio" id="areaType1" value="1" name="areaType" ${checked1} disabled onclick="TSiteInfoDlg.areaTypeClick(1)"> <label for="areaType1"> 行政区域 </label> </div> <div class="radio radio-success radio-inline"> <input type="radio" id="areaType2" value="2" name="areaType" ${checked2} disabled onclick="TSiteInfoDlg.areaTypeClick(2)"> <label for="areaType2"> 电子围栏 </label> </div> <input type="hidden" id="areaType2" value="2" name="areaType"> <span class="form-control-static">电子围栏</span> </div> <div class="col-sm-2"> <#button btnCss="info" name="添加" id="ensure" icon="fa-check" clickFun="TSiteInfoDlg.addArea()"/> </div> </div> <div class="form-group" id="areaType1Div" style="display: ${type1};"> <label class="col-sm-2 control-label">行政区域:</label> <div class="col-sm-2"> <select class="form-control" id="provinceCode1" onchange="TSiteInfoDlg.provinceChange1(this)"> <option value="">选择省</option> @for(obj in provinceList){ <option value="${obj.code}">${obj.name}</option> @} </select> <div class="form-group" id="areaType1Div" style="display: none;"> </div> <div class="col-sm-2"> <select class="form-control" id="cityCode1" onchange="TSiteInfoDlg.cityChange1(this)"> <option value="">选择市</option> </select> </div> <div class="col-sm-2"> <select class="form-control" id="districtCode1"> <option value="">选择区</option> </select> </div> </div> <div class="form-group" id="areaType2Div" style="display: ${type2};"> <div class="form-group" id="areaType2Div"> <label class="col-sm-2 control-label">电子围栏:</label> <div class="col-sm-8"> <div id="container" style="height: 550px;width: 1000px;"></div> ManagementYKDTravel/guns-admin/src/main/webapp/static/modular/system/tSite/tSite_info.js
@@ -273,13 +273,8 @@ * @param e */ TSiteInfoDlg.areaTypeClick = function (e) { if (1 == e){//行政区域 $("#areaType1Div").show(); $("#areaType2Div").hide(); } else if (2 == e){ $("#areaType2Div").show(); $("#areaType1Div").hide(); } } //站点区域省改变 @@ -323,7 +318,7 @@ Feng.error("区域名称不能为空"); return; } var areaType = $("input[name='areaType']:checked").val(); var areaType = $("input[name='areaType']").val(); var b = false; $(".areaValueClass").each(function () { var areaType1 = $(this).find("input[name*='areaType1']").val(); @@ -336,23 +331,15 @@ Feng.error("电子围栏和行政区域不能混合使用"); return; } if (1 == areaType){ var provinceCode1 = $("#provinceCode1").val(); var province1 = $("#provinceCode1 option:selected").text(); var cityCode1 = $("#cityCode1").val(); var city1 = $("#cityCode1 option:selected").text(); var districtCode1 = $("#districtCode1").val(); var district1 = $("#districtCode1 option:selected").text(); if ("" == provinceCode1){ Feng.error("请选择行政区域所属省"); return; } }else if (2 == areaType) { var provinceCode1 = ""; var province1 = ""; var cityCode1 = ""; var city1 = ""; var districtCode1 = ""; var district1 = ""; if("" == coordinate){ Feng.error('请在地图上规划区域'); return; } } var subArr=[]; $(".areaValueClass").each(function () { @@ -395,3 +382,7 @@ function deleteSub(e) { $(e).parent().parent().remove(); } $(function() { TSiteInfoDlg.areaTypeClick(2); }); UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/LineSiteMapper.java
@@ -29,4 +29,11 @@ */ List<Map<String, Object>> queryDriverBySelfTripId(@Param("selfTripId") Integer selfTripId, @Param("day") Date day, @Param("driverId") Integer driverId); /** * 根据司机id查询企业是否开启选座(1=是,2=否) * @param driverId 司机id * @return 开关值 */ Integer queryChooseSeatByDriverId(@Param("driverId") Integer driverId); } UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineSiteMapper.xml
@@ -93,4 +93,12 @@ </if> limit 1 </select> <select id="queryChooseSeatByDriverId" resultType="java.lang.Integer"> select ifnull(c.isCanSelectSeat, 2) from t_driver d left join t_company c on c.id = ifnull(d.companyId, d.franchiseeId) where d.id = #{driverId} limit 1 </select> </mapper> UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java
@@ -71,8 +71,19 @@ if(c.getTimeInMillis() > sdf.parse(day).getTime()){ throw new SystemException("日期不能小于当天"); } Boolean chooseSeat = false; if (driverId != null) { Integer chooseSeatValue = lineSiteMapper.queryChooseSeatByDriverId(driverId); chooseSeat = (chooseSeatValue != null && chooseSeatValue.intValue() == 1); } if (lineId != null && lineId < 0) { return lineSiteMapper.queryDriverBySelfTripId(Math.abs(lineId), sdf.parse(day), driverId); List<Map<String, Object>> result = lineSiteMapper.queryDriverBySelfTripId(Math.abs(lineId), sdf.parse(day), driverId); for (Map<String, Object> map : result) { map.put("chooseSeat", chooseSeat); } return result; } List<Map<String, Object>> list = new ArrayList<>(); List<LineShift> lineShifts = lineShiftMapper.queryByLineId(lineId); @@ -128,6 +139,12 @@ String content = map.get("content").toString(); JSONObject jsonObject = JSON.parseObject(content); map.put("price", jsonObject.getString("num1")); if (chooseSeat){ map.put("chooseSeat", chooseSeat); }else if (driverId == null){ Integer chooseSeatValue = lineSiteMapper.queryChooseSeatByDriverId(Integer.parseInt(map.get("driverId").toString())); map.put("chooseSeat", chooseSeatValue != null && chooseSeatValue.intValue() == 1); } data = map; list.add(data); } @@ -135,6 +152,7 @@ if(b){ data.put("id", lineShift.getId()); data.put("startTime", lineShift.getStartTime() + "-" + lineShift.getEndTime()); data.put("chooseSeat", chooseSeat); list.add(data); } } UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -32,6 +32,7 @@ import com.stylefeng.guns.modular.taxi.service.IPaymentRecordService; import com.stylefeng.guns.modular.taxi.service.ITransactionDetailsService; import com.stylefeng.guns.modular.taxi.service.impl.OrderTaxiServiceImpl; import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -1398,8 +1399,9 @@ lineShiftDriver.setLaveSeatNumber(""); } else {//拼车 lineShiftDriver.setLaveSeat((lineShiftDriver.getLaveSeat() - orderCrossCity.getPeopleNumber()) < 0 ? 0 : lineShiftDriver.getLaveSeat() - orderCrossCity.getPeopleNumber()); String[] split = orderCrossCity.getSeatNumber().split(","); String[] split1 = lineShiftDriver.getLaveSeatNumber().split(","); if (StringUtils.isNotEmpty(orderCrossCity.getSeatNumber())){ String[] split = orderCrossCity.getSeatNumber().split(","); String seatNumber = ""; //先判断选中座位号和剩余座位号是否匹配 for (String spl : split) { @@ -1428,6 +1430,38 @@ } lineShiftDriver.setLaveSeatNumber((ToolUtil.isNotEmpty(seatNumber) && seatNumber.length() > 0) ? seatNumber.substring(0, seatNumber.length() - 1) : ""); } else { // 用户未选座的情况,自动分配剩余座位的前peopleNumber个 StringBuilder assignedSeats = new StringBuilder(); StringBuilder remainingSeats = new StringBuilder(); for (int i = 0; i < split1.length; i++) { if (ToolUtil.isEmpty(split1[i])) { continue; } if (i < orderCrossCity.getPeopleNumber()) { // 分配给当前订单的座位 if (assignedSeats.length() > 0) { assignedSeats.append(","); } assignedSeats.append(split1[i]); } else { // 剩余的座位 if (remainingSeats.length() > 0) { remainingSeats.append(","); } remainingSeats.append(split1[i]); } } // 设置订单的座位号 orderCrossCity.setSeatNumber(assignedSeats.toString()); this.updateById(orderCrossCity); // 更新班次的剩余座位号 lineShiftDriver.setLaveSeatNumber(remainingSeats.toString()); } } lineShiftDriverMapper.updateById(lineShiftDriver); UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/LineSiteWarpper.java
@@ -43,6 +43,8 @@ private String laveSeatNumber; @ApiModelProperty("剩余座位数") private Integer laveSeat; @ApiModelProperty("是否可以选座") private Boolean chooseSeat; public Integer getId() { @@ -181,6 +183,14 @@ this.laveSeat = laveSeat; } public Boolean getChooseSeat() { return chooseSeat; } public void setChooseSeat(Boolean chooseSeat) { this.chooseSeat = chooseSeat; } @Override public String toString() { return "LineSiteWarpper{" + @@ -226,6 +236,7 @@ lineSiteWarpper.setServerCarModelId(null != map.get("serverCarModelId") ? Integer.valueOf(map.get("serverCarModelId").toString()) : 0); lineSiteWarpper.setLaveSeatNumber(null != map.get("laveSeatNumber") ? map.get("laveSeatNumber").toString() : ""); lineSiteWarpper.setLaveSeat(null != map.get("laveSeat") ? Integer.valueOf(map.get("laveSeat").toString()) : 0); lineSiteWarpper.setChooseSeat(null != map.get("chooseSeat") ? Boolean.valueOf(map.get("chooseSeat").toString()) : false); data.add(lineSiteWarpper); } }