namespace Yw.Application
|
{
|
/// <summary>
|
/// HealthMultiEvaluationRecord
|
/// </summary>
|
[Route("Health/Multi/Evaluation/Record/Logic")]
|
[ApiDescriptionSettings("Health", Name = "综合健康评价记录(业务)", Order = 700)]
|
public class HealthMultiEvaluationRecord_LogicController : IDynamicApiController
|
{
|
|
|
/// <summary>
|
/// 通过 EquipmentID 获取最近一条树记录
|
/// </summary>
|
[Route("GetLastTreeRecordByEquipmentID@V1.0")]
|
[HttpGet]
|
public HealthMultiEvaluationTreeRecordLogicDto GetLastTreeRecordByEquipmentID([FromQuery][Required] EquipmentIDInput input)
|
{
|
var equipmentId = input.EquipmentID;
|
|
var resultList = new Yw.Service.HealthResult().GetAll();
|
if (resultList == null || resultList.Count < 1)
|
{
|
throw Oops.Oh(ErrorCodes.V001, "评价状态", "未配置评价状态");
|
}
|
|
#region 获取父级及自身设备
|
|
var serviceEquipment = new Service.Equipment();
|
var allEquipmentList = serviceEquipment.GetParentAndSelfByID(equipmentId);
|
if (allEquipmentList == null || allEquipmentList.Count < 1)
|
{
|
throw Oops.Oh(ErrorCodes.D001, $"EquipmentID:{equipmentId}");
|
}
|
var currentEquipment = allEquipmentList.Find(x => x.ID == equipmentId);
|
if (currentEquipment == null)
|
{
|
return default;
|
}
|
|
#endregion
|
|
#region 获取综合模型绑定
|
|
Model.HealthMultiEvaluationModelBinding currentBinding = null;
|
var serviceModelBinding = new Service.HealthMultiEvaluationModelBinding();
|
allEquipmentList.Reverse();
|
foreach (var equipment in allEquipmentList)
|
{
|
currentBinding = serviceModelBinding.GetValidByEquipmentID(equipment.ID);
|
if (currentBinding != null)
|
{
|
break;
|
}
|
}
|
if (currentBinding == null)
|
{
|
return default;
|
}
|
|
#endregion
|
|
#region 获取所有综合模型
|
|
var serviceMultiModel = new Service.HealthMultiEvaluationModel();
|
var allMultiModelList = serviceMultiModel.GetChildAndSelfByID(currentBinding.ModelID);
|
if (allMultiModelList == null || allMultiModelList.Count < 1)
|
{
|
return default;
|
}
|
|
#endregion
|
|
#region 获取综合评价模型记录
|
|
var allMultiModelIds = allMultiModelList.Select(x => x.ID).Distinct().ToList();
|
var serviceMultiRecord = new Service.HealthMultiEvaluationRecord();
|
var allMultiRecordList = serviceMultiRecord.GetLastRecord(currentBinding.ID, allMultiModelIds);
|
if (allMultiRecordList == null || allMultiRecordList.Count < 1)
|
{
|
return default;
|
}
|
var currentRecord = allMultiRecordList.Find(x => x.EvaluateEquipmentID == equipmentId);
|
if (currentRecord == null)
|
{
|
return default;
|
}
|
var currentModel = allMultiModelList.Find(x => x.ID == currentRecord.ModelID);
|
if (currentModel == null)
|
{
|
return default;
|
}
|
|
#endregion
|
|
#region 获取当前设备对应的所有模型
|
|
allMultiModelList = serviceMultiModel.GetChildAndSelfByID(currentModel.ID);
|
if (allMultiModelList == null || allMultiModelList.Count < 1)
|
{
|
return default;
|
}
|
|
#endregion
|
|
#region 获取所有评价项
|
|
allMultiModelIds = allMultiModelList.Select(x => x.ID).Distinct().ToList();
|
var serviceMultiItem = new Service.HealthMultiEvaluationModelItem();
|
var allMultiItemList = serviceMultiItem.GetByModelIds(allMultiModelIds);
|
if (allMultiItemList == null)
|
{
|
allMultiItemList = new List<Model.HealthMultiEvaluationModelItem>();
|
}
|
|
#endregion
|
|
#region 获取所有评价项记录
|
|
var allItemIds = allMultiItemList.Select(x => x.ID).Distinct().ToList();
|
var serviceMultiItemRecord = new Service.HealthMultiItemEvaluationRecord();
|
var allItemRecordList = serviceMultiItemRecord.GetLastRecord(currentBinding.ID, allItemIds);
|
if (allItemRecordList == null)
|
{
|
allItemRecordList = new List<Model.HealthMultiItemEvaluationRecord>();
|
}
|
|
#endregion
|
|
//记录树
|
var vmTree = new HealthMultiEvaluationTreeRecordLogicDto(currentModel, currentRecord, currentEquipment, resultList);
|
|
|
var serviceSignal = new Service.Signal();
|
var serviceMonitor = new Service.MonitorPoint();
|
var serviceQuotaModel = new Service.HealthQuotaEvaluationModel();
|
var vmTempList = new List<HealthMultiEvaluationTreeRecordLogicDto>();
|
allMultiModelList = allMultiModelList.Where(x => x.ParentIds.Contains(currentModel.ID)).ToList();
|
foreach (var multiModel in allMultiModelList)
|
{
|
var multiModelRecord = allMultiRecordList.Find(x => x.ModelID == multiModel.ID);
|
var equipment = serviceEquipment.GetByID(multiModelRecord.EvaluateEquipmentID);
|
var vm = new HealthMultiEvaluationTreeRecordLogicDto(multiModel, multiModelRecord, equipment, resultList);
|
var items = allMultiItemList.Where(x => x.ModelID == multiModel.ID).ToList();
|
if (items != null && items.Count > 0)
|
{
|
foreach (var item in items)
|
{
|
var itemRecord = allItemRecordList.Find(x => x.ItemID == item.ID);
|
var signal = serviceSignal.GetByID(itemRecord.EvaluateSignalID);
|
Model.MonitorPointExSignalList monitor = null;
|
if (signal != null)
|
{
|
monitor = serviceMonitor.GetExSignalListByID(signal.MonitorPointID);
|
}
|
var quotaModel = serviceQuotaModel.GetByID(itemRecord.EvaluateModelID);
|
var vmItem = new HealthMultiEvaluationTreeRecordLogicDto(item, itemRecord, signal, monitor, quotaModel, resultList);
|
vm.Children.Add(vmItem);
|
}
|
}
|
var vmParent = vmTempList.Find(x => x.Id == vm.ParentId);
|
if (vmParent == null)
|
{
|
if (vm.ParentId == vmTree.Id)
|
{
|
vmTree.Children.Add(vm);
|
}
|
}
|
else
|
{
|
vmParent.Children.Add(vm);
|
}
|
vmTempList.Add(vm);
|
}
|
return vmTree;
|
}
|
|
/// <summary>
|
/// 获取评价树列表
|
/// </summary>
|
[Route("GetEvaluateTreeRecord@V1.0")]
|
[HttpGet]
|
public HealthMultiEvaluationTreeRecordLogicDto GetEvaluateTreeRecord([FromQuery][Required] QueryHealthMultiEvaluationTreeRecordLogicInput input)
|
{
|
var bindingId = input.BindingID;
|
var modelId = input.ModelID;
|
var evaluateTime = input.EvaluateTime;
|
|
#region 获取评价状态
|
|
var resultList = new Service.HealthResult().GetAll();
|
if (resultList == null || resultList.Count < 1)
|
{
|
throw Oops.Oh(ErrorCodes.V001, "Result", "未配置评价状态");
|
}
|
|
#endregion
|
|
#region 获取所有评价记录
|
|
var serviceMultiRecord = new Service.HealthMultiEvaluationRecord();
|
var allMultiRecordList = serviceMultiRecord.GetByBindingIDOfTime(bindingId, evaluateTime);
|
if (allMultiRecordList == null || allMultiRecordList.Count < 1)
|
{
|
return default;
|
}
|
|
#endregion
|
|
#region 获取所有评价项记录
|
|
var serviceItemRecord = new Service.HealthMultiItemEvaluationRecord();
|
var allItemRecordList = new Service.HealthMultiItemEvaluationRecord().GetByBindingIDOfTime(bindingId, evaluateTime);
|
if (allItemRecordList == null)
|
{
|
allItemRecordList = new List<Model.HealthMultiItemEvaluationRecord>();
|
}
|
|
#endregion
|
|
#region 获取所有模型
|
|
var serviceMultiModel = new Service.HealthMultiEvaluationModel();
|
var allModelList = serviceMultiModel.GetChildAndSelfByID(modelId);
|
if (allModelList == null || allModelList.Count < 1)
|
{
|
throw Oops.Oh(ErrorCodes.D001, $"ModelID:{modelId}");
|
}
|
var allModelIds = allModelList.Select(x => x.ID).Distinct().ToList();
|
|
#endregion
|
|
#region 获取所有评价项
|
|
var serviceMultiItem = new Service.HealthMultiEvaluationModelItem();
|
var allItemList = serviceMultiItem.GetByModelIds(allModelIds);
|
if (allItemList == null)
|
{
|
allItemList = new List<Model.HealthMultiEvaluationModelItem>();
|
}
|
|
#endregion
|
|
HealthMultiEvaluationTreeRecordLogicDto vm = null;
|
var tempList = new List<HealthMultiEvaluationTreeRecordLogicDto>();
|
var serviceEquipment = new Service.Equipment();
|
var serviceSignal = new Service.Signal();
|
var serviceMonitor = new Service.MonitorPoint();
|
var serviceQuotaModel = new Service.HealthQuotaEvaluationModel();
|
foreach (var model in allModelList)
|
{
|
var record = allMultiRecordList.Find(x => x.ModelID == model.ID);
|
if (record == null)
|
{
|
continue;
|
}
|
var equipment = serviceEquipment.GetByID(record.EvaluateEquipmentID);
|
var treeRecord = new HealthMultiEvaluationTreeRecordLogicDto(model, record, equipment, resultList);
|
var parentTreeRecord = tempList.Find(x => x.Id == treeRecord.ParentId);
|
if (parentTreeRecord == null)
|
{
|
if (model.ID == modelId)
|
{
|
vm = treeRecord;
|
}
|
}
|
else
|
{
|
parentTreeRecord.Children.Add(treeRecord);
|
}
|
tempList.Add(treeRecord);
|
var itemList = allItemList.Where(x => x.ModelID == model.ID).ToList();
|
foreach (var item in itemList)
|
{
|
var itemRecord = allItemRecordList.Find(x => x.ItemID == item.ID);
|
if (itemRecord == null)
|
{
|
continue;
|
}
|
Yw.Model.Signal signal = serviceSignal.GetByID(itemRecord.EvaluateSignalID);
|
Yw.Model.MonitorPointExSignalList monitor = null;
|
if (signal != null)
|
{
|
monitor = serviceMonitor.GetExSignalListByID(signal.MonitorPointID);
|
}
|
Model.HealthQuotaEvaluationModel quotaModel = serviceQuotaModel.GetByID(itemRecord.EvaluateModelID);
|
var vmItem = new HealthMultiEvaluationTreeRecordLogicDto(item, itemRecord, signal, monitor, quotaModel, resultList);
|
treeRecord.Children.Add(vmItem);
|
}
|
}
|
|
|
return vm;
|
}
|
|
|
|
|
|
}
|
}
|