change(dms): 完善设备转移时间的校验

- 增加设备转移时间不能小于安装时间的校验
- 在设备转移信息保存逻辑中,有对转移时间与安装时间的比较
master
zch 2 weeks ago
parent f21e173a85
commit b0fc3b4d87

@ -9,7 +9,9 @@ import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.dms.domain.DmsBaseDeviceInstall;
import org.dromara.dms.domain.DmsBaseMachineInfo; import org.dromara.dms.domain.DmsBaseMachineInfo;
import org.dromara.dms.mapper.DmsBaseDeviceInstallMapper;
import org.dromara.dms.mapper.DmsBaseMachineInfoMapper; import org.dromara.dms.mapper.DmsBaseMachineInfoMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.dms.domain.bo.DmsBaseTransferInfoBo; import org.dromara.dms.domain.bo.DmsBaseTransferInfoBo;
@ -41,6 +43,8 @@ public class DmsBaseTransferInfoServiceImpl implements IDmsBaseTransferInfoServi
private final DmsBaseMachineInfoMapper baseMachineInfoMapper; private final DmsBaseMachineInfoMapper baseMachineInfoMapper;
private final DmsBaseDeviceInstallMapper dmsBaseDeviceInstallMapper;
/** /**
* *
* *
@ -153,8 +157,26 @@ public class DmsBaseTransferInfoServiceImpl implements IDmsBaseTransferInfoServi
throw new ServiceException("转移前必须有安装位置"); throw new ServiceException("转移前必须有安装位置");
} }
// 3. 校验转移时间不能小于之前记录的转移时间 // 3. 校验转移时间不能小于之前记录的安装时间和转移时间
if (entity.getDeviceTransferTime() != null) { if (entity.getDeviceTransferTime() != null) {
//校验转移时间不能小于之前记录的安装时间
List<DmsBaseDeviceInstall> 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<DmsBaseTransferInfo> page = new Page<>(1, 100); Page<DmsBaseTransferInfo> page = new Page<>(1, 100);
IPage<DmsBaseTransferInfo> resultPage = baseMapper.selectPage(page, IPage<DmsBaseTransferInfo> resultPage = baseMapper.selectPage(page,
@ -167,6 +189,7 @@ public class DmsBaseTransferInfoServiceImpl implements IDmsBaseTransferInfoServi
// 使用stream流检查转移时间 // 使用stream流检查转移时间
boolean hasInvalidTime = resultPage.getRecords().stream() boolean hasInvalidTime = resultPage.getRecords().stream()
//anyMatch 判断是否有任意一个安装时间大于转移时间,有一个就停止遍历
.anyMatch(previousTransfer -> .anyMatch(previousTransfer ->
entity.getDeviceTransferTime().before(previousTransfer.getDeviceTransferTime()) entity.getDeviceTransferTime().before(previousTransfer.getDeviceTransferTime())
); );

Loading…
Cancel
Save