package com.stylefeng.guns.modular.system.controller.specialTrain; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.stylefeng.guns.core.base.controller.BaseController; import com.stylefeng.guns.core.common.constant.factory.PageFactory; import com.stylefeng.guns.core.shiro.ShiroKit; import com.stylefeng.guns.core.shiro.ShiroUser; import com.stylefeng.guns.core.util.SinataUtil; import com.stylefeng.guns.modular.system.dao.LineShiftDriverMapper; import com.stylefeng.guns.modular.system.dao.OrderCancelMapper; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.HttpRequestUtil; //import com.stylefeng.guns.modular.system.util.ICBCPayUtil; import com.stylefeng.guns.modular.system.util.PayMoneyUtil; import com.stylefeng.guns.modular.system.util.PushURL; import com.stylefeng.guns.modular.system.util.ResultUtil; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.beans.factory.annotation.Autowired; import com.stylefeng.guns.core.log.LogObjectHolder; import org.springframework.web.bind.annotation.RequestParam; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; /** * 专车改派管理控制器 * * @author fengshuonan * @Date 2020-09-03 14:20:27 */ @Controller @RequestMapping("/tReassign") public class TReassignController extends BaseController { private String PREFIX = "/system/tReassign/"; @Autowired private ITReassignService tReassignService; @Autowired private ITOrderPrivateCarService itOrderPrivateCarService; @Autowired private ITOrderCrossCityService itOrderCrossCityService; @Autowired private ITDriverService itDriverService; @Resource private LineShiftDriverMapper lineShiftDriverMapper; @Autowired private ITDispatchService dispatchService; @Resource private OrderCancelMapper orderCancelMapper; // @Autowired // private ICBCPayUtil icbcPayUtil; @Autowired private ITUserService userService; @Autowired private ITransactionDetailsService transactionDetailsService; @Autowired private IPaymentRecordService paymentRecordService; @Autowired private IIncomeService incomeService; @Autowired private ITOrderLogisticsService orderLogisticsService; /** * 跳转到专车改派管理首页 */ @RequestMapping("") public String index() { return PREFIX + "tReassign.html"; } /** * 跳转到跨城出行改派管理首页 */ @RequestMapping("/cross") public String corse() { return PREFIX + "cross.html"; } /** * 跳转到小件物流改派管理首页 */ @RequestMapping("/smallPieceLogistics") public String smallPieceLogistics() { return PREFIX + "smallPieceLogistics.html"; } /** * 跳转到添加专车改派管理 */ @RequestMapping("/tReassign_add") public String tReassignAdd() { return PREFIX + "tReassign_add.html"; } /** * 跳转到修改专车改派管理 */ @RequestMapping("/tReassign_update/{tReassignId}") public String tReassignUpdate(@PathVariable Integer tReassignId, Model model) { TReassign tReassign = tReassignService.selectById(tReassignId); model.addAttribute("item",tReassign); LogObjectHolder.me().set(tReassign); return PREFIX + "tReassign_edit.html"; } /** * 跳转到修改专车改派管理 */ @RequestMapping("/tReassign_reassignment/{tReassignId}") public String tReassign_reassignment(@PathVariable Integer tReassignId, Model model) { model.addAttribute("tReassignId",tReassignId); return PREFIX + "tReassign_reassignment.html"; } /** * 跳转到修改跨城改派管理 */ @RequestMapping("/tReassign_reassignmentCross/{tReassignId}") public String tReassign_reassignmentCross(@PathVariable Integer tReassignId, Model model) { model.addAttribute("tReassignId",tReassignId); return PREFIX + "tReassign_reassignmentCross.html"; } /** * 跳转到修改跨城改派管理 */ @RequestMapping("/tReassign_reassignmentSmall/{tReassignId}") public String tReassign_reassignmentSmall(@PathVariable Integer tReassignId, Model model) { model.addAttribute("tReassignId",tReassignId); return PREFIX + "tReassign_reassignmentSmall.html"; } /** * 获取专车改派管理列表 */ @RequestMapping(value = "/list") @ResponseBody public Object list(String insertTime, String originalDriverName, String originalDriverPhone, String orderNum, String nowDriverName, String nowDriverPhone, Integer orderState, Integer state) { String beginTime = null; String endTime = null; if (SinataUtil.isNotEmpty(insertTime)){ String[] timeArray = insertTime.split(" - "); beginTime = timeArray[0]; endTime = timeArray[1]; } Page> page = new PageFactory>().defaultPage(); page.setRecords(tReassignService.getPrivateCarReassignOrderList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state)); return super.packForBT(page); } /** * 获取跨城改派管理列表 */ @RequestMapping(value = "/listCross") @ResponseBody public Object listCross(String insertTime, String originalDriverName, String originalDriverPhone, String orderNum, String nowDriverName, String nowDriverPhone, Integer orderState, Integer state) { String beginTime = null; String endTime = null; if (SinataUtil.isNotEmpty(insertTime)){ String[] timeArray = insertTime.split(" - "); beginTime = timeArray[0]; endTime = timeArray[1]; } Page> page = new PageFactory>().defaultPage(); page.setRecords(tReassignService.getCrossReassignOrderList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state)); return super.packForBT(page); } /** * 获取跨城改派管理列表 */ @RequestMapping(value = "/listSmallPieceLogistics") @ResponseBody public Object listSmallPieceLogistics(String insertTime, String originalDriverName, String originalDriverPhone, String orderNum, String nowDriverName, String nowDriverPhone, Integer orderState, Integer state) { String beginTime = null; String endTime = null; if (SinataUtil.isNotEmpty(insertTime)){ String[] timeArray = insertTime.split(" - "); beginTime = timeArray[0]; endTime = timeArray[1]; } Page> page = new PageFactory>().defaultPage(); page.setRecords(tReassignService.getSmallPieceLogisticsList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state)); return super.packForBT(page); } /** * 选择司机列表 */ @RequestMapping(value = "/selectDriver/{orderId}") @ResponseBody public Object selectDriver(@PathVariable Integer orderId, String name, String phone) { TReassign reassign = tReassignService.selectById(orderId); TOrderPrivateCar privateCar = itOrderPrivateCarService.selectById(reassign.getOrderId()); Page> page = new PageFactory>().defaultPage(); page.setRecords(tReassignService.getCanSelectPrivateCarDriverList(page,privateCar.getCompanyId(),name,phone)); return super.packForBT(page); } /** * 选择司机列表 */ @RequestMapping(value = "/selectCrossDriver/{orderId}") @ResponseBody public Object selectCrossDriver(@PathVariable Integer orderId, String name, String phone) { TReassign reassign = tReassignService.selectById(orderId); TOrderCrossCity tOrderCrossCity = itOrderCrossCityService.selectById(reassign.getOrderId()); LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(tOrderCrossCity.getLineShiftDriverId()); Page> page = new PageFactory>().defaultPage(); page.setRecords(tReassignService.getCanSelectCrossDriverList(page, tOrderCrossCity.getCompanyId(), tOrderCrossCity.getServerCarModelId(), tOrderCrossCity.getLineId(), lineShiftDriver.getLineShiftId(), tOrderCrossCity.getTravelTime(), tOrderCrossCity.getPeopleNumber(), name, phone, tOrderCrossCity.getDriverId())); return super.packForBT(page); } /** * 选择司机列表 */ @RequestMapping(value = "/selectSmallDriver/{orderId}") @ResponseBody public Object selectSmallDriver(@PathVariable Integer orderId, String name, String phone) { TReassign reassign = tReassignService.selectById(orderId); TOrderLogistics tOrderLogistics = orderLogisticsService.selectById(reassign.getOrderId()); Page> page = new PageFactory>().defaultPage(); page.setRecords(tReassignService.getCanSelectSmallDriverList(page,tOrderLogistics.getCompanyId(), tOrderLogistics.getType(),name,phone)); return super.packForBT(page); } /** * 操作专车改派管理 * optType 1=拒绝 2=取消 */ @RequestMapping(value = "/opt") @ResponseBody public Object opt(@RequestParam Integer tReassignId,@RequestParam Integer optType) { ShiroUser user = ShiroKit.getUser(); TReassign tReassign = tReassignService.selectById(tReassignId); if (1 == optType){ tReassign.setState(5); tReassignService.updateById(tReassign); //还原订单状态 TOrderPrivateCar tOrderPrivateCar = itOrderPrivateCarService.selectById(tReassign.getOrderId()); tOrderPrivateCar.setState(tOrderPrivateCar.getOldState()); itOrderPrivateCarService.updateById(tOrderPrivateCar); }else if (2 == optType){ tReassign.setState(4); tReassignService.updateById(tReassign); //修改订单状态"已取消" TOrderPrivateCar tOrderPrivateCar = itOrderPrivateCarService.selectById(tReassign.getOrderId()); tOrderPrivateCar.setState(10); itOrderPrivateCarService.updateById(tOrderPrivateCar); //修改司机状态"空闲" TDriver driver = itDriverService.selectById(tReassign.getOriginalDriverId()); driver.setState(2); itDriverService.updateById(driver); //添加取消记录 OrderCancel orderCancel = new OrderCancel(); orderCancel.setOrderId(tReassign.getOrderId()); orderCancel.setOrderType(tReassign.getOrderType()); orderCancel.setReason("调度端取消订单"); orderCancel.setRemark("调度“" + user.getName() + "-" + user.getId() + "”执行取消操作"); orderCancel.setState(2); orderCancel.setInsertTime(new Date()); orderCancel.setUserType(3); orderCancel.setUserId(user.getId()); orderCancelMapper.insert(orderCancel); //调用推送 Map map = new HashMap<>(); map.put("id", tOrderPrivateCar.getId().toString()); map.put("orderType", "1"); String result = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map); System.out.println("专车取消:【orderId="+tOrderPrivateCar.getId().toString()+"】,调用接口:"+result); } //返回驾驶员处罚金 TDriver originalDriver = itDriverService.selectById(tReassign.getOriginalDriverId()); //增加交易明细 TPubTransactionDetails details = new TPubTransactionDetails(); details.setUserId(originalDriver.getId()); details.setInsertTime(new Date()); details.setRemark("【专车改派】:改派失败或订单取消"); details.setMoney(new BigDecimal(tReassign.getMoney())); details.setState(1); details.setType(1); details.setUserType(2); details.setOrderType(3); details.setOrderId(tReassign.getOrderId()); itPubTransactionDetailsService.insert(details); return SUCCESS_TIP; } @Autowired private ITPubTransactionDetailsService itPubTransactionDetailsService; /** * 操作跨城改派管理 * optType 1=拒绝 2=取消 */ @RequestMapping(value = "/optCross") @ResponseBody public Object optCross(@RequestParam Integer tReassignId,@RequestParam Integer optType) { try { TReassign tReassign = tReassignService.selectById(tReassignId); ShiroUser user = ShiroKit.getUser(); if (1 == optType){ tReassign.setState(5); tReassign.setReviewer(user.getId()); tReassign.setReviewerType(2); tReassignService.updateById(tReassign); //还原订单状态 TOrderCrossCity tOrderCrossCity = itOrderCrossCityService.selectById(tReassign.getOrderId()); tOrderCrossCity.setState(tOrderCrossCity.getOldState()); itOrderCrossCityService.updateById(tOrderCrossCity); }else if (2 == optType){ tReassign.setState(4); tReassign.setReviewer(user.getId()); tReassign.setReviewerType(2); tReassignService.updateById(tReassign); TOrderCrossCity orderCrossCity = itOrderCrossCityService.selectById(tReassign.getOrderId()); if(orderCrossCity.getState() > 5 && orderCrossCity.getState() != 11){ return ResultUtil.error("订单状态不在可取消范围内"); } orderCrossCity.setState(10); itOrderCrossCityService.updateById(orderCrossCity); //修改司机信息 LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId()); lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber() > lineShiftDriver.getTotalSeat() ? lineShiftDriver.getTotalSeat() : lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber()); String seat = ""; String[] split = orderCrossCity.getSeatNumber().split(","); for(String s : split){ seat += s + ","; } seat = lineShiftDriver.getLaveSeatNumber() + "," + seat.substring(0, seat.length() - 1); //总和大于总座位数的情况 if(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber() > lineShiftDriver.getTotalSeat()){ seat = ""; for(int i = 1; i <= lineShiftDriver.getTotalSeat(); i++){ seat += i + ","; } seat = seat.substring(0, seat.length() - 1); } lineShiftDriver.setLaveSeatNumber(seat); lineShiftDriverMapper.updateById(lineShiftDriver); if(lineShiftDriver.getLaveSeat() >= lineShiftDriver.getTotalSeat()){ TDriver driver = itDriverService.selectById(tReassign.getOriginalDriverId()); driver.setState(2); itDriverService.updateById(driver); } //调用推送 Map map = new HashMap<>(); map.put("id", orderCrossCity.getId().toString()); map.put("orderType", "3"); String result = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map); System.out.println("跨城出行取消:【orderId="+orderCrossCity.getId().toString()+"】,调用接口:"+result); //已支付的情况下进行退款操作 if(null != orderCrossCity.getPayType() && null != orderCrossCity.getPayMoney()){ if(orderCrossCity.getPayType() == 3){//余额支付 TUser tUser = userService.selectById(orderCrossCity.getUserId()); tUser.setBalance(tUser.getBalance().add(orderCrossCity.getPayMoney())); userService.updateById(tUser); //添加交易明细 transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", orderCrossCity.getPayMoney().doubleValue(), 1, 1, 1, 3, tReassign.getOrderId()); }else{ PaymentRecord query = paymentRecordService.query(1, null, null, tReassign.getOrderId(), 3, null, 2).get(0); if(null == query){ return ResultUtil.error("订单还未进行支付"); } // Map merrefund = icbcPayUtil.merrefund(query.getCode(), "", query.getAmount(), tReassign.getOrderId() + "_3", orderCrossCity.getOrderNum()); // if(Integer.valueOf(merrefund.get("code").toString()) == 0){ // boolean b = true; // while (b){ // Map refundqry = icbcPayUtil.refundqry("", query.getCode(), orderCrossCity.getOrderNum()); // if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 0){//成功 // //添加交易明细 // transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", query.getAmount(), 1, 1, 1, 3, tReassign.getOrderId()); // } // if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 1){//失败 // return ResultUtil.error("订单取消失败(退款不成功)"); // } // if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 2){//未知 // return ResultUtil.error("退款返回未知异常"); // } // } // } } //添加负的收入明细 List incomes = incomeService.selectList(new EntityWrapper().eq("type", 2).eq("incomeId", tReassign.getOrderId()).eq("orderType", 3)); for(Income income : incomes){ if(income.getUserType() == 2){//处理司机的收入 TDriver driver = itDriverService.selectById(income.getObjectId()); driver.setBalance(driver.getBalance().subtract(new BigDecimal(income.getMoney()))); driver.setLaveBusinessMoney(new BigDecimal(driver.getLaveBusinessMoney()).subtract(new BigDecimal(income.getMoney())).doubleValue()); driver.setBusinessMoney(new BigDecimal(driver.getBusinessMoney()).subtract(new BigDecimal(income.getMoney())).doubleValue()); itDriverService.updateById(driver); } Income income1 = new Income(); BeanUtils.copyProperties(income, income1); income1.setMoney(income.getMoney() * -1); income1.setId(null); income1.setInsertTime(new Date()); incomeService.insert(income1); } } //添加取消记录 OrderCancel orderCancel = new OrderCancel(); orderCancel.setOrderId(tReassign.getOrderId()); orderCancel.setOrderType(tReassign.getOrderType()); orderCancel.setReason("调度端取消订单"); orderCancel.setRemark("调度“" + user.getName() + "-" + user.getId() + "”执行取消操作"); orderCancel.setState(2); orderCancel.setInsertTime(new Date()); orderCancel.setUserType(3); orderCancel.setUserId(user.getId()); orderCancelMapper.insert(orderCancel); } //返回驾驶员处罚金 TDriver originalDriver = itDriverService.selectById(tReassign.getOriginalDriverId()); //增加交易明细 TPubTransactionDetails details = new TPubTransactionDetails(); details.setUserId(originalDriver.getId()); details.setInsertTime(new Date()); details.setRemark("【跨城改派】:改派失败或订单取消"); details.setMoney(new BigDecimal(tReassign.getMoney())); details.setState(1); details.setType(1); details.setUserType(2); details.setOrderType(3); details.setOrderId(tReassign.getOrderId()); itPubTransactionDetailsService.insert(details); }catch (Exception e){ e.printStackTrace(); } return SUCCESS_TIP; } /** * 操作专车改派管理 * optType 1=拒绝 2=取消 */ @RequestMapping(value = "/optSmall") @ResponseBody public Object optSmall(@RequestParam Integer tReassignId,@RequestParam Integer optType) { try { ShiroUser user = ShiroKit.getUser(); TReassign tReassign = tReassignService.selectById(tReassignId); if (1 == optType){ tReassign.setState(5); tReassignService.updateById(tReassign); //还原订单状态 TOrderLogistics tOrderLogistics = orderLogisticsService.selectById(tReassign.getOrderId()); tOrderLogistics.setState(tOrderLogistics.getOldState()); orderLogisticsService.updateById(tOrderLogistics); }else if (2 == optType){ tReassign.setState(4); tReassignService.updateById(tReassign); //修改订单状态"已取消" TOrderLogistics tOrderLogistics = orderLogisticsService.selectById(tReassign.getOrderId()); tOrderLogistics.setState(10); orderLogisticsService.updateById(tOrderLogistics); //添加取消记录 OrderCancel orderCancel = new OrderCancel(); orderCancel.setOrderId(tReassign.getOrderId()); orderCancel.setOrderType(tReassign.getOrderType()); orderCancel.setReason("调度端取消订单"); orderCancel.setRemark("调度“" + user.getName() + "-" + user.getId() + "”执行取消操作"); orderCancel.setState(2); orderCancel.setInsertTime(new Date()); orderCancel.setUserType(3); orderCancel.setUserId(user.getId()); orderCancelMapper.insert(orderCancel); //调用推送 Map map = new HashMap<>(); map.put("id", tOrderLogistics.getId().toString()); map.put("orderType", tOrderLogistics.getType().toString()); String result = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map); System.out.println("小件物流取消:【orderId="+tOrderLogistics.getId().toString()+"】,调用接口:"+result); //已支付的情况下进行退款操作 if(null != tOrderLogistics.getPayType() && null != tOrderLogistics.getPayMoney()) { if (tOrderLogistics.getPayType() == 3) {//余额支付 TUser tUser = userService.selectById(tOrderLogistics.getUserId()); tUser.setBalance(tUser.getBalance().add(tOrderLogistics.getPayMoney())); userService.updateById(tUser); } else { List paymentRecords = paymentRecordService.query(1, null, null, tOrderLogistics.getId(), tOrderLogistics.getType(), null, 2); if (paymentRecords.size() == 0) { return ResultUtil.error("订单还未进行支付"); } boolean b = false; for(PaymentRecord query : paymentRecords){ // Map merrefund = icbcPayUtil.merrefund(query.getCode(), "", query.getAmount(), tOrderLogistics.getId() + "_" + tOrderLogistics.getType(), tOrderLogistics.getOrderNum()); // if (Integer.valueOf(merrefund.get("code").toString()) == 0) { // Map refundqry = icbcPayUtil.refundqry("", query.getCode(), tOrderLogistics.getOrderNum()); // if (Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 0) {//成功 // b = true; // } // if (Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 1) {//失败 // return ResultUtil.error("订单取消失败(退款不成功)"); // } // if (Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 2) {//未知 // return ResultUtil.error("退款返回未知异常"); // } // } } if(b){ //添加交易明细 } } transactionDetailsService.saveData(tOrderLogistics.getUserId(), "小件订单取消退款", tOrderLogistics.getPayMoney().doubleValue(), 1, 1, 1, 4, tOrderLogistics.getId()); //添加负的收入明细 List incomes = incomeService.selectList(new EntityWrapper().eq("type", 2).eq("incomeId", tOrderLogistics.getId()).eq("orderType", tOrderLogistics.getType())); for(Income income : incomes){ if(income.getUserType() == 2){//处理司机的收入 TDriver driver = itDriverService.selectById(income.getObjectId()); driver.setBalance(driver.getBalance().subtract(new BigDecimal(income.getMoney()))); driver.setLaveBusinessMoney(new BigDecimal(driver.getLaveBusinessMoney()).subtract(new BigDecimal(income.getMoney())).doubleValue()); driver.setBusinessMoney(new BigDecimal(driver.getBusinessMoney()).subtract(new BigDecimal(income.getMoney())).doubleValue()); itDriverService.updateById(driver); } Income income1 = new Income(); BeanUtils.copyProperties(income, income1); income1.setMoney(income.getMoney() * -1); income1.setId(null); income1.setInsertTime(new Date()); incomeService.insert(income1); } } } //返回驾驶员处罚金 TDriver originalDriver = itDriverService.selectById(tReassign.getOriginalDriverId()); //增加交易明细 TPubTransactionDetails details = new TPubTransactionDetails(); details.setUserId(originalDriver.getId()); details.setInsertTime(new Date()); details.setRemark("【小件物流】:改派失败或订单取消"); details.setMoney(new BigDecimal(tReassign.getMoney())); details.setState(1); details.setType(1); details.setUserType(2); details.setOrderType(tReassign.getOrderType()); details.setOrderId(tReassign.getOrderId()); itPubTransactionDetailsService.insert(details); }catch (Exception e){ e.printStackTrace(); } return SUCCESS_TIP; } /** * 专车订单改派司机 */ @RequestMapping(value = "/selectDriver") @ResponseBody public Object selectDriver(@RequestParam Integer orderId,@RequestParam Integer driverId) { //修改订单 TReassign tReassign = tReassignService.selectById(orderId); TOrderPrivateCar tOrderPrivateCar = itOrderPrivateCarService.selectById(tReassign.getOrderId()); //修改之前司机状态 -- 空闲 TDriver oldDriver = itDriverService.selectById(tReassign.getOriginalDriverId()); oldDriver.setState(2); itDriverService.updateById(oldDriver); //查找司机对象 TDriver nowDriver = itDriverService.selectById(driverId); nowDriver.setState(3); itDriverService.updateById(nowDriver); //修改专车订单 tOrderPrivateCar.setState(tOrderPrivateCar.getOldState()); tOrderPrivateCar.setDriverId(driverId); tOrderPrivateCar.setCarId(nowDriver.getCarId()); itOrderPrivateCarService.updateById(tOrderPrivateCar); //修改专车改派订单 tReassign.setNowDriverId(driverId); tReassign.setNowCarId(nowDriver.getCarId()); tReassign.setState(3); tReassign.setCompleteTime(new Date()); tReassignService.updateById(tReassign); //增加推送 Map map = new HashMap<>(); map.put("orderId", tOrderPrivateCar.getId().toString()); map.put("orderType", "1"); String result = HttpRequestUtil.postRequest(PushURL.order_push_url, map); System.out.println("专车改派:【orderId="+tOrderPrivateCar.getId().toString()+"】,调用接口:"+result); return SUCCESS_TIP; } /** * 跨城出行订单改派司机 */ @RequestMapping(value = "/selectCrossDriver") @ResponseBody public Object selectCrossDriver(@RequestParam Integer orderId,@RequestParam Integer driverId) { //修改原司机信息 //修改订单 TReassign tReassign = tReassignService.selectById(orderId); TOrderCrossCity tOrderCrossCity = itOrderCrossCityService.selectById(tReassign.getOrderId()); TDriver oldDriver = itDriverService.selectById(tReassign.getOriginalDriverId()); LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(tOrderCrossCity.getLineShiftDriverId()); lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + tOrderCrossCity.getPeopleNumber() > lineShiftDriver.getTotalSeat() ? lineShiftDriver.getTotalSeat() : lineShiftDriver.getLaveSeat() + tOrderCrossCity.getPeopleNumber()); String seat = ""; String[] split = tOrderCrossCity.getSeatNumber().split(","); for(String s : split){ seat += s + ","; } seat = lineShiftDriver.getLaveSeatNumber() + "," + seat.substring(0, seat.length() - 1); //总和大于总座位数的情况 if(lineShiftDriver.getLaveSeat() + tOrderCrossCity.getPeopleNumber() > lineShiftDriver.getTotalSeat()){ seat = ""; for(int i = 1; i <= lineShiftDriver.getTotalSeat(); i++){ seat += i + ","; } seat = seat.substring(0, seat.length() - 1); } lineShiftDriver.setLaveSeatNumber(seat); lineShiftDriverMapper.updateById(lineShiftDriver); if(lineShiftDriver.getLaveSeat() >= lineShiftDriver.getTotalSeat()){ oldDriver.setState(2); itDriverService.updateById(oldDriver); } //修改新司机数据 List query = lineShiftDriverMapper.query(lineShiftDriver.getLineShiftId(), driverId, tOrderCrossCity.getTravelTime()); if(query.size() == 0){ return ResultUtil.error("司机没有预约班次"); } LineShiftDriver lineShiftDriver1 = query.get(0); if(lineShiftDriver1.getLaveSeat() < tOrderCrossCity.getPeopleNumber()){ return ResultUtil.runErr("司机车辆剩余座位数不足"); } lineShiftDriver1.setLaveSeat(lineShiftDriver1.getLaveSeat() - tOrderCrossCity.getPeopleNumber()); String[] split1 = lineShiftDriver1.getLaveSeatNumber().split(","); String seat1 = "";//使用 String seat2 = "";//未使用 for(int i = 0; i < tOrderCrossCity.getPeopleNumber(); i++){ seat1 += split1[i] + ","; } for(int i = tOrderCrossCity.getPeopleNumber(); i < split.length; i++){ seat2 += split1[i] + ","; } lineShiftDriver1.setLaveSeatNumber(seat2); lineShiftDriverMapper.updateById(lineShiftDriver1); TDriver driver = itDriverService.selectById(driverId); if(driver.getState() == 1){ return ResultUtil.error("司机还未上班呢"); } if(driver.getState() == 2){ driver.setState(3); } //修改订单数据 tOrderCrossCity.setDriverId(driverId); tOrderCrossCity.setCarId(driver.getCarId()); tOrderCrossCity.setSeatNumber(seat1); tOrderCrossCity.setState(tOrderCrossCity.getOldState()); tOrderCrossCity.setLineShiftDriverId(lineShiftDriver1.getId()); tOrderCrossCity.setOldState(null); tOrderCrossCity.setIsReassign(2); try { tOrderCrossCity.setOrderNum(itOrderCrossCityService.getOrderNum(driverId, tOrderCrossCity.getLineShiftDriverId())); } catch (Exception e) { e.printStackTrace(); } itOrderCrossCityService.updateAllColumnById(tOrderCrossCity); //修改专车改派订单 tReassign.setNowDriverId(driverId); tReassign.setNowCarId(driver.getCarId()); tReassign.setState(3); tReassign.setCompleteTime(new Date()); tReassignService.updateById(tReassign); //修改收入明细,转给新司机(因为是先支付金额) List incomes = incomeService.selectList(new EntityWrapper().eq("userType", 2).eq("objectId", oldDriver.getId()).eq("type", 2).eq("incomeId", tReassign.getOrderId()).eq("orderType", 3)); if(incomes.size() > 0){ Income income = incomes.get(0); income.setObjectId(driverId); incomeService.updateById(income); oldDriver.setBusinessMoney(oldDriver.getBusinessMoney() - income.getMoney()); oldDriver.setLaveBusinessMoney(oldDriver.getLaveBusinessMoney() - income.getMoney()); oldDriver.setBalance(oldDriver.getBalance().subtract(new BigDecimal(income.getMoney()))); driver.setBusinessMoney(driver.getBusinessMoney() + income.getMoney()); driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() + income.getMoney()); driver.setBalance(driver.getBalance().add(new BigDecimal(income.getMoney()))); } itDriverService.updateById(oldDriver); itDriverService.updateById(driver); //增加推送 Map map = new HashMap<>(); map.put("orderId", tOrderCrossCity.getId().toString()); map.put("orderType", "3"); String result = HttpRequestUtil.postRequest(PushURL.order_push_url, map); System.out.println("跨城出行改派:【orderId="+tOrderCrossCity.getId().toString()+"】,调用接口:"+result); return SUCCESS_TIP; } /** * 专车订单改派司机 */ @RequestMapping(value = "/selectSmallDriver") @ResponseBody public Object selectSmallDriver(@RequestParam Integer orderId,@RequestParam Integer driverId) { //修改订单 TReassign tReassign = tReassignService.selectById(orderId); TOrderLogistics tOrderLogistics = orderLogisticsService.selectById(tReassign.getOrderId()); TDriver nowDriver = itDriverService.selectById(driverId); //修改专车订单 tOrderLogistics.setState(tOrderLogistics.getOldState()); tOrderLogistics.setDriverId(driverId); tOrderLogistics.setCarId(nowDriver.getCarId()); orderLogisticsService.updateById(tOrderLogistics); tReassign.setNowDriverId(driverId); tReassign.setNowCarId(nowDriver.getCarId()); tReassign.setState(3); tReassign.setCompleteTime(new Date()); tReassignService.updateById(tReassign); List incomes = incomeService.selectList(new EntityWrapper().eq("userType", 2).eq("type", 2).eq("incomeId", tOrderLogistics.getId()).eq("orderType", tOrderLogistics.getType())); for(Income income : incomes){ income.setObjectId(driverId); incomeService.updateById(income); TDriver driver = itDriverService.selectById(tReassign.getOriginalDriverId()); driver.setBalance(driver.getBalance().subtract(new BigDecimal(income.getMoney()))); driver.setBusinessMoney(driver.getBusinessMoney() - income.getMoney()); driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() - income.getMoney()); itDriverService.updateById(driver); driver = itDriverService.selectById(driverId); driver.setBalance(driver.getBalance().add(new BigDecimal(income.getMoney()))); driver.setBusinessMoney(driver.getBusinessMoney() + income.getMoney()); driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() + income.getMoney()); itDriverService.updateById(driver); } //增加推送 Map map = new HashMap<>(); map.put("orderId", tOrderLogistics.getId().toString()); map.put("orderType", tOrderLogistics.getType().toString()); String result = HttpRequestUtil.postRequest(PushURL.order_push_url, map); System.out.println("小件物流改派:【orderId="+tOrderLogistics.getId().toString()+"】,调用接口:"+result); return SUCCESS_TIP; } }