|
|
@@ -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) {
|