case-data-api/src/main/java/com/example/caseData/controller/CaseExchangeDraftController.java

190 lines
6.4 KiB
Java

package com.example.caseData.controller;
import cn.hutool.core.lang.Dict;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
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.T;
import com.example.caseData.dto.caseExchange.CaseExchangeDto;
import com.example.caseData.dto.caseExchangeDraft.CaseExchangeDraftDto;
import com.example.caseData.dto.caseExchangeLabel.CaseExchangeLabelDto;
import com.example.caseData.dto.caseExchangeVote.CaseExchangeVoteDto;
import com.example.caseData.dto.caseExchangeVoteOption.CaseExchangeVoteOptionDto;
import com.example.caseData.dto.userCommentCaseExchange.GetUserCaseExchangeCommentPageDto;
import com.example.caseData.dto.userCommentCaseExchange.UserCommentCaseExchangeDto;
import com.example.caseData.exception.BusinessException;
import com.example.caseData.model.*;
import com.example.caseData.request.caseExchangeDraftRequest.addCaseExchangeDraft;
import com.example.caseData.request.caseExchangeDraftRequest.getCaseExchangeDraftSearchPage;
import com.example.caseData.request.caseExchangeRequest.*;
import com.example.caseData.service.CaseExchangeDraftService;
import com.example.caseData.service.CaseExchangeService;
import com.example.caseData.utils.IntToString;
import com.example.caseData.utils.Replace;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.*;
@RestController
@RequestMapping("/api")
public class CaseExchangeDraftController {
@Resource
private HttpServletRequest httpServletRequest;
@Resource
private CaseExchangeDao caseExchangeDao;
@Resource
private UserDao userDao;
@Resource
private BasicHospitalDao basicHospitalDao;
@Resource
private CaseExchangeService caseExchangeService;
@Resource
private CaseExchangeDraftService caseExchangeDraftService;
@Resource
private CaseExchangeDraftDao caseExchangeDraftDao;
@Resource
private CaseExchangeVoteDao caseExchangeVoteDao;
@Resource
private CaseExchangeLabelDao caseExchangeLabelDao;
@Resource
private CaseExchangeVoteOptionDao caseExchangeVoteOptionDao;
@Resource
private UserVoteExchangeDao userVoteExchangeDao;
@Resource
private UserCommentExchangeDao userCommentExchangeDao;
/**
* 临床病例库-病例交流-草稿-搜索
*/
@PostMapping("/exchange/draft/search")
public Response<Map<String, Object>> getCaseExchangeDraftSearchPage(
@Validated()
@RequestBody getCaseExchangeDraftSearchPage request
) {
String userId = (String) httpServletRequest.getAttribute("userId");
if (userId == null) {
return Response.error("操作失败");
}
request.validateForPage();
Map<String, Object> resultMap = new HashMap<>();
Page<CaseExchangeDraftDto> page = new Page<>(request.getPage(), request.getPageSize());
IPage<CaseExchangeDraftDto> resultPage = caseExchangeDraftDao.getCaseExchangeDraftSearchPage(
page,
userId,
request.handleOrder()
);
for (CaseExchangeDraftDto dto : resultPage.getRecords()) {
// 处理标签
if (dto.getExchangeLabelJson() != null && !dto.getExchangeLabelJson().isEmpty()){
try {
JSONArray array = JSONUtil.parseArray(dto.getExchangeLabelJson());
List<CaseExchangeDraftDto.CaseExchangeLabelDto> caseExchangeLabelDto = JSONUtil.toList(array, CaseExchangeDraftDto.CaseExchangeLabelDto.class);
dto.setExchangeLabel(caseExchangeLabelDto);
dto.setExchangeLabelJson("");
} catch (Exception e) {
return Response.error(e.getMessage());
}
}
// 处理投票
if (dto.getExchangeVoteJson() != null && !dto.getExchangeVoteJson().isEmpty()){
try {
CaseExchangeDraftDto.ExchangeVoteDto caseExchangeVoteDto = JSONUtil.toBean(dto.getExchangeVoteJson(), CaseExchangeDraftDto.ExchangeVoteDto.class);
dto.setExchangeVote(caseExchangeVoteDto);
dto.setExchangeVoteJson("");
} catch (Exception e) {
return Response.error(e.getMessage());
}
}
}
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("/exchange/draft")
public Response<T> AddCaseExchangeDraft(
@Validated()
@RequestBody addCaseExchangeDraft request
) {
String userId = (String) httpServletRequest.getAttribute("userId");
if (userId == null) {
return Response.error("操作失败");
}
try {
boolean res = caseExchangeDraftService.AddCaseExchangeDraft(request,userId);
if (!res){
return Response.error("操作失败");
}
} catch (BusinessException e) {
return Response.error(e.getMessage());
}
return Response.success();
}
/**
* 病例交流-草稿-删除
*/
@DeleteMapping("/exchange/draft/{draft_id}")
public Response<T> DeleteCaseExchangeComment(
@PathVariable("draft_id") String draftId
) {
String userId = (String) httpServletRequest.getAttribute("userId");
if (userId == null) {
return Response.error("操作失败");
}
try {
boolean res = caseExchangeDraftService.DeleteCaseExchangeDraft(draftId,userId);
if (!res){
return Response.error("操作失败");
}
} catch (BusinessException e) {
return Response.error(e.getMessage());
}
return Response.success();
}
}