Commit 32a7d14d01219d044ab0bfe9bcbb0908239004e8
1 parent
5bc4d5ed
✨ feat(mes): 添加用户已上工的错误码检查
Showing
3 changed files
with
10 additions
and
2 deletions
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(); |