diff --git a/src/main/java/com/ynxbd/common/TestA.java b/src/main/java/com/ynxbd/common/TestA.java index 1933cdc..ac79c10 100644 --- a/src/main/java/com/ynxbd/common/TestA.java +++ b/src/main/java/com/ynxbd/common/TestA.java @@ -1,5 +1,7 @@ package com.ynxbd.common; +import com.ynxbd.wx.wxfactory.AesWxHelper; + public class TestA { // public static void main(String[] args) { @@ -32,11 +34,11 @@ public class TestA { // } -// public static void main(String[] args) { -// System.out.println(AesWxHelper.encode("oqsq-vyMNxdWrlZFkbigCre0PM8s")); -// System.out.println(AesWxHelper.encode("wxe53f0f528bb16d9f")); -// + public static void main(String[] args) { + System.out.println(AesWxHelper.encode("624091")); + // System.out.println(AesWxHelper.decode("A25BF2DD5820B151B8AB2E333E05565E")); -// } + } + } diff --git a/src/main/java/com/ynxbd/common/action/SmsAction.java b/src/main/java/com/ynxbd/common/action/SmsAction.java index 3c44039..1d3f35b 100644 --- a/src/main/java/com/ynxbd/common/action/SmsAction.java +++ b/src/main/java/com/ynxbd/common/action/SmsAction.java @@ -5,7 +5,7 @@ import com.ynxbd.common.action.base.BaseAction; import com.ynxbd.common.bean.enums.HospEnum; import com.ynxbd.common.bean.sms.SmsTempEnum; import com.ynxbd.common.bean.sms.SmsTemplate; -import com.ynxbd.common.bean.wxMessage.WaitReg; +import com.ynxbd.common.bean.wx_msg.WaitReg; import com.ynxbd.common.dao.RegisterDao; import com.ynxbd.common.helper.common.CodeHelper; import com.ynxbd.common.helper.common.SmsHelper; @@ -21,7 +21,6 @@ import org.apache.struts2.convention.annotation.Namespace; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; /** * @Author wsq diff --git a/src/main/java/com/ynxbd/common/action/XBDAction.java b/src/main/java/com/ynxbd/common/action/XBDAction.java index 2498697..3a42bb4 100644 --- a/src/main/java/com/ynxbd/common/action/XBDAction.java +++ b/src/main/java/com/ynxbd/common/action/XBDAction.java @@ -280,7 +280,7 @@ public class XBDAction extends BaseAction { } /** - * 生成token // 德宏体检看pacs报告 + * 查询体检报告 */ @Action("getPeisByCardNo") public Result getPeisByCardNo(@AesDecode String cardNo, String begDate, String endDate) { diff --git a/src/main/java/com/ynxbd/common/action/base/BaseAction.java b/src/main/java/com/ynxbd/common/action/base/BaseAction.java index 47dbf86..67477e0 100644 --- a/src/main/java/com/ynxbd/common/action/base/BaseAction.java +++ b/src/main/java/com/ynxbd/common/action/base/BaseAction.java @@ -17,6 +17,8 @@ import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.*; import java.math.BigDecimal; +import java.util.HashMap; +import java.util.Map; /** @@ -167,25 +169,19 @@ public class BaseAction implements Serializable, ServletRequestAware { * @param request 请求体 */ public static JSONObject readBody(HttpServletRequest request) { - BufferedReader br = null; - try { - br = request.getReader(); - String line; - StringBuilder sb = new StringBuilder(); - while ((line = br.readLine()) != null) { - sb.append(line); - } - return JsonHelper.parseObject(sb.toString()); - } catch (Exception e) { - log.error(e.getMessage()); - } finally { + try (BufferedReader br = request.getReader()) { try { - if (br != null) { - br.close(); + String line; + StringBuilder sb = new StringBuilder(); + while ((line = br.readLine()) != null) { + sb.append(line); } + return JsonHelper.parseObject(sb.toString()); } catch (Exception e) { log.error(e.getMessage()); } + } catch (Exception e) { + log.error(e.getMessage()); } return null; } @@ -200,4 +196,26 @@ public class BaseAction implements Serializable, ServletRequestAware { // 未经过代理,直接检查原生请求 return request.isSecure(); } + + + /** + * 获取所有【URL参数 + form表单参数】 + */ + protected Map reqParamsToMap() { + Map params = new HashMap<>(); + Map requestParameterMap = request.getParameterMap(); + for (Map.Entry entry : requestParameterMap.entrySet()) { + String[] values = entry.getValue(); + params.put(entry.getKey(), values.length > 0 ? values[0] : ""); + } + return params; + } + + /** + * 获取所有【URL参数 + form表单参数】转为JSON + */ + protected T reqParamsToBean(Class clazz) { + Map params = reqParamsToMap(); + return JsonHelper.parseObject(JsonHelper.toJsonString(params), clazz); + } } diff --git a/src/main/java/com/ynxbd/common/action/healthcard/AIGuidanceAction.java b/src/main/java/com/ynxbd/common/action/healthcard/AIGuidanceAction.java index 0a3f515..1ccaea1 100644 --- a/src/main/java/com/ynxbd/common/action/healthcard/AIGuidanceAction.java +++ b/src/main/java/com/ynxbd/common/action/healthcard/AIGuidanceAction.java @@ -1,5 +1,6 @@ package com.ynxbd.common.action.healthcard; +import com.alibaba.fastjson.JSONObject; import com.ynxbd.common.action.base.BaseAction; import com.ynxbd.common.config.healthcard.HCAIGuidanceConfig; import com.ynxbd.common.result.Result; @@ -79,6 +80,47 @@ public class AIGuidanceAction extends BaseAction { } + /** + * 4.1.5 查询就诊人列表(必选) + */ + @Action("getPatientCardList") + public Result getPatientCardList(String hosId, String branchId, String deptId) { + if (!HCAIGuidanceConfig.IS_DEBUG && !HCAIGuidanceConfig.isVerifySign(request)) { + return Result.error(ResultEnum.SIGN_ERROR); // 签名异常 + } + return new AIGuidanceService().getPatientCardList(hosId, branchId, deptId); + } + + + /** + * 4.1.9 获取医生号源排班信息(必选) + */ + @Action("getDoctorSchedule") + public Result getDoctorSchedule() { + JSONObject body = getBody(); + String hosId = body.getString("hosId"); + String branchId = body.getString("branchId"); + String doctors = body.getString("doctors"); + log.info("[获取医生号源排班信息]hosId={}, branchId={}, doctors={}", hosId, branchId, doctors); + if (!HCAIGuidanceConfig.IS_DEBUG && !HCAIGuidanceConfig.isVerifySign(request)) { + return Result.error(ResultEnum.SIGN_ERROR); // 签名异常 + } + return new AIGuidanceService().getDoctorSchedule(hosId, branchId, doctors); + } + + /** + * 4.2.1.1 查询医院的首页服务列表(必选) + */ + @Action("getHospitalHomeService") + public Result getHospitalHomeService(String hosId) { + log.info("[查询医院的首页服务列表]hosId={}", hosId); + if (!HCAIGuidanceConfig.IS_DEBUG && !HCAIGuidanceConfig.isVerifySign(request)) { + return Result.error(ResultEnum.SIGN_ERROR); // 签名异常 + } + return new AIGuidanceService().getHospitalHomeService(hosId); + } + + /** * 跳转重定向 */ diff --git a/src/main/java/com/ynxbd/common/action/pay/PayAction.java b/src/main/java/com/ynxbd/common/action/pay/PayAction.java index f82ed95..bdae783 100644 --- a/src/main/java/com/ynxbd/common/action/pay/PayAction.java +++ b/src/main/java/com/ynxbd/common/action/pay/PayAction.java @@ -887,7 +887,7 @@ public class PayAction extends BaseAction { return Result.error(ResultEnum.PAY_TYPE_ERROR); } - if (ObjectUtils.isEmpty(XBDHelper.XBD_PEIS)) { + if (ObjectUtils.isEmpty(XBDHelper.PEIS_URL)) { return Result.error(ResultEnum.SYSTEM_CONFIG_ERROR); } diff --git a/src/main/java/com/ynxbd/common/action/pay/ThirdPartyPayAction.java b/src/main/java/com/ynxbd/common/action/pay/ThirdPartyPayAction.java index 38d7ae2..26da325 100644 --- a/src/main/java/com/ynxbd/common/action/pay/ThirdPartyPayAction.java +++ b/src/main/java/com/ynxbd/common/action/pay/ThirdPartyPayAction.java @@ -69,6 +69,7 @@ public class ThirdPartyPayAction extends BaseAction { reg.setRegType(DateHelper.isToday(date) ? "2" : "1"); reg.setSourceId(sourceId); reg.setPatientId(patientId); + reg.setHisPatientId(patientId); reg.setTotalFee(money); reg.setPayMoney(money); @@ -87,7 +88,6 @@ public class ThirdPartyPayAction extends BaseAction { return Result.error(ResultEnum.SPECIFIED_QUESTIONED_USER_NOT_EXIST); } - String ip = request.getRemoteAddr(); String body = "扫码挂号" + date + " 患者:" + patientId; diff --git a/src/main/java/com/ynxbd/common/action/test/TestAction.java b/src/main/java/com/ynxbd/common/action/test/TestAction.java index 01142cc..adf37e1 100644 --- a/src/main/java/com/ynxbd/common/action/test/TestAction.java +++ b/src/main/java/com/ynxbd/common/action/test/TestAction.java @@ -1,6 +1,7 @@ package com.ynxbd.common.action.test; import com.ynxbd.common.action.base.BaseAction; +import com.ynxbd.common.bean.pay.Register; import com.ynxbd.common.bean.sms.SmsTempEnum; import com.ynxbd.common.helper.common.DateHelper; import com.ynxbd.common.helper.common.SmsHelper; @@ -13,6 +14,7 @@ import com.ynxbd.wx.wxfactory.WxPayHelper; import com.ynxbd.wx.wxfactory.medical.WxMedConfig; import com.ynxbd.wx.wxfactory.medical.models.WxMedOrder; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; @@ -52,6 +54,8 @@ public class TestAction extends BaseAction { } + + // @Action("a") // public String a() { // String sql = "select * from a limit 0, 100"; @@ -125,7 +129,7 @@ public class TestAction extends BaseAction { String url = WeChatConfig.getHttpsBaseURL() + "ali_qrcode" + "?p=123"; System.out.println(url); System.out.println(); - return Result.redirect( "/wx/test02/log_test"); + return Result.redirect("/wx/test02/log_test"); } // @Action("lock") diff --git a/src/main/java/com/ynxbd/common/bean/Doctor.java b/src/main/java/com/ynxbd/common/bean/Doctor.java index 16b8272..50823bb 100644 --- a/src/main/java/com/ynxbd/common/bean/Doctor.java +++ b/src/main/java/com/ynxbd/common/bean/Doctor.java @@ -33,7 +33,7 @@ public class Doctor implements Serializable { private String title; // 医师职称 private String customTitle; - // 简介 + // 擅长 private String skill; // 电话 private String tel; diff --git a/src/main/java/com/ynxbd/common/bean/ai/AIDoctorSchedule.java b/src/main/java/com/ynxbd/common/bean/ai/AIDoctorSchedule.java index 72c60ca..8f5a059 100644 --- a/src/main/java/com/ynxbd/common/bean/ai/AIDoctorSchedule.java +++ b/src/main/java/com/ynxbd/common/bean/ai/AIDoctorSchedule.java @@ -6,6 +6,7 @@ import lombok.Setter; import lombok.ToString; import java.util.List; +import java.util.Map; @Setter @Getter @@ -43,4 +44,7 @@ public class AIDoctorSchedule { private String url; private List schedule; + + // 科室下的医生集 + private Map doctorIds; } diff --git a/src/main/java/com/ynxbd/common/bean/healthcard/HCHospitalHome.java b/src/main/java/com/ynxbd/common/bean/healthcard/HCHospitalHome.java new file mode 100644 index 0000000..382ff84 --- /dev/null +++ b/src/main/java/com/ynxbd/common/bean/healthcard/HCHospitalHome.java @@ -0,0 +1,48 @@ +package com.ynxbd.common.bean.healthcard; + + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Getter +@Setter +@ToString +@NoArgsConstructor +public class HCHospitalHome { + /** + * 场景 eg: 门诊、体检、通用、住院 + */ + private String scene; + + /** + * 服务名称:建议6字以内,超出第6字后省略号展示 eg:预约挂号、在线缴费 + */ + private String serviceName; + + /** + * 服务描述 非必填 建议15字以内,超出省略号展示 + */ + private String remark; + + /** + * H5地址 跳转H5、小程序二选一 + */ + private String h5Url; + + /** + * 小程序appId + */ + private String wxAppId; + + /** + * 小程序跳转路径 + */ + private String wxAppPath; + + /** + * 小程序原始id + */ + private String wxAppOriginalId; +} diff --git a/src/main/java/com/ynxbd/common/bean/pay/Order.java b/src/main/java/com/ynxbd/common/bean/pay/Order.java index 559f1ed..6d0a341 100644 --- a/src/main/java/com/ynxbd/common/bean/pay/Order.java +++ b/src/main/java/com/ynxbd/common/bean/pay/Order.java @@ -37,10 +37,13 @@ public class Order implements Serializable { private String payOpenId; // 支付商户编码 private String payMchCode; - // 患者id + // 患者id | 医共体id private String patientId; // 加密的patientId private String enPatientId; + // his患者ID + private String hisPatientId; + private String enHisPatientId; // 患者姓名 private String patientName; // 证件号码 diff --git a/src/main/java/com/ynxbd/common/bean/wxMessage/WaitReg.java b/src/main/java/com/ynxbd/common/bean/wx_msg/WaitReg.java similarity index 94% rename from src/main/java/com/ynxbd/common/bean/wxMessage/WaitReg.java rename to src/main/java/com/ynxbd/common/bean/wx_msg/WaitReg.java index 837d73d..3a99977 100644 --- a/src/main/java/com/ynxbd/common/bean/wxMessage/WaitReg.java +++ b/src/main/java/com/ynxbd/common/bean/wx_msg/WaitReg.java @@ -1,4 +1,4 @@ -package com.ynxbd.common.bean.wxMessage; +package com.ynxbd.common.bean.wx_msg; import lombok.Getter; diff --git a/src/main/java/com/ynxbd/common/config/healthcard/HCAIGuidanceConfig.java b/src/main/java/com/ynxbd/common/config/healthcard/HCAIGuidanceConfig.java index 419be29..4e5edfc 100644 --- a/src/main/java/com/ynxbd/common/config/healthcard/HCAIGuidanceConfig.java +++ b/src/main/java/com/ynxbd/common/config/healthcard/HCAIGuidanceConfig.java @@ -7,6 +7,8 @@ import org.apache.commons.lang3.ObjectUtils; import javax.servlet.http.HttpServletRequest; +// 智能导诊 + @Slf4j public class HCAIGuidanceConfig { public final static boolean IS_ENABLE; @@ -16,13 +18,21 @@ public class HCAIGuidanceConfig { public final static boolean IS_DEBUG; // 是否为分时段挂号 public final static boolean IS_SPLIT_TIME_REG; - //配置文件读取项 + // 配置文件读取项 public final static String HOSP_ID; - // 密钥token - public final static String TOKEN; + /** + * AI版:电子健康卡AppId(管理>开发商接入) + * 旧版:合作方ID(腾讯提供) + */ public final static String PARTNER_ID; + /** + * AI版:电子健康卡AppSecret(管理>开发商接入) + * 旧版:Token(腾讯提供) + */ + public final static String PARTNER_KEY; + public final static String HOSP_NAME; public final static String HOSP_ADDRESS; @@ -42,7 +52,7 @@ public class HCAIGuidanceConfig { IS_DEBUG = config.getBoolean("is_debug", false); IS_SPLIT_TIME_REG = config.getBoolean("is_split_time_reg", true); - TOKEN = IS_DEV ? config.getString("dev_token") : config.getString("token"); + PARTNER_KEY = config.getString(IS_DEV ? "dev_partner_key" : "partner_key"); PARTNER_ID = config.getString("partner_id"); HOSP_ID = config.getString("hosp_id"); @@ -75,7 +85,7 @@ public class HCAIGuidanceConfig { log.info("[智能导诊]验签 timestamp={}, signature={}", timestamp, signature); String str = PARTNER_ID + timestamp; - String cacheSign = HMACHelper.sha256(str, TOKEN); + String cacheSign = HMACHelper.sha256(str, PARTNER_KEY); return signature.equals(cacheSign); } } diff --git a/src/main/java/com/ynxbd/common/config/healthcard/HCPWEConfig.java b/src/main/java/com/ynxbd/common/config/healthcard/HCPWEConfig.java new file mode 100644 index 0000000..0f2a595 --- /dev/null +++ b/src/main/java/com/ynxbd/common/config/healthcard/HCPWEConfig.java @@ -0,0 +1,49 @@ +package com.ynxbd.common.config.healthcard; + +import com.ynxbd.common.helper.common.XmlConfigHelper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; + +import java.util.Arrays; +import java.util.List; + +// 预问诊 + +@Slf4j +public class HCPWEConfig { + + public static final String PARTNER_ID; + public static final String PARTNER_SECRET; // 合作方密钥 + public static final String HOSPITAL_ID; // 医院ID + public static final String SECRET_KEY; // 私钥 + public static final String DEV_OPEN_IDS; // 用于测试的openid + + public static final boolean IS_DEV; + public static final boolean IS_ENABLE; + + static { + XmlConfigHelper config = new XmlConfigHelper().read("hc-config.xml", "pwe"); + IS_ENABLE = config.getBoolean("is_enable", false); + config.setIsEnable(IS_ENABLE); + + IS_DEV = config.getBoolean("is_dev", false); + HOSPITAL_ID = config.getString("hospital_id"); + PARTNER_ID = config.getString("partner_id"); + PARTNER_SECRET = config.getString(IS_DEV ? "dev_partner_secret" : "partner_secret"); + SECRET_KEY = config.getString(IS_DEV ? "dev_secret_key" : "secret_key"); + DEV_OPEN_IDS = config.getString("dev_open_ids"); + + if (PARTNER_ID == null || PARTNER_SECRET == null) { + log.error("[预问诊]读取配置文件pwe.properties失败"); + } + } + + public static boolean hasDevOpenId(String openid) { + if (ObjectUtils.isEmpty(openid)) { + return false; + } + String openIds = DEV_OPEN_IDS == null ? "" : DEV_OPEN_IDS; + List openIdList = Arrays.asList(openIds.split(",")); + return openIdList.contains(openid); + } +} diff --git a/src/main/java/com/ynxbd/common/config/healthcard/HCReportConfig.java b/src/main/java/com/ynxbd/common/config/healthcard/HCReportConfig.java index 500d701..1e646f7 100644 --- a/src/main/java/com/ynxbd/common/config/healthcard/HCReportConfig.java +++ b/src/main/java/com/ynxbd/common/config/healthcard/HCReportConfig.java @@ -3,6 +3,8 @@ package com.ynxbd.common.config.healthcard; import com.ynxbd.common.helper.common.XmlConfigHelper; import lombok.extern.slf4j.Slf4j; +// 报告解读 + @Slf4j public class HCReportConfig { @@ -16,8 +18,8 @@ public class HCReportConfig { XmlConfigHelper config = new XmlConfigHelper().read("hc-config.xml", "report"); IS_DEV = config.getBoolean("is_dev", false); - TOKEN = config.getString("token"); - PARTNER_ID = config.getString("partner_id"); + TOKEN = config.getString(IS_DEV ? "dev_token" : "token"); + PARTNER_ID = config.getString(IS_DEV ? "dev_partner_id" : "partner_id"); } // 生成签名 diff --git a/src/main/java/com/ynxbd/common/config/healthcard/HCSignHelper.java b/src/main/java/com/ynxbd/common/config/healthcard/HCSignHelper.java index c70546a..6767b91 100644 --- a/src/main/java/com/ynxbd/common/config/healthcard/HCSignHelper.java +++ b/src/main/java/com/ynxbd/common/config/healthcard/HCSignHelper.java @@ -7,6 +7,8 @@ import lombok.extern.slf4j.Slf4j; import java.util.UUID; +// 签名生成 + @Slf4j @Getter public class HCSignHelper { diff --git a/src/main/java/com/ynxbd/common/dao/RecipeDao.java b/src/main/java/com/ynxbd/common/dao/RecipeDao.java index 29a23a8..683ae4c 100644 --- a/src/main/java/com/ynxbd/common/dao/RecipeDao.java +++ b/src/main/java/com/ynxbd/common/dao/RecipeDao.java @@ -73,7 +73,7 @@ public class RecipeDao { * @return 是否存储成功 */ public boolean insertMedical(Recipe recipe) { - String sql = "insert into pay(updateTime, hisStatus, payStatus, openId, patientId, payWay, payMoney, totalFee, outTradeNo, bankTransNo, tradeNo, recipeId, treatNum, authCode, invoiceTransNo, hisTransNo, operateUser, deptCode, deptName, reqDeptCode, reqDeptName, hospitalArea, PayOrdId, AcctFee, HifpFee, ChrgBchno, MdTrtId, MdUserId, RecipeJson, PayMchCode, PayOpenId) values (now(),?,?,?,?,?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?)"; + String sql = "insert into pay(updateTime, hisStatus, payStatus, openId, patientId, payWay, payMoney, totalFee, outTradeNo, bankTransNo, tradeNo, recipeId, treatNum, authCode, invoiceTransNo, hisTransNo, operateUser, deptCode, deptName, reqDeptCode, reqDeptName, hospitalArea, PayOrdId, AcctFee, HifpFee, ChrgBchno, MdTrtId, MdUserId, RecipeJson, PayMchCode, PayOpenId, HisPatientId) values (now(),?,?,?,?,?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?, ?)"; return DataBase.insert(sql, ps -> { ps.setInt(1, recipe.getHisStatus()); ps.setInt(2, recipe.getPayStatus()); @@ -109,6 +109,7 @@ public class RecipeDao { ps.setString(28, recipe.getRecipeJson()); ps.setString(29, recipe.getPayMchCode()); ps.setString(30, recipe.getPayOpenId()); + ps.setString(31, recipe.getHisPatientId()); }) > 0; } diff --git a/src/main/java/com/ynxbd/common/dao/RegisterDao.java b/src/main/java/com/ynxbd/common/dao/RegisterDao.java index 16f1201..12ebee0 100644 --- a/src/main/java/com/ynxbd/common/dao/RegisterDao.java +++ b/src/main/java/com/ynxbd/common/dao/RegisterDao.java @@ -4,7 +4,7 @@ import com.ynxbd.common.bean.Dept; import com.ynxbd.common.bean.Doctor; import com.ynxbd.common.bean.pay.Order; import com.ynxbd.common.bean.pay.Register; -import com.ynxbd.common.bean.wxMessage.WaitReg; +import com.ynxbd.common.bean.wx_msg.WaitReg; import com.ynxbd.common.config.db.DataBase; import com.ynxbd.common.dao.his.HisRegisterDao; import com.ynxbd.common.helper.common.DateHelper; diff --git a/src/main/java/com/ynxbd/common/dao/his/HisMedDao.java b/src/main/java/com/ynxbd/common/dao/his/HisMedDao.java index bd01815..1d7f988 100644 --- a/src/main/java/com/ynxbd/common/dao/his/HisMedDao.java +++ b/src/main/java/com/ynxbd/common/dao/his/HisMedDao.java @@ -58,9 +58,15 @@ public class HisMedDao { // 医保----------------------------------- params.put("PayAuthNo", payAuthNo); params.put("PersonID", cardNo); - if (ObjectUtils.isNotEmpty(ybAttrib) && ObjectUtils.isNotEmpty(ybBZCode) && ObjectUtils.isNotEmpty(ybBZName)) { + if (ObjectUtils.isNotEmpty(ybAttrib)) { params.put("YBAttrib", ybAttrib); + } + + if (ObjectUtils.isNotEmpty(ybBZCode)) { params.put("YBBZCode", ybBZCode); + } + + if (ObjectUtils.isNotEmpty(ybBZName)) { params.put("YBBZName", ybBZName); } return HisMedHelper.getJsonResult(merchantEnum, HisEnum.AP_Pay_Invoice, params); diff --git a/src/main/java/com/ynxbd/common/helper/common/SmsHelper.java b/src/main/java/com/ynxbd/common/helper/common/SmsHelper.java index fa3e559..7107251 100644 --- a/src/main/java/com/ynxbd/common/helper/common/SmsHelper.java +++ b/src/main/java/com/ynxbd/common/helper/common/SmsHelper.java @@ -43,11 +43,10 @@ public class SmsHelper { public static Cache CACHE; static { - ProperHelper config = new ProperHelper().read("sms.properties"); - ACCESS_KEY_ID = config.getString("sms.access_key_id"); - ACCESS_KEY_SECRET = config.getString("sms.access_key_secret"); - SIGN_NAME = config.getString("sms.sign_name"); - + XmlConfigHelper config = new XmlConfigHelper().read("sms-config.xml", "ali_sms"); + ACCESS_KEY_ID = config.getString("access_key_id"); + ACCESS_KEY_SECRET = config.getString("access_key_secret"); + SIGN_NAME = config.getString("sign_name"); createCache(); } diff --git a/src/main/java/com/ynxbd/common/helper/lis/RMLisHelper.java b/src/main/java/com/ynxbd/common/helper/lis/RMLisHelper.java index d6a7305..642d8da 100644 --- a/src/main/java/com/ynxbd/common/helper/lis/RMLisHelper.java +++ b/src/main/java/com/ynxbd/common/helper/lis/RMLisHelper.java @@ -1,9 +1,9 @@ package com.ynxbd.common.helper.lis; -import com.ynxbd.common.helper.ProperHelper; import com.ynxbd.common.helper.common.ErrorHelper; import com.ynxbd.common.helper.common.SnowHelper; import com.ynxbd.common.helper.common.SoapHelper; +import com.ynxbd.common.helper.common.XmlConfigHelper; import com.ynxbd.common.result.JsonResult; import com.ynxbd.common.result.JsonResultEnum; import lombok.extern.slf4j.Slf4j; @@ -16,6 +16,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; + +// 瑞美LIS + @Slf4j public class RMLisHelper { @@ -24,10 +27,11 @@ public class RMLisHelper { final private static Boolean IS_LOG_RESP; static { - ProperHelper config = new ProperHelper().read("lis.properties"); - String url = config.getString("lis.url"); - Boolean is_unified_entrance = config.getBoolean("lis.is_unified_entrance", false); - IS_LOG_RESP = config.getBoolean("lis.is_log_resp", false); + XmlConfigHelper config = new XmlConfigHelper().read("xbd-config.xml", "rm_lis"); + + String url = config.getString("url"); + IS_LOG_RESP = config.getBoolean("is_log_resp", false); + Boolean is_unified_entrance = config.getBoolean("is_unified_entrance", false); if (url == null) { LIS_SOAP_URL = null; diff --git a/src/main/java/com/ynxbd/common/helper/pacs/RISPacsHelper.java b/src/main/java/com/ynxbd/common/helper/pacs/RISPacsHelper.java index e2e1a9b..8ca438d 100644 --- a/src/main/java/com/ynxbd/common/helper/pacs/RISPacsHelper.java +++ b/src/main/java/com/ynxbd/common/helper/pacs/RISPacsHelper.java @@ -2,6 +2,7 @@ package com.ynxbd.common.helper.pacs; import com.ynxbd.common.helper.ProperHelper; import com.ynxbd.common.helper.common.SmbHelper; +import com.ynxbd.common.helper.common.XmlConfigHelper; import lombok.extern.slf4j.Slf4j; /** @@ -17,9 +18,11 @@ public class RISPacsHelper { public static SmbHelper smbHelper; static { - ProperHelper config = new ProperHelper().read("pacs.properties"); - FTP_USER = config.getString("ris.ftpUser"); - FTP_PASS = config.getString("ris.ftpPass"); + + XmlConfigHelper config = new XmlConfigHelper().read("xbd-config.xml", "ris_pacs"); + + FTP_USER = config.getString("user"); + FTP_PASS = config.getString("pass"); if (FTP_USER == null) { log.error("上海岱嘉PACS配置文件读取失败"); } else { diff --git a/src/main/java/com/ynxbd/common/helper/xbd/XBDHelper.java b/src/main/java/com/ynxbd/common/helper/xbd/XBDHelper.java index 4d93cd6..d4c970d 100644 --- a/src/main/java/com/ynxbd/common/helper/xbd/XBDHelper.java +++ b/src/main/java/com/ynxbd/common/helper/xbd/XBDHelper.java @@ -1,7 +1,7 @@ package com.ynxbd.common.helper.xbd; import com.ynxbd.common.dao.xbd.OutTeamDao; -import com.ynxbd.common.helper.ProperHelper; +import com.ynxbd.common.helper.common.XmlConfigHelper; import lombok.extern.slf4j.Slf4j; /** @@ -12,21 +12,24 @@ import lombok.extern.slf4j.Slf4j; */ @Slf4j public class XBDHelper { - private static final String CLOUD_FILM_URL; - public static final String MED_RECORD_COPY_URL; - public static final String XBD_PEIS; + private static final String PACS_CLOUD_URL; + public static final String CASEBOOK_URL; + public static final String PEIS_URL; + public static OutTeamDao outTeamDao; static { - ProperHelper config = new ProperHelper().read("xbd.properties"); + XmlConfigHelper config = new XmlConfigHelper().read("xbd-config.xml", "tz_sms"); + + PACS_CLOUD_URL = config.getString("pacs_cloud_url"); + + CASEBOOK_URL = config.getString("casebook_url"); - CLOUD_FILM_URL = config.getString("xbd.200.cloud_film_url"); - MED_RECORD_COPY_URL = config.getString("xbd.200.med_record_copy_url"); - XBD_PEIS = config.getString("xbd.100.peis_url"); - if (CLOUD_FILM_URL == null) { + PEIS_URL = config.getString("peis_url"); + if (PACS_CLOUD_URL == null) { log.error("新八达200团队配置文件读取失败"); } - outTeamDao = new OutTeamDao(CLOUD_FILM_URL); + outTeamDao = new OutTeamDao(PACS_CLOUD_URL); } diff --git a/src/main/java/com/ynxbd/common/helper/xbd/XBDHttpHelper.java b/src/main/java/com/ynxbd/common/helper/xbd/XBDHttpHelper.java index ac24c91..3b9b003 100644 --- a/src/main/java/com/ynxbd/common/helper/xbd/XBDHttpHelper.java +++ b/src/main/java/com/ynxbd/common/helper/xbd/XBDHttpHelper.java @@ -78,7 +78,7 @@ public class XBDHttpHelper { private static String UsePost(String methodName, RequestBody requestBody) { OkHttpClient httpClient = OkHttpHelper.creatClient(); Headers.Builder headersBuilder = new Headers.Builder(); - HttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(XBDHelper.MED_RECORD_COPY_URL + "/api/SqlContext/PostMethodByNameEncryption")).newBuilder(); + HttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(XBDHelper.CASEBOOK_URL + "/api/SqlContext/PostMethodByNameEncryption")).newBuilder(); try (Response response = httpClient.newCall(new Request.Builder().url(urlBuilder.build()).post(requestBody).headers(headersBuilder.build()).build()).execute()) { JSONObject respJson = respFilter(response, methodName); String code = respJson.getString("Code"); @@ -171,7 +171,7 @@ public class XBDHttpHelper { private static String UseGet(String methodName, Object paramDic) { try { OkHttpClient httpClient = OkHttpHelper.creatClient(); - HttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(XBDHelper.MED_RECORD_COPY_URL + "/api/SqlContext/ExecMethodByNameEncryption")).newBuilder(); + HttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(XBDHelper.CASEBOOK_URL + "/api/SqlContext/ExecMethodByNameEncryption")).newBuilder(); // 加密序列化 String paramJson = JSONObject.toJSONString(paramDic == null ? "" : paramDic); log.info("[病历GET]未加密前get请求入参:[methodName:{}] {}", methodName, paramJson); diff --git a/src/main/java/com/ynxbd/common/result/Result.java b/src/main/java/com/ynxbd/common/result/Result.java index 14882d8..b001ce4 100644 --- a/src/main/java/com/ynxbd/common/result/Result.java +++ b/src/main/java/com/ynxbd/common/result/Result.java @@ -140,13 +140,32 @@ public class Result extends BaseResult { public static Result error(Exception e) { Integer status = ResultEnum.SYSTEM_ERROR.status; String message = ResultEnum.SYSTEM_ERROR.message; + if (e == null) { + return new Result(status, message); + } + + // 异常代码位置信息 + String stackPosition = ""; + + // 获取栈帧,第一个栈帧就是异常发生位置 + StackTraceElement[] stackTrace = e.getStackTrace(); + if (stackTrace != null && stackTrace.length > 0) { + StackTraceElement stack = stackTrace[0]; + // 类名.方法名(文件名:行号) + stackPosition = String.format("%s.%s(%s:%d)", + stack.getClassName(), + stack.getMethodName(), + stack.getFileName(), + stack.getLineNumber() + ); + } - if (e != null && e.getClass() == ServiceException.class) { + if (e.getClass() == ServiceException.class) { ServiceException serviceException = (ServiceException) e; if (serviceException.getMessage() != null) { message = serviceException.getMessage(); if (serviceException.isLog()) { - log.error(e.getMessage()); + log.error("[异常][{}]{}", stackPosition, e.getMessage(), e); } } if (serviceException.getResultEnum() != null) { diff --git a/src/main/java/com/ynxbd/common/service/AIGuidanceService.java b/src/main/java/com/ynxbd/common/service/AIGuidanceService.java index fa444e0..564ca43 100644 --- a/src/main/java/com/ynxbd/common/service/AIGuidanceService.java +++ b/src/main/java/com/ynxbd/common/service/AIGuidanceService.java @@ -3,10 +3,9 @@ package com.ynxbd.common.service; import com.ynxbd.common.bean.Dept; import com.ynxbd.common.bean.Doctor; import com.ynxbd.common.bean.Patient; -import com.ynxbd.common.bean.ai.AIDept; -import com.ynxbd.common.bean.ai.AIDoctor; -import com.ynxbd.common.bean.ai.AIDoctorSchedule; -import com.ynxbd.common.bean.ai.AIPatient; +import com.ynxbd.common.bean.ai.*; +import com.ynxbd.common.bean.healthcard.HCHospitalHome; +import com.ynxbd.common.bean.pay.Register; import com.ynxbd.common.config.healthcard.HCAIGuidanceConfig; import com.ynxbd.common.dao.RegisterDao; import com.ynxbd.common.dao.his.HisRegisterDao; @@ -41,7 +40,7 @@ public class AIGuidanceService { } List> resultList = new ArrayList<>(); - if (!hosId.equals(HCAIGuidanceConfig.HOSP_ID)) { + if (!HCAIGuidanceConfig.HOSP_ID.equals(hosId)) { // 医院id校验 return Result.success(ResultEnum.AI_SUCCESS, resultList); } Map map = new HashMap<>(); @@ -79,7 +78,7 @@ public class AIGuidanceService { } List dataList = new ArrayList<>(); - if (!hosId.equals(HCAIGuidanceConfig.HOSP_ID)) { // 医院id校验 + if (!HCAIGuidanceConfig.HOSP_ID.equals(hosId)) { // 医院id校验 log.warn("[智能导诊]科室列表查询-hosId不匹配"); return Result.success(ResultEnum.AI_SUCCESS, dataList); } @@ -169,7 +168,7 @@ public class AIGuidanceService { return Result.error(ResultEnum.PARAM_IS_DEFECT); } - if (!hosId.equals(HCAIGuidanceConfig.HOSP_ID)) { // 医院id校验 + if (!HCAIGuidanceConfig.HOSP_ID.equals(hosId)) { // 医院id校验 log.warn("[智能导诊]医生列表查询-hosId不匹配"); return Result.success(ResultEnum.AI_SUCCESS, new ArrayList<>()); } @@ -290,7 +289,7 @@ public class AIGuidanceService { resp.put("hospitalId", HCAIGuidanceConfig.HOSP_ID); resp.put("cardList", cardList); - if (!hosId.equals(HCAIGuidanceConfig.HOSP_ID)) { // 医院id校验 + if (!HCAIGuidanceConfig.HOSP_ID.equals(hosId)) { // 医院id校验 log.warn("[智能导诊]查询就诊人列表-hosId不匹配"); return Result.success(ResultEnum.AI_SUCCESS, resp); } @@ -323,27 +322,57 @@ public class AIGuidanceService { /** * 4.1.9 获取医生号源排班信息(必选) - * */ public Result getDoctorSchedule(String hosId, String branchId, String doctorsJson) { + Map map = new HashMap<>(); + if (!HCAIGuidanceConfig.HOSP_ID.equals(hosId)) { // 医院id校验 + log.warn("[智能导诊]获取医生号源排班信息-hosId不匹配"); + return Result.success(ResultEnum.AI_SUCCESS, map); + } List doctors = new ArrayList<>(); - if (ObjectUtils.isEmpty(doctors)) { - return Result.success(ResultEnum.AI_SUCCESS, doctors); - } List doctorScheduleList = JsonHelper.parseArray(doctorsJson, AIDoctorSchedule.class); if (doctorScheduleList.isEmpty()) { return Result.success(ResultEnum.AI_SUCCESS, doctors); } + List deptList = new ArrayList<>(); + for (AIDoctorSchedule item : doctorScheduleList) { + String docId = item.getDocId(); + String departmentId = item.getDepartmentId(); + AIDoctorSchedule findDept = deptList.stream().filter(o -> o.getDepartmentId().equals(departmentId)).findFirst().orElse(null); + if (findDept == null) { + AIDoctorSchedule dept = new AIDoctorSchedule(); + dept.setDepartmentId(departmentId); + Map doctorIds = new HashMap<>(); + doctorIds.put(docId, docId); + dept.setDoctorIds(doctorIds); + deptList.add(dept); + + } else { + Map doctorIds = findDept.getDoctorIds(); + if (doctorIds == null) { + doctorIds = new HashMap<>(); + } + if (!doctorIds.containsKey(docId)) { + doctorIds.put(docId, docId); + } + } + } + List regDoctorList = new ArrayList<>(); List hisDoctorList; HisRegisterDao hisRegisterDao = new HisRegisterDao(); - for (AIDoctorSchedule aiDoctorSchedule : doctorScheduleList) { - String departmentId = aiDoctorSchedule.getDepartmentId(); + for (AIDoctorSchedule deptItem : deptList) { + String departmentId = deptItem.getDepartmentId(); if (ObjectUtils.isEmpty(departmentId)) { continue; } + Map doctorIds = deptItem.getDoctorIds(); + if (doctorIds == null || doctorIds.isEmpty()) { + continue; + } + if (HCAIGuidanceConfig.IS_SPLIT_TIME_REG) { // 分时段 String curDate = DateHelper.getCurDate(); @@ -358,23 +387,45 @@ public class AIGuidanceService { } } } - regDoctorList.addAll(hisDoctorList); + + for (Map.Entry item : doctorIds.entrySet()) { + String docId = item.getKey(); + Doctor findRegDoctorItem = regDoctorList.stream().filter(o -> o.getDoctCode().equals(docId)).findFirst().orElse(null); + if (findRegDoctorItem != null) { + continue; + } + Doctor findHisDoctorItem = hisDoctorList.stream().filter(o -> o.getDoctCode().equals(docId)).findFirst().orElse(null); + if (findHisDoctorItem != null) { + regDoctorList.add(findHisDoctorItem); + } + } } regDoctorList = new DoctorService().doctorListFilter(regDoctorList); String domain = WeChatConfig.getDomain(true); + String webReqURL = WeChatConfig.getWebReqURL(true); + String curDate = DateHelper.getCurDate(); AIDoctorSchedule item; String headImg; for (Doctor doctor : regDoctorList) { + String deptCode = doctor.getDeptCode(); + String deptName = doctor.getDeptName(); + String doctCode = doctor.getDoctCode(); + String doctName = doctor.getDoctName(); + item = new AIDoctorSchedule(); - item.setDocId(doctor.getDoctCode()); - item.setName(doctor.getDoctName()); item.setHosId(HCAIGuidanceConfig.HOSP_ID); - item.setDepartmentId(doctor.getDeptCode()); - item.setDoctorLevel(""); - item.setDescription(ObjectUtils.isEmpty(doctor.getDescription()) ? "暂无介绍" : doctor.getDescription()); + item.setBranchId(branchId); + // + item.setDocId(doctCode); + item.setName(doctName); + item.setDepartmentId(deptCode); + item.setDeptName(deptName); + + item.setDoctorLevel(doctor.getTitle()); + item.setDescription(ObjectUtils.isEmpty(doctor.getSkill()) ? "暂无内容" : doctor.getSkill()); // 擅长 headImg = doctor.getHeadImg(); if (headImg != null && !ObjectUtils.isEmpty(headImg.trim())) { if (!headImg.contains("data:image/")) { // 不是base64 @@ -382,11 +433,90 @@ public class AIGuidanceService { } } - item.setUrl(""); // 挂号链接 -// item.sets + map.put("date", curDate); + map.put("deptCode", deptCode); + map.put("deptName", URLHelper.encodeURL(deptName)); + map.put("doctName", URLHelper.encodeURL(doctName)); + map.put("doctCode", doctCode); + map.put("subDeptCode", ""); + map.put("hospitalArea", ""); + if (HCAIGuidanceConfig.IS_SPLIT_TIME_REG) { + item.setUrl(webReqURL + "reg-reserve.html#/reg-doct-source" + URLHelper.mapParamsToUrl(map, true)); + } else { + item.setUrl(webReqURL + "reg-reserve.html#/reg-doctor" + URLHelper.mapParamsToUrl(map, true)); + } + item.setSchedule(queryDoctorSchedule(deptCode, null, doctCode)); + doctors.add(item); } return Result.success(ResultEnum.AI_SUCCESS, doctors); } + + public List queryDoctorSchedule(String deptCode, String subDeptCode, String doctCode) { + String begDate = DateHelper.getCurDate(); + List sourceList = new HisRegisterDao().getTimeRegSource(deptCode, subDeptCode, doctCode, begDate, DateHelper.getMoveDate(begDate, 7)); + + List schedules = new ArrayList<>(); + for (Register item : sourceList) { + String regDate = item.getRegDate(); + AISchedule findItem = schedules.stream().filter(o -> o.getDate().equals(regDate)).findFirst().orElse(null); + if (findItem == null) { + AISchedule addItem = new AISchedule(); + addItem.setDate(regDate); + addItem.setAvailable(1); + addItem.setType("普通"); + schedules.add(addItem); + } else { + findItem.setAvailable(findItem.getAvailable() + 1); + } + } + return schedules; + } + + // 4.2.1.1 查询医院的首页服务列表(必选) + public Result getHospitalHomeService(String hosId) { + Map map = new HashMap<>(); + if (!HCAIGuidanceConfig.HOSP_ID.equals(hosId)) { // 医院id校验 + log.warn("[智能导诊]查询医院的首页服务列表-hosId不匹配"); + return Result.success(ResultEnum.AI_SUCCESS, map); + } + List dataList = new ArrayList<>(); + + String webReqURL = WeChatConfig.getWebReqURL(true); + dataList.add(new HCHospitalHome(){{ + setScene("门诊"); + setServiceName("预约挂号"); + setH5Url(webReqURL + "reg-reserve.html"); + setRemark("线上挂号,线下就诊"); + setWxAppId(""); + }}); + + dataList.add(new HCHospitalHome(){{ + setScene("通用"); + setServiceName("微官网"); + setH5Url(webReqURL + "app.html"); + setRemark("医院官网,功能分类展示"); + setWxAppId(""); + }}); + + dataList.add(new HCHospitalHome(){{ + setScene("门诊"); + setServiceName("诊间支付"); + setH5Url(webReqURL + "pay-info.html"); + setRemark("处方和申请单线上缴费"); + setWxAppId(""); + }}); + + dataList.add(new HCHospitalHome(){{ + setScene("报告"); + setServiceName("报告查询"); + setH5Url(webReqURL + "all-result.html"); + setRemark("检验、检查报告查询"); + setWxAppId(""); + }}); + + map.put("dataList", dataList); + return Result.success(map); + } } diff --git a/src/main/java/com/ynxbd/common/service/PEISService.java b/src/main/java/com/ynxbd/common/service/PEISService.java index 5efd993..fa65ea9 100644 --- a/src/main/java/com/ynxbd/common/service/PEISService.java +++ b/src/main/java/com/ynxbd/common/service/PEISService.java @@ -29,6 +29,8 @@ import java.util.Date; @Slf4j public class PEISService { + private final String PEIS_SUCCESS_CODE = "200"; + public JsonResult get(String url, OkHttpHelper.MapParams params) { return OkHttpHelper.get(url, params, JsonResultEnum.SYS_PEIS_RESERVE); } @@ -100,7 +102,7 @@ public class PEISService { return; } - JsonResult jsonResult = postForm(XBDHelper.XBD_PEIS + "/wxUse/wxPay", params -> { + JsonResult jsonResult = postForm(XBDHelper.PEIS_URL + "/wxUse/wxPay", params -> { params.put("orderNo", noticeOrderNo); params.put("payStatus", "OK"); params.put("payFailReason", ""); @@ -136,7 +138,7 @@ public class PEISService { * @return bean */ public PEISOrderInfo queryPEISOrderByNoticeOrderNo(String noticeOrderNo) throws ServiceException { - JsonResult jsonResult = get(XBDHelper.XBD_PEIS + "/wxUse/GetOrder", params -> { + JsonResult jsonResult = get(XBDHelper.PEIS_URL + "/wxUse/GetOrder", params -> { params.put("orderNo", noticeOrderNo); }); log.info("[体检预约]订单查询 {}", JsonHelper.toJsonString(jsonResult)); @@ -222,7 +224,7 @@ public class PEISService { * @return bool */ public boolean cancelPEISReserve(String noticeOrderNo, String refundStatus, String refundFailReason) throws ServiceException { - JsonResult jsonResult = postForm(XBDHelper.XBD_PEIS + "/wxUse/wxRefund", params -> { + JsonResult jsonResult = postForm(XBDHelper.PEIS_URL + "/wxUse/wxRefund", params -> { params.put("orderNo", noticeOrderNo); params.put("refundStatus", refundStatus); // 退费状态(成功:OK,失败:FAIL) params.put("refundFailReason", refundFailReason); @@ -242,7 +244,7 @@ public class PEISService { .add("begDate", begDate) .add("endDate", endDate) .build(); - String result = OkHttpHelper.post(XBDHelper.XBD_PEIS + "/WxUse/GetPeisOfPacsResult", formBody); + String result = OkHttpHelper.post(XBDHelper.PEIS_URL + "/WxUse/GetPeisOfPacsResult", formBody); if (ObjectUtils.isEmpty(result)) { throw new ServiceException("请求失败"); } @@ -251,9 +253,9 @@ public class PEISService { throw new ServiceException("请求失败"); } String code = jsonResult.getString("code"); - if (!"200".equals(code)) { - String message = jsonResult.getString("message"); - throw new ServiceException(ObjectUtils.isEmpty(message) ? "请求失败" : message); + String message = jsonResult.getString("message"); + if (!PEIS_SUCCESS_CODE.equals(code)) { + throw new ServiceException(("[体检]" + (ObjectUtils.isEmpty(message) ? "请求失败" : message))); } return jsonResult.getJSONArray("data"); } diff --git a/src/main/java/com/ynxbd/common/service/RegService.java b/src/main/java/com/ynxbd/common/service/RegService.java index 27f55f3..b91952c 100644 --- a/src/main/java/com/ynxbd/common/service/RegService.java +++ b/src/main/java/com/ynxbd/common/service/RegService.java @@ -73,7 +73,7 @@ public class RegService { */ public boolean saveRegPrepay(Register reg) { if (reg == null) { - log.info("reg is null"); + log.error("[挂号]预存信息为空"); return false; } reg.setHisStatus(-1); diff --git a/src/main/java/com/ynxbd/wx/config/TZReserveConfig.java b/src/main/java/com/ynxbd/wx/config/TZReserveConfig.java index 94c6e86..e896cb9 100644 --- a/src/main/java/com/ynxbd/wx/config/TZReserveConfig.java +++ b/src/main/java/com/ynxbd/wx/config/TZReserveConfig.java @@ -5,8 +5,8 @@ import com.ynxbd.common.bean.me_technology.BookOrder; import com.ynxbd.common.bean.me_technology.BookedInfo; import com.ynxbd.common.bean.me_technology.NumberSourceDetails; import com.ynxbd.common.bean.me_technology.NumberSourceStatistics; -import com.ynxbd.common.helper.ProperHelper; import com.ynxbd.common.helper.common.JsonHelper; +import com.ynxbd.common.helper.common.XmlConfigHelper; import com.ynxbd.common.helper.http.OkHttpHelper; import com.ynxbd.common.result.JsonResult; import com.ynxbd.common.result.JsonResultEnum; @@ -34,35 +34,36 @@ public class TZReserveConfig { private TZReserveConfig() { } - public static final String TZ_RESERVE_WEBSERVICE_URL; - public static final String TZ_RESERVE_TERMINAL_NO; - public static final String TZ_RESERVE_TEST_PATIENT_ID; - public static final String TZ_RESERVE_JSON_URL; public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); + public static final String WEBSERVICE_URL; + public static final String TERMINAL_NO; + public static final String TEST_PATIENT_ID; + public static final String JSON_URL; + static { - ProperHelper config = new ProperHelper().read("tz-reserve.properties"); - TZ_RESERVE_WEBSERVICE_URL = config.getString("tz_reserve.webservice_url"); - TZ_RESERVE_TERMINAL_NO = config.getString("tz_reserve.terminal_no"); - TZ_RESERVE_TEST_PATIENT_ID = config.getString("tz_reserve.test_patientId"); - TZ_RESERVE_JSON_URL = config.getString("tz_reserve.json_url"); + XmlConfigHelper config = new XmlConfigHelper().read("sms-config.xml", "tz_sms"); + WEBSERVICE_URL = config.getString("webservice_url"); + TERMINAL_NO = config.getString("terminal_no"); + JSON_URL = config.getString("json_url"); + TEST_PATIENT_ID = config.getString("test_patientId"); } // 天助医技预约 public static void reserveRun(String patientId) { try { - if (TZ_RESERVE_WEBSERVICE_URL == null) { + if (WEBSERVICE_URL == null) { return; } - if (TZ_RESERVE_TEST_PATIENT_ID != null) { - if (!patientId.equals(TZ_RESERVE_TEST_PATIENT_ID)) { + if (TEST_PATIENT_ID != null) { + if (!patientId.equals(TEST_PATIENT_ID)) { log.info("[天助预约平台] 不是测试账号,不允许调用接口 patientId-{}", patientId); return; } } - String result = OkHttpHelper.get(TZ_RESERVE_WEBSERVICE_URL, params -> { + String result = OkHttpHelper.get(WEBSERVICE_URL, params -> { params.put("patientID", patientId); - params.put("terminalNo", TZ_RESERVE_TERMINAL_NO); + params.put("terminalNo", TERMINAL_NO); }); JsonResult jsonResult = JsonResult.xmlToBean(result, JsonResultEnum.SYS_RESERVE); if (jsonResult == null) { @@ -79,7 +80,7 @@ public class TZReserveConfig { } public static String getToken() { - String result = OkHttpHelper.get(TZ_RESERVE_JSON_URL + "/Tools/Tool/GetToken", params -> { + String result = OkHttpHelper.get(JSON_URL + "/Tools/Tool/GetToken", params -> { params.put("clientName", "WXAPP"); params.put("clientCode", "wxapp"); }); @@ -103,11 +104,11 @@ public class TZReserveConfig { params.put("PatientId", patientId); params.put("StartDate", startDate); params.put("EndDate", endDate); - params.put("TerminalNo", TZ_RESERVE_TERMINAL_NO); + params.put("TerminalNo", TERMINAL_NO); params.put("IsBooked", "2"); RequestBody requestBody = RequestBody.create(JSON, JsonHelper.toJsonString(params)); - String result = OkHttpHelper.post(TZ_RESERVE_JSON_URL + "/BookDetails/BookDetails/GetCanBookOrders", requestBody, headers -> { + String result = OkHttpHelper.post(JSON_URL + "/BookDetails/BookDetails/GetCanBookOrders", requestBody, headers -> { headers.add("token", getToken()); }); JSONObject jsonObject = JsonHelper.parseObject(result); @@ -142,7 +143,7 @@ public class TZReserveConfig { String json = JsonHelper.toJsonString(params); RequestBody requestBody = RequestBody.create(JSON, json); - String result = OkHttpHelper.post(TZ_RESERVE_JSON_URL + "/BookDetails/BookDetails/GetNumberSourceStatistics", requestBody, headers -> { + String result = OkHttpHelper.post(JSON_URL + "/BookDetails/BookDetails/GetNumberSourceStatistics", requestBody, headers -> { headers.add("token", getToken()); }); JSONObject jsonObject = JsonHelper.parseObject(result); @@ -175,7 +176,7 @@ public class TZReserveConfig { jsonParams.put("appFromID", appFromID); RequestBody requestBody = RequestBody.create(JSON, jsonParams.toJSONString()); - String result = OkHttpHelper.post(TZ_RESERVE_JSON_URL + "/BookDetails/BookDetails/GetNumberSourceDetails", requestBody, headers -> { + String result = OkHttpHelper.post(JSON_URL + "/BookDetails/BookDetails/GetNumberSourceDetails", requestBody, headers -> { headers.add("token", getToken()); }); JSONObject jsonObject = JsonHelper.parseObject(result); @@ -208,7 +209,7 @@ public class TZReserveConfig { params.put("endDateTime", endDateTime); params.put("lockStatus", lockStatus); RequestBody requestBody = RequestBody.create(JSON, JsonHelper.toJsonString(params)); - String result = OkHttpHelper.post(TZ_RESERVE_JSON_URL + "/BookDetails/BookDetails/LockedBookNo", requestBody, headers -> { + String result = OkHttpHelper.post(JSON_URL + "/BookDetails/BookDetails/LockedBookNo", requestBody, headers -> { headers.add("token", getToken()); }); JSONObject jsonObject = JsonHelper.parseObject(result); @@ -237,7 +238,7 @@ public class TZReserveConfig { params.put("ScheduleUser", patientName); log.info("[天助预约平台] 确定预约json={}", JsonHelper.toProJsonString(params)); RequestBody requestBody = RequestBody.create(JSON, JsonHelper.toProJsonString(params)); - String result = OkHttpHelper.post(TZ_RESERVE_JSON_URL + "/BookDetails/BookDetails/GetBookedDateTime", requestBody, headers -> { + String result = OkHttpHelper.post(JSON_URL + "/BookDetails/BookDetails/GetBookedDateTime", requestBody, headers -> { headers.add("token", getToken()); }); JSONObject jsonObject = JsonHelper.parseObject(result); diff --git a/src/main/java/com/ynxbd/wx/pwe/PWEConfig.java b/src/main/java/com/ynxbd/wx/pwe/PWEConfig.java index 6bd0360..3d7911e 100644 --- a/src/main/java/com/ynxbd/wx/pwe/PWEConfig.java +++ b/src/main/java/com/ynxbd/wx/pwe/PWEConfig.java @@ -7,6 +7,8 @@ import org.apache.commons.lang3.ObjectUtils; import java.util.Arrays; import java.util.List; +// Pre-Visit Evaluation + @Slf4j public class PWEConfig { diff --git a/src/main/resources/hc-config.xml b/src/main/resources/hc-config.xml index 21ce832..76397f5 100644 --- a/src/main/resources/hc-config.xml +++ b/src/main/resources/hc-config.xml @@ -2,33 +2,50 @@ - true - 20009250 - 3bee9edc0a2f41ac911b9b714c854cad + true + + 20009251 + 3bee9edc0a2f41ac911b9b714c854cad + + 20009250 + 3bee9edc0a2f41ac911b9b714c854cad - - true - - true - - true + true + true + true + true - - 100000317 - - 795b207e12572839976d9310bdde32be - - 2a49b1566c3c2e42a1ff9e483abb57da - 20002953 - 德宏州中医医院 + + e4a05c13301f2f6a8b07b3de872dfe2d + + e5322dfd9bfab939851319812c30f9f1 + + e5322dfd9bfab939851319812c30f9f1 + + 800002580 + 红河州第一人民医院 + + + true + true + + 800002580 + 20009251 + 0e07b445b2ce8ca37b9bff174823af31 + ##akgdaS!SwZRam^ + + + + oeso-t62kkoRwLVVkSkwmmjPfUXk + \ No newline at end of file diff --git a/src/main/resources/idcard.properties b/src/main/resources/idcard.properties deleted file mode 100644 index ce472cc..0000000 --- a/src/main/resources/idcard.properties +++ /dev/null @@ -1,4 +0,0 @@ -t#百度身份证识别 -baidu.appid=16670654 -baidu.apikey=55eavj80l3bga2qebsnxtgq8 -baidu.secretkey=mj2vr7hwkbinku0vsojqxgsnzsgaju8m diff --git a/src/main/resources/lis.properties b/src/main/resources/lis.properties deleted file mode 100644 index 98d56aa..0000000 --- a/src/main/resources/lis.properties +++ /dev/null @@ -1 +0,0 @@ -# LIS\u914D\u7F6E lis.url=10.20.10.36:9623 # \u662F\u5426\u6253\u5370\u8FD4\u56DE\u65E5\u5FD7 lis.is_log_resp=false # \u914D\u7F6E lis.is_unified_entrance=false \ No newline at end of file diff --git a/src/main/resources/pacs.properties b/src/main/resources/pacs.properties deleted file mode 100644 index 39f8d1d..0000000 --- a/src/main/resources/pacs.properties +++ /dev/null @@ -1,7 +0,0 @@ -#上海岱嘉 -ris.ftpPath= 192.168.1.128 -ris.ftpPort = 20 -#ris.ftpUser= pacs -ris.ftpUser= absorber -#ris.ftpPass=Pacs!2021 -ris.ftpPass=share \ No newline at end of file diff --git a/src/main/resources/sms-config.xml b/src/main/resources/sms-config.xml new file mode 100644 index 0000000..92841a9 --- /dev/null +++ b/src/main/resources/sms-config.xml @@ -0,0 +1,17 @@ + + + + + 20009251 + 3bee9edc0a2f41ac911b9b714c854cad + 德宏州中医医院 + + + + + http://10.255.248.183:9003/WebService1.asmx/SlipPrint + http://10.255.248.183:9001 + VX + + + \ No newline at end of file diff --git a/src/main/resources/sms.properties b/src/main/resources/sms.properties deleted file mode 100644 index 545c1f5..0000000 --- a/src/main/resources/sms.properties +++ /dev/null @@ -1,4 +0,0 @@ -#\u963F\u91CC\u4E91\u77ED\u4FE1\u914D\u7F6E -sms.access_key_id=LTAIucQcv6BOaBQ6 -sms.access_key_secret=96QOyw62AgBT9BbLI8IyEkA8g43VNQ -sms.sign_name=\u5FB7\u5B8F\u5DDE\u4E2D\u533B\u533B\u9662 \ No newline at end of file diff --git a/src/main/resources/tz-reserve.properties b/src/main/resources/tz-reserve.properties deleted file mode 100644 index 5a33e32..0000000 --- a/src/main/resources/tz-reserve.properties +++ /dev/null @@ -1,5 +0,0 @@ -# \u5929\u52A9\u9884\u7EA6\u5E73\u53F0 -tz_reserve.webservice_url=http://10.255.248.183:9003/WebService1.asmx/SlipPrint -tz_reserve.terminal_no=VX -tz_reserve.json_url=http://10.255.248.183:9001 -#tz_reserve.test_patientId= diff --git a/src/main/resources/xbd-config.xml b/src/main/resources/xbd-config.xml new file mode 100644 index 0000000..a391fd3 --- /dev/null +++ b/src/main/resources/xbd-config.xml @@ -0,0 +1,39 @@ + + + + 10.20.10.36:9623 + false + false + + + + 192.168.1.128 + 20 + + absorber + + share + + + + http://192.168.0.183:3307/wx3307 + http://192.168.0.183:3307/wx3307 + http://192.168.0.183:3307/wx3307 + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/xbd.properties b/src/main/resources/xbd.properties deleted file mode 100644 index 7d651aa..0000000 --- a/src/main/resources/xbd.properties +++ /dev/null @@ -1,24 +0,0 @@ -## \u4E91\u80F6\u7247\u5730\u5740 -#xbd.200.cloud_film_url=http://192.168.0.183:3307/wx3307 -## \u75C5\u5386\u590D\u5370 -#xbd.200.med_record_copy_url=http://192.168.12.66:8081 -## \u4F53\u68C0 -#xbd.100.peis_url=http://192.168.12.102:3000/peisReserve - -#location /wx3303{ -#proxy_pass http://10.20.11.60:3303; -#proxy_set_header X-Real-IP $remote_addr; -#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; -#proxy_set_header Host $host; -#proxy_set_header Upgrade-Insecure-Requests 1; -#proxy_set_header X-Forwarded-Proto https; -#} - -# \u4E91\u80F6\u7247\u5730\u5740 -xbd.200.cloud_film_url=http://200.200.200.70:3306/wx3306 -# \u75C5\u5386\u590D\u5370 -#xbd.200.med_record_copy_url=http://10.20.10.41:8082 -xbd.200.med_record_copy_url=http://192.168.12.66:8080 - -# \u4F53\u68C0 -xbd.100.peis_url=http://200.200.200.71:5050/peisReserve \ No newline at end of file