Commit 799840fed6f5a185a39ede625fd4c46204356169

Authored by hujiaqi
1 parent 896edacbdb

建档来源统计

Showing 4 changed files with 249 additions and 0 deletions

platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyStatisticsManagerController.java View file @ 799840f
... ... @@ -292,5 +292,30 @@
292 292 }
293 293 }
294 294  
  295 + /**
  296 + * @auther HuJiaqi
  297 + * @createTime 2017年01月16日 13时54分
  298 + * @discription 建档来源统计
  299 + */
  300 + @TokenRequired
  301 + @ResponseBody
  302 + @RequestMapping(value = "BabyStatisticsManagerBuildSourceList", method = RequestMethod.POST, consumes = "application/json")
  303 + public BaseListResponse BabyStatisticsManagerBuildSourceList(HttpServletRequest httpServletRequest, @RequestBody BabyStatisticsManagerBuildSourceListRequest babyStatisticsManagerBuildSourceListRequest) {
  304 + BaseListResponse baseListResponse;
  305 + try {
  306 + babyStatisticsManagerBuildSourceListRequest.setOperatorId(((LoginContext) httpServletRequest.getAttribute("loginContext")).getId());
  307 + BabyStatisticsManagerBuildSourceListResult babyStatisticsManagerBuildSourceListResult = babyStatisticsManagerFacade.babyStatisticsManagerBuildSourceList(babyStatisticsManagerBuildSourceListRequest);
  308 + if (babyStatisticsManagerBuildSourceListResult.getErrorcode() != ErrorCodeConstants.SUCCESS) {
  309 + baseListResponse = new BaseListResponse().setErrorcode(babyStatisticsManagerBuildSourceListResult.getErrorcode()).setErrormsg(babyStatisticsManagerBuildSourceListResult.getErrormsg());
  310 + return baseListResponse;
  311 + }
  312 + baseListResponse = new BaseListResponse().setErrorcode(babyStatisticsManagerBuildSourceListResult.getErrorcode()).setErrormsg(babyStatisticsManagerBuildSourceListResult.getErrormsg()).setData(babyStatisticsManagerBuildSourceListResult.getData()).setPageInfo(babyStatisticsManagerBuildSourceListResult.getPageInfo());
  313 + } catch (Exception e) {
  314 + baseListResponse = new BaseListResponse().setErrorcode(ErrorCodeConstants.SYSTEM_ERROR).setErrormsg(ErrorCodeConstants.SYSTEM_ERROR_DESCRIPTION);
  315 + ExceptionUtils.catchException(e, "BabyStatisticsManagerBuildSourceList异常");
  316 + }
  317 + return baseListResponse;
  318 + }
  319 +
295 320 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyStatisticsManagerFacade.java View file @ 799840f
... ... @@ -10,6 +10,7 @@
10 10 import com.lyms.platform.common.utils.JsonUtil;
11 11 import com.lyms.platform.operate.web.request.*;
12 12 import com.lyms.platform.operate.web.result.*;
  13 +import com.lyms.platform.operate.web.utils.JdbcUtil;
13 14 import com.lyms.platform.permission.service.UsersService;
14 15 import com.lyms.platform.pojo.BabyCheckModel;
15 16 import com.lyms.platform.pojo.BabyModel;
... ... @@ -42,6 +43,9 @@
42 43 @Autowired
43 44 private BabyCheckService babyCheckService;
44 45  
  46 + @Autowired
  47 + private AutoMatchFacade autoMatchFacade;
  48 +
