Selaa lähdekoodia

pms功能优化 功能优化3

zhangcl 3 kuukautta sitten
vanhempi
commit
975ef6042d

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

@@ -2,14 +2,12 @@ package cn.iocoder.yudao.module.pms.controller.admin;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceperson.vo.IotDevicePersonRelationSaveReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorder.vo.IotMainWorkOrderRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.*;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotProductClassifyDO;
@@ -26,11 +24,8 @@ import cn.iocoder.yudao.module.pms.service.yanfan.YfDeviceService;
 import cn.iocoder.yudao.module.pms.util.IotDeviceConvert;
 import cn.iocoder.yudao.module.supplier.dal.dataobject.product.SupplierDO;
 import cn.iocoder.yudao.module.supplier.service.product.SupplierService;
-import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSimpleRespVO;
-import cn.iocoder.yudao.module.system.convert.user.UserConvert;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
-import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import cn.iocoder.yudao.module.system.service.dict.DictDataService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -181,18 +176,26 @@ public class IotDeviceController {
     @Operation(summary = "获得设备关联责任人 分页")
     @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
     public CommonResult<PageResult<IotDeviceRespVO>> responsiblePage(@Valid IotDevicePageReqVO pageReqVO) {
-        PageResult<IotDeviceDO> pageResult = iotDeviceService.getIotDevicePage(pageReqVO);
+        // 只显示已经设置关联了责任人的设备
+        PageResult<IotDeviceRespVO> pageResult = iotDeviceService.personRelationDevices(pageReqVO);
         if (CollUtil.isEmpty(pageResult.getList())) {
             return success(new PageResult<>(pageResult.getTotal()));
         }
-        // 查询设备关联的 负责人
-        Map<Long, String> devicePersonNames = iotDevicePersonService.getIotDevicePerson(convertList(pageResult.getList(), IotDeviceDO::getId));
-        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
-                convertList(pageResult.getList(), IotDeviceDO::getDeptId));
-        // return success(new PageResult<>(IotDeviceConvert.INSTANCE.convertList(pageResult.getList(), deptMap), pageResult.getTotal()));
         return success(new PageResult<>(buildDevicePersonsList(pageResult.getList()), pageResult.getTotal()));
     }
 
+    @GetMapping("/deviceDynamicsPage")
+    @Operation(summary = "获得设备动态 分页")
+    @PreAuthorize("@ss.hasPermission('rq:iot-device:query')")
+    public CommonResult<PageResult<IotDeviceRespVO>> responsiblePagedeviceDynamicsPage(@Valid IotDevicePageReqVO pageReqVO) {
+        // 只显示已经设置关联了责任人的设备
+        PageResult<IotDeviceDO> pageResult = iotDeviceService.getIotDevicePage(pageReqVO);
+        if (CollUtil.isEmpty(pageResult.getList())) {
+            return success(new PageResult<>(pageResult.getTotal()));
+        }
+        return success(new PageResult<>(buildDeviceDynamicsList(pageResult.getList()), pageResult.getTotal()));
+    }
+
     @Autowired
     private TDDeviceMapper deviceMapper;
 
@@ -254,7 +257,6 @@ public class IotDeviceController {
         Map<Long, DeptDO> deptMap = deptService.getDeptMap(
                 convertList(pageResult.getList(), IotDeviceRespVO::getDeptId));
         // 拼接BOM节点信息
-        // return success(new PageResult<>(buildDeviceAssociateBomList(pageResult.getList()), pageResult.getTotal()));
         return success(new PageResult<>(IotDeviceConvert.INSTANCE.convertList1(pageResult.getList(), deptMap), pageResult.getTotal()));
     }
 
@@ -285,11 +287,11 @@ public class IotDeviceController {
     }
 
     /**
-     * 组装 设备-bom 关联关系对象
+     * 设备动态分布 设置关联查询信息
      * @param devices
      * @return
      */
-    private List<IotDeviceRespVO> buildDevicePersonsList(List<IotDeviceDO> devices) {
+    private List<IotDeviceRespVO> buildDeviceDynamicsList(List<IotDeviceDO> devices) {
         if (CollUtil.isEmpty(devices)) {
             return Collections.emptyList();
         }
@@ -307,6 +309,29 @@ public class IotDeviceController {
         });
     }
 
