chengf
2025-08-05 c4a333b83ba54bcadf2a6a2b34fe66ab88a6ba9d
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 {
        // 初始化Excel起始日期(1899-12-30,对应Excel的0天)
        Calendar cal = Calendar.getInstance();
        cal.set(1899, Calendar.DECEMBER, 30, 0, 0, 0);
        cal.set(Calendar.MILLISECOND, 0);
        EXCEL_EPOCH = cal.getTime();
    }
    /**
     * 将Excel日期数值(如45734.0)转换为Date对象
     * @param excelDate Excel日期数值
     * @return 对应的Date对象
     */
    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. 将字符串转换为double(如"45734.0" -> 45734.0)
        double excelDateValue = Double.parseDouble(strDate);
        // 2. 将Excel数值转换为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) {