From 3a768ab5ef586e564ec412d6d36ecd8939fd728b Mon Sep 17 00:00:00 2001 From: shiyang <316555390@qq.com> Date: Thu, 23 Jun 2022 15:36:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=BB=A6=E5=B9=B3-=E7=BB=9F=E8=AE=A1=E5=B7=A6?= =?UTF-8?q?=E4=BE=A7=E5=AF=BC=E5=87=BA=E9=9C=80=E6=B1=82-=E9=99=A2?= =?UTF-8?q?=E5=86=85=E9=AB=98=E5=8D=B1=E7=BB=9F=E8=AE=A1=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=20=E5=B7=A6=20=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/RiskReportController.java | 18 ++++++++ .../operate/web/facade/RiskReportFacade.java | 54 ++++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/RiskReportController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/RiskReportController.java index 8a70871..03bd0a3 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/RiskReportController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/RiskReportController.java @@ -4,10 +4,13 @@ import com.lyms.platform.common.annotation.TokenRequired; import com.lyms.platform.common.base.BaseController; import com.lyms.platform.common.base.LoginContext; import com.lyms.platform.common.result.BaseResponse; +import com.lyms.platform.common.utils.ExcelUtil; import com.lyms.platform.operate.web.facade.RiskReportFacade; import com.lyms.platform.operate.web.request.RiskBabysQueryRequest; import com.lyms.platform.operate.web.request.RiskPatientsCountRequest; import com.lyms.platform.operate.web.request.RiskPatientsQueryRequest; +import com.lyms.platform.operate.web.result.RiskReportResult; +import com.lyms.platform.operate.web.utils.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @@ -17,6 +20,9 @@ import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.io.OutputStream; +import java.text.DecimalFormat; +import java.util.*; /** @@ -56,6 +62,18 @@ public class RiskReportController extends BaseController { return riskReportFacade.queryRiskReportCount(patientsQueryRequest,loginState.getId()); } + /** + * 院内高危统计报表 左 导出 + * @return + */ + @RequestMapping(method = RequestMethod.GET, value = "/queryRiskReportCountExport") + @ResponseBody + @TokenRequired + public void queryRiskReportCountExport(@Valid RiskPatientsQueryRequest patientsQueryRequest,HttpServletRequest request, HttpServletResponse response) { + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + riskReportFacade.queryRiskReportCountExport(patientsQueryRequest, loginState.getId(),response); + + } /** diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RiskReportFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RiskReportFacade.java index 7a0d65f..c011c56 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RiskReportFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/RiskReportFacade.java @@ -27,6 +27,7 @@ import com.lyms.platform.query.BabyModelQuery; import com.lyms.platform.query.BasicConfigQuery; import com.lyms.platform.query.PatientsQuery; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; @@ -1479,6 +1480,59 @@ public class RiskReportFacade { return hids; } + public void queryRiskReportCountExport(RiskPatientsQueryRequest patientsQueryRequest, Integer id, HttpServletResponse response) { + List datas = queryRiskReportCount(patientsQueryRequest, id).getData(); + List> result=new ArrayList<>(); + Integer count =0; + if(CollectionUtils.isNotEmpty(datas)) { + count+= dataTierSort(datas, "315107bd-91fe-42a1-9237-752f3c046a40", result); + count+= dataTierSort(datas, "49a36aea-c5b6-4162-87d2-9eb3c6ec00c2", result); + count+= dataTierSort(datas, "eb146c03-b19f-4e28-b85f-fda574b2283b", result); + count+= dataTierSort(datas, "224b2329-cb82-4da3-a071-8527f8283aab", result); + //自定义高危 + count+= datas.get(datas.size()-1).getRiskCount(); + result.add(MapUtil.beanToMap(datas.get(datas.size()-1))); + } + try { + response.setContentType("application/octet-stream"); + response.setHeader("Content-Disposition", "attachment;fileName=" + "高危人数统计.xls"); + Map cnames = new LinkedHashMap <>(); + cnames.put("highRisk", "风险因素"); + cnames.put("riskCount", "人次"); + cnames.put("percent", "发病率"); + final Integer finalCount = count; + result.add(new HashMap(){{put("highRisk","合计");put("riskCount", finalCount);}}); + OutputStream out = response.getOutputStream(); + ExcelUtil.toExcel(out, result, cnames); + } catch (IOException e) { + ExceptionUtils.catchException(e, e.getMessage()); + } + + } + //高危分类 + public int dataTierSort(List datas,String riskColor,List> result) { + int count=0; + for (RiskReportResult data : datas) { + //黄色 + if(data.getLevel()==1 && riskColor.equals(data.getHighRiskId())){ + result.add(MapUtil.beanToMap(data)); + count=data.getRiskCount(); + for (RiskReportResult data2 : datas) { + a(data,data2,datas,result); + } + } + } + return count; + } + //层级关系 + public void a(RiskReportResult data,RiskReportResult data2,List datas,List> result){ + if(data.getHighRiskId().equals(data2.getPid())){ + result.add(MapUtil.beanToMap(data2)); + for (RiskReportResult dataN : datas) { + a(data2, dataN,datas,result); + } + } + } //计算占比 -- 1.8.3.1