|
@@ -8,6 +8,7 @@ import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.web.client.RestTemplate;
|
|
|
import thyyxxk.wxservice_server.config.exception.ExceptionEnum;
|
|
|
+import thyyxxk.wxservice_server.constant.QuerySource;
|
|
|
import thyyxxk.wxservice_server.dao.InpatientDao;
|
|
|
import thyyxxk.wxservice_server.dao.WxApiDao;
|
|
|
import thyyxxk.wxservice_server.entity.ResultVo;
|
|
@@ -22,6 +23,7 @@ import thyyxxk.wxservice_server.entity.wxapi.WxPayOrder;
|
|
|
import thyyxxk.wxservice_server.utils.DateUtil;
|
|
|
import thyyxxk.wxservice_server.utils.DecimalTool;
|
|
|
import thyyxxk.wxservice_server.utils.ResultVoUtil;
|
|
|
+import thyyxxk.wxservice_server.utils.StringUtil;
|
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
@@ -68,7 +70,7 @@ public class SavePayResultService {
|
|
|
return hasSaved;
|
|
|
}
|
|
|
|
|
|
- public ResultVo<String> saveAppointment(WxPayOrder order) {
|
|
|
+ public ResultVo<Object> saveAppointment(WxPayOrder order) {
|
|
|
int hasSaved = queryAppointmentSaveStatus(order.getTradeNo(), order.getSerialNo(),
|
|
|
order.getTotalFee().toPlainString(), order.getPayDatetime());
|
|
|
if (hasSaved == 0) {
|
|
@@ -134,7 +136,7 @@ public class SavePayResultService {
|
|
|
return hasSaved;
|
|
|
}
|
|
|
|
|
|
- public ResultVo<String> saveMzChargeInfo(WxPayOrder order) {
|
|
|
+ public ResultVo<Object> saveMzChargeInfo(WxPayOrder order, QuerySource source, String successTime) {
|
|
|
int hasSaved = queryMzPaySaveStatus(order.getHisOrdNum(), order.getTradeNo(),
|
|
|
order.getSerialNo(), order.getTotalFee().toPlainString(), order.getPayDatetime());
|
|
|
if (hasSaved == 0) {
|
|
@@ -145,7 +147,6 @@ public class SavePayResultService {
|
|
|
log.info("订单号:{} 的门诊缴费信息已保存,无需再次保存。", order.getTradeNo());
|
|
|
return ResultVoUtil.success("保存门诊缴费信息成功。");
|
|
|
}
|
|
|
- String payTime = DateUtil.formatDatetime(new Date(), "yyyy-MM-dd HH:mm:ss");
|
|
|
JSONObject hrgParam = new JSONObject();
|
|
|
hrgParam.put("patCardType", 1);
|
|
|
hrgParam.put("patCardNo", order.getPatientId());
|
|
@@ -154,13 +155,23 @@ public class SavePayResultService {
|
|
|
hrgParam.put("payMode", "WX");
|
|
|
hrgParam.put("payAmt", DecimalTool.moneyYuanToFen(order.getTotalFee()));
|
|
|
hrgParam.put("agtOrdNum", order.getSerialNo());
|
|
|
- hrgParam.put("payTime", payTime);
|
|
|
+ hrgParam.put("payTime", successTime);
|
|
|
RestTemplate template = new RestTemplate();
|
|
|
SaveMzFeeResponse saveMzFeeResponse = template.postForObject(hrgApiUrl + "/payChargeDetailFormHaiCi",
|
|
|
hrgParam, SaveMzFeeResponse.class);
|
|
|
log.info("保存门诊缴费信息:\n参数:{},\n结果:{}", hrgParam, saveMzFeeResponse);
|
|
|
if (saveMzFeeResponse != null && saveMzFeeResponse.getResultCode() == 0) {
|
|
|
dao.updateSuccessHisStatus(order.getTradeNo());
|
|
|
+ if (source == QuerySource.INTERFACE) {
|
|
|
+ String hisOrdNum = order.getHisOrdNum();
|
|
|
+ String[] hsrdnms = hisOrdNum.split("_");
|
|
|
+ Integer isCovidExam = dao.selectSelfCovidExamReceiptCount(hsrdnms[0], hsrdnms[1], hsrdnms[2]);
|
|
|
+ if (null != isCovidExam && isCovidExam > 0) {
|
|
|
+ order.setBody("新冠肺炎核酸检测");
|
|
|
+ order.setPayDatetime(DateUtil.parseDatetime(successTime));
|
|
|
+ return ResultVoUtil.success("showBill", order);
|
|
|
+ }
|
|
|
+ }
|
|
|
return ResultVoUtil.success("保存门诊缴费信息成功。");
|
|
|
}
|
|
|
hasSaved = queryMzPaySaveStatus(order.getHisOrdNum(), order.getTradeNo(),
|
|
@@ -170,6 +181,16 @@ public class SavePayResultService {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.NETWORK_ERROR, "门诊缴费信息查询失败,将于3分钟后重新发起查询。");
|
|
|
}
|
|
|
if (hasSaved == 1) {
|
|
|
+ if (source == QuerySource.INTERFACE) {
|
|
|
+ String hisOrdNum = order.getHisOrdNum();
|
|
|
+ String[] hsrdnms = hisOrdNum.split("_");
|
|
|
+ Integer isCovidExam = dao.selectSelfCovidExamReceiptCount(hsrdnms[0], hsrdnms[1], hsrdnms[2]);
|
|
|
+ if (null != isCovidExam && isCovidExam > 0) {
|
|
|
+ order.setBody("新冠肺炎核酸检测");
|
|
|
+ order.setPayDatetime(DateUtil.parseDatetime(successTime));
|
|
|
+ return ResultVoUtil.success("showBill", order);
|
|
|
+ }
|
|
|
+ }
|
|
|
return ResultVoUtil.success("保存门诊缴费信息成功。");
|
|
|
}
|
|
|
ResultVo<String> refund = refundService.autoRefund(order.getTradeNo(), "保存门诊缴费信息失败,自动退款。");
|
|
@@ -182,7 +203,7 @@ public class SavePayResultService {
|
|
|
return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "保存门诊缴费信息失败,自动退款失败,请联系服务中心进行退款。");
|
|
|
}
|
|
|
|
|
|
- public ResultVo<String> saveZyYjjInfo(WxPayOrder order) {
|
|
|
+ public ResultVo<Object> saveZyYjjInfo(WxPayOrder order) {
|
|
|
int savedCount = yjjDao.selectSavedCount(order.getTradeNo(), order.getSerialNo());
|
|
|
if (savedCount > 0) {
|
|
|
log.info("订单号:{} 的住院预交金信息已保存,无需再次保存。", order.getTradeNo());
|