395 lines
15 KiB
Java
395 lines
15 KiB
Java
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;
|
||
}
|
||
}
|