Ver Fonte

pms 瑞都 瑞鹰 生产动态拆分 代码初始化

zhangcl há 6 dias atrás
pai
commit
1eeb5ffd52
25 ficheiros alterados com 1211 adições e 0 exclusões
  1. 2 0
      yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/ErrorCodeConstant.java
  2. 15 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreport/IotRdDailyReportController.java
  3. 8 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreport/vo/IotRdDailyReportRespVO.java
  4. 7 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreport/vo/IotRdDailyReportSaveReqVO.java
  5. 93 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreportdetail/IotRdDailyReportDetailController.java
  6. 74 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreportdetail/vo/IotRdDailyReportDetailPageReqVO.java
  7. 85 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreportdetail/vo/IotRdDailyReportDetailRespVO.java
  8. 61 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreportdetail/vo/IotRdDailyReportDetailSaveReqVO.java
  9. 4 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrydailyreport/vo/IotRyDailyReportRespVO.java
  10. 3 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrydailyreport/vo/IotRyDailyReportSaveReqVO.java
  11. 93 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrydailyreportdetail/IotRyDailyReportDetailController.java
  12. 71 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrydailyreportdetail/vo/IotRyDailyReportDetailPageReqVO.java
  13. 81 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrydailyreportdetail/vo/IotRyDailyReportDetailRespVO.java
  14. 58 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrydailyreportdetail/vo/IotRyDailyReportDetailSaveReqVO.java
  15. 4 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotrddailyreport/IotRdDailyReportDO.java
  16. 94 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotrddailyreportdetail/IotRdDailyReportDetailDO.java
  17. 4 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotrydailyreport/IotRyDailyReportDO.java
  18. 90 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotrydailyreportdetail/IotRyDailyReportDetailDO.java
  19. 39 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotrddailyreportdetail/IotRdDailyReportDetailMapper.java
  20. 38 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotrydailyreportdetail/IotRyDailyReportDetailMapper.java
  21. 34 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrddailyreport/IotRdDailyReportServiceImpl.java
  22. 55 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrddailyreportdetail/IotRdDailyReportDetailService.java
  23. 72 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrddailyreportdetail/IotRdDailyReportDetailServiceImpl.java
  24. 55 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrydailyreportdetail/IotRyDailyReportDetailService.java
  25. 71 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrydailyreportdetail/IotRyDailyReportDetailServiceImpl.java

+ 2 - 0
yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/ErrorCodeConstant.java

@@ -100,4 +100,6 @@ public interface ErrorCodeConstant{
     ErrorCode IOT_CAR_ZHBD_NOT_EXISTS = new ErrorCode(275, "中航北斗车辆表不存在");
     ErrorCode IOT_DAILY_REPORT_FUEL_NOT_EXISTS = new ErrorCode(276, "日报-油耗不存在");
     ErrorCode IOT_AUTHENTICATION_NOT_EXISTS = new ErrorCode(277, "认证不存在");
+    ErrorCode IOT_RD_DAILY_REPORT_DETAIL_NOT_EXISTS = new ErrorCode(278, "瑞都日报明细(生产动态拆分)不存在");
+    ErrorCode IOT_RY_DAILY_REPORT_DETAIL_NOT_EXISTS = new ErrorCode(279, "瑞鹰日报明细(生产动态拆分)不存在");
 }

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

@@ -21,6 +21,8 @@ import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProject
 import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskPlatformVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.*;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreportdetail.vo.IotRdDailyReportDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreportdetail.vo.IotRdDailyReportDetailRespVO;
 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;
@@ -33,9 +35,11 @@ import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojectinfo.IotProjectInfoD
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttask.IotProjectTaskDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttaskattrs.IotTaskAttrModelProperty;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotrddailyreport.IotRdDailyReportDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotrddailyreportdetail.IotRdDailyReportDetailDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotattachment.IotAttachmentMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotcarzhbd.IotCarZhbdMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotrddailyreport.IotRdDailyReportMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.iotrddailyreportdetail.IotRdDailyReportDetailMapper;
 import cn.iocoder.yudao.module.pms.enums.AttachmentCategoryEnum;
 import cn.iocoder.yudao.module.pms.enums.AttachmentTypeEnum;
 import cn.iocoder.yudao.module.pms.job.IotDeviceCarFuelVO;
