void AddKeyValue(ref List <ItemsLeftStru> RemainKeyValue, ItemsLeftStru myKV) { // for (int i = 0; i < RemainKeyValue.Count; i++) { if (RemainKeyValue[i].ItemdID == myKV.ItemdID) { RemainKeyValue[i].ItemsValue += myKV.ItemsValue; return; } } RemainKeyValue.Add(myKV); }
//填数据 void FillReportData(DataSet FDataSet) { int i_ProjectID = Convert.ToInt32(comboBoxProject.SelectedValue.ToString()); int i_CompanyID = Convert.ToInt32(comboBoxCompany.SelectedValue.ToString()); int i_SNumber = 1; //租赁结算顺序号 DateTime dSDate = dateTimePickerSDate.Value.Date; DateTime dEDate = dateTimePickerEDate.Value.Date; TimeSpan tTS = dEDate.Subtract(dSDate); int i_Days = tTS.Days + 1; //结余时租赁天数 LeaseHT tLeaseHT = BLL.LeaseBLL.GetLeaseHT(i_ProjectID, i_CompanyID); int i_IncludeSDate = tLeaseHT.IncludeSDate; //租金包含开始日 int i_IncludeEDate = tLeaseHT.IncludeEDate; //租金包含结束日 string s_BillCycle = textBoxBillCycle.Text; //结算周期 string s_CalMethod = ""; //计算方式 if (i_IncludeSDate == 0 && i_IncludeEDate == 0) { s_CalMethod = "倒扣计算法,头尾都不算"; } if (i_IncludeSDate == 1 && i_IncludeEDate == 0) { s_CalMethod = "倒扣计算法,算头不算尾"; } if (i_IncludeSDate == 1 && i_IncludeEDate == 1) { s_CalMethod = "倒扣计算法,既算头又算尾"; } if (i_IncludeSDate == 0 && i_IncludeEDate == 1) { s_CalMethod = "倒扣计算法,算尾不算头"; } List <ItemsLeftStru> RemainKeyValue = new List <ItemsLeftStru>(); // myKV.ItemdID = 1; // myKV.ItemsName = "asdd"; // myKV.ItemsValue = 12.80; // RemainKeyValue.Add(myKV); //1.填LeaseAccount表 DataRow dr = FDataSet.Tables["LeaseAccount"].NewRow(); dr["BillID"] = 10000; dr["ProjectID"] = i_ProjectID; dr["ProjectName"] = comboBoxProject.Text; dr["CompanyID"] = i_CompanyID; dr["CompanyName"] = comboBoxCompany.Text; dr["BillCycle"] = s_BillCycle; dr["CalMethod"] = s_CalMethod; FDataSet.Tables["LeaseAccount"].Rows.Add(dr); //2.填LeaseAccountList表 //2.1填结余租赁项 DataSet tds = BLL.LeaseBLL.GetLeaseAccountLeft(tLeaseHT.HTID); foreach (DataRow drtmp in tds.Tables[0].Rows) { dr = FDataSet.Tables["LeaseAccountList"].NewRow(); int i_ItemsID = Convert.ToInt32(drtmp["ItemsID"]); LeaseItems tLeaseItem = BLL.LeaseBLL.GetLeaseItem(i_ItemsID); dr["ListID"] = i_SNumber; dr["SNumber"] = i_SNumber; dr["BillID"] = 10000; dr["Abstract"] = tLeaseItem.MName + " 上期结余"; dr["SDate"] = dSDate; dr["EDate"] = dEDate; dr["LeaseUnit"] = tLeaseItem.LeaseUnit; dr["LeaseQuality"] = drtmp["QualityLeft"]; dr["LeasePrice"] = tLeaseItem.LeasePrice; dr["LeaseDays"] = i_Days; dr["LeaseAmt"] = Convert.ToDecimal(dr["LeaseQuality"]) * Convert.ToDecimal(dr["LeasePrice"]) * i_Days; FDataSet.Tables["LeaseAccountList"].Rows.Add(dr); ItemsLeftStru myKV = new ItemsLeftStru(); myKV.ItemdID = tLeaseItem.ItemsID; myKV.ItemsName = tLeaseItem.MName; myKV.ItemsUnit = tLeaseItem.LeaseUnit; myKV.ItemsValue = Convert.ToDouble(dr["LeaseQuality"]); AddKeyValue(ref RemainKeyValue, myKV); i_SNumber++; } //2.2按照时间顺序计算各项租金 tds = BLL.LeaseBLL.GetLeaseRecord2(i_ProjectID, i_CompanyID); //未结算的记录 foreach (DataRow drtmp in tds.Tables[0].Rows) { //检查租赁日期是否在结算日期范围 DateTime tLeaseDate = Convert.ToDateTime(drtmp["LeaseDate"]); if (tLeaseDate >= dSDate && tLeaseDate <= dEDate) { dr = FDataSet.Tables["LeaseAccountList"].NewRow(); int i_ItemsID = Convert.ToInt32(drtmp["ItemsID"]); LeaseItems tLeaseItem = BLL.LeaseBLL.GetLeaseItem(i_ItemsID); dr["ListID"] = i_SNumber; dr["SNumber"] = i_SNumber; dr["BillID"] = 10000; if (drtmp["Abstract"].ToString().Length != 0) { dr["Abstract"] = tLeaseItem.MName + "(" + drtmp["Abstract"] + ")"; } else { dr["Abstract"] = tLeaseItem.MName; } DateTime dt1 = Convert.ToDateTime(drtmp["LeaseDate"]); dr["SDate"] = dt1; dr["EDate"] = dEDate; TimeSpan tTS1 = dEDate.Subtract(dt1); int tDays = tTS1.Days; if (Convert.ToDecimal(drtmp["Quality"]) > 0) { if (i_IncludeSDate == 1) { tDays++; } } else { if (i_IncludeEDate != 1) { tDays++; } } if (tLeaseItem.LeaseClass == 0) { //租赁项 dr["LeaseUnit"] = tLeaseItem.LeaseUnit; dr["LeaseQuality"] = drtmp["Quality"]; dr["LeasePrice"] = tLeaseItem.LeasePrice; dr["LeaseDays"] = tDays; dr["LeaseAmt"] = Convert.ToDecimal(dr["LeaseQuality"]) * Convert.ToDecimal(dr["LeasePrice"]) * tDays; dr["LoadingUnit"] = tLeaseItem.LoadingUnit; dr["LoadingFactor"] = tLeaseItem.LoadingFactor; dr["LoadingQuality"] = Math.Abs(Convert.ToDecimal(dr["LeaseQuality"]) / Convert.ToDecimal(dr["LoadingFactor"])); dr["LoadingPrice"] = tLeaseItem.LoadingPrice; dr["LoadingAmt"] = Math.Abs(Convert.ToDecimal(dr["LoadingPrice"]) * Convert.ToDecimal(dr["LoadingQuality"])); if (Convert.ToDecimal(drtmp["Quality"]) < 0) { dr["RepairUnit"] = tLeaseItem.RepairUnit; dr["RepairFactor"] = tLeaseItem.RepairFactor; dr["RepairQuality"] = Math.Abs(Convert.ToDecimal(dr["LeaseQuality"]) / Convert.ToDecimal(dr["RepairFactor"])); dr["RepairPrice"] = tLeaseItem.RepairPrice; dr["RepairAmt"] = Math.Abs(Convert.ToDecimal(dr["RepairPrice"]) * Convert.ToDecimal(dr["RepairQuality"])); } ItemsLeftStru myKV = new ItemsLeftStru(); myKV.ItemdID = tLeaseItem.ItemsID; myKV.ItemsName = tLeaseItem.MName; myKV.ItemsUnit = tLeaseItem.LeaseUnit; myKV.ItemsValue = Convert.ToDouble(dr["LeaseQuality"]); AddKeyValue(ref RemainKeyValue, myKV); } else { //单独结算项 dr["LeaseUnit"] = tLeaseItem.LeaseUnit; dr["OtherUnit"] = tLeaseItem.LeaseUnit; dr["OtherQuality"] = drtmp["Quality"]; dr["OtherPrice"] = tLeaseItem.LeasePrice; dr["OtherAmt"] = Convert.ToDecimal(dr["OtherPrice"]) * Convert.ToDecimal(dr["OtherQuality"]); } FDataSet.Tables["LeaseAccountList"].Rows.Add(dr); i_SNumber++; } } //2.3将计算出来的余量数据填写好 foreach (ItemsLeftStru itemLS in RemainKeyValue) { dr = FDataSet.Tables["LeaseAccountLeft"].NewRow(); dr["ItemsID"] = itemLS.ItemdID; dr["MName"] = itemLS.ItemsName; dr["LeaseUnit"] = itemLS.ItemsUnit; dr["QualityLeft"] = itemLS.ItemsValue; FDataSet.Tables["LeaseAccountLeft"].Rows.Add(dr); } }