Commit b4083842a6fdc9bd9a191c0c711b08ffdb750e57

Authored by dongqin
1 parent 47abd1a5df

数据同步

Showing 7 changed files with 198 additions and 46 deletions

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 }