package com.dy.pipIrrApp.issue; 
 | 
  
 | 
import com.alibaba.fastjson2.JSONObject; 
 | 
import com.dy.common.aop.SsoAop; 
 | 
import com.dy.common.webUtil.BaseResponse; 
 | 
import com.dy.common.webUtil.BaseResponseUtils; 
 | 
import com.dy.common.webUtil.QueryResultVo; 
 | 
import com.dy.pipIrrApp.issue.dto.DtoDeleteParam; 
 | 
import com.dy.pipIrrApp.issue.qo.QoIssueReport; 
 | 
import com.dy.pipIrrGlobal.pojoOp.OpeIssueReport; 
 | 
import com.dy.pipIrrGlobal.pojoOp.OpeReportReply; 
 | 
import com.dy.pipIrrGlobal.voOp.VoIssueReport; 
 | 
import com.dy.pipIrrGlobal.voOp.VoIssueReportReply; 
 | 
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.List; 
 | 
import java.util.Objects; 
 | 
  
 | 
/** 
 | 
 * @author ZhuBaoMin 
 | 
 * @date 2024-11-11 16:29 
 | 
 * @LastEditTime 2024-11-11 16:29 
 | 
 * @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) 
 | 
    @SsoAop() 
 | 
    public BaseResponse<Boolean> addIssueReport(@RequestBody @Valid OpeIssueReport 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") 
 | 
    @SsoAop() 
 | 
    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 issueReportId 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getOneIssueReport") 
 | 
    @SsoAop() 
 | 
    public BaseResponse<VoIssueReport> getOneIssueReport(@RequestParam("issueReportId") Long issueReportId) { 
 | 
        try { 
 | 
            VoIssueReport issueReport = issueSv.getIssueReportById(issueReportId); 
 | 
            if(issueReport == null) { 
 | 
                return BaseResponseUtils.buildNonExist(); 
 | 
            } 
 | 
            return BaseResponseUtils.buildSuccess(issueReport); 
 | 
        } 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()); 
 | 
        } 
 | 
  
 | 
        String result = issueSv.deleteIssueReport(po); 
 | 
        if(!result.equals("success")) { 
 | 
            return BaseResponseUtils.buildErrorMsg(result); 
 | 
        } 
 | 
  
 | 
        return BaseResponseUtils.buildSuccess(); 
 | 
  
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 回复巡检员问题上报 
 | 
     * @param po 
 | 
     * @param bindingResult 
 | 
     * @return 
 | 
     */ 
 | 
    @PostMapping(path = "replyReport") 
 | 
    @Transactional(rollbackFor = Exception.class) 
 | 
    public BaseResponse<Boolean> replyReport(@RequestBody @Valid OpeReportReply po, BindingResult bindingResult) { 
 | 
        if(bindingResult != null && bindingResult.hasErrors()){ 
 | 
            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); 
 | 
        } 
 | 
        if (issueSv.getReportReply(po.getReportId()).get("code").equals("0001")){ 
 | 
            return BaseResponseUtils.buildErrorMsg("该问题上报已回复,请勿重复回复"); 
 | 
        } 
 | 
        String result = issueSv.replyReport(po); 
 | 
        if(!result.equals("sucess")) { 
 | 
            return BaseResponseUtils.buildErrorMsg(result); 
 | 
        } 
 | 
  
 | 
        return BaseResponseUtils.buildSuccess() ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 根据问题上报ID获取上报回复信息 
 | 
     * @param reportId 
 | 
     * @return 
 | 
     */ 
 | 
    @GetMapping(path = "/getReportReply") 
 | 
    public BaseResponse<VoIssueReportReply> getReportReply(@RequestParam("reportId") Long reportId) { 
 | 
  
 | 
        JSONObject result = issueSv.getReportReply(reportId); 
 | 
        if(!result.get("code").equals("0001")) { 
 | 
            return BaseResponseUtils.buildErrorMsg(result.get("msg").toString()); 
 | 
        } 
 | 
  
 | 
        return BaseResponseUtils.buildSuccess(result.get("data")); 
 | 
  
 | 
    } 
 | 
  
 | 
} 
 |