重构代码
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TPointsTransdtl.java b/src/main/java/com/supwisdom/dlpay/api/domain/TPointsTransdtl.java
index 6e6f572..dba4514 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TPointsTransdtl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TPointsTransdtl.java
@@ -7,7 +7,7 @@
  */
 @Entity
 @Table(name = "TB_POINTS_TRANSDTL",
-    indexes = {@Index(name = "points_transdtl_idx", columnList = "refno")})
+    indexes = {@Index(name = "points_transdtl_idx", columnList = "billno")})
 public class TPointsTransdtl {
   @Id
   @Column(name="REFNO", nullable = false, length = 32)
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TSubjectdtl.java b/src/main/java/com/supwisdom/dlpay/api/domain/TSubjectdtl.java
index 3fd3be2..354db9a 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TSubjectdtl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TSubjectdtl.java
@@ -8,7 +8,7 @@
         @Index(name = "subjdtl_subjno", columnList = "subjno")})
 public class TSubjectdtl {
   @Id
-  @Column(name = "refno", length = 32, nullable = false)
+  @Column(name = "billno", length = 32, nullable = false)
   private String refno;
 
   @Column(name = "accdate", length = 8, nullable = false)
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java b/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
index bd4a00f..0a76b94 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
@@ -14,7 +14,7 @@
         @Index(name = "transmain_outtrade", unique = true, columnList = "outid, outtradeno")})
 public class TTransactionMain {
   @Id
-  @Column(name = "refno", nullable = false, length = 32)
+  @Column(name = "billno", nullable = false, length = 32)
   private String refno;
 
   @Column(name = "accdate", nullable = false, length = 8)
@@ -66,19 +66,19 @@
   private String reverseFlag = "none"; // 冲正标识, none - 未冲正, reverse - 被撤销, cancel - 被冲正
 
   @OneToOne(targetEntity = TPersondtl.class, fetch = LAZY, cascade = CascadeType.ALL)
-  @JoinColumn(name = "refno", referencedColumnName = "refno")
+  @JoinColumn(name = "billno", referencedColumnName = "billno")
   private TPersondtl personDtl;
 
   @OneToOne(targetEntity = TShopdtl.class, fetch = LAZY, cascade = CascadeType.ALL)
-  @JoinColumn(name = "refno", referencedColumnName = "refno")
+  @JoinColumn(name = "billno", referencedColumnName = "billno")
   private TShopdtl shopDtl;
 
   @OneToOne(targetEntity = TSubjectdtl.class, fetch = LAZY, cascade = CascadeType.ALL)
-  @JoinColumn(name = "refno", referencedColumnName = "refno")
+  @JoinColumn(name = "billno", referencedColumnName = "billno")
   private TSubjectdtl subjectDtl;
 
   @OneToMany(targetEntity = TDebitCreditDtl.class, fetch = LAZY, cascade = CascadeType.ALL)
-  @JoinColumn(name = "refno", referencedColumnName = "refno")
+  @JoinColumn(name = "billno", referencedColumnName = "billno")
   private List<TDebitCreditDtl> details;
 
   public String getRefno() {
diff --git a/src/main/java/com/supwisdom/dlpay/water/domain/TTransdtl.java b/src/main/java/com/supwisdom/dlpay/water/domain/TTransdtl.java
index d23adf6..bff8cb7 100644
--- a/src/main/java/com/supwisdom/dlpay/water/domain/TTransdtl.java
+++ b/src/main/java/com/supwisdom/dlpay/water/domain/TTransdtl.java
@@ -1,52 +1,82 @@
 package com.supwisdom.dlpay.water.domain;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
-@Table(name = "tb_transdtl")
+@Table(name = "tb_transdtl",
+    indexes = {@Index(name = "trasndtl_userid", columnList = "userid"),
+        @Index(name = "transdtl_status", columnList = "transdate, status"),
+        @Index(name = "transdtl_acc", columnList = "accdate")})
 public class TTransdtl {
   @Id
+  @Column(name = "billno", length = 32)
   private String billno;
 
+  @Column(name = "transdate", length = 8)
+  @NotNull
   private String transDate;
 
+  @Column(name = "transtime", length = 6)
+  @NotNull
   private String transTime;
 
+  @Column(length = 8)
+  @NotNull
   private String deviceno;
 
+  @Column(length = 32)
+  @NotNull
   private String userid;
 
+  @Column(name = "bankcardno", length = 32)
   private String bankCardNo;
 
+  @Column(length = 20)
+  @NotNull
   private String mode;
 
+  @Column(precision = 10, scale = 2)
   private Double amount;
 
+  @Column(name = "water_in_100ml", precision = 10)
   private Integer waterSumHundredLitre;
 
+  @Column(length = 16)
+  @NotNull
   private String status;
 
+  @Column(name = "uploadtime", length = 14)
   private String uploadTime;
 
-  private Integer authStatus;
+  @Column(name = "accdate", length = 8)
+  private String accdate;
 
-  private Integer uploadStatus;
+  @Column(name = "billno", length = 32)
+  private String refno;
 
-  public Integer getUploadStatus() {
+  @Column(name = "accstatus", length = 10)
+  private String accStatus;
+
+  @Column(name = "authstatus")
+  private Boolean authStatus;
+
+  @Column(name = "uploadstatus")
+  private Boolean uploadStatus;
+
+  public Boolean getUploadStatus() {
     return uploadStatus;
   }
 
-  public void setUploadStatus(Integer uploadStatus) {
+  public void setUploadStatus(Boolean uploadStatus) {
     this.uploadStatus = uploadStatus;
   }
 
-  public Integer getAuthStatus() {
+  public Boolean getAuthStatus() {
     return authStatus;
   }
 
-  public void setAuthStatus(Integer authStatus) {
+  public void setAuthStatus(Boolean authStatus) {
     this.authStatus = authStatus;
   }
 
@@ -137,4 +167,28 @@
   public void setUploadTime(String uploadTime) {
     this.uploadTime = uploadTime;
   }
+
+  public String getAccdate() {
+    return accdate;
+  }
+
+  public void setAccdate(String accdate) {
+    this.accdate = accdate;
+  }
+
+  public String getRefno() {
+    return refno;
+  }
+
+  public void setRefno(String refno) {
+    this.refno = refno;
+  }
+
+  public String getAccStatus() {
+    return accStatus;
+  }
+
+  public void setAccStatus(String accStatus) {
+    this.accStatus = accStatus;
+  }
 }
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/bean/api_request_param.kt b/src/main/kotlin/com/supwisdom/dlpay/api/bean/api_request_param.kt
index 404ab93..6e06756 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/bean/api_request_param.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/bean/api_request_param.kt
@@ -162,7 +162,7 @@
     @Sign
     var refno:String?=null //二选一
     @Sign
-    var billno:String?=null //二选一 (refno+shopaccno) 传billno时,shopaccno必传
+    var billno:String?=null //二选一 (billno+shopaccno) 传billno时,shopaccno必传
     @Sign
     var shopaccno: String?=null
 
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt b/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt
index eca960c..ec0f698 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt
@@ -119,7 +119,7 @@
     var deviceno: String = ""
 
     @Sign
-    var refno: String = ""
+    var billno: String = ""
 
 
     override fun checkParam(): Boolean {
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
index f779f78..714586f 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
@@ -62,7 +62,7 @@
                         .success())
             }
             return ResponseEntity.ok(ResponseBodyBuilder.create()
-                    .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "没有编号为" + param.deviceno + "的设备"))
+                    .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "没有编号为${param.deviceno}的设备"))
         } catch (ex: Exception) {
             return ResponseEntity.ok(ResponseBodyBuilder.create()
                     .exception(WaterErrorCode.PROCESS_ERROR, ex, "系统出错"))
@@ -91,13 +91,13 @@
                 amount = 0.0
                 waterSumHundredLitre = 0
                 status = TradeDict.DTL_STATUS_INIT
-                authStatus = 1
-                uploadStatus = 0
+                authStatus = true
+                uploadStatus = false
             }
             val savedTrans = transdtlService.createNewTransdtl(trans)
-            //4. 将流水 refno 和费率信息返回给终端
+            //4. 将流水 billno 和费率信息返回给终端
             return ResponseEntity.ok(ResponseBodyBuilder.create()
-                    .data("refno", savedTrans.billno)
+                    .data("billno", savedTrans.billno)
                     .data("feeamount", feeConfig.amount)
                     .data("waterlimit", feeConfig.maxWaterLitre)
                     .data("feeunit", 0)
@@ -120,16 +120,16 @@
                 amount = 0.0
                 waterSumHundredLitre = 0
                 status = TradeDict.DTL_STATUS_INIT
-                authStatus = 0
-                uploadStatus = 0
+                authStatus = false
+                uploadStatus = false
             }
             val savedTrans = transdtlService.createNewTransdtl(trans)
             //2.将流水号及认证地址返回给终端
             //将认证url转为短码
             val url = ShortURLUtil.doGetSinaShortUrl(
-                    "http://172.28.43.20:8080/water/api/confirm?refno=" + savedTrans.billno)
+                    "http://172.28.43.20:8080/water/api/confirm?billno=" + savedTrans.billno)
             return ResponseEntity.ok(ResponseBodyBuilder.create()
-                    .data("refno", savedTrans.billno)
+                    .data("billno", savedTrans.billno)
                     .data("url", url)
                     .data("vaildtime", 180)
                     .success())
