|
@@ -3,6 +3,8 @@ package com.ruoyi.quartz.task;
|
|
|
import cn.hutool.http.HttpUtil;
|
|
|
import com.alibaba.fastjson2.JSON;
|
|
|
import com.ruoyi.business.domain.BizDevice;
|
|
|
+import com.ruoyi.business.domain.ZAssay;
|
|
|
+import com.ruoyi.business.domain.ZAssayResult;
|
|
|
import com.ruoyi.business.mapper.BizDeviceMapper;
|
|
|
import com.ruoyi.business.mapper.ZAssayMapper;
|
|
|
import com.ruoyi.business.mapper.ZAssayResultMapper;
|
|
@@ -13,6 +15,7 @@ import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
|
+import org.springframework.util.StopWatch;
|
|
|
|
|
|
import java.util.Collection;
|
|
|
import java.util.Date;
|
|
@@ -56,11 +59,14 @@ public class RyTask
|
|
|
@Autowired
|
|
|
private ZAssayResultMapper assayResultMapper;
|
|
|
|
|
|
+ public final static StopWatch watch = new StopWatch("task");
|
|
|
+
|
|
|
/**
|
|
|
*
|
|
|
* 同步化验设备的状态
|
|
|
*/
|
|
|
public void syncDevice(){
|
|
|
+ watch.start("syncDevice");
|
|
|
//获取本地的所有设备信息
|
|
|
List<BizDevice> bizDevices = this.bizDeviceMapper.selectBizDeviceList(null);
|
|
|
if(CollectionUtils.isEmpty(bizDevices)){
|
|
@@ -98,9 +104,12 @@ public class RyTask
|
|
|
bizDevice.setUpdateTime(DateUtils.getNowDate());
|
|
|
this.bizDeviceMapper.updateBizDevice(bizDevice);
|
|
|
}else {
|
|
|
- log.error("通过设备编号{}去匹配SqlServer设备数据时,没有查询到", deviceNo);
|
|
|
+ log.error("通过设备编号{}去匹配SqlServer设备数据时,没有查询到,无法更新", deviceNo);
|
|
|
}
|
|
|
}
|
|
|
+ //计算耗时
|
|
|
+ watch.stop();
|
|
|
+ log.info("同步设备信息结束,耗时{} ms", watch.getLastTaskTimeMillis());
|
|
|
}
|
|
|
|
|
|
|
|
@@ -108,13 +117,33 @@ public class RyTask
|
|
|
* 定时任务 同步化验信息
|
|
|
*/
|
|
|
public void syncAssay(){
|
|
|
- log.info("进入了定时任务:同步化验信息逻辑处理");
|
|
|
+ watch.start("syncAssay");
|
|
|
//获取同步的最新的ID
|
|
|
Long id = this.assayMapper.selectMaxId();
|
|
|
+ log.info("进入了定时任务:同步化验信息逻辑处理,上次同步到的最大的记录ID为{}", id);
|
|
|
//查询待同步的数据
|
|
|
-
|
|
|
+ //获取SqlServer数据库的设备实时信息
|
|
|
+ String result;
|
|
|
+ List<ZAssay> remoteList;
|
|
|
+ try {
|
|
|
+ result = HttpUtil.get(SQL_SERVER_REMOTE_INTERFACE_ADDR + "/assayList?id=" + id, HTTP_GET_TIME_OUT_MILLION_SECONDS);
|
|
|
+ log.info("调用获取最新的化验记录接口返回的结果为{}", result);
|
|
|
+ remoteList = JSON.parseArray(result, ZAssay.class);
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new RuntimeException("调用获取最新的化验记录接口异常,异常信息为:" + e.getMessage());
|
|
|
+ }
|
|
|
+ log.info("调用最新的化验记录接口转换完对象以后,获取到的需要同步的数据为{}", JSON.toJSONString(remoteList));
|
|
|
+ if(CollectionUtils.isEmpty(remoteList)){
|
|
|
+ log.error("同步最新的化验记录的时候,没有查询到最新的数据,无法同步");
|
|
|
+ return;
|
|
|
+ }
|
|
|
//同步数据并插入到数据库
|
|
|
-
|
|
|
+ for (ZAssay zAssay : remoteList) {
|
|
|
+ this.assayMapper.insertZAssay(zAssay);
|
|
|
+ }
|
|
|
+ //计算耗时
|
|
|
+ watch.stop();
|
|
|
+ log.info("同步最新的化验数据结束,耗时{} ms", watch.getLastTaskTimeMillis());
|
|
|
}
|
|
|
|
|
|
|
|
@@ -122,13 +151,48 @@ public class RyTask
|
|
|
* 定时任务 同步化验结果明细信息
|
|
|
*/
|
|
|
public void syncAssayResult(){
|
|
|
- log.info("进入了定时任务:同步化验结果明细信息逻辑处理");
|
|
|
+ watch.start("syncAssayResult");
|
|
|
//获取同步的最新的ID
|
|
|
Long id = this.assayResultMapper.selectMaxId();
|
|
|
+ log.info("进入了定时任务:同步化验结果明细信息逻辑处理,上次同步到的最大的记录ID为{}", id);
|
|
|
//查询待同步的数据
|
|
|
-
|
|
|
+ //获取SqlServer数据库的设备实时信息
|
|
|
+ String result;
|
|
|
+ List<ZAssayResult> remoteList;
|
|
|
+ try {
|
|
|
+ result = HttpUtil.get(SQL_SERVER_REMOTE_INTERFACE_ADDR + "/assayResultList?id=" + id, HTTP_GET_TIME_OUT_MILLION_SECONDS);
|
|
|
+ log.info("调用获取最新的化验记录明细接口返回的结果为{}", result);
|
|
|
+ remoteList = JSON.parseArray(result, ZAssayResult.class);
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new RuntimeException("调用获取最新的化验记录明细接口异常,异常信息为:" + e.getMessage());
|
|
|
+ }
|
|
|
+ log.info("调用最新的化验记录明细转换完对象以后,获取到的需要同步的数据为{}", JSON.toJSONString(remoteList));
|
|
|
+ if(CollectionUtils.isEmpty(remoteList)){
|
|
|
+ log.error("同步最新的化验记录明细的时候,没有查询到最新的数据,无法同步");
|
|
|
+ return;
|
|
|
+ }
|
|
|
//同步数据并插入到数据库
|
|
|
+ for (ZAssayResult assayResult : remoteList) {
|
|
|
+ this.assayResultMapper.insertZAssayResult(assayResult);
|
|
|
+ }
|
|
|
+ //计算耗时
|
|
|
+ watch.stop();
|
|
|
+ log.info("同步化验结果明细结束,耗时{} ms", watch.getLastTaskTimeMillis());
|
|
|
}
|
|
|
|
|
|
|
|
|
+ public static void main(String[] args) {
|
|
|
+ String result;
|
|
|
+ List<BizDevice> remoteList;
|
|
|
+ try {
|
|
|
+// result = "";
|
|
|
+ result = null;
|
|
|
+ log.info("调用同步设备接口返回的结果为{}", result);
|
|
|
+ remoteList = JSON.parseArray(result, BizDevice.class);
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new RuntimeException("调用同步设备接口异常,异常信息为:" + e.getMessage());
|
|
|
+ }
|
|
|
+ System.out.println(JSON.toJSONString(remoteList));
|
|
|
+ }
|
|
|
+
|
|
|
}
|