diff --git a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBaseTransferInfoServiceImpl.java b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBaseTransferInfoServiceImpl.java index 6fbd0102..541df530 100644 --- a/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBaseTransferInfoServiceImpl.java +++ b/ruoyi-modules/hwmom-dms/src/main/java/org/dromara/dms/service/impl/DmsBaseTransferInfoServiceImpl.java @@ -9,7 +9,9 @@ import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.dromara.dms.domain.DmsBaseDeviceInstall; import org.dromara.dms.domain.DmsBaseMachineInfo; +import org.dromara.dms.mapper.DmsBaseDeviceInstallMapper; import org.dromara.dms.mapper.DmsBaseMachineInfoMapper; import org.springframework.stereotype.Service; import org.dromara.dms.domain.bo.DmsBaseTransferInfoBo; @@ -41,6 +43,8 @@ public class DmsBaseTransferInfoServiceImpl implements IDmsBaseTransferInfoServi private final DmsBaseMachineInfoMapper baseMachineInfoMapper; + private final DmsBaseDeviceInstallMapper dmsBaseDeviceInstallMapper; + /** * 查询设备转移信息 * @@ -153,8 +157,26 @@ public class DmsBaseTransferInfoServiceImpl implements IDmsBaseTransferInfoServi throw new ServiceException("转移前必须有安装位置"); } - // 3. 校验转移时间不能小于之前记录的转移时间 + // 3. 校验转移时间不能小于之前记录的安装时间和转移时间 if (entity.getDeviceTransferTime() != null) { + + //校验转移时间不能小于之前记录的安装时间 + List installRecords = dmsBaseDeviceInstallMapper.selectList( + JoinWrappers.lambda(DmsBaseDeviceInstall.class) + .eq(DmsBaseDeviceInstall::getMachineId, entity.getMachineId()) + .select(DmsBaseDeviceInstall::getInstallTime) + .orderByAsc(DmsBaseDeviceInstall::getInstallTime) + ); + + boolean hasInvalidInstallTime = installRecords.stream() + //anyMatch 判断是否有任意一个安装时间大于转移时间,有一个就停止遍历 + .anyMatch(installRecord -> installRecord.getInstallTime() != null && + entity.getDeviceTransferTime().before(installRecord.getInstallTime())); + + if (hasInvalidInstallTime) { + throw new ServiceException("设备转移时间不能小于设备安装时间"); + } + // 使用分页功能限制记录数量 Page page = new Page<>(1, 100); IPage resultPage = baseMapper.selectPage(page, @@ -167,6 +189,7 @@ public class DmsBaseTransferInfoServiceImpl implements IDmsBaseTransferInfoServi // 使用stream流检查转移时间 boolean hasInvalidTime = resultPage.getRecords().stream() + //anyMatch 判断是否有任意一个安装时间大于转移时间,有一个就停止遍历 .anyMatch(previousTransfer -> entity.getDeviceTransferTime().before(previousTransfer.getDeviceTransferTime()) );