From 9ef9d0811b3e162cfd32d5e3134e0d100bf62d18 Mon Sep 17 00:00:00 2001 From: rszn <645583145@qq.com> Date: Tue, 4 Jun 2024 22:07:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E8=AD=A6=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common/Const/EquipmentType.cs | 9 ++ ConsoleStarter/ExportDb.cs | 55 +++---- ConsoleStarter/Program.cs | 7 +- Entity/Api/Req/QueryAlarmReq.cs | 9 ++ Entity/DbModel/Station/EquipAlarmDefine.cs | 103 +++++++++++++ Entity/DbModel/Station/EquipAlarmLevel.cs | 10 +- .../Station/EquipAlarmProcessRecord.cs | 138 +++++++++++++----- Entity/DbModel/Station/EquipAlarmRecord.cs | 130 ++++++++++++----- HybirdFrameworkCore/Entity/IPage.cs | 2 +- HybirdFrameworkCore/Entity/QueryPageModel.cs | 2 +- HybirdFrameworkCore/Entity/Result.cs | 34 ++--- .../ModbusTcpMaster/ModbusProperty.cs | 7 +- Repository/BaseRepository.cs | 20 ++- .../Station/EquipAlarmDefineRepository.cs | 27 ++++ .../EquipAlarmProcessRecordRepository.cs | 13 ++ .../Station/EquipAlarmRecordRepository.cs | 19 +++ Service/Ammeter/EmeterDayEnergyService.cs | 2 +- Service/Ammeter/EmeterHourEnergyService.cs | 2 +- .../EmeterMinutesEnergyChangeService.cs | 2 +- Service/Ammeter/EmeterMinutesEnergyService.cs | 2 +- Service/Plc/Client/PlcClient.cs | 81 ++++++++-- Service/Plc/Client/PlcMgr.cs | 12 +- Service/Plc/Msg/PlcFault.cs | 10 +- Service/Station/ChargeOrderService.cs | 10 +- Service/Station/EquipAlarmLevelService.cs | 14 +- Service/Station/EquipAlarmRecordService.cs | 71 +++++++++ .../Controllers/ChargeOrderController.cs | 6 +- .../Controllers/EquipAlarmLevelController.cs | 8 +- .../Controllers/EquipAlarmRecordController.cs | 46 ++++++ WebStarter/Controllers/SwapOrderController.cs | 12 +- .../Controllers/SwapOrderStepController.cs | 6 +- 31 files changed, 668 insertions(+), 201 deletions(-) create mode 100644 Common/Const/EquipmentType.cs create mode 100644 Entity/Api/Req/QueryAlarmReq.cs create mode 100644 Entity/DbModel/Station/EquipAlarmDefine.cs create mode 100644 Repository/Station/EquipAlarmDefineRepository.cs create mode 100644 Repository/Station/EquipAlarmProcessRecordRepository.cs create mode 100644 Repository/Station/EquipAlarmRecordRepository.cs create mode 100644 Service/Station/EquipAlarmRecordService.cs create mode 100644 WebStarter/Controllers/EquipAlarmRecordController.cs diff --git a/Common/Const/EquipmentType.cs b/Common/Const/EquipmentType.cs new file mode 100644 index 0000000..7f6f2f4 --- /dev/null +++ b/Common/Const/EquipmentType.cs @@ -0,0 +1,9 @@ +namespace Common.Const; + +public enum EquipmentType +{ + Charger, + Ammeter, + WaterCool, + Plc +} diff --git a/ConsoleStarter/ExportDb.cs b/ConsoleStarter/ExportDb.cs index fdcfd7f..fb7bd08 100644 --- a/ConsoleStarter/ExportDb.cs +++ b/ConsoleStarter/ExportDb.cs @@ -9,35 +9,15 @@ public class ExportDb private static readonly string[] UsedTable = { - "t_bs_charging_bin_info", - "t_bs_cloud_charge_model_recv_record", - "t_bs_cloud_elec_price_recv_record", - "t_bs_eqm_fault_base_info", - "t_bs_net_cloud_param_info", - "t_bs_net_eqm_param_info", - "t_bs_station_config_info", - "t_bs_station_elec_price_info", - "t_bs_station_info", - "t_cb_amt_order_info", - "t_cb_station_order_batt_log_info", - "t_cb_station_order_sended_log", - "t_cb_station_order_state_log", - "t_fl_repaired_info", - "t_fl_un_repair_info", - "t_rm_charger_record_report", - "t_ss_authority_to_role", - "t_ss_button_info", - "t_ss_menu_info", - "t_ss_role_info", - "t_ss_user_info", - "t_ss_user_to_role" + "equip_alarm_define", + "equip_alarm_record", + "equip_alarm_process_record" }; private readonly SqlSugarClient Db = new(new ConnectionConfig { ConnectionString = - //"server=106.12.36.89;Database=chassis_track_swap0;Uid=remote_user;Pwd=Rszn123;Charset=utf8;", - "server=127.0.0.1;Port=3306;Database=huanneng_dev;Uid=root;Pwd=anyixing2023!@#;Charset=utf8;", + "server=180.76.133.253;Port=16306;Database=huanneng_dev;Uid=root;Pwd=Rszn123;Charset=utf8;", DbType = DbType.MySql, IsAutoCloseConnection = true, InitKeyType = InitKeyType.Attribute @@ -55,5 +35,30 @@ public class ExportDb foreach (var columnInfo in columnInfos) Log.Info($" {columnInfo.DbColumnName}:{columnInfo.ColumnDescription}"); } + + Db.DbFirst + .Where(it => UsedTable.Contains(it)) + .IsCreateAttribute() //创建sqlsugar自带特性 + .FormatFileName(ToPascalCase) //格式化文件名(文件名和表名不一样情况) + .FormatClassName(ToPascalCase) //格式化类名 (类名和表名不一样的情况) + .FormatPropertyName(ToPascalCase) //格式化属性名 (属性名和字段名不一样情况) + .CreateClassFile("D:\\RiderProjects\\hn_back_main\\Entity\\DbModel\\Station", + "Entity.DbModel.Station"); + } + + static string ToPascalCase(string input) + { + if (string.IsNullOrEmpty(input)) + return input; + string[] strings = input.Split("_"); + string res = ""; + foreach (var s in strings) + { + string first = s.First().ToString().ToUpper(); + string te = first + s.Substring(1); + res += te; + } + + return res; } -} \ No newline at end of file +} diff --git a/ConsoleStarter/Program.cs b/ConsoleStarter/Program.cs index e6508fb..fa08bc8 100644 --- a/ConsoleStarter/Program.cs +++ b/ConsoleStarter/Program.cs @@ -13,7 +13,8 @@ internal class Program { XmlConfigurator.ConfigureAndWatch(new FileInfo(AppDomain.CurrentDomain.BaseDirectory + @"\log4net.xml")); - string str = "{\n\"header\":{\n\"cmd\":\"amtBat\",\n\"id\":1,\n\"sid\":\"xxxx\"\n},\n\"body\":{\n\"sn\": \"xxxx\",\n\"cn\": \"xxxx\",\n\"bn\": \"xxxx\",\n\"bm\": \"xxxx\",\n\"at\": \"2020-11-20 18:23:06\",\n\"am\": 30\n}\n}"; - Log.Info(str); + + ExportDb exportDb = new ExportDb(); + exportDb.Export(); } -} \ No newline at end of file +} diff --git a/Entity/Api/Req/QueryAlarmReq.cs b/Entity/Api/Req/QueryAlarmReq.cs new file mode 100644 index 0000000..d45a92b --- /dev/null +++ b/Entity/Api/Req/QueryAlarmReq.cs @@ -0,0 +1,9 @@ +using HybirdFrameworkCore.Entity; + +namespace Entity.Api.Req; + +public class QueryAlarmReq : QueryPageModel +{ + public int TypeCode { get; set; } = -1; + public string? EquipCode { get; set; } +} diff --git a/Entity/DbModel/Station/EquipAlarmDefine.cs b/Entity/DbModel/Station/EquipAlarmDefine.cs new file mode 100644 index 0000000..63ca115 --- /dev/null +++ b/Entity/DbModel/Station/EquipAlarmDefine.cs @@ -0,0 +1,103 @@ +using SqlSugar; + +namespace Entity.DbModel.Station +{ + /// + ///设备报警记录 + /// + [SugarTable("equip_alarm_define")] + public partial class EquipAlarmDefine + { + public EquipAlarmDefine() + { + } + + /// + /// Desc:id + /// Default: + /// Nullable:False + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnName = "id")] + public int Id { get; set; } + + /// + /// Desc:设备类型编码 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "equip_type_code")] + public int EquipTypeCode { get; set; } + + /// + /// Desc:设备编码 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "equip_code")] + public string EquipCode { get; set; } + + /// + /// Desc:报警编码 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "error_code")] + public string ErrorCode { get; set; } + + /// + /// Desc:报警等级 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "error_level")] + public string ErrorLevel { get; set; } + + /// + /// Desc:报警描述 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "error_msg")] + public string ErrorMsg { get; set; } + + /// + /// Desc:处理方法 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "process_method")] + public string ProcessMethod { get; set; } + + /// + /// Desc:创建人 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "created_by")] + public string CreatedBy { get; set; } + + /// + /// Desc:创建时间 + /// Default:CURRENT_TIMESTAMP + /// Nullable:True + /// + [SugarColumn(ColumnName = "created_time")] + public DateTime? CreatedTime { get; set; } + + /// + /// Desc:更新人 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "updated_by")] + public string UpdatedBy { get; set; } + + /// + /// Desc:更新时间 + /// Default:CURRENT_TIMESTAMP + /// Nullable:True + /// + [SugarColumn(ColumnName = "updated_time")] + public DateTime? UpdatedTime { get; set; } + } +} diff --git a/Entity/DbModel/Station/EquipAlarmLevel.cs b/Entity/DbModel/Station/EquipAlarmLevel.cs index ef22194..bc319c3 100644 --- a/Entity/DbModel/Station/EquipAlarmLevel.cs +++ b/Entity/DbModel/Station/EquipAlarmLevel.cs @@ -1,7 +1,4 @@ -using System; -using System.Linq; -using System.Text; -using SqlSugar; +using SqlSugar; namespace Entity.DbModel.Station { @@ -20,10 +17,6 @@ namespace Entity.DbModel.Station //TODO 数据库字段未设计完 - - - - /// /// Desc:创建人 /// Default: @@ -55,6 +48,5 @@ namespace Entity.DbModel.Station /// [SugarColumn(ColumnName = "updated_time")] public DateTime? UpdatedTime { get; set; } - } } diff --git a/Entity/DbModel/Station/EquipAlarmProcessRecord.cs b/Entity/DbModel/Station/EquipAlarmProcessRecord.cs index 4eb0b22..bba040a 100644 --- a/Entity/DbModel/Station/EquipAlarmProcessRecord.cs +++ b/Entity/DbModel/Station/EquipAlarmProcessRecord.cs @@ -1,7 +1,4 @@ -using System; -using System.Linq; -using System.Text; -using SqlSugar; +using SqlSugar; namespace Entity.DbModel.Station { @@ -11,41 +8,104 @@ namespace Entity.DbModel.Station [SugarTable("equip_alarm_process_record")] public partial class EquipAlarmProcessRecord { - public EquipAlarmProcessRecord(){ - - - } - /// - /// Desc:创建人 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="created_by")] - public string CreatedBy {get;set;} - - /// - /// Desc:创建时间 - /// Default:CURRENT_TIMESTAMP - /// Nullable:True - /// - [SugarColumn(ColumnName="created_time")] - public DateTime? CreatedTime {get;set;} - - /// - /// Desc:更新人 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="updated_by")] - public string UpdatedBy {get;set;} - - /// - /// Desc:更新时间 - /// Default:CURRENT_TIMESTAMP - /// Nullable:True - /// - [SugarColumn(ColumnName="updated_time")] - public DateTime? UpdatedTime {get;set;} + public EquipAlarmProcessRecord() + { + } + /// + /// Desc:id + /// Default: + /// Nullable:False + /// + [SugarColumn(ColumnName = "id")] + public int Id { get; set; } + + /// + /// Desc:设备类型编码 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "equip_type_code")] + public int EquipTypeCode { get; set; } + + /// + /// Desc:设备编码 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "equip_code")] + public string EquipCode { get; set; } + + /// + /// Desc:报警编码 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "error_code")] + public string ErrorCode { get; set; } + + /// + /// Desc:报警等级 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "error_level")] + public string ErrorLevel { get; set; } + + /// + /// Desc:报警描述 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "error_msg")] + public string ErrorMsg { get; set; } + + /// + /// Desc:处理方法 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "process_method")] + public string ProcessMethod { get; set; } + + /// + /// Desc:处理时间 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "process_time")] + public DateTime? ProcessTime { get; set; } + + /// + /// Desc:创建人 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "created_by")] + public string CreatedBy { get; set; } + + /// + /// Desc:创建时间 + /// Default:CURRENT_TIMESTAMP + /// Nullable:True + /// + [SugarColumn(ColumnName = "created_time")] + public DateTime? CreatedTime { get; set; } + + /// + /// Desc:更新人 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "updated_by")] + public string UpdatedBy { get; set; } + + /// + /// Desc:更新时间 + /// Default:CURRENT_TIMESTAMP + /// Nullable:True + /// + [SugarColumn(ColumnName = "updated_time")] + public DateTime? UpdatedTime { get; set; } } } diff --git a/Entity/DbModel/Station/EquipAlarmRecord.cs b/Entity/DbModel/Station/EquipAlarmRecord.cs index d2d6f4a..1a4a65f 100644 --- a/Entity/DbModel/Station/EquipAlarmRecord.cs +++ b/Entity/DbModel/Station/EquipAlarmRecord.cs @@ -1,7 +1,4 @@ -using System; -using System.Linq; -using System.Text; -using SqlSugar; +using SqlSugar; namespace Entity.DbModel.Station { @@ -11,41 +8,96 @@ namespace Entity.DbModel.Station [SugarTable("equip_alarm_record")] public partial class EquipAlarmRecord { - public EquipAlarmRecord(){ - - - } - /// - /// Desc:创建人 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="created_by")] - public string CreatedBy {get;set;} - - /// - /// Desc:创建时间 - /// Default:CURRENT_TIMESTAMP - /// Nullable:True - /// - [SugarColumn(ColumnName="created_time")] - public DateTime? CreatedTime {get;set;} - - /// - /// Desc:更新人 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="updated_by")] - public string UpdatedBy {get;set;} - - /// - /// Desc:更新时间 - /// Default:CURRENT_TIMESTAMP - /// Nullable:True - /// - [SugarColumn(ColumnName="updated_time")] - public DateTime? UpdatedTime {get;set;} + public EquipAlarmRecord() + { + } + /// + /// Desc:id + /// Default: + /// Nullable:False + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnName = "id")] + public int Id { get; set; } + + /// + /// Desc:设备类型编码 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "equip_type_code")] + public int EquipTypeCode { get; set; } + + /// + /// Desc:设备编码 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "equip_code")] + public string EquipCode { get; set; } + + /// + /// Desc:报警编码 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "error_code")] + public string ErrorCode { get; set; } + + /// + /// Desc:报警等级 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "error_level")] + public string ErrorLevel { get; set; } + + /// + /// Desc:报警描述 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "error_msg")] + public string ErrorMsg { get; set; } + + /// + /// Desc:处理方法 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "process_method")] + public string ProcessMethod { get; set; } + + /// + /// Desc:创建人 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "created_by")] + public string CreatedBy { get; set; } + + /// + /// Desc:创建时间 + /// Default:CURRENT_TIMESTAMP + /// Nullable:True + /// + [SugarColumn(ColumnName = "created_time")] + public DateTime? CreatedTime { get; set; } + + /// + /// Desc:更新人 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "updated_by")] + public string UpdatedBy { get; set; } + + /// + /// Desc:更新时间 + /// Default:CURRENT_TIMESTAMP + /// Nullable:True + /// + [SugarColumn(ColumnName = "updated_time")] + public DateTime? UpdatedTime { get; set; } } } diff --git a/HybirdFrameworkCore/Entity/IPage.cs b/HybirdFrameworkCore/Entity/IPage.cs index b9a8d4a..69bcb57 100644 --- a/HybirdFrameworkCore/Entity/IPage.cs +++ b/HybirdFrameworkCore/Entity/IPage.cs @@ -13,7 +13,7 @@ public class IPage public IPage(int total, QueryPageModel page, List? rows) { Total = total; - PageNum = page.Page; + PageNum = page.PageNum; PageSize = page.PageSize; Rows = rows; } diff --git a/HybirdFrameworkCore/Entity/QueryPageModel.cs b/HybirdFrameworkCore/Entity/QueryPageModel.cs index 986175c..48cc3b6 100644 --- a/HybirdFrameworkCore/Entity/QueryPageModel.cs +++ b/HybirdFrameworkCore/Entity/QueryPageModel.cs @@ -5,7 +5,7 @@ public class QueryPageModel /// ///页码 /// - public int Page { get; set; } = 1; + public int PageNum { get; set; } = 1; /// /// 页数 /// diff --git a/HybirdFrameworkCore/Entity/Result.cs b/HybirdFrameworkCore/Entity/Result.cs index 2593893..ef7d03e 100644 --- a/HybirdFrameworkCore/Entity/Result.cs +++ b/HybirdFrameworkCore/Entity/Result.cs @@ -8,12 +8,14 @@ /// /// 状态码 /// - + public int Status { get; set; } = 200; + /// /// 操作是否成功 /// public bool IsSuccess { get; set; } = false; + /// /// 返回信息 /// @@ -29,12 +31,11 @@ /// /// 消息 /// - public static Result Success(string msg = "成功") + public static Result Success(T t = default) { - return Message(true, msg, default); + return Message(true, "成功", t); } - - + /// /// 返回成功 @@ -46,9 +47,8 @@ { return Message(true, msg, data); } - - - + + /// /// 返回失败 /// @@ -58,8 +58,8 @@ { return Message(false, msg, default); } - - + + /// /// 返回失败 /// @@ -70,7 +70,7 @@ { return Message(false, msg, data); } - + /// /// 返回消息 /// @@ -82,7 +82,7 @@ { return new Result() { Msg = msg, Data = data, IsSuccess = success }; } - + /// /// 返回消息 /// @@ -90,15 +90,9 @@ /// 消息 /// 数据 /// - public static Result Message(bool success, T data) + public static Result Message(bool success, T data) { - return new Result() { Msg="查询成功", Data = data, IsSuccess = success }; + return new Result() { Msg = "查询成功", Data = data, IsSuccess = success }; } - - - } - - - } diff --git a/HybirdFrameworkDriver/ModbusTcpMaster/ModbusProperty.cs b/HybirdFrameworkDriver/ModbusTcpMaster/ModbusProperty.cs index c534cde..eb7c4c2 100644 --- a/HybirdFrameworkDriver/ModbusTcpMaster/ModbusProperty.cs +++ b/HybirdFrameworkDriver/ModbusTcpMaster/ModbusProperty.cs @@ -1,7 +1,7 @@ namespace HybirdFrameworkDriver.ModbusTcpMaster; /// -/// +/// /// /// public class ModbusProperty : IModbusProperty @@ -16,7 +16,7 @@ public class ModbusProperty : IModbusProperty /// 保留几位小数 /// 偏移量 public ModbusProperty(int registerNo, int start = 0, int length = 1, ModbusDataType type = ModbusDataType.Register, - double scale = 1, int round = 0, double offset = 0) + double scale = 1, int round = 0, double offset = 0, T value=default) { RegisterNo = registerNo; Start = start; @@ -25,6 +25,7 @@ public class ModbusProperty : IModbusProperty Scale = scale; Round = round; Offset = offset; + Value = value; } /// @@ -63,4 +64,4 @@ public enum ModbusDataType { Bit, Register -} \ No newline at end of file +} diff --git a/Repository/BaseRepository.cs b/Repository/BaseRepository.cs index 770092e..97f2c93 100644 --- a/Repository/BaseRepository.cs +++ b/Repository/BaseRepository.cs @@ -29,6 +29,12 @@ public abstract class BaseRepository where T : class, new() .InSingle(pkValue); } + public ISugarQueryable Queryable(bool blUseNoLock = false) + { + return DbBaseClient + .Queryable().WithNoLockOrNot(blUseNoLock); + } + /// /// 根据主值查询单条数据 /// @@ -109,7 +115,7 @@ public abstract class BaseRepository where T : class, new() .Queryable() .Where(predicate) .WithNoLockOrNot(false) - .ToPageList(page.Page, page.PageSize, ref totalCount); + .ToPageList(page.PageNum, page.PageSize, ref totalCount); @@ -135,7 +141,7 @@ public abstract class BaseRepository where T : class, new() .Queryable() .Where(predicate) .WithNoLockOrNot(false) - .ToPageListAsync(page.Page, page.PageSize, totalCount); + .ToPageListAsync(page.PageNum, page.PageSize, totalCount); @@ -159,7 +165,7 @@ public abstract class BaseRepository where T : class, new() List pageList = DbBaseClient .Queryable() .WithNoLockOrNot(false) - .ToPageList(page.Page, page.PageSize, ref totalCount); + .ToPageList(page.PageNum, page.PageSize, ref totalCount); return new IPage(totalCount, page, pageList); } @@ -176,7 +182,7 @@ public abstract class BaseRepository where T : class, new() List pageList = await DbBaseClient .Queryable() .WithNoLockOrNot(false) - .ToPageListAsync(page.Page, page.PageSize, totalCount); + .ToPageListAsync(page.PageNum, page.PageSize, totalCount); return new IPage(totalCount, page, pageList); } @@ -725,7 +731,7 @@ public abstract class BaseRepository where T : class, new() .ToList(); } /// - /// + /// /// /// /// @@ -779,7 +785,7 @@ public abstract class BaseRepository where T : class, new() .Insertable(entity) .ExecuteReturnEntity(); } - + /// /// 写入或者更新实体数据 /// @@ -1704,4 +1710,4 @@ public abstract class BaseRepository where T : class, new() -} \ No newline at end of file +} diff --git a/Repository/Station/EquipAlarmDefineRepository.cs b/Repository/Station/EquipAlarmDefineRepository.cs new file mode 100644 index 0000000..1443567 --- /dev/null +++ b/Repository/Station/EquipAlarmDefineRepository.cs @@ -0,0 +1,27 @@ +using Entity.DbModel.Station; +using HybirdFrameworkCore.Autofac.Attribute; +using SqlSugar; + +namespace Repository.Station; + +[Scope] +public class EquipAlarmDefineRepository : BaseRepository +{ + public EquipAlarmDefineRepository(ISqlSugarClient sqlSugar) : base(sqlSugar) + { + } + + + /// + /// + /// + /// 0-充电机;1-电表;2-水冷;3-plc; + /// + /// + /// + public EquipAlarmDefine? SelectByEquipCodeAndErrorCode(int equipTypeCode, string equipCode, string errorCode) + { + return this.QueryByClause(it => it.EquipTypeCode == equipTypeCode && + it.EquipCode == equipCode && it.ErrorCode == errorCode); + } +} diff --git a/Repository/Station/EquipAlarmProcessRecordRepository.cs b/Repository/Station/EquipAlarmProcessRecordRepository.cs new file mode 100644 index 0000000..999c0eb --- /dev/null +++ b/Repository/Station/EquipAlarmProcessRecordRepository.cs @@ -0,0 +1,13 @@ +using Entity.DbModel.Station; +using HybirdFrameworkCore.Autofac.Attribute; +using SqlSugar; + +namespace Repository.Station; + +[Scope] +public class EquipAlarmProcessRecordRepository : BaseRepository +{ + public EquipAlarmProcessRecordRepository(ISqlSugarClient sqlSugar) : base(sqlSugar) + { + } +} diff --git a/Repository/Station/EquipAlarmRecordRepository.cs b/Repository/Station/EquipAlarmRecordRepository.cs new file mode 100644 index 0000000..93266e4 --- /dev/null +++ b/Repository/Station/EquipAlarmRecordRepository.cs @@ -0,0 +1,19 @@ +using Entity.DbModel.Station; +using HybirdFrameworkCore.Autofac.Attribute; +using SqlSugar; + +namespace Repository.Station; + +[Scope] +public class EquipAlarmRecordRepository : BaseRepository +{ + public EquipAlarmRecordRepository(ISqlSugarClient sqlSugar) : base(sqlSugar) + { + } + + public EquipAlarmRecord? SelectByEquipCodeAndErrorCode(int equipTypeCode, string equipCode, string errorCode) + { + return this.QueryByClause(it => it.EquipTypeCode == equipTypeCode && + it.EquipCode == equipCode && it.ErrorCode == errorCode); + } +} diff --git a/Service/Ammeter/EmeterDayEnergyService.cs b/Service/Ammeter/EmeterDayEnergyService.cs index c11f760..fac4052 100644 --- a/Service/Ammeter/EmeterDayEnergyService.cs +++ b/Service/Ammeter/EmeterDayEnergyService.cs @@ -20,7 +20,7 @@ namespace Service.Ammeter { QueryPageModel queryPageModel1 = new QueryPageModel { - Page = queryPageModel.Page, + PageNum = queryPageModel.Page, PageSize = queryPageModel.PageSize, }; if (!string.IsNullOrEmpty(queryPageModel.Code)) diff --git a/Service/Ammeter/EmeterHourEnergyService.cs b/Service/Ammeter/EmeterHourEnergyService.cs index c97e9ed..860fae7 100644 --- a/Service/Ammeter/EmeterHourEnergyService.cs +++ b/Service/Ammeter/EmeterHourEnergyService.cs @@ -21,7 +21,7 @@ namespace Service.Ammeter { QueryPageModel queryPageModel1 = new QueryPageModel { - Page = queryPageModel.Page, + PageNum = queryPageModel.Page, PageSize = queryPageModel.PageSize, }; if (!string.IsNullOrEmpty(queryPageModel.Code)) diff --git a/Service/Ammeter/EmeterMinutesEnergyChangeService.cs b/Service/Ammeter/EmeterMinutesEnergyChangeService.cs index 17fe17a..50f02b4 100644 --- a/Service/Ammeter/EmeterMinutesEnergyChangeService.cs +++ b/Service/Ammeter/EmeterMinutesEnergyChangeService.cs @@ -21,7 +21,7 @@ namespace Service.Ammeter { QueryPageModel queryPageModel1 = new QueryPageModel { - Page = queryPageModel.Page, + PageNum = queryPageModel.Page, PageSize = queryPageModel.PageSize, }; if (!string.IsNullOrEmpty(queryPageModel.Code)) diff --git a/Service/Ammeter/EmeterMinutesEnergyService.cs b/Service/Ammeter/EmeterMinutesEnergyService.cs index cb399e6..9682a9a 100644 --- a/Service/Ammeter/EmeterMinutesEnergyService.cs +++ b/Service/Ammeter/EmeterMinutesEnergyService.cs @@ -23,7 +23,7 @@ namespace Service.Ammeter { QueryPageModel queryPageModel1 = new QueryPageModel { - Page = queryPageModel.Page, + PageNum = queryPageModel.Page, PageSize = queryPageModel.PageSize, }; if (!string.IsNullOrEmpty(queryPageModel.Code)) diff --git a/Service/Plc/Client/PlcClient.cs b/Service/Plc/Client/PlcClient.cs index f686fb0..78b9dfc 100644 --- a/Service/Plc/Client/PlcClient.cs +++ b/Service/Plc/Client/PlcClient.cs @@ -1,28 +1,34 @@ -using Entity.DbModel.Station; +using Common.Const; +using Entity.DbModel.Station; using HybirdFrameworkCore.Autofac.Attribute; using HybirdFrameworkCore.Const; using HybirdFrameworkDriver.ModbusTcpMaster; +using log4net; using Repository.Station; using Service.Plc.Msg; namespace Service.Plc.Client; /// -/// +/// /// [Scope] public class PlcClient : ModbusTcpMaster { - private BinInfoRepository _binInfoRepository; - public PlcClient(BinInfoRepository binInfoRepository) + private static readonly ILog Log = LogManager.GetLogger(typeof(PlcClient)); + public BinInfoRepository BinInfoRepository { get; set; } + public EquipAlarmDefineRepository EquipAlarmDefineRepository { get; set; } + public EquipAlarmRecordRepository EquipAlarmRecordRepository { get; set; } + public EquipAlarmProcessRecordRepository EquipAlarmProcessRecordRepository { get; set; } + + public PlcClient() { ReadAction = BatchRead; Ip = "172.0.20.66"; Port = 502; Duration = 1000; AutoReConnect = true; - _binInfoRepository = binInfoRepository; ByteSeq = EndingConst.ByteSeq.BA; WordSeq= EndingConst.WordSeq.CD; } @@ -60,16 +66,73 @@ public class PlcClient : ModbusTcpMaster var bytes03 = master.BatchReadHolderRegister(701, 10); if (bytes03 != null) { + PlcMgr.LastPlcFaultData = PlcMgr.PlcFaultData; PlcMgr.DataValidityTime = DateTime.Now; ModbusDecoder.Decode(bytes03, PlcMgr.PlcFaultData, EndingConst.ByteSeq.AB, EndingConst.WordSeq.DC); + SaveAlarmInfo(PlcMgr.LastPlcFaultData.ErrorCode01.Value, PlcMgr.PlcFaultData.ErrorCode01.Value); + SaveAlarmInfo(PlcMgr.LastPlcFaultData.ErrorCode03.Value, PlcMgr.PlcFaultData.ErrorCode03.Value); + SaveAlarmInfo(PlcMgr.LastPlcFaultData.ErrorCode05.Value, PlcMgr.PlcFaultData.ErrorCode05.Value); + SaveAlarmInfo(PlcMgr.LastPlcFaultData.ErrorCode07.Value, PlcMgr.PlcFaultData.ErrorCode07.Value); + SaveAlarmInfo(PlcMgr.LastPlcFaultData.ErrorCode09.Value, PlcMgr.PlcFaultData.ErrorCode09.Value); + } + } + + private void SaveAlarmInfo(int lastErrorCode, int errorCode) + { + if (lastErrorCode == errorCode) + { + return; } + string plc = "plc"; + if (errorCode != 0) + { + EquipAlarmDefine? alarmDefine = EquipAlarmDefineRepository.SelectByEquipCodeAndErrorCode((int)EquipmentType.Plc, plc, errorCode.ToString()); + if (alarmDefine == null) + { + Log.Error($"error code {errorCode} has no define"); + return; + } + + EquipAlarmRecord record = new EquipAlarmRecord() + { + EquipTypeCode = alarmDefine.EquipTypeCode, + EquipCode = alarmDefine.EquipCode, + ErrorCode = alarmDefine.ErrorCode, + ErrorLevel = alarmDefine.ErrorLevel, + ErrorMsg = alarmDefine.ErrorMsg, + ProcessMethod = alarmDefine.ProcessMethod + }; + EquipAlarmRecordRepository.Insert(record); + + + } + else + { + EquipAlarmRecord? alarmRecord = EquipAlarmRecordRepository.SelectByEquipCodeAndErrorCode((int)EquipmentType.Plc, plc, errorCode.ToString()); + if (alarmRecord != null) + { + EquipAlarmProcessRecord processRecord = new EquipAlarmProcessRecord() + { + EquipTypeCode = alarmRecord.EquipTypeCode, + EquipCode = alarmRecord.EquipCode, + ErrorCode =alarmRecord.EquipCode, + ErrorLevel = alarmRecord.ErrorLevel, + ErrorMsg = alarmRecord.ErrorMsg, + ProcessMethod = alarmRecord.ProcessMethod, + ProcessTime = DateTime.Now + }; + EquipAlarmProcessRecordRepository.Insert(processRecord); + EquipAlarmRecordRepository.DeleteById(alarmRecord.Id); + } + } + } private void UpdateBinInfo(int exists, string binNo) { if (exists == 0) - _binInfoRepository.Update( + BinInfoRepository.Update( it => new BinInfo(){ Exists = 0, @@ -77,12 +140,12 @@ public class PlcClient : ModbusTcpMaster Soc = (decimal)-1, Soe = (decimal)-1, Soh = (decimal)-1, - }, + }, it => it.No == binNo); else - _binInfoRepository.Update(it => it.Exists == 1, + BinInfoRepository.Update(it => it.Exists == 1, it => it.No == binNo); } -} \ No newline at end of file +} diff --git a/Service/Plc/Client/PlcMgr.cs b/Service/Plc/Client/PlcMgr.cs index 73cf1a0..89b7edf 100644 --- a/Service/Plc/Client/PlcMgr.cs +++ b/Service/Plc/Client/PlcMgr.cs @@ -1,5 +1,4 @@ using Autofac; -using log4net; using HslCommunication; using HybirdFrameworkCore.Autofac; using HybirdFrameworkCore.Utils; @@ -13,6 +12,7 @@ public class PlcMgr public static PlcClient? PlcClient; public static readonly HostToPlc HostToPlcData = new HostToPlc(); public static readonly PlcToHost PlcToHostData = new PlcToHost(); + public static PlcFault LastPlcFaultData = new PlcFault(); public static readonly PlcFault PlcFaultData = new PlcFault(); @@ -26,14 +26,14 @@ public class PlcMgr /// public static DateTime DataValidityTime = DateTime.Now; - public static bool Init() + public static void Init() { if (PlcClient == null) { PlcClient = AppInfo.Container.Resolve(); } - return PlcClient.Connect(); + Task.Run(() =>PlcClient.Connect()); } /// @@ -65,12 +65,12 @@ public class PlcMgr return false; } - + public static ushort BlowerStatus() { if (PlcClient != null) { - + return PlcToHostData.ExhaustFanStatus.Value; } @@ -373,4 +373,4 @@ public class PlcMgr return bResult; } -} \ No newline at end of file +} diff --git a/Service/Plc/Msg/PlcFault.cs b/Service/Plc/Msg/PlcFault.cs index ade3939..52d7df6 100644 --- a/Service/Plc/Msg/PlcFault.cs +++ b/Service/Plc/Msg/PlcFault.cs @@ -4,10 +4,10 @@ namespace Service.Plc.Msg { public class PlcFault { - public ModbusProperty ErrorCode01 { get; set; } = new(40701,length :2); // 错误码 - public ModbusProperty ErrorCode03 { get; set; } = new(40703,length :2); // 错误码 - public ModbusProperty ErrorCode05 { get; set; } = new(40705,length :2); // 错误码 - public ModbusProperty ErrorCode07 { get; set; } = new(40707,length :2); // 错误码 - public ModbusProperty ErrorCode09 { get; set; } = new(40709, length: 2); // 错误码 + public ModbusProperty ErrorCode01 { get; set; } = new(40701,length :2, value: 0); // 错误码 + public ModbusProperty ErrorCode03 { get; set; } = new(40703,length :2, value: 0); // 错误码 + public ModbusProperty ErrorCode05 { get; set; } = new(40705,length :2, value: 0); // 错误码 + public ModbusProperty ErrorCode07 { get; set; } = new(40707,length :2, value: 0); // 错误码 + public ModbusProperty ErrorCode09 { get; set; } = new(40709, length: 2, value: 0); // 错误码 } } diff --git a/Service/Station/ChargeOrderService.cs b/Service/Station/ChargeOrderService.cs index 65438d1..e6496a1 100644 --- a/Service/Station/ChargeOrderService.cs +++ b/Service/Station/ChargeOrderService.cs @@ -30,7 +30,7 @@ public class ChargeOrderService : BaseServices /// public PageResult QueryChargeOrder(QueryChargeOrderReq chargeOrder) { - + //创建一个空的表达式树 Expression> where = null; //// 定义参数表达式 @@ -125,7 +125,7 @@ public class ChargeOrderService : BaseServices } /// - /// + /// /// /// /// @@ -136,13 +136,13 @@ public class ChargeOrderService : BaseServices { return Result.Fail("数据不存在"); } - + if ( orders[0].CloudReportStatus == 1) { - return Result.Success("已经上传到云平台"); + return Result.Success(true, "已经上传到云平台"); } CloudClientMgr.CloudClient?.PublishChargeOrder(orders, 2); return Result.Success(); } -} \ No newline at end of file +} diff --git a/Service/Station/EquipAlarmLevelService.cs b/Service/Station/EquipAlarmLevelService.cs index 5341038..6fe4dd3 100644 --- a/Service/Station/EquipAlarmLevelService.cs +++ b/Service/Station/EquipAlarmLevelService.cs @@ -21,34 +21,34 @@ public class EquipAlarmLevelService : BaseServices /// - /// ѯϵȼϢҳ + /// 根据条件查询故障等级信息分页 /// /// /// public PageResult QueryEqmFaultInfo(QueryEquipAlarmLevelReq equipAlarmLevel) { - //һյıʽ + //创建一个空的表达式树 Expression> where = null; - //// ʽ + //// 定义参数表达式 ParameterExpression parameter = Expression.Parameter(typeof(EquipAlarmLevel), "u"); - //TODO ȱݿֶ + //TODO 缺少数据库字段先屏蔽 //if (!string.IsNullOrEmpty(quipAlarmLevel.Level)) //{ // Expression> condition1Expr = u => u.Level == quipAlarmLevel.Level; // where = condition1Expr; //} - //// ѯ + //// 构建查询条件 //if (!string.IsNullOrEmpty(quipAlarmLevel.LevelName)) //{ // Expression> condition2Expr = u => u.LevelName == quipAlarmLevel.LevelName; // where = where == null ? condition2Expr : Expression.Lambda>(Expression.AndAlso(where.Body, condition2Expr.Body), parameter); //} - //ѯ + //查询 return PageResult.ConvertPage(_equipAlarmLevelRepository.QueryIPageByCause(equipAlarmLevel, where)); } -} \ No newline at end of file +} diff --git a/Service/Station/EquipAlarmRecordService.cs b/Service/Station/EquipAlarmRecordService.cs new file mode 100644 index 0000000..80a606a --- /dev/null +++ b/Service/Station/EquipAlarmRecordService.cs @@ -0,0 +1,71 @@ +using Entity.Api.Req; +using Entity.DbModel.Station; +using HybirdFrameworkCore.Autofac.Attribute; +using HybirdFrameworkCore.Entity; +using HybirdFrameworkCore.Utils; +using Repository.Station; + +namespace Service.Station; + +[Scope] +public class EquipAlarmRecordService : BaseServices +{ + public EquipAlarmProcessRecordRepository ProcessRecordRepository { get; set; } + + public EquipAlarmRecordService(EquipAlarmRecordRepository dal) + { + BaseDal = dal; + } + + /// + /// 查询未处理报警列表 + /// + /// 设备类型:-1-查询全部;0-充电机;1-电表;2-水冷机;3-plc< + /// 设备编码 + /// + public Result> QueryEquipAlarmPage(QueryAlarmReq req) + { + int totalCount = 0; + int reqTypeCode = req.TypeCode; + var equipCode = req.EquipCode; + List list = BaseDal.Queryable().WhereIF(reqTypeCode != -1, it => it.EquipTypeCode == reqTypeCode) + .WhereIF(ObjUtils.IsNotNullOrWhiteSpace(equipCode), it => it.EquipCode == equipCode) + .ToPageList(req.PageNum, req.PageSize, ref totalCount); + + PageResult result = new PageResult() + { + PageNum = req.PageNum, + PageSize = req.PageSize, + ToTal = totalCount, + Rows = list + }; + return Result>.Success(result); + } + + /// + /// 查询已处理报警列表 + /// + /// 设备类型:-1-查询全部;0-充电机;1-电表;2-水冷机;3-plc + /// 设备编码 + /// + public Result> QueryEquipAlarmProcessPage(QueryAlarmReq req) + { + int totalCount = 0; + int reqTypeCode = req.TypeCode; + var equipCode = req.EquipCode; + List list = ProcessRecordRepository.Queryable().WhereIF(reqTypeCode != -1, it => it.EquipTypeCode == reqTypeCode) + .WhereIF(ObjUtils.IsNotNullOrWhiteSpace(equipCode), it => it.EquipCode == equipCode) + .ToPageList(req.PageNum, req.PageSize, ref totalCount); + + PageResult result = new PageResult() + { + PageNum = req.PageNum, + PageSize = req.PageSize, + ToTal = totalCount, + Rows = list + }; + + + return Result>.Success(result); + } +} diff --git a/WebStarter/Controllers/ChargeOrderController.cs b/WebStarter/Controllers/ChargeOrderController.cs index ad47539..8e122c8 100644 --- a/WebStarter/Controllers/ChargeOrderController.cs +++ b/WebStarter/Controllers/ChargeOrderController.cs @@ -47,13 +47,13 @@ public class ChargeOrderController : ControllerBase if (chargeOrderService.Update(chargeOrder)) { - return Result.Success("更改成功"); + return Result.Success(true,"更改成功"); } else { return Result.Fail("更改失败"); } - + } /// @@ -65,4 +65,4 @@ public class ChargeOrderController : ControllerBase { return chargeOrderService.Upload2Cloud(id); } -} \ No newline at end of file +} diff --git a/WebStarter/Controllers/EquipAlarmLevelController.cs b/WebStarter/Controllers/EquipAlarmLevelController.cs index 8b112bb..30bc1ff 100644 --- a/WebStarter/Controllers/EquipAlarmLevelController.cs +++ b/WebStarter/Controllers/EquipAlarmLevelController.cs @@ -63,7 +63,7 @@ public class EquipAlarmLevelController : ControllerBase // 更改 - return Result.Success("插入成功"); + return Result.Success(true, "插入成功"); } } @@ -83,7 +83,7 @@ public class EquipAlarmLevelController : ControllerBase if (equipAlarmLevelService.Update(baseEqmFaultLevel)) { - return Result.Success("更改成功"); + return Result.Success(true,"更改成功"); } else { @@ -102,11 +102,11 @@ public class EquipAlarmLevelController : ControllerBase { if (equipAlarmLevelService.DeleteByIds(ids)) { - return Result.Success("删除成功"); + return Result.Success(true,"删除成功"); } else { return Result.Fail("删除失败"); } } -} \ No newline at end of file +} diff --git a/WebStarter/Controllers/EquipAlarmRecordController.cs b/WebStarter/Controllers/EquipAlarmRecordController.cs new file mode 100644 index 0000000..a32b458 --- /dev/null +++ b/WebStarter/Controllers/EquipAlarmRecordController.cs @@ -0,0 +1,46 @@ +using Entity.Api.Req; +using Entity.DbModel.Station; +using HybirdFrameworkCore.Entity; +using Microsoft.AspNetCore.Mvc; +using Service.Station; + +namespace WebStarter.Controllers; + +/// +/// 换电设备报警 +/// +[ApiController] +[Route("api/[controller]")] +public class EquipAlarmRecordController : ControllerBase +{ + private readonly EquipAlarmRecordService equipAlarmRecordService; + + public EquipAlarmRecordController(EquipAlarmRecordService equipAlarmRecordService) + { + this.equipAlarmRecordService = equipAlarmRecordService; + } + + /// + /// 查询未处理报警列表 + /// + /// 设备类型:-1-查询全部;0-充电机;1-电表;2-水冷机;3-plc< + /// 设备编码 + /// + [HttpPost("/QueryEquipAlarmPage")] + public Result> QueryEquipAlarmPage([FromBody] QueryAlarmReq req) + { + return equipAlarmRecordService.QueryEquipAlarmPage(req); + } + + /// + /// 查询已处理报警列表 + /// + /// 设备类型:-1-查询全部;0-充电机;1-电表;2-水冷机;3-plc + /// 设备编码 + /// + [HttpPost("/QueryEquipAlarmProcessPage")] + public Result> QueryEquipAlarmProcessPage([FromBody] QueryAlarmReq req) + { + return equipAlarmRecordService.QueryEquipAlarmProcessPage(req); + } +} diff --git a/WebStarter/Controllers/SwapOrderController.cs b/WebStarter/Controllers/SwapOrderController.cs index acd358f..1d42082 100644 --- a/WebStarter/Controllers/SwapOrderController.cs +++ b/WebStarter/Controllers/SwapOrderController.cs @@ -4,9 +4,7 @@ using Entity.Api.Resp; using Entity.DbModel.Station; using HybirdFrameworkCore.Entity; using Microsoft.AspNetCore.Mvc; -using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; using Service.Station; -using System.Collections.Generic; namespace WebStarter.Controllers; @@ -99,7 +97,7 @@ public class SwapOrderController : ControllerBase else { swapOrderService.Insert(swapOrder); - return Result.Success("新增成功"); + return Result.Success(true,"新增成功"); } } @@ -118,7 +116,7 @@ public class SwapOrderController : ControllerBase if (swapOrderService.Update(swapOrder)) { - return Result.Success("更改成功"); + return Result.Success(true,"更改成功"); } else { @@ -136,7 +134,7 @@ public class SwapOrderController : ControllerBase { if (swapOrderService.DeleteByIds(ids)) { - return Result.Success("删除成功"); + return Result.Success(true,"删除成功"); } else { @@ -152,7 +150,7 @@ public class SwapOrderController : ControllerBase [HttpGet("UploadCloud/{id}")] public Result UploadCloud(int id) { - + return swapOrderService.UploadCloud(id); } -} \ No newline at end of file +} diff --git a/WebStarter/Controllers/SwapOrderStepController.cs b/WebStarter/Controllers/SwapOrderStepController.cs index 2dd6278..92cd2b7 100644 --- a/WebStarter/Controllers/SwapOrderStepController.cs +++ b/WebStarter/Controllers/SwapOrderStepController.cs @@ -1,7 +1,5 @@ -using AutoMapper; using Entity.Api.Req; using Entity.Api.Resp; -using Entity.DbModel.Station; using HybirdFrameworkCore.Entity; using Microsoft.AspNetCore.Mvc; using Service.Station; @@ -48,7 +46,7 @@ public class SwapOrderStepController : ControllerBase { if (swapOrderStepService.DeleteByIds(ids)) { - return Result.Success("删除成功"); + return Result.Success(true,"删除成功"); } else { @@ -56,4 +54,4 @@ public class SwapOrderStepController : ControllerBase } } -} \ No newline at end of file +}