From 32a7d14d01219d044ab0bfe9bcbb0908239004e8 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 6 Apr 2026 00:14:17 +0800 Subject: [PATCH] ✨ feat(mes): 添加用户已上工的错误码检查 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/workrecord/MesProWorkRecordDO.java | 2 ++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java | 1 + yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workrecord/MesProWorkRecordServiceImpl.java | 9 +++++++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/workrecord/MesProWorkRecordDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/workrecord/MesProWorkRecordDO.java index b10c5e8..43d755b 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/workrecord/MesProWorkRecordDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/pro/workrecord/MesProWorkRecordDO.java @@ -3,8 +3,10 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.pro.workrecord; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO; import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.FieldStrategy; import lombok.*; import java.time.LocalDateTime; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java index d84d182..aaee1b8 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java @@ -283,6 +283,7 @@ public interface ErrorCodeConstants { // ========== MES 生产管理-工作记录(1-040-508-000) ========== ErrorCode WORK_RECORD_NOT_CLOCK_IN = new ErrorCode(1_040_508_001, "当前用户未上工,无法下工"); + ErrorCode WORK_RECORD_ALREADY_CLOCK_IN = new ErrorCode(1_040_508_002, "当前用户已上工,请先下工再操作"); // ========== MES 质量管理-质检方案(1-040-600-000) ========== ErrorCode QC_TEMPLATE_NOT_EXISTS = new ErrorCode(1_040_600_000, "质检方案不存在"); diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workrecord/MesProWorkRecordServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workrecord/MesProWorkRecordServiceImpl.java index 4cb278c..cc02b91 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workrecord/MesProWorkRecordServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/workrecord/MesProWorkRecordServiceImpl.java @@ -17,6 +17,7 @@ import org.springframework.validation.annotation.Validated; import java.time.LocalDateTime; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WORK_RECORD_ALREADY_CLOCK_IN; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WORK_RECORD_NOT_CLOCK_IN; /** @@ -48,8 +49,13 @@ public class MesProWorkRecordServiceImpl implements MesProWorkRecordService { @Override @Transactional(rollbackFor = Exception.class) public Long clockInWorkRecord(Long userId, Long workstationId) { - // 1. 校验工作站是否存在 + // 1.1 校验工作站是否存在 workstationService.validateWorkstationExists(workstationId); + // 1.2 校验是否重复上线 + MesProWorkRecordDO record = workRecordMapper.selectByUserId(userId); + if (record != null && ObjUtil.equal(MesProWorkRecordTypeEnum.CLOCK_IN.getType(), record.getType())) { + throw exception(WORK_RECORD_ALREADY_CLOCK_IN); + } // 2. 写入上线流水 MesProWorkRecordLogDO log = MesProWorkRecordLogDO.builder().userId(userId) @@ -57,7 +63,6 @@ public class MesProWorkRecordServiceImpl implements MesProWorkRecordService { workRecordLogMapper.insert(log); // 3. 更新用户工作站状态:如果没有记录,或先删除旧记录 - MesProWorkRecordDO record = workRecordMapper.selectByUserId(userId); if (record == null) { record = MesProWorkRecordDO.builder().userId(userId).workstationId(workstationId) .type(MesProWorkRecordTypeEnum.CLOCK_IN.getType()).clockInTime(LocalDateTime.now()).build(); -- libgit2 0.21.4