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