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

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

@ -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<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);
IPage<DmsBaseTransferInfo> 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())
);

Loading…
Cancel
Save