From ca3724ff329cd2d148565032afdd458e96be1677 Mon Sep 17 00:00:00 2001 From: hdka <823267011@qq.com> Date: Thu, 8 May 2025 20:42:58 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=BF=9B=E5=BA=A6=E6=8E=A7?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oa/controller/OaProgressController.java | 1 + .../OaProjectScheduleController.java | 112 ++++++++++ .../OaProjectScheduleStepController.java | 99 +++++++++ .../OaScheduleTemplateController.java | 99 +++++++++ .../OaScheduleTemplateStepController.java | 99 +++++++++ .../com/ruoyi/oa/domain/OaProgressDetail.java | 3 + .../ruoyi/oa/domain/OaProjectSchedule.java | 66 ++++++ .../oa/domain/OaProjectScheduleStep.java | 79 +++++++ .../ruoyi/oa/domain/OaScheduleTemplate.java | 48 +++++ .../oa/domain/OaScheduleTemplateStep.java | 60 ++++++ .../com/ruoyi/oa/domain/SysOaProject.java | 10 + .../oa/domain/bo/OaProjectScheduleBo.java | 75 +++++++ .../oa/domain/bo/OaProjectScheduleStepBo.java | 94 +++++++++ .../oa/domain/bo/OaScheduleTemplateBo.java | 40 ++++ .../domain/bo/OaScheduleTemplateStepBo.java | 60 ++++++ .../ruoyi/oa/domain/bo/SysOaProjectBo.java | 12 ++ .../oa/domain/vo/OaProjectScheduleStepVo.java | 100 +++++++++ .../oa/domain/vo/OaProjectScheduleVo.java | 90 ++++++++ .../domain/vo/OaScheduleTemplateStepVo.java | 67 ++++++ .../oa/domain/vo/OaScheduleTemplateVo.java | 49 +++++ .../ruoyi/oa/domain/vo/SysOaProjectVo.java | 10 + .../oa/mapper/OaProjectScheduleMapper.java | 20 ++ .../mapper/OaProjectScheduleStepMapper.java | 27 +++ .../oa/mapper/OaScheduleTemplateMapper.java | 15 ++ .../mapper/OaScheduleTemplateStepMapper.java | 20 ++ .../oa/service/IOaProjectScheduleService.java | 56 +++++ .../IOaProjectScheduleStepService.java | 58 ++++++ .../service/IOaScheduleTemplateService.java | 49 +++++ .../IOaScheduleTemplateStepService.java | 49 +++++ .../impl/OaProjectScheduleServiceImpl.java | 197 ++++++++++++++++++ .../OaProjectScheduleStepServiceImpl.java | 130 ++++++++++++ .../impl/OaScheduleTemplateServiceImpl.java | 110 ++++++++++ .../OaScheduleTemplateStepServiceImpl.java | 118 +++++++++++ .../service/impl/SysOaProjectServiceImpl.java | 2 + .../mapper/oa/OaProjectScheduleMapper.xml | 79 +++++++ .../mapper/oa/OaProjectScheduleStepMapper.xml | 142 +++++++++++++ .../mapper/oa/OaScheduleTemplateMapper.xml | 20 ++ .../oa/OaScheduleTemplateStepMapper.xml | 40 ++++ .../mapper/oa/SysOaProjectMapper.xml | 2 + .../java/com/ruoyi/system/domain/SysOss.java | 2 + .../service/impl/WfProcessServiceImpl.java | 3 +- script/sql/20250507添加项目进度/schedule.sql | 76 +++++++ 42 files changed, 2487 insertions(+), 1 deletion(-) create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaProjectScheduleController.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaProjectScheduleStepController.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaScheduleTemplateController.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaScheduleTemplateStepController.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaProjectSchedule.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaProjectScheduleStep.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaScheduleTemplate.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaScheduleTemplateStep.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaProjectScheduleBo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaProjectScheduleStepBo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaScheduleTemplateBo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaScheduleTemplateStepBo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProjectScheduleStepVo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProjectScheduleVo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaScheduleTemplateStepVo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaScheduleTemplateVo.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProjectScheduleMapper.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProjectScheduleStepMapper.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaScheduleTemplateMapper.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaScheduleTemplateStepMapper.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaProjectScheduleService.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaProjectScheduleStepService.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaScheduleTemplateService.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaScheduleTemplateStepService.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectScheduleServiceImpl.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectScheduleStepServiceImpl.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaScheduleTemplateServiceImpl.java create mode 100644 ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaScheduleTemplateStepServiceImpl.java create mode 100644 ruoyi-oa/src/main/resources/mapper/oa/OaProjectScheduleMapper.xml create mode 100644 ruoyi-oa/src/main/resources/mapper/oa/OaProjectScheduleStepMapper.xml create mode 100644 ruoyi-oa/src/main/resources/mapper/oa/OaScheduleTemplateMapper.xml create mode 100644 ruoyi-oa/src/main/resources/mapper/oa/OaScheduleTemplateStepMapper.xml create mode 100644 script/sql/20250507添加项目进度/schedule.sql 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 index 075f4ac..70959e7 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaProgressController.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaProgressController.java @@ -63,6 +63,7 @@ public class OaProgressController extends BaseController { */ @GetMapping("/one-list") public TableDataInfo oneList(SysOaProjectBo bo, PageQuery pageQuery) { + bo.setTradeType(1L); return projectService.queryPageList2(bo, pageQuery); } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaProjectScheduleController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaProjectScheduleController.java new file mode 100644 index 0000000..43493cb --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaProjectScheduleController.java @@ -0,0 +1,112 @@ +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.OaProjectScheduleVo; +import com.ruoyi.oa.domain.bo.OaProjectScheduleBo; +import com.ruoyi.oa.service.IOaProjectScheduleService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 项目进度 + * + * @author haka + * @date 2025-05-08 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/oa/projectSchedule") +public class OaProjectScheduleController extends BaseController { + + private final IOaProjectScheduleService iOaProjectScheduleService; + + /** + * 查询项目进度列表 + */ + @GetMapping("/list") + public TableDataInfo list(OaProjectScheduleBo bo, PageQuery pageQuery) { + return iOaProjectScheduleService.queryPageList(bo, pageQuery); + } + + /** + * 导出项目进度列表 + */ + @Log(title = "项目进度", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(OaProjectScheduleBo bo, HttpServletResponse response) { + List list = iOaProjectScheduleService.queryList(bo); + ExcelUtil.exportExcel(list, "项目进度", OaProjectScheduleVo.class, response); + } + + /** + * 获取项目进度详细信息 + * + * @param scheduleId 主键 + */ + @GetMapping("/{scheduleId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long scheduleId) { + return R.ok(iOaProjectScheduleService.queryById(scheduleId)); + } + + /** + * 新增项目进度 + */ + @Log(title = "项目进度", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody OaProjectScheduleBo bo) { + return toAjax(iOaProjectScheduleService.insertByBo(bo)); + } + + /** + * 修改项目进度 + */ + @Log(title = "项目进度", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody OaProjectScheduleBo bo) { + return toAjax(iOaProjectScheduleService.updateByBo(bo)); + } + + /** + * 修改项目进度 + */ + @Log(title = "项目进度", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping("/complete") + public R complete(@RequestBody OaProjectScheduleBo bo) { + return toAjax(iOaProjectScheduleService.complete(bo)); + } + + /** + * 删除项目进度 + * + * @param scheduleIds 主键串 + */ + @Log(title = "项目进度", businessType = BusinessType.DELETE) + @DeleteMapping("/{scheduleIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] scheduleIds) { + return toAjax(iOaProjectScheduleService.deleteWithValidByIds(Arrays.asList(scheduleIds), true)); + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaProjectScheduleStepController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaProjectScheduleStepController.java new file mode 100644 index 0000000..7fcdb9d --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaProjectScheduleStepController.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.OaProjectScheduleStepVo; +import com.ruoyi.oa.domain.bo.OaProjectScheduleStepBo; +import com.ruoyi.oa.service.IOaProjectScheduleStepService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 项目进度步骤跟踪 + * + * @author hdka + * @date 2025-05-08 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/oa/projectScheduleStep") +public class OaProjectScheduleStepController extends BaseController { + + private final IOaProjectScheduleStepService iOaProjectScheduleStepService; + + /** + * 查询项目进度步骤跟踪列表 + */ + @GetMapping("/list") + public TableDataInfo list(OaProjectScheduleStepBo bo, PageQuery pageQuery) { + return iOaProjectScheduleStepService.queryPageList(bo, pageQuery); + } + + /** + * 导出项目进度步骤跟踪列表 + */ + @Log(title = "项目进度步骤跟踪", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(OaProjectScheduleStepBo bo, HttpServletResponse response) { + List list = iOaProjectScheduleStepService.queryList(bo); + ExcelUtil.exportExcel(list, "项目进度步骤跟踪", OaProjectScheduleStepVo.class, response); + } + + /** + * 获取项目进度步骤跟踪详细信息 + * + * @param trackId 主键 + */ + @GetMapping("/{trackId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long trackId) { + return R.ok(iOaProjectScheduleStepService.queryById(trackId)); + } + + /** + * 新增项目进度步骤跟踪 + */ + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody OaProjectScheduleStepBo bo) { + return toAjax(iOaProjectScheduleStepService.insertByBo(bo)); + } + + /** + * 修改项目进度步骤跟踪 + */ + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody OaProjectScheduleStepBo bo) { + return toAjax(iOaProjectScheduleStepService.updateByBo(bo)); + } + + /** + * 删除项目进度步骤跟踪 + * + * @param trackIds 主键串 + */ + @DeleteMapping("/{trackIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] trackIds) { + return toAjax(iOaProjectScheduleStepService.deleteWithValidByIds(Arrays.asList(trackIds), true)); + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaScheduleTemplateController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaScheduleTemplateController.java new file mode 100644 index 0000000..c8351ad --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaScheduleTemplateController.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.OaScheduleTemplateVo; +import com.ruoyi.oa.domain.bo.OaScheduleTemplateBo; +import com.ruoyi.oa.service.IOaScheduleTemplateService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 进度模板主 + * + * @author hdka + * @date 2025-05-08 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/oa/scheduleTemplate") +public class OaScheduleTemplateController extends BaseController { + + private final IOaScheduleTemplateService iOaScheduleTemplateService; + + /** + * 查询进度模板主列表 + */ + @GetMapping("/list") + public TableDataInfo list(OaScheduleTemplateBo bo, PageQuery pageQuery) { + return iOaScheduleTemplateService.queryPageList(bo, pageQuery); + } + + /** + * 导出进度模板主列表 + */ + @Log(title = "进度模板主", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(OaScheduleTemplateBo bo, HttpServletResponse response) { + List list = iOaScheduleTemplateService.queryList(bo); + ExcelUtil.exportExcel(list, "进度模板主", OaScheduleTemplateVo.class, response); + } + + /** + * 获取进度模板主详细信息 + * + * @param templateId 主键 + */ + @GetMapping("/{templateId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long templateId) { + return R.ok(iOaScheduleTemplateService.queryById(templateId)); + } + + /** + * 新增进度模板主 + */ + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody OaScheduleTemplateBo bo) { + return toAjax(iOaScheduleTemplateService.insertByBo(bo)); + } + + /** + * 修改进度模板主 + */ + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody OaScheduleTemplateBo bo) { + return toAjax(iOaScheduleTemplateService.updateByBo(bo)); + } + + /** + * 删除进度模板主 + * + * @param templateIds 主键串 + */ + @DeleteMapping("/{templateIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] templateIds) { + return toAjax(iOaScheduleTemplateService.deleteWithValidByIds(Arrays.asList(templateIds), true)); + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaScheduleTemplateStepController.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaScheduleTemplateStepController.java new file mode 100644 index 0000000..78b0373 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/controller/OaScheduleTemplateStepController.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.OaScheduleTemplateStepVo; +import com.ruoyi.oa.domain.bo.OaScheduleTemplateStepBo; +import com.ruoyi.oa.service.IOaScheduleTemplateStepService; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 进度模板步骤 + * + * @author hdka + * @date 2025-05-08 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/oa/scheduleTemplateStep") +public class OaScheduleTemplateStepController extends BaseController { + + private final IOaScheduleTemplateStepService iOaScheduleTemplateStepService; + + /** + * 查询进度模板步骤列表 + */ + @GetMapping("/list") + public TableDataInfo list(OaScheduleTemplateStepBo bo, PageQuery pageQuery) { + return iOaScheduleTemplateStepService.queryPageList(bo, pageQuery); + } + + /** + * 导出进度模板步骤列表 + */ + @Log(title = "进度模板步骤", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(OaScheduleTemplateStepBo bo, HttpServletResponse response) { + List list = iOaScheduleTemplateStepService.queryList(bo); + ExcelUtil.exportExcel(list, "进度模板步骤", OaScheduleTemplateStepVo.class, response); + } + + /** + * 获取进度模板步骤详细信息 + * + * @param stepId 主键 + */ + @GetMapping("/{stepId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long stepId) { + return R.ok(iOaScheduleTemplateStepService.queryById(stepId)); + } + + /** + * 新增进度模板步骤 + */ + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody OaScheduleTemplateStepBo bo) { + return toAjax(iOaScheduleTemplateStepService.insertByBo(bo)); + } + + /** + * 修改进度模板步骤 + */ + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody OaScheduleTemplateStepBo bo) { + return toAjax(iOaScheduleTemplateStepService.updateByBo(bo)); + } + + /** + * 删除进度模板步骤 + * + * @param stepIds 主键串 + */ + @DeleteMapping("/{stepIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] stepIds) { + return toAjax(iOaScheduleTemplateStepService.deleteWithValidByIds(Arrays.asList(stepIds), true)); + } +} 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 index 305dca5..e9baff1 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaProgressDetail.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaProgressDetail.java @@ -11,6 +11,7 @@ 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 @@ -41,6 +42,8 @@ public class OaProgressDetail extends BaseEntity { /** * 计划开始日期(项目进度) */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") private Date planStartDate; /** * 计划结束日期(项目进度) diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaProjectSchedule.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaProjectSchedule.java new file mode 100644 index 0000000..9a21f2b --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaProjectSchedule.java @@ -0,0 +1,66 @@ +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.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 项目进度对象 oa_project_schedule + * + * @author haka + * @date 2025-05-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("oa_project_schedule") +public class OaProjectSchedule extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 项目进度主键 + */ + @TableId(value = "schedule_id") + private Long scheduleId; + /** + * 项目ID + */ + private Long projectId; + /** + * 引用的进度模板ID + */ + private Long templateId; + /** + * 当前进行到的步骤序号 + */ + private Long currentStep; + /** + * 进度开始时间 + */ + private Date startTime; + /** + * 进度完成时间 + */ + private Date endTime; + /** + * 状态 + */ + private Long status; + /** + * + */ + @TableLogic + private String delFlag; + /** + * + */ + private String remark; + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaProjectScheduleStep.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaProjectScheduleStep.java new file mode 100644 index 0000000..80732e8 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaProjectScheduleStep.java @@ -0,0 +1,79 @@ +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.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 项目进度步骤跟踪对象 oa_project_schedule_step + * + * @author hdka + * @date 2025-05-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("oa_project_schedule_step") +public class OaProjectScheduleStep extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 跟踪记录主键 + */ + @TableId(value = "track_id") + private Long trackId; + /** + * 文件列表 + */ + private String accessory; + /** + * 所属项目进度ID + */ + private Long scheduleId; + /** + * 步骤序号 + */ + private Long stepOrder; + /** + * 步骤名称(冗余存储模板名称) + */ + private String stepName; + /** + * 计划开始 + */ + private Date planStart; + /** + * 计划完成 + */ + private Date planEnd; + /** + * + */ + private Date actualStart; + /** + * + */ + private Date actualEnd; + /** + * 0未开始 1进行中 2完成 3暂停 + */ + private Long status; + + /** + * 进度负责人 + */ + private String header; + /** + * + */ + @TableLogic + private String delFlag; + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaScheduleTemplate.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaScheduleTemplate.java new file mode 100644 index 0000000..d6056e6 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaScheduleTemplate.java @@ -0,0 +1,48 @@ +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 com.ruoyi.common.core.domain.BaseEntity; + +/** + * 进度模板主对象 oa_schedule_template + * + * @author hdka + * @date 2025-05-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("oa_schedule_template") +public class OaScheduleTemplate extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 模板主键 + */ + @TableId(value = "template_id") + private Long templateId; + /** + * 模板名称 + */ + private String templateName; + /** + * 状态(1启用 0停用) + */ + private Long status; + /** + * 删除标识 + */ + @TableLogic + private String delFlag; + /** + * + */ + private String remark; + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaScheduleTemplateStep.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaScheduleTemplateStep.java new file mode 100644 index 0000000..70014b6 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/OaScheduleTemplateStep.java @@ -0,0 +1,60 @@ +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 com.ruoyi.common.core.domain.BaseEntity; + +/** + * 进度模板步骤对象 oa_schedule_template_step + * + * @author hdka + * @date 2025-05-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("oa_schedule_template_step") +public class OaScheduleTemplateStep extends BaseEntity { + + private static final long serialVersionUID=1L; + + /** + * 步骤主键 + */ + @TableId(value = "step_id") + private Long stepId; + /** + * 所属模板ID + */ + private Long templateId; + /** + * 步骤顺序 + */ + private Long stepOrder; + /** + * 步骤名称 + */ + private String stepName; + /** + * 预期耗时(天) + */ + private Long expectedDays; + /** + * 负责人 + */ + private String header; + /** + * + */ + @TableLogic + private String delFlag; + /** + * 详细描述 + */ + private String description; + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaProject.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaProject.java index b4daf6c..8a4545d 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaProject.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/SysOaProject.java @@ -134,4 +134,14 @@ public class SysOaProject extends BaseEntity { * 项目代表色 */ private String color; + + /** + * 交易类型 + */ + private Long tradeType; + + /** + * 预付款 + */ + private Double prePay; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaProjectScheduleBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaProjectScheduleBo.java new file mode 100644 index 0000000..f1cef30 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaProjectScheduleBo.java @@ -0,0 +1,75 @@ +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.OaProjectScheduleStep; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.*; + +import java.util.Date; + +import java.util.Date; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 项目进度业务对象 oa_project_schedule + * + * @author haka + * @date 2025-05-08 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class OaProjectScheduleBo extends BaseEntity { + + /** + * 项目进度主键 + */ + @NotNull(message = "项目进度主键不能为空", groups = { EditGroup.class }) + private Long scheduleId; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 引用的进度模板ID + */ + private Long templateId; + + /** + * 当前进行到的步骤序号 + */ + private Long currentStep; + + /** + * 进度开始时间 + */ + private Date startTime; + + /** + * 进度完成时间 + */ + private Date endTime; + + /** + * 状态 + */ + private Long status; + + /** + * + */ + private String remark; + + private Double prePay; + + private String mode; + + private List steps; +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaProjectScheduleStepBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaProjectScheduleStepBo.java new file mode 100644 index 0000000..b59ce4a --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaProjectScheduleStepBo.java @@ -0,0 +1,94 @@ +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.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.domain.BaseEntity; +import org.springframework.format.annotation.DateTimeFormat; + +/** + * 项目进度步骤跟踪业务对象 oa_project_schedule_step + * + * @author hdka + * @date 2025-05-08 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class OaProjectScheduleStepBo extends BaseEntity { + + /** + * 跟踪记录主键 + */ + private Long trackId; + + /** + * 文件列表 + */ + private String accessory; + + /** + * 所属项目进度ID + */ + private Long scheduleId; + + /** + * 步骤序号 + */ + private Long stepOrder; + + /** + * 步骤名称(冗余存储模板名称) + */ + private String stepName; + + /** + * 计划开始 + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date planStart; + + /** + * 计划完成 + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date planEnd; + + /** + * + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date actualStart; + + /** + * + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date actualEnd; + + /** + * 0未开始 1进行中 2完成 3暂停 + */ + private Long status; + + + private String description; + + private Long expectedDays; + /** + * 进度负责人 + */ + private String header; + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaScheduleTemplateBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaScheduleTemplateBo.java new file mode 100644 index 0000000..bb34bf0 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaScheduleTemplateBo.java @@ -0,0 +1,40 @@ +package com.ruoyi.oa.domain.bo; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 进度模板主业务对象 oa_schedule_template + * + * @author hdka + * @date 2025-05-08 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class OaScheduleTemplateBo extends BaseEntity { + + /** + * 模板主键 + */ + private Long templateId; + + /** + * 模板名称 + */ + private String templateName; + + /** + * 状态(1启用 0停用) + */ + private Long status; + + /** + * + */ + private String remark; + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaScheduleTemplateStepBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaScheduleTemplateStepBo.java new file mode 100644 index 0000000..afe7911 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaScheduleTemplateStepBo.java @@ -0,0 +1,60 @@ +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 com.ruoyi.common.core.domain.BaseEntity; + +/** + * 进度模板步骤业务对象 oa_schedule_template_step + * + * @author hdka + * @date 2025-05-08 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +public class OaScheduleTemplateStepBo extends BaseEntity { + + /** + * 步骤主键 + */ + private Long stepId; + + /** + * 所属模板ID + */ + private Long templateId; + + /** + * 步骤顺序 + */ + private Long stepOrder; + + /** + * 步骤名称 + */ + private String stepName; + + /** + * 预期耗时(天) + */ + private Long expectedDays; + + /** + * 负责人 + */ + private String header; + + /** + * 详细描述 + */ + private String description; + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaProjectBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaProjectBo.java index 082587e..cb22388 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaProjectBo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaProjectBo.java @@ -165,4 +165,16 @@ public class SysOaProjectBo extends BaseEntity { @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd") private Date date; + + /** + * 交易类型 + * 0内贸 1外贸 + */ + private Long tradeType; + + /** + * 预付款 + */ + private Double prePay; } + diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProjectScheduleStepVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProjectScheduleStepVo.java new file mode 100644 index 0000000..4d29282 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProjectScheduleStepVo.java @@ -0,0 +1,100 @@ +package com.ruoyi.oa.domain.vo; + +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 com.ruoyi.system.domain.SysOss; +import lombok.Data; +import java.util.Date; +import java.util.List; + + +/** + * 项目进度步骤跟踪视图对象 oa_project_schedule_step + * + * @author hdka + * @date 2025-05-08 + */ +@Data +@ExcelIgnoreUnannotated +public class OaProjectScheduleStepVo { + + private static final long serialVersionUID = 1L; + + /** + * 跟踪记录主键 + */ + @ExcelProperty(value = "跟踪记录主键") + private Long trackId; + + /** + * 文件列表 + */ + @ExcelProperty(value = "文件列表") + private String accessory; + + /** + * 所属项目进度ID + */ + @ExcelProperty(value = "所属项目进度ID") + private Long scheduleId; + + /** + * 步骤序号 + */ + @ExcelProperty(value = "步骤序号") + private Long stepOrder; + + /** + * 步骤名称(冗余存储模板名称) + */ + @ExcelProperty(value = "步骤名称(冗余存储模板名称)") + private String stepName; + + /** + * 计划开始 + */ + @ExcelProperty(value = "计划开始") + private Date planStart; + + /** + * 计划完成 + */ + @ExcelProperty(value = "计划完成") + private Date planEnd; + + /** + * + */ + @ExcelProperty(value = "") + private Date actualStart; + + /** + * + */ + @ExcelProperty(value = "") + private Date actualEnd; + + /** + * 0未开始 1进行中 2完成 3暂停 + */ + @ExcelProperty(value = "0未开始 1进行中 2完成 3暂停") + private Long status; + + /** + * 进度负责人 + */ + private String header; + + + private String description; + + private Long expectedDays; + + /** 附件列表(1 步骤可多附件) */ + private List fileList; // 建议用 List + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProjectScheduleVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProjectScheduleVo.java new file mode 100644 index 0000000..5904a14 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaProjectScheduleVo.java @@ -0,0 +1,90 @@ +package com.ruoyi.oa.domain.vo; + +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_project_schedule + * + * @author haka + * @date 2025-05-08 + */ +@Data +@ExcelIgnoreUnannotated +public class OaProjectScheduleVo { + + private static final long serialVersionUID = 1L; + + /** + * 项目进度主键 + */ + @ExcelProperty(value = "项目进度主键") + private Long scheduleId; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 引用的进度模板ID + */ + @ExcelProperty(value = "引用的进度模板ID") + private Long templateId; + + /** + * 当前进行到的步骤序号 + */ + @ExcelProperty(value = "当前进行到的步骤序号") + private Long currentStep; + + /** + * 进度开始时间 + */ + @ExcelProperty(value = "进度开始时间") + private Date startTime; + + /** + * 进度完成时间 + */ + @ExcelProperty(value = "进度完成时间") + private Date endTime; + + /** + * 状态 + */ + @ExcelProperty(value = "状态") + private Long status; + + /** + * + */ + @ExcelProperty(value = "") + private String remark; + + private String currentStepName; + + private String projectName; + + private String header; + + private Long remainTime; + + private Double schedulePercentage; + + private String functionary; + + private Long expectedDays; + + private String description; + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaScheduleTemplateStepVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaScheduleTemplateStepVo.java new file mode 100644 index 0000000..5bb485f --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaScheduleTemplateStepVo.java @@ -0,0 +1,67 @@ +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 lombok.Data; +import java.util.Date; + + + +/** + * 进度模板步骤视图对象 oa_schedule_template_step + * + * @author hdka + * @date 2025-05-08 + */ +@Data +@ExcelIgnoreUnannotated +public class OaScheduleTemplateStepVo { + + private static final long serialVersionUID = 1L; + + /** + * 步骤主键 + */ + @ExcelProperty(value = "步骤主键") + private Long stepId; + + /** + * 所属模板ID + */ + @ExcelProperty(value = "所属模板ID") + private Long templateId; + + /** + * 步骤顺序 + */ + @ExcelProperty(value = "步骤顺序") + private Long stepOrder; + + /** + * 步骤名称 + */ + @ExcelProperty(value = "步骤名称") + private String stepName; + + /** + * 预期耗时(天) + */ + @ExcelProperty(value = "预期耗时(天)") + private Long expectedDays; + + /** + * 负责人 + */ + @ExcelProperty(value = "负责人") + private String header; + + /** + * 详细描述 + */ + @ExcelProperty(value = "详细描述") + private String description; + + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaScheduleTemplateVo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaScheduleTemplateVo.java new file mode 100644 index 0000000..8099414 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/vo/OaScheduleTemplateVo.java @@ -0,0 +1,49 @@ +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 lombok.Data; +import java.util.Date; + + + +/** + * 进度模板主视图对象 oa_schedule_template + * + * @author hdka + * @date 2025-05-08 + */ +@Data +@ExcelIgnoreUnannotated +public class OaScheduleTemplateVo { + + private static final long serialVersionUID = 1L; + + /** + * 模板主键 + */ + @ExcelProperty(value = "模板主键") + private Long templateId; + + /** + * 模板名称 + */ + @ExcelProperty(value = "模板名称") + private String templateName; + + /** + * 状态(1启用 0停用) + */ + @ExcelProperty(value = "状态(1启用 0停用)") + private Long status; + + /** + * + */ + @ExcelProperty(value = "") + private String remark; + + +} 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 836eeb3..9b2d964 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 @@ -224,4 +224,14 @@ public class SysOaProjectVo { private Date updateTime; private List progressList; + + /** + * 交易类型 + */ + private Long tradeType; + + /** + * 预付款 + */ + private Double prePay; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProjectScheduleMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProjectScheduleMapper.java new file mode 100644 index 0000000..7d0c2a3 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProjectScheduleMapper.java @@ -0,0 +1,20 @@ +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.OaProjectSchedule; +import com.ruoyi.oa.domain.vo.OaProjectScheduleVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Param; + +/** + * 项目进度Mapper接口 + * + * @author haka + * @date 2025-05-08 + */ +public interface OaProjectScheduleMapper extends BaseMapperPlus { + + Page selectVoPagePlus(@Param("page") Page build,@Param(Constants.WRAPPER) QueryWrapper lqw); +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProjectScheduleStepMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProjectScheduleStepMapper.java new file mode 100644 index 0000000..ae2501b --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaProjectScheduleStepMapper.java @@ -0,0 +1,27 @@ +package com.ruoyi.oa.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.oa.domain.OaProjectScheduleStep; +import com.ruoyi.oa.domain.vo.OaProjectScheduleStepVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.toolkit.Constants; +/** + * 项目进度步骤跟踪Mapper接口 + * + * @author hdka + * @date 2025-05-08 + */ +public interface OaProjectScheduleStepMapper extends BaseMapperPlus { + + Page selectVoPagePlus(@Param("page")Page build, @Param(Constants.WRAPPER) QueryWrapper lqw); + + OaProjectScheduleStepVo selectVoPlusById(Long trackId); + + OaProjectScheduleStepVo maxStepByScheduleId(Long scheduleId); + + void updateByStepAndScheduleId(@Param("currentStep") Long currentStep, @Param("scheduleId") Long scheduleId); + + OaProjectScheduleStepVo selectByCurrentStepAndScheduleId(@Param("currentStep") Long currentStep, @Param("scheduleId") Long scheduleId); +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaScheduleTemplateMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaScheduleTemplateMapper.java new file mode 100644 index 0000000..d771a7f --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaScheduleTemplateMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.oa.mapper; + +import com.ruoyi.oa.domain.OaScheduleTemplate; +import com.ruoyi.oa.domain.vo.OaScheduleTemplateVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; + +/** + * 进度模板主Mapper接口 + * + * @author hdka + * @date 2025-05-08 + */ +public interface OaScheduleTemplateMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaScheduleTemplateStepMapper.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaScheduleTemplateStepMapper.java new file mode 100644 index 0000000..ded6c51 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/mapper/OaScheduleTemplateStepMapper.java @@ -0,0 +1,20 @@ +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.OaScheduleTemplateStep; +import com.ruoyi.oa.domain.vo.OaScheduleTemplateStepVo; +import com.ruoyi.common.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Param; + +/** + * 进度模板步骤Mapper接口 + * + * @author hdka + * @date 2025-05-08 + */ +public interface OaScheduleTemplateStepMapper extends BaseMapperPlus { + + Page selectVoPagePlus(@Param("page")Page build,@Param(Constants.WRAPPER) QueryWrapper lqw); +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaProjectScheduleService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaProjectScheduleService.java new file mode 100644 index 0000000..89a618f --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaProjectScheduleService.java @@ -0,0 +1,56 @@ +package com.ruoyi.oa.service; + +import com.ruoyi.oa.domain.vo.OaProjectScheduleVo; +import com.ruoyi.oa.domain.bo.OaProjectScheduleBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 项目进度Service接口 + * + * @author haka + * @date 2025-05-08 + */ +public interface IOaProjectScheduleService { + + /** + * 查询项目进度 + */ + OaProjectScheduleVo queryById(Long scheduleId); + + /** + * 查询项目进度列表 + */ + TableDataInfo queryPageList(OaProjectScheduleBo bo, PageQuery pageQuery); + + /** + * 查询项目进度列表 + */ + List queryList(OaProjectScheduleBo bo); + + /** + * 新增项目进度 + */ + Boolean insertByBo(OaProjectScheduleBo bo); + + /** + * 修改项目进度 + */ + Boolean updateByBo(OaProjectScheduleBo bo); + + /** + * 校验并批量删除项目进度信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 完成进度 + * + * @param bo + * @return + */ + boolean complete(OaProjectScheduleBo bo); +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaProjectScheduleStepService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaProjectScheduleStepService.java new file mode 100644 index 0000000..391d643 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaProjectScheduleStepService.java @@ -0,0 +1,58 @@ +package com.ruoyi.oa.service; + +import com.ruoyi.oa.domain.OaProjectScheduleStep; +import com.ruoyi.oa.domain.vo.OaProjectScheduleStepVo; +import com.ruoyi.oa.domain.bo.OaProjectScheduleStepBo; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.domain.PageQuery; +import org.apache.ibatis.annotations.Param; + +import javax.validation.constraints.NotNull; +import java.util.Collection; +import java.util.List; + +/** + * 项目进度步骤跟踪Service接口 + * + * @author hdka + * @date 2025-05-08 + */ +public interface IOaProjectScheduleStepService { + + /** + * 查询项目进度步骤跟踪 + */ + OaProjectScheduleStepVo queryById(Long trackId); + + /** + * 查询项目进度步骤跟踪列表 + */ + TableDataInfo queryPageList(OaProjectScheduleStepBo bo, PageQuery pageQuery); + + /** + * 查询项目进度步骤跟踪列表 + */ + List queryList(OaProjectScheduleStepBo bo); + + /** + * 新增项目进度步骤跟踪 + */ + Boolean insertByBo(OaProjectScheduleStepBo bo); + + /** + * 修改项目进度步骤跟踪 + */ + Boolean updateByBo(OaProjectScheduleStepBo bo); + + /** + * 校验并批量删除项目进度步骤跟踪信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + OaProjectScheduleStepVo maxStepByScheduleId(Long scheduleId); + + void updateByStepAndScheduleId(Long currentStep,Long scheduleId); + + OaProjectScheduleStepVo selectByCurrentStepAndScheduleId(Long currentStep, Long scheduleId); + +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaScheduleTemplateService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaScheduleTemplateService.java new file mode 100644 index 0000000..2268c56 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaScheduleTemplateService.java @@ -0,0 +1,49 @@ +package com.ruoyi.oa.service; + +import com.ruoyi.oa.domain.OaScheduleTemplate; +import com.ruoyi.oa.domain.vo.OaScheduleTemplateVo; +import com.ruoyi.oa.domain.bo.OaScheduleTemplateBo; +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-05-08 + */ +public interface IOaScheduleTemplateService { + + /** + * 查询进度模板主 + */ + OaScheduleTemplateVo queryById(Long templateId); + + /** + * 查询进度模板主列表 + */ + TableDataInfo queryPageList(OaScheduleTemplateBo bo, PageQuery pageQuery); + + /** + * 查询进度模板主列表 + */ + List queryList(OaScheduleTemplateBo bo); + + /** + * 新增进度模板主 + */ + Boolean insertByBo(OaScheduleTemplateBo bo); + + /** + * 修改进度模板主 + */ + Boolean updateByBo(OaScheduleTemplateBo bo); + + /** + * 校验并批量删除进度模板主信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaScheduleTemplateStepService.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaScheduleTemplateStepService.java new file mode 100644 index 0000000..4e3ea51 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/IOaScheduleTemplateStepService.java @@ -0,0 +1,49 @@ +package com.ruoyi.oa.service; + +import com.ruoyi.oa.domain.OaScheduleTemplateStep; +import com.ruoyi.oa.domain.vo.OaScheduleTemplateStepVo; +import com.ruoyi.oa.domain.bo.OaScheduleTemplateStepBo; +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-05-08 + */ +public interface IOaScheduleTemplateStepService { + + /** + * 查询进度模板步骤 + */ + OaScheduleTemplateStepVo queryById(Long stepId); + + /** + * 查询进度模板步骤列表 + */ + TableDataInfo queryPageList(OaScheduleTemplateStepBo bo, PageQuery pageQuery); + + /** + * 查询进度模板步骤列表 + */ + List queryList(OaScheduleTemplateStepBo bo); + + /** + * 新增进度模板步骤 + */ + Boolean insertByBo(OaScheduleTemplateStepBo bo); + + /** + * 修改进度模板步骤 + */ + Boolean updateByBo(OaScheduleTemplateStepBo bo); + + /** + * 校验并批量删除进度模板步骤信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectScheduleServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectScheduleServiceImpl.java new file mode 100644 index 0000000..928c520 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectScheduleServiceImpl.java @@ -0,0 +1,197 @@ +package com.ruoyi.oa.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.common.helper.LoginHelper; +import com.ruoyi.common.utils.DateUtils; +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.toolkit.Wrappers; +import com.ruoyi.oa.domain.OaProjectScheduleStep; +import com.ruoyi.oa.domain.OaScheduleTemplate; +import com.ruoyi.oa.domain.bo.OaProjectScheduleStepBo; +import com.ruoyi.oa.domain.bo.OaScheduleTemplateStepBo; +import com.ruoyi.oa.domain.vo.OaProjectScheduleStepVo; +import com.ruoyi.oa.mapper.OaScheduleTemplateMapper; +import com.ruoyi.oa.service.IOaProjectScheduleStepService; +import com.ruoyi.oa.service.IOaScheduleTemplateStepService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.oa.domain.bo.OaProjectScheduleBo; +import com.ruoyi.oa.domain.vo.OaProjectScheduleVo; +import com.ruoyi.oa.domain.OaProjectSchedule; +import com.ruoyi.oa.mapper.OaProjectScheduleMapper; +import com.ruoyi.oa.service.IOaProjectScheduleService; + +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 项目进度Service业务层处理 + * + * @author haka + * @date 2025-05-08 + */ +@RequiredArgsConstructor +@Service +public class OaProjectScheduleServiceImpl implements IOaProjectScheduleService { + + private final OaProjectScheduleMapper baseMapper; + + private final OaScheduleTemplateMapper scheduleTemplateMapper; + + private final IOaScheduleTemplateStepService scheduleTemplateStepService; + + private final IOaProjectScheduleStepService projectScheduleStepService; + + /** + * 查询项目进度 + */ + @Override + public OaProjectScheduleVo queryById(Long scheduleId){ + return baseMapper.selectVoById(scheduleId); + } + + /** + * 查询项目进度列表 + */ + @Override + public TableDataInfo queryPageList(OaProjectScheduleBo bo, PageQuery pageQuery) { + QueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPagePlus(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询项目进度列表 + */ + @Override + public List queryList(OaProjectScheduleBo bo) { + QueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private QueryWrapper buildQueryWrapper(OaProjectScheduleBo bo) { + Map params = bo.getParams(); + QueryWrapper lqw = Wrappers.query(); + lqw.eq("ops.del_flag", 0); + lqw.eq(bo.getProjectId() != null,"ops.project_id", bo.getProjectId()); + lqw.eq(bo.getTemplateId() != null, "ops.template_id", bo.getTemplateId()); + lqw.eq(bo.getCurrentStep() != null, "ops.current_step", bo.getCurrentStep()); + lqw.eq(bo.getStatus() != null, "ops.status", bo.getStatus()); + lqw.gt(bo.getPrePay()!=null&&bo.getPrePay()>0, "op.pre_pay", 0); + lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null, + "op.begin_time", params.get("beginCreateTime"), params.get("endCreateTime")); + return lqw; + } + + /** + * 新增项目进度 + */ + @Override + public Boolean insertByBo(OaProjectScheduleBo bo) { + + if (bo.getMode().equals("custom")){ + // 生成模板 + OaScheduleTemplate oaScheduleTemplate = new OaScheduleTemplate(); + oaScheduleTemplate.setTemplateName("自动生成_"+ DateUtils.getTime() +"_"+LoginHelper.getNickName()); + oaScheduleTemplate.setStatus(1L); + oaScheduleTemplate.setCreateBy(LoginHelper.getNickName()); + scheduleTemplateMapper.insert(oaScheduleTemplate); + + // 生成模板对应的步骤 + Long templateId = oaScheduleTemplate.getTemplateId(); + for (int i = 1; i <= bo.getSteps().size(); i++) { + OaScheduleTemplateStepBo step = getOaScheduleTemplateStepBo(bo, i, templateId); + scheduleTemplateStepService.insertByBo(step); + } + bo.setTemplateId(templateId); + } + bo.setCurrentStep(1L); + OaProjectSchedule add = BeanUtil.toBean(bo, OaProjectSchedule.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setScheduleId(add.getScheduleId()); + } + + for (int i = 0; i < bo.getSteps().size(); i++) { + + OaProjectScheduleStepBo step = bo.getSteps().get(i); + step.setScheduleId(add.getScheduleId()); + step.setStepOrder((long) (i+1)); + if (i==0){ + step.setActualStart(new Date()); + } + projectScheduleStepService.insertByBo(step); + } + return flag; + } + + private static OaScheduleTemplateStepBo getOaScheduleTemplateStepBo(OaProjectScheduleBo bo, int i, Long templateId) { + OaProjectScheduleStepBo projectScheduleStep = bo.getSteps().get(i-1); + OaScheduleTemplateStepBo step = new OaScheduleTemplateStepBo(); + step.setStepName(projectScheduleStep.getStepName()); + step.setDescription(projectScheduleStep.getDescription()); + step.setTemplateId(templateId); + step.setStepOrder((long) i); + step.setExpectedDays(projectScheduleStep.getExpectedDays()); + step.setCreateBy(LoginHelper.getNickName()); + return step; + } + + /** + * 修改项目进度 + */ + @Override + public Boolean updateByBo(OaProjectScheduleBo bo) { + OaProjectSchedule update = BeanUtil.toBean(bo, OaProjectSchedule.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(OaProjectSchedule entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除项目进度 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } + + @Override + public boolean complete(OaProjectScheduleBo bo) { + // 0首先判断是否到最后一部 + OaProjectScheduleStepVo scheduleStepVo = projectScheduleStepService.maxStepByScheduleId(bo.getScheduleId()); + // 此处被分为了两种情况 + if (scheduleStepVo.getStepOrder()>bo.getCurrentStep()){ + // 1未完成全部进度,此时将currentStep更新到下一位 然后将当前的step的完成标志status改为1标志完成 + projectScheduleStepService.updateByStepAndScheduleId(bo.getCurrentStep(),bo.getScheduleId()); + bo.setCurrentStep(bo.getCurrentStep()+1L); + OaProjectScheduleStepVo stepVo = projectScheduleStepService.selectByCurrentStepAndScheduleId(bo.getCurrentStep()+1L,bo.getScheduleId()); + stepVo.setActualStart(new Date()); + OaProjectScheduleStepBo update = BeanUtil.toBean(stepVo, OaProjectScheduleStepBo.class); + projectScheduleStepService.updateByBo(update); + }else{ + // 2完成了全部进度,此时将此对象的status直接改为2代表完成了全部操作 + OaProjectScheduleStepVo stepVo = projectScheduleStepService.selectByCurrentStepAndScheduleId(bo.getCurrentStep(),bo.getScheduleId()); + OaProjectScheduleStepBo update = BeanUtil.toBean(stepVo, OaProjectScheduleStepBo.class); + update.setActualEnd(new Date()); + projectScheduleStepService.updateByBo(update); + bo.setStatus(2L); + } + return updateByBo(bo); + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectScheduleStepServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectScheduleStepServiceImpl.java new file mode 100644 index 0000000..7b151ef --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectScheduleStepServiceImpl.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 lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.oa.domain.bo.OaProjectScheduleStepBo; +import com.ruoyi.oa.domain.vo.OaProjectScheduleStepVo; +import com.ruoyi.oa.domain.OaProjectScheduleStep; +import com.ruoyi.oa.mapper.OaProjectScheduleStepMapper; +import com.ruoyi.oa.service.IOaProjectScheduleStepService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 项目进度步骤跟踪Service业务层处理 + * + * @author hdka + * @date 2025-05-08 + */ +@RequiredArgsConstructor +@Service +public class OaProjectScheduleStepServiceImpl implements IOaProjectScheduleStepService { + + private final OaProjectScheduleStepMapper baseMapper; + + /** + * 查询项目进度步骤跟踪 + */ + @Override + public OaProjectScheduleStepVo queryById(Long trackId){ + return baseMapper.selectVoPlusById(trackId); + } + + /** + * 查询项目进度步骤跟踪列表 + */ + @Override + public TableDataInfo queryPageList(OaProjectScheduleStepBo bo, PageQuery pageQuery) { + QueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPagePlus(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询项目进度步骤跟踪列表 + */ + @Override + public List queryList(OaProjectScheduleStepBo bo) { + QueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private QueryWrapper buildQueryWrapper(OaProjectScheduleStepBo bo) { + Map params = bo.getParams(); + QueryWrapper lqw = Wrappers.query(); + lqw.eq(bo.getScheduleId() != null, "opss.schedule_id", bo.getScheduleId()); + lqw.eq("opss.del_flag", 0); + lqw.eq(bo.getStepOrder() != null, "opss.step_order", bo.getStepOrder()); + lqw.like(StringUtils.isNotBlank(bo.getStepName()), "opss.step_name", bo.getStepName()); + lqw.eq(bo.getStatus() != null, "opss.status", bo.getStatus()); + return lqw; + } + + /** + * 新增项目进度步骤跟踪 + */ + @Override + public Boolean insertByBo(OaProjectScheduleStepBo bo) { + OaProjectScheduleStep add = BeanUtil.toBean(bo, OaProjectScheduleStep.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setTrackId(add.getTrackId()); + } + return flag; + } + + /** + * 修改项目进度步骤跟踪 + */ + @Override + public Boolean updateByBo(OaProjectScheduleStepBo bo) { + OaProjectScheduleStep update = BeanUtil.toBean(bo, OaProjectScheduleStep.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(OaProjectScheduleStep entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除项目进度步骤跟踪 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } + + @Override + public OaProjectScheduleStepVo maxStepByScheduleId(Long scheduleId) { + return baseMapper.maxStepByScheduleId(scheduleId); + } + + @Override + public void updateByStepAndScheduleId(Long currentStep, Long scheduleId) { + + baseMapper.updateByStepAndScheduleId(currentStep,scheduleId); + } + + @Override + public OaProjectScheduleStepVo selectByCurrentStepAndScheduleId(Long currentStep, Long scheduleId) { + return baseMapper.selectByCurrentStepAndScheduleId(currentStep,scheduleId); + } +} diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaScheduleTemplateServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaScheduleTemplateServiceImpl.java new file mode 100644 index 0000000..7ba71eb --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaScheduleTemplateServiceImpl.java @@ -0,0 +1,110 @@ +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.OaScheduleTemplateBo; +import com.ruoyi.oa.domain.vo.OaScheduleTemplateVo; +import com.ruoyi.oa.domain.OaScheduleTemplate; +import com.ruoyi.oa.mapper.OaScheduleTemplateMapper; +import com.ruoyi.oa.service.IOaScheduleTemplateService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 进度模板主Service业务层处理 + * + * @author hdka + * @date 2025-05-08 + */ +@RequiredArgsConstructor +@Service +public class OaScheduleTemplateServiceImpl implements IOaScheduleTemplateService { + + private final OaScheduleTemplateMapper baseMapper; + + /** + * 查询进度模板主 + */ + @Override + public OaScheduleTemplateVo queryById(Long templateId){ + return baseMapper.selectVoById(templateId); + } + + /** + * 查询进度模板主列表 + */ + @Override + public TableDataInfo queryPageList(OaScheduleTemplateBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询进度模板主列表 + */ + @Override + public List queryList(OaScheduleTemplateBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(OaScheduleTemplateBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getTemplateName()), OaScheduleTemplate::getTemplateName, bo.getTemplateName()); + lqw.eq(bo.getStatus() != null, OaScheduleTemplate::getStatus, bo.getStatus()); + return lqw; + } + + /** + * 新增进度模板主 + */ + @Override + public Boolean insertByBo(OaScheduleTemplateBo bo) { + OaScheduleTemplate add = BeanUtil.toBean(bo, OaScheduleTemplate.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setTemplateId(add.getTemplateId()); + } + return flag; + } + + /** + * 修改进度模板主 + */ + @Override + public Boolean updateByBo(OaScheduleTemplateBo bo) { + OaScheduleTemplate update = BeanUtil.toBean(bo, OaScheduleTemplate.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(OaScheduleTemplate 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/OaScheduleTemplateStepServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaScheduleTemplateStepServiceImpl.java new file mode 100644 index 0000000..e3e04b7 --- /dev/null +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaScheduleTemplateStepServiceImpl.java @@ -0,0 +1,118 @@ +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 lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.ruoyi.oa.domain.bo.OaScheduleTemplateStepBo; +import com.ruoyi.oa.domain.vo.OaScheduleTemplateStepVo; +import com.ruoyi.oa.domain.OaScheduleTemplateStep; +import com.ruoyi.oa.mapper.OaScheduleTemplateStepMapper; +import com.ruoyi.oa.service.IOaScheduleTemplateStepService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 进度模板步骤Service业务层处理 + * + * @author hdka + * @date 2025-05-08 + */ +@RequiredArgsConstructor +@Service +public class OaScheduleTemplateStepServiceImpl implements IOaScheduleTemplateStepService { + + private final OaScheduleTemplateStepMapper baseMapper; + + /** + * 查询进度模板步骤 + */ + @Override + public OaScheduleTemplateStepVo queryById(Long stepId){ + return baseMapper.selectVoById(stepId); + } + + /** + * 查询进度模板步骤列表 + */ + @Override + public TableDataInfo queryPageList(OaScheduleTemplateStepBo bo, PageQuery pageQuery) { + QueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPagePlus(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询进度模板步骤列表 + */ + @Override + public List queryList(OaScheduleTemplateStepBo bo) { + QueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private QueryWrapper buildQueryWrapper(OaScheduleTemplateStepBo bo) { + Map params = bo.getParams(); + QueryWrapper lqw = Wrappers.query(); + + lqw.eq(bo.getTemplateId() != null, "template_id", bo.getTemplateId()); + + lqw.eq(bo.getStepOrder() != null, "step_order", bo.getStepOrder()); + lqw.like(StringUtils.isNotBlank(bo.getStepName()), "step_name", bo.getStepName()); + lqw.eq(bo.getExpectedDays() != null,"expected_days", bo.getExpectedDays()); + lqw.eq(StringUtils.isNotBlank(bo.getHeader()), "header", bo.getHeader()); + lqw.eq(StringUtils.isNotBlank(bo.getDescription()), "description", bo.getDescription()); + lqw.groupBy("step_name","header","step_id"); + return lqw; + } + + /** + * 新增进度模板步骤 + */ + @Override + public Boolean insertByBo(OaScheduleTemplateStepBo bo) { + OaScheduleTemplateStep add = BeanUtil.toBean(bo, OaScheduleTemplateStep.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setStepId(add.getStepId()); + } + return flag; + } + + /** + * 修改进度模板步骤 + */ + @Override + public Boolean updateByBo(OaScheduleTemplateStepBo bo) { + OaScheduleTemplateStep update = BeanUtil.toBean(bo, OaScheduleTemplateStep.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(OaScheduleTemplateStep 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/SysOaProjectServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaProjectServiceImpl.java index e005d86..42bdf4b 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 @@ -67,6 +67,8 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.like(StringUtils.isNotBlank(bo.getProjectName()), SysOaProject::getProjectName, bo.getProjectName()); lqw.eq(StringUtils.isNotBlank(bo.getProjectNum()), SysOaProject::getProjectNum, bo.getProjectNum()); + lqw.eq(bo.getTradeType() != null, SysOaProject::getTradeType, bo.getTradeType()); + lqw.gt(bo.getPrePay()!=null&&bo.getPrePay()>0, SysOaProject::getPrePay,0); lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), SysOaProject::getProjectType, bo.getProjectType()); lqw.eq(StringUtils.isNotBlank(bo.getProjectStatus()), SysOaProject::getProjectStatus, bo.getProjectStatus()); lqw.eq(StringUtils.isNotBlank(bo.getCreateBy()), SysOaProject::getCreateBy, bo.getCreateBy()); diff --git a/ruoyi-oa/src/main/resources/mapper/oa/OaProjectScheduleMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/OaProjectScheduleMapper.xml new file mode 100644 index 0000000..bf73497 --- /dev/null +++ b/ruoyi-oa/src/main/resources/mapper/oa/OaProjectScheduleMapper.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-oa/src/main/resources/mapper/oa/OaProjectScheduleStepMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/OaProjectScheduleStepMapper.xml new file mode 100644 index 0000000..be2101b --- /dev/null +++ b/ruoyi-oa/src/main/resources/mapper/oa/OaProjectScheduleStepMapper.xml @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE oa_project_schedule_step + SET + status = 1, + actual_end = NOW() + WHERE + schedule_id = #{scheduleId} + AND step_order = #{currentStep} + AND del_flag = '0' + + + + + + + + + + diff --git a/ruoyi-oa/src/main/resources/mapper/oa/OaScheduleTemplateMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/OaScheduleTemplateMapper.xml new file mode 100644 index 0000000..15741c7 --- /dev/null +++ b/ruoyi-oa/src/main/resources/mapper/oa/OaScheduleTemplateMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-oa/src/main/resources/mapper/oa/OaScheduleTemplateStepMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/OaScheduleTemplateStepMapper.xml new file mode 100644 index 0000000..c9fa027 --- /dev/null +++ b/ruoyi-oa/src/main/resources/mapper/oa/OaScheduleTemplateStepMapper.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-oa/src/main/resources/mapper/oa/SysOaProjectMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/SysOaProjectMapper.xml index f9c8aa0..b11f92d 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/SysOaProjectMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/SysOaProjectMapper.xml @@ -260,6 +260,8 @@