/// <summary> /// 获取人数记录项合计数 /// </summary> /// <param name="populationId">人数统计ID</param> /// <returns></returns> public IEnumerable <PopulationDetail> FindSumDetails(string populationId) { List <PopulationDetail> data = new List <PopulationDetail>(); var records = this.baseDal.FindListByField("populationId", populationId); foreach (var record in records) { foreach (var item in record.Details) { if (item.InTotal) { var detail = data.Find(r => r.Code == item.Code); if (detail == null) { PopulationDetail pd = new PopulationDetail { Name = item.Name, Code = item.Code, Number = item.Number }; data.Add(pd); } else { detail.Number += item.Number; } } } } return(data); }
/// <summary> /// 设置人数记录表格 /// </summary> private void SetDetailGrid() { List <PopulationDetail> details = new List <PopulationDetail>(); details.AddRange(this.currentRecord.Details); var dict1 = BusinessFactory <DictBusiness> .Instance.FindItems(EnergyConstant.TeacherDictCode); foreach (var dictItem in dict1) { if (details.Any(r => r.Code == dictItem.Value)) { continue; } PopulationDetail detail = new PopulationDetail { Code = dictItem.Value, Name = dictItem.Remark, Number = 0, InTotal = false }; details.Add(detail); } var dict2 = BusinessFactory <DictBusiness> .Instance.FindItems(EnergyConstant.StudentDictCode); foreach (var dictItem in dict2) { if (details.Any(r => r.Code == dictItem.Value)) { continue; } PopulationDetail detail = new PopulationDetail { Code = dictItem.Value, Name = dictItem.Remark, Number = 0, InTotal = false }; details.Add(detail); } this.popDetailsGrid.DataSource = details; }
/// <summary> /// BsonDocument转实体对象 /// </summary> /// <param name="doc">Bson文档</param> /// <returns></returns> protected override PopulationRecord DocToEntity(BsonDocument doc) { PopulationRecord entity = new PopulationRecord(); entity.Id = doc["_id"].ToString(); entity.PopulationId = doc["populationId"].ToString(); entity.DepartmentId = doc["departmentId"].ToString(); var createBy = doc["createBy"].ToBsonDocument(); entity.CreateBy = new UpdateStamp { UserId = createBy["userId"].ToString(), Name = createBy["name"].ToString(), Time = createBy["time"].ToLocalTime() }; var updateBy = doc["updateBy"].ToBsonDocument(); entity.UpdateBy = new UpdateStamp { UserId = updateBy["userId"].ToString(), Name = updateBy["name"].ToString(), Time = updateBy["time"].ToLocalTime() }; entity.Remark = doc["remark"].ToString(); entity.Status = doc["status"].ToInt32(); entity.Details = new List <PopulationDetail>(); if (doc.Contains("details")) { BsonArray array = doc["details"].AsBsonArray; foreach (BsonDocument item in array) { PopulationDetail detail = new PopulationDetail(); detail.Name = item["name"].ToString(); detail.Code = item["code"].ToString(); detail.Number = item["number"].ToInt32(); detail.InTotal = item.GetValue("inTotal", true).ToBoolean(); entity.Details.Add(detail); } } return(entity); }
/// <summary> /// 自定义数据显示 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgvEntity_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e) { int rowIndex = e.ListSourceRowIndex; if (rowIndex < 0 || rowIndex >= this.bsEntity.Count) { return; } var record = this.bsEntity[rowIndex] as PopulationRecord; switch (e.Column.FieldName) { case "colEstablishment": { var detail = record.Details.Find(r => r.Code == "Establishment"); if (detail == null) { detail = new PopulationDetail { Name = "在职在编", Code = "Establishment", Number = 0, InTotal = true }; record.Details.Add(detail); } if (e.IsGetData) { e.Value = detail.Number; } if (e.IsSetData) { detail.Number = Convert.ToInt32(e.Value); } } break; case "colPersonnelAgency": { var detail = record.Details.Find(r => r.Code == "PersonnelAgency"); if (detail == null) { detail = new PopulationDetail { Name = "人事代理", Code = "PersonnelAgency", Number = 0, InTotal = true }; record.Details.Add(detail); } if (e.IsGetData) { e.Value = detail.Number; } if (e.IsSetData) { detail.Number = Convert.ToInt32(e.Value); } } break; case "colUndergraduate": { var detail = record.Details.Find(r => r.Code == "Undergraduate"); if (detail == null) { detail = new PopulationDetail { Name = "本科生", Code = "Undergraduate", Number = 0, InTotal = true }; record.Details.Add(detail); } if (e.IsGetData) { e.Value = detail.Number; } if (e.IsSetData) { detail.Number = Convert.ToInt32(e.Value); } } break; case "colMaster": { var detail = record.Details.Find(r => r.Code == "Master"); if (detail == null) { detail = new PopulationDetail { Name = "硕士生", Code = "Master", Number = 0, InTotal = true }; record.Details.Add(detail); } if (e.IsGetData) { e.Value = detail.Number; } if (e.IsSetData) { detail.Number = Convert.ToInt32(e.Value); } } break; case "colProfessionalMaster": { var detail = record.Details.Find(r => r.Code == "ProfessionalMaster"); if (detail == null) { detail = new PopulationDetail { Name = "专业硕士生", Code = "ProfessionalMaster", Number = 0, InTotal = true }; record.Details.Add(detail); } if (e.IsGetData) { e.Value = detail.Number; } if (e.IsSetData) { detail.Number = Convert.ToInt32(e.Value); } } break; case "colDoctor": { var detail = record.Details.Find(r => r.Code == "Doctor"); if (detail == null) { detail = new PopulationDetail { Name = "博士生", Code = "Doctor", Number = 0, InTotal = true }; record.Details.Add(detail); } if (e.IsGetData) { e.Value = detail.Number; } if (e.IsSetData) { detail.Number = Convert.ToInt32(e.Value); } } break; case "colAbroadStudent": { var detail = record.Details.Find(r => r.Code == "AbroadStudent"); if (detail == null) { detail = new PopulationDetail { Name = "留学生", Code = "AbroadStudent", Number = 0, InTotal = true }; record.Details.Add(detail); } if (e.IsGetData) { e.Value = detail.Number; } if (e.IsSetData) { detail.Number = Convert.ToInt32(e.Value); } } break; } }