diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/BasicConfigServiceTest.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/BasicConfigServiceTest.java index 898b4db..1328202 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/BasicConfigServiceTest.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/BasicConfigServiceTest.java @@ -11,11 +11,18 @@ import com.lyms.platform.biz.service.*; import com.lyms.platform.common.dao.operator.MongoCondition; import com.lyms.platform.common.dao.operator.MongoOper; import com.lyms.platform.common.enums.YnEnums; +import com.lyms.platform.common.pojo.SyncDataModel; import com.lyms.platform.common.utils.JsonUtil; +import com.lyms.platform.common.utils.MessageUtil; import com.lyms.platform.common.utils.PingYinUtil; import com.lyms.platform.common.utils.SystemConfig; import com.lyms.platform.pojo.*; import com.lyms.platform.query.BasicConfigQuery; +import com.lyms.platform.query.SmsConfigQuery; +import com.lyms.platform.query.SmsTemplateQuery; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.NameValuePair; +import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; import org.apache.struts.config.BaseConfig; @@ -88,8 +95,72 @@ public class BasicConfigServiceTest { // addZhenduan(applicationContext); // addHealthConfig(applicationContext); -// addCheckItem(applicationContext); - queryRisk(applicationContext); + saveHospitalMsgConfig(applicationContext); + saveHospitalMsgTemplate(applicationContext); + } + + public static void saveHospitalMsgTemplate(ApplicationContext applicationContext) { + MongoTemplate mongoTemplate + =(MongoTemplate)applicationContext.getBean("mongoTemplate"); + mongoTemplate.getDb().authenticate("platform", "platform123".toCharArray()); + try { + SmsTemplateQuery query = new SmsTemplateQuery(); + query.setHospitalId("216"); + query.setYn(1); + List list = mongoTemplate.find(query.convertToQuery().convertToMongoQuery(), SmsTemplateModel.class); + System.out.println(JsonUtil.array2JsonString(list)); + HttpClient client = new HttpClient(); + client.getHttpConnectionManager().getParams().setConnectionTimeout(10000); + client.getHttpConnectionManager().getParams().setSoTimeout(10000); + PostMethod post = new MessageUtil.UTF8PostMethod("http://121.22.16.246:18018/saveMongoModel"); + NameValuePair[] pairs = { + new NameValuePair("className", SmsTemplateModel.class.getName()), + new NameValuePair("json", JsonUtil.array2JsonString(list)), + }; + 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(); + } + } + + public static void saveHospitalMsgConfig(ApplicationContext applicationContext) { + MongoTemplate mongoTemplate + =(MongoTemplate)applicationContext.getBean("mongoTemplate"); + mongoTemplate.getDb().authenticate("platform", "platform123".toCharArray()); + try { + SmsConfigQuery query = new SmsConfigQuery(); + query.setHospitalId("216"); + query.setYn(1); + List list = mongoTemplate.find(query.convertToQuery().convertToMongoQuery(), SmsConfigModel.class); + System.out.println(JsonUtil.array2JsonString(list)); + HttpClient client = new HttpClient(); + client.getHttpConnectionManager().getParams().setConnectionTimeout(10000); + client.getHttpConnectionManager().getParams().setSoTimeout(10000); + PostMethod post = new MessageUtil.UTF8PostMethod("http://121.22.16.246:18018/saveMongoModel"); + NameValuePair[] pairs = { + new NameValuePair("className", SmsConfigModel.class.getName()), + new NameValuePair("json", JsonUtil.array2JsonString(list)), + }; + 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(); + } } // fb43fd5a-b153-4cb9-9180-c46f5612ba43 diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/MongoSyncService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/MongoSyncService.java index c5b2313..a618fa5 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/MongoSyncService.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/MongoSyncService.java @@ -63,7 +63,7 @@ public class MongoSyncService { } else if (action.startsWith("Mysql")) { return syncMysqlData(action,id,className,json); } else if ("POSTMSG".equals(action)) { - String result = HttpRequest.sendPost(CENTER_BASE_URL+"saveCreatedSMS", json, CENTER_TOKEN); + String result = HttpRequest.sendPost(CENTER_BASE_URL+"saveCreatedSMS", LymsEncodeUtil.aesDecrypt(json, mongo_crypto_key), CENTER_TOKEN); if (com.lyms.platform.common.utils.StringUtils.isNotEmpty(result)) { Map map = JsonUtil.str2Obj(result, Map.class); @@ -219,5 +219,41 @@ public class MongoSyncService { } } + public String saveMongoModel(String json, String className){ + if (StringUtils.isBlank(json) || StringUtils.isBlank(className)) { + return "param is null"; + } + StringBuffer sb = new StringBuffer(); + try { + Class cls = Class.forName(className); + List list = JsonUtil.toList(json, cls); + int insert = 0; + int modified = 0; + for (Object obj:list) { + String id = cls.getMethod("getId").invoke(obj).toString(); + if (StringUtils.isNotBlank(id)) { + Object temp = mongoTemplate.findById(id, cls); + if (temp == null) { + mongoTemplate.insert(obj); + insert++; + } else { + Update update = MongoConvertHelper.convertToNativeUpdate(ReflectionUtils.getUpdateField(obj)); + mongoTemplate.updateMulti(new MongoQuery(new MongoCondition("id", id, MongoOper.IS)).convertToMongoQuery(), update, cls); + modified++; + } + } + } + sb.append(" insert:"); + sb.append(insert); + sb.append(" modified:"); + sb.append(modified); + sb.append("\r\n
"); + return sb.toString(); + } catch (Exception e) { + e.printStackTrace(); + return e.toString(); + } + } + } diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/LisReport.java b/platform-dal/src/main/java/com/lyms/platform/pojo/LisReport.java index 514b1fe..bb3c053 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/LisReport.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/LisReport.java @@ -28,6 +28,15 @@ public class LisReport { private String checkDoctorName; private Date publishTime; private Integer status;// 1:未计算危机;2:已计算危机 + private String classifyName; + + public String getClassifyName() { + return classifyName; + } + + public void setClassifyName(String classifyName) { + this.classifyName = classifyName; + } public Integer getStatus() { return status; diff --git a/platform-operate-api/src/main/java/com/lyms/hospitalapi/qhdfy/QhdfyHisService.java b/platform-operate-api/src/main/java/com/lyms/hospitalapi/qhdfy/QhdfyHisService.java index d8372a6..e9d7342 100644 --- a/platform-operate-api/src/main/java/com/lyms/hospitalapi/qhdfy/QhdfyHisService.java +++ b/platform-operate-api/src/main/java/com/lyms/hospitalapi/qhdfy/QhdfyHisService.java @@ -1,9 +1,6 @@ package com.lyms.hospitalapi.qhdfy; -import com.lyms.hospitalapi.pojo.CheckItemResponse; -import com.lyms.hospitalapi.pojo.CheckResponse; -import com.lyms.hospitalapi.pojo.LisCheckInfo; -import com.lyms.hospitalapi.pojo.LisCheckResult; +import com.lyms.hospitalapi.pojo.*; import com.lyms.platform.biz.dal.AssayConfigDao; import com.lyms.platform.biz.param.AssayConfigQuery; import com.lyms.platform.biz.service.AssayConfigService; @@ -126,7 +123,13 @@ public class QhdfyHisService { crisisItem.setItemCode(item.getCode()); crisisItem.setItemName(item.getName()); crisisItem.setRef(item.getRef()); - crisisItem.setResult(item.getResult()); + if (StringUtils.isNotBlank(item.getNumberResult())) { + crisisItem.setResult(item.getNumberResult()); + } else if (StringUtils.isNotBlank(item.getCharResult())) { + crisisItem.setResult(item.getCharResult()); + } else { + crisisItem.setResult(item.getResult()); + } crisisItem.setUnit(item.getUnit()); lisCrisisItemService.addLisCrisisItem(crisisItem); } @@ -146,48 +149,129 @@ public class QhdfyHisService { return result; } + public List queryCheckList(String cardNo) { + Map>> map = new HashMap<>(); + List result = new ArrayList<>(); + result.addAll(queryLisCheckList(cardNo)); +// result.addAll(queryPacsCheckList(cardNo)); + List keyList = new ArrayList<>(); + // 去重 + List list = new ArrayList<>(); + Date tempDate = null; + for (CheckResponse check:result) { + if (check.getModified() != null && check.getModified().equals(tempDate)) { + continue; + } + list.add(check); + tempDate = check.getModified(); + } + + // 排序 + Collections.sort(list, new Comparator() { + public int compare(Object a, Object b) { + if (((CheckResponse)a).getModified() == null) { + return 1; + } + if (((CheckResponse)b).getModified() == null) { + return 1; + } + if (((CheckResponse)a).getModified().before(((CheckResponse)a).getModified())) { + return -1; + } + return 1; + } + }); + for (CheckResponse check:list) { + String ymd = DateUtil.getyyyy_MM_dd(check.getModified()); + if (!keyList.contains(ymd)) { + keyList.add(ymd); + } + Map> dayMap = map.get(ymd); + if (dayMap == null) { + dayMap = new HashMap<>(); + map.put(ymd, dayMap); + } + if (check.getType() == 1) { + List sub = dayMap.get("jianyan"); + if (sub == null) { + sub = new ArrayList<>(); + dayMap.put("jianyan", sub); + } + sub.add(check); + } else if (check.getType() == 2) { + List sub = dayMap.get("yingxiang"); + if (sub == null) { + sub = new ArrayList<>(); + dayMap.put("yingxiang", sub); + } + sub.add(check); + } + } + List resultList = new ArrayList<>(); + for (String key:keyList) { + Map> dayMap = map.get(key); + if (dayMap != null) { + CheckResult checkResult = new CheckResult(); + checkResult.setJianyan(dayMap.get("jianyan")); + checkResult.setYingxiang(dayMap.get("yingxiang")); + checkResult.setYmd(key); + resultList.add(checkResult); + } + } + + return resultList; + } + public List queryLisCheckList(String cardNo) { List result = new ArrayList<>(); if (StringUtils.isNotBlank(cardNo)) { Connection conn = ConnTools.makeLisConnection(); - QueryRunner queryRunner = new QueryRunner(); + QueryRunner queryRunner = new QueryRunner(true); try { - List list = queryRunner.query(conn, "select * from lis_check_info where P_CARD = '"+cardNo+"'", new BeanListHandler(LisCheckInfo.class)); - if (list.size() > 0) { - for (LisCheckInfo info:list) { - if (StringUtils.isNotBlank(info.getP_APPLICATIONNUM())) { - List resultList = queryRunner.query(conn, "select * from lis_check_result where P_APPLICATIONNUM = '"+info.getP_APPLICATIONNUM()+"'", new BeanListHandler(LisCheckResult.class)); - if (resultList != null && resultList.size() > 0) { + String sql = "select top 10000 baogaoleibiemingcheng as classifyName,huanzhexingming as name,shenqinghao as hospitalId,bingrenid as patientFid,zhuyuanhao as patientHid,kahao as vcCardNo,huanzhexingming as name,xingbie as sex,nianling as age,shenqingkeshidaima as deptCode,shenqingkeshimingcheng as deptName,shenqingyishengdaima as applyDoctorCode,shenqingyishengmingcheng as applyDoctorName,jianchayishengdaima as checkDoctorCode,jianchayishengxingming as checkDoctorName,baogaofabushijian as publishTime from valllist_ex_en where kahao ='"+cardNo+"' order by shenqinghao desc"; + String subSql = "select top 1000 sheqingdanhao as id,xiangmudaima as code,xiangmumingcheng as name,xiangmujieguo as result,zifujieguo as charResult,shuzijieguo as numberResult,gaodibiaozhi as flag,cankaozhi as ref,danwei as unit,jieguoleixing as result from valresult_ex_en where sheqingdanhao='"; + List lisReportList = queryRunner.query(conn, sql, new BeanListHandler(LisReport.class)); + List list = new ArrayList<>(); + if (lisReportList.size() > 0) { + for (LisReport lisReport:lisReportList) { + if (StringUtils.isNotBlank(lisReport.getHospitalId())) { + List lisReportItemList = queryRunner.query(conn, subSql+lisReport.getHospitalId()+"'", new BeanListHandler(LisReportItem.class)); + if (lisReportItemList != null && lisReportItemList.size() > 0) { CheckResponse check = new CheckResponse(); - check.setModified(DateUtil.parseYMDHMS(info.getMODIFIED())); + check.setModified(lisReport.getPublishTime()); check.setType(1); - check.setName(info.getP_NAME()); - check.setTitle(info.getP_TITLE()); - check.setAge(info.getP_AGE()); - check.setApplyDate(DateUtil.parseYMDHMS(info.getP_CHECKTIME())); - check.setApplyDateStr(DateUtil.getyyyy_MM_dd(DateUtil.parseYMDHMS(info.getP_CHECKTIME()))); - check.setCheckDept(info.getP_CHECKDEPARTNAME()); - check.setDoctor(info.getP_APPLATIONDOCNAME()); - if ("1".equals(info.getP_SEX())) { - check.setSex("男"); - } else if ("2".equals(info.getP_SEX())) { - check.setSex("女"); + check.setName(lisReport.getName()); + check.setTitle(lisReport.getClassifyName()); + if (lisReport.getAge() != null) { + check.setAge(lisReport.getAge().toString()); } + check.setApplyDate(lisReport.getPublishTime()); + check.setApplyDateStr(DateUtil.getyyyy_MM_dd(lisReport.getPublishTime())); + check.setCheckDept(lisReport.getDeptName()); + check.setDoctor(lisReport.getApplyDoctorName()); + check.setSex(lisReport.getSex()); List itemList = new ArrayList<>(); check.setItemList(itemList); - for (LisCheckResult checkItem:resultList) { + for (LisReportItem checkItem:lisReportItemList) { CheckItemResponse item = new CheckItemResponse(); - item.setName(checkItem.getP_ITEMNAME()); - item.setCode(checkItem.getP_ITEMCODE()); - item.setRefer(checkItem.getP_REFERENCEVALUE()); - item.setResult(checkItem.getP_ITEMRESULT()); - item.setUnit(checkItem.getP_UNIT()); - item.setSpecial(checkItem.getP_HIGHANDLOWMARK()); + item.setName(checkItem.getName()); + item.setCode(checkItem.getCode()); + item.setRefer(checkItem.getRef()); + if (StringUtils.isNotBlank(checkItem.getNumberResult())) { + item.setResult(checkItem.getNumberResult()); + } else if (StringUtils.isNotBlank(checkItem.getCharResult())) { + item.setResult(checkItem.getCharResult()); + } else { + item.setResult(item.getResult()); + } + item.setUnit(checkItem.getUnit()); + item.setSpecial(checkItem.getFlag()); itemList.add(item); } result.add(check); } } + } } DbUtils.closeQuietly(conn); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AntenatalExaminationController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AntenatalExaminationController.java index 4dcfc3e..628aded 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AntenatalExaminationController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/AntenatalExaminationController.java @@ -1,5 +1,6 @@ package com.lyms.platform.operate.web.controller; +import com.lyms.hospitalapi.qhdfy.QhdfyHisService; import com.lyms.hospitalapi.v1.HisService; import com.lyms.platform.common.annotation.TokenRequired; import com.lyms.platform.common.base.BaseController; @@ -34,6 +35,9 @@ public class AntenatalExaminationController extends BaseController { @Autowired private HisService hisServiceV1; + @Autowired + private QhdfyHisService qhdfyHisService; + /** * * @return @@ -42,7 +46,7 @@ public class AntenatalExaminationController extends BaseController { @ResponseBody // @TokenRequired public BaseResponse queryHisCheckList(String cardNo, HttpServletRequest request) { - return new BaseListResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setData(hisServiceV1.queryCheckList(cardNo)); + return new BaseListResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setData(qhdfyHisService.queryCheckList(cardNo)); } /** diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MongoSyncController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MongoSyncController.java index c3c57c7..03de23d 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MongoSyncController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/MongoSyncController.java @@ -46,4 +46,11 @@ public class MongoSyncController extends BaseController { return mongoSyncService.downloadByHospitalId(hospitalId); } + @ResponseBody + @RequestMapping(method = RequestMethod.POST,value = "/saveMongoModel") + public String saveMongoModel(String json, String className){ + return mongoSyncService.saveMongoModel(json,className); + } + + } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SyncDataController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SyncDataController.java index c276d38..76ba5fa 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SyncDataController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/SyncDataController.java @@ -3,7 +3,9 @@ package com.lyms.platform.operate.web.controller; import com.lyms.platform.biz.service.SyncDataService; import com.lyms.platform.common.base.BaseController; import com.lyms.platform.common.pojo.SyncDataModel; +import com.lyms.platform.common.utils.Config; import com.lyms.platform.common.utils.JsonUtil; +import com.lyms.platform.common.utils.LymsEncodeUtil; import com.lyms.platform.query.SyncDataQuery; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -23,6 +25,8 @@ public class SyncDataController extends BaseController { @Autowired private SyncDataService syncDataService; + public static String mongo_crypto_key = Config.getItem("mongo_crypto_key", "0"); + @RequestMapping(value = "/findSyncData", method = RequestMethod.POST) public void findSyncData(HttpServletResponse response) { SyncDataQuery syncDataQuery = new SyncDataQuery(); @@ -30,6 +34,17 @@ public class SyncDataController extends BaseController { syncDataQuery.setLimit(100); syncDataQuery.setStatus(1); List list = syncDataService.querySyncData(syncDataQuery); + for (SyncDataModel model:list) { + model.setModified(null); + model.setCreated(null); + if (model.getAction().startsWith("POST")) { + try { + model.setJsonData(LymsEncodeUtil.aesEncrypt(model.getJsonData(), mongo_crypto_key)); + } catch (Exception e) { + e.printStackTrace(); + } + } + } writeJson(response, JsonUtil.array2JsonString(list)); }