Jelajahi Sumber

pms 计划工作量 根据选择的队伍查询对应的项目业务及单位

zhangcl 5 hari lalu
induk
melakukan
11c7f85a45

+ 9 - 4
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttaskplan/IotProjectTaskPlanController.java

@@ -9,10 +9,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskplan.vo.IotProjectTaskPlanPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskplan.vo.IotProjectTaskPlanRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskplan.vo.IotProjectTaskPlanSaveReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskplan.vo.IotProjectTaskPlanStatisticsRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskplan.vo.*;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttaskattrs.IotTaskAttrModelProperty;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttaskplan.IotProjectTaskPlanDO;
 import cn.iocoder.yudao.module.pms.service.iotprojecttaskplan.IotProjectTaskPlanService;
@@ -140,6 +137,14 @@ public class IotProjectTaskPlanController {
         return success(taskPlanExtProperties);
     }
 
+    @GetMapping("/teamProjectBiz")
+    @Operation(summary = "查询队伍所属项目部匹配的项目业务类型及工作量")
+    @PreAuthorize("@ss.hasPermission('pms:iot-project-task-plan:query')")
+    public CommonResult<List<IotProjectTaskPlanBizRespVO>> teamProjectBiz(@Valid IotProjectTaskPlanPageReqVO pageReqVO) {
+        List<IotProjectTaskPlanBizRespVO> taskPlanExtProperties = iotProjectTaskPlanService.teamProjectBiz(pageReqVO);
+        return success(taskPlanExtProperties);
+    }
+
     @GetMapping("/summaryStatistics")
     @Operation(summary = "专业公司工作量计划 汇总 统计")
     @PreAuthorize("@ss.hasPermission('pms:iot-rd-daily-report:query')")

+ 21 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttaskplan/vo/IotProjectTaskPlanBizRespVO.java

@@ -0,0 +1,21 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskplan.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 队伍所属项目部匹配的项目业务类型 ")
+@Data
+@ExcelIgnoreUnannotated
+public class IotProjectTaskPlanBizRespVO {
+
+    @Schema(description = "项目业务(注气/钻井/修井/压裂/连油/井下) value", example = "6")
+    private String business;
+
+    @Schema(description = "项目业务(注气/钻井/修井/压裂/连油/井下) label", example = "连油")
+    private String businessName;
+
+    @Schema(description = "工作量单位", example = "米")
+    private String unit;
+
+}

+ 9 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotprojecttaskplan/IotProjectTaskPlanService.java

@@ -1,6 +1,7 @@
 package cn.iocoder.yudao.module.pms.service.iotprojecttaskplan;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskplan.vo.IotProjectTaskPlanBizRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskplan.vo.IotProjectTaskPlanPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskplan.vo.IotProjectTaskPlanSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskplan.vo.IotProjectTaskPlanStatisticsRespVO;
@@ -70,4 +71,12 @@ public interface IotProjectTaskPlanService {
      * @return 工作量计划汇总统计对象列表
      */
     List<IotProjectTaskPlanStatisticsRespVO> summaryStatistics(IotProjectTaskPlanPageReqVO pageReqVO);
+
+    /**
+     * 查询队伍所属项目部匹配的项目业务类型及工作量单位
+     *
+     * @param pageReqVO 列表查询
+     * @return 项目业务类型列表
+     */
+    List<IotProjectTaskPlanBizRespVO> teamProjectBiz(IotProjectTaskPlanPageReqVO pageReqVO);
 }

+ 47 - 4
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotprojecttaskplan/IotProjectTaskPlanServiceImpl.java

@@ -7,10 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.pms.controller.admin.iotoperationmeetingattrs.vo.IotOperationMeetingAttrsPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskplan.vo.IotProjectTaskPlanPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskplan.vo.IotProjectTaskPlanSaveReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskplan.vo.IotProjectTaskPlanStatisticsItemRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskplan.vo.IotProjectTaskPlanStatisticsRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskplan.vo.*;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotoperationmeetingattrs.IotOperationMeetingAttrsDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttaskattrs.IotTaskAttrModelProperty;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttaskplan.IotProjectTaskPlanDO;
@@ -238,6 +235,52 @@ public class IotProjectTaskPlanServiceImpl implements IotProjectTaskPlanService
         return result;
     }
 
+    @Override
+    public List<IotProjectTaskPlanBizRespVO> teamProjectBiz(IotProjectTaskPlanPageReqVO pageReqVO) {
+        List<IotProjectTaskPlanBizRespVO> result = new ArrayList<>();
+        // 查询队伍所属项目部匹配的项目业务类型及工作量单位
+        // deptId 需要传递公司级的部门id
+        Long deptId = pageReqVO.getDeptId();
+        if (ObjUtil.isEmpty(deptId)) {
+            return Collections.emptyList();
+        }
+        // 如果当前部门属于队伍 查询队伍对应的 上级项目部
+        DeptDO currentDept = deptMapper.selectById(deptId);
+        if ("3".equals(currentDept.getType())) {
+            // 项目部id
+            Long parentId = currentDept.getParentId();
+            // 查询 计划工作量 项目业务类型 项目业务(注气/钻井/修井/压裂/连油/井下)
+            List<DictDataDO> workloadPlanBizData = dictDataService.getDictDataListByDictType("rq_iot_workload_plan_biz");
+            if (CollUtil.isNotEmpty(workloadPlanBizData)) {
+                workloadPlanBizData.forEach(tech -> {
+                    String label = tech.getLabel();
+                    String value = tech.getValue();
+                    String unit = tech.getCssClass();
+                    // 设置每个项目部的业务类型
+                    String projectDeptIdsStr = tech.getRemark();
+                    if (StrUtil.isNotBlank(projectDeptIdsStr)) {
+                        // 数据格式 234,124,832
+                        // 逗号分割、转Long、过滤空字符串、收集到Set
+                        Set<Long> deptIdSet = StrUtil.splitTrim(projectDeptIdsStr, ",")
+                                .stream()
+                                .filter(StrUtil::isNotBlank)
+                                .map(Long::valueOf)
+                                .collect(Collectors.toSet());
+
+                        if (deptIdSet.contains(parentId)) {
+                            IotProjectTaskPlanBizRespVO tempBiz = new IotProjectTaskPlanBizRespVO();
+                            tempBiz.setBusiness(value);
+                            tempBiz.setBusinessName(label);
+                            tempBiz.setUnit(unit);
+                            result.add(tempBiz);
+                        }
+                    }
+                });
+            }
+        }
+        return result;
+    }
+
     /**
      * 按专业公司维度 汇总 统计数据
      * @param plans 月度计划工作量列表