فهرست منبع

修复结算发票问题

lighter 3 سال پیش
والد
کامیت
991a44f95c

+ 38 - 11
src/main/java/thyyxxk/webserver/dao/his/yibao/DismissDao.java

@@ -327,24 +327,51 @@ public interface DismissDao {
                            @Param("begntime") Date begntime,
                            @Param("endtime") Date endtime);
 
-    @Update("update zy_actpatient set total_charge=#{charge} where inpatient_no>=#{patNo1} " +
-            "and inpatient_no<=#{patNo6} and admiss_times=#{times}")
-    void updateInfantfee(@Param("charge") String charge,
-                         @Param("patNo1") String patNo1,
+    @Select("select isnull(sum(charge_fee),0) from zy_detail_charge where inpatient_no=#{patNo} and admiss_times=#{times} " +
+            "and ledger_sn=#{ledgerSn} and isnull(charge_status,'1')!='1' and isnull(infant_flag,'0')!='1' " +
+            "and charge_date>=#{begntime} and charge_date<=#{endtime}")
+    String selectAdultFee(@Param("patNo") String patNo,
+                           @Param("times") int times,
+                           @Param("ledgerSn") int ledgerSn,
+                           @Param("begntime") Date begntime,
+                           @Param("endtime") Date endtime);
+
+
+    @Update("update zy_actpatient set total_charge=#{map.total},charge1=#{map.001},charge2=#{map.002}, " +
+            "charge3=#{map.003},charge4=#{map.004},charge5=#{map.005},charge6=#{map.006},charge7=#{map.007}, " +
+            "charge8=#{map.008},charge9=#{map.009},charge10=#{map.010},charge11=#{map.011},charge12=#{map.012}, " +
+            "charge13=#{map.013},charge14=#{map.014},charge15=#{map.015},charge16=#{map.016},charge17=#{map.017}, " +
+            "charge18=#{map.018},charge19=#{map.019},charge20=#{map.020},charge21=#{map.021},charge22=#{map.022}," +
+            "charge23=#{map.023},charge24=#{map.024},charge25=#{map.025},charge26=#{map.026},charge27=#{map.027}, " +
+            "charge28=#{map.028},charge29=0,charge30=0 where inpatient_no>=#{patNo1} and inpatient_no<=#{patNo6} and admiss_times=#{times} ")
+    void updateInfantfee(@Param("patNo1") String patNo1,
                          @Param("patNo6") String patNo6,
-                         @Param("times") int times);
+                         @Param("times") int times,
+                         @Param("map") Map<String, String> map);
+
+    @Select("select b.bill_item_zy as bill_code, ledger_fee=sum(a.charge_fee) " +
+            "from zy_detail_charge a, zd_charge_item b " +
+            "where a.inpatient_no=#{patNo} and a.admiss_times=#{times} and " +
+            "a.ledger_sn=#{ledgerSn} and a.charge_status!='1' and isnull(a.infant_flag,'0')!='1' and " +
+            "a.charge_date>=#{begntime} and a.charge_date<=#{endtime} and " +
+            "a.charge_code=b.code group by b.bill_item_zy, a.ledger_sn")
+    List<ReceiptFee> selectAdultReceiptFees(@Param("patNo") String patNo,
+                                            @Param("times") int times,
+                                            @Param("ledgerSn") int ledgerSn,
+                                            @Param("begntime") Date begntime,
+                                            @Param("endtime") Date endtime);
 
     @Select("select b.bill_item_zy as bill_code, ledger_fee=sum(a.charge_fee) " +
             "from zy_detail_charge a, zd_charge_item b " +
             "where a.inpatient_no=#{patNo} and a.admiss_times=#{times} and " +
-            "a.ledger_sn=#{ledgerSn} and a.charge_status!='1' and " +
+            "a.ledger_sn=#{ledgerSn} and a.charge_status!='1' and isnull(a.infant_flag,'0')='1' and " +
             "a.charge_date>=#{begntime} and a.charge_date<=#{endtime} and " +
             "a.charge_code=b.code group by b.bill_item_zy, a.ledger_sn")
-    List<ReceiptFee> selectReceiptFees(@Param("patNo") String patNo,
-                                       @Param("times") int times,
-                                       @Param("ledgerSn") int ledgerSn,
-                                       @Param("begntime") Date begntime,
-                                       @Param("endtime") Date endtime);
+    List<ReceiptFee> selectInfantReceiptFees(@Param("patNo") String patNo,
+                                            @Param("times") int times,
+                                            @Param("ledgerSn") int ledgerSn,
+                                            @Param("begntime") Date begntime,
+                                            @Param("endtime") Date endtime);
 
     @Select("select code from zy_bill_item")
     List<String> selectBillCodes();

+ 11 - 0
src/main/java/thyyxxk/webserver/entity/yibao/dismiss/ReceiptEntity.java

