diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java index 1f2a0ff..eca9a43 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java @@ -3,6 +3,7 @@ package com.lyms.platform.operate.web.facade; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.google.common.collect.Maps; import com.lyms.platform.biz.service.*; import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.enums.*; @@ -1600,7 +1601,7 @@ public class ApplyOrderFacade { String data = null; try { //5.3.查询报告详情 - Map signParams = getSignParams(SYSCODE, SECRET); + Map signParams = getSignParams(SYSCODE, SECRET); String timestamp1 = signParams.get("timestamp").toString(); timestamp1 = timestamp1.replaceAll(" ", "%20");//空格替换成 %20 String syscode1 = signParams.get("syscode").toString(); @@ -1620,7 +1621,35 @@ public class ApplyOrderFacade { HuadaCallbackModel huadaCallbackModel = JSONObject.parseObject(rows.toString(), HuadaCallbackModel.class); System.out.println(huadaCallbackModel.toString()); - + String cardId = huadaCallbackModel.getCardId(); + Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("cardNo").is(cardId)), Patients.class); + if (patients != null) { + String patientsId = patients.getId(); + SieveResultModel sieveResultModel = mongoTemplate.findOne(Query.query(Criteria.where("parentId").is(patientsId)), SieveResultModel.class); + if (sieveResultModel != null) { + Update update = new Update(); + SieveResultModel model = getSieveResultModel(huadaCallbackModel, patientsId); + Map object = BeanUtils.objectToObjectMap(model); + Set> entries = object.entrySet(); + for (Map.Entry entry : entries) { + Object entryValue = entry.getValue(); + if (entryValue != null) { + if (entryValue instanceof String) { + if (StringUtils.isEmpty(entryValue.toString())) { + continue; + } + } + update.set(entry.getKey(), entry.getValue()); + } + } + mongoTemplate.updateFirst(Query.query(Criteria.where("_id").is(sieveResultModel.getId())), update, SieveResultModel.class); + logger.info(String.format("更新产筛结果: { %s }", update.toString())); + } else { + SieveResultModel model = getSieveResultModel(huadaCallbackModel, patientsId); + mongoTemplate.insert(model); + logger.info(String.format("新增产筛结果: { %s }", model.toString())); + } + } } catch (Exception e) { e.printStackTrace(); map.put("code", "500"); @@ -1632,6 +1661,49 @@ public class ApplyOrderFacade { return map; } + /** + * 组装 SieveResultModel + * + * @param huadaCallbackModel + * @param patientsId + * @return + */ + private SieveResultModel getSieveResultModel(final HuadaCallbackModel huadaCallbackModel, String patientsId) { + SieveResultModel newModel = new SieveResultModel(); + newModel.setResultTime(new Date()); + newModel.setReportType("1"); + newModel.setParentId(patientsId); + newModel.setSampleInfoId(huadaCallbackModel.getSampleInfoId()); + newModel.setSampleReportId(huadaCallbackModel.getSampleReportId()); + // 底风险0 高风险2 + newModel.setSbst(huadaCallbackModel.getT18().contains("未检出") ? "0" : "2"); + newModel.setStzhz13(huadaCallbackModel.getT13().contains("未检出") ? "0" : "2"); + newModel.setTszhz(huadaCallbackModel.getT21().contains("未检出") ? "0" : "2"); + + final String[] split18 = huadaCallbackModel.getT18Risk().split("/"); + final String[] split13 = huadaCallbackModel.getT13Risk().split("/"); + final String[] split21 = huadaCallbackModel.getT21Risk().split("/"); + /*Map map18 = Maps.newHashMap(); + map18.put("valueOne", split18[0]); + map18.put("valueTwo", split18[1]); + map18.put("valueKey", huadaCallbackModel.getZ18ZScore()); + Map map13 = Maps.newHashMap(); + map13.put("valueOne", split13[0]); + map13.put("valueTwo", split13[1]); + map13.put("valueKey", huadaCallbackModel.getZ13ZScore()); + Map map21 = Maps.newHashMap(); + map21.put("valueOne", split21[0]); + map21.put("valueTwo", split21[1]); + map21.put("valueKey", huadaCallbackModel.getZ21ZScore());*/ + newModel.setSbstValue(new HashMap(){{ + put("valueOne", split18[0]);put("valueTwo", split18[1]);put("valueKey", huadaCallbackModel.getZ18ZScore()); }}); + newModel.setStzhz13Value(new HashMap(){{ + put("valueOne", split13[0]);put("valueTwo", split13[1]);put("valueKey", huadaCallbackModel.getZ13ZScore()); }}); + newModel.setTszhzValue(new HashMap(){{ + put("valueOne", split21[0]);put("valueTwo", split21[1]);put("valueKey", huadaCallbackModel.getZ21ZScore()); }}); + return newModel; + } + public void huadaFtp(String sampleReportId,HttpServletResponse response) { try {