From e159c3acc092abee64a3155cc075a9d43700cd8a Mon Sep 17 00:00:00 2001 From: hdka <823267011@qq.com> Date: Thu, 17 Apr 2025 16:46:47 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E5=BA=A6=E6=8E=A7=E5=88=B6=E5=BC=80?= =?UTF-8?q?=E5=8F=91=EF=BC=8C=E4=BB=BB=E5=8A=A1=E6=A8=A1=E5=BC=8Fbug?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-oa/pom.xml | 1 - .../oa/controller/OaProgressController.java | 153 ++++++++++++++++++ .../OaProgressDetailController.java | 99 ++++++++++++ .../oa/controller/SysOaProjectController.java | 7 - .../java/com/ruoyi/oa/domain/OaProgress.java | 75 +++++++++ .../com/ruoyi/oa/domain/OaProgressDetail.java | 88 ++++++++++ .../com/ruoyi/oa/domain/bo/OaProgressBo.java | 82 ++++++++++ .../oa/domain/bo/OaProgressDetailBo.java | 108 +++++++++++++ .../oa/domain/vo/EmployeeOffboardingVo.java | 3 +- .../oa/domain/vo/OaProgressDetailVo.java | 112 +++++++++++++ .../com/ruoyi/oa/domain/vo/OaProgressVo.java | 111 +++++++++++++ .../ruoyi/oa/domain/vo/SysOaProjectVo.java | 5 + .../com/ruoyi/oa/domain/vo/UserFilesVo.java | 2 + .../oa/mapper/OaProgressDetailMapper.java | 20 +++ .../com/ruoyi/oa/mapper/OaProgressMapper.java | 29 ++++ .../ruoyi/oa/mapper/SysOaProjectMapper.java | 1 + .../oa/service/IOaProgressDetailService.java | 49 ++++++ .../ruoyi/oa/service/IOaProgressService.java | 57 +++++++ .../oa/service/ISysOaProjectService.java | 8 + .../impl/EmployeeFilesServiceImpl.java | 19 ++- .../impl/EmployeeOffboardingServiceImpl.java | 12 +- .../impl/OaProgressDetailServiceImpl.java | 119 ++++++++++++++ .../service/impl/OaProgressServiceImpl.java | 130 +++++++++++++++ .../service/impl/SysOaProjectServiceImpl.java | 13 ++ .../oa/service/impl/SysOaTaskServiceImpl.java | 3 +- .../mapper/oa/EmployeeFilesMapper.xml | 14 +- .../mapper/oa/OaProgressDetailMapper.xml | 54 +++++++ .../resources/mapper/oa/OaProgressMapper.xml | 87 ++++++++++ .../mapper/oa/SysOaProjectMapper.xml | 99 ++++++++++++ .../ruoyi/system/service/SysLoginService.java | 3 +- 30 files changed, 1537 insertions(+), 26 deletions(-) create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaProgressController.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaProgressDetailController.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaProgress.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaProgressDetail.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaProgressBo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaProgressDetailBo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProgressDetailVo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProgressVo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProgressDetailMapper.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProgressMapper.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaProgressDetailService.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaProgressService.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProgressDetailServiceImpl.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProgressServiceImpl.java create mode 100644 ruoyi-oa/src/main/resources/mapper/oa/OaProgressDetailMapper.xml create mode 100644 ruoyi-oa/src/main/resources/mapper/oa/OaProgressMapper.xml 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 build,@Param(Constants.WRAPPER) LambdaQueryWrapper lqw); +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProgressMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProgressMapper.java new file mode 100644 index 0000000..afb3973 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProgressMapper.java @@ -0,0 +1,29 @@ +package com.ruoyi.oa.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.oa.domain.OaProgress; +import com.ruoyi.oa.domain.OaProgressDetail; +import com.ruoyi.oa.domain.vo.OaProgressVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 进度管理Mapper接口 + * + * @author hdka + * @date 2025-04-14 + */ +public interface OaProgressMapper extends BaseMapperPlus { + + /** + * 获取关键字列表 + * @return + */ + List getKeyList(); + + Page selectVoPagePlus(@Param("page") Page build,@Param(Constants.WRAPPER) QueryWrapper lqw); +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaProjectMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaProjectMapper.java index a3b1c2f..8d740ee 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaProjectMapper.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/SysOaProjectMapper.java @@ -42,4 +42,5 @@ public interface SysOaProjectMapper extends BaseMapperPlus selectFileVoList(@Param("page") Page build, @Param(Constants.WRAPPER) QueryWrapper sysOaProjectQueryWrapper); + Page selectVoAndProgress(@Param("page") Page build, @Param(Constants.WRAPPER) LambdaQueryWrapper sysOaProjectQueryWrapper); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaProgressDetailService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaProgressDetailService.java new file mode 100644 index 0000000..49b0f69 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaProgressDetailService.java @@ -0,0 +1,49 @@ +package com.ruoyi.oa.service; + +import com.ruoyi.oa.domain.OaProgressDetail; +import com.ruoyi.oa.domain.vo.OaProgressDetailVo; +import com.ruoyi.oa.domain.bo.OaProgressDetailBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 进度扩展Service接口 + * + * @author hdka2 + * @date 2025-04-14 + */ +public interface IOaProgressDetailService { + + /** + * 查询进度扩展 + */ + OaProgressDetailVo queryById(Long detailId); + + /** + * 查询进度扩展列表 + */ + TableDataInfo queryPageList(OaProgressDetailBo bo, PageQuery pageQuery); + + /** + * 查询进度扩展列表 + */ + List queryList(OaProgressDetailBo bo); + + /** + * 新增进度扩展 + */ + Boolean insertByBo(OaProgressDetailBo bo); + + /** + * 修改进度扩展 + */ + Boolean updateByBo(OaProgressDetailBo bo); + + /** + * 校验并批量删除进度扩展信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaProgressService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaProgressService.java new file mode 100644 index 0000000..4e55e17 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaProgressService.java @@ -0,0 +1,57 @@ +package com.ruoyi.oa.service; + +import com.ruoyi.oa.domain.OaProgressDetail; +import com.ruoyi.oa.domain.vo.OaProgressVo; +import com.ruoyi.oa.domain.bo.OaProgressBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 进度管理Service接口 + * + * @author hdka + * @date 2025-04-14 + */ +public interface IOaProgressService { + + /** + * 查询进度管理 + */ + OaProgressVo queryById(Long progressId); + + /** + * 查询进度管理列表 + */ + TableDataInfo queryPageList(OaProgressBo bo, PageQuery pageQuery); + + /** + * 查询进度管理列表 + */ + List queryList(OaProgressBo bo); + + /** + * 新增进度管理 + */ + Boolean insertByBo(OaProgressBo bo); + + /** + * 修改进度管理 + */ + Boolean updateByBo(OaProgressBo bo); + + /** + * 校验并批量删除进度管理信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 获取关键字 + * + * @return + */ + List getKeyList(); + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaProjectService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaProjectService.java index 832dbe3..4dce493 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaProjectService.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/ISysOaProjectService.java @@ -66,4 +66,12 @@ public interface ISysOaProjectService { List getProjectDataByMonthAndDate(); TableDataInfo queryFiles(SysOaWarehouseDetailBo bo, PageQuery pageQuery); + + /** + * 查询进度使用的查询接口 + * @param bo + * @param pageQuery + * @return + */ + TableDataInfo queryPageList2(SysOaProjectBo bo, PageQuery pageQuery); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/EmployeeFilesServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/EmployeeFilesServiceImpl.java index 8a73292..18940e9 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/EmployeeFilesServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/EmployeeFilesServiceImpl.java @@ -20,9 +20,8 @@ import com.ruoyi.oa.domain.EmployeeFiles; import com.ruoyi.oa.mapper.EmployeeFilesMapper; import com.ruoyi.oa.service.IEmployeeFilesService; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; +import java.util.stream.Collectors; /** * 文件档案管理Service业务层处理 @@ -85,10 +84,16 @@ public class EmployeeFilesServiceImpl implements IEmployeeFilesService { public Boolean insertByBo(UserFilesVo userFilesVo) { // 删除该用户所有的文件,重新填入 // baseMapper.deleteByUserId(userFilesVo.getUserId()); 似乎不用删 - List fileList = userFilesVo.getFileList(); - fileList.forEach(file -> { - EmployeeFiles employeeFiles = BeanUtil.toBean(file, EmployeeFiles.class); - employeeFiles.setFilePath(file.getFilePath()); + List fileUrls = new ArrayList<>(); + if (userFilesVo.getUserId() != null){ + fileUrls = Arrays.stream( userFilesVo.getFiles().split(",")) + .map(String::valueOf) + .collect(Collectors.toList()); + } + + fileUrls.forEach(file -> { + EmployeeFiles employeeFiles = new EmployeeFiles(); + employeeFiles.setFilePath(file); employeeFiles.setUserId(userFilesVo.getUserId()); baseMapper.insert(employeeFiles); }); diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/EmployeeOffboardingServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/EmployeeOffboardingServiceImpl.java index 233558b..ddf3e47 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/EmployeeOffboardingServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/EmployeeOffboardingServiceImpl.java @@ -8,6 +8,9 @@ import com.ruoyi.common.core.domain.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.oa.domain.EmployeeFiles; +import com.ruoyi.oa.domain.vo.EmployeeFilesVo; +import com.ruoyi.oa.mapper.EmployeeFilesMapper; import com.ruoyi.system.service.ISysUserService; import liquibase.pro.packaged.A; import lombok.RequiredArgsConstructor; @@ -38,6 +41,9 @@ public class EmployeeOffboardingServiceImpl implements IEmployeeOffboardingServi @Autowired private ISysUserService userService; + @Autowired + private EmployeeFilesMapper filesMapper; + /** * 查询离职管理 */ @@ -58,7 +64,11 @@ public class EmployeeOffboardingServiceImpl implements IEmployeeOffboardingServi Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); result.getRecords().forEach(item -> { SysUser sysUser = userService.selectUserByIdAndNotDelFlag(item.getUserId()); - item.setNickName(sysUser.getUserName()); + item.setNickName(sysUser.getNickName()); + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(EmployeeFiles::getUserId, sysUser.getUserId()); + List employeeFiles = filesMapper.selectVoList(queryWrapper); + item.setFileList(employeeFiles); }); return TableDataInfo.build(result); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProgressDetailServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProgressDetailServiceImpl.java new file mode 100644 index 0000000..3b7f4ba --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProgressDetailServiceImpl.java @@ -0,0 +1,119 @@ +package com.ruoyi.oa.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.oa.domain.bo.OaProgressDetailBo; +import com.ruoyi.oa.domain.vo.OaProgressDetailVo; +import com.ruoyi.oa.domain.OaProgressDetail; +import com.ruoyi.oa.mapper.OaProgressDetailMapper; +import com.ruoyi.oa.service.IOaProgressDetailService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 进度扩展Service业务层处理 + * + * @author hdka2 + * @date 2025-04-14 + */ +@RequiredArgsConstructor +@Service +public class OaProgressDetailServiceImpl implements IOaProgressDetailService { + + private final OaProgressDetailMapper baseMapper; + + /** + * 查询进度扩展 + */ + @Override + public OaProgressDetailVo queryById(Long detailId){ + return baseMapper.selectVoById(detailId); + } + + /** + * 查询进度扩展列表 + */ + @Override + public TableDataInfo queryPageList(OaProgressDetailBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPagePlus(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询进度扩展列表 + */ + @Override + public List queryList(OaProgressDetailBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(OaProgressDetailBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getProgressId() != null, OaProgressDetail::getProgressId, bo.getProgressId()); + lqw.like(StringUtils.isNotBlank(bo.getDetailName()), OaProgressDetail::getDetailName, bo.getDetailName()); + lqw.eq(bo.getPlanStartDate() != null, OaProgressDetail::getPlanStartDate, bo.getPlanStartDate()); + lqw.eq(bo.getPlanEndDate() != null, OaProgressDetail::getPlanEndDate, bo.getPlanEndDate()); + lqw.eq(bo.getActualStartDate() != null, OaProgressDetail::getActualStartDate, bo.getActualStartDate()); + lqw.eq(bo.getActualEndDate() != null, OaProgressDetail::getActualEndDate, bo.getActualEndDate()); + lqw.eq(bo.getCompletePercent() != null, OaProgressDetail::getCompletePercent, bo.getCompletePercent()); + lqw.eq(bo.getPlanPayDate() != null, OaProgressDetail::getPlanPayDate, bo.getPlanPayDate()); + lqw.eq(bo.getPayAmount() != null, OaProgressDetail::getPayAmount, bo.getPayAmount()); + lqw.eq(bo.getPaidAmount() != null, OaProgressDetail::getPaidAmount, bo.getPaidAmount()); + lqw.eq(bo.getDetailStatus() != null, OaProgressDetail::getDetailStatus, bo.getDetailStatus()); + return lqw; + } + + /** + * 新增进度扩展 + */ + @Override + public Boolean insertByBo(OaProgressDetailBo bo) { + OaProgressDetail add = BeanUtil.toBean(bo, OaProgressDetail.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setDetailId(add.getDetailId()); + } + return flag; + } + + /** + * 修改进度扩展 + */ + @Override + public Boolean updateByBo(OaProgressDetailBo bo) { + OaProgressDetail update = BeanUtil.toBean(bo, OaProgressDetail.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(OaProgressDetail entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除进度扩展 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProgressServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProgressServiceImpl.java new file mode 100644 index 0000000..639cc17 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProgressServiceImpl.java @@ -0,0 +1,130 @@ +package com.ruoyi.oa.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.oa.domain.OaProgressDetail; +import com.ruoyi.oa.domain.bo.OaProgressDetailBo; +import com.ruoyi.oa.service.IOaProgressDetailService; +import com.ruoyi.oa.service.ISysOaProjectService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.oa.domain.bo.OaProgressBo; +import com.ruoyi.oa.domain.vo.OaProgressVo; +import com.ruoyi.oa.domain.OaProgress; +import com.ruoyi.oa.mapper.OaProgressMapper; +import com.ruoyi.oa.service.IOaProgressService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 进度管理Service业务层处理 + * + * @author hdka + * @date 2025-04-14 + */ +@RequiredArgsConstructor +@Service +public class OaProgressServiceImpl implements IOaProgressService { + + private final OaProgressMapper baseMapper; + + private final IOaProgressDetailService detailService; + + private final ISysOaProjectService projectService; + + /** + * 查询进度管理 + */ + @Override + public OaProgressVo queryById(Long progressId){ + return baseMapper.selectVoById(progressId); + } + + /** + * 查询进度管理列表 + */ + @Override + public TableDataInfo queryPageList(OaProgressBo bo, PageQuery pageQuery) { + QueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPagePlus(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询进度管理列表 + */ + @Override + public List queryList(OaProgressBo bo) { + QueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private QueryWrapper buildQueryWrapper(OaProgressBo bo) { + Map params = bo.getParams(); + QueryWrapper lqw = Wrappers.query(); + lqw.eq("op.del_flag", 0); + lqw.eq(bo.getProjectId() != null, "op.project_id", bo.getProjectId()); + lqw.eq(bo.getType() != null, "op.type", bo.getType()); + lqw.like(StringUtils.isNotBlank(bo.getProgressName()), "op.progress_name", bo.getProgressName()); + lqw.eq(bo.getParentId() != null, "op.parent_id", bo.getParentId()); + lqw.eq(bo.getStatus() != null, "op.status", bo.getStatus()); + return lqw; + } + + /** + * 新增进度管理 + */ + @Override + public Boolean insertByBo(OaProgressBo bo) { + OaProgress add = BeanUtil.toBean(bo, OaProgress.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + List detailList = bo.getDetailList(); + for (OaProgressDetailBo detailBo : detailList) { + detailBo.setProgressId(add.getProgressId()); + detailService.insertByBo(detailBo); + } + return flag; + } + + /** + * 修改进度管理 + */ + @Override + public Boolean updateByBo(OaProgressBo bo) { + OaProgress update = BeanUtil.toBean(bo, OaProgress.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(OaProgress entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除进度管理 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } + + @Override + public List getKeyList() { + return baseMapper.getKeyList(); + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaProjectServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaProjectServiceImpl.java index 83b45d7..e005d86 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaProjectServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaProjectServiceImpl.java @@ -206,6 +206,19 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService { return TableDataInfo.build(result); } + /** + * 进度使用的查询接口 + * @param bo + * @param pageQuery + * @return + */ + @Override + public TableDataInfo queryPageList2(SysOaProjectBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoAndProgress(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + private QueryWrapper buildOutWareQueryWrapper(SysOaWarehouseDetailBo bo) { QueryWrapper lqw = Wrappers.query(); lqw.like(StringUtils.isNotBlank(bo.getProjectName()), "sop.projec_name", bo.getProjectName()); diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java index c6c06d5..7c5ec7a 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaTaskServiceImpl.java @@ -158,10 +158,11 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { List workerIdList = new ArrayList<>(); // 拿到所有的执行人id列表进行遍历添加 if (bo.getWorkerId()!=null) { - workerIdList = Arrays.stream( bo.getWorkerIds().split(",")) + workerIdList = Arrays.stream(bo.getWorkerIds().split(",")) .map(Long::valueOf) .collect(Collectors.toList()); }else{ + // 适配文件上传 bo.setBeginTime(new Date()); bo.setCompletedTime(new Date()); bo.setFinishTime(new Date()); diff --git a/ruoyi-oa/src/main/resources/mapper/oa/EmployeeFilesMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/EmployeeFilesMapper.xml index 40ce84e..6596986 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/EmployeeFilesMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/EmployeeFilesMapper.xml @@ -24,14 +24,14 @@ diff --git a/ruoyi-oa/src/main/resources/mapper/oa/OaProgressDetailMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/OaProgressDetailMapper.xml new file mode 100644 index 0000000..07a9ff2 --- /dev/null +++ b/ruoyi-oa/src/main/resources/mapper/oa/OaProgressDetailMapper.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-oa/src/main/resources/mapper/oa/OaProgressMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/OaProgressMapper.xml new file mode 100644 index 0000000..aa7e57d --- /dev/null +++ b/ruoyi-oa/src/main/resources/mapper/oa/OaProgressMapper.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaProjectMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaProjectMapper.xml index 9e57c17..f9c8aa0 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/SysOaProjectMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaProjectMapper.xml @@ -292,6 +292,7 @@ p.color, TIMESTAMPDIFF(DAY, NOW(), p.postpone_time) AS remainTime FROM sys_oa_project p + ${ew.getCustomSqlSegment} @@ -380,4 +381,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java index bbb626c..3a76457 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysLoginService.java @@ -210,7 +210,8 @@ public class SysLoginService { private SysUser loadUserByUsername(String username) { SysUser user = userMapper.selectOne(new LambdaQueryWrapper() .select(SysUser::getUserName, SysUser::getStatus) - .eq(SysUser::getUserName, username)); + .eq(SysUser::getUserName, username) + .eq(SysUser::getDelFlag,0)); if (ObjectUtil.isNull(user)) { log.info("登录用户:{} 不存在.", username); throw new UserException("user.not.exists", username);