package com.ruoyi.system.service.impl;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import com.ruoyi.system.domain.TBatteryGroup;
|
import com.ruoyi.system.domain.TBatteryGroupRelationField;
|
import com.ruoyi.system.domain.TTestFieldSnapshot;
|
import com.ruoyi.system.mapper.TSharedFieldSnapshotMapper;
|
import com.ruoyi.system.service.ITBatteryGroupService;
|
import com.ruoyi.system.service.ISharedFieldSnapshotService;
|
|
@Service
|
public class TSharedFieldSnapshotServiceImpl implements ISharedFieldSnapshotService
|
{
|
@Autowired
|
private ITBatteryGroupService batteryGroupService;
|
|
@Autowired
|
private TSharedFieldSnapshotMapper snapshotMapper;
|
|
@Override
|
public List<TTestFieldSnapshot> createForBatteryGroup(Long groupId)
|
{
|
TBatteryGroup group = batteryGroupService.selectBatteryGroupById(groupId);
|
List<TTestFieldSnapshot> snapshots = new ArrayList<>();
|
for (TBatteryGroupRelationField field : mutable(group.getTemplateFields()))
|
{
|
snapshots.add(snapshot(field.getBatteryGroupFieldId(), field.getFieldName(), field.getFieldType(),
|
field.getFieldValue()));
|
}
|
return snapshots;
|
}
|
|
@Override
|
public List<TTestFieldSnapshot> resolveForUpdate(Long currentGroupId, Long nextGroupId,
|
List<TTestFieldSnapshot> currentSnapshots)
|
{
|
// 同组编辑不能重新读取活动值,否则会静默改写测试创建时保存的业务事实。
|
if (nextGroupId.equals(currentGroupId))
|
{
|
return mutable(currentSnapshots).stream()
|
.map(source -> snapshot(source.getFieldDefinitionId(), source.getFieldName(),
|
source.getFieldType(), source.getFieldValue()))
|
.toList();
|
}
|
return createForBatteryGroup(nextGroupId);
|
}
|
|
@Override
|
public List<TTestFieldSnapshot> selectByTestId(Long testId)
|
{
|
return mutable(snapshotMapper.selectByTestId(testId));
|
}
|
|
@Override
|
public void saveForTest(Long testId, List<TTestFieldSnapshot> snapshots)
|
{
|
for (TTestFieldSnapshot snapshot : mutable(snapshots))
|
{
|
snapshot.setTestId(testId);
|
snapshotMapper.insert(snapshot);
|
}
|
}
|
|
@Override
|
public void deleteByTestId(Long testId)
|
{
|
snapshotMapper.deleteByTestId(testId);
|
}
|
|
private TTestFieldSnapshot snapshot(Long definitionId, String name, String type, String value)
|
{
|
TTestFieldSnapshot snapshot = new TTestFieldSnapshot();
|
snapshot.setFieldDefinitionId(definitionId);
|
snapshot.setFieldName(name);
|
snapshot.setFieldType(type);
|
snapshot.setFieldValue(value);
|
return snapshot;
|
}
|
|
private <T> List<T> mutable(List<T> values)
|
{
|
return values == null ? new ArrayList<>() : new ArrayList<>(values);
|
}
|
}
|