@@ -126,6 +130,8 @@ public class IotRdDailyReportController {
     private IotAttachmentMapper iotAttachmentMapper;
     @Resource
     private IotRdDailyReportMapper iotRdDailyReportMapper;
+    @Resource
+    private IotRdDailyReportDetailMapper iotRdDailyReportDetailMapper;
 
     @PostMapping("/create")
     @Operation(summary = "创建瑞都日报")
@@ -184,6 +190,15 @@ public class IotRdDailyReportController {
      */
     private IotRdDailyReportRespVO buildDailyReport(IotRdDailyReportDO dailyReport) {
         IotRdDailyReportRespVO dailyReportVO = BeanUtils.toBean(dailyReport, IotRdDailyReportRespVO.class);
+        // 查询日报生产动态明细
+        IotRdDailyReportDetailPageReqVO detailReqVO = new IotRdDailyReportDetailPageReqVO();
+        detailReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        PageResult<IotRdDailyReportDetailDO> reportDetailPage = iotRdDailyReportDetailMapper.selectPage(detailReqVO);
+        List<IotRdDailyReportDetailDO> reportDetails = reportDetailPage.getList();
+        if (CollUtil.isNotEmpty(reportDetails)) {
+            List<IotRdDailyReportDetailRespVO> dailyReportDetails = BeanUtils.toBean(reportDetails, IotRdDailyReportDetailRespVO.class);
+            dailyReportVO.setReportDetails(dailyReportDetails);
+        }
         // 查询施工工艺集合
         Set<Long> techniqueIds = dailyReportVO.getTechniqueIds();
         // List<DictDataDO> techniques = dictDataService.getDictDataListByDictType("rq_iot_project_technology_rd");

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

@@ -1,6 +1,7 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo;
 
 import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskPlatformVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreportdetail.vo.IotRdDailyReportDetailRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceSimpleRespVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotattachment.IotAttachmentDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotdailyreportattrs.IotDailyReportAttrsDO;
@@ -189,6 +190,10 @@ public class IotRdDailyReportRespVO {
     @ExcelProperty("下步工作计划")
     private String nextPlan;
 
+    @Schema(description = "施工简报")
+    @ExcelProperty("施工简报")
+    private String constructionBrief;
+
     @Schema(description = "施工状态(动迁上井/动迁下井/施工准备/施工...)", example = "1")
     private String rdStatus;
 
@@ -336,4 +341,7 @@ public class IotRdDailyReportRespVO {
 
     @Schema(description = "非生产时效")
     private BigDecimal nonProductionRate;
+
+    @Schema(description = "生产动态明细")
+    private List<IotRdDailyReportDetailRespVO> reportDetails;
 }

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

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo;
 
 import cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo.IotAttachmentSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdailyreportfuel.vo.IotDailyReportFuelSaveReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreportdetail.vo.IotRdDailyReportDetailSaveReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttaskattrs.IotTaskAttrModelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -130,6 +131,9 @@ public class IotRdDailyReportSaveReqVO {
     @Schema(description = "下步工作计划")
     private String nextPlan;
 
+    @Schema(description = "施工简报")
+    private String constructionBrief;
+
     @Schema(description = "施工状态(动迁上井/动迁下井/施工准备/施工...)", example = "1")
     private String rdStatus;
 
@@ -183,4 +187,7 @@ public class IotRdDailyReportSaveReqVO {
 
     @Schema(description = "非生产时间标识 Y 修改非生产时间后不再审批")
     private String nonProduct;
+
+    @Schema(description = "生产动态明细")
+    private List<IotRdDailyReportDetailSaveReqVO> reportDetails;
 }

+ 93 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreportdetail/IotRdDailyReportDetailController.java

@@ -0,0 +1,93 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreportdetail;
+
+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;
+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.iotrddailyreportdetail.vo.IotRdDailyReportDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreportdetail.vo.IotRdDailyReportDetailRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreportdetail.vo.IotRdDailyReportDetailSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotrddailyreportdetail.IotRdDailyReportDetailDO;
+import cn.iocoder.yudao.module.pms.service.iotrddailyreportdetail.IotRdDailyReportDetailService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 瑞都日报明细(生产动态拆分)")
+@RestController
+@RequestMapping("/pms/iot-rd-daily-report-detail")
+@Validated
+public class IotRdDailyReportDetailController {
+
+    @Resource
+    private IotRdDailyReportDetailService iotRdDailyReportDetailService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建瑞都日报明细(生产动态拆分)")
+    @PreAuthorize("@ss.hasPermission('pms:iot-rd-daily-report-detail:create')")
+    public CommonResult<Long> createIotRdDailyReportDetail(@Valid @RequestBody IotRdDailyReportDetailSaveReqVO createReqVO) {
+        return success(iotRdDailyReportDetailService.createIotRdDailyReportDetail(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新瑞都日报明细(生产动态拆分)")
+    @PreAuthorize("@ss.hasPermission('pms:iot-rd-daily-report-detail:update')")
+    public CommonResult<Boolean> updateIotRdDailyReportDetail(@Valid @RequestBody IotRdDailyReportDetailSaveReqVO updateReqVO) {
+        iotRdDailyReportDetailService.updateIotRdDailyReportDetail(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除瑞都日报明细(生产动态拆分)")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('pms:iot-rd-daily-report-detail:delete')")
+    public CommonResult<Boolean> deleteIotRdDailyReportDetail(@RequestParam("id") Long id) {
+        iotRdDailyReportDetailService.deleteIotRdDailyReportDetail(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得瑞都日报明细(生产动态拆分)")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('pms:iot-rd-daily-report-detail:query')")
+    public CommonResult<IotRdDailyReportDetailRespVO> getIotRdDailyReportDetail(@RequestParam("id") Long id) {
+        IotRdDailyReportDetailDO iotRdDailyReportDetail = iotRdDailyReportDetailService.getIotRdDailyReportDetail(id);
+        return success(BeanUtils.toBean(iotRdDailyReportDetail, IotRdDailyReportDetailRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得瑞都日报明细(生产动态拆分)分页")
+    @PreAuthorize("@ss.hasPermission('pms:iot-rd-daily-report-detail:query')")
+    public CommonResult<PageResult<IotRdDailyReportDetailRespVO>> getIotRdDailyReportDetailPage(@Valid IotRdDailyReportDetailPageReqVO pageReqVO) {
+        PageResult<IotRdDailyReportDetailDO> pageResult = iotRdDailyReportDetailService.getIotRdDailyReportDetailPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, IotRdDailyReportDetailRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出瑞都日报明细(生产动态拆分) Excel")
+    @PreAuthorize("@ss.hasPermission('pms:iot-rd-daily-report-detail:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportIotRdDailyReportDetailExcel(@Valid IotRdDailyReportDetailPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<IotRdDailyReportDetailDO> list = iotRdDailyReportDetailService.getIotRdDailyReportDetailPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "瑞都日报明细(生产动态拆分).xls", "数据", IotRdDailyReportDetailRespVO.class,
+                        BeanUtils.toBean(list, IotRdDailyReportDetailRespVO.class));
+    }
+
+}

+ 74 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreportdetail/vo/IotRdDailyReportDetailPageReqVO.java

@@ -0,0 +1,74 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreportdetail.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 瑞都日报明细(生产动态拆分)分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class IotRdDailyReportDetailPageReqVO extends PageParam {
+
+    @Schema(description = "施工队伍id", example = "21088")
+    private Long deptId;
+
+    @Schema(description = "项目id", example = "24380")
+    private Long projectId;
+
+    @Schema(description = "任务id", example = "19737")
+    private Long taskId;
+
+    @Schema(description = "日报id", example = "25536")
+    private Long reportId;
+
+    @Schema(description = "日报日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] reportDate;
+
+    @Schema(description = "起始时间段")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalTime[] startTime;
+
+    @Schema(description = "结束时间段")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalTime[] endTime;
+
+    @Schema(description = "时长(H)")
+    private BigDecimal duration;
+
+    @Schema(description = "当日施工详情")
+    private String constructionDetail;
+
+    @Schema(description = "工况")
+    private String currentOperation;
+
+    @Schema(description = "施工状态(动迁上井/动迁下井/施工准备/施工...)", example = "2")
+    private String rdStatus;
+
+    @Schema(description = "工作量")
+    private String extProperty;
+
+    @Schema(description = "排序值")
+    private Integer sort;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+    @Schema(description = "状态(0启用 1禁用)", example = "1")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 85 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreportdetail/vo/IotRdDailyReportDetailRespVO.java

@@ -0,0 +1,85 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreportdetail.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.time.LocalDateTime;
+import java.time.LocalTime;
+
+@Schema(description = "管理后台 - 瑞都日报明细(生产动态拆分) Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IotRdDailyReportDetailRespVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25492")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "施工队伍id", example = "21088")
+    @ExcelProperty("施工队伍id")
+    private Long deptId;
+
+    @Schema(description = "项目id", example = "24380")
+    @ExcelProperty("项目id")
+    private Long projectId;
+
+    @Schema(description = "任务id", example = "19737")
+    @ExcelProperty("任务id")
+    private Long taskId;
+
+    @Schema(description = "日报id", example = "25536")
+    @ExcelProperty("日报id")
+    private Long reportId;
+
+    @Schema(description = "日报日期")
+    @ExcelProperty("日报日期")
+    private LocalDateTime reportDate;
+
+    @Schema(description = "起始时间段")
+    @ExcelProperty("起始时间段")
+    private LocalTime startTime;
+
+    @Schema(description = "结束时间段")
+    @ExcelProperty("结束时间段")
+    private LocalTime endTime;
+
+    @Schema(description = "时长(H)")
+    @ExcelProperty("时长(H)")
+    private BigDecimal duration;
+
+    @Schema(description = "当日施工详情")
+    @ExcelProperty("当日施工详情")
+    private String constructionDetail;
+
+    @Schema(description = "工况")
+    @ExcelProperty("工况")
+    private String currentOperation;
+
+    @Schema(description = "施工状态(动迁上井/动迁下井/施工准备/施工...)", example = "2")
+    @ExcelProperty("施工状态(动迁上井/动迁下井/施工准备/施工...)")
+    private String rdStatus;
+
+    @Schema(description = "工作量")
+    @ExcelProperty("工作量")
+    private String extProperty;
+
+    @Schema(description = "排序值")
+    @ExcelProperty("排序值")
+    private Integer sort;
+
+    @Schema(description = "备注", example = "随便")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "状态(0启用 1禁用)", example = "1")
+    @ExcelProperty("状态(0启用 1禁用)")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 61 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrddailyreportdetail/vo/IotRdDailyReportDetailSaveReqVO.java

@@ -0,0 +1,61 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreportdetail.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 瑞都日报明细(生产动态拆分)新增/修改 Request VO")
+@Data
+public class IotRdDailyReportDetailSaveReqVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "25492")
+    private Long id;
+
+    @Schema(description = "施工队伍id", example = "21088")
+    private Long deptId;
+
+    @Schema(description = "项目id", example = "24380")
+    private Long projectId;
+
+    @Schema(description = "任务id", example = "19737")
+    private Long taskId;
+
+    @Schema(description = "日报id", example = "25536")
+    private Long reportId;
+
+    @Schema(description = "日报日期")
+    private LocalDateTime reportDate;
+
+    @Schema(description = "起始时间段")
+    private String startTime;
+
+    @Schema(description = "结束时间段")
+    private String endTime;
+
+    @Schema(description = "时长(H)")
+    private BigDecimal duration;
+
+    @Schema(description = "当日施工详情")
+    private String constructionDetail;
+
+    @Schema(description = "工况")
+    private String currentOperation;
+
+    @Schema(description = "施工状态(动迁上井/动迁下井/施工准备/施工...)", example = "2")
+    private String rdStatus;
+
+    @Schema(description = "工作量")
+    private String extProperty;
+
+    @Schema(description = "排序值")
+    private Integer sort;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+    @Schema(description = "状态(0启用 1禁用)", example = "1")
+    private Integer status;
+
+}

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

@@ -169,6 +169,10 @@ public class IotRyDailyReportRespVO {
     @ExcelProperty("下步工作计划")
     private String nextPlan;
 
+    @Schema(description = "施工简报")
+    @ExcelProperty("施工简报")
+    private String constructionBrief;
+
     @Schema(description = "施工状态(动迁 准备 施工 完工)", example = "1")
     private String rigStatus;
 

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

@@ -122,6 +122,9 @@ public class IotRyDailyReportSaveReqVO {
     @Schema(description = "下步工作计划 下部工序")
     private String nextPlan;
 
+    @Schema(description = "施工简报")
+    private String constructionBrief;
+
     @Schema(description = "施工状态(动迁 准备 施工 完工)", example = "1")
     private String rigStatus;
 

+ 93 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrydailyreportdetail/IotRyDailyReportDetailController.java

@@ -0,0 +1,93 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreportdetail;
+
+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;
+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.iotrydailyreportdetail.vo.IotRyDailyReportDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreportdetail.vo.IotRyDailyReportDetailRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreportdetail.vo.IotRyDailyReportDetailSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotrydailyreportdetail.IotRyDailyReportDetailDO;
+import cn.iocoder.yudao.module.pms.service.iotrydailyreportdetail.IotRyDailyReportDetailService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 瑞鹰日报明细(生产动态拆分)")
+@RestController
+@RequestMapping("/pms/iot-ry-daily-report-detail")
+@Validated
+public class IotRyDailyReportDetailController {
+
+    @Resource
+    private IotRyDailyReportDetailService iotRyDailyReportDetailService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建瑞鹰日报明细(生产动态拆分)")
+    @PreAuthorize("@ss.hasPermission('pms:iot-ry-daily-report-detail:create')")
+    public CommonResult<Long> createIotRyDailyReportDetail(@Valid @RequestBody IotRyDailyReportDetailSaveReqVO createReqVO) {
+        return success(iotRyDailyReportDetailService.createIotRyDailyReportDetail(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新瑞鹰日报明细(生产动态拆分)")
+    @PreAuthorize("@ss.hasPermission('pms:iot-ry-daily-report-detail:update')")
+    public CommonResult<Boolean> updateIotRyDailyReportDetail(@Valid @RequestBody IotRyDailyReportDetailSaveReqVO updateReqVO) {
+        iotRyDailyReportDetailService.updateIotRyDailyReportDetail(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除瑞鹰日报明细(生产动态拆分)")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('pms:iot-ry-daily-report-detail:delete')")
+    public CommonResult<Boolean> deleteIotRyDailyReportDetail(@RequestParam("id") Long id) {
+        iotRyDailyReportDetailService.deleteIotRyDailyReportDetail(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得瑞鹰日报明细(生产动态拆分)")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('pms:iot-ry-daily-report-detail:query')")
+    public CommonResult<IotRyDailyReportDetailRespVO> getIotRyDailyReportDetail(@RequestParam("id") Long id) {
+        IotRyDailyReportDetailDO iotRyDailyReportDetail = iotRyDailyReportDetailService.getIotRyDailyReportDetail(id);
+        return success(BeanUtils.toBean(iotRyDailyReportDetail, IotRyDailyReportDetailRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得瑞鹰日报明细(生产动态拆分)分页")
+    @PreAuthorize("@ss.hasPermission('pms:iot-ry-daily-report-detail:query')")
+    public CommonResult<PageResult<IotRyDailyReportDetailRespVO>> getIotRyDailyReportDetailPage(@Valid IotRyDailyReportDetailPageReqVO pageReqVO) {
+        PageResult<IotRyDailyReportDetailDO> pageResult = iotRyDailyReportDetailService.getIotRyDailyReportDetailPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, IotRyDailyReportDetailRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出瑞鹰日报明细(生产动态拆分) Excel")
+    @PreAuthorize("@ss.hasPermission('pms:iot-ry-daily-report-detail:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportIotRyDailyReportDetailExcel(@Valid IotRyDailyReportDetailPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<IotRyDailyReportDetailDO> list = iotRyDailyReportDetailService.getIotRyDailyReportDetailPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "瑞鹰日报明细(生产动态拆分).xls", "数据", IotRyDailyReportDetailRespVO.class,
+                        BeanUtils.toBean(list, IotRyDailyReportDetailRespVO.class));
+    }
+
+}

+ 71 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrydailyreportdetail/vo/IotRyDailyReportDetailPageReqVO.java

@@ -0,0 +1,71 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreportdetail.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 瑞鹰日报明细(生产动态拆分)分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class IotRyDailyReportDetailPageReqVO extends PageParam {
+
+    @Schema(description = "施工队伍id", example = "30389")
+    private Long deptId;
+
+    @Schema(description = "项目id", example = "21928")
+    private Long projectId;
+
+    @Schema(description = "任务id", example = "1316")
+    private Long taskId;
+
+    @Schema(description = "日报id", example = "7685")
+    private Long reportId;
+
+    @Schema(description = "日报日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] reportDate;
+
+    @Schema(description = "起始时间段")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalTime[] startTime;
+
+    @Schema(description = "结束时间段")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalTime[] endTime;
+
+    @Schema(description = "时长(H)")
+    private BigDecimal duration;
+
+    @Schema(description = "当前井深(m)")
+    private BigDecimal currentDepth;
+
+    @Schema(description = "当日施工详情")
+    private String constructionDetail;
+
+    @Schema(description = "工况")
+    private String currentOperation;
+
+    @Schema(description = "排序值")
+    private Integer sort;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+    @Schema(description = "状态(0启用 1禁用)", example = "2")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 81 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrydailyreportdetail/vo/IotRyDailyReportDetailRespVO.java

@@ -0,0 +1,81 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreportdetail.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.time.LocalDateTime;
+import java.time.LocalTime;
+
+@Schema(description = "管理后台 - 瑞鹰日报明细(生产动态拆分) Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IotRyDailyReportDetailRespVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28354")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "施工队伍id", example = "30389")
+    @ExcelProperty("施工队伍id")
+    private Long deptId;
+
+    @Schema(description = "项目id", example = "21928")
+    @ExcelProperty("项目id")
+    private Long projectId;
+
+    @Schema(description = "任务id", example = "1316")
+    @ExcelProperty("任务id")
+    private Long taskId;
+
+    @Schema(description = "日报id", example = "7685")
+    @ExcelProperty("日报id")
+    private Long reportId;
+
+    @Schema(description = "日报日期")
+    @ExcelProperty("日报日期")
+    private LocalDateTime reportDate;
+
+    @Schema(description = "起始时间段")
+    @ExcelProperty("起始时间段")
+    private LocalTime startTime;
+
+    @Schema(description = "结束时间段")
+    @ExcelProperty("结束时间段")
+    private LocalTime endTime;
+
+    @Schema(description = "时长(H)")
+    @ExcelProperty("时长(H)")
+    private BigDecimal duration;
+
+    @Schema(description = "当前井深(m)")
+    @ExcelProperty("当前井深(m)")
+    private BigDecimal currentDepth;
+
+    @Schema(description = "当日施工详情")
+    @ExcelProperty("当日施工详情")
+    private String constructionDetail;
+
+    @Schema(description = "工况")
+    @ExcelProperty("工况")
+    private String currentOperation;
+
+    @Schema(description = "排序值")
+    @ExcelProperty("排序值")
+    private Integer sort;
+
+    @Schema(description = "备注", example = "随便")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "状态(0启用 1禁用)", example = "2")
+    @ExcelProperty("状态(0启用 1禁用)")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 58 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotrydailyreportdetail/vo/IotRyDailyReportDetailSaveReqVO.java

@@ -0,0 +1,58 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreportdetail.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 瑞鹰日报明细(生产动态拆分)新增/修改 Request VO")
+@Data
+public class IotRyDailyReportDetailSaveReqVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28354")
+    private Long id;
+
+    @Schema(description = "施工队伍id", example = "30389")
+    private Long deptId;
+
+    @Schema(description = "项目id", example = "21928")
+    private Long projectId;
+
+    @Schema(description = "任务id", example = "1316")
+    private Long taskId;
+
+    @Schema(description = "日报id", example = "7685")
+    private Long reportId;
+
+    @Schema(description = "日报日期")
+    private LocalDateTime reportDate;
+
+    @Schema(description = "起始时间段")
+    private String startTime;
+
+    @Schema(description = "结束时间段")
+    private String endTime;
+
+    @Schema(description = "时长(H)")
+    private BigDecimal duration;
+
+    @Schema(description = "当前井深(m)")
+    private BigDecimal currentDepth;
+
+    @Schema(description = "当日施工详情")
+    private String constructionDetail;
+
+    @Schema(description = "工况")
+    private String currentOperation;
+
+    @Schema(description = "排序值")
+    private Integer sort;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+    @Schema(description = "状态(0启用 1禁用)", example = "2")
+    private Integer status;
+
+}

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

@@ -212,6 +212,10 @@ public class IotRdDailyReportDO extends BaseDO {
      * 下步工作计划
      */
     private String nextPlan;
+    /**
+     * 施工简报
+     */
+    private String constructionBrief;
     /**
      * 施工状态(动迁上井/动迁下井/施工准备/施工...)
      */

+ 94 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotrddailyreportdetail/IotRdDailyReportDetailDO.java

@@ -0,0 +1,94 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.iotrddailyreportdetail;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+
+/**
+ * 瑞都日报明细(生产动态拆分) DO
+ *
+ * @author ruiqi
+ */
+@TableName("rq_iot_rd_daily_report_detail")
+@KeySequence("rq_iot_rd_daily_report_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IotRdDailyReportDetailDO extends BaseDO {
+
+    /**
+     * 主键id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 施工队伍id
+     */
+    private Long deptId;
+    /**
+     * 项目id
+     */
+    private Long projectId;
+    /**
+     * 任务id
+     */
+    private Long taskId;
+    /**
+     * 日报id
+     */
+    private Long reportId;
+    /**
+     * 日报日期
+     */
+    private LocalDateTime reportDate;
+    /**
+     * 起始时间段
+     */
+    private LocalTime startTime;
+    /**
+     * 结束时间段
+     */
+    private LocalTime endTime;
+    /**
+     * 时长(H)
+     */
+    private BigDecimal duration;
+    /**
+     * 当日施工详情
+     */
+    private String constructionDetail;
+    /**
+     * 工况
+     */
+    private String currentOperation;
+    /**
+     * 施工状态(动迁上井/动迁下井/施工准备/施工...)
+     */
+    private String rdStatus;
+    /**
+     * 工作量
+     */
+    private String extProperty;
+    /**
+     * 排序值
+     */
+    private Integer sort;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 状态(0启用 1禁用)
+     */
+    private Integer status;
+
+}

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

@@ -188,6 +188,10 @@ public class IotRyDailyReportDO extends BaseDO {
      * 下步工作计划 下部工序
      */
     private String nextPlan;
+    /**
+     * 施工简报
+     */
+    private String constructionBrief;
     /**
      * 施工状态(动迁 准备 施工 完工)
      */

+ 90 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotrydailyreportdetail/IotRyDailyReportDetailDO.java

@@ -0,0 +1,90 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.iotrydailyreportdetail;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+
+/**
+ * 瑞鹰日报明细(生产动态拆分) DO
+ *
+ * @author ruiqi
+ */
+@TableName("rq_iot_ry_daily_report_detail")
+@KeySequence("rq_iot_ry_daily_report_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IotRyDailyReportDetailDO extends BaseDO {
+
+    /**
+     * 主键id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 施工队伍id
+     */
+    private Long deptId;
+    /**
+     * 项目id
+     */
+    private Long projectId;
+    /**
+     * 任务id
+     */
+    private Long taskId;
+    /**
+     * 日报id
+     */
+    private Long reportId;
+    /**
+     * 日报日期
+     */
+    private LocalDateTime reportDate;
+    /**
+     * 起始时间段
+     */
+    private LocalTime startTime;
+    /**
+     * 结束时间段
+     */
+    private LocalTime endTime;
+    /**
+     * 时长(H)
+     */
+    private BigDecimal duration;
+    /**
+     * 当前井深(m)
+     */
+    private BigDecimal currentDepth;
+    /**
+     * 当日施工详情
+     */
+    private String constructionDetail;
+    /**
+     * 工况
+     */
+    private String currentOperation;
+    /**
+     * 排序值
+     */
+    private Integer sort;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 状态(0启用 1禁用)
+     */
+    private Integer status;
+
+}

+ 39 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotrddailyreportdetail/IotRdDailyReportDetailMapper.java

@@ -0,0 +1,39 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.iotrddailyreportdetail;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreportdetail.vo.IotRdDailyReportDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotrddailyreportdetail.IotRdDailyReportDetailDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 瑞都日报明细(生产动态拆分) Mapper
+ *
+ * @author ruiqi
+ */
+@Mapper
+public interface IotRdDailyReportDetailMapper extends BaseMapperX<IotRdDailyReportDetailDO> {
+
+    default PageResult<IotRdDailyReportDetailDO> selectPage(IotRdDailyReportDetailPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotRdDailyReportDetailDO>()
+                .eqIfPresent(IotRdDailyReportDetailDO::getDeptId, reqVO.getDeptId())
+                .eqIfPresent(IotRdDailyReportDetailDO::getProjectId, reqVO.getProjectId())
+                .eqIfPresent(IotRdDailyReportDetailDO::getTaskId, reqVO.getTaskId())
+                .eqIfPresent(IotRdDailyReportDetailDO::getReportId, reqVO.getReportId())
+                .betweenIfPresent(IotRdDailyReportDetailDO::getReportDate, reqVO.getReportDate())
+                .betweenIfPresent(IotRdDailyReportDetailDO::getStartTime, reqVO.getStartTime())
+                .betweenIfPresent(IotRdDailyReportDetailDO::getEndTime, reqVO.getEndTime())
+                .eqIfPresent(IotRdDailyReportDetailDO::getDuration, reqVO.getDuration())
+                .eqIfPresent(IotRdDailyReportDetailDO::getConstructionDetail, reqVO.getConstructionDetail())
+                .eqIfPresent(IotRdDailyReportDetailDO::getCurrentOperation, reqVO.getCurrentOperation())
+                .eqIfPresent(IotRdDailyReportDetailDO::getRdStatus, reqVO.getRdStatus())
+                .eqIfPresent(IotRdDailyReportDetailDO::getExtProperty, reqVO.getExtProperty())
+                .eqIfPresent(IotRdDailyReportDetailDO::getSort, reqVO.getSort())
+                .eqIfPresent(IotRdDailyReportDetailDO::getRemark, reqVO.getRemark())
+                .eqIfPresent(IotRdDailyReportDetailDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(IotRdDailyReportDetailDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(IotRdDailyReportDetailDO::getId));
+    }
+
+}

+ 38 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotrydailyreportdetail/IotRyDailyReportDetailMapper.java

@@ -0,0 +1,38 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.iotrydailyreportdetail;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreportdetail.vo.IotRyDailyReportDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotrydailyreportdetail.IotRyDailyReportDetailDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 瑞鹰日报明细(生产动态拆分) Mapper
+ *
+ * @author ruiqi
+ */
+@Mapper
+public interface IotRyDailyReportDetailMapper extends BaseMapperX<IotRyDailyReportDetailDO> {
+
+    default PageResult<IotRyDailyReportDetailDO> selectPage(IotRyDailyReportDetailPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotRyDailyReportDetailDO>()
+                .eqIfPresent(IotRyDailyReportDetailDO::getDeptId, reqVO.getDeptId())
+                .eqIfPresent(IotRyDailyReportDetailDO::getProjectId, reqVO.getProjectId())
+                .eqIfPresent(IotRyDailyReportDetailDO::getTaskId, reqVO.getTaskId())
+                .eqIfPresent(IotRyDailyReportDetailDO::getReportId, reqVO.getReportId())
+                .betweenIfPresent(IotRyDailyReportDetailDO::getReportDate, reqVO.getReportDate())
+                .betweenIfPresent(IotRyDailyReportDetailDO::getStartTime, reqVO.getStartTime())
+                .betweenIfPresent(IotRyDailyReportDetailDO::getEndTime, reqVO.getEndTime())
+                .eqIfPresent(IotRyDailyReportDetailDO::getDuration, reqVO.getDuration())
+                .eqIfPresent(IotRyDailyReportDetailDO::getCurrentDepth, reqVO.getCurrentDepth())
+                .eqIfPresent(IotRyDailyReportDetailDO::getConstructionDetail, reqVO.getConstructionDetail())
+                .eqIfPresent(IotRyDailyReportDetailDO::getCurrentOperation, reqVO.getCurrentOperation())
+                .eqIfPresent(IotRyDailyReportDetailDO::getSort, reqVO.getSort())
+                .eqIfPresent(IotRyDailyReportDetailDO::getRemark, reqVO.getRemark())
+                .eqIfPresent(IotRyDailyReportDetailDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(IotRyDailyReportDetailDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(IotRyDailyReportDetailDO::getId));
+    }
+
+}

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

@@ -13,6 +13,7 @@ import cn.iocoder.yudao.module.pms.controller.admin.iotdailyreportfuel.vo.IotDai
 import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProjectInfoPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreport.vo.*;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreportdetail.vo.IotRdDailyReportDetailSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotProductClassifyListReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
@@ -23,6 +24,7 @@ import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojectinfo.IotProjectInfoD
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttask.IotProjectTaskDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttaskattrs.IotTaskAttrModelProperty;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotrddailyreport.IotRdDailyReportDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotrddailyreportdetail.IotRdDailyReportDetailDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.IotDeviceMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.IotProductClassifyMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotattachment.IotAttachmentMapper;
@@ -30,6 +32,7 @@ import cn.iocoder.yudao.module.pms.dal.mysql.iotdailyreportfuel.IotDailyReportFu
 import cn.iocoder.yudao.module.pms.dal.mysql.iotprojectinfo.IotProjectInfoMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotprojecttask.IotProjectTaskMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotrddailyreport.IotRdDailyReportMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.iotrddailyreportdetail.IotRdDailyReportDetailMapper;
 import cn.iocoder.yudao.module.pms.enums.AttachmentCategoryEnum;
 import cn.iocoder.yudao.module.pms.enums.AttachmentTypeEnum;
 import cn.iocoder.yudao.module.pms.message.PmsMessage;
@@ -113,6 +116,8 @@ public class IotRdDailyReportServiceImpl implements IotRdDailyReportService {
     private IotDailyReportFuelMapper iotDailyReportFuelMapper;
     @Resource
     private IotProductClassifyMapper iotProductClassifyMapper;
+    @Resource
+    private IotRdDailyReportDetailMapper iotRdDailyReportDetailMapper;
 
     @Override
     public Long createIotRdDailyReport(IotRdDailyReportSaveReqVO createReqVO) {
@@ -149,6 +154,35 @@ public class IotRdDailyReportServiceImpl implements IotRdDailyReportService {
             updateObj.setProcessInstanceId("2");
         }
         iotRdDailyReportMapper.updateById(updateObj);
+        // 保存生产动态明细
+        if (CollUtil.isNotEmpty(updateReqVO.getReportDetails())) {
+            // 先删除明细 再新增
+            List<IotRdDailyReportDetailSaveReqVO> reportDetails = updateReqVO.getReportDetails();
+            int count = iotRdDailyReportDetailMapper.deleteByMap(ImmutableMap.of(
+                    "report_id", updateObj.getId()
+            ));
+            // 新增生产动态明细
+            List<IotRdDailyReportDetailDO> reportDOs = new ArrayList<>();
+            reportDetails.forEach(detail -> {
+                String detailEndTime = detail.getEndTime();
+                if (StrUtil.isNotBlank(detailEndTime)) {
+                    String[] timeAttr = detailEndTime.split(":");
+                    if ("24".equals(timeAttr[0])) {
+                        detail.setEndTime("23:59:59");
+                    }
+                }
+                IotRdDailyReportDetailDO tempDetail = BeanUtils.toBean(detail, IotRdDailyReportDetailDO.class);
+                tempDetail.setDeptId(updateObj.getDeptId());
+                tempDetail.setTaskId(updateObj.getTaskId());
+                tempDetail.setReportId(updateObj.getId());
+                tempDetail.setReportDate(dailyReport.getCreateTime());
+                reportDOs.add(tempDetail);
+            });
+            // 插入日报明细记录
+            if (CollUtil.isNotEmpty(reportDOs)) {
+                iotRdDailyReportDetailMapper.insertBatch(reportDOs);
+            }
+        }
         // 保存油耗信息
         if (CollUtil.isNotEmpty(updateReqVO.getReportFuels())) {
             // 新增 or 更新 油耗子表数据

+ 55 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrddailyreportdetail/IotRdDailyReportDetailService.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.pms.service.iotrddailyreportdetail;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreportdetail.vo.IotRdDailyReportDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreportdetail.vo.IotRdDailyReportDetailSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotrddailyreportdetail.IotRdDailyReportDetailDO;
+
+import javax.validation.Valid;
+
+/**
+ * 瑞都日报明细(生产动态拆分) Service 接口
+ *
+ * @author ruiqi
+ */
+public interface IotRdDailyReportDetailService {
+
+    /**
+     * 创建瑞都日报明细(生产动态拆分)
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createIotRdDailyReportDetail(@Valid IotRdDailyReportDetailSaveReqVO createReqVO);
+
+    /**
+     * 更新瑞都日报明细(生产动态拆分)
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateIotRdDailyReportDetail(@Valid IotRdDailyReportDetailSaveReqVO updateReqVO);
+
+    /**
+     * 删除瑞都日报明细(生产动态拆分)
+     *
+     * @param id 编号
+     */
+    void deleteIotRdDailyReportDetail(Long id);
+
+    /**
+     * 获得瑞都日报明细(生产动态拆分)
+     *
+     * @param id 编号
+     * @return 瑞都日报明细(生产动态拆分)
+     */
+    IotRdDailyReportDetailDO getIotRdDailyReportDetail(Long id);
+
+    /**
+     * 获得瑞都日报明细(生产动态拆分)分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 瑞都日报明细(生产动态拆分)分页
+     */
+    PageResult<IotRdDailyReportDetailDO> getIotRdDailyReportDetailPage(IotRdDailyReportDetailPageReqVO pageReqVO);
+
+}

+ 72 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrddailyreportdetail/IotRdDailyReportDetailServiceImpl.java

@@ -0,0 +1,72 @@
+package cn.iocoder.yudao.module.pms.service.iotrddailyreportdetail;
+
+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.iotrddailyreportdetail.vo.IotRdDailyReportDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrddailyreportdetail.vo.IotRdDailyReportDetailSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotrddailyreportdetail.IotRdDailyReportDetailDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.iotrddailyreportdetail.IotRdDailyReportDetailMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_RD_DAILY_REPORT_DETAIL_NOT_EXISTS;
+
+
+/**
+ * 瑞都日报明细(生产动态拆分) Service 实现类
+ *
+ * @author ruiqi
+ */
+@Service
+@Validated
+public class IotRdDailyReportDetailServiceImpl implements IotRdDailyReportDetailService {
+
+    @Resource
+    private IotRdDailyReportDetailMapper iotRdDailyReportDetailMapper;
+
+    @Override
+    public Long createIotRdDailyReportDetail(IotRdDailyReportDetailSaveReqVO createReqVO) {
+        // 插入
+        IotRdDailyReportDetailDO iotRdDailyReportDetail = BeanUtils.toBean(createReqVO, IotRdDailyReportDetailDO.class);
+        iotRdDailyReportDetailMapper.insert(iotRdDailyReportDetail);
+        // 返回
+        return iotRdDailyReportDetail.getId();
+    }
+
+    @Override
+    public void updateIotRdDailyReportDetail(IotRdDailyReportDetailSaveReqVO updateReqVO) {
+        // 校验存在
+        validateIotRdDailyReportDetailExists(updateReqVO.getId());
+        // 更新
+        IotRdDailyReportDetailDO updateObj = BeanUtils.toBean(updateReqVO, IotRdDailyReportDetailDO.class);
+        iotRdDailyReportDetailMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteIotRdDailyReportDetail(Long id) {
+        // 校验存在
+        validateIotRdDailyReportDetailExists(id);
+        // 删除
+        iotRdDailyReportDetailMapper.deleteById(id);
+    }
+
+    private void validateIotRdDailyReportDetailExists(Long id) {
+        if (iotRdDailyReportDetailMapper.selectById(id) == null) {
+            throw exception(IOT_RD_DAILY_REPORT_DETAIL_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public IotRdDailyReportDetailDO getIotRdDailyReportDetail(Long id) {
+        return iotRdDailyReportDetailMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<IotRdDailyReportDetailDO> getIotRdDailyReportDetailPage(IotRdDailyReportDetailPageReqVO pageReqVO) {
+        return iotRdDailyReportDetailMapper.selectPage(pageReqVO);
+    }
+
+}

+ 55 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrydailyreportdetail/IotRyDailyReportDetailService.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.pms.service.iotrydailyreportdetail;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreportdetail.vo.IotRyDailyReportDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreportdetail.vo.IotRyDailyReportDetailSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotrydailyreportdetail.IotRyDailyReportDetailDO;
+
+import javax.validation.Valid;
+
+/**
+ * 瑞鹰日报明细(生产动态拆分) Service 接口
+ *
+ * @author ruiqi
+ */
+public interface IotRyDailyReportDetailService {
+
+    /**
+     * 创建瑞鹰日报明细(生产动态拆分)
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createIotRyDailyReportDetail(@Valid IotRyDailyReportDetailSaveReqVO createReqVO);
+
+    /**
+     * 更新瑞鹰日报明细(生产动态拆分)
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateIotRyDailyReportDetail(@Valid IotRyDailyReportDetailSaveReqVO updateReqVO);
+
+    /**
+     * 删除瑞鹰日报明细(生产动态拆分)
+     *
+     * @param id 编号
+     */
+    void deleteIotRyDailyReportDetail(Long id);
+
+    /**
+     * 获得瑞鹰日报明细(生产动态拆分)
+     *
+     * @param id 编号
+     * @return 瑞鹰日报明细(生产动态拆分)
+     */
+    IotRyDailyReportDetailDO getIotRyDailyReportDetail(Long id);
+
+    /**
+     * 获得瑞鹰日报明细(生产动态拆分)分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 瑞鹰日报明细(生产动态拆分)分页
+     */
+    PageResult<IotRyDailyReportDetailDO> getIotRyDailyReportDetailPage(IotRyDailyReportDetailPageReqVO pageReqVO);
+
+}

+ 71 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotrydailyreportdetail/IotRyDailyReportDetailServiceImpl.java

@@ -0,0 +1,71 @@
+package cn.iocoder.yudao.module.pms.service.iotrydailyreportdetail;
+
+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.iotrydailyreportdetail.vo.IotRyDailyReportDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreportdetail.vo.IotRyDailyReportDetailSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotrydailyreportdetail.IotRyDailyReportDetailDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.iotrydailyreportdetail.IotRyDailyReportDetailMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_RY_DAILY_REPORT_DETAIL_NOT_EXISTS;
+
+/**
+ * 瑞鹰日报明细(生产动态拆分) Service 实现类
+ *
+ * @author ruiqi
+ */
+@Service
+@Validated
+public class IotRyDailyReportDetailServiceImpl implements IotRyDailyReportDetailService {
+
+    @Resource
+    private IotRyDailyReportDetailMapper iotRyDailyReportDetailMapper;
+
+    @Override
+    public Long createIotRyDailyReportDetail(IotRyDailyReportDetailSaveReqVO createReqVO) {
+        // 插入
+        IotRyDailyReportDetailDO iotRyDailyReportDetail = BeanUtils.toBean(createReqVO, IotRyDailyReportDetailDO.class);
+        iotRyDailyReportDetailMapper.insert(iotRyDailyReportDetail);
+        // 返回
+        return iotRyDailyReportDetail.getId();
+    }
+
+    @Override
+    public void updateIotRyDailyReportDetail(IotRyDailyReportDetailSaveReqVO updateReqVO) {
+        // 校验存在
+        validateIotRyDailyReportDetailExists(updateReqVO.getId());
+        // 更新
+        IotRyDailyReportDetailDO updateObj = BeanUtils.toBean(updateReqVO, IotRyDailyReportDetailDO.class);
+        iotRyDailyReportDetailMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteIotRyDailyReportDetail(Long id) {
+        // 校验存在
+        validateIotRyDailyReportDetailExists(id);
+        // 删除
+        iotRyDailyReportDetailMapper.deleteById(id);
+    }
+
+    private void validateIotRyDailyReportDetailExists(Long id) {
+        if (iotRyDailyReportDetailMapper.selectById(id) == null) {
+            throw exception(IOT_RY_DAILY_REPORT_DETAIL_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public IotRyDailyReportDetailDO getIotRyDailyReportDetail(Long id) {
+        return iotRyDailyReportDetailMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<IotRyDailyReportDetailDO> getIotRyDailyReportDetailPage(IotRyDailyReportDetailPageReqVO pageReqVO) {
+        return iotRyDailyReportDetailMapper.selectPage(pageReqVO);
+    }
+
+}