Ver Fonte

OADATE日期格式转换

xy há 1 mês atrás
pai
commit
1c147c4dc6

+ 15 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/dynamictbval/DynamicTbValServiceImpl.java

@@ -13,6 +13,7 @@ import cn.start.tz.module.pressure2.dal.mysql.dynamictbcol.DynamicTbColMapper;
 import cn.start.tz.module.pressure2.service.dynamicOFData.IDynamicOFData;
 import cn.start.tz.module.pressure2.service.dynamictbins.DynamicTbInsService;
 import cn.start.tz.module.pressure2.util.OFDataUtils;
+import cn.start.tz.module.pressure2.util.OADateFormat;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -124,6 +125,20 @@ public class DynamicTbValServiceImpl extends ServiceImpl<DynamicTbValMapper, Dyn
             String colCode = entry.getKey();
             String valValue = entry.getValue();
 
+            // 检查是否为OA日期格式 /OADate(xxxxxx)/
+            if (valValue != null && valValue.matches("/OADate\\(([^)]+)\\)/")) {
+                try {
+                    // 提取括号内的数字
+                    String numberStr = valValue.replaceAll("/OADate\\(([^)]+)\\)/", "$1");
+                    double oaDate = Double.parseDouble(numberStr);
+                    // 转换为LocalDateTime并格式化为年-月-日
+                    java.time.LocalDateTime dateTime = OADateFormat.convertOADateToLocalDateTime(oaDate);
+                    valValue = dateTime.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                } catch (Exception e) {
+                    log.warn("OADATE日期格式转换失败: {}", valValue, e);
+                }
+            }
+
             if (existingMap.containsKey(colCode)) {
                 // 存在记录,更新值
                 DynamicTbValDO existingRecord = existingMap.get(colCode);