262 lines
10 KiB
C#
262 lines
10 KiB
C#
using BLL;
|
|
using Newtonsoft.Json.Linq;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace FineUIPro.Web.HSSE.CostGoods
|
|
{
|
|
public partial class ExpenseEdit : PageBase
|
|
{
|
|
#region 定义项
|
|
/// <summary>
|
|
/// 主键
|
|
/// </summary>
|
|
private string ExpenseId
|
|
{
|
|
get
|
|
{
|
|
return (string)ViewState["ExpenseId"];
|
|
}
|
|
set
|
|
{
|
|
ViewState["ExpenseId"] = value;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 项目主键
|
|
/// </summary>
|
|
public string ProjectId
|
|
{
|
|
get
|
|
{
|
|
return (string)ViewState["ProjectId"];
|
|
}
|
|
set
|
|
{
|
|
ViewState["ProjectId"] = value;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 加载
|
|
/// <summary>
|
|
/// 加载页面
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
if (!IsPostBack)
|
|
{
|
|
this.ProjectId = this.CurrUser.LoginProjectId;
|
|
this.btnClose.OnClientClick = ActiveWindow.GetHideRefreshReference();
|
|
BLL.UnitService.InitUnitDropDownList(this.drpUnit, this.ProjectId, false);
|
|
this.drpUnit.SelectedValue = this.CurrUser.UnitId ?? Const.UnitId_SEDIN;
|
|
this.txtYear.Text = DateTime.Now.Year.ToString();
|
|
this.txtReportDate.Text = string.Format("{0:yyyy-MM-dd}", DateTime.Now);
|
|
if (!string.IsNullOrEmpty(this.CurrUser.UnitId) && !CommonService.IsSedinOrSub(this.CurrUser.UnitId))
|
|
{
|
|
this.drpUnit.Readonly = true;
|
|
}
|
|
|
|
this.ExpenseId = Request.Params["ExpenseId"];
|
|
Model.CostGoods_Expense expense = new Model.CostGoods_Expense();
|
|
if (string.IsNullOrEmpty(this.ExpenseId))
|
|
{
|
|
expense = Funs.DB.CostGoods_Expense.FirstOrDefault(x => x.ProjectId == this.ProjectId && x.UnitId == this.drpUnit.SelectedValue && x.Year == Funs.GetNewInt(this.txtYear.Text));
|
|
}
|
|
else
|
|
{
|
|
expense = BLL.ExpenseService.GetExpenseById(this.ExpenseId);
|
|
}
|
|
|
|
SetPage(expense);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 页面呈现
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
private void SetPage(Model.CostGoods_Expense expense)
|
|
{
|
|
if (expense != null)
|
|
{
|
|
this.ExpenseId = expense.ExpenseId;
|
|
this.ProjectId = expense.ProjectId;
|
|
this.drpUnit.SelectedValue = expense.UnitId;
|
|
this.txtYear.Text = expense.Year.ToString();
|
|
this.lbSortIndex.Text = expense.SortIndex.ToString();
|
|
this.txtReportDate.Text = string.Format("{0:yyyy-MM-dd}", expense.ReportDate);
|
|
}
|
|
else
|
|
{
|
|
int Year = Funs.GetNewIntOrZero(this.txtYear.Text);
|
|
var getProject = ProjectService.GetProjectByProjectId(this.ProjectId);
|
|
if (getProject != null && (!getProject.EndDate.HasValue || Year <= getProject.EndDate.Value.Year) && (!getProject.StartDate.HasValue || Year >= getProject.StartDate.Value.Year))
|
|
{
|
|
if (CommonService.IsSedinOrSub(this.drpUnit.SelectedValue))
|
|
{
|
|
this.lbSortIndex.Text = "1";
|
|
}
|
|
else
|
|
{
|
|
var index = Funs.DB.CostGoods_Expense.Where(x => x.ProjectId == this.ProjectId && x.Year.ToString() == this.txtYear.Text).Max(x => x.SortIndex);
|
|
if (index.HasValue)
|
|
{
|
|
this.lbSortIndex.Text = (index.Value + 1).ToString();
|
|
}
|
|
else
|
|
{
|
|
this.lbSortIndex.Text = "2";
|
|
}
|
|
}
|
|
|
|
Model.CostGoods_Expense newExpense = new Model.CostGoods_Expense
|
|
{
|
|
ExpenseId = SQLHelper.GetNewID(),
|
|
ProjectId = this.ProjectId,
|
|
UnitId = this.drpUnit.SelectedValue,
|
|
ReportDate = DateTime.Now,
|
|
CreateDate = DateTime.Now,
|
|
CompileMan = this.CurrUser.PersonId,
|
|
CompileDate = DateTime.Now,
|
|
Year = Funs.GetNewInt(this.txtYear.Text),
|
|
SortIndex = Funs.GetNewIntOrZero(this.lbSortIndex.Text),
|
|
};
|
|
|
|
ExpenseService.AddExpense(newExpense);
|
|
this.ExpenseId = newExpense.ExpenseId;
|
|
ExpenseDetailService.AddCostDetail(this.ExpenseId);
|
|
}
|
|
else
|
|
{
|
|
Alert.ShowInTop("选择年度不在项目开始和竣工时间范围内!", MessageBoxIcon.Warning);
|
|
return;
|
|
}
|
|
}
|
|
|
|
this.Grid1.DataSource = from x in Funs.DB.CostGoods_ExpenseDetail
|
|
where x.ExpenseId == this.ExpenseId
|
|
orderby x.SupSortIndex, x.SortIndex
|
|
select x;
|
|
this.Grid1.DataBind();
|
|
}
|
|
#endregion
|
|
|
|
#region 保存
|
|
/// <summary>
|
|
/// 保存按钮
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
protected void btnSave_Click(object sender, EventArgs e)
|
|
{
|
|
if (this.drpUnit.SelectedValue == BLL.Const._Null || string.IsNullOrEmpty(this.txtYear.Text))
|
|
{
|
|
Alert.ShowInTop("请选择单位、年度!", MessageBoxIcon.Warning);
|
|
return;
|
|
}
|
|
this.SaveData(BLL.Const.BtnSave);
|
|
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
|
|
}
|
|
|
|
/// <summary>
|
|
/// 保存数据
|
|
/// </summary>
|
|
/// <param name="type"></param>
|
|
private void SaveData(string type)
|
|
{
|
|
Model.CostGoods_Expense expense = new Model.CostGoods_Expense
|
|
{
|
|
ProjectId = this.ProjectId,
|
|
UnitId = this.drpUnit.SelectedValue,
|
|
ReportDate = Funs.GetNewDateTime(this.txtReportDate.Text.Trim()),
|
|
CompileDate = DateTime.Now,
|
|
CompileMan = this.CurrUser.PersonId,
|
|
SortIndex = Funs.GetNewInt(this.lbSortIndex.Text),
|
|
Year = Funs.GetNewInt(this.txtYear.Text),
|
|
};
|
|
|
|
if (!string.IsNullOrEmpty(this.ExpenseId))
|
|
{
|
|
expense.ExpenseId = this.ExpenseId;
|
|
BLL.ExpenseService.UpdateExpense(expense);
|
|
BLL.LogService.AddSys_Log(this.CurrUser, expense.ExpenseCode, expense.ExpenseId, BLL.Const.ProjectExpenseMenuId, BLL.Const.BtnModify);
|
|
// BLL.ExpenseDetailService.DeleteCostDetailByExpenseId(this.ExpenseId);
|
|
}
|
|
else
|
|
{
|
|
this.ExpenseId = SQLHelper.GetNewID();
|
|
expense.ExpenseId = this.ExpenseId;
|
|
expense.CreateDate = DateTime.Now;
|
|
BLL.ExpenseService.AddExpense(expense);
|
|
BLL.LogService.AddSys_Log(this.CurrUser, expense.ExpenseCode, expense.ExpenseId, BLL.Const.ProjectExpenseMenuId, BLL.Const.BtnAdd);
|
|
}
|
|
|
|
var getItem = jerqueSaveList();
|
|
foreach (var item in getItem)
|
|
{
|
|
ExpenseDetailService.UpdateExpenseDetail(item);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 附件上传
|
|
/// <summary>
|
|
/// 上传附件
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
protected void btnAttachUrl_Click(object sender, EventArgs e)
|
|
{
|
|
if (string.IsNullOrEmpty(this.ExpenseId))
|
|
{
|
|
SaveData(BLL.Const.BtnSave);
|
|
}
|
|
PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("~/AttachFile/webuploader.aspx?toKeyId={0}&path=FileUpload/ExpenseAttachUrl&menuId={1}", ExpenseId, BLL.Const.ProjectExpenseMenuId)));
|
|
}
|
|
#endregion
|
|
|
|
#region 单位变化事件
|
|
/// <summary>
|
|
/// 单位变化事件
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
protected void drpUnit_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (this.drpUnit.SelectedValue != Const._Null && !string.IsNullOrEmpty(this.txtYear.Text))
|
|
{
|
|
SetPage(Funs.DB.CostGoods_Expense.FirstOrDefault(x => x.ProjectId == this.ProjectId && x.UnitId == this.drpUnit.SelectedValue && x.Year.ToString() == this.txtYear.Text));
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 保存集合
|
|
/// <summary>
|
|
/// 保存集合
|
|
/// </summary>
|
|
private List<Model.CostGoods_ExpenseDetail> jerqueSaveList()
|
|
{
|
|
var returnList = Funs.DB.CostGoods_ExpenseDetail.Where(x => x.ExpenseId == this.ExpenseId);
|
|
JArray mergedData = Grid1.GetMergedData();
|
|
foreach (JObject mergedRow in mergedData)
|
|
{
|
|
string status = mergedRow.Value<string>("status");
|
|
JObject values = mergedRow.Value<JObject>("values");
|
|
var item = returnList.FirstOrDefault(e => e.ExpenseDetailId == values.Value<string>("ExpenseDetailId"));
|
|
if (item != null)
|
|
{
|
|
item.CostMoney = Funs.GetNewDecimalOrZero(values.Value<string>("CostMoney"));
|
|
}
|
|
|
|
}
|
|
return returnList.ToList();
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
} |