完成日报模块

This commit is contained in:
2025-02-20 10:41:00 +08:00
parent 2228f914db
commit d98028cf78
16 changed files with 247 additions and 38 deletions

View File

@ -1,6 +1,8 @@
package com.ruoyi.wgz.service;
import com.ruoyi.wgz.bo.req.WgzAppUserDailyCalendarRes;
import com.ruoyi.wgz.bo.req.WgzAppUserDailyCalendarReq;
import com.ruoyi.wgz.bo.req.WgzAppUserDailyRecordReq;
import com.ruoyi.wgz.bo.res.WgzAppUserDailyRecordRes;
import com.ruoyi.wgz.bo.res.WgzUserDailyCalendarRes;
import com.ruoyi.wgz.domain.WgzDailyClock;
import com.ruoyi.wgz.bo.WgzDailyClockQueryBo;
@ -66,5 +68,15 @@ public interface IWgzDailyClockService extends IServicePlus<WgzDailyClock> {
/**
* 日报日历
*/
WgzUserDailyCalendarRes userDailyCalendar(@Validated WgzAppUserDailyCalendarRes req);
WgzUserDailyCalendarRes userDailyCalendar(@Validated WgzAppUserDailyCalendarReq req);
/**
* 日报日历·日报记录(历史记录分页查询)
*/
TableDataInfo<WgzAppUserDailyRecordRes> userDailyRecord(@Validated WgzAppUserDailyRecordReq req);
/**
* 日报日历·日报记录(历史记录分页查询)
*/
WgzDailyClock userCheckDailyNewspaper(Long id);
}

View File

@ -11,8 +11,10 @@ import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import java.time.LocalDate;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* 请假Service接口
@ -81,4 +83,9 @@ public interface IWgzLeaveService extends IServicePlus<WgzLeave> {
* 取消请假申请
*/
Boolean userCancelLeave(@Validated @RequestBody WgzAppCancelLeaveReq req);
/*
* 查看指定人、指定项目、指定月是否请假
*/
Map<LocalDate, LocalDate> selectByUserCancelLeave(String yearMonth);
}

View File

@ -6,9 +6,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.wgz.bo.req.WgzAppUserDailyCalendarRes;
import com.ruoyi.wgz.bo.req.WgzAppUserDailyCalendarReq;
import com.ruoyi.wgz.bo.req.WgzAppUserDailyRecordReq;
import com.ruoyi.wgz.bo.res.WgzAppLeaveHistoryListPageRes;
import com.ruoyi.wgz.bo.res.WgzAppUserDailyRecordRes;
import com.ruoyi.wgz.bo.res.WgzUserDailyCalendarRes;
import com.ruoyi.wgz.bo.rests.WgzAppAttachmentAcquisitionTwo;
import com.ruoyi.wgz.service.IWgzLeaveService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -30,6 +35,8 @@ import java.util.*;
*/
@Service
public class WgzDailyClockServiceImpl extends ServicePlusImpl<WgzDailyClockMapper, WgzDailyClock> implements IWgzDailyClockService {
@Autowired
private IWgzLeaveService iWgzLeaveService;
@Override
public WgzDailyClock queryById(Long id){
@ -64,7 +71,6 @@ public class WgzDailyClockServiceImpl extends ServicePlusImpl<WgzDailyClockMappe
lqw.eq(StrUtil.isNotBlank(bo.getAuditorType()), WgzDailyClock::getAuditorType, bo.getAuditorType());
lqw.eq(StrUtil.isNotBlank(bo.getAuditorOpinion()), WgzDailyClock::getAuditorOpinion, bo.getAuditorOpinion());
lqw.eq(bo.getAuditorTime() != null, WgzDailyClock::getAuditorTime, bo.getAuditorTime());
lqw.eq(StrUtil.isNotBlank(bo.getExceptionType()), WgzDailyClock::getExceptionType, bo.getExceptionType());
return lqw;
}
@ -107,7 +113,7 @@ public class WgzDailyClockServiceImpl extends ServicePlusImpl<WgzDailyClockMappe
*/
@Override
public WgzUserDailyCalendarRes userDailyCalendar(WgzAppUserDailyCalendarRes req) {
public WgzUserDailyCalendarRes userDailyCalendar(WgzAppUserDailyCalendarReq req) {
//1、获取当月的所有日期
LocalDate currentDate = LocalDate.now();
LocalDate firstDayOfMonth = currentDate.with(TemporalAdjusters.firstDayOfMonth());
@ -122,9 +128,9 @@ public class WgzDailyClockServiceImpl extends ServicePlusImpl<WgzDailyClockMappe
QueryWrapper<WgzDailyClock> queryWrapper = new QueryWrapper<>();
queryWrapper.apply("DATE_FORMAT(dily_time, '%Y-%m') = {0}", req.getYearMonth()); // 使用 apply 方法添加自定义 SQL 条件
List<WgzDailyClock> wgzDailyClocks = baseMapper.selectList(queryWrapper);
//3、查看当前人当前月是否有请假
//4、将获取的年月与数据库中的日期进行比对然后填充数据
//3、查看当前人、当前项目、当前月是否有请假
Map<LocalDate, LocalDate> ll = iWgzLeaveService.selectByUserCancelLeave(req.getYearMonth());
//4、将获取的年月与数据库中的日期进行比对然后填充数据
Map<String, WgzAppAttachmentAcquisitionTwo> fh = new HashMap<>();
dates.forEach(date -> {
wgzDailyClocks.forEach(wgzDailyClock -> {
@ -136,13 +142,26 @@ public class WgzDailyClockServiceImpl extends ServicePlusImpl<WgzDailyClockMappe
setId(wgzDailyClock.getId()).
setDilyTime(wgzDailyClock.getDilyTime()).
setPnchOsition(wgzDailyClock.getPnchOsition());
// if (StrUtil.isNotBlank(wgzDailyClock.getDailyMark())) {
// wgzAppAttachmentAcquisitionTwo.setStatus("2") //请假
// }
if (ll.get(clockDate).equals(clockDate)) {
wgzAppAttachmentAcquisitionTwo.setStatus("2"); //全天请假
}
fh.put(date.toString(),wgzAppAttachmentAcquisitionTwo);
}
});
});
return new WgzUserDailyCalendarRes().setDailyCalendar(fh);
}
@Override
public TableDataInfo<WgzAppUserDailyRecordRes> userDailyRecord(WgzAppUserDailyRecordReq req) {
Page<WgzAppUserDailyRecordRes> pe = new Page<>();
pe.setCurrent(req.getPageNum());
pe.setSize(req.getPageSize());
return PageUtils.buildDataInfo(baseMapper.userDailyRecordListPage(pe));
}
@Override
public WgzDailyClock userCheckDailyNewspaper(Long id) {
return getById(id);
}
}

