Browse Source

Merge remote-tracking branch 'origin/master_20240722' into master_20240722

dongpo 6 months ago
parent
commit
c35906149f

+ 10 - 0
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/business/AttendanceBusinessController.java

@@ -1,5 +1,7 @@
 package cn.iocoder.yudao.module.attendance.controller.admin.business;
 
+import cn.iocoder.yudao.module.infra.api.file.FileApi;
+import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
 import cn.iocoder.yudao.module.system.api.dept.DeptApi;
 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
 import org.apache.commons.lang3.StringUtils;
@@ -12,6 +14,7 @@ import io.swagger.v3.oas.annotations.Operation;
 
 import java.util.*;
 import java.io.IOException;
+import java.util.stream.Collectors;
 
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
@@ -42,6 +45,8 @@ public class AttendanceBusinessController {
     private AttendanceBusinessService businessService;
     @Resource
     private DeptApi deptApi;
+    @Resource
+    private FileApi fileApi;
 
     @PostMapping("/create")
     @Operation(summary = "创建出差信息")
@@ -82,6 +87,11 @@ public class AttendanceBusinessController {
                 respVO.setDeptName(dept.getName());
             }
         }
+        // 附件列表
+        List<FileDTO> fileList = fileApi.getFileDTOListByBiz(respVO.getBusinessId());
+        respVO.setFileList(fileList);
+        List<Long> fileIdList = fileList.stream().map(FileDTO::getId).collect(Collectors.toList());
+        respVO.setFileIdList(fileIdList);
         return success(respVO);
     }
 

+ 4 - 2
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/business/vo/AttendanceBusinessPageReqVO.java

@@ -1,6 +1,8 @@
 package cn.iocoder.yudao.module.attendance.controller.admin.business.vo;
 
 import lombok.*;
+
+import java.time.LocalDate;
 import java.util.*;
 import io.swagger.v3.oas.annotations.media.Schema;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
@@ -54,11 +56,11 @@ public class AttendanceBusinessPageReqVO extends PageParam {
 
     @Schema(description = "出差开始日期")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private String[] startDate;
+    private LocalDate[] startDate;
 
     @Schema(description = "出差结束日期")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private String[] endDate;
+    private LocalDate[] endDate;
 
     @Schema(description = "出差天数(d)")
     private String day;

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

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.attendance.controller.admin.business.vo;
 
+import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import java.util.*;
@@ -114,4 +115,10 @@ public class AttendanceBusinessRespVO {
     @ExcelProperty("租户编号")
     private Long tenantId;
 
+    @Schema(description = "附件列表")
+    private List<FileDTO> fileList;
+
+    @Schema(description = "附件id列表")
+    private List<Long> fileIdList;
+
 }

+ 20 - 0
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/info/AttendanceInfoController.java

@@ -11,6 +11,8 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.Operation;
 
+import java.time.LocalDate;
+import java.time.LocalTime;
 import java.util.*;
 import java.io.IOException;
 
@@ -94,6 +96,24 @@ public class AttendanceInfoController {
                         BeanUtils.toBean(list, AttendanceInfoRespVO.class));
     }
 
+    @GetMapping("/get-import-template")
+    @Operation(summary = "获得导入考勤模板")
+    public void importTemplate(HttpServletResponse response) throws IOException {
+        // 手动创建导出 demo
+        List<AttendanceInfoImportExcelVO> list = Arrays.asList(
+                AttendanceInfoImportExcelVO.builder().employeeName("张三").employeeMobile("13555556666")
+                        .deptName("人事部").position("人事专员").attendanceDate(LocalDate.now()).attendanceMonth("2024-07")
+                        .workStartTime(LocalTime.of(8, 0)).workEndTime(LocalTime.of(17, 30))
+                        .build(),
+                AttendanceInfoImportExcelVO.builder().employeeName("李四").employeeMobile("13555556666")
+                        .deptName("财务部").position("财务经理").attendanceDate(LocalDate.now()).attendanceMonth("2024-07")
+                        .workStartTime(LocalTime.of(9, 0)).workEndTime(LocalTime.of(18, 30))
+                        .build()
+        );
+        // 输出
+        ExcelUtils.write(response, "考勤导入模板.xls", "考勤列表", AttendanceInfoImportExcelVO.class, list);
+    }
+
     @PostMapping("/import-excel")
     @Operation(summary = "导入考勤信息 Excel")
     @Parameters({

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

@@ -39,7 +39,7 @@ public class AttendanceInfoImportExcelVO {
 
     @ExcelProperty("考勤日期")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDate[] attendanceDate;
+    private LocalDate attendanceDate;
 
     private String attendanceMonth;
 

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

@@ -1,7 +1,10 @@
 package cn.iocoder.yudao.module.attendance.controller.admin.out.vo;
 
+import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
 import com.alibaba.excel.annotation.ExcelProperty;
 import lombok.*;
+
+import java.time.LocalDate;
 import java.util.*;
 import io.swagger.v3.oas.annotations.media.Schema;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;

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

@@ -177,14 +177,14 @@ public class AttendanceInfoServiceImpl implements AttendanceInfoService {
                     importAttendance.setDeptName(choseEmployee.getDeptName());
                 }
                 if (importAttendance != null && importAttendance.getAttendanceDate() != null) {
-                    LocalDate localDate = importAttendance.getAttendanceDate()[0];
+                    LocalDate localDate = importAttendance.getAttendanceDate();
                     // 使用 DateTimeFormatter 来格式化 LocalDate 为 "yyyy-MM" 格式的字符串
                     String formattedMonth = localDate.format(DateTimeFormatter.ofPattern("yyyy-MM"));
                     importAttendance.setAttendanceMonth(formattedMonth);
                 }
                 // 查找并收集要删除的数据
                 List<AttendanceInfoDO> existingInfos = infoMapper.selectPage(
-                        new AttendanceInfoPageReqVO().setAttendanceDate(importAttendance.getAttendanceDate()).setEmployeeMobile(importAttendance.getEmployeeMobile())
+                        new AttendanceInfoPageReqVO().setAttendanceDate(new LocalDate[]{importAttendance.getAttendanceDate()}).setEmployeeMobile(importAttendance.getEmployeeMobile())
                 ).getList();
                 toDeleteIds.addAll(existingInfos.stream().map(AttendanceInfoDO::getId).collect(Collectors.toList()));