using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using wcftest.EnumDefine; using wcftest.Model; using wcftest.orm; namespace wcftest.BussinessExtension.Handle { /// /// 闲时移库管理表处理类 /// public class FreeTimeMoveLocationTaskHandler { /// /// 验证任务中的子任务的目标集合 /// /// /// public static bool ValidateExistPlaceTaskList(dbModel mod, Wms_FreeTimeMoveLocationTask freeTask, string place) { var existList = GetExistPlaceTaskList(mod, freeTask); if (existList.Contains(place)) { return false; } return true; } /// /// 获取任务中的子任务的目标集合 /// /// /// private static List GetExistPlaceTaskList(dbModel mod, Wms_FreeTimeMoveLocationTask freeTask) { List existList = new List(); var curTaskList = mod.Wms_FreeTimeMoveLocationTaskDetails.Where(x => x.MainFreeMoveId == freeTask.ID).ToList(); if (curTaskList != null && curTaskList.Count > 0) { existList.AddRange(curTaskList.Select(x => x.SoucePlace).ToList()); existList.AddRange(curTaskList.Select(x => x.ToPlace).ToList()); } return existList; } /// /// 是否存在 正在执行的 闲时移库任务 /// /// /// public static bool IsExistRuningTask(dbModel mod) { var queryMoveStatus = (int)MoveStatusEnum.执行中; var task = mod.Wms_FreeTimeMoveLocationTask.Where(x => x.MoveStatus == queryMoveStatus).FirstOrDefault(); if (task != null) { return true; } return false; } /// /// 新增 闲时移库管理 /// /// /// public static FunRetEntity Add(AddFoldingPlateMachineInput input) { try { if (input.RunTime <= 0) { return FunRetEntity.Fail("设定的运行时长不能小于等于0"); } using (dbModel mod = new dbModel()) { MoveStatusEnum moveStatusEnum = MoveStatusEnum.初始; Wms_FreeTimeMoveLocationTask task = new Wms_FreeTimeMoveLocationTask() { TaskName = "闲时移库-" + DateTime.Now.ToString("yyyyMMddHHmmss"), RunTime = input.RunTime, FinishQuantity = 0, ActualTime = 0, MoveStatus = (int)moveStatusEnum, MoveStatusName = moveStatusEnum.ToString(), UserRemark = input.UserRemark, Remark = "人工创建", CreateTime = DateTime.Now, LastModifyTime = DateTime.Now, Creator = input.UserName, LastModifier = input.UserName }; mod.Wms_FreeTimeMoveLocationTask.Add(task); mod.SaveChanges(); return FunRetEntity.Success("新增成功"); } } catch (Exception ex) { throw ex; } } /// /// 编辑 闲时移库管理 /// /// /// public static FunRetEntity Update(UpdateFoldingPlateMachineInput input) { try { if (input.RunTime <= 0) { return FunRetEntity.Fail("设定的运行时长不能小于等于0"); } using (dbModel mod = new dbModel()) { Wms_FreeTimeMoveLocationTask task = mod.Wms_FreeTimeMoveLocationTask.Find(input.ID); if (task == null) { return FunRetEntity.Fail("没有找到闲时移库管理数据"); } if (task.MoveStatus != (int)MoveStatusEnum.初始) { return FunRetEntity.Fail("状态不是'初始'状态,不允许编辑"); } task.LastModifier = input.UserName; task.LastModifyTime = DateTime.Now; task.Remark = "编辑"; task.RunTime = input.RunTime; task.UserRemark = input.UserRemark; int i = mod.SaveChanges(); if (i == 1) { return FunRetEntity.Success("编辑成功"); } return FunRetEntity.Fail("编辑失败"); } } catch (Exception ex) { throw ex; } } /// /// 执行 闲时移库管理 /// /// /// public static FunRetEntity Excute(ExcuteAndCancelFoldingPlateMachineInput input) { try { if (input.ID <= 0) { return FunRetEntity.Fail("闲时移库ID不能为空"); } using (dbModel mod = new dbModel()) { Wms_FreeTimeMoveLocationTask task = mod.Wms_FreeTimeMoveLocationTask.Find(input.ID); if (task == null) { return FunRetEntity.Fail("没有找到闲时移库管理数据"); } if (task.MoveStatus != (int)MoveStatusEnum.初始) { return FunRetEntity.Fail("状态不是'初始'状态,不允许执行闲时移库"); } var queryMoveStatusEnum = (int)MoveStatusEnum.执行中; var count = mod.Wms_FreeTimeMoveLocationTask.Where(x => x.MoveStatus == queryMoveStatusEnum).Count(); if (count > 0) { return FunRetEntity.Fail("已存在" + count + "条正在执行的闲时移库任务,不允许再次执行闲时移库"); } task.LastModifier = input.UserName; task.LastModifyTime = DateTime.Now; task.Remark = "执行"; MoveStatusEnum moveStatusEnum = MoveStatusEnum.执行中; task.MoveStatus = (int)moveStatusEnum; task.MoveStatusName = moveStatusEnum.ToString(); task.UserRemark = input.UserRemark; task.StartTime = DateTime.Now; int i = mod.SaveChanges(); if (i == 1) { return FunRetEntity.Success("执行成功"); } return FunRetEntity.Fail("执行失败"); } } catch (Exception ex) { throw ex; } } /// /// 取消 闲时移库管理 /// /// /// public static FunRetEntity Cancel(ExcuteAndCancelFoldingPlateMachineInput input) { try { if (input.ID <= 0) { return FunRetEntity.Fail("闲时移库ID不能为空"); } using (dbModel mod = new dbModel()) { Wms_FreeTimeMoveLocationTask task = mod.Wms_FreeTimeMoveLocationTask.Find(input.ID); if (task == null) { return FunRetEntity.Fail("没有找到闲时移库管理数据"); } if (task.MoveStatus != (int)MoveStatusEnum.初始) { return FunRetEntity.Fail("状态不是'初始'状态,不允许取消闲时移库"); } task.LastModifier = input.UserName; task.LastModifyTime = DateTime.Now; task.Remark = "取消"; MoveStatusEnum moveStatusEnum = MoveStatusEnum.已取消; task.MoveStatus = (int)moveStatusEnum; task.MoveStatusName = moveStatusEnum.ToString(); task.UserRemark = input.UserRemark; int i = mod.SaveChanges(); if (i == 1) { return FunRetEntity.Success("取消成功"); } return FunRetEntity.Fail("取消失败"); } } catch (Exception ex) { throw ex; } } /// /// 人工结束 闲时移库管理 /// /// /// public static FunRetEntity PersonStop(PersonStopFoldingPlateMachineInput input) { try { if (input.ID <= 0) { return FunRetEntity.Fail("闲时移库ID不能为空"); } if (string.IsNullOrEmpty(input.PersonStopRemark)) { return FunRetEntity.Fail("人工结束原因不能为空"); } using (dbModel mod = new dbModel()) { Wms_FreeTimeMoveLocationTask task = mod.Wms_FreeTimeMoveLocationTask.Find(input.ID); if (task == null) { return FunRetEntity.Fail("没有找到闲时移库管理数据"); } if (task.MoveStatus != (int)MoveStatusEnum.执行中) { return FunRetEntity.Fail("状态不是'执行中'状态,不允许人工结束闲时移库"); } task.LastModifier = input.UserName; task.LastModifyTime = DateTime.Now; task.Remark = "人工结束"; MoveStatusEnum moveStatusEnum = MoveStatusEnum.人工结束; task.MoveStatus = (int)moveStatusEnum; task.MoveStatusName = moveStatusEnum.ToString(); task.PersonStopRemark = input.PersonStopRemark; var endTime = DateTime.Now; task.EndTime = endTime; //计算持续时长(分钟) if (task.StartTime != null) { TimeSpan ts = ((DateTime)endTime - (DateTime)task.StartTime); task.ActualTime = Convert.ToInt32(ts.TotalMinutes); } //计算已完成数量 var count = mod.Wms_FreeTimeMoveLocationTaskDetails.Where(x => x.MainFreeMoveId == task.ID).Count(); task.FinishQuantity = count; int i = mod.SaveChanges(); if (i == 1) { return FunRetEntity.Success("人工结束成功"); } return FunRetEntity.Fail("人工结束失败"); } } catch (Exception ex) { throw ex; } } } }