示例#1
0
        public JsonResult UpgradeBOQ(string ContractInfoID)
        {
            string contractInfoID = this.GetQueryString("ContractInfoID");
            var    contractInfo   = this.GetEntityByID <S_P_ContractInfo>(contractInfoID);

            if (contractInfo == null)
            {
                throw new Formula.Exceptions.BusinessValidationException("没有找到指定的分包合同信息");
            }

            var versionQuery = entities.Set <S_C_BOQ_Version>().Where(a => a.ContractInfoID == contractInfoID);

            if (versionQuery.Count(c => c.FlowPhase != "End") > 0)
            {
                throw new Formula.Exceptions.BusinessValidationException("尚存在未发布的BOQ清单数据,无法再次升版");
            }

            var    userInfo        = FormulaHelper.GetUserInfo();
            string bomVersionPhase = BomVersionPhase.设计版本.ToString();
            var    lastVersion     = versionQuery.Where(c => c.FlowPhase == "End" && c.BOQType == bomVersionPhase).
                                     OrderByDescending(c => c.ID).FirstOrDefault();

            var newVersion = new S_C_BOQ_Version();

            newVersion.ID                = FormulaHelper.CreateGuid();
            newVersion.CreateDate        = DateTime.Now;
            newVersion.EngineeringInfoID = contractInfo.EngineeringInfoID;
            newVersion.CreateUser        = userInfo.UserName;
            newVersion.CreateUserID      = userInfo.UserID;
            newVersion.ContractInfoID    = contractInfo.ID;
            newVersion.FlowPhase         = "Start";
            newVersion.FlowInfo          = "";
            if (lastVersion != null)
            {
                //var versionNum = String.IsNullOrEmpty(lastVersion.VersionNumber) || !Regex.IsMatch(lastVersion.VersionNumber, @"[1-9]\d*$") ? 0 :
                //    Convert.ToInt32(lastVersion.VersionNumber);
                var versionNum = lastVersion.VersionNumber;
                newVersion.VersionNumber = versionNum + 1;
                var list = entities.Set <S_C_BOQ_Version_Detail>().Where(c => c.ModifyState != "Remove" && c.VersionID == lastVersion.ID).ToList();
                foreach (var item in list)
                {
                    var detail = item.Clone <S_C_BOQ_Version_Detail>();
                    detail.ModifyState = "Normal";
                    detail.VersionID   = newVersion.ID;
                    entities.Set <S_C_BOQ_Version_Detail>().Add(detail);
                }
            }
            else
            {
                newVersion.VersionNumber = 1;
            }
            newVersion.VersionName = "第【" + newVersion.VersionNumber + "】版分包合同清单";
            newVersion.BOQType     = BomVersionPhase.设计版本.ToString();
            entities.Set <S_C_BOQ_Version>().Add(newVersion);
            entities.SaveChanges();
            return(Json(""));
        }
