Browse Source

计费保存一版

xusonglin 5 years ago
parent
commit
1c2ceb2b34
18 changed files with 209 additions and 233 deletions
  1. 13 7
      src/main/java/com/jkcredit/invoice/hub/consumer/ChargeConsumer.java
  2. 93 0
      src/main/java/com/jkcredit/invoice/hub/model/dto/apiCarFree/InvoiceResult.java
  3. 1 85
      src/main/java/com/jkcredit/invoice/hub/model/dto/apiCarFree/InvoiceResultDto.java
  4. 0 110
      src/main/java/com/jkcredit/invoice/hub/model/dto/apiCarFree/InvoiceResultDtoTest.java
  5. 5 12
      src/main/java/com/jkcredit/invoice/hub/model/dto/userBalance/UserBalanceDto.java
  6. 28 0
      src/main/java/com/jkcredit/invoice/hub/model/dto/userBalance/UserBalanceDtoApi.java
  7. 23 0
      src/main/java/com/jkcredit/invoice/hub/model/dto/userBalance/UserBalanceInvoiceDto.java
  8. 2 1
      src/main/java/com/jkcredit/invoice/hub/model/po/needCharge/NeedChargePo.java
  9. 2 1
      src/main/java/com/jkcredit/invoice/hub/model/po/realCharge/RealChargePo.java
  10. 2 1
      src/main/java/com/jkcredit/invoice/hub/model/po/searchInvoice/SearchInvoicePo.java
  11. 2 1
      src/main/java/com/jkcredit/invoice/hub/model/po/userBalance/UserBalancePo.java
  12. 3 2
      src/main/java/com/jkcredit/invoice/hub/puducer/ChargeProducer.java
  13. 2 1
      src/main/java/com/jkcredit/invoice/hub/service/apiUser/ApiUserServiceImpl.java
  14. 1 1
      src/main/java/com/jkcredit/invoice/hub/service/user/UserServiceImpl.java
  15. 4 1
      src/main/java/com/jkcredit/invoice/hub/service/userBalance/UserBalanceService.java
  16. 14 2
      src/main/java/com/jkcredit/invoice/hub/service/userBalance/UserBalanceServiceImpl.java
  17. 13 7
      src/main/java/com/jkcredit/invoice/hub/task/WayBillTask.java
  18. 1 1
      src/main/resources/mapper/SearchInvoiceMapper.xml

+ 13 - 7
src/main/java/com/jkcredit/invoice/hub/consumer/ChargeConsumer.java

@@ -4,6 +4,7 @@ import com.jkcredit.invoice.hub.constant.CommonConstant;
 import com.jkcredit.invoice.hub.model.dto.realCharge.RealChargeDto;
 import com.jkcredit.invoice.hub.model.dto.user.UserDto;
 import com.jkcredit.invoice.hub.model.dto.userBalance.UserBalanceDto;
+import com.jkcredit.invoice.hub.model.dto.userBalance.UserBalanceInvoiceDto;
 import com.jkcredit.invoice.hub.service.realCharge.RealChargeService;
 import com.jkcredit.invoice.hub.service.user.UserService;
 import com.jkcredit.invoice.hub.service.userBalance.UserBalanceService;
@@ -47,31 +48,36 @@ public class ChargeConsumer {
             ),
             key = "charge.*"
     ))
