Commit 350ef6de26ada04d16e73a8dfbc3db4b3882c9f7

Authored by litao
1 parent 0457395264

详情相关接口

Showing 8 changed files with 346 additions and 16 deletions

platform-common/src/main/java/com/lyms/platform/common/result/PageResult.java View file @ 350ef6d
  1 +package com.lyms.platform.common.result;
  2 +
  3 +/**
  4 + * @Author: litao
  5 + * @Date: 2017/4/24 0024 10:32
  6 + * @Version: V1.0
  7 + */
  8 +public class PageResult extends BaseModel {
  9 + private Integer count; // 总条数
  10 + private Integer page; // 当前页
  11 + private Integer limit; // 每页显示的条数
  12 + private Integer lastPage; // 总页数
  13 + private int size = 0;
  14 + private Object rows;
  15 +
  16 + public PageResult(Integer count, Integer page, Integer limit,
  17 + Object rows) {
  18 + this.count = count;
  19 + this.page = page;
  20 + this.limit = limit;
  21 + this.rows = rows;
  22 + this.lastPage = ((count - 1)/this.limit) + 1;
  23 + }
  24 +
  25 + public Integer getCount() {
  26 + return count;
  27 + }
  28 +
  29 + public void setCount(Integer count) {
  30 + this.count = count;
  31 + }
  32 +
  33 + public Integer getPage() {
  34 + return page;
  35 + }
  36 +
  37 + public void setPage(Integer page) {
  38 + this.page = page;
  39 + }
  40 +
  41 + public Integer getLimit() {
  42 + return limit;
  43 + }
  44 +
  45 + public void setLimit(Integer limit) {
  46 + this.limit = limit;
  47 + }
  48 +
  49 + public Integer getLastPage() {
  50 + return lastPage;
  51 + }
  52 +
  53 + public void setLastPage(Integer lastPage) {
  54 + this.lastPage = lastPage;
  55 + }
  56 +
  57 + public int getSize() {
  58 + return limit;
  59 + }
  60 +
  61 + public void setSize(int size) {
  62 + this.size = size;
  63 + }
  64 +
  65 + public Object getRows() {
  66 + return rows;
  67 + }
  68 +
  69 + public void setRows(Object rows) {
  70 + this.rows = rows;
  71 + }
  72 +}
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java View file @ 350ef6d
... ... @@ -63,12 +63,15 @@
63 63 * @param childBirth 统计范围 1=孕妇 3=产妇 不传=全部
64 64 * @param number 检查次数
65 65 * @param name 医生名称
  66 + * @param currentPage 当前页
  67 + * @param pageSize 每页显示的数量
