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
|
{
|
/// <summary>
|
/// 闲时移库管理表处理类
|
/// </summary>
|
public class FreeTimeMoveLocationTaskHandler
|
{
|
/// <summary>
|
/// 验证任务中的子任务的目标集合
|
/// </summary>
|
/// <param name="mod"></param>
|
/// <param name="freeTask"></param>
|
public static bool ValidateExistPlaceTaskList(dbModel mod, Wms_FreeTimeMoveLocationTask freeTask, string place)
|
{
|
var existList = GetExistPlaceTaskList(mod, freeTask);
|
if (existList.Contains(place))
|
{
|
return false;
|
}
|
return true;
|
}
|
|
/// <summary>
|
/// 获取任务中的子任务的目标集合
|
/// </summary>
|
/// <param name="mod"></param>
|
/// <param name="freeTask"></param>
|
private static List<string> GetExistPlaceTaskList(dbModel mod, Wms_FreeTimeMoveLocationTask freeTask)
|
{
|
List<string> existList = new List<string>();
|
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;
|
}
|
|
/// <summary>
|
/// 是否存在 正在执行的 闲时移库任务
|
/// </summary>
|
/// <param name="mod"></param>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <summary>
|
/// 新增 闲时移库管理
|
/// </summary>
|
/// <param name="mod"></param>
|
/// <param name="input"></param>
|
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;
|
}
|
}
|
|
/// <summary>
|
/// 编辑 闲时移库管理
|
/// </summary>
|
/// <param name="mod"></param>
|
/// <param name="input"></param>
|
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;
|
}
|
}
|
|
/// <summary>
|
/// 执行 闲时移库管理
|
/// </summary>
|
/// <param name="mod"></param>
|
/// <param name="input"></param>
|
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;
|
}
|
}
|
|
/// <summary>
|
/// 取消 闲时移库管理
|
/// </summary>
|
/// <param name="mod"></param>
|
/// <param name="input"></param>
|
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;
|
}
|
}
|
|
/// <summary>
|
/// 人工结束 闲时移库管理
|
/// </summary>
|
/// <param name="mod"></param>
|
/// <param name="input"></param>
|
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;
|
}
|
}
|
|
}
|
}
|