diff --git a/build.gradle b/build.gradle
index 381e261..e86876d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -25,14 +25,14 @@
     providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
     testImplementation 'org.springframework.boot:spring-boot-starter-test'
 
-    compile group: 'com.sun.jersey', name: 'jersey-client', version:'1.19'
-    compile group: 'javax.servlet', name: 'jstl', version: '1.2'
-    compile group: 'taglibs', name: 'standard', version: '1.1.2'
-    compile group: 'javax.servlet.jsp', name: 'jsp-api', version: '2.1'
-    compile group: 'log4j', name: 'log4j', version: '1.2.16'
-    compile files ('libs/ojdbc6.jar')
+    implementation group: 'com.sun.jersey', name: 'jersey-client', version:'1.19'
+    implementation group: 'javax.servlet', name: 'jstl', version: '1.2'
+    implementation group: 'taglibs', name: 'standard', version: '1.1.2'
+    implementation group: 'javax.servlet.jsp', name: 'jsp-api', version: '2.1'
+    implementation group: 'log4j', name: 'log4j', version: '1.2.16'
+    implementation files ('libs/ojdbc6.jar')
 
-    compile group: 'com.google.code.gson', name: 'gson', version: '2.8.5'
+    implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.5'
 }
 
 compileKotlin {
diff --git a/src/main/java/com/supwisdom/dlpay/consume/dao/AccountDao.java b/src/main/java/com/supwisdom/dlpay/consume/dao/AccountDao.java
index b2a7892..5cae32d 100644
--- a/src/main/java/com/supwisdom/dlpay/consume/dao/AccountDao.java
+++ b/src/main/java/com/supwisdom/dlpay/consume/dao/AccountDao.java
@@ -4,16 +4,23 @@
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Lock;
 import org.springframework.data.jpa.repository.Query;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.data.jpa.repository.QueryHints;
 
 import javax.persistence.LockModeType;
+import javax.persistence.QueryHint;
 
 public interface AccountDao extends JpaRepository<TAccount, String> {
 
   @Lock(LockModeType.PESSIMISTIC_WRITE)
+  @QueryHints({@QueryHint(name = "javax.persistence.lock.timeout", value ="5000")})
   @Query("select a from TAccount a where a.accno = ?1")
   TAccount getByAccnoForUpdate(String accno);
 
+  @Lock(LockModeType.PESSIMISTIC_WRITE)
+  @QueryHints({@QueryHint(name = "javax.persistence.lock.timeout", value ="0")})
+  @Query("select a from TAccount a where a.accno = ?1")
+  TAccount getByAccnoForUpdateNowait(String accno);
+
 
   TAccount findByUserid(String userid);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/Subject.java b/src/main/java/com/supwisdom/dlpay/framework/util/Subject.java
new file mode 100644
index 0000000..ede84de
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/Subject.java
@@ -0,0 +1,34 @@
+package com.supwisdom.dlpay.framework.util;
+
+public class Subject {
+  // 资产类科目
+  /**
+   * 现金
+   */
+  public static final String SUBJ_CASH = "1001";
+
+  /**
+   * 银行存款
+   */
+  public static final String SUBJ_DEPOSIT = "1002";
+
+  /**
+   * 支票
+   */
+  public static final String SUBJ_CHEQUE = "1003";
+
+  // 负债类科目
+
+  /**
+   * 个人预存款
+   */
+  public static final String SUBJ_PRE_DEPOSIT = "2001";
+
+  /**
+   * 商户营业款
+   */
+  public static final String SUBJ_MACHANT_INCOME = "2002";
+
+  // 损益类科目
+
+}
diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt
index b0e1331..0a93fd2 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt
@@ -7,10 +7,7 @@
 import com.supwisdom.dlpay.consume.service.PaytypeService
 import com.supwisdom.dlpay.consume.service.PersonBalancePayService
 import com.supwisdom.dlpay.consume.service.PersonService
-import com.supwisdom.dlpay.framework.util.DateUtil
-import com.supwisdom.dlpay.framework.util.TradeCode
-import com.supwisdom.dlpay.framework.util.TradeDict
-import com.supwisdom.dlpay.framework.util.Tradetype
+import com.supwisdom.dlpay.framework.util.*
 import com.supwisdom.dlpay.util.PaytypeUtil
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.http.ResponseEntity
@@ -70,42 +67,36 @@
     @PostMapping("/ykt/payinit")
     fun yktPayInit(userid: String, amount: Int, manageFee: Int,
                    stuempno: String, shopid: String, transdate: String, transtime: String,
-                   outtradeno: String, payinfo: String,feetype:String): ResponseEntity<Any> {
+                   outtradeno: String, payinfo: String, feetype: String): ResponseEntity<Any> {
         //一卡通支付款 112240
-        var feeDrsubjectno = ""
-        var feeCrsubjectno = ""
-        var summary = ""
-        var realamount = 0
-        when(feetype){
-            TradeDict.FEETYPE_CONSUME_MEALER->{
-                feeDrsubjectno="112240"
-                feeCrsubjectno = "2002"
-                realamount = amount
-                summary = "收搭伙费"
-            }
-            TradeDict.FEETYPE_CONSUME_DISCOUNT->{
-                feeDrsubjectno = "2003"
-                feeCrsubjectno = shopid
-                realamount = amount - manageFee
-                summary = "优惠折扣"
-            }
-        }
-
         val person = personService.getPersonByThirdUniqueIdenty(stuempno)
         val dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
                 .setTransDatetime(transdate, transtime)
                 .selectPaytype(PaytypeUtil.YKTPAY, payinfo)
                 .setOuttradeno(outtradeno)
                 .setOwner(person)
-                .setTransinfo(TradeCode.TRANSCODE_YKTPAY,"一卡通支付")
+                .setTransinfo(TradeCode.TRANSCODE_YKTPAY, "一卡通支付")
                 .chooseTradetype(Tradetype.CONSUME)
-                .addDetail(AccountHolder.subject("112240"),
-                        AccountHolder.shop(shopid),
-                        realamount / 100.0, "一卡通支付")
-                .addDetail(AccountHolder.subject(feeDrsubjectno),
-                        AccountHolder.subject(feeCrsubjectno),
-                        manageFee / 100.0, summary)
-                .done(personBalancePayService, false)
+                .also {
+                    when (feetype) {
+                        TradeDict.FEETYPE_CONSUME_MEALER -> {
+                            it.addDetail(AccountHolder.subject("112240"),
+                                    AccountHolder.shop(shopid),
+                                    amount / 100.0, "一卡通支付")
+                                    .addDetail(AccountHolder.subject("112240"),
+                                            AccountHolder.subject(Subject.SUBJ_MACHANT_INCOME),
+                                            manageFee / 100.0, "收搭伙费")
+                        }
+                        TradeDict.FEETYPE_CONSUME_DISCOUNT -> {
+                            it.addDetail(AccountHolder.subject("112240"),
+                                    AccountHolder.shop(shopid),
+                                    (amount - manageFee) / 100.0, "一卡通支付")
+                                    .addDetail(AccountHolder.subject("2003"),
+                                            AccountHolder.shop(shopid),
+                                            manageFee / 100.0, "优惠折扣")
+                        }
+                    }
+                }.done(personBalancePayService, false)
         return ResponseEntity.ok(dtl)
     }
 
@@ -114,7 +105,7 @@
         val dtl = personBalancePayService.wip(refno)
         val person = personService.getPersonByUserid(dtl.userid)
         val code = CallService.callYktPay(paytypeService.getPaytypeConfigByPaytype(PaytypeUtil.YKTPAY),
-                dtl, DateUtil.getNow(), person.thirdUniqueIdenty,yktshopid,devphyid)
+                dtl, DateUtil.getNow(), person.thirdUniqueIdenty, yktshopid, devphyid)
         return if (code.retcode == "0") {
             val suc = PersonTransBuilder.newBuilder(accountUtilServcie)
                     .done(dtl.refno, TradeDict.DTL_STATUS_SUCCESS, personBalancePayService)
