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