فهرست منبع

Merge remote-tracking branch 'origin/master'

lipenghui 2 ماه پیش
والد
کامیت
7b3a738140

+ 43 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotDeviceController.java

@@ -207,6 +207,30 @@ public class IotDeviceController {
         return success(new PageResult<>(buildDevicePersonsList(pageResult.getList()), pageResult.getTotal()));
     }
 
+    @GetMapping("/statusRelationDevices")
+    @Operation(summary = "查询是否调整过状态的设备列表 分页")
+    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
+    public CommonResult<PageResult<IotDeviceRespVO>> statusRelationDevices(@Valid IotDevicePageReqVO pageReqVO) {
+        // 查询是否调整过状态的设备列表 分页
+        PageResult<IotDeviceRespVO> pageResult = iotDeviceService.statusRelationDevices(pageReqVO);
+        if (CollUtil.isEmpty(pageResult.getList())) {
+            return success(new PageResult<>(pageResult.getTotal()));
+        }
+        return success(new PageResult<>(buildDeviceStatusList(pageResult.getList()), pageResult.getTotal()));
+    }
+
+    @GetMapping("/allotRelationDevices")
+    @Operation(summary = "查询是否发生过调拨的设备列表 分页")
+    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
+    public CommonResult<PageResult<IotDeviceRespVO>> allotRelationDevices(@Valid IotDevicePageReqVO pageReqVO) {
+        // 查询是否发生过调拨的设备列表 分页
+        PageResult<IotDeviceRespVO> pageResult = iotDeviceService.allotRelationDevices(pageReqVO);
+        if (CollUtil.isEmpty(pageResult.getList())) {
+            return success(new PageResult<>(pageResult.getTotal()));
+        }
+        return success(new PageResult<>(buildDeviceStatusList(pageResult.getList()), pageResult.getTotal()));
+    }
+
     @GetMapping("/deviceDynamicsPage")
     @Operation(summary = "获得设备动态 分页")
     @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
@@ -373,6 +397,25 @@ public class IotDeviceController {
         });
     }
 
+    /**
+     * 组装 设备-bom 关联关系对象
+     * @param devices
+     * @return
+     */
+    private List<IotDeviceRespVO> buildDeviceStatusList(List<IotDeviceRespVO> devices) {
+        if (CollUtil.isEmpty(devices)) {
+            return Collections.emptyList();
+        }
+        // 设备部门信息
+        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
+                convertList(devices, IotDeviceRespVO::getDeptId));
+        // 2. 拼接数据
+        return BeanUtils.toBean(devices, IotDeviceRespVO.class, (deviceVO) -> {
+            // 2.1 拼接部门信息
+            findAndThen(deptMap, deviceVO.getDeptId(), dept -> deviceVO.setDeptName(dept.getName()));
+        });
+    }
+
     @GetMapping("/export-excel")
     @Operation(summary = "导出设备台账 Excel")
     @PreAuthorize("@ss.hasPermission('rq:iot-device:export')")

+ 0 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotdeviceallotlog/IotDeviceAllotLogController.java

@@ -13,7 +13,6 @@ import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceallotlog.vo.IotDevi
 import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceallotlog.vo.IotDeviceAllotLogRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceallotlog.vo.IotDeviceAllotLogSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdeviceallotlog.IotDeviceAllotLogDO;
 import cn.iocoder.yudao.module.pms.service.IotDeviceService;
 import cn.iocoder.yudao.module.pms.service.iotdeviceallotlog.IotDeviceAllotLogService;
@@ -40,7 +39,6 @@ import java.util.stream.Stream;
 
 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertListByFlatMap;
 
 @Tag(name = "管理后台 - 设备调拨日志")

+ 3 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotDevicePageReqVO.java

