1、智能导诊新增普通挂号支持

2、普通挂号预约挂号和今日挂号合并
3、新增普通挂号号源状态展示
4、电子健康卡请求协议不同会导致跳转出现问题修复。
debug
王绍全 17 hours ago
parent 6134677d20
commit a1bb7fa762
  1. 2
      src/main/java/com/ynxbd/ali/helper/AliUploadHelper.java
  2. 32
      src/main/java/com/ynxbd/common/TestA.java
  3. 12
      src/main/java/com/ynxbd/common/action/AIGuidanceAction.java
  4. 2
      src/main/java/com/ynxbd/common/action/AccountsAction.java
  5. 6
      src/main/java/com/ynxbd/common/action/HealthCardAction.java
  6. 50
      src/main/java/com/ynxbd/common/action/HealthCodeAction.java
  7. 138
      src/main/java/com/ynxbd/common/action/RegisterAction.java
  8. 5
      src/main/java/com/ynxbd/common/bean/Dept.java
  9. 4
      src/main/java/com/ynxbd/common/bean/Doctor.java
  10. 2
      src/main/java/com/ynxbd/common/bean/RegSign.java
  11. 2
      src/main/java/com/ynxbd/common/bean/ai/AIDept.java
  12. 12
      src/main/java/com/ynxbd/common/bean/pay/Register.java
  13. 247
      src/main/java/com/ynxbd/common/dao/his/HisRegisterDao.java
  14. 21
      src/main/java/com/ynxbd/common/helper/HealthCardHelper.java
  15. 2
      src/main/java/com/ynxbd/common/helper/common/ParamHelper.java
  16. 14
      src/main/java/com/ynxbd/common/helper/his/HisHelper.java
  17. 8
      src/main/java/com/ynxbd/common/result/ServiceException.java
  18. 132
      src/main/java/com/ynxbd/common/service/AIGuidanceService.java
  19. 18
      src/main/java/com/ynxbd/common/service/HCodeService.java
  20. 188
      src/main/java/com/ynxbd/common/service/RegService.java
  21. 7
      src/main/java/com/ynxbd/wx/config/AIGuidanceConfig.java
  22. 1
      src/main/java/com/ynxbd/wx/config/HospConfigEnum.java
  23. 1
      src/main/java/com/ynxbd/wx/config/WeChatConfig.java
  24. 30
      src/main/resources/ai-guidance.properties
  25. 18
      src/main/resources/copy/ai-guidance/德宏州中医院.properties
  26. 18
      src/main/resources/copy/ai-guidance/石林县人民医院.properties
  27. 2
      src/main/resources/webservice.properties

