工单看板
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
/// <param name="type">0-不读取status 1-读取status 2- 查询status为1,2时</param>
|
||||
/// <param name="status">-1-全部 0-初态 1-上线 2-包装完成</param>
|
||||
/// <returns></returns>
|
||||
public List<ProWorkorder_v2> GenerateWorkOrderListUtil(int year, int week, int date,int type = 0,int status = -1)
|
||||
public List<ProWorkorder_v2> 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<ProWorkorder_v2>()
|
||||
@@ -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<ProWorkorder_v2> 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<ProWorkorder_v2> proWorkorders = GenerateWorkOrderListUtil(year, week, date,2);
|
||||
List<ProWorkorder_v2> 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<ProWorkorder_v2> finishWorkorders = GenerateWorkOrderListUtil(year, week, date,1,2);
|
||||
List<ProWorkorder_v2> 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<ProWorkorder_v2> finishWorkorders = GenerateWorkOrderListUtil(year, week, date, 1,2);
|
||||
List<ProWorkorder_v2> 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<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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user