Former-commit-id: e75256c4ecf111b880fcf517d88faa82b9c710ac
TangShanKaiPing
wanggang 5 years ago
parent 2e5da57423
commit d547a849d7

@ -14,6 +14,13 @@ namespace Application.Domain.Entities
[Required]
public string OrganNumber { get; set; }
[Display(Name = "分类名称")]
public string CategoryName { get; set; }
[Display(Name = "分类编号")]
[Required]
public string CategoryNumber { get; set; }
[Display(Name = "节点名称")]
public string Name { get; set; }

@ -17,12 +17,23 @@ namespace Application.Models
[Required(ErrorMessage = nameof(RequiredAttribute))]
public string OrganNumber { get; set; }
[MaxLength(64, ErrorMessage = "{0}最大长度为{1}")]
[Display(Name = "分类名称")]
public string CategoryName { get; set; }
[MaxLength(64, ErrorMessage = "{0}最大长度为{1}")]
[Display(Name = "分类编号")]
[Required]
public string CategoryNumber { get; set; }
[Display(Name = "节点名称")]
[MaxLength(64, ErrorMessage = "{0}最大长度为{1}")]
[Required(ErrorMessage = nameof(RequiredAttribute))]
public string Name { get; set; }
[Display(Name = "节点编号")]
[ReadOnly(true)]
[MaxLength(64, ErrorMessage = "{0}最大长度为{1}")]
[Required(ErrorMessage = nameof(RequiredAttribute))]
public string Number { get; set; }

@ -15,10 +15,8 @@ using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net.Http;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
@ -86,6 +84,7 @@ namespace IoT.Shared.Services
InitConnection();
}
Connection.StartAsync().Wait();
this._logger.LogDebug($"{_notifyHost} OnConnected");
this.OnConnected();
}
else
@ -102,7 +101,20 @@ namespace IoT.Shared.Services
}
catch (Exception ex)
{
ex.PrintStack();
this._logger.LogError(ex, ex.Message);
}
try
{
var now = DateTime.Now;
if (now.Hour == 0 && now.Minute == 0 && now.Second > 0 && now.Second <= 10)
{
this._logger.LogInformation("upload at 00:00 everyday");
this.OnConnected();
}
}
catch (Exception ex)
{
this._logger.LogError(ex, ex.Message);
}
}
else
@ -193,8 +205,6 @@ namespace IoT.Shared.Services
public void OnConnected()
{
this._logger.LogDebug($"{_notifyHost} OnConnected");
//上传节点
this.UpdateEntityIdList<Node>(null, Methods.UpdateNodeResponse);

@ -10,6 +10,8 @@ namespace IoTCenter.Application.Domain
[Display(Name = "分类名称")]
public string Name { get; set; }
public string Number { get; set; }
[Display(Name = "模板")]
public string Template { get; set; }

@ -4,13 +4,15 @@ using System.ComponentModel.DataAnnotations;
namespace IoTCenter.Application.Domain
{
[Display(Name = "用户")]
[Display(Name = "机构")]
public class Organ : BaseEntity
{
public string Name { get; set; }
public string Number { get; set; }
[Display(Name = "分类图标")]
public string Image { get; set; }
public List<OrganNode> OrganNodes { get; set; } = new List<OrganNode>();
}
}

@ -28,6 +28,8 @@ namespace IoTCenter.Services
public class IoTCenterEventHandler :
IEventHander<EntityInsertedEvent<Organ>>,
IEventHander<EntityUpdatedEvent<Organ>>,
IEventHander<EntityInsertedEvent<NodeCategory>>,
IEventHander<EntityUpdatedEvent<NodeCategory>>,
IEventHander<EntityInsertedEvent<SceneTimer>>,
IEventHander<EntityUpdatedEvent<SceneTimer>>,
IEventHander<EntityDeletedEvent<SceneTimer>>,
@ -55,6 +57,8 @@ namespace IoTCenter.Services
private readonly ISettingService _settingService;
private readonly ILogger<IoTCenterEventHandler> _logger;
private readonly IRepository<Node> _nodeRepo;
private readonly IRepository<NodeCategory> _nodeCategoryRepo;
private readonly IRepository<NodeCategoryNode> _nodeCategoryNodeRepo;
private readonly IRepository<Organ> _organRepo;
private readonly IRepository<OrganNode> _organNodeRepo;
private readonly IRepository<Scene> _sceneRepo;
@ -68,6 +72,8 @@ namespace IoTCenter.Services
ISettingService settingService,
ILogger<IoTCenterEventHandler> logger,
IRepository<Node> nodeRepo,
IRepository<NodeCategory> nodeCategoryRepo,
IRepository<NodeCategoryNode> nodeCategoryNodeRepo,
IRepository<Organ> organRepo,
IRepository<OrganNode> organNodeRepo,
IRepository<Scene> sceneRepo,
@ -81,6 +87,8 @@ namespace IoTCenter.Services
this._settingService = settingService;
this._logger = logger;
this._nodeRepo = nodeRepo;
this._nodeCategoryRepo = nodeCategoryRepo;
this._nodeCategoryNodeRepo = nodeCategoryNodeRepo;
this._organRepo = organRepo;
this._organNodeRepo = organNodeRepo;
this._sceneRepo = sceneRepo;
@ -193,6 +201,22 @@ namespace IoTCenter.Services
#endregion organ
#region nodeCategory
public void Handle(EntityInsertedEvent<NodeCategory> message)
{
this.Notify(message);
this.UpdateNodeCategory(message.Data);
}
public void Handle(EntityUpdatedEvent<NodeCategory> message)
{
this.Notify(message);
this.UpdateNodeCategory(message.Data);
}
#endregion nodeCategory
#region Device
public void Handle(EntityInsertedEvent<Device> message)
@ -466,6 +490,24 @@ namespace IoTCenter.Services
private void UpdateOrganNode(Node node)
{
try
{
var category = this._nodeCategoryRepo.ReadOnlyTable().FirstOrDefault(o => o.Number == node.CategoryNumber);
if (category != null)
{
var nodeCategory = this._nodeCategoryNodeRepo.Table().FirstOrDefault(o => o.NodeId == node.Id);
if (nodeCategory == null)
{
nodeCategory = new NodeCategoryNode { CategoryId = category.Id, NodeId = node.Id };
this._nodeCategoryNodeRepo.Add(nodeCategory);
this._nodeCategoryNodeRepo.SaveChanges();
}
}
}
catch (Exception ex)
{
this._logger.LogError(ex.ToString());
}
try
{
var organ = this._organRepo.ReadOnlyTable().FirstOrDefault(o => o.Number == node.OrganNumber);
@ -507,5 +549,27 @@ namespace IoTCenter.Services
this._logger.LogError(ex.ToString());
}
}
private void UpdateNodeCategory(NodeCategory category)
{
try
{
var nodes = this._nodeRepo.ReadOnlyTable().Where(o => o.CategoryNumber == category.Number).Select(o => o.Id).ToList();
foreach (var nodeId in nodes)
{
var categoryNode = this._nodeCategoryNodeRepo.Table().FirstOrDefault(o => o.NodeId == nodeId);
if (categoryNode == null)
{
categoryNode = new NodeCategoryNode { CategoryId = category.Id, NodeId = nodeId };
this._nodeCategoryNodeRepo.Add(categoryNode);
this._nodeCategoryNodeRepo.SaveChanges();
}
}
}
catch (Exception ex)
{
this._logger.LogError(ex.ToString());
}
}
}
}

