Forráskód Böngészése

pms 设备责任人列表 添加 按照责任人搜索

zhangcl 2 hete
szülő
commit
de8f9aecb8
13 módosított fájl, 114 hozzáadás és 7 törlés
  1. 3 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotdeviceperson/vo/IotDevicePersonPageReqVO.java
  2. 3 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotDevicePageReqVO.java
  3. 2 2
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/IotDeviceMapper.java
  4. 3 2
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotdeviceperson/IotDevicePersonMapper.java
  5. 46 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotDeviceServiceImpl.java
  6. 8 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotdeviceperson/IotDevicePersonService.java
  7. 12 2
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotdeviceperson/IotDevicePersonServiceImpl.java
  8. 6 0
      yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotDeviceMapper.xml
  9. 8 0
      yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java
  10. 6 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApiImpl.java
  11. 4 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java
  12. 8 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java
  13. 5 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java

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

@@ -39,4 +39,7 @@ public class IotDevicePersonPageReqVO extends PageParam {
      */
     @Schema(description = "设备id集合", example = "[1,2,3]")
     private Collection<Long> deviceIds;
+
+    @Schema(description = "用户id集合", example = "[123,234,345]")
+    private Collection<Long> personIds;
 }

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

@@ -131,6 +131,9 @@ public class IotDevicePageReqVO extends PageParam {
     @Schema(description = "是否设置过设备责任人/调整过状态/调拨 Y设置过 N未设置 A全部")
     private String setFlag;
 
+    @Schema(description = "用户昵称 模糊搜索")
+    private String nickname;
+
     @Schema(description = "车辆id")
     private Long carId;
     @Schema(description = "是否在线")

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

@@ -221,8 +221,8 @@ public interface IotDeviceMapper extends BaseMapperX<IotDeviceDO> {
                 .betweenIfPresent(IotDeviceDO::getCreateTime, reqVO.getCreateTime()));
     }
 
-    IPage<IotDeviceRespVO> personRelationDevices(IPage<IotDeviceRespVO> page,
-                                                  @Param("reqVO") IotDevicePageReqVO reqVO, @Param("deptIds") Collection<Long> deptIds);
+    IPage<IotDeviceRespVO> personRelationDevices(IPage<IotDeviceRespVO> page, @Param("reqVO") IotDevicePageReqVO reqVO,
+                                                 @Param("deptIds") Collection<Long> deptIds, @Param("deviceIds") Collection<Long> deviceIds);
 
     IPage<IotDeviceRespVO> deviceStatuses(IPage<IotDeviceRespVO> page,
                                                  @Param("reqVO") IotDevicePageReqVO reqVO, @Param("deptIds") Collection<Long> deptIds);

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

@@ -29,9 +29,10 @@ public interface IotDevicePersonMapper extends BaseMapperX<IotDevicePersonDO> {
                 .orderByDesc(IotDevicePersonDO::getId));
     }
 
-    default List<IotDevicePersonDO> selectList(Collection<Long> ids) {
+    default List<IotDevicePersonDO> selectDevicePersonList(Collection<Long> ids, Collection<Long> userIds) {
         return selectList(new LambdaQueryWrapperX<IotDevicePersonDO>()
-                .inIfPresent(IotDevicePersonDO::getDeviceId, ids));
+                .inIfPresent(IotDevicePersonDO::getDeviceId, ids)
+                .inIfPresent(IotDevicePersonDO::getPersonId, userIds));
     }
 
     void deleteByDeviceIds(@Param("deviceIds") Collection<Long> deviceIds);

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

@@ -11,6 +11,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.common.util.object.PageUtils;
 import cn.iocoder.yudao.module.pms.ThingsModelDTO;
 import cn.iocoder.yudao.module.pms.controller.admin.TableDataInfo;
+import cn.iocoder.yudao.module.pms.controller.admin.iotdeviceperson.vo.IotDevicePersonPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdevicerunlog.vo.IotDeviceRunLogRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotmodeltemplateattrs.vo.IotModelTemplateAttrsPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
@@ -19,6 +20,7 @@ import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceSaveReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotInfoClassifyDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotTreeDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotdeviceperson.IotDevicePersonDO;
 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.mysql.IotDeviceMapper;
