diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/impl/DlRepairSoServiceImpl.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/impl/DlRepairSoServiceImpl.java index 4d2c4e06..94e42894 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/impl/DlRepairSoServiceImpl.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/stockOperate/service/impl/DlRepairSoServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.common.RecordTypeEnum; import cn.iocoder.yudao.common.RepairErrorCodeConstants; +import cn.iocoder.yudao.common.RepairRoleEnum; import cn.iocoder.yudao.common.SoStatusEnum; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.base.service.RepairRecordsService; @@ -144,6 +145,12 @@ public class DlRepairSoServiceImpl extends ServiceImpl() - .set(DlRepairSo::getSoStatus, SoStatusEnum.DEPRECATED.getCode()) - .and(i -> - i.eq(DlRepairSo::getId, repairSoReqVO.getId()) - .ne(DlRepairSo::getSoStatus, SoStatusEnum.DEPRECATED.getCode()) - .ne(DlRepairSo::getSoStatus, SoStatusEnum.PICKED.getCode()) - .ne(DlRepairSo::getSoStatus, SoStatusEnum.RETURNED.getCode()) - )); + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.set(DlRepairSo::getSoStatus, SoStatusEnum.DEPRECATED.getCode()); + String userRole = ticketsService.getUserRole(); + if (RepairRoleEnum.WAREHOUSE.getCode().equals(userRole)) { + wrapper.eq(DlRepairSo::getId, repairSoReqVO.getId()); + } else { + wrapper.and(i -> + i.eq(DlRepairSo::getId, repairSoReqVO.getId()) + .ne(DlRepairSo::getSoStatus, SoStatusEnum.DEPRECATED.getCode()) + .ne(DlRepairSo::getSoStatus, SoStatusEnum.PICKED.getCode()) + .ne(DlRepairSo::getSoStatus, SoStatusEnum.RETURNED.getCode()) + ); + } + int update = baseMapper.update(wrapper); if (update == 0) { throw exception0(500, "该单据已有其他人操作"); }