Пример #1
0
        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));
        }
Пример #2
0
        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));
        }