using BLL; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; namespace FineUIPro.Web.JDGL.SGManPower { public partial class ManPowerPlanGrid : PageBase { #region Page_Init // 注意:动态创建的代码需要放置于Page_Init(不是Page_Load),这样每次构造页面时都会执行 protected void Page_Init(object sender, EventArgs e) { InitGrid(); } public DataTable GridTable = new DataTable(); private void InitGrid() { FineUIPro.BoundField bf; FineUIPro.RenderField rf; FineUIPro.TextBox txTextBox; // 设置Grid的编辑属性 Grid1.AllowCellEditing = true; Grid1.ClicksToEdit = 1; Grid1.EnableAfterEditEvent = true; UnitId = Request.Params["UnitId"]; StartTime = Request.Params["StartTime"]; EndTime = Request.Params["EndTime"]; GridTable.Columns.Add("Id"); // 添加主键列用于编辑操作 GridTable.Columns.Add("PrimaryKeyMap"); // 用于存储原始记录的ID // 添加隐藏列来存储额外的ID信息 GridTable.Columns.Add("UnitId"); GridTable.Columns.Add("UnitWorkId"); GridTable.Columns.Add("WorkPostId"); ListItem[] list = new ListItem[6]; list[0] = new ListItem("序号", "SerialNumber"); list[1] = new ListItem("单位", "UnitName"); list[2] = new ListItem("装置", "UnitWorkName"); list[3] = new ListItem("岗位", "WorkPostName"); list[4] = new ListItem("版本", "Version"); list[5] = new ListItem("累计", "TotalCount"); foreach (var item in list) { bf = new FineUIPro.BoundField(); bf.ColumnID = item.Value; bf.DataField = item.Value; bf.HeaderText = item.Text; bf.HeaderTextAlign = TextAlign.Center; bf.TextAlign = TextAlign.Center; bf.Locked = true; Grid1.Columns.Add(bf); GridTable.Columns.Add(item.Value); } // 动态获取日期范围 DateTime startDate = Convert.ToDateTime(StartTime); DateTime endDate = Convert.ToDateTime(EndTime); var dateRange = Enumerable.Range(0, (endDate - startDate).Days + 1) .Select(i => startDate.AddDays(i)) .ToList(); // 按年分组日期 var groupedByYear = dateRange.GroupBy(d => d.Year) .OrderBy(g => g.Key) .ToList(); foreach (var yearGroup in groupedByYear) { GroupField yearGroupField = new GroupField(); yearGroupField.HeaderText = $"{yearGroup.Key}年"; yearGroupField.TextAlign = TextAlign.Center; // 按月分组 var groupedByMonth = yearGroup.GroupBy(d => d.Month) .OrderBy(g => g.Key) .ToList(); foreach (var monthGroup in groupedByMonth) { GroupField monthGroupField = new GroupField(); monthGroupField.HeaderText = $"{monthGroup.Key}月"; monthGroupField.TextAlign = TextAlign.Center; // 添加具体日期的列 foreach (var date in monthGroup.OrderBy(d => d)) { rf = new FineUIPro.RenderField(); rf.ColumnID = date.ToString("yyyy-MM-dd"); rf.DataField = date.ToString("yyyy-MM-dd"); rf.HeaderText = date.ToString("dd"); rf.HeaderTextAlign = TextAlign.Center; rf.TextAlign = TextAlign.Center; txTextBox = new FineUIPro.TextBox(); txTextBox.ID = "txt" + date.ToString("yyyy-MM-dd"); rf.Editor.Add(txTextBox); monthGroupField.Columns.Add(rf); GridTable.Columns.Add(date.ToString("yyyy-MM-dd")); } yearGroupField.Columns.Add(monthGroupField); } Grid1.Columns.Add(yearGroupField); } } #endregion public string UnitId { get => (string)ViewState["UnitId"]; set => ViewState["UnitId"] = value; } public string StartTime { get => (string)ViewState["StartTime"]; set => ViewState["StartTime"] = value; } public string EndTime { get => (string)ViewState["EndTime"]; set => ViewState["EndTime"] = value; } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.GetButtonPower(); Funs.DropDownPageSize(this.ddlPageSize); // 设置Grid的PageSize与下拉框默认值一致 Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); WorkPostService.InitWorkPostDropDownList(this.drpWorkPost, true); //岗位 UnitWorkService.InitUnitWorkDownList(drpUnitWork, this.CurrUser.LoginProjectId, true); //单位工程(装置) //版本 this.drpVersion.DataTextField = "Version"; this.drpVersion.DataValueField = "Version"; this.drpVersion.DataSource = BLL.ManPowerPlanService.getGroupVersion(this.CurrUser.LoginProjectId); this.drpVersion.DataBind(); // 绑定表格 this.BindGrid(); } } #region 绑定数据 /// /// 绑定数据 /// private void BindGrid() { // 清空现有数据 GridTable.Clear(); // 重新添加列定义(保持列结构) if (GridTable.Columns.Count == 0) { GridTable.Columns.Add("Id"); GridTable.Columns.Add("UnitId"); GridTable.Columns.Add("UnitWorkId"); GridTable.Columns.Add("WorkPostId"); GridTable.Columns.Add("Version"); GridTable.Columns.Add("PrimaryKeyMap"); // 添加动态日期列(这部分已经在InitGrid中定义了) ListItem[] list = new ListItem[6]; list[0] = new ListItem("序号", "SerialNumber"); list[1] = new ListItem("单位", "UnitName"); list[2] = new ListItem("装置", "UnitWorkName"); list[3] = new ListItem("岗位", "WorkPostName"); list[4] = new ListItem("版本", "Version"); list[5] = new ListItem("累计", "TotalCount"); foreach (var item in list) { GridTable.Columns.Add(item.Value); } // 日期列会在InitGrid中添加,这里不需要重复添加 } else { // 清空行数据但保持列结构 GridTable.Rows.Clear(); } // 获取当前项目的人力计划数据 var manpowerPlans = (from x in Funs.DB.JDGL_SGManPower join y in Funs.DB.Base_WorkPost on x.WorkPostId equals y.WorkPostId where x.ProjectId == this.CurrUser.LoginProjectId orderby y.WorkPostCode select x).ToList(); if (UnitId != Const._Null) { manpowerPlans = manpowerPlans.Where(x => x.UnitId == UnitId).ToList(); } if (drpWorkPost.SelectedValue != Const._Null) { manpowerPlans = manpowerPlans.Where(x => x.WorkPostId == drpWorkPost.SelectedValue).ToList(); } if (drpUnitWork.SelectedValue != Const._Null) { manpowerPlans = manpowerPlans.Where(x => x.UnitWorkId == drpUnitWork.SelectedValue).ToList(); } if (drpVersion.SelectedValue != Const._Null) { manpowerPlans = manpowerPlans.Where(x => x.Version == drpVersion.SelectedValue).ToList(); } // 获取所有相关单位、装置和岗位信息 var units = Funs.DB.Base_Unit.ToList(); var unitWorks = Funs.DB.WBS_UnitWork.ToList(); var workPosts = Funs.DB.Base_WorkPost.ToList(); // 按单位、装置、岗位分组数据 var groupedData = manpowerPlans .GroupBy(x => new { x.UnitId, x.UnitWorkId, x.WorkPostId, x.Version }) .ToList(); var count = groupedData.Count(); Grid1.RecordCount = count; groupedData = groupedData.Skip(Grid1.PageSize * Grid1.PageIndex).Take(Grid1.PageSize).ToList(); foreach (var group in groupedData) { DataRow row = GridTable.NewRow(); // 基本信息 var firstItem = group.First(); row["Id"] = Guid.NewGuid().ToString(); // 生成唯一ID用于行标识 row["SerialNumber"] = GridTable.Rows.Count + 1; // 序号 // 单位信息 var unit = units.FirstOrDefault(u => u.UnitId == firstItem.UnitId); row["UnitName"] = unit != null ? unit.UnitName : ""; row["UnitId"] = firstItem.UnitId ?? (object)DBNull.Value; // 装置信息 var unitWork = unitWorks.FirstOrDefault(uw => uw.UnitWorkId == firstItem.UnitWorkId); row["UnitWorkName"] = unitWork != null ? unitWork.UnitWorkName : ""; // 当UnitWorkId为null时,保持为null而不是空字符串 row["UnitWorkId"] = firstItem.UnitWorkId ?? (object)DBNull.Value; // 岗位信息 var workPost = workPosts.FirstOrDefault(wp => wp.WorkPostId == firstItem.WorkPostId); row["WorkPostName"] = workPost != null ? workPost.WorkPostName : ""; row["WorkPostId"] = firstItem.WorkPostId ?? (object)DBNull.Value; // 版本信息 row["Version"] = firstItem.Version ?? ""; // 计算累计数量 int totalCount = 0; // 存储主键信息,用于编辑操作 // 创建一个字典来存储每个日期对应的记录ID var dateIdMap = new Dictionary(); // 日期相关的人力数据 foreach (var item in group) { if (item.PlanDate.HasValue) { string dateColumnId = item.PlanDate.Value.ToString("yyyy-MM-dd"); // 确保列存在 if (GridTable.Columns.Contains(dateColumnId)) { int quantity = item.Quantity ?? 0; row[dateColumnId] = quantity; dateIdMap[dateColumnId] = item.Id; // 记录每个日期对应的记录ID totalCount += quantity; // 累计数量 } } } // 设置累计数量 row["TotalCount"] = totalCount; // 将ID映射序列化后存储到行中 row["PrimaryKeyMap"] = Newtonsoft.Json.JsonConvert.SerializeObject(dateIdMap); GridTable.Rows.Add(row); } Grid1.DataSource = GridTable; Grid1.DataBind(); // 计算汇总数据 OutputSummaryData(); } #region 计算合计 /// /// 计算合计 /// private void OutputSummaryData() { // 创建用于存储合计值的对象 JObject summary = new JObject(); // 设置固定列的合计值 summary.Add("UnitName", "合计"); // 计算TotalCount列的合计值 int totalCountSum = 0; foreach (DataRow row in GridTable.Rows) { if (row["TotalCount"] != DBNull.Value && row["TotalCount"] != null) { int value; if (int.TryParse(row["TotalCount"].ToString(), out value)) { totalCountSum += value; } } } summary.Add("TotalCount", totalCountSum.ToString()); // 计算日期列的合计值 foreach (DataColumn column in GridTable.Columns) { // 检查是否为日期列(格式为 yyyy-MM-dd) DateTime date; if (DateTime.TryParseExact(column.ColumnName, "yyyy-MM-dd", null, System.Globalization.DateTimeStyles.None, out date)) { // 计算该列的合计值 int columnSum = 0; foreach (DataRow row in GridTable.Rows) { if (row[column.ColumnName] != DBNull.Value && row[column.ColumnName] != null) { int value; if (int.TryParse(row[column.ColumnName].ToString(), out value)) { columnSum += value; } } } summary.Add(column.ColumnName, columnSum.ToString()); } } // 设置汇总数据 Grid1.SummaryData = summary; } #endregion #endregion #region GV 数据操作 /// /// 分页 /// /// /// protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) { this.Grid1.PageIndex = e.NewPageIndex; this.BindGrid(); } /// /// 排序 /// /// /// protected void Grid1_Sort(object sender, GridSortEventArgs e) { this.Grid1.SortDirection = e.SortDirection; this.Grid1.SortField = e.SortField; this.BindGrid(); } /// /// 分页显示条数下拉框 /// /// /// protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) { Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); this.BindGrid(); } #endregion #region 数据查询 /// /// 查询 /// /// /// protected void btnQuery_OnClick(object sender, EventArgs e) { BindGrid(); } /// /// 统计图表 /// /// /// protected void btnGetChart_Click(object sender, EventArgs e) { if (!string.IsNullOrEmpty(UnitId) && !string.IsNullOrEmpty(StartTime) && !string.IsNullOrEmpty(EndTime)) { // 构建基础URL参数 string urlParams = string.Format("UnitId={0}&StartTime={1}&EndTime={2}", UnitId, StartTime, EndTime); // 添加装置参数(如果已选择) if (drpUnitWork.SelectedValue != Const._Null && !string.IsNullOrEmpty(drpUnitWork.SelectedValue)) { urlParams += "&UnitWorkId=" + drpUnitWork.SelectedValue; } // 添加岗位参数(如果已选择) if (drpWorkPost.SelectedValue != Const._Null && !string.IsNullOrEmpty(drpWorkPost.SelectedValue)) { urlParams += "&WorkPostId=" + drpWorkPost.SelectedValue; } // 版本参数 if (drpVersion.SelectedValue != Const._Null && !string.IsNullOrEmpty(drpVersion.SelectedValue)) { urlParams += "&drpVersion=" + drpVersion.SelectedValue; } PageContext.RegisterStartupScript( Window2.GetShowReference(string.Format("ManPowerPlanChart.aspx?{0}", urlParams), "人力计划图表")); } else { ShowNotify("请先选择单位并确保时间范围已设置", MessageBoxIcon.Warning); } } #endregion #region 获取权限按钮 /// /// 获取按钮权限 /// /// /// private void GetButtonPower() { if (Request.Params["value"] == BLL.Const._Null) { return; } var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.SGManPowerMenuId); if (buttonList.Count() > 0) { if (buttonList.Contains(BLL.Const.BtnSave)) { this.btnNew.Hidden = false; } } } #endregion #region 关闭弹出窗 /// /// 关闭弹出窗 /// /// /// protected void Window1_Close(object sender, WindowCloseEventArgs e) { BindGrid(); } #endregion #region 导出按钮 /// 导出按钮 /// /// /// protected void btnOut_Click(object sender, EventArgs e) { Response.ClearContent(); string filename = Funs.GetNewFileName(); Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("施工人力计划表" + filename, System.Text.Encoding.UTF8) + ".xls"); Response.ContentType = "application/excel"; Response.ContentEncoding = System.Text.Encoding.UTF8; this.BindGrid(); // 生成并写入Excel表格 Response.Write(GetGridTableHtml(Grid1)); Response.End(); } /// /// 导出方法 - 支持多级表头 /// /// /// /// private string GetGridTableHtml(Grid grid) { StringBuilder sb = new StringBuilder(); MultiHeaderTable mht = new MultiHeaderTable(); mht.ResolveMultiHeaderTable(grid.Columns); sb.Append(""); sb.Append(""); // 生成多级表头 foreach (List rows in mht.MultiTable) { sb.Append(""); foreach (object[] cell in rows) { int rowspan = 1; int colspan = Convert.ToInt32(cell[1]); GridColumn column = cell[2] as GridColumn; // 对于锁定列(固定列),确保rowspan为3 if (column.Locked) { rowspan = 3; } sb.AppendFormat("{3}", " rowspan=\"" + rowspan + "\"", colspan != 1 ? " colspan=\"" + colspan + "\"" : "", colspan != 1 ? " style=\"text-align:center;\"" : "", column.HeaderText); } sb.Append(""); } // 生成数据行 foreach (GridRow row in grid.Rows) { sb.Append(""); foreach (GridColumn column in mht.Columns) { string html = row.Values[column.ColumnIndex].ToString(); // 特殊处理固定列 if (column.ColumnID == "UnitName") { html = row.Values[column.ColumnIndex].ToString(); } else if (column.ColumnID == "UnitWorkName") { html = row.Values[column.ColumnIndex].ToString(); } else if (column.ColumnID == "WorkPostName") { html = row.Values[column.ColumnIndex].ToString(); } else if (column.ColumnID == "Version") { html = row.Values[column.ColumnIndex].ToString(); } else if (column.ColumnID == "TotalCount") { html = row.Values[column.ColumnIndex].ToString(); } // 处理日期列(格式为 yyyy-MM-dd) else if (DateTime.TryParseExact(column.ColumnID, "yyyy-MM-dd", null, System.Globalization.DateTimeStyles.None, out _)) { html = row.Values[column.ColumnIndex].ToString(); } sb.AppendFormat("", html); } sb.Append(""); } // 添加合计行 if (grid.SummaryData != null) { sb.Append(""); foreach (GridColumn column in mht.Columns) { string summaryValue = ""; // 检查SummaryData中是否有该列的合计值 if (grid.SummaryData.Properties().Any(p => p.Name == column.ColumnID)) { var property = grid.SummaryData.Properties().FirstOrDefault(p => p.Name == column.ColumnID); if (property != null) { summaryValue = property.Value.ToString(); } } else if (column.ColumnID == "UnitName") { summaryValue = "合计"; } sb.AppendFormat("", summaryValue); } sb.Append(""); } sb.Append("
{0}
{0}
"); return sb.ToString(); } #region 多表头处理 /// /// 处理多表头的类 /// public class MultiHeaderTable { // 包含 rowspan,colspan 的多表头,方便生成 HTML 的 table 标签 public List> MultiTable = new List>(); // 最终渲染的列数组 public List Columns = new List(); public void ResolveMultiHeaderTable(GridColumnCollection columns) { List row = new List(); foreach (GridColumn column in columns) { object[] cell = new object[4]; cell[0] = 1; // rowspan cell[1] = 1; // colspan cell[2] = column; cell[3] = null; row.Add(cell); } ResolveMultiTable(row, 0); ResolveColumns(row); } private void ResolveColumns(List row) { foreach (object[] cell in row) { GroupField groupField = cell[2] as GroupField; if (groupField != null && groupField.Columns.Count > 0) { List subrow = new List(); foreach (GridColumn column in groupField.Columns) { subrow.Add(new object[] { 1, 1, column, groupField }); } ResolveColumns(subrow); } else { Columns.Add(cell[2] as GridColumn); } } } private void ResolveMultiTable(List row, int level) { List nextrow = new List(); foreach (object[] cell in row) { GroupField groupField = cell[2] as GroupField; if (groupField != null && groupField.Columns.Count > 0) { // 如果当前列包含子列,则更改当前列的 colspan,以及增加父列(向上递归)的colspan cell[1] = Convert.ToInt32(groupField.Columns.Count); PlusColspan(level - 1, cell[3] as GridColumn, groupField.Columns.Count - 1); foreach (GridColumn column in groupField.Columns) { nextrow.Add(new object[] { 1, 1, column, groupField }); } } else { // 如果当前列不包含子列,但不是最末级列(不是叶子节点),则增加rowspan if (level > 0) { cell[0] = level + 1; } } } MultiTable.Add(row); if (nextrow.Count > 0) { ResolveMultiTable(nextrow, level + 1); } } private void PlusColspan(int level, GridColumn column, int colspan) { if (level < 0) { return; } foreach (List rows in MultiTable) { foreach (object[] cells in rows) { if (cells[2] == column) { cells[1] = Convert.ToInt32(cells[1]) + colspan; PlusColspan(level - 1, cells[3] as GridColumn, colspan); break; } } } } } #endregion #endregion #region 编辑单元格 protected void Grid1_AfterEdit(object sender, GridAfterEditEventArgs e) { Dictionary> modifiedDict = Grid1.GetModifiedDict(); foreach (int rowIndex in modifiedDict.Keys) { // 确保GridTable中有足够的行 if (GridTable.Rows.Count <= rowIndex) { // 如果GridTable中没有足够的行,重新绑定数据 BindGrid(); } // 再次检查是否有了足够的行 if (GridTable.Rows.Count <= rowIndex) { ShowNotify("数据状态异常,请刷新页面后重试!"); return; } // 获取行ID string rowId = Grid1.DataKeys[rowIndex][0].ToString(); //获取固定列的列数据 var d = GridTable.Rows[rowIndex]; string unitId = null; var UnitIdValue = GridTable.Rows[rowIndex]["UnitId"]; if (UnitIdValue != null && UnitIdValue != DBNull.Value) { unitId = UnitIdValue.ToString(); } // 处理可能为null的unitWorkId string unitWorkId = null; var unitWorkIdValue = GridTable.Rows[rowIndex]["UnitWorkId"]; if (unitWorkIdValue != null && unitWorkIdValue != DBNull.Value) { unitWorkId = unitWorkIdValue.ToString(); } string workPostId = null; var workPostIdValue = GridTable.Rows[rowIndex]["WorkPostId"]; if (workPostIdValue != null && workPostIdValue != DBNull.Value) { workPostId = workPostIdValue.ToString(); } string version = GridTable.Rows[rowIndex]["Version"].ToString(); // 获取主键映射信息 string primaryKeyMapJson = GridTable.Rows[rowIndex]["PrimaryKeyMap"].ToString(); var dateIdMap = Newtonsoft.Json.JsonConvert.DeserializeObject>(primaryKeyMapJson) ?? new Dictionary(); // 遍历该行中被修改的列 foreach (string columnName in modifiedDict[rowIndex].Keys) { // 获取修改后的值 object newValue = modifiedDict[rowIndex][columnName]; // 根据列名判断是否为日期列 DateTime planDate; if (DateTime.TryParse(columnName, out planDate)) { // 检查是否应该删除记录(值为0或空字符串) bool shouldDelete = (newValue == null) || (newValue.ToString() == "") || (newValue.ToString() == "0"); if (shouldDelete) { // 删除记录 string recordId = null; if (dateIdMap.ContainsKey(columnName)) { recordId = dateIdMap[columnName]; } DeleteManPowerPlan(recordId, unitId, unitWorkId, workPostId, version, planDate); // 从映射中移除该日期 if (dateIdMap.ContainsKey(columnName)) { dateIdMap.Remove(columnName); } } else { // 这是一个日期列,需要更新对应的人力计划数据 string recordId = null; // 尝试从映射中获取记录ID if (dateIdMap.ContainsKey(columnName)) { recordId = dateIdMap[columnName]; } // 更新或创建人力计划数据 UpdateManPowerPlan(recordId, unitId, unitWorkId, workPostId, version, planDate, newValue); } } } // 更新行中的主键映射信息 GridTable.Rows[rowIndex]["PrimaryKeyMap"] = Newtonsoft.Json.JsonConvert.SerializeObject(dateIdMap); } BindGrid(); ShowNotify("数据保存成功!(表格数据已重新绑定)"); } /// /// 更新人力计划数据 /// /// 记录ID(如果存在) /// 单位ID /// 装置ID /// 岗位ID /// 版本 /// 计划日期 /// 数量 private void UpdateManPowerPlan(string recordId, string unitId, string unitWorkId, string workPostId, string version, DateTime planDate, object quantity) { Model.JDGL_SGManPower manpowerPlan = null; // 如果记录ID存在,则尝试查找现有记录 if (!string.IsNullOrEmpty(recordId)) { manpowerPlan = Funs.DB.JDGL_SGManPower.FirstOrDefault(x => x.Id == recordId); } // 如果没有找到现有记录,则根据条件查找或创建新记录 if (manpowerPlan == null) { // 尝试查找匹配条件的现有记录 manpowerPlan = Funs.DB.JDGL_SGManPower.FirstOrDefault(x => x.ProjectId == this.CurrUser.LoginProjectId && x.UnitId == unitId && x.UnitWorkId == unitWorkId && x.WorkPostId == workPostId && x.Version == version && x.PlanDate == planDate); } // 如果仍然没有找到记录,则创建新记录 if (manpowerPlan == null) { manpowerPlan = new Model.JDGL_SGManPower { Id = SQLHelper.GetNewID(typeof(Model.JDGL_SGManPower)), ProjectId = this.CurrUser.LoginProjectId, UnitId = unitId, UnitWorkId = unitWorkId, WorkPostId = workPostId, Version = version, PlanDate = planDate, CompileMan = this.CurrUser.UserId, CompileTime = DateTime.Now }; // 设置数量 if (quantity != null && !string.IsNullOrEmpty(quantity.ToString())) { int qty; if (int.TryParse(quantity.ToString(), out qty)) { manpowerPlan.Quantity = qty; } } BLL.ManPowerPlanService.AddSGManPower(manpowerPlan); } else { // 如果有值就进行编辑修改操作 if (quantity != null && !string.IsNullOrEmpty(quantity.ToString())) { int qty; if (int.TryParse(quantity.ToString(), out qty)) { manpowerPlan.Quantity = qty; } else { manpowerPlan.Quantity = null; // 清空数量 } } else { manpowerPlan.Quantity = null; // 清空数量 } } Funs.DB.SubmitChanges(); } /// /// 删除人力计划数据 /// /// 记录ID(如果存在) /// 单位ID /// 装置ID /// 岗位ID /// 版本 /// 计划日期 private void DeleteManPowerPlan(string recordId, string unitId, string unitWorkId, string workPostId, string version, DateTime planDate) { Model.JDGL_SGManPower manpowerPlan = null; // 如果记录ID存在,则尝试查找现有记录 if (!string.IsNullOrEmpty(recordId)) { manpowerPlan = Funs.DB.JDGL_SGManPower.FirstOrDefault(x => x.Id == recordId); } else { // 根据条件查找记录 var query = Funs.DB.JDGL_SGManPower.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.UnitId == unitId && x.WorkPostId == workPostId && x.Version == version && x.PlanDate == planDate); // 根据unitWorkId是否为null进行不同的查询 if (string.IsNullOrEmpty(unitWorkId)) { query = query.Where(x => x.UnitWorkId == null); } else { query = query.Where(x => x.UnitWorkId == unitWorkId); } manpowerPlan = query.FirstOrDefault(); } // 如果找到了记录,则删除它 if (manpowerPlan != null) { Funs.DB.JDGL_SGManPower.DeleteOnSubmit(manpowerPlan); Funs.DB.SubmitChanges(); } } #endregion #region 新增 /// /// 新增 /// /// /// protected void btnNew_Click(object sender, EventArgs e) { PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("ManPowerPlanEdit.aspx"), "新增 - 施工人力计划")); } #endregion #region 导入 /// /// 导入按钮 /// /// /// protected void btnImport_Click(object sender, EventArgs e) { PageContext.RegisterStartupScript(Window1.GetShowReference( String.Format("ManPowerPlanIn.aspx?ProjectId={0}", this.CurrUser.LoginProjectId), "导入 - 施工人力计划")); } #endregion } }