Browse Source

优化结算时入库的begntime字段值获取

lighter 3 years ago
parent
commit
ba5bdb09b0

+ 1 - 1
pom.xml

@@ -99,7 +99,7 @@
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
-            <version>1.2.60</version>
+            <version>1.2.83</version>
         </dependency>
         <dependency>
             <groupId>dom4j</groupId>

+ 3 - 2
src/main/java/thyyxxk/webserver/dao/his/inpatient/DismissDao.java

@@ -98,8 +98,9 @@ public interface DismissDao {
     @Delete("delete zy_tmp_settle_select_detail where inpatient_no=#{patNo} and admiss_times=#{times}")
     void deleteTemporaryTable(@Param("patNo") String patNo, @Param("times") Integer times);
 
-    @Select("select top 1 date_1 from zy_receipt where inpatient_no=#{patNo} and admiss_times=#{times} and ledger_sn>1 order by ledger_sn desc")
-    Date selectAccountDate(@Param("patNo") String patNo, @Param("times") int times);
+    @Select("select dateadd(second,1,account_date) from zy_ledger_file where inpatient_no=#{patNo} and " +
+            "admiss_times=#{times} and ledger_sn=(#{ledgerSn}-1)")
+    Date selectLastLedgerAccountDate(@Param("patNo") String patNo, @Param("times") int times, @Param("ledgerSn") int ledgerSn);
 
     @Select("select admiss_date from ${table} where inpatient_no=#{patNo} and admiss_times=#{times}")
     Date selectAdmissDate(@Param("patNo") String patNo, @Param("times") Integer times, @Param("table") String table);

+ 5 - 8
src/main/java/thyyxxk/webserver/service/inpatient/DismissService.java

@@ -226,7 +226,7 @@ public class DismissService {
             exception.setMessage("此患者有未结账的费用。");
             throw new BizException(exception);
         }
-        Date begntime = getBegntime(patNo, times, "zy_actpatient");
+        Date begntime = getBegntime(patNo, times, ledgerSn,"zy_actpatient");
         dismissFeeAnalyse(patNo, times, ledgerSn, begntime, tmpendtime);
 
         BigDecimal feeOffset = dao.getFeeOffset(patNo, times, ledgerSn);
@@ -345,7 +345,7 @@ public class DismissService {
                 indata.getLedgerSn()) < 1) {
             return -1;
         }
-        Date admissDate = getBegntime(indata.getInpatientNo(), indata.getAdmissTimes(), indata.getTable());
+        Date admissDate = getBegntime(indata.getInpatientNo(), indata.getAdmissTimes(), indata.getLedgerSn(), indata.getTable());
         Date dismissDate = getEndtime(indata.getMidSetl(), indata.getInpatientNo(), indata.getAdmissTimes(),
                 indata.getZjdzDatetime());
         Date tempendtime = indata.getMidSetl() ? dismissDate : DateUtil.parse("2999-12-31 23:59:59");
@@ -423,12 +423,9 @@ public class DismissService {
         return map;
     }
 
-    public Date getBegntime(String patNo, int times, String table) {
-        Date admdate = dao.selectAccountDate(patNo, times);
-        if (null == admdate) {
-            admdate = dao.selectAdmissDate(patNo, times, table);
-        }
-        return admdate;
+    public Date getBegntime(String patNo, int times, int ledgerSn, String table) {
+        return ledgerSn > 1 ? dao.selectLastLedgerAccountDate(patNo, times, ledgerSn) :
+                dao.selectAdmissDate(patNo, times, table);
     }
 
     private Date getEndtime(Boolean midsetl, String patNo, Integer times, Date zjdzDate) {

+ 4 - 1
src/main/java/thyyxxk/webserver/service/medicalinsurance/SiZyService.java

@@ -386,7 +386,10 @@ public class SiZyService {
 
     private ResultVo<String> inpatientSettlement(ZyPatientInfo p) {
         PreSetlmt preSetlmt;
-        Date begntime = dismissService.getBegntime(p.getInpatientNo(), p.getAdmissTimes(), "zy_actpatient");
+        Date begntime = p.getYbRegisterDate();
+        if (null == begntime) {
+            begntime = dismissService.getBegntime(p.getInpatientNo(), p.getAdmissTimes(), p.getLedgerSn(), "zy_actpatient");
+        }
         if (p.getMidSetl()) {
             preSetlmt = dao.selectPreSetlmtForMidSetl(p.getInpatientNo(), p.getAdmissTimes(),
                     p.getLedgerSn(), begntime, p.getZjdzDatetime());