Basf_EProject/EProject/FineUIPro.Web/ManHours/ManHoursActual.aspx.cs

509 lines
23 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using BLL;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using Model;
using System.Linq;
namespace FineUIPro.Web.ManHours
{
public partial class ManHoursActual : PageBase
{
private bool AppendToEnd = false;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetButtonPower();
btnClose.OnClientClick = ActiveWindow.GetHideReference();
this.txtMonth.Text = string.Format("{0:yyyyMM}", DateTime.Now);
if (DateTime.Now.Day > 21)
{
txtMonth.MaxDate = DateTime.Now.AddMonths(1);
}
else if (DateTime.Now.Day < 25)
{
txtMonth.MaxDate = DateTime.Now;
}
txtMonth_TextChanged(null,null);
string UserId = Request.Params["UserId"];
if (!string.IsNullOrEmpty(UserId))
{
this.ddType.DataTextField = "ConstText";
this.ddType.DataValueField = "ConstValue";
this.ddType.DataSource = BLL.ConstService.GetConstListByGroupId(BLL.Const.MyTimeSheet_Type);
this.ddType.DataBind();
// 删除选中单元格的客户端脚本
//string deleteScript = GetDeleteScript();
//新增数据初始值
JObject defaultObj = new JObject();
defaultObj.Add("Type", "");
defaultObj.Add("Account", "");
defaultObj.Add("Description", "");
defaultObj.Add("Hours", "");
defaultObj.Add("Month", DateTime.Now.ToString("yyyy-MM-dd"));
defaultObj.Add("Itype", "1");
defaultObj.Add("DisciplineId", "");
defaultObj.Add("Discipline", "");
defaultObj.Add("EProjectId", "");
defaultObj.Add("UserId", Request.Params["UserId"].ToString());
defaultObj.Add("UserName", "");
defaultObj.Add("Roles", "");
defaultObj.Add("ResourcePlanId", "");
defaultObj.Add("ManHoursPlanId", "");
// 在第一行新增一条数据
btnNew.OnClientClick = Grid1.GetAddNewRecordReference(defaultObj, AppendToEnd);
// 删除选中行按钮
//btnDelete.OnClientClick = Grid1.GetNoSelectionAlertReference("Please select at least one record") + deleteScript;
// 绑定表格
BindGrid(Request.Params["UserId"].ToString());
}
}
}
// 删除选中行的脚本
//private string GetDeleteScript()
//{
// return Confirm.GetShowReference("Delete selected row", String.Empty, MessageBoxIcon.Question, Grid1.GetDeleteSelectedRowsReference(), String.Empty);
//}
#region BindGrid
private void BindGrid(string UserId)
{
//string dt1 = GetFirstDayOfMonth().ToString("yyyy-MM-dd");
//string dt2 = GetLastDayOfMonth().ToString("yyyy-MM-dd");
//DateTime m = Convert.ToDateTime(string.Format("{0:yyyyMM}", this.txtMonth.Text));
//string dt1 = string.Format("{0:yyyy-MM}", m.AddMonths(-1)) + "-21";
//string dt2 = string.Format("{0:yyyy-MM}", m) + "-20";
string strSql = @"SELECT [ManHoursActualId],[ManHoursPlanId],[ResourcePlanId],[EProjectId],[Type],[Description],[DisciplineId],
[Discipline],[UserId],[UserName],[Roles],[Account],[Month],[Hours],[Itype]
FROM ManHours_Actual
where UserId=@UserId and ManHoursDate = @manHoursDate";
SqlParameter[] parameter = new SqlParameter[]
{
new SqlParameter("@UserId",UserId),
new SqlParameter("@manHoursDate",this.txtMonth.Text.Trim()),
//new SqlParameter("@dt2",dt2)
};
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
//Grid1.RecordCount = tb.Rows.Count;
//tb = GetFilteredTable(Grid1.FilteredData, tb);
//var table = this.GetPagedDataTable(Grid1, tb);
Grid1.DataSource = tb;
Grid1.DataBind();
OutputSummaryData();//显示本月人工时和总人工时
}
#region
/// <summary>
/// 得到本月的第一天日期
/// </summary>
/// <returns>DateTime</returns>
//public static DateTime GetFirstDayOfMonth()
//{
// return GetFirstDayOfMonth(DateTime.Now);
//}
/// <summary>
/// 得到本月的最有一天的日期
/// </summary>
/// <returns>DateTime</returns>
//public static DateTime GetLastDayOfMonth()
//{
// return GetLastDayOfMonth(DateTime.Now);
//}
/// <summary>
/// 得到一个月的第一天
/// </summary>
/// <param name="someday">这个月的随便一天</param>
/// <returns>DateTime</returns>
//public static DateTime GetFirstDayOfMonth(DateTime someday)
//{
// int totalDays = DateTime.DaysInMonth(someday.Year, someday.Month);
// DateTime result;
// int ts = 1 - someday.Day;
// result = someday.AddDays(ts);
// return result;
//}
/// <summary>
/// 得到一个月的最后一天
/// </summary>
/// <param name="someday">这个月的随便一天</param>
/// <returns>DateTime</returns>
//public static DateTime GetLastDayOfMonth(DateTime someday)
//{
// int totalDays = DateTime.DaysInMonth(someday.Year, someday.Month);
// DateTime result;
// int ts = totalDays - someday.Day;
// result = someday.AddDays(ts);
// return result;
//}
#endregion
#endregion
#region Grid1数据绑定前事件
protected void Grid1_PreDataBound(object sender, EventArgs e)
{
// 设置LinkButtonField的点击客户端事件
//LinkButtonField deleteField = Grid1.FindColumn("Delete") as LinkButtonField;
//deleteField.OnClientClick = GetDeleteScript();
}
#endregion
#region
/// <summary>
/// 提交按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
{
List<Model.ManHours_Actual> list = new List<Model.ManHours_Actual>();
DateTime nowTime = DateTime.Now;
int day = nowTime.Day;
int house = nowTime.Hour;
int month = nowTime.Month;
int selectMonth = Convert.ToInt32(txtMonth.Text.Substring(4, 2));
if (CurrUser.Account != Const.Gly)
{
if (month == selectMonth && (day > 25 || (day == 25 && house >= 12)))
{
Alert.ShowInTop("本月填写日期已截止!", MessageBoxIcon.Warning);
return;
}
else if (selectMonth == month + 1 && day < 21)
{
Alert.ShowInTop("下月人工时填写还未开放!", MessageBoxIcon.Warning);
return;
}
else
{
JArray ConstructionArr = Grid1.GetMergedData();
if (ConstructionArr.Count > 0)
{
Model.ManHours_Actual Actual = null;
for (int c = 0; c < ConstructionArr.Count; c++)
{
Actual = new Model.ManHours_Actual();
JObject objects = (JObject)ConstructionArr[c];
if (objects["values"]["ManHoursActualId"] != null && !string.IsNullOrEmpty(objects["values"]["ManHoursActualId"].ToString()))
{
Actual.ManHoursActualId = Convert.ToString(objects["values"]["ManHoursActualId"]);
}
else
{
Actual.ManHoursActualId = SQLHelper.GetNewID(typeof(Model.ManHours_Actual));
}
Actual.ResourcePlanId = Convert.ToString(objects["values"]["ResourcePlanId"]);
Actual.Roles = Convert.ToString(objects["values"]["Roles"]);
Actual.EProjectId = Convert.ToString(objects["values"]["EProjectId"]);
Actual.ManHoursPlanId = Convert.ToString(objects["values"]["ManHoursPlanId"]);
Actual.UserId = Convert.ToString(objects["values"]["UserId"]);
Actual.UserName = Convert.ToString(objects["values"]["UserName"]);
Actual.DisciplineId = Convert.ToString(objects["values"]["DisciplineId"]);
Actual.Discipline = Convert.ToString(objects["values"]["Discipline"]);
if (objects["values"]["Type"] != null && !string.IsNullOrEmpty(objects["values"]["Type"].ToString()))
{
Actual.Type = Convert.ToString(objects["values"]["Type"]);
}
else
{
Alert.ShowInTop("Please select Type!", MessageBoxIcon.Warning);
return;
}
Actual.Account = Convert.ToString(objects["values"]["Account"]);
Actual.Month = Convert.ToDateTime(objects["values"]["Month"].ToString());
if (string.IsNullOrEmpty(objects["values"]["Hours"].ToString()))
{
Alert.ShowInTop("Please fill in the Hours!");
return;
}
Actual.Hours = double.Parse(objects["values"]["Hours"].ToString());
Actual.Description = objects["values"]["Description"].ToString();
Actual.ManHoursDate = this.txtMonth.Text.Trim();
// Actual.Itype = int.Parse(objects["values"]["Itype"].ToString());
if ((Actual.Type == "T00_Normal Work" || Actual.Type.Contains("OverTime")) && Actual.ManHoursPlanId == "")
{
Alert.ShowInTop("项目无计划人工时,请联系项目经理确认!");
return;
}
list.Add(Actual);
}
}
bool result = BLL.PlanService.AddTran(Request.Params["UserId"].ToString(), list, txtMonth.Text.Trim());
if (result)
{
ShowNotify("Save successfully!", MessageBoxIcon.Success);
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
}
else
{
Alert.ShowInParent("Save failed!");
return;
}
}
}
else
{
JArray ConstructionArr = Grid1.GetMergedData();
if (ConstructionArr.Count > 0)
{
Model.ManHours_Actual Actual = null;
for (int c = 0; c < ConstructionArr.Count; c++)
{
Actual = new Model.ManHours_Actual();
JObject objects = (JObject)ConstructionArr[c];
if (objects["values"]["ManHoursActualId"] != null && !string.IsNullOrEmpty(objects["values"]["ManHoursActualId"].ToString()))
{
Actual.ManHoursActualId = Convert.ToString(objects["values"]["ManHoursActualId"]);
}
else
{
Actual.ManHoursActualId = SQLHelper.GetNewID(typeof(Model.ManHours_Actual));
}
Actual.ResourcePlanId = Convert.ToString(objects["values"]["ResourcePlanId"]);
Actual.Roles = Convert.ToString(objects["values"]["Roles"]);
Actual.EProjectId = Convert.ToString(objects["values"]["EProjectId"]);
Actual.ManHoursPlanId = Convert.ToString(objects["values"]["ManHoursPlanId"]);
Actual.UserId = Convert.ToString(objects["values"]["UserId"]);
Actual.UserName = Convert.ToString(objects["values"]["UserName"]);
Actual.DisciplineId = Convert.ToString(objects["values"]["DisciplineId"]);
Actual.Discipline = Convert.ToString(objects["values"]["Discipline"]);
if (objects["values"]["Type"] != null && !string.IsNullOrEmpty(objects["values"]["Type"].ToString()))
{
Actual.Type = Convert.ToString(objects["values"]["Type"]);
}
else
{
Alert.ShowInTop("Please select Type!", MessageBoxIcon.Warning);
return;
}
Actual.Account = Convert.ToString(objects["values"]["Account"]);
Actual.Month = Convert.ToDateTime(objects["values"]["Month"].ToString());
if (string.IsNullOrEmpty(objects["values"]["Hours"].ToString()))
{
Alert.ShowInTop("Please fill in the Hours!");
return;
}
Actual.Hours = double.Parse(objects["values"]["Hours"].ToString());
Actual.Description = objects["values"]["Description"].ToString();
Actual.ManHoursDate = this.txtMonth.Text.Trim();
// Actual.Itype = int.Parse(objects["values"]["Itype"].ToString());
if ((Actual.Type == "T00_Normal Work" || Actual.Type.Contains("OverTime")) && Actual.ManHoursPlanId == "")
{
Alert.ShowInTop("项目无计划人工时,请联系项目经理确认!");
return;
}
list.Add(Actual);
}
}
bool result = BLL.PlanService.AddTran(Request.Params["UserId"].ToString(), list, txtMonth.Text.Trim());
if (result)
{
ShowNotify("Save successfully!", MessageBoxIcon.Success);
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
}
else
{
Alert.ShowInParent("Save failed!");
return;
}
}
}
#endregion
#region
/// <summary>
/// 查找计划人工时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSelect_Click(object sender, EventArgs e)
{
string window = String.Format("SelectPlan.aspx?UserId={0}", Request.Params["UserId"].ToString(), "查找 - ");
PageContext.RegisterStartupScript(Window1.GetSaveStateReference(hdItemsString.ClientID) + Window1.GetShowReference(window));
}
#endregion
#region
/// <summary>
/// 关闭窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, EventArgs e)
{
List<Model.ManHours_Actual> actualLists = new List<Model.ManHours_Actual>();
//绑定之前已有的人工时
JArray ConstructionArr = Grid1.GetMergedData();
if (ConstructionArr.Count > 0)
{
Model.ManHours_Actual Actual = null;
for (int i = 0; i < ConstructionArr.Count; i++)
{
Actual = new ManHours_Actual();
JObject objects = (JObject)ConstructionArr[i];
if (objects["values"]["ManHoursActualId"] != null)
{
Actual.ManHoursActualId = Convert.ToString(objects["values"]["ManHoursActualId"]);
}
else
{
Actual.ManHoursActualId = Guid.NewGuid().ToString();
}
Actual.ResourcePlanId = Convert.ToString(objects["values"]["ResourcePlanId"]);
Actual.Roles = Convert.ToString(objects["values"]["Roles"]);
Actual.EProjectId = Convert.ToString(objects["values"]["EProjectId"]);
Actual.ManHoursPlanId = Convert.ToString(objects["values"]["ManHoursPlanId"]);
Actual.UserId = Convert.ToString(objects["values"]["UserId"]);
Actual.UserName = Convert.ToString(objects["values"]["UserName"]);
Actual.DisciplineId = Convert.ToString(objects["values"]["DisciplineId"]);
Actual.Discipline = Convert.ToString(objects["values"]["Discipline"]);
Actual.Type = Convert.ToString(objects["values"]["Type"]);
Actual.Account = Convert.ToString(objects["values"]["Account"]);
Actual.Month = Convert.ToDateTime(objects["values"]["Month"].ToString());
if (string.IsNullOrEmpty(objects["values"]["Hours"].ToString()))
{
Alert.ShowInParent("Please fill in the Hours!");
return;
}
Actual.Hours = int.Parse(objects["values"]["Hours"].ToString());
Actual.Description = objects["values"]["Description"].ToString();
actualLists.Add(Actual);
}
}
List<Model.ManHours_Actual> newActualLists = new List<Model.ManHours_Actual>();
List<string> lists = Funs.GetStrListByStr(hdItemsString.Text, ',');
foreach (var item in lists)
{
if (!string.IsNullOrEmpty(item))
{
var manHoursPlan = BLL.PlanService.GetPlanById(item);
Model.ManHours_Actual actual = new Model.ManHours_Actual();
if (manHoursPlan != null)
{
actual.Month = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));
actual.Account = manHoursPlan.Account;
actual.Description = manHoursPlan.ProjectControl_JobNo + "-" + manHoursPlan.ProjectControl_JobTitle;
actual.ResourcePlanId = manHoursPlan.ResourcePlanId;
actual.ManHoursPlanId = manHoursPlan.ManHoursPlanId;
actual.Roles = manHoursPlan.Roles;
actual.EProjectId = manHoursPlan.EProjectId;
actual.UserId = manHoursPlan.EngineerId;
actual.UserName = manHoursPlan.EngineerName;
actual.DisciplineId = manHoursPlan.DisciplineId;
actual.Discipline = manHoursPlan.Discipline;
actualLists.Add(actual);
}
}
}
this.Grid1.DataSource = actualLists;
this.Grid1.DataBind();
}
#endregion
#region
//显示本月总人工时和实际人工时的和
private void OutputSummaryData()
{
decimal monthManHours = 0;//本月总人工时的和
decimal actualManHours = 0;//实际人工时的和
string userId = Request.Params["UserId"];
if (!string.IsNullOrEmpty(userId))
{
actualManHours = BLL.Sys_ActualManHourMonthSetService.GetHoursByMonth(DateTime.Now);//总月度人工时
//monthManHours = BLL.PlanService.getSumManHoursByUserIdAndMonth(userId, DateTime.Now);//本月实际人工时
}
int rowsCount = this.Grid1.Rows.Count;
for (int i = 0; i < rowsCount; i++)
{
monthManHours += Convert.ToDecimal(this.Grid1.Rows[i].Values[5]);
}
JObject summary = new JObject();
summary.Add("Type", "∑Target" + actualManHours.ToString());
summary.Add("Hours", "∑Sum" + monthManHours.ToString());
Grid1.SummaryData = summary;
}
#endregion
#region
/// <summary>
/// 菜单按钮权限
/// </summary>
private void GetButtonPower()
{
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.UserId, BLL.Const.ManHoursMenuId);
if (buttonList.Count() > 0)
{
if (buttonList.Contains(BLL.Const.BtnTimeSheet))
{
this.btnNew.Hidden = false;
this.btnDelete.Hidden = false;
this.btnSelect.Hidden = false;
this.btnSave.Hidden = false;
}
}
}
#endregion
#region
protected void txtMonth_TextChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(this.txtMonth.Text.Trim()))
{
BindGrid(Request.Params["UserId"].ToString());
if ((this.txtMonth.Text.Trim() == string.Format("{0:yyyyMM}", DateTime.Now) && (DateTime.Now.Day < 25 || (DateTime.Now.Day == 25 && DateTime.Now.Hour < 12)))
|| (this.txtMonth.Text.Trim() == string.Format("{0:yyyyMM}", DateTime.Now.AddMonths(1)) && DateTime.Now.Day >=21 )
|| this.CurrUser.Account == BLL.Const.Gly)
{
IsEnabelButton(true);
}
else
{
IsEnabelButton(false);
}
}
}
private void IsEnabelButton(bool b)
{
if (b == true)
{
this.btnNew.Enabled = true;
this.btnSave.Enabled = true;
this.btnDelete.Enabled = true;
this.btnSelect.Enabled = true;
}
else
{
this.btnNew.Enabled = false;
this.btnSave.Enabled = false;
this.btnDelete.Enabled = false;
this.btnSelect.Enabled = false;
}
}
#endregion
}
}