Commit 32a7d14d01219d044ab0bfe9bcbb0908239004e8

Authored by YunaiV
1 parent 5bc4d5ed

✨ feat(mes): 添加用户已上工的错误码检查

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;
3 3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
4 4 import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO;
5 5 import com.baomidou.mybatisplus.annotation.KeySequence;
  6 +import com.baomidou.mybatisplus.annotation.TableField;
6 7 import com.baomidou.mybatisplus.annotation.TableId;
7 8 import com.baomidou.mybatisplus.annotation.TableName;
  9 +import com.baomidou.mybatisplus.annotation.FieldStrategy;
8 10 import lombok.*;
9 11  
10 12 import java.time.LocalDateTime;
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
... ... @@ -283,6 +283,7 @@ public interface ErrorCodeConstants {
283 283  
284 284 // ========== MES 生产管理-工作记录(1-040-508-000) ==========
285 285 ErrorCode WORK_RECORD_NOT_CLOCK_IN = new ErrorCode(1_040_508_001, "当前用户未上工,无法下工");
  286 + ErrorCode WORK_RECORD_ALREADY_CLOCK_IN = new ErrorCode(1_040_508_002, "当前用户已上工,请先下工再操作");
286 287  
287 288 // ========== MES 质量管理-质检方案(1-040-600-000) ==========
288 289 ErrorCode QC_TEMPLATE_NOT_EXISTS = new ErrorCode(1_040_600_000, "质检方案不存在");
... ...
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;
17 17 import java.time.LocalDateTime;
18 18  
19 19 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
  20 +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WORK_RECORD_ALREADY_CLOCK_IN;
20 21 import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WORK_RECORD_NOT_CLOCK_IN;
21 22  
22 23 /**
... ... @@ -48,8 +49,13 @@ public class MesProWorkRecordServiceImpl implements MesProWorkRecordService {
48 49 @Override
49 50 @Transactional(rollbackFor = Exception.class)
50 51 public Long clockInWorkRecord(Long userId, Long workstationId) {
51   - // 1. 校验工作站是否存在
  52 + // 1.1 校验工作站是否存在
52 53 workstationService.validateWorkstationExists(workstationId);
  54 + // 1.2 校验是否重复上线
  55 + MesProWorkRecordDO record = workRecordMapper.selectByUserId(userId);
  56 + if (record != null && ObjUtil.equal(MesProWorkRecordTypeEnum.CLOCK_IN.getType(), record.getType())) {
  57 + throw exception(WORK_RECORD_ALREADY_CLOCK_IN);
  58 + }
53 59  
54 60 // 2. 写入上线流水
55 61 MesProWorkRecordLogDO log = MesProWorkRecordLogDO.builder().userId(userId)
... ... @@ -57,7 +63,6 @@ public class MesProWorkRecordServiceImpl implements MesProWorkRecordService {
57 63 workRecordLogMapper.insert(log);
58 64  
59 65 // 3. 更新用户工作站状态:如果没有记录,或先删除旧记录
60   - MesProWorkRecordDO record = workRecordMapper.selectByUserId(userId);
61 66 if (record == null) {
62 67 record = MesProWorkRecordDO.builder().userId(userId).workstationId(workstationId)
63 68 .type(MesProWorkRecordTypeEnum.CLOCK_IN.getType()).clockInTime(LocalDateTime.now()).build();
... ...