From 949d5a1ced8c8ef19911089e5b90cfefa99df0f4 Mon Sep 17 00:00:00 2001 From: hanshaofeng Date: Sun, 4 Dec 2016 21:27:01 +0800 Subject: [PATCH] resyncdata --- .../operate/web/controller/InitDataController.java | 149 +++++++++++++++++++++ .../web/controller/InitReverseDataController.java | 128 ++++++++++++++++++ 2 files changed, 277 insertions(+) create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/InitDataController.java create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/InitReverseDataController.java diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/InitDataController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/InitDataController.java new file mode 100644 index 0000000..643f9ca --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/InitDataController.java @@ -0,0 +1,149 @@ +package com.lyms.platform.operate.web.controller; + +import com.lyms.platform.common.base.BaseController; +import com.lyms.platform.common.dao.operator.MongoCondition; +import com.lyms.platform.common.dao.operator.MongoOper; +import com.lyms.platform.common.dao.operator.MongoQuery; +import com.lyms.platform.common.result.BaseModel; +import com.lyms.platform.common.utils.*; +import com.lyms.platform.common.utils.ReflectionUtils; +import com.lyms.platform.common.utils.StringUtils; +import com.lyms.platform.pojo.*; +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.NameValuePair; +import org.apache.commons.httpclient.methods.PostMethod; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.core.query.Update; +import org.springframework.stereotype.Controller; +import org.springframework.util.*; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by riecard on 2016/12/4. + */ +@Controller +@RequestMapping("/initdata") +public class InitDataController extends BaseController { + + @Autowired + protected MongoTemplate mongoTemplate; + + @ResponseBody + @RequestMapping(value = "/resyncdata", method = RequestMethod.POST) + public String resyncdata(String hospitalId) { + if (org.apache.commons.lang.StringUtils.isBlank(hospitalId)) { + return "hospitalId is null"; + } + StringBuffer sb = new StringBuffer(); + List classList = new ArrayList<>(); + classList.add(AntenatalExaminationModel.class); + classList.add(AntExChuModel.class); + classList.add(AntExRecordModel.class); + classList.add(BabyModel.class); + classList.add(BabyCheckModel.class); + classList.add(MaternalDeliverModel.class); + classList.add(Patients.class); + classList.add(PersonModel.class); + classList.add(PostReviewModel.class); + classList.add(PuerperaModel.class); + classList.add(ReferralApplyOrderModel.class); + classList.add(SieveModel.class); + classList.add(SieveApplyOrderModel.class); + classList.add(SieveResultModel.class); + classList.add(StopPregModel.class); + Query query = new MongoQuery(new MongoCondition("hospitalId", hospitalId, MongoOper.IS)).convertToMongoQuery(); + for (Class cla:classList) { + sb.append("sync start... "); + sb.append(cla.getName()); + sb.append(" query size:"); + int size = 0; + List list = null; + if (cla.equals(PersonModel.class)) { + list = mongoTemplate.find(new Query(), cla); + } else { + list = mongoTemplate.find(query, cla); + } + sb.append(list.size()); + sb.append("\r\n
\r\n"); + int index = 0; + List synclist = new ArrayList<>(); + for (BaseModel model:list) { + synclist.add(Base64.encodeBase64String(SerializUtils.objToByte(model))); + index++; + if (index%100 == 0) { + postser(synclist, cla.getName()); + synclist.clear(); + } + } + if (synclist.size() > 0) { + postser(synclist, cla.getName()); + } + } + return sb.toString(); + } + + private void postser(List synclist, String claName) { + try { + HttpClient client = new HttpClient(); + client.getHttpConnectionManager().getParams().setConnectionTimeout(30000); + client.getHttpConnectionManager().getParams().setSoTimeout(30000); + PostMethod post = new MessageUtil.UTF8PostMethod("http://api.meishengbb.com/initdata/reser"); + NameValuePair[] pairs = { + new NameValuePair("className", claName), + new NameValuePair("json", JsonUtil.array2JsonString(synclist)), + }; + post.setRequestBody(pairs); + client.executeMethod(post); + int statusCode = post.getStatusCode(); + String json = post.getResponseBodyAsString(); + System.out.println(json); + post.releaseConnection(); + if (200 == statusCode) { + + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + @ResponseBody + @RequestMapping(value = "/reser", method = RequestMethod.POST) + public String reser(String className, String json) { + if (StringUtils.isNotEmpty(className) && StringUtils.isNotEmpty(json)) { + try { + Class cla = Class.forName(className); + List synclist = JsonUtil.toList(json, String.class); + for (String s:synclist) { + Object obj = SerializUtils.byteToObj(Base64.decodeBase64(s)); + String id = cla.getMethod("getId").invoke(obj).toString(); + if (StringUtils.isNotEmpty(id)) { + if (mongoTemplate.findById(id, cla) == null) { + mongoTemplate.insert(obj); + } else { + Query query = new MongoQuery(new MongoCondition("id", id, MongoOper.IS)).convertToMongoQuery(); + Update update = MongoConvertHelper + .convertToNativeUpdate(ReflectionUtils.getUpdateField(obj)); + mongoTemplate.updateMulti(query, update, cla); + } + } + } + return "success"; + } catch (Exception e) { + e.printStackTrace(); + return e.toString(); + } + } else { + return "param empty"; + } + } + +} diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/InitReverseDataController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/InitReverseDataController.java new file mode 100644 index 0000000..ee9e875 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/InitReverseDataController.java @@ -0,0 +1,128 @@ +package com.lyms.platform.operate.web.controller; + +import com.lyms.platform.common.base.BaseController; +import com.lyms.platform.common.dao.operator.MongoCondition; +import com.lyms.platform.common.dao.operator.MongoOper; +import com.lyms.platform.common.dao.operator.MongoQuery; +import com.lyms.platform.common.result.BaseModel; +import com.lyms.platform.common.utils.*; +import com.lyms.platform.pojo.*; +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.NameValuePair; +import org.apache.commons.httpclient.methods.PostMethod; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.core.query.Update; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by riecard on 2016/12/4. + */ +@Controller +@RequestMapping("/initdata/reverse") +public class InitReverseDataController extends BaseController { + + @Autowired + protected MongoTemplate mongoTemplate; + + @ResponseBody + @RequestMapping(value = "/resyncdata", method = RequestMethod.POST) + public String resyncdata(String hospitalId) { + if (org.apache.commons.lang.StringUtils.isBlank(hospitalId)) { + return "hospitalId is null"; + } + StringBuffer sb = new StringBuffer(); + List classList = new ArrayList<>(); + classList.add(AntenatalExaminationModel.class); + classList.add(AntExChuModel.class); + classList.add(AntExRecordModel.class); + classList.add(BabyModel.class); + classList.add(BabyCheckModel.class); + classList.add(MaternalDeliverModel.class); + classList.add(Patients.class); + classList.add(PersonModel.class); + classList.add(PostReviewModel.class); + classList.add(PuerperaModel.class); + classList.add(ReferralApplyOrderModel.class); + classList.add(SieveModel.class); + classList.add(SieveApplyOrderModel.class); + classList.add(SieveResultModel.class); + classList.add(StopPregModel.class); + if ("216".equals(hospitalId)) { + for (Class cla:classList) { + try { + HttpClient client = new HttpClient(); + client.getHttpConnectionManager().getParams().setConnectionTimeout(600000); + client.getHttpConnectionManager().getParams().setSoTimeout(600000); + PostMethod post = new MessageUtil.UTF8PostMethod("http://121.22.16.246:18018/initdata/reverse/findsyncdata"); + NameValuePair[] pairs = { + new NameValuePair("className", cla.getName()), + new NameValuePair("hospitalId", hospitalId), + }; + post.setRequestBody(pairs); + client.executeMethod(post); + int statusCode = post.getStatusCode(); + post.releaseConnection(); + if (200 == statusCode) { + String json = post.getResponseBodyAsString(); + List synclist = JsonUtil.toList(json, String.class); + sb.append(cla.getName()); + sb.append(":"); + sb.append(synclist.size()); + sb.append("\r\n
\r\n"); + for (String s:synclist) { + Object obj = SerializUtils.byteToObj(Base64.decodeBase64(s)); + String id = cla.getMethod("getId").invoke(obj).toString(); + if (StringUtils.isNotEmpty(id)) { + if (mongoTemplate.findById(id, cla) == null) { + mongoTemplate.insert(obj); + } else { + Query query = new MongoQuery(new MongoCondition("id", id, MongoOper.IS)).convertToMongoQuery(); + Update update = MongoConvertHelper + .convertToNativeUpdate(ReflectionUtils.getUpdateField(obj)); + mongoTemplate.updateMulti(query, update, cla); + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } else { + sb.append("only hospital id is 216(qhdfy)"); + } + return sb.toString(); + } + + @ResponseBody + @RequestMapping(value = "/findsyncdata", method = RequestMethod.POST) + public String resyncdata(String hospitalId, String className) { + if (StringUtils.isNotEmpty(hospitalId) && StringUtils.isNotEmpty(className)) { + Query query = new MongoQuery(new MongoCondition("hospitalId", hospitalId, MongoOper.IS)).convertToMongoQuery(); + try { + List list = mongoTemplate.find(query, Class.forName(className)); + List synclist = new ArrayList<>(); + for (Object obj:list) { + synclist.add(Base64.encodeBase64String(SerializUtils.objToByte((Serializable)obj))); + } + return JsonUtil.array2JsonString(synclist); + } catch (Exception e) { + e.printStackTrace(); + return e.toString(); + } + } else { + return "fail"; + } + } + +} -- 1.8.3.1