质量大屏
This commit is contained in:
@@ -1,6 +0,0 @@
|
||||
namespace DOAN.Admin.WebApi.Controllers.MES.SmartScreen.Quality
|
||||
{
|
||||
public class QualityController
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
using DOAN.Admin.WebApi.Filters;
|
||||
using DOAN.Service.MES.SmartScreen.Order;
|
||||
using DOAN.Service.MES.SmartScreen.Order.IService;
|
||||
using DOAN.Service.MES.SmartScreen.Quality.IService;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace DOAN.Admin.WebApi.Controllers.MES.SmartScreen.Quality
|
||||
{
|
||||
/// <summary>
|
||||
/// 质量大屏
|
||||
/// </summary>
|
||||
[Verify]
|
||||
[Route("mes/qualityManagement/QualitySmart")]
|
||||
public class QualitySmartController : BaseController
|
||||
{
|
||||
/// <summary>
|
||||
/// 质量大屏接口
|
||||
/// </summary>
|
||||
private readonly IQualitySmartService _QualitySmartService;
|
||||
|
||||
public QualitySmartController(IQualitySmartService QualitySmartService)
|
||||
{
|
||||
_QualitySmartService = QualitySmartService;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 查询质量大屏头信息
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("GetQualityScreenHead")]
|
||||
public IActionResult GetQualityScreenHead()
|
||||
{
|
||||
|
||||
var response = _QualitySmartService.GetQualityScreenHead();
|
||||
return SUCCESS(response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 按周获取质量大屏数据
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("GetQualitySmartScreenForWeek")]
|
||||
public IActionResult GetQualitySmartScreenForWeek()
|
||||
{
|
||||
|
||||
var response = _QualitySmartService.GetQualitySmartScreenForWeek();
|
||||
return SUCCESS(response);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 按月获取质量大屏数据
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("GetQualitySmartScreenForMonth")]
|
||||
public IActionResult GetQualitySmartScreenForMonth()
|
||||
{
|
||||
|
||||
var response = _QualitySmartService.GetQualitySmartScreenForMonth();
|
||||
return SUCCESS(response);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DOAN.Model.MES.SmartScreen.Quality.Dto
|
||||
{
|
||||
public class QualityScreenHeadDto
|
||||
{
|
||||
public int? MonthFQC { get; set; }
|
||||
|
||||
public int? WeekFQC { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DOAN.Model.MES.SmartScreen.Quality.Dto
|
||||
{
|
||||
public class QualitySmartScreenDto
|
||||
{
|
||||
public string StoveCode { get; set; }
|
||||
|
||||
public string DefectName { get; set; }
|
||||
|
||||
public int? Number { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DOAN.Model.MES.SmartScreen.Quality
|
||||
{
|
||||
internal class Quality
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DOAN.Service.MES.SmartScreen.Quality.IService
|
||||
{
|
||||
internal class IQualityService
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
using DOAN.Model.MES.order;
|
||||
using DOAN.Model.MES.quality.FQC;
|
||||
using DOAN.Model.MES.SmartScreen.Quality.Dto;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DOAN.Service.MES.SmartScreen.Quality.IService
|
||||
{
|
||||
public interface IQualitySmartService : IBaseService<QcFinishedproductDefectCollection>
|
||||
{
|
||||
QualityScreenHeadDto GetQualityScreenHead();
|
||||
|
||||
List<QualitySmartScreenDto> GetQualitySmartScreenForWeek();
|
||||
List<QualitySmartScreenDto> GetQualitySmartScreenForMonth();
|
||||
}
|
||||
}
|
||||
142
DOAN.Service/MES/SmartScreen/Quality/QualitySmartService.cs
Normal file
142
DOAN.Service/MES/SmartScreen/Quality/QualitySmartService.cs
Normal file
@@ -0,0 +1,142 @@
|
||||
using DOAN.Model.MES.order;
|
||||
using DOAN.Model.MES.product;
|
||||
using DOAN.Model.MES.quality.FQC;
|
||||
using DOAN.Model.MES.SmartScreen.Quality.Dto;
|
||||
using DOAN.Service.MES.SmartScreen.Order.IService;
|
||||
using DOAN.Service.MES.SmartScreen.Quality.IService;
|
||||
using Infrastructure.Attribute;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DOAN.Service.MES.SmartScreen.Quality
|
||||
{
|
||||
/// <summary>
|
||||
/// 质量大屏Service业务层处理
|
||||
/// </summary>
|
||||
[AppService(ServiceType = typeof(IQualitySmartService), ServiceLifetime = LifeTime.Transient)]
|
||||
public class QualitySmartService : BaseService<QcFinishedproductDefectCollection>, IQualitySmartService
|
||||
{
|
||||
public QualityScreenHeadDto GetQualityScreenHead()
|
||||
{
|
||||
QualityScreenHeadDto qualityScreenHeadDto = new QualityScreenHeadDto();
|
||||
// 当前日期
|
||||
DateTime now = DateTime.Now;
|
||||
// 当前月份的第一天 00:00:00
|
||||
DateTime firstDayOfMonth = new DateTime(now.Year, now.Month, 1);
|
||||
// 当前月份的最后一天 23:59:59
|
||||
DateTime lastDayOfMonth = new DateTime(now.Year, now.Month, 1)
|
||||
.AddMonths(1)
|
||||
.AddSeconds(-1);
|
||||
// 计算本周周一(第一天)
|
||||
int daysUntilMonday = ((int)now.DayOfWeek - (int)DayOfWeek.Monday + 7) % 7;
|
||||
DateTime startOfWeek = now.AddDays(-daysUntilMonday);
|
||||
// 计算本周周日(最后一天)23:59:59
|
||||
DateTime endOfWeek = startOfWeek.AddDays(6).Date
|
||||
.AddHours(23)
|
||||
.AddMinutes(59)
|
||||
.AddSeconds(59);
|
||||
var response = Queryable().ToList();
|
||||
|
||||
qualityScreenHeadDto.MonthFQC = response.Where(o => o.CheckDatetime >= firstDayOfMonth && o.CheckDatetime <= lastDayOfMonth).Sum(o=>o.Number);
|
||||
qualityScreenHeadDto.WeekFQC= response.Where(o => o.CheckDatetime >= startOfWeek && o.CheckDatetime <= endOfWeek).Sum(o => o.Number);
|
||||
return qualityScreenHeadDto;
|
||||
}
|
||||
|
||||
public List<QualitySmartScreenDto> GetQualitySmartScreenForWeek()
|
||||
{
|
||||
// 获取当前日期
|
||||
DateTime now = DateTime.Now;
|
||||
|
||||
// 计算本周周一(第一天)
|
||||
int daysUntilMonday = ((int)now.DayOfWeek - (int)DayOfWeek.Monday + 7) % 7;
|
||||
DateTime startOfWeek = now.AddDays(-daysUntilMonday);
|
||||
|
||||
// 计算本周周日(最后一天)23:59:59
|
||||
DateTime endOfWeek = startOfWeek.AddDays(6).Date
|
||||
.AddHours(23)
|
||||
.AddMinutes(59)
|
||||
.AddSeconds(59);
|
||||
|
||||
// 查询本周的质量缺陷数据
|
||||
var defectQuery = Queryable()
|
||||
.Where(o => o.CheckDatetime >= startOfWeek && o.CheckDatetime <= endOfWeek);
|
||||
|
||||
// 获取有缺陷的工单列表
|
||||
List<string> defectWorkorders = defectQuery
|
||||
.Select(o => o.Workorder)
|
||||
.Distinct()
|
||||
.ToList();
|
||||
|
||||
if (defectWorkorders.Count == 0)
|
||||
{
|
||||
return new List<QualitySmartScreenDto>();
|
||||
}
|
||||
|
||||
// 查询相关工单信息
|
||||
var workorderQuery = Context.Queryable<ProWorkorder>()
|
||||
.Where(o => defectWorkorders.Contains(o.Workorder));
|
||||
|
||||
// 使用 SqlSugar 进行联表查询和分组统计
|
||||
var result = defectQuery
|
||||
.InnerJoin<ProWorkorder>((defect, work) => defect.Workorder == work.Workorder)
|
||||
.GroupBy((defect, work) => new { work.StoveCode, defect.DefectName })
|
||||
.Select((defect, work) => new QualitySmartScreenDto
|
||||
{
|
||||
StoveCode = work.StoveCode,
|
||||
DefectName = defect.DefectName,
|
||||
Number = SqlFunc.AggregateSum(defect.Number)
|
||||
})
|
||||
.ToList();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public List<QualitySmartScreenDto> GetQualitySmartScreenForMonth()
|
||||
{
|
||||
// 获取当前日期
|
||||
DateTime now = DateTime.Now;
|
||||
// 当前月份的第一天 00:00:00
|
||||
DateTime firstDayOfMonth = new DateTime(now.Year, now.Month, 1);
|
||||
// 当前月份的最后一天 23:59:59
|
||||
DateTime lastDayOfMonth = new DateTime(now.Year, now.Month, 1)
|
||||
.AddMonths(1)
|
||||
.AddSeconds(-1);
|
||||
// 查询本周的质量缺陷数据
|
||||
var defectQuery = Queryable()
|
||||
.Where(o => o.CheckDatetime >= firstDayOfMonth && o.CheckDatetime <= lastDayOfMonth);
|
||||
|
||||
// 获取有缺陷的工单列表
|
||||
List<string> defectWorkorders = defectQuery
|
||||
.Select(o => o.Workorder)
|
||||
.Distinct()
|
||||
.ToList();
|
||||
|
||||
if (defectWorkorders.Count == 0)
|
||||
{
|
||||
return new List<QualitySmartScreenDto>();
|
||||
}
|
||||
|
||||
// 查询相关工单信息
|
||||
var workorderQuery = Context.Queryable<ProWorkorder>()
|
||||
.Where(o => defectWorkorders.Contains(o.Workorder));
|
||||
|
||||
// 使用 SqlSugar 进行联表查询和分组统计
|
||||
var result = defectQuery
|
||||
.InnerJoin<ProWorkorder>((defect, work) => defect.Workorder == work.Workorder)
|
||||
.GroupBy((defect, work) => new { work.StoveCode, defect.DefectName })
|
||||
.Select((defect, work) => new QualitySmartScreenDto
|
||||
{
|
||||
StoveCode = work.StoveCode,
|
||||
DefectName = defect.DefectName,
|
||||
Number = SqlFunc.AggregateSum(defect.Number)
|
||||
})
|
||||
.ToList();
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user