微信后端代码
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.

205 lines
8.4 KiB

package com.ynxbd.common.action;
import com.ynxbd.common.action.base.BaseAction;
import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.pay.PayCasebook;
import com.ynxbd.common.bean.xbd.MRHistory;
import com.ynxbd.common.bean.xbd.MedicalRecord;
import com.ynxbd.common.helper.common.JsonHelper;
import com.ynxbd.common.helper.xbd.XBDEnum;
import com.ynxbd.common.helper.xbd.XBDHelper;
import com.ynxbd.common.helper.xbd.XBDHttpHelper;
import com.ynxbd.common.result.Result;
import com.ynxbd.common.result.ResultEnum;
import com.ynxbd.common.service.CasebookService;
import lombok.extern.slf4j.Slf4j;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
/**
* @author 李进才
* @ClassName XBDAction
* @Description description
* @date 2023/3/30 16:50
*/
@Slf4j
@Namespace("/xbd")
public class XBDAction extends BaseAction {
/**
* 获取智能云胶片的地址
*
* @param info patientId
* @return 路径
*/
@Action("cloudFilm")
public Result cloudFilm(String info) {
return Result.success(XBDHelper.outTeamDao.getCloudFilmPath(info));
}
/**
* 获取该病人已归档可以翻拍的病历
*
* @param patientId 病人id
* @return 可以翻拍的病历列表
*/
@Action("getMedicalRecordList")
public Result getMedicalRecordList(String patientId, Integer flagSh) {
String realPatientId = getDecodeString(patientId);
String jsonString = XBDHttpHelper.ExecMethodGet(XBDEnum.BLSM_Appointment_GetBA.Name, params -> {
params.put("patientID", realPatientId);
params.put("flagFP", 0);
params.put("flagSH", flagSh);
});
return Result.success(JsonHelper.parseArray(jsonString, MedicalRecord.class));
}
/**
* 获取该病人需要翻拍病历干啥的列表(用途)->直接绑定翻拍的病历类型
*
* @return 用途列表
*/
@Action("getMRTemplateList")
public Result getMRTemplateList() {
String jsonString = XBDHttpHelper.ExecMethodGet(XBDEnum.BLSM_Appointment_GetTemplate.Name);
return Result.success(JsonHelper.parseArray(jsonString));
}
/**
* 新增预约
*
* @param openId openId
* @param patientId patientId
* @param zyNum 住院号
* @param applyName 申请人姓名
* @param useToNo 模版ID
* @param useToName 模版名称
* @param getWay 获取方式:1自提 2邮寄 3电子版
* @param address 地址
* @param phone 联系电话
* @param ptImg1 身份证正面
* @param relationship 申请人与病人关系
* @param ptImg2 身份证反面
* @param applyPtImg1 申请人身份证正面照片
* @param applyPtImg2 申请人身份证反面照片
* @param applicationImg 申请书图片
* @return 成功行数
*/
@Action("addMRReserve")
public Result addMRReserve(String openId, String patientId, String zyNum, String applyName, String relationship, String useToNo, String useToName, int getWay, String address, String phone, String ptImg1, String ptImg2, String applyPtImg1, String applyPtImg2, String applicationImg) {
try {
log.info("[病历复印]patientId-{},zyNum-{},applyName-{},useToNo-{},useToName-{},getWay-{},address-{},phone-{}", patientId, zyNum, applyName, useToNo, useToName, getWay, address, phone);
PayCasebook payCasebook = new PayCasebook();
payCasebook.setTreatNum(zyNum);
payCasebook.setPatientName(applyName);
payCasebook.setUseToNo(useToNo);
payCasebook.setUseToName(useToName);
payCasebook.setGetWay(getWay);
payCasebook.setAddress(address);
payCasebook.setPhone(phone);
if (new CasebookService().isExit(patientId, zyNum, String.valueOf(getWay), useToName)) {
log.info("[病历复印]下单信息重复 patientId={},treatNum-{},getWay-{},useToName-{}", patientId, zyNum, getWay, useToName);
return Result.error(ResultEnum.APPLY_REPEAT);
}
if (!new CasebookService().addApply(payCasebook, openId, patientId)) {
log.info("[病历复印]下单信息存储失败 patientId={},openId-{},patientId-{}", patientId, openId, patientId);
return Result.error(ResultEnum.SPECIFIED_QUESTIONED_USER_NOT_EXIST);
}
String jsonString = XBDHttpHelper.ExecMethodPost(XBDEnum.BLSM_Appointment_SetAppointment.Name, params -> {
params.put("ZYNum", zyNum);
params.put("ApplyName", applyName);
params.put("UseToNo", useToNo);
params.put("UseToName", useToName);
params.put("GetWay", getWay);
params.put("Address", address);
params.put("Relationship", relationship);
params.put("Phone", phone);
params.put("ptImg1", ptImg1);
params.put("ptImg2", ptImg2);
params.put("applyPtImg1", applyPtImg1);
params.put("applyPtImg2", applyPtImg2);
params.put("ApplicationImg", applicationImg);
});
return Result.success(JsonHelper.parseObject(jsonString));
} catch (Exception e) {
log.error("[病历复印申请]预约失败,error-{}", e.toString());
return Result.error(ResultEnum.ERROR);
}
}
/**
* 获取该病人的病历翻拍历史
*
* @param patientId 病人Id
* @return 历史记录
*/
@Action("getMRHistory")
public Result getMRHistory(String patientId) {
String jsonString = XBDHttpHelper.ExecMethodGet(XBDEnum.BLSM_Appointment_GetHistoryAppointment.Name, params -> {
params.put("patientID", patientId);
params.put("BorrowNo", -1);
});
return Result.success(JsonHelper.parseArray(jsonString, MRHistory.class));
}
/**
* 病案复印唤起支付
*
* @param payCode wx微信
* @param openid 患者openId
* @param patientId 患者patientId
* @param treatNum 住院号
* @param totalFee 总费用
* @param applyId 申请单Id
* @return 支付回调参数
*/
@Action("caseBookPay")
public Result caseBookPay(String payCode, String openid, String patientId, String treatNum, String totalFee, String applyId, String getWay, String useToName) {
log.info("[病案复印] 唤起支付, payCode-{},openid-{},patientId-{},treatNum-{},totalFee-{}", payCode, openid, patientId, treatNum, totalFee);
MerchantEnum merchantEnum = MerchantEnum.getMerchantEnumByCode(payCode);
if (merchantEnum == null) { // 支付方式异常
return Result.error(ResultEnum.PAY_TYPE_ERROR);
}
if (payCode == null || openid == null || patientId == null || treatNum == null || totalFee == null || applyId == null || getWay == null || useToName == null) {
return Result.error(ResultEnum.PARAM_IS_DEFECT);
}
String ip = request.getRemoteAddr();
return new CasebookService().placeOrder(merchantEnum, ip, openid, patientId, treatNum, totalFee, applyId, getWay, useToName);
}
// /**
// * 病人修改病历的地址
// * @param id 申请单号
// * @param getWay 收货方式(0.自提 1.邮寄 2.电子版)
// * @param address 地址
// * @return 是否修改成功
// */
// @Action("changeMRAddress")
// public Result changeMRAddress(Integer id,String getWay,String address) {
// String jsonString = XBDHttpHelper.ExecMethodGet(XBDEnum.BLSM_Appointment_ChangeAddress.Name,params-> {
// params.put("Id",id);
// params.put("getWay",getWay);
// params.put("address",address);
// });
// return Result.success(JsonHelper.parseObject(jsonString));
// }
//
// /**
// * 停止未通过审核的病历预约
// * @param id 申请单号
// * @param delNote 删除理由
// * @return 是否成功
// */
// @Action("stopMRReserve")
// public Result stopMRReserve(Integer id,String delNote){
// String jsonString = XBDHttpHelper.ExecMethodGet(XBDEnum.BLSM_Appointment_StopAppointment.Name,params-> {
// params.put("Id",id);
// params.put("delNote",delNote);
// });
// return Result.success(JsonHelper.parseObject(jsonString));
// }
}