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

Merge remote-tracking branch 'origin/master'

czt 1 месяц назад
Родитель
Сommit
1fd2b6b9dc

+ 35 - 10
ruoyi-api/src/main/java/com/ruoyi/api/domain/vo/MeterInfoQueryVo.java

@@ -6,24 +6,49 @@ import javax.validation.constraints.Size;
  * 水表档案查询请求参数
  */
 public class MeterInfoQueryVo {
-    
+
+    /**
+     * 钢印号,多个时用英文逗号分隔,最多支持1000个
+     */
     @Size(max = 10000, message = "钢印号最多支持1000个,用逗号分隔")
     private String lifetimeCode;
-    
+
+    /**
+     * 水表编号(水表识别唯一标识),多个时用英文逗号分隔,最多支持1000个
+     */
     @Size(max = 10000, message = "水表编号最多支持1000个,用逗号分隔")
-    private String meterCode;
-    
+    private String elecAddress;
+
+    /**
+     * 水表类型(字典0:远传;1:非远传2:卡表)
+     */
     private Integer meterType;
-    
-    private Integer meterPlaceCode;
+
+    /**
+     * 水表厂家(字典 0:潍微科技;1:三川智慧;2:唐山汇中...)
+     */
+    private Integer meterPlaceNameID;
 
     // getter setter 方法
     public String getLifetimeCode() { return lifetimeCode; }
     public void setLifetimeCode(String lifetimeCode) { this.lifetimeCode = lifetimeCode; }
-    public String getMeterCode() { return meterCode; }
-    public void setMeterCode(String meterCode) { this.meterCode = meterCode; }
+
     public Integer getMeterType() { return meterType; }
     public void setMeterType(Integer meterType) { this.meterType = meterType; }
-    public Integer getMeterPlaceCode() { return meterPlaceCode; }
-    public void setMeterPlaceCode(Integer meterPlaceCode) { this.meterPlaceCode = meterPlaceCode; }
+
+    public String getElecAddress() {
+        return elecAddress;
+    }
+
+    public void setElecAddress(String elecAddress) {
+        this.elecAddress = elecAddress;
+    }
+
+    public Integer getMeterPlaceNameID() {
+        return meterPlaceNameID;
+    }
+
+    public void setMeterPlaceNameID(Integer meterPlaceNameID) {
+        this.meterPlaceNameID = meterPlaceNameID;
+    }
 }

+ 33 - 8
ruoyi-api/src/main/java/com/ruoyi/api/service/impl/WwkjMeterCardHistoryServiceImpl.java

@@ -17,10 +17,10 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class WwkjMeterCardHistoryServiceImpl implements IWwkjMeterCardHistoryService {
@@ -67,16 +67,41 @@ public class WwkjMeterCardHistoryServiceImpl implements IWwkjMeterCardHistorySer
                 return null;
             }
 
-            // 3. 转换数据并保存
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            // 3. 转换数据并仅保留最新一条数据
             List<WwkjMeterCardHistory> historyList = new ArrayList<>();
-            for (ExternalMeterCardHistoryResponse.ExternalMeterCardHistoryData externalData : externalResponse.getData()) {
-                WwkjMeterCardHistory history = convertToMeterCardHistory(externalData);
+            // 3.1 根据 表卡编号 分组,并获取最新的一条数据
+            Map<String, ExternalMeterCardHistoryResponse.ExternalMeterCardHistoryData> collect = externalResponse.getData()
+                    .stream()
+                    .collect(Collectors.groupingBy(
+                            ExternalMeterCardHistoryResponse.ExternalMeterCardHistoryData::getCardCode,
+                            Collectors.collectingAndThen(
+                                    Collectors.maxBy(Comparator.comparing(
+                                            e -> LocalDateTime.parse(e.getOperateDate(), formatter)
+                                    )),
+                                    o -> o.orElse(null)
+                            )
+                    ));
+            // 3.2 数据入库
+            collect.values().forEach(e -> {
+                WwkjMeterCardHistory history = convertToMeterCardHistory(e);
                 historyList.add(history);
 
                 // 4. 保存到数据库(新增操作,生命周期记录通常只新增不更新)
                 history.setDelFlag("0"); // 设置删除标志为正常
                 wwkjMeterCardHistoryMapper.insertWwkjMeterCardHistory(history);
-            }
+            });
+
+//            // 3. 转换数据并保存
+//            List<WwkjMeterCardHistory> historyList = new ArrayList<>();
+//            for (ExternalMeterCardHistoryResponse.ExternalMeterCardHistoryData externalData : externalResponse.getData()) {
+//                WwkjMeterCardHistory history = convertToMeterCardHistory(externalData);
+//                historyList.add(history);
+//
+//                // 4. 保存到数据库(新增操作,生命周期记录通常只新增不更新)
+//                history.setDelFlag("0"); // 设置删除标志为正常
+//                wwkjMeterCardHistoryMapper.insertWwkjMeterCardHistory(history);
+//            }
 
             return historyList;
         } catch (Exception e) {