package com.ruoyi.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.TDept; import com.ruoyi.system.mapper.OaApprovalApplicationsMapper; import com.ruoyi.system.model.OaApprovalApplications; import com.ruoyi.system.query.ApprovalTodoListQuery; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.OaApprovalApplicationsService; import com.ruoyi.system.service.TDeptService; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Objects; /** *

* 审批申请记录表 服务实现类 *

* * @author WuGuanFengYue * @since 2025-09-15 */ @Service @RequiredArgsConstructor(onConstructor_ = {@Lazy}) public class OaApprovalApplicationsServiceImpl extends ServiceImpl implements OaApprovalApplicationsService { private final ISysUserService sysUserService; private final TDeptService deptService; @Override public PageInfo pageListAudit(ApprovalTodoListQuery query) { PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List list = this.baseMapper.pageListAudit(query,pageInfo); pageInfo.setRecords( list); return pageInfo; } @Override public void assembleApplicationDetail(OaApprovalApplications app) { //查询申请人名称 SysUser sysUser = sysUserService.selectUserById(Long.valueOf(app.getApplicantUserId())); if (Objects.nonNull(sysUser)) { app.setApplicantName(sysUser.getNickName()); } //查询部门信息 TDept dept = deptService.getById(app.getDeptId()); if (Objects.nonNull(dept)) { app.setDeptName(dept.getDeptName()); } } @Override public String generateApplicationCode(String prefix) { String dateStr = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); // 查询当天已生成的申请单号数量 Long count = this.lambdaQuery() .likeRight(OaApprovalApplications::getApplicationCode, prefix) .ge(OaApprovalApplications::getCreateTime, LocalDate.now().atStartOfDay()) .lt(OaApprovalApplications::getCreateTime, LocalDate.now().plusDays(1).atStartOfDay()) .count(); // 生成4位序号,从0001开始 int sequence = (count != null ? count.intValue() : 0) + 1; String sequenceStr = String.format("%04d", sequence); return prefix + dateStr + sequenceStr; } }