import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
-
中台设备数据 定时任务执行
-
@author Tarzan Liu
-
@version 1.0.0
-
@description
-
@date 2020/12/07
*/
@Component
@Slf4j
public class EntityPointTask {
@Autowired
private EntityPointService entityPointService;
@Value(“${middleGround.server.host}”)
private String host;
@Value(“${middleGround.server.port}”)
private String port;
private static FilesMinioController filesMinioController = SpringContextUtil.getBean(FilesMinioController.class);
/**
-
设备定义点数据拉取
-
@author tarzan Liu
-
@date 2020/12/2
*/
@Scheduled(cron = “0/30 * * * * ?”) // 30秒校验一次
public void pullDataTaskByCorn() {
String result = HttpProxyUtil.sendGet(“http://” + host + “:” + port + “/interface/system/list”);
JSONObject jsonObject = JSON.parseObject(result);
if (Objects.nonNull(jsonObject)) {
JSONArray array = jsonObject.getJSONArray(“data”);
if (array != null && array.size() != 0) {
for (int i = 0; i < array.size(); i++) {
JSONObject obj = array.getJSONObject(i);
String systemId = obj.getString(“id”);
pullDataNew(systemId);
}
}
}
}
@Transactional(rollbackFor = Throwable.class)
public ResponseDTO pullData(String code) {
List list = Lists.newArrayList();
String result = HttpProxyUtil.sendGet(“http://” + host + “:” + port + “/interface/defintionView/listBySystemId/” + code);
JSONObject jsonObject = JSON.parseObject(result);
if (Objects.nonNull(jsonObject)) {
JSONArray array = jsonObject.getJSONArray(“data”);
if (array != null && array.size() != 0) {
for (int i = 0; i < array.size(); i++) {
JSONObject obj = array.getJSONObject(i);
String pointId = obj.getString(“pointId”);
String name = obj.getString(“name”);
list.add(EntityPointEntity.builder().pointId(pointId).name(name).code(code).build());
}
List existList = entityPointService.list(new LambdaQueryWrapper().eq(EntityPointEntity::getCode, code).isNotNull(EntityPointEntity::getValue));
if (CollectionUtils.isNotEmpty(existList)) {
Map<String, String> existMap = existList.stream().collect(Collectors.toMap(EntityPointEntity::getPointId, EntityPointEntity::getValue));
list.forEach(e -> {
String value = existMap.get(e.getPointId());
if (value != null) {
e.setValue(value);
}
});
}
entityPointService.remove(new LambdaQueryWrapper().eq(EntityPointEntity::getCode, code));
entityPointService.saveBatch(list);
}
}
return ResponseDTO.succ();
}
@Transactional(rollbackFor = Throwable.class)
public ResponseDTO pullDataNew(String code) {
String result = HttpProxyUtil.sendGet(“http://” + host + “:” + port + “/interface/defintionView/listBySystemId/” + code);
JSONObject jsonObject = JSON.parseObject(result);
if (Objects.nonNull(jsonObject)) {
JSONArray data = jsonObject.getJSONArray(“data”);
List list = data.toJavaList(EntityPointEntity.class);
if (CollectionUtils.isNotEmpty(list)) {
list.forEach(e -> e.setCode(code));
List existList = entityPointService.list(new LambdaQueryWrapper().eq(EntityPointEntity::getCode, code));
if (CollectionUtils.isNotEmpty(existList)) {
//存在map
Map<String, String> existMap = existList.stream().collect(Collectors.toMap(EntityPointEntity::getPointId, EntityPointEntity::getName));
//传输map
Map<String, String> dataMap = list.stream().collect(Collectors.toMap(EntityPointEntity::getPointId, EntityPointEntity::getName));
//增量
List increment = list.stream().filter(e -> existMap.get(e.getPointId()) == null).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(increment)) {
entityPointService.saveBatch(increment);
}
//减量
List decrement = existList.stream().filter(e -> dataMap.get(e.getPointId()) == null).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(decrement)) {
entityPointService.removeByIds(decrement.stream().map(EntityPointEntity::getId).collect(Collectors.toList()));
}
//变量
List variable = existList.stream().filter(e -> dataMap.get(e.getPointId()) != null && !dataMap.get(e.getPointId()).equals(e.getName())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(variable)) {
variable.forEach(e -> {
e.setName(dataMap.get(e.getPointId()));
});
entityPointService.updateBatchById(variable);
}
} else {
entityPointService.saveBatch(list);
}
}
}
return ResponseDTO.succ();
}
}
数据库对应实体类
========
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
@TableName(value = “t_entity_point”)
public class EntityPointEntity implements Serializable {
private static final long serialVersionUID = 2181036545424452651L;
/**
- 定义点id
*/
@TableId(value = “id”, type = IdType.ASSIGN_ID)
private Long id;
/**
- 定义点id
*/
private String pointId;
/**
- 名称
*/
private String name;
/**
- 绘制数据
*/
private String value;
/**
- 编码
*/
private String code;
/**
- 创建时间
*/
private Date createTime;
}
HTTP请求代理工具类
===========
import lombok.extern.slf4j.Slf4j;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.ssl.SSLContextBuilder;
import org.apache.http.util.EntityUtils;
import javax.net.ssl.SSLContext;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
总结
蚂蚁面试比较重视基础,所以Java那些基本功一定要扎实。蚂蚁的工作环境还是挺赞的,因为我面的是稳定性保障部门,还有许多单独的小组,什么三年1班,很有青春的感觉。面试官基本水平都比较高,基本都P7以上,除了基础还问了不少架构设计方面的问题,收获还是挺大的。
经历这次面试我还通过一些渠道发现了需要大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。
2912247)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-hFCixttB-1711082912248)]
总结
蚂蚁面试比较重视基础,所以Java那些基本功一定要扎实。蚂蚁的工作环境还是挺赞的,因为我面的是稳定性保障部门,还有许多单独的小组,什么三年1班,很有青春的感觉。面试官基本水平都比较高,基本都P7以上,除了基础还问了不少架构设计方面的问题,收获还是挺大的。
经历这次面试我还通过一些渠道发现了需要大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。
[外链图片转存中…(img-ME4HAemL-1711082912249)]