| 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<Boolean> 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<QueryResultVo<List<VoIssueReport>>> getIssueReports(QoIssueReport vo) { | 
|         try { | 
|             //QueryResultVo<List<VoIssueReport_temp>> res = issueSv.getIssueReports(vo); | 
|             return BaseResponseUtils.buildSuccess(issueSv.getIssueReports(vo)); | 
|         } catch (Exception e) { | 
|             log.error("获取农户问题上报记录异常", e); | 
|             return BaseResponseUtils.buildException(e.getMessage()); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 逻辑删除农户问题上报,删除前先判断要删除的上报是否存在 | 
|      * @param po | 
|      * @param bindingResult | 
|      * @return | 
|      */ | 
|     @PostMapping(path = "deleteIssueReport") | 
|     public BaseResponse<Boolean> 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<Boolean> 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<VoIssueReportReply> 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()); | 
|         } | 
|     } | 
| } |