Merge branch 'main' of https://git.jsspisoft.com/ry-das
This commit is contained in:
commit
53b95f748f
@ -109,6 +109,9 @@ public class EquipmentController {
|
|||||||
*/
|
*/
|
||||||
@PostMapping("/list")
|
@PostMapping("/list")
|
||||||
public R<List<SysEquipmentVo>> queryAllSysEquipmentList(@RequestBody SysEquipmentDto sysEquipmentDto) {
|
public R<List<SysEquipmentVo>> queryAllSysEquipmentList(@RequestBody SysEquipmentDto sysEquipmentDto) {
|
||||||
|
if (sysEquipmentDto.getObjectType() == null) {
|
||||||
|
throw new ServiceException("参数缺失");
|
||||||
|
}
|
||||||
return R.success(sysEquipmentService.queryAllSysEquipmentList(sysEquipmentDto));
|
return R.success(sysEquipmentService.queryAllSysEquipmentList(sysEquipmentDto));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,7 +93,10 @@ public class SysIotModelController {
|
|||||||
/** 获取物模型属性列表 */
|
/** 获取物模型属性列表 */
|
||||||
@PostMapping("/attribute/list")
|
@PostMapping("/attribute/list")
|
||||||
public PageDataInfo<SysIotModelFieldVo> querySysIotModelField(@RequestBody SysIotModelFieldDto sysIotModelFieldDto) {
|
public PageDataInfo<SysIotModelFieldVo> querySysIotModelField(@RequestBody SysIotModelFieldDto sysIotModelFieldDto) {
|
||||||
|
if (sysIotModelFieldDto.getPageNum() == null && sysIotModelFieldDto.getPageSize() == null){
|
||||||
|
List<SysIotModelFieldVo> sysIotModelFieldVos = sysIotModelService.queryAllModelField(sysIotModelFieldDto);
|
||||||
|
return PageDataInfo.build(sysIotModelFieldVos,sysIotModelFieldVos.size());
|
||||||
|
}
|
||||||
return sysIotModelService.querySysIotModelField(sysIotModelFieldDto);
|
return sysIotModelService.querySysIotModelField(sysIotModelFieldDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,8 @@ public interface SysIotModelFieldMapper extends BaseMapperPlus<SysIotModelField,
|
|||||||
|
|
||||||
Long querySysIotModelFieldByModelId(Long id);
|
Long querySysIotModelFieldByModelId(Long id);
|
||||||
|
|
||||||
|
List<SysIotModelFieldVo> querySysIotModelFieldList(@Param("info") SysIotModelFieldDto sysIotModelFieldDto);
|
||||||
|
|
||||||
SysIotModelFieldVo selectByAttributeCode(Long iotModelId, String code);
|
SysIotModelFieldVo selectByAttributeCode(Long iotModelId, String code);
|
||||||
|
|
||||||
List<String> queryAllFiledNames(@Param("deviceId") Long deviceId);
|
List<String> queryAllFiledNames(@Param("deviceId") Long deviceId);
|
||||||
|
@ -25,6 +25,8 @@ public interface SysIotModelService {
|
|||||||
|
|
||||||
PageDataInfo<SysIotModelFieldVo> querySysIotModelField(SysIotModelFieldDto sysIotModelFieldDto);
|
PageDataInfo<SysIotModelFieldVo> querySysIotModelField(SysIotModelFieldDto sysIotModelFieldDto);
|
||||||
|
|
||||||
|
List<SysIotModelFieldVo> queryAllModelField(SysIotModelFieldDto sysIotModelFieldDto);
|
||||||
|
|
||||||
SysIotModelFieldVo creatSysIotModelField(SysIotModelFieldDto sysIotModelFieldDto);
|
SysIotModelFieldVo creatSysIotModelField(SysIotModelFieldDto sysIotModelFieldDto);
|
||||||
|
|
||||||
SysIotModelFieldVo updateSysIotModelField(SysIotModelFieldDto sysIotModelFieldDto);
|
SysIotModelFieldVo updateSysIotModelField(SysIotModelFieldDto sysIotModelFieldDto);
|
||||||
|
@ -125,8 +125,12 @@ public class SysEquipmentServiceImpl implements SysEquipmentService {
|
|||||||
public List<SysEquipmentVo> queryAllSysEquipmentList(SysEquipmentDto sysEquipmentDto) {
|
public List<SysEquipmentVo> queryAllSysEquipmentList(SysEquipmentDto sysEquipmentDto) {
|
||||||
// 查询当前账号机构下的子机构和子设备
|
// 查询当前账号机构下的子机构和子设备
|
||||||
QueryWrapper<SysEquipment> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<SysEquipment> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.eq("org_id", sysEquipmentDto.getOrgId());
|
if (sysEquipmentDto.getOrgId() !=null){
|
||||||
queryWrapper.eq("parent_equipment_id", sysEquipmentDto.getParentEquipmentId());
|
queryWrapper.eq("org_id", sysEquipmentDto.getOrgId());
|
||||||
|
}
|
||||||
|
if (sysEquipmentDto.getParentEquipmentId() !=null){
|
||||||
|
queryWrapper.eq("parent_equipment_id", sysEquipmentDto.getParentEquipmentId());
|
||||||
|
}
|
||||||
queryWrapper.eq("object_type", sysEquipmentDto.getObjectType());
|
queryWrapper.eq("object_type", sysEquipmentDto.getObjectType());
|
||||||
queryWrapper.orderByAsc("name");
|
queryWrapper.orderByAsc("name");
|
||||||
List<SysEquipment> sysEquipmentList = sysEquipmentMapper.selectList(queryWrapper);
|
List<SysEquipment> sysEquipmentList = sysEquipmentMapper.selectList(queryWrapper);
|
||||||
|
@ -38,6 +38,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@Service
|
@Service
|
||||||
@ -85,13 +86,13 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
|||||||
SysUserVo sysUserVo = (SysUserVo) StpUtil.getTokenSession().get(SessionUtil.SESSION_USER_KEY);
|
SysUserVo sysUserVo = (SysUserVo) StpUtil.getTokenSession().get(SessionUtil.SESSION_USER_KEY);
|
||||||
|
|
||||||
SysIotModelVo sysIotModelQuery = sysIotModelMapper.selectIotModelByCode(sysIotModelDto.getIotModelCode());
|
SysIotModelVo sysIotModelQuery = sysIotModelMapper.selectIotModelByCode(sysIotModelDto.getIotModelCode());
|
||||||
if (!(sysIotModelQuery == null)){
|
if (!(sysIotModelQuery == null)) {
|
||||||
if(!(sysIotModelQuery.getId().equals(sysIotModelDto.getId()))){
|
if (!(sysIotModelQuery.getId().equals(sysIotModelDto.getId()))) {
|
||||||
throw new ServiceException("物模型code已经存在!");
|
throw new ServiceException("物模型code已经存在!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SysIotModel oldSysIotModel = sysIotModelMapper.selectById(sysIotModelDto.getId());
|
SysIotModel oldSysIotModel = sysIotModelMapper.selectById(sysIotModelDto.getId());
|
||||||
if(!sysIotModelDto.getIotModelCode().equals(oldSysIotModel.getIotModelCode())) {
|
if (!sysIotModelDto.getIotModelCode().equals(oldSysIotModel.getIotModelCode())) {
|
||||||
throw new ServiceException("物模型code不能修改!");
|
throw new ServiceException("物模型code不能修改!");
|
||||||
}
|
}
|
||||||
sysIotModel.setUpdatedTime(new Date());
|
sysIotModel.setUpdatedTime(new Date());
|
||||||
@ -143,6 +144,11 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
|||||||
return PageDataInfo.build(iPage.getRecords(), iPage.getTotal());
|
return PageDataInfo.build(iPage.getRecords(), iPage.getTotal());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SysIotModelFieldVo> queryAllModelField(SysIotModelFieldDto sysIotModelFieldDto) {
|
||||||
|
return sysIotModelFieldMapper.querySysIotModelFieldList(sysIotModelFieldDto);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SysIotModelFieldVo creatSysIotModelField(SysIotModelFieldDto sysIotModelFieldDto) {
|
public SysIotModelFieldVo creatSysIotModelField(SysIotModelFieldDto sysIotModelFieldDto) {
|
||||||
SysIotModelField sysIotModelField = new SysIotModelField();
|
SysIotModelField sysIotModelField = new SysIotModelField();
|
||||||
@ -186,19 +192,19 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
|||||||
}
|
}
|
||||||
SysIotModelFieldVo sysIotModelFieldQuery = sysIotModelFieldMapper.selectByAttributeCode(sysIotModelFieldDto.getIotModelId(), sysIotModelFieldDto.getAttributeCode());
|
SysIotModelFieldVo sysIotModelFieldQuery = sysIotModelFieldMapper.selectByAttributeCode(sysIotModelFieldDto.getIotModelId(), sysIotModelFieldDto.getAttributeCode());
|
||||||
if (!(sysIotModelFieldQuery == null)) {
|
if (!(sysIotModelFieldQuery == null)) {
|
||||||
if (!sysIotModelFieldQuery.getId().equals(sysIotModelFieldDto.getId())){
|
if (!sysIotModelFieldQuery.getId().equals(sysIotModelFieldDto.getId())) {
|
||||||
throw new ServiceException("物模型属性code已经存在");
|
throw new ServiceException("物模型属性code已经存在");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sysIotModelFieldMapper.updateById(sysIotModelField);
|
sysIotModelFieldMapper.updateById(sysIotModelField);
|
||||||
|
|
||||||
SysIotModelField oldSysIotField = sysIotModelFieldMapper.selectById(sysIotModelFieldDto.getId());
|
SysIotModelField oldSysIotField = sysIotModelFieldMapper.selectById(sysIotModelFieldDto.getId());
|
||||||
if (oldSysIotField == null){
|
if (oldSysIotField == null) {
|
||||||
throw new ServiceException("未查找到该条记录");
|
throw new ServiceException("未查找到该条记录");
|
||||||
}
|
}
|
||||||
if (!oldSysIotField.getAttributeCode().equals(sysIotModelField.getAttributeCode()) && oldSysIotField.getDataType().equals(sysIotModelField.getDataType()) && Objects.equals(oldSysIotField.getHighSpeed(), sysIotModelField.getHighSpeed())){
|
if (!oldSysIotField.getAttributeCode().equals(sysIotModelField.getAttributeCode()) && oldSysIotField.getDataType().equals(sysIotModelField.getDataType()) && Objects.equals(oldSysIotField.getHighSpeed(), sysIotModelField.getHighSpeed())) {
|
||||||
//更新td表结构
|
//更新td表结构
|
||||||
updateTDStableOrColumn(sysIotModelField,oldSysIotField);
|
updateTDStableOrColumn(sysIotModelField, oldSysIotField);
|
||||||
}
|
}
|
||||||
SysIotModelFieldVo sysIotModelFieldVo = new SysIotModelFieldVo();
|
SysIotModelFieldVo sysIotModelFieldVo = new SysIotModelFieldVo();
|
||||||
BeanCopyUtils.copy(sysIotModelField, sysIotModelFieldVo);
|
BeanCopyUtils.copy(sysIotModelField, sysIotModelFieldVo);
|
||||||
@ -255,7 +261,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
|||||||
|
|
||||||
SysIotModelServiceVo sysIotModelServiceQuery = sysIotModelServiceMapper.selectByServiceCode(sysIotModelServiceDto.getIotModelId(), sysIotModelServiceDto.getServiceCode());
|
SysIotModelServiceVo sysIotModelServiceQuery = sysIotModelServiceMapper.selectByServiceCode(sysIotModelServiceDto.getIotModelId(), sysIotModelServiceDto.getServiceCode());
|
||||||
if (!(sysIotModelServiceQuery == null)) {
|
if (!(sysIotModelServiceQuery == null)) {
|
||||||
if(sysIotModelServiceQuery.getId() != sysIotModelServiceDto.getId()){
|
if (sysIotModelServiceQuery.getId() != sysIotModelServiceDto.getId()) {
|
||||||
throw new ServiceException("物模型动作code已经存在");
|
throw new ServiceException("物模型动作code已经存在");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -295,7 +301,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
|||||||
exportList.add(sheetDTO);
|
exportList.add(sheetDTO);
|
||||||
|
|
||||||
List<SysIotModelServiceExcel> sysIotModelServiceVoList = sysIotModelMapper.queryServiceByModelId(sysIotModelDto.getId());
|
List<SysIotModelServiceExcel> sysIotModelServiceVoList = sysIotModelMapper.queryServiceByModelId(sysIotModelDto.getId());
|
||||||
LinkedHashMap<String, String> map1= new LinkedHashMap<>();
|
LinkedHashMap<String, String> map1 = new LinkedHashMap<>();
|
||||||
SheetInfoBean sheetDTO1 = new SheetInfoBean();
|
SheetInfoBean sheetDTO1 = new SheetInfoBean();
|
||||||
map1.put("tag", "标识");
|
map1.put("tag", "标识");
|
||||||
map1.put("iotModelCode", "所属物模型编码");
|
map1.put("iotModelCode", "所属物模型编码");
|
||||||
@ -314,7 +320,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void importSysIotModel(String iotModelId, MultipartFile file){
|
public void importSysIotModel(String iotModelId, MultipartFile file) {
|
||||||
try {
|
try {
|
||||||
InputStream inputStream = file.getInputStream();
|
InputStream inputStream = file.getInputStream();
|
||||||
ExcelReader readerAll = ExcelUtil.getReader(inputStream);
|
ExcelReader readerAll = ExcelUtil.getReader(inputStream);
|
||||||
@ -327,15 +333,17 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
|||||||
List<List<Object>> list = sheetReader.read(1); // 从第二行开始读
|
List<List<Object>> list = sheetReader.read(1); // 从第二行开始读
|
||||||
if ("物模型属性".equals(sheetName)) {
|
if ("物模型属性".equals(sheetName)) {
|
||||||
saveIotModelFieldInfo(iotModelId, list);
|
saveIotModelFieldInfo(iotModelId, list);
|
||||||
}else {
|
} else {
|
||||||
saveIotModelServiceInfo(iotModelId, list);
|
saveIotModelServiceInfo(iotModelId, list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("导入物模型异常:" + e.getMessage());
|
log.error("导入物模型异常:" + e.getMessage());
|
||||||
|
throw new ServiceException("导入物模型异常:" + e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void saveIotModelServiceInfo(String iotModelId, List<List<Object>> list) {
|
private void saveIotModelServiceInfo(String iotModelId, List<List<Object>> list) {
|
||||||
List<SysIotModelServices> sysIotModelServiceList = new ArrayList<>();
|
List<SysIotModelServices> sysIotModelServiceList = new ArrayList<>();
|
||||||
List<SysIotModelServices> updateSysIotModelServiceList = new ArrayList<>();
|
List<SysIotModelServices> updateSysIotModelServiceList = new ArrayList<>();
|
||||||
@ -361,7 +369,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
|||||||
//加入集合
|
//加入集合
|
||||||
sysIotModelServiceList.add(services);
|
sysIotModelServiceList.add(services);
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
services.setId(sysIotModelServiceQuery.getId());
|
services.setId(sysIotModelServiceQuery.getId());
|
||||||
services.setUpdatedTime(new Date());
|
services.setUpdatedTime(new Date());
|
||||||
services.setUpdatedBy(StpUtil.getLoginIdAsString());
|
services.setUpdatedBy(StpUtil.getLoginIdAsString());
|
||||||
@ -403,7 +411,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
|||||||
//加入集合
|
//加入集合
|
||||||
sysIotModelFieldList.add(field);
|
sysIotModelFieldList.add(field);
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
buildFieldInfo(iotModelId, row, field);
|
buildFieldInfo(iotModelId, row, field);
|
||||||
field.setId(sysIotModelFieldQuery.getId());
|
field.setId(sysIotModelFieldQuery.getId());
|
||||||
field.setUpdatedTime(new Date());
|
field.setUpdatedTime(new Date());
|
||||||
@ -417,47 +425,76 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CollectionUtils.isNotEmpty(sysIotModelFieldList)) {
|
if (CollectionUtils.isNotEmpty(sysIotModelFieldList)) {
|
||||||
|
//创建td表结构
|
||||||
|
//分为高频低频两个list创建
|
||||||
|
List<SysIotModelField> lowCreateList = sysIotModelFieldList.stream().filter(item -> item.getHighSpeed() == 0).collect(Collectors.toList());
|
||||||
|
List<SysIotModelField> highCreateList = sysIotModelFieldList.stream().filter(item -> item.getHighSpeed() == 1).collect(Collectors.toList());
|
||||||
|
for (int i = 0; i < lowCreateList.size(); i++) {
|
||||||
|
if (i == 0) {
|
||||||
|
createTdStableOrColumn(lowCreateList.get(i));
|
||||||
|
} else {
|
||||||
|
SysIotModelField sysIotModelField = lowCreateList.get(i);
|
||||||
|
//stable已经存在,新增stable列
|
||||||
|
SysIotModel sysIotModel = sysIotModelMapper.selectById(sysIotModelField.getIotModelId());
|
||||||
|
Map<String, String> map = new HashMap<>();
|
||||||
|
map.put(sysIotModelField.getAttributeCode(), sysIotModelField.getDataType());
|
||||||
|
//创建低频超级表
|
||||||
|
tdEngineService.addStableColumn(sysIotModel.getIotModelCode(), "l_", map);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (int i = 0; i < highCreateList.size(); i++) {
|
||||||
|
if (i == 0) {
|
||||||
|
createTdStableOrColumn(highCreateList.get(i));
|
||||||
|
} else {
|
||||||
|
SysIotModelField sysIotModelField = highCreateList.get(i);
|
||||||
|
//stable已经存在,新增stable列
|
||||||
|
SysIotModel sysIotModel = sysIotModelMapper.selectById(sysIotModelField.getIotModelId());
|
||||||
|
Map<String, String> map = new HashMap<>();
|
||||||
|
map.put(sysIotModelField.getAttributeCode(), sysIotModelField.getDataType());
|
||||||
|
//创建高频超级表
|
||||||
|
tdEngineService.addStableColumn(sysIotModel.getIotModelCode(), "h_", map);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//新增pg数据库
|
||||||
sysIotModelFieldMapper.insertBatch(sysIotModelFieldList);
|
sysIotModelFieldMapper.insertBatch(sysIotModelFieldList);
|
||||||
// ListUtil.page(sysIotModelFieldList, COMMIT_COUNT, create -> {
|
|
||||||
// for (SysIotModelField item : create){
|
|
||||||
// createTdStableOrColumn(item);
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
}
|
}
|
||||||
if (CollectionUtils.isNotEmpty(updateSysIotModelFieldList)) {
|
if (CollectionUtils.isNotEmpty(updateSysIotModelFieldList)) {
|
||||||
// ListUtil.page(updateSysIotModelFieldList, COMMIT_COUNT, update -> {
|
for (SysIotModelField item : updateSysIotModelFieldList) {
|
||||||
// for (SysIotModelField item : update){
|
SysIotModelField oldSysIotField = sysIotModelFieldMapper.selectById(item.getId());
|
||||||
// SysIotModelField oldSysIotField = sysIotModelFieldMapper.selectById(item.getId());
|
if (oldSysIotField != null) {
|
||||||
// if (oldSysIotField != null){
|
if (!oldSysIotField.getAttributeCode().equals(item.getAttributeCode()) && oldSysIotField.getDataType().equals(item.getDataType()) && Objects.equals(oldSysIotField.getHighSpeed(), item.getHighSpeed())) {
|
||||||
// if (!oldSysIotField.getAttributeCode().equals(item.getAttributeCode()) && oldSysIotField.getDataType().equals(item.getDataType()) && Objects.equals(oldSysIotField.getHighSpeed(), item.getHighSpeed())){
|
//更新td表结构
|
||||||
// //更新td表结构
|
updateTDStableOrColumn(item, oldSysIotField);
|
||||||
// updateTDStableOrColumn(item,oldSysIotField);
|
}
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// }
|
|
||||||
// });
|
|
||||||
sysIotModelFieldMapper.updateBatchById(updateSysIotModelFieldList);
|
sysIotModelFieldMapper.updateBatchById(updateSysIotModelFieldList);
|
||||||
|
|
||||||
}
|
}
|
||||||
if (CollectionUtils.isNotEmpty(delSysIotModelFieldList)) {
|
if (CollectionUtils.isNotEmpty(delSysIotModelFieldList)) {
|
||||||
// ListUtil.page(updateSysIotModelFieldList, COMMIT_COUNT, delete -> {
|
//循环删除td表结构
|
||||||
// for (SysIotModelField item : delete){
|
//分为高频低频两个list创建
|
||||||
// deleteTDStableOrColumn(item);
|
for (SysIotModelField item : delSysIotModelFieldList) {
|
||||||
// }
|
deleteTDStableOrColumn(item);
|
||||||
// });
|
sysIotModelFieldMapper.deleteById(item);
|
||||||
sysIotModelFieldMapper.deleteBatchIds(delSysIotModelFieldList);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void buildFieldInfo(String iotModelId, List<Object> row, SysIotModelField field) {
|
private static void buildFieldInfo(String iotModelId, List<Object> row, SysIotModelField field) {
|
||||||
|
if (row.get(3).equals("") || row.get(4).equals("") || row.get(5).equals("") || row.get(7).equals("") || row.get(9).equals("") || row.get(11).equals("")) {
|
||||||
|
throw new ServiceException("字段不可为空,请检查excel文件{}" + row);
|
||||||
|
}
|
||||||
field.setAttributeCode(row.get(3).toString().toLowerCase());
|
field.setAttributeCode(row.get(3).toString().toLowerCase());
|
||||||
field.setAttributeName(row.get(4).toString());
|
field.setAttributeName(row.get(4).toString());
|
||||||
field.setAttributeType(Integer.valueOf(row.get(5).toString()));
|
field.setAttributeType(Integer.valueOf(row.get(5).toString()));
|
||||||
field.setUnit(row.get(6).toString());
|
field.setUnit(row.get(6).equals("") ? null : row.get(6).toString());
|
||||||
field.setPorder(Integer.valueOf(row.get(7).toString()));
|
field.setPorder(Integer.valueOf(row.get(7).toString()));
|
||||||
field.setSubSystem(row.get(8).toString());
|
field.setSubSystem(row.get(8).equals("") ? null : row.get(8).toString());
|
||||||
field.setDataType(row.get(9).toString());
|
field.setDataType(row.get(9).toString());
|
||||||
field.setVisible(Integer.valueOf(row.get(10).toString()));
|
field.setVisible(row.get(10).equals("") ? null : Integer.valueOf(row.get(10).toString()));
|
||||||
field.setHighSpeed(Integer.valueOf(row.get(11).toString()));
|
field.setHighSpeed(Integer.valueOf(row.get(11).toString()));
|
||||||
field.setIotModelId(Long.valueOf(iotModelId));
|
field.setIotModelId(Long.valueOf(iotModelId));
|
||||||
}
|
}
|
||||||
@ -468,69 +505,69 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createTdStableOrColumn(SysIotModelField sysIotModelField){
|
public void createTdStableOrColumn(SysIotModelField sysIotModelField) {
|
||||||
//如果新增的是第一条记录 创建tdengine超级表 分为高频和低频
|
//如果新增的是第一条记录 创建tdengine超级表 分为高频和低频
|
||||||
QueryWrapper<SysIotModelField> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<SysIotModelField> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.eq("iot_model_id",sysIotModelField.getIotModelId());
|
queryWrapper.eq("iot_model_id", sysIotModelField.getIotModelId());
|
||||||
queryWrapper.eq("highspeed",sysIotModelField.getHighSpeed());
|
queryWrapper.eq("highspeed", sysIotModelField.getHighSpeed());
|
||||||
List<SysIotModelField> sysIotModelFields = sysIotModelFieldMapper.selectList(queryWrapper);
|
List<SysIotModelField> sysIotModelFields = sysIotModelFieldMapper.selectList(queryWrapper);
|
||||||
if (CollectionUtils.isEmpty(sysIotModelFields)){
|
if (CollectionUtils.isEmpty(sysIotModelFields)) {
|
||||||
if (sysIotModelField.getHighSpeed() == 0){
|
if (sysIotModelField.getHighSpeed() == 0) {
|
||||||
SysIotModel sysIotModel = sysIotModelMapper.selectById(sysIotModelField.getIotModelId());
|
SysIotModel sysIotModel = sysIotModelMapper.selectById(sysIotModelField.getIotModelId());
|
||||||
Map<String,String> map = new HashMap<>();
|
Map<String, String> map = new HashMap<>();
|
||||||
map.put(sysIotModelField.getAttributeCode(), sysIotModelField.getDataType());
|
map.put(sysIotModelField.getAttributeCode(), sysIotModelField.getDataType());
|
||||||
//创建低频超级表
|
//创建低频超级表
|
||||||
tdEngineService.createStable(sysIotModel.getIotModelCode(),"l_",map);
|
tdEngineService.createStable(sysIotModel.getIotModelCode(), "l_", map);
|
||||||
}
|
}
|
||||||
if (sysIotModelField.getHighSpeed() == 1){
|
if (sysIotModelField.getHighSpeed() == 1) {
|
||||||
SysIotModel sysIotModel = sysIotModelMapper.selectById(sysIotModelField.getIotModelId());
|
SysIotModel sysIotModel = sysIotModelMapper.selectById(sysIotModelField.getIotModelId());
|
||||||
Map<String,String> map = new HashMap<>();
|
Map<String, String> map = new HashMap<>();
|
||||||
map.put(sysIotModelField.getAttributeCode(), sysIotModelField.getDataType());
|
map.put(sysIotModelField.getAttributeCode(), sysIotModelField.getDataType());
|
||||||
//创建高频超级表
|
//创建高频超级表
|
||||||
tdEngineService.createStable(sysIotModel.getIotModelCode(),"h_",map);
|
tdEngineService.createStable(sysIotModel.getIotModelCode(), "h_", map);
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
//stable已经存在,新增stable列
|
//stable已经存在,新增stable列
|
||||||
if (sysIotModelField.getHighSpeed() == 0){
|
if (sysIotModelField.getHighSpeed() == 0) {
|
||||||
SysIotModel sysIotModel = sysIotModelMapper.selectById(sysIotModelField.getIotModelId());
|
SysIotModel sysIotModel = sysIotModelMapper.selectById(sysIotModelField.getIotModelId());
|
||||||
Map<String,String> map = new HashMap<>();
|
Map<String, String> map = new HashMap<>();
|
||||||
map.put(sysIotModelField.getAttributeCode(), sysIotModelField.getDataType());
|
map.put(sysIotModelField.getAttributeCode(), sysIotModelField.getDataType());
|
||||||
//创建低频超级表
|
//创建低频超级表
|
||||||
tdEngineService.addStableColumn(sysIotModel.getIotModelCode(),"l_",map);
|
tdEngineService.addStableColumn(sysIotModel.getIotModelCode(), "l_", map);
|
||||||
}
|
}
|
||||||
if (sysIotModelField.getHighSpeed() == 1){
|
if (sysIotModelField.getHighSpeed() == 1) {
|
||||||
SysIotModel sysIotModel = sysIotModelMapper.selectById(sysIotModelField.getIotModelId());
|
SysIotModel sysIotModel = sysIotModelMapper.selectById(sysIotModelField.getIotModelId());
|
||||||
Map<String,String> map = new HashMap<>();
|
Map<String, String> map = new HashMap<>();
|
||||||
map.put(sysIotModelField.getAttributeCode(), sysIotModelField.getDataType());
|
map.put(sysIotModelField.getAttributeCode(), sysIotModelField.getDataType());
|
||||||
//创建高频超级表
|
//创建高频超级表
|
||||||
tdEngineService.addStableColumn(sysIotModel.getIotModelCode(),"h_",map);
|
tdEngineService.addStableColumn(sysIotModel.getIotModelCode(), "h_", map);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateTDStableOrColumn(SysIotModelField sysIotModelField,SysIotModelField oldIotModelField){
|
public void updateTDStableOrColumn(SysIotModelField sysIotModelField, SysIotModelField oldIotModelField) {
|
||||||
deleteTDStableOrColumn(oldIotModelField);
|
deleteTDStableOrColumn(oldIotModelField);
|
||||||
createTdStableOrColumn(sysIotModelField);
|
createTdStableOrColumn(sysIotModelField);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteTDStableOrColumn(SysIotModelField sysIotModelField){
|
public void deleteTDStableOrColumn(SysIotModelField sysIotModelField) {
|
||||||
String stableName = null;
|
String stableName = null;
|
||||||
SysIotModel sysIotModel = sysIotModelMapper.selectById(sysIotModelField.getIotModelId());
|
SysIotModel sysIotModel = sysIotModelMapper.selectById(sysIotModelField.getIotModelId());
|
||||||
if(sysIotModelField.getHighSpeed() == 0) {
|
if (sysIotModelField.getHighSpeed() == 0) {
|
||||||
stableName = "l_" + sysIotModel.getIotModelCode();
|
stableName = "l_" + sysIotModel.getIotModelCode();
|
||||||
}
|
}
|
||||||
if(sysIotModelField.getHighSpeed() == 1) {
|
if (sysIotModelField.getHighSpeed() == 1) {
|
||||||
stableName = "h_" + sysIotModel.getIotModelCode();
|
stableName = "h_" + sysIotModel.getIotModelCode();
|
||||||
}
|
}
|
||||||
QueryWrapper<SysIotModelField> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<SysIotModelField> queryWrapper = new QueryWrapper<>();
|
||||||
queryWrapper.eq("iot_model_id",sysIotModelField.getIotModelId());
|
queryWrapper.eq("iot_model_id", sysIotModelField.getIotModelId());
|
||||||
queryWrapper.eq("highspeed",sysIotModelField.getHighSpeed());
|
queryWrapper.eq("highspeed", sysIotModelField.getHighSpeed());
|
||||||
List<SysIotModelField> sysIotModelFields = sysIotModelFieldMapper.selectList(queryWrapper);
|
List<SysIotModelField> sysIotModelFields = sysIotModelFieldMapper.selectList(queryWrapper);
|
||||||
if (CollectionUtils.isNotEmpty(sysIotModelFields) && sysIotModelFields.size() > 1){
|
if (CollectionUtils.isNotEmpty(sysIotModelFields) && sysIotModelFields.size() > 1) {
|
||||||
tdEngineService.deleteColumn(stableName,sysIotModelField.getAttributeCode());
|
tdEngineService.deleteColumn(stableName, sysIotModelField.getAttributeCode());
|
||||||
}
|
}
|
||||||
//物模型属性只剩下最后一个删除表
|
//物模型属性只剩下最后一个删除表
|
||||||
if (CollectionUtils.isNotEmpty(sysIotModelFields) && sysIotModelFields.size() == 1){
|
if (CollectionUtils.isNotEmpty(sysIotModelFields) && sysIotModelFields.size() == 1) {
|
||||||
tdEngineService.deleteStable(stableName);
|
tdEngineService.deleteStable(stableName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,6 @@ public class TDEngineService {
|
|||||||
/**
|
/**
|
||||||
* 创建超级表
|
* 创建超级表
|
||||||
*/
|
*/
|
||||||
@Async
|
|
||||||
public void createStable(String iotModelCode, String stableType, Map<String, String> fieldNameTypeMap) {
|
public void createStable(String iotModelCode, String stableType, Map<String, String> fieldNameTypeMap) {
|
||||||
try (Connection conn = hikariDataSource.getConnection();
|
try (Connection conn = hikariDataSource.getConnection();
|
||||||
Statement pstmt = conn.createStatement()) {
|
Statement pstmt = conn.createStatement()) {
|
||||||
@ -95,7 +94,6 @@ public class TDEngineService {
|
|||||||
/**
|
/**
|
||||||
* 新增超级表列
|
* 新增超级表列
|
||||||
*/
|
*/
|
||||||
@Async
|
|
||||||
public void addStableColumn(String iotModelCode, String stableType, Map<String, String> fieldNameTypeMap) {
|
public void addStableColumn(String iotModelCode, String stableType, Map<String, String> fieldNameTypeMap) {
|
||||||
try (Connection conn = hikariDataSource.getConnection();
|
try (Connection conn = hikariDataSource.getConnection();
|
||||||
Statement pstmt = conn.createStatement()) {
|
Statement pstmt = conn.createStatement()) {
|
||||||
@ -126,7 +124,6 @@ public class TDEngineService {
|
|||||||
/**
|
/**
|
||||||
* 删除超级表列
|
* 删除超级表列
|
||||||
*/
|
*/
|
||||||
@Async
|
|
||||||
public void deleteColumn(String stableName, String fieldCode) {
|
public void deleteColumn(String stableName, String fieldCode) {
|
||||||
try (Connection conn = hikariDataSource.getConnection();
|
try (Connection conn = hikariDataSource.getConnection();
|
||||||
Statement pstmt = conn.createStatement()) {
|
Statement pstmt = conn.createStatement()) {
|
||||||
@ -152,7 +149,6 @@ public class TDEngineService {
|
|||||||
/**
|
/**
|
||||||
* 删除超级表
|
* 删除超级表
|
||||||
*/
|
*/
|
||||||
@Async
|
|
||||||
public void deleteStable(String stableName) {
|
public void deleteStable(String stableName) {
|
||||||
try (Connection conn = hikariDataSource.getConnection();
|
try (Connection conn = hikariDataSource.getConnection();
|
||||||
Statement pstmt = conn.createStatement()) {
|
Statement pstmt = conn.createStatement()) {
|
||||||
|
@ -235,7 +235,6 @@ public class DataServiceImpl implements DataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleData(TerminalMessage data) {
|
public void handleData(TerminalMessage data) {
|
||||||
// 先从redis里面获取设备的初始化数据
|
|
||||||
JsonNode jsonNode = data.getData();
|
JsonNode jsonNode = data.getData();
|
||||||
String deviceId = jsonNode.get("deviceId").asText();
|
String deviceId = jsonNode.get("deviceId").asText();
|
||||||
JsonNode values = jsonNode.get("values");
|
JsonNode values = jsonNode.get("values");
|
||||||
@ -249,25 +248,6 @@ public class DataServiceImpl implements DataService {
|
|||||||
keyValueMap.put(key,values.get(fieldName));
|
keyValueMap.put(key,values.get(fieldName));
|
||||||
}
|
}
|
||||||
adminRedisTemplate.mSet(keyValueMap);
|
adminRedisTemplate.mSet(keyValueMap);
|
||||||
// Long dataTime = data.getTime();
|
|
||||||
//
|
|
||||||
// // 存入td库
|
|
||||||
// List<RTData> highList = new ArrayList<>();
|
|
||||||
// List<RTData> lowList = new ArrayList<>();
|
|
||||||
// RTData rtHighData = RTData.builder()
|
|
||||||
// .dataTime(dataTime)
|
|
||||||
// .deviceId(Long.valueOf(deviceId))
|
|
||||||
// .values(highFieldMap)
|
|
||||||
// .build();
|
|
||||||
// RTData rtLowData = RTData.builder()
|
|
||||||
// .dataTime(dataTime)
|
|
||||||
// .deviceId(Long.valueOf(deviceId))
|
|
||||||
// .values(highFieldMap)
|
|
||||||
// .build();
|
|
||||||
// highList.add(rtHighData);
|
|
||||||
// lowList.add(rtLowData);
|
|
||||||
// tdEngineService.updateYCHighValues(highList, iotModelCode);
|
|
||||||
// tdEngineService.updateYCLowValues(lowList, iotModelCode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -2,8 +2,10 @@ package com.das.modules.node.service.impl;
|
|||||||
|
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
import cn.hutool.core.io.IoUtil;
|
import cn.hutool.core.io.IoUtil;
|
||||||
|
import cn.hutool.core.util.IdUtil;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.das.common.config.SessionUtil;
|
import com.das.common.config.SessionUtil;
|
||||||
|
import com.das.common.exceptions.ServiceException;
|
||||||
import com.das.common.utils.BeanCopyUtils;
|
import com.das.common.utils.BeanCopyUtils;
|
||||||
import com.das.common.utils.PageDataInfo;
|
import com.das.common.utils.PageDataInfo;
|
||||||
import com.das.common.utils.PageQuery;
|
import com.das.common.utils.PageQuery;
|
||||||
@ -448,13 +450,14 @@ public class SysNodeServiceImpl implements SysNodeService {
|
|||||||
ObjectNode jsonNode = JSON_MAPPER.convertValue(map, ObjectNode.class);
|
ObjectNode jsonNode = JSON_MAPPER.convertValue(map, ObjectNode.class);
|
||||||
TerminalMessage configUpdate = TerminalMessage.builder()
|
TerminalMessage configUpdate = TerminalMessage.builder()
|
||||||
.cmd(cmd)
|
.cmd(cmd)
|
||||||
.cmdId(String.valueOf(device.getDeviceId()))
|
.cmdId(IdUtil.nanoId())
|
||||||
.time(time)
|
.time(time)
|
||||||
.data(jsonNode)
|
.data(jsonNode)
|
||||||
.build();
|
.build();
|
||||||
terminalMessageEventHandler.sendTerminalMessageWithResult(activeNodeId, configUpdate);
|
terminalMessageEventHandler.sendTerminalMessageWithResult(activeNodeId, configUpdate);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("设备控制失败 ", e);
|
log.error("设备控制失败 ", e);
|
||||||
|
throw new ServiceException("设备控制失败 "+ e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -479,7 +482,7 @@ public class SysNodeServiceImpl implements SysNodeService {
|
|||||||
ObjectNode jsonNode = JSON_MAPPER.convertValue(map, ObjectNode.class);
|
ObjectNode jsonNode = JSON_MAPPER.convertValue(map, ObjectNode.class);
|
||||||
TerminalMessage configUpdate = TerminalMessage.builder()
|
TerminalMessage configUpdate = TerminalMessage.builder()
|
||||||
.cmd(cmd)
|
.cmd(cmd)
|
||||||
.cmdId(String.valueOf(device.getDeviceId()))
|
.cmdId(IdUtil.nanoId())
|
||||||
.time(time)
|
.time(time)
|
||||||
.data(jsonNode)
|
.data(jsonNode)
|
||||||
.build();
|
.build();
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package com.das.modules.page.domian;
|
package com.das.modules.page.domian;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -7,10 +9,14 @@ import java.util.Map;
|
|||||||
@Data
|
@Data
|
||||||
public class WindTurbinesPageVo {
|
public class WindTurbinesPageVo {
|
||||||
|
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
private Long irn;
|
private Long irn;
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long modelId;
|
||||||
|
|
||||||
private String model;
|
private String model;
|
||||||
|
|
||||||
private String belongLine;
|
private String belongLine;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.das.modules.page.service;
|
package com.das.modules.page.service;
|
||||||
|
|
||||||
|
import com.das.common.exceptions.ServiceException;
|
||||||
import com.das.modules.data.domain.SnapshotValueQueryParam;
|
import com.das.modules.data.domain.SnapshotValueQueryParam;
|
||||||
import com.das.modules.data.service.DataService;
|
import com.das.modules.data.service.DataService;
|
||||||
import com.das.modules.equipment.mapper.SysEquipmentMapper;
|
import com.das.modules.equipment.mapper.SysEquipmentMapper;
|
||||||
@ -77,7 +78,13 @@ public class WindTurbinesPageService {
|
|||||||
|
|
||||||
public void windTurbinesControl(List<DeviceCommandDto> controlList){
|
public void windTurbinesControl(List<DeviceCommandDto> controlList){
|
||||||
for (DeviceCommandDto item : controlList){
|
for (DeviceCommandDto item : controlList){
|
||||||
sysNodeService.deviceCommand(item);
|
try {
|
||||||
|
sysNodeService.deviceCommand(item);
|
||||||
|
}catch (Exception e){
|
||||||
|
log.error("下控失败",e);
|
||||||
|
throw new ServiceException("下控失败"+e);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -166,7 +166,7 @@
|
|||||||
select distinct belong_line as name from sys_equipment t where t.object_type = 10002 and belong_line !='';
|
select distinct belong_line as name from sys_equipment t where t.object_type = 10002 and belong_line !='';
|
||||||
</select>
|
</select>
|
||||||
<select id="queryAllWindList" resultType="com.das.modules.page.domian.WindTurbinesPageVo">
|
<select id="queryAllWindList" resultType="com.das.modules.page.domian.WindTurbinesPageVo">
|
||||||
select se.id as irn,se.name,se.model,se.belong_line as belongLine from sys_equipment se where se.object_type = #{objectType}
|
select se.id as irn,se.name,se.model,se.belong_line as belongLine, se.iot_model_id as modelId from sys_equipment se where se.object_type = #{objectType} order by se.name
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,6 +28,10 @@
|
|||||||
<if test="info.orderColumn != null and info.orderType != ''">
|
<if test="info.orderColumn != null and info.orderType != ''">
|
||||||
order by ${info.orderColumn} ${info.orderType}
|
order by ${info.orderColumn} ${info.orderType}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="info.attributeType != null and info.attributeType != ''">
|
||||||
|
and t.attribute_type = #{info.attributeType}
|
||||||
|
</if>
|
||||||
|
|
||||||
<if test="info.orderColumn == null or info.orderColumn == '' or info.orderType == null or info.orderType == ''">
|
<if test="info.orderColumn == null or info.orderColumn == '' or info.orderType == null or info.orderType == ''">
|
||||||
order by t.porder asc
|
order by t.porder asc
|
||||||
</if>
|
</if>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
- [节点管理接口](api/node.md)
|
- [节点管理接口](api/node.md)
|
||||||
- [数据访问接口](api/data.md)
|
- [数据访问接口](api/data.md)
|
||||||
- [页面访问接口](api/pages/)
|
- [页面访问接口](api/pages/)
|
||||||
- [首页](api/pages/home.md)
|
- [首页接口](api/pages/home.md)
|
||||||
- [数据采集](datacollect/)
|
- [数据采集](datacollect/)
|
||||||
- [系统部署](deploy/)
|
- [系统部署](deploy/)
|
||||||
- [Linux系统部署](deploy/linux.md)
|
- [Linux系统部署](deploy/linux.md)
|
||||||
|
@ -245,15 +245,22 @@ POST 请求接口
|
|||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"iotModelId":"123"
|
"iotModelId":"123",
|
||||||
|
"pageNum":1,
|
||||||
|
"pageSize": 30
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
入参描述
|
入参描述
|
||||||
|
|
||||||
| 参数名 | 参数类型 | 可选 | 描述 |
|
| 参数名 | 参数类型 | 可选 | 描述 |
|
||||||
| ---------- | -------- | ---- | -------- |
|
| ---------- | -------- |-----|-------|
|
||||||
| iotModelId | String | No | 物模型ID |
|
| iotModelId | String | yes | 物模型ID |
|
||||||
|
| attributeName | String | yes | 属性名称 |
|
||||||
|
| attributeCode | String | yes | 属性编码 |
|
||||||
|
| attributeType | String | yes | 量测类型 |
|
||||||
|
| pageSize | 数值 | No | 每页显示条数 |
|
||||||
|
| pageNum | 数值 | No | 页码 |
|
||||||
|
|
||||||
返回报文
|
返回报文
|
||||||
|
|
||||||
@ -671,13 +678,13 @@ POST请求接口
|
|||||||
|
|
||||||
入参描述
|
入参描述
|
||||||
|
|
||||||
| 参数名 | 参数类型 | 可选 | 描述 |
|
| 参数名 | 参数类型 | 可选 | 描述 |
|
||||||
| ----------- | -------- | ---- | -------------------------- |
|
| ----------- | -------- |-----| -------------------------- |
|
||||||
| orgId | 数值 | No | 所属机构ID |
|
| orgId | 数值 | yes | 所属机构ID |
|
||||||
| parentEquipmentId | 数值 | No | 上级设备ID |
|
| parentEquipmentId | 数值 | yes | 上级设备ID |
|
||||||
| iotModelId | 字符串 | No | 所属物模型ID |
|
| iotModelId | 字符串 | yes | 所属物模型ID |
|
||||||
| pageSize | 数值 | No | 每页显示条数 |
|
| pageSize | 数值 | No | 每页显示条数 |
|
||||||
| pageNum | 数值 | No | 页码 |
|
| pageNum | 数值 | No | 页码 |
|
||||||
|
|
||||||
返回报文
|
返回报文
|
||||||
|
|
||||||
|
@ -295,3 +295,47 @@ PS: 同一节点只允许建立一条连接。
|
|||||||
"opValue": 1
|
"opValue": 1
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 事件上报命令
|
||||||
|
|
||||||
|
采集程序向系统上报变位、越限事件
|
||||||
|
|
||||||
|
?> 方向: `采集程序` -> `系统`
|
||||||
|
|
||||||
|
**命令:** `deviceEvent`
|
||||||
|
|
||||||
|
**数据体:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
//设备ID
|
||||||
|
"deviceId": "112345123546",
|
||||||
|
//设备属性编码
|
||||||
|
"attrCode": "stop",
|
||||||
|
//属性值
|
||||||
|
"attrValue": 0,
|
||||||
|
//事件类型 ( 0-遥信变位 1-越上限 2-越下限)
|
||||||
|
"eventType": 0,
|
||||||
|
//事件发生时刻
|
||||||
|
"eventTime": 12321351235123,
|
||||||
|
//限值
|
||||||
|
"limitValue": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
//设备ID
|
||||||
|
"deviceId": "112345123546",
|
||||||
|
//设备属性编码
|
||||||
|
"attrCode": "Ia",
|
||||||
|
//属性值
|
||||||
|
"attrValue": 12350,
|
||||||
|
//事件类型 ( 0-遥信变位 1-越上限 2-越下限)
|
||||||
|
"eventType": 0,
|
||||||
|
//事件发生时刻
|
||||||
|
"eventTime": 12321351235123,
|
||||||
|
//限值
|
||||||
|
"limitValue": 50
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
```
|
||||||
|
@ -20,7 +20,7 @@ export const runAirBlowerReq = (data: {
|
|||||||
opValue: 1 | 0
|
opValue: 1 | 0
|
||||||
}[]) => {
|
}[]) => {
|
||||||
return createAxios({
|
return createAxios({
|
||||||
url: '/windTurbinesControl',
|
url: '/api/page/turbines/windTurbinesControl',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
|
@ -120,7 +120,7 @@ export const saveMappingListReq = (data: any) => {
|
|||||||
|
|
||||||
export const bindDeviceMeasReq = (data: any) => {
|
export const bindDeviceMeasReq = (data: any) => {
|
||||||
return createAxios({
|
return createAxios({
|
||||||
url: '/api/node/link/bindDeviceMeas',
|
url: '/api/node/link/bindDevices',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: data,
|
data: data,
|
||||||
})
|
})
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -47,7 +47,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-header>
|
</el-header>
|
||||||
<el-main class="mainPart">
|
<el-main class="mainPart">
|
||||||
<el-table :column="tableColumn" :data="tableData" :header-row-style="tableHaderStyle" @selectionChange="selectTable" height="100%">
|
<el-table
|
||||||
|
ref="tableRef"
|
||||||
|
:column="tableColumn"
|
||||||
|
:data="tableData"
|
||||||
|
:header-row-style="tableHaderStyle"
|
||||||
|
@selectionChange="selectTable"
|
||||||
|
height="100%"
|
||||||
|
>
|
||||||
<el-table-column type="selection" width="55"></el-table-column>
|
<el-table-column type="selection" width="55"></el-table-column>
|
||||||
<template v-for="item in tableColumn" :key="item.prop">
|
<template v-for="item in tableColumn" :key="item.prop">
|
||||||
<el-table-column
|
<el-table-column
|
||||||
@ -101,7 +108,7 @@
|
|||||||
<div>{{ scope.row[item.prop] }}</div>
|
<div>{{ scope.row[item.prop] }}</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="item.prop === 'name'" #default="scope">
|
<template v-if="item.prop === 'name'" #default="scope">
|
||||||
<div class="tableColumnClick">{{ scope.row[item.prop] }}</div>
|
<div class="tableColumnClick" @click="openWindTurbine(scope.row)">{{ scope.row[item.prop] }}</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</template>
|
</template>
|
||||||
@ -113,10 +120,13 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { SelectTypeObjType, SelectTypeKeyUnionType, TableDataObjType, TableColumnType } from './type'
|
import { SelectTypeObjType, SelectTypeKeyUnionType, TableDataObjType, TableColumnType } from './type'
|
||||||
import { reactive, ref, watch } from 'vue'
|
import { onUnmounted, reactive, ref, watch, nextTick } from 'vue'
|
||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
import { getAirBlowerListReq, getBelongLineListReq, runAirBlowerReq } from '/@/api/backend/airBlower/request'
|
import { getAirBlowerListReq, getBelongLineListReq, runAirBlowerReq } from '/@/api/backend/airBlower/request'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage, TableInstance } from 'element-plus'
|
||||||
|
import { useRouter, useRoute } from 'vue-router'
|
||||||
|
const router = useRouter()
|
||||||
|
const route = useRoute()
|
||||||
|
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
|
|
||||||
@ -297,6 +307,7 @@ const tableColumn: TableColumnType[] = [
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
const tableRef = ref<TableInstance>()
|
||||||
const tableData = ref<TableDataObjType[]>([])
|
const tableData = ref<TableDataObjType[]>([])
|
||||||
const originTableData = ref<TableDataObjType[]>([])
|
const originTableData = ref<TableDataObjType[]>([])
|
||||||
const getTableData = () => {
|
const getTableData = () => {
|
||||||
@ -350,6 +361,14 @@ const getTableData = () => {
|
|||||||
})
|
})
|
||||||
tableData.value = result
|
tableData.value = result
|
||||||
}
|
}
|
||||||
|
if (selectList.value.length) {
|
||||||
|
const selected = tableData.value.filter((item) => selectList.value.includes(item.irn))
|
||||||
|
selected.forEach((item) => {
|
||||||
|
nextTick(() => {
|
||||||
|
tableRef.value?.toggleRowSelection(item, true)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.catch((err: any) => {
|
.catch((err: any) => {
|
||||||
console.log(err)
|
console.log(err)
|
||||||
@ -394,6 +413,33 @@ watch(autoUpdate, (newVal: boolean) => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const openWindTurbine = (row: TableDataObjType) => {
|
||||||
|
if (!router.hasRoute('windTurbine')) {
|
||||||
|
router.addRoute('admin', {
|
||||||
|
path: '/windTurbine',
|
||||||
|
name: 'windTurbine',
|
||||||
|
component: () => import('/@/views/backend/WindBlower/index.vue'),
|
||||||
|
meta: {
|
||||||
|
title: '单风机详情',
|
||||||
|
menuDesc: '单风机详情',
|
||||||
|
addtab: true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
console.log(router.getRoutes())
|
||||||
|
|
||||||
|
router.push({
|
||||||
|
name: 'windTurbine',
|
||||||
|
query: {
|
||||||
|
irn: row.irn,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
onUnmounted(() => {
|
||||||
|
autoUpdateInterval.value && clearInterval(autoUpdateInterval.value)
|
||||||
|
autoUpdateInterval.value = null
|
||||||
|
})
|
||||||
getTableData()
|
getTableData()
|
||||||
getBlongLineList()
|
getBlongLineList()
|
||||||
</script>
|
</script>
|
||||||
|
@ -155,8 +155,10 @@ const getCompleteData = () => {
|
|||||||
return getRealValueList({ deviceId: props.deviceId, attributes: codeList }, data)
|
return getRealValueList({ deviceId: props.deviceId, attributes: codeList }, data)
|
||||||
})
|
})
|
||||||
.then((realData: any) => {
|
.then((realData: any) => {
|
||||||
|
console.log(realData)
|
||||||
|
|
||||||
const data = realData.list.map((item: any) => {
|
const data = realData.list.map((item: any) => {
|
||||||
const realValItem = realData.realVal[props.deviceId]?.[item.attributeCode]
|
const realValItem = realData.realVal[props.deviceId]?.[item.attributeCode?.toLowerCase()]
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
realTimeValue: realValItem ? (realValItem % 1 === 0 ? realValItem : realValItem.toFixed(3)) : '-',
|
realTimeValue: realValItem ? (realValItem % 1 === 0 ? realValItem : realValItem.toFixed(3)) : '-',
|
||||||
@ -205,25 +207,30 @@ const openChart = (data: any) => {}
|
|||||||
watch(
|
watch(
|
||||||
() => props.show,
|
() => props.show,
|
||||||
(newVal) => {
|
(newVal) => {
|
||||||
newVal && getCompleteData()
|
if (newVal) {
|
||||||
|
getCompleteData()
|
||||||
|
} else {
|
||||||
|
autoUpdateTimer.value && clearInterval(autoUpdateTimer.value)
|
||||||
|
autoUpdateTimer.value = null
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
immediate: true,
|
immediate: true,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
let autoUpdateTimer: any = null
|
const autoUpdateTimer: any = ref(null)
|
||||||
watch(
|
watch(
|
||||||
() => props.autoUpdate,
|
() => props.autoUpdate,
|
||||||
(newVal) => {
|
(newVal) => {
|
||||||
if (newVal) {
|
if (newVal) {
|
||||||
if (!autoUpdateTimer) {
|
if (!autoUpdateTimer.value) {
|
||||||
autoUpdateTimer = setInterval(() => {
|
autoUpdateTimer.value = setInterval(() => {
|
||||||
getCompleteData()
|
getCompleteData()
|
||||||
}, 2000)
|
}, 2000)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
clearInterval(autoUpdateTimer)
|
clearInterval(autoUpdateTimer.value)
|
||||||
autoUpdateTimer = null
|
autoUpdateTimer.value = null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -334,13 +334,14 @@ const okEdit = (data: any) => {
|
|||||||
const submitcorrectionDevice = () => {
|
const submitcorrectionDevice = () => {
|
||||||
const bindDevice = correctionDevice.value.map((item: any, index) => {
|
const bindDevice = correctionDevice.value.map((item: any, index) => {
|
||||||
return {
|
return {
|
||||||
equipmentId: item.id,
|
id: item.id,
|
||||||
iotAddr: item.iotAddr,
|
iotAddr: item.iotAddr,
|
||||||
porder: index + 1,
|
name: item.name,
|
||||||
|
iotModelId: item.iotModelId,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
bindDeviceMeasReq({ equipmentId: bindDevice, linkId: route.query.id }).then((res) => {
|
bindDeviceMeasReq({ equipmentList: bindDevice, linkId: route.query.id }).then((res) => {
|
||||||
ElMessage.success('关联成功!')
|
ElMessage.success('关联成功!')
|
||||||
closecorrectionDevice()
|
closecorrectionDevice()
|
||||||
resetExcel()
|
resetExcel()
|
||||||
@ -379,10 +380,10 @@ const getBindDeviceTree = () => {
|
|||||||
if (res.data) {
|
if (res.data) {
|
||||||
correctionDevice.value = res.data.map((item: any) => {
|
correctionDevice.value = res.data.map((item: any) => {
|
||||||
return {
|
return {
|
||||||
id: item.equipmentId,
|
id: item.id,
|
||||||
name: item.equipmentName,
|
name: item.name,
|
||||||
iotAddr: item.iotAddr,
|
iotAddr: item.iotAddr,
|
||||||
porder: item.porder,
|
iotModelId: item.iotModelId,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user