소스 검색

导出模版格式化日期

main
1341924763@qq.com 4 일 전
부모
커밋
c6d94e93b1

+ 7
- 1
zs-manager/src/main/java/com/ruoyi/zhushi/entity/DayRecord.java 파일 보기



import lombok.Data; import lombok.Data;


import java.math.BigDecimal;

@Data @Data
public class DayRecord { public class DayRecord {


// 加班 // 加班
private String jiaban; private String jiaban;
// 合计 // 合计
private String heji;
private BigDecimal heji;
// 备注 // 备注
private String remark; private String remark;


// 工作日 // 工作日
private String gongzuori; private String gongzuori;

// 工作日
private BigDecimal gongzuorijiaban;

// 休息日 // 休息日
private String xiuxiri; private String xiuxiri;
// 节假日 // 节假日

+ 97
- 53
zs-manager/src/main/java/com/ruoyi/zhushi/service/impl/DkRecordServiceImpl.java 파일 보기

import com.ruoyi.zhushi.entity.*; import com.ruoyi.zhushi.entity.*;
import com.ruoyi.zhushi.mapper.DkRecordMapper; import com.ruoyi.zhushi.mapper.DkRecordMapper;
import com.ruoyi.zhushi.service.DkRecordService; import com.ruoyi.zhushi.service.DkRecordService;
import com.ruoyi.zhushi.util.CalendarGenerator;
import com.ruoyi.zhushi.util.Constans; import com.ruoyi.zhushi.util.Constans;
import com.ruoyi.zhushi.util.TimeUtils; import com.ruoyi.zhushi.util.TimeUtils;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
import java.time.*; import java.time.*;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.format.TextStyle; import java.time.format.TextStyle;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.*;


@Service @Service
public class DkRecordServiceImpl implements DkRecordService { public class DkRecordServiceImpl implements DkRecordService {
public TableDataInfo<DkCheckInRecordDTO> queryPageList(DkCheckInRecordDTO dkCheckInRecordDTO, PageQuery pageQuery) { public TableDataInfo<DkCheckInRecordDTO> queryPageList(DkCheckInRecordDTO dkCheckInRecordDTO, PageQuery pageQuery) {
LoginUser loginUser = LoginHelper.getLoginUser(); LoginUser loginUser = LoginHelper.getLoginUser();
LambdaQueryWrapper<DkCheckInRecord> queryWrapper = buildQueryWrapper(dkCheckInRecordDTO, null); LambdaQueryWrapper<DkCheckInRecord> queryWrapper = buildQueryWrapper(dkCheckInRecordDTO, null);
if (loginUser == null) {
return TableDataInfo.build();
}else {
// 获取用户角色
List<RoleDTO> roles = loginUser.getRoles();
if (roles != null && roles.size() > 0) {
for (RoleDTO role : roles) {
if (role.getRoleKey().equals(Constans.ROLEKEY)) {
queryWrapper.eq(DkCheckInRecord::getSysUserId, loginUser.getUserId());
if (dkCheckInRecordDTO.getFlag().equals("my")){
if (loginUser == null) {
return TableDataInfo.build();
}else {
// 获取用户角色
List<RoleDTO> roles = loginUser.getRoles();
if (roles != null && roles.size() > 0) {
for (RoleDTO role : roles) {
if (role.getRoleKey().equals(Constans.ROLEKEY)) {
queryWrapper.eq(DkCheckInRecord::getSysUserId, loginUser.getUserId());
}
} }
} }
} }
} }

Page<DkCheckInRecordDTO> result = dkMapper.selectVoPage(pageQuery.build(), queryWrapper); Page<DkCheckInRecordDTO> result = dkMapper.selectVoPage(pageQuery.build(), queryWrapper);
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
setCellValue(sheet, 41, 8, data.getWorkOverTime() + "小时"); setCellValue(sheet, 41, 8, data.getWorkOverTime() + "小时");
setCellValue(sheet, 41, 9, data.getRestOverTime() + "小时"); setCellValue(sheet, 41, 9, data.getRestOverTime() + "小时");


// 要生成的年份
int year = LocalDate.now().getYear();
int month = LocalDate.now().getMonthValue();
int rowIndex = 10;
Map<Integer, List<CalendarGenerator.DayInfo>> calendar = CalendarGenerator.generateYearCalendar(year);
List<CalendarGenerator.DayInfo> dayInfos = calendar.get(month);
for (int i = 0; i < dayInfos.size(); i++) {
rowIndex = i + 10;
setCellValue(sheet, rowIndex, 1, dayInfos.get(i).getDay());
setCellValue(sheet, rowIndex, 2, dayInfos.get(i).getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINESE));
}


for (DayRecord record : data.getDayRecords()) { for (DayRecord record : data.getDayRecords()) {
if(record.getDay() == 1){ if(record.getDay() == 1){
fillTemplateCell(sheet, 10, record); fillTemplateCell(sheet, 10, record);
DayOfWeek dayOfWeek = localDate.getDayOfWeek(); DayOfWeek dayOfWeek = localDate.getDayOfWeek();
int week = dayOfWeek.getValue(); int week = dayOfWeek.getValue();
if(week == Constans.EXPORT_ZHOUYI){ if(week == Constans.EXPORT_ZHOUYI){

dayRecord.setWeekday("月"); dayRecord.setWeekday("月");
}else if(week == Constans.EXPORT_ZHOUER){ }else if(week == Constans.EXPORT_ZHOUER){
dayRecord.setWeekday("火"); dayRecord.setWeekday("火");




// // 判断是否为休假日加班 // // 判断是否为休假日加班
// if(Constans.EXPORT_ZHOULIU==week || Constans.EXPORT_ZHOURI==week){
// if(dk.getClockIn() != null && dk.getClockOut() != null){
// dayRecord.setXiuxiri("*");
// dayRecord.setRemark("加班1次");
// // 计算时间差
// Duration duration = Duration.between(dk.getClockIn(), dk.getClockOut());
// // 获取小时差(注意:此方法会舍去分钟和秒部分)
// long hours1 = duration.toMinutes(); // 结果:6 小时(15:45 - 09:30 = 6小时15分钟)
//
// if(hours1 >= 30){
// BigDecimal a = new BigDecimal(hours1);
// BigDecimal b = new BigDecimal("60");
// // 执行除法,指定精度和舍入模式
// BigDecimal result = a.divide(b, 1, BigDecimal.ROUND_HALF_UP);
// restOverTime = restOverTime.add(result);
// }
// }
// }else{
// // 判断是否为工作日加班
// if(dk.getClockOut() != null){
// if(dk.getClockOut().isAfter(workEndTime1)){
// // 计算时间差
// Duration duration = Duration.between(workEndTime1, dk.getClockOut());
// // 获取小时差(注意:此方法会舍去分钟和秒部分)
// long hours1 = duration.toMinutes(); // 结果:6 小时(15:45 - 09:30 = 6小时15分钟)
//
// if(hours1 >= 30){
// BigDecimal a = new BigDecimal(hours1);
// BigDecimal b = new BigDecimal("60");
// // 执行除法,指定精度和舍入模式
// BigDecimal result = a.divide(b, 1, BigDecimal.ROUND_HALF_UP);
// dayRecord.setGongzuori("*");
// dayRecord.setRemark("加班1次:" + result + "小时");
//
// workOverTime = workOverTime.add(result);
// }
// }
// }
// }
if(Constans.EXPORT_ZHOULIU==week || Constans.EXPORT_ZHOURI==week){
if(dk.getClockIn() != null && dk.getClockOut() != null){
dayRecord.setXiuxiri("*");
dayRecord.setRemark("加班1次");
// 计算时间差
Duration duration = Duration.between(dk.getClockIn(), dk.getClockOut());
// 获取小时差(注意:此方法会舍去分钟和秒部分)
long hours1 = duration.toMinutes(); // 结果:6 小时(15:45 - 09:30 = 6小时15分钟)

if(hours1 >= 30){
BigDecimal a = new BigDecimal(hours1);
BigDecimal b = new BigDecimal("60");
// 执行除法,指定精度和舍入模式
BigDecimal result = a.divide(b, 1, BigDecimal.ROUND_HALF_UP);
restOverTime = restOverTime.add(result);
}
}
}else{
// 判断是否为工作日加班
if(dk.getClockOut() != null){
if(dk.getClockOut().isAfter(workEndTime1)){
// 计算时间差
Duration duration = Duration.between(workEndTime1, dk.getClockOut());
// 获取小时差(注意:此方法会舍去分钟和秒部分)
long hours1 = duration.toMinutes(); // 结果:6 小时(15:45 - 09:30 = 6小时15分钟)

if(hours1 >= 30){
BigDecimal a = new BigDecimal(hours1);
BigDecimal b = new BigDecimal("60");
// 执行除法,指定精度和舍入模式
BigDecimal result = a.divide(b, 1, BigDecimal.ROUND_HALF_UP);
dayRecord.setGongzuori("*");
dayRecord.setGongzuorijiaban(result);
dayRecord.setHeji( result);
dayRecord.setRemark("加班1次:" + result + "小时");

workOverTime = workOverTime.add(result);
}
}
}
}
// 判断是否为法定节假日加班 // 判断是否为法定节假日加班
// // 获取法定节假日时间 // // 获取法定节假日时间
// List<LocalDate> holidays = getHolidays(LocalDate.now().getYear()); // List<LocalDate> holidays = getHolidays(LocalDate.now().getYear());
setCellValue(sheet, 2, 0, data.getDateTime()); setCellValue(sheet, 2, 0, data.getDateTime());
// setCellValue(sheet, 2, 0, data.getYear() + "年" + data.getMonth() + "月考勤记录"); // setCellValue(sheet, 2, 0, data.getYear() + "年" + data.getMonth() + "月考勤记录");


// 要生成的年份
int year = LocalDate.now().getYear();
int month = LocalDate.now().getMonthValue();
int rowIndex = 10;
Map<Integer, List<CalendarGenerator.DayInfo>> calendar = CalendarGenerator.generateYearCalendar(year);
List<CalendarGenerator.DayInfo> dayInfos = calendar.get(month);
for (int i = 0; i < dayInfos.size(); i++) {
rowIndex = i + 10;
setCellValue(sheet, rowIndex, 0, dayInfos.get(i).getDay());
String weekday = "";
int week = dayInfos.get(i).getDayOfWeek().getValue();
if(week == Constans.EXPORT_ZHOUYI){
weekday = "月";
}else if(week == Constans.EXPORT_ZHOUER){
weekday = "火";
}else if(week == Constans.EXPORT_ZHOUSAN){
weekday = "水";
}else if(week == Constans.EXPORT_ZHOUSI){
weekday = "木";
}else if(week == Constans.EXPORT_ZHOUWU){
weekday = "金";
} else if(week == Constans.EXPORT_ZHOULIU){
weekday = "土";
}else if(week == Constans.EXPORT_ZHOURI){
weekday = "日";
}
setCellValue(sheet, rowIndex, 1, weekday);
}

for (DayRecord record : data.getDayRecords()) { for (DayRecord record : data.getDayRecords()) {
if(record.getDay() == 1){ if(record.getDay() == 1){
fillTemplateRiBenCell(sheet, 10, record); fillTemplateRiBenCell(sheet, 10, record);

Loading…
취소
저장