微信后端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

246 lines
12 KiB

package com.ynxbd.wx.config;
import com.alibaba.fastjson.JSONObject;
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.http.OkHttpHelper;
import com.ynxbd.common.result.JsonResult;
import com.ynxbd.common.result.JsonResultEnum;
import lombok.extern.slf4j.Slf4j;
import okhttp3.MediaType;
import okhttp3.RequestBody;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author 李进才
* @ClassName MeTechnologyReConfig
* @Description TODO
* @date 2024/06/14 09:27:00
*/
@Slf4j
public class MeTechnologyReConfig {
private MeTechnologyReConfig() {}
public static final String MEDICAL_TECHNOLOGY_RESERVE_WEBSERVICE_URL;
public static final String MEDICAL_TECHNOLOGY_RESERVE_TERMINAL_NO;
public static final String MEDICAL_TECHNOLOGY_RESERVE_TEST_PATIENT_ID;
public static final String MEDICAL_TECHNOLOGY_RESERVE_JSON_URL;
public static final MediaType JSON
= MediaType.parse("application/json; charset=utf-8");
static {
ProperHelper config = new ProperHelper().read("medical-technology-reserve.properties");
MEDICAL_TECHNOLOGY_RESERVE_WEBSERVICE_URL = config.getString("medical_technology_reserve_webservice_url");
MEDICAL_TECHNOLOGY_RESERVE_TERMINAL_NO = config.getString("medical_technology_reserve_terminal_no");
MEDICAL_TECHNOLOGY_RESERVE_TEST_PATIENT_ID = config.getString("medical_technology_reserve_test_patientId");
MEDICAL_TECHNOLOGY_RESERVE_JSON_URL = config.getString("medical_technology_reserve_json_url");
}
public static void reserveRun(String patientId){
try {
if(MEDICAL_TECHNOLOGY_RESERVE_WEBSERVICE_URL==null){
return;
}
if(MEDICAL_TECHNOLOGY_RESERVE_TEST_PATIENT_ID!=null){
if(!patientId.equals(MEDICAL_TECHNOLOGY_RESERVE_TEST_PATIENT_ID)){
log.info("[天助预约平台] 不是测试账号,不允许调用接口 patientId-{}", patientId);
return;
}
}
String result = OkHttpHelper.get(MEDICAL_TECHNOLOGY_RESERVE_WEBSERVICE_URL, params->{
params.put("patientID",patientId);
params.put("terminalNo",MEDICAL_TECHNOLOGY_RESERVE_TERMINAL_NO);
});
JsonResult jsonResult = JsonResult.xmlToBean(result, JsonResultEnum.SYS_RESERVE);
if(jsonResult==null){
log.info("[天助预约平台] xml转换出错,result-{}",result);
return;
}
if(jsonResult.success()){
log.info("[天助预约平台] 预约成功 message-{}",jsonResult.getMessage());
// MessagePushConfig.businessPush("天助预约平台",patientId,jsonResult.getMessage(),null);
}
}
catch (Exception e) {
log.error("[天助预约平台] 调用医技预约出错,error-{}", e.toString());
}
}
public static String getToken(){
String result = OkHttpHelper.get(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL + "/Tools/Tool/GetToken",params-> {
params.put("clientName","WXAPP");
params.put("clientCode","wxapp");
});
JSONObject jsonObject = JsonHelper.parseObject(result);
if(jsonObject==null){
log.info("[天助预约平台] token获取失败,result-{}",result);
return null;
}
String token = jsonObject.getString("token");
log.info("[天助预约平台] token获取成功,token={}",token);
return token;
}
/**
* 预约平台提供,终端调用,主要用来获取患者申请单列表,用于预约改约
* @return 根据患者身份获得开立检查单情况
*/
public static List<BookOrder> getCanBookOrders(String patientId,String startDate,String endDate){
Map<String, String> params = new HashMap<>();
params.put("PatientId", patientId);
params.put("StartDate", startDate);
params.put("EndDate", endDate);
params.put("TerminalNo", MEDICAL_TECHNOLOGY_RESERVE_TERMINAL_NO);
params.put("IsBooked", "2");
RequestBody requestBody = RequestBody.create(JSON,JsonHelper.toJsonString(params));
String result = OkHttpHelper.post(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL+"/BookDetails/BookDetails/GetCanBookOrders",requestBody,headers -> {
headers.add("token",getToken());
});
JSONObject jsonObject = JsonHelper.parseObject(result);
if(jsonObject==null){
log.info("[天助预约平台] patientId-{},startDate-{},endDate-{} 获取患者申请信息失败,result-{}",patientId,startDate,endDate,result);
return null;
}
if(!"0".equals(jsonObject.getString("ResultCode"))){
log.info("[天助预约平台] 获取患者申请信息失败,失败原因-{}",jsonObject.getString("ResultContent"));
return null;
}
return jsonObject.getJSONArray("OrderLists").toJavaList(BookOrder.class);
}
/**
* 根据日期范围获得可使用资源概况
* @param patientId 患者id
* @param startDate 开始时间
* @param endDate 结束时间
* @param docDetailedNo 申请单编号
* @param intervalTimeType 上午或者下午
* @return 日期范围获得可使用资源概况
*/
public static List<NumberSourceStatistics> getNumberSourceStatistics(String patientId, String startDate, String endDate, String docDetailedNo, String intervalTimeType){
Map<String, String> params = new HashMap<>();
params.put("PatientId", patientId);
params.put("StartDate", startDate);
params.put("EndDate", endDate);
params.put("DocDetailedNo", docDetailedNo);
params.put("IntervalTimeType", intervalTimeType);
String json = JsonHelper.toJsonString(params);
RequestBody requestBody = RequestBody.create(JSON, json);
String result = OkHttpHelper.post(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL+"/BookDetails/BookDetails/GetNumberSourceStatistics",requestBody,headers -> {
headers.add("token",getToken());
});
JSONObject jsonObject = JsonHelper.parseObject(result);
if(jsonObject==null){
log.info("[天助预约平台] patientId-{},startDate-{},endDate-{},docDetailedNo-{},intervalTimeType-{} 根据日期范围获得可使用资源概况失败,result-{}",patientId,startDate,endDate,docDetailedNo,intervalTimeType,result);
return null;
}
if(!"0".equals(jsonObject.getString("resultCode"))){
log.info("[天助预约平台] 根据日期范围获得可使用资源概况失败,失败原因-{}",jsonObject.getString("resultContent"));
return null;
}
return jsonObject.getJSONArray("numberSourceStatisticsApplyDTO").toJavaList(NumberSourceStatistics.class);
}
/**
* 预约平台提供,终端调用,主要用来获取号池明细信息
* @param examRoomOrQueue 检查室或队列
* @param startDate 开始时间
* @param endDate 结束时间
* @param appFromID 医嘱申请单号
* @return 号池明细信息
*/
public static List<NumberSourceDetails> getNumberSourceDetails(String examRoomOrQueue, String startDate, String endDate, String appFromID){
JSONObject jsonParams = new JSONObject();
jsonParams.put("examRoomOrQueue",examRoomOrQueue);
jsonParams.put("StartDate",startDate);
jsonParams.put("EndDate",endDate);
jsonParams.put("appFromID",appFromID);
RequestBody requestBody = RequestBody.create(JSON, jsonParams.toJSONString());
String result = OkHttpHelper.post(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL+"/BookDetails/BookDetails/GetNumberSourceDetails",requestBody,headers -> {
headers.add("token",getToken());
});
JSONObject jsonObject = JsonHelper.parseObject(result);
if(jsonObject==null){
log.info("[天助预约平台] examRoomOrQueue-{},startDate-{},endDate-{},appFromID-{}, 获取号池明细失败,result-{}",examRoomOrQueue,startDate,endDate,appFromID,result);
return null;
}
if(!"0".equals(jsonObject.getString("resultCode"))){
log.info("[天助预约平台] 获取号池明细失败,失败原因-{}",jsonObject.getString("resultContent"));
return null;
}
return jsonObject.getJSONArray("numPoolDetailsDTOList").toJavaList(NumberSourceDetails.class);
}
/**
* 根据提交时段锁定号池资源
* @param appFormID 检查室或队列
* @param examRoomOrQueue 检查室或队列
* @param beginDateTime 开始时间
* @param endDateTime 结束时间
* @param lockStatus 锁定状态
* @return 是否锁定成功
*/
public static Boolean lockedBookNo(String appFormID,String examRoomOrQueue,String beginDateTime,String endDateTime,Boolean lockStatus){
Map<String, Object> params = new HashMap<>();
params.put("appFormID", appFormID);
params.put("examRoomOrQueue", examRoomOrQueue);
params.put("beginDateTime", beginDateTime);
params.put("endDateTime", endDateTime);
params.put("lockStatus", lockStatus);
RequestBody requestBody = RequestBody.create(JSON, JsonHelper.toJsonString(params));
String result = OkHttpHelper.post(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL+"/BookDetails/BookDetails/LockedBookNo",requestBody,headers -> {
headers.add("token",getToken());
});
JSONObject jsonObject = JsonHelper.parseObject(result);
if(jsonObject==null){
log.info("[天助预约平台] examRoomOrQueue-{},beginDateTime-{},endDateTime-{},lockStatus-{}, 根据提交时段锁定号池资源失败,result-{}",examRoomOrQueue,beginDateTime,endDateTime,lockStatus,result);
return false;
}
if(!"0".equals(jsonObject.getString("resultCode"))){
log.info("[天助预约平台] 根据提交时段锁定号池资源失败,失败原因-{}",jsonObject.getString("resultContent"));
return false;
}
return true;
}
public static BookedInfo getBookedDateTime(String appFormID,String examRoomOrQueue,String beginDateTime,String endDateTime,String patientId,String patientName){
Map<String,String> param = new HashMap<>();
param.put("AppFormID",appFormID);
param.put("ExamRoomOrQueue",examRoomOrQueue);
param.put("BeginDateTime",beginDateTime);
param.put("EndDateTime",endDateTime);
Map<String,Object> params = new HashMap<>();
params.put("BookedDateTimeDTOList",param);
params.put("ScheduleUserId",patientId);
params.put("ScheduleUser",patientName);
RequestBody requestBody = RequestBody.create(JSON, JsonHelper.toJsonString(params));
String result = OkHttpHelper.post(MEDICAL_TECHNOLOGY_RESERVE_JSON_URL+"/BookDetails/BookDetails/GetBookedDateTime",requestBody,headers -> {
headers.add("token",getToken());
});
JSONObject jsonObject = JsonHelper.parseObject(result);
if(jsonObject==null){
log.info("[天助预约平台] examRoomOrQueue-{},startDate-{},endDate-{},appFromID-{}, patientId-{},patientName-{}, 提交预约具体时间失败,result-{}",examRoomOrQueue,beginDateTime,endDateTime,appFormID,patientId,patientName,result);
return null;
}
if(!"0".equals(jsonObject.getString("resultCode"))){
log.info("[天助预约平台] 提交预约具体时间失败,失败原因-{}",jsonObject.getString("resultContent"));
return null;
}
return jsonObject.getJSONArray("bookedInfos").toJavaList(BookedInfo.class).get(0);
}
}