diff --git a/ZhuQue/src/main/java/com/dsideal/ZhuQue/Ylt/Controller/YltController.java b/ZhuQue/src/main/java/com/dsideal/ZhuQue/Ylt/Controller/YltController.java index afd22fb..1e198fa 100644 --- a/ZhuQue/src/main/java/com/dsideal/ZhuQue/Ylt/Controller/YltController.java +++ b/ZhuQue/src/main/java/com/dsideal/ZhuQue/Ylt/Controller/YltController.java @@ -46,9 +46,9 @@ public class YltController extends Controller { // http://10.10.21.20:8888/ZhuQue/Ylt/SyncChargePilePay?order_id=1 // 科拓闸机场地 // http://10.10.21.20:8888/ZhuQue/Ylt/SyncChargePilePay?order_id=248933 - public void SyncChargePilePay(int order_id) { + public void SyncChargePilePay(String order_no) { //根据订单号获取到第三方方面提供的车场信息 - Record thirdPartyStation = ym.getThirdPartyStation(order_id); + Record thirdPartyStation = ym.getThirdPartyStation(order_no); if (thirdPartyStation == null) { Record record = new Record(); renderJson(CommonUtil.getRet(record, false, "检查到不是需要免费的道闸所在车场,无需发送减免消息!!")); @@ -67,7 +67,7 @@ public class YltController extends Controller { log.info("发现闸机提供商:" + name + ",parkId=" + parkId); //订单信息 - Record dingDanRecord = ym.getOrderById(order_id); + Record dingDanRecord = ym.getOrderByNo(order_no); String charge_plate_no = dingDanRecord.getStr("charge_plate_no");//车牌号 String charge_begin_time = dingDanRecord.getStr("charge_begin_time");//充电开始时间 String charge_end_time = dingDanRecord.getStr("charge_end_time");//充电结束时间 @@ -103,7 +103,7 @@ public class YltController extends Controller { long timestamp = System.currentTimeMillis(); jo.put("ts", timestamp);//每次请求附带当前时间戳(格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数)超过10S请求失效 jo.put("reqId", UUID.randomUUID().toString().toUpperCase());//每次请求的唯一标识,如果是异步接口,异步响应消息的reqId会与原请求的reqId一致。每次请求必须唯一!!! - jo.put("orderNo", String.valueOf(order_id));//订单号 + jo.put("orderNo", order_no);//订单号 jo.put("plateNo", charge_plate_no);//车牌号 jo.put("startTime", charge_begin_time);//开始时间 jo.put("endTime", charge_end_time);//结束时间 diff --git a/ZhuQue/src/main/java/com/dsideal/ZhuQue/Ylt/Model/YltModel.java b/ZhuQue/src/main/java/com/dsideal/ZhuQue/Ylt/Model/YltModel.java index a77c371..2807c29 100644 --- a/ZhuQue/src/main/java/com/dsideal/ZhuQue/Ylt/Model/YltModel.java +++ b/ZhuQue/src/main/java/com/dsideal/ZhuQue/Ylt/Model/YltModel.java @@ -30,11 +30,11 @@ public class YltModel { /** * 功能:传入一个订单ID,判断它所在的车场是不是第三方道闸的车场 * - * @param order_id + * @param order_no * @return */ - public Record getThirdPartyStation(int order_id) { - Record record = getOrderById(order_id); + public Record getThirdPartyStation(String order_no) { + Record record = getOrderByNo(order_no); if (record == null) { return null; } @@ -46,12 +46,12 @@ public class YltModel { /** * 功能:根据订单ID获取订单信息 * - * @param order_id + * @param order_no * @return */ - public Record getOrderById(int order_id) { - String sql = "select * from t_equipment_charge_order where id=?"; - Record record = Db.findFirst(sql, order_id); + public Record getOrderByNo(String order_no) { + String sql = "select * from t_equipment_charge_order where order_no=?"; + Record record = Db.findFirst(sql, order_no); return record; } diff --git a/业务梳理/~$特收到的需求、分析与现状.docx b/业务梳理/~$特收到的需求、分析与现状.docx new file mode 100644 index 0000000..a445cca Binary files /dev/null and b/业务梳理/~$特收到的需求、分析与现状.docx differ diff --git a/业务梳理/关于补单操作.md b/业务梳理/关于补单操作.md deleted file mode 100644 index feac220..0000000 --- a/业务梳理/关于补单操作.md +++ /dev/null @@ -1,151 +0,0 @@ -#### 接口 - -```java - @ApiOperation("批量处理挂起正向订单,进行补单") - @PostMapping("/completeUnReportOrder") - public ResultVO completeUnReportOrder(String startDate,String endDate){ - taskServiceApi.completeUnReportOrder(startDate,endDate); - return ResultVO.success(); - } - - @ApiOperation("批量处理挂起反向订单,进行补单") - @PostMapping("/completeUnReportReverseOrder") - public ResultVO completeUnReportReverseOrder(){ - taskServiceApi.completeUnReportReverseOrder(); - return ResultVO.success(); - } -``` - - - -#### 正向补单 - -```java -@Scheduled(fixedDelay=SIX_HOUR) - public void completeUnReportOrder() { - try{ - log.info("批量处理挂起正向订单,进行补单"); -// handleOrderTarckService.completeUnReportOrder(); - handleOrderTarckService.completeUnReportOrderV2(); - }catch (Exception e){ - log.error("批量处理挂起订单,进行补单失败,原因:", e); - e.printStackTrace(); - } - } -``` - -```java - /** - * 新版本计算补单 - */ - public void completeUnReportOrderV2() { - //处理前60天的挂起订单 - Date startDate = ToolDateTime.startDateByDay(new Date(), -60); - Date endDate = ToolDateTime.startDateByDay(new Date(), 0); -// Date endDate = ToolDateTime.endDateByDay(new Date()); - List hangUpOrderList = equipmentChargeOrderDOMapper.queryHangUpOrder(startDate, endDate);//查询挂起订单 - Stream.iterate(0, i -> i + 1).limit(hangUpOrderList.size()).forEach(i -> { - asyncTaskService.completeUnReportOrder(hangUpOrderList.get(i)); - }); - } -``` - - - - - -#### 反向补单 - -```java - @Scheduled(cron = "0 0 3 * * ?") - public void completeUnReportReverseOrder() { - try{ - log.info("批量处理挂起反向订单,进行补单"); - handleOrderTarckService.completeUnReportReverseOrder(); - }catch (Exception e){ - log.error("批量处理挂起反向订单,进行补单失败,原因:", e); - e.printStackTrace(); - } - } -``` - -定时了定时任务每天$3$点进行挂起反向订单的补单操作。 - -```java - /** - * 批量处理挂起反向订单,进行补单 - */ - public void completeUnReportReverseOrder() { - //处理指定 ~ 指定时间三天前 时间内的反向挂起的订单 - // #{code} = push_reverse_orders.duration - // select value from t_biz_parameter where state = 1 and code = #{code} order by id desc limit 1 - // select value from t_biz_parameter where state = 1 and code = 'push_reverse_orders.duration' order by id desc limit 1 - // 返回值 : 72 小时 - String time = equipmentChargeOrderDOMapper.getReverseFinishTime(Constant.REVERSE_ORDER_TIME); - int hour = new BigDecimal(time).intValue(); - Date startDate = DateUtil.offset(new Date(), DateField.HOUR_OF_DAY, -(hour + 720));//33天之内的 - Date endDate = DateUtil.offset(new Date(), DateField.HOUR_OF_DAY, -hour);//72小时前,也就是3天前 - //查询这段时间内挂起的工单 - /** - - - o.state = 5 订单状态 0 创建中 1准备充电中 2 充电中 3完成 4 取消 5挂起 6需要手动补单 7结算中 - is_hlht=1 是否是互联互通站点 1是 0不是 , 注意:这里只处理了互联互通的!因为is_hlht=1,也就是说不是互联互通的挂单,调用这个接口补单是无效的!!! - */ - List hangUpOrderList = equipmentChargeOrderDOMapper.queryHangUpReverseOrder(startDate, endDate);//查询挂起订单 - - Stream.iterate(0, i -> i + 1).limit(hangUpOrderList.size()).forEach(i -> { - CompletableFuture> sendCoupon = CompletableFuture.supplyAsync(() -> { - //处理挂起订单进行补单 - asyncTaskService.completeUnReportReverseOrder(hangUpOrderList.get(i)); - return null; - }, handleReverseService); - }); - } -``` - -从$JAVA$代码来看,依赖这个接口实现补单功能有两个问题: - -- 它只能实现$72$小时的补单,为什么一定要强调$72$小时呢?为什么不是$24$小时或者$1$小时呢? -- 它只能实现互联互通的补单,对于直连桩的无效,因为它根本就没有查询直联桩的补单信息! - -```java -/** - * 处理反向互通挂起订单 - */ - public void completeUnReportReverseOrder(EquipmentChargeOrderDO orderDO) { - try { - //从mongo上获取最后一次推送的账单数据 - NotificationChargeOrderInfoReqMongoDO notificationChargeOrderInfoReqMongoDO = notificationChargeOrderInfoReqDao.findOne(orderDO.getOrderNo()); - if(notificationChargeOrderInfoReqMongoDO != null) { - completeWithPushedOrder(orderDO, notificationChargeOrderInfoReqMongoDO); - return; - } - - //若是没有,则从mongo中获取最后一次充电中推送的数据 进行结算 - ReverseOrderInfo reverseOrderInfo = reverseOrderInfoDao.findOne(orderDO.getOrderNo()); - if(reverseOrderInfo != null) { - completeWithLastPushedOrder(orderDO, reverseOrderInfo); - } - - } catch (Exception e) { - addOrderTrack(orderDO.getOrderNo(), orderDO.getUserId(), orderDO.getConnectorId().toString(), (byte) 3, (byte) 0, "补单失败,补单异常,异常信息"); - log.error("反向订单" + orderDO.getOrderNo() + "补单异常,异常信息:", e); - } - - } -``` -