diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/dao/IBaseDao.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/dao/IBaseDao.java new file mode 100644 index 0000000..a609247 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/dao/IBaseDao.java @@ -0,0 +1,21 @@ +package com.lyms.platform.operate.web.dao; + +import java.util.List; +import java.util.Map; + +/** + * 公共dao的方法抽取 + * @Author: litao + * @Date: 2017/4/20 0020 10:03 + * @Version: V1.0 + */ +public interface IBaseDao { + /** + * 查询数据 封装到list中 list中的数据为map + * @param sql + * @param params + * @return + */ + List> findList(String sql, List params); + +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/dao/IReportDao.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/dao/IReportDao.java new file mode 100644 index 0000000..724ccf3 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/dao/IReportDao.java @@ -0,0 +1,11 @@ +package com.lyms.platform.operate.web.dao; + +/** + * 报表接口 + * @Author: litao + * @Date: 2017/4/20 0020 10:04 + * @Version: V1.0 + */ +public interface IReportDao extends IBaseDao { + +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/dao/impl/BaseDaoImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/dao/impl/BaseDaoImpl.java new file mode 100644 index 0000000..f84c564 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/dao/impl/BaseDaoImpl.java @@ -0,0 +1,45 @@ +package com.lyms.platform.operate.web.dao.impl; + +import com.lyms.platform.operate.web.dao.IBaseDao; +import com.lyms.platform.operate.web.utils.SystemDataSource; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.MapListHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; + +import javax.annotation.PostConstruct; +import java.sql.SQLException; +import java.util.List; +import java.util.Map; + +/** + * @Author: litao + * @Date: 2017/4/20 0020 10:18 + * @Version: V1.0 + */ +@Repository +public class BaseDaoImpl implements IBaseDao { + + private Logger logger = LoggerFactory.getLogger(BaseDaoImpl.class); + + @Autowired + private SystemDataSource db; + + private QueryRunner qr; + + @PostConstruct + public void init() { + qr = new QueryRunner(db.getDataSource()); + } + @Override + public List> findList(String sql, List params) { + try { + return qr.query(sql, new MapListHandler(), params.toArray()); + } catch (SQLException e) { + logger.error("查询出错: sql: {}, params: {}", sql, params); + } + return null; + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/dao/impl/ReportDaoImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/dao/impl/ReportDaoImpl.java new file mode 100644 index 0000000..d995d14 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/dao/impl/ReportDaoImpl.java @@ -0,0 +1,13 @@ +package com.lyms.platform.operate.web.dao.impl; + +import com.lyms.platform.operate.web.dao.IReportDao; +import org.springframework.stereotype.Repository; + +/** + * @Author: litao + * @Date: 2017/4/20 0020 10:18 + * @Version: V1.0 + */ +@Repository +public class ReportDaoImpl extends BaseDaoImpl implements IReportDao { +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java index 2b5d418..9724a07 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java @@ -1,15 +1,13 @@ package com.lyms.platform.operate.web.service.impl; import com.lyms.platform.common.result.BaseObjectResponse; +import com.lyms.platform.operate.web.dao.IReportDao; import com.lyms.platform.operate.web.service.IReportService; -import com.lyms.platform.operate.web.utils.SystemDataSource; -import org.apache.commons.dbutils.QueryRunner; -import org.apache.commons.dbutils.handlers.MapListHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import scala.collection.mutable.StringBuilder; -import java.sql.SQLException; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @@ -23,22 +21,18 @@ import java.util.Map; public class ReportServiceImpl implements IReportService { @Autowired - private SystemDataSource db; + private IReportDao reportDao; @Override public BaseObjectResponse areaCountFacade(Date startDate, Date endDate, Integer startWeek, Integer endWeek, Integer childBirth) { BaseObjectResponse rest = new BaseObjectResponse(); - QueryRunner qr = new QueryRunner(db.getDataSource()); - try { - List> mapList = qr.query(getAreaCountFacadeSql(startDate, endDate, startWeek, endWeek, childBirth), new MapListHandler()); - rest.setData(mapList); - } catch (SQLException e) { - e.printStackTrace(); - } + List params = new ArrayList<>(); + List> mapList = reportDao.findList(getAreaCountFacadeSql(startDate, endDate, startWeek, endWeek, childBirth, params), params); + rest.setData(mapList); return rest; } - private String getAreaCountFacadeSql(Date startDate, Date endDate, Integer startWeek, Integer endWeek, Integer childBirth) { + private String getAreaCountFacadeSql(Date startDate, Date endDate, Integer startWeek, Integer endWeek, Integer childBirth, List params) { StringBuilder sql = new StringBuilder(); sql.append("SELECT B.EXAMINE_HISTORY_NUM, ") .append("COUNT(B.EXAMINE_ID) AS EXAMINE_CNT ") @@ -47,8 +41,27 @@ public class ReportServiceImpl implements IReportService { .append("ODS_D_HOSPITAL C ") .append("WHERE A.RECORD_ID=B.RECORD_ID ") .append("AND A.HOSPITAL_NO=C.HOSPITAL_NO ") - .append("AND A.HOSPITAL_NO=B.HOSPITAL_NO ") - .append("GROUP BY B.EXAMINE_HISTORY_NUM"); + .append("AND A.HOSPITAL_NO=B.HOSPITAL_NO "); + + if(childBirth != null) { + sql.append("AND A.IS_CHILDBIRTH = ? "); + params.add(childBirth); + } + + if(startDate != null && endDate != null) { + sql.append("AND A.CREATE_DATE BETWEEN ? AND ? "); + params.add(startDate); + params.add(endDate); + } + + if(startWeek != null && endWeek != null) { + sql.append("AND A.NOW_WEEKS BETWEEN ? AND ? "); + params.add(startWeek); + params.add(endWeek); + } + + sql.append("GROUP BY B.EXAMINE_HISTORY_NUM"); + return sql.toString(); } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/SystemDataSource.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/SystemDataSource.java index c64ec05..971cf9d 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/SystemDataSource.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/SystemDataSource.java @@ -60,6 +60,8 @@ public class SystemDataSource { dataSource.setTestOnReturn(false); dataSource.setFilters("stat"); + dataSource.init(); + logger.info("init datasource success"); }