Former-commit-id: 6f12ed5e451abd1e568c33be4acf6724d662d343
Former-commit-id: 84c120dce47a341f7e672a77ee00211463e8be4c
1.0
wanggang 5 years ago
parent e88c48f8ba
commit d58b91f828

@ -5,26 +5,13 @@ using System.ComponentModel.DataAnnotations;
namespace IoT.Shared.Application.Models
{
[Display(Name = "设备")]
public class EditDeviceModel : EditModel
public class EditIoTDeviceModel : EditModel
{
[ReadOnlyForEdit]
[Display(Name = "产品分类")]
[SelectList(nameof(ProductId), "GetIoTProduct")]
public Guid? ProductCategoryId { get; set; }
[ReadOnlyForEdit]
[Display(Name = "产品")]
[SelectList]
public Guid? ProductId { get; set; }
[Display(Name = "机构")]
[SelectList(nameof(BuildingId), "GetBuilding")]
public Guid? OrganId { get; set; }
[Display(Name = "建筑")]
[SelectList(nameof(NodeId), "GetIoTGateway")]
public Guid? BuildingId { get; set; }
[ReadOnlyForEdit]
[SelectList]
[Display(Name = "网关")]

@ -5,7 +5,7 @@ using System.ComponentModel.DataAnnotations;
namespace IoT.Shared.Application.Models
{
[Display(Name = "参数")]
public class EditParameterModel : EditModel
public class EditIoTParameterModel : EditModel
{
[Display(Name = "产品")]
[SelectList(nameof(ApiId),"GetIoTApi")]

@ -4,7 +4,7 @@ using System.ComponentModel.DataAnnotations;
namespace IoT.Shared.Application.Models
{
public class SearchDeviceMode : PagedListModel<EditDeviceModel>
public class SearchDeviceMode : PagedListModel<EditIoTDeviceModel>
{
[SelectList]
[Display(Name = "网关")]

@ -17,7 +17,7 @@ namespace IoT.Shared.Areas.IoTCenter.Controlls
[Route("IoTCenter/[controller]/[action]")]
[Area("IoTCenter")]
[ControllerScope(ControllerScopeType.Platform)]
public class IoTDeviceController : CrudController<IoTDevice, EditDeviceModel>
public class IoTDeviceController : CrudController<IoTDevice, EditIoTDeviceModel>
{
private readonly AjaxBaseController _ajax;
@ -31,7 +31,7 @@ namespace IoT.Shared.Areas.IoTCenter.Controlls
return query.Include(o => o.Product).Include(o => o.Node);
}
public override IQueryable<IoTDevice> Query(PagedListModel<EditDeviceModel> model, IQueryable<IoTDevice> query)
public override IQueryable<IoTDevice> Query(PagedListModel<EditIoTDeviceModel> model, IQueryable<IoTDevice> query)
{
return query
.WhereIf(model.Query.NodeId.HasValue, o => o.NodeId == model.Query.NodeId.Value)
@ -50,13 +50,13 @@ namespace IoT.Shared.Areas.IoTCenter.Controlls
.WhereIf(model.Query.Disabled.HasValue, o => o.Disabled == model.Query.Disabled.Value);
}
public override void ToDisplayModel(IoTDevice entity, EditDeviceModel model)
public override void ToDisplayModel(IoTDevice entity, EditIoTDeviceModel model)
{
ViewData.Add(model.NodeId, entity?.Node?.Name);
ViewData.Add(model.ProductId, entity?.Product?.Name);
}
public override void ToEditModel(IoTDevice entity, EditDeviceModel model)
public override void ToEditModel(IoTDevice entity, EditIoTDeviceModel model)
{
ViewData.SelectList(o => model.NodeId, () => this._ajax.GetIoTGateway(model.NodeId).SelectList());
ViewData.SelectList(o => model.ProductId, () => this._ajax.GetIoTProduct(model.ProductId).SelectList());

@ -17,7 +17,7 @@ namespace IoT.Shared.Areas.IoTCenter.Controlls
[Route("IoTCenter/[controller]/[action]")]
[Area("IoTCenter")]
[ControllerScope(ControllerScopeType.Platform)]
public class IoTParameterController : CrudController<IoTParameter, EditParameterModel>
public class IoTParameterController : CrudController<IoTParameter, EditIoTParameterModel>
{
private readonly AjaxBaseController _ajax;
@ -31,7 +31,7 @@ namespace IoT.Shared.Areas.IoTCenter.Controlls
return query.Include(o => o.Api).ThenInclude(o => o.Product);
}
public override IQueryable<IoTParameter> Query(PagedListModel<EditParameterModel> model, IQueryable<IoTParameter> query)
public override IQueryable<IoTParameter> Query(PagedListModel<EditIoTParameterModel> model, IQueryable<IoTParameter> query)
{
return base.Query(model, query)
.WhereIf(model.Query.Required.HasValue, o => o.Required == model.Query.Required.Value)
@ -44,14 +44,14 @@ namespace IoT.Shared.Areas.IoTCenter.Controlls
.WhereIf(!string.IsNullOrEmpty(model.Query.Maxinum), o => o.Maxinum == model.Query.Maxinum);
}
public override void ToDisplayModel(IoTParameter entity, EditParameterModel model)
public override void ToDisplayModel(IoTParameter entity, EditIoTParameterModel model)
{
model.ProductId = entity?.Api.ProductId;
ViewData.Add(model.ProductId, entity?.Api?.Product?.Name);
ViewData.Add(model.ApiId, entity?.Api?.Name);
}
public override void ToEditModel(IoTParameter entity, EditParameterModel model)
public override void ToEditModel(IoTParameter entity, EditIoTParameterModel model)
{
model.ProductId = entity?.Api?.ProductId;
ViewData.SelectList(o => model.ProductId, () => this._ajax.GetIoTProduct(model.ProductId).SelectList());

@ -1587,7 +1587,7 @@ namespace IoTNode.DeviceServices.FBee
{
try
{
var model = device.To<EditDeviceModel>();
var model = device.To<EditIoTDeviceModel>();
deviceRepo.Delete(device);
deviceRepo.SaveChanges();
}

@ -271,15 +271,15 @@ namespace IoT.Shared.Services
}
else if (method == $"Edit{nameof(IoTDevice)}")//服务端编辑设备
{
var model = message.FromJson<EditDeviceModel>();
var model = message.FromJson<EditIoTDeviceModel>();
//if node category not had,get category from serever by http sync
dataService.Edit<IoTDevice, EditDeviceModel>(model);
dataService.Edit<IoTDevice, EditIoTDeviceModel>(model);
this.ClientToServer(method, model, null);
}
else if (method == $"Delete{nameof(IoTDevice)}")//服务端删除设备
{
var model = message.FromJson<EditDeviceModel>();
dataService.Delete<IoTDevice, EditDeviceModel>(model);
var model = message.FromJson<EditIoTDeviceModel>();
dataService.Delete<IoTDevice, EditIoTDeviceModel>(model);
this.ClientToServer(method, model, null);
}
else if (method == $"Edit{nameof(IoTData)}")//服务端编辑数据

@ -0,0 +1,25 @@
using IoT.Shared.Application.Models;
using System;
using System.ComponentModel.DataAnnotations;
namespace Platform.Application.Models.IoTCenter
{
[Display(Name = "网关")]
public class EditPlatformIoTDeviceModel : EditIoTDeviceModel
{
[Display(Name = "机构")]
[SelectList(nameof(BuildingId), "GetBuilding")]
[ReadOnlyForEdit]
public Guid? OrganId { get; set; }
[Display(Name = "建筑")]
[SelectList(nameof(NodeId), "GetIoTGateway")]
[ReadOnlyForEdit]
public Guid? BuildingId { get; set; }
[Display(Name = "分类")]
[ReadOnlyForEdit]
[SelectList(nameof(ProductId), "GetIoTProductByCategory")]
public Guid? CategoryId { get; set; }
}
}

@ -0,0 +1,15 @@
using System;
using IoT.Shared.Application.Models;
using System.ComponentModel.DataAnnotations;
namespace Platform.Application.Models.IoTCenter
{
[Display(Name = "参数")]
public class EditPlatformIoTParameterModel : EditIoTParameterModel
{
[Display(Name = "分类")]
[ReadOnlyForEdit]
[SelectList(nameof(ProductId),"GetIoTProductByCategory")]
public Guid? CategoryId { get; set; }
}
}

@ -7,6 +7,7 @@ using IoT.Shared.Application.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Platform.Application.Models.IoTCenter;
using Platform.Areas.IoTCenter.Controllers;
using System;
using System.Linq;
@ -18,27 +19,39 @@ namespace IoT.Shared.Areas.IoTCenter.Controlls
[Route("IoTCenter/[controller]/[action]")]
[Area("IoTCenter")]
[ControllerScope(ControllerScopeType.Platform)]
public class IoTDeviceController : IoTSharedController<IoTDevice, EditDeviceModel>
public class IoTDeviceController : IoTSharedController<IoTDevice, EditPlatformIoTDeviceModel>
{
private readonly AjaxController _ajax;
private readonly IRepository<IoTProductCategory> _categoryRepo;
private readonly IRepository<Organ> _organRepo;
private readonly IRepository<Building> _buildingRepo;
public IoTDeviceController(IRepository<IoTDevice> repo, AjaxController ajax, IServiceProvider sp) : base(repo, sp)
public IoTDeviceController(IRepository<IoTDevice> repo,
AjaxController ajax,
IRepository<IoTProductCategory> categoryRepo,
IRepository<Organ> organRepo,
IRepository<Building> buildingRepo,
IServiceProvider sp) : base(repo, sp)
{
this._ajax = ajax;
this._categoryRepo = categoryRepo;
this._organRepo = organRepo;
this._buildingRepo = buildingRepo;
}
public override IQueryable<IoTDevice> Include(IQueryable<IoTDevice> query)
{
return query.Include(o => o.Product)
return query.Include(o => o.Product).ThenInclude(o=>o.Category)
.Include(o => o.Node).ThenInclude(o=>o.Building).ThenInclude(o=>o.Organ);
}
public override IQueryable<IoTDevice> Query(PagedListModel<EditDeviceModel> model, IQueryable<IoTDevice> query)
public override IQueryable<IoTDevice> Query(PagedListModel<EditPlatformIoTDeviceModel> model, IQueryable<IoTDevice> query)
{
return query
.WhereIf(model.Query.OrganId.HasValue, o => o.Node.Building.OrganId == model.Query.OrganId.Value)
.WhereIf(model.Query.BuildingId.HasValue, o => o.Node.BuildingId == model.Query.BuildingId.Value)
.WhereIf(model.Query.NodeId.HasValue, o => o.NodeId == model.Query.NodeId.Value)
.WhereIf(model.Query.CategoryId.HasValue, o => o.Product.CategoryId == model.Query.CategoryId.Value)
.WhereIf(model.Query.ProductId.HasValue, o => o.ProductId == model.Query.ProductId.Value)
.WhereIf(!string.IsNullOrEmpty(model.Query.Name), o => o.Name.Contains(model.Query.Name))
.WhereIf(!string.IsNullOrEmpty(model.Query.DisplayName), o => o.DisplayName.Contains(model.Query.DisplayName))
@ -54,21 +67,69 @@ namespace IoT.Shared.Areas.IoTCenter.Controlls
.WhereIf(model.Query.Disabled.HasValue, o => o.Disabled == model.Query.Disabled.Value);
}
public override void ToDisplayModel(IoTDevice entity, EditDeviceModel model)
public override void ToDisplayModel(IoTDevice entity, EditPlatformIoTDeviceModel model)
{
ViewData.Add(model.NodeId, entity?.Node?.Name);
ViewData.Add(model.ProductId, entity?.Product?.Name);
if(entity!=null)
{
model.BuildingId = entity.Node.BuildingId;
model.OrganId = entity.Node.Building.OrganId;
model.CategoryId = entity.Product.CategoryId;
}
if(model.BuildingId.HasValue)
{
var name = this._buildingRepo.ReadOnlyTable()
.Where(o => o.ParentId != null)
.Where(o => o.Left <= entity.Node.Building.Left && o.Right >= entity.Node.Building.Right)
.ToList()
.ToTree()
.FirstOrDefault(o => o.Id == model.BuildingId.Value)?.GetDisplayName();
ViewData.Add(model.BuildingId.Value, name);
}
if (model.OrganId.HasValue)
{
var name = this._organRepo.ReadOnlyTable()
.Where(o => o.ParentId != null)
.Where(o => o.Left <= entity.Node.Building.Organ.Left && o.Right >= entity.Node.Building.Organ.Right)
.ToList()
.ToTree()
.FirstOrDefault(o => o.Id == entity.Node.Building.OrganId)?.GetDisplayName();
ViewData.Add(model.OrganId, name);
}
if (model.CategoryId.HasValue)
{
var name = this._categoryRepo.ReadOnlyTable()
.Where(o => o.ParentId != null)
.Where(o => o.Left <= entity.Product.Category.Left && o.Right >= entity.Product.Category.Right)
.ToList()
.ToTree()
.FirstOrDefault(o => o.Id == model.CategoryId.Value)?.GetDisplayName();
ViewData.Add(model.CategoryId, name);
}
if (model.ProductId.HasValue)
{
ViewData.Add(model.ProductId, entity.Product.Name);
}
if(model.NodeId.HasValue)
{
ViewData.Add(model.NodeId, entity.Node.Name);
}
}
public override void ToEditModel(IoTDevice entity, EditDeviceModel model)
public override void ToEditModel(IoTDevice entity, EditPlatformIoTDeviceModel model)
{
ViewData.SelectList(o => model.ProductCategoryId, () => this._ajax.GetIoTProductCategory(model.ProductCategoryId).SelectList());
ViewData.SelectList(o => model.ProductId, () => this._ajax.GetIoTProduct(model.ProductCategoryId).SelectList());
//ViewData.SelectList(o => model.NodeId, () => this._ajax.GetIoTGateway(model.NodeId).SelectList());
//ViewData.SelectList(o => model.ProductId, () => this._ajax.GetIoTProduct(model.ProductId).SelectList());
if (entity != null)
{
model.BuildingId = entity.Node.BuildingId;
model.OrganId = entity.Node.Building.OrganId;
model.CategoryId = entity.Product.CategoryId;
}
ViewData.SelectList(o => model.OrganId, () => this._ajax.GetOrgan(model.OrganId).SelectList());
ViewData.SelectList(o => model.BuildingId, () => this._ajax.GetBuilding(model.OrganId.Value, model.BuildingId).SelectList(), model.OrganId.HasValue);
ViewData.SelectList(o => model.CategoryId, () => this._ajax.GetIoTProductCategory(model.CategoryId).SelectList());
ViewData.SelectList(o => model.ProductId, () => this._ajax.GetIoTProductByCategory(model.CategoryId.Value, model.ProductId).SelectList(), model.CategoryId.HasValue);
}
public override string GetNodeNumber(EditDeviceModel model)
public override string GetNodeNumber(EditPlatformIoTDeviceModel model)
{
return this.Repo.ReadOnlyTable().Where(o => o.NodeId == model.NodeId).Select(o => o.Node.Number).FirstOrDefault();
}

@ -27,7 +27,8 @@ namespace IoT.Shared.Areas.IoTCenter.Controlls
private readonly AjaxController _ajax;
public IoTGatewayController(IRepository<IoTGateway> repo,
IServiceProvider sp, IRepository<Organ> organRepo,
IServiceProvider sp,
IRepository<Organ> organRepo,
IRepository<Building> buildingRepo,
AjaxController ajax) : base(repo, sp)
{
@ -55,7 +56,10 @@ namespace IoT.Shared.Areas.IoTCenter.Controlls
public override void ToDisplayModel(IoTGateway entity, EditPlatformIoTGatewayModel model)
{
model.OrganId = entity.Building?.OrganId;
if(entity!=null)
{
model.OrganId = entity.Building.OrganId;
}
if (model.BuildingId.HasValue)
{
var name = this._buildingRepo.ReadOnlyTable()
@ -80,12 +84,12 @@ namespace IoT.Shared.Areas.IoTCenter.Controlls
public override void ToEditModel(IoTGateway entity, EditPlatformIoTGatewayModel model)
{
model.OrganId = entity?.Building?.OrganId;
ViewData.SelectList(o => model.OrganId, () => this._ajax.GetOrgan(model.OrganId).SelectList());
if (model.OrganId.HasValue)
if(entity!=null)
{
ViewData.SelectList(o => model.BuildingId, () => this._ajax.GetBuilding(model.OrganId.Value, model.BuildingId).SelectList());
model.OrganId = entity.Building.OrganId;
}
ViewData.SelectList(o => model.OrganId, () => this._ajax.GetOrgan(model.OrganId).SelectList());
ViewData.SelectList(o => model.BuildingId, () => this._ajax.GetBuilding(model.OrganId.Value, model.BuildingId).SelectList(),model.OrganId.HasValue);
}
public override void ToEntity(EditPlatformIoTGatewayModel model, IoTGateway entity)
{

@ -7,6 +7,8 @@ using IoT.Shared.Application.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Platform.Application.Models.IoTCenter;
using Platform.Areas.IoTCenter.Controllers;
using System;
using System.Linq;
@ -17,26 +19,29 @@ namespace IoT.Shared.Areas.IoTCenter.Controlls
[Route("IoTCenter/[controller]/[action]")]
[Area("IoTCenter")]
[ControllerScope(ControllerScopeType.Platform)]
public class IoTParameterController : CrudController<IoTParameter, EditParameterModel>
public class IoTParameterController : CrudController<IoTParameter, EditPlatformIoTParameterModel>
{
private readonly AjaxBaseController _ajax;
private readonly AjaxController _ajax;
private readonly IRepository<IoTProductCategory> _categoryRepo;
public IoTParameterController(IRepository<IoTParameter> repo, AjaxBaseController ajax) : base(repo)
public IoTParameterController(IRepository<IoTParameter> repo, AjaxController ajax, IRepository<IoTProductCategory> categoryRepo) : base(repo)
{
this._ajax = ajax;
this._categoryRepo = categoryRepo;
}
public override IQueryable<IoTParameter> Include(IQueryable<IoTParameter> query)
{
return query.Include(o => o.Api).ThenInclude(o => o.Product);
return query.Include(o => o.Api).ThenInclude(o => o.Product).ThenInclude(o => o.Category);
}
public override IQueryable<IoTParameter> Query(PagedListModel<EditParameterModel> model, IQueryable<IoTParameter> query)
public override IQueryable<IoTParameter> Query(PagedListModel<EditPlatformIoTParameterModel> model, IQueryable<IoTParameter> query)
{
return base.Query(model, query)
.WhereIf(model.Query.Required.HasValue, o => o.Required == model.Query.Required.Value)
.WhereIf(model.Query.CategoryId.HasValue, o => o.Api.Product.CategoryId == model.Query.CategoryId.Value)
.WhereIf(model.Query.ProductId.HasValue, o => o.Api.ProductId == model.Query.ProductId.Value)
.WhereIf(model.Query.ApiId.HasValue, o => o.ApiId == model.Query.ApiId.Value)
.WhereIf(model.Query.Required.HasValue, o => o.Required == model.Query.Required.Value)
.WhereIf(!string.IsNullOrEmpty(model.Query.Type), o => o.Type.Contains(model.Query.Type))
.WhereIf(!string.IsNullOrEmpty(model.Query.Name), o => o.Name.Contains(model.Query.Name))
.WhereIf(!string.IsNullOrEmpty(model.Query.Description), o => o.Description.Contains(model.Query.Description))
@ -44,21 +49,40 @@ namespace IoT.Shared.Areas.IoTCenter.Controlls
.WhereIf(!string.IsNullOrEmpty(model.Query.Maxinum), o => o.Maxinum == model.Query.Maxinum);
}
public override void ToDisplayModel(IoTParameter entity, EditParameterModel model)
public override void ToDisplayModel(IoTParameter entity, EditPlatformIoTParameterModel model)
{
model.ProductId = entity?.Api.ProductId;
ViewData.Add(model.ProductId, entity?.Api?.Product?.Name);
ViewData.Add(model.ApiId, entity?.Api?.Name);
if (entity != null)
{
model.ProductId = entity.Api.ProductId;
model.CategoryId = entity.Api.Product.CategoryId;
ViewData.Add(model.ApiId, entity.Api.Name);
}
if (model.CategoryId.HasValue)
{
var name = this._categoryRepo.ReadOnlyTable()
.Where(o => o.ParentId != null)
.Where(o => o.Left <= entity.Api.Product.Category.Left && o.Right >= entity.Api.Product.Category.Right)
.ToList()
.ToTree()
.FirstOrDefault(o => o.Id == model.CategoryId.Value)?.GetDisplayName();
ViewData.Add(model.CategoryId, name);
}
if(model.ProductId.HasValue)
{
ViewData.Add(model.ProductId, entity.Api.Product.Name);
}
}
public override void ToEditModel(IoTParameter entity, EditParameterModel model)
public override void ToEditModel(IoTParameter entity, EditPlatformIoTParameterModel model)
{
model.ProductId = entity?.Api?.ProductId;
ViewData.SelectList(o => model.ProductId, () => this._ajax.GetIoTProduct(model.ProductId).SelectList());
if(model.ProductId.HasValue)
if(entity!=null)
{
ViewData.SelectList(o => model.ApiId, () => this._ajax.GetIoTApi(model.ProductId.Value, model.ApiId).SelectList());
model.ProductId = entity.Api.ProductId;
model.CategoryId = entity.Api.Product.CategoryId;
}
ViewData.SelectList(o => model.CategoryId, () => this._ajax.GetIoTProductCategory(model.CategoryId).SelectList());
ViewData.SelectList(o => model.ProductId, () => this._ajax.GetIoTProductByCategory(model.CategoryId.Value, model.ProductId).SelectList(), model.CategoryId.HasValue);
ViewData.SelectList(o => model.ApiId, () => this._ajax.GetIoTApi(model.ProductId.Value, model.ApiId).SelectList(), model.ProductId.HasValue);
}
}
}

@ -214,13 +214,13 @@ namespace Platform.Services
}
else if (method == $"Edit{nameof(IoTDevice)}")//编辑设备返回
{
var model = message.FromJson<EditDeviceModel>();
this._dataService.Edit<IoTDevice, EditDeviceModel>(model);
var model = message.FromJson<EditIoTDeviceModel>();
this._dataService.Edit<IoTDevice, EditIoTDeviceModel>(model);
}
else if (method == $"Delete{nameof(IoTDevice)}")//删除设备返回
{
var model = message.FromJson<EditDeviceModel>();
this._dataService.Delete<IoTDevice, EditDeviceModel>(model);
var model = message.FromJson<EditIoTDeviceModel>();
this._dataService.Delete<IoTDevice, EditIoTDeviceModel>(model);
}
else if (method == $"Edit{nameof(IoTData)}")//编辑数据或设备上报数据
{

Loading…
Cancel
Save