Browse Source

Merge branch 'master' into test

lijin 1 year ago
parent
commit
e0e9574622

+ 26 - 11
device-api-service/src/main/java/com/xy/service/DeviceSimServiceImpl.java

@@ -23,6 +23,7 @@ import com.xy.dto.MercFeeConfigSimCardDto;
 import com.xy.entity.DeviceSim;
 import com.xy.entity.DeviceSimCharge;
 import com.xy.entity.SysDictRedis;
+import com.xy.error.CommRuntimeException;
 import com.xy.mapper.DeviceSimMapper;
 import com.xy.service.be.MercService;
 import com.xy.util.ExcelUtils;
@@ -34,6 +35,7 @@ import lombok.Data;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.time.DateUtils;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
@@ -44,15 +46,13 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
-import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import static com.xy.utils.PlusBeans.toIPage;
 import static com.xy.utils.PlusBeans.toPageBean;
@@ -406,31 +406,46 @@ public class DeviceSimServiceImpl extends ServiceImpl<DeviceSimMapper, DeviceSim
          */
         @Override
         public void doAfterAllAnalysed(AnalysisContext context) {
+            StringJoiner errorJoiner = new StringJoiner(",");
             LocalDateTime now = LocalDateTime.now();
             JList<DeviceSim> saveDeviceSims = new JArrayList<>();
-            DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
             sims.forEach(uploadSim -> {
                 try {
-                    String activateTime = uploadSim.getActivateTime();
-                    String timeout = uploadSim.getTimeout();
-                    String lastRenewalTime = uploadSim.getLastRenewalTime();
                     DeviceSim deviceSim = new DeviceSim()
                             .setId(uploadSim.getSimId().trim().replace("\"", "").replace("'", ""))
                             .setType(uploadSim.getType())
-                            .setActivateTime(Emptys.check(activateTime) ? LocalDate.parse(activateTime.trim(), df).atTime(0, 0, 0) : null)
-                            .setTimeout(Emptys.check(timeout) ? LocalDate.parse(timeout.trim(), df).atTime(0, 0, 0) : null)
-                            .setLastRenewalTime(Emptys.check(lastRenewalTime) ? LocalDate.parse(lastRenewalTime.trim(), df).atTime(0, 0, 0) : null)
+                            .setActivateTime(toLocalDateTime(uploadSim.getActivateTime()))
+                            .setTimeout(toLocalDateTime(uploadSim.getTimeout()))
+                            .setLastRenewalTime(toLocalDateTime(uploadSim.getLastRenewalTime()))
                             .setCreateTime(now)
                             .setUpdateTime(now)
                             .setIsTest(Emptys.check(uploadSim.getIsTest()) && uploadSim.getIsTest().equals("是"));
                     saveDeviceSims.add(deviceSim);
                 } catch (Exception e) {
+                    String format = String.format("%s导入异常:%s", uploadSim.getSimId(), e.getMessage());
+                    errorJoiner.add(format);
                     log.error("", e);
                 }
             });
             if (Emptys.check(saveDeviceSims)) {
                 deviceSimService.saveOrUpdateBatch(saveDeviceSims);
             }
+            if (errorJoiner.length() > 0) {
+                throw new CommRuntimeException(errorJoiner.toString());
+            }
+        }
+
+        private LocalDateTime toLocalDateTime(String date) {
+            if (!Emptys.check(date)) {
+                return null;
+            }
+            if (date.matches("\\d+")) {
+                Calendar calendar = new GregorianCalendar(1900, 0, -1);
+                Date dd = DateUtils.addDays(calendar.getTime(), Integer.parseInt(date));
+                return dd.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+            } else {
+                return LocalDate.parse(date, DateTimeFormatter.ofPattern("yyyy-MM-dd")).atTime(0, 0, 0);
+            }
         }
     }