Commit 8db08e2960c0bcdb194ccc15d0402bb243ee069b

Authored by liquanyu
1 parent e389f90548

区域产检券\产检节点统计

Showing 1 changed file with 190 additions and 13 deletions

platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AreaCountFacade.java View file @ 8db08e2
... ... @@ -894,10 +894,181 @@
894 894 public BaseResponse getCheckPointCount(Integer pointType, String time, String hospitalId, String provinceId, String cityId, String areaId, Integer userId) {
895 895  
896 896  
897   - String countSql = "";
  897 + String groupBySql = "";
  898 + String groupBySql1 = "";
898 899  
  900 + if (StringUtils.isNotEmpty(hospitalId) || StringUtils.isNotEmpty(areaId))
  901 + {
  902 + groupBySql=" AA.PROVINCE||';'||AA.PROVINCE_ID AS PROVINCE," +
  903 + " AA.CITY||';'||AA.CITY_ID AS CITY," +
  904 + " AA.AREA_COUNTY||';'||AA.AREA_COUNTY_ID AS AREA_COUNTY," +
  905 + " AA.HOSPITAL_NAME||';'||AA.YCY_STSTEM_ID AS HNAME," ;
  906 + groupBySql1="AA.PROVINCE||';'||AA.PROVINCE_ID, " +
  907 + " AA.CITY||';'||AA.CITY_ID, " +
  908 + " AA.AREA_COUNTY||';'||AA.AREA_COUNTY_ID, " +
  909 + " AA.HOSPITAL_NAME||';'||AA.YCY_STSTEM_ID";
  910 + }
899 911  
  912 + else if (StringUtils.isNotEmpty(cityId))
  913 + {
  914 + groupBySql=" AA.PROVINCE||';'||AA.PROVINCE_ID AS PROVINCE," +
  915 + " AA.CITY||';'||AA.CITY_ID AS CITY," +
  916 + " AA.AREA_COUNTY||';'||AA.AREA_COUNTY_ID AS AREA_COUNTY," ;
  917 + groupBySql1="AA.PROVINCE||';'||AA.PROVINCE_ID, " +
  918 + " AA.CITY||';'||AA.CITY_ID, " +
  919 + " AA.AREA_COUNTY||';'||AA.AREA_COUNTY_ID";
  920 + }
  921 + else if (StringUtils.isNotEmpty(provinceId))
  922 + {
  923 + groupBySql=" AA.PROVINCE||';'||AA.PROVINCE_ID AS PROVINCE," +
  924 + " AA.CITY||';'||AA.CITY_ID AS CITY,";
  925 + groupBySql1="AA.PROVINCE||';'||AA.PROVINCE_ID, " +
  926 + " AA.CITY||';'||AA.CITY_ID ";
  927 + }
  928 + else
  929 + {
  930 + groupBySql=" AA.PROVINCE||';'||AA.PROVINCE_ID AS PROVINCE,";
  931 + groupBySql1="AA.PROVINCE||';'||AA.PROVINCE_ID";
  932 + }
900 933  
  934 + String countSql = "SELECT "+groupBySql+
  935 + " SUM(AA.JD_NUM) AS JD_NUM,\n" +
  936 + " SUM(CJ_NUM) AS CJ_NUM,\n" +
  937 + " SUM(NUM_12) AS NUM_12,\n" +
  938 + " SUM(NUM_16) AS NUM_16,\n" +
  939 + " SUM(NUM_24) AS NUM_24,\n" +
  940 + " SUM(NUM_36) AS NUM_36,\n" +
  941 + " SUM(NUM_40) AS NUM_40\n" +
  942 + "FROM\n" +
  943 + "(\n" +
  944 + "--建档人数\n" +
  945 + "SELECT A.PROVINCE_ID,\n" +
  946 + " A.PROVINCE,\n" +
  947 + " A.CITY_ID,\n" +
  948 + " A.CITY,\n" +
  949 + " A.AREA_COUNTY_ID,\n" +
  950 + " A.AREA_COUNTY,\n" +
  951 + " A.HOSPITAL_NO,\n" +
  952 + " A.HOSPITAL_NAME,\n" +
  953 + " A.YCY_STSTEM_ID,\n" +
  954 + " COUNT(B.RECORD_ID) AS JD_NUM\n" +
  955 + "FROM ODS_D_HOSPITAL A\n" +
  956 + "INNER JOIN ODS_F_GRAVIDA_RECORD B ON A.HOSPITAL_NO=B.HOSPITAL_NO\n" +
  957 + "WHERE 1=1 ";
  958 + if (StringUtils.isNotEmpty(time))
  959 + {
  960 + String startTime = time.split(" - ")[0];
  961 + String endTime = time.split(" - ")[1];
  962 + countSql+=" AND B.CREATE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')";
  963 + }
  964 + if (StringUtils.isNotEmpty(provinceId))
  965 + {
  966 + countSql += " AND A.PROVINCE_ID= '"+provinceId+"'";
  967 + }
  968 +
  969 + if (StringUtils.isNotEmpty(cityId))
  970 + {
  971 + countSql+= " AND A.CITY_ID= '" +cityId+"'";
  972 + }
  973 +
  974 + if (StringUtils.isNotEmpty(areaId))
  975 + {
  976 + countSql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'";
  977 + }
  978 + if (StringUtils.isNotEmpty(hospitalId))
  979 + {
  980 + countSql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'";
  981 + }
  982 + else
  983 + {
  984 + String hospitals = getPermissionStr(userId,provinceId,cityId,areaId);
  985 + if (StringUtils.isNotEmpty(hospitals))
  986 + {
  987 + countSql+=" AND A.YCY_STSTEM_ID IN " +hospitals;
  988 + }
  989 +
  990 + }
  991 + countSql+= "GROUP BY A.PROVINCE_ID,\n" +
  992 + " A.PROVINCE,\n" +
  993 + " A.CITY_ID,\n" +
  994 + " A.CITY,\n" +
  995 + " A.AREA_COUNTY_ID,\n" +
  996 + " A.AREA_COUNTY,\n" +
  997 + " A.HOSPITAL_NO,\n" +
  998 + " A.HOSPITAL_NAME,\n" +
  999 + " A.YCY_STSTEM_ID\n" +
  1000 + ") AA\n" +
  1001 + "LEFT JOIN (\n" +
  1002 + "--产检节点人数\n" +
  1003 + "SELECT A.PROVINCE_ID,\n" +
  1004 + " A.PROVINCE,\n" +
  1005 + " A.CITY_ID,\n" +
  1006 + " A.CITY,\n" +
  1007 + " A.AREA_COUNTY_ID,\n" +
  1008 + " A.AREA_COUNTY,\n" +
  1009 + " A.HOSPITAL_NO,\n" +
  1010 + " A.HOSPITAL_NAME,\n" +
  1011 + " A.YCY_STSTEM_ID,\n" +
  1012 + " COUNT(B.RECORD_ID) AS CJ_NUM,\n" +
  1013 + " SUM(CASE WHEN B.NODE_NAME='0~12 孕周' THEN 1 ELSE 0 END) AS NUM_12,\n" +
  1014 + " SUM(CASE WHEN B.NODE_NAME='16~20 孕周' THEN 1 ELSE 0 END) AS NUM_16,\n" +
  1015 + " SUM(CASE WHEN B.NODE_NAME='21~24 孕周' THEN 1 ELSE 0 END) AS NUM_24,\n" +
  1016 + " SUM(CASE WHEN B.NODE_NAME='28~36 孕周' THEN 1 ELSE 0 END) AS NUM_36,\n" +
  1017 + " SUM(CASE WHEN B.NODE_NAME='37~ 分娩' THEN 1 ELSE 0 END) AS NUM_40\n" +
  1018 + "FROM ODS_D_HOSPITAL A\n" +
  1019 + "LEFT JOIN ODS_F_EXAMINE_HISTORY B ON A.HOSPITAL_NO=B.HOSPITAL_NO ";
  1020 + if (pointType != null && pointType == 1){
  1021 + countSql+=" AND CC.NODE_ID=2 ";
  1022 + }
  1023 + countSql+= "WHERE 1=1" ;
  1024 + if (StringUtils.isNotEmpty(time))
  1025 + {
  1026 + String startTime = time.split(" - ")[0];
  1027 + String endTime = time.split(" - ")[1];
  1028 + countSql+=" AND B.EXAMINE_DATE BETWEEN TO_DATE('"+startTime+"','yyyy-mm-dd') AND TO_DATE('"+endTime+"','yyyy-mm-dd')";
  1029 + }
  1030 + if (StringUtils.isNotEmpty(provinceId))
  1031 + {
  1032 + countSql += " AND A.PROVINCE_ID= '"+provinceId+"'";
  1033 + }
  1034 +
  1035 + if (StringUtils.isNotEmpty(cityId))
  1036 + {
  1037 + countSql+= " AND A.CITY_ID= '" +cityId+"'";
  1038 + }
  1039 +
  1040 + if (StringUtils.isNotEmpty(areaId))
  1041 + {
  1042 + countSql+= " AND A.AREA_COUNTY_ID= '" +areaId+"'";
  1043 + }
  1044 + if (StringUtils.isNotEmpty(hospitalId))
  1045 + {
  1046 + countSql+=" AND A.YCY_STSTEM_ID= '" +hospitalId+"'";
  1047 + }
  1048 + else
  1049 + {
  1050 + String hospitals = getPermissionStr(userId,provinceId,cityId,areaId);
  1051 + if (StringUtils.isNotEmpty(hospitals))
  1052 + {
  1053 + countSql+=" AND A.YCY_STSTEM_ID IN " +hospitals;
  1054 + }
  1055 +
  1056 + }
  1057 + countSql+="GROUP BY A.PROVINCE_ID,\n" +
  1058 + " A.PROVINCE,\n" +
  1059 + " A.CITY_ID,\n" +
  1060 + " A.CITY,\n" +
  1061 + " A.AREA_COUNTY_ID,\n" +
  1062 + " A.AREA_COUNTY,\n" +
  1063 + " A.HOSPITAL_NO,\n" +
  1064 + " A.HOSPITAL_NAME,\n" +
  1065 + " A.YCY_STSTEM_ID\n" +
  1066 + " ) BB ON AA.HOSPITAL_NO=BB.HOSPITAL_NO\n" +
  1067 + " GROUP BY ROLLUP("+groupBySql1+" ) " +
  1068 + " ORDER BY 1,2,3";
  1069 +
  1070 +
  1071 +
901 1072 String sql = "SELECT AA.PROVINCE,AA.PROVINCE_ID,\n" +
902 1073 " AA.CITY,AA.CITY_ID,\n" +
903 1074 " AA.AREA_COUNTY,AA.AREA_COUNTY_ID ,\n" +
904 1075  
... ... @@ -1108,10 +1279,9 @@
1108 1279 end = page * limit;
1109 1280 }
1110 1281  
1111   - String countSql = "SELECT COUNT(C.NAME) AS ALLCOUNT FROM ODS_F_GRAVIDA_RECORD C" +
1112   - "WHERE 1 = 1";
  1282 + 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";
