工单看板

This commit is contained in:
2024-06-19 14:44:21 +08:00
parent f16c35ca03
commit b5412117a7
4 changed files with 270 additions and 11 deletions

View File

@@ -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));
}
/// <summary>
/// 获取质量检测工单,生产线数据列表
/// </summary>
/// <param name="query">查询值</param>
/// <returns>QcCommonFqcBoardDto 看板数据</returns>
[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));
}
}
}
}

View File

@@ -73,6 +73,105 @@
///</summary>
public DateTime? UpdatedTime { get; set; } = default;
}
/// <summary>
/// 质量检测工单,生产线数据查询条件
///</summary>
public class QcCommonFqcWorkerOrderDataQuery : PagerInfo
{
/// <summary>
/// 工单号
///</summary>
public string WorkOrderId { get; set; }
/// <summary>
/// 班组
///</summary>
public string Team { get; set; }
/// <summary>
/// 物料号(成品零件号)
/// </summary>
public string Partnumber { get; set; }
/// <summary>
/// 产品描述
/// </summary>
public string Description { get; set; }
/// <summary>
/// 工单开始时间 做年周日转换 筛选工单
///</summary>
public DateTime? StartTime { get; set; } = default;
/// <summary>
/// 工单状态 -1 全部 0-初始状态 1-上线 2-包装完成
///</summary>
public int Status { get; set; } = -1;
}
/// <summary>
/// 质量检测工单,生产线数据展示
///</summary>
public class QcCommonFqcWorkerOrderDataDto
{
/// <summary>
/// 工单号
///</summary>
public string WorkOrderId { get; set; } = string.Empty;
/// <summary>
/// 班组
///</summary>
public string Team { get; set; } = string.Empty;
/// <summary>
/// 物料号(成品零件号)
/// </summary>
public string Partnumber { get; set; } = string.Empty;
/// <summary>
/// 产品描述
/// </summary>
public string Description { get; set; } = string.Empty;
/// <summary>
/// 颜色
/// </summary>
public string Color { get; set; } = string.Empty;
/// <summary>
/// 规格
/// </summary>
public string Specification { get; set; } = string.Empty;
/// <summary>
/// 工单理论需要打标签的数量 首检合格数
///</summary>
public int? WorkOrderPackageCount { get; set; } = 0;
/// <summary>
/// 工单已打标签数量
///</summary>
public int? WorkOrderFinishPackageNum { get; set; } = 0;
/// <summary>
/// 是否已打完 理论 - 已打 >= 0
///</summary>
public bool IsFinish { get; set; } = false;
/// <summary>
/// 工单未打标签数量 理论 - 已打 = 未打 >= 0
///</summary>
public int? WorkOrderNotFinishPackageNum { get; set; } = 0;
/// <summary>
/// 工单开始时间
///</summary>
public DateTime? StartTime { get; set; } = default;
/// <summary>
/// 工单结束时间
///</summary>
public DateTime? EndTime { get; set; } = default;
/// <summary>
/// 工单状态 0-初始状态 1-上线 2-包装完成
///</summary>
public int Status { get; set; } = 0;
/// <summary>
/// 备注
///</summary>
public string Remark { get; set; } = default;
}
}

View File

@@ -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;
@@ -287,5 +289,131 @@ namespace ZR.Service.mes.qc
return null;
}
}
public PagedInfo<QcCommonFqcWorkerOrderDataDto> 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<ProWorkorder_v2>()
.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<ProWorkorder_v2> orderList = Context.Queryable<ProWorkorder_v2>()
.Where(predicate)
.OrderBy(it => it.Sort)
.ToList();
//TODO 分页暂不实现
//转换数据
PagedInfo<QcCommonFqcWorkerOrderDataDto> resultPage = new PagedInfo<QcCommonFqcWorkerOrderDataDto>();
List<QcCommonFqcWorkerOrderDataDto> resultList = new List<QcCommonFqcWorkerOrderDataDto>();
foreach (var item in orderList)
{
if (item != null)
{
string Remark = "";
WmMaterial material = Context.Queryable<WmMaterial>()
.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<QcQualityStatisticsFirst>()
.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);
}
}
}
}

View File

@@ -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
/// <returns>QcCommonFqcBoardDto 看板数据</returns>
public QcCommonFqcBoardDto GetWorkOrderBoardData(string workOrderId);
/// <summary>
/// 获取质量检测工单,生产线数据列表
/// </summary>
/// <param name="query">查询数据</param>
/// <returns>QcCommonFqcWorkerOrderDataDto 质量检测工单,生产线数据</returns>
public PagedInfo<QcCommonFqcWorkerOrderDataDto> GetWorkOrderFqcData(QcCommonFqcWorkerOrderDataQuery query);
}
}