Files
shanghaigangxiangtuzhuangMES/ZR.Admin.WebApi/Controllers/mes/qc/backend/QcBackEndServiceStatisticsController.cs

195 lines
7.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Microsoft.AspNetCore.Mvc;
using ZR.Admin.WebApi.Extensions;
using ZR.Admin.WebApi.Filters;
using ZR.Model.Business;
using ZR.Model.Dto;
using ZR.Service.Business.IBusinessService;
//创建时间2025-01-02
namespace ZR.Admin.WebApi.Controllers
{
/// <summary>
/// 质量BackEnd统计报表业务模块
/// </summary>
//[Verify]
[Route("/mes/qc/BackEnd/QcBackEndServiceStatistics")]
public class QcBackEndServiceStatisticsController : BaseController
{
/// <summary>
/// 质量BackEnd统计报表业务模块接口
/// </summary>
private readonly IQcBackEndServiceStatisticsService _QcBackEndServiceStatisticsService;
public QcBackEndServiceStatisticsController(
IQcBackEndServiceStatisticsService QcBackEndServiceStatisticsService
)
{
_QcBackEndServiceStatisticsService = QcBackEndServiceStatisticsService;
}
/// <summary>
/// 查询质量BackEnd统计报表业务模块列表
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
[HttpGet("list")]
public IActionResult QueryQcBackEndServiceStatistics(
[FromQuery] QcBackEndServiceStatisticsQueryDto parm
)
{
var response = _QcBackEndServiceStatisticsService.GetList(parm);
return SUCCESS(response);
}
/// <summary>
/// 查询质量BackEnd统计报表业务模块列表
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
[HttpPost("GetReviseList")]
[AllowAnonymous]
public IActionResult GetReviseList([FromBody] QcBackEndServiceStatisticsQueryDto parm)
{
var response = _QcBackEndServiceStatisticsService.GetReviseList(parm);
// 初始化统计数据
int totalRequireNumber = 0;
int totalQualifiedNumber = 0;
int totalPolishNumber = 0;
int totalDamoNumber = 0;
int totalBaofeiNumber = 0;
int totalListCount = 0;
// 将动态属性转换为字典并合并到主对象中,并计算统计数据
var resultWithDefects = response
.Select(item =>
{
var itemDict = new Dictionary<string, object>();
foreach (var prop in typeof(QcBackEndServiceStatisticsDto).GetProperties())
{
itemDict[prop.Name] = prop.GetValue(item);
}
// 添加动态属性
foreach (var dynamicProp in item.DynamicProperties)
{
itemDict[dynamicProp.Key] = dynamicProp.Value;
}
// 累加统计数据
totalRequireNumber += Convert.ToInt32(item.RequireNumber);
totalQualifiedNumber += Convert.ToInt32(item.QualifiedNumber);
totalPolishNumber += Convert.ToInt32(item.PolishNumber);
totalDamoNumber += Convert.ToInt32(item.DamoNumber);
totalBaofeiNumber += Convert.ToInt32(item.BaofeiNumber);
totalListCount += 1;
// 移除不要的属性
itemDict["DynamicProperties"] = null;
itemDict["GroupDefectJson"] = "";
return itemDict;
})
.ToList();
// 数据除三
totalRequireNumber = totalRequireNumber / 3;
totalQualifiedNumber = totalQualifiedNumber / 3;
totalPolishNumber = totalPolishNumber / 3;
totalDamoNumber = totalDamoNumber / 3;
totalBaofeiNumber = totalBaofeiNumber / 3;
totalListCount = totalListCount / 3;
// 计算合格率
double qualifiedRate = 0.0;
if (totalRequireNumber > 0)
{
qualifiedRate = (double)totalQualifiedNumber / totalRequireNumber * 100;
}
else
{
qualifiedRate = 0.0;
}
// 创建统计数据字典
var statistics = new Dictionary<string, object>
{
{ "TotalRequireNumber", totalRequireNumber },
{ "TotalQualifiedNumber", totalQualifiedNumber },
{ "QualifiedRate", $"{qualifiedRate:F1}%" },
{ "TotalPolishNumber", totalPolishNumber },
{ "TotalDamoNumber", totalDamoNumber },
{ "TotalBaofeiNumber", totalBaofeiNumber },
{ "TotalListCount", totalListCount }
};
// 创建分页结果
var pageList = resultWithDefects.Skip((parm.PageNum - 1) * parm.PageSize).Take(parm.PageSize).ToList();
// 返回包含数据和统计数据的对象
var result = new { statistics = statistics, pageList, total = resultWithDefects.Count };
return SUCCESS(result);
}
/// <summary>
/// 查询质量BackEnd统计报表业务模块详情
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
[HttpGet("{Id}")]
public IActionResult GetQcBackEndServiceStatistics(string Id)
{
var response = _QcBackEndServiceStatisticsService.GetInfo(Id);
var info = response.Adapt<QcBackEndServiceStatistics>();
return SUCCESS(info);
}
/// <summary>
/// 添加质量BackEnd统计报表业务模块
/// </summary>
/// <returns></returns>
[HttpPost]
[Log(Title = "质量BackEnd统计报表业务模块", BusinessType = BusinessType.INSERT)]
public IActionResult AddQcBackEndServiceStatistics([FromBody] QcBackEndServiceStatisticsDto parm)
{
var modal = parm.Adapt<QcBackEndServiceStatistics>().ToCreate(HttpContext);
var response = _QcBackEndServiceStatisticsService.AddQcBackEndServiceStatistics(modal);
return SUCCESS(response);
}
/// <summary>
/// 更新质量BackEnd统计报表业务模块
/// </summary>
/// <returns></returns>
[HttpPut]
[Log(Title = "质量BackEnd统计报表业务模块", BusinessType = BusinessType.UPDATE)]
public IActionResult UpdateQcBackEndServiceStatistics(
[FromBody] QcBackEndServiceStatisticsDto parm
)
{
var modal = parm.Adapt<QcBackEndServiceStatistics>().ToUpdate(HttpContext);
var response = _QcBackEndServiceStatisticsService.UpdateQcBackEndServiceStatistics(modal);
return ToResponse(response);
}
/// <summary>
/// 删除质量BackEnd统计报表业务模块
/// </summary>
/// <returns></returns>
[HttpDelete("{ids}")]
[Log(Title = "质量BackEnd统计报表业务模块", BusinessType = BusinessType.DELETE)]
public IActionResult DeleteQcBackEndServiceStatistics(string ids)
{
int[] idsArr = Tools.SpitIntArrary(ids);
if (idsArr.Length <= 0)
{
return ToResponse(ApiResult.Error($"删除失败Id 不能为空"));
}
var response = _QcBackEndServiceStatisticsService.Delete(idsArr);
return ToResponse(response);
}
}
}