diff --git a/src/main/java/com/ynxbd/common/action/XBDAction.java b/src/main/java/com/ynxbd/common/action/XBDAction.java index 555bf7c..c35c9c4 100644 --- a/src/main/java/com/ynxbd/common/action/XBDAction.java +++ b/src/main/java/com/ynxbd/common/action/XBDAction.java @@ -60,7 +60,6 @@ public class XBDAction extends BaseAction { } } - /** * 获取云胶片的授权地址 * @@ -103,32 +102,6 @@ public class XBDAction extends BaseAction { } } - -// /** -// * 获取该病人已归档可以翻拍的病历[红河] -// * -// * @param patientId 病人id -// * @return 可以翻拍的病历列表 -// */ -// @Action("getMedicalRecordList2") -// public Result getMedicalRecordList2(String patientId, Integer flagSh) { -// String realPatientId = getDecodeString(patientId); -// log.info("[病历]获取该病人已归档可以翻拍的病历 patientId={}", realPatientId); -// if (ObjectUtils.isEmpty(realPatientId)) { -// return Result.error(ResultEnum.PARAM_IS_DEFECT); -// } -// String resp = XBDHttpHelper.ExecMethodPost(XBDEnum.BLSM_Appointment_GetBA.Name, params -> { -// params.put("patientID", realPatientId); -// params.put("flagFP", 0); -// params.put("flagSH", flagSh); -// }); -// if (ObjectUtils.isEmpty(resp)) { -// return Result.error(ResultEnum.INTERFACE_INVOKE_ERROR); -// } -// return Result.success(JsonHelper.parseArray(resp, MedicalRecord.class)); -// } - - /** * 获取该病人需要翻拍病历干啥的列表(用途)->直接绑定翻拍的病历类型 * @@ -183,17 +156,17 @@ public class XBDAction extends BaseAction { payCasebook.setPhone(phone); CasebookService casebookService = new CasebookService(); - if (casebookService.isExit(patientId, zyNum, String.valueOf(getWay), useToName)) { - log.info("[病历复印]预约信息重复 patientId={}, treatNum={}, getWay={}, useToName={}", patientId, zyNum, getWay, useToName); + if (casebookService.hasResInfo(openId, patientId, zyNum, String.valueOf(getWay), useToNo, useToName)) { + log.info("[病历复印]预约信息重复 patientId={}, treatNum={}, getWay={}, useToNo={}, useToName={}", patientId, zyNum, getWay, useToNo, useToName); return Result.error(ResultEnum.APPLY_REPEAT); } - long id = casebookService.addApply(payCasebook, openId, patientId); // 返回自增id + long id = casebookService.addResApply(payCasebook, openId, patientId); // 返回自增id if (id <= 0) { 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 -> { + String respJson = XBDHttpHelper.ExecMethodPost(XBDEnum.BLSM_Appointment_SetAppointment.NAME, params -> { params.put("ZYNum", zyNum); params.put("ApplyName", applyName); params.put("UseToNo", useToNo); @@ -218,24 +191,29 @@ public class XBDAction extends BaseAction { params.put("ApplicationImg", applicationImg); }); - if (ObjectUtils.isEmpty(jsonString)) { - return Result.error(ResultEnum.ERROR); + log.info("[病历复印]HIS预约返回 resp=[{}], id={}", respJson, id); + if (ObjectUtils.isEmpty(respJson)) { + return Result.error(ResultEnum.INTERFACE_HIS_INVOKE_ERROR); } - JSONObject jsonObject = JsonHelper.parseObject(jsonString); - String applyId = jsonObject.getString("applyId"); + JSONObject respJsonObj = JsonHelper.parseJsonObjByBracket(respJson); + if (respJsonObj == null) { + return Result.error(ResultEnum.INTERFACE_HIS_DATA_ERROR); + } + + String applyId = respJsonObj.getString("Ba_Borrow_No"); if (ObjectUtils.isEmpty(applyId)) { - return Result.error(ResultEnum.ERROR); + return Result.error(ResultEnum.INTERFACE_HIS_DATA_ERROR); } if (!casebookService.updateApplyIdById(id, applyId)) { log.error("[病历复印]记录applyId失败 id={}, applyId={}", applyId, applyId); return Result.error(ResultEnum.ERROR); } - return Result.success(jsonObject); + return Result.success(respJsonObj); } catch (Exception e) { log.error("[病历复印]预约失败 error:{}", e.toString()); - return Result.error(ResultEnum.ERROR); + return Result.error(e); } } @@ -383,6 +361,30 @@ public class XBDAction extends BaseAction { // params.put("delNote",delNote); // }); // return Result.success(JsonHelper.parseObject(jsonString)); +// } + + // /** +// * 获取该病人已归档可以翻拍的病历[红河] +// * +// * @param patientId 病人id +// * @return 可以翻拍的病历列表 +// */ +// @Action("getMedicalRecordList2") +// public Result getMedicalRecordList2(String patientId, Integer flagSh) { +// String realPatientId = getDecodeString(patientId); +// log.info("[病历]获取该病人已归档可以翻拍的病历 patientId={}", realPatientId); +// if (ObjectUtils.isEmpty(realPatientId)) { +// return Result.error(ResultEnum.PARAM_IS_DEFECT); +// } +// String resp = XBDHttpHelper.ExecMethodPost(XBDEnum.BLSM_Appointment_GetBA.Name, params -> { +// params.put("patientID", realPatientId); +// params.put("flagFP", 0); +// params.put("flagSH", flagSh); +// }); +// if (ObjectUtils.isEmpty(resp)) { +// return Result.error(ResultEnum.INTERFACE_INVOKE_ERROR); +// } +// return Result.success(JsonHelper.parseArray(resp, MedicalRecord.class)); // } } diff --git a/src/main/java/com/ynxbd/common/action/pay/PEnum.java b/src/main/java/com/ynxbd/common/action/pay/PEnum.java index fa8c787..2cce92b 100644 --- a/src/main/java/com/ynxbd/common/action/pay/PEnum.java +++ b/src/main/java/com/ynxbd/common/action/pay/PEnum.java @@ -14,11 +14,11 @@ public enum PEnum { REG("挂号", "register", "G"), RECIPE("处方", "recipe", "C"), - PEIS_RESERVE("体检预约","PEIS_reserve", "P"), + PEIS_RESERVE("体检预约", "PEIS_reserve", "P"), IN_HOSP("住院", "in_hosp", "Z"), - CASEBOOK("病历", "casebook", "CB"), + CASEBOOK("病历", "casebook", "BA"), OUT_COLLECT("外采", "out_collect", "OC"), @@ -29,7 +29,7 @@ public enum PEnum { public final String NAME; public final String CODE; - public final String ORDER_CODE;// 和订单号有关,至多两位 + public final String ORDER_CODE; // 和订单号有关,至多两位 PEnum(String NAME, String CODE, String ORDER_CODE) { this.NAME = NAME; @@ -46,6 +46,9 @@ public enum PEnum { return NO; } + public String toTradeNo(String transNo) { + return transNo + this.ORDER_CODE; + } /** * 根据订单号获取类型 diff --git a/src/main/java/com/ynxbd/common/bean/pay/PayCasebook.java b/src/main/java/com/ynxbd/common/bean/pay/PayCasebook.java index 61880b6..cf0a18a 100644 --- a/src/main/java/com/ynxbd/common/bean/pay/PayCasebook.java +++ b/src/main/java/com/ynxbd/common/bean/pay/PayCasebook.java @@ -38,4 +38,5 @@ public class PayCasebook extends Order { // 申请时间 private Date applyTime; + } diff --git a/src/main/java/com/ynxbd/common/dao/CasebookDao.java b/src/main/java/com/ynxbd/common/dao/CasebookDao.java index 35f6b2e..bcd0015 100644 --- a/src/main/java/com/ynxbd/common/dao/CasebookDao.java +++ b/src/main/java/com/ynxbd/common/dao/CasebookDao.java @@ -83,13 +83,15 @@ public class CasebookDao { // 查询是已有相同的申请记录 - public boolean selectIsExit(String patientId, String treatNum, String getWay, String useToName) { - String sql = "select * from pay_casebook where patientId=? and treatNum=? and getWay=? and getWay !=1 and useToName=? and (payStatus is null or payStatus= -1)"; + public boolean selectIsExit(String openid, String patientId, String treatNum, String getWay, String useToNo, String useToName) { + String sql = "select * from pay_casebook where Date(applyTime) = CurDate() and openid=? and patientId=? and treatNum=? and getWay=? and useToNo=? and useToName=? and (payStatus is null or payStatus=-1) and applyId is not null"; return !DataBase.select(sql, PayCasebook.class, ps -> { - ps.setString(1, patientId); - ps.setString(2, treatNum); - ps.setString(3, getWay); - ps.setString(4, useToName); + ps.setString(1, openid); + ps.setString(2, patientId); + ps.setString(3, treatNum); + ps.setString(4, getWay); + ps.setString(5, useToNo); + ps.setString(6, useToName); }).isEmpty(); } diff --git a/src/main/java/com/ynxbd/common/dao/his/HisPatientDao.java b/src/main/java/com/ynxbd/common/dao/his/HisPatientDao.java index 1cec8ab..83ebf33 100644 --- a/src/main/java/com/ynxbd/common/dao/his/HisPatientDao.java +++ b/src/main/java/com/ynxbd/common/dao/his/HisPatientDao.java @@ -42,7 +42,7 @@ public class HisPatientDao { * @param mIDCardNo 母亲身份证号 * @return 患者 */ - public Patient bind(boolean isCounty, String name, String sex, String idCardNo, HCardTypeEnum cardTypeEnum, String tel, String address, String birthday, String nation, String county, String uuid, String fName, String fTel, String fIDCardNo, String mName, String mTel, String mIDCardNo) throws ServiceException { + public Patient bind(boolean isArea, String name, String sex, String idCardNo, HCardTypeEnum cardTypeEnum, String tel, String address, String birthday, String nation, String areaCode, String uuid, String fName, String fTel, String fIDCardNo, String mName, String mTel, String mIDCardNo) throws ServiceException { Map params = new HashMap<>(); // idCardNo = null 是儿童 String cardNo = idCardNo == null ? uuid : idCardNo; @@ -60,9 +60,8 @@ public class HisPatientDao { params.put("Nation", nation); params.put("Tel", tel); - log.warn("put code={}, isCounty={}", county, isCounty); - if (isCounty && !ObjectUtils.isEmpty(county)) { - params.put("Address_Code", county); + if (isArea && !ObjectUtils.isEmpty(areaCode)) { + params.put("Address_Code", areaCode); } if (fName != null && fTel != null && fIDCardNo != null) { diff --git a/src/main/java/com/ynxbd/common/helper/common/JsonHelper.java b/src/main/java/com/ynxbd/common/helper/common/JsonHelper.java index d2b16be..3efbed3 100644 --- a/src/main/java/com/ynxbd/common/helper/common/JsonHelper.java +++ b/src/main/java/com/ynxbd/common/helper/common/JsonHelper.java @@ -7,13 +7,15 @@ import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.serializer.PascalNameFilter; import com.alibaba.fastjson.serializer.SerializerFeature; -import com.ynxbd.common.bean.xbd.MRHistory; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; import java.util.List; /** * FastJson操作类 */ +@Slf4j public class JsonHelper { public static String toJsonString(Object data) { @@ -22,10 +24,11 @@ public class JsonHelper { /** * 支持返回大写json + * * @param data 需要转换实体 * @return string */ - public static String toProJsonString(Object data){ + public static String toProJsonString(Object data) { return JSONObject.toJSONString(data, new PascalNameFilter(), SerializerFeature.WriteMapNullValue); } @@ -96,7 +99,52 @@ public class JsonHelper { return null; } + /** + * 获取数组的第一个对象 + * + * @param dataJson dataJson + * @return jsonObj + */ + public static JSONObject parseArrGetFirstJsonObj(String dataJson) { + try { + if (ObjectUtils.isEmpty(dataJson)) { + return null; + } + JSONArray dataJsonArr = JSONObject.parseArray(dataJson); + if (dataJsonArr.isEmpty()) { + return null; + } + return dataJsonArr.getJSONObject(0); + } catch (Exception e) { + log.error(e.getMessage()); + } + return null; + } + + /** + * 根据括号类型获取 + * + * @param dataJson dataJson + * @return jsonObj + */ + public static JSONObject parseJsonObjByBracket(String dataJson) { + try { + if (ObjectUtils.isEmpty(dataJson)) { + return null; + } + dataJson = dataJson.trim(); + String bracketType = dataJson.substring(0, 1); // 括号类型 + if ("[".equals(bracketType)) { + return parseArrGetFirstJsonObj(dataJson); + } + return JSONObject.parseObject(dataJson); + } catch (Exception e) { + log.error(e.getMessage()); + } + return null; + } + public static void main(String[] args) { - List test = parseArray("[{\"Ba_Borrow_Apply_Name\":\"杨木苗\",\"Out_Hosp_Time\":\"2013-08-0115:58:00\",\"BA_Borrow_isPrint\":false,\"Zynum\":\"1049499\",\"BA_Borrow_isPay\":false,\"In_Hosp_Time\":\"2012-08-1015:30:00\",\"Dx\":\"精神分裂症\",\"Ba_Borrow_Useto_Name\":\"律师\",\"BA_Borrow_OperDate\":\"2023-06-2015:55:28\",\"Ba_Borrow_Phone\":\"1\",\"Bano\":\"1049499\",\"Ba_Borrow_Getway\":0,\"Ba_Borrow_Address\":\"1\"}]", MRHistory.class); +// List test = parseArray("[{\"Ba_Borrow_Apply_Name\":\"杨木苗\",\"Out_Hosp_Time\":\"2013-08-0115:58:00\",\"BA_Borrow_isPrint\":false,\"Zynum\":\"1049499\",\"BA_Borrow_isPay\":false,\"In_Hosp_Time\":\"2012-08-1015:30:00\",\"Dx\":\"精神分裂症\",\"Ba_Borrow_Useto_Name\":\"律师\",\"BA_Borrow_OperDate\":\"2023-06-2015:55:28\",\"Ba_Borrow_Phone\":\"1\",\"Bano\":\"1049499\",\"Ba_Borrow_Getway\":0,\"Ba_Borrow_Address\":\"1\"}]", MRHistory.class); } } diff --git a/src/main/java/com/ynxbd/common/result/ResultEnum.java b/src/main/java/com/ynxbd/common/result/ResultEnum.java index 2198a2e..22a102b 100644 --- a/src/main/java/com/ynxbd/common/result/ResultEnum.java +++ b/src/main/java/com/ynxbd/common/result/ResultEnum.java @@ -169,8 +169,7 @@ public enum ResultEnum { SMS_CODE_VERIFY_ERROR(90006, "验证码错误或已失效"), // 慢病 和 病历复印 - APPLY_REPEAT(100001, "申请已存在,请勿重复申请"); - + APPLY_REPEAT(100001, "已预约申请过"); public final Integer status; diff --git a/src/main/java/com/ynxbd/common/service/CasebookService.java b/src/main/java/com/ynxbd/common/service/CasebookService.java index 7c33c8e..dbc97a7 100644 --- a/src/main/java/com/ynxbd/common/service/CasebookService.java +++ b/src/main/java/com/ynxbd/common/service/CasebookService.java @@ -1,6 +1,7 @@ package com.ynxbd.common.service; import com.alibaba.fastjson.JSONObject; +import com.ynxbd.common.action.pay.PEnum; import com.ynxbd.common.action.pay.PQREnum; import com.ynxbd.common.bean.enums.MerchantEnum; import com.ynxbd.common.bean.pay.PayCasebook; @@ -12,6 +13,7 @@ import com.ynxbd.common.helper.xbd.XBDEnum; import com.ynxbd.common.helper.xbd.XBDHttpHelper; import com.ynxbd.common.result.Result; import com.ynxbd.common.result.ResultEnum; +import com.ynxbd.common.result.ServiceException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; @@ -55,21 +57,23 @@ public class CasebookService { return Result.success(respJson); } + /** - * [病历复印]判断是否存在预约记录 + * [病历复印]判断【今天】是否存在预约记录 * + * @param openId openId * @param patientId 患者id * @param treatNum 住院号 * @param getWay 方式 - * @param useToName 模版名称 + * @param useToNo 模板号 + * @param useToName 模板名称 * @return bool */ - public boolean isExit(String patientId, String treatNum, String getWay, String useToName) { - if (patientId == null || treatNum == null) { - log.info("[病历]唤起支付 存入 applyId失败,patientId-{},treatNum-{},", patientId, treatNum); - return false; + public boolean hasResInfo(String openId, String patientId, String treatNum, String getWay, String useToNo, String useToName) throws ServiceException { + if (ObjectUtils.isEmpty(openId) || ObjectUtils.isEmpty(patientId) || ObjectUtils.isEmpty(treatNum) || ObjectUtils.isEmpty(useToNo) || ObjectUtils.isEmpty(useToName)) { + throw new ServiceException(ResultEnum.PARAM_IS_DEFECT); } - return new CasebookDao().selectIsExit(patientId, treatNum, getWay, useToName); + return new CasebookDao().selectIsExit(openId, patientId, treatNum, getWay, useToNo, useToName); } @@ -112,7 +116,7 @@ public class CasebookService { * @param casebook 订单信息 * @return bool */ - public long addApply(PayCasebook casebook, String openId, String patientId) { + public long addResApply(PayCasebook casebook, String openId, String patientId) { if (casebook == null) { log.info("casebook is null"); return -1; @@ -148,6 +152,7 @@ public class CasebookService { return; } + String tradeNo = PEnum.CASEBOOK.toTradeNo(bankTransNo); if (!casebookDao.updatePayStateOk(outTradeNo, bankTransNo)) { log.info("[病历复印]修改支付状态失败 outTradeNo={}, bankTransNo={}, applyId={}", outTradeNo, bankTransNo, applyId); } @@ -157,6 +162,7 @@ public class CasebookService { String respJson = XBDHttpHelper.ExecMethodPost(XBDEnum.BLSM_Appointment_SetISPay.NAME, params -> { params.put("borrowNo", applyId); params.put("payDateTime", DateHelper.getCurDateTime()); + params.put("tradeNo", tradeNo); }); log.info("[病历复印]HIS接口返回 resp={}", respJson);