private void SetEstimateViewModels() { EstimateViewModels = new ObservableCollection <ProjectEstimateViewModel>(); string tempName = ""; for (int i = 1; i < dataTable.Rows.Count; i++) { ProjectEstimateViewModel estimateViewModel = new ProjectEstimateViewModel(); PropertyInfo[] propertys = estimateViewModel.GetType().GetProperties(); foreach (PropertyInfo pi in propertys) { tempName = pi.Name; // 检查DataTable是否包含此列 if (dataTable.Columns.Contains(tempName)) { // 判断此属性是否有Setter if (!pi.CanWrite) { continue; } object value = dataTable.DefaultView[i][tempName]; if (value != System.DBNull.Value) { pi.SetValue(estimateViewModel, value, null); } } } EstimateViewModels.Add(estimateViewModel); } TotalEstimateViewModel.ProjectName = dataTable.DefaultView[0]["ProjectName"].ToString(); TotalEstimateViewModel.ProjectCode = dataTable.DefaultView[0]["ProjectCode"].ToString(); TotalEstimateViewModel.EstimateNumber = dataTable.DefaultView[0]["EstimateNumber"].ToString(); EstimateViewModels.Insert(0, TotalEstimateViewModel); }
public void GetData(ProjectEstimateViewModel project) { if (project is ProjectTotalEstimateViewModel) { this.ProjectCode = ((ProjectTotalEstimateViewModel)project).ProjectCode; this.ProjectName = ((ProjectTotalEstimateViewModel)project).ProjectName; this.IndividualProjectCode = ((ProjectTotalEstimateViewModel)project).IndividualProjectCode; this.IndividualProjectName = ((ProjectTotalEstimateViewModel)project).IndividualProjectName; this.WBSCode = ((ProjectTotalEstimateViewModel)project).WBSCode; this.ExpanseCategory = ((ProjectTotalEstimateViewModel)project).ExpanseCategory; this.TotalInvestmentWithTax = ((ProjectTotalEstimateViewModel)project).TotalInvestmentWithTax; this.TotalInvestmentWithoutTax = ((ProjectTotalEstimateViewModel)project).TotalInvestmentWithoutTax; // DepartmentBudgetFilled department = new DepartmentBudgetFilled(ProjectName); // this.DeductibleVATRatio = ((ProjectTotalEstimateViewModel)project).DeductibleVATRatio; // this.DepartmentFilledBudgetWithTax = department.DepartmentFilledBudgetWithTax; // this.YearBudgetWithoutTax = department.YearBudgetWithoutTax; } else { this.ProjectCode = project.ProjectCode; this.ProjectName = project.ProjectName; this.IndividualProjectCode = project.IndividualProjectCode; this.IndividualProjectName = project.IndividualProjectName; this.ExpanseCategory = project.ExpanseCategory; this.WBSCode = project.WBSCode; this.TotalInvestmentWithTax = project.TotalInvestmentWithTax; this.TotalInvestmentWithoutTax = project.TotalInvestmentWithoutTax; this.DeductibleVATRatio = project.DeductibleVATRatio; } }
//电网基建概算数导入模版 public void PrintOneProjectEstimateBlcok(ProjectEstimateViewModel project) { Range rng = worksheet.Range["A" + curerntRow.ToString(), "N" + curerntRow.ToString()]; excelHelper.SetRangeBodersStyle(rng, 1); excelHelper.SetRangeBodersThickness(rng, XlBorderWeight.xlThin); excelHelper.SetRowHeight(rng, 20); rng = worksheet.Range["G" + curerntRow.ToString(), "H" + curerntRow.ToString()]; excelHelper.SetRangeValueStyleNumber(rng, "#,##0.00"); rng = worksheet.Range["J" + curerntRow.ToString(), "N" + curerntRow.ToString()]; excelHelper.SetRangeValueStyleNumber(rng, "#,##0.00"); rng = worksheet.Range["I" + curerntRow.ToString(), "I" + curerntRow.ToString()]; rng.NumberFormatLocal = "0.00%"; if (project is ProjectTotalEstimateViewModel) { rng = worksheet.Range["A" + curerntRow.ToString(), "N" + curerntRow.ToString()]; excelHelper.SetRangeBackground(rng, 35); worksheet.Cells[curerntRow, "A"] = project.ProjectName; worksheet.Cells[curerntRow, "B"] = project.ProjectCode; worksheet.Cells[curerntRow, "C"] = ((ProjectTotalEstimateViewModel)project).IndividualProjectName; worksheet.Cells[curerntRow, "D"] = ((ProjectTotalEstimateViewModel)project).IndividualProjectCode; worksheet.Cells[curerntRow, "E"] = ((ProjectTotalEstimateViewModel)project).ExpanseCategory; worksheet.Cells[curerntRow, "F"] = ((ProjectTotalEstimateViewModel)project).WBSCode; worksheet.Cells[curerntRow, "G"] = ((ProjectTotalEstimateViewModel)project).EstimateNumber; worksheet.Cells[curerntRow, "H"] = ((ProjectTotalEstimateViewModel)project).InternalControl; worksheet.Cells[curerntRow, "I"] = ((ProjectTotalEstimateViewModel)project).DeductibleVATRatio; worksheet.Cells[curerntRow, "J"] = ((ProjectTotalEstimateViewModel)project).TotalInvestmentWithTax; worksheet.Cells[curerntRow, "K"] = ((ProjectTotalEstimateViewModel)project).TotalInvestmentWithoutTax; worksheet.Cells[curerntRow, "L"] = ((ProjectTotalEstimateViewModel)project).MaxInternalControl; worksheet.Cells[curerntRow, "M"] = ((ProjectTotalEstimateViewModel)project).MaxDeductibleVATRatio; worksheet.Cells[curerntRow, "N"] = ((ProjectTotalEstimateViewModel)project).MinDeductibleVATRatio; } else { rng = worksheet.Range["A" + curerntRow.ToString(), "F" + curerntRow.ToString()]; excelHelper.SetRangeBackground(rng, 15); rng = worksheet.Range["L" + curerntRow.ToString(), "N" + curerntRow.ToString()]; excelHelper.SetRangeBackground(rng, 15); worksheet.Cells[curerntRow, "A"] = project.ProjectName; worksheet.Cells[curerntRow, "B"] = project.ProjectCode; worksheet.Cells[curerntRow, "C"] = project.IndividualProjectName; worksheet.Cells[curerntRow, "D"] = project.IndividualProjectCode; worksheet.Cells[curerntRow, "E"] = project.ExpanseCategory; worksheet.Cells[curerntRow, "F"] = project.WBSCode; worksheet.Cells[curerntRow, "G"] = project.EstimateNumber; worksheet.Cells[curerntRow, "H"] = project.InternalControl; worksheet.Cells[curerntRow, "I"] = project.DeductibleVATRatio; worksheet.Cells[curerntRow, "J"] = project.TotalInvestmentWithTax; worksheet.Cells[curerntRow, "K"] = project.TotalInvestmentWithoutTax; worksheet.Cells[curerntRow, "L"] = project.MaxInternalControl; worksheet.Cells[curerntRow, "M"] = project.MaxDeductibleVATRatio; worksheet.Cells[curerntRow, "N"] = project.MinDeductibleVATRatio; } curerntRow++; }
//计算至目标概算 public void SetToDestCompositeTaxRate(double DestCompositeTaxRate) { if (!CheckCanDo(DestCompositeTaxRate)) { return; } List <string> strlist = new List <string> { "架空线路本体工程", "电缆本体工程", "建设场地征用及清理费", "项目管理经费", "业务招待费", "招标费", "工程监理费", "工程勘察费", "工程设计费", "设计文件评审费", "项目后评价费", "技术经济标准编制管理费", "工程建设监督检测费", "配电站(开关站)工程—建筑工程", "配电站(开关站)工程—安装工程", "配电站(开关站)工程—设备购置", "通信及调度自动化—建筑工程", "通信及调度自动化—安装工程", "通信及调度自动化—设备购置", "生产准备费", "基本预备费", "建设期贷款利息" }; double destNumber = GetDestNumber(DestCompositeTaxRate); double totalWithoutTax = this.TotalInvestmentWithoutTax; double delta = destNumber - totalWithoutTax; if (delta > 0) { foreach (string str in strlist) { ProjectEstimateViewModel pvm = GetProjectInSetByCategoryName(str); if (pvm == null) { continue; } double ldelta = Convert.ToDouble(pvm.TotalInvestmentWithTax) / (1 + Convert.ToDouble(pvm.MinDeductibleVATRatio)); ldelta = ldelta - Convert.ToDouble(pvm.TotalInvestmentWithoutTax); if (ldelta >= delta) { double d_without = Convert.ToDouble(pvm.TotalInvestmentWithoutTax); double d_with = Convert.ToDouble(pvm.TotalInvestmentWithTax); double destrate = (d_with / (d_without + delta)) - 1; destrate = destrate * 100; pvm.DeductibleVATRatio = destrate.ToString(); break; } else { pvm.DeductibleVATRatio = (Convert.ToDouble(pvm.MinDeductibleVATRatio) * 100).ToString(); delta = destNumber - this.TotalInvestmentWithoutTax; } } } else if (delta < 0) { foreach (string str in strlist) { ProjectEstimateViewModel pvm = GetProjectInSetByCategoryName(str); if (pvm == null) { continue; } double ldelta = Convert.ToDouble(pvm.TotalInvestmentWithTax) / (1 + Convert.ToDouble(pvm.MaxDeductibleVATRatio)); ldelta = ldelta - Convert.ToDouble(pvm.TotalInvestmentWithoutTax); if (ldelta <= delta) { double d_without = Convert.ToDouble(pvm.TotalInvestmentWithoutTax); double d_with = Convert.ToDouble(pvm.TotalInvestmentWithTax); double destrate = (d_with / (d_without + delta)) - 1; destrate = destrate * 100; pvm.DeductibleVATRatio = destrate.ToString(); break; } else { pvm.DeductibleVATRatio = (Convert.ToDouble(pvm.MaxDeductibleVATRatio) * 100).ToString(); delta = destNumber - this.TotalInvestmentWithoutTax; } } } string temp = TotalEstimateViewModel.TotalInvestmentWithTax; }
//将obc转换为dt private DataTable TranslateVM2DT() { DataTable dt = new DataTable("Estinates"); ProjectEstimateViewModel temp = new ProjectEstimateViewModel(); PropertyInfo[] propertys = temp.GetType().GetProperties(); ProjectTotalEstimateViewModel temp2 = new ProjectTotalEstimateViewModel(); PropertyInfo[] property2 = temp2.GetType().GetProperties(); dt.Columns.Add("id"); dt.Columns.Add("ID"); dt.Columns.Add("ProjectName"); dt.Columns.Add("ProjectCode"); dt.Columns.Add("IndividualProjectName"); dt.Columns.Add("IndividualProjectCode"); dt.Columns.Add("ExpanseCategory"); dt.Columns.Add("WBSCode"); dt.Columns.Add("EstimateNumber"); dt.Columns.Add("InternalControl"); dt.Columns.Add("DeductibleVATRatio"); dt.Columns.Add("TotalInvestmentWithTax"); dt.Columns.Add("TotalInvestmentWithoutTax"); dt.Columns.Add("MaxInternalControl"); dt.Columns.Add("MaxDeductibleVATRatio"); dt.Columns.Add("MinDeductibleVATRatio"); foreach (ProjectEstimateViewModel t in estimateSetViewModel.EstimateViewModels) { if (t is ProjectTotalEstimateViewModel) { continue; } PropertyInfo[] property = t.GetType().GetProperties(); DataRow dr = dt.NewRow(); foreach (PropertyInfo pi in propertys) { if (!pi.CanRead) { continue; } dr[pi.Name] = pi.GetValue(t, null); } dt.Rows.Add(dr); } DataRow dr2 = dt.NewRow(); foreach (PropertyInfo pi in property2) { if (!pi.CanRead) { continue; } dr2[pi.Name] = pi.GetValue(estimateSetViewModel.TotalEstimateViewModel, null); } dr2["EstimateNumber"] = estimateSetViewModel.TotalEstimateViewModel.EstimateNumber; dr2["TotalInvestmentWithTax"] = estimateSetViewModel.TotalEstimateViewModel.TotalInvestmentWithTax; dr2["TotalInvestmentWithoutTax"] = estimateSetViewModel.TotalEstimateViewModel.TotalInvestmentWithoutTax; dt.Rows.InsertAt(dr2, 0); return(dt); }