+    /**
+     * 组装 设备-bom 关联关系对象
+     * @param devices
+     * @return
+     */
+    private List<IotDeviceRespVO> buildDevicePersonsList(List<IotDeviceRespVO> devices) {
+        if (CollUtil.isEmpty(devices)) {
+            return Collections.emptyList();
+        }
+        // 设备部门信息
+        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
+                convertList(devices, IotDeviceRespVO::getDeptId));
+        // 查询设备关联的 负责人
+        Map<Long, String> devicePersonNames = iotDevicePersonService.getIotDevicePerson(convertList(devices, IotDeviceRespVO::getId));
+        // 2. 拼接数据
+        return BeanUtils.toBean(devices, IotDeviceRespVO.class, (deviceVO) -> {
+            // 2.1 拼接部门信息
+            findAndThen(deptMap, deviceVO.getDeptId(), dept -> deviceVO.setDeptName(dept.getName()));
+            // 2.2 设备关联的负责人姓名
+            findAndThen(devicePersonNames, deviceVO.getId(), person -> deviceVO.setResponsibleNames(person));
+        });
+    }
+
     @GetMapping("/export-excel")
     @Operation(summary = "导出设备台账 Excel")
     @PreAuthorize("@ss.hasPermission('rq:iot-device:export')")

+ 2 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotbom/IotBomController.java

@@ -106,9 +106,9 @@ public class IotBomController {
     @Operation(summary = "获取 Bom树 列表")
     @PreAuthorize("@ss.hasPermission('rq:iot-bom:query')")
     public CommonResult<List<IotBomRespVO>> getBomList(IotBomListReqVO reqVO) {
-        if (ObjectUtil.isEmpty(reqVO.getDeviceCategoryId())) {
+        /* if (ObjectUtil.isEmpty(reqVO.getDeviceCategoryId())) {
             return success(CollectionUtil.newArrayList());
-        }
+        } */
         List<IotBomDO> list = iotBomService.getBomList(reqVO);
         if (CollUtil.isEmpty(list)) {
             return success(Collections.emptyList());

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

@@ -3,11 +3,9 @@ package cn.iocoder.yudao.module.pms.dal.mysql;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
 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.inspect.IotInspectOrderDO;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -117,4 +115,7 @@ public interface IotDeviceMapper extends BaseMapperX<IotDeviceDO> {
                 .eqIfPresent(IotDeviceDO::getDeviceStatus, reqVO.getDeviceStatus())
                 .betweenIfPresent(IotDeviceDO::getCreateTime, reqVO.getCreateTime()));
     }
+
+    IPage<IotDeviceRespVO> personRelationDevices(IPage<IotDeviceRespVO> page,
+                                                  @Param("reqVO") IotDevicePageReqVO reqVO, @Param("deptIds") Collection<Long> deptIds);
 }

+ 8 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotDeviceService.java

@@ -79,6 +79,14 @@ public interface IotDeviceService {
      */
     PageResult<IotDeviceRespVO> deviceAssociateBomPage(IotDevicePageReqVO pageReqVO);
 
+    /**
+     * 查询已经设备了 责任人 的设备分布列表
+     *
+     * @param pageReqVO 分页查询
+     * @return 设备bom 关联分页
+     */
+    PageResult<IotDeviceRespVO> personRelationDevices(IotDevicePageReqVO pageReqVO);
+
     /**
      * 获得 设备bom 关联 关系 列表
      *

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

@@ -239,6 +239,25 @@ public class IotDeviceServiceImpl implements IotDeviceService {
         }
     }
 
+    @Override
+    public PageResult<IotDeviceRespVO> personRelationDevices(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.personRelationDevices(
+                    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);

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

@@ -47,6 +47,39 @@
         </if>
     </select>
 
+    <select id="personRelationDevices"
+            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.id IN (
+            SELECT device_id FROM rq_iot_device_person
+        )
+        <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("%",#{deviceCode}),"%")
+        </if>
+    </select>
+
     <select id="deviceAssociateBomList"
             resultType="cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO">
         SELECT *