1113 1283  
1114   - String sql = "SELECT C.CREATE_DATE,\n" +
  1284 + String sql = "SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT C.CREATE_DATE,\n" +
1115 1285 " C.NAME,\n" +
1116 1286 " C.CREATE_WEEKS,\n" +
1117 1287 " C.CREATE_WEEKS_DAY,\n" +
... ... @@ -1120,9 +1290,9 @@
1120 1290 " C.HOME_ADDR,\n" +
1121 1291 " D.PROVINCE||D.CITY||D.AREA_COUNTY AS HJ_ADDR,\n" +
1122 1292 " C.TEL_NO\n" +
1123   - "FROM ODS_F_GRAVIDA_RECORD C\n" +
1124   - "WHERE 1 = 1";
1125   -
  1293 + " FROM ODS_F_GRAVIDA_RECORD C\n" +
  1294 + " INNER JOIN ODS_F_DOMICILE_PLACE D ON C.RECORD_ID=D.RECORD_ID"+
  1295 + " WHERE 1 = 1";
1126 1296 if (StringUtils.isNotEmpty(time))
1127 1297 {
1128 1298 String startTime = time.split(" - ")[0];
1129 1299  
... ... @@ -1162,10 +1332,8 @@
1162 1332 }
1163 1333  
1164 1334 }
1165   - sql+="INNER JOIN ODS_F_DOMICILE_PLACE D ON C.RECORD_ID=D.RECORD_ID";
1166   - countSql+="INNER JOIN ODS_F_DOMICILE_PLACE D ON C.RECORD_ID=D.RECORD_ID";
  1335 + sql+=") A WHERE ROWNUM <= " + end + " ) WHERE RN >= " + start;
