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);
+
}
}