From 6fd4bdff55620c562e0a22eee3c95924951b04a4 Mon Sep 17 00:00:00 2001 From: zhaoxiaohao <279049017@qq.com> Date: Thu, 24 Sep 2020 14:10:28 +0800 Subject: [PATCH] Merge branch 'pay_master' of ssh://192.168.2.240:29418/kidgrow-microservices-platform into pay_master --- kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java | 570 ++++++++++++++++++++++++++++++++------------------------ 1 files changed, 328 insertions(+), 242 deletions(-) diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java index 1a3955b..454c824 100644 --- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java +++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kidgrow.common.constant.ConsumptionConstant; +import com.kidgrow.common.constant.PayConstants; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.model.ResultBody; import com.kidgrow.common.service.impl.SuperServiceImpl; @@ -9,9 +10,13 @@ import com.kidgrow.common.utils.StringUtils; import com.kidgrow.oprationcenter.mapper.ConsumptionRecordMapper; import com.kidgrow.oprationcenter.model.ConsumptionRecord; +import com.kidgrow.oprationcenter.model.PayManager; import com.kidgrow.oprationcenter.model.ProductOrderDetail; +import com.kidgrow.oprationcenter.model.SaasClientPay; import com.kidgrow.oprationcenter.service.IConsumptionRecordService; +import com.kidgrow.oprationcenter.service.IPayManagerService; import com.kidgrow.oprationcenter.service.IProductOrderDetailService; +import com.kidgrow.oprationcenter.service.ISaasClientPayService; import com.kidgrow.oprationcenter.vo.ConsumptionRequest; import com.kidgrow.oprationcenter.vo.ConsumptionVo; import com.kidgrow.oprationcenter.vo.ProductOrderJoinDetail; @@ -26,7 +31,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.servlet.http.HttpServletRequest; import java.util.*; import java.util.stream.Collectors; @@ -48,13 +52,16 @@ @Autowired private IProductOrderDetailService productOrderDetailService; @Autowired - private HttpServletRequest httpServletRequest; + private IPayManagerService payManagerService; + @Autowired + private ISaasClientPayService saasClientPayService; @Autowired private RabbitTemplate rabbitTemplate; private static final Logger logger = LoggerFactory.getLogger(ConsumptionRecordServiceImpl.class); @Value("${spring.profiles.active}") private String envName; + /** * 列表 * @@ -102,54 +109,67 @@ //默认的业务返回码 int bcode = -1; //记录类型 - int recordType=ConsumptionConstant.BEFORE_DEDUCTION; + int recordType = ConsumptionConstant.BEFORE_DEDUCTION; //业务执行结果 boolean isSuccess = true; //业务执行结果信息 String reMsg = ""; if (VateParams(consumptionRequest)) { - //先获取这个业务关联的扣费记录 - List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); - //1.先检查是否已经扣费 - if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.DEDUCTION)) { - //2.没有扣费,检查是否已经预扣费 - if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { - //3.没有预扣,查询余额 - Map<String,Object> vateMap=VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId()); - if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) { - //4.余额充足 获取要扣的套餐 写预扣费记录 - if (beforeConsumption(consumptionRequest)) { - //预扣费成功 - reMsg = "预扣费成功!"; - bcode = ConsumptionConstant.BUSINESS_CODE_IS_BEFORE_DEDUCTION; - } else { - //预扣费执行失败 - isSuccess = false; - reMsg = "预扣费执行失败!"; - bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; - } - } else { - //余额不足 或获取异常 - isSuccess = false; - reMsg = vateMap.get("vateMsg").toString(); - bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; - } - } else { - //已经预扣费 - reMsg = "该业务已经预扣费!"; + //是否开通单次支付 + if (departmentIsPay(consumptionRequest)) { + //是否支付成功 + if (departmentPayStatus(consumptionRequest)) { + //预扣费成功 + reMsg = "单次支付模拟预扣费成功!"; bcode = ConsumptionConstant.BUSINESS_CODE_IS_BEFORE_DEDUCTION; + } else { + reMsg = "单次支付未成功,不允许预扣费!"; + bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; } } else { - //已经扣费 - reMsg = "该业务已经扣费!"; - bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; + //先获取这个业务关联的扣费记录 + List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); + //1.先检查是否已经扣费 + if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.DEDUCTION)) { + //2.没有扣费,检查是否已经预扣费 + if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { + //3.没有预扣,查询余额 + Map<String, Object> vateMap = VateUserNowProduct(consumptionRequest.getConsumptionCount(), consumptionRequest.getHospitalId(), consumptionRequest.getDepartmentId()); + if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) { + //4.余额充足 获取要扣的套餐 写预扣费记录 + if (beforeConsumption(consumptionRequest)) { + //预扣费成功 + reMsg = "预扣费成功!"; + bcode = ConsumptionConstant.BUSINESS_CODE_IS_BEFORE_DEDUCTION; + } else { + //预扣费执行失败 + isSuccess = false; + reMsg = "预扣费执行失败!"; + bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; + } + } else { + //余额不足 或获取异常 + isSuccess = false; + reMsg = vateMap.get("vateMsg").toString(); + bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; + } + } else { + //已经预扣费 + reMsg = "该业务已经预扣费!"; + bcode = ConsumptionConstant.BUSINESS_CODE_IS_BEFORE_DEDUCTION; + } + } else { + //已经扣费 + reMsg = "该业务已经扣费!"; + bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; + } } } else { isSuccess = false; reMsg = "传入参数有误!"; bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } - return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess); + return ResultReturn(consumptionRequest, bcode, recordType, reMsg, isSuccess); } /** @@ -164,61 +184,76 @@ //默认的业务返回码 int bcode = -1; //记录类型 - int recordType=ConsumptionConstant.DEDUCTION; + int recordType = ConsumptionConstant.DEDUCTION; //业务执行结果 boolean isSuccess = true; //业务执行结果信息 String reMsg = ""; if (VateParams(consumptionRequest)) { - //先获取这个业务关联的扣费记录 - List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); - Long hospitalId = consumptionRequest.getHospitalId(); - - //1.先检查是否已经扣费 - if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.DEDUCTION)) { - //2.没有扣费,检查是否已经预扣费 - if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { - //2.1.没有预扣,查询余额 - Map<String,Object> vateMap=VateUserNowProduct(consumptionRequest.getConsumptionCount(),hospitalId,consumptionRequest.getDepartmentId()); - if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) { - //2.2.余额充足 获取要扣的套餐 写预扣费记录 - if (beforeConsumption(consumptionRequest)) { - //预扣费成功 - logger.info("医院id:【{}】AI返回结果应该不走预扣,目前确已经预扣!", hospitalId); - } else { - //预扣费执行失败 - isSuccess = false; - reMsg = "预扣费执行失败!"; - bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; - return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); - } - } else { - //余额不足 - isSuccess = false; - reMsg = vateMap.get("vateMsg").toString(); - bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; - return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); - } - } - if (consumptionBusiess(consumptionRequest, consumptionRecordList)) { - reMsg = "该业务扣费成功!"; + //是否开通单次支付 + if (departmentIsPay(consumptionRequest)) { + //是否支付成功 + if (departmentPayStatus(consumptionRequest)) { + //预扣费成功 + reMsg = "单次支付模拟扣费成功!"; bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; + //消息队列通知 + MessageToBI(consumptionRequest); } else { - isSuccess = false; - reMsg = "该业务扣费失败!"; + reMsg = "单次支付未成功,不允许扣费!"; bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; } } else { - //已经扣费 - reMsg = "该业务已经扣费!"; - bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; + //先获取这个业务关联的扣费记录 + List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); + Long hospitalId = consumptionRequest.getHospitalId(); + + //1.先检查是否已经扣费 + if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.DEDUCTION)) { + //2.没有扣费,检查是否已经预扣费 + if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { + //2.1.没有预扣,查询余额 + Map<String, Object> vateMap = VateUserNowProduct(consumptionRequest.getConsumptionCount(), hospitalId, consumptionRequest.getDepartmentId()); + if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) { + //2.2.余额充足 获取要扣的套餐 写预扣费记录 + if (beforeConsumption(consumptionRequest)) { + //预扣费成功 + logger.info("医院id:【{}】AI返回结果应该不走预扣,目前确已经预扣!", hospitalId); + } else { + //预扣费执行失败 + isSuccess = false; + reMsg = "预扣费执行失败!"; + bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; + return ResultReturn(consumptionRequest, bcode, ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); + } + } else { + //余额不足 + isSuccess = false; + reMsg = vateMap.get("vateMsg").toString(); + bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; + return ResultReturn(consumptionRequest, bcode, ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); + } + } + if (consumptionBusiess(consumptionRequest, consumptionRecordList)) { + reMsg = "该业务扣费成功!"; + bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; + } else { + isSuccess = false; + reMsg = "该业务扣费失败!"; + bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; + } + } else { + //已经扣费 + reMsg = "该业务已经扣费!"; + bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; + } } } else { isSuccess = false; reMsg = "传入参数有误!"; bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } - return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess); + return ResultReturn(consumptionRequest, bcode, recordType, reMsg, isSuccess); } /** @@ -239,126 +274,124 @@ //业务执行结果信息 String reMsg = ""; if (VateParams(consumptionRequest)) { - //先获取这个业务关联的扣费记录 - List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); - //1.先检查是否已经扣费 - if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.DEDUCTION)) { - //2.没有扣费,检查是否已经预扣费 - if (isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { - //2.1.有预扣费 - ConsumptionRecord consumptionRecord = consumptionRecordList.stream().filter(f -> f.getRecordType() == ConsumptionConstant.BEFORE_DEDUCTION&&f.getProOrderDetailId()>0).collect(Collectors.toList()).get(0); - //把占用的套餐id还回去 - Long tempProOrderDetailId=consumptionRecord.getProOrderDetailId(); - consumptionRecord.setProOrderDetailId(0L); - consumptionRecord.setUpdateTime(new Date()); - if (SaveConsumptionRecord(consumptionRecord)) - { - //退预扣记录 - ConsumptionRecord consumptionRecordNew = new ConsumptionRecord(); - consumptionRecordNew.setBusinessCode(ConsumptionConstant.BUSINESS_CODE_RETURN_BEFORE_DEDUCTION); - consumptionRecordNew.setBusinessId(consumptionRequest.getBusinessId()); - consumptionRecordNew.setConsumptionCount(0-consumptionRequest.getConsumptionCount()); - consumptionRecordNew.setRecordType(ConsumptionConstant.RETURN_BEFORE_DEDUCTION); - consumptionRecordNew.setProOrderDetailId(tempProOrderDetailId); - consumptionRecordNew.setLastRecordId(consumptionRecord.getId()); - if (SaveConsumptionRecord(consumptionRecordNew)) - { - isSuccess=true; - reMsg = "有预扣,写退还预扣成功!"; - bcode = ConsumptionConstant.BUSINESS_CODE_RETURN_BEFORE_DEDUCTION; - } - else - { - reMsg = "写退还预扣失败!"; - bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; - } - } - else{ - reMsg = "更新预扣费记录失败!"; - bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; - } - } - else - { - reMsg = "没有相关预扣记录!"; - bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; + //是否开通单次支付 + if (departmentIsPay(consumptionRequest)) { + //是否支付成功 + if (departmentPayStatus(consumptionRequest)) { + //预扣费成功 + reMsg = "单次支付模拟退还扣费成功!"; + bcode = ConsumptionConstant.BUSINESS_CODE_RETURN_DEDUCTION; + } else { + reMsg = "单次支付未成功,不允许退扣费!"; + bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; } } else { - recordType=ConsumptionConstant.RETURN_DEDUCTION; - //3.有扣费记录 这种情况的流程,实际业务中不会出现,但理论上应该这样处理 - //3.1 退还账户 - //获取预扣的时候占住的套餐id - ConsumptionRecord consumptionRecord = consumptionRecordList.stream().filter(f -> f.getRecordType() == ConsumptionConstant.DEDUCTION).collect(Collectors.toList()).get(0); - if (consumptionRecord != null) { - ProductOrderDetail productOrderDetail = productOrderDetailService.getById(consumptionRecord.getProOrderDetailId()); - if (productOrderDetail != null) { - //退还金额 - productOrderDetail.setAilightCount(productOrderDetail.getAilightCount()+consumptionRecord.getConsumptionCount()); - productOrderDetail.setUpdateTime(new Date()); - //退费 - boolean consumptionRe = productOrderDetailService.saveOrUpdate(productOrderDetail); - if (consumptionRe) { - //更新扣费记录 还回占用套餐 - consumptionRecord.setProOrderDetailId(0L); - consumptionRecord.setUpdateTime(new Date()); - if (SaveConsumptionRecord(consumptionRecord)) - { - //退费成功 - //3.2 写退费记录 - ConsumptionRecord consumptionRecordNew = new ConsumptionRecord(); - consumptionRecordNew.setBusinessCode(ConsumptionConstant.BUSINESS_CODE_RETURN_DEDUCTION); - consumptionRecordNew.setBusinessId(consumptionRecord.getBusinessId()); - consumptionRecordNew.setConsumptionCount(0-consumptionRecord.getConsumptionCount()); - consumptionRecordNew.setRecordType(ConsumptionConstant.RETURN_DEDUCTION); - consumptionRecordNew.setProOrderDetailId(productOrderDetail.getId()); - consumptionRecordNew.setLastRecordId(consumptionRecord.getId()); - if (SaveConsumptionRecord(consumptionRecordNew)) { - //写退费记录成功 - isSuccess=true; - reMsg = "退还扣费成功!"; - bcode = ConsumptionConstant.BUSINESS_CODE_RETURN_DEDUCTION; - } - else - { - reMsg = "退还扣费失败!"; - bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; - } + //先获取这个业务关联的扣费记录 + List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); + //1.先检查是否已经扣费 + if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.DEDUCTION)) { + //2.没有扣费,检查是否已经预扣费 + if (isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { + //2.1.有预扣费 + ConsumptionRecord consumptionRecord = consumptionRecordList.stream().filter(f -> f.getRecordType() == ConsumptionConstant.BEFORE_DEDUCTION && f.getProOrderDetailId() > 0).collect(Collectors.toList()).get(0); + //把占用的套餐id还回去 + Long tempProOrderDetailId = consumptionRecord.getProOrderDetailId(); + consumptionRecord.setProOrderDetailId(0L); + consumptionRecord.setUpdateTime(new Date()); + if (SaveConsumptionRecord(consumptionRecord)) { + //退预扣记录 + ConsumptionRecord consumptionRecordNew = new ConsumptionRecord(); + consumptionRecordNew.setBusinessCode(ConsumptionConstant.BUSINESS_CODE_RETURN_BEFORE_DEDUCTION); + consumptionRecordNew.setBusinessId(consumptionRequest.getBusinessId()); + consumptionRecordNew.setConsumptionCount(0 - consumptionRequest.getConsumptionCount()); + consumptionRecordNew.setRecordType(ConsumptionConstant.RETURN_BEFORE_DEDUCTION); + consumptionRecordNew.setProOrderDetailId(tempProOrderDetailId); + consumptionRecordNew.setLastRecordId(consumptionRecord.getId()); + consumptionRecordNew.setDiaId(consumptionRequest.getDiaId()); + if (SaveConsumptionRecord(consumptionRecordNew)) { + isSuccess = true; + reMsg = "有预扣,写退还预扣成功!"; + bcode = ConsumptionConstant.BUSINESS_CODE_RETURN_BEFORE_DEDUCTION; + } else { + reMsg = "写退还预扣失败!"; + bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; } - else - { - //更新扣费失败 - reMsg = "更新扣费失败!"; - bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; - } - } - else - { - //退费失败 - reMsg = "退还扣费失败!"; + } else { + reMsg = "更新预扣费记录失败!"; bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; } + } else { + reMsg = "没有相关预扣记录!"; + bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; } - else - { - reMsg = "无相关套餐数据!"; + } else { + recordType = ConsumptionConstant.RETURN_DEDUCTION; + //3.有扣费记录 这种情况的流程,实际业务中不会出现,但理论上应该这样处理 + //3.1 退还账户 + //获取预扣的时候占住的套餐id + ConsumptionRecord consumptionRecord = consumptionRecordList.stream().filter(f -> f.getRecordType() == ConsumptionConstant.DEDUCTION).collect(Collectors.toList()).get(0); + if (consumptionRecord != null) { + ProductOrderDetail productOrderDetail = productOrderDetailService.getById(consumptionRecord.getProOrderDetailId()); + if (productOrderDetail != null) { + //退还金额 + productOrderDetail.setAilightCount(productOrderDetail.getAilightCount() + consumptionRecord.getConsumptionCount()); + productOrderDetail.setUpdateTime(new Date()); + //退费 + boolean consumptionRe = productOrderDetailService.saveOrUpdate(productOrderDetail); + if (consumptionRe) { + //更新扣费记录 还回占用套餐 + consumptionRecord.setProOrderDetailId(0L); + consumptionRecord.setUpdateTime(new Date()); + if (SaveConsumptionRecord(consumptionRecord)) { + //退费成功 + //3.2 写退费记录 + ConsumptionRecord consumptionRecordNew = new ConsumptionRecord(); + consumptionRecordNew.setBusinessCode(ConsumptionConstant.BUSINESS_CODE_RETURN_DEDUCTION); + consumptionRecordNew.setBusinessId(consumptionRecord.getBusinessId()); + consumptionRecordNew.setConsumptionCount(0 - consumptionRecord.getConsumptionCount()); + consumptionRecordNew.setRecordType(ConsumptionConstant.RETURN_DEDUCTION); + consumptionRecordNew.setProOrderDetailId(productOrderDetail.getId()); + consumptionRecordNew.setLastRecordId(consumptionRecord.getId()); + consumptionRecordNew.setDiaId(consumptionRequest.getDiaId()); + if (SaveConsumptionRecord(consumptionRecordNew)) { + //写退费记录成功 + isSuccess = true; + reMsg = "退还扣费成功!"; + bcode = ConsumptionConstant.BUSINESS_CODE_RETURN_DEDUCTION; + } else { + reMsg = "退还扣费失败!"; + bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; + } + } else { + //更新扣费失败 + reMsg = "更新扣费失败!"; + bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; + } + } else { + //退费失败 + reMsg = "退还扣费失败!"; + bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; + } + } else { + reMsg = "无相关套餐数据!"; + bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; + } + } else { + reMsg = "无相关扣费数据!"; bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; } - } - else - { - reMsg = "无相关扣费数据!"; - bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; } } } else { reMsg = "传入参数有误!"; bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } - return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess); + return ResultReturn(consumptionRequest, bcode, recordType, reMsg, isSuccess); } /** * 发起人工读片-调用 + * * @param consumptionRequest 请求的数据实体 * @return */ @@ -374,60 +407,74 @@ //业务执行结果信息 String reMsg = ""; if (VateParams(consumptionRequest)) { - //先获取这个业务关联的扣费记录 - List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); - //1.先检查是否已经扣费 - if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.DEDUCTION)) { - //2.没有扣费,检查是否已经预扣费 - if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { - //3.没有预扣,查询余额 - Map<String,Object> vateMap=VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId()); - if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) { - //4.余额充足 获取要扣的套餐 写预扣费记录 - if (!beforeConsumption(consumptionRequest)) { - //预扣费执行失败 - reMsg = "预扣费执行失败!"; - bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; - return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); - } - else - { - //发起了一个新的预扣,需要更新扣费业务数据列表 - consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); - } - } else { - //余额不足 - reMsg = vateMap.get("vateMsg").toString(); - bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; - return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); - } + //是否开通单次支付 + if (departmentIsPay(consumptionRequest)) + { + //是否支付成功 + if (departmentPayStatus(consumptionRequest)) { + //预扣费成功 + reMsg = "单次支付模拟已经扣费成功!"; + bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; + //消息队列通知 + MessageToBI(consumptionRequest); + } else { + reMsg = "单次支付未成功,不允许业务进行!"; + bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; } - //扣费业务 - isSuccess= consumptionBusiess(consumptionRequest,consumptionRecordList); - if (isSuccess) { + } + else { + //先获取这个业务关联的扣费记录 + List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); + //1.先检查是否已经扣费 + if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.DEDUCTION)) { + //2.没有扣费,检查是否已经预扣费 + if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { + //3.没有预扣,查询余额 + Map<String, Object> vateMap = VateUserNowProduct(consumptionRequest.getConsumptionCount(), consumptionRequest.getHospitalId(), consumptionRequest.getDepartmentId()); + if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) { + //4.余额充足 获取要扣的套餐 写预扣费记录 + if (!beforeConsumption(consumptionRequest)) { + //预扣费执行失败 + reMsg = "预扣费执行失败!"; + bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; + return ResultReturn(consumptionRequest, bcode, ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); + } else { + //发起了一个新的预扣,需要更新扣费业务数据列表 + consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); + } + } else { + //余额不足 + reMsg = vateMap.get("vateMsg").toString(); + bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; + return ResultReturn(consumptionRequest, bcode, ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); + } + } + //扣费业务 + isSuccess = consumptionBusiess(consumptionRequest, consumptionRecordList); + if (isSuccess) { + reMsg = "该业务已经扣费!"; + bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; + } else { + reMsg = "该业务扣费失败!"; + bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; + } + } else { + isSuccess = true; + //已经扣费 reMsg = "该业务已经扣费!"; bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; } - else - { - reMsg = "该业务扣费失败!"; - bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; - } - } else { - isSuccess = true; - //已经扣费 - reMsg = "该业务已经扣费!"; - bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; } } else { reMsg = "传入参数有误!"; bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } - return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess); + return ResultReturn(consumptionRequest, bcode, recordType, reMsg, isSuccess); } /** * 扣费业务(扣费 更新预扣 写扣费记录) + * * @param consumptionRequest 请求参数 * @param consumptionRecordList 扣费业务数据 * @return @@ -443,7 +490,7 @@ productOrderDetail.setAilightCount(productOrderDetail.getAilightCount() - consumptionRequest.getConsumptionCount()); } else { //要是被别人已经用了,就要重新找套餐 - productOrderDetail = deductionDepartmentProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId()); + productOrderDetail = deductionDepartmentProduct(consumptionRequest.getConsumptionCount(), consumptionRequest.getHospitalId(), consumptionRequest.getDepartmentId()); if (productOrderDetail == null) { logger.info("业务编号:【{}】无可用套餐!", consumptionRequest.getBusinessId()); return false; @@ -464,6 +511,7 @@ consumptionRecordNew.setRecordType(ConsumptionConstant.DEDUCTION); consumptionRecordNew.setProOrderDetailId(productOrderDetail.getId()); consumptionRecordNew.setLastRecordId(consumptionRecord.getId()); + consumptionRecordNew.setDiaId(consumptionRequest.getDiaId()); consumptionRecordNew.setCreateTime(new Date()); if (SaveConsumptionRecord(consumptionRecordNew)) { @@ -498,7 +546,7 @@ * @param isSuccess 业务执行是否成功 * @return */ - private ResultBody ResultReturn(ConsumptionRequest consumptionRequest, int bcode,int recordType, String reMsg, boolean isSuccess) { + private ResultBody ResultReturn(ConsumptionRequest consumptionRequest, int bcode, int recordType, String reMsg, boolean isSuccess) { //返回的数据实体 ConsumptionVo consumptionVo = new ConsumptionVo(); consumptionVo.setConsumptionCount(consumptionRequest.getConsumptionCount()); @@ -514,11 +562,12 @@ /** * 预扣费业务 + * * @param consumptionRequest 请求参数 * @return */ private Boolean beforeConsumption(ConsumptionRequest consumptionRequest) { - ProductOrderDetail productOrderDetail = deductionDepartmentProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId()); + ProductOrderDetail productOrderDetail = deductionDepartmentProduct(consumptionRequest.getConsumptionCount(), consumptionRequest.getHospitalId(), consumptionRequest.getDepartmentId()); if (productOrderDetail != null) { ConsumptionRecord consumptionRecord = new ConsumptionRecord(); consumptionRecord.setBusinessCode(ConsumptionConstant.BUSINESS_CODE_IS_BEFORE_DEDUCTION); @@ -526,6 +575,7 @@ consumptionRecord.setConsumptionCount(consumptionRequest.getConsumptionCount()); consumptionRecord.setRecordType(ConsumptionConstant.BEFORE_DEDUCTION); consumptionRecord.setProOrderDetailId(productOrderDetail.getId()); + consumptionRecord.setDiaId(consumptionRequest.getDiaId()); if (SaveConsumptionRecord(consumptionRecord)) { return true; } else { @@ -546,11 +596,13 @@ String hosId = consumptionRequest.getHospitalId().toString(); String depId = consumptionRequest.getDepartmentId().toString(); String doctorId = consumptionRequest.getDoctorId().toString(); + String diaId = consumptionRequest.getDiaId().toString(); if (StringUtils.isNotBlank(consumptionRequest.getBusinessId()) && consumptionRequest.getConsumptionCount() > 0 && StringUtils.isNotBlank(hosId) && StringUtils.isNotBlank(depId) - && StringUtils.isNotBlank(doctorId)) { + && StringUtils.isNotBlank(doctorId) + && StringUtils.isNotBlank(diaId)) { return true; } else { logger.info("扣费请求参数不完整!"); @@ -563,32 +615,33 @@ /** * 检查余额够不够 + * * @param consumptionCount 要扣的数量 * @return */ - private Map<String,Object> VateUserNowProduct(int consumptionCount,Long hospitalId,Long departmentId) { - Map<String,Object> returnMap=new HashMap<>(); + private Map<String, Object> VateUserNowProduct(int consumptionCount, Long hospitalId, Long departmentId) { + Map<String, Object> returnMap = new HashMap<>(); ResultBody biUserPro = productOrderDetailService.biUserNowProduct(hospitalId, departmentId); if (biUserPro.getCode() == 0) { if (StringUtils.isNotBlank(biUserPro.getData().toString())) { //余额 int userAICount = Integer.parseInt(biUserPro.getData().toString()); if (userAICount >= consumptionCount) { - returnMap.put("vateRe",true); - returnMap.put("vateMsg","余额足够!"); + returnMap.put("vateRe", true); + returnMap.put("vateMsg", "余额足够!"); } else { - returnMap.put("vateRe",false); - returnMap.put("vateMsg","余额不足!"); + returnMap.put("vateRe", false); + returnMap.put("vateMsg", "余额不足!"); logger.info("医院id:【{}】余额不足!", hospitalId); } } else { - returnMap.put("vateRe",false); - returnMap.put("vateMsg","余额获取异常,data为空!"); + returnMap.put("vateRe", false); + returnMap.put("vateMsg", "余额获取异常,data为空!"); logger.error("医院id:【{}】余额获取异常!", hospitalId); } - }else { - returnMap.put("vateRe",false); - returnMap.put("vateMsg","余额获取异常,Code非0!"); + } else { + returnMap.put("vateRe", false); + returnMap.put("vateMsg", "余额获取异常,Code非0!"); logger.info("医院id:【{}】余额获取异常,返回非0!", hospitalId); } return returnMap; @@ -596,10 +649,11 @@ /** * 获取要使用的套餐实体 - * @param consumCount 要使用的数量 + * + * @param consumCount 要使用的数量 * @return */ - private ProductOrderDetail deductionDepartmentProduct(int consumCount,Long hospitalId,Long departmentId) { + private ProductOrderDetail deductionDepartmentProduct(int consumCount, Long hospitalId, Long departmentId) { UserProductDetail userProductDetail = productOrderDetailService.getUserProductDetail(hospitalId, departmentId); //合并集合 userProductDetail.getProductOrderJoinDetailListShare().addAll(userProductDetail.getProductOrderJoinDetailsListDep()); @@ -643,7 +697,7 @@ if (consumptionRecordList != null) { if (consumptionRecordList.size() > 0) { //过滤预扣费的记录 - return consumptionRecordList.stream().filter(f -> f.getRecordType() == recordType&&f.getProOrderDetailId()>0).collect(Collectors.toList()).size() == 1; + return consumptionRecordList.stream().filter(f -> f.getRecordType() == recordType && f.getProOrderDetailId() > 0).collect(Collectors.toList()).size() == 1; } } return false; @@ -651,7 +705,6 @@ /** * 获取一个业务关联的扣费记录 - * * @param businessId 光片的名称/编号 * @return */ @@ -680,18 +733,51 @@ /** * 发消息到消息队列 + * * @return */ //@RabbitListener(queues = "BoneAgeEvaluationData") - private void MessageToBI(ConsumptionRequest consumptionRequest) - { + private void MessageToBI(ConsumptionRequest consumptionRequest) { //发消息到队列 String context = "{\"hospitalId\":\"" + consumptionRequest.getHospitalId() + "\",\"departmentId\":\"" + consumptionRequest.getDepartmentId() + "\",\"doctorId\":\"" + consumptionRequest.getDoctorId() + - "\",\"date\":\"" + DateUtils.formatDate(new Date(),"yyyy-MM-dd")+"\"}"; - rabbitTemplate.convertAndSend(ConsumptionConstant.EXCHANGE_DATA, ConsumptionConstant.ROUTINGKEY_DATA+envName, context); + "\",\"date\":\"" + DateUtils.formatDate(new Date(), "yyyy-MM-dd") + "\"}"; + rabbitTemplate.convertAndSend(ConsumptionConstant.EXCHANGE_DATA, ConsumptionConstant.ROUTINGKEY_DATA + envName, context); - log.error("骨龄评价扣费消息已发送:"+context); + log.error("骨龄评价扣费消息已发送:" + context); + } + + /** + * 查看当前科室是否开通了单次支付 + * + * @param consumptionRequest + * @return + */ + private Boolean departmentIsPay(ConsumptionRequest consumptionRequest) { + PayManager payManager = payManagerService.findByObject(consumptionRequest.getHospitalId(), consumptionRequest.getDepartmentId()); + if (payManager == null) { + return false; + } else { + return payManager.getId() > 0; + } + } + + /** + * 查看当前科室当前诊断id的支付状态是否成功 + * + * @param consumptionRequest + * @return + */ + private Boolean departmentPayStatus(ConsumptionRequest consumptionRequest) { + SaasClientPay saasClientPay = saasClientPayService.findModelByObject(consumptionRequest.getHospitalId(), consumptionRequest.getDepartmentId(), consumptionRequest.getDiaId()); + if (saasClientPay == null) { + return false; + } else { + if (saasClientPay.getPayStatus().equals(PayConstants.ORDER_PAY_SUCEESS)) { + return true; + } + } + return false; } } -- Gitblit v1.8.0