using Infrastructure.Attribute;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Globalization;
using ZR.Model.MES.pro;
using ZR.Model.MES.ql;
using ZR.Service.mes.ql.IService;
namespace ZR.Service.mes.ql
{
///
/// 查询报表
///
[AppService(ServiceType = typeof(IPLBatchService), ServiceLifetime = LifeTime.Transient)]
public class PLBatchService : BaseService, IPLBatchService
{
///
/// 增加批处理数据
///
///
///
///
///
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 lst = new List();
lst.Add(t1); lst.Add(t2); lst.Add(t3); lst.Add(t4); lst.Add(t5); lst.Add(t6);
int ret = Context.Insertable(lst).ExecuteReturnIdentity();
return ret;
}
///
/// 根据生成日期,自动更新
///
/// 操作日期
///
///
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()
.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 workOrderList = Context.Queryable()
.Where(predicate)
.OrderByDescending(it => it.Sort)
.ToList();
foreach (ProWorkorder_v2 workorder in workOrderList)
{
List pLBatches = CreatePLBatchRecordsByWorkOrder(workorder);
int res = Context.Insertable(pLBatches).ExecuteCommand();
if (res == 0)
{
Context.Ado.RollbackTran();
throw new Exception("插入批量检测记录异常,异常工单:" + workorder.ClientWorkorder);
}
}
Context.Ado.CommitTran();
return 1;
}
catch (Exception)
{
Context.Ado.RollbackTran();
throw;
}
}
///
/// 根据工单创建批量检测数据
///
///
///
///
///
public List 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 list = new()
{
t1,
t2,
t3,
t4,
t5,
t6
};
return list;
}
///
/// 删除批处理数据
///
///
///
///
public int DelPLBatchRecords(string idGroup)
{
return Context.Deleteable().Where(it => it.IdGroup.Equals(idGroup)).ExecuteCommand();
}
///
/// 获取批处理数据
///
///
///
///
///
///
///
public (List, 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()
.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 data = Context.Queryable()
.Where(predicate)
.OrderByDescending(it => it.IdGroup)
.OrderBy(it => it.Id)
.ToPageList(pageNum, pageSize, ref totalNum);
return (data, totalNum);
}
///
/// 更新批处理数据
///
///
///
///
public int UpdatePLBatchRecords(List list)
{
return Context.Updateable(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,
};
}
///
/// 获取今天是本年的第几周
///
///
///
static int GetWeekOfYear(DateTime date)
{
// 使用ISO 8601标准计算一年中的第几周
return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(
date,
CalendarWeekRule.FirstFourDayWeek, // 每年的第一周必须至少有4天属于该年
DayOfWeek.Monday
); // 设置一周的第一天为星期一
}
///
/// 获取星期几的数字(7为周日)
///
///
///
static int ConvertDayOfWeekToCustomFormat(DayOfWeek dayOfWeek)
{
// 将 DayOfWeek 枚举值转换为自定义格式:周一为1,周日为7
if (dayOfWeek == DayOfWeek.Sunday)
{
return 7;
}
else
{
return (int)dayOfWeek;
}
}
}
}