package com.stylefeng.guns.modular.system.service.impl;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
|
import com.stylefeng.guns.core.util.ToolUtil;
|
import com.stylefeng.guns.modular.api.OrderController;
|
import com.stylefeng.guns.modular.crossCity.dao.LineShiftDriverMapper;
|
import com.stylefeng.guns.modular.crossCity.model.LineShiftDriver;
|
import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity;
|
import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService;
|
import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics;
|
import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
|
import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsSpreadService;
|
import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
|
import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService;
|
import com.stylefeng.guns.modular.system.dao.CarModelMapper;
|
import com.stylefeng.guns.modular.system.dao.DispatchMapper;
|
import com.stylefeng.guns.modular.system.dao.ReassignMapper;
|
import com.stylefeng.guns.modular.system.dao.SensitiveWordsMapper;
|
import com.stylefeng.guns.modular.system.model.*;
|
import com.stylefeng.guns.modular.system.service.*;
|
import com.stylefeng.guns.modular.system.util.*;
|
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
|
import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Isolation;
|
import org.springframework.transaction.annotation.Propagation;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.util.*;
|
|
|
@Service
|
@Transactional(isolation = Isolation.READ_UNCOMMITTED, propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
public class ReassignServiceImpl extends ServiceImpl<ReassignMapper, Reassign> implements IReassignService {
|
|
@Resource
|
private ReassignMapper reassignMapper;
|
|
@Resource
|
private SensitiveWordsMapper sensitiveWordsMapper;
|
|
@Autowired
|
private IOrderService orderService;
|
|
@Autowired
|
private IDriverService driverService;
|
|
@Autowired
|
private ITransactionDetailsService transactionDetailsService;
|
|
@Autowired
|
private IPaymentRecordService paymentRecordService;
|
|
@Autowired
|
private PayMoneyUtil payMoneyUtil;
|
//
|
// @Autowired
|
// private ICBCPayUtil icbcPayUtil;
|
|
@Autowired
|
private IOrderTaxiService orderTaxiService;
|
|
@Autowired
|
private IIncomeService incomeService;
|
|
@Autowired
|
private ISystemNoticeService systemNoticeService;
|
|
@Autowired
|
private IOrderPrivateCarService orderPrivateCarService;
|
|
@Autowired
|
private IOrderCrossCityService orderCrossCityService;
|
|
@Autowired
|
private JGPushUtil jgPushUtil;
|
|
@Resource
|
private DispatchMapper dispatchMapper;
|
|
@Autowired
|
private IOrderLogisticsService orderLogisticsService;
|
|
@Value("${callbackPath}")
|
private String callbackPath;
|
|
@Autowired
|
private IReassignService reassignService;
|
|
@Resource
|
private LineShiftDriverMapper lineShiftDriverMapper;
|
|
@Autowired
|
private OrderController orderController;
|
|
@Resource
|
private CarModelMapper carModelMapper;
|
|
@Autowired
|
private ICarService carService;
|
|
|
/**
|
* 提交改派申请
|
* @param uid 申请司机id
|
* @return
|
* @throws Exception
|
*/
|
@Override
|
public ResultUtil saveData(Reassign reassign, Integer uid, Integer type) throws Exception {
|
type = null == type ? 2 : type;//现目前微信只支持小程序支付
|
String content = reassign.getRemark();
|
if(ToolUtil.isNotEmpty(content)){
|
List<SensitiveWords> sensitiveWords = sensitiveWordsMapper.selectList(null);
|
for(SensitiveWords s : sensitiveWords){
|
content = content.replaceAll(s.getContent(), "***");
|
}
|
}
|
reassign.setRemark(content);
|
ResultUtil resultUtil = ResultUtil.success();
|
Driver driver = driverService.selectById(uid);
|
// TODO: 2020/11/12 司机端不控制重复提交(如果重复提交且未支付,直接将之前的数据删除)
|
// Reassign query = reassignMapper.query(uid, null, null, null, 1);
|
// if(null != query){
|
// return ResultUtil.error("有未完成支付的改派申请");
|
// }
|
Reassign query = reassignMapper.query(uid, null, reassign.getOrderId(), reassign.getOrderType(), 1);
|
if(null != query){
|
// return ResultUtil.error("不能重复提交申请");
|
reassignMapper.deleteById(query.getId());
|
}
|
query = reassignMapper.query(uid, null, reassign.getOrderId(), reassign.getOrderType(), 2);
|
if(null != query){
|
return ResultUtil.error("您提交的申请正在处理中");
|
}
|
|
//获取支付金额
|
Double aDouble = orderService.queryReassignMoney(reassign.getOrderId(), reassign.getOrderType());
|
reassign.setMoney(aDouble);
|
reassign.setOriginalDriverId(uid);
|
reassign.setOriginalCarId(driver.getCarId());
|
reassign.setInsertTime(new Date());
|
this.insert(reassign);
|
|
systemNoticeService.addSystemNotice(2, "您的改派申请已成功提交,我们会尽快为你处理!", uid);
|
|
//开始支付
|
if(null != reassign.getPayType()){
|
if(reassign.getPayType() == 1){//微信支付
|
reassign.setState(1);
|
// Map<String, String> map = icbcPayUtil.placeAnOrder(reassign.getId() + "_" + reassign.getOrderType(), 9, 5, uid.toString(), "改派订单", aDouble, callbackPath + "/base/wxReassign", "", type, driver.getAppletsOpenId());
|
// if(map.get("code").equals("200")){
|
// paymentRecordService.saveData(1, uid, 2, reassign.getOrderId(), reassign.getOrderType(), 1, aDouble, map.get("order_id"), 1);//添加预支付数据
|
// resultUtil = ResultUtil.success(map.get("data"));
|
// }else{
|
// resultUtil = ResultUtil.error(map.get("msg"), "");
|
// }
|
}
|
if(reassign.getPayType() == 2){//支付宝
|
reassign.setState(1);
|
// Map<String, String> map = icbcPayUtil.placeAnOrder(reassign.getId() + "_" + reassign.getOrderType(), 10, 5, uid.toString(), "改派订单", aDouble, callbackPath + "/base/aliReassign", "", 2, "");
|
// if(map.get("code").equals("200")){
|
// paymentRecordService.saveData(1, uid, 2, reassign.getOrderId(), reassign.getOrderType(), 2, aDouble, map.get("order_id"), 1);//添加预支付数据
|
// resultUtil = ResultUtil.success(map.get("data"));
|
// }else{
|
// resultUtil = ResultUtil.error(map.get("msg"), "");
|
// }
|
}
|
if(reassign.getPayType() == 3){//余额
|
reassign.setState(2);
|
reassign.setPayTime(new Date());
|
reassignMapper.updateById(reassign);
|
|
Double balance = driver.getBalance();
|
Double laveBusinessMoney = driver.getLaveBusinessMoney();
|
Double laveActivityMoney = driver.getLaveActivityMoney();
|
if(null == balance || balance < aDouble){
|
throw new SystemException("账户余额不足");
|
}
|
if(null != laveBusinessMoney && laveBusinessMoney.compareTo(aDouble) >= 0){
|
driver.setLaveBusinessMoney(new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(aDouble)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
|
}else if(null != laveActivityMoney && laveActivityMoney.compareTo(aDouble) >= 0){
|
driver.setLaveActivityMoney(new BigDecimal(laveActivityMoney).subtract(new BigDecimal(aDouble)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
|
}
|
driver.setBalance(new BigDecimal(balance).subtract(new BigDecimal(aDouble)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
|
driverService.updateById(driver);
|
//添加交易明细
|
transactionDetailsService.saveData(uid, "司机改派支付", aDouble, 2, 1, 2, reassign.getOrderType(), reassign.getOrderId());
|
|
|
//修改改派通知状态
|
switch (reassign.getOrderType()){
|
case 1:
|
OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(reassign.getOrderId());
|
orderPrivateCar.setOldState(orderPrivateCar.getState());
|
orderPrivateCar.setState(11);
|
orderPrivateCar.setReassignNotice(2);
|
orderPrivateCarService.updateById(orderPrivateCar);
|
|
//添加已收入明细
|
incomeService.saveData(1, orderPrivateCar.getCompanyId(), 4, orderPrivateCar.getId(), 1, reassign.getMoney());
|
break;
|
case 2:
|
OrderTaxi orderTaxi = orderTaxiService.selectById(reassign.getOrderId());
|
orderTaxi.setOldState(orderTaxi.getState());
|
orderTaxi.setState(11);
|
orderTaxi.setReassignNotice(2);
|
orderTaxiService.updateById(orderTaxi);
|
|
//添加已收入明细
|
incomeService.saveData(1, orderTaxi.getCompanyId(), 4, orderTaxi.getId(), 2, reassign.getMoney());
|
break;
|
case 4:
|
OrderLogistics orderLogistics = orderLogisticsService.selectById(reassign.getOrderId());
|
orderLogistics.setOldState(orderLogistics.getState());
|
orderLogistics.setState(11);
|
orderLogistics.setReassignNotice(2);
|
orderLogisticsService.updateById(orderLogistics);
|
|
//添加已收入明细
|
incomeService.saveData(1, orderLogistics.getCompanyId(), 4, orderLogistics.getId(), orderLogistics.getType(), reassign.getMoney());
|
break;
|
case 5:
|
OrderLogistics orderLogistics1 = orderLogisticsService.selectById(reassign.getOrderId());
|
orderLogistics1.setOldState(orderLogistics1.getState());
|
orderLogistics1.setState(11);
|
orderLogistics1.setReassignNotice(2);
|
orderLogisticsService.updateById(orderLogistics1);
|
|
//添加已收入明细
|
incomeService.saveData(1, orderLogistics1.getCompanyId(), 4, orderLogistics1.getId(), orderLogistics1.getType(), reassign.getMoney());
|
break;
|
}
|
|
systemNoticeService.addSystemNotice(2, "您已使用余额成功支付改派申请费用!", uid);
|
//开始推送调度单
|
Map<String, String> map = new HashMap<>();
|
map.put("orderId", reassign.getOrderId().toString());
|
map.put("orderType", reassign.getOrderType().toString());
|
List<Dispatch> dispatches = dispatchMapper.queryDispatchs(driver.getFranchiseeId() == null ? driver.getCompanyId() : driver.getFranchiseeId(), 1);
|
for(Dispatch dispatch : dispatches){
|
jgPushUtil.push(2,"有新的改派订单需要处理,请及时处理!", "订单改派", map, "DISPATCH" + dispatch.getId());
|
}
|
}
|
}
|
return resultUtil;
|
}
|
|
|
|
|
/**
|
* 提交改派申请(跨城专用)
|
* @param uid 申请司机id
|
* @return
|
* @throws Exception
|
*/
|
@Override
|
public ResultUtil saveData_(Reassign reassign, String orderIds, Integer uid, Integer type,Integer newDriverId) throws Exception {
|
type = null == type ? 2 : type;//现目前微信只支持小程序支付
|
String content = reassign.getRemark();
|
if(ToolUtil.isNotEmpty(content)){
|
List<SensitiveWords> sensitiveWords = sensitiveWordsMapper.selectList(null);
|
for(SensitiveWords s : sensitiveWords){
|
content = content.replaceAll(s.getContent(), "***");
|
}
|
}
|
reassign.setRemark(content);
|
ResultUtil resultUtil = ResultUtil.success();
|
Driver driver = driverService.selectById(uid);
|
// TODO: 2020/11/12 司机端不控制重复提交(如果重复提交且未支付,直接将之前的数据删除)
|
// Reassign query = reassignMapper.query(uid, null, null, null, 1);
|
// if(null != query){
|
// return ResultUtil.error("有未完成支付的改派申请");
|
// }
|
String[] split = orderIds.split(",");//获取支付金额
|
Double aDouble = orderService.queryReassignMoney(Integer.valueOf(split[0]), 3);
|
Double totalMoney = aDouble * split.length;
|
String ids = "";
|
for(String id : split){
|
Reassign query = reassignMapper.query(uid, null, Integer.valueOf(id), 3, 1);
|
if(null != query){
|
// return ResultUtil.error("不能重复提交申请");
|
reassignMapper.deleteById(query.getId());
|
}
|
query = reassignMapper.query(uid, null, Integer.valueOf(id), 3, 2);
|
if(null != query){
|
return ResultUtil.error("您提交的申请正在处理中");
|
}
|
|
reassign.setMoney(aDouble);
|
reassign.setOrderId(Integer.valueOf(id));
|
reassign.setOrderType(3);
|
reassign.setOriginalDriverId(uid);
|
reassign.setOriginalCarId(driver.getCarId());
|
reassign.setInsertTime(new Date());
|
reassign.setState(1);
|
this.insert(reassign);
|
ids += reassign.getId() + ",";
|
}
|
ids = ids.substring(0, ids.length() - 1);
|
|
|
if(newDriverId == null) {
|
systemNoticeService.addSystemNotice(2, "您的改派申请已成功提交,我们会尽快为你处理!", uid);
|
//开始支付
|
if (null != reassign.getPayType()) {
|
if (reassign.getPayType() == 1) {//微信支付
|
String[] split1 = ids.split(",");
|
// Map<String, String> map = icbcPayUtil.placeAnOrder(ids + "_3", 9, 5, uid.toString(), "改派订单", totalMoney, callbackPath + "/base/wxReassign", "", type, driver.getAppletsOpenId());
|
// if(map.get("code").equals("200")){
|
// for(String id : split1){
|
// paymentRecordService.saveData(1, uid, 2, Integer.valueOf(id), 3, 1, aDouble, map.get("order_id"), 1);//添加预支付数据
|
// }
|
// resultUtil = ResultUtil.success(map.get("data"));
|
// }else{
|
// resultUtil = ResultUtil.error(map.get("msg"), "");
|
// }
|
}
|
if (reassign.getPayType() == 2) {//支付宝
|
String[] split1 = ids.split(",");
|
// Map<String, String> map = icbcPayUtil.placeAnOrder(ids + "_3", 10, 5, uid.toString(), "改派订单", totalMoney, callbackPath + "/base/aliReassign", "", 2, "");
|
// if(map.get("code").equals("200")){
|
// for(String id : split1){
|
// paymentRecordService.saveData(1, uid, 2, Integer.valueOf(id), 3, 2, aDouble, map.get("order_id"), 1);//添加预支付数据
|
// }
|
// resultUtil = ResultUtil.success(map.get("data"));
|
// }else{
|
// resultUtil = ResultUtil.error(map.get("msg"), "");
|
// }
|
}
|
if (reassign.getPayType() == 3) {//余额
|
for (String id : split) {
|
Reassign query = reassignMapper.query(uid, null, Integer.valueOf(id), 3, 1);
|
query.setState(2);
|
query.setPayTime(new Date());
|
reassignMapper.updateById(query);
|
//添加交易明细
|
transactionDetailsService.saveData(uid, "司机改派支付", aDouble, 2, 1, 2, 3, Integer.valueOf(id));
|
}
|
Double balance = driver.getBalance();
|
if (null == balance || balance < totalMoney) {
|
throw new SystemException("账户余额不足");
|
}
|
driver.setBalance(new BigDecimal(balance).subtract(new BigDecimal(totalMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
|
driverService.updateById(driver);
|
|
|
//修改改派通知状态
|
for (String id : split) {
|
OrderCrossCity orderCrossCity = orderCrossCityService.selectById(id);
|
orderCrossCity.setOldState(orderCrossCity.getState());
|
orderCrossCity.setState(11);
|
orderCrossCity.setReassignNotice(2);
|
orderCrossCityService.updateById(orderCrossCity);
|
|
//添加已收入明细
|
incomeService.saveData(1, orderCrossCity.getCompanyId(), 4, orderCrossCity.getId(), 3, reassign.getMoney());
|
}
|
systemNoticeService.addSystemNotice(2, "您已使用余额成功支付改派申请费用!", uid);
|
//开始推送调度单
|
Map<String, String> map = new HashMap<>();
|
map.put("orderId", reassign.getOrderId().toString());
|
map.put("orderType", reassign.getOrderType().toString());
|
List<Dispatch> dispatches = dispatchMapper.queryDispatchs(driver.getFranchiseeId() == null ? driver.getCompanyId() : driver.getFranchiseeId(), 1);
|
for (Dispatch dispatch : dispatches) {
|
jgPushUtil.push(2, "有新的改派订单需要处理,请及时处理!", "订单改派", map, "DISPATCH" + dispatch.getId());
|
}
|
}
|
}
|
}else {
|
//开始支付
|
if (null != reassign.getPayType()) {
|
if (reassign.getPayType() == 1) {//微信支付
|
String[] split1 = ids.split(",");
|
// Map<String, String> map = icbcPayUtil.placeAnOrder(ids + "_3", 9, 5, uid.toString(), "改派订单", totalMoney, callbackPath + "/base/wxReassign", "", type, driver.getAppletsOpenId());
|
// if(map.get("code").equals("200")){
|
// for(String id : split1){
|
// paymentRecordService.saveData(1, uid, 2, Integer.valueOf(id), 3, 1, aDouble, map.get("order_id"), 1);//添加预支付数据
|
// }
|
// resultUtil = ResultUtil.success(map.get("data"));
|
// }else{
|
// resultUtil = ResultUtil.error(map.get("msg"), "");
|
// }
|
}
|
if (reassign.getPayType() == 2) {//支付宝
|
String[] split1 = ids.split(",");
|
// Map<String, String> map = icbcPayUtil.placeAnOrder(ids + "_3", 10, 5, uid.toString(), "改派订单", totalMoney, callbackPath + "/base/aliReassign", "", 2, "");
|
// if(map.get("code").equals("200")){
|
// for(String id : split1){
|
// paymentRecordService.saveData(1, uid, 2, Integer.valueOf(id), 3, 2, aDouble, map.get("order_id"), 1);//添加预支付数据
|
// }
|
// resultUtil = ResultUtil.success(map.get("data"));
|
// }else{
|
// resultUtil = ResultUtil.error(map.get("msg"), "");
|
// }
|
}
|
if (reassign.getPayType() == 3) {//余额
|
for (String id : split) {
|
Reassign query = reassignMapper.query(uid, null, Integer.valueOf(id), 3, 1);
|
query.setState(2);
|
query.setPayTime(new Date());
|
reassignMapper.updateById(query);
|
//添加交易明细
|
transactionDetailsService.saveData(uid, "司机改派支付", aDouble, 2, 1, 2, 3, Integer.valueOf(id));
|
}
|
Double balance = driver.getBalance();
|
if (null == balance || balance < totalMoney) {
|
throw new SystemException("账户余额不足");
|
}
|
driver.setBalance(new BigDecimal(balance).subtract(new BigDecimal(totalMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
|
driverService.updateById(driver);
|
|
|
//修改改派通知状态
|
for (String id : split) {
|
OrderCrossCity orderCrossCity = orderCrossCityService.selectById(id);
|
orderCrossCity.setOldState(orderCrossCity.getState());
|
orderCrossCity.setState(11);
|
orderCrossCity.setReassignNotice(2);
|
orderCrossCityService.updateById(orderCrossCity);
|
|
//添加已收入明细
|
incomeService.saveData(1, orderCrossCity.getCompanyId(), 4, orderCrossCity.getId(), 3, reassign.getMoney());
|
}
|
systemNoticeService.addSystemNotice(2, "您已使用余额成功支付改派申请费用!", uid);
|
//开始推送调度单
|
// Map<String, String> map = new HashMap<>();
|
// map.put("orderId", reassign.getOrderId().toString());
|
// map.put("orderType", reassign.getOrderType().toString());
|
// List<Dispatch> dispatches = dispatchMapper.queryDispatchs(driver.getFranchiseeId() == null ? driver.getCompanyId() : driver.getFranchiseeId(), 1);
|
// for (Dispatch dispatch : dispatches) {
|
// jgPushUtil.push(2, "有新的改派订单需要处理,请及时处理!", "订单改派", map, "DISPATCH" + dispatch.getId());
|
// }
|
|
//将所有改派单都给新的司机
|
String[] split1 = ids.split(",");
|
for (String s : split1) {
|
selectCrossDriver(Integer.valueOf(s), newDriverId);
|
}
|
|
|
}
|
}
|
}
|
return resultUtil;
|
}
|
/**
|
* 跨城出行订单改派司机
|
*/
|
|
public Object selectCrossDriver(@RequestParam Integer reassign, @RequestParam Integer driverId) {
|
//修改原司机信息
|
//修改订单
|
Reassign tReassign = reassignService.selectById(reassign);
|
OrderCrossCity tOrderCrossCity = orderCrossCityService.selectById(tReassign.getOrderId());
|
Driver oldDriver = driverService.selectById(tReassign.getOriginalDriverId());
|
LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(tOrderCrossCity.getLineShiftDriverId());
|
if(lineShiftDriver!=null){
|
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);
|
driverService.updateById(oldDriver);
|
}
|
|
//修改新司机数据
|
List<LineShiftDriver> query = lineShiftDriverMapper.queryByDriver(lineShiftDriver.getLineShiftId(), driverId, tOrderCrossCity.getTravelTime());
|
LineShiftDriver lineShiftDriver1 = null;
|
|
if(query.size() == 0){
|
// return ResultUtil.error("司机没有预约班次");
|
CarModel carModel = carModelMapper.selectById(carService.selectById(driverService.selectById(driverId).getCarId()).getCarModelId());
|
|
LineShiftDriver lineShiftDriver0 = new LineShiftDriver();
|
lineShiftDriver0.setLineShiftId(lineShiftDriver.getLineShiftId());
|
lineShiftDriver0.setDriverId(driverId);
|
lineShiftDriver0.setDay(lineShiftDriver.getDay());
|
lineShiftDriver0.setTotalSeat(carModel.getSeat() - 1);
|
lineShiftDriver0.setLaveSeat(carModel.getSeat() - 1);
|
lineShiftDriver0.setInserTime(new Date());
|
String seatNumber = "";
|
for(int i = 1; i < carModel.getSeat(); i++){
|
seatNumber += i + ",";
|
}
|
lineShiftDriver0.setLaveSeatNumber(seatNumber.substring(0, seatNumber.length() - 1));
|
|
Integer insert = lineShiftDriverMapper.insert(lineShiftDriver0);
|
lineShiftDriver1 = lineShiftDriver0;
|
|
}else {
|
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 < split1.length; i++){
|
seat2 += split1[i] + ",";
|
}
|
lineShiftDriver1.setLaveSeatNumber(seat2);
|
lineShiftDriverMapper.updateById(lineShiftDriver1);
|
}
|
|
Driver driver = driverService.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(orderCrossCityService.getOrderNum(driverId, tOrderCrossCity.getLineShiftDriverId()));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
orderCrossCityService.updateAllColumnById(tOrderCrossCity);
|
oldDriver.setState(2);
|
//修改专车改派订单
|
tReassign.setNowDriverId(driverId);
|
tReassign.setNowCarId(driver.getCarId());
|
tReassign.setState(3);
|
tReassign.setCompleteTime(new Date());
|
reassignService.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()-income.getMoney());
|
|
driver.setBusinessMoney(driver.getBusinessMoney() + income.getMoney());
|
driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() + income.getMoney());
|
driver.setBalance(driver.getBalance()+income.getMoney());
|
|
}
|
driverService.updateById(oldDriver);
|
driverService.updateById(driver);
|
//增加推送
|
// Map<String,String> map = new HashMap<>();
|
// map.put("orderId", tOrderCrossCity.getId().toString());
|
// map.put("orderType", "3");
|
String result = orderController.pushOrderState(tOrderCrossCity.getId(), 3);
|
// String result = HttpRequestUtil.postRequest(PushURL.order_push_url, map);
|
System.out.println("跨城出行改派:【orderId="+tOrderCrossCity.getId().toString()+"】,调用接口:"+result);
|
return result;
|
}
|
|
|
|
/**
|
* 获取列表数据
|
* @param uid
|
* @param pageNum
|
* @param size
|
* @return
|
* @throws Exception
|
*/
|
@Override
|
public List<Map<String, Object>> queryList(Integer uid, Integer pageNum, Integer size) throws Exception {
|
pageNum = (pageNum - 1) * size;
|
return reassignMapper.queryList(uid, pageNum, size);
|
}
|
|
|
/**
|
* 改派支付完成后的操作
|
* @param id 改派单id
|
* @param order_id 工行支付订单
|
* @param type 1=微信,2=支付宝
|
* @throws Exception
|
*/
|
@Override
|
public void payReassign(String id, String order_id, Integer type) throws Exception {
|
String[] s = id.split("_");
|
if(Integer.valueOf(s[1]) == 3){//跨城订单
|
String[] split = s[0].split(",");
|
List<Reassign> reassigns = this.selectBatchIds(Arrays.asList(split));
|
Driver driver = driverService.selectById(reassigns.get(0).getOriginalDriverId());
|
for(String key : split){
|
PaymentRecord query = paymentRecordService.query(1, driver.getId(), 2, Integer.valueOf(key), 3, type, 1);
|
if(null != query){
|
//添加交易明细
|
transactionDetailsService.saveData(reassigns.get(0).getOriginalDriverId(), "司机改派支付", reassigns.get(0).getMoney(), 2, 1, 2, 3, Integer.valueOf(key));
|
for(Reassign reassign : reassigns){
|
reassign.setState(2);
|
reassign.setPayOrder(order_id);
|
reassign.setPayTime(new Date());
|
this.updateById(reassign);
|
//开始推送调度单
|
Map<String, String> map = new HashMap<>();
|
map.put("orderId", reassign.getOrderId().toString());
|
map.put("orderType", reassign.getOrderType().toString());
|
List<Dispatch> dispatches = dispatchMapper.queryDispatchs(driver.getFranchiseeId() == null ? driver.getCompanyId() : driver.getFranchiseeId(), 1);
|
for(Dispatch dispatch : dispatches){
|
jgPushUtil.push(2,"有新的改派订单需要处理,请及时处理!", "订单改派", map, "DISPATCH" + dispatch.getId());
|
}
|
}
|
query.setState(2);
|
query.setCode(order_id);
|
paymentRecordService.updateById(query);
|
|
//修改改派通知状态
|
for(Reassign reassign : reassigns){
|
OrderCrossCity orderCrossCity1 = orderCrossCityService.selectById(reassign.getOrderId());
|
orderCrossCity1.setOldState(orderCrossCity1.getState());
|
orderCrossCity1.setState(11);
|
orderCrossCity1.setReassignNotice(2);
|
orderCrossCityService.updateById(orderCrossCity1);
|
|
//添加已收入明细
|
incomeService.saveData(1, orderCrossCity1.getCompanyId(), 4, orderCrossCity1.getId(), 3, reassign.getMoney());
|
}
|
systemNoticeService.addSystemNotice(2, "您已使用" + (type == 1 ? "微信" : "支付宝") + "成功支付改派申请费用!", reassigns.get(0).getOriginalDriverId());
|
|
}else{
|
System.err.println("预支付数据异常(orderId = " + id + ")");
|
}
|
}
|
|
|
}else{//其他订单
|
Reassign reassign = this.selectById(s[0]);
|
Driver driver = driverService.selectById(reassign.getOriginalDriverId());
|
PaymentRecord query = paymentRecordService.query(1, driver.getId(), 2, reassign.getOrderId(), reassign.getOrderType(), type, 1);
|
if(null != query){
|
//添加交易明细
|
transactionDetailsService.saveData(reassign.getOriginalDriverId(), "司机改派支付", reassign.getMoney(), 2, 1, 2, reassign.getOrderType(), reassign.getOrderId());
|
reassign.setState(2);
|
reassign.setPayOrder(order_id);
|
reassign.setPayTime(new Date());
|
this.updateById(reassign);
|
|
query.setState(2);
|
query.setCode(order_id);
|
paymentRecordService.updateById(query);
|
|
//修改改派通知状态
|
switch (reassign.getOrderType()){
|
case 1:
|
OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(reassign.getOrderId());
|
orderPrivateCar.setOldState(orderPrivateCar.getState());
|
orderPrivateCar.setState(11);
|
orderPrivateCar.setReassignNotice(2);
|
orderPrivateCarService.updateById(orderPrivateCar);
|
|
//添加已收入明细
|
incomeService.saveData(1, orderPrivateCar.getCompanyId(), 4, orderPrivateCar.getId(), 1, reassign.getMoney());
|
break;
|
case 2:
|
OrderTaxi orderTaxi = orderTaxiService.selectById(reassign.getOrderId());
|
orderTaxi.setOldState(orderTaxi.getState());
|
orderTaxi.setState(11);
|
orderTaxi.setReassignNotice(2);
|
orderTaxiService.updateById(orderTaxi);
|
|
//添加已收入明细
|
incomeService.saveData(1, orderTaxi.getCompanyId(), 4, orderTaxi.getId(), 2, reassign.getMoney());
|
break;
|
case 4:
|
OrderLogistics orderLogistics = orderLogisticsService.selectById(reassign.getOrderId());
|
orderLogistics.setOldState(orderLogistics.getState());
|
orderLogistics.setState(11);
|
orderLogistics.setReassignNotice(2);
|
orderLogisticsService.updateById(orderLogistics);
|
|
//添加已收入明细
|
incomeService.saveData(1, orderLogistics.getCompanyId(), 4, orderLogistics.getId(), 4, reassign.getMoney());
|
break;
|
case 5:
|
OrderLogistics orderLogistics1 = orderLogisticsService.selectById(reassign.getOrderId());
|
orderLogistics1.setOldState(orderLogistics1.getState());
|
orderLogistics1.setState(11);
|
orderLogistics1.setReassignNotice(2);
|
orderLogisticsService.updateById(orderLogistics1);
|
|
//添加已收入明细
|
incomeService.saveData(1, orderLogistics1.getCompanyId(), 4, orderLogistics1.getId(), 5, reassign.getMoney());
|
break;
|
}
|
systemNoticeService.addSystemNotice(2, "您已使用" + (type == 1 ? "微信" : "支付宝") + "成功支付改派申请费用!", reassign.getOriginalDriverId());
|
//开始推送调度单
|
Map<String, String> map = new HashMap<>();
|
map.put("orderId", reassign.getOrderId().toString());
|
map.put("orderType", reassign.getOrderType().toString());
|
List<Dispatch> dispatches = dispatchMapper.queryDispatchs(driver.getFranchiseeId() == null ? driver.getCompanyId() : driver.getFranchiseeId(), 1);
|
for(Dispatch dispatch : dispatches){
|
jgPushUtil.push(2,"有新的改派订单需要处理,请及时处理!", "订单改派", map, "DISPATCH" + dispatch.getId());
|
}
|
}else{
|
System.err.println("预支付数据异常(orderId = " + id + ")");
|
}
|
}
|
|
|
}
|
}
|