zhubaomin
2025-04-14 d2263e86d837ef331d77fd39dccd79f100041e76
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
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());
        }
    }
}