From b5412117a7447ea7abcd081334c5726675a2e7fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=AD=A3=E6=98=93?= Date: Wed, 19 Jun 2024 14:44:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E7=9C=8B=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/qc/FQC/CommonFQCController.cs | 23 +++ ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs | 99 ++++++++++++ ZR.Service/mes/qc/CommonFQCService.cs | 148 ++++++++++++++++-- .../mes/qc/IService/ICommonFQCService.cs | 11 +- 4 files changed, 270 insertions(+), 11 deletions(-) diff --git a/ZR.Admin.WebApi/Controllers/mes/qc/FQC/CommonFQCController.cs b/ZR.Admin.WebApi/Controllers/mes/qc/FQC/CommonFQCController.cs index 35356761..62f36561 100644 --- a/ZR.Admin.WebApi/Controllers/mes/qc/FQC/CommonFQCController.cs +++ b/ZR.Admin.WebApi/Controllers/mes/qc/FQC/CommonFQCController.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.SignalR; +using Microsoft.IdentityModel.Tokens; using ZR.Admin.WebApi.Extensions; using ZR.Admin.WebApi.Hubs; using ZR.Model.MES.qc.DTO; @@ -97,5 +98,27 @@ namespace ZR.Admin.WebApi.Controllers.mes.qc.IQC } return ToResponse(new ApiResult(200, "ok", result)); } + /// + /// 获取质量检测工单,生产线数据列表 + /// + /// 查询值 + /// QcCommonFqcBoardDto 看板数据 + [HttpPost("getWorkOrderFqcTableData")] + public IActionResult GetWorkOrderFqcTableData([FromBody] QcCommonFqcWorkerOrderDataQuery query) + { + try + { + var result = _commonFQCService.GetWorkOrderFqcData(query); + if (result == null) + { + return ToResponse(new ApiResult(500, "获取质量检测工单,生产线数据列表异常-01:返回值为空", result)); + } + return ToResponse(new ApiResult(200, "ok", result)); + } + catch (Exception ex) + { + return ToResponse(new ApiResult(500, ex.Message, ex.Message)); + } + } } } diff --git a/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs b/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs index 04f33751..ceb96f9b 100644 --- a/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs +++ b/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs @@ -73,6 +73,105 @@ /// public DateTime? UpdatedTime { get; set; } = default; } + /// + /// 质量检测工单,生产线数据查询条件 + /// + public class QcCommonFqcWorkerOrderDataQuery : PagerInfo + { + /// + /// 工单号 + /// + public string WorkOrderId { get; set; } + /// + /// 班组 + /// + public string Team { get; set; } + /// + /// 物料号(成品零件号) + /// + public string Partnumber { get; set; } + /// + /// 产品描述 + /// + public string Description { get; set; } + /// + /// 工单开始时间 做年周日转换 筛选工单 + /// + public DateTime? StartTime { get; set; } = default; + /// + /// 工单状态 -1 全部 0-初始状态 1-上线 2-包装完成 + /// + public int Status { get; set; } = -1; + } + + /// + /// 质量检测工单,生产线数据展示 + /// + public class QcCommonFqcWorkerOrderDataDto + { + /// + /// 工单号 + /// + public string WorkOrderId { get; set; } = string.Empty; + /// + /// 班组 + /// + public string Team { get; set; } = string.Empty; + /// + /// 物料号(成品零件号) + /// + public string Partnumber { get; set; } = string.Empty; + /// + /// 产品描述 + /// + public string Description { get; set; } = string.Empty; + /// + /// 颜色 + /// + public string Color { get; set; } = string.Empty; + /// + /// 规格 + /// + public string Specification { get; set; } = string.Empty; + /// + /// 工单理论需要打标签的数量 首检合格数 + /// + public int? WorkOrderPackageCount { get; set; } = 0; + /// + /// 工单已打标签数量 + /// + public int? WorkOrderFinishPackageNum { get; set; } = 0; + + /// + /// 是否已打完 理论 - 已打 >= 0 + /// + public bool IsFinish { get; set; } = false; + + /// + /// 工单未打标签数量 理论 - 已打 = 未打 >= 0 + /// + public int? WorkOrderNotFinishPackageNum { get; set; } = 0; + + /// + /// 工单开始时间 + /// + public DateTime? StartTime { get; set; } = default; + + /// + /// 工单结束时间 + /// + public DateTime? EndTime { get; set; } = default; + + /// + /// 工单状态 0-初始状态 1-上线 2-包装完成 + /// + public int Status { get; set; } = 0; + + /// + /// 备注 + /// + public string Remark { get; set; } = default; + } } diff --git a/ZR.Service/mes/qc/CommonFQCService.cs b/ZR.Service/mes/qc/CommonFQCService.cs index a86b18bb..7fcccd8e 100644 --- a/ZR.Service/mes/qc/CommonFQCService.cs +++ b/ZR.Service/mes/qc/CommonFQCService.cs @@ -2,7 +2,9 @@ using SqlSugar; using System; using System.Collections.Generic; +using System.Globalization; using System.Reflection; +using ZR.Model; using ZR.Model.MES.pro; using ZR.Model.MES.qc; using ZR.Model.MES.qc.DTO; @@ -46,7 +48,7 @@ namespace ZR.Service.mes.qc /// 0-不读取status 1-读取status 2- 查询status为1,2时 /// -1-全部 0-初态 1-上线 2-包装完成 /// - public List GenerateWorkOrderListUtil(int year, int week, int date,int type = 0,int status = -1) + public List GenerateWorkOrderListUtil(int year, int week, int date, int type = 0, int status = -1) { try { @@ -55,7 +57,7 @@ namespace ZR.Service.mes.qc .And(it => it.Week == week) .And(it => it.Date == date) .And(it => it.Remark3 == "是") - .AndIF(type == 1, it => it.Status == status) + .AndIF(type == 1, it => it.Status == status) .AndIF(type == 2, it => it.Status == 1 || it.Status == 2) .ToExpression(); return Context.Queryable() @@ -83,7 +85,7 @@ namespace ZR.Service.mes.qc int year = proWorkOrder.Year; int week = proWorkOrder.Week; int date = proWorkOrder.Date; - List < ProWorkorder_v2 > proWorkorders = GenerateWorkOrderListUtil(year, week, date,2); + List proWorkorders = GenerateWorkOrderListUtil(year, week, date, 2); if (proWorkorders == null) { return -1; @@ -101,10 +103,10 @@ namespace ZR.Service.mes.qc { return 2; } - - for (int i = 0;i < index; i++) + + for (int i = 0; i < index; i++) { - if(proWorkorders[i].Status == 1) + if (proWorkorders[i].Status == 1) { return 1; } @@ -145,7 +147,7 @@ namespace ZR.Service.mes.qc int year = proWorkOrder.Year; int week = proWorkOrder.Week; int date = proWorkOrder.Date; - List proWorkorders = GenerateWorkOrderListUtil(year, week, date,2); + List proWorkorders = GenerateWorkOrderListUtil(year, week, date, 2); if (proWorkorders == null) { return result; @@ -159,7 +161,7 @@ namespace ZR.Service.mes.qc index = i + 1; break; } } - List finishWorkorders = GenerateWorkOrderListUtil(year, week, date,1,2); + List finishWorkorders = GenerateWorkOrderListUtil(year, week, date, 1, 2); if (finishWorkorders == null) { return result; @@ -197,7 +199,7 @@ namespace ZR.Service.mes.qc { sum = SqlFunc.AggregateSum(it.Counter ?? 0) }).First(); - if(res == null) + if (res == null) { return workOrder.PreviousNumber; } @@ -272,7 +274,7 @@ namespace ZR.Service.mes.qc boardData.LastWorkOrderFinishPackageNum = GetWorkOrderPackingrecordCount(boardData.LastWorkOrderId); boardData.LastWorkOrderNotFinishPackageNum = boardData.LastWorkOrderPackageCount - boardData.LastWorkOrderFinishPackageNum; } - List finishWorkorders = GenerateWorkOrderListUtil(year, week, date, 1,2); + List finishWorkorders = GenerateWorkOrderListUtil(year, week, date, 1, 2); if (finishWorkorders == null) { return null; @@ -287,5 +289,131 @@ namespace ZR.Service.mes.qc return null; } } + + public PagedInfo GetWorkOrderFqcData(QcCommonFqcWorkerOrderDataQuery query) + { + try + { + // 时间解析 年 周(第几周) 日(星期) 转换 + int year = -1; + int week = -1; + int date = -1; + if (query.StartTime != null) + { + DateTime dateTime = query.StartTime ?? DateTime.Now; + GregorianCalendar gregorianCalendar = new GregorianCalendar(); + year = gregorianCalendar.GetYear(dateTime); + week = gregorianCalendar.GetWeekOfYear(dateTime, CalendarWeekRule.FirstDay, DayOfWeek.Monday); + date = (int)gregorianCalendar.GetDayOfWeek(dateTime); + if (date == 0) + { + date = 7; + } + } + // 获取当天全部工单数据 + bool isCheckData = true; + if (!string.IsNullOrEmpty(query.WorkOrderId)) + { + isCheckData = false; + } + var predicate = Expressionable.Create() + .AndIF(isCheckData, it => it.Year == year) + .AndIF(isCheckData, it => it.Week == week) + .AndIF(isCheckData, it => it.Date == date) + .And(it => it.Remark3 == "是") + .AndIF(query.Status > -1, it => it.Status == query.Status) + .AndIF(!string.IsNullOrEmpty(query.WorkOrderId), it => it.ClientWorkorder.Contains(query.WorkOrderId)) + .AndIF(!string.IsNullOrEmpty(query.Partnumber), it => it.FinishedPartNumber.Contains(query.Partnumber)) + .AndIF(!string.IsNullOrEmpty(query.Description), it => it.ProductDescription.Contains(query.Description) || it.Colour.Contains(query.Description) || + it.Specifications.Contains(query.Description)) + .ToExpression(); + List orderList = Context.Queryable() + .Where(predicate) + .OrderBy(it => it.Sort) + .ToList(); + + //TODO 分页暂不实现 + + //转换数据 + PagedInfo resultPage = new PagedInfo(); + List resultList = new List(); + foreach (var item in orderList) + { + if (item != null) + { + string Remark = ""; + WmMaterial material = Context.Queryable() + .Where(it => it.Partnumber == item.FinishedPartNumber) + .First(); + string Description = ""; + string Color = ""; + string Specification = ""; + if (material != null) + { + Description = material.Description; + Color = material.Color; + Specification = material.Specification; + } + else + { + Remark += "物料不在清单内 "; + } + // 首检报表数据拉取 + QcQualityStatisticsFirst QcFirstData = Context.Queryable() + .Where(it => it.WorkorderId == item.ClientWorkorder) + .First(); + string Team = ""; + DateTime? startTime = null; + DateTime? endTime = null; + if (QcFirstData != null) + { + Team = QcFirstData.Team; + startTime = QcFirstData.StartTime; + endTime = QcFirstData.EndTime; + if (startTime == null) + { + Remark += "工单开始时间为空 "; + } + } + int WorkOrderPackageCount = GetWorkOrderNeedPackingTotal(item.ClientWorkorder); + int WorkOrderFinishPackageNum = GetWorkOrderPackingrecordCount(item.ClientWorkorder); + int WorkOrderNotFinishPackageNum = WorkOrderPackageCount - WorkOrderFinishPackageNum; + if (WorkOrderNotFinishPackageNum < 0) + { + WorkOrderNotFinishPackageNum = 0; + } + bool IsFinish = WorkOrderNotFinishPackageNum == 0; + + QcCommonFqcWorkerOrderDataDto newItem = new() + { + WorkOrderId = item.ClientWorkorder, + Partnumber = item.FinishedPartNumber, + Description = Description, + Color = Color, + Specification = Specification, + Team = Team, + StartTime = startTime, + EndTime = endTime, + Status = item.Status, + Remark = Remark, + IsFinish = IsFinish, + WorkOrderPackageCount = WorkOrderPackageCount, + WorkOrderFinishPackageNum = WorkOrderFinishPackageNum, + WorkOrderNotFinishPackageNum = WorkOrderNotFinishPackageNum + }; + resultList.Add(newItem); + } + } + resultPage.Result = resultList; + resultPage.TotalNum = resultPage.Result.Count; + resultPage.PageSize = query.PageSize; + resultPage.PageIndex = query.PageNum; + return resultPage; + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + } } } diff --git a/ZR.Service/mes/qc/IService/ICommonFQCService.cs b/ZR.Service/mes/qc/IService/ICommonFQCService.cs index 84499406..78b002e1 100644 --- a/ZR.Service/mes/qc/IService/ICommonFQCService.cs +++ b/ZR.Service/mes/qc/IService/ICommonFQCService.cs @@ -1,4 +1,6 @@ -using ZR.Model.MES.qc.DTO; +using ZR.Model; +using ZR.Model.MES.qc.DTO; +using ZR.Model.MES.wms.Dto; namespace ZR.Service.mes.qc.IService { @@ -31,5 +33,12 @@ namespace ZR.Service.mes.qc.IService /// QcCommonFqcBoardDto 看板数据 public QcCommonFqcBoardDto GetWorkOrderBoardData(string workOrderId); + /// + /// 获取质量检测工单,生产线数据列表 + /// + /// 查询数据 + /// QcCommonFqcWorkerOrderDataDto 质量检测工单,生产线数据 + public PagedInfo GetWorkOrderFqcData(QcCommonFqcWorkerOrderDataQuery query); + } }