Browse Source

pms 日报项目管理任务计划 代码初始化

zhangcl 3 hours ago
parent
commit
f09631900f
27 changed files with 1142 additions and 64 deletions
  1. 2 0
      yudao-module-pms/yudao-module-pms-api/src/main/java/cn/iocoder/yudao/module/pms/enums/ErrorCodeConstant.java
  2. 94 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotattachment/IotAttachmentController.java
  3. 48 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotattachment/vo/IotAttachmentPageReqVO.java
  4. 55 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotattachment/vo/IotAttachmentRespVO.java
  5. 41 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotattachment/vo/IotAttachmentSaveReqVO.java
  6. 19 21
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/IotProjectInfoController.java
  7. 28 4
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/vo/IotProjectInfoPageReqVO.java
  8. 35 6
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/vo/IotProjectInfoRespVO.java
  9. 26 5
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/vo/IotProjectInfoSaveReqVO.java
  10. 13 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/vo/IotProjectTaskPageReqVO.java
  11. 25 4
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/vo/IotProjectTaskRespVO.java
  12. 17 3
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/vo/IotProjectTaskSaveReqVO.java
  13. 93 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttaskschedule/IotProjectTaskScheduleController.java
  14. 47 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttaskschedule/vo/IotProjectTaskSchedulePageReqVO.java
  15. 51 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttaskschedule/vo/IotProjectTaskScheduleRespVO.java
  16. 36 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttaskschedule/vo/IotProjectTaskScheduleSaveReqVO.java
  17. 62 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotattachment/IotAttachmentDO.java
  18. 41 9
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotprojectinfo/IotProjectInfoDO.java
  19. 29 6
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotprojecttask/IotProjectTaskDO.java
  20. 60 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotprojecttaskschedule/IotProjectTaskScheduleDO.java
  21. 32 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotattachment/IotAttachmentMapper.java
  22. 31 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotprojecttaskschedule/IotProjectTaskScheduleMapper.java
  23. 55 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotattachment/IotAttachmentService.java
  24. 71 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotattachment/IotAttachmentServiceImpl.java
  25. 5 6
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotprojectinfo/IotProjectInfoServiceImpl.java
  26. 55 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotprojecttaskschedule/IotProjectTaskScheduleService.java
  27. 71 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotprojecttaskschedule/IotProjectTaskScheduleServiceImpl.java

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

@@ -74,4 +74,6 @@ public interface ErrorCodeConstant{
     ErrorCode PRODUCT_EXITS_CHILDREN = new ErrorCode(1_002_004_003, "存在子分类,无法删除");
     ErrorCode INSPECT_DEVICE_CHANGE = new ErrorCode(154, "设备已调拨");
     ErrorCode IOT_APP_NOT_EXISTS = new ErrorCode(155, "app版本不存在");
+    ErrorCode IOT_ATTACHMENT_NOT_EXISTS = new ErrorCode(1_002_004_004, "附件不存在");
+    ErrorCode IOT_PROJECT_TASK_SCHEDULE_NOT_EXISTS = new ErrorCode(1_002_004_005, "项目任务时间表/施工进度不存在");
 }

+ 94 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotattachment/IotAttachmentController.java

