|
@@ -26,13 +26,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import jakarta.annotation.Resource;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.cache.annotation.Cacheable;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
|
|
|
import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
|
|
|
+import vip.xiaonuo.coldchain.core.config.JfcloudColdChainConstants;
|
|
|
+import vip.xiaonuo.coldchain.core.config.JfcloudRedisCacheService;
|
|
|
import vip.xiaonuo.coldchain.modular.monitordevice.entity.MonitorDevice;
|
|
|
import vip.xiaonuo.coldchain.modular.monitordevice.service.MonitorDeviceService;
|
|
|
-import vip.xiaonuo.coldchain.modular.monitortarget.entity.MonitorTarget;
|
|
|
import vip.xiaonuo.coldchain.modular.monitortarget.service.MonitorTargetService;
|
|
|
import vip.xiaonuo.coldchain.modular.monitortargetregion.entity.MonitorTargetRegion;
|
|
|
import vip.xiaonuo.coldchain.modular.monitortargetregion.enums.MonitorTargetRegionEvent;
|
|
@@ -42,6 +45,7 @@ import vip.xiaonuo.coldchain.modular.monitortargetregion.param.MonitorTargetRegi
|
|
|
import vip.xiaonuo.coldchain.modular.monitortargetregion.param.MonitorTargetRegionIdParam;
|
|
|
import vip.xiaonuo.coldchain.modular.monitortargetregion.param.MonitorTargetRegionPageParam;
|
|
|
import vip.xiaonuo.coldchain.modular.monitortargetregion.service.MonitorTargetRegionService;
|
|
|
+import vip.xiaonuo.coldchain.modular.targetroom.entity.TargetRoom;
|
|
|
import vip.xiaonuo.common.enums.CommonDeleteFlagEnum;
|
|
|
import vip.xiaonuo.common.enums.CommonSortOrderEnum;
|
|
|
import vip.xiaonuo.common.exception.CommonException;
|
|
@@ -50,6 +54,7 @@ import vip.xiaonuo.common.page.CommonPageRequest;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
import java.util.Set;
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
import java.util.function.Function;
|
|
@@ -63,11 +68,14 @@ import java.util.stream.Collectors;
|
|
|
* @date 2024/11/13 16:57
|
|
|
**/
|
|
|
@Service
|
|
|
+@Slf4j
|
|
|
public class MonitorTargetRegionServiceImpl extends ServiceImpl<MonitorTargetRegionMapper, MonitorTargetRegion> implements MonitorTargetRegionService {
|
|
|
@Resource
|
|
|
private MonitorDeviceService monitorDeviceService;
|
|
|
@Resource
|
|
|
private MonitorTargetService monitorTargetService;
|
|
|
+ @Resource
|
|
|
+ private JfcloudRedisCacheService jfcloudRedisCacheService;
|
|
|
|
|
|
@Override
|
|
|
public Page<MonitorTargetRegion> page(MonitorTargetRegionPageParam monitorTargetRegionPageParam) {
|
|
@@ -103,7 +111,6 @@ public class MonitorTargetRegionServiceImpl extends ServiceImpl<MonitorTargetReg
|
|
|
public void add(MonitorTargetRegionAddParam monitorTargetRegionAddParam) {
|
|
|
MonitorDevice monitorDevice = monitorDeviceService.queryEntity(monitorTargetRegionAddParam.getMonitorDeviceId());
|
|
|
Integer sensorCount = monitorDevice.getSensorCount();
|
|
|
- MonitorTarget monitorTarget = monitorTargetService.queryEntity(monitorTargetRegionAddParam.getMonitorTargetId());
|
|
|
LambdaQueryWrapper<MonitorTargetRegion> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper.eq(MonitorTargetRegion::getMonitorDeviceId,monitorTargetRegionAddParam.getMonitorDeviceId());
|
|
|
List<MonitorTargetRegion> list = list(queryWrapper);
|
|
@@ -124,8 +131,12 @@ public class MonitorTargetRegionServiceImpl extends ServiceImpl<MonitorTargetReg
|
|
|
@Override
|
|
|
public void edit(MonitorTargetRegionEditParam monitorTargetRegionEditParam) {
|
|
|
MonitorTargetRegion monitorTargetRegion = this.queryEntity(monitorTargetRegionEditParam.getId());
|
|
|
+ if(Objects.isNull(monitorTargetRegion)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
BeanUtil.copyProperties(monitorTargetRegionEditParam, monitorTargetRegion);
|
|
|
this.updateById(monitorTargetRegion);
|
|
|
+ jfcloudRedisCacheService.evictMonitorTargetRegionCache(monitorTargetRegion.getDeviceCode(),monitorTargetRegion.getSensorRoute());
|
|
|
CommonDataChangeEventCenter.doUpdateWithData(MonitorTargetRegionEvent.MONITOR_TARGET_REGION_EDIT_EVENT, JSONUtil.createArray().put(monitorTargetRegion));
|
|
|
}
|
|
|
|
|
@@ -217,13 +228,35 @@ public class MonitorTargetRegionServiceImpl extends ServiceImpl<MonitorTargetReg
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Cacheable(value = JfcloudColdChainConstants.MONITORTARGETREGION_CACHE_NAME, key = "#deviceCode + ':' + #sensorNo", unless = "#result == null")
|
|
|
public MonitorTargetRegion findOneByDeviceCodeAndSensorNo(String deviceCode, Integer sensorNo) {
|
|
|
+ // 查询条件封装
|
|
|
LambdaQueryWrapper<MonitorTargetRegion> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.eq(MonitorTargetRegion::getDeviceCode, deviceCode).eq(MonitorTargetRegion::getSensorRoute,sensorNo)
|
|
|
- .eq(MonitorTargetRegion::getDeleteFlag,CommonDeleteFlagEnum.NOT_DELETE);;
|
|
|
- return getOne(queryWrapper);
|
|
|
+ queryWrapper.eq(MonitorTargetRegion::getDeviceCode, deviceCode)
|
|
|
+ .eq(MonitorTargetRegion::getSensorRoute, sensorNo)
|
|
|
+ .eq(MonitorTargetRegion::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE);
|
|
|
+ MonitorTargetRegion monitorTargetRegion = getOne(queryWrapper);
|
|
|
+ if (Objects.isNull(monitorTargetRegion)) {
|
|
|
+ log.info("未找到设备编号 [{}] 和传感器编号 [{}] 对应的监控目标区域。", deviceCode, sensorNo);
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ // 获取房间名称
|
|
|
+ String monitorTargetId = monitorTargetRegion.getMonitorTargetId();
|
|
|
+ if (Objects.nonNull(monitorTargetId)) {
|
|
|
+ TargetRoom roomName = monitorTargetService.getRoomByMonitorTargetId(monitorTargetId);
|
|
|
+ if (Objects.nonNull(roomName)) {
|
|
|
+ monitorTargetRegion.setRoomName(roomName.getName());
|
|
|
+ log.info("成功获取房间名称 [{}],并设置到监控目标区域。", roomName.getName());
|
|
|
+ } else {
|
|
|
+ log.info("未找到监控目标 ID [{}] 对应的房间名称。", monitorTargetId);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ log.info("监控目标区域 [{}] 的监控目标 ID 为空,跳过房间名称查询。", monitorTargetRegion.getId());
|
|
|
+ }
|
|
|
+ return monitorTargetRegion;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
@Override
|
|
|
public Integer getUsedSensorCount() {
|
|
|
SaBaseLoginUser loginUser = StpLoginUserUtil.getLoginUser();
|
|
@@ -256,7 +289,6 @@ public class MonitorTargetRegionServiceImpl extends ServiceImpl<MonitorTargetReg
|
|
|
private void fillParentLocationInfo(List<MonitorTargetRegion> resourceList) {
|
|
|
if (CollUtil.isNotEmpty(resourceList)) {
|
|
|
List<MonitorTargetRegion> locationTypes = resourceList.stream().filter(distinctByKey(MonitorTargetRegion::getParentId)).collect(Collectors.toList());
|
|
|
-
|
|
|
List<String> parentIds = null;
|
|
|
if (CollUtil.isNotEmpty(locationTypes)) {
|
|
|
parentIds = CollUtil.newArrayList();
|