Exemple #1
0
        public object PostWork([FromBody] IEnumerable <WorkDetail> details)
        {
            if (details == null || !details.Any())
            {
                return(Result.GenError <Result>(Error.ParamError));
            }
            if (details.Any(x => x.EstimatedTime == default(DateTime)))
            {
                return(Result.GenError <Result>(Error.WorkEstimatedTimeError));
            }
            if (details.Any(x => x.EstimatedTime < DateTime.Today))
            {
                return(Result.GenError <Result>(Error.WorkEstimatedTimeMin));
            }
            if (details.Any(x => x.Target <= 0))
            {
                return(Result.GenError <Result>(Error.WorkTargetError));
            }
            var opQIds             = details.Select(x => x.OProductionId).Distinct();
            var oldWorkProductions = OrderProductionHelper.GetDetails(null, null, opQIds);

            if (oldWorkProductions.Count() != opQIds.Count())
            {
                return(Result.GenError <Result>(Error.OrderProductionNotExist));
            }
            var userId         = Request.GetIdentityInformation();
            var markedDateTime = DateTime.Now;

            foreach (var detail in details)
            {
                detail.CreateUserId   = userId;
                detail.MarkedDateTime = markedDateTime;
                detail.CreateTime     = markedDateTime;
                detail.Remark         = detail.Remark ?? "";
            }

            var numbers = WorkHelper.GetNumbers(userId, markedDateTime, details.Count(), "DD");

            if (numbers.Count() != details.Count())
            {
                return(Result.GenError <Result>(Error.OrderIdFail));
            }
            details = details.Select((x, i) =>
            {
                x.WoNumber = numbers.ElementAt(i).WoNumber;
                return(x);
            });
            WorkHelper.Instance.Add(details);
            var result = new DataResult();

            result.datas.AddRange(numbers.Select(x => x.WoNumber));
            return(result);
        }
        public DataResult GetOrderProduction([FromQuery] int qId, int oId, bool menu)
        {
            var result = new DataResult();

            result.datas.AddRange(menu
                ? OrderProductionHelper.GetMenu(oId, qId)
                : OrderProductionHelper.GetDetail(oId, qId));
            if (qId != 0 && !result.datas.Any())
            {
                result.errno = Error.OrderProductionNotExist;
                return(result);
            }
            return(result);
        }
Exemple #3
0
        public object PutWork([FromBody] IEnumerable <Work> details)
        {
            if (details == null || !details.Any())
            {
                return(Result.GenError <Result>(Error.ParamError));
            }
            if (details.Any(x => x.Id == 0))
            {
                return(Result.GenError <Result>(Error.WorkNotExist));
            }

            if (details.Any(x => x.EstimatedTime == default(DateTime)))
            {
                return(Result.GenError <Result>(Error.WorkEstimatedTimeError));
            }
            if (details.Any(x => x.EstimatedTime < DateTime.Today))
            {
                return(Result.GenError <Result>(Error.WorkEstimatedTimeMin));
            }
            if (details.Any(x => x.Target <= 0))
            {
                return(Result.GenError <Result>(Error.WorkTargetError));
            }
            var ids      = details.Select(x => x.Id);
            var oldWorks = WorkHelper.Instance.GetByIds <Work>(ids);

            if (oldWorks.Count() != details.Count())
            {
                return(Result.GenError <Result>(Error.WorkNotExist));
            }
            var opQIds             = oldWorks.Select(x => x.OProductionId).Distinct();
            var oldWorkProductions = OrderProductionHelper.GetDetails(null, null, opQIds).ToDictionary(x => x.Id);

            if (details.Any(x => oldWorkProductions.ContainsKey(x.OProductionId) && oldWorkProductions[x.OProductionId].DeliveryTime < x.EstimatedTime))
            {
                return(Result.GenError <Result>(Error.WorkEstimatedTimeMinDeliveryTime));
            }
            var markedDateTime = DateTime.Now;

            foreach (var detail in details)
            {
                detail.MarkedDateTime = markedDateTime;
                detail.Remark         = detail.Remark ?? "";
            }
            WorkHelper.Instance.Update(details);
            return(Result.GenError <Result>(Error.Success));
        }
        public object PutOrderProduction([FromBody] IEnumerable <OrderProduction> details)
        {
            if (details == null || !details.Any())
            {
                return(Result.GenError <Result>(Error.ParamError));
            }
            if (details.Any(x => x.Id == 0))
            {
                return(Result.GenError <Result>(Error.OrderProductionNotExist));
            }
            if (details.Any(x => x.DeliveryTime == default(DateTime)))
            {
                return(Result.GenError <Result>(Error.OrderProductionNotExist));
            }

            if (details.GroupBy(x => x.DeliveryTime).Any(y => y.Count() > 1))
            {
                return(Result.GenError <Result>(Error.OrderProductionDuplicate));
            }

            var ids = details.Select(x => x.Id);
            var cnt = OrderProductionHelper.Instance.GetCountByIds(ids);

            if (cnt != details.Count())
            {
                return(Result.GenError <Result>(Error.OrderProductionNotExist));
            }
            var oId   = details.FirstOrDefault()?.OrderId ?? 0;
            var sames = details.Select(x => x.DeliveryTime);

            if (OrderProductionHelper.GetHaveSame(oId, oId, sames, ids))
            {
                return(Result.GenError <Result>(Error.OrderProductionIsExist));
            }

            var markedDateTime = DateTime.Now;

            foreach (var detail in details)
            {
                detail.MarkedDateTime = markedDateTime;
                detail.Remark         = detail.Remark ?? "";
            }
            OrderProductionHelper.Instance.Update(details);
            return(Result.GenError <Result>(Error.Success));
        }
