ConsoleByDeptExportFacade.java 30 KB

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