297 lines
16 KiB
Java
297 lines
16 KiB
Java
package com.example.caseData.service;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.example.caseData.dao.*;
|
|
import com.example.caseData.dto.caseClinicalArticle.CaseClinicalArticleDto;
|
|
import com.example.caseData.dto.index.GetIndexClinicalDto;
|
|
import com.example.caseData.dto.index.GetIndexExchangeDto;
|
|
import com.example.caseData.dto.index.RecommendDoctorDto;
|
|
import com.example.caseData.dto.index.RecommendHospitalDto;
|
|
import com.example.caseData.model.*;
|
|
import jakarta.annotation.Resource;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.util.List;
|
|
|
|
@Service
|
|
public class IndexService {
|
|
@Resource
|
|
private CaseClinicalArticleDao caseClinicalArticleDao;
|
|
|
|
@Resource
|
|
private CaseExchangeDao caseExchangeDao;
|
|
|
|
@Resource
|
|
private CaseClinicalArticleAuthorDao caseClinicalArticleAuthorDao;
|
|
|
|
@Resource
|
|
private CaseClinicalVideoDao caseClinicalVideoDao;
|
|
|
|
@Resource
|
|
private StatsCaseClinicalDao statsCaseClinicalDao;
|
|
|
|
@Resource
|
|
private StatsCaseClinicalHospitalDao statsCaseClinicalHospitalDao;
|
|
|
|
@Resource
|
|
private StatsCaseClinicalDoctorDao statsCaseClinicalDoctorDao;
|
|
|
|
@Resource
|
|
private CaseClinicalDoctorDao caseClinicalDoctorDao;
|
|
|
|
@Resource
|
|
private BasicHospitalDao basicHospitalDao;
|
|
|
|
@Resource
|
|
private CaseClinicalArticleLabelDao caseClinicalArticleLabelDao;
|
|
|
|
/**
|
|
* 获取首页数据-临床病例库
|
|
*/
|
|
public GetIndexClinicalDto GetIndexClinical(){
|
|
// 最新上线-2条
|
|
LambdaQueryWrapper<CaseClinicalArticleModel> caseClinicalArticleQueryWrapper = new LambdaQueryWrapper<>();
|
|
caseClinicalArticleQueryWrapper.eq(CaseClinicalArticleModel::getArticleStatus, 1) // 上线状态
|
|
.eq(CaseClinicalArticleModel::getDeleteStatus, 0) // 删除状态状态
|
|
.orderByDesc(CaseClinicalArticleModel::getPushDate) // 按发布时间倒序
|
|
.last("LIMIT 3"); // 只取2条记录
|
|
List<CaseClinicalArticleModel> latestArticles = caseClinicalArticleDao.selectList(caseClinicalArticleQueryWrapper);
|
|
for (CaseClinicalArticleModel article : latestArticles) {
|
|
// 查找作者
|
|
LambdaQueryWrapper<CaseClinicalArticleAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
|
|
authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, article.getArticleId());
|
|
List<CaseClinicalArticleAuthorModel> caseClinicalArticleAuthors = caseClinicalArticleAuthorDao.selectList(authorQueryWrapper);
|
|
for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) {
|
|
// 查询医生
|
|
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
|
|
|
|
// 查询医生所属医院
|
|
BasicHospitalModel basicHospital = basicHospitalDao.selectById(caseClinicalDoctor.getHospitalId());
|
|
caseClinicalDoctor.setBasicHospital(basicHospital);
|
|
|
|
author.setCaseClinicalDoctor(caseClinicalDoctor);
|
|
}
|
|
|
|
article.setAuthor(caseClinicalArticleAuthors);
|
|
|
|
// 查找标签
|
|
LambdaQueryWrapper<CaseClinicalArticleLabelModel> labelQueryWrapper = new LambdaQueryWrapper<>();
|
|
labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, article.getArticleId());
|
|
List<CaseClinicalArticleLabelModel> caseClinicalArticleLabels = caseClinicalArticleLabelDao.selectList(labelQueryWrapper);
|
|
article.setLabel(caseClinicalArticleLabels);
|
|
}
|
|
|
|
|
|
// 最多阅读-2条
|
|
caseClinicalArticleQueryWrapper = new LambdaQueryWrapper<>();
|
|
caseClinicalArticleQueryWrapper.eq(CaseClinicalArticleModel::getArticleStatus, 1) // 上线状态
|
|
.eq(CaseClinicalArticleModel::getDeleteStatus, 0) // 删除状态状态
|
|
.orderByDesc(CaseClinicalArticleModel::getReadNum) // 按阅读量倒序
|
|
.last("LIMIT 3"); // 只取2条记录
|
|
List<CaseClinicalArticleModel> mostReadArticles = caseClinicalArticleDao.selectList(caseClinicalArticleQueryWrapper);
|
|
for (CaseClinicalArticleModel article : mostReadArticles) {
|
|
// 根据文章ID查找作者
|
|
LambdaQueryWrapper<CaseClinicalArticleAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
|
|
authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, article.getArticleId());
|
|
List<CaseClinicalArticleAuthorModel> caseClinicalArticleAuthors = caseClinicalArticleAuthorDao.selectList(authorQueryWrapper);
|
|
for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) {
|
|
// 查询医生
|
|
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
|
|
|
|
// 查询医生所属医院
|
|
BasicHospitalModel basicHospital = basicHospitalDao.selectById(caseClinicalDoctor.getHospitalId());
|
|
caseClinicalDoctor.setBasicHospital(basicHospital);
|
|
|
|
author.setCaseClinicalDoctor(caseClinicalDoctor);
|
|
}
|
|
|
|
article.setAuthor(caseClinicalArticleAuthors);
|
|
|
|
// 查找标签
|
|
LambdaQueryWrapper<CaseClinicalArticleLabelModel> labelQueryWrapper = new LambdaQueryWrapper<>();
|
|
labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, article.getArticleId());
|
|
List<CaseClinicalArticleLabelModel> caseClinicalArticleLabels = caseClinicalArticleLabelDao.selectList(labelQueryWrapper);
|
|
article.setLabel(caseClinicalArticleLabels);
|
|
|
|
// 删除内容字段
|
|
article.setArticleContent("");
|
|
}
|
|
|
|
// 医院病例库推荐-2条
|
|
QueryWrapper<StatsCaseClinicalHospitalModel> statsCaseClinicalHospitalQueryWrapper = new QueryWrapper<>();
|
|
statsCaseClinicalHospitalQueryWrapper
|
|
.apply("article_num + video_num >= {0}", 10) // 添加条件
|
|
.orderByDesc("article_num + video_num") // 按文章数量倒序
|
|
.orderByDesc("last_push_date")
|
|
.last("LIMIT 3"); // 只取2条记录
|
|
List<StatsCaseClinicalHospitalModel> statsCaseClinicalHospitals = statsCaseClinicalHospitalDao.selectList(statsCaseClinicalHospitalQueryWrapper);
|
|
for (StatsCaseClinicalHospitalModel hospital : statsCaseClinicalHospitals) {
|
|
// 查询医院基础数据
|
|
BasicHospitalModel basicHospital = basicHospitalDao.selectById(hospital.getHospitalId());
|
|
hospital.setBasicHospital(basicHospital);
|
|
}
|
|
|
|
// 医生病例库推荐-2条
|
|
QueryWrapper<StatsCaseClinicalDoctorModel> statsCaseClinicalDoctorQueryWrapper = new QueryWrapper<>();
|
|
statsCaseClinicalDoctorQueryWrapper
|
|
.apply("article_num + video_num >= {0}", 5) // 添加条件
|
|
.orderByDesc("article_num + video_num") // 按文章数量倒序
|
|
.orderByDesc("last_push_date")
|
|
.last("LIMIT 3"); // 只取2条记录
|
|
List<StatsCaseClinicalDoctorModel> statsCaseClinicalDoctors = statsCaseClinicalDoctorDao.selectList(statsCaseClinicalDoctorQueryWrapper);
|
|
for (StatsCaseClinicalDoctorModel doctor : statsCaseClinicalDoctors) {
|
|
// 查询医生数据
|
|
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(doctor.getDoctorId());
|
|
|
|
// 查询医生所属医院
|
|
BasicHospitalModel basicHospital = basicHospitalDao.selectById(caseClinicalDoctor.getHospitalId());
|
|
caseClinicalDoctor.setBasicHospital(basicHospital);
|
|
|
|
doctor.setCaseClinicalDoctor(caseClinicalDoctor);
|
|
}
|
|
|
|
// 处理返回值
|
|
GetIndexClinicalDto g = new GetIndexClinicalDto();
|
|
|
|
// 最新上线-2条
|
|
g.setNewArticles(CaseClinicalArticleDto.GetListDto(latestArticles));
|
|
|
|
// 最多阅读-2条
|
|
g.setMostReadArticles(CaseClinicalArticleDto.GetListDto(mostReadArticles));
|
|
|
|
// 医院病例库推荐-2条
|
|
g.setRecommendHospital(RecommendHospitalDto.GetListDto(statsCaseClinicalHospitals));
|
|
|
|
// 医生病例库推荐-2条
|
|
g.setRecommendDoctor(RecommendDoctorDto.GetListDto(statsCaseClinicalDoctors));
|
|
return g;
|
|
}
|
|
|
|
// /**
|
|
// * 获取首页数据-病例交流
|
|
// */
|
|
// public GetIndexExchangeDto GetIndexExchange(){
|
|
// // 精选-3条
|
|
// LambdaQueryWrapper<CaseExchangeModel> selectedQueryWrapper = new LambdaQueryWrapper<>();
|
|
// selectedQueryWrapper.eq(CaseExchangeModel::getExchangeStatus, 1) // 上线状态
|
|
// .eq(CaseExchangeModel::getIsSelected, 1)
|
|
// .orderByDesc(CaseExchangeModel::getCreatedAt) // 按发布时间倒序
|
|
// .last("LIMIT 3"); // 只取2条记录
|
|
// List<CaseExchangeModel> selectedExchanges = caseExchangeDao.selectList(selectedQueryWrapper);
|
|
//
|
|
// // 最新收录-分页
|
|
//
|
|
//
|
|
//
|
|
// // 最新上线-2条
|
|
// LambdaQueryWrapper<CaseClinicalArticleModel> caseClinicalArticleQueryWrapper = new LambdaQueryWrapper<>();
|
|
// caseClinicalArticleQueryWrapper.eq(CaseClinicalArticleModel::getArticleStatus, 1) // 上线状态
|
|
// .orderByDesc(CaseClinicalArticleModel::getCreatedAt) // 按发布时间倒序
|
|
// .last("LIMIT 2"); // 只取2条记录
|
|
// List<CaseClinicalArticleModel> latestArticles = caseClinicalArticleDao.selectList(caseClinicalArticleQueryWrapper);
|
|
// for (CaseClinicalArticleModel article : latestArticles) {
|
|
// // 查找作者
|
|
// LambdaQueryWrapper<CaseClinicalArticleAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
|
|
// authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, article.getArticleId());
|
|
// List<CaseClinicalArticleAuthorModel> caseClinicalArticleAuthors = caseClinicalArticleAuthorDao.selectList(authorQueryWrapper);
|
|
// for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) {
|
|
// // 查询医生
|
|
// CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
|
|
//
|
|
// // 查询医生所属医院
|
|
// BasicHospitalModel basicHospital = basicHospitalDao.selectById(caseClinicalDoctor.getHospitalId());
|
|
// caseClinicalDoctor.setBasicHospital(basicHospital);
|
|
//
|
|
// author.setCaseClinicalDoctor(caseClinicalDoctor);
|
|
// }
|
|
//
|
|
// article.setAuthor(caseClinicalArticleAuthors);
|
|
//
|
|
// // 查找标签
|
|
// LambdaQueryWrapper<CaseClinicalArticleLabelModel> labelQueryWrapper = new LambdaQueryWrapper<>();
|
|
// labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, article.getArticleId());
|
|
// List<CaseClinicalArticleLabelModel> caseClinicalArticleLabels = caseClinicalArticleLabelDao.selectList(labelQueryWrapper);
|
|
// article.setLabel(caseClinicalArticleLabels);
|
|
// }
|
|
//
|
|
//
|
|
// // 最多阅读-2条
|
|
// caseClinicalArticleQueryWrapper = new LambdaQueryWrapper<>();
|
|
// caseClinicalArticleQueryWrapper.eq(CaseClinicalArticleModel::getArticleStatus, 1) // 上线状态
|
|
// .orderByDesc(CaseClinicalArticleModel::getReadNum) // 按阅读量倒序
|
|
// .last("LIMIT 2"); // 只取2条记录
|
|
// List<CaseClinicalArticleModel> mostReadArticles = caseClinicalArticleDao.selectList(caseClinicalArticleQueryWrapper);
|
|
// for (CaseClinicalArticleModel article : mostReadArticles) {
|
|
// // 根据文章ID查找作者
|
|
// LambdaQueryWrapper<CaseClinicalArticleAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
|
|
// authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, article.getArticleId());
|
|
// List<CaseClinicalArticleAuthorModel> caseClinicalArticleAuthors = caseClinicalArticleAuthorDao.selectList(authorQueryWrapper);
|
|
// for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) {
|
|
// // 查询医生
|
|
// CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
|
|
//
|
|
// // 查询医生所属医院
|
|
// BasicHospitalModel basicHospital = basicHospitalDao.selectById(caseClinicalDoctor.getHospitalId());
|
|
// caseClinicalDoctor.setBasicHospital(basicHospital);
|
|
//
|
|
// author.setCaseClinicalDoctor(caseClinicalDoctor);
|
|
// }
|
|
//
|
|
// article.setAuthor(caseClinicalArticleAuthors);
|
|
//
|
|
// // 查找标签
|
|
// LambdaQueryWrapper<CaseClinicalArticleLabelModel> labelQueryWrapper = new LambdaQueryWrapper<>();
|
|
// labelQueryWrapper.eq(CaseClinicalArticleLabelModel::getArticleId, article.getArticleId());
|
|
// List<CaseClinicalArticleLabelModel> caseClinicalArticleLabels = caseClinicalArticleLabelDao.selectList(labelQueryWrapper);
|
|
// article.setLabel(caseClinicalArticleLabels);
|
|
//
|
|
// // 删除内容字段
|
|
// article.setArticleContent("");
|
|
// }
|
|
//
|
|
// // 医院病例库推荐-2条
|
|
// LambdaQueryWrapper<StatsCaseClinicalHospitalModel> statsCaseClinicalHospitalModelQueryWrapper = new LambdaQueryWrapper<>();
|
|
// statsCaseClinicalHospitalModelQueryWrapper.orderByDesc(StatsCaseClinicalHospitalModel::getArticleNum) // 按文章数量倒序
|
|
// .last("LIMIT 2"); // 只取2条记录
|
|
// List<StatsCaseClinicalHospitalModel> statsCaseClinicalHospitals = statsCaseClinicalHospitalDao.selectList(statsCaseClinicalHospitalModelQueryWrapper);
|
|
// for (StatsCaseClinicalHospitalModel hospital : statsCaseClinicalHospitals) {
|
|
// // 查询医院基础数据
|
|
// BasicHospitalModel basicHospital = basicHospitalDao.selectById(hospital.getHospitalId());
|
|
// hospital.setBasicHospital(basicHospital);
|
|
// }
|
|
//
|
|
// // 医生病例库推荐-2条
|
|
// LambdaQueryWrapper<StatsCaseClinicalDoctorModel> statsCaseClinicalDoctorModelQueryWrapper = new LambdaQueryWrapper<>();
|
|
// statsCaseClinicalDoctorModelQueryWrapper.orderByDesc(StatsCaseClinicalDoctorModel::getArticleNum) // 按文章数量倒序
|
|
// .last("LIMIT 2"); // 只取2条记录
|
|
// List<StatsCaseClinicalDoctorModel> statsCaseClinicalDoctors = statsCaseClinicalDoctorDao.selectList(statsCaseClinicalDoctorModelQueryWrapper);
|
|
// for (StatsCaseClinicalDoctorModel doctor : statsCaseClinicalDoctors) {
|
|
// // 查询医生数据
|
|
// CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(doctor.getDoctorId());
|
|
//
|
|
// // 查询医生所属医院
|
|
// BasicHospitalModel basicHospital = basicHospitalDao.selectById(caseClinicalDoctor.getHospitalId());
|
|
// caseClinicalDoctor.setBasicHospital(basicHospital);
|
|
//
|
|
// doctor.setCaseClinicalDoctor(caseClinicalDoctor);
|
|
// }
|
|
//
|
|
// // 处理返回值
|
|
// GetIndexClinicalDto g = new GetIndexClinicalDto();
|
|
//
|
|
// // 最新上线-2条
|
|
// g.setNewArticles(CaseClinicalArticleDto.GetListDto(latestArticles));
|
|
//
|
|
// // 最多阅读-2条
|
|
// g.setMostReadArticles(CaseClinicalArticleDto.GetListDto(mostReadArticles));
|
|
//
|
|
// // 医院病例库推荐-2条
|
|
// g.setRecommendHospital(RecommendHospitalDto.GetListDto(statsCaseClinicalHospitals));
|
|
//
|
|
// // 医生病例库推荐-2条
|
|
// g.setRecommendDoctor(RecommendDoctorDto.GetListDto(statsCaseClinicalDoctors));
|
|
// return g;
|
|
// }
|
|
}
|