Browse Source

结算与对账添加是否包含个账的判断

lighter 2 years ago
parent
commit
a08f01eea9

+ 8 - 6
src/main/java/thyyxxk/webserver/dao/his/medicalinsurance/SiManageDao.java

@@ -46,12 +46,13 @@ public interface SiManageDao {
     @Select("select pat_no,times,ledger_sn,medfee_sumamt,acct_pay,fund_pay_sumamt,hosp_part_amt " +
             "from t_si_setlinfo where insutype=#{insutype} and clr_type=#{clrType} and revoked=0 " +
             "and clr_optins=#{clrOptins} and setl_time>=#{start} and setl_time<=#{end} and " +
-            "fund_pay_sumamt!=0 and insuplc_admdvs like '43%' ")
+            "${acctStatement} and insuplc_admdvs like '43%' ")
     List<InstSetlLdgChkBrf> selectSetlChkBrfsWithInsutype(@Param("clrType") String clrType,
                                                           @Param("insutype") String insutype,
                                                           @Param("clrOptins") String clrOptins,
                                                           @Param("start") String start,
-                                                          @Param("end") String end);
+                                                          @Param("end") String end,
+                                                          @Param("acctStatement") String acctStatement);
 
     @Select("select visitId=pat_no+'_'+cast(times as varchar)+'_'+cast(ledger_sn as varchar), " +
             "setl_id,mdtrt_id,psn_no,medins_setl_id as msgId,medfee_sumamt,acct_pay,fund_pay_sumamt, " +
@@ -81,13 +82,14 @@ public interface SiManageDao {
     @Select("select count(1) from mz_deposit_file where patient_id=#{patNo} and times=#{times} and pay_mark=0")
     int mzDepositCount(@Param("patNo") String patNo, @Param("times") String times);
 
-    @Select("select pat_no,times,ledger_sn,setl_id,mdtrt_id,psn_no,medfee_sumamt,acct_pay,fund_pay_sumamt,psn_cash_pay,hosp_part_amt " +
-            "from t_si_setlinfo where clr_type=#{clrType} and revoked=0 and clr_optins=#{clrOptins} and fund_pay_sumamt!=0 " +
-            "and setl_time>=#{start} and setl_time<=#{end} and insuplc_admdvs like '43%' ")
+    @Select("select pat_no,times,ledger_sn,setl_id,mdtrt_id,psn_no,medfee_sumamt,acct_pay,fund_pay_sumamt,psn_cash_pay, " +
+            "hosp_part_amt from t_si_setlinfo where clr_type=#{clrType} and revoked=0 and clr_optins=#{clrOptins} and " +
+            "${acctStatement} and setl_time>=#{start} and setl_time<=#{end} and insuplc_admdvs like '43%' ")
     List<InstSetlLdgChkBrf> selectSetlChkBrfs(@Param("clrType") String clrType,
                                               @Param("clrOptins") String clrOptins,
                                               @Param("start") String start,
-                                              @Param("end") String end);
+                                              @Param("end") String end,
+                                              @Param("acctStatement") String acctStatement);
 
     @Select("select count(1) from dj_user_role where user_code=#{code} and role_id=41")
     Integer recoveryTradePermission(@Param("code") String code);

+ 9 - 0
src/main/java/thyyxxk/webserver/entity/medicalinsurance/manage/InstStlLdgChk.java

@@ -20,6 +20,11 @@ public class InstStlLdgChk {
      * */
     private Integer mode;
 
+    /**
+     * 是否包含个账:1-包含;2-不包含
+     * */
+    private Integer acctPayFlag;
+
     /**
      * 医疗类别
      * */
@@ -98,4 +103,8 @@ public class InstStlLdgChk {
     public Integer getMode() {
         return null == mode ? 1 : mode;
     }
+
+    public Integer getAcctPayFlag() {
+        return null == acctPayFlag ? 1 : acctPayFlag;
+    }
 }

+ 5 - 0
src/main/java/thyyxxk/webserver/entity/medicalinsurance/setlinfo/SlctSetlPrm.java

@@ -16,6 +16,7 @@ import java.util.Date;
 @Data
 public class SlctSetlPrm {
     private Integer mode;
+    private Integer acctPayFlag;
     private String insutype;
     @NotBlank(message = "结算类别不能为空!")
     private String clrType;
@@ -34,4 +35,8 @@ public class SlctSetlPrm {
     public Integer getMode() {
         return null == mode ? 1 : mode;
     }
+
+    public Integer getAcctPayFlag() {
+        return null == acctPayFlag ? 1 : acctPayFlag;
+    }
 }

+ 5 - 33
src/main/java/thyyxxk/webserver/service/medicalinsurance/SiManageService.java

@@ -212,9 +212,10 @@ public class SiManageService {
     public ResultVo<String> institutionSettlementLedgerCheck(InstStlLdgChk instStlLdgChk) {
         String startdate = DateUtil.getDayStartTime(instStlLdgChk.getStmtBegndate());
         String enddate = DateUtil.getDayEndTime(instStlLdgChk.getStmtEnddate());
+        String acctStatement = instStlLdgChk.getAcctPayFlag() == 1 ? "(fund_pay_sumamt+acct_pay)!=0" : "fund_pay_sumamt!=0";
         List<InstSetlLdgChkBrf> setlBrfs = instStlLdgChk.getMode() == 1 ?
                 dao.selectSetlChkBrfsWithInsutype(instStlLdgChk.getClrType(), instStlLdgChk.getInsutype(),
-                        instStlLdgChk.getSetlOptins(), startdate, enddate) :
+                        instStlLdgChk.getSetlOptins(), startdate, enddate, acctStatement) :
                 dao.selectSetlinfoBrfsForHisCheck(instStlLdgChk.getClrType(), startdate, enddate);
         fillInstStlLdgChk(instStlLdgChk, setlBrfs);
 
@@ -335,39 +336,10 @@ public class SiManageService {
         String enddate = DateUtil.getDayEndTime(setlChk.getStmtEnddate());
         if (setlChk.getMode() == 2) {
             return ResultVoUtil.fail(ExceptionEnum.INVALID_PARAM, "暂不支持HIS与医保的明细对账。");
-//            if (setlChk.getClrType().equals("11")) {
-//                return ResultVoUtil.fail(ExceptionEnum.INVALID_PARAM, "暂不支持HIS与医保的明细对账。");
-//            }
-//            List<InstSetlLdgChkBrf> setlBrfs = dao.selectSetlinfoBrfsForHisCheck(setlChk.getClrType(), startdate, enddate);
-//            List<InstSetlLdgChkBrf> hisBrfs = dao.selectHisZyBrfsForHisCheck(startdate, enddate);
-//            Map<String, InstSetlLdgChkBrf> hisMap = new HashMap<>();
-//            for (InstSetlLdgChkBrf brf : hisBrfs) {
-//                hisMap.put(brf.getVisitId(), brf);
-//            }
-//            List<InsSetlDetlChkRslt> list = new ArrayList<>();
-//            for (InstSetlLdgChkBrf setl : setlBrfs) {
-//                InstSetlLdgChkBrf temp = hisMap.remove(setl.getVisitId());
-//                if (null != temp) {
-//                    setl.setMedfeeSumamt2(temp.getMedfeeSumamt());
-//                    setl.setFundPaySumamt2(temp.getFundPaySumamt());
-//                }
-//                list.add(new InsSetlDetlChkRslt(setl));
-//            }
-//            if (hisMap.size() > 0) {
-//                for (Map.Entry<String, InstSetlLdgChkBrf> entry : hisMap.entrySet()) {
-//                    InstSetlLdgChkBrf value = entry.getValue();
-//                    value.setMedfeeSumamt2(value.getMedfeeSumamt());
-//                    value.setFundPaySumamt2(value.getFundPaySumamt());
-//                    value.setMedfeeSumamt(null);
-//                    value.setFundPaySumamt(null);
-//                    list.add(new InsSetlDetlChkRslt(value));
-//                }
-//            }
-//            return ResultVoUtil.success(list);
         }
-
+        String acctStatement = setlChk.getAcctPayFlag() == 1 ? "(fund_pay_sumamt+acct_pay)!=0" : "fund_pay_sumamt!=0";
         List<InstSetlLdgChkBrf> setlBrfs = dao.selectSetlChkBrfs(setlChk.getClrType(),
-                setlChk.getSetlOptins(), startdate, enddate);
+                setlChk.getSetlOptins(), startdate, enddate, acctStatement);
         fillInstStlLdgChk(setlChk, setlBrfs);
         String snowId = SnowFlakeId.instance().nextId();
         String filename = snowId + ".txt";
@@ -441,7 +413,7 @@ public class SiManageService {
         wrapper.apply("setl_time>='" + begndate + "'");
         wrapper.apply("setl_time<='" + enddate + "'");
         if (prm.getMode() == 1) {
-            wrapper.apply("fund_pay_sumamt!=0");
+            wrapper.apply(prm.getAcctPayFlag() == 1 ? "(fund_pay_sumamt+acct_pay)!=0" : "fund_pay_sumamt!=0");
             wrapper.apply("insuplc_admdvs like '43%' ");
         }
         List<SiSetlinfo> list = setlinfoDao.selectList(wrapper);