using System; using iWareSql.DBModel; using System.Linq; using XiGang.Core.Model; using iWareCommon; using iWareCommon.Common.Globle; namespace iWareSql.DataAccess { /// /// 出库计划 /// public class PlanOutTaskHandler { /// /// 是否需要插队 /// /// /// true:需要,false:不需要插队 public static bool IsNeedChaDuiCommonTaskSequenceGuid(DbModel context, string taskSequenceGuid) { if (string.IsNullOrEmpty(taskSequenceGuid)) { return false;//不需要插队 } var queryState1 = (int)OutTaskDetailStateEnum.完成; var queryState2 = (int)OutTaskDetailStateEnum.缺料; var queryState3 = (int)OutTaskDetailStateEnum.已取消; var detaiList = context.Plan_OutTaskDetail.Where(x => (x.OutTaskDetailState != queryState1 && x.OutTaskDetailState != queryState2 && x.OutTaskDetailState != queryState3) && x.TaskSequenceGuid == taskSequenceGuid ).ToList(); if (detaiList != null && detaiList.Count > 0) {//如果有,表示还有一些未结束,就认为 不需要插队 return false;//不需要插队 } else { return true;//需要插队 } } /// /// 是否存在 还在下发的计划 /// /// /// true:存在,false:不存在 public static bool IsExistRuningOutTaskDetail(DbModel context) { var queryState1 = (int)OutTaskDetailStateEnum.等待中; var queryState2 = (int)OutTaskDetailStateEnum.缺料; var detaiList = context.Plan_OutTaskDetail.Where(x => x.OutTaskDetailState == queryState1 || x.OutTaskDetailState == queryState2).ToList(); if (detaiList != null && detaiList.Count > 0) { var allCount = detaiList.Count; var queLiaoCount = detaiList.Where(x => x.OperationRemark == SysGloble.QUELIAO_STR).Count(); if (queLiaoCount == allCount) { return false; } return true; } else { return false; } } /// /// 当出库任务rgv任务完成后,更新状态 /// /// /// /// /// public static void UpdatePlanStateToFinished(DbModel context, Task_Main mainTask, string remark) { //获取主表任务 Plan_OutTaskDetail outDetailTask = context.Plan_OutTaskDetail.Where(x => x.Id == mainTask.Plan_OutTaskDetail_Id).FirstOrDefault(); if (outDetailTask != null) { Plan_OutTask outTask = context.Plan_OutTask.Where(x => x.Id == outDetailTask.M_PlanId).First(); var changeOutTaskDetailState = OutTaskDetailStateEnum.完成; PlanOutTaskHandler.UpdateStateForOutTaskDetail(outDetailTask, changeOutTaskDetailState, remark); //这里暂时不处理主表的状态 } } //private static OutPlanStateEnum GetChangeStateForPlan_OutTask(DbModel context, Plan_OutTask outTask, OutTaskDetailStateEnum currnetChange, string remark) //{ // var queryState1 = (int)OutTaskDetailStateEnum.完成; // var queryState2 = (int)OutTaskDetailStateEnum.执行中; // var allPlanList = context.Plan_OutTaskDetail.Where(x => x.M_PlanId == outTask.Id).ToList(); // var issued_planList = allPlanList.Where(x => x.OutTaskDetailState == queryState1 || x.OutTaskDetailState == queryState2).ToList(); // int issued_planListCount = issued_planList.Count(); // if (currnetChange == OutTaskDetailStateEnum.完成 || currnetChange == OutTaskDetailStateEnum.执行中) // { // //计入本次要修改的条数 // issued_planListCount += 1; // } // OutPlanStateEnum changeOutTaskDetailState; // if (allPlanList.Count() == issued_planListCount) // {//更新主表状态为 全部下发 // changeOutTaskDetailState = OutPlanStateEnum.全部下发; // PlanOutTaskHandler.UpdateStateForOutTask(outTask, changeOutTaskDetailState, remark); // } // else if (issued_planListCount > 0) // { // changeOutTaskDetailState = OutPlanStateEnum.部分下发; // PlanOutTaskHandler.UpdateStateForOutTask(outTask, changeOutTaskDetailState, remark); // } //} /// /// 更新明细表的状态 /// /// /// /// public static void UpdateStateForOutTaskDetail(Plan_OutTaskDetail outDetailTask, OutTaskDetailStateEnum changeOutTaskDetailState, string remark) { outDetailTask.OutTaskDetailState = (int)changeOutTaskDetailState; outDetailTask.OutTaskDetailStateName = changeOutTaskDetailState.ToString(); if (changeOutTaskDetailState == OutTaskDetailStateEnum.完成) { outDetailTask.FinishTime = DateTime.Now;//增加计划子表完成时间 【EditBy shaocx,2022-06-20】 } outDetailTask.ModifyBy = SysGloble.WCSSystem; outDetailTask.ModifyTime = DateTime.Now; outDetailTask.OperationRemark = remark + ",更改状态为" + changeOutTaskDetailState.ToString(); } /// /// 更新主表的状态 /// /// /// /// public static void UpdateStateForOutTask(Plan_OutTask outTask, OutPlanStateEnum changeOutTaskDetailState, string remark) { outTask.PlanState = (int)changeOutTaskDetailState; outTask.PlanStateName = changeOutTaskDetailState.ToString(); outTask.ModifyBy = SysGloble.WCSSystem; outTask.ModifyTime = DateTime.Now; outTask.OperationRemark = remark + ",更改状态为" + changeOutTaskDetailState.ToString(); } } }