-    public void process(@Payload UserBalanceDto userBalanceDto, Channel channel, Message message) throws IOException {
+    public void process(@Payload UserBalanceInvoiceDto userBalanceInvoiceDto, Channel channel, Message message) throws IOException {
         try {
             synchronized (this) {
-                UserDto user = userService.getUser(userBalanceDto.getUserId());
-                userBalanceDto.setBalance(userBalanceDto.getBalance() - CommonUtil.parseDouble(user.getPrice()));
+                UserDto user = userService.getUser(userBalanceInvoiceDto.getUserId());
+                UserBalanceDto dto = new UserBalanceDto();
+                dto.setUserId(userBalanceInvoiceDto.getUserId());
+                dto.setBalance(userBalanceInvoiceDto.getBalance().subtract(user.getPrice()));
+
                 //更新余额
-                userBalanceService.updateUserBalance(userBalanceDto);
+                userBalanceService.updateUserBalance(dto);
 
                 // 实际扣费数据
                 RealChargeDto realChargeDto = new RealChargeDto();
-                realChargeDto.setUserId(userBalanceDto.getUserId());
+                realChargeDto.setUserId(userBalanceInvoiceDto.getUserId());
                 realChargeDto.setPrice(user.getPrice());
+                realChargeDto.setNum(userBalanceInvoiceDto.getNum());
+                realChargeDto.setTransactionId(userBalanceInvoiceDto.getTransactionId());
                 // todo 运单编号运单transationId
                 realChargeService.saveRealCharge(realChargeDto);
             }
             //告诉服务器收到这条消息 已经被我消费了 可以在队列删掉 这样以后就不会再发了 否则消息服务器以为这条消息没处理掉 后续还会在发
             channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
-            log.warn("消息队列日志:{},计费用户id:{}", "扣款", userBalanceDto.getUserId());
+            log.warn("消息队列日志:{},计费用户id:{}", "扣款", userBalanceInvoiceDto.getUserId());
         } catch (IOException e) {
             e.printStackTrace();
             //丢弃这条消息
             //channel.basicNack(message.getMessageProperties().getDeliveryTag(), false,false);
             //ack返回false,并重新回到队列
             channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);
-            log.warn("消息队列失败日志:{},计费用户id:{}", "扣款", userBalanceDto.getUserId());
+            log.warn("消息队列失败日志:{},计费用户id:{}", "扣款", userBalanceInvoiceDto.getUserId());
             log.error("接受失败");
         }
 

+ 93 - 0
src/main/java/com/jkcredit/invoice/hub/model/dto/apiCarFree/InvoiceResult.java

@@ -0,0 +1,93 @@
+package com.jkcredit.invoice.hub.model.dto.apiCarFree;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/1/18 23:38
+ * @version: V1.0
+ **/
+@Data
+public class InvoiceResult implements Serializable {
+    private static final long serialVersionUID = 4047037112002770945L;
+    // 发票号码
+    private String invoiceNum;
+
+    // 发票代码
+    private String invoiceCode;
+
+    // 开票时间
+    private String invoiceMakeTime;
+
+    // 下载地址
+    private String invoiceUrl;
+
+    // 发票模板url
+    private String invoiceHtmlUrl;
+
+    // 入口收费站
+    private String enStation;
+
+    // 出口收费站
+    private String exStation;
+
+    // 交易时间
+    private String exTime;
+
+    // 交易金额
+    private Long fee;
+
+    // 税额
+    private Long totalTaxAmount;
+
+    // 车牌号
+    private String plateNum;
+
+    // 车型
+    private int vehicleType;
+
+    // 运单编号
+    private String waybillNum;
+
+    // 运单状态
+    private int waybillStatus;
+
+    // 运单开始时间
+    private String waybillStartTime;
+
+    // 运单结束时间
+    private String waybillEndTime;
+
+    // 价税合计
+    private Long totalAmount;
+
+    // 税率
+    private double taxRate;
+
+    // 发票种类
+    private String invoiceType;
+
+    // 金额
+    private Long amount;
+
+    // 销方名称
+    private String sellerName;
+
+    // 销方税号
+    private String sellerTaxpayerCode;
+
+    // 交易id
+    private String transactionId;
+
+    // 交易匹配时间
+    private String tradeMatchTime;
+
+    // 购方名称
+    private String buyerName;
+
+    // 购方税号
+    private String buyerTaxpayerCode;
+}

+ 1 - 85
src/main/java/com/jkcredit/invoice/hub/model/dto/apiCarFree/InvoiceResultDto.java

@@ -3,7 +3,6 @@ package com.jkcredit.invoice.hub.model.dto.apiCarFree;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -23,88 +22,5 @@ public class InvoiceResultDto implements Serializable {
     private Integer waybillStatus;
     private String waybillStartTime;
     private String waybillEndTime;
-    private List<Result> result;
-
-    @Data
-    public class Result implements Serializable {
-        private static final long serialVersionUID = 4254312516969121303L;
-        // 发票号码
-        private String invoiceNum;
-
-        // 发票代码
-        private String invoiceCode;
-
-        // 开票时间
-        private String invoiceMakeTime;
-
-        // 下载地址
-        private String invoiceUrl;
-
-        // 发票模板url
-        private String invoiceHtmlUrl;
-
-        // 入口收费站
-        private String enStation;
-
-        // 出口收费站
-        private String exStation;
-
-        // 交易时间
-        private String exTime;
-
-        // 交易金额
-        private Long fee;
-
-        // 税额
-        private Long totalTaxAmount;
-
-        // 车牌号
-        private String plateNum;
-
-        // 车型
-        private int vehicleType;
-
-        // 运单编号
-        private String waybillNum;
-
-        // 运单状态
-        private int waybillStatus;
-
-        // 运单开始时间
-        private String waybillStartTime;
-
-        // 运单结束时间
-        private String waybillEndTime;
-
-        // 价税合计
-        private Long totalAmount;
-
-        // 税率
-        private double taxRate;
-
-        // 发票种类
-        private String invoiceType;
-
-        // 金额
-        private Long amount;
-
-        // 销方名称
-        private String sellerName;
-
-        // 销方税号
-        private String sellerTaxpayerCode;
-
-        // 交易id
-        private String transactionId;
-
-        // 交易匹配时间
-        private String tradeMatchTime;
-
-        // 购方名称
-        private String buyerName;
-
-        // 购方税号
-        private String buyerTaxpayerCode;
-    }
-
+    private List<InvoiceResult> result;
 }

+ 0 - 110
src/main/java/com/jkcredit/invoice/hub/model/dto/apiCarFree/InvoiceResultDtoTest.java

@@ -1,110 +0,0 @@
-package com.jkcredit.invoice.hub.model.dto.apiCarFree;
-
-import com.alibaba.fastjson.JSONArray;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * @description:
- * @author: xusonglin
- * @create: 2020/1/18 17:00
- * @version: V1.0
- **/
-@Data
-public class InvoiceResultDtoTest implements Serializable {
-    private static final long serialVersionUID = -9058540201622141462L;
-    private String info;
-    private String receiveTime;
-    private String plateNum;
-    private Integer vehicleType;
-    private String waybillNum;
-    private Integer waybillStatus;
-    private String waybillStartTime;
-    private String waybillEndTime;
-    private JSONArray result;
-
-    @Data
-    public class Result implements Serializable {
-        private static final long serialVersionUID = 4254312516969121303L;
-        // 发票号码
-        private String invoiceNum;
-
-        // 发票代码
-        private String invoiceCode;
-
-        // 开票时间
-        private String invoiceMakeTime;
-
-        // 下载地址
-        private String invoiceUrl;
-
-        // 发票模板url
-        private String invoiceHtmlUrl;
-
-        // 入口收费站
-        private String enStation;
-
-        // 出口收费站
-        private String exStation;
-
-        // 交易时间
-        private String exTime;
-
-        // 交易金额
-        private Long fee;
-
-        // 税额
-        private Long totalTaxAmount;
-
-        // 车牌号
-        private String plateNum;
-
-        // 车型
-        private int vehicleType;
-
-        // 运单编号
-        private String waybillNum;
-
-        // 运单状态
-        private int waybillStatus;
-
-        // 运单开始时间
-        private String waybillStartTime;
-
-        // 运单结束时间
-        private String waybillEndTime;
-
-        // 价税合计
-        private Long totalAmount;
-
-        // 税率
-        private double taxRate;
-
-        // 发票种类
-        private String invoiceType;
-
-        // 金额
-        private Long amount;
-
-        // 销方名称
-        private String sellerName;
-
-        // 销方税号
-        private String sellerTaxpayerCode;
-
-        // 交易id
-        private String transactionId;
-
-        // 交易匹配时间
-        private String tradeMatchTime;
-
-        // 购方名称
-        private String buyerName;
-
-        // 购方税号
-        private String buyerTaxpayerCode;
-    }
-
-}

+ 5 - 12
src/main/java/com/jkcredit/invoice/hub/model/dto/userBalance/UserBalanceDto.java

@@ -1,28 +1,21 @@
 package com.jkcredit.invoice.hub.model.dto.userBalance;
 
-import lombok.AllArgsConstructor;
 import lombok.Data;
-import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * @description:
  * @author: xusonglin
- * @create: 2020/1/17 23:45
+ * @create: 2020/1/19 9:19
  * @version: V1.0
  **/
 @Data
-@AllArgsConstructor
-@NoArgsConstructor
 public class UserBalanceDto implements Serializable {
     private static final long serialVersionUID = -1784057925412485786L;
     private Long userId;
-    private Double balance;
-    private String lastDeductionTime;
-
-    public UserBalanceDto(Double balance, String lastDeductionTime) {
-        this.balance = balance;
-        this.lastDeductionTime = lastDeductionTime;
-    }
+    private BigDecimal balance;
+    private Date updateTime;
 }

+ 28 - 0
src/main/java/com/jkcredit/invoice/hub/model/dto/userBalance/UserBalanceDtoApi.java

@@ -0,0 +1,28 @@
+package com.jkcredit.invoice.hub.model.dto.userBalance;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/1/17 23:45
+ * @version: V1.0
+ **/
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserBalanceDtoApi implements Serializable {
+    private static final long serialVersionUID = -1784057925412485786L;
+    private Long userId;
+    private Double balance;
+    private String lastDeductionTime;
+
+    public UserBalanceDtoApi(Double balance, String lastDeductionTime) {
+        this.balance = balance;
+        this.lastDeductionTime = lastDeductionTime;
+    }
+}

+ 23 - 0
src/main/java/com/jkcredit/invoice/hub/model/dto/userBalance/UserBalanceInvoiceDto.java

@@ -0,0 +1,23 @@
+package com.jkcredit.invoice.hub.model.dto.userBalance;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @description:
+ * @author: xusonglin
+ * @create: 2020/1/19 9:57
+ * @version: V1.0
+ **/
+@Data
+public class UserBalanceInvoiceDto implements Serializable {
+    private static final long serialVersionUID = 4210441535086573195L;
+    private Long userId;
+    private BigDecimal balance;
+    private Date updateTime;
+    private String num;
+    private String transactionId;
+}

+ 2 - 1
src/main/java/com/jkcredit/invoice/hub/model/po/needCharge/NeedChargePo.java

@@ -1,5 +1,6 @@
 package com.jkcredit.invoice.hub.model.po.needCharge;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
@@ -24,7 +25,7 @@ import java.util.Date;
 public class NeedChargePo implements Serializable {
     private static final long serialVersionUID = -9196791950447430517L;
     @Id
-    @TableId
+    @TableId(type = IdType.AUTO)
     private Long id;
     private Long userId;
     private String num;

+ 2 - 1
src/main/java/com/jkcredit/invoice/hub/model/po/realCharge/RealChargePo.java

@@ -1,5 +1,6 @@
 package com.jkcredit.invoice.hub.model.po.realCharge;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
@@ -24,7 +25,7 @@ import java.util.Date;
 public class RealChargePo implements Serializable {
     private static final long serialVersionUID = 1426226570003808900L;
     @Id
-    @TableId
+    @TableId(type = IdType.AUTO)
     private Long id;
     private Long userId;
     private String num;

+ 2 - 1
src/main/java/com/jkcredit/invoice/hub/model/po/searchInvoice/SearchInvoicePo.java

@@ -1,5 +1,6 @@
 package com.jkcredit.invoice.hub.model.po.searchInvoice;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
@@ -23,7 +24,7 @@ import java.util.Date;
 public class SearchInvoicePo implements Serializable {
     private static final long serialVersionUID = -3877836713461291240L;
     @Id
-    @TableId
+    @TableId(type = IdType.AUTO)
     private Long id;
 
     private String info;

+ 2 - 1
src/main/java/com/jkcredit/invoice/hub/model/po/userBalance/UserBalancePo.java

@@ -1,5 +1,6 @@
 package com.jkcredit.invoice.hub.model.po.userBalance;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
@@ -25,7 +26,7 @@ public class UserBalancePo implements Serializable {
     private static final long serialVersionUID = -8548930732100649834L;
 
     @Id
-    @TableId
+    @TableId(type = IdType.AUTO)
     private Long userId;
     private BigDecimal balance;
     private Date updateTime;

+ 3 - 2
src/main/java/com/jkcredit/invoice/hub/puducer/ChargeProducer.java

@@ -2,6 +2,7 @@ package com.jkcredit.invoice.hub.puducer;
 
 import com.jkcredit.invoice.hub.constant.CommonConstant;
 import com.jkcredit.invoice.hub.model.dto.userBalance.UserBalanceDto;
+import com.jkcredit.invoice.hub.model.dto.userBalance.UserBalanceInvoiceDto;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
@@ -21,14 +22,14 @@ public class ChargeProducer implements RabbitTemplate.ReturnCallback {
     @Autowired
     private RabbitTemplate rabbitTemplate;
 
-    public void send(UserBalanceDto userBalanceDto) {
+    public void send(UserBalanceInvoiceDto userBalanceInvoiceDto) {
         this.rabbitTemplate.setReturnCallback(this);
         this.rabbitTemplate.setConfirmCallback((correlationData, ack, cause) -> {
             if (!ack) {
                 log.info("消息发送失败:{},{}", cause, correlationData.toString());
             }
         });
-        this.rabbitTemplate.convertAndSend(CommonConstant.CHARGE_EXCHANGE, "charge.*", userBalanceDto);
+        this.rabbitTemplate.convertAndSend(CommonConstant.CHARGE_EXCHANGE, "charge.*", userBalanceInvoiceDto);
     }
 
     @Override

+ 2 - 1
src/main/java/com/jkcredit/invoice/hub/service/apiUser/ApiUserServiceImpl.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.jkcredit.invoice.hub.constant.CommonConstant;
 import com.jkcredit.invoice.hub.enums.ApiResponseCodeEnum;
 import com.jkcredit.invoice.hub.model.dto.userBalance.UserBalanceDto;
+import com.jkcredit.invoice.hub.model.dto.userBalance.UserBalanceDtoApi;
 import com.jkcredit.invoice.hub.model.po.user.UserPo;
 import com.jkcredit.invoice.hub.service.base.BaseService;
 import com.jkcredit.invoice.hub.service.user.UserService;
@@ -56,7 +57,7 @@ public class ApiUserServiceImpl extends BaseService implements ApiUserService {
     @Override
     public ApiResponseData balanceQuery(JSONObject param) {
         try {
-            UserBalanceDto dto = userBalanceService.getUserBalance(param.getLong("userId"));
+            UserBalanceDtoApi dto = userBalanceService.getUserBalanceApi(param.getLong("userId"));
             return ApiResponseData.success(ApiResponseCodeEnum.CODE_200.getValue(), JSON.toJSONString(dto));
         } catch (ServiceException se) {
             log.error("[-balanceQuery-] 错误信息:" + se.getMessage());

+ 1 - 1
src/main/java/com/jkcredit/invoice/hub/service/user/UserServiceImpl.java

@@ -156,7 +156,7 @@ public class UserServiceImpl extends BaseService implements UserService {
     @Override
     public UserDto getUser(Long id) {
         UserDto userDto = new UserDto();
-        UserPo userPo = userMapper.selectById(id);
+        UserPo userPo = userMapper.getUserById(id);
         if (userPo != null) {
             BeanUtils.copyProperties(userPo, userDto);
         } else {

+ 4 - 1
src/main/java/com/jkcredit/invoice/hub/service/userBalance/UserBalanceService.java

@@ -1,6 +1,7 @@
 package com.jkcredit.invoice.hub.service.userBalance;
 
 import com.jkcredit.invoice.hub.model.dto.userBalance.UserBalanceDto;
+import com.jkcredit.invoice.hub.model.dto.userBalance.UserBalanceDtoApi;
 
 /**
  * @description:
@@ -9,7 +10,9 @@ import com.jkcredit.invoice.hub.model.dto.userBalance.UserBalanceDto;
  * @version: V1.0
  **/
 public interface UserBalanceService {
-    UserBalanceDto getUserBalance(Long userId);
+    UserBalanceDtoApi getUserBalanceApi(Long userId);
 
     void updateUserBalance(UserBalanceDto dto);
+
+    UserBalanceDto getUserBalance(Long userId);
 }

+ 14 - 2
src/main/java/com/jkcredit/invoice/hub/service/userBalance/UserBalanceServiceImpl.java

@@ -3,6 +3,7 @@ package com.jkcredit.invoice.hub.service.userBalance;
 import com.jkcredit.invoice.hub.constant.ExceptionMessage;
 import com.jkcredit.invoice.hub.mapper.UserBalanceMapper;
 import com.jkcredit.invoice.hub.model.dto.userBalance.UserBalanceDto;
+import com.jkcredit.invoice.hub.model.dto.userBalance.UserBalanceDtoApi;
 import com.jkcredit.invoice.hub.model.po.userBalance.UserBalancePo;
 import com.jkcredit.invoice.hub.service.base.BaseService;
 import com.jkcredit.invoice.hub.spi.lang.exception.ServiceException;
@@ -27,12 +28,12 @@ public class UserBalanceServiceImpl extends BaseService implements UserBalanceSe
     UserBalanceMapper userBalanceMapper;
 
     @Override
-    public UserBalanceDto getUserBalance(Long userId) {
+    public UserBalanceDtoApi getUserBalanceApi(Long userId) {
         UserBalancePo userBalancePo = userBalanceMapper.selectById(userId);
         if (userBalancePo == null) {
             throw new ServiceException(ExceptionMessage.USER_NOT_EXIST);
         }
-        return new UserBalanceDto(CommonUtil.parseDouble(userBalancePo.getBalance()), CommonUtil.dateFormat(userBalancePo.getUpdateTime()));
+        return new UserBalanceDtoApi(CommonUtil.parseDouble(userBalancePo.getBalance()), CommonUtil.dateFormat(userBalancePo.getUpdateTime()));
     }
 
     @Override
@@ -47,4 +48,15 @@ public class UserBalanceServiceImpl extends BaseService implements UserBalanceSe
             throw new ServiceException("更新余额表失败");
         }
     }
+
+    //    @Override
+    public UserBalanceDto getUserBalance(Long userId) {
+        UserBalancePo userBalancePo = userBalanceMapper.selectById(userId);
+        UserBalanceDto dto = new UserBalanceDto();
+        BeanUtil.copyProperties(dto, userBalancePo);
+        if (userBalancePo == null) {
+            throw new ServiceException(ExceptionMessage.USER_NOT_EXIST);
+        }
+        return dto;
+    }
 }

+ 13 - 7
src/main/java/com/jkcredit/invoice/hub/task/WayBillTask.java

@@ -4,12 +4,14 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.jkcredit.invoice.hub.constant.CommonConstant;
 import com.jkcredit.invoice.hub.enums.ApiResponseCodeEnum;
+import com.jkcredit.invoice.hub.model.dto.apiCarFree.InvoiceResult;
 import com.jkcredit.invoice.hub.model.dto.apiCarFree.InvoiceResultDto;
 import com.jkcredit.invoice.hub.model.dto.needCharge.NeedChargeDto;
 import com.jkcredit.invoice.hub.model.dto.searchInvoice.SearchInvoiceDto;
 import com.jkcredit.invoice.hub.model.dto.searchInvoiceResult.SearchInvoiceResultDto;
 import com.jkcredit.invoice.hub.model.dto.user.UserDto;
 import com.jkcredit.invoice.hub.model.dto.userBalance.UserBalanceDto;
+import com.jkcredit.invoice.hub.model.dto.userBalance.UserBalanceInvoiceDto;
 import com.jkcredit.invoice.hub.model.po.carFreeCarrierBillStart.CarFreeCarrierBillStartPo;
 import com.jkcredit.invoice.hub.model.po.searchInvoiceResult.SearchInvoiceResultPo;
 import com.jkcredit.invoice.hub.puducer.ChargeProducer;
@@ -63,7 +65,7 @@ public class WayBillTask {
     @Autowired
     UserService userService;
 
-    @Scheduled(cron = "0 1/1 * * * ?", zone = "Asia/Shanghai")
+    @Scheduled(cron = "0 1/3 * * * ?", zone = "Asia/Shanghai")
     public void realTimeWayBill() {
         // 查询实时订单,且状态为已结束和开票中
         // 调用运单查询发票接口
@@ -76,7 +78,7 @@ public class WayBillTask {
 
     }
 
-    @Scheduled(cron = "0 1/1 * * * ?", zone = "Asia/Shanghai")
+    @Scheduled(cron = "0 1/9 * * * ?", zone = "Asia/Shanghai")
     public void historyWayBill() {
         // 查询实时订单,且状态为已结束和开票中
         // 调用运单查询发票接口
@@ -103,7 +105,7 @@ public class WayBillTask {
                     && apiResponseData.getCode().equals(ApiResponseCodeEnum.CODE_200.getValue())) {
                 // 接口调用成功
                 InvoiceResultDto invoiceResultDto = JSON.toJavaObject(JSON.parseObject(apiResponseData.getMsg()), InvoiceResultDto.class);
-                List<InvoiceResultDto.Result> newSearchInvoiceResultList;
+                List<InvoiceResult> newSearchInvoiceResultList;
 
                 // 根据运单发票状态更新运单状态
                 if (invoiceResultDto.getWaybillStatus().equals("3")) {
@@ -122,15 +124,19 @@ public class WayBillTask {
 
                     if (invoiceResultDto.getResult().size() > 0) {
                         //去重列表
-                        newSearchInvoiceResultList = invoiceResultDto.getResult().stream().collect(Collectors.collectingAndThen(Collectors.toCollection(
-                                () -> new TreeSet<>(Comparator.comparing(InvoiceResultDto.Result::getTransactionId))),
-                                ArrayList::new));
+                        newSearchInvoiceResultList = invoiceResultDto.getResult().stream().collect(
+                                Collectors.collectingAndThen(
+                                        Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(InvoiceResult::getFee))), ArrayList::new));
                         //计费
                         newSearchInvoiceResultList.stream().forEach(t -> {
                             if (!redisTemplate.hasKey(CommonConstant.TRANSACTION_ID_KEY + t.getTransactionId())) {
                                 UserBalanceDto userBalanceDto = userBalanceService.getUserBalance(po.getUserId());
+                                UserBalanceInvoiceDto userBalanceInvoiceDto = new UserBalanceInvoiceDto();
+                                BeanUtil.copyProperties(userBalanceInvoiceDto, userBalanceDto);
+                                userBalanceInvoiceDto.setNum(t.getWaybillNum());
+                                userBalanceInvoiceDto.setTransactionId(t.getTransactionId());
                                 //发送到消息队列
-                                chargeProducer.send(userBalanceDto);
+                                chargeProducer.send(userBalanceInvoiceDto);
                                 // 将需要计费数据插入数据库
                                 UserDto userDto = userService.getUser(po.getUserId());
                                 NeedChargeDto needChargeDto = new NeedChargeDto();

+ 1 - 1
src/main/resources/mapper/SearchInvoiceMapper.xml

@@ -19,6 +19,6 @@
     </resultMap>
 
     <select id="getSearchInvoiceByNum" resultMap="baseResultMap">
-        select * from h_search_invoice where num = #{num}
+        select * from h_search_invoice where waybill_num = #{num}
     </select>
 </mapper>