MidAuditDataTest.java 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554
  1. package org.jeecg;
  2. import cn.hutool.core.collection.CollectionUtil;
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.apache.commons.lang.StringUtils;
  5. import org.jeecg.common.util.DateUtils;
  6. import org.jeecg.modules.medical.Constant;
  7. import org.jeecg.modules.medical.entity.AfterwardsAudit;
  8. import org.jeecg.modules.medical.entity.AfterwardsAuditDetail;
  9. import org.jeecg.modules.medical.entity.AfterwardsIncidentAuditDiagnose;
  10. import org.jeecg.modules.medical.entity.MedicalInsRuleInfo;
  11. import org.jeecg.modules.medical.entity.MidIncidentAudit;
  12. import org.jeecg.modules.medical.entity.MidIncidentAuditDetail;
  13. import org.jeecg.modules.medical.entity.MidIncidentAuditDiagnose;
  14. import org.jeecg.modules.medical.entity.SttlMasterBill;
  15. import org.jeecg.modules.medical.entity.SttlMasterDetailBill;
  16. import org.jeecg.modules.medical.job.AfterWaringLogTestJob;
  17. import org.jeecg.modules.medical.ruleengine.RuleEngine;
  18. import org.jeecg.modules.medical.ruleengine.SPELUtil;
  19. import org.jeecg.modules.medical.service.IAfterwardsAuditDetailService;
  20. import org.jeecg.modules.medical.service.IAfterwardsAuditService;
  21. import org.jeecg.modules.medical.service.IAfterwardsIncidentAuditDiagnoseService;
  22. import org.jeecg.modules.medical.service.IMedicalInsRuleInfoService;
  23. import org.jeecg.modules.medical.service.IMedicalInsRuleProjectDiagnoseService;
  24. import org.jeecg.modules.medical.service.IMedicalInsRuleProjectService;
  25. import org.jeecg.modules.medical.service.IMidIncidentAuditDetailService;
  26. import org.jeecg.modules.medical.service.IMidIncidentAuditDiagnoseService;
  27. import org.jeecg.modules.medical.service.IMidIncidentAuditService;
  28. import org.jeecg.modules.medical.service.ISttlMasterBillService;
  29. import org.jeecg.modules.medical.service.ISttlMasterDetailBillService;
  30. import org.jeecg.modules.system.service.ISysDepartService;
  31. import org.jeecg.modules.system.service.ISysUserService;
  32. import org.junit.Test;
  33. import org.junit.runner.RunWith;
  34. import org.quartz.JobExecutionException;
  35. import org.springframework.beans.factory.annotation.Autowired;
  36. import org.springframework.boot.test.context.SpringBootTest;
  37. import org.springframework.data.redis.core.RedisTemplate;
  38. import org.springframework.scheduling.annotation.Async;
  39. import org.springframework.test.context.junit4.SpringRunner;
  40. import java.math.BigDecimal;
  41. import java.text.SimpleDateFormat;
  42. import java.util.ArrayList;
  43. import java.util.Date;
  44. import java.util.HashMap;
  45. import java.util.List;
  46. import java.util.Map;
  47. import java.util.Random;
  48. import java.util.Set;
  49. /**
  50. * @author soft01
  51. * @time 2023/5/28 21:41
  52. * @description '生成一些模拟数据'
  53. * @parentProject medical-java
  54. */
  55. @RunWith(SpringRunner.class)
  56. @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = JeecgSystemApplication.class)
  57. @Slf4j
  58. public class MidAuditDataTest {
  59. List<Map<String, String>> doctorList = new ArrayList<>();
  60. //就诊类别;住院(hosp)/门诊(outpatient)
  61. public static final String TREATMENTTYPE = "hops";
  62. public static final String NOTICE_TYPE = "after";
  63. public static final String medicalDeptCode = "1001"; //部门代码
  64. public static final String deptName = "儿科"; //科室
  65. // public static final String doctorName = "章邯";
  66. // public static final String doctorId = "1001001";
  67. // 患者信息
  68. public static final String patientId = "A1001";
  69. public static final String patientName = "魏冉";
  70. public static final String ZYH = "H001"; // 住院号
  71. // 医嘱/处方号
  72. public static final String prescriptionNumber = "P001";
  73. // 项目类型 medicine;consumable;diagnoses;
  74. public static final String PROJECTTYPE = "medicine";
  75. public static final String PROJECTCODE = "8001";
  76. @Autowired
  77. private IAfterwardsAuditService afterwardsAuditService;
  78. @Autowired
  79. private IAfterwardsAuditDetailService afterwardsAuditDetailService;
  80. @Autowired
  81. private IAfterwardsIncidentAuditDiagnoseService afterwardsIncidentAuditDiagnoseService;
  82. @Autowired
  83. private AfterWaringLogTestJob afterWaringLogTestJob;
  84. @Autowired
  85. ISysUserService sysUserService;
  86. @Autowired
  87. ISysDepartService sysDepartService;
  88. @Autowired
  89. ISttlMasterBillService sttlMasterBillService;
  90. @Autowired
  91. ISttlMasterDetailBillService sttlMasterDetailBillService;
  92. @Autowired
  93. IMedicalInsRuleProjectService medicalInsRuleProjectService;
  94. @Autowired
  95. IMedicalInsRuleProjectDiagnoseService medicalInsRuleProjectDiagnoseService;
  96. @Autowired
  97. RuleEngine ruleEngine;
  98. @Autowired
  99. IMedicalInsRuleInfoService medicalInsRuleInfoService;
  100. @Autowired
  101. RedisTemplate redisTemplate;
  102. @Autowired
  103. IMidIncidentAuditService midIncidentAuditService;
  104. @Autowired
  105. IMidIncidentAuditDetailService midIncidentAuditDetailService;
  106. @Autowired
  107. IMidIncidentAuditDiagnoseService midIncidentAuditDiagnoseService;
  108. @Test
  109. public void testJob() {
  110. try {
  111. afterWaringLogTestJob.execute(null);
  112. } catch (JobExecutionException e) {
  113. e.printStackTrace();
  114. }
  115. }
  116. @Test
  117. public void genMidDiag() {
  118. List<MidIncidentAudit> midIncidentAuditList = midIncidentAuditService.lambdaQuery().list();
  119. log.info("进入查询,数据条数:{}", midIncidentAuditList.size());
  120. List<MidIncidentAuditDiagnose> midIncidentAuditDiagnoseList = new ArrayList<>();
  121. MidIncidentAuditDiagnose midIncidentAuditDiagnose = null;
  122. for (MidIncidentAudit midIncidentAudit : midIncidentAuditList) {
  123. midIncidentAuditDiagnose = new MidIncidentAuditDiagnose();
  124. List<SttlMasterBill> sttlMasterBills = sttlMasterBillService.lambdaQuery().eq(SttlMasterBill::getJsdjh, midIncidentAudit.getPrescriptionNumber()).list();
  125. if (CollectionUtil.isEmpty(sttlMasterBills)) {
  126. continue;
  127. }
  128. SttlMasterBill sttlMasterBill = sttlMasterBills.get(0);
  129. midIncidentAuditDiagnose.setMidIncidentAuditId(midIncidentAudit.getId());
  130. midIncidentAuditDiagnose.setDiagnoseCode(sttlMasterBill.getCyzdbm());
  131. midIncidentAuditDiagnose.setDiagnoseDesc(sttlMasterBill.getCyzdmc());
  132. midIncidentAuditDiagnose.setMedDiagnoseCode(sttlMasterBill.getRyzdbm());
  133. midIncidentAuditDiagnose.setMedDiagnoseDesc(sttlMasterBill.getRyksmc());
  134. midIncidentAuditDiagnose.setPrescriptionNumber(midIncidentAudit.getPrescriptionNumber());
  135. midIncidentAuditDiagnose.setOutpatientNumber(midIncidentAudit.getOutpatientNumber());
  136. midIncidentAuditDiagnose.setCreateTime(new Date());
  137. midIncidentAuditDiagnoseList.add(midIncidentAuditDiagnose);
  138. log.info("midIncidentAuditDiagnose:{}", midIncidentAuditDiagnose);
  139. }
  140. midIncidentAuditDiagnoseService.saveBatch(midIncidentAuditDiagnoseList, 1000);
  141. }
  142. @Test
  143. public void genAfterDiag() {
  144. List<AfterwardsAudit> midIncidentAuditList = afterwardsAuditService.lambdaQuery().list();
  145. log.info("进入查询,数据条数:{}", midIncidentAuditList.size());
  146. List<AfterwardsIncidentAuditDiagnose> midIncidentAuditDiagnoseList = new ArrayList<>();
  147. AfterwardsIncidentAuditDiagnose midIncidentAuditDiagnose = null;
  148. for (AfterwardsAudit afterwardsAudit : midIncidentAuditList) {
  149. midIncidentAuditDiagnose = new AfterwardsIncidentAuditDiagnose();
  150. List<SttlMasterBill> sttlMasterBills = sttlMasterBillService.lambdaQuery().eq(SttlMasterBill::getJsdjh, afterwardsAudit.getPrescriptionNumber()).list();
  151. if (CollectionUtil.isEmpty(sttlMasterBills)) {
  152. continue;
  153. }
  154. SttlMasterBill sttlMasterBill = sttlMasterBills.get(0);
  155. midIncidentAuditDiagnose.setAfterwardsAuditId(afterwardsAudit.getId());
  156. midIncidentAuditDiagnose.setDiagnoseCode(sttlMasterBill.getCyzdbm());
  157. midIncidentAuditDiagnose.setDiagnoseDesc(sttlMasterBill.getCyzdmc());
  158. midIncidentAuditDiagnose.setMedDiagnoseCode(sttlMasterBill.getRyzdbm());
  159. midIncidentAuditDiagnose.setMedDiagnoseDesc(sttlMasterBill.getRyksmc());
  160. midIncidentAuditDiagnose.setPrescriptionNumber(afterwardsAudit.getPrescriptionNumber());
  161. midIncidentAuditDiagnose.setOutpatientNumber(afterwardsAudit.getOutpatientNumber());
  162. midIncidentAuditDiagnose.setCreateTime(new Date());
  163. midIncidentAuditDiagnoseList.add(midIncidentAuditDiagnose);
  164. log.info("afterDiag:{}", midIncidentAuditDiagnose);
  165. }
  166. afterwardsIncidentAuditDiagnoseService.saveBatch(midIncidentAuditDiagnoseList, 1000);
  167. }
  168. // @Test
  169. public void getAfterToMid() {
  170. log.info("进入查询");
  171. List<AfterwardsAudit> afterwardsAuditList = afterwardsAuditService.lambdaQuery().list();
  172. log.info("数据条数:{}", afterwardsAuditList.size());
  173. MidIncidentAudit midIncidentAudit = new MidIncidentAudit();
  174. List<MidIncidentAudit> midIncidentAuditList = new ArrayList<>();
  175. for (AfterwardsAudit audit : afterwardsAuditList) {
  176. SttlMasterBill sttlMasterBill = sttlMasterBillService.lambdaQuery().eq(SttlMasterBill::getJsdjh, audit.getPrescriptionNumber()).one();
  177. if (null == sttlMasterBill) {
  178. continue;
  179. }
  180. Long count = afterwardsAuditDetailService.lambdaQuery().eq(AfterwardsAuditDetail::getAfterwardsAuditId, audit.getId()).isNotNull(AfterwardsAuditDetail::getMedicalInsRuleInfoId).count();
  181. if (null == count || count <= 0) {
  182. continue;
  183. }
  184. midIncidentAudit = new MidIncidentAudit();
  185. midIncidentAudit.setInsuranceType("1");
  186. midIncidentAudit.setInpatientArea(audit.getMedicalDeptName());
  187. // midIncidentAudit.setAllergies()
  188. midIncidentAudit.setNumberBeds(audit.getOutpatientNumber());
  189. midIncidentAudit.setDischargeStatus("1");
  190. midIncidentAudit.setPatientGender(sttlMasterBill.getHzxb());
  191. midIncidentAudit.setAmount(audit.getAmount());
  192. midIncidentAudit.setDoctorLevel(sttlMasterBill.getYsjb());
  193. midIncidentAudit.setPatientAge(sttlMasterBill.getHznl());
  194. midIncidentAudit.setPrescriptionNumber(audit.getPrescriptionNumber());
  195. midIncidentAudit.setDoctorId(audit.getDoctorId());
  196. midIncidentAudit.setDoctorName(audit.getDoctorName());
  197. midIncidentAudit.setPatientName(audit.getPatientName());
  198. midIncidentAudit.setPatientId(audit.getPatientId());
  199. midIncidentAudit.setInHospDate(DateUtils.str2Date(sttlMasterBill.getRyrq(), new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")));
  200. midIncidentAudit.setNoticeType("after");
  201. midIncidentAudit.setTreatmentType("1");
  202. midIncidentAudit.setVisitTime(midIncidentAudit.getInHospDate());
  203. midIncidentAudit.setMedicalDeptName(audit.getMedicalDeptName());
  204. midIncidentAudit.setMedicalDeptCode(audit.getMedicalDeptCode());
  205. midIncidentAudit.setOutpatientNumber(audit.getOutpatientNumber());
  206. midIncidentAuditList.add(midIncidentAudit);
  207. log.info("midIncident:{}", midIncidentAudit);
  208. }
  209. midIncidentAuditService.saveBatch(midIncidentAuditList, 1000);
  210. }
  211. @Test
  212. public void insertMidWordDetail() {
  213. // QueryWrapper<SttlMasterBill> queryWrapper = new QueryWrapper();
  214. // queryWrapper.notIn("jsdjh","0182940007_20201202081355","111929226_20201124104538","20200914-3603991000-014606");
  215. //
  216. // List<SttlMasterBill> sttlMasterBills = sttlMasterBillService.list(queryWrapper);
  217. List<MidIncidentAudit> midIncidentAuditList = midIncidentAuditService.lambdaQuery().ne(MidIncidentAudit::getId, 45).list();
  218. for (MidIncidentAudit midIncidentAudit : midIncidentAuditList) {
  219. // QueryWrapper<MedicalInsRuleProject> mrPQueryWrapper = new QueryWrapper();
  220. // medicalInsRuleInfoService.lambdaQuery().last()
  221. List<AfterwardsAuditDetail> afterwardsAuditDetails = afterwardsAuditDetailService.lambdaQuery().eq(AfterwardsAuditDetail::getPrescriptionNumber, midIncidentAudit.getPrescriptionNumber()).list();
  222. List<MidIncidentAuditDetail> midIncidentAuditDetails = new ArrayList<>();
  223. MidIncidentAuditDetail midIncidentAuditDetail = null;
  224. for (AfterwardsAuditDetail afterwardsAuditDetail : afterwardsAuditDetails) {
  225. // String lastSql = "INSTR("+afterwardsAuditDetail.getMedicalProjectCode()+",project_code)";
  226. // List<MedicalInsRuleProject> medicalInsRuleProjectList = medicalInsRuleProjectService.lambdaQuery().eq(MedicalInsRuleProject::getState, Constant.EFF_STATE).last(lastSql).list();
  227. // if (!CollectionUtil.isNotEmpty(medicalInsRuleProjectList)) {
  228. // log.error("规则对象配置表没有有效的规则:{}", lastSql);
  229. // continue;
  230. // }
  231. SttlMasterDetailBill sttlMasterDetailBill = sttlMasterDetailBillService.lambdaQuery().eq(SttlMasterDetailBill::getJsdjh, afterwardsAuditDetail.getPrescriptionNumber()).eq(SttlMasterDetailBill::getYbxmbm, afterwardsAuditDetail.getMedicalProjectCode()).list().get(0);
  232. // for(SttlMasterDetailBill sttlMasterDetailBill : sttlMasterDetailBillList) {
  233. midIncidentAuditDetail = new MidIncidentAuditDetail();
  234. midIncidentAuditDetail.setMidIncidentAuditId(midIncidentAudit.getId());
  235. midIncidentAuditDetail.setUseDay(Integer.parseInt(sttlMasterDetailBill.get用药天数()));
  236. // midIncidentAuditDetail.setDoseUnit(sttlMasterDetailBill.get)
  237. midIncidentAuditDetail.setMedicalNumber(afterwardsAuditDetail.getQuantity().floatValue());
  238. midIncidentAuditDetail.setPrice(afterwardsAuditDetail.getPrice());
  239. // midIncidentAuditDetail.setSingleDoseNumber()
  240. midIncidentAuditDetail.setAmount(afterwardsAuditDetail.getAmount());
  241. midIncidentAuditDetail.setMedicalProjectName(afterwardsAuditDetail.getMedicalProjectName());
  242. midIncidentAuditDetail.setMedicalProjectCode(afterwardsAuditDetail.getMedicalProjectCode());
  243. midIncidentAuditDetail.setTreatmentType("1");
  244. midIncidentAuditDetail.setNoticeType("middle");
  245. midIncidentAuditDetail.setMedicalInsRuleInfoId(afterwardsAuditDetail.getMedicalInsRuleInfoId());
  246. midIncidentAuditDetail.setMedicalInsRuleInfoName(afterwardsAuditDetail.getMedicalInsRuleInfoName());
  247. midIncidentAuditDetail.setMedicalInsRuleInfoCode(afterwardsAuditDetail.getMedicalInsRuleInfoCode());
  248. // midIncidentAuditDetail.getAmount()-Math.random();
  249. midIncidentAuditDetail.setErrorRelativelyManyAmt(new BigDecimal(getRandom(midIncidentAuditDetail.getAmount())));
  250. midIncidentAuditDetail.setErrorRelativelyFewAmt(new BigDecimal(0));
  251. midIncidentAuditDetail.setOutpatientNumber(afterwardsAuditDetail.getOutpatientNumber());
  252. midIncidentAuditDetail.setPrescriptionNumber(afterwardsAuditDetail.getPrescriptionNumber());
  253. midIncidentAuditDetail.setPatientId(afterwardsAuditDetail.getPatientId());
  254. midIncidentAuditDetail.setPatientName(afterwardsAuditDetail.getPatientName());
  255. midIncidentAuditDetail.setProjectType(afterwardsAuditDetail.getProjectType());
  256. midIncidentAuditDetail.setViolationLevel(afterwardsAuditDetail.getViolationLevel());
  257. midIncidentAuditDetail.setReminderLevel("0");
  258. midIncidentAuditDetail.setDescription(afterwardsAuditDetail.getDescription());
  259. midIncidentAuditDetail.setCreateTime(new Date());
  260. midIncidentAuditDetail.setMedicalInsuranceMark("1");
  261. midIncidentAuditDetail.setMedicalDeptCode(afterwardsAuditDetail.getMedicalDeptCode());
  262. midIncidentAuditDetail.setMedicalDeptName(afterwardsAuditDetail.getMedicalDeptName());
  263. midIncidentAuditDetail.setProejctCode(afterwardsAuditDetail.getMedicalProjectCode());
  264. midIncidentAuditDetail.setProejctName(afterwardsAuditDetail.getMedicalProjectName());
  265. midIncidentAuditDetail.setDoctorId(afterwardsAuditDetail.getDoctorId());
  266. midIncidentAuditDetail.setDoctorName(afterwardsAuditDetail.getDoctorName());
  267. midIncidentAuditDetails.add(midIncidentAuditDetail);
  268. // }
  269. }
  270. midIncidentAuditDetailService.saveBatch(midIncidentAuditDetails, 1000);
  271. }
  272. // for (SttlMasterBill sttlMasterBill : sttlMasterBills) {
  273. // AfterwardsAudit afterwardsAudit = afterwardsAuditService.lambdaQuery().eq(AfterwardsAudit::getPrescriptionNumber, sttlMasterBill.getJsdjh()).one();
  274. // if (null == afterwardsAudit) {
  275. // log.error("结算单据号找不到稽核单:{}", sttlMasterBill.getJsdjh());
  276. // continue;
  277. // }
  278. // List<SttlMasterDetailBill> sttlMasterDetailBills = sttlMasterDetailBillService.lambdaQuery().eq(SttlMasterDetailBill::getJsdjh, sttlMasterBill.getJsdjh()).list();
  279. // if (CollectionUtil.isNotEmpty(sttlMasterBills)) {
  280. //
  281. // for (SttlMasterDetailBill sttlMasterDetailBill : sttlMasterDetailBills) {
  282. //
  283. // genData(sttlMasterDetailBill, codeDataMap, afterwardsAudit, medicalInsRuleInfoList, medicalMap);
  284. // }
  285. // }
  286. // }
  287. // afterwardsAuditDetailService.saveBatch(detailList, 1000);
  288. }
  289. @Async
  290. public void genData(SttlMasterDetailBill sttlMasterDetailBill, Map<String, Boolean> codeDataMap, AfterwardsAudit afterwardsAudit, List<MedicalInsRuleInfo> medicalInsRuleInfoList, Map<Integer, MedicalInsRuleInfo> medicalMap) {
  291. AfterwardsAuditDetail afterwardsAuditDetail = new AfterwardsAuditDetail();
  292. String projectCode = sttlMasterDetailBill.getYbxmbm();
  293. // if (codeDataMap.containsKey(projectCode)) {
  294. // return;
  295. // }
  296. if (StringUtils.isBlank(projectCode)) {
  297. log.error("医保编码:{}", sttlMasterDetailBill);
  298. return;
  299. }
  300. if (StringUtils.isNotBlank(projectCode)) {
  301. Set<Integer> medicalRuleInfoIdSet = RuleEngine.itemCodeAndRuleIdMap.get(projectCode);
  302. if (CollectionUtil.isEmpty(medicalRuleInfoIdSet)) {
  303. log.info("医保编码未匹配到规则:{}", projectCode);
  304. if (!codeDataMap.containsKey(projectCode)) {
  305. ruleEngine.genItemCodeAndRuleIdMapTest(projectCode, afterwardsAuditDetail, medicalInsRuleInfoList, medicalMap, codeDataMap);
  306. }
  307. } else {
  308. List<Integer> ruleIdList = new ArrayList<>(medicalRuleInfoIdSet);
  309. Integer ruleId = ruleIdList.get(0);
  310. MedicalInsRuleInfo medicalInsRuleInfo = medicalInsRuleInfoService.getById(ruleId);
  311. afterwardsAuditDetail.setMedicalInsRuleInfoId(ruleId);
  312. // MedicalInsRuleInfo medicalInsRuleInfo = medicalMap.get(medicalInsRuleProject.getMedicalInsRuleInfoId());
  313. afterwardsAuditDetail.setMedicalInsRuleInfoName(medicalInsRuleInfo.getRuleName());
  314. afterwardsAuditDetail.setMedicalInsRuleInfoCode(medicalInsRuleInfo.getRuleCode());
  315. Object desc = redisTemplate.opsForHash().get(Constant.PROJECT_VOLIDATION_DESC_KEY + ruleId, projectCode);
  316. if (null != desc && StringUtils.isNotBlank(desc.toString())) {
  317. afterwardsAuditDetail.setDescription(desc.toString());
  318. } else {
  319. afterwardsAuditDetail.setDescription(medicalInsRuleInfo.getDescription());
  320. }
  321. }
  322. }
  323. String projectType = null;
  324. if (projectCode.startsWith(Constant.CONSUMABLE_START_KEY)) {
  325. projectType = "consumable";
  326. } else if (projectCode.startsWith(Constant.RESTORATIVES_T_START_KEY) ||
  327. projectCode.startsWith(Constant.RESTORATIVES_X_START_KEY) ||
  328. projectCode.startsWith(Constant.RESTORATIVES_Z_START_KEY)) {
  329. projectType = "medicine";
  330. //耗材都是字母c开头, 药品是X或Z T, 医疗服务是数字开头
  331. } else if (SPELUtil.isNumeric(projectCode)) {
  332. projectType = "diagnoses";
  333. }
  334. afterwardsAuditDetail.setProjectType(projectType);
  335. afterwardsAuditDetail.setAfterwardsAuditId(afterwardsAudit.getId());
  336. afterwardsAuditDetail.setAmount(Double.parseDouble(sttlMasterDetailBill.get金额()));
  337. afterwardsAuditDetail.setTreatmentType("hops");
  338. afterwardsAuditDetail.setDoctorId(afterwardsAudit.getDoctorId());
  339. afterwardsAuditDetail.setDoctorName(afterwardsAudit.getDoctorName());
  340. afterwardsAuditDetail.setMedicalDeptCode(afterwardsAudit.getMedicalDeptCode());
  341. afterwardsAuditDetail.setMedicalDeptName(afterwardsAudit.getMedicalDeptName());
  342. afterwardsAuditDetail.setNoticeType("after");
  343. afterwardsAuditDetail.setMedicalProjectCode(projectCode);
  344. afterwardsAuditDetail.setMedicalProjectName(sttlMasterDetailBill.get医保项目名称());
  345. afterwardsAuditDetail.setPatientId(afterwardsAudit.getPatientId());
  346. afterwardsAuditDetail.setPatientName(afterwardsAudit.getPatientName());
  347. afterwardsAuditDetail.setViolationLevel(0);
  348. afterwardsAuditDetail.setProejctCode(projectCode);
  349. afterwardsAuditDetail.setProejctName(sttlMasterDetailBill.get医保项目名称());
  350. afterwardsAuditDetail.setCreateTime(new Date());
  351. Double quantit = Double.parseDouble(sttlMasterDetailBill.get数量());
  352. afterwardsAuditDetail.setQuantity(quantit.intValue());
  353. afterwardsAuditDetail.setReminderLevel("1");
  354. // detailList.add(afterwardsAuditDetail);
  355. afterwardsAuditDetailService.save(afterwardsAuditDetail);
  356. }
  357. @Test
  358. public void generateAfterwardsAuditData() {
  359. Map<String, String> doctorItem1 = new HashMap<>();
  360. doctorItem1.put("doctorName", "章邯");
  361. doctorItem1.put("doctorId", "1001001");
  362. Map<String, String> doctorItem2 = new HashMap<>();
  363. doctorItem2.put("doctorName", "楚南公");
  364. doctorItem2.put("doctorId", "1001006");
  365. Map<String, String> doctorItem3 = new HashMap<>();
  366. doctorItem3.put("doctorName", "晓梦");
  367. doctorItem3.put("doctorId", "1001005");
  368. Map<String, String> doctorItem4 = new HashMap<>();
  369. doctorItem4.put("doctorName", "柳梦璃");
  370. doctorItem4.put("doctorId", "1002002");
  371. Map<String, String> doctorItem5 = new HashMap<>();
  372. doctorItem5.put("doctorName", "司马懿");
  373. doctorItem5.put("doctorId", "1001201");
  374. Map<String, String> doctorItem6 = new HashMap<>();
  375. doctorItem6.put("doctorName", "荀彧");
  376. doctorItem6.put("doctorId", "1001202");
  377. Map<String, String> doctorItem7 = new HashMap<>();
  378. doctorItem7.put("doctorName", "夏侯渊");
  379. doctorItem7.put("doctorId", "1001203");
  380. Map<String, String> doctorItem8 = new HashMap<>();
  381. doctorItem8.put("doctorName", "曹仁");
  382. doctorItem8.put("doctorId", "1001205");
  383. Map<String, String> doctorItem9 = new HashMap<>();
  384. doctorItem9.put("doctorName", "孙权");
  385. doctorItem9.put("doctorId", "1001206");
  386. Map<String, String> doctorItem10 = new HashMap<>();
  387. doctorItem10.put("doctorName", "鲁肃");
  388. doctorItem10.put("doctorId", "1001207");
  389. doctorList.add(doctorItem1);
  390. doctorList.add(doctorItem2);
  391. doctorList.add(doctorItem3);
  392. doctorList.add(doctorItem4);
  393. doctorList.add(doctorItem5);
  394. doctorList.add(doctorItem6);
  395. doctorList.add(doctorItem7);
  396. doctorList.add(doctorItem8);
  397. doctorList.add(doctorItem9);
  398. doctorList.add(doctorItem10);
  399. for (Map<String, String> stringStringMap : doctorList) {
  400. String doctorName = stringStringMap.get("doctorName");
  401. String doctorId = stringStringMap.get("doctorId");
  402. // 写主表
  403. AfterwardsAudit extracted = writeMaster(doctorId, doctorName);
  404. // 写从表
  405. writeSlave(doctorId, doctorName, extracted.getId(), 5);
  406. }
  407. }
  408. private void writeSlave(String doctorId, String doctorName, Integer id, int number) {
  409. for (int i = 0; i < number; i++) {
  410. AfterwardsAuditDetail aad = new AfterwardsAuditDetail();
  411. aad.setAfterwardsAuditId(id);
  412. aad.setMedicalInsRuleInfoId(1);
  413. aad.setMedicalInsRuleInfoCode("1");
  414. aad.setMedicalInsRuleInfoName("前");
  415. aad.setTreatmentType(TREATMENTTYPE);
  416. aad.setReminderLevel("1");
  417. aad.setViolationLevel(1);
  418. aad.setNoticeType(NOTICE_TYPE);
  419. aad.setMedicalDeptCode(medicalDeptCode);
  420. aad.setMedicalDeptName(deptName);
  421. aad.setDoctorName(doctorName);
  422. aad.setDoctorId(doctorId);
  423. aad.setPatientId(patientId);
  424. aad.setPatientName(patientName);
  425. aad.setOutpatientNumber(aad.getOutpatientNumber());
  426. aad.setPrescriptionNumber(prescriptionNumber);
  427. aad.setProjectType(PROJECTTYPE);
  428. aad.setProejctCode(PROJECTCODE);
  429. aad.setQuantity(1);
  430. aad.setMedicalProjectCode("8001");
  431. aad.setMedicalProjectName("1");
  432. aad.setAmount(Double.valueOf(MidAuditDataTest.getRandom()));
  433. aad.setCreateBy("admin");
  434. aad.setCreateTime(new Date());
  435. afterwardsAuditDetailService.save(aad);
  436. }
  437. }
  438. AfterwardsAudit writeMaster(String doctorId, String doctorName) {
  439. AfterwardsAudit aa = new AfterwardsAudit();
  440. aa.setTreatmentType(TREATMENTTYPE);
  441. aa.setNoticeType(NOTICE_TYPE);
  442. aa.setMedicalDeptCode(medicalDeptCode);
  443. aa.setMedicalDeptName(deptName);
  444. aa.setDoctorName(doctorName);
  445. aa.setDoctorId(doctorId);
  446. aa.setPatientId(patientId);
  447. aa.setPatientName(patientName);
  448. aa.setOutpatientNumber(ZYH);
  449. aa.setPrescriptionNumber(prescriptionNumber);
  450. aa.setFeedbackResult("SUCCESS");
  451. aa.setFeedbackCode("0000");
  452. aa.setAuditSource("system(系统)");
  453. aa.setCreateBy("admin");
  454. aa.setCreateTime(new Date());
  455. afterwardsAuditService.save(aa);
  456. return aa;
  457. }
  458. public static void main(String[] args) {
  459. getRandom();
  460. }
  461. private static double getRandom() {
  462. Random a = new Random();
  463. int i = a.nextInt(200) - 80;
  464. double v = a.nextDouble();
  465. System.out.println(i + v);
  466. return i + v;
  467. }
  468. private static double getRandom(Double src) {
  469. Random a = new Random();
  470. if (src.intValue() > 0) {
  471. int i = a.nextInt(src.intValue());
  472. return src - i;
  473. }
  474. return 0;
  475. }
  476. }