forked from kidgrow-microservices-platform

houruijun
2020-08-25 4fa3c68a3526dd366638a6aa3020ce9c1ede22d4
kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/ProductOrderDetailServiceImpl.java
@@ -19,6 +19,7 @@
import com.kidgrow.usercenter.model.SysHospital;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cglib.beans.BeanCopier;
import org.springframework.stereotype.Service;
@@ -169,6 +170,18 @@
    public List<OrderChartVo> proCountChart() {
        return baseMapper.proCountChart();
    }
    /**
     *获取该科室下的所有的套餐信息
     * @param params
     * @return
     */
    @Override
    public PageResult<ProductOrderDetail> departmentProductDetail(Map<String, Object> params) {
        Page<ProductOrderDetail> page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
        List<ProductOrderDetail> list  =
                baseMapper.departmentProductDetail(page, Long.parseLong(params.get("hospitalId").toString()),Long.parseLong(params.get("departmentId").toString()));
        return PageResult.<ProductOrderDetail>builder().data(list).code(0).count(page.getTotal()).build();
    }
    /**
     * 获取诊断列表
@@ -309,28 +322,40 @@
                //科室私有的数据
                List<ProductOrderJoinDetail> productOrderJoinDetailsListDep = userProductDetail.getProductOrderJoinDetailsListDep();
                //本医院可共享的读片总量
                int shareCount = productOrderJoinDetailListShare.stream().collect(Collectors.summingInt(ProductOrderJoinDetail::getAilightCount));
                int shareCount = (productOrderJoinDetailListShare.size()>0)?
                        productOrderJoinDetailListShare.stream().collect(Collectors.summingInt(ProductOrderJoinDetail::getAilightCount))
                        :0;
                //本科室私有读片总量
                int depCount = productOrderJoinDetailsListDep.stream().collect(Collectors.summingInt(ProductOrderJoinDetail::getAilightCount));
                int depCount = (productOrderJoinDetailsListDep.size()>0)?
                        productOrderJoinDetailsListDep.stream().collect(Collectors.summingInt(ProductOrderJoinDetail::getAilightCount))
                        :0;
                //可用的总量
                userAICount = shareCount + depCount;
                //共享套餐里面的detailid
                List<Long> shareDetailId = productOrderJoinDetailListShare.stream().map(m -> m.getId()).collect(Collectors.toList());
                List<Long> shareDetailId = (productOrderJoinDetailListShare.size()>0)
                        ?productOrderJoinDetailListShare.stream().map(m -> m.getId()).collect(Collectors.toList())
                        :new ArrayList<>();
                //私有套餐里面的detailid
                List<Long> depDetailId = productOrderJoinDetailsListDep.stream().map(m -> m.getId()).collect(Collectors.toList());
                List<Long> depDetailId = (productOrderJoinDetailsListDep.size()>0)
                        ?productOrderJoinDetailsListDep.stream().map(m -> m.getId()).collect(Collectors.toList())
                        :new ArrayList<>();
                //获取所有有效的套餐id
                List<Long> nowDetailList=shareDetailId;
                List<Long> nowDetailList=new ArrayList<>();
                BeanUtils.copyProperties(shareDetailId,nowDetailList);
                nowDetailList.addAll(depDetailId);
                //查询已预扣 未退还  未扣费的数据
                List<ConsumptionRecord> consumptionRecordList = consumptionRecordMapper.findDetailList(nowDetailList);
                //计算预扣费的总量
                if (consumptionRecordList.size() > 0) {
                    //共享套餐里面预扣费总数
                    int shareConCount = consumptionRecordList.stream().filter(f -> shareDetailId.contains(f.getProOrderDetailId())).collect(Collectors.summingInt(ConsumptionRecord::getConsumptionCount));
                    int shareConCount = (shareDetailId.size()>0)?consumptionRecordList.stream()
                            .filter(f -> shareDetailId.contains(f.getProOrderDetailId()))
                            .collect(Collectors.summingInt(ConsumptionRecord::getConsumptionCount)):0;
                    //私有套餐里面预扣费总数
                    int depConCount = consumptionRecordList.stream().filter(f -> depDetailId.contains(f.getProOrderDetailId())).collect(Collectors.summingInt(ConsumptionRecord::getConsumptionCount));
                    int depConCount = (depDetailId.size()>0)?consumptionRecordList.stream()
                            .filter(f -> depDetailId.contains(f.getProOrderDetailId()))
                            .collect(Collectors.summingInt(ConsumptionRecord::getConsumptionCount)):0;
                    userAICount -= (shareConCount + depConCount);
                }
            }