perf: 优化结构转换和导出到adapter架构

dev
huangfeng 1 year ago
parent 731998dde6
commit 8e5f7a751d

@ -0,0 +1,32 @@
package com.xydl.cac.adapter;
import com.xydl.cac.entity.I2syncField;
import com.xydl.cac.entity.I2syncRecord;
import com.xydl.cac.entity.NSensor;
import com.xydl.cac.model.i2sync.Request;
import com.xydl.cac.transform.I2DataTransformer;
import com.xydl.cac.util.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@Component
@Slf4j
public class BusiAdapter {
@Resource
I2DataTransformer dataTransformer;
public void uploadData(NSensor sensor, I2syncRecord record,
List<I2syncField> fieldList, List<Map<String, Object>> dataList) throws Exception {
// 格式转换
Request request = dataTransformer.transform(sensor, record, fieldList, dataList);
// 同步和导出
String xml = JSONUtil.object2Xml(request);
}
}

@ -1,15 +1,13 @@
package com.xydl.cac.task;
import com.xydl.cac.adapter.BusiAdapter;
import com.xydl.cac.entity.*;
import com.xydl.cac.model.i2sync.*;
import com.xydl.cac.repository.I2syncRecordRepository;
import com.xydl.cac.repository.NSensorRepository;
import com.xydl.cac.service.DataService;
import com.xydl.cac.service.I2syncService;
import com.xydl.cac.transform.I2DataTransformer;
import com.xydl.cac.util.DateUtil;
import com.xydl.cac.util.DingTalkPushUtil;
import com.xydl.cac.util.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@ -32,7 +30,7 @@ public class I2syncTask {
@Resource
DataService dataService;
@Resource
I2DataTransformer dataTransformer;
BusiAdapter busiAdapter;
@Resource
DingTalkPushUtil dingTalkPushUtil;
@ -90,21 +88,16 @@ public class I2syncTask {
return;
}
int count = dataList.size();
// 格式转换
Request request = dataTransformer.transform(sensor, record, fieldList, dataList);
// 同步导出
String xml = JSONUtil.object2Xml(request);
// 同步和导出
busiAdapter.uploadData(sensor, record, fieldList, dataList);
recordRepository.save(record);
int count = dataList.size();
log.info("I2syncTask.syncOneSensor 同步导出" + sensor.getEquipmentId() + count
+ "条数据,最后数据时间" + DateUtil.format(record.getLastDTime()));
if (count >= 1000) {
dataList.clear();
request = null;
xml = null;
this.syncOneSensor(sensor, fieldList, points);
}
}

Loading…
Cancel
Save