Procházet zdrojové kódy

pms 瑞都日报 汇总统计

zhangcl před 1 týdnem
rodič
revize
30eb8a309d

+ 11 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreport/IotRdDailyReportController.java

@@ -17,6 +17,7 @@ import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProject
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportSaveReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportStatisticsRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceSimpleRespVO;
@@ -216,6 +217,16 @@ public class IotRdDailyReportController {
         return success(new PageResult<>(buildDailyReportList(pageResult.getList()), pageResult.getTotal()));
     }
 
+    @GetMapping("/statistics")
+    @Operation(summary = "瑞都日报 统计")
+    @PreAuthorize("@ss.hasPermission('pms:iot-rd-daily-report:query')")
+    public CommonResult<List<IotRdDailyReportStatisticsRespVO>> statistics(@Valid IotRdDailyReportPageReqVO pageReqVO) {
+        List<IotRdDailyReportStatisticsRespVO> pageResult = iotRdDailyReportService.statistics(pageReqVO);
+        // 瑞都日报 按照项目部统计
+        List<IotRdDailyReportStatisticsRespVO> projectReports = new ArrayList<>();
+        return success(projectReports);
+    }
+
     /**
      * 设置日报的关联信息 部门(施工队伍) 项目 任务 带班干部 日报填报人
      * @param reports

+ 24 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreport/vo/IotRdDailyReportStatisticsItemVO.java

@@ -0,0 +1,24 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 瑞都日报 统计 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IotRdDailyReportStatisticsItemVO {
+
+    @Schema(description = "施工工艺名称", example = "压裂大包")
+    @ExcelProperty("施工工艺名称")
+    private String technique;
+
+    @Schema(description = "工作量", example = "2")
+    @ExcelProperty("工作量")
+    private String workload;
+
+    @Schema(description = "单位")
+    @ExcelProperty("单位")
+    private String unit;
+}

+ 59 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreport/vo/IotRdDailyReportStatisticsRespVO.java

@@ -0,0 +1,59 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Schema(description = "管理后台 - 瑞都日报 统计 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IotRdDailyReportStatisticsRespVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "13853")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "项目部id", example = "125")
+    @ExcelProperty("项目部id")
+    private Long deptId;
+
+    @Schema(description = "项目部名称", example = "西南压裂项目部")
+    @ExcelProperty("项目部名称")
+    private String projectDeptName;
+
+    @Schema(description = "队伍名称", example = "压裂二队")
+    @ExcelProperty("队伍名称")
+    private String deptName;
+
+    @Schema(description = "任务id", example = "15678")
+    @ExcelProperty("任务id")
+    private Long taskId;
+
+    @Schema(description = "甲方")
+    @ExcelProperty("甲方")
+    private String manufactureName;
+
+    @Schema(description = "井号")
+    @ExcelProperty("井号")
+    private String wellName;
+
+    @Schema(description = "施工工艺 多个逗号分隔")
+    @ExcelProperty("施工工艺")
+    private String techniques;
+
+    @Schema(description = "总工作量")
+    @ExcelProperty("总工作量")
+    private BigDecimal workloadDesign;
+
+    @Schema(description = "已完成工作量")
+    @ExcelProperty("已完成工作量")
+    private BigDecimal finishedWorkload;
+
+    @Schema(description = "工作量明细")
+    @ExcelProperty("工作量明细")
+    private List<IotRdDailyReportStatisticsItemVO> items;
+}

+ 8 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrddailyreport/IotRdDailyReportService.java

@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.pms.service.iotrddailyreport;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportSaveReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportStatisticsRespVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotrddailyreport.IotRdDailyReportDO;
 
 import javax.validation.Valid;
@@ -68,11 +69,17 @@ public interface IotRdDailyReportService {
      */
     List<IotRdDailyReportDO> dailyReports(IotRdDailyReportPageReqVO pageReqVO);
 
-
     /**
      * 批量 新增日报工单
      *
      * @param
      */
     void batchAddDailyReports(List<IotRdDailyReportDO> reports);
+
+    /**
+     * 瑞都 日报 按项目部统计
+     *
+     * @param
+     */
+    List<IotRdDailyReportStatisticsRespVO> statistics(IotRdDailyReportPageReqVO pageReqVO);
 }

+ 34 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrddailyreport/IotRdDailyReportServiceImpl.java

@@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo.IotAttachmentSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportSaveReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.IotRdDailyReportStatisticsRespVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotattachment.IotAttachmentDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotrddailyreport.IotRdDailyReportDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotattachment.IotAttachmentMapper;
@@ -14,14 +15,15 @@ import cn.iocoder.yudao.module.pms.dal.mysql.iotrddailyreport.IotRdDailyReportMa
 import cn.iocoder.yudao.module.pms.enums.AttachmentCategoryEnum;
 import cn.iocoder.yudao.module.pms.enums.AttachmentTypeEnum;
 import cn.iocoder.yudao.module.supplier.enums.common.SupplierAuditStatusEnum;
+import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
+import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import com.google.common.collect.ImmutableMap;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_RD_DAILY_REPORT_NOT_EXISTS;
@@ -40,6 +42,8 @@ public class IotRdDailyReportServiceImpl implements IotRdDailyReportService {
 
     @Resource
     private IotAttachmentMapper iotAttachmentMapper;
+    @Resource
+    private DeptService deptService;
 
     @Override
     public Long createIotRdDailyReport(IotRdDailyReportSaveReqVO createReqVO) {
@@ -139,4 +143,32 @@ public class IotRdDailyReportServiceImpl implements IotRdDailyReportService {
         iotRdDailyReportMapper.insertBatch(reports);
     }
 
+    @Override
+    public List<IotRdDailyReportStatisticsRespVO> statistics(IotRdDailyReportPageReqVO pageReqVO) {
+        // 按照项目部统计日报
+        // 先查询瑞都所有部门 163l
+        Set<Long> rdChildDeptIds = deptService.getChildDeptIdListFromCache(163l);
+        List<DeptDO> depts =deptService.getDeptList(rdChildDeptIds);
+        // key队伍id      value队伍所属项目部id
+        Map<Long, Long> teamProjectPair = new HashMap<>();
+        Set<Long> projectDeptIds = new HashSet<>();
+        Map<Long, String> projectDeptPair = new HashMap<>();
+        if (CollUtil.isNotEmpty(depts)) {
+            depts.forEach(dept -> {
+                if (dept.getName().contains("项目部")) {
+                    projectDeptIds.add(dept.getId());
+                    projectDeptPair.put(dept.getId(), dept.getName());
+                } else {
+                    teamProjectPair.put(dept.getId(), dept.getParentId());
+                }
+            });
+
+        }
+        // 查询所有瑞都日报
+        IotRdDailyReportPageReqVO reqVO = new IotRdDailyReportPageReqVO();
+        List<IotRdDailyReportDO> dailyReports = iotRdDailyReportMapper.dailyReports(reqVO);
+
+        return List.of();
+    }
+
 }