From 3c12ba7572c436c32cd3700c4b4a8c2285c691fa Mon Sep 17 00:00:00 2001
From: houruijun <411269194@kidgrow.com>
Date: Tue, 23 Jun 2020 19:27:14 +0800
Subject: [PATCH] 1.增加扣费业务相关的生成代码 2.扣费相关业务接口 3.修改登录后获取基本信息接口

---
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderRecordServiceImpl.java |  129 ++++++++++++++++++++++++++-----------------
 1 files changed, 78 insertions(+), 51 deletions(-)

diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderRecordServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderRecordServiceImpl.java
index be5ea2e..63c5f83 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderRecordServiceImpl.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderRecordServiceImpl.java
@@ -2,18 +2,22 @@
 
 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.ProductOrderRecordMapper;
+import com.kidgrow.oprationcenter.model.ConsumptionRecord;
 import com.kidgrow.oprationcenter.model.ProductOrderRecord;
+import com.kidgrow.oprationcenter.service.IConsumptionRecordService;
 import com.kidgrow.oprationcenter.service.IProductOrderDetailService;
 import com.kidgrow.oprationcenter.service.IProductOrderRecordService;
 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.usercenter.feign.SysDoctorService;
 import com.kidgrow.usercenter.feign.SysHospitalService;
 import com.kidgrow.usercenter.model.SysHospital;
@@ -30,16 +34,17 @@
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @version 1.0
  * @Description: 产品/明显的充值记录<br>
  * @Project: 用户中心<br>
  * @CreateDate: Created in 2020-04-01 09:37:05 <br>
  * @Author: <a href="4345453@kidgrow.com">liuke</a>
