From d503c3d0f8be3670662f09b198faa000e14fed68 Mon Sep 17 00:00:00 2001
From: houruijun <411269194@kidgrow.com>
Date: Sat, 15 Aug 2020 12:27:25 +0800
Subject: [PATCH] 修改  获取h端用户列表 opration

---
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java |  176 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 107 insertions(+), 69 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..d23d235 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;
@@ -31,6 +30,9 @@
 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,6 @@
     private RabbitTemplate rabbitTemplate;
 
     private static final Logger logger = LoggerFactory.getLogger(ConsumptionRecordServiceImpl.class);
-
 
     /**
      * 列表
@@ -99,34 +100,35 @@
     public ResultBody consumptionAIStart(ConsumptionRequest consumptionRequest) {
         //默认的业务返回码
         int bcode = -1;
+        //记录类型
+        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())) {
+                    if (VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId())) {
                         //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,41 +161,47 @@
     public ResultBody consumptionAIReturn(ConsumptionRequest consumptionRequest) {
         //默认的业务返回码
         int bcode = -1;
+        //记录类型
+        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())) {
+                    if (VateUserNowProduct(consumptionRequest.getConsumptionCount(),hospitalId,consumptionRequest.getDepartmentId())) {
                         //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 = "余额不足或获取失败!";
                         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,29 +373,44 @@
         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())) {
+                    if (VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId())) {
                         //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 = "余额不足或获取失败!";
                         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);
     }
 
     /**
@@ -398,7 +439,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;
@@ -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
@@ -430,7 +472,7 @@
                     }
                 }
                 //消息队列通知
-                MessageToBI();
+                MessageToBI(consumptionRequest);
                 //已经扣费
                 logger.info("业务编号:【{}】该业务已经扣费!", consumptionRequest.getBusinessId());
                 return true;
@@ -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 {
@@ -472,9 +514,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);
@@ -485,10 +525,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;
     }
@@ -499,12 +539,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("扣费请求参数不完整!");
@@ -520,9 +562,7 @@
      * @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 Boolean VateUserNowProduct(int consumptionCount,Long hospitalId,Long departmentId) {
         ResultBody biUserPro = productOrderDetailService.biUserNowProduct(hospitalId, departmentId);
         if (biUserPro.getCode() == 0) {
             if (StringUtils.isNotBlank(biUserPro.getData().toString())) {
@@ -547,9 +587,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());
@@ -572,6 +610,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 +631,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;
@@ -630,15 +671,12 @@
      * @return
      */
     @RabbitListener(queues = "BoneAgeEvaluationData")
-    private void MessageToBI()
+    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);
     }

--
Gitblit v1.8.0