|
|
@@ -1,6 +1,7 @@
|
|
|
package com.xjrsoft.module.ledger.controller;
|
|
|
|
|
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.excel.EasyExcel;
|
|
|
import com.alibaba.excel.support.ExcelTypeEnum;
|
|
|
@@ -12,6 +13,7 @@ import com.xjrsoft.common.page.ConventPage;
|
|
|
import com.xjrsoft.common.page.PageOutput;
|
|
|
import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
import com.xjrsoft.module.ledger.dto.LedgerStatisticsPageDto;
|
|
|
+import com.xjrsoft.module.ledger.vo.LedgerStatisticsLeaveExcelVo;
|
|
|
import com.xjrsoft.module.ledger.vo.LedgerStatisticsLeaveVo;
|
|
|
import com.xjrsoft.module.ledger.vo.LedgerStatisticsListenVo;
|
|
|
import com.xjrsoft.module.ledger.vo.LedgerStatisticsOvertimeVo;
|
|
|
@@ -36,6 +38,7 @@ import java.io.ByteArrayOutputStream;
|
|
|
import java.text.DecimalFormat;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -60,6 +63,20 @@ public class LedgerStatisticsController {
|
|
|
@ApiOperation(value="教师请假统计(分页)")
|
|
|
@SaCheckPermission("ledgerstatistics:detail")
|
|
|
public RT<PageOutput<LedgerStatisticsLeaveVo>> teacherLeavePage(@Valid LedgerStatisticsPageDto dto){
|
|
|
+
|
|
|
+ LocalDateTime startTime = null;
|
|
|
+ LocalDateTime endTime = null;
|
|
|
+ if(dto.getStartDate() != null && dto.getEndDate() != null){
|
|
|
+ startTime = dto.getStartDate().atTime(0,0,0);
|
|
|
+ endTime = dto.getEndDate().atTime(23,59,59);
|
|
|
+ }
|
|
|
+ Map<String, List<WfTeacherleave>> userLeaveMap = teacherleaveService.getUserLeaveList(startTime, endTime);
|
|
|
+
|
|
|
+ List<String> userIds = new ArrayList<>(userLeaveMap.keySet());
|
|
|
+ if(userIds.isEmpty()){
|
|
|
+ return RT.ok(new PageOutput<>());
|
|
|
+ }
|
|
|
+
|
|
|
IPage<LedgerStatisticsLeaveVo> userPage = userService.selectJoinListPage(ConventPage.getPage(dto), LedgerStatisticsLeaveVo.class,
|
|
|
new MPJLambdaWrapper<User>()
|
|
|
.disableSubLogicDel()
|
|
|
@@ -70,15 +87,9 @@ public class LedgerStatisticsController {
|
|
|
" WHERE t1.delete_mark = 0 AND t2.user_id = t.id) as dept_name")
|
|
|
.innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
|
|
|
.like(StrUtil.isNotEmpty(dto.getName()), User::getName, dto.getName())
|
|
|
+ .in(User::getId, userIds)
|
|
|
.orderByAsc(User::getId)
|
|
|
);
|
|
|
- LocalDateTime startTime = null;
|
|
|
- LocalDateTime endTime = null;
|
|
|
- if(dto.getStartDate() != null && dto.getEndDate() != null){
|
|
|
- startTime = dto.getStartDate().atTime(0,0,0);
|
|
|
- endTime = dto.getEndDate().atTime(23,59,59);
|
|
|
- }
|
|
|
- Map<String, List<WfTeacherleave>> userLeaveMap = teacherleaveService.getUserLeaveList(startTime, endTime);
|
|
|
|
|
|
for (LedgerStatisticsLeaveVo record : userPage.getRecords()) {
|
|
|
List<WfTeacherleave> wfTeacherleaves = userLeaveMap.get(record.getId().toString());
|
|
|
@@ -100,6 +111,23 @@ public class LedgerStatisticsController {
|
|
|
@ApiOperation(value="教师请假统计-导出")
|
|
|
@SaCheckPermission("ledgerstatistics:detail")
|
|
|
public ResponseEntity<byte[]> teacherLeaveExportQuery(@Valid @RequestBody LedgerStatisticsPageDto dto){
|
|
|
+ LocalDateTime startTime = null;
|
|
|
+ LocalDateTime endTime = null;
|
|
|
+ if(dto.getStartDate() != null && dto.getEndDate() != null){
|
|
|
+ startTime = dto.getStartDate().atTime(0,0,0);
|
|
|
+ endTime = dto.getEndDate().atTime(23,59,59);
|
|
|
+ }
|
|
|
+ Map<String, List<WfTeacherleave>> userLeaveMap = teacherleaveService.getUserLeaveList(startTime, endTime);
|
|
|
+
|
|
|
+ List<String> userIds = new ArrayList<>(userLeaveMap.keySet());
|
|
|
+ if(userIds.isEmpty()){
|
|
|
+ List<LedgerStatisticsLeaveVo> list = new ArrayList<>();
|
|
|
+ ByteArrayOutputStream bot = new ByteArrayOutputStream();
|
|
|
+ EasyExcel.write(bot, LedgerStatisticsLeaveVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(list);
|
|
|
+
|
|
|
+ return RT.fileStream(bot.toByteArray(), "teacher-leave" + ExcelTypeEnum.XLSX.getValue());
|
|
|
+ }
|
|
|
+
|
|
|
List<LedgerStatisticsLeaveVo> list = userService.selectJoinList(LedgerStatisticsLeaveVo.class,
|
|
|
new MPJLambdaWrapper<User>()
|
|
|
.disableSubLogicDel()
|
|
|
@@ -110,15 +138,10 @@ public class LedgerStatisticsController {
|
|
|
" WHERE t1.delete_mark = 0 AND t2.user_id = t.id) as dept_name")
|
|
|
.innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
|
|
|
.like(StrUtil.isNotEmpty(dto.getName()), User::getName, dto.getName())
|
|
|
+ .in(User::getId, userIds)
|
|
|
.orderByAsc(User::getId)
|
|
|
);
|
|
|
- LocalDateTime startTime = null;
|
|
|
- LocalDateTime endTime = null;
|
|
|
- if(dto.getStartDate() != null && dto.getEndDate() != null){
|
|
|
- startTime = dto.getStartDate().atTime(0,0,0);
|
|
|
- endTime = dto.getEndDate().atTime(23,59,59);
|
|
|
- }
|
|
|
- Map<String, List<WfTeacherleave>> userLeaveMap = teacherleaveService.getUserLeaveList(startTime, endTime);
|
|
|
+
|
|
|
int sortCode = 1;
|
|
|
for (LedgerStatisticsLeaveVo record : list) {
|
|
|
List<WfTeacherleave> wfTeacherleaves = userLeaveMap.get(record.getId().toString());
|
|
|
@@ -131,11 +154,12 @@ public class LedgerStatisticsController {
|
|
|
String formattedValue = df.format(value);
|
|
|
record.setLeaveDays(formattedValue);
|
|
|
record.setSortCode(sortCode);
|
|
|
+// BeanUtil.toBean(, LedgerStatisticsLeaveExcelVo.class);
|
|
|
sortCode ++;
|
|
|
}
|
|
|
|
|
|
ByteArrayOutputStream bot = new ByteArrayOutputStream();
|
|
|
- EasyExcel.write(bot, LedgerStatisticsLeaveVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(list);
|
|
|
+ EasyExcel.write(bot, LedgerStatisticsLeaveExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(list);
|
|
|
|
|
|
return RT.fileStream(bot.toByteArray(), "teacher-leave" + ExcelTypeEnum.XLSX.getValue());
|
|
|
}
|
|
|
@@ -176,7 +200,7 @@ public class LedgerStatisticsController {
|
|
|
}
|
|
|
sql += " GROUP BY t4.teacher_user_id";
|
|
|
List<Map<String, Object>> list = SqlRunnerAdapter.db().selectList(sql);
|
|
|
- Map<Long, String> userLeaveMap = list.stream().collect(
|
|
|
+ Map<Long, String> userLeaveMap = list.stream().filter(x -> x.get("total_days") != null && x.get("teacher_user_id") != null).collect(
|
|
|
Collectors.toMap(x -> Long.parseLong(x.get("teacher_user_id").toString()), x -> x.get("total_days").toString())
|
|
|
);
|
|
|
for (LedgerStatisticsOvertimeVo record : userPage.getRecords()) {
|