- * @version 1.0
  */
 @Slf4j
 @Service
 public class ProductOrderRecordServiceImpl extends SuperServiceImpl<ProductOrderRecordMapper, ProductOrderRecord> implements IProductOrderRecordService {
-   @Autowired
+    @Autowired
     DiagnosticService diagnosticService;
     @Autowired
     private RoleOrganizationService roleOrganizationService;
@@ -49,29 +54,36 @@
     private SysHospitalService sysHospitalService;
     @Autowired
     private IProductOrderDetailService productOrderDetailService;
+    @Autowired
+    private IConsumptionRecordService consumptionRecordService;
+
     /**
      * 列表
+     *
      * @param params
      * @return
      */
     @Override
-    public PageResult<ProductOrderRecord> findList(Map<String, Object> params){
+    public PageResult<ProductOrderRecord> findList(Map<String, Object> params) {
         Page<ProductOrderRecord> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
-        List<ProductOrderRecord> list  =  baseMapper.findList(page, params);
+        List<ProductOrderRecord> list = baseMapper.findList(page, params);
         return PageResult.<ProductOrderRecord>builder().data(list).code(0).count(page.getTotal()).build();
     }
 
     /**
      * 获取诊断列表
+     *
      * @param params
      * @return
      */
     @Override
-    public PageResult<DiagnosisRecord> findAllDataList(Map<String, Object> params){
-        return  diagnosticService.getDiagnosticItemList(params).getData();
+    public PageResult<DiagnosisRecord> findAllDataList(Map<String, Object> params) {
+        return diagnosticService.getDiagnosticItemList(params).getData();
     }
+
     /**
      * 列表
+     *
      * @param params
      * @return
      */
@@ -80,67 +92,82 @@
         Page<ProductOrderJoinDetail> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
         Map<String, Object> roleOrgMap = roleOrganizationService.getRoleOrgMap(sysUser.getRoles());
         params.putAll(roleOrgMap);
-        List<ProductOrderJoinDetail> list  =  baseMapper.findAllList(page,params);
+        List<ProductOrderJoinDetail> list = baseMapper.findAllList(page, params);
         return PageResult.<ProductOrderJoinDetail>builder().data(list).code(0).count(page.getTotal()).build();
     }
 
     /**
      * 获取统计数据
+     *
      * @param params
      * @return
      */
     @Override
     public PageResult<GroupProductDetail> groupList(Map<String, Object> params) {
         Page<GroupProductDetail> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
-        List<GroupProductDetail> list  =  baseMapper.groupProductDetail(page,params);
+        List<GroupProductDetail> list = baseMapper.groupProductDetail(page, params);
         return PageResult.<GroupProductDetail>builder().data(list).code(0).count(page.getTotal()).build();
     }
 
     /**
-     * 统计用户所有套餐剩余
+     * 统计用户所有套餐剩余  套餐剩余量=(有效期内的医院所有共享+科室私有的套餐的读片量)-预扣费的读片量
+     *
      * @param hospitalId
      * @param departmentId
      * @return
      */
     @Override
-    public ResultBody biUserNowProduct(long hospitalId, Long departmentId) {
-        if (hospitalId>0&& departmentId>0) {
-            //查询当前医院正在使用的套餐
-            Map<String,Object> selectMap=new HashMap<>();
-            selectMap.put("hospitalId",hospitalId);
-            List<ProductOrderJoinDetail>  productOrderDetailList=productOrderDetailService.findAllList(selectMap);
-            Long userAICount=0l;
-            if (productOrderDetailList.size()>0) {
+    public ResultBody biUserNowProduct(Long hospitalId, Long departmentId) {
+        if (hospitalId > 0 && departmentId > 0) {
+            UserProductDetail userProductDetail=productOrderDetailService.getUserProductDetail(hospitalId,departmentId);
+            int userAICount = 0;
+            if (userProductDetail!=null) {
                 //包含共享的数据
-                List<ProductOrderJoinDetail> productOrderJoinDetailListShare=productOrderDetailList.stream().filter(f->f.getIsShare()).collect(Collectors.toList());
+                List<ProductOrderJoinDetail> productOrderJoinDetailListShare = userProductDetail.getProductOrderJoinDetailListShare();
                 //科室私有的数据
-                List<ProductOrderJoinDetail> productOrderJoinDetailsListDep=productOrderDetailList.stream().filter((f->departmentId.equals(f.getDepartmentId())&&f.getIsShare()==false)).collect(Collectors.toList());
+                List<ProductOrderJoinDetail> productOrderJoinDetailsListDep = userProductDetail.getProductOrderJoinDetailsListDep();
                 //本医院可共享的读片总量
-                Long shareCount=productOrderJoinDetailListShare.stream().collect(Collectors.summingLong(ProductOrderJoinDetail::getAilightCount));
+                int shareCount = productOrderJoinDetailListShare.stream().collect(Collectors.summingInt(ProductOrderJoinDetail::getAilightCount));
                 //本科室私有读片总量
-                Long depCount=productOrderJoinDetailsListDep.stream().collect(Collectors.summingLong(ProductOrderJoinDetail::getAilightCount));
+                int depCount = productOrderJoinDetailsListDep.stream().collect(Collectors.summingInt(ProductOrderJoinDetail::getAilightCount));
                 //可用的总量
-                userAICount=shareCount+depCount;
+                userAICount = shareCount + depCount;
+                //计算预扣费的总量
+                Map<String, Object> selectMap = new HashMap<>();
+                selectMap.put("recordType", ConsumptionConstant.BEFORE_DEDUCTION);
+                List<ConsumptionRecord> consumptionRecordList = consumptionRecordService.findAllList(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
-        {
+        } else {
             return ResultBody.failed("医院和科室数据有误!");
         }
     }
-
     /**
-   * 根据ProductOrderRecord对象当做查询条件进行查询
-   * @param productOrderRecord
-   * @return ProductOrderRecord
-   */
+     * 根据ProductOrderRecord对象当做查询条件进行查询
+     *
+     * @param productOrderRecord
+     * @return ProductOrderRecord
+     */
     @Override
-    public ProductOrderRecord findByObject(ProductOrderRecord productOrderRecord){
+    public ProductOrderRecord findByObject(ProductOrderRecord productOrderRecord) {
         return baseMapper.findByObject(productOrderRecord);
     }
+
     /**
      * 修改数据状态 启用 禁用
+     *
      * @param params
      * @return
      */
@@ -162,46 +189,46 @@
     @Override
     public ResultBody getTypeByUser(SysUser sysUser) {
         List<SysOrganization> organizations = sysUser.getOrganizations();
-        if(organizations.size()>0){
+        if (organizations.size() > 0) {
             SysOrganization sysOrganization = organizations.get(0);
-            List<ProductOrderJoinDetail> list=baseMapper.getTypeByUser(sysOrganization.getId());
-            if (list.size()>0) {
+            List<ProductOrderJoinDetail> list = baseMapper.getTypeByUser(sysOrganization.getId());
+            if (list.size() > 0) {
                 ProductOrderJoinDetail productOrderJoinDetail = list.get(0);
                 //查询用户的真实姓名
-                Map<String,Object> selectMap=new HashMap<>();
-                selectMap.put("user_id",sysUser.getId());
+                Map<String, Object> selectMap = new HashMap<>();
+                selectMap.put("user_id", sysUser.getId());
                 ResultBody listByMap = sysDoctorService.getListByMap(selectMap);
                 List<SysDoctor> sysDoctors = JSON.parseArray(JSON.toJSONString(listByMap.getData()), SysDoctor.class);
-                String str="";
-                if(sysDoctors!=null&&sysDoctors.size()>0){
-                    str= sysDoctors.get(0).getDoctorName();
+                String str = "";
+                if (sysDoctors != null && sysDoctors.size() > 0) {
+                    str = sysDoctors.get(0).getDoctorName();
                 }
                 //查询医院的 logo
-                Map<String,Object> map=new HashMap<>();
-                map.put("id",sysOrganization.getId());
+                Map<String, Object> map = new HashMap<>();
+                map.put("id", sysOrganization.getId());
                 ResultBody allByMap = sysHospitalService.findAllByMap(map);
                 List<SysHospital> hospitals = JSON.parseArray(JSON.toJSONString(allByMap.getData()), SysHospital.class);
-                String logo="";
-                if(hospitals.size()>0){
+                String logo = "";
+                if (hospitals.size() > 0) {
                     logo = hospitals.get(0).getHospitalLogo();
                 }
-                Map<String,Object> mapVo=new HashMap<>();
-                mapVo.put("type",productOrderJoinDetail.getProType());
-                mapVo.put("realName",str);
+                Map<String, Object> mapVo = new HashMap<>();
+                mapVo.put("type", productOrderJoinDetail.getProType());
+                mapVo.put("realName", str);
                 //剩余时间
                 Date proEndtime = productOrderJoinDetail.getProEndtime();
-                Double surplusDay=DateUtils.getDays(proEndtime, new Date());
+                Double surplusDay = DateUtils.getDays(proEndtime, new Date());
                 int surplus = surplusDay.intValue();
-                mapVo.put("surplus",surplus);
-                mapVo.put("logo",logo);
+                mapVo.put("surplus", surplus);
+                mapVo.put("logo", logo);
                 //获取 售后服务工程师********不能从sysOrganization获取,从department获取
                /* mapVo.put("saleUserName",sysOrganization.getSaleUserName());
                 mapVo.put("saleUserTel",sysOrganization.getSaleUserTel());*/
                 return ResultBody.ok().data(mapVo);
-            }else {
+            } else {
                 return ResultBody.failed("该用户套餐已经失效");
             }
-        }else {
+        } else {
             return ResultBody.failed("该用户的组织已经失效");
         }
     }

--
Gitblit v1.8.0