Просмотр исходного кода

fix(water): align export date binding

Kazerin 1 неделя назад
Родитель
Сommit
cd89c13a45

+ 6 - 5
pipe-network-service/zksy-admin/src/main/java/com/zksy/web/controller/WaterSupply/WaterFacilityExportController.java

@@ -17,6 +17,7 @@ import com.zksy.common.annotation.Excel;
 import com.zksy.common.enums.BusinessType;
 import com.zksy.common.utils.poi.ExcelUtil;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -39,7 +40,7 @@ public class WaterFacilityExportController {
     @GetMapping("/sourceInfo/export")
     @Log(title = "导出水源地信息", businessType = BusinessType.EXPORT)
     @PreAuthorize("@ss.hasPermi('waterSupply:waterSource:export')")
-    public void sourceExport(HttpServletResponse response, @RequestParam(required = false) String sourceId, @RequestParam(required = false) String sourceName, @RequestParam(required = false) String status, @RequestParam(required = false) String unit, @RequestParam(required = false) LocalDateTime startTime, @RequestParam(required = false) LocalDateTime endTime) {
+    public void sourceExport(HttpServletResponse response, @RequestParam(required = false) String sourceId, @RequestParam(required = false) String sourceName, @RequestParam(required = false) String status, @RequestParam(required = false) String unit, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime startTime, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime endTime) {
         var page = sourceService.queryPage(new Page<WaterSourceInfo>(1, Integer.MAX_VALUE), sourceId, sourceName, status, unit, startTime, endTime);
         new ExcelUtil<>(WaterSourceExportDTO.class).exportExcel(response, page.getRecords().stream().map(WaterSourceExportDTO::from).collect(Collectors.toList()), "水源地信息");
     }
@@ -47,7 +48,7 @@ public class WaterFacilityExportController {
     @GetMapping("/plantInfo/export")
     @Log(title = "导出水厂信息", businessType = BusinessType.EXPORT)
     @PreAuthorize("@ss.hasPermi('waterSupply:waterPlant:export')")
-    public void plantExport(HttpServletResponse response, @RequestParam(required = false) String plantCode, @RequestParam(required = false) String plantName, @RequestParam(required = false) String status, @RequestParam(required = false) String principal, @RequestParam(required = false) LocalDateTime startTime, @RequestParam(required = false) LocalDateTime endTime) {
+    public void plantExport(HttpServletResponse response, @RequestParam(required = false) String plantCode, @RequestParam(required = false) String plantName, @RequestParam(required = false) String status, @RequestParam(required = false) String principal, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime startTime, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime endTime) {
         var page = plantService.queryPage(new Page<WaterPlantInfo>(1, Integer.MAX_VALUE), plantCode, plantName, status, principal, startTime, endTime);
         new ExcelUtil<>(WaterPlantExportDTO.class).exportExcel(response, page.getRecords().stream().map(WaterPlantExportDTO::from).collect(Collectors.toList()), "水厂信息");
     }
@@ -55,7 +56,7 @@ public class WaterFacilityExportController {
     @GetMapping("/pumpStation/export")
     @Log(title = "导出泵站信息", businessType = BusinessType.EXPORT)
     @PreAuthorize("@ss.hasPermi('waterSupply:waterPumpStation:export')")
-    public void pumpExport(HttpServletResponse response, @RequestParam(required = false) String stationCode, @RequestParam(required = false) String stationName, @RequestParam(required = false) String status, @RequestParam(required = false) String principal, @RequestParam(required = false) LocalDateTime startTime, @RequestParam(required = false) LocalDateTime endTime) {
+    public void pumpExport(HttpServletResponse response, @RequestParam(required = false) String stationCode, @RequestParam(required = false) String stationName, @RequestParam(required = false) String status, @RequestParam(required = false) String principal, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime startTime, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime endTime) {
         var page = pumpService.queryPage(new Page<WaterPumpStation>(1, Integer.MAX_VALUE), stationCode, stationName, status, principal, startTime, endTime);
         new ExcelUtil<>(WaterPumpStationExportDTO.class).exportExcel(response, page.getRecords().stream().map(WaterPumpStationExportDTO::from).collect(Collectors.toList()), "泵站信息");
     }
@@ -63,7 +64,7 @@ public class WaterFacilityExportController {
     @GetMapping("/pipe/export")
     @Log(title = "导出管网信息", businessType = BusinessType.EXPORT)
     @PreAuthorize("@ss.hasPermi('waterSupply:waterPipe:export')")
-    public void pipeExport(HttpServletResponse response, @RequestParam(required = false) String pipeCode, @RequestParam(required = false) String pipeName, @RequestParam(required = false) String pipeMaterial, @RequestParam(required = false) String status, @RequestParam(required = false) Integer pipeDiameter, @RequestParam(required = false) Integer layingYear, @RequestParam(required = false) LocalDateTime startTime, @RequestParam(required = false) LocalDateTime endTime) {
+    public void pipeExport(HttpServletResponse response, @RequestParam(required = false) String pipeCode, @RequestParam(required = false) String pipeName, @RequestParam(required = false) String pipeMaterial, @RequestParam(required = false) String status, @RequestParam(required = false) Integer pipeDiameter, @RequestParam(required = false) Integer layingYear, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime startTime, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime endTime) {
         var page = pipeService.queryPage(new Page<WaterPipeInfo>(1, Integer.MAX_VALUE), pipeCode, pipeName, pipeMaterial, status, pipeDiameter, layingYear, startTime, endTime);
         new ExcelUtil<>(WaterPipeExportDTO.class).exportExcel(response, page.getRecords().stream().map(WaterPipeExportDTO::from).collect(Collectors.toList()), "管网信息");
     }
@@ -71,7 +72,7 @@ public class WaterFacilityExportController {
     @GetMapping("/userInfo/export")
     @Log(title = "导出用水户信息", businessType = BusinessType.EXPORT)
     @PreAuthorize("@ss.hasPermi('waterSupply:waterUser:export')")
-    public void userExport(HttpServletResponse response, @RequestParam(required = false) String userCode, @RequestParam(required = false) String userName, @RequestParam(required = false) String status, @RequestParam(required = false) String userType, @RequestParam(required = false) LocalDateTime startTime, @RequestParam(required = false) LocalDateTime endTime) {
+    public void userExport(HttpServletResponse response, @RequestParam(required = false) String userCode, @RequestParam(required = false) String userName, @RequestParam(required = false) String status, @RequestParam(required = false) String userType, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime startTime, @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime endTime) {
         var page = userService.queryPage(new Page<WaterUserInfo>(1, Integer.MAX_VALUE), userCode, userName, status, userType, startTime, endTime);
         new ExcelUtil<>(WaterUserExportDTO.class).exportExcel(response, page.getRecords().stream().map(WaterUserExportDTO::from).collect(Collectors.toList()), "用水户信息");
     }

+ 32 - 0
pipe-network-service/zksy-admin/src/test/java/com/zksy/web/controller/WaterSupply/WaterFacilityExportControllerContractTest.java

@@ -0,0 +1,32 @@
+package com.zksy.web.controller.WaterSupply;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.lang.reflect.Method;
+import java.time.LocalDateTime;
+import java.util.Arrays;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+class WaterFacilityExportControllerContractTest {
+
+    @Test
+    void allFacilityExportsUseTheFrontendDateTimeContract() {
+        for (String methodName : new String[]{"sourceExport", "plantExport", "pumpExport", "pipeExport", "userExport"}) {
+            Method method = Arrays.stream(WaterFacilityExportController.class.getDeclaredMethods())
+                    .filter(candidate -> candidate.getName().equals(methodName))
+                    .findFirst()
+                    .orElseThrow();
+
+            Arrays.stream(method.getParameters())
+                    .filter(parameter -> parameter.getType().equals(LocalDateTime.class))
+                    .forEach(parameter -> {
+                        DateTimeFormat format = parameter.getAnnotation(DateTimeFormat.class);
+                        assertTrue(format != null, methodName + " must declare @DateTimeFormat");
+                        assertEquals("yyyy-MM-dd HH:mm:ss", format.pattern(), methodName);
+                    });
+        }
+    }
+}