From e940b53f9d8fd9056aee2870e41a6e7932b2e8d6 Mon Sep 17 00:00:00 2001
From: houruijun <411269194@kidgrow.com>
Date: Mon, 24 Aug 2020 17:21:41 +0800
Subject: [PATCH] 1.修改获取余额的时候,将预扣费算作有效的bug 2.医院管理 增加了显示医院编号

---
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ConsumptionRecordServiceImpl.java  |   33 +++++++++++-----
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ConsumptionRecordMapper.xml                                    |   16 ++++++++
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html                                                                        |    1 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ConsumptionRecordMapper.java             |    6 +++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java |   21 ++++++----
 5 files changed, 57 insertions(+), 20 deletions(-)

diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ConsumptionRecordMapper.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ConsumptionRecordMapper.java
index 2b1214e..938143a 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ConsumptionRecordMapper.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/mapper/ConsumptionRecordMapper.java
@@ -37,4 +37,10 @@
      * @return
      */
     List<ConsumptionRecord> findList(@Param("p") Map<String, Object> params);
+    /**
+     * 查询有效预扣费
+     * @param DetailList 有效的套餐
+     * @return
+     */
+    List<ConsumptionRecord> findDetailList(List<Long> DetailList);
 }
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 bd63eb9..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
@@ -115,7 +115,8 @@
                 //2.没有扣费,检查是否已经预扣费
                 if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) {
                     //3.没有预扣,查询余额
-                    if (VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId())) {
+                    Map<String,Object> vateMap=VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId());
+                    if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) {
                         //4.余额充足 获取要扣的套餐 写预扣费记录
                         if (beforeConsumption(consumptionRequest)) {
                             //预扣费成功
@@ -128,9 +129,9 @@
                             bcode = ConsumptionConstant.BUSINESS_CODE_ERROR;
                         }
                     } else {
-                        //余额不足
+                        //余额不足 或获取异常
                         isSuccess = false;
-                        reMsg = "余额不足或获取失败!";
+                        reMsg = vateMap.get("vateMsg").toString();
                         bcode = ConsumptionConstant.BUSINESS_CODE_FAIL;
                     }
                 } else {
@@ -178,7 +179,8 @@
                 //2.没有扣费,检查是否已经预扣费
                 if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) {
                     //2.1.没有预扣,查询余额
-                    if (VateUserNowProduct(consumptionRequest.getConsumptionCount(),hospitalId,consumptionRequest.getDepartmentId())) {
+                    Map<String,Object> vateMap=VateUserNowProduct(consumptionRequest.getConsumptionCount(),hospitalId,consumptionRequest.getDepartmentId());
+                    if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) {
                         //2.2.余额充足 获取要扣的套餐 写预扣费记录
                         if (beforeConsumption(consumptionRequest)) {
                             //预扣费成功
@@ -193,7 +195,7 @@
                     } else {
                         //余额不足
                         isSuccess = false;
-                        reMsg = "余额不足或获取失败!";
+                        reMsg = vateMap.get("vateMsg").toString();
                         bcode = ConsumptionConstant.BUSINESS_CODE_FAIL;
                         return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess);
                     }
@@ -379,7 +381,8 @@
                 //2.没有扣费,检查是否已经预扣费
                 if (!isBeforeDeduction(consumptionRecordList, ConsumptionConstant.BEFORE_DEDUCTION)) {
                     //3.没有预扣,查询余额
-                    if (VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId())) {
+                    Map<String,Object> vateMap=VateUserNowProduct(consumptionRequest.getConsumptionCount(),consumptionRequest.getHospitalId(),consumptionRequest.getDepartmentId());
+                    if (Boolean.parseBoolean(vateMap.get("vateRe").toString())) {
                         //4.余额充足 获取要扣的套餐 写预扣费记录
                         if (!beforeConsumption(consumptionRequest)) {
                             //预扣费执行失败
@@ -394,7 +397,7 @@
                         }
                     } else {
                         //余额不足
-                        reMsg = "余额不足或获取失败!";
+                        reMsg = vateMap.get("vateMsg").toString();
                         bcode = ConsumptionConstant.BUSINESS_CODE_FAIL;
                         return ResultReturn(consumptionRequest, bcode,ConsumptionConstant.BEFORE_DEDUCTION, reMsg, isSuccess);
                     }
@@ -563,24 +566,32 @@
      * @param consumptionCount 要扣的数量
      * @return
      */
-    private Boolean VateUserNowProduct(int consumptionCount,Long hospitalId,Long departmentId) {
+    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;
     }
 
     /**
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java
index 413a1fa..9f7c20a 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java
@@ -2,7 +2,6 @@
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.kidgrow.common.constant.ConsumptionConstant;
 import com.kidgrow.common.model.*;
 import com.kidgrow.common.service.impl.SuperServiceImpl;
 import com.kidgrow.common.utils.DateUtils;
@@ -315,18 +314,22 @@
                 int depCount = productOrderJoinDetailsListDep.stream().collect(Collectors.summingInt(ProductOrderJoinDetail::getAilightCount));
                 //可用的总量
                 userAICount = shareCount + depCount;
+
+                //共享套餐里面的detailid
+                List<Long> shareDetailId = productOrderJoinDetailListShare.stream().map(m -> m.getId()).collect(Collectors.toList());
+                //私有套餐里面的detailid
+                List<Long> depDetailId = productOrderJoinDetailsListDep.stream().map(m -> m.getId()).collect(Collectors.toList());
+
+                //获取所有有效的套餐id
+                List<Long> nowDetailList=shareDetailId;
+                nowDetailList.addAll(depDetailId);
+                //查询已预扣 未退还  未扣费的数据
+                List<ConsumptionRecord> consumptionRecordList = consumptionRecordMapper.findDetailList(nowDetailList);
                 //计算预扣费的总量
-                Map<String, Object> selectMap = new HashMap<>();
-                selectMap.put("recordType", ConsumptionConstant.BEFORE_DEDUCTION);
-                List<ConsumptionRecord> consumptionRecordList = consumptionRecordMapper.findList(selectMap);;
                 if (consumptionRecordList.size() > 0) {
-                    //共享套餐里面的detailid
-                    List<Long> shareDetailId = productOrderJoinDetailListShare.stream().map(m -> m.getId()).collect(Collectors.toList());
-                    //私有套餐里面的detailid
-                    List<Long> depDetailId = productOrderJoinDetailsListDep.stream().map(m -> m.getId()).collect(Collectors.toList());
                     //共享套餐里面预扣费总数
                     int shareConCount = consumptionRecordList.stream().filter(f -> shareDetailId.contains(f.getProOrderDetailId())).collect(Collectors.summingInt(ConsumptionRecord::getConsumptionCount));
-                    //共享套餐里面预扣费总数
+                    //私有套餐里面预扣费总数
                     int depConCount = consumptionRecordList.stream().filter(f -> depDetailId.contains(f.getProOrderDetailId())).collect(Collectors.summingInt(ConsumptionRecord::getConsumptionCount));
                     userAICount -= (shareConCount + depConCount);
                 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ConsumptionRecordMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ConsumptionRecordMapper.xml
index 18f8617..2c00aa4 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ConsumptionRecordMapper.xml
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/ConsumptionRecordMapper.xml
@@ -60,4 +60,20 @@
         <include refid="where"/>
         order by id desc
     </select>
+    <!--定义根据-ConsumptionRecord当作查询条件返回对象集合-->
+    <select id="findDetailList" resultType="com.kidgrow.oprationcenter.model.ConsumptionRecord">
+        SELECT * FROM `consumption_record`
+        where record_type=1
+        and update_time is null
+        <where>
+            <if test="DetailList!=null and DetailList.size()>0">
+                and pro_order_detail_id in
+                <foreach item="item" index="index" collection="DetailList" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+        and pro_order_detail_id in (1,1)
+        order by id desc
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html
index eac4af8..dfffdb2 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/hospital.html
@@ -75,6 +75,7 @@
             headers: { 'Authorization': 'Bearer ' + config.getToken().access_token },
             page: true,
             cols: [[
+                { field: 'hospitalId', width: 180, title: '医院编号', fixed: 'left' },
                 { field: 'hospitalName', width: 250, title: '医院名称', fixed: 'left' },
                 { field: 'departmentName', width: 100, title: '科室/部门', fixed: 'left' },
                 {

--
Gitblit v1.8.0