Files
gzh-server/src/main/java/com/guahao/h5/reserve/controller/ReserveController.java

395 lines
15 KiB
Java
Raw Normal View History

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;
}
}