示例#2
0
        public JsonResult StandardImport(string listData)
        {
            var             vID     = GetQueryString("VersionID");
            S_C_BOQ_Version version = entities.Set <S_C_BOQ_Version>().Find(vID);

            if (version == null)
            {
                throw new Formula.Exceptions.BusinessValidationException("未找到ID为" + vID + "的S_C_BOQ_Version");
            }

            List <Dictionary <string, object> > dics = JsonConvert.DeserializeObject <List <Dictionary <string, object> > >(listData);

            var details  = this.entities.Set <S_C_BOQ_Version_Detail>().Where(a => a.VersionID == vID).ToList();
            var maxindex = details.Count() == 0 ? 0 : details.Max(a => a.SortIndex);

            foreach (var item in dics)
            {
                S_C_BOQ_Version_Detail detail = new S_C_BOQ_Version_Detail();
                detail.ID        = FormulaHelper.CreateGuid();
                detail.BOQID     = detail.ID;
                detail.VersionID = version.ID;

                string code = item.GetValue("Code");
                //if (entities.Set<S_C_BOQ_Version_Detail>()
                //    .Any(a => a.Code == code))
                //{
                //    throw new Formula.Exceptions.BusinessValidationException("编号【" + code + "】重复");
                //}

                detail.Code      = code;
                detail.Name      = item.GetValue("Name");
                detail.Property  = item.GetValue("Property");
                detail.Unit      = item.GetValue("Unit");
                detail.Quantity  = 0;
                detail.Price     = 0;
                detail.UnitPrice = 0;
                detail.Remark    = item.GetValue("Remark");

                detail.CreateDate   = DateTime.Now;
                detail.CreateUserID = CurrentUserInfo.UserID;
                detail.CreateUser   = CurrentUserInfo.UserName;
                detail.ModifyState  = "Add";
                detail.SortIndex    = maxindex + 0.001;
                maxindex            = detail.SortIndex;

                entities.Set <S_C_BOQ_Version_Detail>().Add(detail);
            }
            entities.SaveChanges();
            return(Json(""));
        }
        public JsonResult GetBOQSummary(string ContractInfoID, QueryBuilder qb)
        {
            S_C_BOQ_Version zeroVersion   = EPCEntites.Set <S_C_BOQ_Version>().Where(a => a.ContractInfoID == ContractInfoID).OrderBy(a => a.VersionNumber).FirstOrDefault();
            string          zeroVersionID = "";

            if (zeroVersion != null)
            {
                zeroVersionID = zeroVersion.ID;
            }
            var zeroVersionDetail = EPCEntites.Set <S_C_BOQ_Version_Detail>().Where(a => a.VersionID == zeroVersionID);

            var resultQuery = (from a in EPCEntites.Set <S_C_BOQ>().Where(a => a.ContractInfoID == ContractInfoID)
                               join b in zeroVersionDetail
                               on a.ID equals b.BOQID into abR
                               from ab in abR.DefaultIfEmpty()
                               select new
            {
                ID = a.ID,
                Name = a.Name,
                Code = a.Code,
                Property = a.Property,
                Unit = a.Unit,
                //终版本
                UnitPrice = a.UnitPrice,
                Quantity = a.Quantity,
                Price = a.UnitPrice * a.Quantity,
                //0版
                ZeroUnitPrice = ab.UnitPrice ?? 0,
                ZeroQuantity = ab.Quantity ?? 0,
                ZeroPrice = (ab.UnitPrice ?? 0) * (ab.Quantity ?? 0),
                //累计变更
                UnitPriceDelta = a.UnitPrice - (ab.UnitPrice ?? 0),
                QuantityDelta = a.Quantity - (ab.Quantity ?? 0),
                PriceDelta = a.UnitPrice * a.Quantity - (ab.UnitPrice ?? 0) * (ab.Quantity ?? 0),
                //已计量根据计量单
                CheckQuantityTotal = a.CheckQuantityTotal ?? 0,
                //已计合价根据计价单
                CheckPriceTotal = a.CheckPriceTotal ?? 0,
                Percent = Math.Round((decimal)((a.UnitPrice * a.Quantity ?? 0) == 0 ? 0 : (a.CheckPriceTotal ?? 0) / (a.UnitPrice * a.Quantity) * 100), 2)
            }).Where(qb);

            return(Json(resultQuery.ToList()));
        }
