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.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<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
|
page.setRecords(tReassignService.getPrivateCarReassignOrderList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state));
|
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<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage();
|
page.setRecords(tReassignService.getCrossReassignOrderList(page,ShiroKit.getUser().getRoleType(),ShiroKit.getUser().getObjectId(),beginTime,endTime,originalDriverName,originalDriverPhone,orderNum,nowDriverName,nowDriverPhone,orderState,state));
|
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<Map<String, Object>> page = new PageFactory<Map<String, Object>>().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<Map<String, Object>> page = new PageFactory<Map<String, Object>>().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<Map<String, Object>> page = new PageFactory<Map<String, Object>>().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<Map<String, Object>> page = new PageFactory<Map<String, Object>>().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("The platform cancels the order");
|
orderCancel.setRemark("The platform cancels the order");
|
orderCancel.setState(2);
|
orderCancel.setInsertTime(new Date());
|
orderCancel.setUserType(3);
|
orderCancel.setUserId(user.getId());
|
orderCancelMapper.insert(orderCancel);
|
|
//调用推送
|
Map<String,String> map = new HashMap<>();
|
map.put("id", 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());
|
// originalDriver.setBalance(originalDriver.getBalance().add(new BigDecimal(tReassign.getMoney())));
|
// itDriverService.updateById(originalDriver);
|
|
//增加交易明细
|
// 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<String,String> map = new HashMap<>();
|
map.put("id", orderCrossCity.getId().toString());
|
map.put("orderType", "3");
|
String result = HttpRequestUtil.postRequest(PushURL.cancel_order_url, map);
|
System.out.println("跨城出行取消:【orderId="+orderCrossCity.getId().toString()+"】,调用接口:"+result);
|
|
|
//已支付的情况下进行退款操作
|
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);
|
if(null == query){
|
return ResultUtil.error("订单还未进行支付");
|
}
|
/*Map<String, Object> merrefund = icbcPayUtil.merrefund(query.getCode(), "", query.getAmount(), tReassign.getOrderId() + "_3", orderCrossCity.getOrderNum());
|
if(Integer.valueOf(merrefund.get("code").toString()) == 0){
|
boolean b = true;
|
while (b){
|
Map<String, Object> refundqry = icbcPayUtil.refundqry("", query.getCode(), orderCrossCity.getOrderNum());
|
if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 0){//成功
|
//添加交易明细
|
transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城订单取消退款", query.getAmount(), 1, 1, 1, 3, tReassign.getOrderId());
|
}
|
if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 1){//失败
|
return ResultUtil.error("订单取消失败(退款不成功)");
|
}
|
if(Integer.valueOf(refundqry.get("code").toString()) == 0 && Integer.valueOf(refundqry.get("pay_status").toString()) == 2){//未知
|
return ResultUtil.error("退款返回未知异常");
|
}
|
}
|
}*/
|
}
|
|
//添加负的收入明细
|
List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("type", 2).eq("incomeId", tReassign.getOrderId()).eq("orderType", 3));
|
for(Income income : incomes){
|
if(income.getUserType() == 2){//处理司机的收入
|
TDriver driver = itDriverService.selectById(income.getObjectId());
|
driver.setBalance(driver.getBalance().subtract(new BigDecimal(income.getMoney())));
|
driver.setLaveBusinessMoney(new BigDecimal(driver.getLaveBusinessMoney()).subtract(new BigDecimal(income.getMoney())).doubleValue());
|
driver.setBusinessMoney(new BigDecimal(driver.getBusinessMoney()).subtract(new BigDecimal(income.getMoney())).doubleValue());
|
itDriverService.updateById(driver);
|
}
|
Income income1 = new Income();
|
BeanUtils.copyProperties(income, income1);
|
income1.setMoney(income.getMoney() * -1);
|
income1.setId(null);
|
income1.setInsertTime(new Date());
|
incomeService.insert(income1);
|
}
|
}
|
|
//添加取消记录
|
OrderCancel orderCancel = new OrderCancel();
|
orderCancel.setOrderId(tReassign.getOrderId());
|
orderCancel.setOrderType(tReassign.getOrderType());
|
orderCancel.setReason("The platform cancels the order");
|
orderCancel.setRemark("The platform cancels the order");
|
orderCancel.setState(2);
|
orderCancel.setInsertTime(new Date());
|
orderCancel.setUserType(3);
|
orderCancel.setUserId(user.getId());
|
orderCancelMapper.insert(orderCancel);
|
}
|
|
//返回驾驶员处罚金
|
TDriver originalDriver = itDriverService.selectById(tReassign.getOriginalDriverId());
|
originalDriver.setBalance(originalDriver.getBalance().add(new BigDecimal(tReassign.getMoney())));
|
itDriverService.updateById(originalDriver);
|
|
//增加交易明细
|
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) {
|
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("The platform cancels the order");
|
orderCancel.setRemark("The platform cancels the order");
|
orderCancel.setState(2);
|
orderCancel.setInsertTime(new Date());
|
orderCancel.setUserType(3);
|
orderCancel.setUserId(user.getId());
|
orderCancelMapper.insert(orderCancel);
|
|
//调用推送
|
Map<String,String> map = new HashMap<>();
|
map.put("id", 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);
|
}
|
|
//返回驾驶员处罚金
|
TDriver originalDriver = itDriverService.selectById(tReassign.getOriginalDriverId());
|
originalDriver.setBalance(originalDriver.getBalance().add(new BigDecimal(tReassign.getMoney())));
|
itDriverService.updateById(originalDriver);
|
|
//增加交易明细
|
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);
|
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<String,String> 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<LineShiftDriver> 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<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().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<String,String> 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);
|
|
//增加推送
|
Map<String,String> 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;
|
}
|
}
|