package com.dy.pipIrrWechat.issue; import com.dy.common.webUtil.BaseResponse; import com.dy.common.webUtil.BaseResponseUtils; import com.dy.common.webUtil.QueryResultVo; import com.dy.pipIrrGlobal.pojoSe.SeIssueReport; import com.dy.pipIrrGlobal.pojoSe.SeReportReply; import com.dy.pipIrrGlobal.voSe.VoIssueReport; import com.dy.pipIrrGlobal.voSe.VoIssueReportReply; import com.dy.pipIrrWechat.issue.dto.DtoDeleteParam; import com.dy.pipIrrWechat.issue.dto.DtoReportReply; import com.dy.pipIrrWechat.issue.qo.QoIssueReport; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.Optional; /** * @author ZhuBaoMin * @date 2024-10-30 10:34 * @LastEditTime 2024-10-30 10:34 * @Description 农户问题上报控制类 */ @Slf4j @RestController @RequestMapping(path="issue") @RequiredArgsConstructor public class IssueCtrl { private final IssueSv issueSv; /** * 添加农户问题上报 * @param po * @param bindingResult * @return */ @PostMapping(path = "addIssueReport") @Transactional(rollbackFor = Exception.class) public BaseResponse addIssueReport(@RequestBody @Valid SeIssueReport po, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } String result = issueSv.addIssueReport(po); if(!result.equals("success")) { return BaseResponseUtils.buildErrorMsg(result); } return BaseResponseUtils.buildSuccess(true) ; } /** * 根据指定条件获取农户问题上报 * @param vo * @return */ @GetMapping(path = "/getIssueReports") public BaseResponse>> getIssueReports(QoIssueReport vo) { try { QueryResultVo> res = issueSv.getIssueReports(vo); return BaseResponseUtils.buildSuccess(res); } catch (Exception e) { log.error("获取农户问题上报记录异常", e); return BaseResponseUtils.buildException(e.getMessage()); } } /** * 逻辑删除农户问题上报,删除前先判断要删除的上报是否存在 * @param po * @param bindingResult * @return */ @PostMapping(path = "deleteIssueReport") public BaseResponse deleteIssueReport(@RequestBody @Valid DtoDeleteParam po, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } // 根据上报ID及农户ID获取未删除的上报,删除上报判断使用 SeIssueReport seIssueReport = issueSv.getReport(po.getIssueReportId(), po.getClientId()); if(seIssueReport == null) { return BaseResponseUtils.buildErrorMsg("您要删除的问题上报不存在"); } try { Integer recordCount = Optional.ofNullable(issueSv.deleteIssueReport(po.getIssueReportId())).orElse(0); if (recordCount == 0) { return BaseResponseUtils.buildErrorMsg("农户问题上报删除失败"); }else { return BaseResponseUtils.buildSuccess(); } } catch (Exception e) { log.error("农户问题上报删除失败", e); return BaseResponseUtils.buildException(e.getMessage()); } } /** * 回复农户问题上报 * @param po * @param bindingResult * @return */ @PostMapping(path = "replyReport") @Transactional(rollbackFor = Exception.class) public BaseResponse replyReport(@RequestBody @Valid DtoReportReply po, BindingResult bindingResult) { if(bindingResult != null && bindingResult.hasErrors()){ return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); } // 添加上报回复记录 SeReportReply seReportReply = new SeReportReply(); seReportReply.setReportId(po.getReportId()); seReportReply.setReplyContent(po.getReplyContent()); seReportReply.setReplyTime(new Date()); seReportReply.setReplierId(po.getReplierId()); Long reportReplyId = issueSv.insertReportReply(seReportReply); if(reportReplyId == null) { return BaseResponseUtils.buildErrorMsg("回复农户问题上报失败"); } // 修改问题上报状态为已回复 SeIssueReport seIssueReport = new SeIssueReport(); seIssueReport.setId(po.getReportId()); seIssueReport.setState((byte)2); Integer issueReportId = issueSv.updateIssueReport(seIssueReport); if(issueReportId == null) { return BaseResponseUtils.buildErrorMsg("农户问题上报修改失败"); } return BaseResponseUtils.buildSuccess(true) ; } /** * 根据问题上报ID获取上报回复信息 * @param reportId * @return */ @GetMapping(path = "/getReportReply") public BaseResponse getReportReply(@RequestParam("reportId") Long reportId) { if(reportId == null) { return BaseResponseUtils.buildErrorMsg("请选择一个问题上报"); } try { return BaseResponseUtils.buildSuccess(issueSv.getReportReplyByReportId(reportId)); } catch (Exception e) { log.error("获取上报回复信息录异常", e); return BaseResponseUtils.buildException(e.getMessage()); } } }