Przeglądaj źródła

1、新增获取今日打卡状态

machaoyi 1 rok temu
rodzic
commit
f208870f97

+ 9 - 1
core/src/main/java/com/ctsi/utils/DicCodeUtils.java

@@ -22,6 +22,14 @@ public class DicCodeUtils implements ApplicationContextAware {
 
     public static void processResultObject(Object resultObject) {
         if (resultObject != null) {
+            if (resultObject instanceof List) {
+                @SuppressWarnings("unchecked")
+                List<Object> objectList = (List<Object>) resultObject;
+                for (Object o : objectList) {
+                    processResultObject(o);
+                }
+                return;
+            }
             SysDicItemService sysDicItemService = null;
             if (applicationContext != null) {
                 sysDicItemService = applicationContext.getBean(SysDicItemService.class);
@@ -36,7 +44,7 @@ public class DicCodeUtils implements ApplicationContextAware {
                     field.setAccessible(true);
                     try {
                         // 如果字段的类型是一个类(非基本类型),则递归遍历该字段的类
-                        if (field.getType().getName().equals("java.util.List")) {
+                        if (field.getType().getName().equals("java.util.List") || field.getType().getName().equals("java.util.ArrayList")) {
                             Object nestedObject = field.get(resultObject);
                             if (nestedObject != null) {
                                 @SuppressWarnings("unchecked")

+ 103 - 66
work/src/main/java/com/ctsi/work/WorkClock/controller/WorkClockController.java

@@ -7,6 +7,7 @@ import com.ctsi.entity.FramePage;
 import com.ctsi.utils.ApiResult;
 import com.ctsi.work.WorkAddr.entity.WorkAddr;
 import com.ctsi.work.WorkAddr.service.WorkAddrService;
+import com.ctsi.work.WorkClock.entity.UserTodayWorkClockPO;
 import com.ctsi.work.WorkClock.entity.WorkClock;
 import com.ctsi.work.WorkClock.entity.WorkClockPO;
 import com.ctsi.work.WorkClock.entity.WorkClockVO;
@@ -19,41 +20,44 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Objects;
 
 /**
  * 员工打卡表;(work_clock)表控制层
+ *
  * @author : machaoyi
  * @date : 2024-1-17
  */
 @Api(tags = "员工打卡表对象功能接口")
 @RestController
 @RequestMapping("/workClock")
-public class WorkClockController{
+public class WorkClockController {
     @Resource
     private WorkClockService workClockService;
-     @Resource
-     private WorkAddrService workAddrService;
+    @Resource
+    private WorkAddrService workAddrService;
     private static final Logger log = LoggerFactory.getLogger(WorkClockController.class);
-    
-    /** 
-     * 通过ID查询单条数据 
+
+    /**
+     * 通过ID查询单条数据
      *
      * @param id 主键
      * @ return 实例对象
      */
     @ApiOperation("通过ID查询单条数据")
     @GetMapping("{id}")
-    public ApiResult<WorkClock> queryById(@PathVariable Long id){
+    public ApiResult<WorkClock> queryById(@PathVariable Long id) {
         try {
             return ApiResult.success(workClockService.queryById(id));
         } catch (Exception e) {
             log.error(e.getMessage());
-            return ApiResult.failure("查询失败",null);
+            return ApiResult.failure("查询失败", null);
         }
     }
-    
-    /** 
+
+    /**
      * 分页查询
      *
      * @param workClock 筛选条件
@@ -61,13 +65,13 @@ public class WorkClockController{
      */
     @ApiOperation("分页查询")
     @GetMapping
-    public ApiResult<Page<WorkClockPO>> paginQuery(WorkClock workClock, FramePage framePage){
+    public ApiResult<Page<WorkClockPO>> paginQuery(WorkClock workClock, FramePage framePage) {
         try {
             return ApiResult.success(workClockService.paginQuery(workClock, framePage.getPageNum(), framePage.getPageSize()));
         } catch (Exception e) {
             log.error(e.getMessage());
-            return ApiResult.failure("分页查询失败",null);
-        }    
+            return ApiResult.failure("分页查询失败", null);
+        }
     }
 
     /**
@@ -78,18 +82,51 @@ public class WorkClockController{
      */
     @ApiOperation("员工打卡记录")
     @GetMapping("/clockRecord")
-    public ApiResult<Page<WorkClockPO>> clockRecord(FramePage framePage){
+    public ApiResult<Page<WorkClockPO>> clockRecord(FramePage framePage) {
         try {
             WorkClock workClock = new WorkClock();
             workClock.setUserId(StpUtil.getLoginIdAsLong());
             return ApiResult.success(workClockService.paginQuery(workClock, framePage.getPageNum(), framePage.getPageSize()));
         } catch (Exception e) {
             log.error(e.getMessage());
-            return ApiResult.failure("分页查询失败",null);
+            return ApiResult.failure("分页查询失败", null);
+        }
+    }
+
+    /**
+     * 今日打卡状态
+     * @ return 查询结果
+     */
+    @ApiOperation("今日打卡状态")
+    @GetMapping("/todayClock")
+    public ApiResult<List<UserTodayWorkClockPO>> todayClock() {
+        try {
+            WorkClock workClock = new WorkClock();
+            workClock.setUserId(StpUtil.getLoginIdAsLong());
+            List<UserTodayWorkClockPO> userTodayWorkClockPOList = new ArrayList<>();
+            List<WorkClock> workClockList = workClockService.getUserTodayClock(workClock);
+            for (int i = 1; i <= 2; i++) {
+                UserTodayWorkClockPO userTodayWorkClockPO = new UserTodayWorkClockPO();
+                userTodayWorkClockPO.setClockType(String.valueOf(i));
+                userTodayWorkClockPO.setClockStatus("0");
+                userTodayWorkClockPO.setClockTime(0L);
+                for (WorkClock workClock1 : workClockList) {
+                    if (Objects.equals(workClock1.getClockType(), String.valueOf(i))) {
+                        userTodayWorkClockPO.setClockStatus(workClock1.getClockStatus());
+                        userTodayWorkClockPO.setClockTime(workClock1.getClockTime());
+                        break;
+                    }
+                }
+                userTodayWorkClockPOList.add(userTodayWorkClockPO);
+            }
+            return ApiResult.success(userTodayWorkClockPOList);
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            return ApiResult.failure("分页查询失败", null);
         }
     }
-    
-    /** 
+
+    /**
      * 新增数据
      *
      * @param workClock 实例对象
@@ -97,56 +134,56 @@ public class WorkClockController{
      */
     @ApiOperation("新增数据")
     @PostMapping
-    public ApiResult<WorkClock> add(@RequestBody WorkClock workClock){
+    public ApiResult<WorkClock> add(@RequestBody WorkClock workClock) {
         try {
             return workClockService.insert(workClock);
         } catch (Exception e) {
             log.error(e.getMessage());
-            return ApiResult.failure("新增数据失败",null);
+            return ApiResult.failure("新增数据失败", null);
         }
     }
 
-     /**
-      * 员工打卡接口
-      *
-      * @param workClockVO 实例对象
-      * @ return 实例对象
-      */
-     @ApiOperation("员工打卡接口")
-     @PostMapping("/clock")
-     public ApiResult<WorkClock> clock(@RequestBody WorkClockVO workClockVO){
-         try {
-             WorkClock workClock = new WorkClock();
-             BeanUtils.copyProperties(workClockVO,workClock);
-             workClock.setUserId(StpUtil.getLoginIdAsLong());
-             workClock.setClockTime(DateUtil.current());
-             WorkAddr workAddr = workAddrService.queryById(workClockVO.getWorkAddrId());
-             if (workAddr == null) {
-                 return ApiResult.failure("打卡地址不存在",null);
-             }
-             if (Objects.equals(workClockVO.getClockType(), "1")) {//打卡上班
-                 Long inTime = DateUtil.beginOfDay(DateUtil.date()).getTime() + workAddr.getAddrIn();
-                 if (workClock.getClockTime() <= inTime) {//打卡时间小于上班时间,正常
-                     workClock.setClockStatus("1");
-                 } else {//迟到
-                     workClock.setClockStatus("2");
-                 }
-             } else if (Objects.equals(workClockVO.getClockType(), "2")) {//打卡下班
-                 Long quitTIme = DateUtil.beginOfDay(DateUtil.date()).getTime() + workAddr.getAddrQuit();
-                 if (workClock.getClockTime() >= quitTIme) {//打卡时间大于下班时间,正常
-                     workClock.setClockStatus("1");
-                 } else {//早退
-                     workClock.setClockStatus("3");
-                 }
-             }
-             return workClockService.insert(workClock);
-         } catch (Exception e) {
-             log.error(e.getMessage());
-             return ApiResult.failure("新增数据失败",null);
-         }
-     }
-    
-    /** 
+    /**
+     * 员工打卡接口
+     *
+     * @param workClockVO 实例对象
+     * @ return 实例对象
+     */
+    @ApiOperation("员工打卡接口")
+    @PostMapping("/clock")
+    public ApiResult<WorkClock> clock(@RequestBody WorkClockVO workClockVO) {
+        try {
+            WorkClock workClock = new WorkClock();
+            BeanUtils.copyProperties(workClockVO, workClock);
+            workClock.setUserId(StpUtil.getLoginIdAsLong());
+            workClock.setClockTime(DateUtil.current());
+            WorkAddr workAddr = workAddrService.queryById(workClockVO.getWorkAddrId());
+            if (workAddr == null) {
+                return ApiResult.failure("打卡地址不存在", null);
+            }
+            if (Objects.equals(workClockVO.getClockType(), "1")) {//打卡上班
+                Long inTime = DateUtil.beginOfDay(DateUtil.date()).getTime() + workAddr.getAddrIn();
+                if (workClock.getClockTime() <= inTime) {//打卡时间小于上班时间,正常
+                    workClock.setClockStatus("1");
+                } else {//迟到
+                    workClock.setClockStatus("2");
+                }
+            } else if (Objects.equals(workClockVO.getClockType(), "2")) {//打卡下班
+                Long quitTIme = DateUtil.beginOfDay(DateUtil.date()).getTime() + workAddr.getAddrQuit();
+                if (workClock.getClockTime() >= quitTIme) {//打卡时间大于下班时间,正常
+                    workClock.setClockStatus("1");
+                } else {//早退
+                    workClock.setClockStatus("3");
+                }
+            }
+            return workClockService.insert(workClock);
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            return ApiResult.failure("新增数据失败", null);
+        }
+    }
+
+    /**
      * 更新数据
      *
      * @param workClock 实例对象
@@ -154,16 +191,16 @@ public class WorkClockController{
      */
     @ApiOperation("更新数据")
     @PutMapping
-    public ApiResult<WorkClock> edit(@RequestBody WorkClock workClock){
+    public ApiResult<WorkClock> edit(@RequestBody WorkClock workClock) {
         try {
             return ApiResult.success(workClockService.update(workClock));
         } catch (Exception e) {
             log.error(e.getMessage());
-            return ApiResult.failure("更新数据失败",null);
+            return ApiResult.failure("更新数据失败", null);
         }
     }
-    
-    /** 
+
+    /**
      * 通过主键删除数据
      *
      * @param id 主键
@@ -171,12 +208,12 @@ public class WorkClockController{
      */
     @ApiOperation("通过主键删除数据")
     @DeleteMapping
-    public ApiResult<Boolean> deleteById(Long id){
+    public ApiResult<Boolean> deleteById(Long id) {
         try {
             return ApiResult.success(workClockService.deleteById(id));
         } catch (Exception e) {
             log.error(e.getMessage());
-            return ApiResult.failure("删除数据失败",null);
+            return ApiResult.failure("删除数据失败", null);
         }
     }
 }

+ 28 - 0
work/src/main/java/com/ctsi/work/WorkClock/entity/UserTodayWorkClockPO.java

@@ -0,0 +1,28 @@
+package com.ctsi.work.WorkClock.entity;
+
+import com.ctsi.annotation.DicCode;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "员工今日打卡")
+public class UserTodayWorkClockPO {
+    /** 打卡类型 */
+    @ApiModelProperty(value = "打卡类型")
+    private String clockType ;
+    /** 打卡类型 */
+    @ApiModelProperty(value = "打卡类型")
+    @DicCode("CLOCK-TYPE")
+    private String clockTypeName ;
+    /** 打卡时间 */
+    @ApiModelProperty(value = "打卡时间")
+    private Long clockTime ;
+    /** 打卡状态 */
+    @ApiModelProperty(value = "打卡状态")
+    private String clockStatus ;
+    /** 打卡状态 */
+    @ApiModelProperty(value = "打卡状态")
+    @DicCode("CLOCK-STATUS")
+    private String clockStatusName ;
+}

+ 4 - 0
work/src/main/java/com/ctsi/work/WorkClock/service/WorkClockService.java

@@ -5,6 +5,8 @@ import com.ctsi.utils.ApiResult;
 import com.ctsi.work.WorkClock.entity.WorkClock;
 import com.ctsi.work.WorkClock.entity.WorkClockPO;
 
+import java.util.List;
+
 /**
  * 员工打卡表;(work_clock)表服务接口
  * @author : machaoyi
@@ -29,6 +31,8 @@ public interface WorkClockService{
      * @ return
      */
     Page<WorkClockPO> paginQuery(WorkClock workClock, long current, long size);
+
+    List<WorkClock> getUserTodayClock(WorkClock workClock);
     /** 
      * 新增数据
      *

+ 9 - 0
work/src/main/java/com/ctsi/work/WorkClock/service/impl/WorkClockServiceImpl.java

@@ -74,6 +74,15 @@ public class WorkClockServiceImpl implements WorkClockService{
         //3. 返回结果
         return pagin;
     }
+
+    public List<WorkClock> getUserTodayClock(WorkClock workClock) {
+        MPJLambdaWrapper<WorkClock> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.eq(WorkClock::getUserId, workClock.getUserId());
+        // 今日零点时间戳
+        Long zeroTimestamp = DateUtil.beginOfDay(DateUtil.date()).getTime();
+        queryWrapper.ge(WorkClock::getClockTime, zeroTimestamp);
+        return workClockMapper.selectList(queryWrapper);
+    }
     
     /** 
      * 新增数据