Преглед на файлове

pms 设备动态 时间区间搜索

zhangcl преди 10 часа
родител
ревизия
316aa664e3

+ 16 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotdevicepersonlog/IotDevicePersonLogMapper.java

@@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.pms.controller.admin.iotdevicepersonlog.vo.IotDev
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicepersonlog.IotDevicePersonLogDO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * 设备责任人日志 Mapper
  *
@@ -29,4 +31,18 @@ public interface IotDevicePersonLogMapper extends BaseMapperX<IotDevicePersonLog
                 .orderByDesc(IotDevicePersonLogDO::getId));
     }
 
+    default List<IotDevicePersonLogDO> selectList(IotDevicePersonLogPageReqVO reqVO) {
+        return selectList(new LambdaQueryWrapperX<IotDevicePersonLogDO>()
+                .eqIfPresent(IotDevicePersonLogDO::getDeviceId, reqVO.getDeviceId())
+                .inIfPresent(IotDevicePersonLogDO::getDeviceId, reqVO.getDeviceIds())
+                .eqIfPresent(IotDevicePersonLogDO::getOldPersonId, reqVO.getOldPersonId())
+                .eqIfPresent(IotDevicePersonLogDO::getOldPersonIds, reqVO.getOldPersonIds())
+                .eqIfPresent(IotDevicePersonLogDO::getNewPersonId, reqVO.getNewPersonId())
+                .eqIfPresent(IotDevicePersonLogDO::getNewPersonIds, reqVO.getNewPersonIds())
+                .eqIfPresent(IotDevicePersonLogDO::getReason, reqVO.getReason())
+                .eqIfPresent(IotDevicePersonLogDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(IotDevicePersonLogDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(IotDevicePersonLogDO::getId));
+    }
+
 }

+ 14 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotdevicestatuslog/IotDeviceStatusLogMapper.java

@@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.pms.controller.admin.iotdevicestatuslog.vo.IotDev
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicestatuslog.IotDeviceStatusLogDO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
  * 设备状态调整日志 Mapper
  *
@@ -27,4 +29,16 @@ public interface IotDeviceStatusLogMapper extends BaseMapperX<IotDeviceStatusLog
                 .orderByDesc(IotDeviceStatusLogDO::getId));
     }
 
