diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMaterialReceiptService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMaterialReceiptService.cs index d4d1f6b7..a96b688f 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdMaterialReceiptService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdMaterialReceiptService.cs @@ -97,7 +97,41 @@ namespace Tnb.ProductionMgr // }).FirstAsync(); OrganizeEntity workline = await _organizeService.GetAnyParentByWorkstationId(station_id, DictConst.RegionCategoryWorklineCode); - PrdMoTask prdMoTask = await db.Queryable().Where(x => x.workline_id == workline.Id && x.worker_id == _userManager.UserId && x.mo_task_status==DictConst.InProgressEnCode) + // PrdMoTask prdMoTask = await db.Queryable().Where(x => x.workline_id == workline.Id && x.worker_id == _userManager.UserId && x.mo_task_status==DictConst.InProgressEnCode) + // .FirstAsync(); + + string nowTime = DateTime.Now.ToString("HH:mm"); + BasFactoryConfig config = await db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.DAYNIGHTWORKTIME); + Dictionary dayNightWorkTime = JsonConvert.DeserializeObject>(config.value); + string dayStime = dayNightWorkTime["白班"].Split("-")[0]; + string dayEtime = dayNightWorkTime["白班"].Split("-")[1]; + string nightStime = dayNightWorkTime["夜班"].Split("-")[0]; + string nightEtime = dayNightWorkTime["夜班"].Split("-")[1]; + string dayBeforeStime = dayNightWorkTime["白班前"].Split("-")[0]; + string dayBeforeEtime = dayNightWorkTime["白班前"].Split("-")[1]; + string dayAfterStime = dayNightWorkTime["白班后"].Split("-")[0]; + string dayAfterEtime = dayNightWorkTime["白班后"].Split("-")[1]; + string nightBeforeStime = dayNightWorkTime["夜班前"].Split("-")[0]; + string nightBeforeEtime = dayNightWorkTime["夜班前"].Split("-")[1]; + string nightAfterStime = dayNightWorkTime["夜班后"].Split("-")[0]; + string nightAfterEtime = dayNightWorkTime["夜班后"].Split("-")[1]; + + bool twoDayFlag = string.Compare(nowTime, dayStime) >= 0 && string.Compare(nowTime, dayEtime) <= 0; + bool twoNightFlag = string.Compare(nowTime,nightStime)>=0 && string.Compare(nowTime,nightEtime)<=0; + bool fourDayBeforeFlag = (string.Compare(nowTime,dayBeforeStime)>=0 && string.Compare(nowTime,dayBeforeEtime)<=0) ; + bool fourDayAfterFlag = (string.Compare(nowTime,dayAfterStime)>=0 && string.Compare(nowTime,dayAfterEtime)<=0) ; + bool fourNightBeforeFlag = (string.Compare(nowTime,nightBeforeStime)>=0 && string.Compare(nowTime,nightBeforeEtime)<=0) ; + bool fourNightAfterFlag = (string.Compare(nowTime,nightAfterStime)>=0 && string.Compare(nowTime,nightAfterEtime)<=0) ; + + string userId = _userManager.UserId; + PrdMoTask prdMoTask = await db.Queryable(). + Where(x => x.workline_id == workline.Id && x.mo_task_status==DictConst.InProgressEnCode) + .Where(x=>(x.scheduling_class_type=="1" && twoDayFlag && x.dayshift_worker_id==userId) + || (x.scheduling_class_type=="1" && twoNightFlag && x.nightshift_worker_id==userId) + || (x.scheduling_class_type=="2" && fourDayBeforeFlag && x.dayshift_worker_id==userId) + || (x.scheduling_class_type=="2" && fourDayAfterFlag && x.dayshiftafter_worker_id==userId) + || (x.scheduling_class_type=="2" && fourNightBeforeFlag && x.nightshift_worker_id==userId) + || (x.scheduling_class_type=="2" && fourNightAfterFlag && x.nightshiftafter_worker_id==userId)) .FirstAsync(); if (prdMoTask == null) diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs index 5954b693..556e20a6 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs @@ -1629,12 +1629,12 @@ namespace Tnb.ProductionMgr } } - if (prdTaskList.Where(p => p.mo_task_status == "Pause").Count() > 0 && behavior==PrdTaskBehavior.Start) + if (list.Where(p => p.mo_task_status == "Pause").Count() > 0 && behavior==PrdTaskBehavior.Start) { - TimerPoolHelper.GetInstance().StartTimer(TimeCallback,prdTaskList.Where(p => p.mo_task_status == "Pause").ToList(),TimeSpan.FromHours(1),Timeout.InfiniteTimeSpan); - }else if (prdTaskList.Where(p => p.mo_task_status == "ToBeStarted").Count() > 0 && behavior == PrdTaskBehavior.Start) + TimerPoolHelper.GetInstance().StartTimer(TimeCallback,list.Where(p => p.mo_task_status == "Pause").ToList(),TimeSpan.FromHours(1),Timeout.InfiniteTimeSpan); + }else if (list.Where(p => p.mo_task_status == "ToBeStarted").Count() > 0 && behavior == PrdTaskBehavior.Start) { - foreach (PrdMoTask? task in prdTaskList.Where(p => p.mo_task_status == "ToBeStarted").ToList()) + foreach (PrdMoTask? task in list.Where(p => p.mo_task_status == "ToBeStarted").ToList()) { ToolMolds toolMolds = await _db.Queryable().SingleAsync(x=>x.id==task.mold_id); TriggerPlanEntity entity = new() @@ -1668,13 +1668,12 @@ namespace Tnb.ProductionMgr { int hour = int.Parse(qcCheckPlanAdds[0].content.Split(" ")[2].Split("/")[1]); int minute = int.Parse(qcCheckPlanAdds[0].content.Split(" ")[1].Split("/")[1]); - if (hour > 0) + if (minute > 0) { - TimerPoolHelper.GetInstance().StartTimer(TimeCallback2,prdTaskList.Where(p => p.mo_task_status == "Pause" || p.mo_task_status == "ToBeStarted").ToList(),TimeSpan.FromHours(hour),Timeout.InfiniteTimeSpan,false); - - }else if (minute > 0) + TimerPoolHelper.GetInstance().StartTimer(TimeCallback2,list.Where(p => p.mo_task_status == "Pause" || p.mo_task_status == "ToBeStarted").ToList(),TimeSpan.FromMinutes(minute),TimeSpan.FromMinutes(minute),false); + }else if (hour > 0) { - TimerPoolHelper.GetInstance().StartTimer(TimeCallback2,prdTaskList.Where(p => p.mo_task_status == "Pause" || p.mo_task_status == "ToBeStarted").ToList(),TimeSpan.FromMinutes(minute),Timeout.InfiniteTimeSpan,false); + TimerPoolHelper.GetInstance().StartTimer(TimeCallback2,list.Where(p => p.mo_task_status == "Pause" || p.mo_task_status == "ToBeStarted").ToList(),TimeSpan.FromHours(hour),TimeSpan.FromHours(hour),false); } } @@ -1682,7 +1681,7 @@ namespace Tnb.ProductionMgr if (behavior == PrdTaskBehavior.Pause) { - foreach (PrdMoTask? task in prdTaskList.Where(p => p.mo_task_status == "ToBeStarted").ToList()) + foreach (PrdMoTask? task in list.Where(p => p.mo_task_status == "InProgress").ToList()) { TimerPoolHelper.GetInstance().DisposeTimer(new Dictionary() {