@@ -0,0 +1,94 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotattachment;
+
+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.iotattachment.vo.IotAttachmentPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo.IotAttachmentRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo.IotAttachmentSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotattachment.IotAttachmentDO;
+import cn.iocoder.yudao.module.pms.service.iotattachment.IotAttachmentService;
+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("/rq/iot-attachment")
+@Validated
+public class IotAttachmentController {
+
+    @Resource
+    private IotAttachmentService iotAttachmentService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建附件")
+    @PreAuthorize("@ss.hasPermission('rq:iot-attachment:create')")
+    public CommonResult<Long> createIotAttachment(@Valid @RequestBody IotAttachmentSaveReqVO createReqVO) {
+        return success(iotAttachmentService.createIotAttachment(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新附件")
+    @PreAuthorize("@ss.hasPermission('rq:iot-attachment:update')")
+    public CommonResult<Boolean> updateIotAttachment(@Valid @RequestBody IotAttachmentSaveReqVO updateReqVO) {
+        iotAttachmentService.updateIotAttachment(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除附件")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('rq:iot-attachment:delete')")
+    public CommonResult<Boolean> deleteIotAttachment(@RequestParam("id") Long id) {
+        iotAttachmentService.deleteIotAttachment(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得附件")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('rq:iot-attachment:query')")
+    public CommonResult<IotAttachmentRespVO> getIotAttachment(@RequestParam("id") Long id) {
+        IotAttachmentDO iotAttachment = iotAttachmentService.getIotAttachment(id);
+        return success(BeanUtils.toBean(iotAttachment, IotAttachmentRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得附件分页")
+    @PreAuthorize("@ss.hasPermission('rq:iot-attachment:query')")
+    public CommonResult<PageResult<IotAttachmentRespVO>> getIotAttachmentPage(@Valid IotAttachmentPageReqVO pageReqVO) {
+        PageResult<IotAttachmentDO> pageResult = iotAttachmentService.getIotAttachmentPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, IotAttachmentRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出附件 Excel")
+    @PreAuthorize("@ss.hasPermission('rq:iot-attachment:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportIotAttachmentExcel(@Valid IotAttachmentPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<IotAttachmentDO> list = iotAttachmentService.getIotAttachmentPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "附件.xls", "数据", IotAttachmentRespVO.class,
+                        BeanUtils.toBean(list, IotAttachmentRespVO.class));
+    }
+
+}

+ 48 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotattachment/vo/IotAttachmentPageReqVO.java

@@ -0,0 +1,48 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotattachment.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.time.LocalDateTime;
+
+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 IotAttachmentPageReqVO extends PageParam {
+
+    @Schema(description = "所属功能模块(保养/维修/巡检/日报...)")
+    private String category;
+
+    @Schema(description = "业务主键id", example = "3510")
+    private Long bizId;
+
+    @Schema(description = "类别(施工设计/完工报告)", example = "2")
+    private String type;
+
+    @Schema(description = "文件名称", example = "芋艿")
+    private String filename;
+
+    @Schema(description = "文件类型", example = "1")
+    private String fileType;
+
+    @Schema(description = "文件路径")
+    private String filePath;
+
+    @Schema(description = "文件大小")
+    private String fileSize;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 55 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotattachment/vo/IotAttachmentRespVO.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotattachment.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.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 附件 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IotAttachmentRespVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "21951")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "所属功能模块(保养/维修/巡检/日报...)")
+    @ExcelProperty("所属功能模块(保养/维修/巡检/日报...)")
+    private String category;
+
+    @Schema(description = "业务主键id", example = "3510")
+    @ExcelProperty("业务主键id")
+    private Long bizId;
+
+    @Schema(description = "类别(施工设计/完工报告)", example = "2")
+    @ExcelProperty("类别(施工设计/完工报告)")
+    private String type;
+
+    @Schema(description = "文件名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
+    @ExcelProperty("文件名称")
+    private String filename;
+
+    @Schema(description = "文件类型", example = "1")
+    @ExcelProperty("文件类型")
+    private String fileType;
+
+    @Schema(description = "文件路径", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("文件路径")
+    private String filePath;
+
+    @Schema(description = "文件大小")
+    @ExcelProperty("文件大小")
+    private String fileSize;
+
+    @Schema(description = "备注", example = "随便")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 41 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotattachment/vo/IotAttachmentSaveReqVO.java

@@ -0,0 +1,41 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+
+@Schema(description = "管理后台 - 附件新增/修改 Request VO")
+@Data
+public class IotAttachmentSaveReqVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "21951")
+    private Long id;
+
+    @Schema(description = "所属功能模块(保养/维修/巡检/日报...)")
+    private String category;
+
+    @Schema(description = "业务主键id", example = "3510")
+    private Long bizId;
+
+    @Schema(description = "类别(施工设计/完工报告)", example = "2")
+    private String type;
+
+    @Schema(description = "文件名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
+    @NotEmpty(message = "文件名称不能为空")
+    private String filename;
+
+    @Schema(description = "文件类型", example = "1")
+    private String fileType;
+
+    @Schema(description = "文件路径", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "文件路径不能为空")
+    private String filePath;
+
+    @Schema(description = "文件大小")
+    private String fileSize;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+}

+ 19 - 21
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/IotProjectInfoController.java

@@ -1,39 +1,37 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo;
 
+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.iotprojectinfo.vo.IotProjectInfoPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProjectInfoRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProjectInfoSaveReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProjectSaveVO;
-import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskSaveReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojectinfo.IotProjectInfoDO;
 import cn.iocoder.yudao.module.pms.service.iotprojectinfo.IotProjectInfoService;
 import cn.iocoder.yudao.module.pms.service.iotprojecttask.IotProjectTaskService;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
-import org.springframework.web.bind.annotation.*;
-import javax.annotation.Resource;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.security.access.prepost.PreAuthorize;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Parameter;
 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.validation.constraints.*;
-import javax.validation.*;
-import javax.servlet.http.*;
-import java.util.*;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
 import java.io.IOException;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
 
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
-
 
 @Tag(name = "管理后台 - 项目信息")
 @RestController

+ 28 - 4
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/vo/IotProjectInfoPageReqVO.java

@@ -1,10 +1,13 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo;
 
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
 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 static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@@ -21,12 +24,30 @@ public class IotProjectInfoPageReqVO extends PageParam {
     @Schema(description = "部门名称", example = "芋艿")
     private String deptName;
 
+    @Schema(description = "海外项目标识 1国内项目 2海外项目")
+    private Integer overseas;
+
+    @Schema(description = "海外所属区域")
+    private String overseasArea;
+
     @Schema(description = "合同名称", example = "王五")
     private String contractName;
 
     @Schema(description = "合同编号")
     private String contractCode;
 
+    @Schema(description = "合同标的")
+    private String contractSubject;
+
+    @Schema(description = "合同金额")
+    private BigDecimal contractAmount;
+
+    @Schema(description = "币种")
+    private String currency;
+
+    @Schema(description = "责任人([123,234])")
+    private String responsiblePerson;
+
     @Schema(description = "工作量总数")
     private String workloadTotal;
 
@@ -47,9 +68,12 @@ public class IotProjectInfoPageReqVO extends PageParam {
     @Schema(description = "施工工艺")
     private String technique;
 
-    @Schema(description = "施工工艺")
+    @Schema(description = "结算方式")
     private String payment;
 
+    @Schema(description = "项目状态 1待开始 2进行中 3已完成", example = "2")
+    private Integer status;
+
     @Schema(description = "创建时间")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;

+ 35 - 6
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/vo/IotProjectInfoRespVO.java

@@ -1,11 +1,12 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo;
 
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
 
 @Schema(description = "管理后台 - 项目信息 Response VO")
 @Data
@@ -24,6 +25,14 @@ public class IotProjectInfoRespVO {
     @ExcelProperty("部门名称")
     private String deptName;
 
+    @Schema(description = "海外项目标识 1国内项目 2海外项目")
+    @ExcelProperty("海外项目标识 1国内项目 2海外项目")
+    private Integer overseas;
+
+    @Schema(description = "海外所属区域")
+    @ExcelProperty("海外所属区域")
+    private String overseasArea;
+
     @Schema(description = "合同名称", example = "王五")
     @ExcelProperty("合同名称")
     private String contractName;
@@ -32,6 +41,22 @@ public class IotProjectInfoRespVO {
     @ExcelProperty("合同编号")
     private String contractCode;
 
+    @Schema(description = "合同标的")
+    @ExcelProperty("合同标的")
+    private String contractSubject;
+
+    @Schema(description = "合同金额")
+    @ExcelProperty("合同金额")
+    private BigDecimal contractAmount;
+
+    @Schema(description = "币种")
+    @ExcelProperty("币种")
+    private String currency;
+
+    @Schema(description = "责任人([123,234])")
+    @ExcelProperty("责任人([123,234])")
+    private String responsiblePerson;
+
     @Schema(description = "工作量总数")
     @ExcelProperty("工作量总数")
     private String workloadTotal;
@@ -56,10 +81,14 @@ public class IotProjectInfoRespVO {
     @ExcelProperty("施工工艺")
     private String technique;
 
-    @Schema(description = "施工工艺")
-    @ExcelProperty("施工工艺")
+    @Schema(description = "结算方式")
+    @ExcelProperty("结算方式")
     private String payment;
 
+    @Schema(description = "项目状态 1待开始 2进行中 3已完成", example = "2")
+    @ExcelProperty("项目状态 1待开始 2进行中 3已完成")
+    private Integer status;
+
     @Schema(description = "创建时间")
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;

+ 26 - 5
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/vo/IotProjectInfoSaveReqVO.java

@@ -1,10 +1,9 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import javax.validation.constraints.*;
-import org.springframework.format.annotation.DateTimeFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 
 @Schema(description = "管理后台 - 项目信息新增/修改 Request VO")
@@ -20,12 +19,31 @@ public class IotProjectInfoSaveReqVO {
     @Schema(description = "部门名称", example = "芋艿")
     private String deptName;
 
+    @Schema(description = "海外项目标识 1国内项目 2海外项目")
+    private Integer overseas;
+
+    @Schema(description = "海外所属区域")
+    private String overseasArea;
+
     @Schema(description = "合同名称", example = "王五")
     private String contractName;
 
     @Schema(description = "合同编号")
     private String contractCode;
 
+    @Schema(description = "合同标的")
+    private String contractSubject;
+
+    @Schema(description = "合同金额")
+    private BigDecimal contractAmount;
+
+    @Schema(description = "币种")
+    private String currency;
+
+    @Schema(description = "责任人([123,234])")
+    private String responsiblePerson;
+
+
     @Schema(description = "工作量总数")
     private String workloadTotal;
 
@@ -44,9 +62,12 @@ public class IotProjectInfoSaveReqVO {
     @Schema(description = "施工工艺")
     private String technique;
 
-    @Schema(description = "施工工艺")
+    @Schema(description = "结算方式")
     private String payment;
 
+    @Schema(description = "项目状态 1待开始 2进行中 3已完成", example = "2")
+    private Integer status;
+
     @Schema(description = "用户名", example = "王五")
     private String userName;
 

+ 13 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/vo/IotProjectTaskPageReqVO.java

@@ -27,12 +27,24 @@ public class IotProjectTaskPageReqVO extends PageParam {
     @Schema(description = "施工地点")
     private String location;
 
+    @Schema(description = "施工设备")
+    private String deviceIds;
+
     @Schema(description = "施工工艺")
     private String technique;
 
     @Schema(description = "设计工作量")
     private String workloadDesign;
 
+    @Schema(description = "责任人([123,234])")
+    private String responsiblePerson;
+
+    @Schema(description = "工作量单位(段/层/方/井深/进尺)")
+    private String workloadUnit;
+
+    @Schema(description = "状态", example = "1")
+    private Integer status;
+
     @Schema(description = "创建时间")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
@@ -46,6 +58,7 @@ public class IotProjectTaskPageReqVO extends PageParam {
     @Schema(description = "备注", example = "你说的对")
     private String remark;
 
+    @Schema(description = "施工队伍")
     private Set<Long> deptIds;
 
     private Long deptId;

+ 25 - 4
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/vo/IotProjectTaskRespVO.java

@@ -1,11 +1,12 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo;
 
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
+import lombok.Data;
+
 import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
+import java.util.Set;
 
 @Schema(description = "管理后台 - 项目信息任务拆分 Response VO")
 @Data
@@ -32,14 +33,30 @@ public class IotProjectTaskRespVO {
     @ExcelProperty("施工地点")
     private String location;
 
+    @Schema(description = "施工设备")
+    @ExcelProperty("施工设备")
+    private String deviceIds;
+
     @Schema(description = "施工工艺")
     @ExcelProperty("施工工艺")
     private String technique;
 
+    @Schema(description = "责任人([123,234])")
+    @ExcelProperty("责任人([123,234])")
+    private String responsiblePerson;
+
     @Schema(description = "设计工作量")
     @ExcelProperty("设计工作量")
     private String workloadDesign;
 
+    @Schema(description = "工作量单位(段/层/方/井深/进尺)")
+    @ExcelProperty("工作量单位(段/层/方/井深/进尺)")
+    private String workloadUnit;
+
+    @Schema(description = "状态", example = "1")
+    @ExcelProperty("状态")
+    private Integer status;
+
     @Schema(description = "创建时间")
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
@@ -56,8 +73,12 @@ public class IotProjectTaskRespVO {
     @ExcelProperty("备注")
     private String remark;
 
+    @Schema(description = "施工队伍")
+    @ExcelProperty("施工队伍")
     private Set<Long> deptIds;
 
+    @Schema(description = "该任务所属部门id", example = "1755")
+    @ExcelProperty("该任务所属部门id")
     private Long deptId;
 
     @Schema(description = "客户名称")

+ 17 - 3
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/vo/IotProjectTaskSaveReqVO.java

@@ -1,9 +1,9 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import javax.validation.constraints.*;
+import lombok.Data;
+
+import java.util.Set;
 
 @Schema(description = "管理后台 - 项目信息任务拆分新增/修改 Request VO")
 @Data
@@ -24,12 +24,24 @@ public class IotProjectTaskSaveReqVO {
     @Schema(description = "施工地点")
     private String location;
 
+    @Schema(description = "施工设备")
+    private String deviceIds;
+
     @Schema(description = "施工工艺")
     private String technique;
 
+    @Schema(description = "责任人([123,234])")
+    private String responsiblePerson;
+
     @Schema(description = "设计工作量")
     private String workloadDesign;
 
+    @Schema(description = "状态", example = "1")
+    private Integer status;
+
+    @Schema(description = "工作量单位(段/层/方/井深/进尺)")
+    private String workloadUnit;
+
     @Schema(description = "用户名", example = "赵六")
     private String userName;
 
@@ -39,8 +51,10 @@ public class IotProjectTaskSaveReqVO {
     @Schema(description = "备注", example = "你说的对")
     private String remark;
 
+    @Schema(description = "施工队伍")
     private Set<Long> deptIds;
 
+    @Schema(description = "该任务所属部门id", example = "1755")
     private Long deptId;
 
     @Schema(description = "客户名称")

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

@@ -0,0 +1,93 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskschedule;
+
+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.iotprojecttaskschedule.vo.IotProjectTaskSchedulePageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskschedule.vo.IotProjectTaskScheduleRespVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskschedule.vo.IotProjectTaskScheduleSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttaskschedule.IotProjectTaskScheduleDO;
+import cn.iocoder.yudao.module.pms.service.iotprojecttaskschedule.IotProjectTaskScheduleService;
+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("/rq/iot-project-task-schedule")
+@Validated
+public class IotProjectTaskScheduleController {
+
+    @Resource
+    private IotProjectTaskScheduleService iotProjectTaskScheduleService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建项目任务时间表/施工进度")
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-task-schedule:create')")
+    public CommonResult<Long> createIotProjectTaskSchedule(@Valid @RequestBody IotProjectTaskScheduleSaveReqVO createReqVO) {
+        return success(iotProjectTaskScheduleService.createIotProjectTaskSchedule(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新项目任务时间表/施工进度")
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-task-schedule:update')")
+    public CommonResult<Boolean> updateIotProjectTaskSchedule(@Valid @RequestBody IotProjectTaskScheduleSaveReqVO updateReqVO) {
+        iotProjectTaskScheduleService.updateIotProjectTaskSchedule(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除项目任务时间表/施工进度")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-task-schedule:delete')")
+    public CommonResult<Boolean> deleteIotProjectTaskSchedule(@RequestParam("id") Long id) {
+        iotProjectTaskScheduleService.deleteIotProjectTaskSchedule(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得项目任务时间表/施工进度")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-task-schedule:query')")
+    public CommonResult<IotProjectTaskScheduleRespVO> getIotProjectTaskSchedule(@RequestParam("id") Long id) {
+        IotProjectTaskScheduleDO iotProjectTaskSchedule = iotProjectTaskScheduleService.getIotProjectTaskSchedule(id);
+        return success(BeanUtils.toBean(iotProjectTaskSchedule, IotProjectTaskScheduleRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得项目任务时间表/施工进度分页")
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-task-schedule:query')")
+    public CommonResult<PageResult<IotProjectTaskScheduleRespVO>> getIotProjectTaskSchedulePage(@Valid IotProjectTaskSchedulePageReqVO pageReqVO) {
+        PageResult<IotProjectTaskScheduleDO> pageResult = iotProjectTaskScheduleService.getIotProjectTaskSchedulePage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, IotProjectTaskScheduleRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出项目任务时间表/施工进度 Excel")
+    @PreAuthorize("@ss.hasPermission('rq:iot-project-task-schedule:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportIotProjectTaskScheduleExcel(@Valid IotProjectTaskSchedulePageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<IotProjectTaskScheduleDO> list = iotProjectTaskScheduleService.getIotProjectTaskSchedulePage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "项目任务时间表/施工进度.xls", "数据", IotProjectTaskScheduleRespVO.class,
+                        BeanUtils.toBean(list, IotProjectTaskScheduleRespVO.class));
+    }
+
+}

+ 47 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttaskschedule/vo/IotProjectTaskSchedulePageReqVO.java

@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskschedule.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.time.LocalDateTime;
+
+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 IotProjectTaskSchedulePageReqVO extends PageParam {
+
+    @Schema(description = "项目id", example = "1534")
+    private Long projectId;
+
+    @Schema(description = "任务id", example = "29128")
+    private Long taskId;
+
+    @Schema(description = "施工状态(工作量开始/动迁/准备/施工)", example = "2")
+    private Integer status;
+
+    @Schema(description = "施工阶段描述", example = "你说的对")
+    private String description;
+
+    @Schema(description = "状态起始时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] startTime;
+
+    @Schema(description = "状态结束时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] endTime;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 51 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttaskschedule/vo/IotProjectTaskScheduleRespVO.java

@@ -0,0 +1,51 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskschedule.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.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 项目任务时间表/施工进度 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class IotProjectTaskScheduleRespVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8523")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "项目id", example = "1534")
+    @ExcelProperty("项目id")
+    private Long projectId;
+
+    @Schema(description = "任务id", example = "29128")
+    @ExcelProperty("任务id")
+    private Long taskId;
+
+    @Schema(description = "施工状态(工作量开始/动迁/准备/施工)", example = "2")
+    @ExcelProperty("施工状态(工作量开始/动迁/准备/施工)")
+    private Integer status;
+
+    @Schema(description = "施工阶段描述", example = "你说的对")
+    @ExcelProperty("施工阶段描述")
+    private String description;
+
+    @Schema(description = "状态起始时间")
+    @ExcelProperty("状态起始时间")
+    private LocalDateTime startTime;
+
+    @Schema(description = "状态结束时间")
+    @ExcelProperty("状态结束时间")
+    private LocalDateTime endTime;
+
+    @Schema(description = "备注", example = "你说的对")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 36 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttaskschedule/vo/IotProjectTaskScheduleSaveReqVO.java

@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskschedule.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 项目任务时间表/施工进度新增/修改 Request VO")
+@Data
+public class IotProjectTaskScheduleSaveReqVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8523")
+    private Long id;
+
+    @Schema(description = "项目id", example = "1534")
+    private Long projectId;
+
+    @Schema(description = "任务id", example = "29128")
+    private Long taskId;
+
+    @Schema(description = "施工状态(工作量开始/动迁/准备/施工)", example = "2")
+    private Integer status;
+
+    @Schema(description = "施工阶段描述", example = "你说的对")
+    private String description;
+
+    @Schema(description = "状态起始时间")
+    private LocalDateTime startTime;
+
+    @Schema(description = "状态结束时间")
+    private LocalDateTime endTime;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+}

+ 62 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotattachment/IotAttachmentDO.java

@@ -0,0 +1,62 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.iotattachment;
+
+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.*;
+
+/**
+ * 附件 DO
+ *
+ * @author 超级管理员
+ */
+@TableName("rq_iot_attachment")
+@KeySequence("rq_iot_attachment_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IotAttachmentDO extends BaseDO {
+
+    /**
+     * 主键id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 所属功能模块(保养/维修/巡检/日报...)
+     */
+    private String category;
+    /**
+     * 业务主键id
+     */
+    private Long bizId;
+    /**
+     * 类别(施工设计/完工报告)
+     */
+    private String type;
+    /**
+     * 文件名称
+     */
+    private String filename;
+    /**
+     * 文件类型
+     */
+    private String fileType;
+    /**
+     * 文件路径
+     */
+    private String filePath;
+    /**
+     * 文件大小
+     */
+    private String fileSize;
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 41 - 9
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotprojectinfo/IotProjectInfoDO.java

@@ -1,13 +1,13 @@
 package cn.iocoder.yudao.module.pms.dal.dataobject.iotprojectinfo;
 
+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.util.*;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
+
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import com.baomidou.mybatisplus.annotation.*;
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 
 /**
  * 项目信息 DO
@@ -37,6 +37,14 @@ public class IotProjectInfoDO extends BaseDO {
      * 部门名称
      */
     private String deptName;
+    /**
+     * 海外项目标识 1国内项目 2海外项目
+     */
+    private Integer overseas;
+    /**
+     * 海外所属区域
+     */
+    private String overseasArea;
     /**
      * 合同名称
      */
@@ -45,6 +53,22 @@ public class IotProjectInfoDO extends BaseDO {
      * 合同编号
      */
     private String contractCode;
+    /**
+     * 合同标的
+     */
+    private String contractSubject;
+    /**
+     * 合同金额
+     */
+    private BigDecimal contractAmount;
+    /**
+     * 币种
+     */
+    private String currency;
+    /**
+     * 责任人([123,234])
+     */
+    private String responsiblePerson;
     /**
      * 工作量总数
      */
@@ -70,9 +94,13 @@ public class IotProjectInfoDO extends BaseDO {
      */
     private String technique;
     /**
-     * 施工工艺
+     * 结算方式
      */
     private String payment;
+    /**
+     * 项目状态 1待开始 2进行中 3已完成
+     */
+    private Integer status;
     /**
      * 用户名
      */
@@ -83,9 +111,13 @@ public class IotProjectInfoDO extends BaseDO {
     private Long userId;
 
     private String remark;
-
+    /**
+     * 客户ID
+     */
     private Long manufacturerId;
-
+    /**
+     * 客户名称
+     */
     private String manufactureName;
 
 }

+ 29 - 6
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotprojecttask/IotProjectTaskDO.java

@@ -1,13 +1,14 @@
 package cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttask;
 
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
-import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
-import java.util.*;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
-import com.baomidou.mybatisplus.annotation.*;
-import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+import java.util.Set;
 
 /**
  * 项目信息任务拆分 DO
@@ -45,14 +46,30 @@ public class IotProjectTaskDO extends BaseDO {
      * 施工地点
      */
     private String location;
+    /**
+     * 施工设备
+     */
+    private String deviceIds;
     /**
      * 施工工艺
      */
     private String technique;
+    /**
+     * 责任人([123,234])
+     */
+    private String responsiblePerson;
     /**
      * 设计工作量
      */
     private String workloadDesign;
+    /**
+     * 工作量单位(段/层/方/井深/进尺)
+     */
+    private String workloadUnit;
+    /**
+     * 状态
+     */
+    private Integer status;
     /**
      * 用户名
      */
@@ -66,9 +83,15 @@ public class IotProjectTaskDO extends BaseDO {
      */
     private String remark;
 
+    /**
+     * 施工队伍
+     */
     @TableField(typeHandler = JacksonTypeHandler.class)
     private Set<Long> deptIds;
 
+    /**
+     * 该任务所属部门id
+     */
     private Long deptId;
 
     private String manufactureName;

+ 60 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/iotprojecttaskschedule/IotProjectTaskScheduleDO.java

@@ -0,0 +1,60 @@
+package cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttaskschedule;
+
+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.time.LocalDateTime;
+
+/**
+ * 项目任务时间表/施工进度 DO
+ *
+ * @author 超级管理员
+ */
+@TableName("rq_iot_project_task_schedule")
+@KeySequence("rq_iot_project_task_schedule_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class IotProjectTaskScheduleDO extends BaseDO {
+
+    /**
+     * 主键id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 项目id
+     */
+    private Long projectId;
+    /**
+     * 任务id
+     */
+    private Long taskId;
+    /**
+     * 施工状态(工作量开始/动迁/准备/施工)
+     */
+    private Integer status;
+    /**
+     * 施工阶段描述
+     */
+    private String description;
+    /**
+     * 状态起始时间
+     */
+    private LocalDateTime startTime;
+    /**
+     * 状态结束时间
+     */
+    private LocalDateTime endTime;
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 32 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotattachment/IotAttachmentMapper.java

@@ -0,0 +1,32 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.iotattachment;
+
+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.iotattachment.vo.IotAttachmentPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotattachment.IotAttachmentDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 附件 Mapper
+ *
+ * @author 超级管理员
+ */
+@Mapper
+public interface IotAttachmentMapper extends BaseMapperX<IotAttachmentDO> {
+
+    default PageResult<IotAttachmentDO> selectPage(IotAttachmentPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotAttachmentDO>()
+                .eqIfPresent(IotAttachmentDO::getCategory, reqVO.getCategory())
+                .eqIfPresent(IotAttachmentDO::getBizId, reqVO.getBizId())
+                .eqIfPresent(IotAttachmentDO::getType, reqVO.getType())
+                .likeIfPresent(IotAttachmentDO::getFilename, reqVO.getFilename())
+                .eqIfPresent(IotAttachmentDO::getFileType, reqVO.getFileType())
+                .eqIfPresent(IotAttachmentDO::getFilePath, reqVO.getFilePath())
+                .eqIfPresent(IotAttachmentDO::getFileSize, reqVO.getFileSize())
+                .eqIfPresent(IotAttachmentDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(IotAttachmentDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(IotAttachmentDO::getId));
+    }
+
+}

+ 31 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotprojecttaskschedule/IotProjectTaskScheduleMapper.java

@@ -0,0 +1,31 @@
+package cn.iocoder.yudao.module.pms.dal.mysql.iotprojecttaskschedule;
+
+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.iotprojecttaskschedule.vo.IotProjectTaskSchedulePageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttaskschedule.IotProjectTaskScheduleDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 项目任务时间表/施工进度 Mapper
+ *
+ * @author 超级管理员
+ */
+@Mapper
+public interface IotProjectTaskScheduleMapper extends BaseMapperX<IotProjectTaskScheduleDO> {
+
+    default PageResult<IotProjectTaskScheduleDO> selectPage(IotProjectTaskSchedulePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotProjectTaskScheduleDO>()
+                .eqIfPresent(IotProjectTaskScheduleDO::getProjectId, reqVO.getProjectId())
+                .eqIfPresent(IotProjectTaskScheduleDO::getTaskId, reqVO.getTaskId())
+                .eqIfPresent(IotProjectTaskScheduleDO::getStatus, reqVO.getStatus())
+                .eqIfPresent(IotProjectTaskScheduleDO::getDescription, reqVO.getDescription())
+                .betweenIfPresent(IotProjectTaskScheduleDO::getStartTime, reqVO.getStartTime())
+                .betweenIfPresent(IotProjectTaskScheduleDO::getEndTime, reqVO.getEndTime())
+                .eqIfPresent(IotProjectTaskScheduleDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(IotProjectTaskScheduleDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(IotProjectTaskScheduleDO::getId));
+    }
+
+}

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

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.pms.service.iotattachment;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo.IotAttachmentPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo.IotAttachmentSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotattachment.IotAttachmentDO;
+
+import javax.validation.Valid;
+
+/**
+ * 附件 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface IotAttachmentService {
+
+    /**
+     * 创建附件
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createIotAttachment(@Valid IotAttachmentSaveReqVO createReqVO);
+
+    /**
+     * 更新附件
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateIotAttachment(@Valid IotAttachmentSaveReqVO updateReqVO);
+
+    /**
+     * 删除附件
+     *
+     * @param id 编号
+     */
+    void deleteIotAttachment(Long id);
+
+    /**
+     * 获得附件
+     *
+     * @param id 编号
+     * @return 附件
+     */
+    IotAttachmentDO getIotAttachment(Long id);
+
+    /**
+     * 获得附件分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 附件分页
+     */
+    PageResult<IotAttachmentDO> getIotAttachmentPage(IotAttachmentPageReqVO pageReqVO);
+
+}

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

@@ -0,0 +1,71 @@
+package cn.iocoder.yudao.module.pms.service.iotattachment;
+
+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.iotattachment.vo.IotAttachmentPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotattachment.vo.IotAttachmentSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotattachment.IotAttachmentDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.iotattachment.IotAttachmentMapper;
+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_ATTACHMENT_NOT_EXISTS;
+
+/**
+ * 附件 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class IotAttachmentServiceImpl implements IotAttachmentService {
+
+    @Resource
+    private IotAttachmentMapper iotAttachmentMapper;
+
+    @Override
+    public Long createIotAttachment(IotAttachmentSaveReqVO createReqVO) {
+        // 插入
+        IotAttachmentDO iotAttachment = BeanUtils.toBean(createReqVO, IotAttachmentDO.class);
+        iotAttachmentMapper.insert(iotAttachment);
+        // 返回
+        return iotAttachment.getId();
+    }
+
+    @Override
+    public void updateIotAttachment(IotAttachmentSaveReqVO updateReqVO) {
+        // 校验存在
+        validateIotAttachmentExists(updateReqVO.getId());
+        // 更新
+        IotAttachmentDO updateObj = BeanUtils.toBean(updateReqVO, IotAttachmentDO.class);
+        iotAttachmentMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteIotAttachment(Long id) {
+        // 校验存在
+        validateIotAttachmentExists(id);
+        // 删除
+        iotAttachmentMapper.deleteById(id);
+    }
+
+    private void validateIotAttachmentExists(Long id) {
+        if (iotAttachmentMapper.selectById(id) == null) {
+            throw exception(IOT_ATTACHMENT_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public IotAttachmentDO getIotAttachment(Long id) {
+        return iotAttachmentMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<IotAttachmentDO> getIotAttachmentPage(IotAttachmentPageReqVO pageReqVO) {
+        return iotAttachmentMapper.selectPage(pageReqVO);
+    }
+
+}

+ 5 - 6
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotprojectinfo/IotProjectInfoServiceImpl.java

@@ -1,18 +1,17 @@
 package cn.iocoder.yudao.module.pms.service.iotprojectinfo;
 
+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.iotprojectinfo.vo.IotProjectInfoPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProjectInfoSaveReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojectinfo.IotProjectInfoDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotprojectinfo.IotProjectInfoMapper;
 import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.transaction.annotation.Transactional;
 
-import java.util.*;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import javax.annotation.Resource;
+import java.util.Collection;
+import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_PROJECT_INFO_NOT_EXISTS;

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

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.pms.service.iotprojecttaskschedule;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskschedule.vo.IotProjectTaskSchedulePageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskschedule.vo.IotProjectTaskScheduleSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttaskschedule.IotProjectTaskScheduleDO;
+
+import javax.validation.Valid;
+
+/**
+ * 项目任务时间表/施工进度 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface IotProjectTaskScheduleService {
+
+    /**
+     * 创建项目任务时间表/施工进度
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createIotProjectTaskSchedule(@Valid IotProjectTaskScheduleSaveReqVO createReqVO);
+
+    /**
+     * 更新项目任务时间表/施工进度
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateIotProjectTaskSchedule(@Valid IotProjectTaskScheduleSaveReqVO updateReqVO);
+
+    /**
+     * 删除项目任务时间表/施工进度
+     *
+     * @param id 编号
+     */
+    void deleteIotProjectTaskSchedule(Long id);
+
+    /**
+     * 获得项目任务时间表/施工进度
+     *
+     * @param id 编号
+     * @return 项目任务时间表/施工进度
+     */
+    IotProjectTaskScheduleDO getIotProjectTaskSchedule(Long id);
+
+    /**
+     * 获得项目任务时间表/施工进度分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 项目任务时间表/施工进度分页
+     */
+    PageResult<IotProjectTaskScheduleDO> getIotProjectTaskSchedulePage(IotProjectTaskSchedulePageReqVO pageReqVO);
+
+}

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

@@ -0,0 +1,71 @@
+package cn.iocoder.yudao.module.pms.service.iotprojecttaskschedule;
+
+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.iotprojecttaskschedule.vo.IotProjectTaskSchedulePageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttaskschedule.vo.IotProjectTaskScheduleSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttaskschedule.IotProjectTaskScheduleDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.iotprojecttaskschedule.IotProjectTaskScheduleMapper;
+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_PROJECT_TASK_SCHEDULE_NOT_EXISTS;
+
+/**
+ * 项目任务时间表/施工进度 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class IotProjectTaskScheduleServiceImpl implements IotProjectTaskScheduleService {
+
+    @Resource
+    private IotProjectTaskScheduleMapper iotProjectTaskScheduleMapper;
+
+    @Override
+    public Long createIotProjectTaskSchedule(IotProjectTaskScheduleSaveReqVO createReqVO) {
+        // 插入
+        IotProjectTaskScheduleDO iotProjectTaskSchedule = BeanUtils.toBean(createReqVO, IotProjectTaskScheduleDO.class);
+        iotProjectTaskScheduleMapper.insert(iotProjectTaskSchedule);
+        // 返回
+        return iotProjectTaskSchedule.getId();
+    }
+
+    @Override
+    public void updateIotProjectTaskSchedule(IotProjectTaskScheduleSaveReqVO updateReqVO) {
+        // 校验存在
+        validateIotProjectTaskScheduleExists(updateReqVO.getId());
+        // 更新
+        IotProjectTaskScheduleDO updateObj = BeanUtils.toBean(updateReqVO, IotProjectTaskScheduleDO.class);
+        iotProjectTaskScheduleMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteIotProjectTaskSchedule(Long id) {
+        // 校验存在
+        validateIotProjectTaskScheduleExists(id);
+        // 删除
+        iotProjectTaskScheduleMapper.deleteById(id);
+    }
+
+    private void validateIotProjectTaskScheduleExists(Long id) {
+        if (iotProjectTaskScheduleMapper.selectById(id) == null) {
+            throw exception(IOT_PROJECT_TASK_SCHEDULE_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public IotProjectTaskScheduleDO getIotProjectTaskSchedule(Long id) {
+        return iotProjectTaskScheduleMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<IotProjectTaskScheduleDO> getIotProjectTaskSchedulePage(IotProjectTaskSchedulePageReqVO pageReqVO) {
+        return iotProjectTaskScheduleMapper.selectPage(pageReqVO);
+    }
+
+}