@@ -29,14 +31,19 @@ import cn.iocoder.yudao.module.pms.dal.mysql.iotdevicerunlog.IotDeviceRunLogMapp
 import cn.iocoder.yudao.module.pms.dal.mysql.iotmodel.IotModelMapper;
 import cn.iocoder.yudao.module.pms.service.iotbom.IotBomService;
 import cn.iocoder.yudao.module.pms.service.iotdevicebom.IotDeviceBomService;
+import cn.iocoder.yudao.module.pms.service.iotdeviceperson.IotDevicePersonService;
 import cn.iocoder.yudao.module.pms.service.iotdevicerunlog.IotDeviceRunLogService;
 import cn.iocoder.yudao.module.pms.service.iotmodeltemplateattrs.IotModelTemplateAttrsService;
 import cn.iocoder.yudao.module.pms.service.yanfan.ThingsModelService;
 import cn.iocoder.yudao.module.pms.service.yanfan.YfDeviceService;
+import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
+import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 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.enums.ErrorCodeConstants;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import cn.iocoder.yudao.module.system.service.dict.DictDataService;
+import cn.iocoder.yudao.module.system.service.user.AdminUserService;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -101,6 +108,12 @@ public class IotDeviceServiceImpl implements IotDeviceService {
     private IotDeviceRunLogMapper iotDeviceRunLogMapper;
     @Autowired
     private StringRedisTemplate redisTemplate;
+    @Autowired
+    private AdminUserService adminUserService;
+    @Autowired
+    private AdminUserApi adminUserApi;
+    @Autowired
+    private IotDevicePersonService iotDevicePersonService;
     private final static String parameter = "lng,lat,today_distance,distance,todayoil,totaloil,online,oil1,oil2,oil3,oil4";
 
     @Override
@@ -375,9 +388,41 @@ public class IotDeviceServiceImpl implements IotDeviceService {
             ids = deptService.getChildDeptIdListFromCache(pageReqVO.getDeptId());
             ids.add(pageReqVO.getDeptId());
         }
+        // 根据用户昵称模糊搜索 已经设置过此人作为责任人的设备列表
+        Set<Long> deviceIds = new HashSet<>();
+        if (StrUtil.isNotBlank(pageReqVO.getNickname())) {
+            Set<Long> userIds = new HashSet<>();
+            List<AdminUserDO> users = adminUserService.getUserListByNickname(pageReqVO.getNickname());
+            List<AdminUserRespDTO> partUsers = adminUserApi.getUserListByUsername(pageReqVO.getNickname());
+            if (CollUtil.isNotEmpty(partUsers)) {
+                partUsers.forEach(user -> {
+                    userIds.add(user.getId());
+                });
+            }
+            if (CollUtil.isNotEmpty(users)) {
+                users.forEach(user -> {
+                    userIds.add(user.getId());
+                });
+            }
+            if (CollUtil.isNotEmpty(userIds)) {
+                // 根据用户id列表查询与用户关联责任人的设备列表
+                IotDevicePersonPageReqVO reqVO = new IotDevicePersonPageReqVO();
+                reqVO.setPersonIds(userIds);
+                List<IotDevicePersonDO> devicePersons = iotDevicePersonService.getByPersonIds(reqVO);
+                if (CollUtil.isNotEmpty(devicePersons)) {
+                    devicePersons.forEach(devicePerson -> {
+                        deviceIds.add(devicePerson.getDeviceId());
+                    });
+                }
+            }
+            // 如果 deviceIds 集合为空 说明当前搜索的用户没有关联任何设备
+            if (CollUtil.isEmpty(deviceIds)) {
+                return PageResult.empty();
+            }
+        }
         try {
             IPage<IotDeviceRespVO> page = iotDeviceMapper.personRelationDevices(
-                    new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO, ids);
+                    new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO, ids, deviceIds);
             return new PageResult<>(page.getRecords(), page.getTotal());
         } catch (Exception exception) {
             if (exception.getMessage().contains("Table does not exist")) {

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

@@ -87,4 +87,12 @@ public interface IotDevicePersonService {
      * @return
      */
     List<IotDevicePersonDO> getPersonsByDeviceIds(IotDevicePersonPageReqVO pageReqVO);
+
+    /**
+     * 根据人员id集合查询关联的负责人列表
+     *
+     * @param pageReqVO 人员id 集合
+     * @return
+     */
+    List<IotDevicePersonDO> getByPersonIds(IotDevicePersonPageReqVO pageReqVO);
 }

+ 12 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotdeviceperson/IotDevicePersonServiceImpl.java

@@ -95,7 +95,7 @@ public class IotDevicePersonServiceImpl implements IotDevicePersonService {
 
     @Override
     public Map<Long, String> getIotDevicePerson(Collection<Long> ids) {
-        List<IotDevicePersonDO> devicePersons = iotDevicePersonMapper.selectList(ids);
+        List<IotDevicePersonDO> devicePersons = iotDevicePersonMapper.selectDevicePersonList(ids, null);
         if (CollUtil.isEmpty(devicePersons)) {
             return new HashMap<>();
         }
@@ -257,7 +257,17 @@ public class IotDevicePersonServiceImpl implements IotDevicePersonService {
         if (CollUtil.isEmpty(deviceIds)) {
             throw exception(IOT_DEVICE_PERSON_NOT_EXISTS);
         }
-        return iotDevicePersonMapper.selectList(deviceIds);
+        return iotDevicePersonMapper.selectDevicePersonList(deviceIds, null);
+    }
+
+    @Override
+    public List<IotDevicePersonDO> getByPersonIds(IotDevicePersonPageReqVO pageReqVO) {
+        Collection<Long> personIds = pageReqVO.getPersonIds();
+        List<IotDevicePersonDO> result = new ArrayList<>();
+        if (CollUtil.isNotEmpty(personIds)) {
+            result = iotDevicePersonMapper.selectDevicePersonList(null, personIds);
+        }
+        return result;
     }
 
 }

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

@@ -262,6 +262,12 @@
                 #{key}
             </foreach>
         </if>
+        <if test="deviceIds != null and deviceIds.size &gt; 0">
+            AND t.id IN
+            <foreach collection="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>

+ 8 - 0
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java

@@ -69,6 +69,14 @@ public interface AdminUserApi {
         return CollectionUtils.convertMap(users, AdminUserRespDTO::getId);
     }
 
+    /**
+     * 获得用户列表,基于 用户账号 模糊匹配
+     *
+     * @param username 用户账号
+     * @return 用户列表
+     */
+    List<AdminUserRespDTO> getUserListByUsername(String username);
+
     /**
      * 校验用户是否有效。如下情况,视为无效:
      * 1. 用户编号不存在

+ 6 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApiImpl.java

@@ -113,6 +113,12 @@ public class AdminUserApiImpl implements AdminUserApi {
         return BeanUtils.toBean(users, AdminUserRespDTO.class);
     }
 
+    @Override
+    public List<AdminUserRespDTO> getUserListByUsername(String username) {
+        List<AdminUserDO> users = userService.getUserListByUsername(username);
+        return BeanUtils.toBean(users, AdminUserRespDTO.class);
+    }
+
     @Override
     public void validateUserList(Collection<Long> ids) {
         userService.validateUserList(ids);

+ 4 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java

@@ -52,6 +52,10 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
         return selectList(new LambdaQueryWrapperX<AdminUserDO>().like(AdminUserDO::getNickname, nickname));
     }
 
+    default List<AdminUserDO> selectListByUsername(String username) {
+        return selectList(new LambdaQueryWrapperX<AdminUserDO>().like(AdminUserDO::getUsername, username));
+    }
+
     default List<AdminUserDO> selectListByStatus(Integer status) {
         return selectList(AdminUserDO::getStatus, status);
     }

+ 8 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java

@@ -191,6 +191,14 @@ public interface AdminUserService {
      */
     List<AdminUserDO> getUserListByNickname(String nickname);
 
+    /**
+     * 获得用户列表,基于 用户账号 模糊匹配
+     *
+     * @param username 用户账号
+     * @return 用户列表
+     */
+    List<AdminUserDO> getUserListByUsername(String username);
+
     /**
      * 批量导入用户
      *

+ 5 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java

@@ -409,6 +409,11 @@ public class AdminUserServiceImpl implements AdminUserService {
         return userMapper.selectListByNickname(nickname);
     }
 
+    @Override
+    public List<AdminUserDO> getUserListByUsername(String username) {
+        return userMapper.selectListByUsername(username);
+    }
+
     /**
      * 获得部门条件:查询指定部门的子部门编号们,包括自身
      *