From 97b6bcfe9a724a5bf0de42e52916d79057ceb604 Mon Sep 17 00:00:00 2001 From: "qianhao.xu" Date: Thu, 27 Feb 2025 19:58:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E8=BF=90=E8=A1=8C=E7=BB=A9?= =?UTF-8?q?=E6=95=88=E5=88=86=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MES/dev/DevicePerformanceController.cs | 111 ++++++++++ ...NAdmin.NET-设备运行绩效分析-0227172410.zip | Bin 0 -> 10474 bytes DOAN.Model/MES/dev/DevicePerformance.cs | 193 ++++++++++++++++++ .../MES/dev/Dto/DevicePerformanceDto.cs | 84 ++++++++ .../MES/BI/AndonDataAnalysisService.cs | 2 +- .../MES/dev/DevicePerformanceService.cs | 143 +++++++++++++ .../dev/IService/IDevicePerformanceService.cs | 24 +++ 7 files changed, 556 insertions(+), 1 deletion(-) create mode 100644 DOAN.Admin.WebApi/Controllers/MES/dev/DevicePerformanceController.cs create mode 100644 DOAN.Admin.WebApi/wwwroot/Generatecode/DOANAdmin.NET-设备运行绩效分析-0227172410.zip create mode 100644 DOAN.Model/MES/dev/DevicePerformance.cs create mode 100644 DOAN.Model/MES/dev/Dto/DevicePerformanceDto.cs create mode 100644 DOAN.Service/MES/dev/DevicePerformanceService.cs create mode 100644 DOAN.Service/MES/dev/IService/IDevicePerformanceService.cs diff --git a/DOAN.Admin.WebApi/Controllers/MES/dev/DevicePerformanceController.cs b/DOAN.Admin.WebApi/Controllers/MES/dev/DevicePerformanceController.cs new file mode 100644 index 0000000..524ab48 --- /dev/null +++ b/DOAN.Admin.WebApi/Controllers/MES/dev/DevicePerformanceController.cs @@ -0,0 +1,111 @@ +using Microsoft.AspNetCore.Mvc; +using DOAN.Service.MES.dev.IService; +using DOAN.Model.MES.dev.Dto; +using DOAN.Admin.WebApi.Filters; +using DOAN.Model.MES.dev.Dto; +using DOAN.Model.MES.dev; +using Infrastructure.Converter; + +//创建时间:2024-05-27 +namespace DOAN.Admin.WebApi.Controllers +{ + /// + /// 设备运行绩效分析 + /// + [Verify] + [Route("mes/deviceManagement/DevicePerformance")] + public class DevicePerformanceController : BaseController + { + /// + /// 设备运行绩效分析接口 + /// + private readonly IDevicePerformanceService _DevicePerformanceService; + + public DevicePerformanceController(IDevicePerformanceService DevicePerformanceService) + { + _DevicePerformanceService = DevicePerformanceService; + } + + /// + /// 查询设备运行绩效分析列表 + /// + /// + /// + [HttpGet("list")] + [ActionPermissionFilter(Permission = "business:deviceperformance:list")] + public IActionResult QueryDevicePerformance([FromQuery] DevicePerformanceQueryDto parm) + { + parm.FillDate = DOANConvertDateTime.ConvertLocalDateTime(parm.FillDate.Value); + var response = _DevicePerformanceService.GetList(parm); + return SUCCESS(response); + } + + + /// + /// 查询设备运行绩效分析详情 + /// + /// + /// + [HttpGet("{Id}")] + [ActionPermissionFilter(Permission = "business:deviceperformance:query")] + public IActionResult GetDevicePerformance(string Id) + { + var response = _DevicePerformanceService.GetInfo(Id); + + var info = response.Adapt(); + return SUCCESS(info); + } + + /// + /// 添加设备运行绩效分析 + /// + /// + [HttpPost] + [ActionPermissionFilter(Permission = "business:deviceperformance:add")] + [Log(Title = "设备运行绩效分析", BusinessType = BusinessType.INSERT)] + public IActionResult AddDevicePerformance([FromBody] DevicePerformanceDto parm) + { + var modal = parm.Adapt().ToCreate(HttpContext); + + var response = _DevicePerformanceService.AddDevicePerformance(modal); + + return SUCCESS(response); + } + + /// + /// 更新设备运行绩效分析 + /// + /// + [HttpPut] + [ActionPermissionFilter(Permission = "business:deviceperformance:edit")] + [Log(Title = "设备运行绩效分析", BusinessType = BusinessType.UPDATE)] + public IActionResult UpdateDevicePerformance([FromBody] DevicePerformanceDto parm) + { + var modal = parm.Adapt().ToUpdate(HttpContext); + var response = _DevicePerformanceService.UpdateDevicePerformance(modal); + + return ToResponse(response); + } + + /// + /// 删除设备运行绩效分析 + /// + /// + [HttpDelete("{ids}")] + [ActionPermissionFilter(Permission = "business:deviceperformance:delete")] + [Log(Title = "设备运行绩效分析", BusinessType = BusinessType.DELETE)] + public IActionResult DeleteDevicePerformance(string ids) + { + int[] idsArr = Tools.SpitIntArrary(ids); + if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); } + + var response = _DevicePerformanceService.Delete(idsArr); + + return ToResponse(response); + } + + + + + } +} \ No newline at end of file diff --git a/DOAN.Admin.WebApi/wwwroot/Generatecode/DOANAdmin.NET-设备运行绩效分析-0227172410.zip b/DOAN.Admin.WebApi/wwwroot/Generatecode/DOANAdmin.NET-设备运行绩效分析-0227172410.zip new file mode 100644 index 0000000000000000000000000000000000000000..d0fe6a872877a350d082379c154fcf76526291d1 GIT binary patch literal 10474 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 VdZ*4mb{b&;aPRvnLzMrx`#({TI3@r9 literal 0 HcmV?d00001 diff --git a/DOAN.Model/MES/dev/DevicePerformance.cs b/DOAN.Model/MES/dev/DevicePerformance.cs new file mode 100644 index 0000000..39f742c --- /dev/null +++ b/DOAN.Model/MES/dev/DevicePerformance.cs @@ -0,0 +1,193 @@ + +namespace DOAN.Model.MES.dev +{ + /// + /// 设备运行绩效分析 + /// + [SugarTable("device_performance")] + public class DevicePerformance + { + /// + /// 雪花 + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = false)] + public string Id { get; set; } + + /// + /// 可用时间 + /// + public decimal Usabletime { get; set; } + + /// + /// 节假日 + /// + public int? Holiday { get; set; } + + /// + /// 设备计划运行时间:(分钟) + /// + [SugarColumn(ColumnName = "plan_runtime")] + public decimal PlanRuntime { get; set; } + + /// + /// 计划内停机损失-无生产计划 + /// + [SugarColumn(ColumnName = "planning_no_production_time")] + public decimal PlanningNoProductionTime { get; set; } + + /// + /// 计划内停机损失-用餐时间 + /// + [SugarColumn(ColumnName = "planning_eat_time")] + public decimal PlanningEatTime { get; set; } + + /// + /// 计划内停机损失-班组会议 + /// + [SugarColumn(ColumnName = "planning_team_time")] + public decimal PlanningTeamTime { get; set; } + + /// + /// 计划内停机损失-培训 + /// + [SugarColumn(ColumnName = "planning_training")] + public decimal PlanningTraining { get; set; } + + /// + /// 计划内停机损失-员工休息时间 + /// + [SugarColumn(ColumnName = "planning_rest")] + public decimal PlanningRest { get; set; } + + /// + /// 计划内停机损失-周期性维护保养 + /// + [SugarColumn(ColumnName = "planning_maintenance")] + public decimal PlanningMaintenance { get; set; } + + /// + /// 计划内停机损失-停水/电/气 + /// + [SugarColumn(ColumnName = "planning_stop_energy")] + public decimal PlanningStopEnergy { get; set; } + + /// + /// 设备实际可用时间:(分钟) Actual usable time of equipment + /// + [SugarColumn(ColumnName = "actual_usabletime")] + public decimal ActualUsableTime { get; set; } + + /// + /// 计划外停机损失-设备故障停机时间 + /// + [SugarColumn(ColumnName = "accident_device_failure_time")] + public decimal AccidentDeviceFailureTime { get; set; } + + /// + /// 计划外停机损失-生产准备/调整时间 + /// + [SugarColumn(ColumnName = "accident_product_prepare")] + public decimal AccidentProductPrepare { get; set; } + + /// + /// 计划外停机损失-产线缺料停机 + /// + [SugarColumn(ColumnName = "accident_line_lack_material")] + public decimal AccidentLineLackMaterial { get; set; } + + /// + /// 计划外停机损失-产线换型时间 + /// + [SugarColumn(ColumnName = "accident_line_replace_model")] + public decimal AccidentLineReplaceModel { get; set; } + + /// + /// 计划外停机损失-质量问题停机 + /// + [SugarColumn(ColumnName = "accident_quality_problem")] + public decimal AccidentQualityProblem { get; set; } + + /// + /// 计划外停机损失-其他制造/工程问题 + /// + [SugarColumn(ColumnName = "accident_others")] + public decimal AccidentOthers { get; set; } + + /// + /// 设备实际运行时间:(分钟) + /// + [SugarColumn(ColumnName = "device_actual_runtime")] + public decimal DeviceActualRuntime { get; set; } + + /// + /// 故障停机总次数 + /// + [SugarColumn(ColumnName = "fault_shutdown_quantity")] + public int? FaultShutdownQuantity { get; set; } + + /// + /// 故障停机率 + /// + [SugarColumn(ColumnName = "fault_shutdown_rate")] + public decimal FaultShutdownRate { get; set; } + + /// + /// 设备完好率 + /// + [SugarColumn(ColumnName = "good_condition_rate")] + public decimal GoodConditionRate { get; set; } + + /// + /// 计划外停机率 + /// + [SugarColumn(ColumnName = "accident_shutdown_rate")] + public decimal AccidentShutdownRate { get; set; } + + /// + /// 综合设备开机率 + /// + [SugarColumn(ColumnName = "comprehensive_equipment_operating_rate")] + public decimal ComprehensiveEquipmentOperatingRate { get; set; } + + /// + /// MTBF(设备实际运行时间/故障总次数/20) + /// + public decimal Mtbf { get; set; } + + /// + /// MTTR(设备故障停机时间/故障总次数) + /// + public decimal Mttr { get; set; } + + /// + /// 填写日期 + /// + [SugarColumn(ColumnName = "fill_date")] + public DateTime? FillDate { get; set; } + + /// + /// 创建人 + /// + [SugarColumn(ColumnName = "cREATED_BY")] + public string CreatedBy { get; set; } + + /// + /// 创建时间 + /// + [SugarColumn(ColumnName = "cREATED_TIME")] + public DateTime? CreatedTime { get; set; } + + /// + /// 更新人 + /// + [SugarColumn(ColumnName = "uPDATED_BY")] + public string UpdatedBy { get; set; } + + /// + /// 更新时间 + /// + [SugarColumn(ColumnName = "uPDATED_TIME")] + public DateTime? UpdatedTime { get; set; } + + } +} \ No newline at end of file diff --git a/DOAN.Model/MES/dev/Dto/DevicePerformanceDto.cs b/DOAN.Model/MES/dev/Dto/DevicePerformanceDto.cs new file mode 100644 index 0000000..4bb74c1 --- /dev/null +++ b/DOAN.Model/MES/dev/Dto/DevicePerformanceDto.cs @@ -0,0 +1,84 @@ +using System.ComponentModel.DataAnnotations; + +namespace DOAN.Model.MES.dev.Dto +{ + /// + /// 设备运行绩效分析查询对象 + /// + public class DevicePerformanceQueryDto : PagerInfo + { + public DateTime? FillDate { get; set; } + } + + /// + /// 设备运行绩效分析输入输出对象 + /// + public class DevicePerformanceDto + { + + public string Id { get; set; } + + public decimal Usabletime { get; set; } + + public int? Holiday { get; set; } + + public decimal PlanRuntime { get; set; } + + public decimal PlanningNoProductionTime { get; set; } + + public decimal PlanningEatTime { get; set; } + + public decimal PlanningTeamTime { get; set; } + + public decimal PlanningTraining { get; set; } + + public decimal PlanningRest { get; set; } + + public decimal PlanningMaintenance { get; set; } + + public decimal PlanningStopEnergy { get; set; } + + public decimal ActualUsableTime { get; set; } + + public decimal AccidentDeviceFailureTime { get; set; } + + public decimal AccidentProductPrepare { get; set; } + + public decimal AccidentLineLackMaterial { get; set; } + + public decimal AccidentLineReplaceModel { get; set; } + + public decimal AccidentQualityProblem { get; set; } + + public decimal AccidentOthers { get; set; } + + public decimal DeviceActualRuntime { get; set; } + + public int? FaultShutdownQuantity { get; set; } + + public decimal FaultShutdownRate { get; set; } + + public decimal GoodConditionRate { get; set; } + + public decimal AccidentShutdownRate { get; set; } + + public decimal ComprehensiveEquipmentOperatingRate { get; set; } + + public decimal Mtbf { get; set; } + + public decimal Mttr { get; set; } + + public DateTime? FillDate { get; set; } + + public string CreatedBy { get; set; } + + public DateTime? CreatedTime { get; set; } + + public string UpdatedBy { get; set; } + + public DateTime? UpdatedTime { get; set; } + + + + } +} \ No newline at end of file diff --git a/DOAN.Service/MES/BI/AndonDataAnalysisService.cs b/DOAN.Service/MES/BI/AndonDataAnalysisService.cs index 37e2eab..b53e753 100644 --- a/DOAN.Service/MES/BI/AndonDataAnalysisService.cs +++ b/DOAN.Service/MES/BI/AndonDataAnalysisService.cs @@ -106,7 +106,7 @@ namespace DOAN.Service.MES.BI public EchartsOptions ShutdownBar() { EchartsOptions echartsOptions = new EchartsOptions(); - echartsOptions.Title = new EchartsTitle { Text = "本月停机时间统计", SubText = "本月停机时间统计" }; + echartsOptions.Title = new EchartsTitle { Text = "本月异常停机时间统计", SubText = "本月异常停机时间统计" }; // 获取当前日期和时间 DateTime now = DateTime.Now; // 获取本月的最开始时间(本月的第一天的午夜时间) diff --git a/DOAN.Service/MES/dev/DevicePerformanceService.cs b/DOAN.Service/MES/dev/DevicePerformanceService.cs new file mode 100644 index 0000000..d009662 --- /dev/null +++ b/DOAN.Service/MES/dev/DevicePerformanceService.cs @@ -0,0 +1,143 @@ +using System; +using SqlSugar; +using Infrastructure.Attribute; +using Infrastructure.Extensions; +using DOAN.Model; +using DOAN.Model.Dto; +using DOAN.Model.MES.dev.Dto; +using DOAN.Model.MES.dev; +using DOAN.Repository; +using DOAN.Service.MES.dev.IService; +using System.Linq; + +namespace DOAN.Service.MES.dev +{ + /// + /// 设备运行绩效分析Service业务层处理 + /// + [AppService(ServiceType = typeof(IDevicePerformanceService), ServiceLifetime = LifeTime.Transient)] + public class DevicePerformanceService : BaseService, IDevicePerformanceService + { + /// + /// 查询设备运行绩效分析列表 + /// + /// + /// + public PagedInfo GetList(DevicePerformanceQueryDto parm) + { + var predicate = Expressionable.Create() + .AndIF(parm.FillDate>DateTime.MinValue,it=>it.FillDate==parm.FillDate) + ; + var response = Queryable() + .Where(predicate.ToExpression()) + .ToPage(parm); + return response; + } + + + /// + /// 获取详情 + /// + /// + /// + public DevicePerformance GetInfo(string Id) + { + var response = Queryable() + .Where(x => x.Id == Id) + .First(); + + return response; + } + + /// + /// 添加设备运行绩效分析 + /// + /// + /// + public DevicePerformance AddDevicePerformance(DevicePerformance model) + { + model.Id = XueHua; + AutoCalculation(ref model); + return Context.Insertable(model).ExecuteReturnEntity(); + } + + /// + /// 修改设备运行绩效分析 + /// + /// + /// + public int UpdateDevicePerformance(DevicePerformance model) + { + AutoCalculation(ref model); + //var response = Update(w => w.Id == model.Id, it => new DevicePerformance() + //{ + // Usabletime = model.Usabletime, + // PlanRuntime = model.PlanRuntime, + // PlanningNoProductionTime = model.PlanningNoProductionTime, + // PlanningEatTime = model.PlanningEatTime, + // PlanningTeamTime = model.PlanningTeamTime, + // PlanningTraining = model.PlanningTraining, + // PlanningRest = model.PlanningRest, + // PlanningMaintenance = model.PlanningMaintenance, + // PlanningStopEnergy = model.PlanningStopEnergy, + // DeviceActualRuntime = model.DeviceActualRuntime, + // FaultShutdownQuantity = model.FaultShutdownQuantity, + // FaultShutdownRate = model.FaultShutdownRate, + // GoodConditionRate = model.GoodConditionRate, + // ComprehensiveEquipmentOperatingRate = model.ComprehensiveEquipmentOperatingRate, + // Mtbf = model.Mtbf, + // Mttr = model.Mttr, + // FillDate = model.FillDate, + // CreatedBy = model.CreatedBy, + // CreatedTime = model.CreatedTime, + // UpdatedBy = model.UpdatedBy, + // UpdatedTime = model.UpdatedTime, + //}); + //return response; + return Update(model, true); + } + + private void AutoCalculation(ref DevicePerformance model) + { + + // 设备计划运行时间:(分钟)=设备可使用时间:(分钟)-节假日 + model.PlanRuntime = model.Usabletime - model.Holiday??0; + + //设备实际可用时间:(分钟) + model.ActualUsableTime = model.PlanRuntime - model.PlanningNoProductionTime - model.PlanningEatTime - model.PlanningTeamTime - model.PlanningTraining - model.PlanningRest - model.PlanningMaintenance - model.PlanningStopEnergy; + + //设备实际运行时间:(分钟) + model.DeviceActualRuntime = model.ActualUsableTime - model.AccidentDeviceFailureTime - model.AccidentProductPrepare - model.AccidentLineLackMaterial - model.AccidentLineReplaceModel - model.AccidentQualityProblem - model.AccidentOthers; + + + //故障停机率 + if (model.ActualUsableTime > 0) + { + model.FaultShutdownRate = Math.Round(model.AccidentDeviceFailureTime / model.ActualUsableTime, 2); + } + + //设备完好率 + if (model.ActualUsableTime > 0) + { + model.GoodConditionRate = Math.Round(model.DeviceActualRuntime / model.ActualUsableTime, 2); + } + + //计划外停机率 + model.AccidentShutdownRate = 1 - model.DeviceActualRuntime; + + //综合设备开机率 + if(model.PlanRuntime>0) + { + model.ComprehensiveEquipmentOperatingRate = model.DeviceActualRuntime / model.PlanRuntime; + } + //MTBF(设备实际运行时间/故障总次数/60 + model.Mtbf = Math.Round(model.DeviceActualRuntime / model.FaultShutdownQuantity??0 / 60,2); + + //MTTR(设备故障停机时间/故障总次数) + model.Mttr = Math.Round(model.AccidentDeviceFailureTime / model.FaultShutdownQuantity ?? 0, 2); + + + } + + } +} \ No newline at end of file diff --git a/DOAN.Service/MES/dev/IService/IDevicePerformanceService.cs b/DOAN.Service/MES/dev/IService/IDevicePerformanceService.cs new file mode 100644 index 0000000..a18d57f --- /dev/null +++ b/DOAN.Service/MES/dev/IService/IDevicePerformanceService.cs @@ -0,0 +1,24 @@ +using System; +using DOAN.Model; +using DOAN.Model.Dto; +using DOAN.Model.MES.dev.Dto; +using DOAN.Model.MES.dev; +using System.Collections.Generic; + +namespace DOAN.Service.MES.dev.IService +{ + /// + /// 设备运行绩效分析service接口 + /// + public interface IDevicePerformanceService : IBaseService + { + PagedInfo GetList(DevicePerformanceQueryDto parm); + + DevicePerformance GetInfo(string Id); + + DevicePerformance AddDevicePerformance(DevicePerformance parm); + + int UpdateDevicePerformance(DevicePerformance parm); + + } +}