Преглед изворни кода

pms 生产运营双周会 数据汇总页面 优化功能参数

zhangcl пре 2 дана
родитељ
комит
fff2d851d8

+ 8 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotoperationmeeting/IotOperationMeetingController.java

@@ -199,6 +199,14 @@ public class IotOperationMeetingController {
         return success(iotOperationMeeting);
     }
 
+    @GetMapping("/companyWorkloadDetails")
+    @Operation(summary = "汇总页面 查询指定公司 的拆分工作量明细")
+    @PreAuthorize("@ss.hasPermission('pms:iot-operation-meeting:query')")
+    public CommonResult<List<IotOperationMeetingRespVO>> companyWorkloadDetails(@Valid IotOperationMeetingPageReqVO pageReqVO) {
+        List<IotOperationMeetingRespVO> iotOperationMeeting = iotOperationMeetingService.companyWorkloadDetails(pageReqVO);
+        return success(iotOperationMeeting);
+    }
+
     @GetMapping("/availableQueryPeriods")
     @Operation(summary = "石油技术查询所有公司的会议记录列表 查询可供查询的期次 下拉列表")
     @PreAuthorize("@ss.hasPermission('pms:iot-operation-meeting:query')")

+ 4 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotoperationmeetingdetail/vo/IotOperationMeetingDetailRespVO.java

@@ -89,6 +89,10 @@ public class IotOperationMeetingDetailRespVO {
     @ExcelProperty("生产管理情况及重点工作-存在问题及分析")
     private String problemsAnalysis;
 
+    @Schema(description = "QHSE 相关工作")
+    @ExcelProperty("QHSE 相关工作")
+    private String qhse;
+
     @Schema(description = "下期工作计划-计划工作量")
     @ExcelProperty("下期工作计划-计划工作量")
     private String nextPlannedWorkload;

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

@@ -65,6 +65,9 @@ public class IotOperationMeetingDetailSaveReqVO {
     @Schema(description = "生产管理情况及重点工作-存在问题及分析")
     private String problemsAnalysis;
 
+    @Schema(description = "QHSE 相关工作")
+    private String qhse;
+
     @Schema(description = "下期工作计划-计划工作量")
     private String nextPlannedWorkload;
 

+ 4 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotoperationmeetingdetail/IotOperationMeetingDetailDO.java

@@ -98,6 +98,10 @@ public class IotOperationMeetingDetailDO extends BaseDO {
      * 生产管理情况及重点工作-存在问题及分析
      */
     private String problemsAnalysis;
+    /**
+     * QHSE 相关工作
+     */
+    private String qhse;
     /**
      * 下期工作计划-计划工作量
      */

+ 7 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotoperationmeeting/IotOperationMeetingService.java

@@ -111,4 +111,11 @@ public interface IotOperationMeetingService {
      * @return
      */
     List<IotTaskAttrModelProperty> currentCompanyExtProperties();
+
+    /**
+     * 汇总页面 查询指定公司 的拆分工作量明细
+     * @param
+     * @return
+     */
+    List<IotOperationMeetingRespVO> companyWorkloadDetails(IotOperationMeetingPageReqVO pageReqVO);
 }

+ 70 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotoperationmeeting/IotOperationMeetingServiceImpl.java

@@ -1114,6 +1114,37 @@ public class IotOperationMeetingServiceImpl implements IotOperationMeetingServic
                         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)) {
                     // 各专业公司共用属性 设备利用率 施工设备/投运设备
@@ -1125,7 +1156,7 @@ public class IotOperationMeetingServiceImpl implements IotOperationMeetingServic
                         utilizationRateProperty.setName("设备利用率");
                         utilizationRateProperty.setAccessMode("r");
                         utilizationRateProperty.setRequired(1);
-                        utilizationRateProperty.setSort(3);
+                        utilizationRateProperty.setSort(11);
                         utilizationRateProperty.setUnit("%");
                         utilizationRateProperty.setDataType("double");
                         utilizationRateProperty.setIdentifier("utilizationRate");
@@ -1147,7 +1178,7 @@ public class IotOperationMeetingServiceImpl implements IotOperationMeetingServic
                                     periodOnPeriodProperty.setName("环比");
                                     periodOnPeriodProperty.setAccessMode("r");
                                     periodOnPeriodProperty.setRequired(1);
-                                    periodOnPeriodProperty.setSort(8);
+                                    periodOnPeriodProperty.setSort(12);
                                     periodOnPeriodProperty.setUnit("%");
                                     periodOnPeriodProperty.setDataType("double");
                                     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);
                 List<IotOperationMeetingDetailRespVO> meetingDetails = BeanUtils.toBean(details, IotOperationMeetingDetailRespVO.class);
                 tempMeeting.setDetails(meetingDetails);
@@ -1225,4 +1261,36 @@ public class IotOperationMeetingServiceImpl implements IotOperationMeetingServic
         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();
+    }
+
 }