Commit 14353b66 authored by duanruiming's avatar duanruiming

定时任务调用远程utcService同步信号机状态功能

parent c6e24b57
...@@ -24,9 +24,15 @@ ...@@ -24,9 +24,15 @@
<mybatis-plus-version>3.5.1</mybatis-plus-version> <mybatis-plus-version>3.5.1</mybatis-plus-version>
<mybatis.generator.version>1.3.2</mybatis.generator.version> <mybatis.generator.version>1.3.2</mybatis.generator.version>
<mysql.connector.version>5.1.41</mysql.connector.version> <mysql.connector.version>5.1.41</mysql.connector.version>
<fastjson-version>1.2.83</fastjson-version>
</properties> </properties>
<dependencies> <dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson-version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
......
package net.wanji.web.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.client.RestTemplate;
import java.nio.charset.StandardCharsets;
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
RestTemplate restTemplate = new RestTemplate(factory);
restTemplate.getMessageConverters().set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8));
return restTemplate;
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(30000);
factory.setReadTimeout(30000);
return factory;
}
}
\ No newline at end of file
package net.wanji.web.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author duanruiming
* @date 2023/01/03 15:46
*/
@Data
@TableName("t_device_status")
public class TDeviceStatusInfo {
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "设备代码")
private String code;
@ApiModelProperty(value = "设备名称")
private String name;
@ApiModelProperty(value = "设备类型:1信号;2卡口;3地磁;4视频;5微波;6激光;7电警;8 MEC")
private int type;
@ApiModelProperty(value = "设备状态:0离线;1在线;2故障")
private int status;
@ApiModelProperty(value = "创建时间")
private Date gmtCreate ;
}
package net.wanji.web.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.wanji.web.entity.TDeviceStatusInfo;
import org.springframework.stereotype.Repository;
/**
* @author duanruiming
* @date 2023/01/03 15:53
*/
@Repository
public interface TDeviceStatusMapper extends BaseMapper<TDeviceStatusInfo> {
}
package net.wanji.web.task;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import net.wanji.web.common.entity.JsonViewObject;
import net.wanji.web.common.util.StringUtils;
import net.wanji.web.entity.TDeviceStatusInfo;
import net.wanji.web.mapper.TDeviceStatusMapper;
import net.wanji.web.util.HttpRestUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import static net.wanji.web.util.HttpRestUtil.buildHeader;
/**
* @author duanruiming
* @date 2023/01/03 10:43
*/
@Component
public class SignalStatusTask {
private static final Logger LOGGER = LoggerFactory.getLogger(SignalStatusTask.class);
@Autowired
private HttpRestUtil httpRestUtil;
@Value("${utcServiceUrl}")
private String utcServiceUrl;
@Value("${syncDeviceSatusUrn}")
private String syncDeviceSatusUrl;
@Autowired
private TDeviceStatusMapper tDeviceStatusMapper;
@Scheduled(fixedRate = 5 * 60 * 1000)
public void syncSignalStatus() {
// 远程通过UTC服务获取信号机状态
Map<String, String> header = buildHeader();
JsonViewObject jsonViewObject = httpRestUtil.doPost(utcServiceUrl.concat(syncDeviceSatusUrl), header, "", JsonViewObject.class);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
LOGGER.error("定时任务同步信号机设备状态远程utcService调用异常,url:".concat(utcServiceUrl.concat("/signalStatus/runningStatusAlarm")));
return;
}
List<Map<String, Object>> content = (List<Map<String, Object>>) jsonViewObject.getContent();
Map<String, Object> result = content.get(0);
String signalId = (String) result.get("signalId");
Integer currentSignalStatus = (Integer) result.get("status");
// 当前服务数据库状态
LambdaQueryWrapper<TDeviceStatusInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotEmpty(signalId)) {
lambdaQueryWrapper.eq(TDeviceStatusInfo::getCode, signalId);
TDeviceStatusInfo tDeviceStatusInfo = tDeviceStatusMapper.selectOne(lambdaQueryWrapper);
if (Objects.nonNull(tDeviceStatusInfo) && currentSignalStatus != tDeviceStatusInfo.getStatus()) {
tDeviceStatusInfo.setStatus(currentSignalStatus);
tDeviceStatusMapper.updateById(tDeviceStatusInfo);
}
}
}
}
...@@ -56,3 +56,7 @@ spring: ...@@ -56,3 +56,7 @@ spring:
# 信号平台 # 信号平台
signal: signal:
#远程signalUtcService服务地址
utcServiceUrl: http://10.100.1.59/:32000/utc
syncDeviceSatusUrn: /signalStatus/runningStatusAlarm
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment