using BLL; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web.UI.WebControls; namespace FineUIPro.Web.PZHGL.InformationProject { public partial class ProjectConstructionLogWorkEfficiencySum : PageBase { /// /// 加载表头 /// protected void Page_Init(object sender, EventArgs e) { InitGrid(); } #region 表头 /// /// 表头 /// private void InitGrid() { Model.SGGLDB db = Funs.DB; var contracts = (from x in db.PHTGL_Contract where x.ProjectId == this.CurrUser.LoginProjectId orderby x.ContractNum select x).ToList(); GroupField gf = new GroupField(); gf.ColumnID = "GX"; gf.HeaderText = "工效统计"; gf.HeaderTextAlign = TextAlign.Center; for (int i = 0; i < contracts.Count; i++) { RenderField rd1 = new RenderField(); rd1.ColumnID = "Contract" + i.ToString(); rd1.Width = Unit.Pixel(100); rd1.DataField = "Contract" + i.ToString(); rd1.FieldType = FieldType.Double; rd1.HeaderText = contracts[i].ContractNum; rd1.HeaderTextAlign = TextAlign.Center; gf.Columns.Add(rd1); } Grid1.Columns.Add(gf); } #endregion #region 加载 /// /// 加载页面 /// /// /// protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { } } #endregion private void GetData() { Model.SGGLDB db = Funs.DB; var constructionLogWorkEfficiencyMonths = from x in db.ZHGL_ConstructionLogWorkEfficiencyMonth join y in db.PHTGL_ContractTrack on x.ContractTrackId equals y.Id where x.ProjectId == this.CurrUser.LoginProjectId select new { x.TypeId, x.UnitOfMeasurement, y.ContractId, x.WorkEfficiency }; var persons = (from x in db.ZHGL_ConstructionLogWorkEfficiencyMonth join y in db.Base_WorkPost on x.TypeId equals y.WorkPostId where x.ProjectId == this.CurrUser.LoginProjectId && x.Type == "Person" select new { y.WorkPostName, x.UnitOfMeasurement, x.TypeId }).Distinct().OrderBy(x => x.WorkPostName).ToList(); var machines = (from x in db.ZHGL_ConstructionLogWorkEfficiencyMonth join y in db.Base_SpecialEquipment on x.TypeId equals y.SpecialEquipmentId where x.ProjectId == this.CurrUser.LoginProjectId && x.Type == "Machine" select new { y.SpecialEquipmentName, x.UnitOfMeasurement, x.TypeId }).Distinct().OrderBy(x => x.SpecialEquipmentName).ToList(); var contracts = (from x in db.PHTGL_Contract where x.ProjectId == this.CurrUser.LoginProjectId orderby x.ContractNum select x).ToList(); var workEfficiencyProjects = from x in db.ZHGL_ConstructionLogWorkEfficiencyProject where x.ProjectId == this.CurrUser.LoginProjectId select x; DataTable table = new DataTable(); table.Columns.Add(new DataColumn("Id", typeof(String))); table.Columns.Add(new DataColumn("Code", typeof(String))); table.Columns.Add(new DataColumn("Name", typeof(String))); table.Columns.Add(new DataColumn("UnitOfMeasurement", typeof(String))); table.Columns.Add(new DataColumn("BaseWorkEfficiency", typeof(String))); table.Columns.Add(new DataColumn("AvgWorkEfficiency", typeof(String))); table.Columns.Add(new DataColumn("Type", typeof(String))); table.Columns.Add(new DataColumn("TypeId", typeof(String))); table.Columns.Add(new DataColumn("Contract0", typeof(String))); table.Columns.Add(new DataColumn("Contract1", typeof(String))); table.Columns.Add(new DataColumn("Contract2", typeof(String))); table.Columns.Add(new DataColumn("Contract3", typeof(String))); table.Columns.Add(new DataColumn("Contract4", typeof(String))); table.Columns.Add(new DataColumn("Contract5", typeof(String))); table.Columns.Add(new DataColumn("Contract6", typeof(String))); table.Columns.Add(new DataColumn("Contract7", typeof(String))); table.Columns.Add(new DataColumn("Contract8", typeof(String))); table.Columns.Add(new DataColumn("Contract9", typeof(String))); table.Columns.Add(new DataColumn("Contract10", typeof(String))); table.Columns.Add(new DataColumn("Contract11", typeof(String))); table.Columns.Add(new DataColumn("Contract12", typeof(String))); table.Columns.Add(new DataColumn("Contract13", typeof(String))); table.Columns.Add(new DataColumn("Contract14", typeof(String))); table.Columns.Add(new DataColumn("Contract15", typeof(String))); table.Columns.Add(new DataColumn("Contract16", typeof(String))); table.Columns.Add(new DataColumn("Contract17", typeof(String))); table.Columns.Add(new DataColumn("Contract18", typeof(String))); table.Columns.Add(new DataColumn("Contract19", typeof(String))); table.Columns.Add(new DataColumn("Contract20", typeof(String))); table.Columns.Add(new DataColumn("Contract21", typeof(String))); table.Columns.Add(new DataColumn("Contract22", typeof(String))); table.Columns.Add(new DataColumn("Contract23", typeof(String))); table.Columns.Add(new DataColumn("Contract24", typeof(String))); table.Columns.Add(new DataColumn("Contract25", typeof(String))); table.Columns.Add(new DataColumn("Contract26", typeof(String))); table.Columns.Add(new DataColumn("Contract27", typeof(String))); table.Columns.Add(new DataColumn("Contract28", typeof(String))); table.Columns.Add(new DataColumn("Contract29", typeof(String))); table.Columns.Add(new DataColumn("Contract30", typeof(String))); table.Columns.Add(new DataColumn("Contract31", typeof(String))); table.Columns.Add(new DataColumn("Contract32", typeof(String))); table.Columns.Add(new DataColumn("Contract33", typeof(String))); table.Columns.Add(new DataColumn("Contract34", typeof(String))); table.Columns.Add(new DataColumn("Contract35", typeof(String))); table.Columns.Add(new DataColumn("Contract36", typeof(String))); table.Columns.Add(new DataColumn("Contract37", typeof(String))); table.Columns.Add(new DataColumn("Contract38", typeof(String))); table.Columns.Add(new DataColumn("Contract39", typeof(String))); table.Columns.Add(new DataColumn("Contract40", typeof(String))); DataRow row; row = table.NewRow(); row[0] = SQLHelper.GetNewID(); row[1] = "一"; row[2] = "人工"; table.Rows.Add(row); int a = 1; foreach (var person in persons) { row = table.NewRow(); row[0] = SQLHelper.GetNewID(); row[1] = a; row[2] = person.WorkPostName; row[3] = person.UnitOfMeasurement; var workEfficiencyProject = workEfficiencyProjects.FirstOrDefault(x=> x.TypeId == person.TypeId && x.UnitOfMeasurement == person.UnitOfMeasurement); if (workEfficiencyProject != null) { row[4] = workEfficiencyProject.BaseWorkEfficiency; } int b = 0; List list = new List(); foreach (var contract in contracts) { var workEfficiencys = from x in constructionLogWorkEfficiencyMonths where x.TypeId == person.TypeId && x.UnitOfMeasurement == person.UnitOfMeasurement && x.ContractId == contract.ContractId && x.WorkEfficiency != null select x; if (workEfficiencys.Count() > 0) { decimal totalWorkEfficiencys = workEfficiencys.Sum(x => x.WorkEfficiency ?? 0); decimal d = decimal.Round(Convert.ToDecimal(totalWorkEfficiencys / Convert.ToDecimal(workEfficiencys.Count())), 2); row[8 + b] = d; list.Add(d); } b++; } if (list.Count > 0) { row[5] = decimal.Round(Convert.ToDecimal(list.Sum() / Convert.ToDecimal(list.Count)), 2); } row[6] = "Person"; row[7] = person.TypeId; table.Rows.Add(row); a++; } row = table.NewRow(); row[0] = SQLHelper.GetNewID(); row[1] = "二"; row[2] = "机械"; table.Rows.Add(row); a = 1; foreach (var machine in machines) { row = table.NewRow(); row[0] = SQLHelper.GetNewID(); row[1] = a; row[2] = machine.SpecialEquipmentName; row[3] = machine.UnitOfMeasurement; var workEfficiencyProject = workEfficiencyProjects.FirstOrDefault(x => x.TypeId == machine.TypeId && x.UnitOfMeasurement == machine.UnitOfMeasurement); if (workEfficiencyProject != null) { row[4] = workEfficiencyProject.BaseWorkEfficiency; } int b = 0; List list = new List(); foreach (var contract in contracts) { var workEfficiencys = from x in constructionLogWorkEfficiencyMonths where x.TypeId == machine.TypeId && x.UnitOfMeasurement == machine.UnitOfMeasurement && x.ContractId == contract.ContractId && x.WorkEfficiency != null select x; if (workEfficiencys.Count() > 0) { decimal totalWorkEfficiencys = workEfficiencys.Sum(x => x.WorkEfficiency ?? 0); decimal d = decimal.Round(Convert.ToDecimal(totalWorkEfficiencys / Convert.ToDecimal(workEfficiencys.Count())), 2); row[8 + b] = d; list.Add(d); } b++; } if (list.Count > 0) { row[5] = decimal.Round(Convert.ToDecimal(list.Sum() / Convert.ToDecimal(list.Count)), 2); } row[6] = "Machine"; row[7] = machine.TypeId; table.Rows.Add(row); a++; } Grid1.DataSource = table; Grid1.DataBind(); } #region 统计按钮事件 /// /// 统计 /// /// /// protected void BtnAnalyse_Click(object sender, EventArgs e) { GetData(); } #endregion #region 保存 /// /// 保存按钮 /// /// /// protected void btnSave_Click(object sender, EventArgs e) { if (this.Grid1.Rows.Count > 0) { BLL.ConstructionLogWorkEfficiencyProjectService.DeleteConstructionLogWorkEfficiencyProjectsByConstructionLogId(this.CurrUser.LoginProjectId); foreach (JObject mergedRow in Grid1.GetMergedData()) { JObject values = mergedRow.Value("values"); int a = mergedRow.Value("index"); string type = values.Value("Type"); if (!string.IsNullOrEmpty(type)) { string unitOfMeasurement = values.Value("UnitOfMeasurement"); string baseWorkEfficiency = values.Value("BaseWorkEfficiency"); string avgWorkEfficiency = values.Value("AvgWorkEfficiency"); string typeId = values.Value("TypeId"); Model.ZHGL_ConstructionLogWorkEfficiencyProject workEfficiency = new Model.ZHGL_ConstructionLogWorkEfficiencyProject(); workEfficiency.ConstructionLogWorkEfficiencyProjectId = SQLHelper.GetNewID(); workEfficiency.ProjectId = this.CurrUser.LoginProjectId; workEfficiency.Type = type; workEfficiency.TypeId = typeId; workEfficiency.UnitOfMeasurement = unitOfMeasurement; workEfficiency.BaseWorkEfficiency = Funs.GetNewDecimal(baseWorkEfficiency); workEfficiency.AvgWorkEfficiency = Funs.GetNewDecimal(avgWorkEfficiency); BLL.ConstructionLogWorkEfficiencyProjectService.AddConstructionLogWorkEfficiencyProject(workEfficiency); } } ShowNotify("保存成功!", MessageBoxIcon.Success); } else { Alert.ShowInTop("请先统计后再保存!", MessageBoxIcon.Warning); } } #endregion } }