Browse Source

excel导出localtime问题修复

zhaopeiqing 7 months ago
parent
commit
0e580876a4
28 changed files with 150 additions and 15 deletions
  1. 4 0
      yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/util/ExcelUtils.java
  2. 46 0
      yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/util/LocalTimeConverter.java
  3. 0 1
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/business/vo/AttendanceBusinessSaveReqVO.java
  4. 1 1
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/employeesetting/AttendanceEmployeeSettingController.java
  5. 4 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/employeesetting/vo/AttendanceEmployeeSettingRespVO.java
  6. 7 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/info/vo/AttendanceInfoRespVO.java
  7. 0 1
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/info/vo/AttendanceInfoSaveReqVO.java
  8. 3 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/info/vo/AttendanceMonthlyInfoRespVO.java
  9. 2 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/leave/vo/AttendanceLeaveRespVO.java
  10. 0 1
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/leave/vo/AttendanceLeaveSaveReqVO.java
  11. 2 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/out/vo/AttendanceOutRespVO.java
  12. 0 1
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/out/vo/AttendanceOutSaveReqVO.java
  13. 9 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/schedulingmanage/AttendanceSchedulingManageController.java
  14. 4 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/schedulingmanage/vo/AttendanceSchedulingManageRespVO.java
  15. 0 1
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/schedulingmanage/vo/AttendanceSchedulingManageSaveReqVO.java
  16. 2 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/workdaysetting/vo/AttendanceWorkdaySettingRespVO.java
  17. 1 5
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/dal/dataobject/info/AttendanceInfoDO.java
  18. 0 2
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/dal/mysql/info/AttendanceInfoMapper.java
  19. 4 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/service/employeesetting/AttendanceEmployeeSettingServiceImpl.java
  20. 4 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/service/info/AttendanceInfoServiceImpl.java
  21. 9 1
      yudao-module-personnel/yudao-module-attendance-biz/src/main/resources/mapper/employeesetting/AttendanceEmployeeSettingMapper.xml
  22. 1 1
      yudao-module-personnel/yudao-module-attendance-biz/src/main/resources/mapper/info/AttendanceInfoMapper.xml
  23. 1 0
      yudao-module-personnel/yudao-module-employee-api/src/main/java/cn/iocoder/yudao/module/employee/api/dto/EmployeeRespDTO.java
  24. 3 0
      yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoQueryReqVO.java
  25. 1 0
      yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/dal/mysql/info/EmployeeInfoMapper.java
  26. 14 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/conversion/RelationsConversionServiceImpl.java
  27. 14 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/renew/RelationsRenewServiceImpl.java
  28. 14 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/turnover/RelationsTurnoverServiceImpl.java

+ 4 - 0
yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/util/ExcelUtils.java

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.framework.excel.core.util;
 
 import cn.iocoder.yudao.framework.excel.core.handler.SelectSheetWriteHandler;
 import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.converters.localdatetime.LocalDateTimeDateConverter;
 import com.alibaba.excel.converters.longconverter.LongStringConverter;
 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 import org.springframework.web.multipart.MultipartFile;
@@ -38,6 +39,7 @@ public class ExcelUtils {
                 .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 基于 column 长度,自动适配。最大 255 宽度
                 .registerWriteHandler(new SelectSheetWriteHandler(head)) // 基于固定 sheet 实现下拉框
                 .registerConverter(new LongStringConverter()) // 避免 Long 类型丢失精度
+                .registerConverter(new LocalTimeConverter()) // 注册 LocalTime 转换器
                 .sheet(sheetName).doWrite(data);
         // 设置 header 和 contentType。写在最后的原因是,避免报错时,响应 contentType 已经被修改了
         response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, StandardCharsets.UTF_8.name()));
@@ -50,4 +52,6 @@ public class ExcelUtils {
                 .doReadAllSync();
     }
 
+
+
 }

+ 46 - 0
yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/util/LocalTimeConverter.java

