同步数据接口修改
This commit is contained in:
parent
85d2ffa9c2
commit
6771ee6345
@ -14,7 +14,7 @@ import java.util.List;
|
||||
*
|
||||
* @author chenhaojie
|
||||
*/
|
||||
public interface SysAuthorityMapper extends BaseMapper<SysAuthority> {
|
||||
public interface SysAuthorityMapper extends BaseMapperPlus<SysAuthority, SysAuthority> {
|
||||
|
||||
List<SysAuthority> selectByAuthorities(@Param("list")List<SysAuthority> list);
|
||||
|
||||
|
@ -39,7 +39,7 @@ public class SysAuthorityServiceImpl implements SysAuthorityService {
|
||||
|
||||
// 批量插入不存在的权限
|
||||
if (!list.isEmpty()) {
|
||||
sysAuthorityMapper.batchInsert(list);
|
||||
sysAuthorityMapper.insertOrUpdateBatch(list);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// 异常处理:记录日志或执行其他恢复策略
|
||||
|
@ -59,7 +59,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
BeanCopyUtils.copy(sysIotModelDto, sysIotModel);
|
||||
|
||||
QueryWrapper<SysIotModel> sysIotModelQueryWrapper = new QueryWrapper<>();
|
||||
sysIotModelQueryWrapper.eq("iot_model_code", sysIotModelDto.getIotModelCode());
|
||||
sysIotModelQueryWrapper.eq("iot_model_code", sysIotModelDto.getIotModelCode().toLowerCase());
|
||||
SysIotModel sysIotModelQuery = sysIotModelMapper.selectOne(sysIotModelQueryWrapper);
|
||||
if (!(sysIotModelQuery == null)) {
|
||||
throw new ServiceException("物模型code已经存在");
|
||||
@ -74,6 +74,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
sysIotModelMapper.insert(sysIotModel);
|
||||
SysIotModelVo sysIotModelVo = new SysIotModelVo();
|
||||
BeanCopyUtils.copy(sysIotModel, sysIotModelVo);
|
||||
sysIotModelVo.setIotModelCode(sysIotModelDto.getIotModelCode().toLowerCase());
|
||||
return sysIotModelVo;
|
||||
}
|
||||
|
||||
@ -83,7 +84,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
SysUserVo sysUserVo = (SysUserVo) StpUtil.getTokenSession().get(SessionUtil.SESSION_USER_KEY);
|
||||
sysIotModel.setUpdatedTime(new Date());
|
||||
sysIotModel.setUpdatedBy(sysUserVo.getAccount());
|
||||
// sysIotModel.setUpdatedBy("sysUserVo.getAccount()");
|
||||
sysIotModel.setIotModelCode(sysIotModelDto.getIotModelCode().toLowerCase());
|
||||
sysIotModelMapper.updateById(sysIotModel);
|
||||
SysIotModelVo sysIotModelVo = new SysIotModelVo();
|
||||
BeanCopyUtils.copy(sysIotModel, sysIotModelVo);
|
||||
@ -136,7 +137,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
BeanCopyUtils.copy(sysIotModelFieldDto, sysIotModelField);
|
||||
|
||||
QueryWrapper<SysIotModelField> sysIotModelFieldQueryWrapper = new QueryWrapper<>();
|
||||
sysIotModelFieldQueryWrapper.eq("attribute_code", sysIotModelFieldDto.getAttributeCode());
|
||||
sysIotModelFieldQueryWrapper.eq("attribute_code", sysIotModelFieldDto.getAttributeCode().toLowerCase());
|
||||
SysIotModelField sysIotModelFieldQuery = sysIotModelFieldMapper.selectOne(sysIotModelFieldQueryWrapper);
|
||||
if (!(sysIotModelFieldQuery == null)) {
|
||||
throw new ServiceException("物模型属性code已经存在");
|
||||
@ -151,6 +152,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
sysIotModelFieldMapper.insert(sysIotModelField);
|
||||
SysIotModelFieldVo sysIotModelFieldVo = new SysIotModelFieldVo();
|
||||
BeanCopyUtils.copy(sysIotModelField, sysIotModelFieldVo);
|
||||
sysIotModelFieldVo.setAttributeCode(sysIotModelFieldDto.getAttributeCode().toLowerCase());
|
||||
return sysIotModelFieldVo;
|
||||
}
|
||||
|
||||
@ -161,7 +163,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
SysUserVo sysUserVo = (SysUserVo) StpUtil.getTokenSession().get(SessionUtil.SESSION_USER_KEY);
|
||||
sysIotModelField.setUpdatedTime(new Date());
|
||||
sysIotModelField.setUpdatedBy(sysUserVo.getAccount());
|
||||
// sysIotModelField.setUpdatedBy("sysUserVo.getAccount()");
|
||||
sysIotModelField.setAttributeCode(sysIotModelFieldDto.getAttributeCode().toLowerCase());
|
||||
sysIotModelFieldMapper.updateById(sysIotModelField);
|
||||
SysIotModelFieldVo sysIotModelFieldVo = new SysIotModelFieldVo();
|
||||
BeanCopyUtils.copy(sysIotModelField, sysIotModelFieldVo);
|
||||
@ -188,7 +190,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
BeanCopyUtils.copy(sysIotModelServiceDto, sysIotModelServices);
|
||||
|
||||
QueryWrapper<SysIotModelServices> sysIotModelServiceQueryWrapper = new QueryWrapper<>();
|
||||
sysIotModelServiceQueryWrapper.eq("service_code", sysIotModelServiceDto.getServiceCode());
|
||||
sysIotModelServiceQueryWrapper.eq("service_code", sysIotModelServiceDto.getServiceCode().toLowerCase());
|
||||
SysIotModelServices sysIotModelServiceQuery = sysIotModelServiceMapper.selectOne(sysIotModelServiceQueryWrapper);
|
||||
if (!(sysIotModelServiceQuery == null)) {
|
||||
throw new ServiceException("物模型动作code已经存在");
|
||||
@ -203,6 +205,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
sysIotModelServiceMapper.insert(sysIotModelServices);
|
||||
SysIotModelServiceVo sysIotModelServiceVo = new SysIotModelServiceVo();
|
||||
BeanCopyUtils.copy(sysIotModelServices, sysIotModelServiceVo);
|
||||
sysIotModelServiceVo.setServiceCode(sysIotModelServiceDto.getServiceCode().toLowerCase());
|
||||
return sysIotModelServiceVo;
|
||||
}
|
||||
|
||||
@ -213,7 +216,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
SysUserVo sysUserVo = (SysUserVo) StpUtil.getTokenSession().get(SessionUtil.SESSION_USER_KEY);
|
||||
sysIotModelServices.setUpdatedTime(new Date());
|
||||
sysIotModelServices.setUpdatedBy(sysUserVo.getAccount());
|
||||
// sysIotModelServices.setUpdatedBy("sysUserVo.getAccount()");
|
||||
sysIotModelServices.setServiceCode(sysIotModelServiceDto.getServiceCode().toLowerCase());
|
||||
sysIotModelServiceMapper.updateById(sysIotModelServices);
|
||||
SysIotModelServiceVo sysIotModelServiceVo = new SysIotModelServiceVo();
|
||||
BeanCopyUtils.copy(sysIotModelServices, sysIotModelServiceVo);
|
||||
@ -287,18 +290,23 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
for (List<Object> row : list) {
|
||||
// 遍历sheet页中记录,构造需要导入的对象
|
||||
SysIotModelServices services = new SysIotModelServices();
|
||||
services.setServiceCode(row.get(1).toString());
|
||||
services.setServiceName(row.get(2).toString());
|
||||
services.setServiceType(Integer.valueOf(row.get(3).toString()));
|
||||
services.setPorder(Integer.valueOf(row.get(4).toString()));
|
||||
services.setIotModelId(Long.valueOf(iotModelId));
|
||||
services.setId(SequenceUtils.generateId());
|
||||
services.setCreatedTime(new Date());
|
||||
services.setUpdatedTime(new Date());
|
||||
services.setRevision(1);
|
||||
services.setCreatedBy(StpUtil.getLoginIdAsString());
|
||||
services.setUpdatedBy(StpUtil.getLoginIdAsString());
|
||||
sysIotModelServiceList.add(services);
|
||||
QueryWrapper<SysIotModelServices> sysIotModelServiceQueryWrapper = new QueryWrapper<>();
|
||||
sysIotModelServiceQueryWrapper.eq("service_code", row.get(1).toString().toLowerCase());
|
||||
SysIotModelServices sysIotModelServiceQuery = sysIotModelServiceMapper.selectOne(sysIotModelServiceQueryWrapper);
|
||||
if (sysIotModelServiceQuery == null) {
|
||||
services.setServiceCode(row.get(1).toString().toLowerCase());
|
||||
services.setServiceName(row.get(2).toString());
|
||||
services.setServiceType(Integer.valueOf(row.get(3).toString()));
|
||||
services.setPorder(Integer.valueOf(row.get(4).toString()));
|
||||
services.setIotModelId(Long.valueOf(iotModelId));
|
||||
services.setId(SequenceUtils.generateId());
|
||||
services.setCreatedTime(new Date());
|
||||
services.setUpdatedTime(new Date());
|
||||
services.setRevision(1);
|
||||
services.setCreatedBy(StpUtil.getLoginIdAsString());
|
||||
services.setUpdatedBy(StpUtil.getLoginIdAsString());
|
||||
sysIotModelServiceList.add(services);
|
||||
}
|
||||
}
|
||||
sysIotModelServiceMapper.insertBatch(sysIotModelServiceList);
|
||||
}
|
||||
@ -309,18 +317,23 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
for (List<Object> row : list) {
|
||||
// 遍历sheet页中记录,构造需要导入的对象
|
||||
SysIotModelField field = new SysIotModelField();
|
||||
field.setAttributeCode(row.get(1).toString());
|
||||
field.setAttributeName(row.get(2).toString());
|
||||
field.setAttributeType(Integer.valueOf(row.get(3).toString()));
|
||||
field.setPorder(Integer.valueOf(row.get(4).toString()));
|
||||
field.setIotModelId(Long.valueOf(iotModelId));
|
||||
field.setId(SequenceUtils.generateId());
|
||||
field.setCreatedTime(new Date());
|
||||
field.setUpdatedTime(new Date());
|
||||
field.setRevision(1);
|
||||
field.setCreatedBy(StpUtil.getLoginIdAsString());
|
||||
field.setUpdatedBy(StpUtil.getLoginIdAsString());
|
||||
sysIotModelFieldList.add(field);
|
||||
QueryWrapper<SysIotModelField> sysIotModelFieldQueryWrapper = new QueryWrapper<>();
|
||||
sysIotModelFieldQueryWrapper.eq("attribute_code", row.get(1).toString().toLowerCase());
|
||||
SysIotModelField sysIotModelFieldQuery = sysIotModelFieldMapper.selectOne(sysIotModelFieldQueryWrapper);
|
||||
if (sysIotModelFieldQuery == null) {
|
||||
field.setAttributeCode(row.get(1).toString().toLowerCase());
|
||||
field.setAttributeName(row.get(2).toString());
|
||||
field.setAttributeType(Integer.valueOf(row.get(3).toString()));
|
||||
field.setPorder(Integer.valueOf(row.get(4).toString()));
|
||||
field.setIotModelId(Long.valueOf(iotModelId));
|
||||
field.setId(SequenceUtils.generateId());
|
||||
field.setCreatedTime(new Date());
|
||||
field.setUpdatedTime(new Date());
|
||||
field.setRevision(1);
|
||||
field.setCreatedBy(StpUtil.getLoginIdAsString());
|
||||
field.setUpdatedBy(StpUtil.getLoginIdAsString());
|
||||
sysIotModelFieldList.add(field);
|
||||
}
|
||||
}
|
||||
sysIotModelFieldMapper.insertBatch(sysIotModelFieldList);
|
||||
}
|
||||
|
@ -8,9 +8,13 @@ import com.fasterxml.jackson.databind.JsonNode;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.text.MessageFormat;
|
||||
|
||||
@Service(value = NodeConstant.HEARTBEAT)
|
||||
public class HeartbeatCommand implements BaseCommand{
|
||||
|
||||
public static final String HEART_BEAT = "heartBeat:{0}";
|
||||
|
||||
@Autowired
|
||||
AdminRedisTemplate adminRedisTemplate;
|
||||
@Override
|
||||
@ -22,17 +26,17 @@ public class HeartbeatCommand implements BaseCommand{
|
||||
for (JsonNode fruitNode : linkNode) {
|
||||
String linkId = fruitNode.get("linkId").asText();
|
||||
String online = fruitNode.get("online").asText();
|
||||
|
||||
String key = MessageFormat.format(HEART_BEAT, linkId);
|
||||
if (StringUtils.isEmpty(online)) {
|
||||
adminRedisTemplate.set(linkId, 0);
|
||||
adminRedisTemplate.set(key, 0);
|
||||
} else {
|
||||
if ("true".equals(online)) {
|
||||
adminRedisTemplate.set(linkId, 1);
|
||||
adminRedisTemplate.set(key, 1);
|
||||
} else {
|
||||
adminRedisTemplate.set(linkId, 0);
|
||||
adminRedisTemplate.set(key, 0);
|
||||
}
|
||||
}
|
||||
adminRedisTemplate.expire(linkId, 300L);
|
||||
adminRedisTemplate.expire(key, 300L);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.das.modules.node.command;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import com.das.common.utils.AdminRedisTemplate;
|
||||
import com.das.modules.node.constant.NodeConstant;
|
||||
import com.das.modules.node.domain.bo.TerminalMessage;
|
||||
@ -22,8 +21,9 @@ public class InitDeviceDataCommand implements BaseCommand{
|
||||
JsonNode dataInfo = data.getData();
|
||||
if (!dataInfo.isEmpty()) {
|
||||
String deviceId = dataInfo.get("deviceId").asText();
|
||||
JsonNode values = dataInfo.get("values");
|
||||
// 存入redis
|
||||
adminRedisTemplate.set(deviceId, ListUtil.toList(dataInfo.get("values").asText()));
|
||||
adminRedisTemplate.set(deviceId, values);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.das.modules.node.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import com.das.common.constant.BaseIotModelType;
|
||||
import com.das.common.utils.AdminRedisTemplate;
|
||||
import com.das.modules.equipment.domain.vo.IotModelFieldVo;
|
||||
@ -15,7 +14,6 @@ import com.das.modules.node.mapper.SysCommunicationLinkMapper;
|
||||
import com.das.modules.node.mapper.SysImptabmappingMapper;
|
||||
import com.das.modules.node.service.DataService;
|
||||
import com.das.modules.node.service.TDEngineService;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
@ -28,7 +26,6 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
@ -198,6 +195,16 @@ public class DataServiceImpl implements DataService {
|
||||
configUpdateVo.setEquipments(equipments);
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
JsonNode jsonNode = mapper.valueToTree(configUpdateVo);
|
||||
|
||||
long time = System.currentTimeMillis();
|
||||
|
||||
TerminalMessage configUpdate = TerminalMessage.builder()
|
||||
.cmd("configUpdate")
|
||||
.cmdId(String.valueOf(nodeId))
|
||||
.time(time)
|
||||
.data(jsonNode)
|
||||
.build();
|
||||
nodeMessageHandler.sendActionMessage(Long.valueOf(nodeId), configUpdate);
|
||||
return jsonNode;
|
||||
}
|
||||
|
||||
@ -219,25 +226,32 @@ public class DataServiceImpl implements DataService {
|
||||
|
||||
@Override
|
||||
public void handleData(TerminalMessage data) {
|
||||
// 先从redis里面获取设备的初始化数据
|
||||
JsonNode jsonNode = data.getData();
|
||||
String deviceId = jsonNode.get("deviceId").asText();
|
||||
HashMap<String, Object> initValue = adminRedisTemplate.get(deviceId);
|
||||
JsonNode values = jsonNode.get("values");
|
||||
List<Map.Entry<String, Object>> entryList = new ArrayList<>(initValue.entrySet());
|
||||
HashMap<String, Object> newHashMap = new HashMap<>();
|
||||
for (Map.Entry<String, Object> entry : entryList) {
|
||||
if(values.get(entry.getKey()) == null){
|
||||
newHashMap.put(entry.getKey(), entry.getValue());
|
||||
} else{
|
||||
newHashMap.put(entry.getKey(), values.get(entry.getKey()).asDouble());
|
||||
}
|
||||
|
||||
}
|
||||
adminRedisTemplate.set(deviceId, newHashMap);
|
||||
Long dataTime = data.getTime();
|
||||
adminRedisTemplate.set(deviceId, ListUtil.toList(jsonNode.get("values").asText()));
|
||||
// 存入td库
|
||||
// 根据设备ID获取对应的物模型属性
|
||||
String iotModelCode = sysIotModelMapper.getIotModel(jsonNode.get("deviceId").asLong());
|
||||
JsonNode valueJsonNode = jsonNode.get("values");
|
||||
Map<String, Object> resultMap = iotFieldMap.get(iotModelCode);
|
||||
// 使用增强的 for 循环遍历键
|
||||
for (String key : resultMap.keySet()) {
|
||||
float value = (float) valueJsonNode.get(key).asDouble();
|
||||
resultMap.put(key, value);
|
||||
}
|
||||
HashMap<String, Object> tdValues = adminRedisTemplate.get(deviceId);
|
||||
List<RTData> list = new ArrayList<>();
|
||||
RTData rtData = RTData.builder()
|
||||
.dataTime(dataTime)
|
||||
.deviceId(Long.valueOf(deviceId))
|
||||
.values(resultMap)
|
||||
.values(tdValues)
|
||||
.build();
|
||||
|
||||
list.add(rtData);
|
||||
|
@ -51,7 +51,7 @@
|
||||
|
||||
|
||||
<select id="getEquipmentId" resultType="java.lang.Long">
|
||||
select si.equipment_id from sys_imptabmapping si
|
||||
select distinct si.equipment_id from sys_imptabmapping si
|
||||
left join sys_communicationlink sc on sc.id = si.link_id
|
||||
where sc.id = #{linkId}
|
||||
</select>
|
||||
|
@ -65,7 +65,7 @@
|
||||
</select>
|
||||
|
||||
<select id="getAllIotModelField" resultType="java.lang.String">
|
||||
select simf.attribute_code from sys_iot_model_field simf where simf.iot_model_id = #{id} order by simf.porder
|
||||
select simf.attribute_code from sys_iot_model_field simf where simf.iot_model_id = #{id} order by simf.attribute_code
|
||||
</select>
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user