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
     }
