コード例 #1
0
        public DataResult GetSmartCapacityList([FromQuery] int qId, int capacityId, int categoryId)
        {
            var result = new DataResult();

            result.datas.AddRange(SmartCapacityListHelper.GetDetail(qId, capacityId, categoryId));
            if (qId != 0 && !result.datas.Any())
            {
                result.errno = Error.SmartCapacityListNotExist;
                return(result);
            }
            return(result);
        }
コード例 #2
0
        public object PostSmartSchedulePreview([FromBody] IEnumerable <SmartTaskOrderCapacity> taskOrders)
        {
            if (taskOrders == null)
            {
                return(Result.GenError <Result>(Error.ParamError));
            }
            var taskIds = taskOrders.GroupBy(x => x.Id).Select(y => y.Key);

            if (taskIds.Count() != taskOrders.Count())
            {
                return(Result.GenError <Result>(Error.SmartTaskOrderDuplicate));
            }
            var result = new SmartTaskOrderNeedWithOrderPreviewResult();
            var wId    = taskOrders.FirstOrDefault()?.WorkshopId ?? 0;

            if (taskOrders.Any())
            {
                var tOrders = SmartTaskOrderHelper.Instance.GetByIds <SmartTaskOrderCapacity>(taskIds);
                if (taskIds.Count() != tOrders.Count())
                {
                    result.errno = Error.SmartTaskOrderNotExist;
                    result.datas.AddRange(taskOrders.Where(x => tOrders.All(y => y.Id != x.Id)).Select(x => x.TaskOrder.IsNullOrEmpty() ? x.Id.ToString() : x.TaskOrder));
                    return(result);
                }

                foreach (var task in taskOrders)
                {
                    var t = tOrders.FirstOrDefault(x => x.Id == task.Id);
                    if (t == null)
                    {
                        result.errno = Error.SmartTaskOrderNotExist;
                        result.datas.Add(task.TaskOrder);
                    }
                    else
                    {
                        task.TaskOrder    = t.TaskOrder;
                        task.Target       = t.Target;
                        task.DeliveryTime = t.DeliveryTime;
                        task.ProductId    = t.ProductId;
                        task.CapacityId   = t.CapacityId;
                    }
                }
            }

            if (result.errno != Error.Success)
            {
                return(result);
            }
            var productIds = taskOrders.GroupBy(x => x.ProductId).Select(y => y.Key);

            if (!productIds.Any())
            {
                return(Result.GenError <Result>(Error.SmartProductNotExist));
            }

            var products = SmartProductHelper.Instance.GetByIds <SmartProduct>(productIds);

            if (products.Count() != productIds.Count())
            {
                return(Result.GenError <Result>(Error.SmartProductNotExist));
            }

            var productCapacities = SmartProductCapacityHelper.GetSmartProductCapacities(productIds);

            if (!productCapacities.Any())
            {
                return(Result.GenError <Result>(Error.SmartProductCapacityNotExist));
            }

            var capacityIds = products.GroupBy(x => x.CapacityId).Select(y => y.Key);

            if (!capacityIds.Any())
            {
                return(Result.GenError <Result>(Error.SmartCapacityNotExist));
            }
            var capacityLists = SmartCapacityListHelper.GetSmartCapacityListsWithOrder(capacityIds);

            foreach (var productId in productIds)
            {
                var tasks       = taskOrders.Where(x => x.ProductId == productId);
                var product     = products.FirstOrDefault(x => x.Id == productId);
                var pCapacities = productCapacities.Where(x => x.ProductId == productId);
                var cLists      = capacityLists.Where(x => x.CapacityId == product.CapacityId);
                if (cLists.Count() != pCapacities.Count())
                {
                    result.errno = Error.SmartProductCapacityNotExist;
                    result.datas.AddRange(tasks.Select(x => x.TaskOrder));
                }
            }

            if (result.errno != Error.Success)
            {
                return(result);
            }
            //设备型号
            var deviceModels = SmartDeviceModelHelper.Instance.GetAll <SmartDeviceModel>();
            //设备型号数量
            var deviceList  = SmartDeviceHelper.GetNormalSmartDevices(wId);
            var modelCounts = deviceList.GroupBy(x => new { x.CategoryId, x.ModelId }).Select(y => new SmartDeviceModelCount
            {
                CategoryId = y.Key.CategoryId,
                ModelId    = y.Key.ModelId,
                Count      = y.Count()
            });
            //人员等级
            var operatorLevels = SmartOperatorLevelHelper.Instance.GetAll <SmartOperatorLevel>();
            //人员等级数量
            var operatorList   = SmartOperatorHelper.GetNormalSmartOperators(wId);
            var operatorCounts = operatorList.GroupBy(x => new { x.ProcessId, x.LevelId }).Select(y => new SmartOperatorCount
            {
                ProcessId = y.Key.ProcessId,
                LevelId   = y.Key.LevelId,
                Count     = y.Count()
            });
            var taskNeeds = SmartTaskOrderNeedHelper.GetSmartTaskOrderNeedsByTaskOrderIds(wId, taskIds);

            foreach (var task in taskOrders)
            {
                var needs = taskNeeds.Where(need => need.TaskOrderId == task.Id);
                if (task.Needs.Any())
                {
                    task.Needs = task.Needs.Select(x =>
                    {
                        var need = needs.FirstOrDefault(y => y.TaskOrderId == x.TaskOrderId && y.PId == x.PId);
                        if (need != null)
                        {
                            x.DoneTarget = need.DoneTarget;
                            x.HavePut    = need.HavePut;
                        }

                        return(x);
                    }).ToList();
                }
                var oldNeeds = task.Needs.ToList();
                task.Needs.Clear();
                var productId = task.ProductId;
                var product   = products.FirstOrDefault(x => x.Id == productId);
                task.Product = product.Product;
                var pCapacities = productCapacities.Where(x => x.ProductId == productId);
                var cLists      = capacityLists.Where(x => x.CapacityId == product.CapacityId);
                var target      = task.Target;
                foreach (var cList in cLists.Reverse())
                {
                    var need       = oldNeeds.FirstOrDefault(x => x.Id == cList.Id);
                    var stock      = need?.Stock ?? 0;
                    var doneTarget = need?.DoneTarget ?? 0;
                    var havePut    = need?.HavePut ?? 0;
                    if (target < stock)
                    {
                        stock  = target;
                        target = 0;
                    }
                    else
                    {
                        target -= stock;
                    }

                    if (!task.All)
                    {
                        target = target > doneTarget ? target - doneTarget : 0;
                    }
                    var pCapacity = pCapacities.FirstOrDefault(x => x.ProcessId == cList.ProcessId);
                    var rate      = 0m;
                    var y         = pCapacity;
                    if (y.DeviceList.Any())
                    {
                        rate = y.DeviceList.First().Rate;
                    }
                    else if (y.OperatorList.Any())
                    {
                        rate = y.OperatorList.First().Rate;
                    }
                    var put     = rate != 0 ? (int)Math.Ceiling((target) * 100 / rate) : 0;
                    var newNeed = new SmartTaskOrderCapacityNeed
                    {
                        Id          = cList.Id,
                        TaskOrderId = task.Id,
                        ProductId   = productId,
                        ProcessId   = cList.ProcessId,
                        CategoryId  = cList.CategoryId,
                        PId         = cList.PId,
                        Target      = target,
                        DoneTarget  = doneTarget,
                        Stock       = stock,
                        Rate        = rate,
                        Put         = put,
                        HavePut     = havePut,
                        Process     = cList.Process,
                        Order       = cList.Order
                    };
                    if (need != null)
                    {
                        newNeed.Devices       = need.Devices;
                        newNeed.NeedDCapacity = newNeed.DCapacity != 0 ? ((decimal)put / newNeed.DCapacity).ToRound() : 0;
                        foreach (var device in need.DeviceList)
                        {
                            var modelCount = modelCounts.FirstOrDefault(x => x.ModelId == device.Key)?.Count ?? 0;
                            newNeed.TotalDCapacity += modelCount * device.Value.Item1 * device.Value.Item2;
                        }
                        newNeed.HaveDCapacity = newNeed.DCapacity != 0 ? ((decimal)newNeed.TotalDCapacity / newNeed.DCapacity).ToRound() : 0;

                        newNeed.Operators     = need.Operators;
                        newNeed.NeedOCapacity = newNeed.OCapacity != 0 ? ((decimal)put / newNeed.OCapacity).ToRound() : 0;
                        foreach (var op in need.OperatorsList)
                        {
                            var operatorCount = operatorCounts.FirstOrDefault(x => x.LevelId == op.Key)?.Count ?? 0;
                            newNeed.TotalOCapacity += operatorCount * op.Value.Item1 * op.Value.Item2;
                        }
                        newNeed.HaveOCapacity = newNeed.OCapacity != 0 ? ((decimal)newNeed.TotalOCapacity / newNeed.OCapacity).ToRound() : 0;
                    }
                    task.Needs.Insert(0, newNeed);
                    target = put;
                }
            }
            result.datas.AddRange(taskOrders);
            var orders = taskOrders.SelectMany(x => x.Needs).GroupBy(y => new { y.PId, y.Order, y.Process }).Select(z => new SmartTaskOrderNeedWithOrderPreview
            {
                Id      = z.Key.PId,
                Process = z.Key.Process,
                Order   = z.Key.Order
            }).ToList();

            foreach (var task in taskOrders)
            {
                foreach (var newNeed in task.Needs)
                {
                    var order = orders.FirstOrDefault(x => x.Id == newNeed.PId);
                    if (order != null)
                    {
                        order.Stock  += newNeed.Stock;
                        order.Put    += newNeed.Put;
                        order.Target += newNeed.Target;
                        if (newNeed.DeviceList.Any())
                        {
                            foreach (var device in newNeed.DeviceList)
                            {
                                var modelDevice = order.Devices.FirstOrDefault(x => x.Id == device.Key);
                                if (modelDevice == null)
                                {
                                    order.Devices.Add(new SmartTaskOrderNeedCapacityPreview
                                    {
                                        Id   = device.Key,
                                        Name = deviceModels.FirstOrDefault(x => x.Id == device.Key)?.Model ?? "",
                                    });
                                }
                                modelDevice = order.Devices.FirstOrDefault(x => x.Id == device.Key);
                                modelDevice.NeedCapacity += newNeed.NeedDCapacity;

                                var modelCount = modelCounts.FirstOrDefault(x => x.ModelId == device.Key)?.Count ?? 0;
                                modelDevice.HaveCapacity = modelCount;
                            }
                        }

                        if (newNeed.OperatorsList.Any())
                        {
                            foreach (var op in newNeed.OperatorsList)
                            {
                                var levelOp = order.Operators.FirstOrDefault(x => x.Id == op.Key);
                                if (levelOp == null)
                                {
                                    order.Operators.Add(new SmartTaskOrderNeedCapacityPreview
                                    {
                                        Id   = op.Key,
                                        Name = operatorLevels.FirstOrDefault(x => x.Id == op.Key)?.Level ?? "",
                                    });
                                }
                                levelOp = order.Operators.FirstOrDefault(x => x.Id == op.Key);
                                levelOp.NeedCapacity += newNeed.NeedOCapacity;

                                var operatorCount = operatorCounts.FirstOrDefault(x => newNeed.PId == x.ProcessId && x.LevelId == op.Key)?.Count ?? 0;
                                levelOp.HaveCapacity = operatorCount;
                            }
                        }
                    }
                }
            }
            result.Orders.AddRange(orders.OrderBy(z => z.Order).Select(x =>
            {
                x.Devices   = x.Devices.OrderBy(y => y.Id).ToList();
                x.Operators = x.Operators.OrderBy(y => y.Id).ToList();
                return(x);
            }));
            return(result);
        }
