From 31de20695ac5fc8562c5922fcbe8729ae4e146a1 Mon Sep 17 00:00:00 2001 From: zhaoxiaohao <913652501@qq.com> Date: Mon, 29 Jun 2020 14:20:39 +0800 Subject: [PATCH] Merge branch 'dev' of http://192.168.2.240:7070/r/kidgrow-microservices-platform into dev --- kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java | 121 +++++++++++++++++++++++++++------------ 1 files changed, 83 insertions(+), 38 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 338dcf0..400c2ff 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 @@ -52,7 +52,6 @@ private static final Logger logger = LoggerFactory.getLogger(ConsumptionRecordServiceImpl.class); - /** * 列表 * @@ -99,8 +98,10 @@ public ResultBody consumptionAIStart(ConsumptionRequest consumptionRequest) { //默认的业务返回码 int bcode = -1; + //记录类型 + int recordType=ConsumptionConstant.BEFORE_DEDUCTION; //业务执行结果 - boolean isSuccess = false; + boolean isSuccess = true; //业务执行结果信息 String reMsg = ""; if (VateParams(consumptionRequest)) { @@ -117,16 +118,17 @@ //4.余额充足 获取要扣的套餐 写预扣费记录 if (beforeConsumption(consumptionRequest)) { //预扣费成功 - isSuccess = true; reMsg = "预扣费成功!"; bcode = ConsumptionConstant.BUSINESS_CODE_IS_BEFORE_DEDUCTION; } else { //预扣费执行失败 + isSuccess = false; reMsg = "预扣费执行失败!"; bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; } } else { //余额不足 + isSuccess = false; reMsg = "余额不足或获取失败!"; bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; } @@ -141,10 +143,11 @@ bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; } } else { + isSuccess = false; reMsg = "传入参数有误!"; bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } - return ResultReturn(consumptionRequest, bcode, reMsg, isSuccess); + return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess); } /** @@ -158,8 +161,10 @@ public ResultBody consumptionAIReturn(ConsumptionRequest consumptionRequest) { //默认的业务返回码 int bcode = -1; + //记录类型 + int recordType=ConsumptionConstant.DEDUCTION; //业务执行结果 - boolean isSuccess = false; + boolean isSuccess = true; //业务执行结果信息 String reMsg = ""; if (VateParams(consumptionRequest)) { @@ -179,20 +184,24 @@ 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 = "余额不足或获取失败!"; bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; + return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); } } if (consumptionBusiess(consumptionRequest, consumptionRecordList)) { - isSuccess = true; reMsg = "该业务扣费成功!"; bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; } else { + isSuccess = false; reMsg = "该业务扣费失败!"; bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; } @@ -202,10 +211,11 @@ bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; } } else { + isSuccess = false; reMsg = "传入参数有误!"; bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } - return ResultReturn(consumptionRequest, bcode, reMsg, isSuccess); + return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess); } /** @@ -219,6 +229,8 @@ public ResultBody consumptionAIFail(ConsumptionRequest consumptionRequest) { //默认的业务返回码 int bcode = -1; + //记录类型 + int recordType = ConsumptionConstant.RETURN_BEFORE_DEDUCTION; //业务执行结果 boolean isSuccess = false; //业务执行结果信息 @@ -226,14 +238,12 @@ if (VateParams(consumptionRequest)) { //先获取这个业务关联的扣费记录 List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); - Long hospitalId = Long.valueOf(httpServletRequest.getHeader(SecurityConstants.USER_HOSPITAL_ID_HEADER)); - Long departmentId = Long.valueOf(httpServletRequest.getHeader(SecurityConstants.USER_DEP_ID_HEADER)); //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).collect(Collectors.toList()).get(0); + 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); @@ -242,14 +252,15 @@ { //退预扣记录 ConsumptionRecord consumptionRecordNew = new ConsumptionRecord(); - consumptionRecordNew.setBusinessCode(ConsumptionConstant.RETURN_BEFORE_DEDUCTION); + consumptionRecordNew.setBusinessCode(ConsumptionConstant.BUSINESS_CODE_RETURN_BEFORE_DEDUCTION); consumptionRecordNew.setBusinessId(consumptionRequest.getBusinessId()); - consumptionRecordNew.setConsumptionCount(consumptionRequest.getConsumptionCount()); - consumptionRecordNew.setRecordType(ConsumptionConstant.DEDUCTION); + consumptionRecordNew.setConsumptionCount(0-consumptionRequest.getConsumptionCount()); + consumptionRecordNew.setRecordType(ConsumptionConstant.RETURN_BEFORE_DEDUCTION); consumptionRecordNew.setProOrderDetailId(tempProOrderDetailId); - consumptionRecordNew.setLastRecordId(consumptionRecord.getLastRecordId()); + consumptionRecordNew.setLastRecordId(consumptionRecord.getId()); if (SaveConsumptionRecord(consumptionRecordNew)) { + isSuccess=true; reMsg = "有预扣,写退还预扣成功!"; bcode = ConsumptionConstant.BUSINESS_CODE_RETURN_BEFORE_DEDUCTION; } @@ -270,7 +281,8 @@ bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; } } else { - //3.有扣费记录 + recordType=ConsumptionConstant.RETURN_DEDUCTION; + //3.有扣费记录 这种情况的流程,实际业务中不会出现,但理论上应该这样处理 //3.1 退还账户 //获取预扣的时候占住的套餐id ConsumptionRecord consumptionRecord = consumptionRecordList.stream().filter(f -> f.getRecordType() == ConsumptionConstant.DEDUCTION).collect(Collectors.toList()).get(0); @@ -283,24 +295,36 @@ //退费 boolean consumptionRe = productOrderDetailService.saveOrUpdate(productOrderDetail); if (consumptionRe) { - //退费成功 - //3.2 写退费记录 - ConsumptionRecord consumptionRecordNew = new ConsumptionRecord(); - consumptionRecordNew.setBusinessCode(ConsumptionConstant.BUSINESS_CODE_RETURN_DEDUCTION); - consumptionRecordNew.setBusinessId(consumptionRecord.getBusinessId()); - consumptionRecordNew.setConsumptionCount(consumptionRecord.getConsumptionCount()); - consumptionRecordNew.setRecordType(ConsumptionConstant.RETURN_DEDUCTION); - consumptionRecordNew.setProOrderDetailId(productOrderDetail.getId()); - consumptionRecordNew.setLastRecordId(consumptionRecord.getLastRecordId()); - if (SaveConsumptionRecord(consumptionRecordNew)) { - //写退费记录成功 - isSuccess=true; - reMsg = "退还扣费成功!"; - bcode = ConsumptionConstant.BUSINESS_CODE_RETURN_DEDUCTION; + //更新扣费记录 还回占用套餐 + 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; + } } else { - reMsg = "退还扣费失败!"; + //更新扣费失败 + reMsg = "更新扣费失败!"; bcode = ConsumptionConstant.BUSINESS_RUN_FAIL; } } @@ -327,7 +351,7 @@ reMsg = "传入参数有误!"; bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } - return ResultReturn(consumptionRequest, bcode, reMsg, isSuccess); + return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess); } /** @@ -340,6 +364,8 @@ public ResultBody consumptionArtificial(ConsumptionRequest consumptionRequest) { //默认的业务返回码 int bcode = -1; + //记录类型 + int recordType = ConsumptionConstant.DEDUCTION; //业务执行结果 boolean isSuccess = false; //业务执行结果信息 @@ -347,8 +373,6 @@ if (VateParams(consumptionRequest)) { //先获取这个业务关联的扣费记录 List<ConsumptionRecord> consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); - Long hospitalId = Long.valueOf(httpServletRequest.getHeader(SecurityConstants.USER_HOSPITAL_ID_HEADER)); - Long departmentId = Long.valueOf(httpServletRequest.getHeader(SecurityConstants.USER_DEP_ID_HEADER)); //1.先检查是否已经扣费 if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.DEDUCTION)) { //2.没有扣费,检查是否已经预扣费 @@ -360,16 +384,33 @@ //预扣费执行失败 reMsg = "预扣费执行失败!"; bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; + return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); + } + else + { + //发起了一个新的预扣,需要更新扣费业务数据列表 + consumptionRecordList = GetBusinessConsumptionList(consumptionRequest.getBusinessId()); } } else { //余额不足 reMsg = "余额不足或获取失败!"; 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; @@ -378,7 +419,7 @@ reMsg = "传入参数有误!"; bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } - return ResultReturn(consumptionRequest, bcode, reMsg, isSuccess); + return ResultReturn(consumptionRequest, bcode,recordType, reMsg, isSuccess); } /** @@ -418,7 +459,8 @@ consumptionRecordNew.setConsumptionCount(consumptionRequest.getConsumptionCount()); consumptionRecordNew.setRecordType(ConsumptionConstant.DEDUCTION); consumptionRecordNew.setProOrderDetailId(productOrderDetail.getId()); - consumptionRecordNew.setLastRecordId(consumptionRecord.getLastRecordId()); + consumptionRecordNew.setLastRecordId(consumptionRecord.getId()); + consumptionRecordNew.setCreateTime(new Date()); if (SaveConsumptionRecord(consumptionRecordNew)) { //3.3 扣费成功 如果套餐id变化,则更新预扣费的套餐id @@ -452,13 +494,13 @@ * @param isSuccess 业务执行是否成功 * @return */ - private ResultBody ResultReturn(ConsumptionRequest consumptionRequest, int bcode, 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()); consumptionVo.setBusinessId(consumptionRequest.getBusinessId()); consumptionVo.setBcode(bcode); - consumptionVo.setRecordType(ConsumptionConstant.BEFORE_DEDUCTION); + consumptionVo.setRecordType(recordType); if (isSuccess) { return ResultBody.ok().data(consumptionVo).msg(reMsg); } else { @@ -572,6 +614,9 @@ */ private Boolean SaveConsumptionRecord(ConsumptionRecord consumptionRecord) { if (consumptionRecord != null) { + if (consumptionRecord.getCreateTime() == null) { + consumptionRecord.setCreateTime(new Date()); + } return this.saveOrUpdate(consumptionRecord); } else { logger.info("扣费数据写入参数为空!"); @@ -590,7 +635,7 @@ if (consumptionRecordList != null) { if (consumptionRecordList.size() > 0) { //过滤预扣费的记录 - return consumptionRecordList.stream().filter(f -> f.getRecordType() == recordType).collect(Collectors.toList()).size() == 1; + return consumptionRecordList.stream().filter(f -> f.getRecordType() == recordType&&f.getProOrderDetailId()>0).collect(Collectors.toList()).size() == 1; } } return false; -- Gitblit v1.8.0