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

539 lines
21 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 Model;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.ManHours
{
public partial class ManHoursPlanEditNew : PageBase
{
/// <summary>
/// 加载表头
/// </summary>
protected void Page_Init(object sender, EventArgs e)
{
InitGrid();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetButtonPower();//权限设置
this.btnClose.OnClientClick = ActiveWindow.GetHideReference();
BindGrid();
int years = DateTime.Now.Year;
int month = DateTime.Now.Month;
string curMonthManHour = string.Empty;
var q1 = from x in Funs.DB.Sys_ActualManHourMonthSet where Convert.ToInt32(x.Years) == years && x.DepartId == null select x;
var q2 = from x in Funs.DB.Sys_ActualManHourMonthSet where Convert.ToInt32(x.Years) == years + 1 && x.DepartId == null select x;
if (q1.Count() > 0)
{
curMonthManHour = q1.First().Month1 + "|" + q1.First().Month2 + "|"
+ q1.First().Month3 + "|" + q1.First().Month4 + "|"
+ q1.First().Month5 + "|" + q1.First().Month6 + "|" + q1.First().Month7 + "|"
+ q1.First().Month8 + "|" + q1.First().Month9 + "|"
+ q1.First().Month10 + "|" + q1.First().Month11 + "|" + q1.First().Month12 + "|";
#region
//if (month == 1)
//{
// curMonthManHour = q.First().Month1.HasValue ? q.First().Month1.Value : 0;
//}
//if (month == 2)
//{
// curMonthManHour = q.First().Month2.HasValue ? q.First().Month2.Value : 0;
//}
//if (month == 3)
//{
// curMonthManHour = q.First().Month3.HasValue ? q.First().Month3.Value : 0;
//}
//if (month == 4)
//{
// curMonthManHour = q.First().Month4.HasValue ? q.First().Month4.Value : 0;
//}
//if (month == 5)
//{
// curMonthManHour = q.First().Month5.HasValue ? q.First().Month5.Value : 0;
//}
//if (month == 6)
//{
// curMonthManHour = q.First().Month6.HasValue ? q.First().Month6.Value : 0;
//}
//if (month == 7)
//{
// curMonthManHour = q.First().Month7.HasValue ? q.First().Month7.Value : 0;
//}
//if (month == 8)
//{
// curMonthManHour = q.First().Month8.HasValue ? q.First().Month8.Value : 0;
//}
//if (month == 9)
//{
// curMonthManHour = q.First().Month9.HasValue ? q.First().Month9.Value : 0;
//}
//if (month == 10)
//{
// curMonthManHour = q.First().Month10.HasValue ? q.First().Month10.Value : 0;
//}
//if (month == 11)
//{
// curMonthManHour = q.First().Month11.HasValue ? q.First().Month11.Value : 0;
//}
//if (month == 12)
//{
// curMonthManHour = q.First().Month12.HasValue ? q.First().Month12.Value : 0;
//}
//hidCurMonthManHour.Text = curMonthManHour.ToString();
#endregion
}
if (q2.Count() > 0)
{
curMonthManHour = curMonthManHour + q2.First().Month1 + "|" + q2.First().Month2 + "|"
+ q2.First().Month3 + "|" + q2.First().Month4 + "|"
+ q2.First().Month5 + "|" + q2.First().Month6 + "|" + q2.First().Month7 + "|"
+ q2.First().Month8 + "|" + q2.First().Month9 + "|"
+ q2.First().Month10 + "|" + q2.First().Month11 + "|" + q2.First().Month12 + "|";
}
hidCurMonthManHour.Text = curMonthManHour.Substring(0, curMonthManHour.Length - 1);
}
}
#region
/// <summary>
/// 表头
/// </summary>
private void InitGrid()
{
string m = "";
int Month = 0;
int Year = DateTime.Now.Year;
int day = DateTime.Now.Day;
//如果26号到31号则显示当月
if (day >= 26)
{
Month = DateTime.Now.Month - 1;
}
// 如果1-5号则显示上个月
else
{
Month = DateTime.Now.Month - 2;
}
for (int i = 0; i < 12; i++)
{
RenderField rd = new RenderField();
rd.Width = Unit.Pixel(70);
Year = Month + 1 > 12 ? Year + 1 : Year;
Month = Month + 1 > 12 ? 1 : Month + 1;
m = Month < 10 ? "0" + Month : Month.ToString();
rd.HeaderText = Year.ToString() + m;
rd.FieldType = FieldType.Float;
rd.ColumnID = Year.ToString() + "-" + m.ToString();
if (i > 0)
{
NumberBox num = new NumberBox();
num.NoNegative = true;
num.ID = Year.ToString() + "-" + m.ToString() + "-Editor";
rd.Editor.Add(num);
}
Grid1.Columns.Add(rd);
}
}
#endregion
#region
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
SqlParameter[] parameter = new SqlParameter[]
{
new SqlParameter("@engineerId",Request.Params["UserId"].ToString())
};
DataSet ds = SQLHelper.RunProcedure("Proc_ManHoursPlanEditNew", parameter, "tt");
DataTable table = ds.Tables[0];
if (table.Rows.Count > 0)
{
Grid1.DataSource = table;
Grid1.DataBind();
}
var manHourDetails = new List<ManHours_PlanDetail>();
var actHours = new List<ManHours_Actual>();
var manHoursPlanIds = table.AsEnumerable().Select(s => s.Field<string>("ManHoursPlanId")).ToList();
manHoursPlanIds.Remove("");
if (manHoursPlanIds.Count > 0)
{
manHourDetails = Funs.DB.ManHours_PlanDetail.Where(p => manHoursPlanIds.Contains(p.PlanManHoursId)).ToList();
actHours = Funs.DB.ManHours_Actual.Where(p => manHoursPlanIds.Contains(p.ManHoursPlanId)).ToList();
}
for (int row = 0; row < Grid1.Rows.Count; row++)
{
string manHoursPlanId = Grid1.DataKeys[row][0].ToString();
var manHourDetail = manHourDetails.Where(p => p.PlanManHoursId == manHoursPlanId);
var actHour = actHours.Where(p => p.ManHoursPlanId == manHoursPlanId);
string m = "";
int Month = 0;
int Year = DateTime.Now.Year;
int day = DateTime.Now.Day;
//如果26号到31号则显示当月
if (day >= 26)
{
Month = DateTime.Now.Month - 1;
}
// 如果1-5号则显示上个月
else
{
Month = DateTime.Now.Month - 2;
}
double? total = Convert.ToDouble(Grid1.Rows[row].Values[17]); // 实际人工时;
double? planMan = Convert.ToDouble(Grid1.Rows[row].Values[16]); // 计划人工时
for (int i = 0; i < 12; i++)
{
RenderField rd;
Year = Month + 1 > 12 ? Year + 1 : Year;
Month = Month + 1 > 12 ? 1 : Month + 1;
m = Month < 10 ? "0" + Month : Month.ToString();
rd = Grid1.FindColumn(Year.ToString() + "-" + m.ToString()) as RenderField;
double h = 0;
if (i == 0)
{
if (actHour.Count() > 0)
{
var act = from x in actHour where x.ManHoursDate == Year.ToString() + m select x.Hours;
if (act.Count() > 0)
{
if (act.Count() == 1)
{
Grid1.Rows[row].Values[rd.ColumnIndex] = act.First();
}
else
{
double hour = 0;
foreach (var q in act)
{
hour = hour + (q != null ? q.Value : 0);
}
Grid1.Rows[row].Values[rd.ColumnIndex] = hour;
}
}
else
{
Grid1.Rows[row].Values[rd.ColumnIndex] = 0;
}
}
else
{
Grid1.Rows[row].Values[rd.ColumnIndex] = 0;
}
}
else
{
var hours = from x in manHourDetail where x.DateMonth.Value.Year == Year && x.DateMonth.Value.Month == Month select x.Hour;
if (hours.Count() > 0)
{
Grid1.Rows[row].Values[rd.ColumnIndex] = hours.First();
h = hours.First() != null ? hours.First().Value : 0;
}
else
{
Grid1.Rows[row].Values[rd.ColumnIndex] = 0;
}
}
total += h;
}
if (total != null)
{
Grid1.Rows[row].Values[18] = total;
}
else
{
Grid1.Rows[row].Values[18] = 0;
}
if (planMan != null && planMan != 0 && total != null)
{
RenderField r = Grid1.FindColumn("Realization") as RenderField;
double rate = (1.0 * total.Value / planMan.Value);
string real = rate.ToString("0.00");
Grid1.Rows[row].Values[r.ColumnIndex] = real;
if (rate > 1)
{
Grid1.Rows[row].CellCssClasses[r.ColumnIndex] = "totalRed";
}
}
}
}
/// <summary>
/// 绑定默认值
/// </summary>
protected void Grid1_RowDataBound(object sender, GridRowEventArgs e)
{
string manHoursPlanId = e.RowID;
var manHourDetail = from x in Funs.DB.ManHours_PlanDetail where x.PlanManHoursId == manHoursPlanId select x;
var actHour = from x in Funs.DB.ManHours_Actual where x.ManHoursPlanId == manHoursPlanId select x;
string m = "";
int Month = 0;
int Year = DateTime.Now.Year;
int day = DateTime.Now.Day;
//如果26号到31号则显示当月
if (day >= 26)
{
Month = DateTime.Now.Month - 1;
}
// 如果1-5号则显示上个月
else
{
Month = DateTime.Now.Month - 2;
}
double? total = Convert.ToDouble(e.Values[17]); // 实际人工时;
double? planMan = Convert.ToDouble(e.Values[16]); // 计划人工时
for (int i = 0; i < 12; i++)
{
RenderField rd;
Year = Month + 1 > 12 ? Year + 1 : Year;
Month = Month + 1 > 12 ? 1 : Month + 1;
m = Month < 10 ? "0" + Month : Month.ToString();
rd = Grid1.FindColumn(Year.ToString() + "-" + m.ToString()) as RenderField;
double h = 0;
if (i == 0)
{
if (actHour.Count() > 0)
{
var act = from x in actHour where x.ManHoursDate == Year.ToString() + m select x.Hours;
if (act.Count() > 0)
{
if (act.Count() == 1)
{
e.Values[rd.ColumnIndex] = act.First();
}
else
{
double hour = 0;
foreach (var q in act)
{
hour = hour + (q != null ? q.Value : 0);
}
e.Values[rd.ColumnIndex] = hour;
}
}
else
{
e.Values[rd.ColumnIndex] = 0;
}
}
else
{
e.Values[rd.ColumnIndex] = 0;
}
}
else
{
var hours = from x in manHourDetail where x.DateMonth.Value.Year == Year && x.DateMonth.Value.Month == Month select x.Hour;
if (hours.Count() > 0)
{
e.Values[rd.ColumnIndex] = hours.First();
h = hours.First() != null ? hours.First().Value : 0;
}
else
{
e.Values[rd.ColumnIndex] = 0;
}
}
total += h;
}
if (total != null)
{
e.Values[18] = total;
}
else
{
e.Values[18] = 0;
}
if (planMan != null && planMan != 0 && total != null)
{
RenderField r = Grid1.FindColumn("Realization") as RenderField;
double rate = (1.0 * total.Value / planMan.Value);
string real = rate.ToString("0.00");
e.Values[r.ColumnIndex] = real;
if (rate > 1)
{
e.CellCssClasses[r.ColumnIndex] = "totalRed";
}
}
}
#endregion
#region
/// <summary>
/// 保存
/// </summary>
protected void btnSave_Click(object sender, EventArgs e)
{
if ((DateTime.Now.Day > 10 || (DateTime.Now.Day == 10 && DateTime.Now.Hour > 17)) && DateTime.Now.Day < 26)
{
Alert.ShowInParent("StaffingPlan已冻结提示下月计划人工时从本月26号开放填写到下月10号下午5点冻结");
return;
}
JArray mergedData = Grid1.GetMergedData();
Model.EProjectDB db = Funs.DB;
List<Model.ManHours_PlanDetail> deletePlanDetail = new List<Model.ManHours_PlanDetail>();
List<Model.ManHours_PlanDetail> addPlanDetail = new List<Model.ManHours_PlanDetail>();
foreach (JObject mergedRow in mergedData)
{
int Month = 0;
int Year = DateTime.Now.Year;
int day = DateTime.Now.Day;
//如果26号到31号则显示当月
if (day >= 26)
{
Month = DateTime.Now.Month - 1;
}
// 如果1-10号则显示上个月
else
{
Month = DateTime.Now.Month - 2;
}
JObject values = mergedRow.Value<JObject>("values");
string rowId = values.Value<string>("ManHoursPlanId");
var manPlanHour = BLL.PlanService.GetPlanByIds(rowId);
var manHourDetail = from x in db.ManHours_PlanDetail where x.PlanManHoursId == rowId select x;
for (int i = 0; i < 12; i++)
{
Year = Month + 1 > 12 ? Year + 1 : Year;
Month = Month + 1 > 12 ? 1 : Month + 1;
string month = Month < 10 ? "0" + Month : Month.ToString();
if (i > 0)
{
Model.ManHours_PlanDetail detail = new Model.ManHours_PlanDetail();
detail.ManHoursPlanDetailId = Guid.NewGuid().ToString();
detail.PlanManHoursId = rowId;
detail.EProjectId = manPlanHour.EProjectId;
detail.UserId = manPlanHour.EngineerId;
detail.UserName = manPlanHour.EngineerName;
var hours = from x in manHourDetail where x.DateMonth.Value.Year == Year && x.DateMonth.Value.Month == Month select x;
if (hours.Count() > 0)
{
deletePlanDetail.Add(hours.First());
//db.ManHours_PlanDetail.DeleteAllOnSubmit(hours);
}
if (day > 28)
{
day = 28;
}
detail.DateMonth = Convert.ToDateTime(Year.ToString() + "-" + Month.ToString() + "-" + day.ToString());
string date = Year.ToString() + "-" + month.ToString();
string manh = values.Value<string>(date);
if (!string.IsNullOrEmpty(manh))
{
detail.Hour = Convert.ToDouble(manh);
}
else
{
detail.Hour = 0;
}
addPlanDetail.Add(detail);
}
}
}
db.ManHours_PlanDetail.DeleteAllOnSubmit(deletePlanDetail);
db.ManHours_PlanDetail.InsertAllOnSubmit(addPlanDetail);
db.SubmitChanges();
//BindGrid();
ShowNotify("数据保存成功!(表格数据已重新绑定)");
}
//private void UpdateDataRow(Dictionary<string, object> rowDict, DataRow rowData)
//{
// string m = "";
// int Year = DateTime.Now.Year;
// int Month = DateTime.Now.Month - 1;
// for (int i = 0; i < 12; i++)
// {
// Year = Month + 1 > 12 ? Year + 1 : Year;
// Month = Month + 1 > 12 ? 1 : Month + 1;
// m = Month < 10 ? "0" + Month : Month.ToString();
// UpdateDataRow(Year.ToString() + "-" + m.ToString(), rowDict, rowData);
// }
//}
//private void UpdateDataRow(string columnName, Dictionary<string, object> rowDict, DataRow rowData)
//{
// if (rowDict.ContainsKey(columnName))
// {
// rowData[columnName] = rowDict[columnName];
// }
//}
/// <summary>
/// 根据行ID来获取行数据
/// </summary>
//private DataRow FindRowByID(string rowID)
//{
// SqlParameter[] parameter = new SqlParameter[]
// {
// new SqlParameter("@sId",Request.Params["UserId"].ToString())
// };
// DataSet ds = SQLHelper.RunProcedure("Proc_ManHoursPlanEdit", parameter, "tt");
// DataTable table = ds.Tables[0];
// foreach (DataRow row in table.Rows)
// {
// if (row["EProjectId"].ToString() == rowID)
// {
// return row;
// }
// }
// return null;
//}
#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.BtnStaffingPlan))
{
this.btnSave.Hidden = false;
}
}
}
#endregion
}
}