66 68 * @return
67 69 */
68 70 @RequestMapping(method = RequestMethod.GET,value = "/checkInfo")
69 71 @ResponseBody
70   - public BaseObjectResponse checkInfo(Integer childBirth, String startDate, String endDate, Integer startWeek, Integer endWeek, Integer number, String name) {
71   - return reportService.checkInfo(childBirth, startDate, endDate, startWeek, endWeek, number, name);
  72 + public BaseObjectResponse checkInfo(Integer childBirth, String startDate, String endDate, Integer startWeek, Integer endWeek, Integer number,
  73 + String name, Integer currentPage, Integer pageSize) {
  74 + return reportService.checkInfo(childBirth, startDate, endDate, startWeek, endWeek, number, name, currentPage, pageSize);
72 75 }
73 76  
74 77 /**
... ... @@ -82,6 +85,21 @@
82 85 @ResponseBody
83 86 public BaseObjectResponse doctorMedical(String startDate, String endDate, Integer childBirth) {
84 87 return reportService.doctorMedical(startDate, endDate, childBirth);
  88 + }
  89 +
  90 + /**
  91 + * 产检医生统计详情
  92 + * @param startDate 建档开始时间
  93 + * @param endDate 建档结束时间
  94 + * @param childBirth 统计范围 1=孕妇 3=产妇 不传=全部
  95 + * @param number 产检次数
  96 + * @param name 医生名称
  97 + * @return
  98 + */
  99 + @RequestMapping(method = RequestMethod.GET,value = "/doctorInfo")
  100 + @ResponseBody
  101 + public BaseObjectResponse doctorInfo(String startDate, String endDate, Integer childBirth, Integer number, String name,Integer currentPage, Integer pageSize) {
  102 + return reportService.doctorInfo(startDate, endDate, childBirth, number, name,currentPage, pageSize);
85 103 }
86 104  
87 105 /**
platform-operate-api/src/main/java/com/lyms/platform/operate/web/dao/IBaseDao.java View file @ 350ef6d
... ... @@ -18,5 +18,21 @@
18 18 */
19 19 List<Map<String, Object>> findList(String sql, List<Object> params);
20 20  
  21 + /**
  22 + * 查询分页数据
  23 + * @param sql
  24 + * @param currentPage
  25 + * @param pageSize
  26 + * @param params
  27 + */
  28 + List<Map<String, Object>> findList(String sql, Integer currentPage, Integer pageSize, List<Object> params);
  29 +
  30 + /**
  31 + * 查询总的count
  32 + * @param sql
  33 + * @param param
  34 + * @return
  35 + */
  36 + Integer findCount(String sql, List<Object> param);
21 37 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/dao/impl/BaseDaoImpl.java View file @ 350ef6d
... ... @@ -2,7 +2,9 @@
2 2  
3 3 import com.lyms.platform.operate.web.dao.IBaseDao;
4 4 import com.lyms.platform.operate.web.utils.SystemDataSource;
  5 +import org.apache.commons.collections.CollectionUtils;
5 6 import org.apache.commons.dbutils.QueryRunner;
  7 +import org.apache.commons.dbutils.handlers.ColumnListHandler;
6 8 import org.apache.commons.dbutils.handlers.MapListHandler;
7 9 import org.slf4j.Logger;
8 10 import org.slf4j.LoggerFactory;
... ... @@ -42,5 +44,42 @@
42 44 }
43 45 return null;
44 46 }
  47 +
  48 + @Override
  49 + public List<Map<String, Object>> findList(String sql, Integer currentPage, Integer pageSize, List<Object> params) {
  50 + StringBuilder rowSql = new StringBuilder();
  51 + rowSql.append("SELECT * FROM ")
  52 + .append("( ")
  53 + .append("SELECT A.*, ROWNUM RN ")
  54 + .append("FROM ( ")
  55 + .append(sql)
  56 + .append(" ) A ")
  57 + .append("WHERE ROWNUM <= ? ")
  58 + .append(" ) ")
  59 + .append("WHERE RN >= ? ");
  60 + params.add(0, currentPage * pageSize);
  61 + params.add((currentPage - 1) * pageSize + 1);
  62 + return findList(rowSql.toString(), params);
  63 +
  64 + }
  65 +
  66 + @Override
  67 + public Integer findCount(String sql, List<Object> param) {
  68 + StringBuilder countSql = new StringBuilder();
  69 + try {
  70 + countSql.append("select count(1) from ( ")
  71 + .append(sql)
  72 + .append(" )");
  73 + List<Object> list = qr.query(countSql.toString(), new ColumnListHandler<>(), CollectionUtils.isNotEmpty(param) ? null : param.toArray());
  74 + if(CollectionUtils.isNotEmpty(list)) {
  75 + return Integer.parseInt(list.get(0).toString());
  76 + }
  77 + } catch (SQLException e) {
  78 + e.printStackTrace();
  79 + logger.error("count 查询失败:countSql: {}, params: {}", countSql, param);
  80 + }
  81 + return 0;
  82 + }
  83 +
