From 6c0d8fb2db64b8982c4162c7527e72841547110b Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 27 十二月 2024 15:28:50 +0800 Subject: [PATCH] 修改推单规则 --- UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java | 117 +++++++++------------------------------------------------- 1 files changed, 19 insertions(+), 98 deletions(-) diff --git a/UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java index 282bee0..a157c0d 100644 --- a/UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java +++ b/UserAHTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java @@ -355,28 +355,6 @@ userRedPacketRecordService.updateById(query); } - //添加已收入明细 - Line line = lineService.selectById(orderCrossCity.getLineId()); - Driver driver = driverService.selectById(orderCrossCity.getDriverId()); - Double speMoney = driver.getIntercityCommission(); - BigDecimal d = null;//企业收入 - BigDecimal c = null;//司机收入 - if(driver.getSpecialCarCommissionType() == 2){//固定 - d = new BigDecimal(speMoney); - c = new BigDecimal(orderCrossCity.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN); - } - if(driver.getSpecialCarCommissionType() == 1){//比例 - Double price = orderCrossCity.getOrderMoney(); - d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN))).setScale(2, BigDecimal.ROUND_HALF_EVEN); - c = new BigDecimal(price).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN); - } - incomeService.saveData(1, orderCrossCity.getCompanyId(), 2, orderCrossCity.getId(), 3, d.doubleValue()); - incomeService.saveData(2, orderCrossCity.getDriverId(), 2, orderCrossCity.getId(), 3, c.doubleValue()); - driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); - driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); - driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); - driverService.updateById(driver); - // TODO: 2020/5/24 这里需要给司机和用户推送订单状态 new Thread(new Runnable() { @Override @@ -445,14 +423,20 @@ Double speMoney = driver.getIntercityCommission(); BigDecimal d = null;//企业收入 BigDecimal c = null;//司机收入 - if(driver.getSpecialCarCommissionType() == 2){//固定 - d = new BigDecimal(speMoney); - c = new BigDecimal(orderCrossCity.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN); - } - if(driver.getSpecialCarCommissionType() == 1){//比例 - Double price = orderCrossCity.getOrderMoney(); - d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN))).setScale(2, BigDecimal.ROUND_HALF_EVEN); - c = new BigDecimal(price).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN); + if(null == speMoney){ + speMoney = Double.valueOf(line.getRakeRate()); + d = new BigDecimal(orderCrossCity.getOrderMoney()).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN)));//企业收入 + c = new BigDecimal(orderCrossCity.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);//司机收入 + }else{ + if(driver.getIntercityCommissionType() == 2){//固定 + d = new BigDecimal(speMoney); + c = new BigDecimal(orderCrossCity.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN); + } + if(driver.getIntercityCommissionType() == 1){//比例 + Double price = orderCrossCity.getOrderMoney(); + d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN))).setScale(2, BigDecimal.ROUND_HALF_EVEN); + c = new BigDecimal(price).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN); + } } incomeService.saveData(1, orderCrossCity.getCompanyId(), 2, orderCrossCity.getId(), 3, d.doubleValue()); incomeService.saveData(2, orderCrossCity.getDriverId(), 2, orderCrossCity.getId(), 3, c.doubleValue()); @@ -1349,7 +1333,7 @@ public OrderServerWarpper queryOrderServer(Integer orderId, Integer uid) throws Exception { OrderCrossCity orderCrossCity = this.selectById(orderId); //计算预计距离和剩余时间 - String value = redisUtil.getValue("DRIVER" + String.valueOf(orderCrossCity.getDriverId())); + String value = redisUtil.getValue("DRIVER" + orderCrossCity.getDriverId()); if(null == value || "".equals(value)){ System.err.println("司机没有上传位置信息"); @@ -1655,74 +1639,11 @@ } try { if(orderType == 1){//专车 - Thread.sleep(1000); - System.err.println("====="+orderId); OrderPrivateCar orderPrivateCar = orderPrivateCarMapper.selectById(orderId); - System.err.println("====="+orderPrivateCar); - OrderPrivateCarServiceImpl.orderIds.add(orderPrivateCar.getId());//添加记录,防止调用接口重复提醒无人接单 - Company query = companyCityService.query(String.valueOf(orderPrivateCar.getStartLon()), String.valueOf(orderPrivateCar.getStartLat()));//获取起点所属分公司 - List<PushOrder> querys = pushOrderService.querys(null, 1, query.getId());//获取需要推送的次数 - for(int i = 1; i <= querys.size(); i++){ - //订单被抢后的处理 - Integer state = orderPrivateCarMapper.selectById(orderId).getState(); - if(state != 1){ - //关闭其他推送线程 - Set<String> keySet = threadMap.keySet(); - for(String key : keySet){ - if(!key.equals(orderId + "_1")){ - Thread thread1 = threadMap.get(key);//中断线程 - if(null != thread1){ - thread1.interrupt(); - } - threadMap.remove(key); - } - } - //删除其他无效数据 - for(Map<String, Integer> map : datas){ - Integer orderType = map.get("orderType"); - Integer orderId1 = map.get("orderId"); - if(orderType == 1 && orderId != orderPrivateCar.getId()){ - orderPrivateCarMapper.deleteById(orderId1); - } - if(orderType == 2){ - orderTaxiMapper.deleteById(orderId1); - } - } - break; - } - - //开始进行推送的处理 - PushOrder pushOrder = pushOrderService.querys(i, 1, query.getId()).get(0); - //获取空闲司机 - List<Driver> list = driverService.queryIdleDriver(1, orderPrivateCar.getServerCarModelId(), orderPrivateCar.getStartLon(), orderPrivateCar.getStartLat(), pushOrder.getPushDistance(), null);//所有附近空闲司机 - if(list.size() > 0){ - double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数 - int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取) - list = list.subList(0, lastIndex);//获取空闲司机中占比数据 - for(Driver driver : list){//开始进行推送 - boolean bo = false; - for(Integer integer : integers){ - if(integer.compareTo(driver.getId()) == 0){ - bo = true; - break; - } - } - if(bo){ - continue; - } - pushUtil.pushOrderState(2, driver.getId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), pushOrder.getPushTime()); - } - } - - //所有推送完后的处理 - Boolean b = pushEndMap.get(orderPrivateCar.getCrossCityOrderId()); - if(i == querys.size() && state == 1 && (null != b && !b.booleanValue())){ - pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1); - OrderPrivateCarServiceImpl.orderIds.remove(orderPrivateCar.getId()); - pushEndMap.put(orderPrivateCar.getCrossCityOrderId(), Boolean.TRUE);//推送后添加标识 - break; - } - Thread.sleep(pushOrder.getPushTime() * 1000);//设置等待时间 + //推单操作 + if(orderPrivateCar.getState() == 1){ + Integer id = orderPrivateCar.getId(); + redisUtil.addListRight("push_order_ids", id.toString()); } } -- Gitblit v1.7.1