|
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.pms.service.iotrhdailyreport;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.date.DatePattern;
|
|
import cn.hutool.core.date.DatePattern;
|
|
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
|
|
|
|
+import cn.hutool.core.util.NumberUtil;
|
|
|
import cn.hutool.core.util.ObjUtil;
|
|
import cn.hutool.core.util.ObjUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
|
@@ -35,11 +36,11 @@ import cn.iocoder.yudao.module.pms.job.IotDeviceCarFuelVO;
|
|
|
import cn.iocoder.yudao.module.pms.message.PmsMessage;
|
|
import cn.iocoder.yudao.module.pms.message.PmsMessage;
|
|
|
import cn.iocoder.yudao.module.pms.util.ZHBDUtil;
|
|
import cn.iocoder.yudao.module.pms.util.ZHBDUtil;
|
|
|
import cn.iocoder.yudao.module.supplier.enums.common.SupplierAuditStatusEnum;
|
|
import cn.iocoder.yudao.module.supplier.enums.common.SupplierAuditStatusEnum;
|
|
|
-import cn.iocoder.yudao.module.system.api.dept.DeptApi;
|
|
|
|
|
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
|
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.api.user.dto.AdminUserRespDTO;
|
|
|
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO;
|
|
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO;
|
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
|
|
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.dict.DictTypeDO;
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictTypeDO;
|
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
|
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.permission.UserRoleDO;
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.permission.UserRoleDO;
|
|
@@ -47,6 +48,7 @@ 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.DeptMapper;
|
|
|
import cn.iocoder.yudao.module.system.dal.mysql.permission.UserRoleMapper;
|
|
import cn.iocoder.yudao.module.system.dal.mysql.permission.UserRoleMapper;
|
|
|
import cn.iocoder.yudao.module.system.service.dept.DeptService;
|
|
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.dict.DictTypeService;
|
|
import cn.iocoder.yudao.module.system.service.dict.DictTypeService;
|
|
|
import cn.iocoder.yudao.module.system.service.permission.RoleService;
|
|
import cn.iocoder.yudao.module.system.service.permission.RoleService;
|
|
|
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
|
|
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
|
|
@@ -123,7 +125,7 @@ public class IotRhDailyReportServiceImpl implements IotRhDailyReportService {
|
|
|
@Resource
|
|
@Resource
|
|
|
private PmsMessage pmsMessage;
|
|
private PmsMessage pmsMessage;
|
|
|
@Resource
|
|
@Resource
|
|
|
- private DeptApi deptApi;
|
|
|
|
|
|
|
+ private DictDataService dictDataService;
|
|
|
@Resource
|
|
@Resource
|
|
|
private DeptMapper deptMapper;
|
|
private DeptMapper deptMapper;
|
|
|
|
|
|
|
@@ -1089,6 +1091,19 @@ public class IotRhDailyReportServiceImpl implements IotRhDailyReportService {
|
|
|
// key队伍id/项目部id value设备利用率(按小时统计)
|
|
// key队伍id/项目部id value设备利用率(按小时统计)
|
|
|
Map<Long, BigDecimal> hourDeviceUtilizationPair = new HashMap<>();
|
|
Map<Long, BigDecimal> hourDeviceUtilizationPair = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
+ // 筛选瑞恒 主设备 rq_iot_rh_main_device_category
|
|
|
|
|
+ Set<Long> mainDeviceCategoryIds = new HashSet<>();
|
|
|
|
|
+ List<DictDataDO> constructionStatusDictData = dictDataService.getDictDataListByDictType("rq_iot_rh_main_device_category");
|
|
|
|
|
+ if (CollUtil.isNotEmpty(constructionStatusDictData)) {
|
|
|
|
|
+ constructionStatusDictData.forEach(data -> {
|
|
|
|
|
+ String value = data.getValue();
|
|
|
|
|
+ if (NumberUtil.isNumber(value)) {
|
|
|
|
|
+ Long longValue = Long.valueOf(value);
|
|
|
|
|
+ mainDeviceCategoryIds.add(longValue);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// 以项目部为维度统计数据
|
|
// 以项目部为维度统计数据
|
|
|
// 找到所有项目部与队伍的对应关系
|
|
// 找到所有项目部与队伍的对应关系
|
|
|
// 查询指定根部门下的所有子部门
|
|
// 查询指定根部门下的所有子部门
|
|
@@ -1105,7 +1120,10 @@ public class IotRhDailyReportServiceImpl implements IotRhDailyReportService {
|
|
|
if (CollUtil.isNotEmpty(devices)) {
|
|
if (CollUtil.isNotEmpty(devices)) {
|
|
|
// 筛选出包含设备的队伍部门集合
|
|
// 筛选出包含设备的队伍部门集合
|
|
|
devices.forEach(device -> {
|
|
devices.forEach(device -> {
|
|
|
- haveDeviceDeptIds.add(device.getDeptId());
|
|
|
|
|
|
|
+ // 20260605 筛选包含主设备的队伍
|
|
|
|
|
+ if (mainDeviceCategoryIds.contains(device.getAssetClass())) {
|
|
|
|
|
+ haveDeviceDeptIds.add(device.getDeptId());
|
|
|
|
|
+ }
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -1983,6 +2001,19 @@ public class IotRhDailyReportServiceImpl implements IotRhDailyReportService {
|
|
|
// key队伍id/项目部id value设备利用率(按小时统计)
|
|
// key队伍id/项目部id value设备利用率(按小时统计)
|
|
|
Map<Long, BigDecimal> hourDeviceUtilizationPair = new HashMap<>();
|
|
Map<Long, BigDecimal> hourDeviceUtilizationPair = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
+ // 筛选瑞恒 主设备 rq_iot_rh_main_device_category
|
|
|
|
|
+ Set<Long> mainDeviceCategoryIds = new HashSet<>();
|
|
|
|
|
+ List<DictDataDO> constructionStatusDictData = dictDataService.getDictDataListByDictType("rq_iot_rh_main_device_category");
|
|
|
|
|
+ if (CollUtil.isNotEmpty(constructionStatusDictData)) {
|
|
|
|
|
+ constructionStatusDictData.forEach(data -> {
|
|
|
|
|
+ String value = data.getValue();
|
|
|
|
|
+ if (NumberUtil.isNumber(value)) {
|
|
|
|
|
+ Long longValue = Long.valueOf(value);
|
|
|
|
|
+ mainDeviceCategoryIds.add(longValue);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// 以 队伍 为维度统计数据
|
|
// 以 队伍 为维度统计数据
|
|
|
// 找到所有项目部与队伍的对应关系
|
|
// 找到所有项目部与队伍的对应关系
|
|
|
// 查询指定根部门下的所有子部门
|
|
// 查询指定根部门下的所有子部门
|
|
@@ -2018,7 +2049,11 @@ public class IotRhDailyReportServiceImpl implements IotRhDailyReportService {
|
|
|
if (CollUtil.isNotEmpty(devices)) {
|
|
if (CollUtil.isNotEmpty(devices)) {
|
|
|
// 筛选出包含设备的队伍部门集合
|
|
// 筛选出包含设备的队伍部门集合
|
|
|
devices.forEach(device -> {
|
|
devices.forEach(device -> {
|
|
|
- haveDeviceDeptIds.add(device.getDeptId());
|
|
|
|
|
|
|
+ // 20260605 筛选包含主设备的队伍
|
|
|
|
|
+ if (mainDeviceCategoryIds.contains(device.getAssetClass())) {
|
|
|
|
|
+ device.getAssetClass();
|
|
|
|
|
+ haveDeviceDeptIds.add(device.getDeptId());
|
|
|
|
|
+ }
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|