45 84 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IBaseService.java View file @ 350ef6d
  1 +package com.lyms.platform.operate.web.service;
  2 +
  3 +import com.lyms.platform.common.result.PageResult;
  4 +
  5 +import java.util.List;
  6 +
  7 +/**
  8 + * @Author: litao
  9 + * @Date: 2017/4/24 0024 11:15
  10 + * @Version: V1.0
  11 + */
  12 +public interface IBaseService {
  13 +
  14 + /**
  15 + *
  16 + * 根据sql+条件 查询分页对象
  17 + * @param sql
  18 + * @param params
  19 + * @return
  20 + */
  21 + public PageResult findPage(String sql, Integer currentPage, Integer pageSize, List<Object> params);
  22 +}
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IReportService.java View file @ 350ef6d
... ... @@ -10,7 +10,7 @@
10 10 * @Date: 2017/4/19 0019 17:53
11 11 * @Version: V1.0
12 12 */
13   -public interface IReportService {
  13 +public interface IReportService extends IBaseService {
14 14  
15 15 /**
16 16 * 产检次数分布统计
17 17  
... ... @@ -41,9 +41,10 @@
41 41 * @param endWeek
42 42 * @param number
43 43 * @param name
44   - * @return
  44 + * @param currenPage
  45 + *@param pageSize @return
45 46 */
46   - BaseObjectResponse checkInfo(Integer childBirth, String startDate, String endDate, Integer startWeek, Integer endWeek, Integer number, String name);
  47 + BaseObjectResponse checkInfo(Integer childBirth, String startDate, String endDate, Integer startWeek, Integer endWeek, Integer number, String name, Integer currenPage, Integer pageSize);
47 48  
48 49 /**
49 50 * 导出Excel
... ... @@ -57,5 +58,7 @@
57 58 void exportCheck(String startDate, String endDate, Integer startWeek, Integer endWeek, Integer childBirth, HttpServletResponse resp);
58 59  
59 60 void exportDoctor(String startDate, String endDate, Integer childBirth, HttpServletResponse resp);
  61 +
  62 + BaseObjectResponse doctorInfo(String startDate, String endDate, Integer childBirth, Integer number, String name, Integer currentPage, Integer pageSize);
60 63 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/BaseServiceImpl.java View file @ 350ef6d
  1 +package com.lyms.platform.operate.web.service.impl;
  2 +
  3 +import com.lyms.platform.common.result.PageResult;
  4 +import com.lyms.platform.operate.web.dao.IBaseDao;
  5 +import com.lyms.platform.operate.web.service.IBaseService;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.beans.factory.annotation.Qualifier;
  8 +import org.springframework.stereotype.Service;
  9 +
  10 +import java.util.List;
  11 +import java.util.Map;
  12 +
  13 +/**
  14 + * @Author: litao
  15 + * @Date: 2017/4/24 0024 11:15
  16 + * @Version: V1.0
  17 + */
  18 +@Service
  19 +public class BaseServiceImpl implements IBaseService {
  20 + @Autowired
  21 + @Qualifier("baseDaoImpl")
  22 + private IBaseDao baseDao;
  23 +
  24 + @Override
  25 + public PageResult findPage(String sql, Integer currentPage, Integer pageSize, List<Object> params) {
  26 + pageSize = pageSize == null ? 10 : pageSize;
  27 + currentPage = currentPage == null ? 1 : currentPage;
  28 +
  29 + Integer count = baseDao.findCount(sql, params);
  30 + List<Map<String, Object>> rows = baseDao.findList(sql, currentPage, pageSize, params);
  31 + return new PageResult(count, currentPage, pageSize, rows);
  32 + }
  33 +}
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java View file @ 350ef6d
... ... @@ -2,6 +2,7 @@
2 2  
3 3 import com.lyms.hospitalapi.pojo.ReportModel;
4 4 import com.lyms.platform.common.result.BaseObjectResponse;
  5 +import com.lyms.platform.common.result.PageResult;
5 6 import com.lyms.platform.operate.web.dao.IReportDao;
6 7 import com.lyms.platform.operate.web.service.IReportService;
7 8 import com.lyms.platform.operate.web.utils.MathUtil;
... ... @@ -19,7 +20,7 @@
19 20 * @Version: V1.0
20 21 */
21 22 @Service
22   -public class ReportServiceImpl implements IReportService {
  23 +public class ReportServiceImpl extends BaseServiceImpl implements IReportService {
23 24  
24 25 @Autowired
25 26 private IReportDao reportDao;
... ... @@ -135,8 +136,12 @@
135 136 }
136 137  
137 138 @Override
138   - public BaseObjectResponse checkInfo(Integer childBirth, String startDate, String endDate, Integer startWeek, Integer endWeek, Integer number, String name) {
139   - return null;
  139 + public BaseObjectResponse checkInfo(Integer childBirth, String startDate, String endDate, Integer startWeek, Integer endWeek, Integer number, String name, Integer currentPage, Integer pageSize) {
  140 + BaseObjectResponse rest = new BaseObjectResponse();
  141 + List<Object> params = new ArrayList<>();
  142 + PageResult page = findPage(getCheckInfoSql(childBirth, startDate, endDate, startWeek, endWeek, number, name, params), currentPage, pageSize, params);
  143 + rest.setData(page);
  144 + return rest;
140 145 }
141 146  
142 147 @Override
143 148  
144 149  
... ... @@ -200,20 +205,90 @@
200 205 List<Map<String, Object>> grid = data.getGrid();
201 206 for (Map<String, Object> map : grid) {
202 207 Map<String, Object> result = new LinkedHashMap<>();
203   - result.put("id", result.get("id"));
204   - result.put("doctorName", result.get("doctorName"));
205   - result.put("inspectTime", result.get("inspectTime"));
206   - result.put("inspectPeople", result.get("inspectPeople"));
207   - result.put("twice", result.get("twice"));
208   - result.put("twiceProportion", result.get("twiceProportion"));
209   - result.put("fiveTimes", result.get("fiveTimes"));
210   - result.put("fiveTimeProportion", result.get("fiveTimeProportion"));
  208 + result.put("id", map.get("id"));
  209 + result.put("doctorName", map.get("doctorName"));
  210 + result.put("inspectTime", map.get("inspectTime"));
  211 + result.put("inspectPeople", map.get("inspectPeople"));
  212 + result.put("twice", map.get("twice"));
  213 + result.put("twiceProportion", map.get("twiceProportion"));
  214 + result.put("fiveTimes", map.get("fiveTimes"));
  215 + result.put("fiveTimeProportion", map.get("fiveTimeProportion"));
211 216 results.add(result);
212 217 }
213 218 ResponseUtil.responseExcel(cnames,results, resp);
214 219 }
215 220  
  221 + @Override
  222 + public BaseObjectResponse doctorInfo(String startDate, String endDate, Integer childBirth, Integer number,String name, Integer currentPage, Integer pageSize) {
  223 + BaseObjectResponse rest = new BaseObjectResponse();
  224 + List<Object> params = new ArrayList<>();
  225 + PageResult page = findPage(getDoctorInfoSql(startDate, endDate, childBirth, number, name, params), currentPage, pageSize, params);
  226 + rest.setData(page);
  227 + return rest;
  228 + }
216 229  
  230 + private String getDoctorInfoSql(String startDate, String endDate, Integer childBirth, Integer number, String name, List<Object> params) {
  231 + StringBuilder sql = new StringBuilder();
  232 + sql.append("SELECT A.NAME, ")
  233 + .append("(CASE WHEN A.IS_CHILDBIRTH=3 THEN '已分娩' ELSE (CASE WHEN A.NOW_WEEKS_DAY<>0 THEN '孕'||A.NOW_WEEKS||'周+'||A.NOW_WEEKS_DAY||'天' ELSE '孕'||A.NOW_WEEKS||'周' END) END) AS YUNZHOU, ")
  234 + .append("SUM((CASE WHEN A.HOSPITAL_NO=B.HOSPITAL_NO THEN 1 ELSE 0 END)) AS BENYUAN_NUM, ")
  235 + .append("F.EXAMINE_HISTORY_NUM AS TOTAL_NUM, ")
  236 + .append("B.HIGH_RISK_GRADE, ")
  237 + .append("B.HIGH_RISK_FACTOR, ")
  238 + .append("(CASE WHEN A.IS_CHILDBIRTH=3 THEN E.CHILDBIRTH_DATE ELSE A.EDD_DATE END) AS EDD_DATE, ")
  239 + .append("D.INSERT_DATE AS LAST_EXAMINE_DATE, ")
  240 + .append("D.DOCTOR_NAME ")
  241 + .append("FROM ODS_F_GRAVIDA_RECORD A ")
  242 + .append("INNER JOIN ODS_F_EXAMINE_HISTORY_ASC B ON A.RECORD_ID=B.RECORD_ID ")
  243 + .append("INNER JOIN ODS_D_HOSPITAL C ON A.HOSPITAL_NO=C.HOSPITAL_NO ")
  244 + .append("LEFT JOIN ODS_F_EXAMINE_HISTORY D ON A.RECORD_ID=D.RECORD_ID AND D.EXAMINE_HISTORY_NUM=1 ")
  245 + .append("LEFT JOIN ODS_F_CHILDBIRTH E ON A.RECORD_ID=E.RECORD_ID ")
  246 + .append("INNER JOIN ODS_F_EXAMINE_HISTORY_ASC F ON D.EXAMINE_ID=F.EXAMINE_ID ")
  247 + .append("WHERE 1 = 1 ");
  248 +
  249 + // sql.append(" AND C.YCY_STSTEM_ID=?"); 医院ID条件
  250 +
  251 + if(childBirth != null) {
  252 + sql.append("AND A.IS_CHILDBIRTH = ? ");
  253 + params.add(childBirth);
  254 + }
  255 +
  256 + if(startDate != null && endDate != null) {
  257 + sql.append("AND A.CREATE_DATE BETWEEN to_date(?,'yyyy-mm-dd') AND to_date(?,'yyyy-mm-dd') ");
  258 + params.add(startDate);
  259 + params.add(endDate);
  260 + }
  261 +
  262 + if(number != null) {
  263 + sql.append("AND B.EXAMINE_HISTORY_NUM = ? ");
  264 + params.add(number);
  265 + }
  266 +
  267 + if(StringUtils.isNotBlank(name)) {
  268 + sql.append("AND B.DOCTOR_NAME = ?");
  269 + params.add(name);
  270 + }
  271 +
  272 + if(number != null) {
  273 +// sql.append("AND A.RECORD_ID IN (SELECT RECORD_ID FROM ODS_F_EXAMINE_HISTORY_ASC A1,ODS_D_HOSPITAL A2 WHERE A1.HOSPITAL_NO=A2.HOSPITAL_NO AND A2.YCY_STSTEM_ID=? AND EXAMINE_HISTORY_NUM=?) ");
  274 +// params.add(STSTEM_ID); 医院id
  275 +// params.add(number);
  276 + }
  277 +
  278 + sql.append("GROUP BY A.RECORD_ID, ")
  279 + .append("A.NAME, ")
  280 + .append("(CASE WHEN A.IS_CHILDBIRTH=3 THEN '已分娩' ELSE (CASE WHEN A.NOW_WEEKS_DAY<>0 THEN '孕'||A.NOW_WEEKS||'周+'||A.NOW_WEEKS_DAY||'天' ELSE '孕'||A.NOW_WEEKS||'周' END) END), ")
  281 + .append("F.EXAMINE_HISTORY_NUM, ")
  282 + .append("B.HIGH_RISK_GRADE, ")
  283 + .append("B.HIGH_RISK_FACTOR, ")
  284 + .append("(CASE WHEN A.IS_CHILDBIRTH=3 THEN E.CHILDBIRTH_DATE ELSE A.EDD_DATE END), ")
  285 + .append("D.INSERT_DATE, ")
  286 + .append("D.DOCTOR_NAME");
  287 +
  288 + return sql.toString();
  289 + }
  290 +
  291 +
217 292 private List<Map<String, Object>> createGrid(List<Object> peopleList, List<Object> proportionList) {
218 293 List<Map<String, Object>> restList = new ArrayList<>();
219 294 Map<String, Object> peoples = new LinkedHashMap<>();
... ... @@ -403,5 +478,57 @@
403 478 return sql.toString();
404 479 }
405 480  
  481 + private String getCheckInfoSql(Integer childBirth, String startDate, String endDate, Integer startWeek, Integer endWeek, Integer number, String name, List<Object> params) {
  482 + StringBuilder sql = new StringBuilder();
  483 + sql.append("SELECT A.NAME, ")
  484 + .append("(CASE WHEN A.IS_CHILDBIRTH=3 THEN '已分娩' ELSE (CASE WHEN A.NOW_WEEKS_DAY<>0 THEN '孕'||A.NOW_WEEKS||'周+'||A.NOW_WEEKS_DAY||'天' ELSE '孕'||A.NOW_WEEKS||'周' END) END) AS YUNZHOU, ")
  485 + .append("SUM((CASE WHEN A.HOSPITAL_NO=B.HOSPITAL_NO THEN 1 ELSE 0 END)) AS BENYUAN_NUM, ")
  486 + .append("F.EXAMINE_HISTORY_NUM AS TOTAL_NUM, ")
  487 + .append("B.HIGH_RISK_GRADE, ")
  488 + .append("B.HIGH_RISK_FACTOR, ")
  489 + .append("(CASE WHEN A.IS_CHILDBIRTH=3 THEN E.CHILDBIRTH_DATE ELSE A.EDD_DATE END) AS EDD_DATE, ")
  490 + .append("D.INSERT_DATE AS LAST_EXAMINE_DATE, ")
  491 + .append("D.DOCTOR_NAME ")
  492 + .append("FROM ODS_F_GRAVIDA_RECORD A ")
  493 + .append("INNER JOIN ODS_F_EXAMINE_HISTORY_ASC B ON A.RECORD_ID=B.RECORD_ID ")
  494 + .append("INNER JOIN ODS_D_HOSPITAL C ON A.HOSPITAL_NO=C.HOSPITAL_NO ")
  495 + .append("LEFT JOIN ODS_F_EXAMINE_HISTORY D ON A.RECORD_ID=D.RECORD_ID AND D.EXAMINE_HISTORY_NUM=1 ")
  496 + .append("LEFT JOIN ODS_F_CHILDBIRTH E ON A.RECORD_ID=E.RECORD_ID ")
  497 + .append("INNER JOIN ODS_F_EXAMINE_HISTORY_ASC F ON D.EXAMINE_ID=F.EXAMINE_ID ")
  498 + .append("WHERE 1=1");
  499 +
  500 + if(childBirth != null) {
  501 + sql.append("AND A.IS_CHILDBIRTH = ? ");
  502 + params.add(childBirth);
  503 + }
  504 +
  505 + if(startDate != null && endDate != null) {
  506 + sql.append("AND A.CREATE_DATE BETWEEN to_date(?,'yyyy-mm-dd') AND to_date(?,'yyyy-mm-dd') ");
  507 + params.add(startDate);
  508 + params.add(endDate);
  509 + }
  510 +
  511 + if(startWeek != null && endWeek != null) {
  512 + sql.append("AND A.NOW_WEEKS BETWEEN ? AND ? ");
  513 + params.add(startWeek);
  514 + params.add(endWeek);
  515 + }
  516 +
  517 + if(number != null) {
  518 + sql.append("AND B.EXAMINE_HISTORY_NUM=? ");
  519 + params.add(number);
  520 + }
  521 +
  522 + sql.append("GROUP BY A.RECORD_ID, ")
  523 + .append("A.NAME, ")
  524 + .append("(CASE WHEN A.IS_CHILDBIRTH=3 THEN '已分娩' ELSE (CASE WHEN A.NOW_WEEKS_DAY<>0 THEN '孕'||A.NOW_WEEKS||'周+'||A.NOW_WEEKS_DAY||'天' ELSE '孕'||A.NOW_WEEKS||'周' END) END), ")
  525 + .append("F.EXAMINE_HISTORY_NUM, ")
  526 + .append("B.HIGH_RISK_GRADE, ")
  527 + .append("B.HIGH_RISK_FACTOR, ")
  528 + .append("(CASE WHEN A.IS_CHILDBIRTH=3 THEN E.CHILDBIRTH_DATE ELSE A.EDD_DATE END), ")
  529 + .append("D.INSERT_DATE, ")
  530 + .append("D.DOCTOR_NAME ");
  531 + return sql.toString();
  532 + }
406 533 }