|  |  |  | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|