zhubaomin
2024-10-12 2a959177f1adcd36f790e14718bbd116752e5c64
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
package com.dy.pipIrrProject.flowMonitoring;
 
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.common.webUtil.ResultCodeMsg;
import com.dy.pipIrrGlobal.pojoPr.PrFlowMonitoring;
import com.dy.pipIrrGlobal.pojoPr.PrFlowmeter;
import com.dy.pipIrrGlobal.voPr.VoFlowMeter;
import com.dy.pipIrrGlobal.voPr.VoFlowMonitoring;
import com.dy.pipIrrProject.result.ProjectResultCode;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
 
import java.util.*;
 
/**
 * @author ZhuBaoMin
 * @date 2024-01-05 9:21
 * @LastEditTime 2024-01-05 9:21
 * @Description
 */
 
@Slf4j
@Tag(name = "流量监测站管理", description = "流量监测站操作")
@RestController
@RequestMapping(path = "flowmeter")
@RequiredArgsConstructor
public class FlowmeterCtrl {
    private final FlowmeterSv flowmeterSv;
 
    @Operation(summary = "添加流量计记录", description = "添加流量计记录")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "操作结果:true:成功,false:失败(BaseResponse.content)",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = Boolean.class))}
            )
    })
    @PostMapping(path = "add", consumes = MediaType.APPLICATION_JSON_VALUE)
    @SsoAop()
    public BaseResponse<Boolean> add(@RequestBody @Valid DtoFlowmeter po, BindingResult bindingResult) {
        if (bindingResult != null && bindingResult.hasErrors()) {
            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
        }
 
        PrFlowmeter prFlowmeter = DtoToFlowmeterPojo.INSTANCT.po2vo(po);
        Date operateTime = new Date();
        prFlowmeter.setOperateDt(operateTime);
        prFlowmeter.setDeleted((byte) 0);
        prFlowmeter.setReportTime(operateTime);
        Integer rec = Optional.ofNullable(flowmeterSv.addFlowmeter(prFlowmeter)).orElse(0);
        if (rec == 0) {
            return BaseResponseUtils.buildFail(ProjectResultCode.ADD_FLOWMETER_FAIL.getMessage());
        }
        return BaseResponseUtils.buildSuccess(true);
    }
 
    /**
     * 删除流量计
     *
     * @param map
     * @return
     */
    @Operation(summary = "删除流量计记录", description = "删除流量计记录")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "操作结果:true:成功,false:失败(BaseResponse.content)",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = Boolean.class))}
            )
    })
    @PostMapping(path = "delete")
    @SsoAop()
    public BaseResponse<Boolean> delete(@RequestBody Map map) {
        if (map == null || map.size() <= 0) {
            return BaseResponseUtils.buildFail(ProjectResultCode.PLEASE_INPUT_FLOW_MONITORING_ID.getMessage());
        }
 
        Long flowmeterId = Long.parseLong(map.get("flowmeterId").toString());
        Integer recordCount = Optional.ofNullable(flowmeterSv.deleteFlowmeter(flowmeterId)).orElse(0);
        if (recordCount == 0) {
            return BaseResponseUtils.buildFail(ProjectResultCode.DELETE_FLOWMETER_FAIL.getMessage());
        }
        return BaseResponseUtils.buildSuccess(true);
    }
 
    @Operation(summary = "获得一页流量计记录", description = "返回一页流量计数据")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "返回一页流量计数据(BaseResponse.content:QueryResultVo[{}])",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = PrFlowmeter.class))}
            )
    })
    @GetMapping(path = "getFlowMeters")
    @SsoAop()
    public BaseResponse<QueryResultVo<List<VoFlowMeter>>> getFlowMeters(QueryVoFlowMeter vo) {
        try {
            QueryResultVo<List<VoFlowMeter>> res = flowmeterSv.getFlowMeters(vo);
            if (res.itemTotal != null && res.itemTotal > 0) {
                return BaseResponseUtils.buildSuccess(res);
            }
            return BaseResponseUtils.buildFail(ProjectResultCode.NO_FLOWMETERS.getMessage());
        } catch (Exception e) {
            log.error("获取流量计记录异常", e);
            return BaseResponseUtils.buildException(e.getMessage());
        }
    }
    @Operation(summary = "获得全部流量计", description = "返回全部流量计")
    @ApiResponses(value = {
            @ApiResponse(
                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
                    description = "返回全部流量计(BaseResponse.content:QueryResultVo[{}])",
                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                            schema = @Schema(implementation = PrFlowmeter.class))}
            )
    })
    @GetMapping(path = "all")
    @SsoAop()
    public BaseResponse<List<PrFlowmeter>> getFlowMeterAll() {
        try {
            List<PrFlowmeter> res = flowmeterSv.getFlowMeterAll();
            if (res != null && res.size() > 0) {
                return BaseResponseUtils.buildSuccess(res);
            }
            return BaseResponseUtils.buildFail(ProjectResultCode.NO_DATA.getMessage());
        } catch (Exception e) {
            log.error("获取流量计数据异常", e);
            return BaseResponseUtils.buildException(e.getMessage());
        }
    }
}