示例#4
0
        public JsonResult SaveExcelData()
        {
            var    reader   = new System.IO.StreamReader(HttpContext.Request.InputStream);
            string data     = reader.ReadToEnd();
            var    tempdata = JsonConvert.DeserializeObject <Dictionary <string, string> >(data);
            var    list     = JsonConvert.DeserializeObject <List <Dictionary <string, object> > >(tempdata["data"]);

            var             vID     = GetQueryString("VersionID");
            S_C_BOQ_Version version = entities.Set <S_C_BOQ_Version>().Find(vID);

            if (version == null)
            {
                throw new Formula.Exceptions.BusinessValidationException("未找到ID为" + vID + "的S_C_BOQ_Version");
            }

            var groups = list.GroupBy(a => a.GetValue("Code")).Select(g => new { g.Key, Counts = g.Count() }).ToList();

            if (groups.Count(a => a.Counts > 1) > 0)
            {
                throw new Formula.Exceptions.BusinessValidationException("编号【" + groups.FirstOrDefault(a => a.Counts > 1).Key + "】重复");
            }

            var details  = this.entities.Set <S_C_BOQ_Version_Detail>().Where(a => a.VersionID == vID).ToList();
            var maxindex = details.Count() == 0 ? 0 : details.Max(a => a.SortIndex);

            foreach (var item in list)
            {
                string code = item.GetValue("Code");
                if (entities.Set <S_C_BOQ_Version_Detail>()
                    .Any(a => a.Code == code))
                {
                    throw new Formula.Exceptions.BusinessValidationException("编号【" + item.GetValue("Code") + "】重复");
                }

                S_C_BOQ_Version_Detail detail = new S_C_BOQ_Version_Detail();
                detail.ID        = FormulaHelper.CreateGuid();
                detail.BOQID     = detail.ID;
                detail.VersionID = version.ID;
                detail.Code      = item.GetValue("Code");
                detail.Name      = item.GetValue("Name");
                detail.Property  = item.GetValue("Property");
                detail.Unit      = item.GetValue("Unit");
                decimal tmp = 0;
                if (decimal.TryParse(item.GetValue("UnitPrice"), out tmp))
                {
                    detail.UnitPrice = tmp;
                }
                if (decimal.TryParse(item.GetValue("Quantity"), out tmp))
                {
                    detail.Quantity = tmp;
                }
                if (decimal.TryParse(item.GetValue("Price"), out tmp))
                {
                    detail.Price = tmp;
                }
                else
                {
                    detail.Price = detail.UnitPrice * detail.Quantity;
                }

                detail.Remark = item.GetValue("Remark");

                detail.CreateDate   = DateTime.Now;
                detail.CreateUserID = CurrentUserInfo.UserID;
                detail.CreateUser   = CurrentUserInfo.UserName;
                detail.ModifyState  = "Add";
                detail.SortIndex    = maxindex + 0.001;
                maxindex            = detail.SortIndex;

                entities.Set <S_C_BOQ_Version_Detail>().Add(detail);
            }

            entities.SaveChanges();
            return(Json("Success"));
        }
示例#5
0
        public JsonResult ValidateData()
        {
            var    reader    = new System.IO.StreamReader(HttpContext.Request.InputStream);
            string data      = reader.ReadToEnd();
            var    tempdata  = JsonConvert.DeserializeObject <Dictionary <string, string> >(data);
            var    excelData = JsonConvert.DeserializeObject <ExcelData>(tempdata["data"]);

            var             vID      = GetQueryString("VersionID");
            S_C_BOQ_Version quantity = entities.Set <S_C_BOQ_Version>().Find(vID);

            if (quantity == null)
            {
                throw new Formula.Exceptions.BusinessValidationException("未找到ID为" + vID + "的S_C_BOQ_Version");
            }

            List <string> tmpCodes = new List <string>();
            var           errors   = excelData.Vaildate(e =>
            {
                if (e.FieldName == "Code")
                {
                    if (String.IsNullOrEmpty(e.Value))
                    {
                        e.IsValid   = false;
                        e.ErrorText = "清单编号不能为空";
                    }
                    else if (tmpCodes.Contains(e.Value))
                    {
                        e.IsValid   = false;
                        e.ErrorText = "excel表中清单编号重复";
                    }
                    else if (entities.Set <S_C_BOQ_Version_Detail>().Any(a => a.VersionID == vID && a.Code == e.Value))
                    {
                        e.IsValid   = false;
                        e.ErrorText = "清单编号已存在";
                    }
                    else
                    {
                        tmpCodes.Add(e.Value);
                    }
                }
                else if (e.FieldName == "Name" && String.IsNullOrEmpty(e.Value))
                {
                    e.IsValid   = false;
                    e.ErrorText = "名称不能为空";
                }
                else if (e.FieldName == "UnitPrice")
                {
                    decimal tmp = 0;
                    if (!String.IsNullOrEmpty(e.Value) && !decimal.TryParse(e.Value, out tmp))
                    {
                        e.IsValid   = false;
                        e.ErrorText = "单价格式不对";
                    }
                }
                else if (e.FieldName == "Quantity")
                {
                    decimal tmp = 0;
                    if (!String.IsNullOrEmpty(e.Value) && !decimal.TryParse(e.Value, out tmp))
                    {
                        e.IsValid   = false;
                        e.ErrorText = "数量格式不对";
                    }
                }
                else if (e.FieldName == "Price")
                {
                    decimal tmp = 0;
                    if (!String.IsNullOrEmpty(e.Value) && !decimal.TryParse(e.Value, out tmp))
                    {
                        e.IsValid   = false;
                        e.ErrorText = "合价格式不对";
                    }
                }
            });

            return(Json(errors));
        }