namespace HStation.CAL.LocalClient { /// /// /// public class XhsPhartDiagramExtensions : IXhsPhartDiagramExtensions { private readonly HStation.Service.XhsPhartDiagram _service = new(); #region Query /// /// 获取所有 /// public async Task> GetAll() { return await Task.Factory.StartNew(() => { var list = _service.GetAll(); if (list == null || list.Count < 1) { return default; } var all_graph_list = new Service.XhsPhartGraph().GetAll(); var vm_list = new List(); foreach (var item in list) { var graph_list = all_graph_list?.Where(x => x.DiagramID == item.ID).ToList(); var vm = new XhsPhartDiagramExGraphListDto(item, graph_list); vm_list.Add(vm); } return vm_list; }); } /// /// 通过 ID 获取 /// public async Task GetByID(long ID) { return await Task.Factory.StartNew(() => { var model = _service.GetByID(ID); if (model == null) { return default; } var graph_list = new Service.XhsPhartGraph().GetByDiagramID(model.ID); var vm = new XhsPhartDiagramExGraphListDto(model, graph_list); return vm; }); } /// /// 通过 ID 获取 /// public async Task> GetByIds(List Ids) { return await Task.Factory.StartNew(() => { var list = _service.GetByIds(Ids); if (list == null || list.Count < 1) { return default; } var all_graph_list = new Service.XhsPhartGraph().GetByDiagramIds(Ids); var vm_list = new List(); foreach (var item in list) { var graphList = all_graph_list?.Where(x => x.DiagramID == item.ID).ToList(); var vm = new XhsPhartDiagramExGraphListDto(item, graphList); vm_list.Add(vm); } return vm_list; }); } #endregion #region Insert /// /// 添加一条 /// public async Task Insert(AddXhsPhartDiagramExGraphListInput input) { return await Task.Factory.StartNew(() => { if (!string.IsNullOrEmpty(input.TagName)) { if (_service.IsExistTagName(input.TagName)) { throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.V001, $"TagName:{input.TagName}", "标记已存在"); } } var model = input.Adapt(); var graphList = input.GraphList?.Select(x => x.Adapt()).ToList(); var id = _service.InsertEx(model, graphList); return id; }); } /// /// 批量插入 /// public async Task Inserts(List inputList) { return await Task.Factory.StartNew(() => { return false; }); } /// /// 大批量插入 /// public async Task BulkInserts(List inputList) { return await Task.Factory.StartNew(() => { return false; }); } #endregion #region Update /// /// 更新一条 /// public async Task Update(UpdateXhsPhartDiagramExGraphListInput input) { return await Task.Factory.StartNew(() => { var model = _service.GetByID(input.ID); if (model == null) { throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D001, $"ID:{input.ID} 数据不存在"); } var model_rhs = new Model.XhsPhartDiagram(model); input.Adapt(model_rhs); List ex_rhs_list = null; if (input.GraphList != null && input.GraphList.Count > 0) { var service_ex = new Service.XhsPhartGraph(); ex_rhs_list = new List(); foreach (var graph in input.GraphList) { var ex_model = service_ex.GetByID(graph.ID); if (ex_model == null) { throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D001, $"GraphID:{graph.ID} 数据不存在"); } if (graph.DiagramID != input.ID) { throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.V001, $"Graph-DiagramID:{graph.DiagramID} 数据不正确"); } var ex_rhs = new Model.XhsPhartGraph(ex_model); graph.Adapt(ex_rhs); ex_rhs_list.Add(ex_rhs); } } var bol = _service.UpdateEx(model_rhs, ex_rhs_list); return bol; }); } /// /// 批量更新 /// public async Task Updates(List inputList) { return await Task.Factory.StartNew(() => { return false; }); } /// /// 大批量更新 /// public async Task BulkUpdates(List inputList) { return await Task.Factory.StartNew(() => { return false; }); } #endregion #region Delete /// /// 通过 ID 删除(同时删除图形) /// public async Task DeleteByID(long ID) { return await Task.Factory.StartNew(() => { var bol = _service.DeleteExByID(ID, out string msg); if (!bol) { throw YOops.Oh(eResultCode.Alert, InternalErrorCodes.D999, msg); } return true; }); } /// /// 通过 Ids 删除 /// public async Task DeleteByIds(List Ids) { return await Task.Factory.StartNew(() => { return false; }); } /// /// 删除全部 /// /// public async Task DeleteAll() { return await Task.Factory.StartNew(() => { return false; }); } #endregion } }