Browse Source

1.国内模板汇总表修改

main
wangqiang 1 day ago
parent
commit
2f65190f3f

+ 11
- 26
zs-manager/src/main/java/com/ruoyi/zhushi/entity/EmployeeAttendance.java View File



import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Map;


public class EmployeeAttendance { public class EmployeeAttendance {
private long userId; private long userId;
private int month; private int month;
private List<DayRecord> dayRecords; private List<DayRecord> dayRecords;


private int chidaorenshu = 0;
private int chidaocishu = 0; private int chidaocishu = 0;
private int zaotuirenshu = 0;
private int zaotuicishu = 0;
private java.math.BigDecimal workOverTime; private java.math.BigDecimal workOverTime;
private java.math.BigDecimal restOverTime; private java.math.BigDecimal restOverTime;


private BigDecimal exceptionCount; private BigDecimal exceptionCount;

// <用户名,<年假次数:1,迟到次数:1>>
private Map<String, Map<String,Integer>> summary;
// getters and setters // getters and setters


public long getUserId() { public long getUserId() {
this.dayRecords = dayRecords; this.dayRecords = dayRecords;
} }


public int getChidaorenshu() {
return chidaorenshu;
}


public void setChidaorenshu(int chidaorenshu) {
this.chidaorenshu = chidaorenshu;
}


public int getChidaocishu() { public int getChidaocishu() {
return chidaocishu; return chidaocishu;
this.chidaocishu = chidaocishu; this.chidaocishu = chidaocishu;
} }


public int getZaotuirenshu() {
return zaotuirenshu;
}

public void setZaotuirenshu(int zaotuirenshu) {
this.zaotuirenshu = zaotuirenshu;
}

public int getZaotuicishu() {
return zaotuicishu;
}

public void setZaotuicishu(int zaotuicishu) {
this.zaotuicishu = zaotuicishu;
}

public BigDecimal getWorkOverTime() { public BigDecimal getWorkOverTime() {
return workOverTime; return workOverTime;
} }
public void setExceptionCount(BigDecimal exceptionCount) { public void setExceptionCount(BigDecimal exceptionCount) {
this.exceptionCount = exceptionCount; this.exceptionCount = exceptionCount;
} }

public Map<String, Map<String, Integer>> getSummary() {
return summary;
}

public void setSummary(Map<String, Map<String, Integer>> summary) {
this.summary = summary;
}
} }

+ 41
- 36
zs-manager/src/main/java/com/ruoyi/zhushi/service/impl/DkRecordServiceImpl.java View File

inputStream = resource.getInputStream(); inputStream = resource.getInputStream();
} }


// 定义迟到人数
int latePersonCount = 0;
// 定义早退人数
int earlyPersonCount = 0;
// 定义迟到次数
int lateCount = 0;
// 定义早退次数
int earlyCount = 0;

//汇总表参数 记录每个用户的 迟到总数和年假总数
Map<String, Map<String,Integer>> summary = new HashMap<>();

Workbook workbook = WorkbookFactory.create(inputStream); Workbook workbook = WorkbookFactory.create(inputStream);
// 遍历所有人员 // 遍历所有人员
for (int i = 0; i <= users.size(); i++){ for (int i = 0; i <= users.size(); i++){
workbook.setSheetName(newSheetIndex, "汇总"); workbook.setSheetName(newSheetIndex, "汇总");
// 获取新创建的Sheet // 获取新创建的Sheet
Sheet newSheet = workbook.getSheetAt(newSheetIndex); Sheet newSheet = workbook.getSheetAt(newSheetIndex);
fillTemplateHuiZong(newSheet, latePersonCount, earlyPersonCount, lateCount, earlyCount);
fillTemplateHuiZong(newSheet, summary);
} }
}else{ }else{
DkAttendanceGroupAndUser user = users.get(i); DkAttendanceGroupAndUser user = users.get(i);
if(Constans.GUONEI.equals(dkCheckInRecordDTO.getModelType())){ if(Constans.GUONEI.equals(dkCheckInRecordDTO.getModelType())){
// 构造导出数据 // 构造导出数据
EmployeeAttendance attendanceData = prepareSampleData(dkCheckInRecordDTO); EmployeeAttendance attendanceData = prepareSampleData(dkCheckInRecordDTO);
//计算总共 迟到 早退次数
//记录每个人的迟到次数
if(attendanceData.getChidaocishu() > 0){ if(attendanceData.getChidaocishu() > 0){
latePersonCount ++;
lateCount = lateCount + attendanceData.getChidaocishu();
}
if(attendanceData.getZaotuicishu() > 0){
earlyPersonCount ++;
earlyCount = earlyCount + attendanceData.getZaotuicishu();
if (summary.containsKey(user.getNickName())) {
Map map = summary.get(user.getNickName());
map.put("lateCount",attendanceData.getChidaocishu());
} else {
Map map = new HashMap();
map.put("lateCount",attendanceData.getChidaocishu());
summary.put(user.getNickName(),map);
}
} }
// 填充数据到模板
/* if (attendanceData.getDayRecords().size() == 0){
continue;
}*/

//excel内容构建 //excel内容构建
fillTemplate(newSheet, attendanceData,dkCheckInRecordDTO.getStrMonth(),user);
fillTemplate(newSheet, attendanceData,dkCheckInRecordDTO.getStrMonth(),user,summary);
} }
// 日本模版 // 日本模版
if(Constans.RIBEN.equals(dkCheckInRecordDTO.getModelType())){ if(Constans.RIBEN.equals(dkCheckInRecordDTO.getModelType())){
return clockOut.isBefore(endDateTime); return clockOut.isBefore(endDateTime);
} }
/*--------------------------------------------------国内汇总信息 --------------------------*/ /*--------------------------------------------------国内汇总信息 --------------------------*/
private void fillTemplateHuiZong(Sheet sheet, int latePersonCount, int earlyPersonCount, int lateCount,
int earlyCount) {

setCellValue(sheet, 0, 1, "人数");
setCellValue(sheet, 0, 2, "次数");
setCellValue(sheet, 1, 0, "迟到");
setCellValue(sheet, 2, 0, "早退");
setCellValue(sheet, 1, 1, latePersonCount);
setCellValue(sheet, 1, 2, lateCount);
setCellValue(sheet, 2, 1, earlyPersonCount);
setCellValue(sheet, 2, 2, earlyCount);
private void fillTemplateHuiZong(Sheet sheet, Map<String, Map<String,Integer>> summary) {

setCellValue(sheet, 0, 0, "姓名");
setCellValue(sheet, 0, 1, "年假合计");
setCellValue(sheet, 0, 2, "迟到合计");
int i =1;
for (String key : summary.keySet()) {
Map<String,Integer> value = summary.get(key);
setCellValue(sheet, i, 0, key);
setCellValue(sheet, i, 1, value.get("njCount"));
setCellValue(sheet, i, 2, value.get("lateCount"));
i++;
}


} }


} }


