فهرست منبع

计算电量的时候加上当前电量 因为php消费可能会滞后

liuf 4 ماه پیش
والد
کامیت
4e79d50b5e

+ 3 - 1
src/main/java/com/tmzn/devicelinkykc/frameMsg/TransMoney.java

@@ -88,7 +88,7 @@ public class TransMoney {
      * @param endTime
      * @return
      */
-    public Map<String,BigDecimal> compute(int port, BillingModel billingModel, Long startTime, Long endTime, OrderStatus orderStatus) throws Exception{
+    public Map<String,BigDecimal> compute(int port, BillingModel billingModel, Long startTime, Long endTime, OrderStatus orderStatus,int endElec) throws Exception{
 
 //        Map<String, BigDecimal> transData = getTransData();
         Map<String, BigDecimal> transData = new ConcurrentHashMap<>();
@@ -112,11 +112,13 @@ public class TransMoney {
         HashMap<String, Object> bparam = new HashMap<>();
         BillingModelDTO billingModelDTO = billingModelMapping.billingModelToBillingModelDto(billingModel);
         bparam.put("port",port);
+        bparam.put("imei",billingModel.getDeviceImei());
         bparam.put("billingModel",billingModelDTO);
         //为了防止落库时间差
         bparam.put("startTime",(startTime-5*1000)/1000);
         bparam.put("endTime",(endTime+5*1000)/1000);
         bparam.put("order_id",orderStatus.getId());
+        bparam.put("end_elec",endElec);
         JSONObject jsonObject = new JSONObject(bparam);
         String s = jsonObject.toString();
 //        String billUrl = "http://wetiandi.com/app/index.php?i=1&j=1&c=auth&a=calculate_cost_new&do=compute_elec_all";

+ 2 - 1
src/main/java/com/tmzn/devicelinkykc/message/DeviceMsgHandle.java

@@ -703,12 +703,13 @@ public class DeviceMsgHandle {
                 return;
             }
 
+            int endElec = data.getIntValue("elec");
             byte[] encrypt = new byte[0];
             //查询计费模板
             QueryWrapper<BillingModel> billingModelQueryWrapper = new QueryWrapper<>();
             billingModelQueryWrapper.eq("device_imei", imei);
             BillingModel model = billingModelService.getOne(billingModelQueryWrapper);
-            Map<String, BigDecimal> map = transMoney.compute(port, model, statusServiceOne.getCreateTime(), statusServiceOne.getEndTime(),statusServiceOne);
+            Map<String, BigDecimal> map = transMoney.compute(port, model, statusServiceOne.getCreateTime(), statusServiceOne.getEndTime(),statusServiceOne,endElec);
             logger.info(statusServiceOne.getPileCode() + "计算电费,{},{}" + DataConversion.bytesToHexString(statusServiceOne.getTransOrder()),map.get("money"),map.get("elec"));
             encrypt = transactionFlowPushFrame.sendTrans(deviceConnection, statusServiceOne.getTransOrder(), statusServiceOne.getPileCode(), statusServiceOne.getGunsCode(), statusServiceOne.getCreateTime(), statusServiceOne.getEndTime(), model, statusServiceOne.getCard(), map, statusServiceOne.getReasonStopCharging());
 

+ 5 - 1
src/main/java/com/tmzn/devicelinkykc/message/YkcMsgHandle.java

@@ -341,6 +341,8 @@ public class YkcMsgHandle {
 
         Integer voltage;
         Integer power;
+        Integer endElec=0;
+
 
         if(port==1){
             voltage = statusJSON.getInteger("voltage");
@@ -353,8 +355,10 @@ public class YkcMsgHandle {
 
         if(port == 1){
             power = statusJSON.getInteger("power");
+            endElec = statusJSON.getInteger("elec");
         }else{
             power = statusJSON.getInteger("power_1");
+            endElec = statusJSON.getInteger("elec_1");
         }
 
         if(power==null){
@@ -379,7 +383,7 @@ public class YkcMsgHandle {
                 QueryWrapper<BillingModel> billWapper = new QueryWrapper<>();
                 billWapper.in("pile_code", pileCode);
                 BillingModel billingModel = billingModelService.getOne(billWapper);
-                start =  transMoney.compute(port, billingModel, orderStatus.getCreateTime(), endTime,orderStatus);
+                start =  transMoney.compute(port, billingModel, orderStatus.getCreateTime(), endTime,orderStatus,endElec);
             } catch (Exception e) {
                 e.printStackTrace();
                 logger.error("计算订单异常{},{}",orderStatus.getPileCode(),e.getMessage());

+ 4 - 1
src/main/java/com/tmzn/devicelinkykc/taskQueue/runner/MsgCharngingRunner.java

@@ -236,6 +236,7 @@ public class MsgCharngingRunner {
 
         Integer voltage;
         Integer power;
+        Integer endElec=0;
 
         if(port==1){
              voltage = statusJSON.getInteger("voltage");
@@ -248,8 +249,10 @@ public class MsgCharngingRunner {
 
         if(port == 1){
             power = statusJSON.getInteger("power");
+            endElec = statusJSON.getInteger("elec");
         }else{
             power = statusJSON.getInteger("power_1");
+            endElec = statusJSON.getInteger("elec_1");
         }
 
         if(power==null){
@@ -271,7 +274,7 @@ public class MsgCharngingRunner {
         }else{
             //缓存120秒避免重复计算电量
             try {
-                start = transMoney.compute(port, billingModel, orderStatus.getCreateTime(), endTime,orderStatus);
+                start = transMoney.compute(port, billingModel, orderStatus.getCreateTime(), endTime,orderStatus,endElec);
             } catch (Exception e) {
                 e.printStackTrace();
                 log.error("计算订单异常{},{}",orderStatus.getPileCode(),e.getMessage());

+ 1 - 1
src/main/java/com/tmzn/devicelinkykc/taskQueue/runner/MsgTranscationRunner.java

@@ -105,7 +105,7 @@ public class MsgTranscationRunner {
             log.info("{}从缓存获取map{}",statusServiceOne.getDeviceImei(), JSON.toJSONString(map));
         }else{
             try{
-                map = transMoney.compute(port, model, statusServiceOne.getCreateTime(), statusServiceOne.getEndTime(),statusServiceOne);
+                map = transMoney.compute(port, model, statusServiceOne.getCreateTime(), statusServiceOne.getEndTime(),statusServiceOne,0);
                 //10分钟内只查询一次
                 log.info("{}重新获取map{}",statusServiceOne.getDeviceImei(), JSON.toJSONString(map));
                 redisCache.setCacheObject(cacheKey,map);