public JsonResult ImportPBom(string ListData, string EngineeringInfoID, string PlanID) { var engineeringInfo = this.GetEntityByID <S_I_Engineering>(EngineeringInfoID); if (engineeringInfo == null) { throw new Formula.Exceptions.BusinessValidationException("未能找到指定的工程信息,无法导入采购包"); } var plan = this.GetEntityByID <S_P_Plan>(PlanID); var resultList = new List <S_P_Plan_Package>(); if (plan == null) { throw new Formula.Exceptions.BusinessValidationException("未能找到编辑中采购计划,请先进行升版操作后再进行导入"); } var list = JsonHelper.ToList(ListData); foreach (var item in list) { var bomID = item.GetValue("ID"); if (plan.S_P_Plan_Package.Count(c => c.S_P_Plan_Package_Item.Count(d => d.BomID == bomID) > 0) > 0) { continue; } var package = plan.AddEmptyPackage(); package.Name = item.GetValue("Name"); package.Code = item.GetValue("Code"); var pbsID = item.GetValue("PBSNodeID"); if (!String.IsNullOrEmpty(pbsID)) { var pbsNode = engineeringInfo.S_I_PBS.FirstOrDefault(c => c.ID == pbsID); if (pbsNode != null) { var subNode = pbsNode.Ancestor.FirstOrDefault(c => c.NodeType == "SubProject"); if (subNode != null) { package.SubProjectCode = subNode.Code; package.SubProjectName = subNode.Name; package.RelatePBSID = subNode.ID; } } } resultList.Add(package); var packageItem = new S_P_Plan_Package_Item(); packageItem.ID = FormulaHelper.CreateGuid(); packageItem.BomID = bomID; packageItem.ItemQuantity = String.IsNullOrEmpty(item.GetValue("Quantity")) ? 0 : Convert.ToDecimal(item.GetValue("Quantity")); packageItem.EngineeringInfoID = package.EngineeringInfoID; packageItem.ModifyState = BomVersionModifyState.Add.ToString(); packageItem.PlanID = package.PlanID; packageItem.VersionNo = ""; package.ItemCount = 1; package.ItemQuantity = packageItem.ItemQuantity; package.S_P_Plan_Package_Item.Add(packageItem); } this.entities.SaveChanges(); return(Json(resultList)); }
public JsonResult AddPackageItem(string PackageID, string ListData) { var package = this.GetEntityByID <S_P_Plan_Package>(PackageID); if (package == null) { throw new Formula.Exceptions.BusinessValidationException("未能找到指定的采购包,无法绑定设备材料"); } var result = new List <Dictionary <string, object> >(); var list = JsonHelper.ToList(ListData); foreach (var item in list) { var pBomID = item.GetValue("ID"); var pBom = this.GetEntityByID <S_P_Bom>(pBomID); //如果采购清单中不存在该内容,则不进行增加 if (pBom == null) { continue; } var packageItem = package.S_P_Plan_Package_Item.FirstOrDefault(c => c.BomID == pBomID); if (packageItem == null) { packageItem = new S_P_Plan_Package_Item(); packageItem.ID = FormulaHelper.CreateGuid(); packageItem.BomID = pBomID; packageItem.ItemQuantity = String.IsNullOrEmpty(item.GetValue("RemainPlanQuantity")) ? 0 : Convert.ToDecimal(item.GetValue("RemainPlanQuantity")); packageItem.EngineeringInfoID = package.EngineeringInfoID; packageItem.ModifyState = BomVersionModifyState.Add.ToString(); packageItem.PlanID = package.PlanID; packageItem.VersionNo = pBom.VersionNo; package.S_P_Plan_Package_Item.Add(packageItem); if (package.ModifyState == BomVersionModifyState.Normal.ToString()) { package.ModifyState = BomVersionModifyState.Modify.ToString(); } } else { var bomQuantity = pBom.Quantity.HasValue ? pBom.Quantity.Value : 0m; var planQuantity = 0m; packageItem.ItemQuantity = bomQuantity - planQuantity; if (packageItem.ModifyState == BomVersionModifyState.Modify.ToString()) { packageItem.ModifyState = BomVersionModifyState.Normal.ToString(); } else if (packageItem.ModifyState == BomVersionModifyState.Remove.ToString()) { packageItem.ModifyState = BomVersionModifyState.Normal.ToString(); } } var dic = FormulaHelper.ModelToDic <S_P_Plan_Package_Item>(packageItem); dic.SetValue("ParentID", package.ID); dic.SetValue("NodeType", "Detail"); } package.ItemCount = package.S_P_Plan_Package_Item.Count(c => c.ModifyState != "Remove"); if (package.S_P_Plan_Package_Item.Count(c => c.ModifyState != "Remove") > 0) { package.ItemQuantity = package.S_P_Plan_Package_Item.Where(c => c.ModifyState != "Remove").Sum(c => c.ItemQuantity); } this.entities.SaveChanges(); //更新采购清单中的已计划数量 foreach (var item in list) { var pBomID = item.GetValue("ID"); var pBom = this.GetEntityByID <S_P_Bom>(pBomID); if (pBom == null) { continue; } pBom.PlanQuantity = this.entities.Set <S_P_Plan_Package_Item>(). Where(c => c.PlanID == package.PlanID && c.BomID == pBomID && c.ModifyState != "Remove").Sum(c => c.ItemQuantity); } this.entities.SaveChanges(); return(Json(result)); }