Exemple #5
0
        public object GetOrder([FromQuery] bool menu, int qId, bool pro, int pId)
        {
            var result = new DataResult();

            if (menu)
            {
                result.datas.AddRange(OrderHelper.GetMenu(qId));
            }
            else
            {
                if (qId != 0 && pro)
                {
                    var orderProductions = OrderProductionHelper.GetDetail(qId, pId, 0);
                    return(new
                    {
                        errno = 0,
                        errmsg = "成功",
                        datas = orderProductions
                    });
                }
                var data = OrderHelper.GetDetail(qId);
                if (qId != 0)
                {
                    var oIds = data.Select(x => x.Id);
                    if (oIds.Any())
                    {
                        var orderProductions = OrderProductionHelper.GetDetails(oIds);
                        foreach (var d in data)
                        {
                            d.Pros.AddRange(orderProductions.Where(x => x.OrderId == d.Id));
                        }
                    }
                }
                result.datas.AddRange(data);
            }
            if (qId != 0 && !result.datas.Any())
            {
                result.errno = Error.OrderNotExist;
                return(result);
            }
            return(result);
        }
        public object PostOrderProduction([FromBody] IEnumerable <OrderProductionDetail> details)
        {
            if (details == null || !details.Any())
            {
                return(Result.GenError <Result>(Error.ParamError));
            }
            if (details.Any(x => x.DeliveryTime == default(DateTime)))
            {
                return(Result.GenError <Result>(Error.OrderProductionNotExist));
            }

            if (details.GroupBy(x => x.DeliveryTime).Any(y => y.Count() > 1))
            {
                return(Result.GenError <Result>(Error.OrderProductionDuplicate));
            }

            var oId   = details.FirstOrDefault()?.OrderId ?? 0;
            var sames = details.Select(x => x.DeliveryTime);

            if (OrderProductionHelper.GetHaveSame(oId, oId, sames))
            {
                return(Result.GenError <Result>(Error.OrderProductionIsExist));
            }

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

            foreach (var detail in details)
            {
                detail.CreateUserId   = userId;
                detail.MarkedDateTime = markedDateTime;
                detail.Remark         = detail.Remark ?? "";
            }
            OrderProductionHelper.Instance.Add(details);
            return(Result.GenError <Result>(Error.Success));
        }
