Bläddra i källkod

Merge remote-tracking branch 'origin/master'

zhangcl 3 månader sedan
förälder
incheckning
9a975e5892
19 ändrade filer med 258 tillägg och 11 borttagningar
  1. 13 0
      yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/Pms.java
  2. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/item/vo/IotInspectItemRespVO.java
  3. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/item/vo/IotInspectItemSaveReqVO.java
  4. 128 5
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/stat/IotStaticController.java
  5. 3 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/DeviceVO.java
  6. 1 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/vo/IotDevicePageReqVO.java
  7. 2 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/inspect/IotInspectItemDO.java
  8. 7 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/IotDeviceMapper.java
  9. 7 2
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/TDDeviceMapper.java
  10. 1 0
      yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApi.java
  11. 2 1
      yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java
  12. 8 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApiImpl.java
  13. 7 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApiImpl.java
  14. 3 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserPageReqVO.java
  15. 6 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java
  16. 1 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java
  17. 5 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java
  18. 2 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java
  19. 58 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java

+ 13 - 0
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/Pms.java

@@ -0,0 +1,13 @@
+package cn.iocoder.yudao.framework.common.pojo;
+
+import lombok.Data;
+
+
+public class Pms {
+    @Data
+    public static class deptStat{
+        private String department;
+        private Long total;
+        private Long active;
+    }
+}

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/item/vo/IotInspectItemRespVO.java

@@ -58,4 +58,6 @@ public class IotInspectItemRespVO {
      * 设备名称
      */
     private String deviceName;
+
+    private String urls;
 }

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/item/vo/IotInspectItemSaveReqVO.java

@@ -49,4 +49,6 @@ public class IotInspectItemSaveReqVO {
      * 设备名称
      */
     private String deviceName;
+
+    private String urls;
 }

+ 128 - 5
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/stat/IotStaticController.java

@@ -1,26 +1,38 @@
 package cn.iocoder.yudao.module.pms.controller.admin.stat;
 
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.Pms;
 import cn.iocoder.yudao.framework.common.util.date.DateUtils;
 import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorder.vo.IotMainWorkOrderPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorder.vo.IotMainWorkOrderSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.vo.DeviceVO;
+import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.IotProductClassifyDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.failure.IotFailureReportDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotmainworkorder.IotMainWorkOrderDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.IotMaintainDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.IotDeviceMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.IotProductClassifyMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.TDDeviceMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.failure.IotFailureReportMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectOrderMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotmainworkorder.IotMainWorkOrderMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.maintain.IotMaintainMapper;
+import cn.iocoder.yudao.module.pms.service.DeviceServiceImpl;
 import cn.iocoder.yudao.module.pms.service.inspect.IotInspectOrderService;
+import cn.iocoder.yudao.module.system.api.dept.DeptApi;
+import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
+import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
+import cn.iocoder.yudao.module.system.service.dict.DictDataService;
 import com.alibaba.fastjson.JSON;
 import com.google.common.collect.ImmutableMap;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.Data;
 import org.apache.commons.lang3.StringUtils;