コード例 #3
0
        public object PostSmartSchedulePreview([FromBody] SmartTaskOrderArrangeParam arrange)
        {
            var taskOrders = arrange.Previews;
            var wId        = arrange.WorkshopId;

            if (taskOrders == null)
            {
                return(Result.GenError <Result>(Error.ParamError));
            }
            var taskIds = taskOrders.GroupBy(x => x.Id).Select(y => y.Key);

            if (taskIds.Count() != taskOrders.Count())
            {
                return(Result.GenError <Result>(Error.SmartTaskOrderDuplicate));
            }
            var result   = new DataResult();
            var allTasks = new List <SmartTaskOrderPreview>();

            if (taskOrders.Any())
            {
                var tOrders = SmartTaskOrderHelper.Instance.GetByIds <SmartTaskOrderPreview>(taskIds);
                if (taskIds.Count() != tOrders.Count())
                {
                    result.errno = Error.SmartTaskOrderNotExist;
                    result.datas.AddRange(taskOrders.Where(x => tOrders.All(y => y.Id != x.Id)).Select(x => x.TaskOrder.IsNullOrEmpty() ? x.Id.ToString() : x.TaskOrder));
                    return(result);
                }

                //var arranged = tOrders.Where(x => x.Arranged);
                //if (arranged.Any())
                //{
                //    result.errno = Error.SmartTaskOrderArranged;
                //    result.datas.AddRange(arranged.Select(x => x.TaskOrder));
                //    return result;
                //}

                foreach (var task in tOrders)
                {
                    var t = taskOrders.FirstOrDefault(x => x.Id == task.Id);
                    if (t == null)
                    {
                        result.errno = Error.SmartTaskOrderNotExist;
                        result.datas.Add(task.TaskOrder);
                    }
                    else
                    {
                        //页面选择顺序
                        task.Order     = !t.Arranged && t.Order == 0 ? int.MaxValue : t.Order;
                        task.StartTime = t.StartTime;
                        task.EndTime   = t.EndTime;
                        task.Needs     = t.Needs;
                    }
                }
                allTasks.AddRange(tOrders);
            }
            if (result.errno != Error.Success)
            {
                return(result);
            }
            var otherTasks = SmartTaskOrderHelper.GetArrangedButNotDoneSmartTaskOrders(wId);

            if (otherTasks.Any())
            {
                taskIds = otherTasks.Select(x => x.Id);
                var taskNeeds = SmartTaskOrderNeedHelper.GetSmartTaskOrderNeedsByTaskOrderIds(wId, taskIds);
                foreach (var otherTask in otherTasks)
                {
                    var aTask = allTasks.FirstOrDefault(x => x.Id == otherTask.Id);
                    var needs = taskNeeds.Where(need => need.TaskOrderId == otherTask.Id);
                    if (aTask != null)
                    {
                        aTask.Arranged = true;
                        if (!aTask.Needs.Any())
                        {
                            aTask.Needs.AddRange(needs);
                        }
                        else
                        {
                            aTask.Needs = aTask.Needs.Select(x =>
                            {
                                var need = needs.FirstOrDefault(y => y.TaskOrderId == x.TaskOrderId && y.PId == x.PId);
                                if (need != null)
                                {
                                    x.DoneTarget = need.DoneTarget;
                                    x.HavePut    = need.HavePut;
                                }
                                return(x);
                            }).ToList();
                        }
                    }
                    else
                    {
                        var t = ClassExtension.ParentCopyToChild <SmartTaskOrder, SmartTaskOrderPreview>(otherTask);
                        t.Arranged = true;
                        t.Needs.AddRange(needs);
                        allTasks.Add(t);
                    }
                }
            }

            if (result.errno != Error.Success)
            {
                return(result);
            }
            var productIds = allTasks.GroupBy(x => x.ProductId).Select(y => y.Key);

            if (!productIds.Any())
            {
                return(Result.GenError <Result>(Error.SmartProductNotExist));
            }

            var products = SmartProductHelper.Instance.GetByIds <SmartProduct>(productIds);

            if (products.Count() != productIds.Count())
            {
                return(Result.GenError <Result>(Error.SmartProductNotExist));
            }

            var productCapacities = SmartProductCapacityHelper.GetSmartProductCapacities(productIds);

            if (!productCapacities.Any())
            {
                return(Result.GenError <Result>(Error.SmartProductCapacityNotExist));
            }

            var capacityIds = products.GroupBy(x => x.CapacityId).Select(y => y.Key);

            if (!capacityIds.Any())
            {
                return(Result.GenError <Result>(Error.SmartCapacityNotExist));
            }
            var capacityLists = SmartCapacityListHelper.GetSmartCapacityListsWithOrder(capacityIds);

            foreach (var productId in productIds)
            {
                var tasks       = allTasks.Where(x => x.ProductId == productId);
                var product     = products.FirstOrDefault(x => x.Id == productId);
                var pCapacities = productCapacities.Where(x => x.ProductId == productId);
                var cLists      = capacityLists.Where(x => x.CapacityId == product.CapacityId);
                if (cLists.Count() != pCapacities.Count())
                {
                    result.errno = Error.SmartProductCapacityNotExist;
                    result.datas.AddRange(tasks.Select(x => x.TaskOrder));
                }
            }

            if (result.errno != Error.Success)
            {
                return(result);
            }

            var data = allTasks.ToDictionary(x => x.Id, x =>
            {
                var t     = ClassExtension.ParentCopyToChild <SmartTaskOrder, SmartTaskOrderPreview>(x);
                t.Product = products.FirstOrDefault(y => y.Id == x.ProductId)?.Product ?? "";
                return(t);
            });

            foreach (var task in allTasks)
            {
                var productId   = task.ProductId;
                var product     = products.FirstOrDefault(x => x.Id == productId);
                var pCapacities = productCapacities.Where(x => x.ProductId == productId);
                var cLists      = capacityLists.Where(x => x.CapacityId == product.CapacityId);
                var target      = task.Target;
                foreach (var list in cLists.Reverse())
                {
                    var need       = task.Needs.FirstOrDefault(x => x.Order == list.Order && x.ProcessId == list.ProcessId);
                    var stock      = need?.Stock ?? 0;
                    var doneTarget = need?.DoneTarget ?? 0;
                    var havePut    = need?.HavePut ?? 0;

                    if (target < stock)
                    {
                        stock  = target;
                        target = 0;
                    }
                    else
                    {
                        target -= stock;
                    }

                    var pCapacity = pCapacities.FirstOrDefault(x => x.ProcessId == list.ProcessId);
                    var rate      = 0m;
                    var y         = pCapacity;
                    if (y.DeviceList.Any())
                    {
                        rate = y.DeviceList.First().Rate;
                    }
                    else if (y.OperatorList.Any())
                    {
                        rate = y.OperatorList.First().Rate;
                    }

                    var put = rate != 0 ? (int)Math.Ceiling((target) * 100 / rate) : 0;
                    data[task.Id].Needs.Insert(0, new SmartTaskOrderNeedDetail
                    {
                        TaskOrderId = task.Id,
                        ProductId   = productId,
                        ProcessId   = list.ProcessId,
                        PId         = list.PId,
                        Target      = target,
                        DoneTarget  = doneTarget,
                        Stock       = stock,
                        Rate        = rate,
                        Put         = put,
                        HavePut     = havePut,
                        Process     = list.Process,
                        Order       = list.Order
                    });
                    target = put;
                }
            }
            var r = new SmartTaskOrderNeedWithOrderResult();

            r.datas.AddRange(data.Values.OrderBy(x => x.Arranged).ThenBy(x => x.ModifyId));
            var orders = data.Values.SelectMany(x => x.Needs).GroupBy(y => new { y.PId, y.Order, y.Process }).Select(z => new SmartTaskOrderNeedWithOrder
            {
                Id      = z.Key.PId,
                Process = z.Key.Process,
                Order   = z.Key.Order
            });

            r.Orders.AddRange(orders.OrderBy(z => z.Order));
            return(r);
        }
