From 20210ee1c0101cb9741e04592ae3daa419663c89 Mon Sep 17 00:00:00 2001
From: houruijun <411269194@kidgrow.com>
Date: Mon, 29 Jun 2020 16:20:48 +0800
Subject: [PATCH] 1.调整套餐信息查询接口 2.调整医生信息接口 3.调整获取医生列表接口

---
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java |   87 ++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 76 insertions(+), 11 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..fd3bbaf 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,18 +2,17 @@
 
 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;
-import com.kidgrow.oprationcenter.vo.GroupProductDetail;
-import com.kidgrow.oprationcenter.vo.ProductOrderJoinDetail;
-import com.kidgrow.oprationcenter.vo.UserProductDetail;
+import com.kidgrow.oprationcenter.vo.*;
 import com.kidgrow.usercenter.feign.SysDoctorService;
 import com.kidgrow.usercenter.feign.SysHospitalService;
 import com.kidgrow.usercenter.model.SysHospital;
@@ -22,10 +21,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -42,11 +38,11 @@
    @Autowired
     DiagnosticService diagnosticService;
     @Autowired
-    private RoleOrganizationService roleOrganizationService;
-    @Autowired
     private SysDoctorService sysDoctorService;
     @Autowired
     private SysHospitalService sysHospitalService;
+    @Autowired
+    private ConsumptionRecordMapper consumptionRecordMapper;
     /**
      * 列表
      * @param params
@@ -68,6 +64,30 @@
         return baseMapper.findAllList(params);
     }
 
+    /**
+     * 判定医院科室的套餐是否到期 以及到期时间
+     * @param hospitalId
+     * @param departmentId
+     * @return
+     */
+    public ResultBody UserProductDetailData(Long hospitalId,Long departmentId)
+    {
+        UserProductData userProductData=new UserProductData();
+        userProductData.setEnd(true);
+        UserProductDetail userProductDetail = this.getUserProductDetail(hospitalId, departmentId);
+        if (userProductDetail != null) {
+            //合并集合
+            userProductDetail.getProductOrderJoinDetailListShare().addAll(userProductDetail.getProductOrderJoinDetailsListDep());
+            List<ProductOrderJoinDetail> productOrderJoinDetailList = userProductDetail.getProductOrderJoinDetailListShare();
+            if (productOrderJoinDetailList.size() > 0) {
+                userProductData.setEnd(false);
+                //合并后按id排序并筛除已用完的套餐
+                List<ProductOrderJoinDetail> productOrderJoinDetailsNewList = productOrderJoinDetailList.stream().filter(f -> f.getAilightCount() >= 0).sorted(Comparator.comparing(ProductOrderJoinDetail::getProEndtime).reversed()).collect(Collectors.toList());
+                userProductData.setMaxEndTime(productOrderJoinDetailsNewList.get(0).getProEndtime());
+            }
+        }
+        return ResultBody.ok().data(userProductData);
+    }
     /**
      * 获取诊断列表
      * @param params
@@ -188,4 +208,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