|  |  | 
 |  |  | package com.dy.pipIrrWechat.issue; | 
 |  |  |  | 
 |  |  | import com.alibaba.fastjson2.JSONArray; | 
 |  |  | 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.pipIrrWechat.issue.dto.DtoIssueReport; | 
 |  |  | 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 org.springframework.validation.BindingResult; | 
 |  |  | import org.springframework.web.bind.annotation.*; | 
 |  |  |  | 
 |  |  | import java.math.BigDecimal; | 
 |  |  | import java.util.Date; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.Objects; | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     @PostMapping(path = "addIssueReport") | 
 |  |  |     @Transactional(rollbackFor = Exception.class) | 
 |  |  |     public BaseResponse<Boolean> addIssueReport(@RequestBody @Valid DtoIssueReport po, BindingResult bindingResult) { | 
 |  |  |     public BaseResponse<Boolean> addIssueReport(@RequestBody @Valid SeIssueReport po, BindingResult bindingResult) { | 
 |  |  |         if(bindingResult != null && bindingResult.hasErrors()){ | 
 |  |  |             return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         Long clientId = po.getClientId(); | 
 |  |  |         String phone = Optional.ofNullable(po.getPhone()).orElse(""); | 
 |  |  |         BigDecimal lng = Optional.ofNullable(po.getLng()).orElse(BigDecimal.valueOf(0)); | 
 |  |  |         BigDecimal lat = Optional.ofNullable(po.getLat()).orElse(BigDecimal.valueOf(0)); | 
 |  |  |         String content = Optional.ofNullable(po.getContent()).orElse(""); | 
 |  |  |         JSONArray images = Optional.ofNullable(po.getImages()).orElse(new JSONArray()); | 
 |  |  |         JSONArray audios = Optional.ofNullable(po.getAudios()).orElse(new JSONArray()); | 
 |  |  |         JSONArray videos = Optional.ofNullable(po.getVideos()).orElse(new JSONArray()); | 
 |  |  |  | 
 |  |  |         SeIssueReport seIssueReport = new SeIssueReport(); | 
 |  |  |         seIssueReport.setClientId(clientId); | 
 |  |  |         seIssueReport.setPhone(phone); | 
 |  |  |         seIssueReport.setLng(lng); | 
 |  |  |         seIssueReport.setLat(lat); | 
 |  |  |         seIssueReport.setContent(content); | 
 |  |  |         seIssueReport.setImages(images); | 
 |  |  |         seIssueReport.setAudios(audios); | 
 |  |  |         seIssueReport.setVideos(videos); | 
 |  |  |         seIssueReport.setReportTime(new Date()); | 
 |  |  |         seIssueReport.setState((byte)1); | 
 |  |  |         Long issueReportId = issueSv.insertIssueReport(seIssueReport); | 
 |  |  |         if(issueReportId == null) { | 
 |  |  |             return BaseResponseUtils.buildErrorMsg("农户问题上报失败"); | 
 |  |  |         String result = issueSv.addIssueReport(po); | 
 |  |  |         if(!result.equals("success")) { | 
 |  |  |             return BaseResponseUtils.buildErrorMsg(result); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         return BaseResponseUtils.buildSuccess(true) ; | 
 |  |  | 
 |  |  |     @GetMapping(path = "/getIssueReports") | 
 |  |  |     public BaseResponse<QueryResultVo<List<VoIssueReport>>> getIssueReports(QoIssueReport vo) { | 
 |  |  |         try { | 
 |  |  |             QueryResultVo<List<VoIssueReport>> res = issueSv.getIssueReports(vo); | 
 |  |  |             return BaseResponseUtils.buildSuccess(res); | 
 |  |  |             //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 issueReportId | 
 |  |  |      * 逻辑删除农户问题上报,删除前先判断要删除的上报是否存在 | 
 |  |  |      * @param po | 
 |  |  |      * @param bindingResult | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     @PostMapping(path = "deleteIssueReport") | 
 |  |  |     public BaseResponse<Boolean> deleteIssueReport(@RequestParam("issueReportId") Long issueReportId) { | 
 |  |  |         if (issueReportId == null) { | 
 |  |  |             return BaseResponseUtils.buildErrorMsg("未选择要删除的农户问题上报"); | 
 |  |  |     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 { | 
 |  |  |             //取水口ID | 
 |  |  |             Integer recordCount = Optional.ofNullable(issueSv.deleteIssueReport(issueReportId)).orElse(0); | 
 |  |  |             Integer recordCount = Optional.ofNullable(issueSv.deleteIssueReport(po.getIssueReportId())).orElse(0); | 
 |  |  |             if (recordCount == 0) { | 
 |  |  |                 return BaseResponseUtils.buildErrorMsg("农户问题上报删除失败"); | 
 |  |  |             } else { | 
 |  |  |                 return BaseResponseUtils.buildSuccess(true); | 
 |  |  |             }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()); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  | } |