@ -108,7 +108,7 @@ public class AliUploadHelper {
}
children = dept.getChildren();
if (children == null || children.size() == 0) {
if (children == null || children.isEmpty()) {
continue;
}
for (Dept childDept : children) {

@ -1,17 +1,37 @@
package com.ynxbd.common;
import com.ynxbd.wx.wxfactory.AesWxHelper;
import lombok.extern.slf4j.Slf4j;
import com.ynxbd.common.helper.common.HMACHelper;
import java.io.UnsupportedEncodingException;
@Slf4j
public class TestA {
public static void main(String[] args) throws UnsupportedEncodingException {
// public static void main(String[] args) throws Exception {
// // System.out.println(AesWxHelper.decode(""));
// }
// System.out.println(AesWxHelper.decode(""));
// public static void main(String[] args) {
// String KEY = "3431de05cbf9d0ffdbc064a352835981";
// String PARTNER_ID = "100000637";
//
// String timestamp = System.currentTimeMillis() + "";
// String str = PARTNER_ID + timestamp;
// String cacheSign = HMACHelper.sha256(str, KEY);
// System.out.println(timestamp);
// System.out.println(cacheSign);
// }
public static void main(String[] args) {
String KEY = "795b207e12572839976d9310bdde32be";
String PARTNER_ID = "100000317";
String timestamp = System.currentTimeMillis() + "";
String str = PARTNER_ID + timestamp;
String cacheSign = HMACHelper.sha256(str, KEY);
System.out.println(timestamp);
System.out.println(cacheSign);
}
}

@ -61,9 +61,9 @@ public class AIGuidanceAction extends BaseAction {
*/
@Action("getDeptList")
public Result getDeptList(String hosId, String branchId) {
if (!AIGuidanceConfig.isVerifySign(request)) {
return Result.error(ResultEnum.SIGN_ERROR); // 签名异常
}
// if (!AIGuidanceConfig.isVerifySign(request)) {
// return Result.error(ResultEnum.SIGN_ERROR); // 签名异常
// }
return new AIGuidanceService().getDeptList(hosId, branchId);
}
@ -72,9 +72,9 @@ public class AIGuidanceAction extends BaseAction {
*/
@Action("getDoctorList")
public Result getDoctorList(String hosId, String branchId, String deptId) {
if (!AIGuidanceConfig.isVerifySign(request)) {
return Result.error(ResultEnum.SIGN_ERROR); // 签名异常
}
// if (!AIGuidanceConfig.isVerifySign(request)) {
// return Result.error(ResultEnum.SIGN_ERROR); // 签名异常
// }
return new AIGuidanceService().getDoctorList(hosId, branchId, deptId);
}

@ -197,7 +197,7 @@ public class AccountsAction extends BaseAction {
}
List<HisTransaction> dataList = JsonResult.getDataMapList(HisTransaction.class, "Item");
if (dataList.size() == 0) {
if (dataList.isEmpty()) {
return Result.error(ResultEnum.INTERFACE_HIS_INVOKE_ERROR);
}
return Result.success(dataList);

@ -38,7 +38,7 @@ public class HealthCardAction extends BaseAction {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
}
JSONObject result = HealthCardHelper.registerHealthCardPreAuth(isMiniApp, openid, false, patientType, wechatCode, enHisPatientId);
JSONObject result = HealthCardHelper.registerHealthCardPreAuth(isMiniApp, isHttpsWithProxy(), openid, false, patientType, wechatCode, enHisPatientId);
return Result.success(result);
} catch (Exception e) {
return Result.error(e);
@ -59,7 +59,7 @@ public class HealthCardAction extends BaseAction {
if (name == null || gender == null || nation == null || birthday == null || idNumber == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
JSONObject result = HealthCardHelper.registerHealthCardPreFill(isMiniApp, openid, authCode, name, gender, nation, birthday, idNumber, HCardTypeEnum._01, phone);
JSONObject result = HealthCardHelper.registerHealthCardPreFill(isMiniApp, isHttpsWithProxy(), openid, authCode, name, gender, nation, birthday, idNumber, HCardTypeEnum._01, phone);
if (result == null) {
return Result.error();
}
@ -219,7 +219,7 @@ public class HealthCardAction extends BaseAction {
return Result.error(ResultEnum.PARAM_IS_INVALID);
}
JSONObject dataJson = HealthCardHelper.registerUniformVerifyOrder(isMiniApp, openid, wechatCode, sceneEnum, name, idCardNo, redirectPage, redirectHash);
JSONObject dataJson = HealthCardHelper.registerUniformVerifyOrder(isMiniApp, isHttpsWithProxy(), openid, wechatCode, sceneEnum, name, idCardNo, redirectPage, redirectHash);
return Result.success(dataJson);
} catch (Exception e) {
return Result.error(e);

@ -243,31 +243,31 @@ public class HealthCodeAction extends BaseAction {
}
@Action("batchUpdate")
public void batchUpdate() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
log.info("开始执行批量领卡定时任务");
List<Patient> lstPatient = new PatientDao().selectPatient4BatchUpdateHealthCard();
JSONArray jsonArray = null;
try {
jsonArray = HCodeService.batchUpdate(lstPatient);
} catch (Exception e) {
log.error(e.getMessage());
}
if (jsonArray == null) return;
for (int i = 0; i < jsonArray.size(); i++) {
new PatientDao().updateCallFlag(jsonArray.getJSONObject(i).get("idNumber").toString());
if (!"".equals(jsonArray.getJSONObject(i).get("healthCardId").toString()) && !"".equals(jsonArray.getJSONObject(i).get("idNumber").toString()))
new PatientDao().updateHealthCard(jsonArray.getJSONObject(i).get("healthCardId").toString(),
jsonArray.getJSONObject(i).get("idNumber").toString());
}
}
}, 2 * 1000, 30 * 1000);
}
// @Action("batchUpdate")
// public void batchUpdate() {
// Timer timer = new Timer();
// timer.schedule(new TimerTask() {
// public void run() {
// log.info("开始执行批量领卡定时任务");
// List<Patient> lstPatient = new PatientDao().selectPatient4BatchUpdateHealthCard();
// JSONArray jsonArray = null;
// try {
// jsonArray = HCodeService.batchUpdate(lstPatient);
// } catch (Exception e) {
// log.error(e.getMessage());
// }
//
// if (jsonArray == null) return;
//
// for (int i = 0; i < jsonArray.size(); i++) {
// new PatientDao().updateCallFlag(jsonArray.getJSONObject(i).get("idNumber").toString());
// if (!"".equals(jsonArray.getJSONObject(i).get("healthCardId").toString()) && !"".equals(jsonArray.getJSONObject(i).get("idNumber").toString()))
// new PatientDao().updateHealthCard(jsonArray.getJSONObject(i).get("healthCardId").toString(),
// jsonArray.getJSONObject(i).get("idNumber").toString());
// }
// }
// }, 2 * 1000, 30 * 1000);
// }
// /**

@ -13,6 +13,7 @@ import com.ynxbd.common.helper.common.DateHelper;
import com.ynxbd.common.result.JsonResult;
import com.ynxbd.common.result.Result;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.common.result.ServiceException;
import com.ynxbd.common.service.DoctorService;
import com.ynxbd.common.service.MedToolService;
import com.ynxbd.common.service.PatientService;
@ -24,7 +25,6 @@ import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Author wsq
@ -103,122 +103,72 @@ public class RegisterAction extends BaseAction {
/**
* [挂号]查询科室列表
*
* @param isReserve 是否为预约挂号 { true:预约挂号; false:今日挂号 }
* @param hasSourcesFlag 有号源标识 { 1:仅返回有号源科室; 0:有无号源科室都返回默认值}
* @param merCode 商户code
* @param isDeptTypeGroup 是否按deptType分组
*/
@Action("getRegDeptList")
public Result getRegDeptList(String merCode, Boolean isReserve, String hasSourcesFlag, Boolean isDeptTypeGroup) {
log.info("[挂号]查询科室列表 isReserve={}, hasSourcesFlag={}, isDeptTypeGroup={}", isReserve, hasSourcesFlag, isDeptTypeGroup);
if (isDeptTypeGroup == null) {
isDeptTypeGroup = false;
}
if (isReserve == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
log.info("[{}挂号] 获取科室列表", isReserve ? "预约" : "今日");
HisRegisterDao hisRegisterDao = new HisRegisterDao();
List<Dept> deptList = isReserve
? hisRegisterDao.getRegResDeptList()
: hisRegisterDao.getRegTodayDeptList(hasSourcesFlag);
if (!isDeptTypeGroup) { // 不按deptType分组
return Result.success(deptList);
}
List<Dept> resultList = new ArrayList<>();
List<Dept> deptTypeList = new ArrayList<>();
for (Dept dept : deptList) {
if (!ObjectUtils.isEmpty(dept.getDeptTypeCode())) {
deptTypeList.add(dept);
} else {
resultList.add(dept);
}
}
Map<String, List<Dept>> stringListMap = deptTypeList.stream().collect(Collectors.groupingBy(Dept::getDeptTypeCode));
public Result getRegDeptList(String merCode, Boolean isDeptTypeGroup) {
log.info("[挂号]查询科室列表 merCode={}, isDeptTypeGroup={}", merCode, isDeptTypeGroup);
List<Dept> deptList = new RegService().queryRegDeptList(merCode, isDeptTypeGroup);
return Result.success(deptList);
}
Dept dept;
String deptTypeName;
List<Dept> groupList;
for (Map.Entry<String, List<Dept>> entry : stringListMap.entrySet()) {
groupList = entry.getValue();
dept = groupList.get(0);
deptTypeName = dept.getDeptTypeName();
if (ObjectUtils.isEmpty(deptTypeName)) {
deptTypeName = groupList.stream().map(Dept::getDeptName).collect(Collectors.joining("、"));
/**
* [挂号]查询号源状态[POST]
*
* @param isSplitTime 是否为分时段
* @param isTimeInterval 是否根据时段判断今日是否有号
* @param deptCode 科室编码
* @param subDeptCode 亚专科编码
* @param timeInterval 时段[分时段无需传参]
* @param begDate 开始日期[分时段必传]
* @param endDate 结束日期[分时段必传]
* @return map
*/
@Action("getRegSourceState")
public Result getRegSourceState(Boolean isSplitTime, Boolean isTimeInterval, String deptCode, String subDeptCode, String timeInterval, String begDate, String endDate) {
try {
if (isSplitTime == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
dept.setDeptName(deptTypeName);
dept.setDeptCode(groupList.stream().map(Dept::getDeptCode).collect(Collectors.joining(",")));
resultList.add(dept);
}
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(merCode);
if (MerchantEnum.ALI.equals(merchantEnum)) {
AliUploadHelper.uploadDept(resultList, isReserve);
log.info("[{}挂号]查询号源状态 deptCode={}, subDeptCode={}", (isSplitTime ? "分时段" : ""), deptCode, subDeptCode);
Map<String, Integer> data = new RegService().queryHisRegSourceState(isSplitTime, isTimeInterval, deptCode, subDeptCode, timeInterval, begDate, endDate);
return Result.success(data);
} catch (Exception e) {
return Result.error(e);
}
return Result.success(resultList);
}
/**
* [挂号]查询科室的下的医生列表
* [挂号]查询科室的医生排班
*
* @param regDate 挂号日期
* @param deptCode 科室编码
* @param subDeptCode 亚专科编码[未使用预留]
* @param timeInterval 时段
* @return list
*/
@Action("getRegDoctorList")
public Result getRegDoctorList(String regDate, String deptCode, String timeInterval) {
public Result getRegDoctorList(String regDate, String deptCode, String subDeptCode, String timeInterval) {
if (deptCode == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
log.info("[{}挂号] 查询科室下的医生列表 deptCode={}, regDate={}, timeInterval={}", (regDate == null ? "现场" : "预约"), deptCode, regDate, timeInterval);
boolean isToday = (regDate == null || regDate.equals(DateHelper.getCurDate()));
log.info("[{}挂号]查询科室下的医生列表 deptCode={}, regDate={}, timeInterval={}", (isToday ? "今日" : "预约"), deptCode, regDate, timeInterval);
HisRegisterDao hisRegisterDao = new HisRegisterDao();
List<Doctor> doctorList = new ArrayList<>();
for (String code : deptCode.split(",")) {
doctorList.addAll((regDate == null)
? hisRegisterDao.getRegTodayDoctorList(code, timeInterval)
: hisRegisterDao.getRegReserveDoctorList(code, regDate)
doctorList.addAll(isToday
? hisRegisterDao.queryHisTodayRegDoctorList(code, subDeptCode, timeInterval)
: hisRegisterDao.queryHisResRegDoctorListByRegDate(code, regDate)
);
}
doctorList = new DoctorService().doctorListFilter(doctorList);
return Result.success(doctorList);
}
/**
* [预约挂号]获取预约记录
*/
@Action("getReserveHistory")
public Result getReserveHistory(String begDate, String endDate, String patientId) {
log.info("[预约挂号]查询挂号记录 patientId={}, begDate={},endDate={}", patientId, begDate, endDate);
if (patientId == null || begDate == null || endDate == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
List<Register> resultList = new HisRegisterDao().getRegReserveRecords(patientId, null);
return Result.success(resultList);
}
/**
* [挂号]查询挂号记录
*/
@Action("getSiteHistory")
public Result getSiteHistory(String begDate, String endDate, @AesDecode String patientId) {
try {
log.info("[挂号]查询挂号记录 patientId={}, begDate={},endDate={}", patientId, begDate, endDate);
if (patientId == null || begDate == null || endDate == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
List<Register> regRecords = new RegService().getHisRegRecordsByRegDate(patientId, begDate, endDate);
return Result.success(regRecords);
} catch (Exception e) {
return Result.error(e);
}
}
/**
* [挂号]查询挂号历史记录
@ -283,7 +233,7 @@ public class RegisterAction extends BaseAction {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
List<Doctor> doctorList = new HisRegisterDao().getTimeDoctorList(deptCode, subDeptCode, begDate, endDate);
List<Doctor> doctorList = new HisRegisterDao().queryHisTimeRegDoctorList(deptCode, subDeptCode, begDate, endDate);
doctorList = new DoctorService().doctorListFilter(doctorList);
return Result.success(doctorList);
@ -507,7 +457,7 @@ public class RegisterAction extends BaseAction {
List<Patient> noRepeatPatients = new ArrayList<>();
for (Patient pItem : patients) {
String patientId = pItem.getPatientId();
if(ObjectUtils.isEmpty(patientId)){
if (ObjectUtils.isEmpty(patientId)) {
continue;
}
Patient findItem = noRepeatPatients.stream().filter(o -> patientId.equals(o.getPatientId())).findFirst().orElse(null);

@ -29,6 +29,10 @@ public class Dept implements Serializable {
private String deptCode;
// 科室名
private String deptName;
// 亚专科科室代码
private String subDeptCode;
// 亚专科科室
private String subDeptName;
// 科室别名
private String deptAlias;
// 地址
@ -41,6 +45,7 @@ public class Dept implements Serializable {
private String deptTypeName;
// 科室描述
private String description;
// 号源信息[今日有号]
private String sourceInfo;
// 科室拼音码
private String pym;

@ -53,10 +53,12 @@ public class Doctor implements Serializable {
private Boolean isDisabled;
// 是否移除{ 0:未移除;1:已移除}
private Integer deletedState;
// 剩余号源数量
// 剩余号源数量| 0:已约完
private Integer surplusSources;
// 号源信息对象
private Register register;
// 挂号排班日期
private String regDate;
private List<Dept> subDeptList;
// 特长HIS

@ -26,4 +26,6 @@ public class RegSign {
private String regDateTime;
// His挂号预约日期(预约挂号才有)
private String reservationDate;
// 签到日期
private String lineDateTime;
}

@ -20,7 +20,7 @@ public class AIDept {
private String deptAddr;
// 是否特色科室 {0:否 1:是}
private Integer featureFlag;
// 科室级别 { 1.一级科室 2.二级科室 一级科室只是为了页面 显示科室时层级,在实 际业务中用二级科室ID 做流转 }
// 科室级别 { 1.一级科室 2.二级科室 一级科室只是为了页面 显示科室时层级,在实际业务中用二级科室ID=>做流转 }
private Integer level;
// 上级科室Id
private String parentDeptId;

@ -52,7 +52,7 @@ public class Register extends Order {
private String tName;
// 挂号类型(1:预约挂号,2:今日挂号,3:分时段预约挂号,4:分时段今日挂号)
private String regType;
// 挂号日期
// 挂号日期|医生排班日期
private String regDate;
// 号别名
private String regName;
@ -96,6 +96,16 @@ public class Register extends Order {
return isTreat != null && isTreat == val;
}
// [普通挂号]有剩余号源(>0为有号)
public boolean hasRemainCount() {
return this.remainCount != null && this.remainCount > 0;
}
// [普通挂号]为无限号(0为无限号)
public boolean hasSourceCount() {
return this.remainCount != null && this.remainCount == 0;
}
/**
* * // * @param regFee 金额

@ -18,10 +18,13 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import java.math.BigDecimal;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* His挂号调用
* HIS挂号调用
*
* @Author wsq
* @Date 2020/10/30 11:59
@ -31,47 +34,39 @@ import java.util.*;
public class HisRegisterDao {
/**
* [预约挂号]获取医生列表
* [预约挂号]查询HIS预约挂号医生
*
* @param deptCode 科室代码
* @return 医生列表
*/
public List<Doctor> getRegReserveDoctorList(String deptCode, String regDate) {
log.info("[预约挂号]查询HIS医生列表");
List<Doctor> resultList = new ArrayList<>();
if (regDate == null) {
log.info("[预约挂号]获取医生列表失败 regDate 为空");
return resultList;
}
public List<Doctor> queryHisResRegDoctorList(String deptCode, String regDate) {
Map<String, Object> params = new HashMap<>();
params.put("DeptCode", deptCode);
params.put("DoctCode", "");
params.put("ReservationDate", regDate);
params.put("AllowResevationFlag", "1");
params.put("DoctCode", ""); // 空为所有
params.put("ReservationDate", ObjectUtils.isEmpty(regDate) ? "" : regDate); // 空为近7天
params.put("AllowResevationFlag", "1"); // [0:默认值可不传——所有;1:只返回有剩余号源的医师]
JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Reservation_Doct, params);
if (!jsonResult.success()) {
return resultList;
return new ArrayList<>();
}
List<Doctor> doctorList = new ArrayList<>();
String deptName = jsonResult.getDataMapString("DeptName");
JSONArray jsonArray = jsonResult.getJsonArray("Doctor");
Doctor doctorItem;
JSONObject node;
Register regItem;
String doctRegDate;
BigDecimal regFee, clinicFee, payMoney;
for (int i = 0; i < jsonArray.size(); i++) {
node = jsonArray.getJSONObject(i);
doctorItem = new Doctor();
doctorItem.setDeptCode(deptCode);
doctorItem.setDeptName(deptName);
doctRegDate = ParamHelper.spaceFormat(node.getString("ReservationDate"));
doctorItem.setDoctCode(node.getString("DoctCode"));
doctorItem.setDoctName(node.getString("DoctName"));
doctorItem.setTitle(node.getString("Title")); //
@ -88,7 +83,7 @@ public class HisRegisterDao {
regItem.setSourceCount(node.getInteger("TotalCount")); // 总号源数量
regItem.setRemainCount(node.getInteger("RemainCount")); // 剩余号源数
regItem.setAllowReg(node.getInteger("AllowRegist")); //
regItem.setRegDate(node.getString("ReservationDate"));
regItem.setRegDate(doctRegDate);
regItem.setAddress(node.getString("Address"));
// 金额
regFee = node.getBigDecimal("RegFee");
@ -108,53 +103,139 @@ public class HisRegisterDao {
regItem.setEnPayMoney(AesWxHelper.encode(payMoney));
doctorItem.setRegister(regItem);
doctorItem.setRegDate(doctRegDate);
doctorList.add(doctorItem);
}
return doctorList;
}
String appId = WeChatConfig.APP_ID;
if ("wx14ea983bce19d64c".equals(appId)) { // 富民晚班不能预约
Register register;
for (Doctor doctor : doctorList) {
register = doctor.getRegister();
if (register != null) {
String tid = register.getTid();
if (tid != null && !tid.trim().contains("晚班")) {
resultList.add(doctor);
}
/**
* [预约挂号]查询有号状态
*
* @param deptCode 科室代码
* @return 预约的号源状态
*/
public Map<String, Integer> queryHisRegSourceState(String deptCode, String subDeptCode, Boolean isTimeInterval, String timeInterval) {
if (isTimeInterval == null) {
isTimeInterval = false;
}
List<Doctor> doctorList = queryHisResRegDoctorList(deptCode, null);
Map<String, Integer> sourceStateMap = new HashMap<>();
String regDate;
Register regInfo;
for (Doctor doctor : doctorList) {
regDate = doctor.getRegDate();
if (ObjectUtils.isEmpty(regDate)) {
continue;
}
regInfo = doctor.getRegister();
if (regInfo == null) {
continue;
}
if (!sourceStateMap.containsKey(regDate) && (regInfo.hasSourceCount() || regInfo.hasRemainCount())) { // 不存在挂号日期 && (无限号 || 剩余号源>0)
sourceStateMap.put(regDate, 1);
}
}
List<Doctor> todayDoctorList = isTimeInterval
? queryHisTodayRegDoctorList(deptCode, subDeptCode, timeInterval)
: queryHisRegTodayDoctorList(deptCode, subDeptCode);
if (!todayDoctorList.isEmpty()) { // 今日挂号
String curDate = DateHelper.getCurDate();
for (Doctor doctor : todayDoctorList) {
regInfo = doctor.getRegister();
if (regInfo == null) {
continue;
}
if (!sourceStateMap.containsKey(curDate) && (regInfo.hasSourceCount() || regInfo.hasRemainCount())) { // 不存在挂号日期 && (无限号 || 剩余号源>0)
sourceStateMap.put(curDate, 1);
break;
}
}
} else {
resultList = doctorList;
}
return resultList;
return sourceStateMap;
}
/**
* [今日挂号]获取今日挂号医生列表
* [预约挂号]查询有号状态
*
* @param deptCode 科室代码
* @param timeInterval 挂号时段显示
* @param deptCode 科室代码
* @return 预约的号源状态
*/
public Map<String, Integer> queryHisTimeRegSourceState(String deptCode, String subDeptCode, String begDate, String endDate) {
List<Doctor> doctorList = queryHisTimeRegDoctorList(deptCode, subDeptCode, begDate, endDate);
Map<String, Integer> sourceStateMap = new HashMap<>();
String regDate;
Integer surplusSources;
for (Doctor doctor : doctorList) {
regDate = doctor.getRegDate();
if (ObjectUtils.isEmpty(regDate)) {
continue;
}
surplusSources = doctor.getSurplusSources();
if (!sourceStateMap.containsKey(regDate) && surplusSources > 0) {
sourceStateMap.put(regDate, 1);
}
}
return sourceStateMap;
}
/**
* [预约挂号]获取医生列表
*
* @param deptCode 科室代码
* @return 医生列表
*/
public List<Doctor> getRegTodayDoctorList(String deptCode, String timeInterval) {
log.info("[今日挂号]查询HIS医生列表 deptCode={}", deptCode);
public List<Doctor> queryHisResRegDoctorListByRegDate(String deptCode, String regDate) {
List<Doctor> resultList = new ArrayList<>();
if (regDate == null) {
log.info("[预约挂号]获取医生列表失败 regDate 为空");
return resultList;
}
return queryHisResRegDoctorList(deptCode, regDate);
//
// String appId = WeChatConfig.APP_ID;
// if (HospConfigEnum.富民县人民医院.WX_APP_ID.equals(appId)) { // 富民晚班不能预约
// Register register;
// for (Doctor doctor : doctorList) {
// register = doctor.getRegister();
// if (register != null) {
// String tid = register.getTid();
// if (tid != null && !tid.trim().contains("晚班")) {
// resultList.add(doctor);
// }
// }
// }
// } else {
// resultList = doctorList;
// }
}
/**
* [今日挂号]查询今日挂号医生列表
*
* @param deptCode 科室代码
* @return 医生列表
*/
public List<Doctor> queryHisRegTodayDoctorList(String deptCode, String subDeptCode) {
Map<String, Object> params = new HashMap<>();
params.put("DeptCode", deptCode);
params.put("DoctCode", "");
params.put("AllowRegistFlag", "1"); // 只返回有号源的医生
JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Doct, params);
List<Doctor> resultList = new ArrayList<>();
if (!jsonResult.success()) {
return resultList;
return new ArrayList<>();
}
List<Doctor> doctorList = new ArrayList<>();
String deptName = jsonResult.getDataMapString("DeptName");
JSONArray jsonArray = jsonResult.getJsonArray("Doctor");
String tId;
Doctor doctorItem;
JSONObject node;
Register regItem;
@ -165,6 +246,8 @@ public class HisRegisterDao {
doctorItem = new Doctor();
doctorItem.setDeptCode(deptCode);
doctorItem.setDeptName(deptName);
tId = ParamHelper.spaceFormat(node.getString("TID"));
doctorItem.setDoctCode(node.getString("DoctCode"));
doctorItem.setDoctName(node.getString("DoctName"));
doctorItem.setTitle(node.getString("Title")); //
@ -175,8 +258,9 @@ public class HisRegisterDao {
regItem = new Register();
regItem.setClinicCode(node.getString("ClinicCode")); //
regItem.setClinicName(node.getString("ClinicName")); //
regItem.setTid(node.getString("TID")); // 时段id
regItem.setTName(node.getString("TID")); // 时段名
regItem.setTid(tId); // 时段id
regItem.setTName(tId); // 时段名
regItem.setSourceCount(node.getInteger("TotalCount")); // 总号源数量
regItem.setRemainCount(node.getInteger("RemainCount")); // 剩余号源数
regItem.setAllowReg(node.getInteger("AllowReservation")); //
@ -200,13 +284,27 @@ public class HisRegisterDao {
regItem.setEnPayMoney(AesWxHelper.encode(payMoney));
doctorItem.setRegister(regItem);
doctorItem.setRegDate(today);
doctorList.add(doctorItem);
}
return doctorList;
}
// 丽江古城区 "08:00:00", "11:59:00" | "12:00:00", "13:54:00" | "13:55:00", "17:30:00"
/**
* [今日挂号]获取今日挂号医生列表
*
* @param deptCode 科室代码
* @param timeInterval 挂号时段显示
* @return 医生列表
*/
public List<Doctor> queryHisTodayRegDoctorList(String deptCode, String subDeptCode, String timeInterval) {
List<Doctor> doctorList = queryHisRegTodayDoctorList(deptCode, subDeptCode);
// 芒市 "08:00:00", "11:45:00" | "11:46:00", "14:31:00" | "14:30:00", "17:30:00"
// 蒙自市 07:40:00", "11:30:00 | "11:31:00", "13:44:00" | "13:45:00", "17:30:00"
List<Doctor> resultList = new ArrayList<>();
String defaultTimeInterval = "{\"am\":{\"begTime\":\"08:00\",\"endTime\":\"12:00\"},\"pm\":{\"begTime\":\"14:00\",\"endTime\":\"17:30\"},\"noon\":{\"begTime\":\"12:01\",\"endTime\":\"13:59\"}}";
if (ObjectUtils.isEmpty(timeInterval)) {
@ -246,16 +344,12 @@ public class HisRegisterDao {
String nightBegTime = null;
String nightEndTime = null;
// 中午
if (night != null) {
nightBegTime = DateHelper.timeToHms(night.getString("begTime"), null);
nightEndTime = DateHelper.timeToHms(night.getString("endTime"), null);
}
log.info("[挂号]时段参数 早上:{}-{}, 下午:{}-{}, 中午:{}-{}", amBegTime, amEndTime, pmBegTime, pmEndTime, noonBegTime, noonEndTime);
int key;
if (DateHelper.inTimeRangeH_m_s(amBegTime, amEndTime)) { // 上午
key = 1;
@ -267,12 +361,13 @@ public class HisRegisterDao {
key = 4;
}
log.info("[挂号]时段参数【key[{}]】 早上:{}-{}, 下午:{}-{}, 中午:{}-{}", key, amBegTime, amEndTime, pmBegTime, pmEndTime, noonBegTime, noonEndTime);
// 晚班
boolean isNight = night != null && nightBegTime != null && nightEndTime != null && DateHelper.inTimeRangeH_m_s(nightBegTime, nightEndTime);
log.info("【今日挂号】时段{{}}", key);
Register register;
boolean hasNightTid;
for (Doctor doctor : doctorList) {
register = doctor.getRegister();
if (register == null) {
@ -280,16 +375,17 @@ public class HisRegisterDao {
}
String tid = register.getTid();
tid = tid == null ? "" : tid.trim();
hasNightTid = tid.contains("晚");
if (tid.contains("全天")) {
resultList.add(doctor);
} else if (key == 1 && (tid.contains("上午") || tid.contains("上午及下午") || (isNight && (tid.contains("晚班") || tid.contains("晚上"))))) {
} else if (key == 1 && (tid.contains("上午") || (isNight && hasNightTid))) {
resultList.add(doctor);
} else if (key == 2 && tid.contains("中午") || (isNight && (tid.contains("晚班") || tid.contains("晚上")))) {
} else if (key == 2 && tid.contains("中午") || (isNight && hasNightTid)) {
resultList.add(doctor);
} else if (key == 3 && (tid.contains("下午") || tid.contains("上午及下午") || (isNight && (tid.contains("晚班") || tid.contains("晚上"))))) {
} else if (key == 3 && (tid.contains("下午") || (isNight && hasNightTid))) {
resultList.add(doctor);
} else if (key == 4 && (tid.contains("晚班") || tid.contains("晚上"))) {
} else if (key == 4 && hasNightTid) {
if (night == null || nightBegTime == null || nightEndTime == null) {
resultList.add(doctor);
} else {
@ -324,7 +420,6 @@ public class HisRegisterDao {
List<Dept> deptList = new ArrayList<>();
JSONArray jsonArray = jsonResult.getJsonArray("Dept");
RegisterDao registerDao = new RegisterDao();
List<Dept> wxDeptList = registerDao.selectDeptList();
@ -376,33 +471,29 @@ public class HisRegisterDao {
/**
* [今日挂号]获取科室列表
*
* @param hasSourcesFlag 有号源标识 { 1:仅返回有号源科室; 0:有无号源科室都返回默认值}
* @param hasSourcesFlag 有号源标识 { 1:仅返回有号源科室; 0:有无号源科室都返回}
* @return 科室列表
*/
public List<Dept> getRegTodayDeptList(String hasSourcesFlag) {
if (ObjectUtils.isEmpty(hasSourcesFlag)) {
hasSourcesFlag = "1";
} else {
if (!"0".equals(hasSourcesFlag) && !"1".equals(hasSourcesFlag)) {
hasSourcesFlag = "1";
}
}
if (!"0".equals(hasSourcesFlag) && !"1".equals(hasSourcesFlag)) {
hasSourcesFlag = "1";
}
log.info("[今日挂号]查询HIS科室列表");
List<Dept> resultList = new ArrayList<>();
Map<String, Object> params = new HashMap<>();
params.put("DeptCode", ""); // 空为所有
params.put("HasSourcesFlag", hasSourcesFlag); // 1:仅返回有号源科室; 0:有无号源科室都返回(默认值)
params.put("HasSourcesFlag", hasSourcesFlag); // 1:仅返回有号源科室; 0:有无号源科室都返回
List<Dept> deptList = new ArrayList<>();
JsonResult jsonResult = HisHelper.getJsonResult(HisEnum.AP_Query_Dept, params);
if (!jsonResult.success()) {
return resultList;
return deptList;
}
List<Dept> deptList = new ArrayList<>();
JSONArray jsonArray = jsonResult.getJsonArray("Dept");
RegisterDao registerDao = new RegisterDao();
List<Dept> wxDeptList = registerDao.selectDeptList();
@ -446,16 +537,7 @@ public class HisRegisterDao {
deptList.add(dept);
}
}
String appId = WeChatConfig.APP_ID;
if ("wx99b45c38093d17f9".equals(appId)) { // 武定县人民医院挂号时间段定为7:30-11:30
if (DateHelper.inTimeRangeH_m_s("07:30:00", "11:30:00") || DateHelper.inTimeRangeH_m_s("13:30:00", "17:00:00")) { // 在时间段内
resultList = new ArrayList<>(deptList);
}
} else {
resultList = new ArrayList<>(deptList);
}
return resultList;
return deptList;
}
@ -731,7 +813,7 @@ public class HisRegisterDao {
* @param endDate 结束日期
* @return list
*/
public List<Doctor> getTimeDoctorList(String deptCode, String subDeptCode, String begDate, String endDate) {
public List<Doctor> queryHisTimeRegDoctorList(String deptCode, String subDeptCode, String begDate, String endDate) {
Map<String, Object> params = new HashMap<>();
params.put("DeptCode", deptCode);
params.put("DoctCode", null); // 空为所有
@ -771,10 +853,11 @@ public class HisRegisterDao {
doctorItem.setDoctName(ParamHelper.spaceFormat(doctorJson.getString("DoctName")));
//
doctorItem.setTitle(ParamHelper.spaceFormat(doctorJson.getString("Title"))); // 职称
doctorItem.setTitleCode(ParamHelper.spaceFormat(doctorJson.getString("TitleCode"))); //
doctorItem.setTitleCode(ParamHelper.spaceFormat(doctorJson.getString("TitleCode"))); // 职称编码
doctorItem.setDescription(ParamHelper.spaceFormat(doctorJson.getString("Spec"))); // 描述
doctorItem.setRegDate(ParamHelper.spaceFormat(doctorJson.getString("ReservationDate"))); // 排班日期
//
doctorItem.setSurplusSources(doctorJson.getInteger("SurplusSources")); // 描述
doctorItem.setSurplusSources(doctorJson.getInteger("SurplusSources")); // 号源信息
resultList.add(doctorItem);
}
}
@ -875,7 +958,6 @@ public class HisRegisterDao {
}
/**
* [分时段]根据科室code和医生code查询医生号源
*
@ -1195,6 +1277,7 @@ public class HisRegisterDao {
regSign.setReservationDate(item.getString("ReservationDate"));
regSign.setScheduleDate(item.getString("ScheduleDate"));
regSign.setRegDateTime(item.getString("RegistDate"));
regSign.setLineDateTime(item.getString("LineDate"));
regSignList.add(regSign);
}
return regSignList;

@ -25,11 +25,9 @@ import java.util.Date;
public class HealthCardHelper {
/**
* 绑卡验证授权
*
* @param wechatCode 微信身份码
* [电子健康卡]绑卡验证授权
*/
public static JSONObject registerHealthCardPreAuth(Boolean isMiniApp, String openid, Boolean isHCBindUI, Integer patientType, String wechatCode, String enHisPatientId) throws ServiceException {
public static JSONObject registerHealthCardPreAuth(Boolean isMiniApp, Boolean isHttps, String openid, Boolean isHCBindUI, Integer patientType, String wechatCode, String enHisPatientId) throws ServiceException {
if (isMiniApp == null) {
isMiniApp = false;
}
@ -38,8 +36,8 @@ public class HealthCardHelper {
throw new ServiceException("[电子健康卡]健康卡授权码获取健康卡信息-请求体CommonIn缺失");
}
String domain = WeChatConfig.getDomain(false);
String webURL = WeChatConfig.getWebReqURL();
String domain = WeChatConfig.getDomain(false, false);
String webURL = WeChatConfig.getWebReqURL(isHttps);
// 授权成功回调页
String successRedirectUrl = isMiniApp ? "mini:/path/to/isvpage?healthCode=${healthCode}" : (webURL + "health-card-form.html?healthCode=${healthCode}");
@ -101,10 +99,9 @@ public class HealthCardHelper {
/**
* 验证注册/绑卡接口
*
* [电子健康卡]验证注册/绑卡接口
*/
public static JSONObject registerHealthCardPreFill(Boolean isMiniApp, String openid, String authCode, String name, String gender, String nation, String birthday,
public static JSONObject registerHealthCardPreFill(Boolean isMiniApp, Boolean isHttps, String openid, String authCode, String name, String gender, String nation, String birthday,
String idNumber, HCardTypeEnum cardTypeEnum, String phone1) {
try {
if (isMiniApp == null) {
@ -115,7 +112,7 @@ public class HealthCardHelper {
return null;
}
String webURL = WeChatConfig.getWebReqURL();
String webURL = WeChatConfig.getWebReqURL(isHttps);
// 授权成功回调页
String successRedirectUrl = isMiniApp ? "mini:/path/to/isvpage?healthCode=${healthCode}" : (webURL + "health-card-form.html?healthCode=${healthCode}");
@ -430,7 +427,7 @@ public class HealthCardHelper {
/**
* 实人认证生成orderId
*/
public static JSONObject registerUniformVerifyOrder(Boolean isMiniApp, String openid, String wechatCode, HealthCardSceneEnum sceneEnum, String name, String idCardNo, String redirectPage, String redirectHash) throws ServiceException {
public static JSONObject registerUniformVerifyOrder(Boolean isMiniApp, boolean isHttps, String openid, String wechatCode, HealthCardSceneEnum sceneEnum, String name, String idCardNo, String redirectPage, String redirectHash) throws ServiceException {
if (ObjectUtils.isEmpty(name) || ObjectUtils.isEmpty(idCardNo)) {
throw new ServiceException(ResultEnum.PARAM_IS_DEFECT);
}
@ -447,7 +444,7 @@ public class HealthCardHelper {
throw new ServiceException("[电子健康卡]实人认证生成orderId-请求体CommonIn缺失");
}
String webURL = WeChatConfig.getWebReqURL();
String webURL = WeChatConfig.getWebReqURL(isHttps);
String verifySuccessRedirectUrl = webURL + redirectPage + "?registerOrderId=${registerOrderId}" + redirectHash;
String verifyFailRedirectUrl = webURL + "health-card-fail.html?code=-3";

@ -27,7 +27,7 @@ public class ParamHelper {
return null;
}
data = data.trim();
if ("".equals(data)) {
if (ObjectUtils.isEmpty(data)) {
return null;
}
return data;

@ -48,6 +48,8 @@ public class HisHelper {
// 是否强制打印HIS响应的xml
private static final Boolean IS_LOG_RESP;
// 是否使用"<![CDATA[]]>"阻止解析
private static final Boolean IS_REQ_CDATA;
// 是否传递openid给HIS推送消息
public static final Boolean IS_PUSH_MSG;
@ -71,6 +73,7 @@ public class HisHelper {
IS_LOG_RESP = config.getBoolean("his.is_log_resp", false);
IS_PUSH_MSG = config.getBoolean("his.is_push_msg", false);
IS_ALI_MER = config.getBoolean("his.is_ali_mer", false);
IS_REQ_CDATA = config.getBoolean("his.is_req_cdata", false);
IS_RECIPE_PREPAY = config.getBoolean("his.is_recipe_prepay", false);
if (url == null) {
@ -88,6 +91,9 @@ public class HisHelper {
if (ObjectUtils.isEmpty(ip)) {
return null;
}
if (ip.contains("http")) {
return ip;
}
return "http://" + ip + "/WebService_AB.dll/soap/IInterface_AB";
}
@ -175,8 +181,11 @@ public class HisHelper {
"xmlns:urn=\"urn:Interface_ABIntf-IInterface_AB\">" +
"<soapenv:Header/><soapenv:Body>" +
"<urn:" + method + " soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">" +
"<InputStr xsi:type=\"xsd:string\"><Request>" + SoapHelper.requestParams("HIS", transactionCode, reqId, params) + "</Request></InputStr>" +
"</urn:" + method + "></soapenv:Body></soapenv:Envelope>"
"<InputStr xsi:type=\"xsd:string\">" +
(IS_REQ_CDATA ? "<![CDATA[" : "") +
"<Request>" + SoapHelper.requestParams("HIS", transactionCode, reqId, params) + "</Request>" +
(IS_REQ_CDATA ? "]]>" : "") +
"</InputStr></urn:" + method + "></soapenv:Body></soapenv:Envelope>"
);
long endTime = System.currentTimeMillis(); // 结束时间
String takeTime = (endTime - begTime) + "ms"; // 耗时
@ -184,6 +193,7 @@ public class HisHelper {
log.info("[{}]HIS请求无响应[rid:{}]-耗时:[{}]", transactionCode, reqId, takeTime);
return null;
}
//解析响应消息,使用SAXReader对象
org.dom4j.Document document = DocumentHelper.parseText(hisResponse);
if (document == null) {

@ -1,9 +1,12 @@
package com.ynxbd.common.result;
import lombok.Getter;
/**
* 业务逻辑异常
*/
@Getter
public class ServiceException extends Exception {
final private ResultEnum resultEnum;
@ -21,9 +24,4 @@ public class ServiceException extends Exception {
super(message);
this.resultEnum = null;
}
public ResultEnum getResultEnum() {
return resultEnum;
}
}

@ -15,7 +15,6 @@ import com.ynxbd.wx.config.WeChatConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -48,16 +47,15 @@ public class AIGuidanceService {
map.put("hosLevel", AIGuidanceConfig.HOS_LEVEL);
map.put("hosAddress", AIGuidanceConfig.HOS_ADDRESS);
map.put("hosTelephone", AIGuidanceConfig.HOS_TELEPHONE);
map.put("hosImage", WeChatConfig.getWebReqURL() + "images/logo.png");
map.put("hosImage", WeChatConfig.getBaseURL(true) + "config/logo.png");
map.put("appId", WeChatConfig.APP_ID); // 公众号appid
map.put("hosUrl", WeChatConfig.getWebReqURL() + "app.html"); // 公众号appid
map.put("hosUrl", WeChatConfig.getWebReqURL(true) + "app.html"); // 公众号appid
map.put("originAppid", ""); // 小程序原始id
map.put("location", ""); // 经纬度,逗号分割
map.put("miniAppId", ""); // 经纬度,逗号分割
map.put("isHTML", false); // 经纬度,逗号分割
resultList.add(map);
return Result.success(ResultEnum.AI_SUCCESS, resultList);
}
@ -71,51 +69,76 @@ public class AIGuidanceService {
*/
public Result getDeptList(String hosId, String branchId) {
log.info("[智能导诊]科室列表查询 hosId={}, branchId={}", hosId, branchId);
if (ObjectUtils.isEmpty(hosId)) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
List<AIDept> resultList = new ArrayList<>();
List<AIDept> dataList = new ArrayList<>();
if (!hosId.equals(AIGuidanceConfig.HOS_ID)) { // 医院id校验
return Result.success(ResultEnum.AI_SUCCESS, resultList);
return Result.success(ResultEnum.AI_SUCCESS, dataList);
}
List<Dept> deptList;
if (AIGuidanceConfig.IS_SPLIT_TIME_REG) { // 分时段
String curDate = DateHelper.getCurDate();
deptList = new HisRegisterDao().getTimeDeptList(curDate, DateHelper.getMoveDate(curDate, 7), "");
} else {
deptList = new RegService().queryHisRegDeptList();
}
String curDate = DateHelper.getCurDate();
List<Dept> deptList = new HisRegisterDao().getTimeDeptList(curDate, DateHelper.getMoveDate(curDate, 7), "");
String webReqURL = WeChatConfig.getWebReqURL(true);
String deptName;
AIDept item;
AIDept addItem;
List<Dept> children;
for (Dept dept : deptList) {
item = new AIDept();
deptName = dept.getDeptName();
if (!ObjectUtils.isEmpty(dept.getDeptAlias())) {
deptName = dept.getDeptAlias();
addItem = createAIDept(webReqURL, dept);
dataList.add(addItem);
children = dept.getChildren();
if (children != null && !children.isEmpty()) {
for (Dept childDept : children) {
childDept.setSubDeptCode(childDept.getDeptCode());
childDept.setDeptCode(dept.getDeptCode());
addItem = createAIDept(webReqURL, childDept);
dataList.add(addItem);
}
}
item.setDeptId(dept.getDeptCode());
item.setDeptName(deptName);
item.setDeptIntro(dept.getDescription() == null ? "" : dept.getDescription()); // 科室简介
item.setDeptAddr(dept.getAddress() == null ? "" : dept.getAddress()); // 科室地址
item.setLevel(2);
item.setParentDeptId("");
item.setFeatureFlag(0); // 是否特色科室
item.setTreatrange(""); // 诊疗范围
item.setIsHTML(true);
}
return Result.success(ResultEnum.AI_SUCCESS, dataList);
}
item.setDeptMiniAlipayUrl("");
item.setDeptLifeAlipayUrl("");
item.setDeptEmbedAlipayUrl("");
try {
item.setDeptUrl(webReqURL + "reg-reserve.html#/reg-doctor?deptCode=" + dept.getDeptCode() + "&deptName=" + URLHelper.encodeURL(deptName) + "&hospitalArea=");
} catch (Exception e) {
log.error(e.getMessage());
item.setDeptUrl("");
}
resultList.add(item);
private AIDept createAIDept(String webReqURL, Dept dept) {
AIDept item = new AIDept();
String subDeptCode = dept.getSubDeptCode();
boolean isSubDept = !ObjectUtils.isEmpty(subDeptCode);
String deptName = dept.getDeptName();
if (!ObjectUtils.isEmpty(dept.getDeptAlias())) {
deptName = dept.getDeptAlias();
}
return Result.success(ResultEnum.AI_SUCCESS, resultList);
item.setDeptId(dept.getDeptCode());
item.setDeptName(deptName);
item.setDeptIntro(dept.getDescription() == null ? "" : dept.getDescription()); // 科室简介
item.setDeptAddr(dept.getAddress() == null ? "" : dept.getAddress()); // 科室地址
item.setLevel(2);
item.setParentDeptId(isSubDept ? dept.getDeptCode() : "");
item.setFeatureFlag(0); // 是否特色科室
item.setTreatrange(""); // 诊疗范围
item.setIsHTML(true);
item.setDeptMiniAlipayUrl("");
item.setDeptLifeAlipayUrl("");
item.setDeptEmbedAlipayUrl("");
try {
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("");
}
return item;
}
@ -133,15 +156,35 @@ public class AIGuidanceService {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
List<AIDoctor> resultList = new ArrayList<>();
if (!hosId.equals(AIGuidanceConfig.HOS_ID)) { // 医院id校验
return Result.success(ResultEnum.AI_SUCCESS, resultList);
return Result.success(ResultEnum.AI_SUCCESS, new ArrayList<>());
}
List<Doctor> doctorList;
if (AIGuidanceConfig.IS_SPLIT_TIME_REG) { // 分时段
String curDate = DateHelper.getCurDate();
doctorList = new HisRegisterDao().queryHisTimeRegDoctorList(deptId, branchId, curDate, DateHelper.getMoveDate(curDate, 7));
} else {
HisRegisterDao hisRegisterDao = new HisRegisterDao();
doctorList = hisRegisterDao.queryHisResRegDoctorList(deptId, null);
List<Doctor> todayDoctorList = hisRegisterDao.queryHisRegTodayDoctorList(deptId, null);
for (Doctor doctor : todayDoctorList) {
Doctor findItem = doctorList.stream().filter(o -> o.getDoctCode().equals(doctor.getDoctCode())).findFirst().orElse(null);
if (findItem == null) {
doctorList.add(doctor);
}
}
}
List<AIDoctor> dataList = aiDoctorHandle(doctorList);
return Result.success(ResultEnum.AI_SUCCESS, dataList);
}
public List<AIDoctor> aiDoctorHandle(List<Doctor> doctorList) {
List<AIDoctor> resultList = new ArrayList<>();
String webReqURL = WeChatConfig.getWebReqURL(true);
String curDate = DateHelper.getCurDate();
List<Doctor> doctorList = new HisRegisterDao().getTimeDoctorList(deptId, branchId, curDate, DateHelper.getMoveDate(curDate, 7));
doctorList = new DoctorService().doctorListFilter(doctorList);
RegisterDao registerDao = new RegisterDao();
@ -171,7 +214,7 @@ public class AIGuidanceService {
item.setDoctorGoodat(doctor.getSkill() == null ? "" : doctor.getSkill()); // 擅长
item.setDoctorIntro(doctor.getDescription() == null ? "" : doctor.getDescription()); // 介绍
headImg = doctor.getHeadImg();
if (headImg != null && !"".equals(headImg.trim())) {
if (headImg != null && !ObjectUtils.isEmpty(headImg.trim())) {
if (!headImg.contains("data:image/")) { // 不是base64
item.setDoctorImage(domain + headImg); // 头像
}
@ -198,14 +241,17 @@ public class AIGuidanceService {
map.put("doctCode", doctor.getDoctCode());
map.put("subDeptCode", "");
map.put("hospitalArea", "");
item.setDoctorUrl(webReqURL + "reg-reserve.html#/reg-doct-source" + URLHelper.mapParamsToUrl(map, true));
if (AIGuidanceConfig.IS_SPLIT_TIME_REG) {
item.setDoctorUrl(webReqURL + "reg-reserve.html#/reg-doct-source" + URLHelper.mapParamsToUrl(map, true));
} else {
item.setDoctorUrl(webReqURL + "reg-reserve.html#/reg-doctor" + URLHelper.mapParamsToUrl(map, true));
}
} catch (Exception e) {
log.error(e.getMessage());
item.setDoctorUrl("");
}
resultList.add(item);
}
return Result.success(ResultEnum.AI_SUCCESS, resultList);
return resultList;
}
}

@ -76,8 +76,6 @@ public class HCodeService {
}
public static String bindUniformVerifyOrder(String wechatCode, String name, String idCardNo) {
return registerUniformVerifyOrder(false, wechatCode, null, name, idCardNo); // HealthCardSceneEnum._0201091
}
@ -85,7 +83,7 @@ public class HCodeService {
/**
* [旧版]实人认证生成orderId接口
*/
public static String registerUniformVerifyOrder(Boolean isMiniApp, String wechatCode, HealthCardSceneEnum sceneEnum, String name, String idCardNo) {
public static String registerUniformVerifyOrder(Boolean isMiniApp, String wechatCode, HealthCardSceneEnum sceneEnum, String name, String idCardNo) {
try {
log.info("[电子健康卡]实人认证生成orderId idCardNo={}, name={}", idCardNo, name);
if (ObjectUtils.isEmpty(idCardNo) || ObjectUtils.isEmpty(name)) {
@ -135,11 +133,15 @@ public class HCodeService {
* @param qrCodeText 标识IDhealthCardId = qrCodeText
*/
public JSONObject bindCardRelation(Boolean isMiniApp, String patientId, String qrCodeText) {
if (patientId == null || ObjectUtils.isEmpty(qrCodeText)) {
log.info("[电子健康卡]绑定健康卡和医院关系-参数缺失 patientId={}, qrCodeText={}", patientId, qrCodeText);
return null;
}
try {
if (!HealthCardConfig.IS_UPLOAD_DATA) {
return null;
}
if (patientId == null || ObjectUtils.isEmpty(qrCodeText)) {
log.info("[电子健康卡]绑定健康卡和医院关系-参数缺失 patientId={}, qrCodeText={}", patientId, qrCodeText);
return null;
}
CommonIn commonIn = HealthCardConfig.createCommonIn(isMiniApp, null);
if (commonIn == null) {
return null;
@ -147,7 +149,7 @@ public class HCodeService {
JSONObject resultJson = HealthCardConfig.createHealthCardService().bindCardRelation(commonIn, patientId, qrCodeText);
HealthCardConfig.HCardResult result = new HealthCardConfig.HCardResult(resultJson);
if (!result.isOk) {
log.info("[电子健康卡]绑定健康卡和医院关系-失败: {}", resultJson);
log.info("[电子健康卡]绑定健康卡和医院关系-失败: {}", result.getJsonCommon());
return null;
}
return result.getRsp();

@ -1,11 +1,12 @@
package com.ynxbd.common.service;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.ynxbd.ali.enums.AliMsgEnum;
import com.ynxbd.ali.helper.AliHelper;
import com.ynxbd.ali.helper.AliMessageHelper;
import com.ynxbd.ali.helper.AliUploadHelper;
import com.ynxbd.common.action.pay.PEnum;
import com.ynxbd.common.bean.Dept;
import com.ynxbd.common.bean.RegSign;
import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.pay.Order;
@ -14,7 +15,6 @@ import com.ynxbd.common.dao.RefundDao;
import com.ynxbd.common.dao.RegisterDao;
import com.ynxbd.common.dao.his.HisAccountDao;
import com.ynxbd.common.dao.his.HisRegisterDao;
import com.ynxbd.common.helper.common.CodeHelper;
import com.ynxbd.common.helper.common.DateHelper;
import com.ynxbd.common.helper.his.HisHelper;
import com.ynxbd.common.result.JsonResult;
@ -23,7 +23,6 @@ import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.common.result.ServiceException;
import com.ynxbd.wx.config.MessagePushConfig;
import com.ynxbd.wx.utils.DateGenerate;
import com.ynxbd.wx.wxfactory.AesWxHelper;
import com.ynxbd.wx.wxfactory.WxMedHelper;
import com.ynxbd.wx.wxfactory.WxPayHelper;
import com.ynxbd.wx.wxfactory.medical.models.WxMedOrder;
@ -1067,4 +1066,187 @@ public class RegService {
return records.stream().filter(o -> treatNum.equals(o.getTreatNum())).findFirst().orElse(null);
}
/**
* [普通固话]合并今日挂号和预约挂号科室
*
* @return list
*/
public List<Dept> queryHisRegDeptList() {
HisRegisterDao hisRegisterDao = new HisRegisterDao();
List<Dept> deptList = hisRegisterDao.getRegResDeptList();
List<Dept> todayDeptList = hisRegisterDao.getRegResDeptList();
hisRegisterDao.getRegTodayDeptList(null);
String sourceInfo = "今日有号";
String childDeptCode;
Dept findDept, newChild;
List<Dept> children;
List<Dept> todayChildren, resChildren;
for (Dept todayItem : todayDeptList) {
todayItem.setSourceInfo(sourceInfo);
findDept = deptList.stream().filter(o -> o.getDeptCode().equals(todayItem.getDeptCode())).findFirst().orElse(null);
if (findDept == null) {
if (todayItem.getChildren() != null && !todayItem.getChildren().isEmpty()) {
for (Dept child : todayItem.getChildren()) {
child.setSourceInfo(sourceInfo);
}
}
deptList.add(todayItem);
} else {
findDept.setSourceInfo(sourceInfo);
resChildren = findDept.getChildren();
todayChildren = todayItem.getChildren();
if (resChildren == null) {
resChildren = new ArrayList<>();
}
if (todayChildren == null) {
todayChildren = new ArrayList<>();
}
if (resChildren.isEmpty() && todayChildren.isEmpty()) {
continue;
}
children = findDept.getChildren();
if (children == null) {
children = new ArrayList<>();
}
Map<String, String> childMap = new HashMap<>();
if (!todayChildren.isEmpty()) {
for (Dept child : todayChildren) {
childDeptCode = child.getDeptCode();
newChild = new Dept();
newChild.setDeptCode(childDeptCode);
newChild.setDeptName(child.getDeptName());
newChild.setDeptTypeCode(child.getDeptTypeCode());
newChild.setSourceInfo(sourceInfo); // 今日有号
children.add(newChild);
childMap.put(childDeptCode, child.getDeptName());
}
}
if (!resChildren.isEmpty()) {
for (Dept child : resChildren) {
childDeptCode = child.getDeptCode();
if (!childMap.containsKey(childDeptCode)) {
newChild = new Dept();
newChild.setDeptCode(child.getDeptCode());
newChild.setDeptName(child.getDeptName());
newChild.setDeptTypeCode(child.getDeptTypeCode());
children.add(newChild);
childMap.put(childDeptCode, child.getDeptName());
}
}
}
findDept.setChildren(children);
}
}
return deptList;
}
public List<Dept> queryRegDeptList(String merCode, Boolean isDeptTypeGroup) {
List<Dept> deptList = queryHisRegDeptList();
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(merCode);
if (MerchantEnum.ALI.equals(merchantEnum)) {
AliUploadHelper.uploadDept(deptList, true);
}
if (!isDeptTypeGroup) { // 不按deptType分组
return deptList;
}
System.out.println("deptType分组");
return deptList;
}
public Result getOldRegDeptList(String merCode, Boolean isReserve, String hasSourcesFlag, Boolean isDeptTypeGroup) {
log.info("[挂号]查询科室列表 isReserve={}, hasSourcesFlag={}, isDeptTypeGroup={}", isReserve, hasSourcesFlag, isDeptTypeGroup);
if (isDeptTypeGroup == null) {
isDeptTypeGroup = false;
}
if (isReserve == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
log.info("[{}挂号] 获取科室列表", isReserve ? "预约" : "今日");
HisRegisterDao hisRegisterDao = new HisRegisterDao();
List<Dept> deptList = isReserve
? hisRegisterDao.getRegResDeptList()
: hisRegisterDao.getRegTodayDeptList(hasSourcesFlag);
if (!isDeptTypeGroup) { // 不按deptType分组
return Result.success(deptList);
}
List<Dept> resultList = new ArrayList<>();
List<Dept> deptTypeList = new ArrayList<>();
for (Dept dept : deptList) {
if (!ObjectUtils.isEmpty(dept.getDeptTypeCode())) {
deptTypeList.add(dept);
} else {
resultList.add(dept);
}
}
Map<String, List<Dept>> stringListMap = deptTypeList.stream().collect(Collectors.groupingBy(Dept::getDeptTypeCode));
Dept dept;
String deptTypeName;
List<Dept> groupList;
for (Map.Entry<String, List<Dept>> entry : stringListMap.entrySet()) {
groupList = entry.getValue();
dept = groupList.get(0);
deptTypeName = dept.getDeptTypeName();
if (ObjectUtils.isEmpty(deptTypeName)) {
deptTypeName = groupList.stream().map(Dept::getDeptName).collect(Collectors.joining("、"));
}
dept.setDeptName(deptTypeName);
dept.setDeptCode(groupList.stream().map(Dept::getDeptCode).collect(Collectors.joining(",")));
resultList.add(dept);
}
MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(merCode);
if (MerchantEnum.ALI.equals(merchantEnum)) {
AliUploadHelper.uploadDept(resultList, isReserve);
}
return Result.success(resultList);
}
// 查询号源状态
/**
* 查询号源状态
*
* @param isSplitTime 是否为分时段
* @param deptCode 科室编码
* @param subDeptCode 亚专科编码
* @param timeInterval 时段[非分时段]
* @param begDate 开始日期[分时段]
* @param endDate 结束日期[分时段]
* @return mao
*/
public Map<String, Integer> queryHisRegSourceState(Boolean isSplitTime, Boolean isTimeInterval, String deptCode, String subDeptCode, String timeInterval, String begDate, String endDate) throws ServiceException {
if (isSplitTime == null || ObjectUtils.isEmpty(deptCode)) {
throw new ServiceException(ResultEnum.PARAM_IS_DEFECT);
}
if (isSplitTime) {
if (ObjectUtils.isEmpty(begDate) || ObjectUtils.isEmpty(endDate)) {
throw new ServiceException(ResultEnum.PARAM_IS_DEFECT);
}
return new HisRegisterDao().queryHisTimeRegSourceState(deptCode, subDeptCode, begDate, endDate);
} else {
return new HisRegisterDao().queryHisRegSourceState(deptCode, subDeptCode, isTimeInterval, timeInterval);
}
}
}

@ -6,6 +6,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
/**
* 智能导诊配置
@ -16,6 +17,8 @@ public class AIGuidanceConfig {
}
public final static boolean IS_ENABLE;
// 是否为分时段挂号
public final static boolean IS_SPLIT_TIME_REG;
//配置文件读取项
public final static String HOS_ID;
// 密钥
@ -30,6 +33,7 @@ public class AIGuidanceConfig {
static {
ProperHelper config = new ProperHelper().read("ai-guidance.properties");
IS_ENABLE = config.getBoolean("ai.is_enable", false);
IS_SPLIT_TIME_REG = config.getBoolean("ai.is_split_time_reg", true);
config.setIsEnable(IS_ENABLE);
PARTNER_ID = config.getString("ai.partner_id");
@ -42,7 +46,7 @@ public class AIGuidanceConfig {
HOS_TELEPHONE = config.getString("ai.hos_telephone");
if (PARTNER_ID == null) {
log.error("读取AI配置文件失败");
log.error("[智能导诊]读取配置文件失败|功能未开启");
}
}
@ -67,4 +71,5 @@ public class AIGuidanceConfig {
String cacheSign = HMACHelper.sha256(str, KEY);
return signature.equals(cacheSign);
}
}

@ -15,6 +15,7 @@ public enum HospConfigEnum {
芒市人民医院("芒市人民医院", "wxca97aaeb3c40c0d0", null, null),
玉龙县人民医院("玉龙县人民医院", "wx1f1e9d29f9b44c36", null, null),
景洪第三人民医院("景洪第三人民医院", "wxd19b076c0695589b", null, null),
富民县人民医院("富民县人民医院", "wx14ea983bce19d64c", null, null),
;
public final String NAME;

@ -115,6 +115,7 @@ public class WeChatConfig {
return BASE_REQ_URL;
}
// https://xxx.b.x/wx/
public static String getBaseURL(boolean isHttps) {
if (isHttps) {
return getHttpsBaseURL();

@ -1,18 +1,20 @@
# 智能导诊(需商户加https白名单)
ai.is_enable=false
# 合作方id
# \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=100000317
# 密钥
# \u5BC6\u94A5
ai.key=795b207e12572839976d9310bdde32be
# 医院id
# \u533B\u9662id
ai.hos_id=20002953
# 医院名称
ai.hos_name=德宏州中医医院
# 医院地址
ai.hos_address=医院地址
# 医院地址
ai.hos_intro=医院介绍
# 医院等级
ai.hos_level=三级乙等
# 医院联系方式
# \u533B\u9662\u540D\u79F0
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
ai.hos_intro=\u533B\u9662\u4ECB\u7ECD
# \u533B\u9662\u7B49\u7EA7
ai.hos_level=\u4E09\u7EA7\u4E59\u7B49
# \u533B\u9662\u8054\u7CFB\u65B9\u5F0F
ai.hos_telephone=0692-2121450

@ -0,0 +1,18 @@
# \u667A\u80FD\u5BFC\u8BCA\uFF08\u9700\u5546\u6237\u52A0https\u767D\u540D\u5355\uFF09
ai.is_enable=false
# \u5408\u4F5C\u65B9id
ai.partner_id=100000317
# \u5BC6\u94A5\uFF08token\uFF09
ai.key=795b207e12572839976d9310bdde32be
# \u533B\u9662id
ai.hos_id=20002953
# \u533B\u9662\u540D\u79F0
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
ai.hos_intro=\u533B\u9662\u4ECB\u7ECD
# \u533B\u9662\u7B49\u7EA7
ai.hos_level=\u4E09\u7EA7\u4E59\u7B49
# \u533B\u9662\u8054\u7CFB\u65B9\u5F0F
ai.hos_telephone=0692-2121450

@ -0,0 +1,18 @@
# \u667A\u80FD\u5BFC\u8BCA\uFF08\u9700\u5546\u6237\u52A0https\u767D\u540D\u5355\uFF09
ai.is_enable=true
# \u5408\u4F5C\u65B9id
ai.partner_id=100000637
# \u5BC6\u94A5\uFF08token\uFF09
ai.key=3431de05cbf9d0ffdbc064a352835981
# \u533B\u9662id
ai.hos_id=800002592
# \u533B\u9662\u540D\u79F0
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
ai.hos_intro=\u533B\u9662\u4ECB\u7ECD
# \u533B\u9662\u7B49\u7EA7
ai.hos_level=\u4E8C\u7EA7\u7532\u7B49
# \u533B\u9662\u8054\u7CFB\u65B9\u5F0F
ai.hos_telephone=0871-67798120

@ -1 +1 @@
# \u5F00\u542F\u5904\u65B9\u9884\u7ED3\u7B97\uFF08\u7B2C2\u5F00\u5173\uFF09\uFF08\u6CE8\u610F\u8BE5\u914D\u7F6E\u9700\u8054\u7CFBhis\u5F00\u53D1\u8005\u786E\u8BA4\u652F\u6301\u624D\u80FD\u5F00\u542F\uFF0C\u5426\u5219\u5B58\u5728\u98CE\u9669\uFF01\uFF09 his.is_recipe_prepay=false # \u672C\u5730 #his.url=127.0.0.1:8888 # HIS\u662F\u5426\u5F00\u542F\u652F\u4ED8\u5B9D\u5206\u5F00\u5BF9\u8D26 his.is_ali_mer=false # \u662F\u5426\u5F3A\u5236\u6253\u5370webservice\u7684xml\u8FD4\u56DE\u6570\u636E his.is_log_resp=false # \u662F\u5426\u4F20\u9012openid\u7ED9his\u63A8\u9001\u6D88\u606F his.is_push_msg=false #------------------------------- # \u6D4B\u8BD5\u73AF\u5883 his.dev_url=200.200.200.105:8888 # \u533B\u4FDD=========================== # \u65E7\u914D\u7F6E his.md_url=127.0.0.1:7777 # \u5FAE\u4FE1\u533B\u4FDD his.wx_med_url=10.20.10.7:7885 # \u652F\u4ED8\u5B9D\u533B\u4FDD his.ali_med_url=10.20.10.7:7885 # \u516C\u53F8\u6D4B\u8BD5 #his.url=192.168.12.10:8888 # \u77F3\u6797\u6D4B\u8BD5 #his.url=200.200.200.105:8888 # \u6D4B\u8BD5============================================================ # \u5FB7\u5B8F\u4E2D\u533B his.url=200.200.200.60:9999 # \u7EA2\u6CB3\u5DDE\u533B\u9662 #his.url=10.20.10.6:8888 # \u8292\u5E02\u5987\u5E7C #his.url=192.168.11.7:8888 # \u5B81\u8497\u5987\u5E7C #his.url=172.19.3.15:8888 # \u516C\u53F8\u6D4B\u8BD5 #his.url=192.168.12.39:8888 # \u516C\u53F8\u6D4B\u8BD5 #his.url=192.168.12.10:8888 # \u7EA2\u6CB3 #his.url=10.20.10.6:8888 # \u7EA2\u6CB3\u533B\u4FDD #his.url=10.20.10.6:8888 #his.url=192.168.12.10:8888 #his.md_url=192.168.1.128:7885 #his.dev_url=10.20.10.6:9988 # \u6C38\u80DC #his.url=200.200.200.20:8888 # \u5FB7\u5B8F\u4E2D\u533B #his.url=200.200.200.60:8888 # \u534E\u576A #his.url=192.168.1.115:8888 # \u8499\u81EA\u4E2D\u533B #his.url=192.168.0.228:8888 # \u7389\u9F99 #his.url=192.168.0.17:8888 # #his.url=172.16.10.15:8888 # \u7984\u529D\u949F\u7231 #his.url=200.200.200.5:8888 # \u8499\u81EA\u5E02\u4EBA\u6C11\u533B\u9662 #his.url=200.200.200.174:8080 # \u5143\u8C0B #his.url=200.200.200.29:8888 # \u5143\u8C0B\u533B\u4FDD #his.dev_url=200.200.200.36:9999 # \u8292\u5E02 #his.url=192.168.100.8:8888 # \u7EA2\u6CB3\u5987\u5E7C\u4FDD\u5065\u9662 #his.url=192.168.1.204:8888 # \u8292\u5E02\u5987\u5E7C #his.url=192.168.11.7:8888 # #his.url=10.10.11.23:8888 # \u77F3\u6797 #his.url=192.168.10.10:8888 # \u5BCC\u6C11 #his.url=200.200.201.27:8888 # \u897F\u53CC\u7248\u7EB3 #his.url=10.10.11.23:8888 #wx.password=ynxbd@6910
# \u5F00\u542F\u5904\u65B9\u9884\u7ED3\u7B97\uFF08\u7B2C2\u5F00\u5173\uFF09\uFF08\u6CE8\u610F\u8BE5\u914D\u7F6E\u9700\u8054\u7CFBhis\u5F00\u53D1\u8005\u786E\u8BA4\u652F\u6301\u624D\u80FD\u5F00\u542F\uFF0C\u5426\u5219\u5B58\u5728\u98CE\u9669\uFF01\uFF09 his.is_recipe_prepay=false # \u672C\u5730 #his.url=127.0.0.1:8888 # HIS\u662F\u5426\u5F00\u542F\u652F\u4ED8\u5B9D\u5206\u5F00\u5BF9\u8D26 his.is_ali_mer=false # \u662F\u5426\u5F3A\u5236\u6253\u5370webservice\u7684xml\u8FD4\u56DE\u6570\u636E his.is_log_resp=false # \u5DDE\u50A3\u533B\u4F7F\u7528 his.is_req_cdata=false # \u662F\u5426\u4F20\u9012openid\u7ED9his\u63A8\u9001\u6D88\u606F his.is_push_msg=false #------------------------------- # \u6D4B\u8BD5\u73AF\u5883 his.dev_url=200.200.200.105:8888 # \u533B\u4FDD=========================== # \u65E7\u914D\u7F6E his.md_url=127.0.0.1:7777 # \u5FAE\u4FE1\u533B\u4FDD his.wx_med_url=10.20.10.7:7885 # \u652F\u4ED8\u5B9D\u533B\u4FDD his.ali_med_url=10.20.10.7:7885 # \u516C\u53F8\u6D4B\u8BD5 #his.url=192.168.12.10:8888 # \u77F3\u6797\u6D4B\u8BD5 #his.url=200.200.200.105:8888 # \u6D4B\u8BD5============================================================ # \u5FB7\u5B8F\u4E2D\u533B #his.url=200.200.200.60:9999 # \u7EA2\u6CB3\u5DDE\u533B\u9662 #his.url=10.20.10.6:8888 # \u8292\u5E02\u5987\u5E7C #his.url=192.168.11.7:8888 # \u5B81\u8497\u5987\u5E7C #his.url=172.19.3.15:8888 # \u5B81\u8497\u53BF\u533B\u9662 his.url=192.168.10.8:8888 # \u516C\u53F8\u6D4B\u8BD5 #his.url=192.168.12.39:8888 # \u516C\u53F8\u6D4B\u8BD5 #his.url=192.168.12.10:8888 # \u7EA2\u6CB3 #his.url=10.20.10.6:8888 # \u7EA2\u6CB3\u533B\u4FDD #his.url=10.20.10.6:8888 #his.url=192.168.12.10:8888 #his.md_url=192.168.1.128:7885 #his.dev_url=10.20.10.6:9988 # \u6C38\u80DC #his.url=200.200.200.20:8888 # \u5FB7\u5B8F\u4E2D\u533B #his.url=200.200.200.60:8888 # \u534E\u576A #his.url=192.168.1.115:8888 # \u8499\u81EA\u4E2D\u533B #his.url=192.168.0.228:8888 # \u7389\u9F99 #his.url=192.168.0.17:8888 # #his.url=172.16.10.15:8888 # \u7984\u529D\u949F\u7231 #his.url=200.200.200.5:8888 # \u8499\u81EA\u5E02\u4EBA\u6C11\u533B\u9662 #his.url=200.200.200.174:8080 # \u5143\u8C0B #his.url=200.200.200.29:8888 # \u5143\u8C0B\u533B\u4FDD #his.dev_url=200.200.200.36:9999 # \u8292\u5E02 #his.url=192.168.100.8:8888 # \u7EA2\u6CB3\u5987\u5E7C\u4FDD\u5065\u9662 #his.url=192.168.1.204:8888 # \u8292\u5E02\u5987\u5E7C #his.url=192.168.11.7:8888 # #his.url=10.10.11.23:8888 # \u77F3\u6797 #his.url=192.168.10.10:8888 # \u5BCC\u6C11 #his.url=200.200.201.27:8888 # \u897F\u53CC\u7248\u7EB3 #his.url=10.10.11.23:8888 #wx.password=ynxbd@6910
Loading…
Cancel
Save