shgx_tz_mom/ZR.Service/mes/ql/PLBatchService.cs

344 lines
14 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Infrastructure.Attribute;
using SqlSugar;
using System;
using System.Globalization;
using ZR.Model.MES.pro;
using ZR.Model.MES.ql;
using ZR.Service.mes.ql.IService;
namespace ZR.Service.mes.ql
{
/// <summary>
/// 查询报表
/// </summary>
[AppService(ServiceType = typeof(IPLBatchService), ServiceLifetime = LifeTime.Transient)]
public class PLBatchService : BaseService<PLBatch>, IPLBatchService
{
/// <summary>
/// 增加批处理数据
/// </summary>
/// <param name="num"></param>
/// <param name="size"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public int AddPLBatchRecords(int num, int size)
{
PLBatch t1 = GetDefaultPLBatch();
PLBatch t2 = GetDefaultPLBatch();
PLBatch t3 = GetDefaultPLBatch();
PLBatch t4 = GetDefaultPLBatch();
PLBatch t5 = GetDefaultPLBatch();
PLBatch t6 = GetDefaultPLBatch();
t1.Value01 = "15°"; t1.Value07 = "0"; t1.Value09 = "R1"; t1.Value14 = "底漆"; t1.Value19 = "2";
t2.Value01 = "25°"; t2.Value07 = "0"; t2.Value09 = "R2"; t2.Value14 = "色漆"; t2.Value19 = "2";
t3.Value01 = "45°"; t3.Value07 = "0"; t3.Value09 = "R3"; t3.Value14 = "云母"; t3.Value19 = "2";
t4.Value01 = "75°"; t4.Value07 = "0"; t4.Value09 = "R4"; t4.Value14 = "清漆"; t4.Value19 = "2";
t5.Value01 = "110°"; t5.Value07 = "0"; t5.Value09 = "R5"; t5.Value14 = "总膜厚"; t5.Value19 = "2";
t6.Value01 = ""; t6.Value07 = "0"; t6.Value09 = "R6"; t6.Value14 = ""; t6.Value19 = "2";
t2.IdGroup = t1.IdGroup;
t3.IdGroup = t1.IdGroup;
t4.IdGroup = t1.IdGroup;
t5.IdGroup = t1.IdGroup;
t6.IdGroup = t1.IdGroup;
List<PLBatch> lst = new List<PLBatch>();
lst.Add(t1); lst.Add(t2); lst.Add(t3); lst.Add(t4); lst.Add(t5); lst.Add(t6);
int ret = Context.Insertable<PLBatch>(lst).ExecuteReturnIdentity();
return ret;
}
/// <summary>
/// 根据生成日期,自动更新
/// </summary>
/// <param name="actionDate">操作日期</param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public int CreatePLBatchRecordsByWorkOrder(DateTime actionDate)
{
try
{
Context.Ado.BeginTran();
// 查询工单
int year = actionDate.Year;
int week = GetWeekOfYear(actionDate);
int date = ConvertDayOfWeekToCustomFormat(actionDate.DayOfWeek);
var predicate = Expressionable
.Create<ProWorkorder_v2>()
.And(it => it.Year == year)
.And(it => it.Week == week)
.And(it => it.Date == date)
//.And(it => it.Remark2.Contains("调试"))
.And(it => it.Remark3 == "是")
.ToExpression();
List<ProWorkorder_v2> workOrderList = Context.Queryable<ProWorkorder_v2>()
.Where(predicate)
.OrderByDescending(it => it.Sort)
.ToList();
foreach (ProWorkorder_v2 workorder in workOrderList)
{
List<PLBatch> pLBatches = CreatePLBatchRecordsByWorkOrder(workorder);
int res = Context.Insertable<PLBatch>(pLBatches).ExecuteCommand();
if (res == 0)
{
Context.Ado.RollbackTran();
throw new Exception("插入批量检测记录异常,异常工单:" + workorder.ClientWorkorder);
}
}
Context.Ado.CommitTran();
return 1;
}
catch (Exception)
{
Context.Ado.RollbackTran();
throw;
}
}
/// <summary>
/// 根据年月日生成实验室批量工单
/// </summary>
/// <param name="year"></param>
/// <param name="week"></param>
/// <param name="day"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public int CreatePLBatchRecordsByWorkOrder(int year, int week, int day)
{
try
{
Context.Ado.BeginTran();
// 查询工单
var predicate = Expressionable
.Create<ProWorkorder_v2>()
.And(it => it.Year == year)
.And(it => it.Week == week)
.And(it => it.Date == day)
//.And(it => it.Remark2.Contains("调试"))
.And(it => it.Remark3 == "是")
.ToExpression();
List<ProWorkorder_v2> workOrderList = Context.Queryable<ProWorkorder_v2>()
.Where(predicate)
.OrderByDescending(it => it.Sort)
.ToList();
foreach (ProWorkorder_v2 workorder in workOrderList)
{
List<PLBatch> pLBatches = CreatePLBatchRecordsByWorkOrder(workorder);
int res = Context.Insertable<PLBatch>(pLBatches).ExecuteCommand();
if (res == 0)
{
Context.Ado.RollbackTran();
throw new Exception("插入批量检测记录异常,异常工单:" + workorder.ClientWorkorder);
}
}
Context.Ado.CommitTran();
return 1;
}
catch (Exception)
{
Context.Ado.RollbackTran();
throw;
}
}
/// <summary>
/// 根据工单创建批量检测数据
/// </summary>
/// <param name="num"></param>
/// <param name="size"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public List<PLBatch> CreatePLBatchRecordsByWorkOrder(ProWorkorder_v2 workorder)
{
PLBatch t1 = GetDefaultPLBatch();
PLBatch t2 = GetDefaultPLBatch();
PLBatch t3 = GetDefaultPLBatch();
PLBatch t4 = GetDefaultPLBatch();
PLBatch t5 = GetDefaultPLBatch();
PLBatch t6 = GetDefaultPLBatch();
// 工单信息录入
t1.Dt = DateTime.Now.ToString("yyyy.MM.dd");
t1.Description = workorder.ProductDescription;
t1.Code = workorder.Colour;
t1.Workorder = workorder.ClientWorkorder;
t2.Dt = DateTime.Now.ToString("yyyy.MM.dd");
t2.Description = workorder.ProductDescription;
t2.Code = workorder.Colour;
t2.Workorder = workorder.ClientWorkorder;
t3.Dt = DateTime.Now.ToString("yyyy.MM.dd");
t3.Description = workorder.ProductDescription;
t3.Code = workorder.Colour;
t3.Workorder = workorder.ClientWorkorder;
t4.Dt = DateTime.Now.ToString("yyyy.MM.dd");
t4.Description = workorder.ProductDescription;
t4.Code = workorder.Colour;
t4.Workorder = workorder.ClientWorkorder;
t5.Dt = DateTime.Now.ToString("yyyy.MM.dd");
t5.Description = workorder.ProductDescription;
t5.Code = workorder.Colour;
t5.Workorder = workorder.ClientWorkorder;
t6.Dt = DateTime.Now.ToString("yyyy.MM.dd");
t6.Description = workorder.ProductDescription;
t6.Code = workorder.Colour;
t6.Workorder = workorder.ClientWorkorder;
t1.Value01 = "15°"; t1.Value07 = "0"; t1.Value09 = "R1"; t1.Value14 = "底漆"; t1.Value19 = "2";
t2.Value01 = "25°"; t2.Value07 = "0"; t2.Value09 = "R2"; t2.Value14 = "色漆"; t2.Value19 = "2";
t3.Value01 = "45°"; t3.Value07 = "0"; t3.Value09 = "R3"; t3.Value14 = "云母"; t3.Value19 = "2";
t4.Value01 = "75°"; t4.Value07 = "0"; t4.Value09 = "R4"; t4.Value14 = "清漆"; t4.Value19 = "2";
t5.Value01 = "110°"; t5.Value07 = "0"; t5.Value09 = "R5"; t5.Value14 = "总膜厚"; t5.Value19 = "2";
t6.Value01 = ""; t6.Value07 = "0"; t6.Value09 = "R6"; t6.Value14 = ""; t6.Value19 = "2";
t2.IdGroup = t1.IdGroup;
t3.IdGroup = t1.IdGroup;
t4.IdGroup = t1.IdGroup;
t5.IdGroup = t1.IdGroup;
t6.IdGroup = t1.IdGroup;
List<PLBatch> list = new()
{
t1,
t2,
t3,
t4,
t5,
t6
};
return list;
}
/// <summary>
/// 删除批处理数据
/// </summary>
/// <param name="idGroup"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public int DelPLBatchRecords(string idGroup)
{
return Context.Deleteable<PLBatch>().Where(it => it.IdGroup.Equals(idGroup)).ExecuteCommand();
}
/// <summary>
/// 获取批处理数据
/// </summary>
/// <param name="starttime"></param>
/// <param name="endTime"></param>
/// <param name="pageNum"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public (List<PLBatch>, int) GetPLBatchTable(DateTime starttime, DateTime endTime, string code, string description, int pageNum, int pageSize, int dateType, string workOrder)
{
//starttime = starttime.ToLocalTime();
//endTime = endTime.ToLocalTime();
int totalNum = 0;
var predicate = Expressionable.Create<PLBatch>()
.AndIF(starttime > new DateTime(2023, 1, 1, 0, 0, 0) && dateType == 1, it => it.CreatedTime >= starttime)
.AndIF(endTime > new DateTime(2023, 1, 1, 0, 0, 0) && dateType == 1, it => it.CreatedTime <= endTime)
.AndIF(starttime > new DateTime(2023, 1, 1, 0, 0, 0) && dateType == 2, it => Convert.ToDateTime(it.Dt) >= starttime)
.AndIF(endTime > new DateTime(2023, 1, 1, 0, 0, 0) && dateType == 2, it => Convert.ToDateTime(it.Dt) <= endTime)
.AndIF(!string.IsNullOrEmpty(workOrder), it => it.Workorder.Contains(workOrder))
.AndIF(!string.IsNullOrEmpty(code), it => it.Code.Contains(code))
.AndIF(!string.IsNullOrEmpty(description), it => it.Description.Contains(description))
.ToExpression();
//int totalNum = 0;
List<PLBatch> data = Context.Queryable<PLBatch>()
.Where(predicate)
.OrderByDescending(it => it.IdGroup)
.OrderBy(it => it.Id)
.ToPageList(pageNum, pageSize, ref totalNum);
return (data, totalNum);
}
/// <summary>
/// 更新批处理数据
/// </summary>
/// <param name="list"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public int UpdatePLBatchRecords(List<PLBatch> list)
{
return Context.Updateable<PLBatch>(list).ExecuteCommand();
}
private PLBatch GetDefaultPLBatch()
{
return new PLBatch()
{
Id = 0,
IdGroup = DateTime.Now.ToString("yyyyMMddHHmmssfff"),
Workorder = "",
Description = "",
Dt = "",
Code = "",
Value01 = "",
Value02 = "",
Value03 = "",
Value04 = "",
Value05 = "",
Value06 = "",
Value07 = "",
Value08 = "",
Value09 = "",
Value10 = "",
Value11 = "",
Value12 = "",
Value13 = "",
Value14 = "",
Value15 = "",
Value16 = "",
Value17 = "",
Value18 = "",
Value19 = "",
CreatedBy = "user",
CreatedTime = DateTime.Now,
UpdatedBy = "user",
UpdatedTime = DateTime.Now,
};
}
/// <summary>
/// 获取今天是本年的第几周
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
static int GetWeekOfYear(DateTime date)
{
// 使用ISO 8601标准计算一年中的第几周
return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(
date,
CalendarWeekRule.FirstFourDayWeek, // 每年的第一周必须至少有4天属于该年
DayOfWeek.Monday
); // 设置一周的第一天为星期一
}
/// <summary>
/// 获取星期几的数字7为周日
/// </summary>
/// <param name="dayOfWeek"></param>
/// <returns></returns>
static int ConvertDayOfWeekToCustomFormat(DayOfWeek dayOfWeek)
{
// 将 DayOfWeek 枚举值转换为自定义格式周一为1周日为7
if (dayOfWeek == DayOfWeek.Sunday)
{
return 7;
}
else
{
return (int)dayOfWeek;
}
}
}
}