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 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 = 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 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 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 map = new HashMap<>(); map.put("orderId", reassign.getOrderId().toString()); map.put("orderType", reassign.getOrderType().toString()); List 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 = 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 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 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 map = new HashMap<>(); map.put("orderId", reassign.getOrderId().toString()); map.put("orderType", reassign.getOrderType().toString()); List 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 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 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 map = new HashMap<>(); // map.put("orderId", reassign.getOrderId().toString()); // map.put("orderType", reassign.getOrderType().toString()); // List 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 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 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()-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 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> 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 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 map = new HashMap<>(); map.put("orderId", reassign.getOrderId().toString()); map.put("orderType", reassign.getOrderType().toString()); List 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 map = new HashMap<>(); map.put("orderId", reassign.getOrderId().toString()); map.put("orderType", reassign.getOrderType().toString()); List 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 + ")"); } } } }