From b4083842a6fdc9bd9a191c0c711b08ffdb750e57 Mon Sep 17 00:00:00 2001 From: dongqin <123456> Date: Sun, 9 Jun 2019 19:33:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/MatDeliverController.java | 17 ++- .../web/controller/PregnantBuildController.java | 7 -- .../operate/web/facade/BookbuildingFacade.java | 25 +--- .../operate/web/facade/MatDeliverFacade.java | 138 +++++++++++++++++++++ .../web/facade/SaveByV2ThreadPoolFacade.java | 13 +- .../operate/web/request/SyncV2MatdelRequest.java | 41 ++++++ .../operate/web/worker/SyncV2HistoryWorkerx.java | 3 +- 7 files changed, 198 insertions(+), 46 deletions(-) create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SyncV2MatdelRequest.java diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MatDeliverController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MatDeliverController.java index fa58fbb..dc9d386 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MatDeliverController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MatDeliverController.java @@ -15,10 +15,7 @@ import com.lyms.platform.common.utils.*; import com.lyms.platform.operate.web.facade.AntenatalExaminationFacade; import com.lyms.platform.operate.web.facade.AutoMatchFacade; import com.lyms.platform.operate.web.facade.MatDeliverFacade; -import com.lyms.platform.operate.web.request.ChildbirthManagerRequest; -import com.lyms.platform.operate.web.request.MatDeliverAddRequest; -import com.lyms.platform.operate.web.request.MatDeliverQueryRequest; -import com.lyms.platform.operate.web.request.NewBabyManagerRequest; +import com.lyms.platform.operate.web.request.*; import com.lyms.platform.operate.web.result.*; import com.lyms.platform.operate.web.utils.CollectionUtils; import com.lyms.platform.operate.web.utils.CommonsHelper; @@ -102,6 +99,18 @@ public class MatDeliverController extends BaseController { } /** + * 增加分娩记录 + * + * @return 返回 + */ + @RequestMapping(value = "/v2/batch/matdel", method = RequestMethod.POST) + @ResponseBody + public BaseResponse batchMatdelByV2(@Valid @RequestBody SyncV2MatdelRequest param) { + BaseResponse baseResponse = matDeliverFacade.batchMatdelByV2(param, Integer.parseInt(param.getUserId())); + return baseResponse; + } + + /** * 删除一条删除记录 * * @param id 删除分娩记录 diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PregnantBuildController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PregnantBuildController.java index 4e6bc57..1030560 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PregnantBuildController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PregnantBuildController.java @@ -133,13 +133,6 @@ public class PregnantBuildController extends BaseController{ return bookbuildingFacade.addPregnantBookbuildingV2(param, Integer.parseInt(param.getBookbuildingDoctor()), false); } - //测试 - @RequestMapping(method = RequestMethod.POST, value = "/testv2url") - @ResponseBody - public BaseResponse sync_to_v2_url( @RequestBody JSONObject param) { - System.out.println(param); - return new BaseResponse(param.toString(), 666); - } /** * 将v2.0的历史数据保存到当前库中 diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java index f9204c1..4a54164 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java @@ -2354,8 +2354,6 @@ public class BookbuildingFacade { * @return */ private YunBookbuildingAddRequest getYunBookbuildingAddRequest(SyncV2YunBookbuildingRequest param) { - // TODO 2019/6/7 14:07 dongqing 修改 - //丈夫信息是否必须,映射 if (param.getReqHusbandInt() == 1) { param.setReqHusband(true); @@ -2364,17 +2362,10 @@ public class BookbuildingFacade { } else { param.setReqHusband(null); } - param.setHospitalId("todo"); + param.setHospitalId("216"); return param; } - /* - WHERE TRUNC(T.P_FILINGTIME) between TO_DATE('" + startTime + "','YYYY-MM-DD') AND TO_DATE('" + endTime + "','YYYY-MM-DD') " + - "and pdr.p_no is null " + - "and ( P_ADDRESSCOUNTY='160' " +//居住地区(桃城区) - "OR P_POSTPARTUMCOUNTY='160' " +//产后区县(桃城区) - "OR P_RRCOUNTY ='160')"; - */ public static Connection getConnection() { Connection connection; try { @@ -2387,18 +2378,4 @@ public class BookbuildingFacade { return connection; } - - public static void main(String[] args) throws SQLException { - Connection connection = getConnection(); - PreparedStatement preparedStatement = connection.prepareStatement("select * from MOMMY_PATIENT"); - ResultSet resultSet = preparedStatement.executeQuery(); - ResultSetMetaData metaData = resultSet.getMetaData(); - int i = 1; - while (resultSet.next()) { - String tableName = metaData.getColumnName(++i); - System.out.println(tableName); - // System.out.println(resultSet.getString(tableName)); - } - - } } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java index a15a542..d33b198 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java @@ -40,11 +40,18 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.domain.Sort; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @@ -145,6 +152,9 @@ public class MatDeliverFacade { @Autowired private AreaCountFacade areaCountFacade; + @Autowired + private MongoTemplate mongoTemplate; + static { ONE_ENUMS.put(0, "长"); ONE_ENUMS.put(1, "次"); @@ -2906,4 +2916,132 @@ public class MatDeliverFacade { return list; } + /** + * 同步v2的分娩数据 + * + * @param param + * @param id + * @return + */ + public BaseResponse batchMatdelByV2(SyncV2MatdelRequest param, final Integer id) { + Connection connection = BookbuildingFacade.getConnection(); + String sql = "select * " + + "from V_SYNC_TO_V3_PDR pdr " + + "where pdr.PDR_CHILDBIRTHDAY > sysdate - 290 " + + "and to_char(pdr.PDR_CHILDBIRTHDAY,'YYYY-MM') BETWEEN '"+param.getStartTime()+ "' and '"+ param.getEndTime() +"'"; + List list = new ArrayList(1024); + try { + PreparedStatement preparedStatement = connection.prepareStatement(sql); + ResultSet rs = preparedStatement.executeQuery(); + + while (rs.next()) { + MatDeliverAddRequest matDeliverAddRequest = new MatDeliverAddRequest(); + List babies = new ArrayList<>(); + String pCardno = rs.getString("P_CARDNO"); + if (com.lyms.platform.common.utils.StringUtils.isEmpty(pCardno)){ + System.out.println("证件号为空"); + continue; + } + Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("pregnantCertificateNum").is(pCardno)), Patients.class); + if (patients == null) { + System.out.println("没有建档数据"); + continue; + } + matDeliverAddRequest.setParentId(patients.getId()); + matDeliverAddRequest.setPid(patients.getPid()); + Date childbirthday = rs.getDate("PDR_CHILDBIRTHDAY"); + String pdrGestationalweeks = rs.getString("PDR_GESTATIONALWEEKS"); + int pdrIrenum = rs.getInt("PDR_IRENUM"); + String pdrPlacentanum = rs.getString("PDR_PLACENTANUM"); + //String pdrDeliverorganizationid = rs.getString("PDR_DELIVERORGANIZATIONID"); + //String pdrMidwife = rs.getString("PDR_MIDWIFE"); + //Date pdrOpertime = rs.getDate("PDR_OPERTIME"); + //String pNo = rs.getString("P_NO"); + String pdrId = rs.getString("PDR_ID"); + if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(pdrId)) { + String sqlBaby = "select * from V_SYNC_TO_V3_BABY baby where baby.NB_PDRID = '" + pdrId +"'"; + PreparedStatement statement = connection.prepareStatement(sqlBaby); + ResultSet resultSet = statement.executeQuery(); + while (resultSet.next()) { + MatDeliverAddRequest.Baby baby = new MatDeliverAddRequest.Baby(); + Date nbChildbirthday = resultSet.getDate("NB_CHILDBIRTHDAY"); + String nbChantype = resultSet.getString("NB_CHANTYPE"); + String nbChildsex = resultSet.getString("NB_CHILDSEX"); + double nbChildweight = resultSet.getDouble("NB_CHILDWEIGHT"); + String nbLength = resultSet.getString("NB_LENGTH"); + baby.setDueTime(DateUtil.getymdhm(nbChildbirthday)); + + baby.setPregnancyOut(getPregnancyOutByV2(nbChantype)); + baby.setBabyGender(nbChildsex); + baby.setBabyWeight(nbChildweight+""); + baby.setBabyHeight(nbLength); + babies.add(baby); + } + } + matDeliverAddRequest.setBabies(babies); + matDeliverAddRequest.setDueDate(DateUtil.getyyyy_MM_dd(childbirthday)); + matDeliverAddRequest.setDueWeek(pdrGestationalweeks); + // TODO 2019/6/9 14:53 dongqing 胎数 + matDeliverAddRequest.setTireNumber(pdrIrenum); + // TODO 2019/6/9 14:53 dongqing 胎盘 + matDeliverAddRequest.setPlacenta(pdrPlacentanum); + // TODO 2019/6/9 14:54 dongqing 分娩医院 + matDeliverAddRequest.setFmHospital("216"); + // TODO 2019/6/9 14:55 dongqing 接生者 + matDeliverAddRequest.setDeliverDoctor(""); + list.add(matDeliverAddRequest); + } + + } catch (SQLException e) { + e.printStackTrace(); + }finally { + try { + connection.close(); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + ExecutorService service = new ThreadPoolExecutor(5, 10, 9000, TimeUnit.MILLISECONDS, + new ArrayBlockingQueue(1), + new RejectedExecutionHandler() { + @Override + public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { + throw new RuntimeException(); + } + }); + for (final MatDeliverAddRequest request : list) { + service.execute(new Runnable() { + @Override + public void run() { + addOrUpdateMatDeliver(request, id); + } + }); + } + service.shutdown(); + return null; + } + + /** + * 解决v2 和v3码表不一致的问题 + * + * @param v2Val + * @return + */ + public String getPregnancyOutByV2(String v2Val) { + String v3Val = "1"; + if ("0".equals(v2Val)) { + v3Val = "0"; + } + if ("1".equals(v2Val)) { + v3Val = "1"; + } + if ("2".equals(v2Val)) { + v3Val = "3"; + } + if ("3".equals(v2Val)) { + v3Val = "3"; + } + return v3Val; + } } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SaveByV2ThreadPoolFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SaveByV2ThreadPoolFacade.java index e0f4628..6416747 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SaveByV2ThreadPoolFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SaveByV2ThreadPoolFacade.java @@ -50,14 +50,6 @@ public class SaveByV2ThreadPoolFacade { String sql = getSqlString(startTime, endTime); QueryRunner queryRunner = new QueryRunner(true); List lists = queryRunner.query(connection, sql, new BeanListHandler(SyncV2HistoryRequest.class)); - // TODO 2019/6/5 15:39 dongqing 分批次请求保存 - -// for (YunBookbuildingAddRequest list : lists) { -// list.setHospitalId("216216"); -// list.setBookbuildingDoctor("1000000185"); -// System.out.println("建档孕妇身份证号cardNo=="+list.getPregnantCertificateNum()); -// addPregnantBookbuilding(list, null, false);//Integer.parseInt(list.getBookbuildingDoctor() -// } if (CollectionUtils.isNotEmpty(lists)) { int batchSize = 2; @@ -127,11 +119,12 @@ public class SaveByV2ThreadPoolFacade { String sql = "select " + str + " from " + " (select p.* from V_SYNC_TO_V3_PATIENT p " + " left join V_SYNC_TO_V3_PDR pdr on pdr.p_no = p.p_no " + - " 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')" + + " 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')" + + " and p.P_LASTMENSTRUALPERIOD > sysdate - 294" + " union " + " select p.* from V_SYNC_TO_V3_PATIENT p " + " right join V_SYNC_TO_V3_PDR pdr on pdr.p_no = p.p_no " + - " 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')" + + " 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 + "'" + ") t"; return sql; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SyncV2MatdelRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SyncV2MatdelRequest.java new file mode 100644 index 0000000..e5bd470 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SyncV2MatdelRequest.java @@ -0,0 +1,41 @@ +package com.lyms.platform.operate.web.request; + +/** + * + * @Author dongqin + * @Description + * @Date 11:05 2019/6/9 + */ + +public class SyncV2MatdelRequest extends MatDeliverAddRequest { + + private String startTime; + + private String endTime; + + private String userId; + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getStartTime() { + return startTime; + } + + public void setStartTime(String startTime) { + this.startTime = startTime; + } + + public String getEndTime() { + return endTime; + } + + public void setEndTime(String endTime) { + this.endTime = endTime; + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SyncV2HistoryWorkerx.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SyncV2HistoryWorkerx.java index e04accf..74bca5a 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SyncV2HistoryWorkerx.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/worker/SyncV2HistoryWorkerx.java @@ -45,8 +45,9 @@ public class SyncV2HistoryWorkerx implements Callable { BaseObjectResponse p=null; for (YunBookbuildingAddRequest list : lists) { //董勤让写死的 - list.setHospitalId("216216"); + list.setHospitalId("216"); list.setBookbuildingDoctor("1000000185"); + p = bookbuildingFacade.addPregnantBookbuilding(list, null, false); System.out.println("当前线程名称:"+Thread.currentThread().getName()+"===保存好建档_id:"+p.getData()); } -- 1.8.3.1