Переглянути джерело

更新门诊和住院数据入库

0027005599 2 роки тому
батько
коміт
f97702056e

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/afterwaring/XCFYDataTransferService.java

@@ -111,7 +111,7 @@ public class XCFYDataTransferService {
             try {
                 localNamedParameterJdbcTemplate.batchUpdate(insertSql, batchArgs.toArray(new MapSqlParameterSource[batchArgs.size()]));
             }catch (Exception e){
-                log.error("insert sql:{}");
+                log.error("insert sql:{}", insertSql);
                 log.error("dataArr:{}", dataList);
                 throw e;
             }

+ 82 - 80
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/job/XCFYDatav_outpatient_settle_billJob.java

@@ -70,12 +70,12 @@ public class XCFYDatav_outpatient_settle_billJob implements Job {
             ":HIFOB_PAY,:MAF_PAY,:OTH_PAY,:FUND_PAY_SUMAMT,:CREATE_TIME,:CREATE_BY,:PATIENT_AGE_DAYS)";
 
 
-    String insertDetailSql = "INSERT INTO outpatient_settlement_details (id, hisid, visit_no, patient_id, hospital_id, " +
+    String insertDetailSql = "INSERT INTO outpatient_settlement_details (hisid, visit_no, patient_id, hospital_id, " +
             "usage_date, item_id, item_name, item_id_hosp, item_name_hosp, drug_spec, dosage_form, package_unit," +
             " unit_price, num, cost, use_day, categories_items, bmi_convered_amount, bmi_pay_amount, " +
             "individual_payment_amount, amount_refusal, amount_reason, expense_category, change_class, " +
             "refund_falge, refund_date, p_category, create_time, create_by, p_type_pct) " +
-            "VALUES (:ID,:HISID,:VISIT_NO,:PATIENT_ID,:HOSPITAL_ID,:USAGE_DATE,:ITEM_ID," +
+            "VALUES (:HISID,:VISIT_NO,:PATIENT_ID,:HOSPITAL_ID,:USAGE_DATE,:ITEM_ID," +
             ":ITEM_NAME,:ITEM_ID_HOSP,:ITEM_NAME_HOSP,:DRUG_SPEC,:DOSAGE_FORM,:PACKAGE_UNIT," +
             ":UNIT_PRICE,:NUM,:COST,:USE_DAY,:CATEGORIES_ITEMS,:BMI_CONVERED_AMOUNT,:BMI_PAY_AMOUNT," +
             ":INDIVIDUAL_PAYMENT_AMOUNT,:AMOUNT_REFUSAL,:AMOUNT_REASON,:EXPENSE_CATEGORY,:CHANGE_CLASS," +
@@ -83,94 +83,96 @@ public class XCFYDatav_outpatient_settle_billJob implements Job {
 
     @Override
     public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
-        String sql = "SELECT A.*, ROWNUM RN FROM (SELECT * FROM V_YBKF_OUTPATIENT_SETTLE_BILL where  hisid is not null and pay_method!='自费' and if_local_flag!='非医保' %s order by bill_date asc) A WHERE ROWNUM <=1000";
+        String sql = "SSELECT * FROM V_YBKF_OUTPATIENT_SETTLE_BILL where  hisid is not null and pay_method!='自费' and if_local_flag!='非医保' %s order by bill_date asc";
         Date endBillDate = DateUtil.yesterday();
         endBillDate = DateUtil.endOfDay(endBillDate);
-        while (true) {
-            String whereSql = "";
-            Date billDate = getBillDate();
-            log.info("开始同步V_YBKF_OUTPATIENT_SETTLE_BILL数据,获取上个同步开始结算日期:{} 结束日期:{}", billDate, endBillDate);
-            Map<String, Object> paramMap = new HashMap<>();
-            if (null != billDate) {
-                whereSql = " and BILL_DATE>:BILL_DATE";
-                paramMap.put("BILL_DATE", billDate);
-            }
-            paramMap.put("END_BILL_DATE", endBillDate);
-            String querySql = String.format(sql, whereSql);
-            Integer count = xcfyDataTransferService.transferDataList(querySql, insertSql, paramMap, new TransferDataCallFunction() {
-                @Override
-                public Boolean transferData(Map<String, Object> dataMap) throws Exception {
-                    dataMap.put("PAY_METHOD", 1);
-                    String billDateStr = DateUtils.date2Str((Date) dataMap.get("BILL_DATE"), DateUtils.date_sdf.get());
-                    redisTemplate.opsForHash().put(Constant.JOB_CONTINUE_PARAM, "OUTPATIENT_SETTLE_BILL", billDateStr);
-                    String hisId = dataMap.get("HISID").toString();
-                    Integer count = getDetailByHisId(hisId);
-                    if (null == count || count <= 0) {
-                        log.error("hisid:{} 未查询到门诊结算清单", hisId);
-                        return false;
-                    }
-                    outpatientSettleBillService.lambdaUpdate().eq(OutpatientSettleBill::getHisid, hisId).remove();
-
-                    dataMap.put("CREATE_BY", "auto");
-                    dataMap.put("CREATE_TIME", new Date());
-                    Object diagCode = dataMap.get("ADMISSION_DISEASE_ID");
-                    if (null != diagCode && StringUtils.isNotBlank(diagCode.toString())) {
-                        String[] ybDiagCode = CommonUtil.getMedicalCodeAndName(diagCode.toString());
-                        if (null != ybDiagCode) {
-                            dataMap.put("YB_ADMISSION_DISEASE_ID", ybDiagCode[0]);
-                            dataMap.put("YB_ADMISSION_DISEASE_NAME", ybDiagCode[1]);
-                        } else {
-                            dataMap.put("YB_ADMISSION_DISEASE_ID", diagCode);
-                            dataMap.put("YB_ADMISSION_DISEASE_NAME", dataMap.get("ADMISSION_DISEASE_NAME"));
-                        }
+
+        String whereSql = "";
+        Date billDate = getBillDate();
+        log.info("开始同步V_YBKF_OUTPATIENT_SETTLE_BILL数据,获取上个同步开始结算日期:{} 结束日期:{}", billDate, endBillDate);
+        Map<String, Object> paramMap = new HashMap<>();
+        if (null != billDate) {
+            whereSql = " and BILL_DATE>:BILL_DATE";
+            paramMap.put("BILL_DATE", billDate);
+        }
+        paramMap.put("END_BILL_DATE", endBillDate);
+        String querySql = String.format(sql, whereSql);
+        Integer count = xcfyDataTransferService.transferDataList(querySql, insertSql, paramMap, new TransferDataCallFunction() {
+            @Override
+            public Boolean transferData(Map<String, Object> dataMap) throws Exception {
+                dataMap.put("PAY_METHOD", 1);
+
+
+                String hisId = dataMap.get("HISID").toString();
+                Integer count = getDetailByHisId(hisId);
+                if (null == count || count <= 0) {
+                    log.error("hisid:{} 未查询到门诊结算清单", hisId);
+                    return false;
+                }
+                outpatientSettleBillService.lambdaUpdate().eq(OutpatientSettleBill::getHisid, hisId).remove();
+
+                dataMap.put("CREATE_BY", "auto");
+                dataMap.put("CREATE_TIME", new Date());
+                Object diagCode = dataMap.get("ADMISSION_DISEASE_ID");
+                if (null != diagCode && StringUtils.isNotBlank(diagCode.toString())) {
+                    String[] ybDiagCode = CommonUtil.getMedicalCodeAndName(diagCode.toString());
+                    if (null != ybDiagCode) {
+                        dataMap.put("YB_ADMISSION_DISEASE_ID", ybDiagCode[0]);
+                        dataMap.put("YB_ADMISSION_DISEASE_NAME", ybDiagCode[1]);
                     } else {
-                        dataMap.put("YB_ADMISSION_DISEASE_ID", null);
-                        dataMap.put("YB_ADMISSION_DISEASE_NAME", null);
-                        dataMap.put("ADMISSION_DISEASE_ID", null);
-                        dataMap.put("ADMISSION_DISEASE_NAME", null);
+                        dataMap.put("YB_ADMISSION_DISEASE_ID", diagCode);
+                        dataMap.put("YB_ADMISSION_DISEASE_NAME", dataMap.get("ADMISSION_DISEASE_NAME"));
                     }
-                    Object patientAge = dataMap.get("PATIENT_AGE");
-                    if (patientAge == null) {
-                        patientAge = "0天";
-                    }
-                    Integer days = DateTimeUtil.getDayByAgeStr(patientAge.toString());
-                    Object visitTime = dataMap.get("VISIT_TIME");
-                    Object patientBirthday = dataMap.get("PATIENT_BIRTHDAY");
-                    Long ageDays = 0l;
-                    if (null != patientBirthday && days <= 0) {
-                        Date patientBirthDayDate = (Date) patientBirthday;
-
-                        if (null != visitTime) {
-                            Date visitTimeDate = (Date) visitTime;
-                            ageDays = DateUtil.betweenDay(patientBirthDayDate, visitTimeDate, false);
-                        } else {
-                            ageDays = DateUtil.betweenDay(patientBirthDayDate, new Date(), false);
-                        }
-                        dataMap.put("PATIENT_AGE_DAYS", ageDays.doubleValue());
+                } else {
+                    dataMap.put("YB_ADMISSION_DISEASE_ID", "");
+                    dataMap.put("YB_ADMISSION_DISEASE_NAME", "");
+                    dataMap.put("ADMISSION_DISEASE_ID", "");
+                    dataMap.put("ADMISSION_DISEASE_NAME", "");
+                }
+                Object patientAge = dataMap.get("PATIENT_AGE");
+                if (patientAge == null) {
+                    patientAge = "0天";
+                }
+                Integer days = DateTimeUtil.getDayByAgeStr(patientAge.toString());
+                Object visitTime = dataMap.get("VISIT_TIME");
+                Object patientBirthday = dataMap.get("PATIENT_BIRTHDAY");
+                Long ageDays = 0l;
+                if (null != patientBirthday && days <= 0) {
+                    Date patientBirthDayDate = (Date) patientBirthday;
+
+                    if (null != visitTime) {
+                        Date visitTimeDate = (Date) visitTime;
+                        ageDays = DateUtil.betweenDay(patientBirthDayDate, visitTimeDate, false);
                     } else {
-                        dataMap.put("PATIENT_AGE_DAYS", days.doubleValue());
+                        ageDays = DateUtil.betweenDay(patientBirthDayDate, new Date(), false);
                     }
-                    Object patientGender = dataMap.get("PATIENT_GENDER");
-                    dataMap.put("PATIENT_GENDER", CommonUtil.getMedicalSex(patientGender));
-                    dataMap.put("STATE", Constant.WATING);
-                    xcfyDataTransferService.transferCheckList(hisId);
-                    String visitNo = dataMap.get("VISIT_NO").toString();
-                    xcfyDataTransferService.transferOperation(visitNo);
-                    xcfyDataTransferService.transferPrescriptionOrder(visitNo);
-                    return true;
+                    dataMap.put("PATIENT_AGE_DAYS", ageDays.doubleValue());
+                } else {
+                    dataMap.put("PATIENT_AGE_DAYS", days.doubleValue());
                 }
-            }, new TransferDataCallFunction() {
-                @Override
-                public Boolean transferData(Map<String, Object> dataMap) throws Exception {
-                    return true;
-                }
-            });
-            if (count <= 0) {
-                log.error("V_YBKF_OUTPATIENT_SETTLE_BILL 未查询到大于住院billdate:{} 小于等于住院billdate:{} 的数据,停止同步", billDate, endBillDate);
-                return;
+                Object patientGender = dataMap.get("PATIENT_GENDER");
+                dataMap.put("PATIENT_GENDER", CommonUtil.getMedicalSex(patientGender));
+                dataMap.put("STATE", Constant.WATING);
+                xcfyDataTransferService.transferCheckList(hisId);
+                String visitNo = dataMap.get("VISIT_NO").toString();
+                xcfyDataTransferService.transferOperation(visitNo);
+                xcfyDataTransferService.transferPrescriptionOrder(visitNo);
+                return true;
             }
+        }, new TransferDataCallFunction() {
+            @Override
+            public Boolean transferData(Map<String, Object> dataMap) throws Exception {
+                return true;
+            }
+        });
+        if (count <= 0) {
+            String billDateStr = DateUtils.date2Str(endBillDate, DateUtils.date_sdf.get());
+            redisTemplate.opsForHash().put(Constant.JOB_CONTINUE_PARAM, "OUTPATIENT_SETTLE_BILL", billDateStr);
+            log.error("V_YBKF_OUTPATIENT_SETTLE_BILL 未查询到大于住院billdate:{} 小于等于住院billdate:{} 的数据,停止同步", billDate, endBillDate);
+            return;
         }
 
+
     }
 
     public Integer getDetailByHisId(String hisId) {