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