|
|
@@ -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")
|