diff --git a/src/main/java/com/ynxbd/common/TestA.java b/src/main/java/com/ynxbd/common/TestA.java index 8ea9b57..4a4256f 100644 --- a/src/main/java/com/ynxbd/common/TestA.java +++ b/src/main/java/com/ynxbd/common/TestA.java @@ -76,4 +76,10 @@ public class TestA { // } +// public static void main(String[] args) { +// System.out.println(AesWxHelper.encode("oqsq-vyMNxdWrlZFkbigCre0PM8s")); +// System.out.println(AesWxHelper.encode("wxe53f0f528bb16d9f")); +// +// System.out.println(AesWxHelper.decode("A25BF2DD5820B151B8AB2E333E05565E")); +// } } diff --git a/src/main/java/com/ynxbd/common/action/AIGuidanceAction.java b/src/main/java/com/ynxbd/common/action/AIGuidanceAction.java index 61321af..b011e6e 100644 --- a/src/main/java/com/ynxbd/common/action/AIGuidanceAction.java +++ b/src/main/java/com/ynxbd/common/action/AIGuidanceAction.java @@ -32,7 +32,7 @@ public class AIGuidanceAction extends BaseAction { */ @Action("getAllHospInfo") public Result getAllHospInfo() { - if (!AIGuidanceConfig.IS_DEV && !AIGuidanceConfig.isVerifySign(request)) { + if (!AIGuidanceConfig.IS_DEBUG && !AIGuidanceConfig.isVerifySign(request)) { return Result.error(ResultEnum.SIGN_ERROR); // 签名异常 } @@ -50,7 +50,7 @@ public class AIGuidanceAction extends BaseAction { */ @Action("getHospDetail") public Result getHospDetail(String hosId) { - if (!AIGuidanceConfig.IS_DEV && !AIGuidanceConfig.isVerifySign(request)) { + if (!AIGuidanceConfig.IS_DEBUG && !AIGuidanceConfig.isVerifySign(request)) { return Result.error(ResultEnum.SIGN_ERROR); // 签名异常 } return new AIGuidanceService().getHospDetail(hosId); @@ -61,7 +61,7 @@ public class AIGuidanceAction extends BaseAction { */ @Action("getDeptList") public Result getDeptList(String hosId, String branchId) { - if (!AIGuidanceConfig.IS_DEV && !AIGuidanceConfig.isVerifySign(request)) { + if (!AIGuidanceConfig.IS_DEBUG && !AIGuidanceConfig.isVerifySign(request)) { return Result.error(ResultEnum.SIGN_ERROR); // 签名异常 } return new AIGuidanceService().getDeptList(hosId, branchId); @@ -72,7 +72,7 @@ public class AIGuidanceAction extends BaseAction { */ @Action("getDoctorList") public Result getDoctorList(String hosId, String branchId, String deptId) { - if (!AIGuidanceConfig.IS_DEV && !AIGuidanceConfig.isVerifySign(request)) { + if (!AIGuidanceConfig.IS_DEBUG && !AIGuidanceConfig.isVerifySign(request)) { return Result.error(ResultEnum.SIGN_ERROR); // 签名异常 } return new AIGuidanceService().getDoctorList(hosId, branchId, deptId); diff --git a/src/main/java/com/ynxbd/common/action/ApiAction.java b/src/main/java/com/ynxbd/common/action/ApiAction.java index 8a19740..4812548 100644 --- a/src/main/java/com/ynxbd/common/action/ApiAction.java +++ b/src/main/java/com/ynxbd/common/action/ApiAction.java @@ -5,6 +5,7 @@ import com.ynxbd.common.bean.Patient; import com.ynxbd.common.bean.User; import com.ynxbd.common.bean.sms.SmsTempEnum; import com.ynxbd.common.bean.sms.SmsTemplate; +import com.ynxbd.common.cache.GmcCacheManager; import com.ynxbd.common.config.interceptor.AesDecode; import com.ynxbd.common.helper.common.*; import com.ynxbd.common.result.Result; @@ -288,6 +289,7 @@ public class ApiAction extends BaseAction { if (ObjectUtils.isEmpty(openid)) { return Result.error(); } + GmcCacheManager.removeCacheGmcUser(openid); User cacheUser = WxCacheHelper.getCacheUser(openid); if (cacheUser == null) { return Result.error("没有缓存"); diff --git a/src/main/java/com/ynxbd/common/action/PatientAction.java b/src/main/java/com/ynxbd/common/action/PatientAction.java index d10b81b..3be35c9 100644 --- a/src/main/java/com/ynxbd/common/action/PatientAction.java +++ b/src/main/java/com/ynxbd/common/action/PatientAction.java @@ -387,25 +387,42 @@ public class PatientAction extends BaseAction { /** * [患者]查询列表 */ - @Action("queryPatientList") - public Result queryPatientList(@AesDecode String openId, @AesDecode String hospAppId) { - log.info("[患者]查询列表 hospAppId={}, openId={}", hospAppId, openId); - if (openId == null || hospAppId == null) { + @Action("getGmcPatientList") + public Result getGmcPatientList(@AesDecode String gmcOpenId, @AesDecode String hospAppId) { + log.info("[患者]查询列表 hospAppId={}, gmcOpenId={}", hospAppId, gmcOpenId); + if (gmcOpenId == null || hospAppId == null) { return Result.error(ResultEnum.PARAM_IS_DEFECT); } if (!hospAppId.equals(WeChatConfig.APP_ID)) { return Result.error(ResultEnum.PARAM_IS_INVALID); } - User user = WxCacheHelper.getCacheUser(openId); + User user = WxCacheHelper.getCacheUser(gmcOpenId); List patients; if (user == null) { try { - patients = new PatientService().queryPatientList(request, openId, null, true); + patients = new PatientService().queryPatientList(request, gmcOpenId, null, true); } catch (Exception e) { return Result.error(e); } } else { - patients = user.getPatientList(); + patients = JsonHelper.copyArray(user.getPatientList(), Patient.class); + } + + for (Patient item : patients) { + item.setAddress(AesWxHelper.encode(item.getAddress(), true)); + item.setBirthday(AesWxHelper.encode(item.getBirthday(), true)); + item.setHealthCardId(AesWxHelper.encode(item.getHealthCardId(), true)); + + // 清空多余id和本院id + item.setPatientId(null); + item.setEnPatientId(null); + item.setHisPatientId(null); + item.setEnHisPatientId(null); + + item.setId(null); + item.setOpenid(null); + item.setTel(null); + item.setIdCardNo(null); } return Result.success(patients); } diff --git a/src/main/java/com/ynxbd/common/bean/Patient.java b/src/main/java/com/ynxbd/common/bean/Patient.java index 23e1365..7fb2d75 100644 --- a/src/main/java/com/ynxbd/common/bean/Patient.java +++ b/src/main/java/com/ynxbd/common/bean/Patient.java @@ -113,6 +113,8 @@ public class Patient implements Serializable { private String bindingFlag; private HCardTypeEnum cardTypeEnum; + // 同步数据错误 + private Boolean isSyncFail; // HIS绑定 public boolean hasHisBind() { diff --git a/src/main/java/com/ynxbd/common/bean/ai/AIDept.java b/src/main/java/com/ynxbd/common/bean/ai/AIDept.java index a62c9a2..f2fb70b 100644 --- a/src/main/java/com/ynxbd/common/bean/ai/AIDept.java +++ b/src/main/java/com/ynxbd/common/bean/ai/AIDept.java @@ -26,6 +26,8 @@ public class AIDept { private String parentDeptId; // 排班url private String deptUrl; + + private String deptMiniWxUrl; private String deptMiniAlipayUrl; private String deptLifeAlipayUrl; private String deptEmbedAlipayUrl; diff --git a/src/main/java/com/ynxbd/common/bean/ai/AIDoctor.java b/src/main/java/com/ynxbd/common/bean/ai/AIDoctor.java index e7f3625..32030d8 100644 --- a/src/main/java/com/ynxbd/common/bean/ai/AIDoctor.java +++ b/src/main/java/com/ynxbd/common/bean/ai/AIDoctor.java @@ -14,7 +14,7 @@ public class AIDoctor { private String doctorId; // 医生名称 private String doctorName; - // 医生性别 + // 医生性别{ 1:男; 2:女 } private Integer doctorSex; // 科室地址 private String doctorJobTitle; @@ -30,9 +30,12 @@ public class AIDoctor { private String extraData; // 介绍信息是否为 HTML文档 private Boolean isHTML; + // 跳转微信小程序URL + private String doctorMiniWxUrl; // 支付宝链接 private String doctorMiniAlipayUrl; private String doctorLifeAlipayUrl; private String doctorEmbedAlipayUrl; + } diff --git a/src/main/java/com/ynxbd/common/cache/GmcCacheManager.java b/src/main/java/com/ynxbd/common/cache/GmcCacheManager.java new file mode 100644 index 0000000..8fd0823 --- /dev/null +++ b/src/main/java/com/ynxbd/common/cache/GmcCacheManager.java @@ -0,0 +1,71 @@ +package com.ynxbd.common.cache; + +import com.ynxbd.common.bean.Patient; +import com.ynxbd.common.bean.User; +import com.ynxbd.common.config.EhCacheConfig; +import com.ynxbd.common.helper.common.JsonHelper; +import lombok.extern.slf4j.Slf4j; +import org.ehcache.Cache; + +import java.util.ArrayList; +import java.util.List; + + +@Slf4j +public class GmcCacheManager { + // 医共体缓存数据 + private static Cache GMC_USER_CACHE; + + static { + createGmcUserCacheManager(); + } + + private synchronized static void createGmcUserCacheManager() { + if (GMC_USER_CACHE == null) { + GMC_USER_CACHE = EhCacheConfig.createCacheTTL(String.class, User.class, "db_gmc_cache", (900L)); // 15分钟 + } + } + + public static Cache getGmcUserCacheManager() { + if (GMC_USER_CACHE == null) { + createGmcUserCacheManager(); + } + return GMC_USER_CACHE; + } + + public static void addCacheGmcUser(String openid, User user) { + Cache cache = getGmcUserCacheManager(); + if (cache != null) { + cache.put(openid, user); + } + } + + public static void removeCacheGmcUser(String openid) { + Cache cache = getGmcUserCacheManager(); + if (cache != null) { + cache.remove(openid); + } + } + + public static boolean hasCacheGmcUser(String openid) { + if (GMC_USER_CACHE == null) { + createGmcUserCacheManager(); + } + return GMC_USER_CACHE.containsKey(openid); + } + + public static List getCacheGmcUserPatientList(String openid) { + if (GMC_USER_CACHE == null) { + createGmcUserCacheManager(); + } + User user = GMC_USER_CACHE.get(openid); + if (user == null) { + return new ArrayList<>(); + } + List patientList = user.getPatientList(); + if (patientList == null || patientList.isEmpty()) { + return new ArrayList<>(); + } + return JsonHelper.copyArray(patientList, Patient.class); + } +} diff --git a/src/main/java/com/ynxbd/common/dao/PatientDao.java b/src/main/java/com/ynxbd/common/dao/PatientDao.java index 1a48255..5854a9c 100644 --- a/src/main/java/com/ynxbd/common/dao/PatientDao.java +++ b/src/main/java/com/ynxbd/common/dao/PatientDao.java @@ -379,7 +379,7 @@ public class PatientDao { ps.setString(19, item.getAddress()); ps.setString(20, item.getAreaCode()); ps.setString(21, item.getAreaAddress()); - ps.setBoolean(22, item.getIsMyself()); + ps.setBoolean(22, item.getIsMyself() != null && item.getIsMyself()); ps.setString(23, cardTypeEnum == null ? HCardTypeEnum._01.WX_CODE : cardTypeEnum.WX_CODE); ps.setString(24, item.getUnionId()); ps.setString(25, CodeHelper.get32UUID()); @@ -391,8 +391,6 @@ public class PatientDao { } - - /** * 批量领卡后,更新健康卡ID * diff --git a/src/main/java/com/ynxbd/common/helper/common/JsonHelper.java b/src/main/java/com/ynxbd/common/helper/common/JsonHelper.java index 3efbed3..18aeb65 100644 --- a/src/main/java/com/ynxbd/common/helper/common/JsonHelper.java +++ b/src/main/java/com/ynxbd/common/helper/common/JsonHelper.java @@ -10,6 +10,7 @@ import com.alibaba.fastjson.serializer.SerializerFeature; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; +import java.util.ArrayList; import java.util.List; /** @@ -48,6 +49,17 @@ public class JsonHelper { return JSON.parseArray(data, clazz); } + public static List copyArray(Object data, Class clazz) { + if (data == null) { + return new ArrayList<>(); + } + String json = toJsonString(data); + if (ObjectUtils.isEmpty(json)) { + return new ArrayList<>(); + } + return parseArray(json, clazz); + } + /** * fastJson反序列化Bean * diff --git a/src/main/java/com/ynxbd/common/service/AIGuidanceService.java b/src/main/java/com/ynxbd/common/service/AIGuidanceService.java index f23aa0d..6c33398 100644 --- a/src/main/java/com/ynxbd/common/service/AIGuidanceService.java +++ b/src/main/java/com/ynxbd/common/service/AIGuidanceService.java @@ -7,7 +7,6 @@ import com.ynxbd.common.bean.ai.AIDoctor; import com.ynxbd.common.dao.RegisterDao; import com.ynxbd.common.dao.his.HisRegisterDao; import com.ynxbd.common.helper.common.DateHelper; -import com.ynxbd.common.helper.common.JsonHelper; import com.ynxbd.common.helper.common.URLHelper; import com.ynxbd.common.result.Result; import com.ynxbd.common.result.ResultEnum; @@ -94,6 +93,9 @@ public class AIGuidanceService { List children; for (Dept dept : deptList) { addItem = createAIDept(webReqURL, dept); + if (addItem == null) { + continue; + } dataList.add(addItem); children = dept.getChildren(); @@ -102,6 +104,9 @@ public class AIGuidanceService { childDept.setSubDeptCode(childDept.getDeptCode()); childDept.setDeptCode(dept.getDeptCode()); addItem = createAIDept(webReqURL, childDept); + if (addItem == null) { + continue; + } dataList.add(addItem); } } @@ -129,6 +134,7 @@ public class AIGuidanceService { item.setTreatrange(""); // 诊疗范围 item.setIsHTML(true); + item.setDeptMiniWxUrl(""); item.setDeptMiniAlipayUrl(""); item.setDeptLifeAlipayUrl(""); item.setDeptEmbedAlipayUrl(""); @@ -137,8 +143,8 @@ public class AIGuidanceService { subDeptCode = isSubDept ? ("&subDeptCode=" + subDeptCode) : ""; item.setDeptUrl(webReqURL + "reg-reserve.html#/reg-doctor?deptCode=" + dept.getDeptCode() + "&deptName=" + URLHelper.encodeURL(deptName) + subDeptCode + "&hospitalArea="); } catch (Exception e) { - log.error(e.getMessage()); - item.setDeptUrl(""); + log.error("[智能导诊]科室链接异常:{}", e.getMessage()); + return null; } return item; } @@ -204,9 +210,12 @@ public class AIGuidanceService { continue; } doctCode = doctCode.trim(); - if ("*".equals(doctCode)) { + if ("*".equals(doctCode)) { // 任意医生 item.setDoctorId("0"); + item.setDoctorSex(-1); doctCode = "0"; + } else { + item.setDoctorSex(-1); } deptCode = doctor.getDeptCode(); @@ -215,16 +224,16 @@ public class AIGuidanceService { item.setDoctorName(doctor.getDoctName()); item.setDoctorJobTitle(doctor.getTitle() == null ? "" : doctor.getTitle()); // 职称 item.setDoctorGoodat(doctor.getSkill() == null ? "" : doctor.getSkill()); // 擅长 - item.setDoctorIntro(doctor.getDescription() == null ? "" : doctor.getDescription()); // 介绍 + item.setDoctorIntro(ObjectUtils.isEmpty(doctor.getDescription()) ? "暂无介绍" : doctor.getDescription()); // 介绍 headImg = doctor.getHeadImg(); if (headImg != null && !ObjectUtils.isEmpty(headImg.trim())) { if (!headImg.contains("data:image/")) { // 不是base64 item.setDoctorImage(domain + headImg); // 头像 } } - item.setDoctorSex(-1); item.setExtraData("{}"); // 额外信息 item.setIsHTML(true); + item.setDoctorMiniWxUrl(""); item.setDoctorMiniAlipayUrl(""); item.setDoctorLifeAlipayUrl(""); item.setDoctorEmbedAlipayUrl(""); diff --git a/src/main/java/com/ynxbd/common/service/GMCService.java b/src/main/java/com/ynxbd/common/service/GMCService.java index 745cd1b..2ca7519 100644 --- a/src/main/java/com/ynxbd/common/service/GMCService.java +++ b/src/main/java/com/ynxbd/common/service/GMCService.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.ynxbd.common.bean.GMCUser; import com.ynxbd.common.bean.Patient; import com.ynxbd.common.bean.enums.HCardTypeEnum; +import com.ynxbd.common.cache.GmcCacheManager; import com.ynxbd.common.dao.GMCUserDao; import com.ynxbd.common.dao.PatientDao; import com.ynxbd.common.dao.his.HisPatientDao; @@ -45,8 +46,8 @@ public class GMCService { } String enGmcOpenId = AesWxHelper.encode(gmcOpenId); long begTime = System.currentTimeMillis(); - JsonResult jsonResult = postFormGMC(request, "/patient/queryPatientList", params -> { - params.put("openId", enGmcOpenId); + JsonResult jsonResult = postFormGMC(request, "/patient/getGmcPatientList", params -> { + params.put("gmcOpenId", enGmcOpenId); params.put("hospAppId", AesWxHelper.encode(WeChatConfig.GMC_APP_ID)); }, null); if (!jsonResult.success()) { @@ -55,11 +56,19 @@ public class GMCService { throw new ServiceException("[医共体-数据同步]请求主服务失败:" + (ObjectUtils.isEmpty(message) ? "" : message)); } List gmcPatients = jsonResult.getDataMapList(Patient.class, "data"); + for (Patient item : gmcPatients) { + item.setTel(AesWxHelper.decode(item.getEnTel())); + item.setIdCardNo(AesWxHelper.decode(item.getEnCardNo())); + // + item.setAddress(AesWxHelper.decode(item.getAddress())); + item.setBirthday(AesWxHelper.decode(item.getBirthday())); + item.setHealthCardId(AesWxHelper.decode(item.getHealthCardId())); + } List addList = new ArrayList<>(); // 需添加用户 List removeIds = new ArrayList<>(); // 需删除用户ids - List dbPatients = new PatientDao().selectListByToken(wxOpenId, unionId); + List dbPatients = new PatientService().queryGmcCachePatientsByOpenId(wxOpenId, unionId); for (Patient item : gmcPatients) { item.setId(null); item.setOpenid(wxOpenId); @@ -73,20 +82,12 @@ public class GMCService { )).findFirst().orElse(null); if (findDBItem == null) { // 需新增 - item.setPatientId(null); // 清空主体医院的-本院患者id - item.setHisPatientId(null); addList.add(item); } else { // 比对数据 item.setId(findDBItem.getId()); - item.setPatientId(findDBItem.getPatientId()); // 本院患者id->用于新增数据 - item.setHisPatientId(findDBItem.getPatientId()); // 本院患者id->用于检查数据 - if (!findDBItem.equalsPatient(item)) { // 数据不同->需修改本地数据 removeIds.add(findDBItem.getId()); addList.add(item); - } else { - item.setGmcCheckTime(findDBItem.getGmcCheckTime()); // 本院的检查时间 - checkGmcPatient(item); } } } @@ -118,6 +119,7 @@ public class GMCService { } if (new PatientDao().updateGmcBindState(gmcUniqueId, item.getId(), item.getEmpiId())) { log.error("[医共体]同步用户数据,修改医共体绑定状态失败 id:{}", item.getId()); + item.setEmpiId(empiId); item.setGmcUniqueId(gmcUniqueId); gmcPatients.add(item); } @@ -135,6 +137,9 @@ public class GMCService { } int addRows = addDBPatients(addList); // 添加后会补充数据 + if (addRows > 0 || delRows > 0) { + GmcCacheManager.removeCacheGmcUser(wxOpenId); + } long endTime = System.currentTimeMillis(); String takeTime = (endTime - begTime) + "ms"; // 耗时 @@ -158,18 +163,22 @@ public class GMCService { for (Patient item : patients) { try { - if (ObjectUtils.isEmpty(item.getEmpiId())) { - log.info("[医共体-数据同步]本院绑定失败"); - continue; - } + // 清空多余id和本院id + item.setPatientId(null); + item.setEnPatientId(null); + item.setHisPatientId(null); + item.setEnHisPatientId(null); + Patient hisBindInfo = hisPatientDao.bind(false, item); if (hisBindInfo == null) { log.info("[医共体-数据同步]本院绑定失败"); + item.setIsSyncFail(false); continue; } String hisPatientId = hisBindInfo.getHisPatientId(); // 本院患者id String empiId = hisBindInfo.getEmpiId(); // 医共体id if (ObjectUtils.isEmpty(hisPatientId) || ObjectUtils.isEmpty(empiId)) { + item.setIsSyncFail(false); continue; } item.setGmcCheckTime(LocalDateTime.now()); @@ -178,6 +187,7 @@ public class GMCService { item.setEmpiId(empiId); addList.add(item); } catch (Exception e) { + item.setIsSyncFail(false); log.error(e.getMessage()); } } @@ -231,7 +241,8 @@ public class GMCService { String enGmcOpenId = bindInfo.getEnGmcOpenId(); // 认证主体的openid[县医院openid] String gmcOpenId = AesWxHelper.decode(enGmcOpenId); - String enOpenId = bindInfo.getEnOpenId(); // 本院openid + String openid = bindInfo.getOpenid(); // 本院openid + String enOpenId = AesWxHelper.encode(openid); log.info("[医共体绑定-转发]enGmcOpenId={}, gmcOpenId={}", enGmcOpenId, gmcOpenId); if (ObjectUtils.isEmpty(gmcOpenId)) { @@ -294,6 +305,8 @@ public class GMCService { log.error("[医共体]主体绑定-数据enEmpiId解密失败"); return null; } + // 主体绑定成功后,清除本院缓存 + GmcCacheManager.removeCacheGmcUser(openid); Patient patient = new Patient(); patient.setEnGmcOpenId(enGmcOpenId); // 主体医院openid @@ -324,13 +337,15 @@ public class GMCService { String gmcOpenId = gmcUser.getGmcOpenId(); JsonResult jsonResult = postFormGMC(request, "/patient/unBind", params -> { - params.put("openid", gmcOpenId); - params.put("epId", epId); + params.put("openid", AesWxHelper.encode(gmcOpenId)); + params.put("epId", AesWxHelper.encode(epId)); params.put("hospAppId", WeChatConfig.APP_ID); }, null); if (!jsonResult.success()) { throw new ServiceException(jsonResult.getMessage()); } + // 主体解绑成功后,清除本院缓存 + GmcCacheManager.removeCacheGmcUser(openId); return true; } diff --git a/src/main/java/com/ynxbd/common/service/PatientService.java b/src/main/java/com/ynxbd/common/service/PatientService.java index 76ffcca..dd3e668 100644 --- a/src/main/java/com/ynxbd/common/service/PatientService.java +++ b/src/main/java/com/ynxbd/common/service/PatientService.java @@ -4,6 +4,7 @@ import com.ynxbd.common.bean.GMCUser; import com.ynxbd.common.bean.Patient; import com.ynxbd.common.bean.User; import com.ynxbd.common.bean.enums.HCardTypeEnum; +import com.ynxbd.common.cache.GmcCacheManager; import com.ynxbd.common.config.HealthCardConfig; import com.ynxbd.common.dao.PatientDao; import com.ynxbd.common.dao.his.HisPatientDao; @@ -100,15 +101,39 @@ public class PatientService { } -// public List queryGMCPatientList(String enUnionId, String openid, String unionId, boolean isEnPid) { -// // 在查询时完成数据同步 -// if (!WeChatConfig.IS_GMC_SERVER) { // 不为医共体主体=>查询医共体患者数据 -// -// } -// return queryPatientList(openid, unionId, true); -// } + /** + * [医共体]查询缓存数据 + * + * @param openId openId + * @param unionId unionId + * @return list + */ + public List queryGmcCachePatientsByOpenId(String openId, String unionId) { + if (GmcCacheManager.hasCacheGmcUser(openId)) { + System.out.println("[医共体]返回缓存数据..."); + return GmcCacheManager.getCacheGmcUserPatientList(openId); + } + List patients = new PatientDao().selectListByToken(openId, unionId); + if (patients.isEmpty()) { + return new ArrayList<>(); + } + User user = new User(); + user.setOpenid(openId); + user.setPatientList(patients); + GmcCacheManager.addCacheGmcUser(openId, user); + return patients; + } - public List queryPatientList(HttpServletRequest request, String openId, String unionId, boolean isEnPid) throws ServiceException { + /** + * 查询患者信息 + * + * @param request request + * @param openId openId + * @param unionId unionId + * @param isEnInfo 是否加密数据 + */ + public List queryPatientList(HttpServletRequest request, String openId, String unionId, boolean isEnInfo) throws ServiceException { + List dbPatients; if (request != null && WeChatConfig.IS_ENABLE_GMC && !WeChatConfig.IS_GMC_SERVER) { // 不是主体服务器=>请求主服务器 GMCUserService gmcUserService = new GMCUserService(); GMCUser gmcUser = gmcUserService.queryInfoByOpenId(openId); @@ -116,14 +141,17 @@ public class PatientService { log.warn("[医共体]未找到关联关系 openId={}", openId); return new ArrayList<>(); } - return new GMCService().syncPatientData(request, openId, gmcUser.getGmcOpenId(), gmcUser.getGmcUnionId()); + dbPatients = new GMCService().syncPatientData(request, openId, gmcUser.getGmcOpenId(), gmcUser.getGmcUnionId()); + } else { + dbPatients = new PatientDao().selectListByToken(openId, unionId); } - List dbPatients = new PatientDao().selectListByToken(openId, unionId); - GMCService gmcService = new GMCService(); List patients = new ArrayList<>(); for (Patient item : dbPatients) { + if (item.getIsSyncFail() != null && !item.getIsSyncFail()) { // 数据同步失败 + continue; + } String patientId = item.getPatientId(); item.setHisPatientId(patientId); // 本院患者id @@ -136,7 +164,7 @@ public class PatientService { item.setPatientId(empiId); } - if (isEnPid) { + if (isEnInfo) { item.filterData(false); } patients.add(item); diff --git a/src/main/java/com/ynxbd/wx/config/AIGuidanceConfig.java b/src/main/java/com/ynxbd/wx/config/AIGuidanceConfig.java index 7895691..80affce 100644 --- a/src/main/java/com/ynxbd/wx/config/AIGuidanceConfig.java +++ b/src/main/java/com/ynxbd/wx/config/AIGuidanceConfig.java @@ -19,6 +19,8 @@ public class AIGuidanceConfig { public final static boolean IS_ENABLE; // 是否为测试环境 public final static boolean IS_DEV; + // 是否为调试 + public final static boolean IS_DEBUG; // 是否为分时段挂号 public final static boolean IS_SPLIT_TIME_REG; //配置文件读取项 @@ -38,16 +40,18 @@ public class AIGuidanceConfig { config.setIsEnable(IS_ENABLE); IS_DEV = config.getBoolean("ai.is_dev", false); + IS_DEBUG = config.getBoolean("ai.is_debug", false); IS_SPLIT_TIME_REG = config.getBoolean("ai.is_split_time_reg", true); + KEY = IS_DEV ? config.getString("ai.dev_key") : config.getString("ai.key"); + PARTNER_ID = config.getString("ai.partner_id"); - KEY = config.getString("ai.key"); HOS_ID = config.getString("ai.hos_id"); HOS_NAME = config.getString("ai.hos_name"); - HOS_ADDRESS = config.getString("ai.hos_address"); - HOS_INTRO = config.getString("ai.hos_intro"); - HOS_LEVEL = config.getString("ai.hos_level"); - HOS_TELEPHONE = config.getString("ai.hos_telephone"); + HOS_ADDRESS = config.getString("ai.hos_address", ""); + HOS_INTRO = config.getString("ai.hos_intro", ""); + HOS_LEVEL = config.getString("ai.hos_level", ""); + HOS_TELEPHONE = config.getString("ai.hos_telephone", ""); if (PARTNER_ID == null) { log.error("[智能导诊]读取配置文件失败|功能未开启"); diff --git a/src/main/resources/ai-guidance.properties b/src/main/resources/ai-guidance.properties index f8a3e40..5caf170 100644 --- a/src/main/resources/ai-guidance.properties +++ b/src/main/resources/ai-guidance.properties @@ -1,14 +1,17 @@ # \u667A\u80FD\u5BFC\u8BCA\uFF08\u9700\u5546\u6237\u52A0https\u767D\u540D\u5355\uFF09 ai.is_enable=true +# \u662F\u5426\u5F00\u542F\u8C03\u8BD5 +ai.is_debug=false # \u662F\u5426\u4E3A\u6D4B\u8BD5\u73AF\u5883 ai.is_dev=true - # \u662F\u5426\u662F\u5206\u65F6\u6BB5\u6302\u53F7(\u9ED8\u8BA4true) ai.is_split_time_reg=false # \u5408\u4F5C\u65B9id ai.partner_id=100000317 # \u5BC6\u94A5 ai.key=795b207e12572839976d9310bdde32be +# \u6D4B\u8BD5\u73AF\u5883\u5BC6\u94A5 +ai.dev_key=2a49b1566c3c2e42a1ff9e483abb57da # \u533B\u9662id ai.hos_id=20002953 # \u533B\u9662\u540D\u79F0 diff --git a/src/main/resources/copy/ai-guidance/德宏州中医院.properties b/src/main/resources/copy/ai-guidance/德宏州中医院.properties index 370b635..02a0612 100644 --- a/src/main/resources/copy/ai-guidance/德宏州中医院.properties +++ b/src/main/resources/copy/ai-guidance/德宏州中医院.properties @@ -1,5 +1,7 @@ # \u667A\u80FD\u5BFC\u8BCA\uFF08\u9700\u5546\u6237\u52A0https\u767D\u540D\u5355\uFF09 ai.is_enable=false +# \u662F\u5426\u662F\u5206\u65F6\u6BB5\u6302\u53F7(\u9ED8\u8BA4true) +ai.is_split_time_reg=true # \u5408\u4F5C\u65B9id ai.partner_id=100000317 # \u5BC6\u94A5\uFF08token\uFF09 @@ -10,7 +12,7 @@ ai.hos_id=20002953 ai.hos_name=\u5FB7\u5B8F\u5DDE\u4E2D\u533B\u533B\u9662 # \u533B\u9662\u5730\u5740 ai.hos_address=\u533B\u9662\u5730\u5740 -# \u533B\u9662\u5730\u5740 +# \u533B\u9662\u7B80\u4ECB ai.hos_intro=\u533B\u9662\u4ECB\u7ECD # \u533B\u9662\u7B49\u7EA7 ai.hos_level=\u4E09\u7EA7\u4E59\u7B49 diff --git a/src/main/resources/copy/ai-guidance/石林县人民医院.properties b/src/main/resources/copy/ai-guidance/石林县人民医院.properties index 270013c..44b3f79 100644 --- a/src/main/resources/copy/ai-guidance/石林县人民医院.properties +++ b/src/main/resources/copy/ai-guidance/石林县人民医院.properties @@ -1,5 +1,7 @@ # \u667A\u80FD\u5BFC\u8BCA\uFF08\u9700\u5546\u6237\u52A0https\u767D\u540D\u5355\uFF09 ai.is_enable=true +# \u662F\u5426\u662F\u5206\u65F6\u6BB5\u6302\u53F7(\u9ED8\u8BA4true) +ai.is_split_time_reg=false # \u5408\u4F5C\u65B9id ai.partner_id=100000637 # \u5BC6\u94A5\uFF08token\uFF09 @@ -10,7 +12,7 @@ ai.hos_id=800002592 ai.hos_name=\u77F3\u6797\u5F5D\u65CF\u81EA\u6CBB\u53BF\u4EBA\u6C11\u533B\u9662 # \u533B\u9662\u5730\u5740 ai.hos_address=\u533B\u9662\u5730\u5740 -# \u533B\u9662\u5730\u5740 +# \u533B\u9662\u7B80\u4ECB ai.hos_intro=\u533B\u9662\u4ECB\u7ECD # \u533B\u9662\u7B49\u7EA7 ai.hos_level=\u4E8C\u7EA7\u7532\u7B49