Ver Fonte

修改日期问题

邵洋 há 1 ano atrás
pai
commit
649ea4a8c2

+ 1 - 1
data-service/src/main/java/com/zksy/data/controller/TestController.java

@@ -189,7 +189,7 @@ public class TestController {
         //财务报表主表
 //        xcrMainFinancialStatementsService.saveDataByUniCode("gateway/api/1/getCwbbzbByUniscid");
         //发票开票信息
-//        xcrInvoiceIssuanceService.saveDataByUniCode("gateway/api/1/fpkpxxByUniscid");
+        xcrInvoiceIssuanceService.saveDataByUniCode("gateway/api/1/fpkpxxByUniscid");
         //非正常户认定解除信息表
 //        xcrConfirmationTerminationService.saveDataByUniCode("gateway/api/1/getFzchrdjcxxbByUniscid");
         //纳税人信用等级

+ 7 - 3
data-service/src/main/java/com/zksy/data/domain/po/XcrInvoiceIssuance.java

@@ -3,7 +3,9 @@ package com.zksy.data.domain.po;
 import com.baomidou.mybatisplus.annotation.*;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.zksy.data.domain.po.BasePo;
+import com.zksy.data.utils.CustomDateDeserializer;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -162,13 +164,15 @@ public class XcrInvoiceIssuance extends BasePo implements Serializable {
     @JsonProperty("OPSTAT")
     private String OPSTAT;  // 处理状态
 
-    @TableField("APPLYDATE")
     @JsonProperty("APPLYDATE")
-    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MMM-yy", timezone = "GMT+8")
-    private Date APPLYDATE;  // 申请日期
+    @TableField(exist = false)
+    private String APPLYDATE;  // 申请日期
 
     @TableField("ENTERINGTIME")
     @JsonProperty("ENTERINGTIME")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date ENTERINGTIME;  // 数据接入日期
+
+    @TableField("APPLYDATE")
+    private Date a;
 }

+ 17 - 0
data-service/src/main/java/com/zksy/data/service/impl/XcrInvoiceIssuanceServiceImpl.java

@@ -9,12 +9,17 @@ import com.zksy.data.service.XcrInvoiceIssuanceService;
 import com.zksy.data.mapper.XcrInvoiceIssuanceMapper;
 import com.zksy.data.utils.RedisService;
 import com.zksy.data.utils.XhRequestUtil;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.List;
+import java.util.Locale;
 import java.util.Vector;
 
 /**
@@ -33,6 +38,7 @@ public class XcrInvoiceIssuanceServiceImpl extends ServiceImpl<XcrInvoiceIssuanc
 
     @Override
     @Transactional(rollbackFor = Exception.class)
+
     public void saveDataByUniCode(String address) {
         //模拟从数据库中取数据大约为3000-4000条
         List<String> creditCodes = (List<String>) redisService.getList("creditNames").get(0);
@@ -47,6 +53,17 @@ public class XcrInvoiceIssuanceServiceImpl extends ServiceImpl<XcrInvoiceIssuanc
                 toDatabaseList.addAll(list);
             }
         });
+        SimpleDateFormat inputFormat = new SimpleDateFormat("dd-MMM-yy", Locale.US);
+        toDatabaseList.stream().map(q->{
+            Date date;
+            try {
+                date = inputFormat.parse(q.getAPPLYDATE());
+            } catch (ParseException e) {
+                throw new RuntimeException(e);
+            }
+            q.setA(date);
+            return q;
+        });
         this.remove(null);
         this.saveBatch(toDatabaseList);
         log.info("发票开票信息同步完成");

+ 33 - 0
data-service/src/main/java/com/zksy/data/utils/CustomDateDeserializer.java

@@ -0,0 +1,33 @@
+package com.zksy.data.utils;
+
+import com.fasterxml.jackson.core.JsonParser;
+import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+
+import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+public class CustomDateDeserializer extends JsonDeserializer<Date> {
+    private static final SimpleDateFormat APPLY_DATE_FORMAT = new SimpleDateFormat("dd-MMM-yy", Locale.US);
+    private static final SimpleDateFormat OTHER_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+    @Override
+    public Date deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
+        String dateStr = p.getText();
+        if (dateStr == null || dateStr.trim().isEmpty()) {
+            return null; // 或者返回默认日期
+        }
+        try {
+            if (dateStr.length() == 8) { // "25-MAY-16" 格式
+                return APPLY_DATE_FORMAT.parse(dateStr);
+            } else { // 其他日期格式
+                return OTHER_DATE_FORMAT.parse(dateStr);
+            }
+        } catch (ParseException e) {
+            throw new RuntimeException("Failed to parse date: " + dateStr, e);
+        }
+    }
+}