From c7f53622fdeff8c1ac28a62cb2abc225654183bc Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Wed, 26 Nov 2025 17:14:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(oa):=20=E5=A2=9E=E5=BC=BA=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E8=BF=9B=E5=BA=A6=E5=92=8C=E9=9C=80=E6=B1=82=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为项目进度添加贸易类型和项目代号查询条件 - 优化项目进度时间筛选逻辑,支持单独指定开始或结束时间 - 为多个业务对象添加日期格式化注解,统一日期处理 - 修改需求查询逻辑,标题和描述改为模糊匹配 - 为任务和仓库主表添加时间段查询功能 - 增加项目名称模糊搜索支持 --- .../ruoyi/oa/domain/bo/OaProjectScheduleBo.java | 9 +++++++++ .../ruoyi/oa/domain/bo/OaReportSummaryBo.java | 3 +++ .../com/ruoyi/oa/domain/bo/OaRequirementsBo.java | 3 +++ .../java/com/ruoyi/oa/domain/bo/SysOaTaskBo.java | 2 ++ .../oa/domain/bo/SysOaWarehouseMasterBo.java | 7 +++++++ .../impl/OaProjectScheduleServiceImpl.java | 16 ++++++++++++++-- .../service/impl/OaRequirementsServiceImpl.java | 4 ++-- .../oa/service/impl/SysOaTaskServiceImpl.java | 4 +++- .../impl/SysOaWarehouseMasterServiceImpl.java | 7 +++++++ 9 files changed, 50 insertions(+), 5 deletions(-) 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 index 8ded91c..baf1aac 100644 --- 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 @@ -14,6 +14,7 @@ import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.domain.BaseEntity; +import org.springframework.format.annotation.DateTimeFormat; /** * 项目进度业务对象 oa_project_schedule @@ -50,11 +51,15 @@ public class OaProjectScheduleBo extends BaseEntity { /** * 进度开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") private Date startTime; /** * 进度完成时间 */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") private Date endTime; /** @@ -77,4 +82,8 @@ public class OaProjectScheduleBo extends BaseEntity { //进度负责人 private String steward; + + private Integer tradeType; + //项目代号 + private String projectCode; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaReportSummaryBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaReportSummaryBo.java index 5e4e280..30d68f7 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaReportSummaryBo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaReportSummaryBo.java @@ -11,6 +11,7 @@ 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_report_summary @@ -39,6 +40,8 @@ public class OaReportSummaryBo extends BaseEntity { * 汇报日期 */ @NotNull(message = "汇报日期不能为空", groups = { AddGroup.class, EditGroup.class }) + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") private Date reportDate; /** diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaRequirementsBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaRequirementsBo.java index db491a2..214d157 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaRequirementsBo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/OaRequirementsBo.java @@ -11,6 +11,7 @@ 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 需求业务对象 oa_requirements @@ -56,6 +57,8 @@ public class OaRequirementsBo extends BaseEntity { /** * 截止日期(最终时间) */ + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") private Date deadline; /** diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskBo.java index 8ce8387..ffa1553 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskBo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaTaskBo.java @@ -191,4 +191,6 @@ public class SysOaTaskBo extends BaseEntity { //关联项目进度id private Long trackId; + + private String projectName; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseMasterBo.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseMasterBo.java index f343121..8bc0628 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseMasterBo.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/domain/bo/SysOaWarehouseMasterBo.java @@ -80,4 +80,11 @@ public class SysOaWarehouseMasterBo extends BaseEntity { private Long requirementId; + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date startTime; + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date endTime; + } 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 index a2a0aa7..a41b7f8 100644 --- 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 @@ -90,9 +90,21 @@ public class OaProjectScheduleServiceImpl implements IOaProjectScheduleService { 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.eq(bo.getTradeType() !=null, "op.trade_type",bo.getTradeType()); + //根据代号 + lqw.like(bo.getProjectCode() != null, "op.project_code", bo.getProjectCode()); 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")); +// lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null, +// "op.begin_time", params.get("beginCreateTime"), params.get("endCreateTime")); + // 使用 startTime 和 endTime 字段进行时间筛选 + lqw.between(bo.getStartTime() != null && bo.getEndTime() != null, + "ops.start_time", bo.getStartTime(), bo.getEndTime()); + // 单独指定开始时间或结束时间的情况 + lqw.ge(bo.getStartTime() != null && bo.getEndTime() == null, + "ops.start_time", bo.getStartTime()); + lqw.le(bo.getStartTime() == null && bo.getEndTime() != null, + "ops.end_time", bo.getEndTime()); return lqw; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaRequirementsServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaRequirementsServiceImpl.java index 38cf78e..03ee92b 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaRequirementsServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaRequirementsServiceImpl.java @@ -61,11 +61,11 @@ public class OaRequirementsServiceImpl implements IOaRequirementsService { private QueryWrapper buildQueryWrapper(OaRequirementsBo bo) { QueryWrapper qw = new QueryWrapper<>(); - qw.eq(StringUtils.isNotBlank(bo.getTitle()), "r.title", bo.getTitle()); + qw.like(StringUtils.isNotBlank(bo.getTitle()), "r.title", bo.getTitle()); qw.eq(bo.getRequesterId() != null, "r.requester_id", bo.getRequesterId()); qw.eq(bo.getOwnerId() != null, "r.owner_id", bo.getOwnerId()); qw.eq(bo.getProjectId() != null, "r.project_id", bo.getProjectId()); - qw.eq(StringUtils.isNotBlank(bo.getDescription()), "r.description", bo.getDescription()); + qw.like(StringUtils.isNotBlank(bo.getDescription()), "r.description", bo.getDescription()); qw.eq(bo.getDeadline() != null, "r.deadline", bo.getDeadline()); qw.eq(bo.getStatus() != null, "r.status", bo.getStatus()); qw.eq(StringUtils.isNotBlank(bo.getAccessory()), "r.accessory", bo.getAccessory()); 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 89f24f1..cf9afae 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 @@ -152,7 +152,7 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { lqw.eq(bo.getCreateUserId()!=null, "sot.create_user_id", bo.getCreateUserId()); lqw.eq(bo.getWorkerId()!=null, "sot.worker_id", bo.getWorkerId()); lqw.eq(bo.getProjectId()!=null, "sot.project_id", bo.getProjectId()); - lqw.eq(bo.getProjectNum()!=null, "sop.project_num", bo.getProjectNum()); + lqw.like(bo.getProjectNum()!=null, "sop.project_num", bo.getProjectNum()); lqw.eq(bo.getState()!=null, "sot.state", bo.getState()); lqw.eq(bo.getItemStatus()!=null, "soti.status", bo.getItemStatus()); lqw.like(bo.getTaskTitle()!=null, "sot.task_title", bo.getTaskTitle()); @@ -167,6 +167,8 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService { lqw.le(bo.getFinishTime() != null, "sot.finish_time", bo.getFinishTime()); // 添加部门ID筛选条件 lqw.eq(bo.getDeptId() != null, "sd.dept_id", bo.getDeptId()); + //添加项目名称搜索 + lqw.like(bo.getProjectName() != null, "sop.project_name", bo.getProjectName()); return lqw; } diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseMasterServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseMasterServiceImpl.java index 4b58b39..ba2698d 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseMasterServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaWarehouseMasterServiceImpl.java @@ -94,6 +94,9 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer .eq(bo.getRequirementId() != null, "sowm.requirement_id", bo.getRequirementId()) // 其他过滤…… .eq("sowm.del_flag",0) + // 根据开始时间和结束时间筛选signTime + .ge(bo.getStartTime() != null, "sowm.sign_time", bo.getStartTime()) + .le(bo.getEndTime() != null, "sowm.sign_time", bo.getEndTime()) .orderByDesc("sowm.update_time"); lqw.select("sowm.*"); return lqw; @@ -117,6 +120,10 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer // 其他过滤…… .eq("sowm.del_flag", 0) .orderByDesc("sowm.create_time"); + //根据开始时间和结束时间筛选signTime + lqw.ge(bo.getStartTime() != null, "sowm.sign_time", bo.getStartTime()); // 根据开始时间筛选 + lqw.le(bo.getEndTime() != null, "sowm.sign_time", bo.getEndTime()); // 根据结束时间筛选 + // 只有在 type = 2 时,才附带这个子查询字段 if (bo.getType() != null && bo.getType() == 2L) {