260 lines
11 KiB
Java

package com.example.caseData.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.caseData.common.Response;
import com.example.caseData.dao.*;
import com.example.caseData.dto.basicHospital.BasicHospitalDto;
import com.example.caseData.dto.caseClinicalArticle.CaseClinicalArticleDto;
import com.example.caseData.dto.caseClinicalArticleAuthor.CaseClinicalArticleAuthorDto;
import com.example.caseData.dto.caseClinicalDoctor.CaseClinicalDoctorDto;
import com.example.caseData.dto.caseClinicalVideo.CaseClinicalVideoDto;
import com.example.caseData.dto.caseClinicalVideoAuthor.CaseClinicalVideoAuthorDto;
import com.example.caseData.dto.statsCaseClinicalDoctor.StatsCaseClinicalDoctorDto;
import com.example.caseData.dto.statsCaseClinicalHospital.StatsCaseClinicalHospitalDto;
import com.example.caseData.model.*;
import com.example.caseData.request.clinicalRequest.getClinicalArticleSearchPage;
import com.example.caseData.request.clinicalRequest.getClinicalDoctorSearchPage;
import com.example.caseData.request.clinicalRequest.getClinicalHospitalSearchPage;
import com.example.caseData.request.clinicalRequest.getClinicalVideoSearchPage;
import com.example.caseData.service.CaseClinicalArticleService;
import com.example.caseData.service.CaseClinicalVideoService;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/api")
public class ClinicalController extends BaseController {
@Resource
private CaseClinicalArticleDao caseClinicalArticleDao;
@Resource
private CaseClinicalArticleAuthorDao caseClinicalArticleAuthorDao;
@Resource
private CaseClinicalVideoDao caseClinicalVideoDao;
@Resource
private CaseClinicalVideoAuthorDao caseClinicalVideoAuthorDao;
@Resource
private StatsCaseClinicalDao statsCaseClinicalDao;
@Resource
private StatsCaseClinicalHospitalDao statsCaseClinicalHospitalDao;
@Resource
private StatsCaseClinicalDoctorDao statsCaseClinicalDoctorDao;
@Resource
private CaseClinicalDoctorDao caseClinicalDoctorDao;
@Resource
private BasicHospitalDao basicHospitalDao;
@Resource
private HttpServletRequest httpServletRequest;
@Resource
private CaseClinicalArticleService caseClinicalArticleService;
@Resource
private CaseClinicalVideoService caseClinicalVideoService;
/**
* 临床病例库-搜索-文章
*/
@PostMapping("/clinical/article/search")
public Response<Map<String, Object>> getClinicalArticleSearchPage(
@Validated()
@RequestBody getClinicalArticleSearchPage request
) {
String userId = (String) httpServletRequest.getAttribute("userId");
request.validateForPage();
Map<String, Object> resultMap = new HashMap<>();
Page<CaseClinicalArticleDto> page = new Page<>(request.getPage(), request.getPageSize());
// 获取文章数据
IPage<CaseClinicalArticleDto> resultPage = caseClinicalArticleDao.getCaseClinicalArticleSearchPage(
page,
request.getKeyword(),
request.getHospitalId(),
request.getDoctorId(),
request.handleOrder()
);
for (CaseClinicalArticleDto dto : resultPage.getRecords()) {
// 查找作者
LambdaQueryWrapper<CaseClinicalArticleAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
authorQueryWrapper.eq(CaseClinicalArticleAuthorModel::getArticleId, dto.getArticleId());
List<CaseClinicalArticleAuthorModel> caseClinicalArticleAuthors = caseClinicalArticleAuthorDao.selectList(authorQueryWrapper);
for (CaseClinicalArticleAuthorModel author : caseClinicalArticleAuthors) {
// 查询医生
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
author.setCaseClinicalDoctor(caseClinicalDoctor);
}
List<CaseClinicalArticleAuthorDto> caseClinicalArticleAuthorListDto = CaseClinicalArticleAuthorDto.GetListDto(caseClinicalArticleAuthors);
dto.setAuthor(caseClinicalArticleAuthorListDto);
// 获取用户收藏状态
if (userId != null) {
// 检测用户是否已收藏过
UserCollectClinicalArticleModel userCollectClinicalArticle = caseClinicalArticleService.getUserCollectClinicalArticleStatus(dto.getArticleId(),userId);
if (userCollectClinicalArticle != null) {
dto.setCollect(true);
}
}
}
resultMap.put("page", resultPage.getCurrent());
resultMap.put("pageSize", resultPage.getSize());
resultMap.put("total", resultPage.getTotal());
resultMap.put("data", resultPage.getRecords());
return Response.success(resultMap);
}
/**
* 临床病例库-搜索-视频
*/
@PostMapping("/clinical/video/search")
public Response<Map<String, Object>> getClinicalVideoSearchPage(
@Validated()
@RequestBody getClinicalVideoSearchPage request
) {
String userId = (String) httpServletRequest.getAttribute("userId");
request.validateForPage();
Map<String, Object> resultMap = new HashMap<>();
Page<CaseClinicalVideoDto> page = new Page<>(request.getPage(), request.getPageSize());
// 获取视频数据
IPage<CaseClinicalVideoDto> resultPage = caseClinicalVideoDao.getCaseClinicalVideoSearchPage(
page,
request.getKeyword(),
request.getHospitalId(),
request.getDoctorId(),
request.handleOrder()
);
for (CaseClinicalVideoDto dto : resultPage.getRecords()) {
// 查找作者
LambdaQueryWrapper<CaseClinicalVideoAuthorModel> authorQueryWrapper = new LambdaQueryWrapper<>();
authorQueryWrapper.eq(CaseClinicalVideoAuthorModel::getVideoId, dto.getVideoId());
List<CaseClinicalVideoAuthorModel> caseClinicalVideoAuthors = caseClinicalVideoAuthorDao.selectList(authorQueryWrapper);
for (CaseClinicalVideoAuthorModel author : caseClinicalVideoAuthors) {
// 查询医生
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(author.getDoctorId());
author.setCaseClinicalDoctor(caseClinicalDoctor);
}
List<CaseClinicalVideoAuthorDto> caseClinicalVideoAuthorListDto = CaseClinicalVideoAuthorDto.GetListDto(caseClinicalVideoAuthors);
dto.setAuthor(caseClinicalVideoAuthorListDto);
// 获取用户收藏状态
if (userId != null) {
// 检测用户是否已收藏过
UserCollectClinicalVideoModel userCollectClinicalVideo = caseClinicalVideoService.getUserCollectClinicalVideoStatus(dto.getVideoId(),userId);
if (userCollectClinicalVideo != null) {
dto.setCollect(true);
}
}
}
resultMap.put("page", resultPage.getCurrent());
resultMap.put("pageSize", resultPage.getSize());
resultMap.put("total", resultPage.getTotal());
resultMap.put("data", resultPage.getRecords());
return Response.success(resultMap);
}
/**
* 临床病例库-医院-搜索
*/
@PostMapping("/clinical/hospital/search")
public Response<Map<String, Object>> getClinicalHospitalSearchPage(
@Validated()
@RequestBody getClinicalHospitalSearchPage request
) {
request.validateForPage();
Page<StatsCaseClinicalHospitalDto> page = new Page<>(request.getPage(), request.getPageSize());
// 获取医院数据
IPage<StatsCaseClinicalHospitalDto> resultPage = statsCaseClinicalHospitalDao.getStatsCaseClinicalHospitalSearchPage(
page,
request.getHospitalName(),
request.handleOrder()
);
for (StatsCaseClinicalHospitalDto dto : resultPage.getRecords()) {
// 查询医院基础数据
BasicHospitalModel basicHospital = basicHospitalDao.selectById(dto.getHospitalId());
BasicHospitalDto basicHospitalDto = BasicHospitalDto.GetDto(basicHospital);
dto.setBasicHospital(basicHospitalDto);
}
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("page", resultPage.getCurrent());
resultMap.put("pageSize", resultPage.getSize());
resultMap.put("total", resultPage.getTotal());
resultMap.put("data", resultPage.getRecords());
return Response.success(resultMap);
}
/**
* 临床病例库-医生-搜索
*/
@PostMapping("/clinical/doctor/search")
public Response<Map<String, Object>> getClinicalDoctorSearchPage(
@Validated()
@RequestBody getClinicalDoctorSearchPage request
) {
request.validateForPage();
Page<StatsCaseClinicalDoctorDto> page = new Page<>(request.getPage(), request.getPageSize());
// 获取医生数据
IPage<StatsCaseClinicalDoctorDto> resultPage = statsCaseClinicalDoctorDao.getStatsCaseClinicalDoctorSearchPage(
page,
request.getDoctorName(),
request.handleOrder()
);
for (StatsCaseClinicalDoctorDto dto : resultPage.getRecords()) {
// 查询医生数据
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectById(dto.getDoctorId());
// 查询医生所属医院
BasicHospitalModel basicHospital = basicHospitalDao.selectById(caseClinicalDoctor.getHospitalId());
caseClinicalDoctor.setBasicHospital(basicHospital);
CaseClinicalDoctorDto caseClinicalDoctorDto = CaseClinicalDoctorDto.GetDto(caseClinicalDoctor);
dto.setCaseClinicalDoctor(caseClinicalDoctorDto);
}
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("page", resultPage.getCurrent());
resultMap.put("pageSize", resultPage.getSize());
resultMap.put("total", resultPage.getTotal());
resultMap.put("data", resultPage.getRecords());
return Response.success(resultMap);
}
}