diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java new file mode 100644 index 0000000..97f03c6 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ReportController.java @@ -0,0 +1,41 @@ +package com.lyms.platform.operate.web.controller; + +import com.lyms.platform.common.base.BaseController; +import com.lyms.platform.common.result.BaseObjectResponse; +import com.lyms.platform.operate.web.service.IReportService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.Date; + +/** + * @Author: litao + * @Date: 2017/4/19 0019 17:57 + * @Version: V1.0 + */ +@Controller +@RequestMapping("/report") +public class ReportController extends BaseController { + + @Autowired + private IReportService reportService; + + /** + * 产检次数分布统计 + * @param startDate 建档开始时间 + * @param endDate 建档结束时间 + * @param startWeek 孕周开始时间 + * @param endWeek 孕周结束时间 + * @param childBirth 统计范围 1=孕妇 3=产妇 不传=全部 + * @return + */ + @RequestMapping(method = RequestMethod.GET,value = "/getCheckStatistics") + @ResponseBody + public BaseObjectResponse getCheckStatistics(Date startDate, Date endDate, + Integer startWeek, Integer endWeek, Integer childBirth) { + return reportService.areaCountFacade(startDate, endDate, startWeek, endWeek, childBirth); + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IReportService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IReportService.java new file mode 100644 index 0000000..d4c152b --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IReportService.java @@ -0,0 +1,25 @@ +package com.lyms.platform.operate.web.service; + +import com.lyms.platform.common.result.BaseObjectResponse; + +import java.util.Date; + +/** + * 报表service + * @Author: litao + * @Date: 2017/4/19 0019 17:53 + * @Version: V1.0 + */ +public interface IReportService { + + /** + * 产检次数分布统计 + * @param startDate + * @param endDate + * @param startWeek + * @param endWeek + * @param childBirth + * @return + */ + BaseObjectResponse areaCountFacade(Date startDate, Date endDate, Integer startWeek, Integer endWeek, Integer childBirth); +} 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 new file mode 100644 index 0000000..2b5d418 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/ReportServiceImpl.java @@ -0,0 +1,54 @@ +package com.lyms.platform.operate.web.service.impl; + +import com.lyms.platform.common.result.BaseObjectResponse; +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.Date; +import java.util.List; +import java.util.Map; + +/** + * @Author: litao + * @Date: 2017/4/19 0019 17:54 + * @Version: V1.0 + */ +@Service +public class ReportServiceImpl implements IReportService { + + @Autowired + private SystemDataSource db; + + @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(); + } + return rest; + } + + private String getAreaCountFacadeSql(Date startDate, Date endDate, Integer startWeek, Integer endWeek, Integer childBirth) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT B.EXAMINE_HISTORY_NUM, ") + .append("COUNT(B.EXAMINE_ID) AS EXAMINE_CNT ") + .append("FROM ODS_F_GRAVIDA_RECORD A, ") + .append("ODS_F_EXAMINE_HISTORY_ASC B, ") + .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"); + 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 new file mode 100644 index 0000000..c64ec05 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/SystemDataSource.java @@ -0,0 +1,69 @@ +package com.lyms.platform.operate.web.utils; + +import com.alibaba.druid.pool.DruidDataSource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import javax.sql.DataSource; + +/** + * @Author: litao + * @Date: 2017/4/19 0019 15:23 + * @Version: V1.0 + */ +@Component +public class SystemDataSource { + + private Logger logger = LoggerFactory.getLogger(SystemDataSource.class); + + @Value("${his_version}") + private String version; + + @Value("${area_count_url}") + private String areaCountUrl; + + @Value("${jdbc.${his_version}.driver}") + private String driver; + + @Value("${jdbc.${his_version}.url}") + private String url; + + @Value("${jdbc.${his_version}.username}") + private String username; + + @Value("${jdbc.${his_version}.password}") + private String password; + + private DruidDataSource dataSource; + + @PostConstruct + public void init() throws Exception{ + Class.forName(driver); + dataSource = new DruidDataSource(); + dataSource.setPassword(password); + dataSource.setUsername(username); + dataSource.setDriverClassName(driver); + dataSource.setUrl(url); + + dataSource.setMaxActive(30); + dataSource.setInitialSize(1); + dataSource.setMaxWait(60000); + dataSource.setMinIdle(1); + dataSource.setTimeBetweenEvictionRunsMillis(3000); + dataSource.setMinEvictableIdleTimeMillis(300000); + dataSource.setValidationQuery("SELECT 1 FROM DUAL"); + dataSource.setTestWhileIdle(true); + dataSource.setTestOnBorrow(false); + dataSource.setTestOnReturn(false); + dataSource.setFilters("stat"); + + logger.info("init datasource success"); + } + + public DataSource getDataSource() { + return dataSource; + } +} \ No newline at end of file diff --git a/platform-operate-api/src/main/resources/config.properties b/platform-operate-api/src/main/resources/config.properties index 545d03a..c6f8818 100644 --- a/platform-operate-api/src/main/resources/config.properties +++ b/platform-operate-api/src/main/resources/config.properties @@ -27,5 +27,38 @@ postser_url=http://devmmsapi.qinhuangdao.healthbaby.com.cn:18019/initdata/reser #区域统计地址 area_count_url=119.90.57.26:1522 +#数据源相关配置 +jdbc.0.driver=oracle.jdbc.driver.OracleDriver +jdbc.0.url=jdbc:oracle:thin:@119.90.57.26:1522:orcl +jdbc.0.username=LYMS_ODS +jdbc.0.password=Welcome1 +jdbc.1.driver=oracle.jdbc.driver.OracleDriver +jdbc.1.url=jdbc:oracle:thin:@119.90.57.26:1522:orcl +jdbc.1.username=LYMS_ODS +jdbc.1.password=Welcome1 +jdbc.2.driver=oracle.jdbc.driver.OracleDriver +jdbc.2.url=jdbc:oracle:thin:@119.90.57.26:1522:orcl +jdbc.2.username=LYMS_ODS +jdbc.2.password=Welcome1 + +jdbc.3.driver=oracle.jdbc.driver.OracleDriver +jdbc.3.url=jdbc:oracle:thin:@119.90.57.26:1522:orcl +jdbc.3.username=LYMS_ODS +jdbc.3.password=Welcome1 + +jdbc.4.driver=oracle.jdbc.driver.OracleDriver +jdbc.4.url=jdbc:oracle:thin:@119.90.57.26:1522:orcl +jdbc.4.username=LYMS_ODS +jdbc.4.password=Welcome1 + +jdbc.5.driver=oracle.jdbc.driver.OracleDriver +jdbc.5.url=jdbc:oracle:thin:@119.90.57.26:1522:orcl +jdbc.5.username=LYMS_ODS +jdbc.5.password=Welcome1 + +jdbc.6.driver=oracle.jdbc.driver.OracleDriver +jdbc.6.url=jdbc:oracle:thin:@119.90.57.26:1522:orcl +jdbc.6.username=LYMS_ODS +jdbc.6.password=Welcome1 diff --git a/platform-operate-api/src/main/resources/spring/applicationContext_biz_patient.xml b/platform-operate-api/src/main/resources/spring/applicationContext_biz_patient.xml index 0635cad..8039780 100644 --- a/platform-operate-api/src/main/resources/spring/applicationContext_biz_patient.xml +++ b/platform-operate-api/src/main/resources/spring/applicationContext_biz_patient.xml @@ -16,6 +16,7 @@ classpath:database.properties + classpath:config.properties