refactor(sql):优化仓库主表查询SQL别名命名
- 将oa_requirements表的别名从or改为req- 统一SQL查询中的表别名命名规范 - 避免与数据库关键字冲突的可能性
This commit is contained in:
@@ -67,6 +67,11 @@
|
||||
<artifactId>kfpt-sdk</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.xuxueli</groupId>
|
||||
<artifactId>xxl-job-core</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package com.ruoyi.oa.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.domain.entity.SysUser;
|
||||
import com.ruoyi.common.helper.LoginHelper;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
@@ -18,7 +20,10 @@ 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 com.ruoyi.system.mapper.SysUserMapper;
|
||||
import com.xxl.job.core.util.DateUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.oa.domain.bo.SysOaRemindBo;
|
||||
@@ -48,6 +53,8 @@ public class SysOaRemindServiceImpl implements ISysOaRemindService {
|
||||
private final ISysOaProjectService projectService;
|
||||
|
||||
private final IOaProgressService progressService;
|
||||
@Autowired
|
||||
private SysUserMapper sysUserMapper;
|
||||
|
||||
/**
|
||||
* 查询事件提醒
|
||||
@@ -162,20 +169,33 @@ public class SysOaRemindServiceImpl implements ISysOaRemindService {
|
||||
|
||||
@Override
|
||||
public List<SysOaRemindVo> queryRecentRemindList(SysOaRemindBo bo) {
|
||||
// 过滤:仅当天创建、到期在未来0~3天、未处理的任务/项目提醒
|
||||
LambdaQueryWrapper<SysOaRemind> lqw = Wrappers.lambdaQuery();
|
||||
lqw.in(SysOaRemind::getRemindType, Arrays.asList("task", "project"));
|
||||
lqw.eq(SysOaRemind::getTaskStatus, "0");
|
||||
// 只查当天
|
||||
|
||||
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd");
|
||||
String today = sdf.format(new java.util.Date());
|
||||
// 只查当天创建
|
||||
lqw.apply("DATE_FORMAT(create_time, '%Y-%m-%d') = {0}", today);
|
||||
lqw.orderByAsc(SysOaRemind::getEndTime);
|
||||
// 到期在未来0~3天(含当天、含第3天)
|
||||
lqw.apply("DATEDIFF(end_time, {0}) BETWEEN 0 AND 3", today);
|
||||
|
||||
if (bo != null && bo.getTargetUserId() != null) {
|
||||
lqw.eq(SysOaRemind::getTargetUserId, bo.getTargetUserId());
|
||||
}
|
||||
// 为了后续按 (type, detailId) 去重保留最新,先按创建时间倒序
|
||||
lqw.orderByDesc(SysOaRemind::getCreateTime);
|
||||
|
||||
List<SysOaRemind> remindList = baseMapper.selectList(lqw);
|
||||
List<SysOaRemindVo> voList = new ArrayList<>();
|
||||
|
||||
// 按 (remind_type, detail_id) 去重:由于已按 create_time 倒序,只保留第一次出现(最新)
|
||||
Map<String, SysOaRemindVo> latestMap = new LinkedHashMap<>();
|
||||
for (SysOaRemind remind : remindList) {
|
||||
String key = (remind.getRemindType() == null ? "" : remind.getRemindType()) + "_" + (remind.getDetailId() == null ? "" : remind.getDetailId());
|
||||
if (latestMap.containsKey(key)) {
|
||||
continue;
|
||||
}
|
||||
SysOaRemindVo vo = new SysOaRemindVo();
|
||||
vo.setRemindId(remind.getRemindId());
|
||||
vo.setTaskTitle(remind.getTaskTitle());
|
||||
@@ -197,7 +217,6 @@ public class SysOaRemindServiceImpl implements ISysOaRemindService {
|
||||
long diffMillis = remind.getEndTime().getTime() - System.currentTimeMillis();
|
||||
long remainSeconds = diffMillis / 1000;
|
||||
vo.setRemainTime(remainSeconds);
|
||||
// 格式化为天时分秒
|
||||
long days = remainSeconds / (60 * 60 * 24);
|
||||
long hours = (remainSeconds / (60 * 60)) % 24;
|
||||
long minutes = (remainSeconds / 60) % 60;
|
||||
@@ -209,9 +228,9 @@ public class SysOaRemindServiceImpl implements ISysOaRemindService {
|
||||
sb.append(seconds).append("秒");
|
||||
vo.setRemark(sb.toString());
|
||||
}
|
||||
voList.add(vo);
|
||||
latestMap.put(key, vo);
|
||||
}
|
||||
return voList;
|
||||
return new ArrayList<>(latestMap.values());
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<SysOaRemind> buildQueryWrapper(SysOaRemindBo bo) {
|
||||
@@ -306,7 +325,7 @@ public class SysOaRemindServiceImpl implements ISysOaRemindService {
|
||||
remind.setTargetUserId(task.getWorkerId());
|
||||
remind.setTaskTitle(task.getTaskTitle());
|
||||
remind.setContent(task.getContent());
|
||||
remind.setTaskTime(now);
|
||||
remind.setTaskTime(null);
|
||||
remind.setTaskStatus("0");
|
||||
remind.setEndTime(endTime);
|
||||
remind.setCreateBy(task.getCreateBy());
|
||||
@@ -339,11 +358,25 @@ public class SysOaRemindServiceImpl implements ISysOaRemindService {
|
||||
remind.setUpdateBy(""); // 无updateBy
|
||||
remind.setAccessory(project.getAccessory());
|
||||
remind.setRemark(project.getRemark());
|
||||
// 项目提醒targetUserId可为空或负责人id
|
||||
remind.setTargetUserId(null);
|
||||
// 项目提醒targetUserId可为空或负责人id 负责人id需要模糊查询sys_user表
|
||||
LambdaQueryWrapper<SysUser> sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
sysUserLambdaQueryWrapper.like(SysUser::getNickName, project.getFunctionary());
|
||||
SysUser sysUser = sysUserMapper.selectOne(sysUserLambdaQueryWrapper);
|
||||
if (sysUser != null ) {
|
||||
// 如果找到用户,设置第一个用户的ID(或者根据实际需求选择合适的用户)
|
||||
remind.setTargetUserId(sysUser.getUserId());
|
||||
} else {
|
||||
// 如果没找到匹配的用户,可以设置为null或者其他默认值
|
||||
remind.setTargetUserId(null);
|
||||
}
|
||||
baseMapper.insert(remind);
|
||||
}
|
||||
}
|
||||
}
|
||||
// 把三天前的提醒任务状态改为已处理
|
||||
LambdaUpdateWrapper<SysOaRemind> sysOaRemindLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
sysOaRemindLambdaUpdateWrapper.lt(SysOaRemind::getCreateTime, DateUtil.addDays(new Date(), -3));
|
||||
sysOaRemindLambdaUpdateWrapper.set(SysOaRemind::getTaskStatus, "1");
|
||||
baseMapper.update(null, sysOaRemindLambdaUpdateWrapper);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,6 +65,7 @@
|
||||
<result property="laborCost" column="labor_cost"/>
|
||||
<result property="projectCode" column="project_code"/>
|
||||
<result property="signingCompany" column="signing_company"/>
|
||||
<result property="remainTime" column="remainTime"/>
|
||||
</resultMap>
|
||||
|
||||
|
||||
@@ -587,7 +588,8 @@
|
||||
postpone_time,
|
||||
color,
|
||||
trade_type,
|
||||
pre_pay
|
||||
pre_pay,
|
||||
TIMESTAMPDIFF(DAY, NOW(), sop.postpone_time) AS remainTime
|
||||
from sys_oa_project sop
|
||||
where sop.project_id = #{projectId}
|
||||
</select>
|
||||
|
||||
Reference in New Issue
Block a user