diff --git a/ruoyi-oa/pom.xml b/ruoyi-oa/pom.xml
index 04fc9a0..bdd6c52 100644
--- a/ruoyi-oa/pom.xml
+++ b/ruoyi-oa/pom.xml
@@ -33,7 +33,6 @@
2.0.35
-
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaProgressController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaProgressController.java
new file mode 100644
index 0000000..075f4ac
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaProgressController.java
@@ -0,0 +1,153 @@
+package com.ruoyi.oa.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import com.ruoyi.oa.domain.OaProgressDetail;
+import com.ruoyi.oa.domain.bo.OaProgressDetailBo;
+import com.ruoyi.oa.domain.bo.SysOaProjectBo;
+import com.ruoyi.oa.domain.vo.OaProgressDetailVo;
+import com.ruoyi.oa.domain.vo.SysOaProjectVo;
+import com.ruoyi.oa.service.IOaProgressDetailService;
+import com.ruoyi.oa.service.ISysOaProjectService;
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.oa.domain.vo.OaProgressVo;
+import com.ruoyi.oa.domain.bo.OaProgressBo;
+import com.ruoyi.oa.service.IOaProgressService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 进度管理
+ *
+ * @author hdka
+ * @date 2025-04-14
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/oa/progress")
+public class OaProgressController extends BaseController {
+
+ private final IOaProgressService iOaProgressService;
+
+ private final ISysOaProjectService projectService;
+
+ private final IOaProgressDetailService detailService;
+ /**
+ * 查询进度管理列表
+ */
+ @GetMapping("/list")
+ public TableDataInfo list(OaProgressBo bo, PageQuery pageQuery) {
+ return iOaProgressService.queryPageList(bo, pageQuery);
+ }
+
+
+ /**
+ * 查询进度管理列表
+ */
+ @GetMapping("/one-list")
+ public TableDataInfo oneList(SysOaProjectBo bo, PageQuery pageQuery) {
+ return projectService.queryPageList2(bo, pageQuery);
+ }
+
+ /**
+ * 查询进度管理列表
+ */
+ @GetMapping("/two-list")
+ public TableDataInfo twoList(OaProgressBo bo, PageQuery pageQuery) {
+ bo.setParentId(0L);
+ return iOaProgressService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 查询进度管理列表
+ */
+ @GetMapping("/three-list")
+ public TableDataInfo threeList(OaProgressBo bo, PageQuery pageQuery) {
+ return iOaProgressService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 查询进度管理列表
+ */
+ @GetMapping("/four-list")
+ public TableDataInfo fourList(OaProgressDetailBo bo, PageQuery pageQuery) {
+ return detailService.queryPageList(bo, pageQuery);
+ }
+
+
+ /**
+ * 导出进度管理列表
+ */
+ @Log(title = "进度管理", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(OaProgressBo bo, HttpServletResponse response) {
+ List list = iOaProgressService.queryList(bo);
+ ExcelUtil.exportExcel(list, "进度管理", OaProgressVo.class, response);
+ }
+
+ /**
+ * 获取进度管理详细信息
+ *
+ * @param progressId 主键
+ */
+ @GetMapping("/{progressId}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long progressId) {
+ return R.ok(iOaProgressService.queryById(progressId));
+ }
+
+ /**
+ * 新增进度管理
+ */
+ @Log(title = "进度管理", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody OaProgressBo bo) {
+ return toAjax(iOaProgressService.insertByBo(bo));
+ }
+
+ /**
+ * 修改进度管理
+ */
+ @Log(title = "进度管理", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody OaProgressBo bo) {
+ return toAjax(iOaProgressService.updateByBo(bo));
+ }
+
+ /**
+ * 删除进度管理
+ *
+ * @param progressIds 主键串
+ */
+ @Log(title = "进度管理", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{progressIds}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] progressIds) {
+ return toAjax(iOaProgressService.deleteWithValidByIds(Arrays.asList(progressIds), true));
+ }
+
+
+ @GetMapping("/key-list")
+ public R> getKeyList() {
+ return R.ok(iOaProgressService.getKeyList());
+ }
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaProgressDetailController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaProgressDetailController.java
new file mode 100644
index 0000000..aa435a2
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaProgressDetailController.java
@@ -0,0 +1,99 @@
+package com.ruoyi.oa.controller;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import lombok.RequiredArgsConstructor;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.PageQuery;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.oa.domain.vo.OaProgressDetailVo;
+import com.ruoyi.oa.domain.bo.OaProgressDetailBo;
+import com.ruoyi.oa.service.IOaProgressDetailService;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 进度扩展
+ *
+ * @author hdka2
+ * @date 2025-04-14
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/oa/progressDetail")
+public class OaProgressDetailController extends BaseController {
+
+ private final IOaProgressDetailService iOaProgressDetailService;
+
+ /**
+ * 查询进度扩展列表
+ */
+ @GetMapping("/list")
+ public TableDataInfo list(OaProgressDetailBo bo, PageQuery pageQuery) {
+ return iOaProgressDetailService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出进度扩展列表
+ */
+ @Log(title = "进度扩展", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(OaProgressDetailBo bo, HttpServletResponse response) {
+ List list = iOaProgressDetailService.queryList(bo);
+ ExcelUtil.exportExcel(list, "进度扩展", OaProgressDetailVo.class, response);
+ }
+
+ /**
+ * 获取进度扩展详细信息
+ *
+ * @param detailId 主键
+ */
+ @GetMapping("/{detailId}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long detailId) {
+ return R.ok(iOaProgressDetailService.queryById(detailId));
+ }
+
+ /**
+ * 新增进度扩展
+ */
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody OaProgressDetailBo bo) {
+ return toAjax(iOaProgressDetailService.insertByBo(bo));
+ }
+
+ /**
+ * 修改进度扩展
+ */
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody OaProgressDetailBo bo) {
+ return toAjax(iOaProgressDetailService.updateByBo(bo));
+ }
+
+ /**
+ * 删除进度扩展
+ *
+ * @param detailIds 主键串
+ */
+ @DeleteMapping("/{detailIds}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] detailIds) {
+ return toAjax(iOaProgressDetailService.deleteWithValidByIds(Arrays.asList(detailIds), true));
+ }
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaProjectController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaProjectController.java
index 2846ed0..79d258d 100644
--- a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaProjectController.java
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/SysOaProjectController.java
@@ -48,7 +48,6 @@ public class SysOaProjectController extends BaseController {
/**
* 查询项目管理列表
*/
- @SaCheckPermission("oa:project:list")
@GetMapping("/list")
public TableDataInfo list(SysOaProjectBo bo, PageQuery pageQuery) {
return iSysOaProjectService.queryPageList(bo, pageQuery);
@@ -57,7 +56,6 @@ public class SysOaProjectController extends BaseController {
/**
* 导出项目管理列表
*/
- @SaCheckPermission("oa:project:export")
@Log(title = "项目管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(SysOaProjectBo bo, HttpServletResponse response) {
@@ -70,7 +68,6 @@ public class SysOaProjectController extends BaseController {
*
* @param projectId 主键
*/
- @SaCheckPermission("oa:project:query")
@GetMapping("/{projectId}")
public R getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long projectId) {
@@ -101,7 +98,6 @@ public class SysOaProjectController extends BaseController {
/**
* 新增项目管理
*/
- @SaCheckPermission("oa:project:add")
@Log(title = "项目管理", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
@@ -112,7 +108,6 @@ public class SysOaProjectController extends BaseController {
/**
* 修改项目管理
*/
- @SaCheckPermission("oa:project:edit")
@Log(title = "项目管理", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
@@ -126,7 +121,6 @@ public class SysOaProjectController extends BaseController {
*
* @param projectIds 主键串
*/
- @SaCheckPermission("oa:project:remove")
@Log(title = "项目管理", businessType = BusinessType.DELETE)
@DSTransactional
@DeleteMapping("/{projectIds}")
@@ -138,7 +132,6 @@ public class SysOaProjectController extends BaseController {
/**
* 查询项目是否存在出库记录
*/
- @SaCheckPermission("oa:project:list")
@GetMapping("/outWare/list")
public TableDataInfo outWareList(SysOaWarehouseDetailBo bo, PageQuery pageQuery) {
return iSysOaProjectService.queryOutWarePageList(bo, pageQuery);
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaProgress.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaProgress.java
new file mode 100644
index 0000000..4ae7517
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaProgress.java
@@ -0,0 +1,75 @@
+package com.ruoyi.oa.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 进度管理对象 oa_progress
+ *
+ * @author hdka
+ * @date 2025-04-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("oa_progress")
+public class OaProgress extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "progress_id")
+ private Long progressId;
+ /**
+ * 所属项目ID(可根据实际需要)
+ */
+ private Long projectId;
+ /**
+ * 进度类型:1-项目进度;2-付款进度(可根据实际约定)
+ */
+ private Long type;
+ /**
+ * 进度名称
+ */
+ private String progressName;
+ /**
+ * 父进度ID,0或NULL表示没有父节点
+ */
+ private Long parentId;
+ /**
+ * 删除标志:0-正常;1-删除
+ */
+ @TableLogic
+ private Long delFlag;
+ /**
+ * 排序字段(如需)
+ */
+ private Long sort;
+ /**
+ * 备注(如需)
+ */
+ private String remark;
+ /**
+ * 备注(如需)
+ */
+ private String timeRemark;
+
+ /**
+ * 状态位
+ */
+ private Long status;
+ /**
+ * 套数
+ */
+ private Long amount;
+ /**
+ * 联系人电话
+ */
+ private String contactPhone;
+
+
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaProgressDetail.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaProgressDetail.java
new file mode 100644
index 0000000..305dca5
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaProgressDetail.java
@@ -0,0 +1,88 @@
+package com.ruoyi.oa.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 进度扩展对象 oa_progress_detail
+ *
+ * @author hdka2
+ * @date 2025-04-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("oa_progress_detail")
+public class OaProgressDetail extends BaseEntity {
+
+ private static final long serialVersionUID=1L;
+
+ /**
+ * 主键ID
+ */
+ @TableId(value = "detail_id")
+ private Long detailId;
+ /**
+ * 关联的进度ID,关联 project_progress.id
+ */
+ private Long progressId;
+ /**
+ * 子进度名称
+ */
+ private String detailName;
+ /**
+ * 计划开始日期(项目进度)
+ */
+ private Date planStartDate;
+ /**
+ * 计划结束日期(项目进度)
+ */
+ private Date planEndDate;
+ /**
+ * 实际开始日期(项目进度)
+ */
+ private Date actualStartDate;
+ /**
+ * 实际结束日期(项目进度)
+ */
+ private Date actualEndDate;
+ /**
+ * 完成百分比(项目进度)
+ */
+ private BigDecimal completePercent;
+ /**
+ * 计划付款日期(付款进度)
+ */
+ private Date planPayDate;
+ /**
+ * 应付金额(付款进度)
+ */
+ private BigDecimal payAmount;
+ /**
+ * 已付金额(付款进度)
+ */
+ private BigDecimal paidAmount;
+ /**
+ * 删除标志:0-正常;1-删除
+ */
+ @TableLogic
+ private Long delFlag;
+ /**
+ * 备注(如需)
+ */
+ private String remark;
+ /**
+ * 子进度状态
+ */
+ private Long detailStatus;
+
+ private String department;
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaProgressBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaProgressBo.java
new file mode 100644
index 0000000..83d6b98
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaProgressBo.java
@@ -0,0 +1,82 @@
+package com.ruoyi.oa.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import com.ruoyi.oa.domain.OaProgressDetail;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+import java.util.List;
+
+/**
+ * 进度管理业务对象 oa_progress
+ *
+ * @author hdka
+ * @date 2025-04-14
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class OaProgressBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ private Long progressId;
+
+ /**
+ * 所属项目ID(可根据实际需要)
+ */
+ @NotNull(message = "所属项目ID(可根据实际需要)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long projectId;
+
+ /**
+ * 进度类型:1-项目进度;2-付款进度(可根据实际约定)
+ */
+ private Long type;
+
+ /**
+ * 进度名称
+ */
+ private String progressName;
+
+ /**
+ * 父进度ID,0或NULL表示没有父节点
+ */
+ private Long parentId;
+
+ /**
+ * 排序字段(如需)
+ */
+ private Long sort;
+
+ /**
+ * 备注(如需)
+ */
+ private String remark;
+ /**
+ * 备注(如需)
+ */
+ private String timeRemark;
+
+ /**
+ * 状态位
+ */
+ private Long status;
+
+ /**
+ * 套数
+ */
+ private Long amount;
+
+ private List detailList;
+
+ /**
+ * 联系人电话
+ */
+ private String contactPhone;
+
+
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaProgressDetailBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaProgressDetailBo.java
new file mode 100644
index 0000000..7edc61f
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaProgressDetailBo.java
@@ -0,0 +1,108 @@
+package com.ruoyi.oa.domain.bo;
+
+import com.ruoyi.common.core.validate.AddGroup;
+import com.ruoyi.common.core.validate.EditGroup;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import javax.validation.constraints.*;
+
+import java.util.Date;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 进度扩展业务对象 oa_progress_detail
+ *
+ * @author hdka2
+ * @date 2025-04-14
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class OaProgressDetailBo extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ private Long detailId;
+
+ /**
+ * 关联的进度ID,关联 project_progress.id
+ */
+ private Long progressId;
+
+ /**
+ * 子进度名称
+ */
+ private String detailName;
+
+ /**
+ * 计划开始日期(项目进度)
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date planStartDate;
+
+ /**
+ * 计划结束日期(项目进度)
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date planEndDate;
+
+ /**
+ * 实际开始日期(项目进度)
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date actualStartDate;
+
+ /**
+ * 实际结束日期(项目进度)
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date actualEndDate;
+
+ /**
+ * 完成百分比(项目进度)
+ */
+ private BigDecimal completePercent;
+
+ /**
+ * 计划付款日期(付款进度)
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date planPayDate;
+
+ /**
+ * 应付金额(付款进度)
+ */
+ private BigDecimal payAmount;
+
+ /**
+ * 已付金额(付款进度)
+ */
+ private BigDecimal paidAmount;
+
+ /**
+ * 备注(如需)
+ */
+ private String remark;
+
+ /**
+ * 子进度状态
+ */
+ private Long detailStatus;
+
+ /**
+ * 负责部门
+ */
+ private String department;
+
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/EmployeeOffboardingVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/EmployeeOffboardingVo.java
index d04fa68..90f70ee 100644
--- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/EmployeeOffboardingVo.java
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/EmployeeOffboardingVo.java
@@ -9,7 +9,7 @@ import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
import lombok.Data;
import java.util.Date;
-
+import java.util.List;
/**
@@ -119,5 +119,6 @@ public class EmployeeOffboardingVo {
*/
private String nickName;
+ private List fileList;
}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProgressDetailVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProgressDetailVo.java
new file mode 100644
index 0000000..d56bf40
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProgressDetailVo.java
@@ -0,0 +1,112 @@
+package com.ruoyi.oa.domain.vo;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 进度扩展视图对象 oa_progress_detail
+ *
+ * @author hdka2
+ * @date 2025-04-14
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class OaProgressDetailVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long detailId;
+
+ /**
+ * 关联的进度ID,关联 project_progress.id
+ */
+ @ExcelProperty(value = "关联的进度ID,关联 project_progress.id")
+ private Long progressId;
+
+ /**
+ * 子进度名称
+ */
+ @ExcelProperty(value = "子进度名称")
+ private String detailName;
+
+ /**
+ * 计划开始日期(项目进度)
+ */
+ @ExcelProperty(value = "计划开始日期(项目进度)")
+ private Date planStartDate;
+
+ /**
+ * 计划结束日期(项目进度)
+ */
+ @ExcelProperty(value = "计划结束日期(项目进度)")
+ private Date planEndDate;
+
+ /**
+ * 实际开始日期(项目进度)
+ */
+ @ExcelProperty(value = "实际开始日期(项目进度)")
+ private Date actualStartDate;
+
+ /**
+ * 实际结束日期(项目进度)
+ */
+ @ExcelProperty(value = "实际结束日期(项目进度)")
+ private Date actualEndDate;
+
+ /**
+ * 完成百分比(项目进度)
+ */
+ @ExcelProperty(value = "完成百分比(项目进度)")
+ private BigDecimal completePercent;
+
+ /**
+ * 计划付款日期(付款进度)
+ */
+ @ExcelProperty(value = "计划付款日期(付款进度)")
+ private Date planPayDate;
+
+ /**
+ * 应付金额(付款进度)
+ */
+ @ExcelProperty(value = "应付金额(付款进度)")
+ private BigDecimal payAmount;
+
+ /**
+ * 已付金额(付款进度)
+ */
+ @ExcelProperty(value = "已付金额(付款进度)")
+ private BigDecimal paidAmount;
+
+ /**
+ * 备注(如需)
+ */
+ @ExcelProperty(value = "备注(如需)")
+ private String remark;
+
+ /**
+ * 子进度状态
+ */
+ @ExcelProperty(value = "子进度状态")
+ private Long detailStatus;
+
+ /**
+ * 负责部门
+ */
+ private String department;
+
+ private Long remainTime;
+
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProgressVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProgressVo.java
new file mode 100644
index 0000000..a79028a
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProgressVo.java
@@ -0,0 +1,111 @@
+package com.ruoyi.oa.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.annotation.ExcelDictFormat;
+import com.ruoyi.common.convert.ExcelDictConvert;
+import com.ruoyi.oa.domain.OaProgress;
+import lombok.Data;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * 进度管理视图对象 oa_progress
+ *
+ * @author hdka
+ * @date 2025-04-14
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class OaProgressVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键ID
+ */
+ @ExcelProperty(value = "主键ID")
+ private Long progressId;
+
+ /**
+ * 所属项目ID(可根据实际需要)
+ */
+ @ExcelProperty(value = "所属项目ID(可根据实际需要)")
+ private Long projectId;
+
+ /**
+ * 所属项目ID(可根据实际需要)
+ */
+ private String projectName;
+
+ /**
+ * 所属项目ID(可根据实际需要)
+ */
+ private String projectNum;
+
+ /**
+ * 进度类型:1-项目进度;2-付款进度(可根据实际约定)
+ */
+ @ExcelProperty(value = "进度类型:1-项目进度;2-付款进度(可根据实际约定)")
+ private Long type;
+
+ /**
+ * 进度名称
+ */
+ @ExcelProperty(value = "进度名称")
+ private String progressName;
+
+ /**
+ * 父进度ID,0或NULL表示没有父节点
+ */
+ @ExcelProperty(value = "父进度ID,0或NULL表示没有父节点")
+ private Long parentId;
+
+ /**
+ * 排序字段(如需)
+ */
+ @ExcelProperty(value = "排序字段(如需)")
+ private Long sort;
+
+ /**
+ * 备注(如需)
+ */
+ @ExcelProperty(value = "备注(如需)")
+ private String remark;
+
+ /**
+ * 备注(如需)
+ */
+ private String timeRemark;
+
+ /**
+ * 状态位
+ */
+ @ExcelProperty(value = "状态位")
+ private Long status;
+
+ /**
+ * 套数
+ */
+ private Long amount;
+
+ private List children;
+
+ /**
+ * 联系人电话
+ */
+ private String contactPhone;
+
+ // 新增统计字段
+ private Long progressSize;
+ private Long finishCount;
+ private Double completionPercent;
+ private Long remainTime;
+ private Double detailCompletePercent;
+ private String nowLevel;
+ private Long nowLevelId;
+ // 项目合同金额
+ private Double funds;
+
+}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaProjectVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaProjectVo.java
index 7964551..836eeb3 100644
--- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaProjectVo.java
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/SysOaProjectVo.java
@@ -11,6 +11,8 @@ import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
import com.ruoyi.oa.domain.SysOaTask;
import lombok.Data;
+import lombok.NoArgsConstructor;
+
import java.util.Date;
import java.util.List;
@@ -23,6 +25,7 @@ import java.util.List;
*/
@Data
@ExcelIgnoreUnannotated
+@NoArgsConstructor
public class SysOaProjectVo {
private static final long serialVersionUID = 1L;
@@ -219,4 +222,6 @@ public class SysOaProjectVo {
* 最近更新时间
*/
private Date updateTime;
+
+ private List progressList;
}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/UserFilesVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/UserFilesVo.java
index 5031d90..f877f4a 100644
--- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/UserFilesVo.java
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/UserFilesVo.java
@@ -15,4 +15,6 @@ public class UserFilesVo {
private String phonenumber;
private List fileList;
+
+ private String files;
}
diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProgressDetailMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProgressDetailMapper.java
new file mode 100644
index 0000000..58ec2a8
--- /dev/null
+++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProgressDetailMapper.java
@@ -0,0 +1,20 @@
+package com.ruoyi.oa.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.oa.domain.OaProgressDetail;
+import com.ruoyi.oa.domain.vo.OaProgressDetailVo;
+import com.ruoyi.common.core.mapper.BaseMapperPlus;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 进度扩展Mapper接口
+ *
+ * @author hdka2
+ * @date 2025-04-14
+ */
+public interface OaProgressDetailMapper extends BaseMapperPlus {
+
+ Page selectVoPagePlus(@Param("page") Page