diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AreaCountFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AreaCountFacade.java index 258d463..ad71518 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AreaCountFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AreaCountFacade.java @@ -894,7 +894,178 @@ public class AreaCountFacade { public BaseResponse getCheckPointCount(Integer pointType, String time, String hospitalId, String provinceId, String cityId, String areaId, Integer userId) { - String countSql = ""; + String groupBySql = ""; + String groupBySql1 = ""; + + if (StringUtils.isNotEmpty(hospitalId) || StringUtils.isNotEmpty(areaId)) + { + groupBySql=" AA.PROVINCE||';'||AA.PROVINCE_ID AS PROVINCE," + + " AA.CITY||';'||AA.CITY_ID AS CITY," + + " AA.AREA_COUNTY||';'||AA.AREA_COUNTY_ID AS AREA_COUNTY," + + " AA.HOSPITAL_NAME||';'||AA.YCY_STSTEM_ID AS HNAME," ; + groupBySql1="AA.PROVINCE||';'||AA.PROVINCE_ID, " + + " AA.CITY||';'||AA.CITY_ID, " + + " AA.AREA_COUNTY||';'||AA.AREA_COUNTY_ID, " + + " AA.HOSPITAL_NAME||';'||AA.YCY_STSTEM_ID"; + } + + else if (StringUtils.isNotEmpty(cityId)) + { + groupBySql=" AA.PROVINCE||';'||AA.PROVINCE_ID AS PROVINCE," + + " AA.CITY||';'||AA.CITY_ID AS CITY," + + " AA.AREA_COUNTY||';'||AA.AREA_COUNTY_ID AS AREA_COUNTY," ; + groupBySql1="AA.PROVINCE||';'||AA.PROVINCE_ID, " + + " AA.CITY||';'||AA.CITY_ID, " + + " AA.AREA_COUNTY||';'||AA.AREA_COUNTY_ID"; + } + else if (StringUtils.isNotEmpty(provinceId)) + { + groupBySql=" AA.PROVINCE||';'||AA.PROVINCE_ID AS PROVINCE," + + " AA.CITY||';'||AA.CITY_ID AS CITY,"; + groupBySql1="AA.PROVINCE||';'||AA.PROVINCE_ID, " + + " AA.CITY||';'||AA.CITY_ID "; + } + else + { + groupBySql=" AA.PROVINCE||';'||AA.PROVINCE_ID AS PROVINCE,"; + groupBySql1="AA.PROVINCE||';'||AA.PROVINCE_ID"; + } + + String countSql = "SELECT "+groupBySql+ + " SUM(AA.JD_NUM) AS JD_NUM,\n" + + " SUM(CJ_NUM) AS CJ_NUM,\n" + + " SUM(NUM_12) AS NUM_12,\n" + + " SUM(NUM_16) AS NUM_16,\n" + + " SUM(NUM_24) AS NUM_24,\n" + + " SUM(NUM_36) AS NUM_36,\n" + + " SUM(NUM_40) AS NUM_40\n" + + "FROM\n" + + "(\n" + + "--建档人数\n" + + "SELECT A.PROVINCE_ID,\n" + + " A.PROVINCE,\n" + + " A.CITY_ID,\n" + + " A.CITY,\n" + + " A.AREA_COUNTY_ID,\n" + + " A.AREA_COUNTY,\n" + + " A.HOSPITAL_NO,\n" + + " A.HOSPITAL_NAME,\n" + + " A.YCY_STSTEM_ID,\n" + + " COUNT(B.RECORD_ID) AS JD_NUM\n" + + "FROM ODS_D_HOSPITAL A\n" + + "INNER JOIN ODS_F_GRAVIDA_RECORD B ON A.HOSPITAL_NO=B.HOSPITAL_NO\n" + + "WHERE 1=1 "; + if (StringUtils.isNotEmpty(time)) + { + String startTime = time.split(" - ")[0]; + String endTime = time.split(" - ")[1]; + countSql+=" AND B.CREATE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; + } + if (StringUtils.isNotEmpty(provinceId)) + { + countSql += " AND A.PROVINCE_ID= '"+provinceId+"'"; + } + + if (StringUtils.isNotEmpty(cityId)) + { + countSql+= " AND A.CITY_ID= '" +cityId+"'"; + } + + if (StringUtils.isNotEmpty(areaId)) + { + countSql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; + } + if (StringUtils.isNotEmpty(hospitalId)) + { + countSql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; + } + else + { + String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); + if (StringUtils.isNotEmpty(hospitals)) + { + countSql+=" AND A.YCY_STSTEM_ID IN " +hospitals; + } + + } + countSql+= "GROUP BY A.PROVINCE_ID,\n" + + " A.PROVINCE,\n" + + " A.CITY_ID,\n" + + " A.CITY,\n" + + " A.AREA_COUNTY_ID,\n" + + " A.AREA_COUNTY,\n" + + " A.HOSPITAL_NO,\n" + + " A.HOSPITAL_NAME,\n" + + " A.YCY_STSTEM_ID\n" + + ") AA\n" + + "LEFT JOIN (\n" + + "--产检节点人数\n" + + "SELECT A.PROVINCE_ID,\n" + + " A.PROVINCE,\n" + + " A.CITY_ID,\n" + + " A.CITY,\n" + + " A.AREA_COUNTY_ID,\n" + + " A.AREA_COUNTY,\n" + + " A.HOSPITAL_NO,\n" + + " A.HOSPITAL_NAME,\n" + + " A.YCY_STSTEM_ID,\n" + + " COUNT(B.RECORD_ID) AS CJ_NUM,\n" + + " SUM(CASE WHEN B.NODE_NAME='0~12 孕周' THEN 1 ELSE 0 END) AS NUM_12,\n" + + " SUM(CASE WHEN B.NODE_NAME='16~20 孕周' THEN 1 ELSE 0 END) AS NUM_16,\n" + + " SUM(CASE WHEN B.NODE_NAME='21~24 孕周' THEN 1 ELSE 0 END) AS NUM_24,\n" + + " SUM(CASE WHEN B.NODE_NAME='28~36 孕周' THEN 1 ELSE 0 END) AS NUM_36,\n" + + " SUM(CASE WHEN B.NODE_NAME='37~ 分娩' THEN 1 ELSE 0 END) AS NUM_40\n" + + "FROM ODS_D_HOSPITAL A\n" + + "LEFT JOIN ODS_F_EXAMINE_HISTORY B ON A.HOSPITAL_NO=B.HOSPITAL_NO "; + if (pointType != null && pointType == 1){ + countSql+=" AND CC.NODE_ID=2 "; + } + countSql+= "WHERE 1=1" ; + if (StringUtils.isNotEmpty(time)) + { + String startTime = time.split(" - ")[0]; + String endTime = time.split(" - ")[1]; + countSql+=" AND B.EXAMINE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')"; + } + if (StringUtils.isNotEmpty(provinceId)) + { + countSql += " AND A.PROVINCE_ID= '"+provinceId+"'"; + } + + if (StringUtils.isNotEmpty(cityId)) + { + countSql+= " AND A.CITY_ID= '" +cityId+"'"; + } + + if (StringUtils.isNotEmpty(areaId)) + { + countSql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'"; + } + if (StringUtils.isNotEmpty(hospitalId)) + { + countSql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'"; + } + else + { + String hospitals = getPermissionStr(userId,provinceId,cityId,areaId); + if (StringUtils.isNotEmpty(hospitals)) + { + countSql+=" AND A.YCY_STSTEM_ID IN " +hospitals; + } + + } + countSql+="GROUP BY A.PROVINCE_ID,\n" + + " A.PROVINCE,\n" + + " A.CITY_ID,\n" + + " A.CITY,\n" + + " A.AREA_COUNTY_ID,\n" + + " A.AREA_COUNTY,\n" + + " A.HOSPITAL_NO,\n" + + " A.HOSPITAL_NAME,\n" + + " A.YCY_STSTEM_ID\n" + + " ) BB ON AA.HOSPITAL_NO=BB.HOSPITAL_NO\n" + + " GROUP BY ROLLUP("+groupBySql1+" ) " + + " ORDER BY 1,2,3"; @@ -1108,10 +1279,9 @@ public class AreaCountFacade { end = page * limit; } - String countSql = "SELECT COUNT(C.NAME) AS ALLCOUNT FROM ODS_F_GRAVIDA_RECORD C" + - "WHERE 1 = 1"; + String countSql = "SELECT COUNT(C.NAME) AS ALLCOUNT FROM ODS_F_GRAVIDA_RECORD C INNER JOIN ODS_F_DOMICILE_PLACE D ON C.RECORD_ID=D.RECORD_ID WHERE 1 = 1"; - String sql = "SELECT C.CREATE_DATE,\n" + + String sql = "SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT C.CREATE_DATE,\n" + " C.NAME,\n" + " C.CREATE_WEEKS,\n" + " C.CREATE_WEEKS_DAY,\n" + @@ -1120,9 +1290,9 @@ public class AreaCountFacade { " C.HOME_ADDR,\n" + " D.PROVINCE||D.CITY||D.AREA_COUNTY AS HJ_ADDR,\n" + " C.TEL_NO\n" + - "FROM ODS_F_GRAVIDA_RECORD C\n" + - "WHERE 1 = 1"; - + " FROM ODS_F_GRAVIDA_RECORD C\n" + + " INNER JOIN ODS_F_DOMICILE_PLACE D ON C.RECORD_ID=D.RECORD_ID"+ + " WHERE 1 = 1"; if (StringUtils.isNotEmpty(time)) { String startTime = time.split(" - ")[0]; @@ -1162,9 +1332,7 @@ public class AreaCountFacade { } } - sql+="INNER JOIN ODS_F_DOMICILE_PLACE D ON C.RECORD_ID=D.RECORD_ID"; - countSql+="INNER JOIN ODS_F_DOMICILE_PLACE D ON C.RECORD_ID=D.RECORD_ID"; - + sql+=") A WHERE ROWNUM <= " + end + " ) WHERE RN >= " + start; int count = 0; Object totalCountObj = JdbcUtil.getOralceSingleObjBySql(DRIVER, JDBC, NAME, PWD, countSql); @@ -1180,12 +1348,21 @@ public class AreaCountFacade { } public BaseResponse getCheckDetail(Integer pointType,String time, String hospitalId, String provinceId, String cityId, String areaId, Integer page, Integer limit, Integer userId) { + + int start = 0; + int end = 0; + if (page != null && limit != null) { + start = (page - 1) * limit + 1; + end = page * limit; + } + String countSql = "SELECT COUNT(CC.NAME) ALLCOUNT FROM ODS_F_EXAMINE_HISTORY CC\n" + " INNER JOIN ODS_D_HOSPITAL A ON A.HOSPITAL_NO=CC.HOSPITAL_NO\n" + " INNER JOIN ODS_F_GRAVIDA_RECORD B ON CC.RECORD_ID=B.RECORD_ID\n" + " WHERE 1=1 "; - - String sql = "SELECT CC.EXAMINE_DATE,\n" + +// String pageSql = "SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ("; +// pageSql+=") A WHERE ROWNUM <= " + end + " ) WHERE RN >= " + start; + String sql = "SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT CC.EXAMINE_DATE,\n" + " CC.NAME,\n" + " CC.NOW_WEEKS,\n" + " CC.NOW_WEEKS_DAY,\n" + @@ -1243,7 +1420,7 @@ public class AreaCountFacade { } } - + sql+=") A WHERE ROWNUM <= " + end + " ) WHERE RN >= " + start; int count = 0; Object totalCountObj = JdbcUtil.getOralceSingleObjBySql(DRIVER, JDBC, NAME, PWD, countSql); if (totalCountObj != null)