コード例 #4
0
        public object GetSmartCapacityListInfo([FromQuery] int qId, int processId)
        {
            var result           = new DataResult();
            var deviceCategoryId = 0;
            SmartCapacityListDetail capacityList = null;

            if (qId != 0)
            {
                capacityList = SmartCapacityListHelper.GetDetail(qId);
                if (capacityList == null)
                {
                    return(Result.GenError <Result>(Error.SmartCapacityListNotExist));
                }
                var capacity = SmartCapacityHelper.Instance.Get <SmartCapacity>(capacityList.CapacityId);
                if (capacity == null)
                {
                    return(Result.GenError <Result>(Error.SmartCapacityNotExist));
                }

                deviceCategoryId = capacityList.CategoryId;
            }
            else if (processId != 0)
            {
                var process = SmartProcessCodeCategoryProcessHelper.GetDetailByProcessId(processId);
                if (process == null)
                {
                    return(Result.GenError <Result>(Error.SmartProcessCodeCategoryProcessNotExist));
                }

                capacityList = new SmartCapacityListDetail
                {
                    ProcessId = process.Id
                };
                deviceCategoryId = process.CategoryId;
            }
            else
            {
                return(Result.GenError <Result>(Error.ParamError));
            }

            capacityList.PId = SmartProcessCodeCategoryProcessHelper.Instance.Get <SmartProcessCodeCategoryProcess>(capacityList.ProcessId)?.ProcessId ?? 0;
            var actDevices = new List <SmartDeviceCapacity>();

            if (deviceCategoryId != 0)
            {
                var models  = SmartDeviceModelHelper.GetDetail(0, deviceCategoryId);
                var devices = capacityList.DeviceList;
                if (models.Any())
                {
                    var modelCount = SmartDeviceHelper.GetNormalDeviceModelCount(models.Select(x => x.Id));
                    foreach (var model in models)
                    {
                        var device = devices.FirstOrDefault(x => x.ModelId == model.Id) ?? new SmartDeviceCapacity();
                        device.Category   = model.Category;
                        device.CategoryId = model.CategoryId;
                        device.ModelId    = model.Id;
                        device.Model      = model.Model;
                        device.Count      = modelCount.FirstOrDefault(x => x.ModelId == model.Id) != null
                            ? modelCount.FirstOrDefault(x => x.ModelId == model.Id).Count : 0;

                        actDevices.Add(device);
                    }
                }
            }

            var actOperators = new List <SmartOperatorCapacity>();
            var levels       = SmartOperatorLevelHelper.Instance.GetAll <SmartOperatorLevel>().OrderBy(x => x.Order);

            if (levels.Any())
            {
                var operatorCount = SmartOperatorHelper.GetNormalOperatorCount(capacityList.ProcessId);
                var operators     = capacityList.OperatorList;
                if (levels.Any())
                {
                    foreach (var level in levels)
                    {
                        var op = operators.FirstOrDefault(x => x.LevelId == level.Id) ?? new SmartOperatorCapacity();
                        op.Level   = level.Level;
                        op.LevelId = level.Id;
                        op.Count   = operatorCount.FirstOrDefault(x => x.ProcessId == capacityList.PId && x.LevelId == op.LevelId) != null
                            ? operatorCount.FirstOrDefault(x => x.ProcessId == capacityList.PId && x.LevelId == level.Id).Count : 0;

                        actOperators.Add(op);
                    }
                }
            }

            result.datas.Add(capacityList);
            return(new
            {
                errno = 0,
                errmsg = "成功",
                Devices = actDevices,
                Operators = actOperators
            });
        }
