Commit b4083842a6fdc9bd9a191c0c711b08ffdb750e57
1 parent
47abd1a5df
Exists in
master
and in
6 other branches
数据同步
Showing 7 changed files with 198 additions and 46 deletions
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MatDeliverController.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PregnantBuildController.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SaveByV2ThreadPoolFacade.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SyncV2MatdelRequest.java
- platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SyncV2HistoryWorkerx.java
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MatDeliverController.java
View file @
b408384
| ... | ... | @@ -15,10 +15,7 @@ |
| 15 | 15 | import com.lyms.platform.operate.web.facade.AntenatalExaminationFacade; |
| 16 | 16 | import com.lyms.platform.operate.web.facade.AutoMatchFacade; |
| 17 | 17 | import com.lyms.platform.operate.web.facade.MatDeliverFacade; |
| 18 | -import com.lyms.platform.operate.web.request.ChildbirthManagerRequest; | |
| 19 | -import com.lyms.platform.operate.web.request.MatDeliverAddRequest; | |
| 20 | -import com.lyms.platform.operate.web.request.MatDeliverQueryRequest; | |
| 21 | -import com.lyms.platform.operate.web.request.NewBabyManagerRequest; | |
| 18 | +import com.lyms.platform.operate.web.request.*; | |
| 22 | 19 | import com.lyms.platform.operate.web.result.*; |
| 23 | 20 | import com.lyms.platform.operate.web.utils.CollectionUtils; |
| 24 | 21 | import com.lyms.platform.operate.web.utils.CommonsHelper; |
| ... | ... | @@ -98,6 +95,18 @@ |
| 98 | 95 | if (StringUtils.isNotEmpty(deliverAddRequest.getCouponCode())) { |
| 99 | 96 | baseResponse.setObject(couponService.getPatientsInfoByCode(deliverAddRequest.getCouponCode())); |
| 100 | 97 | } |
| 98 | + return baseResponse; | |
| 99 | + } | |
| 100 | + | |
| 101 | + /** | |
| 102 | + * 增加分娩记录 | |
| 103 | + * | |
| 104 | + * @return 返回 | |
| 105 | + */ | |
| 106 | + @RequestMapping(value = "/v2/batch/matdel", method = RequestMethod.POST) | |
| 107 | + @ResponseBody | |
| 108 | + public BaseResponse batchMatdelByV2(@Valid @RequestBody SyncV2MatdelRequest param) { | |
| 109 | + BaseResponse baseResponse = matDeliverFacade.batchMatdelByV2(param, Integer.parseInt(param.getUserId())); | |
| 101 | 110 | return baseResponse; |
| 102 | 111 | } |
| 103 | 112 |
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PregnantBuildController.java
View file @
b408384
| ... | ... | @@ -133,13 +133,6 @@ |
| 133 | 133 | |
| 134 | 134 | return bookbuildingFacade.addPregnantBookbuildingV2(param, Integer.parseInt(param.getBookbuildingDoctor()), false); |
| 135 | 135 | } |
| 136 | - //测试 | |
| 137 | - @RequestMapping(method = RequestMethod.POST, value = "/testv2url") | |
| 138 | - @ResponseBody | |
| 139 | - public BaseResponse sync_to_v2_url( @RequestBody JSONObject param) { | |
| 140 | - System.out.println(param); | |
| 141 | - return new BaseResponse(param.toString(), 666); | |
| 142 | - } | |
| 143 | 136 | |
| 144 | 137 | /** |
| 145 | 138 | * 将v2.0的历史数据保存到当前库中 |
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java
View file @
b408384
| ... | ... | @@ -2354,8 +2354,6 @@ |
| 2354 | 2354 | * @return |
| 2355 | 2355 | */ |
| 2356 | 2356 | private YunBookbuildingAddRequest getYunBookbuildingAddRequest(SyncV2YunBookbuildingRequest param) { |
| 2357 | - // TODO 2019/6/7 14:07 dongqing 修改 | |
| 2358 | - | |
| 2359 | 2357 | //丈夫信息是否必须,映射 |
| 2360 | 2358 | if (param.getReqHusbandInt() == 1) { |
| 2361 | 2359 | param.setReqHusband(true); |
| 2362 | 2360 | |
| ... | ... | @@ -2364,17 +2362,10 @@ |
| 2364 | 2362 | } else { |
| 2365 | 2363 | param.setReqHusband(null); |
| 2366 | 2364 | } |
| 2367 | - param.setHospitalId("todo"); | |
| 2365 | + param.setHospitalId("216"); | |
| 2368 | 2366 | return param; |
| 2369 | 2367 | } |
| 2370 | 2368 | |
| 2371 | - /* | |
| 2372 | - WHERE TRUNC(T.P_FILINGTIME) between TO_DATE('" + startTime + "','YYYY-MM-DD') AND TO_DATE('" + endTime + "','YYYY-MM-DD') " + | |
| 2373 | - "and pdr.p_no is null " + | |
| 2374 | - "and ( P_ADDRESSCOUNTY='160' " +//居住地区(桃城区) | |
| 2375 | - "OR P_POSTPARTUMCOUNTY='160' " +//产后区县(桃城区) | |
| 2376 | - "OR P_RRCOUNTY ='160')"; | |
| 2377 | - */ | |
| 2378 | 2369 | public static Connection getConnection() { |
| 2379 | 2370 | Connection connection; |
| 2380 | 2371 | try { |
| ... | ... | @@ -2386,20 +2377,6 @@ |
| 2386 | 2377 | } |
| 2387 | 2378 | |
| 2388 | 2379 | return connection; |
| 2389 | - } | |
| 2390 | - | |
| 2391 | - public static void main(String[] args) throws SQLException { | |
| 2392 | - Connection connection = getConnection(); | |
| 2393 | - PreparedStatement preparedStatement = connection.prepareStatement("select * from MOMMY_PATIENT"); | |
| 2394 | - ResultSet resultSet = preparedStatement.executeQuery(); | |
| 2395 | - ResultSetMetaData metaData = resultSet.getMetaData(); | |
| 2396 | - int i = 1; | |
| 2397 | - while (resultSet.next()) { | |
| 2398 | - String tableName = metaData.getColumnName(++i); | |
| 2399 | - System.out.println(tableName); | |
| 2400 | - // System.out.println(resultSet.getString(tableName)); | |
| 2401 | - } | |
| 2402 | - | |
| 2403 | 2380 | } |
| 2404 | 2381 | } |
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java
View file @
b408384
| ... | ... | @@ -40,11 +40,18 @@ |
| 40 | 40 | import org.springframework.beans.factory.annotation.Autowired; |
| 41 | 41 | import org.springframework.beans.factory.annotation.Qualifier; |
| 42 | 42 | import org.springframework.data.domain.Sort; |
| 43 | +import org.springframework.data.mongodb.core.MongoTemplate; | |
| 44 | +import org.springframework.data.mongodb.core.query.Criteria; | |
| 45 | +import org.springframework.data.mongodb.core.query.Query; | |
| 43 | 46 | import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; |
| 44 | 47 | import org.springframework.stereotype.Component; |
| 45 | 48 | |
| 46 | 49 | import javax.servlet.http.HttpServletResponse; |
| 47 | 50 | import java.io.IOException; |
| 51 | +import java.sql.Connection; | |
| 52 | +import java.sql.PreparedStatement; | |
| 53 | +import java.sql.ResultSet; | |
| 54 | +import java.sql.SQLException; | |
| 48 | 55 | import java.text.ParseException; |
| 49 | 56 | import java.text.SimpleDateFormat; |
| 50 | 57 | import java.util.*; |
| ... | ... | @@ -145,6 +152,9 @@ |
| 145 | 152 | @Autowired |
| 146 | 153 | private AreaCountFacade areaCountFacade; |
| 147 | 154 | |
| 155 | + @Autowired | |
| 156 | + private MongoTemplate mongoTemplate; | |
| 157 | + | |
| 148 | 158 | static { |
| 149 | 159 | ONE_ENUMS.put(0, "长"); |
| 150 | 160 | ONE_ENUMS.put(1, "次"); |
| ... | ... | @@ -2906,5 +2916,133 @@ |
| 2906 | 2916 | return list; |
| 2907 | 2917 | } |
| 2908 | 2918 | |
| 2919 | + /** | |
| 2920 | + * 同步v2的分娩数据 | |
| 2921 | + * | |
| 2922 | + * @param param | |
| 2923 | + * @param id | |
| 2924 | + * @return | |
| 2925 | + */ | |
| 2926 | + public BaseResponse batchMatdelByV2(SyncV2MatdelRequest param, final Integer id) { | |
| 2927 | + Connection connection = BookbuildingFacade.getConnection(); | |
| 2928 | + String sql = "select * " + | |
| 2929 | + "from V_SYNC_TO_V3_PDR pdr " + | |
| 2930 | + "where pdr.PDR_CHILDBIRTHDAY > sysdate - 290 " + | |
| 2931 | + "and to_char(pdr.PDR_CHILDBIRTHDAY,'YYYY-MM') BETWEEN '"+param.getStartTime()+ "' and '"+ param.getEndTime() +"'"; | |
| 2932 | + List<MatDeliverAddRequest> list = new ArrayList<MatDeliverAddRequest>(1024); | |
| 2933 | + try { | |
| 2934 | + PreparedStatement preparedStatement = connection.prepareStatement(sql); | |
| 2935 | + ResultSet rs = preparedStatement.executeQuery(); | |
| 2936 | + | |
| 2937 | + while (rs.next()) { | |
| 2938 | + MatDeliverAddRequest matDeliverAddRequest = new MatDeliverAddRequest(); | |
| 2939 | + List<MatDeliverAddRequest.Baby> babies = new ArrayList<>(); | |
| 2940 | + String pCardno = rs.getString("P_CARDNO"); | |
| 2941 | + if (com.lyms.platform.common.utils.StringUtils.isEmpty(pCardno)){ | |
| 2942 | + System.out.println("证件号为空"); | |
| 2943 | + continue; | |
| 2944 | + } | |
| 2945 | + Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("pregnantCertificateNum").is(pCardno)), Patients.class); | |
| 2946 | + if (patients == null) { | |
| 2947 | + System.out.println("没有建档数据"); | |
| 2948 | + continue; | |
| 2949 | + } | |
| 2950 | + matDeliverAddRequest.setParentId(patients.getId()); | |
| 2951 | + matDeliverAddRequest.setPid(patients.getPid()); | |
| 2952 | + Date childbirthday = rs.getDate("PDR_CHILDBIRTHDAY"); | |
| 2953 | + String pdrGestationalweeks = rs.getString("PDR_GESTATIONALWEEKS"); | |
| 2954 | + int pdrIrenum = rs.getInt("PDR_IRENUM"); | |
| 2955 | + String pdrPlacentanum = rs.getString("PDR_PLACENTANUM"); | |
| 2956 | + //String pdrDeliverorganizationid = rs.getString("PDR_DELIVERORGANIZATIONID"); | |
| 2957 | + //String pdrMidwife = rs.getString("PDR_MIDWIFE"); | |
| 2958 | + //Date pdrOpertime = rs.getDate("PDR_OPERTIME"); | |
| 2959 | + //String pNo = rs.getString("P_NO"); | |
| 2960 | + String pdrId = rs.getString("PDR_ID"); | |
| 2961 | + if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(pdrId)) { | |
| 2962 | + String sqlBaby = "select * from V_SYNC_TO_V3_BABY baby where baby.NB_PDRID = '" + pdrId +"'"; | |
| 2963 | + PreparedStatement statement = connection.prepareStatement(sqlBaby); | |
| 2964 | + ResultSet resultSet = statement.executeQuery(); | |
| 2965 | + while (resultSet.next()) { | |
| 2966 | + MatDeliverAddRequest.Baby baby = new MatDeliverAddRequest.Baby(); | |
| 2967 | + Date nbChildbirthday = resultSet.getDate("NB_CHILDBIRTHDAY"); | |
| 2968 | + String nbChantype = resultSet.getString("NB_CHANTYPE"); | |
| 2969 | + String nbChildsex = resultSet.getString("NB_CHILDSEX"); | |
| 2970 | + double nbChildweight = resultSet.getDouble("NB_CHILDWEIGHT"); | |
| 2971 | + String nbLength = resultSet.getString("NB_LENGTH"); | |
| 2972 | + baby.setDueTime(DateUtil.getymdhm(nbChildbirthday)); | |
| 2973 | + | |
| 2974 | + baby.setPregnancyOut(getPregnancyOutByV2(nbChantype)); | |
| 2975 | + baby.setBabyGender(nbChildsex); | |
| 2976 | + baby.setBabyWeight(nbChildweight+""); | |
| 2977 | + baby.setBabyHeight(nbLength); | |
| 2978 | + babies.add(baby); | |
| 2979 | + } | |
| 2980 | + } | |
| 2981 | + matDeliverAddRequest.setBabies(babies); | |
| 2982 | + matDeliverAddRequest.setDueDate(DateUtil.getyyyy_MM_dd(childbirthday)); | |
| 2983 | + matDeliverAddRequest.setDueWeek(pdrGestationalweeks); | |
| 2984 | + // TODO 2019/6/9 14:53 dongqing 胎数 | |
| 2985 | + matDeliverAddRequest.setTireNumber(pdrIrenum); | |
| 2986 | + // TODO 2019/6/9 14:53 dongqing 胎盘 | |
| 2987 | + matDeliverAddRequest.setPlacenta(pdrPlacentanum); | |
| 2988 | + // TODO 2019/6/9 14:54 dongqing 分娩医院 | |
| 2989 | + matDeliverAddRequest.setFmHospital("216"); | |
| 2990 | + // TODO 2019/6/9 14:55 dongqing 接生者 | |
| 2991 | + matDeliverAddRequest.setDeliverDoctor(""); | |
| 2992 | + list.add(matDeliverAddRequest); | |
| 2993 | + } | |
| 2994 | + | |
| 2995 | + } catch (SQLException e) { | |
| 2996 | + e.printStackTrace(); | |
| 2997 | + }finally { | |
| 2998 | + try { | |
| 2999 | + connection.close(); | |
| 3000 | + } catch (SQLException e) { | |
| 3001 | + e.printStackTrace(); | |
| 3002 | + } | |
| 3003 | + } | |
| 3004 | + | |
| 3005 | + ExecutorService service = new ThreadPoolExecutor(5, 10, 9000, TimeUnit.MILLISECONDS, | |
| 3006 | + new ArrayBlockingQueue<Runnable>(1), | |
| 3007 | + new RejectedExecutionHandler() { | |
| 3008 | + @Override | |
| 3009 | + public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { | |
| 3010 | + throw new RuntimeException(); | |
| 3011 | + } | |
| 3012 | + }); | |
| 3013 | + for (final MatDeliverAddRequest request : list) { | |
| 3014 | + service.execute(new Runnable() { | |
| 3015 | + @Override | |
| 3016 | + public void run() { | |
| 3017 | + addOrUpdateMatDeliver(request, id); | |
| 3018 | + } | |
| 3019 | + }); | |
| 3020 | + } | |
| 3021 | + service.shutdown(); | |
| 3022 | + return null; | |
| 3023 | + } | |
| 3024 | + | |
| 3025 | + /** | |
| 3026 | + * 解决v2 和v3码表不一致的问题 | |
| 3027 | + * | |
| 3028 | + * @param v2Val | |
| 3029 | + * @return | |
| 3030 | + */ | |
| 3031 | + public String getPregnancyOutByV2(String v2Val) { | |
| 3032 | + String v3Val = "1"; | |
| 3033 | + if ("0".equals(v2Val)) { | |
| 3034 | + v3Val = "0"; | |
| 3035 | + } | |
| 3036 | + if ("1".equals(v2Val)) { | |
| 3037 | + v3Val = "1"; | |
| 3038 | + } | |
| 3039 | + if ("2".equals(v2Val)) { | |
| 3040 | + v3Val = "3"; | |
| 3041 | + } | |
| 3042 | + if ("3".equals(v2Val)) { | |
| 3043 | + v3Val = "3"; | |
| 3044 | + } | |
| 3045 | + return v3Val; | |
| 3046 | + } | |
| 2909 | 3047 | } |
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SaveByV2ThreadPoolFacade.java
View file @
b408384
| ... | ... | @@ -50,15 +50,7 @@ |
| 50 | 50 | String sql = getSqlString(startTime, endTime); |
| 51 | 51 | QueryRunner queryRunner = new QueryRunner(true); |
| 52 | 52 | List<SyncV2HistoryRequest> lists = queryRunner.query(connection, sql, new BeanListHandler<SyncV2HistoryRequest>(SyncV2HistoryRequest.class)); |
| 53 | - // TODO 2019/6/5 15:39 dongqing 分批次请求保存 | |
| 54 | 53 | |
| 55 | -// for (YunBookbuildingAddRequest list : lists) { | |
| 56 | -// list.setHospitalId("216216"); | |
| 57 | -// list.setBookbuildingDoctor("1000000185"); | |
| 58 | -// System.out.println("建档孕妇身份证号cardNo=="+list.getPregnantCertificateNum()); | |
| 59 | -// addPregnantBookbuilding(list, null, false);//Integer.parseInt(list.getBookbuildingDoctor() | |
| 60 | -// } | |
| 61 | - | |
| 62 | 54 | if (CollectionUtils.isNotEmpty(lists)) { |
| 63 | 55 | int batchSize = 2; |
| 64 | 56 | int end = 0; |
| 65 | 57 | |
| ... | ... | @@ -127,11 +119,12 @@ |
| 127 | 119 | String sql = "select " + str + " from " + |
| 128 | 120 | " (select p.* from V_SYNC_TO_V3_PATIENT p " + |
| 129 | 121 | " left join V_SYNC_TO_V3_PDR pdr on pdr.p_no = p.p_no " + |
| 130 | - " where pdr.p_no is null and (TRUNC(p.P_FILINGTIME) BETWEEN TO_DATE('" + startTime + "','YYYY-MM-DD') AND TO_DATE('" + endTime + "','YYYY-MM-DD')) and ( p.P_ADDRESSCOUNTY='160' OR p.P_POSTPARTUMCOUNTY='160' OR p.P_RRCOUNTY ='160')" + | |
| 122 | + " where pdr.p_no is null and to_char(p.P_FILINGTIME,'YYY-MM') BETWEEN '" + startTime + "' and '" + endTime + "' and ( p.P_ADDRESSCOUNTY='160' OR p.P_POSTPARTUMCOUNTY='160' OR p.P_RRCOUNTY ='160')" + | |
| 123 | + " and p.P_LASTMENSTRUALPERIOD > sysdate - 294" + | |
| 131 | 124 | " union " + |
| 132 | 125 | " select p.* from V_SYNC_TO_V3_PATIENT p " + |
| 133 | 126 | " right join V_SYNC_TO_V3_PDR pdr on pdr.p_no = p.p_no " + |
| 134 | - " where pdr.PDR_CHILDBIRTHDAY > sysdate - 29 and pdr.p_no is not null and to_char(pdr.PDR_CHILDBIRTHDAY,'YYYY-MM-DD') BETWEEN TO_DATE('" + startTime + "','YYYY-MM-DD') AND TO_DATE('" + endTime + "','YYYY-MM-DD')" + | |
| 127 | + " where pdr.PDR_CHILDBIRTHDAY > sysdate - 290 and pdr.p_no is not null and to_char(pdr.PDR_CHILDBIRTHDAY,'YYYY-MM') BETWEEN '" + startTime + "' AND '" + endTime + "'" + | |
| 135 | 128 | ") t"; |
| 136 | 129 | return sql; |
| 137 | 130 | } |
platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SyncV2MatdelRequest.java
View file @
b408384
| 1 | +package com.lyms.platform.operate.web.request; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * | |
| 5 | + * @Author dongqin | |
| 6 | + * @Description | |
| 7 | + * @Date 11:05 2019/6/9 | |
| 8 | + */ | |
| 9 | + | |
| 10 | +public class SyncV2MatdelRequest extends MatDeliverAddRequest { | |
| 11 | + | |
| 12 | + private String startTime; | |
| 13 | + | |
| 14 | + private String endTime; | |
| 15 | + | |
| 16 | + private String userId; | |
| 17 | + | |
| 18 | + public String getUserId() { | |
| 19 | + return userId; | |
| 20 | + } | |
| 21 | + | |
| 22 | + public void setUserId(String userId) { | |
| 23 | + this.userId = userId; | |
| 24 | + } | |
| 25 | + | |
| 26 | + public String getStartTime() { | |
| 27 | + return startTime; | |
| 28 | + } | |
| 29 | + | |
| 30 | + public void setStartTime(String startTime) { | |
| 31 | + this.startTime = startTime; | |
| 32 | + } | |
| 33 | + | |
| 34 | + public String getEndTime() { | |
| 35 | + return endTime; | |
| 36 | + } | |
| 37 | + | |
| 38 | + public void setEndTime(String endTime) { | |
| 39 | + this.endTime = endTime; | |
| 40 | + } | |
| 41 | +} |
platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SyncV2HistoryWorkerx.java
View file @
b408384
| ... | ... | @@ -45,8 +45,9 @@ |
| 45 | 45 | BaseObjectResponse p=null; |
| 46 | 46 | for (YunBookbuildingAddRequest list : lists) { |
| 47 | 47 | //董勤让写死的 |
| 48 | - list.setHospitalId("216216"); | |
| 48 | + list.setHospitalId("216"); | |
| 49 | 49 | list.setBookbuildingDoctor("1000000185"); |
| 50 | + | |
| 50 | 51 | p = bookbuildingFacade.addPregnantBookbuilding(list, null, false); |
| 51 | 52 | System.out.println("当前线程名称:"+Thread.currentThread().getName()+"===保存好建档_id:"+p.getData()); |
| 52 | 53 | } |