|
@@ -41,6 +41,7 @@ import vip.xiaonuo.coldchain.modular.monitordevice.param.MonitorDeviceEditParam;
|
|
|
import vip.xiaonuo.coldchain.modular.monitordevice.param.MonitorDeviceIdParam;
|
|
|
import vip.xiaonuo.coldchain.modular.monitordevice.param.MonitorDevicePageParam;
|
|
|
import vip.xiaonuo.coldchain.modular.monitordevice.service.MonitorDeviceService;
|
|
|
+import vip.xiaonuo.coldchain.modular.monitordevicetype.entity.CountEntity;
|
|
|
import vip.xiaonuo.coldchain.modular.monitordevicetype.entity.MonitorDeviceType;
|
|
|
import vip.xiaonuo.coldchain.modular.monitordevicetype.service.MonitorDeviceTypeService;
|
|
|
import vip.xiaonuo.coldchain.modular.monitortargetregion.service.MonitorTargetRegionService;
|
|
@@ -139,13 +140,48 @@ public class MonitorDeviceServiceImpl extends ServiceImpl<MonitorDeviceMapper, M
|
|
|
return !devices.isEmpty() ? true : false;
|
|
|
}
|
|
|
|
|
|
+ public List<MonitorDevice> getDeviceByDeviceName(String deviceName) {
|
|
|
+ return this.list(new LambdaQueryWrapper<MonitorDevice>()
|
|
|
+ .eq(MonitorDevice::getDeviceName, deviceName).eq(MonitorDevice::getDeleteFlag,CommonDeleteFlagEnum.NOT_DELETE));
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<MonitorDevice> getDeviceByDeviceCode(String deviceCode) {
|
|
|
+ return this.list(new QueryWrapper<MonitorDevice>().eq("device_code", deviceCode));
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
public void edit(MonitorDeviceEditParam monitorDeviceEditParam) {
|
|
|
MonitorDevice monitorDevice = this.queryEntity(monitorDeviceEditParam.getId());
|
|
|
BeanUtil.copyProperties(monitorDeviceEditParam, monitorDevice);
|
|
|
- this.updateById(monitorDevice);
|
|
|
+ List<MonitorDevice> deviceByDeviceName = this.getDeviceByDeviceName(monitorDevice.getDeviceName());
|
|
|
+ for (MonitorDevice device : deviceByDeviceName) {
|
|
|
+ if (!device.getId().equals(monitorDeviceEditParam.getId())) {
|
|
|
+ throw new CommonException("设备名已注册使用:{}", monitorDevice.getDeviceName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<MonitorDevice> deviceByDeviceCode = this.getDeviceByDeviceCode(monitorDevice.getDeviceCode());
|
|
|
+ for (MonitorDevice device : deviceByDeviceCode) {
|
|
|
+ if (!device.getId().equals(monitorDeviceEditParam.getId())) {
|
|
|
+ throw new CommonException("设备编码已注册使用:{}", monitorDevice.getDeviceCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ boolean update = this.updateById(monitorDevice);
|
|
|
+ // 召唤设备默认参数
|
|
|
+ if (update) {
|
|
|
+ try {
|
|
|
+ // 调用设备配置参数接口
|
|
|
+ renKeService.callParamIds(Integer.parseInt(monitorDevice.getDeviceCode()));
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ // 如果设备编码不能解析为整数,抛出异常或记录日志
|
|
|
+ throw new CommonException("设备编码解析失败,无法发送配置参数。设备编码: " + monitorDevice.getDeviceCode(), e + "请输入整数编码");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new CommonException("设备保存失败,设备编码: " + monitorDevice.getDeviceCode());
|
|
|
+ }
|
|
|
+ //缓存整形的设备编号和设备型号到缓存
|
|
|
+ monitorDeviceCache.cacheDevice(monitorDevice.getDeviceCode(), monitorDevice.getModelName());
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@@ -224,6 +260,7 @@ public class MonitorDeviceServiceImpl extends ServiceImpl<MonitorDeviceMapper, M
|
|
|
}
|
|
|
|
|
|
// 通用更新方法,避免代码重复,并处理 timestamp 为空的情况
|
|
|
+
|
|
|
private boolean updateDeviceTimeByDeviceId(Integer deviceId, Date timestamp, String timeField) {
|
|
|
if (timestamp == null) {
|
|
|
// 如果 timestamp 为空,使用当前系统时间
|
|
@@ -247,7 +284,6 @@ public class MonitorDeviceServiceImpl extends ServiceImpl<MonitorDeviceMapper, M
|
|
|
// 更新设备信息
|
|
|
return this.updateById(device);
|
|
|
}
|
|
|
-
|
|
|
@Override
|
|
|
public List<SensorData> queryDataByDeviceIdAndRoads(String deviceId, Integer roads, String startTime, String endTime) {
|
|
|
return sensorDataService.queryDataByDeviceIdAndRoads(deviceId, roads, startTime, endTime);
|
|
@@ -263,4 +299,24 @@ public class MonitorDeviceServiceImpl extends ServiceImpl<MonitorDeviceMapper, M
|
|
|
// return sensorDataService.querySensorData(deviceId, roads, startTime, endTime, queryConditions);
|
|
|
return null;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CountEntity getIndexCount() {
|
|
|
+ CountEntity countEntity = new CountEntity();
|
|
|
+ countEntity.setDeviceCount((int)count());
|
|
|
+ LambdaQueryWrapper<MonitorDevice> onlineDeviceQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ onlineDeviceQueryWrapper.eq(MonitorDevice::getStatus, MonitorDeviceStatusEnum.NORMAL.getValue()).eq(MonitorDevice::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE);
|
|
|
+ LambdaQueryWrapper<MonitorDevice> offlineDeviceIdQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ offlineDeviceIdQueryWrapper.eq(MonitorDevice::getStatus, MonitorDeviceStatusEnum.UNUSED.getValue()).eq(MonitorDevice::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE);
|
|
|
+ countEntity.setOnlineDeviceCount((int)count(onlineDeviceQueryWrapper));
|
|
|
+ Integer sensorCount = 0;
|
|
|
+ List<MonitorDevice> monitorDeviceList = list();
|
|
|
+ for (MonitorDevice monitorDevice : monitorDeviceList) {
|
|
|
+ sensorCount += monitorDevice.getSensorCount();
|
|
|
+ }
|
|
|
+ countEntity.setSensorCount(sensorCount);
|
|
|
+ countEntity.setUsedSensorCount(monitorTargetRegionService.getUsedSensorCount());
|
|
|
+ countEntity.setUnusedSensorCount(sensorCount - countEntity.getUsedSensorCount());
|
|
|
+ return countEntity;
|
|
|
+ }
|
|
|
}
|