From b63f41b8a0cfce68770e5cb02c8dd3fd994f0c59 Mon Sep 17 00:00:00 2001
From: chengf <2156125618@qq.com>
Date: 星期二, 22 七月 2025 18:37:54 +0800
Subject: [PATCH] 修改费用导入模块2025/07/22

---
 service-api/src/main/java/com/java110/api/importData/DefaultImportDataAdapt.java |   51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 51 insertions(+), 0 deletions(-)

diff --git a/service-api/src/main/java/com/java110/api/importData/DefaultImportDataAdapt.java b/service-api/src/main/java/com/java110/api/importData/DefaultImportDataAdapt.java
index e2ba224..7911e65 100644
--- a/service-api/src/main/java/com/java110/api/importData/DefaultImportDataAdapt.java
+++ b/service-api/src/main/java/com/java110/api/importData/DefaultImportDataAdapt.java
@@ -10,7 +10,9 @@
 import com.java110.utils.util.Assert;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 
@@ -19,6 +21,55 @@
     @Autowired
     private IPayFeeBatchV1InnerServiceSMO payFeeBatchV1InnerServiceSMOImpl;
 
+    private static final Date EXCEL_EPOCH;
+
+    static {
+        // 鍒濆鍖朎xcel璧峰鏃ユ湡锛�1899-12-30锛屽搴擡xcel鐨�0澶╋級
+        Calendar cal = Calendar.getInstance();
+        cal.set(1899, Calendar.DECEMBER, 30, 0, 0, 0);
+        cal.set(Calendar.MILLISECOND, 0);
+        EXCEL_EPOCH = cal.getTime();
+    }
+
+    /**
+     * 灏咵xcel鏃ユ湡鏁板�硷紙濡�45734.0锛夎浆鎹负Date瀵硅薄
+     * @param excelDate Excel鏃ユ湡鏁板��
+     * @return 瀵瑰簲鐨凞ate瀵硅薄
+     */
+    public static Date doubleToDate(double excelDate) {
+        // 澶勭悊Excel 1900骞撮棸骞撮敊璇紙Excel閿欒鍦板皢1900骞磋涓洪棸骞达級
+        long days = (long) Math.floor(excelDate);
+        if (days >= 60) { // 1900-03-01鍙婁箣鍚庣殑鏃ユ湡闇�瑕佸噺1澶�
+            days--;
+        }
+
+        // 璁$畻鎬绘绉掓暟锛堝ぉ鏁伴儴鍒� + 鏃堕棿閮ㄥ垎锛�
+        long totalMillis = (long)(days * 86400000L) // 1澶� = 86400000姣
+                + (long)((excelDate - days) * 86400000L);
+
+        // 浠庡熀鍑嗘棩鏈熷紑濮嬬疮鍔犳绉掓暟
+        return new Date(EXCEL_EPOCH.getTime() + totalMillis);
+    }
+
+    /**
+     * 澶勭悊Excel鏃ユ湡瀛楃涓诧紙濡�"45734.0"锛夛紝杞崲涓�"yyyy-MM-dd"鏍煎紡
+     * @param strDate Excel鏃ユ湡鏁板�煎瓧绗︿覆
+     * @return 鏍煎紡鍖栧悗鐨勬棩鏈熷瓧绗︿覆
+     * @throws ParseException 杞崲澶辫触鏃舵姏鍑�
+     */
+    public String handleExcelDateString(String strDate){
+        // 1. 灏嗗瓧绗︿覆杞崲涓篸ouble锛堝"45734.0" -> 45734.0锛�
+        double excelDateValue = Double.parseDouble(strDate);
+
+        // 2. 灏咵xcel鏁板�艰浆鎹负Date瀵硅薄
+        Date tDate = doubleToDate(excelDateValue);
+
+        // 3. 鏍煎紡鍖栦负"yyyy-MM-dd"
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        return sdf.format(tDate);
+    }
+
+
     @Autowired
     private IUserInnerServiceSMO userInnerServiceSMOImpl;
     protected boolean hasSpecialCharacters(String str) {

--
Gitblit v1.8.0