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