Переглянути джерело

pms 计划工作量分页列表

zhangcl 1 тиждень тому
батько
коміт
801036ae9d

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

@@ -1,5 +1,8 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskplan;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
@@ -13,6 +16,10 @@ import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskplan.vo.IotPro
 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;
+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.service.dept.DeptService;
+import cn.iocoder.yudao.module.system.service.dict.DictDataService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -24,13 +31,13 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.time.LocalDateTime;
+import java.util.*;
 
 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
+import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
 
 @Tag(name = "管理后台 - 日报任务计划(工作量)")
 @RestController
@@ -41,6 +48,12 @@ public class IotProjectTaskPlanController {
     @Resource
     private IotProjectTaskPlanService iotProjectTaskPlanService;
 
+    @Resource
+    private DeptService deptService;
+
+    @Resource
+    private DictDataService dictDataService;
+
     @PostMapping("/create")
     @Operation(summary = "创建日报任务计划(工作量)")
     @PreAuthorize("@ss.hasPermission('pms:iot-project-task-plan:create')")
@@ -79,7 +92,44 @@ public class IotProjectTaskPlanController {
     @PreAuthorize("@ss.hasPermission('pms:iot-project-task-plan:query')")
     public CommonResult<PageResult<IotProjectTaskPlanRespVO>> getIotProjectTaskPlanPage(@Valid IotProjectTaskPlanPageReqVO pageReqVO) {
         PageResult<IotProjectTaskPlanDO> pageResult = iotProjectTaskPlanService.getIotProjectTaskPlanPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotProjectTaskPlanRespVO.class));
+        return success(new PageResult<>(buildPlans(pageResult.getList()), pageResult.getTotal()));
+    }
+
+    /**
+     * 设置日报的关联信息 部门(施工队伍) 项目 任务 带班干部 日报填报人
+     * @param plans
+     * @return
+     */
+    private List<IotProjectTaskPlanRespVO> buildPlans(List<IotProjectTaskPlanDO> plans) {
+        if (CollUtil.isEmpty(plans)) {
+            return Collections.emptyList();
+        }
+        // 设备部门信息
+        Map<Long, DeptDO> tempDeptMap = deptService.getDeptMap(convertList(plans, IotProjectTaskPlanDO::getDeptId));
+        //  计划工作量 项目业务类型 key字典键值     value字典标签
+        Map<String, String> workloadPlanDictPair = new HashMap<>();
+        // 项目业务类型 注气 压裂 连油
+        // 查询 计划工作量 项目业务类型 项目业务(注气/钻井/修井/压裂/连油/井下)
+        List<DictDataDO> workloadPlanBizData = dictDataService.getDictDataListByDictType("rq_iot_workload_plan_biz");
+        if (CollUtil.isNotEmpty(workloadPlanBizData)) {
+            workloadPlanBizData.forEach(tech -> {
+                workloadPlanDictPair.put(tech.getValue(), tech.getLabel());
+            });
+        }
+        return BeanUtils.toBean(plans, IotProjectTaskPlanRespVO.class, (reportVO) -> {
+            // 年 月
+            LocalDateTime startTime = reportVO.getStartTime();
+            if (ObjUtil.isNotEmpty(startTime)) {
+                Integer year = startTime.getYear();
+                Integer month = startTime.getMonthValue();
+                String uniqueKey = StrUtil.join("-", year, month);
+                reportVO.setYearMonth(uniqueKey);
+            }
+            // 计划工作量 队伍名称
+            findAndThen(tempDeptMap, reportVO.getDeptId(), dept -> reportVO.setDeptName(dept.getName()));
+            // 计划工作量 项目业务类型
+            findAndThen(workloadPlanDictPair, reportVO.getBusiness(), label -> reportVO.setBusiness(label));
+        });
     }
 
     @GetMapping("/planExtProperties")

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

@@ -90,4 +90,14 @@ public class IotProjectTaskPlanRespVO {
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
+    /**
+     * 扩展属性
+     */
+    @Schema(description = "部门名称", example = "16415")
+    private String deptName;
+
+    @Schema(description = "年 月", example = "2026-12")
+    private String yearMonth;
+
+
 }

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

@@ -112,6 +112,14 @@ public class IotProjectTaskPlanServiceImpl implements IotProjectTaskPlanService
 
     @Override
     public PageResult<IotProjectTaskPlanDO> getIotProjectTaskPlanPage(IotProjectTaskPlanPageReqVO pageReqVO) {
+        // 查询选择部门下所有子部门的数据
+        // 查询选择部门下面所有子部门
+        Set<Long> ids = new HashSet<>();
+        if (Objects.nonNull(pageReqVO.getDeptId())) {
+            ids = deptService.getChildDeptIdListFromCache(pageReqVO.getDeptId());
+            ids.add(pageReqVO.getDeptId());
+            pageReqVO.setDeptIds(ids);
+        }
         return iotProjectTaskPlanMapper.selectPage(pageReqVO);
     }
 
@@ -128,6 +136,22 @@ public class IotProjectTaskPlanServiceImpl implements IotProjectTaskPlanService
         if ("0".equals(currentDept.getType())) {
             groupFlag = true;
         }
+        // 如果传递的是队伍 查询队伍所属公司id
+        if (!"1".equals(currentDept.getType())) {
+            Set<Long> allRhChildDeptIds = deptService.getChildDeptIdListFromCache(157l);
+            Set<Long> allRyChildDeptIds = deptService.getChildDeptIdListFromCache(158l);
+            Set<Long> allRdChildDeptIds = deptService.getChildDeptIdListFromCache(163l);
+            Set<Long> allFiveChildDeptIds = deptService.getChildDeptIdListFromCache(388l);
+            if (allRhChildDeptIds.contains(deptId)) {
+                deptId = 157l;
+            } else if (allRyChildDeptIds.contains(deptId)) {
+                deptId = 158l;
+            } else if (allRdChildDeptIds.contains(deptId)) {
+                deptId = 163l;
+            } else if (allFiveChildDeptIds.contains(deptId)) {
+                deptId = 388l;
+            }
+        }
         // 根据任务井所属的 公司id 查询工作量扩展属性
         IotOperationMeetingAttrsPageReqVO reqVO = new IotOperationMeetingAttrsPageReqVO();
         if (!groupFlag) {