Exemple #7
0
        public object PutOrder([FromBody] IEnumerable <OrderDetail> details)
        {
            if (details == null || !details.Any())
            {
                return(Result.GenError <Result>(Error.ParamError));
            }
            if (details.Any(x => x.Id == 0))
            {
                return(Result.GenError <Result>(Error.OrderNotExist));
            }
            if (details.Any(x => x.ExNumber.IsNullOrEmpty()))
            {
                return(Result.GenError <Result>(Error.OrderNotEmpty));
            }
            if (details.GroupBy(x => x.ExNumber).Any(y => y.Count() > 1))
            {
                return(Result.GenError <Result>(Error.OrderDuplicate));
            }
            if (details.Count(detail => detail.Pros.GroupBy(x => x.DeliveryTime).Any(y => y.Count() > 1)) > 0)
            {
                return(Result.GenError <Result>(Error.OrderProductionDuplicate));
            }

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

            foreach (var detail in details)
            {
                detail.CreateUserId   = userId;
                detail.MarkedDateTime = markedDateTime;
                detail.CreateTime     = markedDateTime;
                detail.List           = detail.Pros?.Select(x => x.ProductionId).Distinct().Join() ?? "";
                detail.DeliveryTime   = detail.Pros?.Max(x => x.DeliveryTime) ?? default(DateTime);
                detail.Count          = detail.Pros?.Sum(x => x.Count) ?? 0;
                detail.Pros           = detail.Pros ?? new List <OrderProductionDetail>();
                foreach (var d in detail.Pros)
                {
                    d.OrderId = detail.Id;
                }
                detail.Remark = detail.Remark ?? "";
            }
            if (details.Count(detail => detail.Pros.GroupBy(x => x.DeliveryTime).Any(y => y.Count() > 1)) > 0)
            {
                return(Result.GenError <Result>(Error.OrderProductionDuplicate));
            }
            var sames = details.Select(x => x.ExNumber);
            var ids   = details.Select(x => x.Id);

            if (OrderHelper.GetHaveSame(sames, ids))
            {
                return(Result.GenError <Result>(Error.OrderIsExist));
            }
            var oIds   = details.Select(x => x.Id);
            var pIds   = details.SelectMany(x => x.PIds);
            var sameDs = details.SelectMany(x => x.Pros.Select(y => y.DeliveryTime));
            var opIds  = details.SelectMany(x => x.Pros.Select(y => y.Id));

            if (OrderProductionHelper.GetHaveSame(oIds, pIds, sameDs, opIds))
            {
                return(Result.GenError <Result>(Error.OrderProductionIsExist));
            }
            var oldOrders = OrderHelper.GetDetails(oIds).ToDictionary(x => x.Id);

            if (oldOrders.Count != oIds.Count())
            {
                return(Result.GenError <Result>(Error.OrderNotExist));
            }

            var upOrders = details.Where(x => ClassExtension.HaveChange(x, oldOrders[x.Id], true));

            if (upOrders.Any())
            {
                OrderHelper.Instance.Update(upOrders);
            }

            var oldOrderProductions = OrderProductionHelper.GetDetails(oIds, pIds);
            var add = new List <OrderProduction>();
            var up  = new List <OrderProduction>();
            var del = new List <OrderProduction>();

            foreach (var detail in details)
            {
                var oldOPs = oldOrderProductions.Where(x => x.OrderId == detail.Id).ToDictionary(x => x.Id);
                del.AddRange(oldOPs.Where(x => detail.Pros.All(y => y.Id != x.Key)).Select(x => x.Value));
                foreach (var pro in detail.Pros)
                {
                    if (oldOPs.ContainsKey(pro.Id))
                    {
                        if (ClassExtension.HaveChange(pro, oldOPs[pro.Id], true))
                        {
                            pro.MarkedDateTime = markedDateTime;
                            pro.Remark         = pro.Remark ?? "";
                            up.Add(pro);
                        }
                    }
                    else
                    {
                        add.Add(pro);
                    }
                }
            }
            if (add.Any())
            {
                OrderProductionHelper.Instance.Add(add);
            }

            if (up.Any())
            {
                OrderProductionHelper.Instance.Update <OrderProduction>(up);
            }

            if (del.Any())
            {
                OrderProductionHelper.Instance.Delete(del.Select(x => x.Id));
            }

            return(Result.GenError <Result>(Error.Success));
        }