コード例 #5
0
        public Result PutSmartCapacityList([FromBody] IEnumerable <SmartCapacityList> capacityLists)
        {
            if (capacityLists == null || !capacityLists.Any())
            {
                return(Result.GenError <Result>(Error.ParamError));
            }

            if (capacityLists.Any(x => !x.IsSet()))
            {
                return(Result.GenError <Result>(Error.SmartCapacityListNotEmpty));
            }

            var capacityId = capacityLists.FirstOrDefault()?.CapacityId ?? 0;

            if (capacityId == 0)
            {
                return(Result.GenError <Result>(Error.ParamError));
            }

            var capacity = SmartCapacityHelper.Instance.Get <SmartCapacity>(capacityId);

            if (capacity == null)
            {
                return(Result.GenError <Result>(Error.SmartCapacityNotExist));
            }

            var processes = SmartProcessCodeCategoryProcessHelper.GetDetailByCategoryId(capacity.CategoryId);

            if (!processes.Any())
            {
                return(Result.GenError <Result>(Error.SmartProcessCodeCategoryProcessNotExist));
            }

            if (capacityLists.Count() != processes.Count())
            {
                return(Result.GenError <Result>(Error.SmartCapacityListCountError));
            }

            var capacityListIds = capacityLists.Select(x => x.Id);
            var data            = SmartCapacityListHelper.Instance.GetByIds <SmartCapacityList>(capacityListIds);

            if (data.Count() != capacityLists.Count())
            {
                return(Result.GenError <Result>(Error.SmartCapacityListNotExist));
            }

            if (capacityLists.Count() != processes.Count())
            {
                return(Result.GenError <Result>(Error.SmartCapacityListCountError));
            }

            var userId         = Request.GetIdentityInformation();
            var markedDateTime = DateTime.Now;

            foreach (var capacityList in capacityLists)
            {
                capacityList.CreateUserId   = userId;
                capacityList.MarkedDateTime = markedDateTime;
                capacityList.CapacityId     = capacityId;
            }
            var oldSmartCapacityLists = SmartCapacityListHelper.GetSmartCapacityLists(capacityId);
            //删除
            var delete = oldSmartCapacityLists.Where(z => capacityLists.Where(x => x.Id != 0).All(y => y.Id != z.Id));

            if (delete.Any())
            {
                SmartCapacityListHelper.Instance.Delete(delete.Select(x => x.Id));
            }
            //更新
            var update = capacityLists.Where(x => x.Id != 0);

            if (update.Any())
            {
                SmartCapacityListHelper.Instance.Update(update);
            }

            //新增
            var add = capacityLists.Where(x => x.Id == 0);

            if (add.Any())
            {
                SmartCapacityListHelper.Instance.Add(add);
            }

            OldWorkFlowHelper.Instance.OnSmartCapacityListChanged(capacityLists);
            return(Result.GenError <Result>(Error.Success));
        }
