完善了入账过程
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