@@ -121,4 +121,7 @@ public class IotDevicePageReqVO extends PageParam {
      */
     @Schema(description = "设备id集合")
     private List<Long> deviceIds;
+
+    @Schema(description = "是否设置过设备责任人/调整过状态/调拨 Y设置过 N未设置 A全部")
+    private String setFlag;
 }

+ 6 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/IotDeviceMapper.java

@@ -120,4 +120,10 @@ public interface IotDeviceMapper extends BaseMapperX<IotDeviceDO> {
 
     IPage<IotDeviceRespVO> personRelationDevices(IPage<IotDeviceRespVO> page,
                                                   @Param("reqVO") IotDevicePageReqVO reqVO, @Param("deptIds") Collection<Long> deptIds);
+
+    IPage<IotDeviceRespVO> deviceStatuses(IPage<IotDeviceRespVO> page,
+                                                 @Param("reqVO") IotDevicePageReqVO reqVO, @Param("deptIds") Collection<Long> deptIds);
+
+    IPage<IotDeviceRespVO> deviceAllots(IPage<IotDeviceRespVO> page,
+                                          @Param("reqVO") IotDevicePageReqVO reqVO, @Param("deptIds") Collection<Long> deptIds);
 }

+ 17 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotDeviceService.java

@@ -81,13 +81,29 @@ public interface IotDeviceService {
     PageResult<IotDeviceRespVO> deviceAssociateBomPage(IotDevicePageReqVO pageReqVO);
 
     /**
-     * 查询已经设备了 责任人 的设备分布列表
+     * 查询 设置过责任人 的设备分布列表
      *
      * @param pageReqVO 分页查询
      * @return 设备bom 关联分页
      */
     PageResult<IotDeviceRespVO> personRelationDevices(IotDevicePageReqVO pageReqVO);
 
+    /**
+     * 查询 调整过状态 的设备分布列表
+     *
+     * @param pageReqVO 分页查询
+     * @return 设备bom 关联分页
+     */
+    PageResult<IotDeviceRespVO> statusRelationDevices(IotDevicePageReqVO pageReqVO);
+
+    /**
+     * 查询 发生过调拨 的设备分布列表
+     *
+     * @param pageReqVO 分页查询
+     * @return 设备 关联分页
+     */
+    PageResult<IotDeviceRespVO> allotRelationDevices(IotDevicePageReqVO pageReqVO);
+
     /**
      * 获得 设备bom 关联 关系 列表
      *

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

@@ -278,6 +278,44 @@ public class IotDeviceServiceImpl implements IotDeviceService {
         }
     }
 
+    @Override
+    public PageResult<IotDeviceRespVO> statusRelationDevices(IotDevicePageReqVO pageReqVO) {
+        Set<Long> ids = new HashSet<>();
+        if (Objects.nonNull(pageReqVO.getDeptId())) {
+            ids = deptService.getChildDeptIdListFromCache(pageReqVO.getDeptId());
+            ids.add(pageReqVO.getDeptId());
+        }
+        try {
+            IPage<IotDeviceRespVO> page = iotDeviceMapper.deviceStatuses(
+                    new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO, ids);
+            return new PageResult<>(page.getRecords(), page.getTotal());
+        } catch (Exception exception) {
+            if (exception.getMessage().contains("Table does not exist")) {
+                return PageResult.empty();
+            }
+            throw exception;
+        }
+    }
+
+    @Override
+    public PageResult<IotDeviceRespVO> allotRelationDevices(IotDevicePageReqVO pageReqVO) {
+        Set<Long> ids = new HashSet<>();
+        if (Objects.nonNull(pageReqVO.getDeptId())) {
+            ids = deptService.getChildDeptIdListFromCache(pageReqVO.getDeptId());
+            ids.add(pageReqVO.getDeptId());
+        }
+        try {
+            IPage<IotDeviceRespVO> page = iotDeviceMapper.deviceAllots(
+                    new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO, ids);
+            return new PageResult<>(page.getRecords(), page.getTotal());
+        } catch (Exception exception) {
+            if (exception.getMessage().contains("Table does not exist")) {
+                return PageResult.empty();
+            }
+            throw exception;
+        }
+    }
+
     @Override
     public List<IotDeviceRespVO> deviceAssociateBomList(List<Long> deviceIds) {
         List<IotDeviceRespVO> devices = iotDeviceMapper.deviceAssociateBomList(deviceIds);

+ 100 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotDeviceMapper.xml

@@ -63,9 +63,107 @@
             t.create_time
         FROM
         rq_iot_device t
-        WHERE t.id IN (
+        WHERE t.deleted = 0
+        <if test='reqVO.setFlag!=null and reqVO.setFlag!="" and reqVO.setFlag=="Y" '>
+            AND
+                t.id IN (
+                SELECT device_id FROM rq_iot_device_person
+            )
+        </if>
+        <if test='reqVO.setFlag!=null and reqVO.setFlag!="" and reqVO.setFlag=="N" '>
+            AND
+            t.id NOT IN (
             SELECT device_id FROM rq_iot_device_person
-        )
+            )
+        </if>
+        <if test="deptIds != null and deptIds.size &gt; 0">
+            AND t.dept_id IN
+            <foreach collection="deptIds" 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>
+        <if test="reqVO.deviceCode!=null and reqVO.deviceCode!=''">
+            AND t.device_code LIKE concat(concat("%",#{reqVO.deviceCode}),"%")
+        </if>
+    </select>
+
+    <!-- 设备状态列表 -->
+    <select id="deviceStatuses"
+            resultType="cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO">
+        SELECT
+        t.id,
+        t.device_code,
+        t.device_name,
+        t.brand,
+        t.model,
+        t.dept_id,
+        t.device_status,
+        t.asset_property,
+        t.pic_url,
+        t.remark,
+        t.create_time
+        FROM
+        rq_iot_device t
+        WHERE t.deleted = 0
+        <if test='reqVO.setFlag!=null and reqVO.setFlag!="" and reqVO.setFlag=="Y" '>
+            AND
+            t.id IN (
+            SELECT device_id FROM rq_iot_device_status_log
+            )
+        </if>
+        <if test='reqVO.setFlag!=null and reqVO.setFlag!="" and reqVO.setFlag=="N" '>
+            AND
+            t.id NOT IN (
+            SELECT device_id FROM rq_iot_device_status_log
+            )
+        </if>
+        <if test="deptIds != null and deptIds.size &gt; 0">
+            AND t.dept_id IN
+            <foreach collection="deptIds" 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>
+        <if test="reqVO.deviceCode!=null and reqVO.deviceCode!=''">
+            AND t.device_code LIKE concat(concat("%",#{reqVO.deviceCode}),"%")
+        </if>
+    </select>
+
+    <!-- 设备调拨列表 -->
+    <select id="deviceAllots"
+            resultType="cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO">
+        SELECT
+        t.id,
+        t.device_code,
+        t.device_name,
+        t.brand,
+        t.model,
+        t.dept_id,
+        t.device_status,
+        t.asset_property,
+        t.pic_url,
+        t.remark,
+        t.create_time
+        FROM
+        rq_iot_device t
+        WHERE t.deleted = 0
+        <if test='reqVO.setFlag!=null and reqVO.setFlag!="" and reqVO.setFlag=="Y" '>
+            AND
+            t.id IN (
+            SELECT device_id FROM rq_iot_device_allot_log
+            )
+        </if>
+        <if test='reqVO.setFlag!=null and reqVO.setFlag!="" and reqVO.setFlag=="N" '>
+            AND
+            t.id NOT IN (
+            SELECT device_id FROM rq_iot_device_allot_log
+            )
+        </if>
         <if test="deptIds != null and deptIds.size &gt; 0">
             AND t.dept_id IN
             <foreach collection="deptIds" index="index" item="key" open="(" separator="," close=")">