Files
gzh-server/src/main/java/com/guahao/h5/reserve/controller/ReserveController.java
2026-03-04 17:19:44 +08:00

395 lines
15 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.guahao.h5.reserve.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.guahao.WebLog;
import com.guahao.api.walkinto.service.PayService;
import com.guahao.common.Exception.LogicException;
import com.guahao.common.annotation.CheckPatientId;
import com.guahao.common.response.ErrorCode;
import com.guahao.common.response.ResponseResult;
import com.guahao.common.util.SoapUtil;
import com.guahao.common.util.XmlUtil;
import com.guahao.h5.hsjc.service.TXSendMsg;
import com.guahao.h5.reserve.mapper.Reserve8Mapper;
import com.guahao.h5.reserve.service.Reserve8Service;
import com.guahao.h5.reserve.vo.HisRefundVo;
import com.guahao.h5.reserve.vo.Reserve8Vo;
import com.guahao.h5.reserve.vo.ReservePresentVo;
import com.guahao.h5.reserve.vo.TextVO;
import com.guahao.h5.token.service.TokenService;
import com.guahao.h5.token.vo.TokenVo;
import com.guahao.h5.user.model.UserVo;
// sang:注释icbc部分
// import com.icbc.api.utils.IcbcSignature;
// import com.icbc.api.utils.WebUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 预约挂号接口
*/
@RestController
@RequestMapping("/reserve")
public class ReserveController {
private Logger log = LoggerFactory.getLogger(ReserveController.class);
@Autowired
private Reserve8Service reserve8Service;
@Autowired
private Reserve8Mapper reserve8Mapper;
@Autowired
private TokenService tokenService;
@Autowired
private TXSendMsg txSendMsg;
/**
*
* 取待取消列表
*/
@RequestMapping(value = "/opRegisterCancelList", method = RequestMethod.POST)
@WebLog(description = "opRegisterCancelList")
@CheckPatientId(userIdParam="userId",patientIdParam = "PatientId")
public Object opRegisterCancelList(Integer userId,String token,
String PatientId, Integer SearchType, String StartTime, String EndTime) {
try {
int retToken = getUserToken(userId, token);
if (retToken != 0) {
List<Reserve8Vo> lstvo = reserve8Mapper.getCancelList(PatientId, 0);
JSONArray array= JSONArray.parseArray(JSON.toJSONString(lstvo));
return ResponseResult.success(token, array);
} else {
return ResponseResult.sysLoginError();
}
} catch (Exception e) {
return ResponseResult.sysError(e.getLocalizedMessage());
}
}
/**
*
* 取消挂号,退费
*/
@RequestMapping(value = "/opRegisterCancel", method = RequestMethod.POST)
@WebLog(description = "opRegisterCancel")
public Object opRegisterCancel(Integer userId,String token,
String hisorderno) {
try {
int retToken = getUserToken(userId, token);
if (retToken != 0) {
String xml = reserve8Service.MOP_RegisterCancel(hisorderno);
if(xml.equals("success")){
return ResponseResult.success(xml);
}else{
return ResponseResult.failure(ErrorCode.ERROR_LOGIC);
}
} else {
return ResponseResult.sysLoginError();
}
} catch (Exception e) {
return ResponseResult.sysError(e.getLocalizedMessage());
}
}
/**
*
* 查询挂号记录
*/
@RequestMapping(value = "/opRegisterListQuery", method = RequestMethod.POST)
@WebLog(description = "opRegisterListQuery")
@CheckPatientId(userIdParam="userId",patientIdParam = "PatientId")
public Object opRegisterListQuery(Integer userId,String token,
String PatientId, Integer SearchType, String StartTime, String EndTime) {
try {
int retToken = getUserToken(userId, token);
if (retToken != 0) {
String xml = reserve8Service.MOP_OutpRegisterListQuery(PatientId, SearchType, StartTime, EndTime);
// 解析报文
// List<Map<Object, Object>> maps = XmlUtil.parseQueryGH(xml);
// log.info("opRegisterListQuery:{}", maps);
// if (mapCreate.get("returncode").toString().equals("1")) {
//
// log.debug("opRegisterListQuery" + " success");
// // if (mapCreate.get("FlowNo") != null) {
// // //
// // }
// }
return ResponseResult.success(xml);
} else {
return ResponseResult.sysLoginError();
}
} catch (Exception e) {
return ResponseResult.sysError(e.getLocalizedMessage());
}
}
/**
*
* 退费查询
*/
@RequestMapping(value = "/opBillsPayedRefundQuery", method = RequestMethod.POST)
@WebLog(description = "opBillsPayedRefundQuery")
@CheckPatientId(userIdParam="userId",patientIdParam = "PatientId")
public Object opBillsPayedRefundQuery(Integer userId,String token,
String PatientId, String FlowNo) {
try {
int retToken = getUserToken(userId, token);
if (retToken != 0) {
String xml = reserve8Service.MOP_BillsPayedRefundQuery(PatientId, FlowNo);
// 解析报文
Map<String, Object> mapCreate = XmlUtil.parse(xml);
if (mapCreate.get("returncode").toString().equals("1")) {
log.debug("opRegisterListQuery" + " success");
// if (mapCreate.get("FlowNo") != null) {
// //
// }
}
return ResponseResult.success(xml);
} else {
return ResponseResult.sysLoginError();
}
} catch (Exception e) {
return ResponseResult.sysError(e.getLocalizedMessage());
}
}
/**
*
* 挂号的退费退号方法
*/
@RequestMapping(value = "/opBillsPayedRefund", method = RequestMethod.POST)
@WebLog(description = "opBillsPayedRefund")
public Object opBillsPayedRefund(HisRefundVo vo) {
//可改造成callable多线程返回结果判断加快速度
try {
log.info("退费vo: {}", vo);
// 1. 执行退号
String registRefundResult = reserve8Service.MOP_RegistRefund(vo);
log.info("退号结果: {}", registRefundResult);
if (!registRefundResult.equals("success")) {
log.warn("退号失败,结果: {}", registRefundResult);
throw new RuntimeException("退号失败:" + registRefundResult);
}
} catch (Exception e) {
log.error("退号操作失败", e);
return ResponseResult.sysError("退号失败: " + e.getMessage());
}
try {
Map<String, Object> refundResult = null;
// 2. 执行退费
refundResult = reserve8Service.MOP_BillsPayedRefund(vo);
log.info("退费结果: {}", refundResult + ",判断结果:" + refundResult.get("return_code"));
boolean isSuccess = refundResult != null &&
("1".equals(refundResult.get("returncode")) ||
"SUCCESS".equals(refundResult.get("return_code"))) &&
("success".equals(refundResult.get("refundResult")) ||
"SUCCESS".equals(refundResult.get("result_code")));
if (!isSuccess) {
log.warn("退费接口返回失败: {}", refundResult);
// 将失败内容存到数据库进行每1小时一次退款任务
reserve8Service.insertRefundError(vo);
throw new RuntimeException("退费失败,请检查支付系统");
}
// 3. 返回成功
return ResponseResult.success(vo.getToken(), refundResult);
} catch (Exception e) {
log.error("退费操作失败", e);
reserve8Service.insertRefundError(vo);
return ResponseResult.sysError("退费失败: " + e.getMessage());
}
}
/**
* 动态介绍
* 预约和挂号须知查询
*/
@RequestMapping(value = "/getMedicalNotice", method = RequestMethod.GET)
@WebLog(description = "getMedicalNotice")
public Object getMedicalNotice(Integer userId, String token,String type) {
try {
int retToken = getUserToken(userId, token);
if (retToken != 0) {
TextVO vo = reserve8Service.getMedicalNotice(type);
return ResponseResult.success(vo);
} else {
return ResponseResult.sysLoginError();
}
} catch (Exception e) {
return ResponseResult.sysError(e.getLocalizedMessage());
}
}
/**
* 动态介绍
* 预约和挂号须知查询
*/
@RequestMapping(value = "/getReservePresent", method = RequestMethod.POST)
@WebLog(description = "getReservePresent")
public Object getReservePresent(ReservePresentVo vo) {
try {
int retToken = getUserToken(vo.getUserId(), vo.getToken());
if (retToken != 0) {
ReservePresentVo resultList = reserve8Service.getReservePresent(vo.getId());
return ResponseResult.success(vo.getToken(), resultList);
} else {
return ResponseResult.sysLoginError();
}
} catch (Exception e) {
return ResponseResult.sysError(e.getLocalizedMessage());
}
}
/**
* 预约挂号状态
*/
@RequestMapping(value = "/getReserveList", method = RequestMethod.POST)
@WebLog(description = "getReserveList")
public Object getReserveList(Reserve8Vo vo) {
try {
int retToken = getUserToken(vo.getUserId(), vo.getToken());
if (retToken != 0) {
List<Reserve8Vo> resultList = reserve8Service.getReserveList(vo);
return ResponseResult.success(vo.getToken(), resultList);
} else {
return ResponseResult.sysLoginError();
}
} catch (Exception e) {
return ResponseResult.sysError(e.getLocalizedMessage());
}
}
/**
* 预约详情
*/
@RequestMapping(value = "/getReserveDetail", method = RequestMethod.POST)
@WebLog(description = "getReserveDetail")
public Object getReserveDetail(Reserve8Vo vo) {
try {
int retToken = getUserToken(vo.getUserId(), vo.getToken());
if (retToken != 0) {
Map<String,Object> resultList = reserve8Service.getReserveDetail(vo);
return ResponseResult.success(vo.getToken(), resultList);
} else {
return ResponseResult.sysLoginError();
}
} catch (Exception e) {
return ResponseResult.sysError(e.getLocalizedMessage());
}
}
/**
* 锁号 消号 第一步
*/
@RequestMapping(value = "/opAppRegist", method = RequestMethod.POST)
@WebLog(description = "opAppRegist")
public Object opAppAppoint( Reserve8Vo vo, HttpServletRequest request) {
try {
log.info("锁号:"+vo);
int retToken = getUserToken(vo.getUserId(), vo.getToken());
if (retToken != 0) {
Map<String, Object> result = reserve8Service.opAppAppoint(vo, request);
return ResponseResult.success(vo.getToken(), result);
} else {
return ResponseResult.sysLoginError();
}
} catch (Exception e) {
return ResponseResult.sysError(e.getLocalizedMessage());
}
}
/**
* 取消预约写入
*/
@RequestMapping(value = "/opAppCancelAppoint", method = RequestMethod.POST)
@WebLog(description = "opAppCancelAppoint")
public Object opAppCancelAppoint(Reserve8Vo vo) {
try {
int retToken = getUserToken(vo.getUserId(), vo.getToken());
if (retToken != 0) {
int resultInt = reserve8Service.opAppCancelAppoint(vo);
return ResponseResult.success(vo.getToken(), resultInt);
} else {
return ResponseResult.sysLoginError();
}
} catch (Exception e) {
return ResponseResult.sysError(e.getLocalizedMessage());
}
}
/**
* 取消挂号写入
*/
@RequestMapping(value = "/opAppCancelRegist", method = RequestMethod.POST)
@WebLog(description = "opAppCancelRegist")
public Object opAppCancelRegist(Reserve8Vo vo) {
try {
int retToken = getUserToken(vo.getUserId(), vo.getToken());
if (retToken != 0) {
int resultInt = reserve8Service.opAppCancelRegist(vo);
return ResponseResult.success(vo.getToken(), resultInt);
} else {
return ResponseResult.sysLoginError();
}
} catch (Exception e) {
return ResponseResult.sysError(e.getLocalizedMessage());
}
}
/**
* 挂号支付回调
*/
@RequestMapping(value="/callback", method = RequestMethod.POST)
public void callback(HttpServletRequest request, HttpServletResponse response){
reserve8Service.callback(request,response);
}
/**
* 挂号微信手动推送
*/
@RequestMapping(value = "/WxSend", method = RequestMethod.POST)
@WebLog(description = "WxSend")
public Object WxSend(Integer userId, String token,String openid,String name,String ksmc,String ysmc,String registerdate,String timeinterval) {
try {
int retToken = getUserToken(userId, token);
if (retToken != 0) {
txSendMsg.SendNotifyGH("挂号成功", openid, name, ksmc, ysmc, registerdate+" "+timeinterval, "XQQAg3l56vhHDYj1grFNxF5lgL6yz8_zXuQdRBk_nMc");
return ResponseResult.success();
} else {
return ResponseResult.sysLoginError();
}
} catch (Exception e) {
return ResponseResult.sysError(e.getLocalizedMessage());
}
}
/**
* token验证
*/
private int getUserToken(Integer userId, String token) throws Exception {
TokenVo tokenVo = new TokenVo(userId, token);
int result = tokenService.getUserToken(tokenVo);
return result;
}
}