Browse Source

修复bug

zhaopeiqing 6 months ago
parent
commit
b6c6a767d6
14 changed files with 66 additions and 8 deletions
  1. 3 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/business/vo/AttendanceBusinessPageReqVO.java
  2. 4 2
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/info/AttendanceInfoController.java
  3. 3 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/info/vo/AttendanceDailyInfoPageReqVO.java
  4. 6 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/info/vo/AttendanceInfoImportExcelVO.java
  5. 3 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/info/vo/AttendanceInfoPageReqVO.java
  6. 3 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/info/vo/AttendanceInfoSaveReqVO.java
  7. 3 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/info/vo/AttendanceMonthlyInfoPageReqVO.java
  8. 3 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/controller/admin/leave/vo/AttendanceLeavePageReqVO.java
  9. 4 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/dal/dataobject/info/AttendanceInfoDO.java
  10. 3 2
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/dal/mysql/business/AttendanceBusinessMapper.java
  11. 3 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/dal/mysql/info/AttendanceInfoMapper.java
  12. 1 0
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/dal/mysql/leave/AttendanceLeaveMapper.java
  13. 9 2
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/service/info/AttendanceInfoServiceImpl.java
  14. 18 2
      yudao-module-personnel/yudao-module-attendance-biz/src/main/resources/mapper/info/AttendanceInfoMapper.xml

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