data.setChidaocishu(lateCount); data.setChidaocishu(lateCount);
data.setZaotuicishu(earlyCount);
data.setWorkOverTime(workOverTime); data.setWorkOverTime(workOverTime);
data.setRestOverTime(restOverTime); data.setRestOverTime(restOverTime);
data.setExceptionCount(exceptionCount); data.setExceptionCount(exceptionCount);
return data; return data;
} }


private void fillTemplate(Sheet sheet, EmployeeAttendance data,String date,DkAttendanceGroupAndUser user) {
private void fillTemplate(Sheet sheet, EmployeeAttendance data,String date,DkAttendanceGroupAndUser user,Map<String, Map<String,Integer>> summary) {
// 1.填充标题区域 // 1.填充标题区域
setCellValue(sheet, 6, 6, user.getUserName()); setCellValue(sheet, 6, 6, user.getUserName());
setCellValue(sheet, 6, 9, user.getNickName()); setCellValue(sheet, 6, 9, user.getNickName());
QueryWrapper<NjBalanceManageDetail> njWrapper = new QueryWrapper<>(); QueryWrapper<NjBalanceManageDetail> njWrapper = new QueryWrapper<>();
njWrapper.eq("user_id", user.getUserId()); njWrapper.eq("user_id", user.getUserId());
njWrapper.eq("status","2"); njWrapper.eq("status","2");
njWrapper.apply("YEAR(create_time) = {0}", Integer.parseInt(date.substring(0,4)));
njWrapper.apply("MONTH(create_time) = {0}",Integer.parseInt(date.substring(5)));
njWrapper.like("apply_dates",date);
List<NjBalanceManageDetail> njList = njBalanceManageDetailMapper.selectList(njWrapper); List<NjBalanceManageDetail> njList = njBalanceManageDetailMapper.selectList(njWrapper);


boolean isLeave = false; boolean isLeave = false;
setCellValue(sheet, 41, 7, formatOvertime(data.getWorkOverTime()==null?0:data.getWorkOverTime().doubleValue())); setCellValue(sheet, 41, 7, formatOvertime(data.getWorkOverTime()==null?0:data.getWorkOverTime().doubleValue()));
setCellValue(sheet, 41, 8, formatOvertime(data.getRestOverTime()==null?0:data.getRestOverTime().doubleValue())); setCellValue(sheet, 41, 8, formatOvertime(data.getRestOverTime()==null?0:data.getRestOverTime().doubleValue()));
setCellValue(sheet, 41, 10, njCount); setCellValue(sheet, 41, 10, njCount);
if (njCount>0) {
if (summary.containsKey(user.getNickName())) {
Map map = summary.get(user.getNickName());
map.put("njCount",njCount);
} else {
Map map = new HashMap();
map.put("njCount",njCount);
summary.put(user.getNickName(),map);
}
}
} }


private void fillTemplateCell(Sheet sheet, int rowIndex, DayRecord record) { private void fillTemplateCell(Sheet sheet, int rowIndex, DayRecord record) {

Loading…
Cancel
Save