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