Quellcode durchsuchen

设备校验相关

liuyc vor 2 Jahren
Ursprung
Commit
d9e17f294d

+ 39 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TrialDeviceInfoServiceImpl.java

@@ -33,13 +33,17 @@ import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.resource.feign.NewIOSSClient;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -63,6 +67,41 @@ public class TrialDeviceInfoServiceImpl extends BaseServiceImpl<TrialDeviceInfoM
         return this.saveOrUpdate(obj);
     }
 
+    /**
+     * 修改校验状态定时任务
+     * cron = "0 0 1 * * ?" 每天1点执行
+     */
+    @Scheduled(cron = "0 0 1 * * ?")
+    public void syncUpdateIsCalibration() {
+        //获取所有数据
+        List<TrialDeviceInfo> trialDeviceInfos = baseMapper.selectList(Wrappers.<TrialDeviceInfo>lambdaQuery());
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        String format = DateUtil.format(new Date(), "yyyy-MM-dd");
+        try {
+            List<TrialDeviceInfo> updateData = new ArrayList<>();
+            for (TrialDeviceInfo trialDeviceInfo : trialDeviceInfos) {
+                if (ObjectUtil.isNotEmpty(trialDeviceInfo.getLastCalibrationTime()) && ObjectUtil.isNotEmpty(trialDeviceInfo.getCalibrationCycle())) {
+                    String lastCalibrationTime = DateUtil.format(trialDeviceInfo.getLastCalibrationTime(), "yyyy-MM-dd");
+                    long dayTimes = trialDeviceInfo.getCalibrationCycle() * 30 * (24 * 60 * 60 * 1000); //周期时间戳 30天1个周期
+                    long lastCalibrationTimes = sdf.parse(lastCalibrationTime).getTime(); //上次校准时间戳
+                    long nowTimes = sdf.parse(format).getTime(); //当前时间戳
+                    //最近一次校验时间超过了周期,就需要再次校验
+                    if ((dayTimes + lastCalibrationTimes) >= nowTimes) {  //TODO 业务不明
+                        //上次校准时间修改为当前时间
+                        trialDeviceInfo.setLastCalibrationTime(DateUtil.parse(format, "yyyy-MM-dd"));
+                        trialDeviceInfo.setIsCalibration(1); //是
+                        updateData.add(trialDeviceInfo);
+                    }
+                }
+            }
+            //修改
+            this.saveOrUpdateBatch(updateData, 1000);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+    }
+
+
     @Override
     public TrialDeviceInfo detail(Long id) {
         return baseMapper.selectById(id);