/// <summary> /// 工序相关设备是否剩余产能 /// </summary> /// <param name="categoryId"></param> /// <param name="pId"></param> /// <param name="capacityList"></param> /// <param name="productType">是否设备</param> /// <param name="deviceList">设备</param> /// <param name="operatorList">人员</param> /// <param name="waitIndex">等待消耗的产能</param> /// <returns>设备id或人员id 型号 剩余产能 / 流程工序 人员等级 人员id</returns> public Dictionary <int, Tuple <int, decimal> > ProcessLeftCapacityIndex(int categoryId, int pId, SmartCapacityListDetail capacityList, IEnumerable <SmartDevice> deviceList, IEnumerable <SmartOperator> operatorList, int productType, decimal waitIndex) { var defaultIndex = 1; //设备id或人员id 型号 剩余产能 var result = new Dictionary <int, Tuple <int, decimal> >(); if (productType == 0) { //设备类型 设备型号 设备id if (DeviceUse.ContainsKey(categoryId)) { var infos = DeviceUse[categoryId].Where(d => capacityList.DeviceList.Any(cd => cd.ModelId == d.Item)); foreach (var device in infos) { if (!result.ContainsKey(device.Id)) { result.Add(device.Id, new Tuple <int, decimal>(device.Item, defaultIndex - waitIndex)); } foreach (var arrange in device.Arranges) { result[device.Id] = new Tuple <int, decimal>(device.Item, result[device.Id].Item2 - arrange.CapacityIndex); } } } } else if (productType == 1) { //流程工序 人员等级 人员id if (OperatorUse.ContainsKey(pId)) { var infos = OperatorUse[pId].Where(d => capacityList.OperatorList.Any(cd => cd.LevelId == d.Item)); foreach (var op in infos) { if (!result.ContainsKey(op.Id)) { result.Add(op.Id, new Tuple <int, decimal>(op.Item, defaultIndex - waitIndex)); } foreach (var arrange in op.Arranges) { result[op.Id] = new Tuple <int, decimal>(op.Item, result[op.Id].Item2 - arrange.CapacityIndex); } } } } return(result.Where(x => x.Value.Item2 > 0).ToDictionary(y => y.Key, y => new Tuple <int, decimal>(y.Value.Item1, y.Value.Item2))); }
public SmartTaskOrderScheduleDetail(DateTime processTime, SmartTaskOrderConfirm task, SmartCapacityListDetail capacityList, SmartProductCapacity productCapacity) { ProcessTime = processTime; TaskOrderId = task.Id; TaskOrder = task.TaskOrder; ProductId = task.ProductId; Product = task.Product; ProcessId = capacityList.ProcessId; PId = capacityList.PId; CategoryId = capacityList.CategoryId; Order = capacityList.Order; var rate = 0m; var y = productCapacity; if (y.DeviceList.Any()) { rate = y.DeviceList.First().Rate; } else if (y.OperatorList.Any()) { rate = y.OperatorList.First().Rate; } Rate = rate; }