Commit 8db08e2960c0bcdb194ccc15d0402bb243ee069b
1 parent
e389f90548
Exists in
master
and in
6 other branches
区域产检券\产检节点统计
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) |