Ver código fonte

feature 代码提交

xiahan 3 meses atrás
pai
commit
75d1ab66c3

+ 31 - 5
zhsw-common/src/main/java/com/rongwei/zhsw/system/importListener/MeterReadingRecordListener.java

@@ -45,7 +45,10 @@ public class MeterReadingRecordListener extends AnalysisEventListener<ImportMete
     // 时间异常的记录
     private List<ImportMeterReadingRecordVo> timeAnomalyList = new ArrayList<>();
 
-    private SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+    private SimpleDateFormat YMD_SDF = new SimpleDateFormat("yyyyMMdd");
+
+    private SimpleDateFormat Y_SDF = new SimpleDateFormat("yyyy");
+    private SimpleDateFormat M_SDF = new SimpleDateFormat("M");
 
     public MeterReadingRecordListener(SwUserManagementServiceImpl userManagementService, SwWaterUsageEntryServiceImpl waterUsageEntryService) {
         this.swUserManagementService = userManagementService;
@@ -83,12 +86,15 @@ public class MeterReadingRecordListener extends AnalysisEventListener<ImportMete
             duplicateRecordList.add(importMeterReadingRecordVo);
             return;
         }
-
+        String currentDataFormat = YMD_SDF.format(importMeterReadingRecordVo.getReadingDate());
         // 判断抄表日期和当前日期的关系
-        if (sdf.format(importMeterReadingRecordVo.getReadingDate()).compareTo(sdf.format(nowDate)) > 0) {
+        if (currentDataFormat.compareTo(YMD_SDF.format(nowDate)) > 0) {
             timeAnomalyList.add(importMeterReadingRecordVo);
             return;
         }
+        importMeterReadingRecordVo.setCheckRepeatData(importMeterReadingRecordVo.getAccountNumber()+
+                currentDataFormat+
+                importMeterReadingRecordVo.getConsumption().stripTrailingZeros().toPlainString());
         /**
          * 校验导入的日期和当前日期的关系
          */
@@ -110,9 +116,29 @@ public class MeterReadingRecordListener extends AnalysisEventListener<ImportMete
         if (recordList.isEmpty()) {
             return;
         }
-
+        // excel中解析出的数据
+        List<String> years = recordList.stream().map(info -> Y_SDF.format(info.getReadingDate())).distinct().collect(Collectors.toList());
+        List<String> months = recordList.stream().map(info -> M_SDF.format(info.getReadingDate())).distinct().collect(Collectors.toList());
         // 获取数据中的所有户号
         List<String> accountNumList = recordList.stream().map(ImportMeterReadingRecordVo::getAccountNumber).distinct().collect(Collectors.toList());
+        // 查询是否存在抄表记录
+        List<SwWaterUsageEntryDo> existsData = swWaterUsageEntryService.list(new LambdaQueryWrapper<SwWaterUsageEntryDo>()
+                .select(SwWaterUsageEntryDo::getUsernumber,
+                        SwWaterUsageEntryDo::getCurrentreadingdate,
+                        SwWaterUsageEntryDo::getThisreading)
+                .eq(BaseDo::getDeleted, "0")
+                .in(SwWaterUsageEntryDo::getYear, years)
+                .in(SwWaterUsageEntryDo::getMonth, months)
+                .in(SwWaterUsageEntryDo::getUsernumber, accountNumList));
+        // 按照年月日分组
+        Map<String, List<SwWaterUsageEntryDo>> existsDataMap = existsData.parallelStream().collect(Collectors.groupingBy(info -> info.getUsernumber() +
+                YMD_SDF.format(info.getCurrentreadingdate()) +
+                info.getThisreading().stripTrailingZeros().toPlainString()));
+        List<ImportMeterReadingRecordVo> repeatDataList = recordList.parallelStream().filter(data -> existsDataMap.containsKey(data.getCheckRepeatData())).collect(Collectors.toList());
+        recordList = recordList.parallelStream().filter(data->!existsDataMap.containsKey(data.getCheckRepeatData())).collect(Collectors.toList());
+        if(!repeatDataList.isEmpty()){
+            log.error("以下数据已存在相同的抄表记录:{}",repeatDataList);
+        }
         // 获取户号信息
         ownerMap = Lists.partition(accountNumList, 2500).stream().map(accountNum ->
                         swUserManagementService.list(new LambdaQueryWrapper<SwUserManagementDo>()
@@ -153,7 +179,7 @@ public class MeterReadingRecordListener extends AnalysisEventListener<ImportMete
                             return ownerData.getLastmeterreaddate() != null && ownerData.getLastmeterreaddate().compareTo(record.getReadingDate()) >= 0;
                         }
                 )
-                .map(info -> info.getAccountNumber() + '-' + sdf.format(info.getReadingDate()))
+                .map(info -> info.getAccountNumber() + '-' + YMD_SDF.format(info.getReadingDate()))
                 .collect(Collectors.joining(" "));
         if (StringUtils.isNotBlank(errorStrDesc)) {
             throw new CustomException(

+ 1 - 1
zhsw-common/src/main/java/com/rongwei/zhsw/system/service/impl/PrintServiceImpl.java

@@ -109,7 +109,7 @@ public class PrintServiceImpl implements PrintService {
 
             listData.add(dateStr);
             listData.add(swUserManagementDo.getUsernumber());
-            listData.add(swUserManagementDo.getAccountbalance().stripTrailingZeros());
+            listData.add(swUserManagementDo.getAccountbalance().stripTrailingZeros().toPlainString());
             String usertype = swUserManagementDo.getUsertypeid();
             SysDictDo sysDictDo = sysDictDoList.stream().filter(dict -> dict.getValue().equals(usertype)).findFirst().orElse(null);
             listData.add(sysDictDo == null ? "" : sysDictDo.getName());

+ 3 - 0
zhsw-entity/src/main/java/com/rongwe/zhsw/system/vo/ImportMeterReadingRecordVo.java

@@ -33,4 +33,7 @@ public class ImportMeterReadingRecordVo {
      */
     @ExcelProperty(index = 3)
     private Date readingDate;
+
+
+    private String checkRepeatData;
 }

BIN
zhsw-server/src/main/resources/temp/cjdTemp/徐州大吴水务催缴单.docx