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> getCaseExchangeDraftSearchPage( @Validated() @RequestBody getCaseExchangeDraftSearchPage request ) { String userId = (String) httpServletRequest.getAttribute("userId"); if (userId == null) { return Response.error("操作失败"); } request.validateForPage(); Map resultMap = new HashMap<>(); Page page = new Page<>(request.getPage(), request.getPageSize()); IPage 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 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 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 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(); } }