ConsoleByDeptExportFacade.java 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715
  1. package com.diagbot.facade;
  2. import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.core.metadata.OrderItem;
  6. import com.diagbot.dto.*;
  7. import com.diagbot.entity.SysHospitalSet;
  8. import com.diagbot.exception.CommonErrorCode;
  9. import com.diagbot.exception.CommonException;
  10. import com.diagbot.util.*;
  11. import com.diagbot.vo.*;
  12. import com.fasterxml.jackson.databind.ObjectMapper;
  13. import com.google.common.collect.Lists;
  14. import org.apache.ibatis.annotations.Param;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Component;
  17. import javax.servlet.http.HttpServletResponse;
  18. import java.math.BigDecimal;
  19. import java.util.*;
  20. /**
  21. * @Description: 报表导出装饰层
  22. * @author: gaodm
  23. * @time: 2020/6/18 10:41
  24. */
  25. @Component
  26. public class ConsoleByDeptExportFacade {
  27. @Autowired
  28. private ConsoleByDeptFacade consoleByDeptFacade;
  29. @Autowired
  30. private BehospitalInfoFacade behospitalInfoFacade;
  31. @Autowired
  32. private SysHospitalSetFacade sysHospitalSetFacade;
  33. @Autowired
  34. private FilterFacade filterFacade;
  35. @Autowired
  36. private QcresultInfoFacade qcresultInfoFacade;
  37. /**
  38. * 病案首页合格率占比
  39. *
  40. * @param filterOrderByDeptVO
  41. * @return
  42. */
  43. public void homePageLevelExportByDept(HttpServletResponse response, FilterOrderByDeptVO filterOrderByDeptVO) {
  44. List<HomePageByDeptDTO> res = consoleByDeptFacade.homePageLevelStatisticsByDept(filterOrderByDeptVO);
  45. String fileName = "病案首页合格率占比.xls";
  46. ExcelUtils.exportExcel(res, null, "sheet1", HomePageByDeptDTO.class, fileName, response, 12.8f);
  47. }
  48. /**
  49. * 病案首页不合格/合格数
  50. *
  51. * @param qcResultShortPageVO
  52. * @return
  53. */
  54. public void homePageOrLevelExportByDept(HttpServletResponse response, QcResultShortPageVO qcResultShortPageVO) {
  55. solveParam(qcResultShortPageVO);
  56. qcResultShortPageVO.setCurrent(1L);
  57. qcResultShortPageVO.setSize(Long.MAX_VALUE);
  58. qcResultShortPageVO.setSearchCount(false);
  59. List<ExportExcelByDeptDTO> records = behospitalInfoFacade.homePageOrLevelExportByDept(qcResultShortPageVO);
  60. List<ExportSevenByDeptDTO> resDTO = new ArrayList<ExportSevenByDeptDTO>();
  61. if(ListUtil.isNotEmpty(records)){
  62. ExportSevenByDeptDTO exportByDeptDTO = new ExportSevenByDeptDTO();
  63. exportByDeptDTO.setBehDeptName(records.get(0).getBehDeptName());
  64. exportByDeptDTO.setExportExcelByDeptDTOS(records);
  65. resDTO.add(exportByDeptDTO);
  66. }
  67. List<ExportNinetyByDeptDTO> resWide = new ArrayList<ExportNinetyByDeptDTO>();
  68. if("2".equals(qcResultShortPageVO.getRadioCheck())){
  69. resWide = transList(records, resWide);
  70. }
  71. String fileName = null;
  72. if("不合格数".equals(qcResultShortPageVO.getTitleName())){
  73. fileName = "病案首页不合格数病历详情页.xls";
  74. }else{
  75. fileName = "病案首页合格数病历详情页.xls";
  76. }
  77. if("1".equals(qcResultShortPageVO.getRadioCheck())){
  78. ExcelUtils.exportExcelUser(resDTO, null, "sheet1", ExportSevenByDeptDTO.class, fileName, response);
  79. }
  80. if("2".equals(qcResultShortPageVO.getRadioCheck())){
  81. ExcelUtils.exportExcelUser(resWide, null, "sheet1", ExportNinetyByDeptDTO.class, fileName, response);
  82. }
  83. }
  84. /**
  85. * 缺陷详情-科室(分页)导出
  86. *
  87. * @param filterPageByDeptVO
  88. * @return
  89. */
  90. public void entryGroupExportByDeptPage(HttpServletResponse response,FilterPageByDeptVO filterPageByDeptVO) {
  91. filterFacade.filterPageByDeptVOSet(filterPageByDeptVO);
  92. filterPageByDeptVO.setCurrent(1L);
  93. filterPageByDeptVO.setSize(Long.MAX_VALUE);
  94. filterPageByDeptVO.setSearchCount(false);
  95. IPage<EntryNumGroupDTO> page = qcresultInfoFacade.entryCountGroupByEntryAndDeptPage(filterPageByDeptVO);
  96. String fileName = "缺陷详情.xls";
  97. ExcelUtils.exportExcel(page.getRecords(), null, "sheet1", EntryNumGroupDTO.class, fileName, response, 12.8f);
  98. }
  99. /**
  100. * 各模块缺陷占比导出-科室
  101. *
  102. * @param filterPageByDeptVO
  103. * @return
  104. */
  105. public void entryGroupExportByDeptCase(HttpServletResponse response,FilterPageByDeptVO filterPageByDeptVO) {
  106. filterFacade.filterPageByDeptVOSet(filterPageByDeptVO);
  107. filterPageByDeptVO.setCurrent(1L);
  108. filterPageByDeptVO.setSize(Long.MAX_VALUE);
  109. filterPageByDeptVO.setSearchCount(false);
  110. IPage<NumDTO> page = qcresultInfoFacade.entryCountGroupByCaseAndDeptPage(filterPageByDeptVO);
  111. String fileName = "各模块缺陷详情.xls";
  112. ExcelUtils.exportExcel(page.getRecords(), null, "sheet1", NumDTO.class, fileName, response, 12.8f);
  113. }
  114. /**
  115. * 条目缺陷占比(内页)-科室
  116. *
  117. * @param filterPageByDeptVO
  118. * @return
  119. */
  120. public void entryGroupByEntryDeptPage(HttpServletResponse response,FilterPageByDeptVO filterPageByDeptVO) {
  121. filterFacade.filterPageByDeptVOSet(filterPageByDeptVO);
  122. filterPageByDeptVO.setCurrent(1L);
  123. filterPageByDeptVO.setSize(Long.MAX_VALUE);
  124. filterPageByDeptVO.setSearchCount(false);
  125. IPage<DeptEntryNumDTO> page = qcresultInfoFacade.entryGroupByEntryAndDeptInnerPage(filterPageByDeptVO);
  126. String fileName = "条目缺陷占比详情.xls";
  127. ExcelUtils.exportExcel(page.getRecords(), null, "sheet1", DeptEntryNumDTO.class, fileName, response, 12.8f);
  128. }
  129. /**
  130. * 缺陷详情质控评分页导出-科室
  131. *
  132. * @param qcResultShortPageVO
  133. * @return
  134. */
  135. public void qcResultShortByDeptPageExport(HttpServletResponse response,QcResultShortPageVO qcResultShortPageVO) {
  136. filterFacade.qcResultShortPageVOSet(qcResultShortPageVO);
  137. nineTytime(qcResultShortPageVO);
  138. qcResultShortPageVO.setCurrent(1L);
  139. qcResultShortPageVO.setSize(Long.MAX_VALUE);
  140. qcResultShortPageVO.setSearchCount(false);
  141. List<ExportExcelByDeptDTO> records = behospitalInfoFacade.qcResultShortByDeptPageExport(qcResultShortPageVO);
  142. //带缺陷
  143. List<ExportSevenByDeptDTO> resDTO = new ArrayList<ExportSevenByDeptDTO>();
  144. if(ListUtil.isNotEmpty(records)){
  145. ExportSevenByDeptDTO exportByDeptDTO = new ExportSevenByDeptDTO();
  146. exportByDeptDTO.setBehDeptName(records.get(0).getBehDeptName());
  147. exportByDeptDTO.setExportExcelByDeptDTOS(records);
  148. resDTO.add(exportByDeptDTO);
  149. }
  150. String fileName = "缺陷详情质控评分.xls";
  151. ExcelUtils.exportExcelUser(resDTO, null, "sheet1", ExportSevenByDeptDTO.class, fileName, response);
  152. }
  153. public void nineTytime(QcResultShortPageVO qcResultShortPageVO){
  154. Date startDate = qcResultShortPageVO.getStartDate();
  155. Date endDate = qcResultShortPageVO.getEndDate();
  156. //时间间隔90天
  157. long interval = 90 * 24l * 60l * 60l * 1000l;
  158. if (endDate.getTime() < startDate.getTime()) {
  159. throw new CommonException(CommonErrorCode.PARAM_ERROR, "截止时间不能小于起始时间");
  160. }
  161. if (endDate.getTime() - startDate.getTime() > interval) {
  162. throw new CommonException(CommonErrorCode.PARAM_ERROR, "统计区间不能大于90天");
  163. }
  164. };
  165. /**
  166. * 各科室缺陷占比-科室(组合)
  167. *
  168. * @param filterOrderVO
  169. * @return
  170. */
  171. public void levelByDeptExport(HttpServletResponse response,FilterOrderVO filterOrderVO) {
  172. filterFacade.filterOrderVOSame(filterOrderVO);
  173. List<LevelStsByDeptDTO> records = behospitalInfoFacade.levelStatisticsByDept(filterOrderVO);
  174. if(ListUtil.isNotEmpty(records)){
  175. for (LevelStsByDeptDTO record : records) {
  176. BigDecimalStrExport(record);
  177. }
  178. }
  179. String fileName = "各科室缺陷占比-科室.xls";
  180. ExcelUtils.exportExcel(records, null, "sheet1", LevelStsByDeptDTO.class, fileName, response, 12.8f);
  181. }
  182. /**
  183. * 关键条目缺陷占比统计导出-科室
  184. *
  185. * @param entryStatisticsVO
  186. * @return
  187. */
  188. public void entryStatisticsByDeptExport(HttpServletResponse response,EntryStatisticsVO entryStatisticsVO) {
  189. List<EntryStasByDeptDTO> records = behospitalInfoFacade.entryStatisticsByDept(entryStatisticsVO);
  190. String fileName = "关键条目缺陷占比统计导出.xls";
  191. ExcelUtils.exportExcel(records, null, "sheet1", EntryStasByDeptDTO.class, fileName, response, 12.8f);
  192. }
  193. /**
  194. * 出院人数统计导出-科室
  195. *
  196. * @param qcResultShortPageVO
  197. * @return
  198. */
  199. public void leaveHosMrPageExportByDept(HttpServletResponse response,QcResultShortPageVO qcResultShortPageVO) {
  200. solveParam(qcResultShortPageVO);
  201. qcResultShortPageVO.setCurrent(1L);
  202. qcResultShortPageVO.setSize(Long.MAX_VALUE);
  203. qcResultShortPageVO.setSearchCount(false);
  204. List<ExportExcelByDeptDTO> records = behospitalInfoFacade.leaveHosMRPageExportByDept(qcResultShortPageVO);
  205. List<ExportSevenByDeptDTO> resDTO = new ArrayList<ExportSevenByDeptDTO>();
  206. if(ListUtil.isNotEmpty(records)){
  207. ExportSevenByDeptDTO exportByDeptDTO = new ExportSevenByDeptDTO();
  208. exportByDeptDTO.setBehDeptName(records.get(0).getBehDeptName());
  209. exportByDeptDTO.setExportExcelByDeptDTOS(records);
  210. resDTO.add(exportByDeptDTO);
  211. }
  212. List<ExportNinetyByDeptDTO> resWide = new ArrayList<ExportNinetyByDeptDTO>();
  213. if("2".equals(qcResultShortPageVO.getRadioCheck())){
  214. resWide = transList(records, resWide);
  215. }
  216. String fileName = "出院人数统计.xls";
  217. if("1".equals(qcResultShortPageVO.getRadioCheck())){
  218. ExcelUtils.exportExcelUser(resDTO, null, "sheet1", ExportSevenByDeptDTO.class, fileName, response);
  219. }
  220. if("2".equals(qcResultShortPageVO.getRadioCheck())){
  221. ExcelUtils.exportExcelUser(resWide, null, "sheet1", ExportNinetyByDeptDTO.class, fileName, response);
  222. }
  223. }
  224. /**
  225. * 质控核查统计导出-科室
  226. *
  227. * @param filterOrderVO
  228. * @return
  229. */
  230. public void qcCheckStaExportByDept(HttpServletResponse response, FilterOrderVO filterOrderVO) {
  231. List<ImproveByDeptDTO> record =consoleByDeptFacade.qcCheckStatisticsByDept(filterOrderVO);
  232. ArrayList<ImproveExportByDeptDTO> records = new ArrayList<>();
  233. ImproveExportByDeptDTO improveExportByDeptDTO = new ImproveExportByDeptDTO();
  234. if(ListUtil.isNotEmpty(record)){
  235. improveExportByDeptDTO.setDeptName(filterOrderVO.getDeptName());
  236. improveExportByDeptDTO.setImproveByDeptDTOS(record);
  237. records.add(improveExportByDeptDTO);
  238. }
  239. String fileName = "质控核查统计.xls";
  240. ExcelUtils.exportExcel(records, null, "sheet1", ImproveExportByDeptDTO.class, fileName, response, 12.8f);
  241. }
  242. /**
  243. * 质控核查质控评分页-科室 导出
  244. *
  245. * @param qcResultShortPageVO
  246. * @return
  247. */
  248. public void qcCheckMRPageExportByDept(HttpServletResponse response, QcResultShortPageVO qcResultShortPageVO) {
  249. solveParam(qcResultShortPageVO);
  250. qcResultShortPageVO.setCurrent(1L);
  251. qcResultShortPageVO.setSize(Long.MAX_VALUE);
  252. qcResultShortPageVO.setSearchCount(false);
  253. List<ExportExcelByDeptDTO> records = behospitalInfoFacade.qcCheckMRPageExportByDept(qcResultShortPageVO);
  254. List<ExportSevenByDeptDTO> resDTO = new ArrayList<ExportSevenByDeptDTO>();
  255. if(ListUtil.isNotEmpty(records)){
  256. ExportSevenByDeptDTO exportByDeptDTO = new ExportSevenByDeptDTO();
  257. exportByDeptDTO.setBehDeptName(records.get(0).getBehDeptName());
  258. exportByDeptDTO.setExportExcelByDeptDTOS(records);
  259. resDTO.add(exportByDeptDTO);
  260. }
  261. List<ExportNinetyByDeptDTO> resWide = new ArrayList<ExportNinetyByDeptDTO>();
  262. if("2".equals(qcResultShortPageVO.getRadioCheck())){
  263. resWide = transList(records, resWide);
  264. }
  265. String fileName = "质控核查质控评分详情.xls";
  266. if("1".equals(qcResultShortPageVO.getRadioCheck())){
  267. ExcelUtils.exportExcelUser(resDTO, null, "sheet1", ExportSevenByDeptDTO.class, fileName, response);
  268. }
  269. if("2".equals(qcResultShortPageVO.getRadioCheck())){
  270. ExcelUtils.exportExcelUser(resWide, null, "sheet1", ExportNinetyByDeptDTO.class, fileName, response);
  271. }
  272. }
  273. /**
  274. * 病案首页改善率质控评分页导出-科室
  275. *
  276. * @param qcResultShortPageVO
  277. * @return
  278. */
  279. public void improveMRExportByDept(HttpServletResponse response, QcResultShortPageVO qcResultShortPageVO) {
  280. solveParam(qcResultShortPageVO);
  281. qcResultShortPageVO.setCurrent(1L);
  282. qcResultShortPageVO.setSize(Long.MAX_VALUE);
  283. qcResultShortPageVO.setSearchCount(false);
  284. List<ExportExcelByDeptDTO> records = behospitalInfoFacade.improveMRExportByDept(qcResultShortPageVO);
  285. List<ExportSevenByDeptDTO> resDTO = new ArrayList<ExportSevenByDeptDTO>();
  286. if(ListUtil.isNotEmpty(records)){
  287. ExportSevenByDeptDTO exportByDeptDTO = new ExportSevenByDeptDTO();
  288. exportByDeptDTO.setBehDeptName(records.get(0).getBehDeptName());
  289. exportByDeptDTO.setExportExcelByDeptDTOS(records);
  290. resDTO.add(exportByDeptDTO);
  291. }
  292. List<ExportNinetyByDeptDTO> resWide = new ArrayList<ExportNinetyByDeptDTO>();
  293. if("2".equals(qcResultShortPageVO.getRadioCheck())){
  294. resWide = transList(records, resWide);
  295. }
  296. String fileName = "病案首页改善率质控评分详情.xls";
  297. if("1".equals(qcResultShortPageVO.getRadioCheck())){
  298. ExcelUtils.exportExcelUser(resDTO, null, "sheet1", ExportSevenByDeptDTO.class, fileName, response);
  299. }
  300. if("2".equals(qcResultShortPageVO.getRadioCheck())){
  301. ExcelUtils.exportExcelUser(resWide, null, "sheet1", ExportNinetyByDeptDTO.class, fileName, response);
  302. }
  303. }
  304. /**
  305. * 31天再入院统计导出-科室
  306. *
  307. * @param reBeHosPageVO
  308. * @return
  309. */
  310. public void reHos31DaysPageExportByDept(HttpServletResponse response, ReBeHosPageVO reBeHosPageVO) {
  311. reBeHosPageVO.setSearchCount(false);
  312. reBeHosPageVO.setFlag(1);
  313. IPage<ReBeHosByDeptDTO> page = consoleByDeptFacade.reHos31DaysPageByDept(reBeHosPageVO);
  314. List<ReBeHosByDeptDTO> records = page.getRecords();
  315. String fileName = "31天再入院统计详情.xls";
  316. ExcelUtils.exportExcel(records, null, "sheet1", ReBeHosByDeptDTO.class, fileName, response);
  317. }
  318. /**
  319. * 未整改病历详情页导出-科室
  320. *
  321. * @param qcResultShortPageVO
  322. * @return
  323. */
  324. public void unModifyExportByDept(HttpServletResponse response, QcResultShortPageVO qcResultShortPageVO) {
  325. solveParam(qcResultShortPageVO);
  326. qcResultShortPageVO.setCurrent(1L);
  327. qcResultShortPageVO.setSize(Long.MAX_VALUE);
  328. qcResultShortPageVO.setSearchCount(false);
  329. List<ExportExcelByDeptDTO> records = behospitalInfoFacade.unModifyExportByDept(qcResultShortPageVO);
  330. String fileName = "未整改病历详情页.xls";
  331. ExcelUtils.exportExcelUser(records, null, "sheet1", ExportExcelByDeptDTO.class, fileName, response);
  332. }
  333. /**
  334. * 稽查统计导出-科室
  335. *
  336. * @param filterVO
  337. * @return
  338. */
  339. public void medicalCheckExportByDept(HttpServletResponse response, FilterMedicalCheckVO filterVO) {
  340. filterVO.setCurrent(1L);
  341. filterVO.setSize(Long.MAX_VALUE);
  342. filterVO.setSearchCount(false);
  343. String fileName = null;
  344. if ( "1".equals(filterVO.getIsPlacefile())) {
  345. fileName = "终末病历稽查表.xls";
  346. } else {
  347. fileName = "运行病历稽查表.xls";
  348. }
  349. List<MedicalDeptDTO> records = consoleByDeptFacade.medicalCheckExportByDept(filterVO);
  350. ExcelUtils.exportExcel(records, null, "sheet1", MedicalDeptDTO.class, fileName, response, 15.8f);
  351. }
  352. /**
  353. * 病历质控报表-科室-导出
  354. *
  355. * @param behospitalPageVO
  356. * @return
  357. */
  358. public void qualityControlExportByDept(HttpServletResponse response, BehospitalPageVO behospitalPageVO) {
  359. behospitalPageVO.setCurrent(1L);
  360. behospitalPageVO.setSize(Long.MAX_VALUE);
  361. behospitalPageVO.setSearchCount(false);
  362. Date startDate = behospitalPageVO.getLeaveHosDateStart();
  363. Date endDate = behospitalPageVO.getLeaveHosDateEnd();
  364. // orderMethod(behospitalPageVO);
  365. //时间间隔30天
  366. long interval = 30 * 24l * 60l * 60l * 1000l;
  367. if (endDate.getTime() < startDate.getTime()) {
  368. throw new CommonException(CommonErrorCode.PARAM_ERROR, "截止时间不能小于起始时间");
  369. }
  370. if (endDate.getTime() - startDate.getTime() > interval) {
  371. throw new CommonException(CommonErrorCode.PARAM_ERROR, "统计区间不能大于30天");
  372. }
  373. String fileName = "病历质控报表.xls";
  374. IPage<QualityControlDeptDTO> records = consoleByDeptFacade.qualityControlByDept(behospitalPageVO);
  375. ExcelUtils.exportExcel(records.getRecords(), "病历质控报表", "sheet1", QualityControlDeptDTO.class, fileName, response, 26.8f);
  376. }
  377. static void orderMethod(BehospitalPageVO behospitalPageVO){
  378. List orders = behospitalPageVO.getOrders();
  379. Boolean flag = false;
  380. List<OrderItem> itemList = new ArrayList<>();
  381. List<OrderItem> targetItemList = new ArrayList<>();
  382. for (Object order : orders) {
  383. ObjectMapper objectMapper = new ObjectMapper();
  384. OrderItem orderName = objectMapper.convertValue(order, OrderItem.class);
  385. itemList.add(orderName);
  386. if(!(orderName.getColumn().equals("deptName")||orderName.getColumn().equals("doctorName"))){
  387. flag = true;
  388. }
  389. }
  390. //科室、医生作为第一升序排列,传入排序随后 配合excel注解属性mergeVertical处理科室合并
  391. OrderItem orderDept = new OrderItem();
  392. orderDept.setAsc(true);
  393. orderDept.setColumn("deptName");
  394. targetItemList.add(orderDept);
  395. OrderItem orderDoctor = new OrderItem();
  396. orderDoctor.setAsc(true);
  397. orderDoctor.setColumn("doctorName");
  398. targetItemList.add(orderDoctor);
  399. if(flag){
  400. if(itemList.size()==1){
  401. targetItemList.add(itemList.get(0));
  402. }
  403. }
  404. behospitalPageVO.setOrders(targetItemList);
  405. };
  406. /**
  407. * 未整改病历统计导出-科室
  408. *
  409. * @param response
  410. * @param filterUnModifyMRVO
  411. */
  412. public void unModifyMRSExportByDept(HttpServletResponse response, FilterUnModifyMRVO filterUnModifyMRVO) {
  413. filterFacade.filterUnModifyMRVOSet(filterUnModifyMRVO);
  414. List<ExcelExportEntity> colList = Lists.newLinkedList();
  415. ExcelExportEntity deptNameCol = new ExcelExportEntity("主管医生", "doctorName");
  416. deptNameCol.setWidth(50);
  417. colList.add(deptNameCol);
  418. QueryWrapper<SysHospitalSet> hospitalSetQueryWrapper = new QueryWrapper<>();
  419. hospitalSetQueryWrapper.eq("is_deleted", 'N')
  420. .eq("hospital_id", filterUnModifyMRVO.getHospitalId())
  421. .eq("code", "unmodify_mr_entry");
  422. SysHospitalSet hospitalSet = sysHospitalSetFacade.getOne(hospitalSetQueryWrapper);
  423. //缺陷条目未维护
  424. if (hospitalSet == null || StringUtil.isBlank(hospitalSet.getValue())) {
  425. throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "未整改病历条目未设置");
  426. }
  427. List<String> columnSet = Arrays.asList(hospitalSet.getValue().split(","));
  428. for (String valueStr : columnSet) {
  429. if (StringUtil.isBlank(valueStr)) {
  430. continue;
  431. }
  432. String[] keyValue = valueStr.split("--");
  433. if (keyValue != null || keyValue.length > 1) {
  434. ExcelExportEntity entryCol = new ExcelExportEntity(keyValue[1], "entry_" + keyValue[0] + "_num");
  435. entryCol.setWidth(20);
  436. colList.add(entryCol);
  437. }
  438. }
  439. UnModifyMRDTO unModifyMRDTO = consoleByDeptFacade.unModifyMRSByDept(filterUnModifyMRVO);
  440. List<Object> data = Lists.newLinkedList();
  441. if (unModifyMRDTO != null && ListUtil.isNotEmpty(unModifyMRDTO.getData())) {
  442. data = unModifyMRDTO.getData();
  443. }
  444. String fileName = "未整改病历统计.xls";
  445. ExcelUtils.exportExcelDynamicCol(colList, data, null, "sheet1", fileName, response);
  446. }
  447. public void solveParam(QcResultShortPageVO qcResultShortPageVO){
  448. String hospitalId = SysUserUtils.getCurrentHospitalID();
  449. String userId = SysUserUtils.getCurrentPrincipleID();
  450. qcResultShortPageVO.setHospitalId(hospitalId);
  451. qcResultShortPageVO.setUserId(Long.valueOf(userId));
  452. Date startDate = qcResultShortPageVO.getStartDate();
  453. Date endDate = qcResultShortPageVO.getEndDate();
  454. //时间间隔7天
  455. long interval_7 = 7 * 24 * 60 * 60 * 1000;
  456. long interval_90 = 90 * 24 * 60 * 60 * 1000l;
  457. if("1".equals(qcResultShortPageVO.getRadioCheck())){
  458. //时间间隔7天
  459. if (endDate.getTime() < startDate.getTime()) {
  460. throw new CommonException(CommonErrorCode.PARAM_ERROR, "截止时间不能小于起始时间");
  461. }
  462. if (endDate.getTime() - startDate.getTime() > interval_7) {
  463. throw new CommonException(CommonErrorCode.PARAM_ERROR, "统计区间不能大于7天");
  464. }
  465. }else{
  466. //时间间隔90天
  467. if (endDate.getTime() < startDate.getTime()) {
  468. throw new CommonException(CommonErrorCode.PARAM_ERROR, "截止时间不能小于起始时间");
  469. }
  470. if (endDate.getTime() - startDate.getTime() > interval_90) {
  471. throw new CommonException(CommonErrorCode.PARAM_ERROR, "统计区间不能大于90天");
  472. }
  473. }
  474. }
  475. public List<ExportNinetyByDeptDTO> transList(List<ExportExcelByDeptDTO>res, List<ExportNinetyByDeptDTO>resWide){
  476. if(ListUtil.isNotEmpty(res)){
  477. ExportNinetyByDeptDTO exportNinetyByDeptDTO = new ExportNinetyByDeptDTO();
  478. List<ExportWideExcelByDeptDTO>exportWideExcelByDeptDTOs = new ArrayList<ExportWideExcelByDeptDTO>();
  479. res.forEach(exportExcelByDeptDTO->{
  480. ExportWideExcelByDeptDTO exportWideExcelByDeptDTO = new ExportWideExcelByDeptDTO();
  481. exportWideExcelByDeptDTO.setAvgScore(exportExcelByDeptDTO.getAvgScore());
  482. exportNinetyByDeptDTO.setBehDeptName( exportExcelByDeptDTO.getBehDeptName());
  483. exportWideExcelByDeptDTO.setDoctorName(exportExcelByDeptDTO.getDoctorName());
  484. List<ExportExcelBehByDeptDTO> exportExcelBehByDeptDTOS = exportExcelByDeptDTO.getExcelBehospitalDTOS();
  485. List<ExportExcelWideBehByDeptDTO> exportExcelWideBehByDepDTOs = new ArrayList<>();
  486. exportExcelBehByDeptDTOS.forEach(exportExcelBehByDeptDTO->{
  487. ExportExcelWideBehByDeptDTO exportExcelWideBehByDeptDTO = new ExportExcelWideBehByDeptDTO();
  488. exportExcelWideBehByDeptDTO.setBehospitalCode(exportExcelBehByDeptDTO.getBehospitalCode());
  489. exportExcelWideBehByDeptDTO.setBehospitalDate(exportExcelBehByDeptDTO.getBehospitalDate());
  490. exportExcelWideBehByDeptDTO.setLeaveHospitalDate(exportExcelBehByDeptDTO.getLeaveHospitalDate());
  491. exportExcelWideBehByDeptDTO.setPatName(exportExcelBehByDeptDTO.getPatName());
  492. exportExcelWideBehByDeptDTO.setScore(exportExcelBehByDeptDTO.getScore());
  493. exportExcelWideBehByDeptDTO.setScoreBn(exportExcelBehByDeptDTO.getScoreBn());
  494. exportExcelWideBehByDepDTOs.add(exportExcelWideBehByDeptDTO);
  495. });
  496. exportWideExcelByDeptDTO.setExcelBehospitalDTOS(exportExcelWideBehByDepDTOs);
  497. exportWideExcelByDeptDTOs.add(exportWideExcelByDeptDTO);
  498. });
  499. exportNinetyByDeptDTO.setExportExcelByDeptDTOS(exportWideExcelByDeptDTOs);
  500. resWide.add(exportNinetyByDeptDTO);
  501. }
  502. return resWide;
  503. }
  504. public void BigDecimalStrExport(LevelStsByDeptDTO record){
  505. BigDecimal entrySameBigDecimal = getSubtract(new BigDecimal(record.getEntryNum()), new BigDecimal(record.getSameNum() == null? 0:record.getSameNum()));
  506. if(entrySameBigDecimal.compareTo(BigDecimal.ZERO)>0){
  507. record.setEntryStrNum(record.getEntryNum()+"↑");
  508. }else if(entrySameBigDecimal.compareTo(BigDecimal.ZERO) <0){
  509. record.setEntryStrNum(record.getEntryNum()+"↓");
  510. }
  511. BigDecimal sameMrNumBigDecimal = getSubtract(new BigDecimal(record.getMrNum()), new BigDecimal(record.getSameMrNum() == null? 0:record.getSameMrNum()));
  512. if(sameMrNumBigDecimal.compareTo(BigDecimal.ZERO)>0){
  513. record.setMrStrNum(record.getMrNum()+"↑");
  514. }else if(sameMrNumBigDecimal.compareTo(BigDecimal.ZERO) <0){
  515. record.setMrStrNum(record.getMrNum()+"↓");
  516. }
  517. BigDecimal sameAvgValueDecimal = getSubtract(new BigDecimal(record.getAverageValue()), new BigDecimal(record.getSameAvgValue() == null? 0:record.getSameAvgValue()));
  518. if(sameAvgValueDecimal.compareTo(BigDecimal.ZERO)>0){
  519. record.setAverageStrValue(record.getAverageValue()+"↑");
  520. }else if(sameAvgValueDecimal.compareTo(BigDecimal.ZERO) <0){
  521. record.setAverageStrValue(record.getAverageValue()+"↓");
  522. }
  523. BigDecimal SameFirstLevelBigDecimal = getSubtract(new BigDecimal(record.getFirstLevelNum()), new BigDecimal(record.getSameFirstLevelNum() == null? 0:record.getSameFirstLevelNum()));
  524. if(SameFirstLevelBigDecimal.compareTo(BigDecimal.ZERO)>0){
  525. record.setFirstLevelStrNum(record.getFirstLevelNum()+"↑");
  526. }else if(SameFirstLevelBigDecimal.compareTo(BigDecimal.ZERO) <0){
  527. record.setFirstLevelStrNum(record.getFirstLevelNum()+"↓");
  528. }
  529. BigDecimal SameSecondLevelBigDecimal = getSubtract(new BigDecimal(record.getSecondLevelNum()), new BigDecimal(record.getSameSecondLevelNum() == null? 0:record.getSameSecondLevelNum()));
  530. if(SameSecondLevelBigDecimal.compareTo(BigDecimal.ZERO)>0){
  531. record.setSecondLevelStrNum(record.getSecondLevelNum()+"↑");
  532. }else if(SameSecondLevelBigDecimal.compareTo(BigDecimal.ZERO) <0){
  533. record.setSecondLevelStrNum(record.getSecondLevelNum()+"↓");
  534. }
  535. BigDecimal SameThirdLevelBigDecimal = getSubtract(new BigDecimal(record.getThirdLevelNum()), new BigDecimal(record.getSameThirdLevelNum() == null? 0:record.getSameThirdLevelNum()));
  536. if(SameThirdLevelBigDecimal.compareTo(BigDecimal.ZERO)>0){
  537. record.setThirdLevelStrNum(record.getThirdLevelNum()+"↑");
  538. }else if(SameThirdLevelBigDecimal.compareTo(BigDecimal.ZERO) <0){
  539. record.setThirdLevelStrNum(record.getThirdLevelNum()+"↓");
  540. }
  541. BigDecimal SameFirstLevelPeDecimal = getSubtract(new BigDecimal(record.getFirstLevelPercent()), new BigDecimal(record.getSameFirstLevelPercent() == null? 0:record.getSameFirstLevelPercent()));
  542. if(SameFirstLevelPeDecimal.compareTo(BigDecimal.ZERO)>0){
  543. record.setFirstLevelPercentStr(record.getFirstLevelPercentStr()+"↑");
  544. }else if(SameFirstLevelPeDecimal.compareTo(BigDecimal.ZERO) <0){
  545. record.setFirstLevelPercentStr(record.getFirstLevelPercentStr()+"↓");
  546. }
  547. BigDecimal SameSecondLevelPeDecimal = getSubtract(new BigDecimal(record.getSecondLevelPercent()), new BigDecimal(record.getSameSecondLevelPercent() == null? 0:record.getSameSecondLevelPercent()));
  548. if(SameSecondLevelPeDecimal.compareTo(BigDecimal.ZERO)>0){
  549. record.setSecondLevelPercentStr(record.getSecondLevelPercentStr()+"↑");
  550. }else if(SameSecondLevelPeDecimal.compareTo(BigDecimal.ZERO)<0){
  551. record.setSecondLevelPercentStr(record.getSecondLevelPercentStr()+"↓");
  552. }
  553. BigDecimal SameThirdLevelPeDecimal = getSubtract(new BigDecimal(record.getThirdLevelPercent()), new BigDecimal(record.getSameThirdLevelPercent() == null? 0:record.getSameThirdLevelPercent()));
  554. if(SameThirdLevelPeDecimal.compareTo(BigDecimal.ZERO)>0){
  555. record.setThirdLevelPercentStr(record.getThirdLevelPercentStr()+"↑");
  556. }else if(SameThirdLevelPeDecimal.compareTo(BigDecimal.ZERO) <0){
  557. record.setThirdLevelPercentStr(record.getThirdLevelPercentStr()+"↓");
  558. }
  559. };
  560. public void BigDecimalMethod(LevelStatisticsDTO record){
  561. BigDecimal entrySameBigDecimal = getSubtract(new BigDecimal(record.getEntryNum()), new BigDecimal(record.getSameNum() == null? 0:record.getSameNum()));
  562. if(entrySameBigDecimal.compareTo(BigDecimal.ZERO)>0){
  563. record.setEntrySameNum(1);
  564. }else if(entrySameBigDecimal.compareTo(BigDecimal.ZERO) == 0){
  565. record.setEntrySameNum(0);
  566. }else{
  567. record.setEntrySameNum(-1);
  568. }
  569. BigDecimal sameMrNumBigDecimal = getSubtract(new BigDecimal(record.getMrNum()), new BigDecimal(record.getSameMrNum() == null? 0:record.getSameMrNum()));
  570. if(sameMrNumBigDecimal.compareTo(BigDecimal.ZERO)>0){
  571. record.setMrSameNum(1);
  572. }else if(sameMrNumBigDecimal.compareTo(BigDecimal.ZERO) == 0){
  573. record.setMrSameNum(0);
  574. }else{
  575. record.setMrSameNum(-1);
  576. }
  577. BigDecimal sameAvgValueDecimal = getSubtract(new BigDecimal(record.getAverageValue()), new BigDecimal(record.getSameAvgValue() == null? 0:record.getSameAvgValue()));
  578. if(sameAvgValueDecimal.compareTo(BigDecimal.ZERO)>0){
  579. record.setAvSameValue(1);
  580. }else if(sameAvgValueDecimal.compareTo(BigDecimal.ZERO) == 0){
  581. record.setAvSameValue(0);
  582. }else{
  583. record.setAvSameValue(-1);
  584. }
  585. BigDecimal SameFirstLevelBigDecimal = getSubtract(new BigDecimal(record.getFirstLevelNum()), new BigDecimal(record.getSameFirstLevelNum() == null? 0:record.getSameFirstLevelNum()));
  586. if(SameFirstLevelBigDecimal.compareTo(BigDecimal.ZERO)>0){
  587. record.setFirSameLevelNum(1);
  588. }else if(SameFirstLevelBigDecimal.compareTo(BigDecimal.ZERO) == 0){
  589. record.setFirSameLevelNum(0);
  590. }else{
  591. record.setFirSameLevelNum(-1);
  592. }
  593. BigDecimal SameSecondLevelBigDecimal = getSubtract(new BigDecimal(record.getSecondLevelNum()), new BigDecimal(record.getSameSecondLevelNum() == null? 0:record.getSameSecondLevelNum()));
  594. if(SameSecondLevelBigDecimal.compareTo(BigDecimal.ZERO)>0){
  595. record.setSecSameLevelNum(1);
  596. }else if(SameSecondLevelBigDecimal.compareTo(BigDecimal.ZERO) == 0){
  597. record.setSecSameLevelNum(0);
  598. }else{
  599. record.setSecSameLevelNum(-1);
  600. }
  601. BigDecimal SameThirdLevelBigDecimal = getSubtract(new BigDecimal(record.getThirdLevelNum()), new BigDecimal(record.getSameThirdLevelNum() == null? 0:record.getSameThirdLevelNum()));
  602. if(SameThirdLevelBigDecimal.compareTo(BigDecimal.ZERO)>0){
  603. record.setThiSameLevelNum(1);
  604. }else if(SameThirdLevelBigDecimal.compareTo(BigDecimal.ZERO) == 0){
  605. record.setThiSameLevelNum(0);
  606. }else{
  607. record.setThiSameLevelNum(-1);
  608. }
  609. BigDecimal SameFirstLevelPeDecimal = getSubtract(new BigDecimal(record.getFirstLevelPercent()), new BigDecimal(record.getSameFirstLevelPercent() == null? 0:record.getSameFirstLevelPercent()));
  610. if(SameFirstLevelPeDecimal.compareTo(BigDecimal.ZERO)>0){
  611. record.setFirSameLevelPercent(1);
  612. }else if(SameFirstLevelPeDecimal.compareTo(BigDecimal.ZERO) == 0){
  613. record.setFirSameLevelPercent(0);
  614. }else{
  615. record.setFirSameLevelPercent(-1);
  616. }
  617. BigDecimal SameSecondLevelPeDecimal = getSubtract(new BigDecimal(record.getSecondLevelPercent()), new BigDecimal(record.getSameSecondLevelPercent() == null? 0:record.getSameSecondLevelPercent()));
  618. if(SameSecondLevelPeDecimal.compareTo(BigDecimal.ZERO)>0){
  619. record.setSecSameLevelPercent(1);
  620. }else if(SameSecondLevelPeDecimal.compareTo(BigDecimal.ZERO) == 0){
  621. record.setSecSameLevelPercent(0);
  622. }else{
  623. record.setSecSameLevelPercent(-1);
  624. }
  625. BigDecimal SameThirdLevelPeDecimal = getSubtract(new BigDecimal(record.getThirdLevelPercent()), new BigDecimal(record.getSameThirdLevelPercent() == null? 0:record.getSameThirdLevelPercent()));
  626. if(SameThirdLevelPeDecimal.compareTo(BigDecimal.ZERO)>0){
  627. record.setThiSameLevelPercent(1);
  628. }else if(SameThirdLevelPeDecimal.compareTo(BigDecimal.ZERO) == 0){
  629. record.setThiSameLevelPercent(0);
  630. }else{
  631. record.setThiSameLevelPercent(-1);
  632. }
  633. };
  634. /**
  635. * 差值计算
  636. *
  637. * @param bigDecimalOne
  638. * @param bigDecimalTwo
  639. * @return
  640. */
  641. private BigDecimal getSubtract(BigDecimal bigDecimalOne, BigDecimal bigDecimalTwo) {
  642. BigDecimal newBigDecimal = new BigDecimal(0);
  643. if (null == bigDecimalOne && null != bigDecimalTwo) {
  644. newBigDecimal = newBigDecimal.subtract(bigDecimalTwo);
  645. } else if (null != bigDecimalOne && null == bigDecimalTwo) {
  646. newBigDecimal = bigDecimalOne.subtract(newBigDecimal);
  647. } else if (null != bigDecimalOne && null != bigDecimalTwo) {
  648. newBigDecimal = bigDecimalOne.subtract(bigDecimalTwo);
  649. }
  650. return newBigDecimal;
  651. }
  652. }