@ -20,6 +20,8 @@ CREATE TABLE "iot_Node" (
"IsDeleted" TEXT NULL,
"OrganName" TEXT NULL,
"OrganNumber" TEXT NOT NULL,
"CategoryName" TEXT NULL,
"CategoryNumber" TEXT NOT NULL,
"Name" TEXT NULL,
"Number" TEXT NOT NULL,
"IsOnline" INTEGER NOT NULL,
@ -33,6 +35,7 @@ CREATE TABLE "iot_NodeCategory" (
"Id" TEXT NOT NULL CONSTRAINT "PK_iot_NodeCategory" PRIMARY KEY,
"IsDeleted" TEXT NULL,
"Name" TEXT NULL,
"Number" TEXT NULL,
"Template" TEXT NULL,
"DisplayOrder" INTEGER NOT NULL
);

@ -96,7 +96,9 @@ namespace IoTNode
{
Id = $"nodeid-{sn}".ToGuid(),
OrganName = "默认机构名称",
OrganNumber = "默认机构编码",
OrganNumber = "默认机构编号",
CategoryName = "默认分类名称",
CategoryNumber = "默认分类编号",
Name = "节点",
Number = sn,
IsOnline = true,

@ -11,6 +11,8 @@ CREATE TABLE "iot_Node" (
"IsDeleted" TEXT NULL,
"OrganName" TEXT NULL,
"OrganNumber" TEXT NOT NULL,
"CategoryName" TEXT NULL,
"CategoryNumber" TEXT NOT NULL,
"Name" TEXT NULL,
"Number" TEXT NOT NULL,
"IsOnline" INTEGER NOT NULL,

Loading…
Cancel
Save