增加武汉中南院推送

This commit is contained in:
weidong 2024-02-02 21:02:54 +08:00
parent abc39fd436
commit d2ccdab6ab

View File

@ -0,0 +1,77 @@
package com.imdroid.beidou_fwd.task;
import com.alibaba.fastjson.JSONObject;
import com.imdroid.beidou_fwd.entity.DefoData;
import com.imdroid.common.util.GsonUtil;
import com.imdroid.common.util.HttpUtils;
import com.imdroid.common.util.NumberUtils;
import com.imdroid.secapi.dto.GnssCalcData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@Component
@Configuration
@EnableScheduling
public class ZNYForwarder extends Forwarder{
private final Logger logger = LoggerFactory.getLogger(ZNYForwarder.class);
static final String FORWARDER_NAME = "武汉中南设计院";
@Value("${zny.server.host}")
private String data_host;
final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@PostConstruct
void registerMe(){
init(FORWARDER_NAME, data_host,4,true);
}
/**
* 每半小时转发GNSS解算结果
*/
@Scheduled(cron = "0 0/30 * * * ?") // 每30分钟执行一次
private void forwardGnss() {
logger.info("zny forwardGnss");
forwardCurrentGnss(FORWARDER_NAME);
}
@Scheduled(cron = "0 40 * * * ?") // 每小时的40分钟执行一次
//@Scheduled(cron = "0 0/20 * * * ?") // 每20分钟执行一次
private void forwardHistoryGnss() {
forwardHistoryGnss(FORWARDER_NAME);
}
@Override
int send(String projectId, List<GnssCalcData> records){
int sendNum = 0;
// 单位
DefoData defoData = new DefoData(projectId, LocalDateTime.now().format(dateFormatter), records.size());
for(GnssCalcData locationRecord:records) {
double n = NumberUtils.scale(locationRecord.getRposn() * 0.001, 5);
double e = NumberUtils.scale(locationRecord.getRpose() * 0.001, 5);
double d = NumberUtils.scale(locationRecord.getRposd() * 0.001, 5);
DefoData.Data data = new DefoData.Data(locationRecord.getDeviceid(), String.format("%.5f", n),
String.format("%.5f", e), String.format("%.5f", d));
defoData.getData().add(data);
sendNum++;
}
String json = GsonUtil.toJson(defoData);
logger.info("发送数据到武汉中南设计院平台:{}", json);
String result = HttpUtils.postJson(data_host,json);
logger.info("发送数据到武汉中南设计院平台返回结果:{}", result);
JSONObject obj = (JSONObject) JSONObject.parse(result);
String msg = obj.getString("message");
if(msg.contains("成功")) return sendNum;
else return 0;
}
}