From 46f4e044bfd46300af62948304296ae35c41d302 Mon Sep 17 00:00:00 2001 From: hdka <823267011@qq.com> Date: Fri, 18 Apr 2025 10:36:41 +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 --- .../com/ruoyi/oa/domain/vo/OaProgressVo.java | 2 ++ .../impl/OaProgressDetailServiceImpl.java | 1 + .../service/impl/SysOaRemindServiceImpl.java | 35 +++++++++++++++++++ .../resources/mapper/oa/OaProgressMapper.xml | 17 +++++++++ 4 files changed, 55 insertions(+) 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 index a79028a..4ced9c7 100644 --- 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 @@ -107,5 +107,7 @@ public class OaProgressVo { private Long nowLevelId; // 项目合同金额 private Double funds; + private Date endTime; + private Date payEndTime; } 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 index 3b7f4ba..4d8eade 100644 --- 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 @@ -61,6 +61,7 @@ public class OaProgressDetailServiceImpl implements IOaProgressDetailService { private LambdaQueryWrapper buildQueryWrapper(OaProgressDetailBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(OaProgressDetail::getDelFlag,0L); 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()); diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaRemindServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaRemindServiceImpl.java index 842f5e7..a6d01a9 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaRemindServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaRemindServiceImpl.java @@ -9,10 +9,13 @@ 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.bo.OaProgressBo; import com.ruoyi.oa.domain.bo.SysOaProjectBo; import com.ruoyi.oa.domain.bo.SysOaTaskBo; +import com.ruoyi.oa.domain.vo.OaProgressVo; import com.ruoyi.oa.domain.vo.SysOaProjectVo; import com.ruoyi.oa.domain.vo.SysOaTaskVo; +import com.ruoyi.oa.service.IOaProgressService; import com.ruoyi.oa.service.ISysOaProjectService; import com.ruoyi.oa.service.ISysOaTaskService; import lombok.RequiredArgsConstructor; @@ -41,6 +44,8 @@ public class SysOaRemindServiceImpl implements ISysOaRemindService { private final ISysOaProjectService projectService; + private final IOaProgressService progressService; + /** * 查询事件提醒 */ @@ -104,6 +109,36 @@ public class SysOaRemindServiceImpl implements ISysOaRemindService { sysOaRemindVo.setTaskTime(row.getFinishTime()); sysOaRemindVos.add(sysOaRemindVo); } + + // 查询邻近过期进度 + OaProgressBo oaProgressBo = new OaProgressBo(); + oaProgressBo.setType(1L); + List rows1 = progressService.queryPageList(oaProgressBo, pageQuery).getRows(); + for (OaProgressVo row : rows1) { + if (row.getRemainTime()!=null && row.getRemainTime()<3L){ + SysOaRemindVo sysOaRemindVo = new SysOaRemindVo(); + sysOaRemindVo.setType("progress-project"); + sysOaRemindVo.setContent(row.getProgressName()); + sysOaRemindVo.setRemainTime(row.getRemainTime()); + sysOaRemindVo.setTaskTime(row.getEndTime()); + sysOaRemindVos.add(sysOaRemindVo); + } + + } + + // 查询邻近过期进度 + oaProgressBo.setType(2L); + List rows2 = progressService.queryPageList(oaProgressBo, pageQuery).getRows(); + for (OaProgressVo row : rows2) { + if (row.getRemainTime()!=null && row.getRemainTime()<3L){ + SysOaRemindVo sysOaRemindVo = new SysOaRemindVo(); + sysOaRemindVo.setType("progress-money"); + sysOaRemindVo.setContent(row.getProgressName()); + sysOaRemindVo.setRemainTime(row.getRemainTime()); + sysOaRemindVo.setTaskTime(row.getPayEndTime()); + sysOaRemindVos.add(sysOaRemindVo); + } + } return R.ok(sysOaRemindVos); } diff --git a/ruoyi-oa/src/main/resources/mapper/oa/OaProgressMapper.xml b/ruoyi-oa/src/main/resources/mapper/oa/OaProgressMapper.xml index aa7e57d..5c35222 100644 --- a/ruoyi-oa/src/main/resources/mapper/oa/OaProgressMapper.xml +++ b/ruoyi-oa/src/main/resources/mapper/oa/OaProgressMapper.xml @@ -72,6 +72,23 @@ ORDER BY d.plan_start_date ASC LIMIT 1 ) AS remainTime, + + ( + SELECT d.plan_end_date + FROM oa_progress_detail d + WHERE d.progress_id = op.progress_id + AND d.detail_status = 0 + ORDER BY d.plan_start_date ASC + LIMIT 1 + ) AS endTime, + + ( + SELECT d.plan_pay_date + FROM oa_progress_detail d + WHERE d.progress_id = op.progress_id + ORDER BY d.plan_pay_date ASC + LIMIT 1 + ) AS payEndTime, -- 计算当前 progress 对应的 detail 完成比例:满足 detail_status = 1 的条数 / 总条数(避免除0) ( SELECT IF(COUNT(*) = 0, 0, ROUND(SUM(CASE WHEN d.detail_status = 1 THEN 1 ELSE 0 END) / COUNT(*), 2))