45 49 public BabyStatisticsManagerBuildDoctorGroupResult babyStatisticsManagerBuildDoctorGroup(BabyStatisticsManagerBuildDoctorGroupRequest babyStatisticsManagerBuildDoctorGroupRequest) {
46 50 BabyStatisticsManagerBuildDoctorGroupResult babyStatisticsManagerBuildDoctorGroupResult = new BabyStatisticsManagerBuildDoctorGroupResult();
47 51  
... ... @@ -482,6 +486,146 @@
482 486 babyStatisticsManagerWeekAgeListResult.setErrorcode(ErrorCodeConstants.SUCCESS);
483 487 babyStatisticsManagerWeekAgeListResult.setErrormsg(ErrorCodeConstants.SUCCESS_DESCRIPTION);
484 488 return babyStatisticsManagerWeekAgeListResult;
  489 + }
  490 +
  491 + public BabyStatisticsManagerBuildSourceListResult babyStatisticsManagerBuildSourceList(BabyStatisticsManagerBuildSourceListRequest babyStatisticsManagerBuildSourceListRequest) {
  492 + BabyStatisticsManagerBuildSourceListResult babyStatisticsManagerBuildSourceListResult = new BabyStatisticsManagerBuildSourceListResult();
  493 +
  494 + List<BabyStatisticsManagerBuildSourceListQueryModel> babyStatisticsManagerBuildSourceListQueryModelList = new ArrayList<>();
  495 +
  496 + String hospitalId;
  497 + try {
  498 + hospitalId = autoMatchFacade.getHospitalId(babyStatisticsManagerBuildSourceListRequest.getOperatorId());
  499 + } catch (Exception e) {
  500 + babyStatisticsManagerBuildSourceListResult.setErrorcode(ErrorCodeConstants.SYSTEM_ERROR);
  501 + babyStatisticsManagerBuildSourceListResult.setErrormsg("获取当前医院异常");
  502 + return babyStatisticsManagerBuildSourceListResult;
  503 + }
  504 +
  505 + String buildDateStart = null;
  506 + String buildDateEnd = null;
  507 + if (StringUtils.isNotEmpty(babyStatisticsManagerBuildSourceListRequest.getBuildDate())) {
  508 + buildDateStart = DateUtil.getyyyy_MM_dd(DateUtil.getSNDate(babyStatisticsManagerBuildSourceListRequest.getBuildDate())[0]);
  509 + buildDateEnd = DateUtil.getyyyy_MM_dd(DateUtil.getSNDate(babyStatisticsManagerBuildSourceListRequest.getBuildDate())[1]);
  510 + }
  511 +
  512 + String sql =
  513 + "SELECT B.PROVINCE_ID," +
  514 + "B.PROVINCE," +
  515 + "B.CITY_ID," +
  516 + "B.CITY," +
  517 + "B.AREA_COUNTY_ID," +
  518 + "B.AREA_COUNTY," +
  519 + "B.HOSPITAL_NO," +
  520 + "B.HOSPITAL_NAME," +
  521 + "A.CHILD_CATEGORY_ID," +
  522 + "A.CHILD_CATEGORY," +
  523 + "(CASE WHEN A.BIRTH_HOSPITAL_NO=A.HOSPITAL_NO THEN '本院分娩'" +
  524 + "WHEN A.BIRTH_HOSPITAL_NO<>A.HOSPITAL_NO AND A.BIRTH_HOSPITAL_NO IS NOT NULL THEN '外院分娩'" +
  525 + "WHEN A.BIRTH_HOSPITAL_NO IS NULL THEN '未知'" +
  526 + "END) AS LB_NAME," +
  527 + "COUNT(*) AS CNT" +
  528 + "FROM ODS_F_INFANT_RECORD A" +
  529 + "INNER JOIN ODS_D_HOSPITAL B ON A.HOSPITAL_NO=B.HOSPITAL_NO" +
  530 + // 医院,判断本院外院使用
  531 + "WHERE B.HOSPITAL_NO=" + hospitalId;
  532 + // 这三个查询条件暂时没用,直接注释掉
  533 + // "AND B.PROVINCE_ID=" +
  534 + // "AND B.CITY_ID=" +
  535 + // "AND B.AREA_COUNTY_ID="
  536 + if (StringUtils.isNotEmpty(babyStatisticsManagerBuildSourceListRequest.getBuildDate())) {
  537 + sql += "AND A.INSERT_DATE BETWEEN" + buildDateStart + " AND" + buildDateEnd;
  538 + }
  539 + sql += "GROUP BY" +
  540 + "B.PROVINCE_ID," +
  541 + "B.PROVINCE," +
  542 + "B.CITY_ID," +
  543 + "B.CITY," +
  544 + "B.AREA_COUNTY_ID," +
  545 + "B.AREA_COUNTY," +
  546 + "B.HOSPITAL_NO," +
  547 + "B.HOSPITAL_NAME," +
  548 + "A.CHILD_CATEGORY_ID," +
  549 + "A.CHILD_CATEGORY," +
  550 + "(CASE WHEN A.BIRTH_HOSPITAL_NO=A.HOSPITAL_NO THEN '本院分娩'" +
  551 + "WHEN A.BIRTH_HOSPITAL_NO<>A.HOSPITAL_NO AND A.BIRTH_HOSPITAL_NO IS NOT NULL THEN '外院分娩'" +
  552 + "WHEN A.BIRTH_HOSPITAL_NO IS NULL THEN '未知'" +
  553 + "END)";
  554 + // jdbc查oracle
  555 + List<Map<String, Object>> list = JdbcUtil.getOracleListDataBySql("com.mysql.jdbc.Driver", "jdbc:oracle:thin:@127.0.0.1:1521:orcl", "LYMS_ODS", "Welcome1", sql);
  556 +
  557 + // 构造返回list,这里写死的4条,因为高帆说只有4条
  558 + BabyStatisticsManagerBuildSourceListQueryModel babyStatisticsManagerBuildSourceListQueryModel1 = new BabyStatisticsManagerBuildSourceListQueryModel();
  559 + babyStatisticsManagerBuildSourceListQueryModel1.setLbName("本院分娩");
  560 + Integer buildCnt1 = 0;
  561 + Integer highRiskCnt1 = 0;
  562 + String highRiskPercent1 = "-";
  563 + BabyStatisticsManagerBuildSourceListQueryModel babyStatisticsManagerBuildSourceListQueryModel2 = new BabyStatisticsManagerBuildSourceListQueryModel();
  564 + babyStatisticsManagerBuildSourceListQueryModel1.setLbName("外院分娩");
  565 + Integer buildCnt2 = 0;
  566 + Integer highRiskCnt2 = 0;
  567 + String highRiskPercent2 = "-";
  568 + BabyStatisticsManagerBuildSourceListQueryModel babyStatisticsManagerBuildSourceListQueryModel3 = new BabyStatisticsManagerBuildSourceListQueryModel();
  569 + babyStatisticsManagerBuildSourceListQueryModel1.setLbName("未知");
  570 + Integer buildCnt3 = 0;
  571 + Integer highRiskCnt3 = 0;
  572 + String highRiskPercent3 = "-";
  573 + BabyStatisticsManagerBuildSourceListQueryModel babyStatisticsManagerBuildSourceListQueryModel4 = new BabyStatisticsManagerBuildSourceListQueryModel();
  574 + babyStatisticsManagerBuildSourceListQueryModel1.setLbName("总计");
  575 + Integer buildCnt4 = 0;
  576 + Integer highRiskCnt4 = 0;
  577 + String highRiskPercent4 = "-";
  578 + if (CollectionUtils.isNotEmpty(list)) {
  579 + for (Map<String, Object> map : list) {
  580 + if ("本院分娩".equals(map.get("lbName"))) {
  581 + buildCnt1 += Integer.valueOf(map.get("cnt").toString());
  582 + if ("2".equals(map.get("childCategoryId"))) {
  583 + highRiskCnt1 += Integer.valueOf(map.get("cnt").toString());
  584 + }
  585 + } else if ("外院分娩".equals(map.get("lbName"))) {
  586 + buildCnt2 += Integer.valueOf(map.get("cnt").toString());
  587 + if ("2".equals(map.get("childCategoryId"))) {
  588 + highRiskCnt2 += Integer.valueOf(map.get("cnt").toString());
  589 + }
  590 + } else if ("未知".equals(map.get("lbName"))) {
  591 + buildCnt3 += Integer.valueOf(map.get("cnt").toString());
  592 + if ("2".equals(map.get("childCategoryId"))) {
  593 + highRiskCnt3 += Integer.valueOf(map.get("cnt").toString());
  594 + }
  595 + }
  596 + // 总计
  597 + buildCnt4 += Integer.valueOf(map.get("cnt").toString());
  598 + if ("2".equals(map.get("childCategoryId"))) {
  599 + highRiskCnt4 += Integer.valueOf(map.get("cnt").toString());
  600 + }
  601 + }
  602 + highRiskPercent1 = Math.round((double) highRiskCnt1 * 1000 / (double) buildCnt1) / 10.0 + "%";
  603 + highRiskPercent2 = Math.round((double) highRiskCnt2 * 1000 / (double) buildCnt2) / 10.0 + "%";
  604 + highRiskPercent3 = Math.round((double) highRiskCnt3 * 1000 / (double) buildCnt3) / 10.0 + "%";
  605 + highRiskPercent4 = Math.round((double) highRiskCnt4 * 1000 / (double) buildCnt4) / 10.0 + "%";
  606 + }
  607 + babyStatisticsManagerBuildSourceListQueryModel1.setBuildCnt(buildCnt1.toString());
  608 + babyStatisticsManagerBuildSourceListQueryModel1.setHighRiskCnt(highRiskCnt1.toString());
  609 + babyStatisticsManagerBuildSourceListQueryModel1.setHighRiskPercent(highRiskPercent1);
  610 + babyStatisticsManagerBuildSourceListQueryModel2.setBuildCnt(buildCnt2.toString());
  611 + babyStatisticsManagerBuildSourceListQueryModel2.setHighRiskCnt(highRiskCnt2.toString());
  612 + babyStatisticsManagerBuildSourceListQueryModel2.setHighRiskPercent(highRiskPercent2);
  613 + babyStatisticsManagerBuildSourceListQueryModel3.setBuildCnt(buildCnt3.toString());
  614 + babyStatisticsManagerBuildSourceListQueryModel3.setHighRiskCnt(highRiskCnt3.toString());
  615 + babyStatisticsManagerBuildSourceListQueryModel3.setHighRiskPercent(highRiskPercent3);
  616 + babyStatisticsManagerBuildSourceListQueryModel4.setBuildCnt(buildCnt4.toString());
  617 + babyStatisticsManagerBuildSourceListQueryModel4.setHighRiskCnt(highRiskCnt4.toString());
  618 + babyStatisticsManagerBuildSourceListQueryModel4.setHighRiskPercent(highRiskPercent4);
  619 +
  620 + babyStatisticsManagerBuildSourceListQueryModelList.add(babyStatisticsManagerBuildSourceListQueryModel1);
  621 + babyStatisticsManagerBuildSourceListQueryModelList.add(babyStatisticsManagerBuildSourceListQueryModel2);
  622 + babyStatisticsManagerBuildSourceListQueryModelList.add(babyStatisticsManagerBuildSourceListQueryModel3);
  623 + babyStatisticsManagerBuildSourceListQueryModelList.add(babyStatisticsManagerBuildSourceListQueryModel4);
  624 +
  625 + babyStatisticsManagerBuildSourceListResult.setData(babyStatisticsManagerBuildSourceListQueryModelList);
  626 + babyStatisticsManagerBuildSourceListResult.setErrorcode(ErrorCodeConstants.SUCCESS);
  627 + babyStatisticsManagerBuildSourceListResult.setErrormsg(ErrorCodeConstants.SUCCESS_DESCRIPTION);
  628 + return babyStatisticsManagerBuildSourceListResult;
485 629 }
486 630 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyStatisticsManagerBuildSourceListRequest.java View file @ 799840f
  1 +package com.lyms.platform.operate.web.request;
  2 +
  3 +/**
  4 + * @auther HuJiaqi
  5 + * @createTime 2017年01月16日 11时26分
  6 + * @discription
  7 + */
  8 +public class BabyStatisticsManagerBuildSourceListRequest extends BasePageQueryRequest {
  9 +
  10 + private String buildDate;
  11 +
  12 + private Integer operatorId;
  13 +
  14 + private boolean isExcel;
  15 +
  16 + public boolean isExcel() {
  17 + return isExcel;
  18 + }
  19 +
  20 + public void setExcel(boolean excel) {
  21 + isExcel = excel;
  22 + }
  23 +
  24 + public Integer getOperatorId() {
  25 + return operatorId;
  26 + }
  27 +
  28 + public void setOperatorId(Integer operatorId) {
  29 + this.operatorId = operatorId;
  30 + }
  31 +
  32 + public String getBuildDate() {
  33 + return buildDate;
  34 + }
  35 +
  36 + public void setBuildDate(String buildDate) {
  37 + this.buildDate = buildDate;
  38 + }
  39 +}
platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/JdbcUtil.java View file @ 799840f
... ... @@ -24,7 +24,18 @@
24 24 return con;
25 25 }
26 26  
  27 + public static Connection getOracleConnection(String driver, String url, String username, String password) {
  28 + Connection con = null;
  29 + try {
  30 + Class.forName(driver);
  31 + con = DriverManager.getConnection(url, username, password);
  32 + } catch (Exception e) {
  33 + e.printStackTrace();
  34 + }
  35 + return con;
  36 + }
27 37  
  38 +
28 39 public static Connection getMysqlConnection() {
29 40 Connection con = null;
30 41 try {
... ... @@ -90,6 +101,36 @@
90 101 e.printStackTrace();
91 102 } finally {
92 103 freeConnection(conn,pst,rs);
  104 + }
  105 + return list;
  106 + }
  107 +
  108 + public static List<Map<String, Object>> getOracleListDataBySql(String driver, String url, String username, String password, String sql) {
  109 + Connection conn = getOracleConnection(driver, url, username, password);
  110 + PreparedStatement pst = null;
  111 + ResultSet rs = null;
  112 + List<Map<String, Object>> list = new ArrayList<>();
  113 + try {
  114 + pst = conn.prepareStatement(sql);
  115 + rs = pst.executeQuery();
  116 + int count = rs.getMetaData().getColumnCount();
  117 + while (rs.next()) {
  118 + Map<String, Object> maps = new HashMap<>();
  119 + for (int i = 1; i <= count; i++) {
  120 + String columnName = rs.getMetaData().getColumnName(i);
  121 + Object obj = rs.getObject(columnName);
  122 + if (obj != null) {
  123 + maps.put(columnName, obj);
  124 + } else {
  125 + maps.put(columnName, null);
  126 + }
  127 + }
  128 + list.add(maps);
  129 + }
  130 + } catch (Exception e) {
  131 + e.printStackTrace();
  132 + } finally {
  133 + freeConnection(conn, pst, rs);
93 134 }
94 135 return list;
95 136 }