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 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 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 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)); }