|
@@ -1114,6 +1114,37 @@ public class IotOperationMeetingServiceImpl implements IotOperationMeetingServic
|
|
|
companyExtProperties.add(layersCompletionRatioProperty);
|
|
companyExtProperties.add(layersCompletionRatioProperty);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ // 各专业公司公共属性 施工设备 投运设备
|
|
|
|
|
+ if (companyInServiceDeviceNumPair.containsKey(deptId)) {
|
|
|
|
|
+ IotTaskAttrModelProperty inServiceDeviceProperty = new IotTaskAttrModelProperty();
|
|
|
|
|
+ inServiceDeviceProperty.setName("投运设备数量");
|
|
|
|
|
+ inServiceDeviceProperty.setAccessMode("r");
|
|
|
|
|
+ inServiceDeviceProperty.setRequired(0);
|
|
|
|
|
+ inServiceDeviceProperty.setSort(9);
|
|
|
|
|
+ inServiceDeviceProperty.setUnit("台");
|
|
|
|
|
+ inServiceDeviceProperty.setDataType("double");
|
|
|
|
|
+ inServiceDeviceProperty.setIdentifier("inServiceDeviceNum");
|
|
|
|
|
+ inServiceDeviceProperty.setActualValue(companyInServiceDeviceNumPair.get(deptId).toString());
|
|
|
|
|
+ inServiceDeviceProperty.setMaxValue(StrUtil.EMPTY);
|
|
|
|
|
+ inServiceDeviceProperty.setMinValue(StrUtil.EMPTY);
|
|
|
|
|
+ inServiceDeviceProperty.setDefaultValue(StrUtil.EMPTY);
|
|
|
|
|
+ companyExtProperties.add(inServiceDeviceProperty);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (companyConstructionDeviceNumPair.containsKey(deptId)) {
|
|
|
|
|
+ IotTaskAttrModelProperty constructionDeviceProperty = new IotTaskAttrModelProperty();
|
|
|
|
|
+ constructionDeviceProperty.setName("施工设备数量");
|
|
|
|
|
+ constructionDeviceProperty.setAccessMode("r");
|
|
|
|
|
+ constructionDeviceProperty.setRequired(0);
|
|
|
|
|
+ constructionDeviceProperty.setSort(10);
|
|
|
|
|
+ constructionDeviceProperty.setUnit("台");
|
|
|
|
|
+ constructionDeviceProperty.setDataType("double");
|
|
|
|
|
+ constructionDeviceProperty.setIdentifier("constructionDeviceNum");
|
|
|
|
|
+ constructionDeviceProperty.setActualValue(companyConstructionDeviceNumPair.get(deptId).toString());
|
|
|
|
|
+ constructionDeviceProperty.setMaxValue(StrUtil.EMPTY);
|
|
|
|
|
+ constructionDeviceProperty.setMinValue(StrUtil.EMPTY);
|
|
|
|
|
+ constructionDeviceProperty.setDefaultValue(StrUtil.EMPTY);
|
|
|
|
|
+ companyExtProperties.add(constructionDeviceProperty);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
if (companyInServiceDeviceNumPair.containsKey(deptId) && companyConstructionDeviceNumPair.containsKey(deptId)) {
|
|
if (companyInServiceDeviceNumPair.containsKey(deptId) && companyConstructionDeviceNumPair.containsKey(deptId)) {
|
|
|
// 各专业公司共用属性 设备利用率 施工设备/投运设备
|
|
// 各专业公司共用属性 设备利用率 施工设备/投运设备
|
|
@@ -1125,7 +1156,7 @@ public class IotOperationMeetingServiceImpl implements IotOperationMeetingServic
|
|
|
utilizationRateProperty.setName("设备利用率");
|
|
utilizationRateProperty.setName("设备利用率");
|
|
|
utilizationRateProperty.setAccessMode("r");
|
|
utilizationRateProperty.setAccessMode("r");
|
|
|
utilizationRateProperty.setRequired(1);
|
|
utilizationRateProperty.setRequired(1);
|
|
|
- utilizationRateProperty.setSort(3);
|
|
|
|
|
|
|
+ utilizationRateProperty.setSort(11);
|
|
|
utilizationRateProperty.setUnit("%");
|
|
utilizationRateProperty.setUnit("%");
|
|
|
utilizationRateProperty.setDataType("double");
|
|
utilizationRateProperty.setDataType("double");
|
|
|
utilizationRateProperty.setIdentifier("utilizationRate");
|
|
utilizationRateProperty.setIdentifier("utilizationRate");
|
|
@@ -1147,7 +1178,7 @@ public class IotOperationMeetingServiceImpl implements IotOperationMeetingServic
|
|
|
periodOnPeriodProperty.setName("环比");
|
|
periodOnPeriodProperty.setName("环比");
|
|
|
periodOnPeriodProperty.setAccessMode("r");
|
|
periodOnPeriodProperty.setAccessMode("r");
|
|
|
periodOnPeriodProperty.setRequired(1);
|
|
periodOnPeriodProperty.setRequired(1);
|
|
|
- periodOnPeriodProperty.setSort(8);
|
|
|
|
|
|
|
+ periodOnPeriodProperty.setSort(12);
|
|
|
periodOnPeriodProperty.setUnit("%");
|
|
periodOnPeriodProperty.setUnit("%");
|
|
|
periodOnPeriodProperty.setDataType("double");
|
|
periodOnPeriodProperty.setDataType("double");
|
|
|
periodOnPeriodProperty.setIdentifier("periodOnPeriod");
|
|
periodOnPeriodProperty.setIdentifier("periodOnPeriod");
|
|
@@ -1163,6 +1194,11 @@ public class IotOperationMeetingServiceImpl implements IotOperationMeetingServic
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
// 设置各专业公司的工作量汇总数据
|
|
// 设置各专业公司的工作量汇总数据
|
|
|
|
|
+ // 将拆分工作量明细 按照 sort 升序排列
|
|
|
|
|
+ companyExtProperties.sort(Comparator.comparing(
|
|
|
|
|
+ IotTaskAttrModelProperty::getSort,
|
|
|
|
|
+ Comparator.nullsLast(Integer::compareTo)
|
|
|
|
|
+ ));
|
|
|
tempMeeting.setExtProperty(companyExtProperties);
|
|
tempMeeting.setExtProperty(companyExtProperties);
|
|
|
List<IotOperationMeetingDetailRespVO> meetingDetails = BeanUtils.toBean(details, IotOperationMeetingDetailRespVO.class);
|
|
List<IotOperationMeetingDetailRespVO> meetingDetails = BeanUtils.toBean(details, IotOperationMeetingDetailRespVO.class);
|
|
|
tempMeeting.setDetails(meetingDetails);
|
|
tempMeeting.setDetails(meetingDetails);
|
|
@@ -1225,4 +1261,36 @@ public class IotOperationMeetingServiceImpl implements IotOperationMeetingServic
|
|
|
return workloadProperties;
|
|
return workloadProperties;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public List<IotOperationMeetingRespVO> companyWorkloadDetails(IotOperationMeetingPageReqVO pageReqVO) {
|
|
|
|
|
+ // 列表中只有1个专业公司 deptId 对象
|
|
|
|
|
+ List<IotOperationMeetingRespVO> resultMeetings = new ArrayList<>();
|
|
|
|
|
+ pageReqVO.getMeetingSeries(); // 会议期次
|
|
|
|
|
+ pageReqVO.getYear(); // 年份
|
|
|
|
|
+ pageReqVO.getDeptId(); // 专业公司id
|
|
|
|
|
+ String meetingSeries = pageReqVO.getMeetingSeries(); // 期次
|
|
|
|
|
+ Integer year = pageReqVO.getYear(); // 年份
|
|
|
|
|
+ Long deptId = pageReqVO.getDeptId(); // 专业公司id
|
|
|
|
|
+ if (StrUtil.isBlank(meetingSeries) || ObjUtil.isEmpty(year) || ObjUtil.isEmpty(deptId)) {
|
|
|
|
|
+ return resultMeetings;
|
|
|
|
|
+ }
|
|
|
|
|
+ // 根据 期次 日期yyyy 查询专业公司deptId下所有的项目明细
|
|
|
|
|
+ IotOperationMeetingDetailPageReqVO reqVO = new IotOperationMeetingDetailPageReqVO();
|
|
|
|
|
+ reqVO.setYear(year);
|
|
|
|
|
+ // 提取 meetingSeries 中的数字
|
|
|
|
|
+ Optional.ofNullable(meetingSeries)
|
|
|
|
|
+ .map(s -> s.replaceAll("\\D", "")) // 提取所有数字
|
|
|
|
|
+ .filter(StrUtil::isNumeric) // 确保是数字
|
|
|
|
|
+ .map(Integer::valueOf)
|
|
|
|
|
+ .ifPresent(reqVO::setSort);
|
|
|
|
|
+ reqVO.setDeptId(deptId);
|
|
|
|
|
+ List<IotOperationMeetingDetailDO> summarizedDetails = iotOperationMeetingDetailMapper.summarizedProjectDetails(reqVO);
|
|
|
|
|
+ if (CollUtil.isEmpty(summarizedDetails)) {
|
|
|
|
|
+ return resultMeetings;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ return Collections.emptyList();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|