|
|
@@ -0,0 +1,108 @@
|
|
|
+package org.jeecg.modules.medical.job;
|
|
|
+
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import org.jeecg.modules.medical.Constant;
|
|
|
+import org.jeecg.modules.medical.entity.AfterIncidentDetailLog;
|
|
|
+import org.jeecg.modules.medical.entity.AfterIncidentLog;
|
|
|
+import org.jeecg.modules.medical.entity.HospitalizatioSettleDetail;
|
|
|
+import org.jeecg.modules.medical.entity.MasterAdmissionBill;
|
|
|
+import org.jeecg.modules.medical.ruleengine.RuleEngine;
|
|
|
+import org.jeecg.modules.medical.service.IAfterIncidentDetailLogService;
|
|
|
+import org.jeecg.modules.medical.service.IAfterIncidentLogService;
|
|
|
+import org.jeecg.modules.medical.service.IHospitalizatioSettleDetailService;
|
|
|
+import org.jeecg.modules.medical.service.IMasterAdmissionBillService;
|
|
|
+import org.jeecg.modules.medical.service.IOutpatientSettleBillService;
|
|
|
+import org.jeecg.modules.system.entity.SysUser;
|
|
|
+import org.jeecg.modules.system.service.ISysUserService;
|
|
|
+import org.quartz.Job;
|
|
|
+import org.quartz.JobExecutionContext;
|
|
|
+import org.quartz.JobExecutionException;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 事后监管任务生成
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class AfterWaringLogTestJob{
|
|
|
+ @Autowired
|
|
|
+ IAfterIncidentLogService afterIncidentLogService;
|
|
|
+ @Autowired
|
|
|
+ IAfterIncidentDetailLogService afterIncidentDetailLogService;
|
|
|
+ @Autowired
|
|
|
+ RuleEngine ruleEngine;
|
|
|
+ @Autowired
|
|
|
+ IMasterAdmissionBillService masterAdmissionBillService;
|
|
|
+ @Autowired
|
|
|
+ IHospitalizatioSettleDetailService hospitalizatioSettleDetailService;
|
|
|
+ @Autowired
|
|
|
+ IOutpatientSettleBillService outpatientSettleBillService;
|
|
|
+ @Autowired
|
|
|
+ ISysUserService sysUserService;
|
|
|
+
|
|
|
+
|
|
|
+ public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
|
|
|
+ List<MasterAdmissionBill> masterAdmissionBillList = masterAdmissionBillService.lambdaQuery().isNull(MasterAdmissionBill::getState).last(" limit 1000").list();
|
|
|
+ for (MasterAdmissionBill masterAdmissionBill : masterAdmissionBillList) {
|
|
|
+ dealAftertask(masterAdmissionBill);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Async("commonTaskAsyncPool")
|
|
|
+ public void dealAftertask(MasterAdmissionBill masterAdmissionBill) {
|
|
|
+ masterAdmissionBillService.lambdaUpdate().set(MasterAdmissionBill::getState, Constant.DEALING).eq(MasterAdmissionBill::getId, masterAdmissionBill.getId()).update();
|
|
|
+ AfterIncidentLog afterIncidentLog = afterIncidentLogService.addAfterIncidentLog(masterAdmissionBill);
|
|
|
+ List<HospitalizatioSettleDetail> hospitalizatioSettleDetails = hospitalizatioSettleDetailService.lambdaQuery().eq(HospitalizatioSettleDetail::getHisid, masterAdmissionBill.getHisid()).list();
|
|
|
+ List<AfterIncidentDetailLog> afterIncidentDetailLogList = new ArrayList<>();
|
|
|
+ AfterIncidentDetailLog afterIncidentDetailLog = null;
|
|
|
+ List<SysUser> sysUserList = sysUserService.lambdaQuery().eq(SysUser::getDoctorId, afterIncidentLog.getDoctorId()).list();
|
|
|
+ String doctorLevel = "0";
|
|
|
+ if (CollectionUtil.isNotEmpty(sysUserList)) {
|
|
|
+ doctorLevel = sysUserList.get(0).getDoctorLevel();
|
|
|
+ }
|
|
|
+ for (HospitalizatioSettleDetail hospitalizatioSettleDetail : hospitalizatioSettleDetails) {
|
|
|
+ afterIncidentDetailLog = new AfterIncidentDetailLog();
|
|
|
+
|
|
|
+ afterIncidentDetailLog.setAfterIncidentLogId(afterIncidentLog.getId());
|
|
|
+// afterIncidentDetailLog.setMedical_diagnose_name_str(masterAdmissionBill.getDischargeDiseaseNameMain());
|
|
|
+// afterIncidentDetailLog.setMedical_diagnose_code_str(masterAdmissionBill.getDischargeDiseaseIdMain());
|
|
|
+ afterIncidentDetailLog.setAmount(hospitalizatioSettleDetail.getCost().doubleValue());
|
|
|
+ afterIncidentDetailLog.setMedical_project_code(hospitalizatioSettleDetail.getItemId());
|
|
|
+ afterIncidentDetailLog.setMedical_project_name(hospitalizatioSettleDetail.getItemName());
|
|
|
+ afterIncidentDetailLog.setProject_name(hospitalizatioSettleDetail.getItemNameHosp());
|
|
|
+ afterIncidentDetailLog.setProject_code(hospitalizatioSettleDetail.getItemIdHosp());
|
|
|
+ afterIncidentDetailLog.setCreateTime(afterIncidentLog.getCreateTime());
|
|
|
+ afterIncidentDetailLog.setDoctor_code(afterIncidentLog.getDoctorId());
|
|
|
+ afterIncidentDetailLog.setDoctor_name(afterIncidentLog.getDoctorName());
|
|
|
+
|
|
|
+ afterIncidentDetailLog.setDoctor_level(doctorLevel);
|
|
|
+ afterIncidentDetailLog.setUse_day(hospitalizatioSettleDetail.getUseDay());
|
|
|
+ afterIncidentDetailLog.setDose_form(hospitalizatioSettleDetail.getDosageForm());
|
|
|
+ afterIncidentDetailLog.setDose_unit(hospitalizatioSettleDetail.getPackageUnit());
|
|
|
+ afterIncidentDetailLog.setPrice(new BigDecimal(hospitalizatioSettleDetail.getUnitPrice()));
|
|
|
+ afterIncidentDetailLog.setDscg_bed(masterAdmissionBill.getAdmBed());
|
|
|
+ afterIncidentDetailLog.setExpense_category(hospitalizatioSettleDetail.getPCategory());
|
|
|
+// afterIncidentDetailLog.setInspectionSite();
|
|
|
+ afterIncidentDetailLog.setOutHospDate(masterAdmissionBill.getDischargeDate());
|
|
|
+ afterIncidentDetailLog.setDiagnose_code_str(masterAdmissionBill.getDischargeDiseaseIdMain());
|
|
|
+ afterIncidentDetailLog.setDiagnose_name_str(masterAdmissionBill.getDischargeDiseaseNameMain());
|
|
|
+ afterIncidentDetailLog.setMedical_insurance_mark(masterAdmissionBill.getPayMethod());
|
|
|
+ afterIncidentDetailLog.setMedical_specification(hospitalizatioSettleDetail.getDrugSpec());
|
|
|
+ afterIncidentDetailLog.setTotal_amount(masterAdmissionBill.getMedfeeSumamt().doubleValue());
|
|
|
+// afterIncidentDetailLog.setOrderType();
|
|
|
+// afterIncidentDetailLog.setOrderCatalog();
|
|
|
+ afterIncidentDetailLogList.add(afterIncidentDetailLog);
|
|
|
+ }
|
|
|
+
|
|
|
+ afterIncidentDetailLogService.saveBatch(afterIncidentDetailLogList);
|
|
|
+ masterAdmissionBillService.lambdaUpdate().set(MasterAdmissionBill::getState, Constant.SUCCESS).eq(MasterAdmissionBill::getId, masterAdmissionBill.getId()).update();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|