From 346b480ab7848c742065e9bf989abaf43b515613 Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期一, 21 四月 2025 15:05:26 +0800
Subject: [PATCH] 获取轮灌组详情

---
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/flowMonitoring/MoniFlowCtrl.java |  181 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 181 insertions(+), 0 deletions(-)

diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/flowMonitoring/MoniFlowCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/flowMonitoring/MoniFlowCtrl.java
new file mode 100644
index 0000000..79b50a8
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/flowMonitoring/MoniFlowCtrl.java
@@ -0,0 +1,181 @@
+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.ResultCodeMsg;
+import com.dy.pipIrrGlobal.pojoPr.PrFlowMonitoring;
+import com.dy.pipIrrGlobal.pojoPr.PrFlowmeter;
+import com.dy.pipIrrGlobal.pojoPr.PrMonitoringFlowmeter;
+import com.dy.pipIrrProject.result.ProjectResultCode;
+import io.swagger.v3.oas.annotations.Operation;
+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.transaction.annotation.Transactional;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-01-05 10:26
+ * @LastEditTime 2024-01-05 10:26
+ * @Description 绠$綉娴侀噺鐩戞祴绔欍�佹祦閲忚鍏宠仈鎺у埗绫�
+ */
+
+@Slf4j
+@Tag(name = "娴侀噺鐩戞祴绔欍�佹祦閲忚鍏宠仈绠$悊", description = "娴侀噺鐩戞祴绔欍�佹祦閲忚鍏宠仈鎿嶄綔")
+@RestController
+@RequestMapping(path = "moni_flow")
+@RequiredArgsConstructor
+public class MoniFlowCtrl {
+    private final MoniFlowSv moniFlowSv;
+
+    private final FlowMonitoringSv flowMonitoringSv;
+    private final FlowmeterSv flowmeterSv;
+
+    /**
+     * 娴侀噺鐩戞祴绔欑粦瀹氭祦閲忚
+     * 鑻ユ祦閲忕洃娴嬬珯鎴栨祦閲忚涓嶅瓨鍦ㄩ渶鎻愮ず鐢ㄦ埛
+     * 鑻ユ祦閲忕洃娴嬬珯宸茬粡涓庢祦閲忚缁戝畾闇�鎻愮ず鐢ㄦ埛
+     *
+     * @param po            缁戝畾鍏崇郴瀵硅薄
+     * @param bindingResult
+     * @return
+     */
+    @Operation(summary = "娣诲姞缁戝畾璁板綍", description = "娣诲姞缁戝畾璁板綍")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = Boolean.class))}
+            )
+    })
+    @PostMapping(path = "bind", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @Transactional(rollbackFor = Exception.class)
+    @SsoAop()
+    public BaseResponse<Boolean> bind(@RequestBody @Valid DtoMoniFlow po, BindingResult bindingResult) {
+        if (bindingResult != null && bindingResult.hasErrors()) {
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        // 鏍规嵁缂栧彿鍒嗗埆鑾峰彇娴侀噺鐩戞祴绔欍�佹祦閲忚鏈垹闄よ褰曟暟
+        Integer recFlowMonitoring = Optional.ofNullable(flowMonitoringSv.getRecordCountOfFlowMonitoringByFlowMonitoringId(po.getMonitoringId())).orElse(0);
+        Integer recFlowmeter = Optional.ofNullable(flowmeterSv.getRecordCountOfFlowmeterByCode(po.getFlowmeterId())).orElse(0);
+        if (recFlowMonitoring == 0 || recFlowmeter == 0) {
+            return BaseResponseUtils.buildFail(ProjectResultCode.STATION_OR_FLOWMETER_NO_EXIST.getMessage());
+        }
+
+        // 鏍规嵁缂栧彿鑾峰彇宸茬粦瀹氭暟閲�
+        Integer recordCount = Optional.ofNullable(moniFlowSv.getBindRecordCount(po.getMonitoringId(), po.getFlowmeterId(), (byte) 1)).orElse(0);
+        if (recordCount > 0) {
+            return BaseResponseUtils.buildFail(ProjectResultCode.MONITORING_HAS_BINDED_FLOWMETER.getMessage());
+        }
+
+        PrMonitoringFlowmeter prMonitoringFlowmeter = DtoToMoniFlowPojo.INSTANCT.po2vo(po);
+        Date operateTime = new Date();
+        prMonitoringFlowmeter.setOperatedt(operateTime);
+        prMonitoringFlowmeter.setOperatetype((byte) 1);
+
+        PrFlowmeter flowmeter = new PrFlowmeter();
+        flowmeter.setMonitoringId(po.getMonitoringId().toString());
+        flowmeter.setId(po.getFlowmeterId());
+        flowmeter.setOperator(po.getOperator());
+        flowmeter.setOperateDt(operateTime);
+        Integer shu = flowmeterSv.flowmeterAddMonId(flowmeter);
+
+        Integer rec = Optional.ofNullable(moniFlowSv.addRecord(prMonitoringFlowmeter)).orElse(0);
+        if (rec == 0 || shu == 0) {
+            return BaseResponseUtils.buildFail(ProjectResultCode.MONITORING_FLOWMETER_BIND_FAIL.getMessage());
+        }
+        return BaseResponseUtils.buildSuccess(true);
+    }
+
+    @Operation(summary = "娣诲姞瑙g粦璁板綍", description = "娣诲姞瑙g粦璁板綍")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = Boolean.class))}
+            )
+    })
+    @PostMapping(path = "unbind", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @Transactional(rollbackFor = Exception.class)
+    @SsoAop()
+    public BaseResponse<Boolean> unbind(@RequestBody @Valid DtoMoniFlow po, BindingResult bindingResult) {
+        if (bindingResult != null && bindingResult.hasErrors()) {
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        // 鏍规嵁缂栧彿鍒嗗埆鑾峰彇娴侀噺鐩戞祴绔欍�佹祦閲忚鏈垹闄よ褰曟暟
+        Integer recFlowMonitoring = Optional.ofNullable(flowMonitoringSv.getRecordCountOfFlowMonitoringByFlowMonitoringId(po.getMonitoringId())).orElse(0);
+        Integer recFlowmeter = Optional.ofNullable(flowmeterSv.getRecordCountOfFlowmeterByCode(po.getFlowmeterId())).orElse(0);
+        if (recFlowMonitoring == 0 || recFlowmeter == 0) {
+            return BaseResponseUtils.buildFail(ProjectResultCode.STATION_OR_FLOWMETER_NO_EXIST.getMessage());
+        }
+
+        // 鏍规嵁缂栧彿鑾峰彇宸茬粦瀹氭暟閲�
+        Integer recordCount = Optional.ofNullable(moniFlowSv.getBindRecordCount(po.getMonitoringId(), po.getFlowmeterId(), (byte) 2)).orElse(0);
+        if (recordCount > 0) {
+            return BaseResponseUtils.buildFail(ProjectResultCode.STATION_FLOWMETER_HAS_UNBOUND.getMessage());
+        }
+
+        PrMonitoringFlowmeter prMonitoringFlowmeter = DtoToMoniFlowPojo.INSTANCT.po2vo(po);
+        Date operateTime = new Date();
+        prMonitoringFlowmeter.setOperatedt(operateTime);
+        prMonitoringFlowmeter.setOperatetype((byte) 2);
+
+        PrFlowmeter flowmeter = new PrFlowmeter();
+        flowmeter.setMonitoringId(null);
+        flowmeter.setId(po.getFlowmeterId());
+        flowmeter.setOperator(po.getOperator());
+        flowmeter.setOperateDt(operateTime);
+        Integer shu = flowmeterSv.flowmeterAddMonId(flowmeter);
+
+        Integer rec = Optional.ofNullable(moniFlowSv.addRecord(prMonitoringFlowmeter)).orElse(0);
+        if (rec == 0 || shu == 0) {
+            return BaseResponseUtils.buildFail(ProjectResultCode.MONITORING_FLOWMETER_BIND_FAIL.getMessage());
+        }
+        return BaseResponseUtils.buildSuccess(true);
+    }
+
+    /**
+     * 鏍规嵁鐩戞祴绔欑紪鍙疯幏鍙栫粦瀹氳褰� 鎸夋搷浣滄椂闂撮檷搴�
+     *
+     * @param monitoringId 鐩戞祴绔欑紪鍙�
+     * @return 缁戝畾璁板綍
+     */
+    @Operation(summary = "鑾峰彇缁戝畾璁板綍", description = "杩斿洖鑾峰彇缁戝畾璁板綍")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖缁戝畾璁板綍锛圔aseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = PrMonitoringFlowmeter.class))}
+            )
+    })
+    @GetMapping(path = "bingRecords/{monitoringId}")
+    @SsoAop()
+    public BaseResponse<List<Map<String, Object>>> getBingRecordsByMonitoringId(@PathVariable("monitoringId") String monitoringId) {
+        try {
+            List<Map<String, Object>> list = Optional.ofNullable(moniFlowSv.getBingRecordsByMonitoringId(monitoringId)).orElse(new ArrayList<>());
+            if (list.size() <= 0) {
+                return BaseResponseUtils.buildFail(ProjectResultCode.NO_MONITORING_FLOWMETERS.getMessage());
+            }
+            return BaseResponseUtils.buildSuccess(list);
+        } catch (Exception e) {
+            log.error("鏌ヨ缁戝畾璁板綍寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage());
+        }
+    }
+}

--
Gitblit v1.8.0