@@ -149,7 +149,7 @@
                     ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
                             .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "未查询到该流水号"))
             return ResponseEntity.ok(ResponseBodyBuilder.create()
-                    .data("refno", trans.billno)
+                    .data("billno", trans.billno)
                     .data("authstatus", trans.authStatus)
                     .data("paystatus", 2)
                     .data("feeamount", feeConfig.amount)
@@ -181,9 +181,9 @@
 
     @PostMapping("/uploadrecord")
     fun transdtlUpload(@RequestBody param: UploadRecordRequest): ResponseEntity<Any> {
-        // 1. 根据 refno 查询 transdtl , 并加锁
+        // 1. 根据 billno 查询 transdtl , 并加锁
         val dtl = transdtlService.saveDeviceDtlData(param)
-        return ResponseEntity.ok(ResponseBodyBuilder.create().data("refno", dtl.billno)
+        return ResponseEntity.ok(ResponseBodyBuilder.create().data("billno", dtl.billno)
                 .success())
     }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/service/transdtl_service.kt b/src/main/kotlin/com/supwisdom/dlpay/water/service/transdtl_service.kt
index ef2b1d7..e0645b4 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/service/transdtl_service.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/service/transdtl_service.kt
@@ -27,27 +27,27 @@
                         "交易订单号不存在")
         if (record.transtatus == "2") {
             dtl.status = TradeDict.DTL_STATUS_FAIL
-        }else if (record.transtatus == "1") {
+        } else if (record.transtatus == "1") {
             dtl.status = TradeDict.DTL_STATUS_WIP
         }
         dtl.amount = record.amount / 100.0
         dtl.waterSumHundredLitre = record.flowsensors
         dtl.uploadTime = record.transdate + record.transtime
-        dtl.uploadStatus = 1
+        dtl.uploadStatus = true
         transdtlDao.save(dtl)
         return dtl
     }
 
-    override fun queryTrans(param: QrcodeQueryRequest?): TTransdtl {
-        return transdtlDao.findByBillnoAndDeviceno(param!!.refno, param.deviceno)
+    override fun queryTrans(param: QrcodeQueryRequest): TTransdtl {
+        return transdtlDao.findByBillnoAndDeviceno(param.billno, param.deviceno)
     }
 
-    override fun userAuth(param: UserAuthRequest?): TTransdtl {
-        val dtl = transdtlDao.findById(param!!.refno).orElse(null)
+    override fun userAuth(param: UserAuthRequest): TTransdtl {
+        val dtl = transdtlDao.findById(param.refno).orElse(null)
                 ?: throw TransactionProcessException(WaterErrorCode.DATA_NOTFOUND_ERROR,
                         "交易订单号不存在")
         dtl.userid = param.userid
-        dtl.authStatus = 1
+        dtl.authStatus = true
         transdtlDao.save(dtl)
         return dtl
     }