完善了入账过程
diff --git a/build.gradle b/build.gradle
index 7c8ec76..49b97db 100644
--- a/build.gradle
+++ b/build.gradle
@@ -94,7 +94,7 @@
     compileOnly 'org.projectlombok:lombok:1.18.8'
     annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
     
-    compile 'com.supwisdom:payapi-sdk:a315360'
+    compile 'com.supwisdom:payapi-sdk:55725ca'
     
 //    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
     testImplementation 'org.springframework.boot:spring-boot-starter-test'
diff --git a/src/main/java/com/supwisdom/dlpay/water/dao/TransdtlCountDao.java b/src/main/java/com/supwisdom/dlpay/water/dao/TransdtlCountDao.java
index 131e3cb..732f124 100644
--- a/src/main/java/com/supwisdom/dlpay/water/dao/TransdtlCountDao.java
+++ b/src/main/java/com/supwisdom/dlpay/water/dao/TransdtlCountDao.java
@@ -5,6 +5,9 @@
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 @Repository
 public interface TransdtlCountDao extends JpaRepository<TTransdtlCount, String>, JpaSpecificationExecutor<TTransdtlCount> {
+    List<TTransdtlCount> findByAccdate(String accdate);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/water/pay/WaterPayAsyncTask.java b/src/main/java/com/supwisdom/dlpay/water/pay/WaterPayAsyncTask.java
index 17696e6..324c43e 100644
--- a/src/main/java/com/supwisdom/dlpay/water/pay/WaterPayAsyncTask.java
+++ b/src/main/java/com/supwisdom/dlpay/water/pay/WaterPayAsyncTask.java
@@ -53,6 +53,10 @@
     @Async("waterPay")
     public void waterPay(Integer cobillno) {
         TCollectdtl collectdtl = collectdtlService.findByCobillnoForUpdate(cobillno);
+        if (!TradeDict.DTL_STATUS_WIP.equals(collectdtl.getStatus())) {
+            logger.error("待入账的采集流水"+cobillno+"状态不正确");
+            return;
+        }
         if (TradeDict.PAY_MODE_CARD.equals(collectdtl.getMode())) {
             waterCardPay(collectdtl);
         } else if (TradeDict.PAY_MODE_QRCODE.equals(collectdtl.getMode())) {
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/service/collectdtl_service.kt b/src/main/kotlin/com/supwisdom/dlpay/water/service/collectdtl_service.kt
index fe2fbd7..37f69c5 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/service/collectdtl_service.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/service/collectdtl_service.kt
@@ -241,26 +241,35 @@
     }
 
     override fun generateCountdtl(accdate: String?) {
-        val querySql = "select t3.deviceno,t3.areano,coalesce(t4.accdate,:accdate) accdate,t4.mode,coalesce(t4.amount,0) amount,coalesce(t4.water,0) water,coalesce(t4.count,0) " +
-                "count from tb_device t3 LEFT JOIN (select t1.deviceno,t1.accdate,t1.mode,t1.amount,t1.water,t1.count,t2.areano from (select deviceno,accdate,mode,sum(amount) amount,sum(water_in_100ml) water,count(cobillno) count " +
-                "from tb_collectdtl where accdate=:accdate and status = 'success' group by deviceno,mode,accdate) t1 LEFT JOIN " +
-                "(select deviceno,areano from tb_device) t2 on t1.deviceno=t2.deviceno) t4 on t3.deviceno=t4.deviceno"
-        val query = em.createNativeQuery(querySql)
-        query.setParameter("accdate", accdate)
-        query.unwrap(NativeQueryImpl::class.java).setResultTransformer(Transformers.aliasToBean(TTransdtlCountDTO::class.java))
-        val countDTOList = query.resultList as List<TTransdtlCountDTO>
-        val list = ArrayList<TTransdtlCount>()
-        countDTOList.forEach {
-            val transCount = TTransdtlCount()
-            transCount.accdate = it.accdate
-            transCount.amount = it.amount
-            transCount.water = it.water.toInt()
-            transCount.count = it.count.toInt()
-            transCount.mode = it.mode
-            transCount.areano = it.areano
-            transCount.deviceno = it.deviceno
-            list.add(transCount)
+        val countList=transdtlCountDao.findByAccdate(accdate)
+        if (countList != null && countList.size!=0) {
+            logger.error { accdate+"的统计流水已生成!" }
+            return
         }
-        transdtlCountDao.saveAll(list)
+        val list = ArrayList<TTransdtlCount>(300)
+        try {
+            val querySql = "select t3.deviceno,t3.areano,coalesce(t4.accdate,:accdate) accdate,t4.mode,coalesce(t4.amount,0) amount,coalesce(t4.water,0) water,coalesce(t4.count,0) " +
+                    "count from tb_device t3 LEFT JOIN (select t1.deviceno,t1.accdate,t1.mode,t1.amount,t1.water,t1.count,t2.areano from (select deviceno,accdate,mode,sum(amount) amount,sum(water_in_100ml) water,count(cobillno) count " +
+                    "from tb_collectdtl where accdate=:accdate and status = 'success' group by deviceno,mode,accdate) t1 LEFT JOIN " +
+                    "(select deviceno,areano from tb_device) t2 on t1.deviceno=t2.deviceno) t4 on t3.deviceno=t4.deviceno"
+            val query = em.createNativeQuery(querySql)
+            query.setParameter("accdate", accdate)
+            query.unwrap(NativeQueryImpl::class.java).setResultTransformer(Transformers.aliasToBean(TTransdtlCountDTO::class.java))
+            val countDTOList = query.resultList as List<TTransdtlCountDTO>
+            countDTOList.forEach {
+                val transCount = TTransdtlCount()
+                transCount.accdate = it.accdate
+                transCount.amount = it.amount
+                transCount.water = it.water.toInt()
+                transCount.count = it.count.toInt()
+                transCount.mode = it.mode
+                transCount.areano = it.areano
+                transCount.deviceno = it.deviceno
+                list.add(transCount)
+            }
+            transdtlCountDao.saveAll(list)
+        } finally {
+            list.clear()
+        }
     }
 }
\ No newline at end of file