Browse Source

台账调整

dzx 1 year ago
parent
commit
00f26ac1c0

+ 4 - 0
src/main/java/com/xjrsoft/module/courseTable/entity/CourseTable.java

@@ -98,4 +98,8 @@ public class CourseTable implements Serializable {
     @ApiModelProperty("关键信息(存课程的教师id、班级id、日期、节次、课程id、场地以“_”拼接)")
     private String keyInfo;
 
+
+    @ApiModelProperty("同步记录id")
+    private Long courseReceiveMsgId;
+
 }

+ 40 - 16
src/main/java/com/xjrsoft/module/ledger/controller/LedgerStatisticsController.java

@@ -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()) {

+ 37 - 0
src/main/java/com/xjrsoft/module/ledger/vo/LedgerStatisticsLeaveExcelVo.java

@@ -0,0 +1,37 @@
+package com.xjrsoft.module.ledger.vo;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+* @title: 台账配置表分页查询入参
+* @Author dzx
+* @Date: 2024-03-06
+* @Version 1.0
+*/
+@Data
+public class LedgerStatisticsLeaveExcelVo{
+
+    @ExcelProperty("序号")
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+
+    @ExcelProperty("请假人")
+    @ApiModelProperty("请假人")
+    private String name;
+
+    @ExcelProperty("工号")
+    @ApiModelProperty("工号")
+    private String userName;
+
+    @ExcelProperty("所属部门")
+    @ApiModelProperty("所属部门")
+    private String deptName;
+
+    @ExcelProperty("请假天数")
+    @ApiModelProperty("请假天数")
+    private String leaveDays;
+
+}