1167 1336  
1168   -
1169 1337 int count = 0;
1170 1338 Object totalCountObj = JdbcUtil.getOralceSingleObjBySql(DRIVER, JDBC, NAME, PWD, countSql);
1171 1339 if (totalCountObj != null)
1172 1340  
... ... @@ -1180,12 +1348,21 @@
1180 1348 }
1181 1349  
1182 1350 public BaseResponse getCheckDetail(Integer pointType,String time, String hospitalId, String provinceId, String cityId, String areaId, Integer page, Integer limit, Integer userId) {
  1351 +
  1352 + int start = 0;
  1353 + int end = 0;
  1354 + if (page != null && limit != null) {
  1355 + start = (page - 1) * limit + 1;
  1356 + end = page * limit;
  1357 + }
  1358 +
1183 1359 String countSql = "SELECT COUNT(CC.NAME) ALLCOUNT FROM ODS_F_EXAMINE_HISTORY CC\n" +
1184 1360 " INNER JOIN ODS_D_HOSPITAL A ON A.HOSPITAL_NO=CC.HOSPITAL_NO\n" +
1185 1361 " INNER JOIN ODS_F_GRAVIDA_RECORD B ON CC.RECORD_ID=B.RECORD_ID\n" +
1186 1362 " WHERE 1=1 ";
1187   -
1188   - String sql = "SELECT CC.EXAMINE_DATE,\n" +
  1363 +// String pageSql = "SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (";
  1364 +// pageSql+=") A WHERE ROWNUM <= " + end + " ) WHERE RN >= " + start;
  1365 + String sql = "SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT CC.EXAMINE_DATE,\n" +
1189 1366 " CC.NAME,\n" +
1190 1367 " CC.NOW_WEEKS,\n" +
1191 1368 " CC.NOW_WEEKS_DAY,\n" +
... ... @@ -1243,7 +1420,7 @@
1243 1420 }
1244 1421  
1245 1422 }
1246   -
  1423 + sql+=") A WHERE ROWNUM <= " + end + " ) WHERE RN >= " + start;
1247 1424 int count = 0;
1248 1425 Object totalCountObj = JdbcUtil.getOralceSingleObjBySql(DRIVER, JDBC, NAME, PWD, countSql);
1249 1426 if (totalCountObj != null)