-import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -29,7 +41,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import java.sql.Timestamp;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -52,6 +66,16 @@ public class IotStaticController {
     private IotInspectOrderService iotInspectOrderService;
     @Autowired
     private IotMainWorkOrderMapper iotMainWorkOrderMapper;
+    @Autowired
+    private DeviceServiceImpl deviceServiceImpl;
+    @Autowired
+    private IotDeviceMapper iotDeviceMapper;
+    @Autowired
+    private IotProductClassifyMapper iotProductClassifyMapper;
+    @Autowired
+    private DeptApi deptApi;
+    @Autowired
+    private AdminUserApi adminUserApi;
 
     @GetMapping("/main/day")
     public CommonResult<Map<String, Object>> getMaintainDay() {
@@ -296,11 +320,110 @@ public class IotStaticController {
         return CommonResult.success(resultMap);
     }
 
-    @GetMapping("/td/chart/{identifier}")
-    public CommonResult<Map<String, String>> getTdChart(@PathVariable("identifier") String identifier) {
+    @Resource
+    private TDDeviceMapper tdDeviceMapper;
+    @GetMapping("/td/chart/{deviceName}/{identifier}")
+    public CommonResult<List<DeviceVO>> getTdChart(@PathVariable("deviceName") String deviceName,@PathVariable("identifier") String identifier) {
         if (StringUtils.isBlank(identifier)) {
             return null;
         }
-        return null;
+        long current = System.currentTimeMillis();
+        Timestamp start = new Timestamp(current - 120 * 60 * 1000);
+        Timestamp end = new Timestamp(current);
+        List<DeviceVO> deviceVOS = tdDeviceMapper.selectAllBtTimeAndIdentifier(deviceName.toLowerCase(), identifier, start, end);
+        deviceVOS.forEach(deviceVO->{
+            deviceVO.setTimestamp(deviceVO.getTs().getTime());
+            deviceVO.setValue(Double.valueOf(deviceVO.getLogValue()));
+        });
+        return CommonResult.success(deviceVOS);
+    }
+
+
+    @GetMapping("/home/device/count")
+    public CommonResult<ImmutableMap<Object, Object>> getHomeDeviceCountStat() {
+        Long deviceCount = iotDeviceMapper.selectCount();
+        ImmutableMap<String, LocalDateTime> beginEndDay = DateUtils.getBeginEndDay(0);
+        IotDevicePageReqVO iotDevicePageReqVO = new IotDevicePageReqVO();
+        iotDevicePageReqVO.setCreateTime(new LocalDateTime[]{beginEndDay.get("start"), beginEndDay.get("end")});
+        Long deviceToday = iotDeviceMapper.selectCountByTimeAndStatus(iotDevicePageReqVO);
+        return CommonResult.success(ImmutableMap.of("total", deviceCount,"today", deviceToday));
+    }
+
+    @GetMapping("/home/maintain/count")
+    public CommonResult<ImmutableMap<Object, Object>> getHomeMaintainCountStat() {
+        ImmutableMap<String, LocalDateTime> beginEndDay = DateUtils.getBeginEndDay(0);
+        Long maintainCount = iotMaintainMapper.selectCount();
+        IotMaintainPageReqVO iotMaintainPageReqVO = new IotMaintainPageReqVO();
+        iotMaintainPageReqVO.setCreateTime(new LocalDateTime[]{beginEndDay.get("start"), beginEndDay.get("end")});
+        Long maintainToday = iotMaintainMapper.selectCountByTimeAndStatus(iotMaintainPageReqVO);
+        return CommonResult.success(ImmutableMap.of("total", maintainCount, "today", maintainToday));
+    }
+
+    @GetMapping("/home/work/count")
+    public CommonResult<ImmutableMap<Object, Object>> getHomeWorkCountStat() {
+        ImmutableMap<String, LocalDateTime> beginEndDay = DateUtils.getBeginEndDay(0);
+        Long workCount = iotMainWorkOrderMapper.selectCount();
+        IotMainWorkOrderPageReqVO iotMainWorkOrderPageReqVO = new IotMainWorkOrderPageReqVO();
+        iotMainWorkOrderPageReqVO.setCreateTime(new LocalDateTime[]{beginEndDay.get("start"), beginEndDay.get("end")});
+        Long workToday = iotMainWorkOrderMapper.selectCountByTimeAndStatus(iotMainWorkOrderPageReqVO);
+        return CommonResult.success(ImmutableMap.of("total", workCount, "today", workToday));
     }
+
+    @GetMapping("/home/inspect/count")
+    public CommonResult<ImmutableMap<Object, Object>> getHomeInspectCountStat() {
+        ImmutableMap<String, LocalDateTime> beginEndDay = DateUtils.getBeginEndDay(0);
+        Long inspectCount = iotInspectOrderMapper.selectCount();
+        IotInspectOrderPageReqVO iotInspectOrderPageReqVO = new IotInspectOrderPageReqVO();
+        iotInspectOrderPageReqVO.setCreateTime(new LocalDateTime[]{beginEndDay.get("start"), beginEndDay.get("end")});
+        Long inspectToday = iotInspectOrderMapper.selectCountByTimeAndStatus(iotInspectOrderPageReqVO);
+        return CommonResult.success(ImmutableMap.of("total", inspectCount, "today", inspectToday));
+    }
+
+    @Resource
+    private DictDataService dictDataService;
+    @GetMapping("/home/device/status")
+    public CommonResult<Map<String, Long>> getDeviceStatusStat() {
+        List<IotDeviceDO> iotDeviceDOS = iotDeviceMapper.selectList();
+        Map<String, Long> order = iotDeviceDOS.stream().collect(Collectors.groupingBy(IotDeviceDO::getDeviceStatus, Collectors.counting()));
+        Map<String, Long> resultMap = new HashMap<>(order.size());
+        List<DictDataDO> pmsDeviceStatus = dictDataService.getDictDataListByDictType("pms_device_status");
+        order.forEach((k,v)->{
+            pmsDeviceStatus.stream().filter(e -> e.getValue().equals(k)).findFirst().ifPresent(e -> {
+                resultMap.put(e.getLabel(), v);
+            });
+        });
+        return CommonResult.success(resultMap);
+    }
+
+    @GetMapping("/home/device/type")
+    public CommonResult<List<Map<String, Object>>> getDeviceTypeStat() {
+        List<IotDeviceDO> iotDeviceDOS = iotDeviceMapper.selectList();
+        List<Map.Entry<Long, Long>> collect = iotDeviceDOS.stream().collect(Collectors.groupingBy(IotDeviceDO::getAssetClass, Collectors.counting())).entrySet().stream().sorted(Map.Entry.<Long, Long>comparingByValue().reversed())
+                .limit(5)
+                .collect(Collectors.toList());
+        List<Map<String, Object>> results = new ArrayList<>(collect.size());
+        collect.forEach(e ->{
+            IotProductClassifyDO iotProductClassifyDO = iotProductClassifyMapper.selectById(e.getKey());
+            Map<String, Object> map = new HashMap<>(4);
+            map.put("category", iotProductClassifyDO.getName());
+            map.put("value", e.getValue());
+            results.add(map);
+        });
+        return CommonResult.success(results);
+    }
+
+    @Data
+    public static class ActiveDept {
+        private String deptName;
+        private Long active;
+        private Long total;
+    }
+
+    @GetMapping("/home/dept")
+    public CommonResult<List<Pms.deptStat>> getActiveDeptStat() {
+        List<Pms.deptStat> userCountByDeptId = adminUserApi.getUserCountByDeptId(null);
+        return CommonResult.success(userCountByDeptId);
+    }
+
+
 }

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

@@ -245,4 +245,7 @@ public class DeviceVO extends PageParam {
         return serialVersionUID;
     }
 
+    private Long timestamp;
+    private Double value;
+
 }

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

@@ -105,7 +105,7 @@ public class IotDevicePageReqVO extends PageParam {
     @Schema(description = "资产类别")
     private Long assetClass;
     @Schema(description = "创建时间")
-    private LocalDateTime createTime;
+    private LocalDateTime[] createTime;
 
     /**
      * bom相关信息

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/inspect/IotInspectItemDO.java

@@ -67,4 +67,6 @@ public class IotInspectItemDO extends BaseDO {
      * 设备名称
      */
     private String deviceName;
+
+    private String urls;
 }

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

@@ -3,9 +3,11 @@ 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;
@@ -110,4 +112,9 @@ public interface IotDeviceMapper extends BaseMapperX<IotDeviceDO> {
 
     List<IotDeviceRespVO> deviceAssociateBomList(@Param("deviceIds") Collection<Long> deviceIds);
     IPage<IotDeviceRespVO> deviceAssociateBomListPage(IPage<IotDeviceRespVO> page, @Param("deviceIds") Collection<Long> deviceIds);
+    default Long selectCountByTimeAndStatus(IotDevicePageReqVO reqVO) {
+        return selectCount(new LambdaQueryWrapperX<IotDeviceDO>()
+                .eqIfPresent(IotDeviceDO::getDeviceStatus, reqVO.getDeviceStatus())
+                .betweenIfPresent(IotDeviceDO::getCreateTime, reqVO.getCreateTime()));
+    }
 }

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

@@ -80,6 +80,11 @@ public interface TDDeviceMapper extends BaseMapperX<TDDeviceDO> {
     DeviceVO getYesInfo(@Param("deviceName") String tableName,@Param("colName") String colName);
 
 
-
-    List<DeviceVO> selectAllBtTime(@Param("deviceName") String tableName, @Param("identifier") String identifier);
+    @Select("<script>" +
+            "SELECT * FROM iot_log.device_${deviceName} " +
+            "WHERE ts between #{start} and #{end} and identity = #{identifier}" +
+            "</script>")
+    @DS("tdengine")
+    @TenantIgnore
+    List<DeviceVO> selectAllBtTimeAndIdentifier(@Param("deviceName") String tableName, @Param("identifier") String identifier,@Param("start") Timestamp start,@Param("end") Timestamp end);
 }

+ 1 - 0
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApi.java

@@ -58,4 +58,5 @@ public interface DeptApi {
      */
     List<DeptRespDTO> getChildDeptList(Long id);
 
+    List<DeptRespDTO> getDeptByName(String deptName);
 }

+ 2 - 1
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.system.api.user;
 
+import cn.iocoder.yudao.framework.common.pojo.Pms;
 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
 
@@ -48,7 +49,7 @@ public interface AdminUserApi {
      * @return 用户数组
      */
     List<AdminUserRespDTO> getUserListByDeptIds(Collection<Long> deptIds);
-
+    List<Pms.deptStat> getUserCountByDeptId(Long deptId);
     /**
      * 获得指定岗位的用户数组
      *

+ 8 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/dept/DeptApiImpl.java

@@ -9,6 +9,7 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -51,4 +52,11 @@ public class DeptApiImpl implements DeptApi {
         return BeanUtils.toBean(childDeptList, DeptRespDTO.class);
     }
 
+    @Override
+    public List<DeptRespDTO> getDeptByName(String deptName) {
+        List<DeptDO> deptByName = deptService.getDeptByName(deptName);
+        return BeanUtils.toBean(deptByName, DeptRespDTO.class);
+    }
+
+
 }

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

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.api.user;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjUtil;
+import cn.iocoder.yudao.framework.common.pojo.Pms;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
 import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
@@ -97,6 +98,12 @@ public class AdminUserApiImpl implements AdminUserApi {
         return BeanUtils.toBean(users, AdminUserRespDTO.class);
     }
 
+    @Override
+    public List<Pms.deptStat> getUserCountByDeptId(Long deptId) {
+        return userService.selectCountByDeptId(deptId);
+
+    }
+
     @Override
     public List<AdminUserRespDTO> getUserListByPostIds(Collection<Long> postIds) {
         List<AdminUserDO> users = userService.getUserListByPostIds(postIds);

+ 3 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserPageReqVO.java

@@ -32,6 +32,9 @@ public class UserPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
 
+    @Schema(description = "创建时间", example = "[2022-07-01 00:00:00, 2022-07-01 23:59:59]")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] loginDate;
     @Schema(description = "部门编号,同时筛选子部门", example = "1024")
     private Long deptId;
 

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

@@ -57,4 +57,10 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
     default List<AdminUserDO> selectListByDept(Long deptId) {
         return selectList(AdminUserDO::getDeptId, deptId);
     }
+
+    default Long selectCountByDeptIds(Collection<Long> deptIds, UserPageReqVO reqVO) {
+        return selectCount(new LambdaQueryWrapperX<AdminUserDO>()
+                .betweenIfPresent(AdminUserDO::getLoginDate, reqVO.getLoginDate())
+                .inIfPresent(AdminUserDO::getDeptId,deptIds));
+    }
 }

+ 1 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java

@@ -59,7 +59,7 @@ public interface DeptService {
      * @return 部门列表
      */
     List<DeptDO> getDeptList(DeptListReqVO reqVO);
-
+    List<DeptDO> getDeptByName(String deptName);
     /**
      * 获得指定编号的部门 Map
      *

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

@@ -250,6 +250,11 @@ public class DeptServiceImpl implements DeptService {
         return list;
     }
 
+    @Override
+    public List<DeptDO> getDeptByName(String deptName) {
+        return deptMapper.selectList("name", deptName);
+    }
+
     @Override
     public List<DeptDO> getChildDeptList(Collection<Long> ids) {
         List<DeptDO> children = new LinkedList<>();

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

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.service.user;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.Pms;
 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 import cn.iocoder.yudao.module.system.controller.admin.auth.vo.AuthRegisterReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
@@ -25,7 +26,7 @@ import java.util.Map;
  * @author 芋道源码
  */
 public interface AdminUserService {
-
+    List<Pms.deptStat> selectCountByDeptId(Long deptId);
     /**
      * 创建用户
      *

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

@@ -7,7 +7,9 @@ import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.common.exception.ServiceException;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.Pms;
 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
+import cn.iocoder.yudao.framework.common.util.date.DateUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils;
 import cn.iocoder.yudao.framework.datapermission.core.util.DataPermissionUtils;
@@ -23,17 +25,22 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqV
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.UserPostDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
+import cn.iocoder.yudao.module.system.dal.mysql.dept.DeptMapper;
 import cn.iocoder.yudao.module.system.dal.mysql.dept.UserPostMapper;
 import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
+import cn.iocoder.yudao.module.system.service.dept.DeptServiceImpl;
 import cn.iocoder.yudao.module.system.service.dept.PostService;
 import cn.iocoder.yudao.module.system.service.permission.PermissionService;
 import cn.iocoder.yudao.module.system.service.tenant.TenantService;
 import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
 import com.mzt.logapi.context.LogRecordContext;
 import com.mzt.logapi.service.impl.DiffParseFunction;
 import com.mzt.logapi.starter.annotation.LogRecord;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.stereotype.Service;
@@ -83,6 +90,57 @@ public class AdminUserServiceImpl implements AdminUserService {
     private FileApi fileApi;
     @Resource
     private ConfigApi configApi;
+    @Autowired
+    private DeptServiceImpl deptServiceImpl;
+    @Autowired
+    private DeptMapper deptMapper;
+
+    @Override
+    public List<Pms.deptStat> selectCountByDeptId(Long deptId) {
+        DeptDO rh = deptMapper.selectOne("name", "瑞恒兴域");
+        Set<Long> childDeptIdListFromCache = deptService.getChildDeptIdListFromCache(rh.getId());
+        UserPageReqVO pageReqVO = new UserPageReqVO();
+        Long rhtotal = userMapper.selectCountByDeptIds(childDeptIdListFromCache, pageReqVO);
+        ImmutableMap<String, LocalDateTime> beginEndWeek = DateUtils.getBeginEndWeek();
+        pageReqVO.setLoginDate(new LocalDateTime[]{beginEndWeek.get("start"), beginEndWeek.get("end")});
+        Long rhactive = userMapper.selectCountByDeptIds(childDeptIdListFromCache, pageReqVO);
+
+
+        DeptDO ry = deptMapper.selectOne("name", "瑞鹰国际");
+        Set<Long> rydepts = deptService.getChildDeptIdListFromCache(ry.getId());
+        UserPageReqVO pageReqVO1 = new UserPageReqVO();
+        Long rytotal = userMapper.selectCountByDeptIds(rydepts, pageReqVO1);
+        pageReqVO1.setLoginDate(new LocalDateTime[]{beginEndWeek.get("start"), beginEndWeek.get("end")});
+        Long ryactive = userMapper.selectCountByDeptIds(rydepts, pageReqVO1);
+
+        DeptDO rd = deptMapper.selectOne("name", "四川瑞都");
+        Set<Long> rddepts = deptService.getChildDeptIdListFromCache(rd.getId());
+        UserPageReqVO pageReqVO2 = new UserPageReqVO();
+        Long rdtotal = userMapper.selectCountByDeptIds(rddepts, pageReqVO2);
+        pageReqVO2.setLoginDate(new LocalDateTime[]{beginEndWeek.get("start"), beginEndWeek.get("end")});
+        Long rdactive = userMapper.selectCountByDeptIds(rddepts, pageReqVO2);
+
+        List<Pms.deptStat> pmsList = new ArrayList<>();
+        Pms.deptStat rhpms = new Pms.deptStat();
+        rhpms.setDepartment("瑞恒兴域");
+        rhpms.setTotal(rhtotal);
+        rhpms.setActive(rhactive);
+
+        Pms.deptStat rypms = new Pms.deptStat();
+        rypms.setDepartment("瑞鹰国际");
+        rypms.setTotal(rytotal);
+        rypms.setActive(ryactive);
+
+        Pms.deptStat rdpms = new Pms.deptStat();
+        rdpms.setDepartment("四川瑞都");
+        rdpms.setTotal(rdtotal);
+        rdpms.setActive(rdactive);
+
+        pmsList.add(rhpms);
+        pmsList.add(rypms);
+        pmsList.add(rdpms);
+        return pmsList;
+    }
 
     @Override
     @Transactional(rollbackFor = Exception.class)