public ActionResult QuarterChart([NodeValueParameterBinder] NodeValueParameter parameter) { parameter.Years = Core.FormManager.GetFormYears(parameter.FormID); ViewBag.Parameter = parameter; parameter.RateType = null; parameter.Quarter = 0; if (parameter.NodeID > 0) { var node = Core.FormManager.GetNode(parameter.NodeID); var childNodes = Core.FormManager.GetNodeChildren(parameter.NodeID); var nodeIds = childNodes.Select(e => e.ID).ToList(); nodeIds.Insert(0, node.ID); parameter.NodeIds = nodeIds.ToArray(); childNodes.Insert(0, node); ViewBag.NodeValues = Core.FormManager.GetNodeValues(parameter); ViewBag.Nodes = childNodes; } else { var childNodes = Core.FormManager.GetRootNodes(parameter.FormID); parameter.NodeIds = childNodes.Select(e => e.ID).ToArray(); ViewBag.NodeValues = Core.FormManager.GetNodeValues(parameter); ViewBag.Nodes = childNodes; } ViewBag.ValueTypes = Core.FormManager.GetNodeValueTypes(); return(View()); }
private NodeValue GetOrSetParentAreaValueEntity(NodeValueParameter parameter) { using (var db = GetDbContext()) { var entity = db.NodeValues.FirstOrDefault(e => e.AreaID == parameter.AreaID.Value && e.Year == parameter.Year && e.Quarter == parameter.Quarter && e.TypeID == parameter.TypeID && e.NodeID == parameter.NodeID && e.Period == parameter.Period ); if (entity == null) { entity = new NodeValue(parameter); db.NodeValues.Add(entity); } entity.Value = db.NodeValues.Where(e => parameter.AreaIds.Contains(e.AreaID) && e.Year == parameter.Year && e.Quarter == parameter.Quarter && e.TypeID == parameter.TypeID && e.NodeID == parameter.NodeID && e.Period == parameter.Period ).Select(e => e.Value).DefaultIfEmpty(0).Sum(); entity.Value = entity.Value; entity.UpdateTime = DateTime.Now; db.SaveChanges(); return(entity); } }
public ActionResult NodeChart([NodeValueParameterBinder] NodeValueParameter parameter) { ViewBag.Form = Core.FormManager.GetForm(parameter.FormID); ViewBag.ValueTypes = Core.FormManager.GetNodeValueTypes(); //如果是查看某个分类的子类 if (parameter.NodeID > 0) { ViewBag.CurrentNode = Core.FormManager.GetNode(parameter.NodeID); ViewBag.CurrentNodeValues = Core.FormManager.GetNodeValues(parameter); } var childNodes = Core.FormManager.GetAllChildrenNodes(parameter.FormID, parameter.NodeID); ViewBag.ChildNodes = childNodes.Where(e => e.ParentID == parameter.NodeID).ToList(); parameter.NodeIds = childNodes.Select(e => e.ID).ToArray(); parameter.GetNode = false; parameter.GetArea = false; var list = Core.FormManager.GetNodeValues(parameter); foreach (var item in list) { item.Node = childNodes.FirstOrDefault(e => e.ID == item.NodeID); } ViewBag.ChildValues = list; ViewBag.Parameter = parameter; return(View()); }
public ActionResult NodeChart(NodeValueParameter parameter) { parameter.GetArea = true; parameter.GetNode = true; parameter.AreaID = null; ViewBag.NodeValues = Core.FormManager.GetNodeValues(parameter).Where(e => e.AreaID != 0 && e.Area != null).ToList(); return(View()); }
public ActionResult Index(NodeValueParameter parameter) { if (parameter.FormID > 0) { ViewBag.Form = Core.FormManager.GetForm(parameter.FormID); } ViewBag.Forms = Core.FormManager.GetForms(CurrentIdentity.FormIds); ViewBag.Parameter = parameter; return(View()); }
public ActionResult GetNodeValues(NodeValueParameter parameter) { if (CurrentIdentity.Role < UserRole.Advanced && parameter.AreaID == 0) { parameter.AreaID = CurrentIdentity.AreaIds.FirstOrDefault(); } var list = Core.FormManager.GetNodeValues(parameter); return(JsonSuccessResult(list)); }
public ActionResult Values(NodeValueParameter parameter) { var node = Core.FormManager.GetNode(parameter.NodeID); if (node == null) { throw new ArgumentException("参数错误,没有找到该分类"); } node.Values = Core.FormManager.GetNodeValues(parameter); ViewBag.Model = node; ViewBag.Parameter = parameter; return(View()); }
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { var request = controllerContext.HttpContext.Request; var result = new NodeValueParameter(); if (!string.IsNullOrWhiteSpace(request["formId"])) { result.FormID = int.Parse(request["formId"]); } if (!string.IsNullOrWhiteSpace(request["nodeId"])) { result.NodeID = int.Parse(request["nodeId"]); } if (!string.IsNullOrWhiteSpace(request["year"])) { result.Year = int.Parse(request["year"]); } if (!string.IsNullOrWhiteSpace(request["quarter"])) { result.Quarter = (Quarter)Enum.Parse(typeof(Quarter), request["quarter"]); } if (!string.IsNullOrWhiteSpace(request["rateType"])) { result.RateType = (RateType)Enum.Parse(typeof(RateType), request["rateType"]); } if (!string.IsNullOrWhiteSpace(request["areaId"])) { result.AreaID = int.Parse(request["areaId"]); } if (!string.IsNullOrWhiteSpace(request["period"])) { result.Period = (Period)Enum.Parse(typeof(Period), request["period"]); } //如果是区县用户,则AreaID必须在自己的控制范围内,且自动赋一个默认值 var identity = (UserIdentity)Thread.CurrentPrincipal.Identity; if (identity.Role == UserRole.Branch && result.AreaID == 0) { result.AreaID = identity.AreaIds.FirstOrDefault(); } return(result); }
public ActionResult Table(NodeValueParameter parameter) { parameter.GetArea = true; parameter.GetNode = true; parameter.AreaID = null; parameter.Quarter = 0; var nodeValues = Core.FormManager.GetNodeValues(parameter).Where(e => e.AreaID != 0 && e.Area != null).ToList(); var dict = nodeValues.GroupBy(e => e.Area).ToDictionary(e => e.Key, e => e.GroupBy(k => k.Quarter).ToDictionary(k => k.Key, k => k.GroupBy(m => m.Node.FormID).ToDictionary(m => m.Key, m => m.ToList()))); ViewBag.Dict = dict; var forms = Core.FormManager.GetForms(); var areas = Core.AreaManager.GetAreas(); ViewBag.Areas = areas; ViewBag.Forms = forms; return(View()); }
public ActionResult AreaChart([NodeValueParameterBinder] NodeValueParameter parameter) { if (parameter.NodeID == 0) { return(View()); } var areas = Core.AreaManager.GetAreas(); var areaIds = areas.Select(e => e.ID).ToArray(); parameter.AreaIds = areaIds; parameter.AreaID = null; ViewBag.Parameter = parameter; ViewBag.Areas = areas.Where(e => e.ParentID == (parameter.AreaID ?? 0)).ToList(); ViewBag.ValueTypes = Core.FormManager.GetNodeValueTypes(); ViewBag.AreaValues = Core.FormManager.GetNodeValues(parameter); ViewBag.Node = Core.FormManager.GetNode(parameter.NodeID); return(View()); }
private void UpdateParentAreaValue(NodeValue val, Form form) { if (val.AreaID == 0) { return; } var area = Core.AreaManager.GetArea(val.AreaID); if (area == null) { return; } //如果form设置了不自动计算子区域,那么非舟山市本身的总计外,其他父区域不自动计算 if (form.ExcludeSubArea && area.ParentID != 0) { return; } var parameter = new NodeValueParameter(val) { AreaID = area.ParentID }; //判断是否已经更新了同条件的parentarea的value if (_updateList.Any(e => e.EqualSingleValueParameter(parameter))) { return; } //查询子分类的ID parameter.AreaIds = Core.AreaManager.GetChildAreaIds(area.ParentID); //这里只应该有一条记录 var parentValue = GetOrSetParentAreaValueEntity(parameter); _updateList.Add(parameter); //更新新值的父区域数据 UpdateParentAreaValue(parentValue, form); }
public Stream ExportTrend(int year, Quarter quarter, int[] formIds) { var doc = WordHelper.CreateDoc("templates/资源形势模板.docx"); doc.WriteTitle(year + "年" + quarter.GetDescription() + "国土资源主要指标走势", "2"); foreach (var form in Core.FormManager.GetForms(formIds)) { var parameter = new NodeValueParameter { FormID = form.ID, Year = year, Quarter = quarter, GetNode = false, GetArea = false, GetValueType = true, RateType = RateType.YearOnYear, }; var values = Core.FormManager.GetNodeValues(parameter); var nodes = Core.FormManager.GetRootNodes(form.ID); doc.WriteTitle(form.Name, "3", NPOI.XWPF.UserModel.ParagraphAlignment.LEFT); var sb = new StringBuilder(); foreach (var node in nodes) { var nodeContent = GenerateContent(node, values); if (nodeContent.Length > 0) { sb.Append(nodeContent.Trim(';').Replace(",,", ",") + "。"); } } doc.WriteContent(sb.ToString()); } return(doc.GetStream()); }
public List <NodeValue> GetNodeValues(NodeValueParameter parameter) { using (var db = GetDbContext()) { if (parameter.FormID > 0 && parameter.NodeID == 0 && (parameter.NodeIds == null || parameter.NodeIds.Length == 0)) { parameter.NodeIds = GetNodeIds(parameter.FormID); } var query = db.NodeValues.AsQueryable(); if (parameter.NodeIds != null && parameter.NodeIds.Length > 0) { query = query.Where(e => parameter.NodeIds.Contains(e.NodeID)); } else if (parameter.NodeID > 0) { query = query.Where(e => e.NodeID == parameter.NodeID); } if (parameter.Years != null && parameter.Years.Length > 0) { query = query.Where(e => parameter.Years.Contains(e.Year)); } else if (parameter.Year > 0) { query = query.Where(e => e.Year == parameter.Year); } if (parameter.TypeIds != null && parameter.TypeIds.Length > 0) { query = query.Where(e => parameter.TypeIds.Contains(e.TypeID)); } else if (parameter.TypeID > 0) { query = query.Where(e => e.TypeID == parameter.TypeID); } if (parameter.Quarter.HasValue) { query = query.Where(e => e.Quarter == parameter.Quarter); } if (parameter.AreaIds != null && parameter.AreaIds.Length > 0) { query = query.Where(e => parameter.AreaIds.Contains(e.AreaID)); } else if (parameter.AreaID.HasValue) { query = query.Where(e => e.AreaID == parameter.AreaID.Value); } if (parameter.Period.HasValue) { query = query.Where(e => e.Period == parameter.Period.Value); } var list = query.ToList(); List <Area> areas = parameter.GetArea ? Core.AreaManager.GetAreas() : null; List <NodeValueType> types = parameter.GetValueType ? Core.FormManager.GetNodeValueTypes() : null; foreach (var item in list) { if (parameter.GetNode) { item.Node = Core.FormManager.GetNode(item.NodeID); } if (parameter.GetArea) { item.Area = areas.FirstOrDefault(e => e.ID == item.AreaID); } if (parameter.GetValueType) { item.Type = types.FirstOrDefault(e => e.ID == item.TypeID); } } if (parameter.RateType.HasValue) { var compareParameter = (NodeValueParameter)parameter.Clone(); compareParameter.UpdateTimeByRateType(); var compareList = GetNodeValues(compareParameter); foreach (var item in list) { var compareItem = compareList.FirstOrDefault(e => e.NodeID == item.NodeID && e.TypeID == item.TypeID && e.AreaID == item.AreaID ); if (compareItem != null) { item.CompareValue = compareItem.Value; } } } return(list); } }
public static NodeValueParameter GetNodeValueParameter(this Field field, int year, Quarter quarter, int[] areaIds) { var result = new NodeValueParameter { GetArea = false, GetNode = true, GetValueType = false }; foreach (var parameter in field.Parameters) { switch (parameter.Type) { case FieldType.Area: //如果当先用户限制了areaIds,但是并不包含模板中的该区域,则跳过此数据 if (areaIds != null && !areaIds.Contains(parameter.Value)) { result = null; return(result); } else { result.AreaID = parameter.Value; } break; case FieldType.Node: result.NodeID = parameter.Value; break; case FieldType.Quarter: if (parameter.Value > 0) { result.Quarter = (Quarter)parameter.Value; } else { result.Quarter = quarter; } break; case FieldType.Quarters: result.Quarter = quarter; break; case FieldType.Type: case FieldType.Value: result.TypeID = parameter.Value; break; case FieldType.Year: if (parameter.Value > 0) { result.Year = parameter.Value; } else { result.Year = year; } break; case FieldType.LastYear: result.Year = year - 1; break; case FieldType.Rate: result.RateType = (RateType)parameter.Value; break; case FieldType.Period: result.Period = (Period)parameter.Value; break; } } if (result.Year == 0 && (result.Years == null || result.Years.Length == 0)) { result.Year = year; } if (result.AreaID == 0 && areaIds != null) { result.AreaIds = areaIds; } if (result.Quarter == 0) { result.Quarter = quarter; } return(result); }