using iWareCommon.Common.Globle; using iWareCommon.Utils; using iWareModel; using iWareModel.EnumType.AoSinPublicCommon; using iWareSql; using iWareSql.DbOrm; using iWareSql.Entity.ViewMode; using iWareSql.Orm; using System; using System.Collections.Generic; using System.Data.Entity.Infrastructure; using System.Linq; using System.Net; using System.Text; using System.Threading; using System.Threading.Tasks; using XiGang.Core.Model; namespace iWareSql.DataAccess { /// /// 设备任务处理类 /// public class PartTaskHandler { /// /// 创建一个子任务 /// /// /// /// /// /// /// /// /// /// /// /// public static FunRetEntity CreateSubTask(DateTime createTime, string plcTaskNo, iWareSql.DbOrm.DbOrm edm, EDeviceType deviceType, long? usersID, string userName, int taskSequence, TaskCategoryEnum _TaskCategoryEnum, ware_task mainTask, string midPlace, string description, int containerType, string midPlace2 = "") { var validate_deviceByPlace = ""; var sourcePlace = ""; var toPlace = ""; string containerCode = mainTask.ContainerCode; switch (_TaskCategoryEnum) { case TaskCategoryEnum.OutStock: validate_deviceByPlace = mainTask.FromLocationCode; switch (deviceType) { case EDeviceType.堆垛机: sourcePlace = mainTask.FromLocationCode; toPlace = midPlace; break; case EDeviceType.输送线: sourcePlace = midPlace; toPlace = midPlace2; break; case EDeviceType.AGV: sourcePlace = midPlace2; toPlace = mainTask.ToLocationCode; break; } break; case TaskCategoryEnum.InStock: validate_deviceByPlace = mainTask.ToLocationCode; switch (deviceType) { case EDeviceType.AGV: sourcePlace = mainTask.FromLocationCode; toPlace = midPlace; break; case EDeviceType.输送线: sourcePlace = midPlace; toPlace = midPlace2; break; case EDeviceType.堆垛机: sourcePlace = midPlace2; toPlace = mainTask.ToLocationCode; break; } break; case TaskCategoryEnum.MoveStock: if (description == "堆垛机出库移库任务") { validate_deviceByPlace = mainTask.FromLocationCode; sourcePlace = mainTask.MoveFromLocation; toPlace = mainTask.MoveToLocation; containerCode = mainTask.MoveContainerCode; } else if(description == "堆垛机出库移库任务2") { validate_deviceByPlace = mainTask.FromLocationCode; sourcePlace = mainTask.MoveToLocation; toPlace = midPlace; containerCode = mainTask.MoveContainerCode; } else { validate_deviceByPlace = mainTask.FromLocationCode; sourcePlace = mainTask.FromLocationCode; toPlace = mainTask.ToLocationCode; containerCode = mainTask.ContainerCode; } break; case TaskCategoryEnum.Front: validate_deviceByPlace = mainTask.FromLocationCode; switch (deviceType) { case EDeviceType.AGV: sourcePlace = mainTask.FromLocationCode; toPlace = midPlace; break; case EDeviceType.输送线: sourcePlace = midPlace; toPlace = mainTask.ToLocationCode; break; } break; } EDevice device = BusinessHelper.GetDeviceByPlaceNo(deviceType); FunRetEntity fre = new FunRetEntity(); fre.result = true; //var isEquipmentBreakdown1 = Wms_EquipmentSituationHandler.IsEquipmentBreakdown((int)device); //if (isEquipmentBreakdown1.result) //{//如果设备已经设定为 故障状态,不允许下发任务!!! [EditBy shaocx,2020-12-07] // fre.result = false; // fre.resMsg = isEquipmentBreakdown1.resMsg; // return fre; //} ware_task_sub tsk = new ware_task_sub() { OrderNo = mainTask.OrderNo, TaskId = mainTask.Id, TaskNo = plcTaskNo, TaskSequence = taskSequence, TaskDescribe = description, TaskState = _TaskCategoryEnum == TaskCategoryEnum.InStock && device == EDevice.堆垛机 ? (int)SubTaskStateEnum.等待下发 : (int)SubTaskStateEnum.未开始, //TaskState = (int)SubTaskStateEnum.未开始, DeviceType = device.ToString(), DeviceId = (int)device, ContainerCode = containerCode, TaskType = (int)_TaskCategoryEnum, SourcePlace = sourcePlace, ToPlace = toPlace, UpdatedUserName = userName, UpdatedTime = createTime, CreatedUserName = userName, CreatedTime = createTime, ContainerType = containerType, OperationRemark = "初始创建", }; DoCreateSubTask(edm, tsk); return fre; } private static bool DoCreateSubTask(DbOrm.DbOrm edm, ware_task_sub tsk) { edm.ware_task_sub.Add(tsk); return true; } } }