+    default List<IotDeviceStatusLogDO> selectList(IotDeviceStatusLogPageReqVO reqVO) {
+        return selectList(new LambdaQueryWrapperX<IotDeviceStatusLogDO>()
+                .eqIfPresent(IotDeviceStatusLogDO::getDeviceId, reqVO.getDeviceId())
+                .inIfPresent(IotDeviceStatusLogDO::getDeviceId, reqVO.getDeviceIds())
+                .eqIfPresent(IotDeviceStatusLogDO::getOldStatus, reqVO.getOldStatus())
+                .eqIfPresent(IotDeviceStatusLogDO::getNewStatus, reqVO.getNewStatus())
+                .eqIfPresent(IotDeviceStatusLogDO::getReason, reqVO.getReason())
+                .eqIfPresent(IotDeviceStatusLogDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(IotDeviceStatusLogDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(IotDeviceStatusLogDO::getId));
+    }
+
 }

+ 46 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotDeviceServiceImpl.java

@@ -17,7 +17,9 @@ import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceallotlog.vo.IotDevi
 import cn.iocoder.yudao.module.pms.controller.admin.iotdevicecategorytemplateattrs.vo.IotDeviceProperty;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdevicematerial.vo.IotDeviceMaterialRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceperson.vo.IotDevicePersonPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotdevicepersonlog.vo.IotDevicePersonLogPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdevicerunlog.vo.IotDeviceRunLogRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotdevicestatuslog.vo.IotDeviceStatusLogPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotmodeltemplateattrs.vo.IotModelTemplateAttrsPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO;
@@ -29,6 +31,8 @@ import cn.iocoder.yudao.module.pms.dal.dataobject.IotTreeDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotZHBD.DeviceZHBDDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdeviceallotlog.IotDeviceAllotLogDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdeviceperson.IotDevicePersonDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicepersonlog.IotDevicePersonLogDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicestatuslog.IotDeviceStatusLogDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotmodel.IotModelDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotmodeltemplateattrs.IotModelTemplateAttrsDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.tdparams.IotTdParamsDO;
@@ -37,7 +41,9 @@ import cn.iocoder.yudao.module.pms.dal.mysql.IotInfoClassifyMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.IotTreeMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.TDDeviceMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotdeviceallotlog.IotDeviceAllotLogMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.iotdevicepersonlog.IotDevicePersonLogMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotdevicerunlog.IotDeviceRunLogMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.iotdevicestatuslog.IotDeviceStatusLogMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotmodel.IotModelMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotopeationfill.IotOpeationFillMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.tdparams.IotTdParamsMapper;
@@ -149,6 +155,10 @@ public class IotDeviceServiceImpl implements IotDeviceService {
 
     @Autowired
     private IotDeviceAllotLogMapper iotDeviceAllotLogMapper;
+    @Autowired
+    private IotDevicePersonLogMapper iotDevicePersonLogMapper;
+    @Autowired
+    private IotDeviceStatusLogMapper iotDeviceStatusLogMapper;
 
 
     @Override
@@ -789,6 +799,24 @@ public class IotDeviceServiceImpl implements IotDeviceService {
             ids = deptService.getChildDeptIdListFromCache(pageReqVO.getDeptId());
             ids.add(pageReqVO.getDeptId());
         }
+        // 调拨时间区间搜索 查询在指定时间区间内调拨过的设备
+        LocalDateTime[] allotDateTime = pageReqVO.getCreateTime();
+        Set<Long> timeDeviceIds = new HashSet<>();
+        if (ObjUtil.isNotEmpty(allotDateTime)) {
+            IotDevicePersonLogPageReqVO reqVO = new IotDevicePersonLogPageReqVO();
+            reqVO.setCreateTime(allotDateTime);
+            List<IotDevicePersonLogDO> deviceAllots = iotDevicePersonLogMapper.selectList(reqVO);
+            if (CollUtil.isNotEmpty(deviceAllots)) {
+                deviceAllots.forEach(allot -> {
+                    timeDeviceIds.add(allot.getDeviceId());
+                });
+                if (CollUtil.isNotEmpty(timeDeviceIds)) {
+                    pageReqVO.setDeviceIds(new ArrayList<>(timeDeviceIds));
+                }
+            } else {
+                return PageResult.empty();
+            }
+        }
         // 根据用户昵称模糊搜索 已经设置过此人作为责任人的设备列表
         Set<Long> deviceIds = new HashSet<>();
         if (StrUtil.isNotBlank(pageReqVO.getNickname())) {
@@ -840,6 +868,24 @@ public class IotDeviceServiceImpl implements IotDeviceService {
             ids = deptService.getChildDeptIdListFromCache(pageReqVO.getDeptId());
             ids.add(pageReqVO.getDeptId());
         }
+        // 调拨时间区间搜索 查询在指定时间区间内调拨过的设备
+        LocalDateTime[] allotDateTime = pageReqVO.getCreateTime();
+        Set<Long> deviceIds = new HashSet<>();
+        if (ObjUtil.isNotEmpty(allotDateTime)) {
+            IotDeviceStatusLogPageReqVO reqVO = new IotDeviceStatusLogPageReqVO();
+            reqVO.setCreateTime(allotDateTime);
+            List<IotDeviceStatusLogDO> deviceAllots = iotDeviceStatusLogMapper.selectList(reqVO);
+            if (CollUtil.isNotEmpty(deviceAllots)) {
+                deviceAllots.forEach(allot -> {
+                    deviceIds.add(allot.getDeviceId());
+                });
+                if (CollUtil.isNotEmpty(deviceIds)) {
+                    pageReqVO.setDeviceIds(new ArrayList<>(deviceIds));
+                }
+            } else {
+                return PageResult.empty();
+            }
+        }
         try {
             IPage<IotDeviceRespVO> page = iotDeviceMapper.deviceStatuses(
                     new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO, ids);

+ 12 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotDeviceMapper.xml

@@ -314,6 +314,12 @@
                 #{key}
             </foreach>
         </if>
+        <if test="reqVO.deviceIds != null and reqVO.deviceIds.size &gt; 0">
+            AND t.id IN
+            <foreach collection="reqVO.deviceIds" index="index" item="key" open="(" separator="," close=")">
+                #{key}
+            </foreach>
+        </if>
         <if test="reqVO.deviceName!=null and reqVO.deviceName!=''">
             AND t.device_name LIKE concat(concat("%",#{reqVO.deviceName}),"%")
         </if>
@@ -358,6 +364,12 @@
                 #{key}
             </foreach>
         </if>
+        <if test="reqVO.deviceIds != null and reqVO.deviceIds.size &gt; 0">
+            AND t.id IN
+            <foreach collection="reqVO.deviceIds" index="index" item="key" open="(" separator="," close=")">
+                #{key}
+            </foreach>
+        </if>
         <if test="reqVO.deviceName!=null and reqVO.deviceName!=''">
             AND t.device_name LIKE concat(concat("%",#{reqVO.deviceName}),"%")
         </if>