diff --git a/fastbee-iot-data/src/main/java/com/fastbee/iot/data/executor/PowerOnTriggerTaskExecutor.java b/fastbee-iot-data/src/main/java/com/fastbee/iot/data/executor/PowerOnTriggerTaskExecutor.java index 141611fe..f4cbc188 100644 --- a/fastbee-iot-data/src/main/java/com/fastbee/iot/data/executor/PowerOnTriggerTaskExecutor.java +++ b/fastbee-iot-data/src/main/java/com/fastbee/iot/data/executor/PowerOnTriggerTaskExecutor.java @@ -99,6 +99,12 @@ public class PowerOnTriggerTaskExecutor { log.warn("设备不存在,无法下发指令,设备编号:{}", serialNumber); return; } + + if (StringUtils.isNotEmpty(device.getImei()) && StringUtils.isNotEmpty(device.getIccid()) && (device.getLongitude() != null && device.getLatitude() != null)) { + log.warn("设备IMEI/ICCID/位置信息不为空,无需下发指令,设备编号:{}", serialNumber); + return; + } + if (!(device.getDeviceType() == DeviceType.DIRECT_DEVICE.getCode() || device.getDeviceType() == DeviceType.GATEWAY.getCode())) { log.warn("设备类型不为直连或网关,无需下发指令,设备编号:{}", serialNumber); return; diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceAllShortOutput.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceAllShortOutput.java index 44a1ecb2..b5e94a10 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceAllShortOutput.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/model/DeviceAllShortOutput.java @@ -30,7 +30,7 @@ public class DeviceAllShortOutput { private String productName; /** - * 设备类型(1-直连设备、2-网关子设备、3-网关设备) + * 设备类型(1-直连设备、2-网关设备、3-监控设备 4-网关子设备) */ private Integer deviceType; diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceServiceImpl.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceServiceImpl.java index c6fda496..e2711f38 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceServiceImpl.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/service/impl/DeviceServiceImpl.java @@ -1647,7 +1647,7 @@ public class DeviceServiceImpl implements IDeviceService { AddressInfo addressInfo = service.getAddressByCoordinate(platformCoordinate); String networkAddress = StringUtils.isEmpty(addressInfo.getBuilding()) ? addressInfo.getFormattedAddress() : addressInfo.getBuilding(); device.setNetworkAddress(networkAddress); - log.info("{}- 设置地址:{}", device.getSerialNumber(), networkAddress); + log.info("{}- LBS设备设置地址:{}", device.getSerialNumber(), networkAddress); } return; } @@ -1655,7 +1655,11 @@ public class DeviceServiceImpl implements IDeviceService { // 根据IP获取地址 String address = ipAddressService.getAddressByIP(ip); device.setNetworkAddress(address); - log.info("{}- 设置地址:{}", device.getSerialNumber(), address); + // 地址获取失败 直接返回 + if (StringUtils.isEmpty(address) || "内网IP".equals(address) || "未知地址".equals(address)) { + log.error("{}- IP获取地址失败:{}", device.getSerialNumber(), address); + return; + } // 查询经纬度 Coordinate coordinate = service.getCoordinateByAddress(address); Coordinate wgs84Coordinate = service.convertToWgs84(coordinate); diff --git a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceMapper.xml b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceMapper.xml index f171f246..86885e1f 100644 --- a/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceMapper.xml +++ b/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceMapper.xml @@ -48,6 +48,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -463,7 +465,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select p.device_type as device_type, d.imei as imei, - d.iccid as iccid + d.iccid as iccid, + d.longitude, + d.latitude from iot_device d left join iot_product p on p.product_id = d.product_id where d.serial_number = #{serialNumber} diff --git a/yack-web/src/lang/en-US/device.json b/yack-web/src/lang/en-US/device.json index e5c3c8e6..f8a01da6 100644 --- a/yack-web/src/lang/en-US/device.json +++ b/yack-web/src/lang/en-US/device.json @@ -426,6 +426,8 @@ "device.index.105953-3": "Please Enter DeviceNum", "device.index.105953-4": "Device Status", "device.index.105953-5": "Please Select The Device Status", + "device.index.105953-59": "Organization", + "device.index.105953-60": "Select organization (empty = current dept)", "device.index.105953-6": "My Group", "device.index.105953-7": "Please Select My Group", "device.index.105953-8": "Search", diff --git a/yack-web/src/lang/zh-CN/device.json b/yack-web/src/lang/zh-CN/device.json index 054c4dbf..11ab66a1 100644 --- a/yack-web/src/lang/zh-CN/device.json +++ b/yack-web/src/lang/zh-CN/device.json @@ -426,6 +426,8 @@ "device.index.105953-3": "请输入设备编号", "device.index.105953-4": "设备状态", "device.index.105953-5": "请选择设备状态", + "device.index.105953-59": "机构", + "device.index.105953-60": "请选择机构(空则本部门)", "device.index.105953-6": "我的分组", "device.index.105953-7": "请选择我的分组", "device.index.105953-8": "搜索", diff --git a/yack-web/src/views/iot/device/index.vue b/yack-web/src/views/iot/device/index.vue index af4ff516..220c8de0 100644 --- a/yack-web/src/views/iot/device/index.vue +++ b/yack-web/src/views/iot/device/index.vue @@ -14,301 +14,389 @@ - - - - - - - + + + - - {{ $t('device.index.105953-8') }} - {{ $t('device.index.105953-9') }} - - {{ searchShow ? $t('template.index.891112-113') : $t('template.index.891112-112') }} - - - - - + + + + + + + - - - - handleCommand(command)" v-hasPermi="['iot:device:add']"> - - {{ $t('device.index.105953-10') }} - - - - {{ $t('device.index.105953-11') }} - {{ $t('device.index.105953-12') }} - - - - - handleCommand1(command)" v-hasPermi="['iot:device:assignment']"> - - {{ $t('device.index.105953-13') }} - - - - {{ $t('device.index.105953-14') }} - {{ $t('device.index.105953-15') }} - - - - - {{ $t('device.index.105953-16') }} - - - handleCommandMore(command)" v-hasPermi="['iot:device:record:list', 'iot:device:batchGenerator']"> - - {{ $t('device.index.105953-48') }} - - - - {{ $t('device.index.105953-49') }} - {{ $t('device.index.105953-50') }} - {{ $t('device.index.105953-51') }} - {{ $t('device.index.105953-52') }} - - - - - {{ $t('device.index.105953-18') }} - - - - - - - - - - + + + {{ $t('device.index.105953-8') }} + + {{ + $t('device.index.105953-9') + }} + + + {{ searchShow ? $t('template.index.891112-113') : $t('template.index.891112-112') }} + + + + + - - - - - - - - - - - {{ scope.row.subDeviceCount }} - - - - - {{ $t('device.index.105953-26') }} - {{ $t('device.index.105953-27') }} - - - - - - - - - - - - - - - - - - - - - - - - Ver {{ scope.row.firmwareVersion }} - - - - - {{ parseTime(scope.row.activeTime, '{y}-{m}-{d}') }} - - - - - {{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }} - - + + + + handleCommand(command)" v-hasPermi="['iot:device:add']"> + + {{ $t('device.index.105953-10') }} + + + + + {{ $t('device.index.105953-11') }} + + + {{ $t('device.index.105953-12') }} + + + + + + handleCommand1(command)" v-hasPermi="['iot:device:assignment']"> + + {{ $t('device.index.105953-13') }} + + + + + {{ $t('device.index.105953-14') }} + + + {{ $t('device.index.105953-15') }} + + + + + + + {{ $t('device.index.105953-16') }} + + + + handleCommandMore(command)" + v-hasPermi="['iot:device:record:list', 'iot:device:batchGenerator']"> + + {{ $t('device.index.105953-48') }} + + + + + {{ $t('device.index.105953-49') }} + + + {{ $t('device.index.105953-50') }} + + + {{ $t('device.index.105953-51') }} + + + {{ $t('device.index.105953-52') }} + + + + + + + {{ $t('device.index.105953-18') }} + + + + + + + + + + + + - - - - {{ $t('device.index.105953-35') }} - - - {{ $t('device.index.105953-36') }} - - - {{ $t('device.index.105953-37') }} - - - - + + + + + + + + + + + {{ scope.row.subDeviceCount }} + + + + + {{ + $t('device.index.105953-26') + }} + + {{ $t('device.index.105953-27') }} + + + + + + + + + + + + + + + + + + + + + + + + Ver {{ scope.row.firmwareVersion }} + + + + + {{ parseTime(scope.row.activeTime, '{y}-{m}-{d}') }} + + + + + {{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }} + + - - - - - - - - - - - - - - - {{ item.deviceName }} - - - - - - - - - - - - - - - - - - - - - - - - {{ item.protocolCode }} + + + + {{ $t('device.index.105953-35') }} + + + {{ $t('device.index.105953-36') }} + + + {{ $t('device.index.105953-37') }} + + + + + + + + + + + + + + + + + + + + {{ + item.deviceName + }} + + + + + + + + + + + + + + + + + + + + + + + + {{ item.protocolCode }} - {{ item.transport }} - - {{ $t('device.index.105953-53') }}{{ item.alertCount.unprocessedCount }} - - - - - - {{ item.serialNumber }} - - - - - {{ item.productName }} - - - - {{ parseTime(item.activeTime, '{y}-{m}-{d}') }} - - - - - - - - - - - - - - - {{ $t('device.index.105953-35') }} - - - {{ $t('device.index.105953-36') }} - - - {{ $t('device.index.105953-40') }} - - - - - - - - - + + {{ item.transport }} + + + {{ $t('device.index.105953-53') }}{{ item.alertCount.unprocessedCount }} + + + + + + {{ + item.serialNumber + }} + + + + + {{ + item.productName + }} + + + + {{ parseTime(item.activeTime, '{y}-{m}-{d}') }} + + + + + + + + + + + + + + + {{ $t('device.index.105953-35') }} + + + {{ $t('device.index.105953-36') }} + + + {{ $t('device.index.105953-40') }} + + + + + + + + + - - - - - {{ $t('device.index.105953-42') }} - - + + + + + {{ $t('device.index.105953-42') }} + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -770,12 +873,44 @@ export default { .iot-device { padding: 20px; - ::v-deep .el-upload-dragger { - width: 510px; - } + ::v-deep .compact-dept { + margin-left: -28px; + } + + ::v-deep .el-upload-dragger { + width: 510px; + } ::v-deep .el-dropdown-menu__item { font-size: 12px; } } + +::v-deep .treeselect-mini { + .vue-treeselect__control { + min-height: 28px; + height: 28px; + border-radius: 4px; + } + + .vue-treeselect__placeholder, + .vue-treeselect__single-value { + font-size: 12px; + line-height: 26px; + } + + .vue-treeselect__value-remove { + line-height: 24px; + } + + .vue-treeselect__arrow { + top: 6px; + } + + // 如果下拉菜单也需要迷你风格 + .vue-treeselect__option { + font-size: 12px; + padding: 4px 8px; + } +}