@@ -0,0 +1,46 @@
+package cn.iocoder.yudao.framework.excel.core.util;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+
+public class LocalTimeConverter implements Converter<LocalTime> {
+
+    @Override
+    public Class supportJavaTypeKey() {
+        return LocalTime.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        // 明确指定支持 Excel 中的字符串类型
+        return CellDataTypeEnum.STRING;
+    }
+
+    @Override
+    public WriteCellData<?> convertToExcelData(LocalTime value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        if (value == null) {
+            return new WriteCellData<>();
+        }
+
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss"); // 默认格式
+        String format = null;
+        if (contentProperty != null && contentProperty.getDateTimeFormatProperty() != null) {
+            format = contentProperty.getDateTimeFormatProperty().getFormat();
+            if (format != null && !format.isEmpty()) {
+                formatter = DateTimeFormatter.ofPattern(format);
+            }
+        }
+
+        String formattedTime = value.format(formatter);
+        return new WriteCellData<>(formattedTime);
+    }
+
+    // convertToJavaData 方法在这个场景中可能不需要,因为我们只关心写入操作
+    // 如果需要处理从 Excel 读取到 Java 的情况,则需要实现该方法
+}

+ 0 - 1
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/business/vo/AttendanceBusinessSaveReqVO.java

@@ -68,7 +68,6 @@ public class AttendanceBusinessSaveReqVO {
     private String remarks;
 
     @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotNull(message = "状态不能为空")
     private Integer status;
 
     @Schema(description = "数据来源,0流程添加、1手动添加")

+ 1 - 1
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/employeesetting/AttendanceEmployeeSettingController.java

@@ -85,7 +85,7 @@ public class AttendanceEmployeeSettingController {
 
     @GetMapping("/info-page")
     @Operation(summary = "获得考勤员工设置分页")
-//    @PreAuthorize("@ss.hasPermission('attendance:employee-setting:query')")
+    @PreAuthorize("@ss.hasPermission('attendance:employee-setting:query')")
     public CommonResult<PageResult<AttendanceEmployeeSettingRespVO>> getEmployeeInfoSettingPage(@Valid AttendanceEmployeeSettingPageReqVO pageReqVO) {
         return success(employeeSettingService.getEmployeeInfoSettingPage(pageReqVO));
     }

+ 4 - 0
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/employeesetting/vo/AttendanceEmployeeSettingRespVO.java

@@ -31,6 +31,10 @@ public class AttendanceEmployeeSettingRespVO {
     @ExcelProperty("部门ID")
     private Long deptId;
 
+    @Schema(description = "部门名称", example = "人事部")
+    @ExcelProperty("部门名称")
+    private String deptName;
+
     @Schema(description = "排班ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23897")
     @ExcelProperty("排班ID")
     private Long schedulingId;

+ 7 - 0
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/info/vo/AttendanceInfoRespVO.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.attendance.controller.admin.info.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
@@ -43,22 +44,27 @@ public class AttendanceInfoRespVO {
 
     @Schema(description = "考勤日期", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("考勤日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate attendanceDate;
 
     @Schema(description = "上班时间")
     @ExcelProperty("上班时间")
+    @JsonFormat(pattern = "HH:mm")
     private LocalTime workStartTime;
 
     @Schema(description = "下班时间")
     @ExcelProperty("下班时间")
+    @JsonFormat(pattern = "HH:mm")
     private LocalTime workEndTime;
 
     @Schema(description = "迟到时间(如有)")
     @ExcelProperty("迟到时间(如有)")
+    @JsonFormat(pattern = "HH:mm")
     private LocalTime lateTime;
 
     @Schema(description = "早退时间(如有)")
     @ExcelProperty("早退时间(如有)")
+    @JsonFormat(pattern = "HH:mm")
     private LocalTime leaveEarlyTime;
 
     @Schema(description = "加班时长(小时)")
@@ -87,6 +93,7 @@ public class AttendanceInfoRespVO {
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createTime;
 
     @Schema(description = "租户编号", example = "1")

+ 0 - 1
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/info/vo/AttendanceInfoSaveReqVO.java

@@ -69,7 +69,6 @@ public class AttendanceInfoSaveReqVO {
     private String remarks;
 
     @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotNull(message = "状态不能为空")
     private Integer status;
 
     @Schema(description = "租户编号", example = "1")

+ 3 - 0
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/info/vo/AttendanceMonthlyInfoRespVO.java

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.attendance.controller.admin.info.vo;
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -57,10 +58,12 @@ public class AttendanceMonthlyInfoRespVO {
 
     @Schema(description = "考勤设置上班时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("考勤设置上班时间")
+    @JsonFormat(pattern = "HH:mm")
     private LocalTime startTime;
 
     @Schema(description = "考勤设置下班时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("考勤设置下班时间")
+    @JsonFormat(pattern = "HH:mm")
     private LocalTime endTime;
 
 }

+ 2 - 0
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/leave/vo/AttendanceLeaveRespVO.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.attendance.controller.admin.leave.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import java.util.*;
@@ -107,6 +108,7 @@ public class AttendanceLeaveRespVO {
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createTime;
 
     @Schema(description = "租户编号", example = "1")

+ 0 - 1
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/leave/vo/AttendanceLeaveSaveReqVO.java

@@ -69,7 +69,6 @@ public class AttendanceLeaveSaveReqVO {
     private String remarks;
 
     @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotNull(message = "状态不能为空")
     private Integer status;
 
     @Schema(description = "数据来源,0流程添加、1手动添加")

+ 2 - 0
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/out/vo/AttendanceOutRespVO.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.attendance.controller.admin.out.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import java.util.*;
@@ -99,6 +100,7 @@ public class AttendanceOutRespVO {
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createTime;
 
     @Schema(description = "租户编号", example = "1")

+ 0 - 1
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/out/vo/AttendanceOutSaveReqVO.java

@@ -63,7 +63,6 @@ public class AttendanceOutSaveReqVO {
     private String remarks;
 
     @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @NotNull(message = "状态不能为空")
     private Integer status;
 
     @Schema(description = "数据来源,0流程添加、1手动添加")

+ 9 - 0
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/schedulingmanage/AttendanceSchedulingManageController.java

@@ -79,6 +79,15 @@ public class AttendanceSchedulingManageController {
         return success(BeanUtils.toBean(pageResult, AttendanceSchedulingManageRespVO.class));
     }
 
+    @GetMapping("/list")
+    @Operation(summary = "获得考勤排班管理列表")
+    @PreAuthorize("@ss.hasPermission('attendance:scheduling-manage:query')")
+    public CommonResult<List<AttendanceSchedulingManageRespVO>> getSchedulingManageList(@Valid AttendanceSchedulingManagePageReqVO pageReqVO) {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<AttendanceSchedulingManageDO> list = schedulingManageService.getSchedulingManagePage(pageReqVO).getList();
+        return success(BeanUtils.toBean(list, AttendanceSchedulingManageRespVO.class));
+    }
+
     @GetMapping("/export-excel")
     @Operation(summary = "导出考勤排班管理 Excel")
     @PreAuthorize("@ss.hasPermission('attendance:scheduling-manage:export')")

+ 4 - 0
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/schedulingmanage/vo/AttendanceSchedulingManageRespVO.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.attendance.controller.admin.schedulingmanage.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
@@ -25,10 +26,12 @@ public class AttendanceSchedulingManageRespVO {
 
     @Schema(description = "上班时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("上班时间")
+    @JsonFormat(pattern = "HH:mm")
     private LocalTime startTime;
 
     @Schema(description = "下班时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("下班时间")
+    @JsonFormat(pattern = "HH:mm")
     private LocalTime endTime;
 
     @Schema(description = "备注信息")
@@ -41,6 +44,7 @@ public class AttendanceSchedulingManageRespVO {
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createTime;
 
     @Schema(description = "租户编号", example = "1")

+ 0 - 1
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/schedulingmanage/vo/AttendanceSchedulingManageSaveReqVO.java

@@ -33,7 +33,6 @@ public class AttendanceSchedulingManageSaveReqVO {
     private String remarks;
 
     @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotNull(message = "状态不能为空")
     private Integer status;
 
     @Schema(description = "租户编号", example = "1")

+ 2 - 0
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/workdaysetting/vo/AttendanceWorkdaySettingRespVO.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.attendance.controller.admin.workdaysetting.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import java.util.*;
@@ -31,6 +32,7 @@ public class AttendanceWorkdaySettingRespVO {
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createTime;
 
     @Schema(description = "租户编号", example = "1")

+ 1 - 5
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/dal/dataobject/info/AttendanceInfoDO.java

@@ -1,15 +1,11 @@
 package cn.iocoder.yudao.module.attendance.dal.dataobject.info;
 
-import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import java.time.LocalDate;
 import java.time.LocalTime;
-import java.util.*;
 import java.math.BigDecimal;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
+
 import com.baomidou.mybatisplus.annotation.*;
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 

+ 0 - 2
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/dal/mysql/info/AttendanceInfoMapper.java

@@ -6,9 +6,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.module.attendance.controller.admin.info.vo.*;
-import cn.iocoder.yudao.module.attendance.dal.dataobject.employeesetting.AttendanceEmployeeSettingDO;
 import cn.iocoder.yudao.module.attendance.dal.dataobject.info.AttendanceInfoDO;
-import cn.iocoder.yudao.module.attendance.dal.dataobject.workdaysetting.AttendanceWorkdaySettingDO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 

+ 4 - 0
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/service/employeesetting/AttendanceEmployeeSettingServiceImpl.java

@@ -96,6 +96,10 @@ public class AttendanceEmployeeSettingServiceImpl implements AttendanceEmployeeS
         LoginUser user = SecurityFrameworkUtils.getLoginUser();
         Long tenantId = user != null && user.getTenantId() != null ? user.getTenantId() : 0L;
         pageReqVO.setTenantId(tenantId);
+        int currentPage = pageReqVO.getPageNo();
+        if (currentPage > 0) {
+            pageReqVO.setPageNo(currentPage - 1);
+        }
         List<AttendanceEmployeeSettingRespVO> list = employeeSettingMapper.getEmployeeInfoSettingPage(pageReqVO);
         return new PageResult<>(list, (long) list.size());
     }

+ 4 - 0
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/service/info/AttendanceInfoServiceImpl.java

@@ -181,6 +181,10 @@ public class AttendanceInfoServiceImpl implements AttendanceInfoService {
     @Override
     @TenantIgnore
     public List<AttendanceDailyInfoRespVO> getDailyInfoPage(AttendanceDailyInfoPageReqVO pageReqVO) {
+        int currentPage = pageReqVO.getPageNo();
+        if (currentPage > 0) {
+            pageReqVO.setPageNo(currentPage - 1);
+        }
         List<AttendanceDailyInfoRespVO> list = infoMapper.getDailyInfoPage(pageReqVO);
         if (list != null && list.size() > 0) {
             for (AttendanceDailyInfoRespVO info : list) {

+ 9 - 1
yudao-module-personnel/yudao-module-attendance-biz/src/main/resources/mapper/employeesetting/AttendanceEmployeeSettingMapper.xml

@@ -32,7 +32,9 @@
             aes.id as 'id',
             ei.id as 'employeeId',
             ei.name,
-            ei.phone as 'employeePhone',
+            ei.phone as 'phoneNumber',
+            ei.email,
+            ei.dept_name as 'deptName',
             ei.employee_number,
             asm.shift_name,
             asm.start_time,
@@ -56,6 +58,12 @@
         <if test="reqVO.phoneNumber != null and reqVO.phoneNumber != ''">
             AND ei.phone LIKE CONCAT('%', #{reqVO.phoneNumber}, '%')
         </if>
+        <if test="reqVO.schedulingId != null">
+            AND aes.scheduling_id = #{reqVO.schedulingId}
+        </if>
+        <if test="reqVO.deptId != null">
+            AND ei.dept_id = #{reqVO.deptId}
+        </if>
         ORDER BY ei.id
         <if test="reqVO.pageSize != null and reqVO.pageNo != null">
             LIMIT #{reqVO.pageNo}, #{reqVO.pageSize}

+ 1 - 1
yudao-module-personnel/yudao-module-attendance-biz/src/main/resources/mapper/info/AttendanceInfoMapper.xml

@@ -13,7 +13,7 @@
         SELECT
             ai.employee_id,
             ai.employee_name,
-            ai.employee_phone,
+            ai.employee_mobile,
             ai.dept_name,
             ai.attendance_date,
             ai.work_start_time,

+ 1 - 0
yudao-module-personnel/yudao-module-employee-api/src/main/java/cn/iocoder/yudao/module/employee/api/dto/EmployeeRespDTO.java

@@ -66,6 +66,7 @@ public class EmployeeRespDTO {
     /**
      * 入职时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate entryDate;
 
     /**

+ 3 - 0
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoQueryReqVO.java

@@ -19,6 +19,9 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
 @ToString(callSuper = true)
 public class EmployeeInfoQueryReqVO extends PageParam {
 
+    @Schema(description = "员工ID", example = "18657")
+    private Long id;
+
     @Schema(description = "业务UUID", example = "4007")
     private String infoId;
 

+ 1 - 0
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/dal/mysql/info/EmployeeInfoMapper.java

@@ -72,6 +72,7 @@ public interface EmployeeInfoMapper extends BaseMapperX<EmployeeInfoDO> {
                 .eqIfPresent(EmployeeInfoDO::getUserId, reqVO.getUserId())
                 .eqIfPresent(EmployeeInfoDO::getTenantId, reqVO.getTenantId())
                 .eqIfPresent(EmployeeInfoDO::getPhone, reqVO.getPhone())
+                .eqIfPresent(EmployeeInfoDO::getId, reqVO.getId())
                 .orderByDesc(EmployeeInfoDO::getId));
     }
 

+ 14 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/conversion/RelationsConversionServiceImpl.java

@@ -56,6 +56,13 @@ public class RelationsConversionServiceImpl implements RelationsConversionServic
         Long tenantId = user != null && user.getTenantId() != null ? user.getTenantId() : 0L;
         Long userId = user != null && user.getId() != null ? user.getId() : 0L;
         createReqVO.setTenantId(tenantId);
+        // 转正人信息
+        EmployeeRespDTO employee = employeeApi.getEmployeeById(createReqVO.getEmployeeId());
+        createReqVO.setEmployeeId(employee.getId());
+        createReqVO.setEmployeeName(employee.getName());
+        createReqVO.setEmployeePhone(employee.getPhone());
+        createReqVO.setDeptId(employee.getDeptId());
+        createReqVO.setPosition(employee.getPosition());
         // 插入
         String infoId = IdUtil.fastSimpleUUID();
         createReqVO.setConversionId(infoId);
@@ -80,6 +87,13 @@ public class RelationsConversionServiceImpl implements RelationsConversionServic
         validateConversionExists(updateReqVO.getId());
         // 保存业务uuid到附件中
         fileApi.updateFileBiz(updateReqVO.getFileIdList(), updateReqVO.getConversionId());
+        // 转正人信息
+        EmployeeRespDTO employee = employeeApi.getEmployeeById(updateReqVO.getEmployeeId());
+        updateReqVO.setEmployeeId(employee.getId());
+        updateReqVO.setEmployeeName(employee.getName());
+        updateReqVO.setEmployeePhone(employee.getPhone());
+        updateReqVO.setDeptId(employee.getDeptId());
+        updateReqVO.setPosition(employee.getPosition());
         // 更新
         RelationsConversionDO updateObj = BeanUtils.toBean(updateReqVO, RelationsConversionDO.class);
         conversionMapper.updateById(updateObj);

+ 14 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/renew/RelationsRenewServiceImpl.java

@@ -59,6 +59,13 @@ public class RelationsRenewServiceImpl implements RelationsRenewService {
         // 插入
         String infoId = IdUtil.fastSimpleUUID();
         createReqVO.setRenewId(infoId);
+        // 续签人信息
+        EmployeeRespDTO employee = employeeApi.getEmployeeById(createReqVO.getEmployeeId());
+        createReqVO.setEmployeeId(employee.getId());
+        createReqVO.setEmployeeName(employee.getName());
+        createReqVO.setEmployeePhone(employee.getPhone());
+        createReqVO.setDeptId(employee.getDeptId());
+        createReqVO.setPosition(employee.getPosition());
         RelationsRenewDO renew = BeanUtils.toBean(createReqVO, RelationsRenewDO.class);
         // 登录员工信息
         EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(userId);// 判空检查
@@ -80,6 +87,13 @@ public class RelationsRenewServiceImpl implements RelationsRenewService {
         validateRenewExists(updateReqVO.getId());
         // 保存业务uuid到附件中
         fileApi.updateFileBiz(updateReqVO.getFileIdList(), updateReqVO.getRenewId());
+        // 续签人信息
+        EmployeeRespDTO employee = employeeApi.getEmployeeById(updateReqVO.getEmployeeId());
+        updateReqVO.setEmployeeId(employee.getId());
+        updateReqVO.setEmployeeName(employee.getName());
+        updateReqVO.setEmployeePhone(employee.getPhone());
+        updateReqVO.setDeptId(employee.getDeptId());
+        updateReqVO.setPosition(employee.getPosition());
         // 更新
         RelationsRenewDO updateObj = BeanUtils.toBean(updateReqVO, RelationsRenewDO.class);
         renewMapper.updateById(updateObj);

+ 14 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/turnover/RelationsTurnoverServiceImpl.java

@@ -59,6 +59,13 @@ public class RelationsTurnoverServiceImpl implements RelationsTurnoverService {
         // 插入
         String infoId = IdUtil.fastSimpleUUID();
         createReqVO.setTurnoverId(infoId);
+        // 离职人信息
+        EmployeeRespDTO employee = employeeApi.getEmployeeById(createReqVO.getEmployeeId());
+        createReqVO.setEmployeeId(employee.getId());
+        createReqVO.setEmployeeName(employee.getName());
+        createReqVO.setEmployeePhone(employee.getPhone());
+        createReqVO.setDeptId(employee.getDeptId());
+        createReqVO.setPosition(employee.getPosition());
         RelationsTurnoverDO turnover = BeanUtils.toBean(createReqVO, RelationsTurnoverDO.class);
         // 登录员工信息
         EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(userId);// 判空检查
@@ -80,6 +87,13 @@ public class RelationsTurnoverServiceImpl implements RelationsTurnoverService {
         validateTurnoverExists(updateReqVO.getId());
         // 保存业务uuid到附件中
         fileApi.updateFileBiz(updateReqVO.getFileIdList(), updateReqVO.getTurnoverId());
+        // 离职人信息
+        EmployeeRespDTO employee = employeeApi.getEmployeeById(updateReqVO.getEmployeeId());
+        updateReqVO.setEmployeeId(employee.getId());
+        updateReqVO.setEmployeeName(employee.getName());
+        updateReqVO.setEmployeePhone(employee.getPhone());
+        updateReqVO.setDeptId(employee.getDeptId());
+        updateReqVO.setPosition(employee.getPosition());
         // 更新
         RelationsTurnoverDO updateObj = BeanUtils.toBean(updateReqVO, RelationsTurnoverDO.class);
         turnoverMapper.updateById(updateObj);