View File

@ -30,11 +30,11 @@ import com.ruoyi.wgz.mapper.WgzLeaveMapper;
import com.ruoyi.wgz.service.IWgzLeaveService;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
* 请假Service业务层处理
@ -131,20 +131,18 @@ public class WgzLeaveServiceImpl extends ServicePlusImpl<WgzLeaveMapper, WgzLeav
BgtProjectRecruitApply by = iBgtProjectRecruitApplyService.selectByUserIdProjectRecruitApplyId(appUserId);
//3、根据招工id获取到具体招工信息
BgtProjectRecruit appById = iBgtProjectRecruitService.getAppById(by.getId());
//4、获取上下班时间 是从appById中获取但是表中还未创建字段先省略
LocalTime s = LocalTime.of(9, 0);
LocalTime x = LocalTime.of(18, 0);
//5、组装请假对象数据 并插入
//6、组装请假对象数据 并插入
WgzLeave wgzLeave = new WgzLeave().
setRecruitId(by.getId()).
setSubject(appById.getRecruitName()).
setUserId(appUserId).
setLeaveType(req.getLeaveType()).
setStartTime(req.getStartTime()).
setEndTime(req.getEndTime()).
setReason(req.getReason()).
setAuditorUserId(appById.getUserId()).
setWorkingTime(s).
setClosingTime(x);
setWorkingTime(appById.getBeginWorkTime()).
setClosingTime(appById.getEndWorkTime());
return baseMapper.insert(wgzLeave)>0;
}
@ -164,4 +162,26 @@ public class WgzLeaveServiceImpl extends ServicePlusImpl<WgzLeaveMapper, WgzLeav
setCancelLeave(LocalDateTime.now());
return baseMapper.updateById(wgzLeave)>0;
}
@Override
public Map<LocalDate, LocalDate> selectByUserCancelLeave(String yearMonth) {
Map<LocalDate, LocalDate> ld = new HashMap<>();
//1、现获取用户的唯一标识
Long appUserId = SecurityUtils.getAppUserId();
//2、根据唯一标识获取到当前用户的招工
BgtProjectRecruitApply by = iBgtProjectRecruitApplyService.selectByUserIdProjectRecruitApplyId(appUserId);
//2、查询请假表
LambdaQueryWrapper<WgzLeave> apply = new LambdaQueryWrapper<WgzLeave>().
eq(WgzLeave::getUserId, appUserId).
eq(WgzLeave::getRecruitId, by.getId()).
eq(WgzLeave::getAuditorType, "2")
.apply("date_format(start_time,'%Y%m') = {0}", yearMonth);
List<WgzLeave> wgzLeaves = baseMapper.selectList(apply);
wgzLeaves.forEach( leave -> {
LocalDateTime startTime = leave.getStartTime();
LocalDate localDate = startTime.toLocalDate();
ld.put(localDate,localDate);
});
return ld;
}
}