From 36695821ea10197d7758babc7bc2b5dfb66dd88e Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期六, 24 六月 2023 09:30:26 +0800 Subject: [PATCH] 修改bug --- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java | 29 ++++++++------ driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java | 27 +------------ zuul/src/main/java/com/sinata/zuul/util/echo/NettyServerController.java | 44 +++++++++++----------- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/OrderMapper.xml | 2 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java | 2 zuul/src/main/java/com/sinata/zuul/util/applets/NettyWebSocketController.java | 2 management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html | 4 - 7 files changed, 45 insertions(+), 65 deletions(-) diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/OrderMapper.xml b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/OrderMapper.xml index 5fece1a..ed8b623 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/OrderMapper.xml +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/OrderMapper.xml @@ -111,7 +111,7 @@ a.estimatedMileage, a.estimatedTime, a.startPrice, - a.waitTime, + a.waitTime + a.outWaitTime as waitTime, a.actualMileage, a.state, (UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(a.startTime)) / 60 as travelTime diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java index 201a261..99067f6 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java @@ -38,7 +38,7 @@ */ ResultUtil driverAddOrder(Integer uid, AddOrderWarpper addOrderWarpper) throws Exception; - + Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city); /** * 获取大厅订单列表 * @param uid diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java index d9ceaf8..a87c1fc 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java @@ -228,8 +228,6 @@ * @return */ public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city){ - distance = new BigDecimal(distance).setScale(0, BigDecimal.ROUND_UP).doubleValue(); - waitTime = new BigDecimal(waitTime).setScale(0, BigDecimal.ROUND_UP).intValue(); order = getOrderInitialPrice(order); SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5)); if(null == systemConfig){ @@ -289,12 +287,14 @@ order.setStartDistance(distance);//起步里程 order.setStartPrice(num4);//起步价 }else{ - BigDecimal subtract = new BigDecimal(distance).subtract(new BigDecimal(num3)).setScale(2, BigDecimal.ROUND_HALF_EVEN);//超出起步里程 - BigDecimal divide = subtract.divide(new BigDecimal(num5), 2, BigDecimal.ROUND_HALF_EVEN); - BigDecimal multiply = divide.multiply(new BigDecimal(num6)); + Double distance1 = distance;//原始里程 order.setStartDistance(num3);//起步里程 order.setStartPrice(num4);//起步价 - order.setOverDriveDistance(subtract.doubleValue());//超出起步里程 + order.setOverDriveDistance(new BigDecimal(distance1 - num3).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//超出起步里程 + + distance = new BigDecimal(distance).setScale(0, RoundingMode.UP).doubleValue();//向上取整 + BigDecimal divide = new BigDecimal(distance - num3).divide(new BigDecimal(num5), 2, BigDecimal.ROUND_HALF_EVEN); + BigDecimal multiply = divide.multiply(new BigDecimal(num6)); order.setOverDrivePrice(multiply.doubleValue());//超出起步里程费 //计算长途费(超出长途起始公里,费用开始按照长途规则计算。) @@ -309,10 +309,10 @@ } //计算长途里程超出的部分 if(distance.compareTo(num8) > 0){ - BigDecimal subtract1 = new BigDecimal(distance).subtract(new BigDecimal(num8)).setScale(2, BigDecimal.ROUND_HALF_EVEN); - BigDecimal divide1 = subtract1.divide(new BigDecimal(num10), 2, BigDecimal.ROUND_HALF_EVEN); + order.setOverLongDistance(new BigDecimal(distance1 - num8).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());//超出长途里程 + + BigDecimal divide1 = new BigDecimal(distance - num8).divide(new BigDecimal(num10), 2, BigDecimal.ROUND_HALF_EVEN); BigDecimal multiply1 = divide1.multiply(new BigDecimal(num11)); - order.setOverLongDistance(subtract1.doubleValue());//超出长途里程 order.setOverLongDistancePrice(multiply1.doubleValue());//超出长途里程费 } } @@ -333,10 +333,10 @@ //等待费用 if(waitTime.compareTo(num1 * 60) >= 0){ - order.setWaitTime(num1);//等待时长 + order.setWaitTime(num1 * 60);//等待时长 order.setWaitTimePrice(num2);//等待费用 - Integer w = waitTime - (num3 * 60); + Integer w = waitTime - (num1 * 60); BigDecimal multiply = new BigDecimal(w).divide(new BigDecimal(60), 0, RoundingMode.UP).multiply(new BigDecimal(num4)); order.setOutWaitTime(w);//等待时长超出分钟 order.setOutWaitTimePrice(multiply.doubleValue());//等待时长超出费用 @@ -858,6 +858,9 @@ } + + + /** * 获取订单详情 * @param orderId @@ -876,7 +879,7 @@ int m = Double.valueOf(wait / 60).intValue(); orderInfoWarpper.setWaitTime((m < 10 ? ("0" + m) : m) + ":" + (s < 10 ? ("0" + s) : s)); Double actualMileage = orderInfoWarpper.getActualMileage(); - orderInfoWarpper.setActualMileage(new BigDecimal(actualMileage).divide(new BigDecimal(1000), 2, RoundingMode.HALF_EVEN).doubleValue()); + orderInfoWarpper.setActualMileage(new BigDecimal(actualMileage / 1000).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); if(orderInfoWarpper.getTravelTime() == null){ orderInfoWarpper.setTravelTime(0); @@ -956,7 +959,7 @@ .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') ")); city = null != weatherCity ? weatherCity.getId().toString() : ""; } - order = getOrderPrice(2, Double.valueOf(order.getActualMileage() / 1000), order.getWaitTime(), order, city); + order = getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, city); //修改司机状态和积分 Driver driver = driverService.selectById(order.getDriverId()); diff --git a/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java b/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java index bc86d94..e6ff73c 100644 --- a/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java +++ b/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java @@ -6,6 +6,7 @@ //import com.supersavedriving.driver.modular.system.model.Order; //import com.supersavedriving.driver.modular.system.model.WeatherCity; //import com.supersavedriving.driver.modular.system.service.*; +//import com.supersavedriving.driver.modular.system.service.impl.OrderServiceImpl; //import com.supersavedriving.driver.modular.system.util.ResultUtil; //import com.supersavedriving.driver.modular.system.util.juhe.WeatherCityInfo; //import com.supersavedriving.driver.modular.system.util.juhe.WeatherUtil; @@ -38,29 +39,7 @@ // // @Test // public void test() throws Exception { -// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); -// Date date = sdf.parse("2023-06-15 01:00:00"); -// Integer hour1 = 22; -// Integer hour2 = 6; -// -// Calendar s = Calendar.getInstance(); -// s.setTime(date); -// s.set(Calendar.HOUR_OF_DAY, hour1); -// s.set(Calendar.SECOND, 0); -// -// Calendar e = Calendar.getInstance(); -// e.setTime(date); -// e.set(Calendar.HOUR_OF_DAY, hour2); -// e.set(Calendar.SECOND, 0); -// -// if(hour1 > hour2){ -// if(s.getTimeInMillis() > date.getTime()){ -// s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) - 1); -// }else{ -// e.set(Calendar.DAY_OF_YEAR, e.get(Calendar.DAY_OF_YEAR) + 1); -// } -// } -// System.err.println(sdf.format(s.getTime())); -// System.err.println(sdf.format(e.getTime())); +// Order order = orderService.selectById(1066); +// orderService.getOrderPrice(2, Double.valueOf(order.getActualMileage()) / 1000, order.getWaitTime(), order, null); // } //} diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html index 02703f1..ea216bb 100644 --- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html +++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tSystemConfig/tSystemConfigPriceRules.html @@ -75,9 +75,7 @@ <input class="control-label" id="num12" name="num12" value="${ExtraCost.num1}" type="number" min="0" style="height: 30px;width: 80px"> <span class="control-label" >分钟,收取</span> <input class="control-label" id="num13" name="num13" value="${ExtraCost.num2}" type="number" min="0" style="height: 30px;width: 80px"> - <span class="control-label" >元,超出</span> - <input class="control-label" id="num14" name="num14" value="${ExtraCost.num3}" type="number" min="0" style="height: 30px;width: 80px"> - <span class="control-label" >分钟,收取</span> + <span class="control-label" >元,超出收取</span> <input class="control-label" id="num15" name="num15" value="${ExtraCost.num4}" type="number" min="0" style="height: 30px;width: 80px"> <span class="control-label" >元/分钟</span> </div> diff --git a/zuul/src/main/java/com/sinata/zuul/util/applets/NettyWebSocketController.java b/zuul/src/main/java/com/sinata/zuul/util/applets/NettyWebSocketController.java index fbff56f..f214c7a 100644 --- a/zuul/src/main/java/com/sinata/zuul/util/applets/NettyWebSocketController.java +++ b/zuul/src/main/java/com/sinata/zuul/util/applets/NettyWebSocketController.java @@ -45,7 +45,7 @@ * @param msg * @author TaoNingBo */ - public void JudgeOperation(ChannelHandlerContext ctx, String msg) { + public synchronized void JudgeOperation(ChannelHandlerContext ctx, String msg) { try { // 验证即时通讯命令是否正确有效 if (SinataUtil.isEmpty(msg)) { diff --git a/zuul/src/main/java/com/sinata/zuul/util/echo/NettyServerController.java b/zuul/src/main/java/com/sinata/zuul/util/echo/NettyServerController.java index b173e90..9ad48bd 100644 --- a/zuul/src/main/java/com/sinata/zuul/util/echo/NettyServerController.java +++ b/zuul/src/main/java/com/sinata/zuul/util/echo/NettyServerController.java @@ -57,7 +57,7 @@ * @param msg * @author TaoNingBo */ - public void JudgeOperation(ChannelHandlerContext ctx, Object msg) { + public synchronized void JudgeOperation(ChannelHandlerContext ctx, Object msg) { try { // ByteBuf转String ByteBuf byteBuf = (ByteBuf) msg; @@ -112,12 +112,12 @@ if(b){ NettyChannelMap.remove_(data_); } -// new Timer().schedule(new TimerTask() { -// @Override -// public void run() { -// NettyChannelMap.remove_(data_); -// } -// }, 5000); + new Timer().schedule(new TimerTask() { + @Override + public void run() { + NettyChannelMap.remove_(data_); + } + }, 5000); } NettyChannelMap.update_(token.substring(token.length() - 16), ctx); NettyChannelMap.update("USER" + userId1, ctx); @@ -131,21 +131,21 @@ }else{ //确保账号在单个设备上登录 if(StringUtil.isNotEmpty(token)){//APP端登录的操作 -// String token_ = redisUtil.getValue("DRIVER_" + userId1);//缓存中拿最新数据 -// if(StringUtil.isNotEmpty(token_) && !token.equals(token_)){//不在同一设备上登录,向当前设备发送数据 -// ChannelHandlerContext data_ = NettyChannelMap.getData_(token_.substring(token_.length() - 16)); -// if(null != data_){ -// JSONObject msg_ = new JSONObject(); -// msg_.put("code", 200); -// msg_.put("msg", "SUCCESS"); -// msg_.put("method", "OFFLINE"); -// msg_.put("data", new Object()); -// boolean b = this.sendMsgToClient(data_, msg_.toJSONString());//给当前通道发送消息 -// if(b){ -// NettyChannelMap.remove_(data_); -// } -// } -// } + String token_ = redisUtil.getValue("DRIVER_" + userId1);//缓存中拿最新数据 + if(StringUtil.isNotEmpty(token_) && !token.equals(token_)){//不在同一设备上登录,向当前设备发送数据 + ChannelHandlerContext data_ = NettyChannelMap.getData_(token_.substring(token_.length() - 16)); + if(null != data_){ + JSONObject msg_ = new JSONObject(); + msg_.put("code", 200); + msg_.put("msg", "SUCCESS"); + msg_.put("method", "OFFLINE"); + msg_.put("data", new Object()); + boolean b = this.sendMsgToClient(data_, msg_.toJSONString());//给当前通道发送消息 + if(b){ + NettyChannelMap.remove_(data_); + } + } + } NettyChannelMap.update("DRIVER" + userId1, ctx); NettyChannelMap.update_(token.substring(token.length() - 16), ctx); redisUtil.setStrValue("DRIVER_" + userId1, token); -- Gitblit v1.7.1