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 4b39972..be15f3a 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 @@ -1,7 +1,6 @@ package com.lyms.platform.operate.web.controller; -import com.lyms.platform.biz.service.YunBookbuildingService; import com.lyms.platform.common.annotation.TokenRequired; import com.lyms.platform.common.base.BaseController; import com.lyms.platform.common.base.LoginContext; @@ -12,23 +11,16 @@ import com.lyms.platform.common.utils.MessageUtil; import com.lyms.platform.common.utils.PropertiesUtils; import com.lyms.platform.common.utils.StringUtils; import com.lyms.platform.operate.web.facade.AntenatalExaminationFacade; -import com.lyms.platform.operate.web.facade.AutoMatchFacade; import com.lyms.platform.operate.web.facade.BookbuildingFacade; -import com.lyms.platform.operate.web.request.AntenatalExaminationQueryRequest; -import com.lyms.platform.operate.web.request.BookbuildingQueryRequest; -import com.lyms.platform.operate.web.request.ImgRequest; -import com.lyms.platform.operate.web.request.YunBookbuildingAddRequest; -import com.lyms.platform.permission.service.CouponService; +import com.lyms.platform.operate.web.request.*; import org.apache.commons.httpclient.HttpClient; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; @@ -95,10 +87,10 @@ public class PregnantBuildController extends BaseController{ if (yunBookbuildingAddRequest != null && !StringUtils.isEmpty(yunBookbuildingAddRequest.getId()) ) { - return bookbuildingFacade.updatePregnantById(yunBookbuildingAddRequest.getId(), yunBookbuildingAddRequest,loginState.getId()); + return bookbuildingFacade.updatePregnantById(yunBookbuildingAddRequest.getId(), yunBookbuildingAddRequest,loginState.getId(), true); } - BaseObjectResponse p = bookbuildingFacade.addPregnantBookbuilding(yunBookbuildingAddRequest, loginState.getId()); + BaseObjectResponse p = bookbuildingFacade.addPregnantBookbuilding(yunBookbuildingAddRequest, loginState.getId(), true); return p; } @@ -114,14 +106,37 @@ public class PregnantBuildController extends BaseController{ LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); if (yunBookbuildingAddRequest != null && !StringUtils.isEmpty(yunBookbuildingAddRequest.getId()) ) { - return bookbuildingFacade.updatePregnantById(yunBookbuildingAddRequest.getId(), yunBookbuildingAddRequest,loginState.getId()); + return bookbuildingFacade.updatePregnantById(yunBookbuildingAddRequest.getId(), yunBookbuildingAddRequest,loginState.getId(), true); } - BaseObjectResponse p = bookbuildingFacade.createOrUpdateYunBuild(yunBookbuildingAddRequest,loginState.getId()); + BaseObjectResponse p = bookbuildingFacade.createOrUpdateYunBuild(yunBookbuildingAddRequest,loginState.getId(), true); return p; } + /** + * 将来源于v2.0的数据同步到当前版本中 + * + * @param param + */ + @RequestMapping(method = RequestMethod.POST, value = "/v2/saveOrUpdate") + @ResponseBody + public BaseResponse saveOrUpdateByV2(@RequestBody SyncV2YunBookbuildingRequest param) { + if (param != null && !StringUtils.isEmpty(param.getId()) ) { + return bookbuildingFacade.updatePregnantByIdV2(param.getId(), param, param.getUserId(), false); + } + return bookbuildingFacade.createOrUpdateYunBuildV2(param, param.getUserId(), false); + } + /** + * 将v2.0的历史数据保存到当前库中 + * + * @param param + */ + @RequestMapping(method = RequestMethod.POST, value = "/v2/history/batchSave") + @ResponseBody + public BaseResponse saveByV2(@RequestBody SyncV2HistoryRequest param) { + return bookbuildingFacade.saveByV2(param); + } /** * 删除孕妇建档 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 712443f..43955e3 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 @@ -1,5 +1,6 @@ package com.lyms.platform.operate.web.facade; +import com.alibaba.fastjson.JSONObject; import com.lyms.hospitalapi.Cdfy.CdfyHisService; import com.lyms.hospitalapi.dzfy.DzfyHisService; import com.lyms.hospitalapi.fnfy.FnfyHisService; @@ -16,10 +17,7 @@ import com.lyms.platform.common.result.BaseListResponse; import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.common.result.BaseResponse; import com.lyms.platform.common.utils.*; -import com.lyms.platform.operate.web.request.BookBuildManagerQueryRequest; -import com.lyms.platform.operate.web.request.BookbuildingQueryRequest; -import com.lyms.platform.operate.web.request.ImgRequest; -import com.lyms.platform.operate.web.request.YunBookbuildingAddRequest; +import com.lyms.platform.operate.web.request.*; import com.lyms.platform.operate.web.result.*; import com.lyms.platform.operate.web.service.ITrackDownService; import com.lyms.platform.operate.web.utils.JdbcUtil; @@ -42,8 +40,11 @@ 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.http.HttpHeaders; +import org.springframework.http.MediaType; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; @@ -169,6 +170,8 @@ public class BookbuildingFacade { @Autowired private CdfyHisService cdfyHisService; + public static final String syncToV2Url = PropertiesUtils.getPropertyValue("sync_to_v2_url"); + /** * 根据患者的建档ID,查询还未使用的免费产检查券 @@ -188,7 +191,7 @@ public class BookbuildingFacade { * @return */ public BaseObjectResponse addPregnantBookbuilding( - YunBookbuildingAddRequest yunRequest, Integer userId) { + YunBookbuildingAddRequest yunRequest, Integer userId, boolean isSync) { BaseObjectResponse br = new BaseObjectResponse(); PatientsQuery patientsQuery = new PatientsQuery(); @@ -445,6 +448,10 @@ public class BookbuildingFacade { deleteImg(yunRequest); } + if (isSync) { + syncDataToV2(p, null, userId); + } + br.setErrorcode(ErrorCodeConstants.SUCCESS); br.setErrormsg("成功"); br.setData(p.getId()); @@ -507,7 +514,7 @@ public class BookbuildingFacade { * @return */ public BaseObjectResponse createOrUpdateYunBuild( - YunBookbuildingAddRequest yunRequest, Integer userId) { + YunBookbuildingAddRequest yunRequest, Integer userId, boolean isSync) { BaseObjectResponse br = new BaseObjectResponse(); PatientsQuery patientsQuery = new PatientsQuery(); @@ -688,6 +695,11 @@ public class BookbuildingFacade { } } + if (isSync) { + syncDataToV2(p, null, userId); + } + + br.setErrorcode(ErrorCodeConstants.SUCCESS); br.setErrormsg("成功"); br.setData(p.getId()); @@ -696,6 +708,50 @@ public class BookbuildingFacade { } /** + * 保存/更新数据成功后,将数据同步到2.0系统中 + * @param patients + * @param id 更新保存标识 + * @param userId userId + */ + private void syncDataToV2(final Patients patients, String id, Integer userId){ + try { + Thread syncThread = new Thread(new Runnable() { + //ExecutorService executor = Executors.newSingleThreadExecutor(); + //executor.execute(new Runnable() { + @Override + public void run() { + RestTemplate restTemplate = new RestTemplate(); + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + JSONObject jsonObject = getQueryParam(patients); + String result = restTemplate.postForObject(syncToV2Url + "/李晓东提供", jsonObject, String.class); + logger.info("建档数据同步到2.0系统,返回结果: {}", result); + } + }); + //executor.shutdown(); + syncThread.start(); + }catch (Exception e){ + e.printStackTrace(); + logger.error("建档数据同步到2.0系统失败",e); + } + } + + /** + * 组装请求2.0系统的请求参数 + * + * @param patients + * @return + */ + private JSONObject getQueryParam(Patients patients) { + JSONObject jsonObject = new JSONObject(64); + + // TODO 2019/6/5 13:21 dongqing 数据组装 + jsonObject.put("id", patients.getId()); + + return jsonObject; + } + + /** * 创建孕妇建档推送消息 */ private void createBuildMsg(Patients patient) { @@ -795,7 +851,7 @@ public class BookbuildingFacade { * @param id * @param yunRequest */ - public BaseResponse updatePregnantById(String id, YunBookbuildingAddRequest yunRequest, Integer userId) { + public BaseResponse updatePregnantById(String id, YunBookbuildingAddRequest yunRequest, Integer userId, boolean isSync) { BaseResponse br = new BaseResponse(); PatientsQuery patientsQuery = new PatientsQuery(); @@ -931,6 +987,10 @@ public class BookbuildingFacade { deleteImg(yunRequest); } + if (isSync) { + syncDataToV2(patients, id, userId); + } + return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); } @@ -2196,4 +2256,54 @@ public class BookbuildingFacade { return objectResponse; } } + + /** + * 更新v2.0的数据 + * + * @param id 主键 + * @param param 请求参数 + * @param userId 用户ID + * @param b 是否同步数据 + * @return BaseResponse + */ + public BaseResponse updatePregnantByIdV2(String id, SyncV2YunBookbuildingRequest param, Integer userId, boolean b) { + // TODO 2019/6/5 14:59 dongqing 数据的效验,整理 + + return updatePregnantById(id, param, userId, b); + } + + /** + * 保存v2.0的数据 + * + * @param param 主键 + * @param userId 请求参数 + * @param b 是否同步数据 + * @return BaseResponse + */ + public BaseResponse createOrUpdateYunBuildV2(SyncV2YunBookbuildingRequest param, Integer userId, boolean b) { + // TODO 2019/6/5 15:01 dongqing 数据的效验,整理 + + return createOrUpdateYunBuild(param, userId, b); + } + + /** + * 保存历史数据,根据时间和医院id + * + * @param param 请求参数 + * @return BaseResponse + */ + public BaseResponse saveByV2(SyncV2HistoryRequest param) { + // TODO 2019/6/5 15:01 dongqing 数据的效验,整理 + RestTemplate restTemplate = new RestTemplate(); + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + String startTime = param.getStartTime(); + String endTime = param.getEndTime(); + // TODO 2019/6/5 15:39 dongqing 分批次请求保存 + + JSONObject jsonObject = new JSONObject(); + String result = restTemplate.postForObject(syncToV2Url + "/wx/babyMeasureInfo/saveOrUpdate", jsonObject, String.class); + + return null; + } } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SyncV2HistoryRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SyncV2HistoryRequest.java new file mode 100644 index 0000000..efe250d --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SyncV2HistoryRequest.java @@ -0,0 +1,50 @@ +package com.lyms.platform.operate.web.request; + +/** + * + * @Author dongqin + * @Description + * @Date 15:23 2019/6/5 + */ + +public class SyncV2HistoryRequest { + + /** + * 开始时间 + */ + private String startTime; + + /** + * 结束时间 + */ + private String endTime; + + /** + * 医院id + */ + private String historyId; + + 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; + } + + public String getHistoryId() { + return historyId; + } + + public void setHistoryId(String historyId) { + this.historyId = historyId; + } +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SyncV2YunBookbuildingRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SyncV2YunBookbuildingRequest.java new file mode 100644 index 0000000..cae013a --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SyncV2YunBookbuildingRequest.java @@ -0,0 +1,22 @@ +package com.lyms.platform.operate.web.request; + +/** + * + * @Author dongqin + * @Description 请求的参数 + * @Date 14:45 2019/6/5 + */ + +public class SyncV2YunBookbuildingRequest extends YunBookbuildingAddRequest { + + // TODO 2019/6/5 14:45 dongqing 这里添加额外需要的参数,其他参数父类即可拿到 + private Integer userId; + + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } +} diff --git a/platform-operate-api/src/main/resources/config.properties b/platform-operate-api/src/main/resources/config.properties index c9c8bd8..b502cf7 100644 --- a/platform-operate-api/src/main/resources/config.properties +++ b/platform-operate-api/src/main/resources/config.properties @@ -32,3 +32,5 @@ img_path=/data/images #ams地址 测试环境 http://ams.api.stage.healthbaby.com.cn 线上http://ams.api.healthbaby.com.cn ams_url=http://ams.api.stage.healthbaby.com.cn +#同步数据到v2.0 +sync_to_v2_url=http://localhost:8080 \ No newline at end of file