From 799840fed6f5a185a39ede625fd4c46204356169 Mon Sep 17 00:00:00 2001 From: hujiaqi Date: Mon, 16 Jan 2017 16:21:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BB=BA=E6=A1=A3=E6=9D=A5=E6=BA=90=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BabyStatisticsManagerController.java | 25 ++++ .../web/facade/BabyStatisticsManagerFacade.java | 144 +++++++++++++++++++++ ...abyStatisticsManagerBuildSourceListRequest.java | 39 ++++++ .../lyms/platform/operate/web/utils/JdbcUtil.java | 41 ++++++ 4 files changed, 249 insertions(+) create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyStatisticsManagerBuildSourceListRequest.java diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyStatisticsManagerController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyStatisticsManagerController.java index 9b8d1b5..eda015f 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyStatisticsManagerController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyStatisticsManagerController.java @@ -292,4 +292,29 @@ public class BabyStatisticsManagerController extends BaseController { } } + /** + * @auther HuJiaqi + * @createTime 2017年01月16日 13时54分 + * @discription 建档来源统计 + */ + @TokenRequired + @ResponseBody + @RequestMapping(value = "BabyStatisticsManagerBuildSourceList", method = RequestMethod.POST, consumes = "application/json") + public BaseListResponse BabyStatisticsManagerBuildSourceList(HttpServletRequest httpServletRequest, @RequestBody BabyStatisticsManagerBuildSourceListRequest babyStatisticsManagerBuildSourceListRequest) { + BaseListResponse baseListResponse; + try { + babyStatisticsManagerBuildSourceListRequest.setOperatorId(((LoginContext) httpServletRequest.getAttribute("loginContext")).getId()); + BabyStatisticsManagerBuildSourceListResult babyStatisticsManagerBuildSourceListResult = babyStatisticsManagerFacade.babyStatisticsManagerBuildSourceList(babyStatisticsManagerBuildSourceListRequest); + if (babyStatisticsManagerBuildSourceListResult.getErrorcode() != ErrorCodeConstants.SUCCESS) { + baseListResponse = new BaseListResponse().setErrorcode(babyStatisticsManagerBuildSourceListResult.getErrorcode()).setErrormsg(babyStatisticsManagerBuildSourceListResult.getErrormsg()); + return baseListResponse; + } + baseListResponse = new BaseListResponse().setErrorcode(babyStatisticsManagerBuildSourceListResult.getErrorcode()).setErrormsg(babyStatisticsManagerBuildSourceListResult.getErrormsg()).setData(babyStatisticsManagerBuildSourceListResult.getData()).setPageInfo(babyStatisticsManagerBuildSourceListResult.getPageInfo()); + } catch (Exception e) { + baseListResponse = new BaseListResponse().setErrorcode(ErrorCodeConstants.SYSTEM_ERROR).setErrormsg(ErrorCodeConstants.SYSTEM_ERROR_DESCRIPTION); + ExceptionUtils.catchException(e, "BabyStatisticsManagerBuildSourceList异常"); + } + return baseListResponse; + } + } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyStatisticsManagerFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyStatisticsManagerFacade.java index e97a81c..7c34fc1 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyStatisticsManagerFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyStatisticsManagerFacade.java @@ -10,6 +10,7 @@ import com.lyms.platform.common.utils.DateUtil; import com.lyms.platform.common.utils.JsonUtil; import com.lyms.platform.operate.web.request.*; import com.lyms.platform.operate.web.result.*; +import com.lyms.platform.operate.web.utils.JdbcUtil; import com.lyms.platform.permission.service.UsersService; import com.lyms.platform.pojo.BabyCheckModel; import com.lyms.platform.pojo.BabyModel; @@ -42,6 +43,9 @@ public class BabyStatisticsManagerFacade { @Autowired private BabyCheckService babyCheckService; + @Autowired + private AutoMatchFacade autoMatchFacade; + public BabyStatisticsManagerBuildDoctorGroupResult babyStatisticsManagerBuildDoctorGroup(BabyStatisticsManagerBuildDoctorGroupRequest babyStatisticsManagerBuildDoctorGroupRequest) { BabyStatisticsManagerBuildDoctorGroupResult babyStatisticsManagerBuildDoctorGroupResult = new BabyStatisticsManagerBuildDoctorGroupResult(); @@ -483,4 +487,144 @@ public class BabyStatisticsManagerFacade { babyStatisticsManagerWeekAgeListResult.setErrormsg(ErrorCodeConstants.SUCCESS_DESCRIPTION); return babyStatisticsManagerWeekAgeListResult; } + + public BabyStatisticsManagerBuildSourceListResult babyStatisticsManagerBuildSourceList(BabyStatisticsManagerBuildSourceListRequest babyStatisticsManagerBuildSourceListRequest) { + BabyStatisticsManagerBuildSourceListResult babyStatisticsManagerBuildSourceListResult = new BabyStatisticsManagerBuildSourceListResult(); + + List babyStatisticsManagerBuildSourceListQueryModelList = new ArrayList<>(); + + String hospitalId; + try { + hospitalId = autoMatchFacade.getHospitalId(babyStatisticsManagerBuildSourceListRequest.getOperatorId()); + } catch (Exception e) { + babyStatisticsManagerBuildSourceListResult.setErrorcode(ErrorCodeConstants.SYSTEM_ERROR); + babyStatisticsManagerBuildSourceListResult.setErrormsg("获取当前医院异常"); + return babyStatisticsManagerBuildSourceListResult; + } + + String buildDateStart = null; + String buildDateEnd = null; + if (StringUtils.isNotEmpty(babyStatisticsManagerBuildSourceListRequest.getBuildDate())) { + buildDateStart = DateUtil.getyyyy_MM_dd(DateUtil.getSNDate(babyStatisticsManagerBuildSourceListRequest.getBuildDate())[0]); + buildDateEnd = DateUtil.getyyyy_MM_dd(DateUtil.getSNDate(babyStatisticsManagerBuildSourceListRequest.getBuildDate())[1]); + } + + String sql = + "SELECT B.PROVINCE_ID," + + "B.PROVINCE," + + "B.CITY_ID," + + "B.CITY," + + "B.AREA_COUNTY_ID," + + "B.AREA_COUNTY," + + "B.HOSPITAL_NO," + + "B.HOSPITAL_NAME," + + "A.CHILD_CATEGORY_ID," + + "A.CHILD_CATEGORY," + + "(CASE WHEN A.BIRTH_HOSPITAL_NO=A.HOSPITAL_NO THEN '本院分娩'" + + "WHEN A.BIRTH_HOSPITAL_NO<>A.HOSPITAL_NO AND A.BIRTH_HOSPITAL_NO IS NOT NULL THEN '外院分娩'" + + "WHEN A.BIRTH_HOSPITAL_NO IS NULL THEN '未知'" + + "END) AS LB_NAME," + + "COUNT(*) AS CNT" + + "FROM ODS_F_INFANT_RECORD A" + + "INNER JOIN ODS_D_HOSPITAL B ON A.HOSPITAL_NO=B.HOSPITAL_NO" + + // 医院,判断本院外院使用 + "WHERE B.HOSPITAL_NO=" + hospitalId; + // 这三个查询条件暂时没用,直接注释掉 + // "AND B.PROVINCE_ID=" + + // "AND B.CITY_ID=" + + // "AND B.AREA_COUNTY_ID=" + if (StringUtils.isNotEmpty(babyStatisticsManagerBuildSourceListRequest.getBuildDate())) { + sql += "AND A.INSERT_DATE BETWEEN" + buildDateStart + " AND" + buildDateEnd; + } + sql += "GROUP BY" + + "B.PROVINCE_ID," + + "B.PROVINCE," + + "B.CITY_ID," + + "B.CITY," + + "B.AREA_COUNTY_ID," + + "B.AREA_COUNTY," + + "B.HOSPITAL_NO," + + "B.HOSPITAL_NAME," + + "A.CHILD_CATEGORY_ID," + + "A.CHILD_CATEGORY," + + "(CASE WHEN A.BIRTH_HOSPITAL_NO=A.HOSPITAL_NO THEN '本院分娩'" + + "WHEN A.BIRTH_HOSPITAL_NO<>A.HOSPITAL_NO AND A.BIRTH_HOSPITAL_NO IS NOT NULL THEN '外院分娩'" + + "WHEN A.BIRTH_HOSPITAL_NO IS NULL THEN '未知'" + + "END)"; + // jdbc查oracle + List> list = JdbcUtil.getOracleListDataBySql("com.mysql.jdbc.Driver", "jdbc:oracle:thin:@127.0.0.1:1521:orcl", "LYMS_ODS", "Welcome1", sql); + + // 构造返回list,这里写死的4条,因为高帆说只有4条 + BabyStatisticsManagerBuildSourceListQueryModel babyStatisticsManagerBuildSourceListQueryModel1 = new BabyStatisticsManagerBuildSourceListQueryModel(); + babyStatisticsManagerBuildSourceListQueryModel1.setLbName("本院分娩"); + Integer buildCnt1 = 0; + Integer highRiskCnt1 = 0; + String highRiskPercent1 = "-"; + BabyStatisticsManagerBuildSourceListQueryModel babyStatisticsManagerBuildSourceListQueryModel2 = new BabyStatisticsManagerBuildSourceListQueryModel(); + babyStatisticsManagerBuildSourceListQueryModel1.setLbName("外院分娩"); + Integer buildCnt2 = 0; + Integer highRiskCnt2 = 0; + String highRiskPercent2 = "-"; + BabyStatisticsManagerBuildSourceListQueryModel babyStatisticsManagerBuildSourceListQueryModel3 = new BabyStatisticsManagerBuildSourceListQueryModel(); + babyStatisticsManagerBuildSourceListQueryModel1.setLbName("未知"); + Integer buildCnt3 = 0; + Integer highRiskCnt3 = 0; + String highRiskPercent3 = "-"; + BabyStatisticsManagerBuildSourceListQueryModel babyStatisticsManagerBuildSourceListQueryModel4 = new BabyStatisticsManagerBuildSourceListQueryModel(); + babyStatisticsManagerBuildSourceListQueryModel1.setLbName("总计"); + Integer buildCnt4 = 0; + Integer highRiskCnt4 = 0; + String highRiskPercent4 = "-"; + if (CollectionUtils.isNotEmpty(list)) { + for (Map map : list) { + if ("本院分娩".equals(map.get("lbName"))) { + buildCnt1 += Integer.valueOf(map.get("cnt").toString()); + if ("2".equals(map.get("childCategoryId"))) { + highRiskCnt1 += Integer.valueOf(map.get("cnt").toString()); + } + } else if ("外院分娩".equals(map.get("lbName"))) { + buildCnt2 += Integer.valueOf(map.get("cnt").toString()); + if ("2".equals(map.get("childCategoryId"))) { + highRiskCnt2 += Integer.valueOf(map.get("cnt").toString()); + } + } else if ("未知".equals(map.get("lbName"))) { + buildCnt3 += Integer.valueOf(map.get("cnt").toString()); + if ("2".equals(map.get("childCategoryId"))) { + highRiskCnt3 += Integer.valueOf(map.get("cnt").toString()); + } + } + // 总计 + buildCnt4 += Integer.valueOf(map.get("cnt").toString()); + if ("2".equals(map.get("childCategoryId"))) { + highRiskCnt4 += Integer.valueOf(map.get("cnt").toString()); + } + } + highRiskPercent1 = Math.round((double) highRiskCnt1 * 1000 / (double) buildCnt1) / 10.0 + "%"; + highRiskPercent2 = Math.round((double) highRiskCnt2 * 1000 / (double) buildCnt2) / 10.0 + "%"; + highRiskPercent3 = Math.round((double) highRiskCnt3 * 1000 / (double) buildCnt3) / 10.0 + "%"; + highRiskPercent4 = Math.round((double) highRiskCnt4 * 1000 / (double) buildCnt4) / 10.0 + "%"; + } + babyStatisticsManagerBuildSourceListQueryModel1.setBuildCnt(buildCnt1.toString()); + babyStatisticsManagerBuildSourceListQueryModel1.setHighRiskCnt(highRiskCnt1.toString()); + babyStatisticsManagerBuildSourceListQueryModel1.setHighRiskPercent(highRiskPercent1); + babyStatisticsManagerBuildSourceListQueryModel2.setBuildCnt(buildCnt2.toString()); + babyStatisticsManagerBuildSourceListQueryModel2.setHighRiskCnt(highRiskCnt2.toString()); + babyStatisticsManagerBuildSourceListQueryModel2.setHighRiskPercent(highRiskPercent2); + babyStatisticsManagerBuildSourceListQueryModel3.setBuildCnt(buildCnt3.toString()); + babyStatisticsManagerBuildSourceListQueryModel3.setHighRiskCnt(highRiskCnt3.toString()); + babyStatisticsManagerBuildSourceListQueryModel3.setHighRiskPercent(highRiskPercent3); + babyStatisticsManagerBuildSourceListQueryModel4.setBuildCnt(buildCnt4.toString()); + babyStatisticsManagerBuildSourceListQueryModel4.setHighRiskCnt(highRiskCnt4.toString()); + babyStatisticsManagerBuildSourceListQueryModel4.setHighRiskPercent(highRiskPercent4); + + babyStatisticsManagerBuildSourceListQueryModelList.add(babyStatisticsManagerBuildSourceListQueryModel1); + babyStatisticsManagerBuildSourceListQueryModelList.add(babyStatisticsManagerBuildSourceListQueryModel2); + babyStatisticsManagerBuildSourceListQueryModelList.add(babyStatisticsManagerBuildSourceListQueryModel3); + babyStatisticsManagerBuildSourceListQueryModelList.add(babyStatisticsManagerBuildSourceListQueryModel4); + + babyStatisticsManagerBuildSourceListResult.setData(babyStatisticsManagerBuildSourceListQueryModelList); + babyStatisticsManagerBuildSourceListResult.setErrorcode(ErrorCodeConstants.SUCCESS); + babyStatisticsManagerBuildSourceListResult.setErrormsg(ErrorCodeConstants.SUCCESS_DESCRIPTION); + return babyStatisticsManagerBuildSourceListResult; + } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyStatisticsManagerBuildSourceListRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyStatisticsManagerBuildSourceListRequest.java new file mode 100644 index 0000000..aece1e4 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyStatisticsManagerBuildSourceListRequest.java @@ -0,0 +1,39 @@ +package com.lyms.platform.operate.web.request; + +/** + * @auther HuJiaqi + * @createTime 2017年01月16日 11时26分 + * @discription + */ +public class BabyStatisticsManagerBuildSourceListRequest extends BasePageQueryRequest { + + private String buildDate; + + private Integer operatorId; + + private boolean isExcel; + + public boolean isExcel() { + return isExcel; + } + + public void setExcel(boolean excel) { + isExcel = excel; + } + + public Integer getOperatorId() { + return operatorId; + } + + public void setOperatorId(Integer operatorId) { + this.operatorId = operatorId; + } + + public String getBuildDate() { + return buildDate; + } + + public void setBuildDate(String buildDate) { + this.buildDate = buildDate; + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/JdbcUtil.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/JdbcUtil.java index 58a6201..b2e3235 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/JdbcUtil.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/JdbcUtil.java @@ -24,6 +24,17 @@ public class JdbcUtil { return con; } + public static Connection getOracleConnection(String driver, String url, String username, String password) { + Connection con = null; + try { + Class.forName(driver); + con = DriverManager.getConnection(url, username, password); + } catch (Exception e) { + e.printStackTrace(); + } + return con; + } + public static Connection getMysqlConnection() { Connection con = null; @@ -94,6 +105,36 @@ public class JdbcUtil { return list; } + public static List> getOracleListDataBySql(String driver, String url, String username, String password, String sql) { + Connection conn = getOracleConnection(driver, url, username, password); + PreparedStatement pst = null; + ResultSet rs = null; + List> list = new ArrayList<>(); + try { + pst = conn.prepareStatement(sql); + rs = pst.executeQuery(); + int count = rs.getMetaData().getColumnCount(); + while (rs.next()) { + Map maps = new HashMap<>(); + for (int i = 1; i <= count; i++) { + String columnName = rs.getMetaData().getColumnName(i); + Object obj = rs.getObject(columnName); + if (obj != null) { + maps.put(columnName, obj); + } else { + maps.put(columnName, null); + } + } + list.add(maps); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + freeConnection(conn, pst, rs); + } + return list; + } + public static Object getOralceSingleObjBySql(String sql) { Connection conn = getOracleConnection(); -- 1.8.3.1