From cc51b41fa3dd6c51eef9028fbbb72ec3e7139d74 Mon Sep 17 00:00:00 2001 From: zhaoxiaohao <279049017@qq.com> Date: Thu, 24 Sep 2020 14:10:14 +0800 Subject: [PATCH] 添加字段 --- kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java | 106 ++++++++++++++++++++++++++++++----------------------- 1 files changed, 60 insertions(+), 46 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 5026604..1a3955b 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,7 +2,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kidgrow.common.constant.ConsumptionConstant; -import com.kidgrow.common.constant.SecurityConstants; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.model.ResultBody; import com.kidgrow.common.service.impl.SuperServiceImpl; @@ -21,15 +20,18 @@ import org.apache.commons.collections4.MapUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import java.util.*; import java.util.stream.Collectors; + +//import org.springframework.amqp.rabbit.annotation.RabbitListener; +//import org.springframework.amqp.rabbit.core.RabbitTemplate; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> @@ -51,7 +53,8 @@ private RabbitTemplate rabbitTemplate; private static final Logger logger = LoggerFactory.getLogger(ConsumptionRecordServiceImpl.class); - + @Value("${spring.profiles.active}") + private String envName; /** * 列表 * @@ -101,34 +104,34 @@ //记录类型 int recordType=ConsumptionConstant.BEFORE_DEDUCTION; //业务执行结果 - boolean isSuccess = false; + boolean isSuccess = true; //业务执行结果信息 String reMsg = ""; 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)) { //3.没有预扣,查询余额 - if (VateUserNowProduct(consumptionRequest.getConsumptionCount())) { + Map<String,Object> vateMap=VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId()); + if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) { //4.余额充足 获取要扣的套餐 写预扣费记录 if (beforeConsumption(consumptionRequest)) { //预扣费成功 - isSuccess = true; reMsg = "预扣费成功!"; bcode = ConsumptionConstant.BUSINESS_CODE_IS_BEFORE_DEDUCTION; } else { //预扣费执行失败 + isSuccess = false; reMsg = "预扣费执行失败!"; bcode = ConsumptionConstant.BUSINESS_CODE_ERROR; } } else { - //余额不足 - reMsg = "余额不足或获取失败!"; + //余额不足 或获取异常 + isSuccess = false; + reMsg = vateMap.get("vateMsg").toString(); bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; } } else { @@ -142,6 +145,7 @@ bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; } } else { + isSuccess = false; reMsg = "传入参数有误!"; bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } @@ -162,42 +166,45 @@ //记录类型 int recordType=ConsumptionConstant.DEDUCTION; //业务执行结果 - boolean isSuccess = false; + boolean isSuccess = true; //业务执行结果信息 String reMsg = ""; 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)); + Long hospitalId = consumptionRequest.getHospitalId(); + //1.先检查是否已经扣费 if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.DEDUCTION)) { //2.没有扣费,检查是否已经预扣费 if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { //2.1.没有预扣,查询余额 - if (VateUserNowProduct(consumptionRequest.getConsumptionCount())) { + 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 { //余额不足 - reMsg = "余额不足或获取失败!"; + 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)) { - isSuccess = true; reMsg = "该业务扣费成功!"; bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; } else { + isSuccess = false; reMsg = "该业务扣费失败!"; bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; } @@ -207,6 +214,7 @@ bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; } } else { + isSuccess = false; reMsg = "传入参数有误!"; bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } @@ -255,6 +263,7 @@ consumptionRecordNew.setLastRecordId(consumptionRecord.getId()); if (SaveConsumptionRecord(consumptionRecordNew)) { + isSuccess=true; reMsg = "有预扣,写退还预扣成功!"; bcode = ConsumptionConstant.BUSINESS_CODE_RETURN_BEFORE_DEDUCTION; } @@ -372,7 +381,8 @@ //2.没有扣费,检查是否已经预扣费 if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) { //3.没有预扣,查询余额 - if (VateUserNowProduct(consumptionRequest.getConsumptionCount())) { + Map<String,Object> vateMap=VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId()); + if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) { //4.余额充足 获取要扣的套餐 写预扣费记录 if (!beforeConsumption(consumptionRequest)) { //预扣费执行失败 @@ -387,7 +397,7 @@ } } else { //余额不足 - reMsg = "余额不足或获取失败!"; + reMsg = vateMap.get("vateMsg").toString(); bcode = ConsumptionConstant.BUSINESS_CODE_FAIL; return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess); } @@ -404,6 +414,7 @@ bcode = ConsumptionConstant.BUSINESS_CODE_PARAMS_ERROR; } } else { + isSuccess = true; //已经扣费 reMsg = "该业务已经扣费!"; bcode = ConsumptionConstant.BUSINESS_CODE_IS_DEDUCTION; @@ -432,7 +443,7 @@ productOrderDetail.setAilightCount(productOrderDetail.getAilightCount() - consumptionRequest.getConsumptionCount()); } else { //要是被别人已经用了,就要重新找套餐 - productOrderDetail = deductionDepartmentProduct(consumptionRequest.getConsumptionCount()); + productOrderDetail = deductionDepartmentProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId()); if (productOrderDetail == null) { logger.info("业务编号:【{}】无可用套餐!", consumptionRequest.getBusinessId()); return false; @@ -465,7 +476,7 @@ } } //消息队列通知 - MessageToBI(); + MessageToBI(consumptionRequest); //已经扣费 logger.info("业务编号:【{}】该业务已经扣费!", consumptionRequest.getBusinessId()); return true; @@ -507,9 +518,7 @@ * @return */ private Boolean beforeConsumption(ConsumptionRequest consumptionRequest) { - Long hospitalId = Long.valueOf(httpServletRequest.getHeader(SecurityConstants.USER_HOSPITAL_ID_HEADER)); - Long departmentId = Long.valueOf(httpServletRequest.getHeader(SecurityConstants.USER_DEP_ID_HEADER)); - ProductOrderDetail productOrderDetail = deductionDepartmentProduct(consumptionRequest.getConsumptionCount()); + ProductOrderDetail productOrderDetail = deductionDepartmentProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId()); if (productOrderDetail != null) { ConsumptionRecord consumptionRecord = new ConsumptionRecord(); consumptionRecord.setBusinessCode(ConsumptionConstant.BUSINESS_CODE_IS_BEFORE_DEDUCTION); @@ -520,10 +529,10 @@ if (SaveConsumptionRecord(consumptionRecord)) { return true; } else { - logger.info("医院id:【{}】预扣费执行失败!", hospitalId); + logger.info("医院id:【{}】预扣费执行失败!", consumptionRequest.getHospitalId()); } } else { - logger.info("医院id:【{}】套餐获取失败!", hospitalId); + logger.info("医院id:【{}】套餐获取失败!", consumptionRequest.getHospitalId()); } return false; } @@ -534,12 +543,14 @@ private Boolean VateParams(ConsumptionRequest consumptionRequest) { if (consumptionRequest != null) { //从请求头获取医院和科室id - String hosId = httpServletRequest.getHeader(SecurityConstants.USER_HOSPITAL_ID_HEADER); - String depId = httpServletRequest.getHeader(SecurityConstants.USER_DEP_ID_HEADER); + String hosId = consumptionRequest.getHospitalId().toString(); + String depId = consumptionRequest.getDepartmentId().toString(); + String doctorId = consumptionRequest.getDoctorId().toString(); if (StringUtils.isNotBlank(consumptionRequest.getBusinessId()) && consumptionRequest.getConsumptionCount() > 0 && StringUtils.isNotBlank(hosId) - && StringUtils.isNotBlank(depId)) { + && StringUtils.isNotBlank(depId) + && StringUtils.isNotBlank(doctorId)) { return true; } else { logger.info("扣费请求参数不完整!"); @@ -555,26 +566,32 @@ * @param consumptionCount 要扣的数量 * @return */ - private Boolean VateUserNowProduct(int consumptionCount) { - Long hospitalId = Long.valueOf(httpServletRequest.getHeader(SecurityConstants.USER_HOSPITAL_ID_HEADER)); - Long departmentId = Long.valueOf(httpServletRequest.getHeader(SecurityConstants.USER_DEP_ID_HEADER)); + 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) { - return true; + returnMap.put("vateRe",true); + returnMap.put("vateMsg","余额足够!"); } else { + returnMap.put("vateRe",false); + returnMap.put("vateMsg","余额不足!"); logger.info("医院id:【{}】余额不足!", hospitalId); } } else { + returnMap.put("vateRe",false); + returnMap.put("vateMsg","余额获取异常,data为空!"); logger.error("医院id:【{}】余额获取异常!", hospitalId); } - } else { + }else { + returnMap.put("vateRe",false); + returnMap.put("vateMsg","余额获取异常,Code非0!"); logger.info("医院id:【{}】余额获取异常,返回非0!", hospitalId); } - return false; + return returnMap; } /** @@ -582,9 +599,7 @@ * @param consumCount 要使用的数量 * @return */ - private ProductOrderDetail deductionDepartmentProduct(int consumCount) { - Long hospitalId = Long.valueOf(httpServletRequest.getHeader(SecurityConstants.USER_HOSPITAL_ID_HEADER)); - Long departmentId = Long.valueOf(httpServletRequest.getHeader(SecurityConstants.USER_DEP_ID_HEADER)); + private ProductOrderDetail deductionDepartmentProduct(int consumCount,Long hospitalId,Long departmentId) { UserProductDetail userProductDetail = productOrderDetailService.getUserProductDetail(hospitalId, departmentId); //合并集合 userProductDetail.getProductOrderJoinDetailListShare().addAll(userProductDetail.getProductOrderJoinDetailsListDep()); @@ -667,17 +682,16 @@ * 发消息到消息队列 * @return */ - @RabbitListener(queues = "BoneAgeEvaluationData") - private void MessageToBI() + //@RabbitListener(queues = "BoneAgeEvaluationData") + private void MessageToBI(ConsumptionRequest consumptionRequest) { - Long hospitalId = Long.valueOf(httpServletRequest.getHeader(SecurityConstants.USER_HOSPITAL_ID_HEADER)); - Long departmentId = Long.valueOf(httpServletRequest.getHeader(SecurityConstants.USER_DEP_ID_HEADER)); - Long doctorId = Long.valueOf(httpServletRequest.getHeader(SecurityConstants.DOCTOR_ID_HEADER)); //发消息到队列 - String context = "{\"hospitalId\":\"" + hospitalId + - "\",\"departmentId\":\"" + departmentId + - "\",\"doctorId\":\"" + doctorId + + 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, context); + rabbitTemplate.convertAndSend(ConsumptionConstant.EXCHANGE_DATA, ConsumptionConstant.ROUTINGKEY_DATA+envName, context); + + log.error("骨龄评价扣费消息已发送:"+context); } } -- Gitblit v1.8.0