using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using WalkingTec.Mvvm.Core; using WalkingTec.Mvvm.Core.Extensions; using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations; using IoTGateway.Model; using Microsoft.Extensions.Primitives; using NPOI.OpenXmlFormats.Dml.Chart; namespace IoTGateway.ViewModel.BasicData.DeviceVMs { public partial class DeviceListVM : BasePagedListVM { protected override List InitGridAction() { return new List { this.MakeAction("Device","Copy","设备复制","设备复制", GridActionParameterTypesEnum.SingleId,"BasicData",600).SetIconCls("layui-icon layui-icon-template-1").SetPromptMessage("你确定复制设备,包括配置参数和变量?").SetDialogTitle("复制设备确认").SetHideOnToolBar(true).SetShowInRow(true).SetBindVisiableColName("copy"), this.MakeAction("Device","Attribute","请求属性","请求属性", GridActionParameterTypesEnum.SingleId,"BasicData",600).SetIconCls("layui-icon layui-icon-download-circle").SetPromptMessage("你确定请求客户端属性和共享属性吗?").SetDialogTitle("请求属性确认").SetHideOnToolBar(true).SetShowInRow(true).SetBindVisiableColName("attribute"), this.MakeAction("Device","CreateGroup","创建组","创建组", GridActionParameterTypesEnum.NoId,"BasicData",600).SetIconCls("_wtmicon _wtmicon-zuzhiqunzu").SetDialogTitle("创建组").SetShowInRow(false), this.MakeStandardAction("Device", GridActionStandardTypesEnum.Create, "创建设备","BasicData", dialogWidth: 800,name:"创建设备").SetIconCls("layui-icon layui-icon-senior"), this.MakeStandardAction("Device", GridActionStandardTypesEnum.Edit, Localizer["Sys.Edit"], "BasicData", dialogWidth: 800), this.MakeStandardAction("Device", GridActionStandardTypesEnum.Delete, Localizer["Sys.Delete"], "BasicData", dialogWidth: 800), this.MakeStandardAction("Device", GridActionStandardTypesEnum.Details, Localizer["Sys.Details"], "BasicData", dialogWidth: 800), this.MakeStandardAction("Device", GridActionStandardTypesEnum.BatchEdit, Localizer["Sys.BatchEdit"], "BasicData", dialogWidth: 800), this.MakeStandardAction("Device", GridActionStandardTypesEnum.BatchDelete, Localizer["Sys.BatchDelete"], "BasicData", dialogWidth: 800), //this.MakeStandardAction("Device", GridActionStandardTypesEnum.Import, Localizer["Sys.Import"], "BasicData", dialogWidth: 800), this.MakeStandardAction("Device", GridActionStandardTypesEnum.ExportExcel, Localizer["Sys.Export"], "BasicData"), this.MakeAction("Device","ImportExcel","导入Excel","导入Excel", GridActionParameterTypesEnum.NoId,"BasicData",600).SetIconCls("layui-icon layui-icon-upload-circle").SetDialogTitle("导入Excel模板").SetHideOnToolBar(false).SetShowInRow(false), }; } protected override IEnumerable> InitGridHeader() { return new List>{ this.MakeGridHeader(x => x.DeviceName).SetWidth(150), this.MakeGridHeader(x => x.Index).SetWidth(60), //this.MakeGridHeader(x => x.Description), this.MakeGridHeader(x => x.DriverName_view).SetWidth(150), this.MakeGridHeader(x => x.AutoStart).SetWidth(80), this.MakeGridHeader(x => x.CgUpload).SetWidth(100), this.MakeGridHeader(x => x.EnforcePeriod).SetWidth(110), this.MakeGridHeader(x => x.CmdPeriod).SetWidth(110), this.MakeGridHeader(x => x.DeviceTypeEnum).SetWidth(80), //this.MakeGridHeader(x => x.DeviceName_view), this.MakeGridHeader(x=>"copy").SetHide().SetFormat((a,b)=>{ if(a.DeviceTypeEnum== DeviceTypeEnum.Device) return "true"; return "false"; }), this.MakeGridHeader(x=>"attribute").SetHide().SetFormat((a,b)=>{ if(a.DeviceTypeEnum== DeviceTypeEnum.Device) return "true"; return "false"; }), this.MakeGridHeaderAction(width: 300) }; } public override IOrderedQueryable GetSearchQuery() { var data = DC.Set().AsNoTracking().Where(x => x.DeviceTypeEnum == DeviceTypeEnum.Group).OrderBy(x => x.Index).ThenBy(x => x.DeviceName).ToList(); var dataRet = new List(); int order = 0; foreach (var x in data) { var itemF = new Device_View { ID = x.ID, Index = x.Index, DeviceName = x.DeviceName, Description = x.Description, DeviceTypeEnum = x.DeviceTypeEnum, DriverName_view = x.Driver?.DriverName, ExtraOrder = order }; dataRet.Add(itemF); order++; StringValues Ids = new(); if (FC.ContainsKey("Ids[]")) { Ids = (StringValues)FC["Ids[]"]; } var childrens = DC.Set().AsNoTracking().Where(y => y.ParentId == x.ID).Include(x => x.Driver).OrderBy(x => x.Index).ThenBy(x => x.DeviceName).ToList(); if (Ids.Count != 0) childrens = childrens.Where(x => Ids.Contains(x.ID.ToString())).ToList(); foreach (var y in childrens) { var itemC = new Device_View { ID = y.ID, Index = y.Index, DeviceName = "    " + y.DeviceName, AutoStart = y.AutoStart, CgUpload = y.CgUpload, EnforcePeriod = y.EnforcePeriod, CmdPeriod=y.CmdPeriod, Description = y.Description, DeviceTypeEnum = y.DeviceTypeEnum, DriverName_view = y.Driver?.DriverName, DeviceName_view = itemF.DeviceName, ExtraOrder = order }; dataRet.Add(itemC); } order++; } return dataRet.AsQueryable().OrderBy(x => x.ExtraOrder); } } public class Device_View : Device { [Display(Name = "驱动名")] public String DriverName_view { get; set; } [Display(Name = "父级名")] public String DeviceName_view { get; set; } public int ExtraOrder { get; set; } } }