From 6f49fb6b3140f004b89aeddccedd3d9770995265 Mon Sep 17 00:00:00 2001 From: 15166072824 <2632486806@qq.com> Date: Wed, 31 Dec 2025 15:20:52 +0800 Subject: [PATCH] doubao --- 123.sql | 1 - client_code/src/router/index.js | 13 + client_code/src/views/pages/daka/list.vue | 237 ++++++++++++++++++ server_code/sql/daka.sql | 14 ++ .../com/cl/controller/DakaController.java | 158 ++++++++++++ .../src/main/java/com/cl/dao/DakaDao.java | 31 +++ .../java/com/cl/entity/ChatMessageEntity.java | 4 + .../main/java/com/cl/entity/DakaEntity.java | 179 +++++++++++++ .../src/main/resources/mapper/DakaDao.xml | 54 ++++ 9 files changed, 690 insertions(+), 1 deletion(-) create mode 100644 client_code/src/views/pages/daka/list.vue create mode 100644 server_code/sql/daka.sql create mode 100644 server_code/src/main/java/com/cl/controller/DakaController.java create mode 100644 server_code/src/main/java/com/cl/dao/DakaDao.java create mode 100644 server_code/src/main/java/com/cl/entity/DakaEntity.java create mode 100644 server_code/src/main/resources/mapper/DakaDao.xml diff --git a/123.sql b/123.sql index 1307de6..597251c 100644 --- a/123.sql +++ b/123.sql @@ -695,5 +695,4 @@ INSERT INTO `zhenduanbingli` VALUES (11, '2025-03-27 16:20:25', '1743063617739', INSERT INTO `zhenduanbingli` VALUES (12, '2025-04-24 15:46:06', '1745480759774', '123', '13646446880', '', '2025-04-24 15:45:59', '123456', '19558692219', '

11

'); INSERT INTO `zhenduanbingli` VALUES (13, '2025-05-08 10:16:51', '1746670607518', '123', '13646446880', '', '2025-05-08 10:16:47', '123456', '19558692219', '

1

'); - SET FOREIGN_KEY_CHECKS = 1; diff --git a/client_code/src/router/index.js b/client_code/src/router/index.js index 7073926..d1e9169 100644 --- a/client_code/src/router/index.js +++ b/client_code/src/router/index.js @@ -51,6 +51,10 @@ import chatMessageAdd from '@/views/pages/chatMessage/formAdd' import chatFriendList from '@/views/pages/chatFriend/list' import chatFriendDetail from '@/views/pages/chatFriend/formModel' import chatFriendAdd from '@/views/pages/chatFriend/formAdd' +<<<<<<< HEAD +import dakaList from '@/views/pages/daka/list' +======= +>>>>>>> main const routes = [{ path: '/', @@ -222,9 +226,18 @@ const routes = [{ path: 'chatFriendDetail', component: chatFriendDetail }, { +<<<<<<< HEAD + path: 'chatFriendAdd', + component: chatFriendAdd + }, { + path: 'dakaList', + component: dakaList + }]} +======= path: 'chatFriendAdd', component: chatFriendAdd } +>>>>>>> main ] }, { diff --git a/client_code/src/views/pages/daka/list.vue b/client_code/src/views/pages/daka/list.vue new file mode 100644 index 0000000..967bb1c --- /dev/null +++ b/client_code/src/views/pages/daka/list.vue @@ -0,0 +1,237 @@ + + + + + \ No newline at end of file diff --git a/server_code/sql/daka.sql b/server_code/sql/daka.sql new file mode 100644 index 0000000..aea6c4d --- /dev/null +++ b/server_code/sql/daka.sql @@ -0,0 +1,14 @@ +CREATE TABLE `daka` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id', + `user_id` bigint(20) DEFAULT NULL COMMENT '用户ID', + `user_type` varchar(255) DEFAULT NULL COMMENT '用户类型', + `status` varchar(255) DEFAULT NULL COMMENT '打卡状态', + `start_time` datetime DEFAULT NULL COMMENT '上班时间', + `end_time` datetime DEFAULT NULL COMMENT '下班时间', + `pause_time` datetime DEFAULT NULL COMMENT '暂停时间', + `resume_time` datetime DEFAULT NULL COMMENT '恢复时间', + `total_duration` double DEFAULT NULL COMMENT '总工作时长', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='打卡记录'; \ No newline at end of file diff --git a/server_code/src/main/java/com/cl/controller/DakaController.java b/server_code/src/main/java/com/cl/controller/DakaController.java new file mode 100644 index 0000000..8329481 --- /dev/null +++ b/server_code/src/main/java/com/cl/controller/DakaController.java @@ -0,0 +1,158 @@ +package com.cl.controller; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.cl.annotation.IgnoreAuth; +import com.cl.entity.DakaEntity; +import com.cl.entity.PaibanxinxiEntity; +import com.cl.dao.DakaDao; +import com.cl.dao.PaibanxinxiDao; +import com.cl.service.CommonService; +import com.cl.utils.PageUtils; +import com.cl.utils.R; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.*; +import java.text.SimpleDateFormat; +import java.math.BigDecimal; +import java.math.RoundingMode; + +/** + * 打卡管理 + * @author + * @email + * @date 2025-03-27 15:44:15 + */ +@RestController +@RequestMapping("/daka") +public class DakaController { + @Autowired + private DakaDao dakaDao; + + @Autowired + private PaibanxinxiDao paibanxinxiDao; + + @Autowired + private CommonService commonService; + + /** + * 打卡上班 + */ + @PostMapping("/start") + public R start(@RequestBody DakaEntity daka) { + // 检查今日是否已打卡 + DakaEntity todayDaka = dakaDao.getTodayDakaByUserId(daka.getUserId()); + if (todayDaka != null && ("已打卡".equals(todayDaka.getStatus()) || "暂停".equals(todayDaka.getStatus()))) { + return R.error("今日已打卡上班"); + } + + // 获取排班信息 + PaibanxinxiEntity paiban = paibanxinxiDao.selectOne(new EntityWrapper().eq("yishengzhanghao", daka.getUserId())); + + DakaEntity newDaka = new DakaEntity(); + newDaka.setUserId(daka.getUserId()); + newDaka.setUserType(daka.getUserType()); + newDaka.setStatus("已打卡"); + newDaka.setStartTime(new Date()); + newDaka.setCreateTime(new Date()); + newDaka.setUpdateTime(new Date()); + + if (paiban != null) { + newDaka.setTotalDuration(paiban.getShangbanshizhang().doubleValue()); + } + + dakaDao.insert(newDaka); + return R.ok("打卡上班成功"); + } + + /** + * 暂停工作 + */ + @PostMapping("/pause") + public R pause(@RequestBody DakaEntity daka) { + DakaEntity todayDaka = dakaDao.getTodayDakaByUserId(daka.getUserId()); + if (todayDaka == null || !"已打卡".equals(todayDaka.getStatus())) { + return R.error("未打卡上班,无法暂停"); + } + + todayDaka.setStatus("暂停"); + todayDaka.setPauseTime(new Date()); + todayDaka.setUpdateTime(new Date()); + + dakaDao.updateById(todayDaka); + return R.ok("暂停工作成功"); + } + + /** + * 恢复工作 + */ + @PostMapping("/resume") + public R resume(@RequestBody DakaEntity daka) { + DakaEntity todayDaka = dakaDao.getTodayDakaByUserId(daka.getUserId()); + if (todayDaka == null || !"暂停".equals(todayDaka.getStatus())) { + return R.error("未暂停工作,无法恢复"); + } + + todayDaka.setStatus("已打卡"); + todayDaka.setResumeTime(new Date()); + todayDaka.setUpdateTime(new Date()); + + dakaDao.updateById(todayDaka); + return R.ok("恢复工作成功"); + } + + /** + * 打卡下班 + */ + @PostMapping("/end") + public R end(@RequestBody DakaEntity daka) { + DakaEntity todayDaka = dakaDao.getTodayDakaByUserId(daka.getUserId()); + if (todayDaka == null || "未打卡".equals(todayDaka.getStatus())) { + return R.error("未打卡上班,无法下班"); + } + + todayDaka.setStatus("已下班"); + todayDaka.setEndTime(new Date()); + todayDaka.setUpdateTime(new Date()); + + // 计算工作时长 + long diff = todayDaka.getEndTime().getTime() - todayDaka.getStartTime().getTime(); + double hours = diff / (1000.0 * 60 * 60); + todayDaka.setTotalDuration(hours); + + dakaDao.updateById(todayDaka); + return R.ok("打卡下班成功"); + } + + /** + * 获取打卡状态 + */ + @GetMapping("/status") + public R status(@RequestParam Long userId) { + DakaEntity todayDaka = dakaDao.getTodayDakaByUserId(userId); + + Map result = new HashMap<>(); + if (todayDaka == null) { + result.put("status", "未打卡"); + } else { + result.put("status", todayDaka.getStatus()); + result.put("startTime", todayDaka.getStartTime()); + result.put("pauseTime", todayDaka.getPauseTime()); + + // 获取打卡记录 + List records = dakaDao.getDakaRecords(userId); + result.put("records", records); + } + + return R.ok().put("data", result); + } + + /** + * 打卡记录列表 + */ + @GetMapping("/list") + public R list(@RequestParam Map params) { + PageUtils page = commonService.queryPage(params, "daka", new String[]{}); + return R.ok().put("data", page); + } +} \ No newline at end of file diff --git a/server_code/src/main/java/com/cl/dao/DakaDao.java b/server_code/src/main/java/com/cl/dao/DakaDao.java new file mode 100644 index 0000000..0f7facf --- /dev/null +++ b/server_code/src/main/java/com/cl/dao/DakaDao.java @@ -0,0 +1,31 @@ +package com.cl.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.cl.entity.DakaEntity; +import org.apache.ibatis.annotations.Param; +import java.util.List; +import java.util.Map; + +/** + * 打卡记录 + * @author + * @email + * @date 2025-03-27 15:44:15 + */ +public interface DakaDao extends BaseMapper { + + /** + * 根据用户ID获取今日打卡记录 + */ + DakaEntity getTodayDakaByUserId(@Param("userId") Long userId); + + /** + * 获取用户打卡统计 + */ + List> getDakaStatistics(@Param("userId") Long userId); + + /** + * 获取用户打卡记录 + */ + List getDakaRecords(@Param("userId") Long userId); +} \ No newline at end of file diff --git a/server_code/src/main/java/com/cl/entity/ChatMessageEntity.java b/server_code/src/main/java/com/cl/entity/ChatMessageEntity.java index 0c33ff7..db50e32 100644 --- a/server_code/src/main/java/com/cl/entity/ChatMessageEntity.java +++ b/server_code/src/main/java/com/cl/entity/ChatMessageEntity.java @@ -5,7 +5,11 @@ import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; +<<<<<<< HEAD +======= + +>>>>>>> main import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import java.lang.reflect.InvocationTargetException; diff --git a/server_code/src/main/java/com/cl/entity/DakaEntity.java b/server_code/src/main/java/com/cl/entity/DakaEntity.java new file mode 100644 index 0000000..36391e5 --- /dev/null +++ b/server_code/src/main/java/com/cl/entity/DakaEntity.java @@ -0,0 +1,179 @@ +package com.cl.entity; + +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * 打卡记录 + * @author + * @email + * @date 2025-03-27 15:44:15 + */ +@TableName("daka") +public class DakaEntity implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(type = com.baomidou.mybatisplus.enums.IdType.AUTO) + private Long id; + + /** + * 用户ID + */ + private Long userId; + + /** + * 用户类型 + */ + private String userType; + + /** + * 打卡状态 + */ + private String status; + + /** + * 上班时间 + */ + @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss") + @DateTimeFormat + private Date startTime; + + /** + * 下班时间 + */ + @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss") + @DateTimeFormat + private Date endTime; + + /** + * 暂停时间 + */ + @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss") + @DateTimeFormat + private Date pauseTime; + + /** + * 恢复时间 + */ + @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss") + @DateTimeFormat + private Date resumeTime; + + /** + * 总工作时长 + */ + private Double totalDuration; + + /** + * 创建时间 + */ + @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss") + @DateTimeFormat + private Date createTime; + + /** + * 更新时间 + */ + @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss") + @DateTimeFormat + private Date updateTime; + + public DakaEntity() { + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getUserType() { + return userType; + } + + public void setUserType(String userType) { + this.userType = userType; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public Date getStartTime() { + return startTime; + } + + public void setStartTime(Date startTime) { + this.startTime = startTime; + } + + public Date getEndTime() { + return endTime; + } + + public void setEndTime(Date endTime) { + this.endTime = endTime; + } + + public Date getPauseTime() { + return pauseTime; + } + + public void setPauseTime(Date pauseTime) { + this.pauseTime = pauseTime; + } + + public Date getResumeTime() { + return resumeTime; + } + + public void setResumeTime(Date resumeTime) { + this.resumeTime = resumeTime; + } + + public Double getTotalDuration() { + return totalDuration; + } + + public void setTotalDuration(Double totalDuration) { + this.totalDuration = totalDuration; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } +} \ No newline at end of file diff --git a/server_code/src/main/resources/mapper/DakaDao.xml b/server_code/src/main/resources/mapper/DakaDao.xml new file mode 100644 index 0000000..dd3c507 --- /dev/null +++ b/server_code/src/main/resources/mapper/DakaDao.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + id, user_id, user_type, status, start_time, end_time, pause_time, resume_time, total_duration, create_time, update_time + + + + + + + + + + + + \ No newline at end of file