From e301d5c4e6de0aca423c54481d100e6ca2886b01 Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期六, 08 十一月 2025 22:57:12 +0800
Subject: [PATCH] 清洗数据库日期错误,并且导入日期通用化处理

---
 src/main/java/com/example/server/utils/NumToDate.java |  133 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 133 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/example/server/utils/NumToDate.java b/src/main/java/com/example/server/utils/NumToDate.java
new file mode 100644
index 0000000..a2cf117
--- /dev/null
+++ b/src/main/java/com/example/server/utils/NumToDate.java
@@ -0,0 +1,133 @@
+package com.example.server.utils;
+
+import com.example.server.progressTrack.model.DjJdgzDismantTrack;
+import com.example.server.progressTrack.model.DjJdgzNetworkLevel3;
+import com.example.server.progressTrack.model.DjJdgzNetworkLevel3List;
+import com.example.server.progressTrack.model.DjJdgzTrackRecord;
+import com.example.server.progressTrack.service.DjJdgzDismantTrackService;
+import com.example.server.progressTrack.service.DjJdgzNetworkLevel3ListService;
+import com.example.server.progressTrack.service.DjJdgzNetworkLevel3Service;
+import com.example.server.progressTrack.service.DjJdgzTrackRecordService;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.DateUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.regex.Pattern;
+
+@Component
+public class NumToDate {
+    @Autowired
+    private DjJdgzNetworkLevel3ListService level3ListService;
+    @Autowired
+    private DjJdgzTrackRecordService recordService;
+    @Autowired
+    private DjJdgzDismantTrackService dismantTrackService;
+
+    public void numDate() {
+        Pattern numPattern = Pattern.compile("^\\d+$");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        List<DjJdgzNetworkLevel3List> list = level3ListService.getAll();
+        List<DjJdgzTrackRecord> list1 = recordService.getAll();
+        List<DjJdgzDismantTrack> list2 = dismantTrackService.getAll();
+        for (DjJdgzNetworkLevel3List item : list) {
+            String requiredCompletionTime = item.getRequiredCompletionTime();
+            String actualCompletion = item.getActualCompletion();
+            //鍒ゆ柇鏄惁涓烘暟瀛�
+            boolean matches = false;
+            boolean matches2 = false;
+            if (StringUtils.isNotBlank(requiredCompletionTime)) {
+                matches = numPattern.matcher(requiredCompletionTime).matches();
+            }
+            if (StringUtils.isNotBlank(actualCompletion)) {
+                matches2 = numPattern.matcher(actualCompletion).matches();
+            }
+
+            if (matches) {
+                //瀵规暟瀛楄繘琛岃浆鎹㈡棩鏈焬yyy-mm-dd
+                Date date = excelToDateUsingPOI(Double.parseDouble(requiredCompletionTime));
+                String formatDate = sdf.format(date);
+                item.setRequiredCompletionTime(formatDate);
+                level3ListService.update(item);
+            }
+            if (matches2) {
+                Date date2 = excelToDateUsingPOI(Double.parseDouble(actualCompletion));
+                String formatDate2 = sdf.format(date2);
+                item.setActualCompletion(formatDate2);
+                level3ListService.update(item);
+            }
+        }
+        for (DjJdgzTrackRecord item : list1) {
+            String estimatedCompletionTime = item.getEstimatedCompletionTime();
+            boolean matches = false;
+            if (StringUtils.isNotBlank(estimatedCompletionTime)) {
+                matches = numPattern.matcher(estimatedCompletionTime).matches();
+            }
+            if (matches) {
+                //瀵规暟瀛楄繘琛岃浆鎹㈡棩鏈焬yyy-mm-dd
+                Date date = excelToDateUsingPOI(Double.parseDouble(estimatedCompletionTime));
+                String formatDate = sdf.format(date);
+                item.setEstimatedCompletionTime(formatDate);
+                recordService.update(item);
+            }
+        }
+        for (DjJdgzDismantTrack item : list2) {
+            String dismantTime = item.getDismantTime();
+            String exitTime = item.getExitTime();
+            String warehouseTime = item.getWarehouseTime();
+            String returnWeightTime = item.getReturnWeightTime();
+            //鍒ゆ柇鏄惁涓烘暟瀛�
+            boolean matches = false;
+            boolean matches2 = false;
+            boolean matches3 = false;
+            boolean matches4 = false;
+            if (StringUtils.isNotBlank(dismantTime)) {
+                matches = numPattern.matcher(dismantTime).matches();
+            }
+            if (StringUtils.isNotBlank(exitTime)) {
+                matches2 = numPattern.matcher(exitTime).matches();
+            }
+            if (StringUtils.isNotBlank(warehouseTime)) {
+                matches3 = numPattern.matcher(warehouseTime).matches();
+            }
+            if (StringUtils.isNotBlank(returnWeightTime)) {
+                matches4 = numPattern.matcher(returnWeightTime).matches();
+            }
+            if (matches) {
+                //瀵规暟瀛楄繘琛岃浆鎹㈡棩鏈焬yyy-mm-dd
+                Date date = excelToDateUsingPOI(Double.parseDouble(dismantTime));
+                String formatDate = sdf.format(date);
+                item.setDismantTime(formatDate);
+                dismantTrackService.update(item);
+            }
+            if (matches2) {
+                Date date2 = excelToDateUsingPOI(Double.parseDouble(exitTime));
+                String formatDate2 = sdf.format(date2);
+                item.setExitTime(formatDate2);
+                dismantTrackService.update(item);
+            }
+            if (matches3) {
+                Date date3 = excelToDateUsingPOI(Double.parseDouble(warehouseTime));
+                String formatDate3 = sdf.format(date3);
+                item.setWarehouseTime(formatDate3);
+                dismantTrackService.update(item);
+            }
+            if (matches4) {
+                Date date4 = excelToDateUsingPOI(Double.parseDouble(returnWeightTime));
+                String formatDate4 = sdf.format(date4);
+                item.setReturnWeightTime(formatDate4);
+                dismantTrackService.update(item);
+            }
+        }
+    }
+
+    public static Date excelToDateUsingPOI(double excelDate) {
+        return DateUtil.getJavaDate(excelDate);
+    }
+
+}

--
Gitblit v1.9.1