@@ -45,6 +45,9 @@ public class AttendanceBusinessPageReqVO extends PageParam {
     @Schema(description = "部门uuid", example = "30513")
     private String deptUuid;
 
+    @Schema(description = "职位id", example = "17524")
+    private Long postId;
+
     @Schema(description = "职位")
     private String position;
 

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

@@ -28,6 +28,7 @@ import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import javax.annotation.security.PermitAll;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 
@@ -97,6 +98,7 @@ public class AttendanceInfoController {
     }
 
     @PostMapping("/get-import-template")
+    @PermitAll
     @Operation(summary = "获得导入考勤模板")
     public void importTemplate(HttpServletResponse response) throws IOException {
         // 手动创建导出 demo
@@ -120,9 +122,9 @@ public class AttendanceInfoController {
             @Parameter(name = "file", description = "Excel 文件", required = true)
     })
     @PreAuthorize("@ss.hasPermission('attendance:info:import')")
-    public CommonResult<String> importExcel(@RequestParam("file") MultipartFile file) throws Exception {
+    public CommonResult<Boolean> importExcel(@RequestParam("file") MultipartFile file) throws Exception {
         List<AttendanceInfoImportExcelVO> list = ExcelUtils.read(file, AttendanceInfoImportExcelVO.class);
-        return success(infoService.importAttendanceInfoList(list));
+        return success(true).setMsg(infoService.importAttendanceInfoList(list));
     }
 
     @GetMapping("/dailyPage")

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

@@ -26,6 +26,9 @@ public class AttendanceDailyInfoPageReqVO extends PageParam {
     @Schema(description = "员工手机号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13812345678")
     private String employeeMobile;
 
+    @Schema(description = "部门ID", example = "13463")
+    private Long deptId;
+
     @Schema(description = "部门名称", example = "13463")
     private String deptName;
 

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

@@ -25,6 +25,9 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;
 @Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
 public class AttendanceInfoImportExcelVO {
 
+    @ExcelIgnore
+    private Long employeeId;
+
     @ExcelProperty("员工姓名")
     private String employeeName;
 
@@ -37,6 +40,9 @@ public class AttendanceInfoImportExcelVO {
     @ExcelProperty("部门名称")
     private String deptName;
 
+    @ExcelIgnore
+    private Long postId;
+
     @ExcelProperty("职位名称")
     private String position;
 

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

@@ -37,6 +37,9 @@ public class AttendanceInfoPageReqVO extends PageParam {
     @Schema(description = "部门名称", example = "13463")
     private String deptName;
 
+    @Schema(description = "职位ID", example = "13463")
+    private Long postId;
+
     @Schema(description = "职位名称", example = "13463")
     private String position;
 

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

@@ -37,6 +37,9 @@ public class AttendanceInfoSaveReqVO {
     @Schema(description = "部门名称", example = "13463")
     private String deptName;
 
+    @Schema(description = "职位ID", example = "13463")
+    private Long postId;
+
     @Schema(description = "职位名称", example = "13463")
     private String position;
 

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

@@ -29,6 +29,9 @@ public class AttendanceMonthlyInfoPageReqVO extends PageParam {
     @Schema(description = "部门ID", example = "13463")
     private Long deptId;
 
+    @Schema(description = "职位ID", example = "13463")
+    private Long postId;
+
     @Schema(description = "部门名称", example = "13463")
     private String deptName;
 

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

@@ -45,6 +45,9 @@ public class AttendanceLeavePageReqVO extends PageParam {
     @Schema(description = "部门uuid", example = "864")
     private String deptUuid;
 
+    @Schema(description = "职位id", example = "5849")
+    private Long postId;
+
     @Schema(description = "员工职位")
     private String position;
 

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

@@ -53,6 +53,10 @@ public class AttendanceInfoDO extends BaseDO {
      * 部门名称
      */
     private String deptName;
+    /**
+     * 职位ID
+     */
+    private Long postId;
     /**
      * 职位名称
      */

+ 3 - 2
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/dal/mysql/business/AttendanceBusinessMapper.java

@@ -29,6 +29,7 @@ public interface AttendanceBusinessMapper extends BaseMapperX<AttendanceBusiness
                 .eqIfPresent(AttendanceBusinessDO::getUserUuid, reqVO.getUserUuid())
                 .eqIfPresent(AttendanceBusinessDO::getDeptId, reqVO.getDeptId())
                 .eqIfPresent(AttendanceBusinessDO::getDeptUuid, reqVO.getDeptUuid())
+                .eqIfPresent(AttendanceBusinessDO::getPostId, reqVO.getPostId())
                 .eqIfPresent(AttendanceBusinessDO::getPosition, reqVO.getPosition())
                 .eqIfPresent(AttendanceBusinessDO::getReason, reqVO.getReason())
                 .eqIfPresent(AttendanceBusinessDO::getDestination, reqVO.getDestination())
@@ -49,8 +50,8 @@ public interface AttendanceBusinessMapper extends BaseMapperX<AttendanceBusiness
     default AttendanceBusinessDO selectByDateAndEmployeeId(LocalDate date, Long employeeId) {
         return selectOne(new LambdaQueryWrapperX<AttendanceBusinessDO>()
                 .eqIfPresent(AttendanceBusinessDO::getEmployeeId, employeeId)
-                .betweenIfPresent(AttendanceBusinessDO::getStartDate, new LocalDate[]{date})
-                .betweenIfPresent(AttendanceBusinessDO::getEndDate, new LocalDate[]{date})
+                .geIfPresent(AttendanceBusinessDO::getStartDate, date)
+                .leIfPresent(AttendanceBusinessDO::getEndDate, date)
                 .orderByDesc(AttendanceBusinessDO::getId));
     }
 

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

@@ -23,7 +23,9 @@ public interface AttendanceInfoMapper extends BaseMapperX<AttendanceInfoDO> {
                 .eqIfPresent(AttendanceInfoDO::getEmployeeId, reqVO.getEmployeeId())
                 .likeIfPresent(AttendanceInfoDO::getEmployeeName, reqVO.getEmployeeName())
                 .likeIfPresent(AttendanceInfoDO::getEmployeeMobile, reqVO.getEmployeeMobile())
+                .eqIfPresent(AttendanceInfoDO::getDeptId, reqVO.getDeptId())
                 .likeIfPresent(AttendanceInfoDO::getDeptName, reqVO.getDeptName())
+                .eqIfPresent(AttendanceInfoDO::getPostId, reqVO.getPostId())
                 .likeIfPresent(AttendanceInfoDO::getPosition, reqVO.getPosition())
                 .betweenIfPresent(AttendanceInfoDO::getAttendanceDate, reqVO.getAttendanceDate())
                 .betweenIfPresent(AttendanceInfoDO::getWorkStartTime, reqVO.getWorkStartTime())
@@ -49,6 +51,7 @@ public interface AttendanceInfoMapper extends BaseMapperX<AttendanceInfoDO> {
                 .likeIfPresent(AttendanceInfoDO::getEmployeeNumber, reqVO.getEmployeeNumber())
                 .eqIfPresent(AttendanceInfoDO::getAttendanceMonth, reqVO.getAttendanceMonth())
                 .eqIfPresent(AttendanceInfoDO::getDeptId, reqVO.getDeptId())
+                .eqIfPresent(AttendanceInfoDO::getPostId, reqVO.getPostId())
                 .eqIfPresent(AttendanceInfoDO::getDeptName, reqVO.getDeptName())
                 .orderByDesc(AttendanceInfoDO::getId));
     }

+ 1 - 0
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/dal/mysql/leave/AttendanceLeaveMapper.java

@@ -31,6 +31,7 @@ public interface AttendanceLeaveMapper extends BaseMapperX<AttendanceLeaveDO> {
                 .eqIfPresent(AttendanceLeaveDO::getUserUuid, reqVO.getUserUuid())
                 .eqIfPresent(AttendanceLeaveDO::getDeptId, reqVO.getDeptId())
                 .eqIfPresent(AttendanceLeaveDO::getDeptUuid, reqVO.getDeptUuid())
+                .eqIfPresent(AttendanceLeaveDO::getPostId, reqVO.getPostId())
                 .eqIfPresent(AttendanceLeaveDO::getPosition, reqVO.getPosition())
                 .eqIfPresent(AttendanceLeaveDO::getLeaveType, reqVO.getLeaveType())
                 .betweenIfPresent(AttendanceLeaveDO::getStartDate, reqVO.getStartDate())

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

@@ -84,6 +84,8 @@ public class AttendanceInfoServiceImpl implements AttendanceInfoService {
         if (choseEmployee != null) {
             createReqVO.setDeptId(choseEmployee.getDeptId());
             createReqVO.setDeptName(choseEmployee.getDeptName());
+            createReqVO.setPostId(choseEmployee.getPostId());
+            createReqVO.setPosition(choseEmployee.getPosition());
         }
         if (createReqVO != null && createReqVO.getAttendanceDate() != null) {
             LocalDate localDate = createReqVO.getAttendanceDate();
@@ -107,6 +109,8 @@ public class AttendanceInfoServiceImpl implements AttendanceInfoService {
         if (choseEmployee != null) {
             updateReqVO.setDeptId(choseEmployee.getDeptId());
             updateReqVO.setDeptName(choseEmployee.getDeptName());
+            updateReqVO.setPostId(choseEmployee.getPostId());
+            updateReqVO.setPosition(choseEmployee.getPosition());
         }
         if (updateReqVO != null && updateReqVO.getAttendanceDate() != null) {
             LocalDate localDate = updateReqVO.getAttendanceDate();
@@ -173,8 +177,11 @@ public class AttendanceInfoServiceImpl implements AttendanceInfoService {
                 EmployeeQueryReqDTO reqDTO = new EmployeeQueryReqDTO().setName(importAttendance.getEmployeeName()).setPhone(importAttendance.getEmployeeMobile());
                 EmployeeRespDTO choseEmployee = employeeApi.getEmployee(reqDTO);
                 if (choseEmployee != null) {
+                    importAttendance.setEmployeeId(choseEmployee.getId());
                     importAttendance.setDeptId(choseEmployee.getDeptId());
                     importAttendance.setDeptName(choseEmployee.getDeptName());
+                    importAttendance.setPostId(choseEmployee.getPostId());
+                    importAttendance.setPosition(choseEmployee.getPosition());
                 }
                 if (importAttendance != null && importAttendance.getAttendanceDate() != null) {
                     LocalDate localDate = importAttendance.getAttendanceDate();
@@ -201,14 +208,14 @@ public class AttendanceInfoServiceImpl implements AttendanceInfoService {
 
         // 批量删除
         if (!toDeleteIds.isEmpty()) {
-            infoMapper.deleteBatchIds(toDeleteIds);
             toDeleteIds.forEach(id -> respVO.getDeleteEmployeeNames().add(this.getInfo(id).getEmployeeName()));
+            infoMapper.deleteBatchIds(toDeleteIds);
         }
 
         // 批量插入
         if (!toInsert.isEmpty()) {
-            infoMapper.insertBatch(toInsert);
             toInsert.forEach(info -> respVO.getCreateEmployeeNames().add(info.getEmployeeName()));
+            infoMapper.insertBatch(toInsert);
             returnMsg.insert(0, "数据批量导入成功!共 " + toInsert.size() + " 条,数据如下:");
         }
         return returnMsg.toString();

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

@@ -14,6 +14,7 @@
             ai.employee_id,
             ai.employee_name,
             ai.employee_mobile,
+            ai.dept_id,
             ai.dept_name,
             ai.attendance_date,
             ai.work_start_time,
@@ -22,8 +23,23 @@
             ai.leave_early_time
         FROM
         attendance_info ai
-        WHERE
-            ai.attendance_date BETWEEN #{reqVO.attendanceStartDate} AND #{reqVO.attendanceEndDate}
+        WHERE 1=1
+
+        <if test="reqVO.attendanceStartDate != null">
+            AND ai.attendance_date &gt;= #{reqVO.attendanceStartDate}
+        </if>
+        <if test="reqVO.attendanceEndDate != null">
+            AND ai.attendance_date &lt;= #{reqVO.attendanceEndDate}
+        </if>
+        <if test="reqVO.employeeName != null and reqVO.employeeName != ''">
+            AND ai.employee_name LIKE concat('%',#{reqVO.employeeName},'%')
+        </if>
+        <if test="reqVO.employeeMobile != null and reqVO.employeeMobile != ''">
+            AND ai.employee_mobile LIKE concat('%',#{reqVO.employeeMobile},'%')
+        </if>
+        <if test="reqVO.deptId != null and reqVO.deptId != ''">
+            AND ai.dept_id = #{reqVO.deptId}
+        </if>
         ORDER BY
             ai.employee_name,ai.attendance_date,ai.dept_name
         <if test="reqVO.pageSize != null and reqVO.pageNo != null">