@@ -0,0 +1,11 @@
+package thyyxxk.webserver.entity.yibao.dismiss;
+
+import lombok.Data;
+
+import java.util.Map;
+
+@Data
+public class ReceiptEntity {
+    private Map<String, String> infant;
+    private Map<String, String> adult;
+}

+ 27 - 18
src/main/java/thyyxxk/webserver/service/yibao/DismissService.java

@@ -270,43 +270,52 @@ public class DismissService {
         final Date dismissDate = getEndtime(indata.getMidSetl(), indata.getInpatientNo(), indata.getAdmissTimes(),
                 indata.getZjdzDatetime());
         Date tempendtime = indata.getMidSetl() ? dismissDate : DateUtil.parse("2999-12-31 23:59:59");
-        Map<String, String> receipts = dismissFeeAnalyse(indata.getInpatientNo(), indata.getAdmissTimes(),
+        ReceiptEntity receiptEntity = dismissFeeAnalyse(indata.getInpatientNo(), indata.getAdmissTimes(),
                 indata.getLedgerSn(), admissDate, tempendtime);
         if (dao.writeReceiptTable(indata.getInpatientNo(), indata.getAdmissTimes(), indata.getLedgerSn(), 1,
                 admissDate, dismissDate, indata.getWardCode(), indata.getDeptCode(), dismissDate, "01",
-                indata.getStaffId(), receipts) < 1) {
+                indata.getStaffId(), receiptEntity.getAdult()) < 1) {
             return -1;
         }
-        String infantFlag = receipts.get("infant"); // =0 无婴儿,>0 有婴儿
-        if (infantFlag.equals(YesOrNo.YES.getCodeStr())) {
+        if (null != receiptEntity.getInfant()) {
             return dao.writeReceiptTable(indata.getInpatientNo(), indata.getAdmissTimes(), indata.getLedgerSn(), 4,
                     admissDate, dismissDate, indata.getWardCode(), indata.getDeptCode(), dismissDate, "04",
-                    indata.getStaffId(), receipts);
+                    indata.getStaffId(), receiptEntity.getInfant());
         }
         return 1;
     }
 
-    private Map<String, String> dismissFeeAnalyse(String patNo, int times, int ledgerSn, Date begntime, Date endtime) {
-        Map<String, String> map = initReceiptMap();
+    private ReceiptEntity dismissFeeAnalyse(String patNo, int times, int ledgerSn, Date begntime, Date endtime) {
+        ReceiptEntity entity = new ReceiptEntity();
         String infantfee = dao.selectInfantFee(patNo, times, ledgerSn, begntime, endtime);
         if (StringUtil.notBlank(infantfee) && DecimalUtil.compare(infantfee, "0") == 1) {
+            Map<String, String> infantMap = initReceiptMap();
+            List<ReceiptFee> infantReceipts = dao.selectInfantReceiptFees(patNo, times, ledgerSn, begntime, endtime);
+            for (ReceiptFee fee : infantReceipts) {
+                infantMap.replace(fee.getBillCode(), fee.getLedgerFee());
+            }
+            infantMap.replace("total", infantfee);
             String patNo1 = patNo + "$1";
             String patNo6 = patNo + "$6";
-            dao.updateInfantfee(infantfee, patNo1, patNo6, times);
-            map.replace("infant", YesOrNo.YES.getCodeStr());
+            dao.updateInfantfee(patNo1, patNo6, times, infantMap);
+            entity.setInfant(infantMap);
         }
-        List<ReceiptFee> receiptFees = dao.selectReceiptFees(patNo, times, ledgerSn, begntime, endtime);
-        if (null == receiptFees) {
-            receiptFees = new ArrayList<>();
+
+        Map<String, String> adultMap = initReceiptMap();
+        String adultfee = dao.selectAdultFee(patNo, times, ledgerSn, begntime, endtime);
+        List<ReceiptFee> adultReceipts = dao.selectAdultReceiptFees(patNo, times, ledgerSn, begntime, endtime);
+        if (null == adultReceipts) {
+            adultReceipts = new ArrayList<>();
         }
-        for (ReceiptFee fee : receiptFees) {
-            map.replace(fee.getBillCode(), fee.getLedgerFee());
-            map.replace("total", DecimalUtil.add(map.get("total"), fee.getLedgerFee()));
+        for (ReceiptFee fee : adultReceipts) {
+            adultMap.replace(fee.getBillCode(), fee.getLedgerFee());
         }
-        dao.updateZyLedgerFileCharges(patNo, times, ledgerSn, map);
+        adultMap.replace("total", adultfee);
+        dao.updateZyLedgerFileCharges(patNo, times, ledgerSn, adultMap);
         String balance = dao.selectBalance(patNo, times, ledgerSn);
-        dao.updateZyActpatientCharges(patNo, balance, map);
-        return map;
+        dao.updateZyActpatientCharges(patNo, balance, adultMap);
+        entity.setAdult(adultMap);
+        return entity;
     }
 
     private Map<String, String> initReceiptMap() {