|
|
@@ -15,7 +15,9 @@ 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.LedgerStatisticsListenExcelVo;
|
|
|
import com.xjrsoft.module.ledger.vo.LedgerStatisticsListenVo;
|
|
|
+import com.xjrsoft.module.ledger.vo.LedgerStatisticsOvertimeExcelVo;
|
|
|
import com.xjrsoft.module.ledger.vo.LedgerStatisticsOvertimeVo;
|
|
|
import com.xjrsoft.module.organization.entity.User;
|
|
|
import com.xjrsoft.module.organization.service.IUserService;
|
|
|
@@ -121,9 +123,9 @@ public class LedgerStatisticsController {
|
|
|
|
|
|
List<String> userIds = new ArrayList<>(userLeaveMap.keySet());
|
|
|
if(userIds.isEmpty()){
|
|
|
- List<LedgerStatisticsLeaveVo> list = new ArrayList<>();
|
|
|
+ List<LedgerStatisticsLeaveExcelVo> list = new ArrayList<>();
|
|
|
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());
|
|
|
}
|
|
|
@@ -141,6 +143,7 @@ public class LedgerStatisticsController {
|
|
|
.in(User::getId, userIds)
|
|
|
.orderByAsc(User::getId)
|
|
|
);
|
|
|
+ List<LedgerStatisticsLeaveExcelVo> dataList = new ArrayList<>();
|
|
|
|
|
|
int sortCode = 1;
|
|
|
for (LedgerStatisticsLeaveVo record : list) {
|
|
|
@@ -154,12 +157,13 @@ public class LedgerStatisticsController {
|
|
|
String formattedValue = df.format(value);
|
|
|
record.setLeaveDays(formattedValue);
|
|
|
record.setSortCode(sortCode);
|
|
|
-// BeanUtil.toBean(, LedgerStatisticsLeaveExcelVo.class);
|
|
|
+ LedgerStatisticsLeaveExcelVo bean = BeanUtil.toBean(record, LedgerStatisticsLeaveExcelVo.class);
|
|
|
+ dataList.add(bean);
|
|
|
sortCode ++;
|
|
|
}
|
|
|
|
|
|
ByteArrayOutputStream bot = new ByteArrayOutputStream();
|
|
|
- EasyExcel.write(bot, LedgerStatisticsLeaveExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(list);
|
|
|
+ EasyExcel.write(bot, LedgerStatisticsLeaveExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(dataList);
|
|
|
|
|
|
return RT.fileStream(bot.toByteArray(), "teacher-leave" + ExcelTypeEnum.XLSX.getValue());
|
|
|
}
|
|
|
@@ -168,18 +172,6 @@ public class LedgerStatisticsController {
|
|
|
@ApiOperation(value="教师加班统计(分页)")
|
|
|
@SaCheckPermission("ledgerstatistics:detail")
|
|
|
public RT<PageOutput<LedgerStatisticsOvertimeVo>> teacherOvertimePage(@Valid LedgerStatisticsPageDto dto){
|
|
|
- IPage<LedgerStatisticsOvertimeVo> userPage = userService.selectJoinListPage(ConventPage.getPage(dto), LedgerStatisticsOvertimeVo.class,
|
|
|
- new MPJLambdaWrapper<User>()
|
|
|
- .disableSubLogicDel()
|
|
|
- .select(User::getId)
|
|
|
- .select(User.class, x -> VoToColumnUtil.fieldsToColumns(UserPageVo.class).contains(x.getProperty()))
|
|
|
- .select(" (SELECT GROUP_CONCAT(t1.name) FROM xjr_department t1" +
|
|
|
- " INNER JOIN xjr_user_dept_relation t2 ON t1.id = t2.dept_id" +
|
|
|
- " 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())
|
|
|
- .orderByAsc(User::getId)
|
|
|
- );
|
|
|
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
String sql = "SELECT t4.teacher_user_id,SUM(t.total_days) as total_days FROM wf_overtime t" +
|
|
|
@@ -203,6 +195,26 @@ public class LedgerStatisticsController {
|
|
|
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())
|
|
|
);
|
|
|
+
|
|
|
+ List<Long> userIds = new ArrayList<>(userLeaveMap.keySet());
|
|
|
+ if(userIds.isEmpty()){
|
|
|
+ return RT.ok(new PageOutput<>());
|
|
|
+ }
|
|
|
+
|
|
|
+ IPage<LedgerStatisticsOvertimeVo> userPage = userService.selectJoinListPage(ConventPage.getPage(dto), LedgerStatisticsOvertimeVo.class,
|
|
|
+ new MPJLambdaWrapper<User>()
|
|
|
+ .disableSubLogicDel()
|
|
|
+ .select(User::getId)
|
|
|
+ .select(User.class, x -> VoToColumnUtil.fieldsToColumns(UserPageVo.class).contains(x.getProperty()))
|
|
|
+ .select(" (SELECT GROUP_CONCAT(t1.name) FROM xjr_department t1" +
|
|
|
+ " INNER JOIN xjr_user_dept_relation t2 ON t1.id = t2.dept_id" +
|
|
|
+ " 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)
|
|
|
+ );
|
|
|
+
|
|
|
for (LedgerStatisticsOvertimeVo record : userPage.getRecords()) {
|
|
|
if(!userLeaveMap.containsKey(record.getId())){
|
|
|
continue;
|
|
|
@@ -222,18 +234,6 @@ public class LedgerStatisticsController {
|
|
|
@ApiOperation(value="教师加班统计-导出")
|
|
|
@SaCheckPermission("ledgerstatistics:detail")
|
|
|
public ResponseEntity<byte[]> teacherOvertimeExportQuery(@Valid @RequestBody LedgerStatisticsPageDto dto){
|
|
|
- List<LedgerStatisticsOvertimeVo> userPage = userService.selectJoinList(LedgerStatisticsOvertimeVo.class,
|
|
|
- new MPJLambdaWrapper<User>()
|
|
|
- .disableSubLogicDel()
|
|
|
- .select(User::getId)
|
|
|
- .select(User.class, x -> VoToColumnUtil.fieldsToColumns(UserPageVo.class).contains(x.getProperty()))
|
|
|
- .select(" (SELECT GROUP_CONCAT(t1.name) FROM xjr_department t1" +
|
|
|
- " INNER JOIN xjr_user_dept_relation t2 ON t1.id = t2.dept_id" +
|
|
|
- " 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())
|
|
|
- .orderByAsc(User::getId)
|
|
|
- );
|
|
|
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
|
String sql = "SELECT t4.teacher_user_id,SUM(t.total_days) as total_days FROM wf_overtime t" +
|
|
|
@@ -254,9 +254,36 @@ 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())
|
|
|
);
|
|
|
+
|
|
|
+ List<Long> userIds = new ArrayList<>(userLeaveMap.keySet());
|
|
|
+ if(userIds.isEmpty()){
|
|
|
+ List<LedgerStatisticsOvertimeExcelVo> dataList = new ArrayList<>();
|
|
|
+ ByteArrayOutputStream bot = new ByteArrayOutputStream();
|
|
|
+ EasyExcel.write(bot, LedgerStatisticsOvertimeExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(dataList);
|
|
|
+
|
|
|
+ return RT.fileStream(bot.toByteArray(), "teacher-leave" + ExcelTypeEnum.XLSX.getValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ List<LedgerStatisticsOvertimeVo> userPage = userService.selectJoinList(LedgerStatisticsOvertimeVo.class,
|
|
|
+ new MPJLambdaWrapper<User>()
|
|
|
+ .disableSubLogicDel()
|
|
|
+ .select(User::getId)
|
|
|
+ .select(User.class, x -> VoToColumnUtil.fieldsToColumns(UserPageVo.class).contains(x.getProperty()))
|
|
|
+ .select(" (SELECT GROUP_CONCAT(t1.name) FROM xjr_department t1" +
|
|
|
+ " INNER JOIN xjr_user_dept_relation t2 ON t1.id = t2.dept_id" +
|
|
|
+ " 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)
|
|
|
+ );
|
|
|
+
|
|
|
+ List<LedgerStatisticsOvertimeExcelVo> dataList = new ArrayList<>();
|
|
|
+
|
|
|
+ int sortCode = 1;
|
|
|
for (LedgerStatisticsOvertimeVo record : userPage) {
|
|
|
if(!userLeaveMap.containsKey(record.getId())){
|
|
|
continue;
|
|
|
@@ -266,10 +293,14 @@ public class LedgerStatisticsController {
|
|
|
DecimalFormat df = new DecimalFormat(isInteger ? "0" : "#.##");
|
|
|
String formattedValue = df.format(value);
|
|
|
record.setTotalDays(formattedValue);
|
|
|
+ LedgerStatisticsOvertimeExcelVo bean = BeanUtil.toBean(record, LedgerStatisticsOvertimeExcelVo.class);
|
|
|
+ bean.setSortCode(sortCode);
|
|
|
+ dataList.add(bean);
|
|
|
+ sortCode ++;
|
|
|
}
|
|
|
|
|
|
ByteArrayOutputStream bot = new ByteArrayOutputStream();
|
|
|
- EasyExcel.write(bot, LedgerStatisticsOvertimeVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(list);
|
|
|
+ EasyExcel.write(bot, LedgerStatisticsOvertimeExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(dataList);
|
|
|
|
|
|
return RT.fileStream(bot.toByteArray(), "teacher-overtime" + ExcelTypeEnum.XLSX.getValue());
|
|
|
}
|
|
|
@@ -278,18 +309,6 @@ public class LedgerStatisticsController {
|
|
|
@ApiOperation(value="教师听课统计(分页)")
|
|
|
@SaCheckPermission("ledgerstatistics:detail")
|
|
|
public RT<PageOutput<LedgerStatisticsListenVo>> teacherListenPage(@Valid LedgerStatisticsPageDto dto){
|
|
|
- IPage<LedgerStatisticsListenVo> userPage = userService.selectJoinListPage(ConventPage.getPage(dto), LedgerStatisticsListenVo.class,
|
|
|
- new MPJLambdaWrapper<User>()
|
|
|
- .disableSubLogicDel()
|
|
|
- .select(User::getId)
|
|
|
- .select(User.class, x -> VoToColumnUtil.fieldsToColumns(UserPageVo.class).contains(x.getProperty()))
|
|
|
- .select(" (SELECT GROUP_CONCAT(t1.name) FROM xjr_department t1" +
|
|
|
- " INNER JOIN xjr_user_dept_relation t2 ON t1.id = t2.dept_id" +
|
|
|
- " 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())
|
|
|
- .orderByAsc(User::getId)
|
|
|
- );
|
|
|
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
|
|
|
String sql = "SELECT t1.user_id,count(t1.course_name) as course_count FROM wf_teacher_listen t1" +
|
|
|
@@ -302,9 +321,29 @@ public class LedgerStatisticsController {
|
|
|
}
|
|
|
sql += " GROUP BY t1.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("user_id") != null && x.get("course_count") != null).collect(
|
|
|
Collectors.toMap(x -> Long.parseLong(x.get("user_id").toString()), x -> x.get("course_count").toString())
|
|
|
);
|
|
|
+
|
|
|
+ List<Long> userIds = new ArrayList<>(userLeaveMap.keySet());
|
|
|
+ if(userIds.isEmpty()){
|
|
|
+ return RT.ok(new PageOutput<>());
|
|
|
+ }
|
|
|
+
|
|
|
+ IPage<LedgerStatisticsListenVo> userPage = userService.selectJoinListPage(ConventPage.getPage(dto), LedgerStatisticsListenVo.class,
|
|
|
+ new MPJLambdaWrapper<User>()
|
|
|
+ .disableSubLogicDel()
|
|
|
+ .select(User::getId)
|
|
|
+ .select(User.class, x -> VoToColumnUtil.fieldsToColumns(UserPageVo.class).contains(x.getProperty()))
|
|
|
+ .select(" (SELECT GROUP_CONCAT(t1.name) FROM xjr_department t1" +
|
|
|
+ " INNER JOIN xjr_user_dept_relation t2 ON t1.id = t2.dept_id" +
|
|
|
+ " 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)
|
|
|
+ );
|
|
|
+
|
|
|
for (LedgerStatisticsListenVo record : userPage.getRecords()) {
|
|
|
if(!userLeaveMap.containsKey(record.getId())){
|
|
|
continue;
|
|
|
@@ -348,9 +387,23 @@ public class LedgerStatisticsController {
|
|
|
}
|
|
|
sql += " GROUP BY t1.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("user_id") != null && x.get("course_count") != null).collect(
|
|
|
Collectors.toMap(x -> Long.parseLong(x.get("user_id").toString()), x -> x.get("course_count").toString())
|
|
|
);
|
|
|
+
|
|
|
+ List<Long> userIds = new ArrayList<>(userLeaveMap.keySet());
|
|
|
+ if(userIds.isEmpty()){
|
|
|
+ List<LedgerStatisticsListenExcelVo> dataList = new ArrayList<>();
|
|
|
+ ByteArrayOutputStream bot = new ByteArrayOutputStream();
|
|
|
+ EasyExcel.write(bot, LedgerStatisticsListenExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(dataList);
|
|
|
+
|
|
|
+ return RT.fileStream(bot.toByteArray(), "teacher-leave" + ExcelTypeEnum.XLSX.getValue());
|
|
|
+ }
|
|
|
+
|
|
|
+ List<LedgerStatisticsListenExcelVo> dataList = new ArrayList<>();
|
|
|
+
|
|
|
+ int sortCode = 1;
|
|
|
+
|
|
|
for (LedgerStatisticsListenVo record : userPage) {
|
|
|
if(!userLeaveMap.containsKey(record.getId())){
|
|
|
continue;
|
|
|
@@ -360,10 +413,15 @@ public class LedgerStatisticsController {
|
|
|
DecimalFormat df = new DecimalFormat(isInteger ? "0" : "#.##");
|
|
|
String formattedValue = df.format(value);
|
|
|
record.setCourseCount(formattedValue);
|
|
|
+
|
|
|
+ LedgerStatisticsListenExcelVo bean = BeanUtil.toBean(record, LedgerStatisticsListenExcelVo.class);
|
|
|
+ bean.setSortCode(sortCode);
|
|
|
+ dataList.add(bean);
|
|
|
+ sortCode ++;
|
|
|
}
|
|
|
|
|
|
ByteArrayOutputStream bot = new ByteArrayOutputStream();
|
|
|
- EasyExcel.write(bot, LedgerStatisticsListenVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(list);
|
|
|
+ EasyExcel.write(bot, LedgerStatisticsListenExcelVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(dataList);
|
|
|
|
|
|
return RT.fileStream(bot.toByteArray(), "teacher-listen" + ExcelTypeEnum.XLSX.getValue());
|
|
|
}
|