From 3fd36846ad612f627c0784587dc6099a322a158e Mon Sep 17 00:00:00 2001
From: houruijun <411269194@kidgrow.com>
Date: Wed, 24 Jun 2020 18:55:09 +0800
Subject: [PATCH] 1.编写扣费业务4大接口(AI 调用前,失败退,调用后,人工读) 2.增加写mq消息队列 3.增加扣费业务相关全局静态值 4.调整扣费,套餐,套餐记录services里面的调用关系。

---
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java |   50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 50 insertions(+), 0 deletions(-)

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 7a2efd8..b508878 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,12 +2,15 @@
 
 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;
 import com.kidgrow.oprationcenter.feign.DiagnosticService;
 import com.kidgrow.oprationcenter.feign.RoleOrganizationService;
+import com.kidgrow.oprationcenter.mapper.ConsumptionRecordMapper;
 import com.kidgrow.oprationcenter.mapper.ProductOrderDetailMapper;
+import com.kidgrow.oprationcenter.model.ConsumptionRecord;
 import com.kidgrow.oprationcenter.model.ProductOrderDetail;
 import com.kidgrow.oprationcenter.service.IProductOrderDetailService;
 import com.kidgrow.oprationcenter.vo.DiagnosisRecord;
@@ -47,6 +50,8 @@
     private SysDoctorService sysDoctorService;
     @Autowired
     private SysHospitalService sysHospitalService;
+    @Autowired
+    private ConsumptionRecordMapper consumptionRecordMapper;
     /**
      * 列表
      * @param params
@@ -188,4 +193,49 @@
         }
         return null;
     }
+    /**
+     * 统计用户所有套餐剩余  套餐剩余量=(有效期内的医院所有共享+科室私有的套餐的读片量)-预扣费的读片量
+     *
+     * @param hospitalId
+     * @param departmentId
+     * @return
+     */
+    @Override
+    public ResultBody biUserNowProduct(Long hospitalId, Long departmentId) {
+        if (hospitalId > 0 && departmentId > 0) {
+            UserProductDetail userProductDetail=getUserProductDetail(hospitalId,departmentId);
+            int userAICount = 0;
+            if (userProductDetail!=null) {
+                //包含共享的数据
+                List<ProductOrderJoinDetail> productOrderJoinDetailListShare = userProductDetail.getProductOrderJoinDetailListShare();
+                //科室私有的数据
+                List<ProductOrderJoinDetail> productOrderJoinDetailsListDep = userProductDetail.getProductOrderJoinDetailsListDep();
+                //本医院可共享的读片总量
+                int shareCount = productOrderJoinDetailListShare.stream().collect(Collectors.summingInt(ProductOrderJoinDetail::getAilightCount));
+                //本科室私有读片总量
+                int depCount = productOrderJoinDetailsListDep.stream().collect(Collectors.summingInt(ProductOrderJoinDetail::getAilightCount));
+                //可用的总量
+                userAICount = shareCount + depCount;
+                //计算预扣费的总量
+                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);
+                }
+            }
+
+            return ResultBody.ok().data(userAICount);
+        } else {
+            return ResultBody.failed("医院和科室数据有误!");
+        }
+    }
 }

--
Gitblit v1.8.0