|
|
@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.usky.ems.domain.*;
|
|
|
import com.usky.ems.mapper.*;
|
|
|
import com.usky.ems.service.EmsModelService;
|
|
|
+import com.usky.ems.service.vo.EmsAttributePointVO;
|
|
|
import com.usky.ems.service.vo.EmsEnergyTypeVO;
|
|
|
+import com.usky.ems.service.vo.EmsGatewayDeviceTreeNode;
|
|
|
import com.usky.ems.service.vo.EmsModelSaveRequest;
|
|
|
import com.usky.ems.service.vo.EmsStructureTreeNode;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
@@ -300,7 +302,7 @@ public class EmsModelServiceImpl implements EmsModelService {
|
|
|
EmsChannel c = new EmsChannel();
|
|
|
c.setGatewayId(gatewayId);
|
|
|
c.setName(name);
|
|
|
- c.setChannelTypeId(1);
|
|
|
+ c.setChannelTypeId(request.getChannelTypeId());
|
|
|
emsChannelMapper.insert(c);
|
|
|
return c.getId();
|
|
|
}
|
|
|
@@ -398,4 +400,92 @@ public class EmsModelServiceImpl implements EmsModelService {
|
|
|
public void deleteAttributePoint(Long id) {
|
|
|
emsDeviceFunctionMapper.deleteById(id);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<EmsGatewayDeviceTreeNode> getGatewayDeviceTree(Long spaceId, String keyword) {
|
|
|
+ // 1. 查询网关列表
|
|
|
+ LambdaQueryWrapper<EmsGateway> gwWrapper = new LambdaQueryWrapper<>();
|
|
|
+ if (spaceId != null) {
|
|
|
+ gwWrapper.eq(EmsGateway::getSpaceId, spaceId);
|
|
|
+ }
|
|
|
+ if (keyword != null && !keyword.trim().isEmpty()) {
|
|
|
+ gwWrapper.like(EmsGateway::getName, keyword.trim());
|
|
|
+ }
|
|
|
+ List<EmsGateway> gateways = emsGatewayMapper.selectList(gwWrapper);
|
|
|
+
|
|
|
+ List<EmsGatewayDeviceTreeNode> result = new ArrayList<>();
|
|
|
+ for (EmsGateway gw : gateways) {
|
|
|
+ EmsGatewayDeviceTreeNode gwNode = new EmsGatewayDeviceTreeNode();
|
|
|
+ gwNode.setId(gw.getId());
|
|
|
+ gwNode.setName(gw.getName());
|
|
|
+ gwNode.setType("gateway");
|
|
|
+
|
|
|
+ // 2. 查询该网关下的通道
|
|
|
+ List<EmsChannel> channels = emsChannelMapper.selectList(
|
|
|
+ new LambdaQueryWrapper<EmsChannel>().eq(EmsChannel::getGatewayId, gw.getId()));
|
|
|
+ List<EmsGatewayDeviceTreeNode> channelNodes = new ArrayList<>();
|
|
|
+ for (EmsChannel ch : channels) {
|
|
|
+ EmsGatewayDeviceTreeNode chNode = new EmsGatewayDeviceTreeNode();
|
|
|
+ chNode.setId(ch.getId());
|
|
|
+ chNode.setName(ch.getName());
|
|
|
+ chNode.setType("channel");
|
|
|
+
|
|
|
+ // 3. 查询该通道下的设备
|
|
|
+ List<EmsDevice> devices = emsDeviceMapper.selectList(
|
|
|
+ new LambdaQueryWrapper<EmsDevice>().eq(EmsDevice::getChannelId, ch.getId()));
|
|
|
+ List<EmsGatewayDeviceTreeNode> deviceNodes = new ArrayList<>();
|
|
|
+ for (EmsDevice dev : devices) {
|
|
|
+ EmsGatewayDeviceTreeNode devNode = new EmsGatewayDeviceTreeNode();
|
|
|
+ devNode.setId(dev.getId());
|
|
|
+ devNode.setName(dev.getName());
|
|
|
+ devNode.setType("device");
|
|
|
+ deviceNodes.add(devNode);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 只有当设备列表不为空时,才设置通道的 children
|
|
|
+ if (!deviceNodes.isEmpty()) {
|
|
|
+ chNode.setChildren(deviceNodes);
|
|
|
+ channelNodes.add(chNode);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 只有当通道列表不为空时,才设置网关的 children
|
|
|
+ if (!channelNodes.isEmpty()) {
|
|
|
+ gwNode.setChildren(channelNodes);
|
|
|
+ result.add(gwNode);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<EmsAttributePointVO> getAttributePointList(String deviceId) {
|
|
|
+ if (deviceId == null || deviceId.trim().isEmpty()) {
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+ List<EmsDeviceFunction> functions = emsDeviceFunctionMapper.selectList(
|
|
|
+ new LambdaQueryWrapper<EmsDeviceFunction>().eq(EmsDeviceFunction::getDeviceId, deviceId));
|
|
|
+ List<EmsAttributePointVO> result = new ArrayList<>();
|
|
|
+ for (EmsDeviceFunction f : functions) {
|
|
|
+ EmsAttributePointVO vo = new EmsAttributePointVO();
|
|
|
+ vo.setId(f.getId());
|
|
|
+ vo.setProductId(f.getProductId());
|
|
|
+ vo.setProductTemplateId(f.getProductTemplateId());
|
|
|
+ vo.setDeviceId(f.getDeviceId());
|
|
|
+ vo.setName(f.getName());
|
|
|
+ vo.setIdentifier(f.getIdentifier());
|
|
|
+ vo.setValue(f.getValue());
|
|
|
+ vo.setAcqTime(f.getAcqTime());
|
|
|
+ vo.setRatio(f.getRatio());
|
|
|
+ vo.setPreservable(f.getPreservable());
|
|
|
+ vo.setBindingAcq(f.getBindingAcq());
|
|
|
+ vo.setUpdatedBy(f.getUpdatedBy());
|
|
|
+ vo.setUpdateTime(f.getUpdateTime());
|
|
|
+ vo.setCreatedBy(f.getCreatedBy());
|
|
|
+ vo.setCreateTime(f.getCreateTime());
|
|
|
+ result.add(vo);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
}
|