コード例 #6
0
        public object PutSmartCapacityList([FromBody] OpSmartCapacity capacity)
        {
            var capacityId  = capacity.Id;
            var oldCapacity = SmartCapacityHelper.Instance.Get <SmartCapacity>(capacityId);

            if (oldCapacity == null)
            {
                return(Result.GenError <Result>(Error.SmartCapacityNotExist));
            }

            var capacityLists = capacity.List;

            if (capacityLists == null)
            {
                return(Result.GenError <Result>(Error.SmartCapacityListNotSet));
            }

            var processes = SmartProcessCodeCategoryProcessHelper.GetDetailByCategoryId(capacity.CategoryId);

            if (!processes.Any())
            {
                return(Result.GenError <Result>(Error.SmartProcessCodeCategoryProcessNotExist));
            }

            if (capacityLists.Count() != processes.Count())
            {
                return(Result.GenError <Result>(Error.SmartCapacityListCountError));
            }

            if (capacityLists.Any(x => !x.IsSet()))
            {
                return(Result.GenError <Result>(Error.SmartCapacityListNotEmpty));
            }

            var smartCapacityListIds = capacityLists.Select(x => x.Id).Where(y => y != 0);

            if (smartCapacityListIds.Any())
            {
                var data = SmartCapacityListHelper.Instance.GetByIds <SmartCapacityList>(smartCapacityListIds);
                if (data.Count() != smartCapacityListIds.Count())
                {
                    return(Result.GenError <Result>(Error.SmartCapacityListNotExist));
                }
            }
            var createUserId   = Request.GetIdentityInformation();
            var markedDateTime = DateTime.Now;

            if (oldCapacity.CategoryId != capacity.CategoryId)
            {
                capacity.MarkedDateTime = markedDateTime;
                SmartCapacityHelper.UpdateCategoryId(capacity);
            }

            foreach (var smartCapacityList in capacityLists)
            {
                smartCapacityList.CreateUserId   = createUserId;
                smartCapacityList.MarkedDateTime = markedDateTime;
                smartCapacityList.CapacityId     = capacityId;
            }
            var oldSmartCapacityLists = SmartCapacityListHelper.GetSmartCapacityLists(capacityId);
            //删除
            var delete = oldSmartCapacityLists.Where(z => capacityLists.Where(x => x.Id != 0).All(y => y.Id != z.Id));

            if (delete.Any())
            {
                SmartCapacityListHelper.Instance.Delete(delete.Select(x => x.Id));
            }
            //更新
            var update = capacityLists.Where(x => x.Id != 0);

            if (update.Any())
            {
                SmartCapacityListHelper.Instance.Update(update);
            }

            //新增
            var add = capacityLists.Where(x => x.Id == 0);

            if (add.Any())
            {
                SmartCapacityListHelper.Instance.Add(add);
            }

            OldWorkFlowHelper.Instance.OnSmartCapacityListChanged(capacityLists);
            return(Result.GenError <Result>(Error.Success));
        }