789 lines
37 KiB
C#
789 lines
37 KiB
C#
|
using BLL;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Data;
|
|||
|
using System.Data.SqlClient;
|
|||
|
using System.IO;
|
|||
|
using System.Linq;
|
|||
|
using System.Web;
|
|||
|
using System.Web.UI;
|
|||
|
using System.Web.UI.WebControls;
|
|||
|
using static FineUIPro.Web.CQMS.WBS.Control.DivisionSubProjects;
|
|||
|
|
|||
|
namespace FineUIPro.Web.CQMS.WBS.Control
|
|||
|
{
|
|||
|
public partial class DivisionSubProjects : PageBase
|
|||
|
{
|
|||
|
protected void Page_Load(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (!IsPostBack)
|
|||
|
{
|
|||
|
DataBrid();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#region 数据绑定和事件
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 数据绑定
|
|||
|
/// </summary>
|
|||
|
public void DataBrid()
|
|||
|
{
|
|||
|
string strSql = @"select a.Division,a.ProjectId,a.ParentId,a.DivisionLevel,a.EngineeringCode,a.EngineeringName,a.SubEngineeringCode,a.SubEngineeringName,a.BranchEngineeringCode,a.BranchEngineeringName,a.SubBranchEngineeringName,a.ProEngineeringCode,a.ProEngineeringName,a.ProEngineeringNum,a.Remark,a.AddUser,a.OperateTime,a.Sort from Division_SubProjects as a inner join Base_Project as b on a.ProjectId=b.ProjectId where a.ProjectId=@ProjectId order by a.Sort,a.DivisionLevel asc";
|
|||
|
List<SqlParameter> listStr = new List<SqlParameter>();
|
|||
|
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
|
|||
|
if (!string.IsNullOrEmpty(sEngineeringName.Text.Trim()))
|
|||
|
{
|
|||
|
strSql += " and a.EngineeringName=@EngineeringName";
|
|||
|
listStr.Add(new SqlParameter("@EngineeringName", this.sEngineeringName.Text.Trim()));
|
|||
|
}
|
|||
|
SqlParameter[] parameter = listStr.ToArray();
|
|||
|
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
|
|||
|
Grid1.DataSource = tb;
|
|||
|
Grid1.DataBind();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 行点击 事件
|
|||
|
/// </summary>
|
|||
|
protected void Grid1_RowCommand(object sender, GridCommandEventArgs e)
|
|||
|
{
|
|||
|
if (e.CommandName == "Delete")
|
|||
|
{
|
|||
|
string rowID = e.RowID;
|
|||
|
DeleteRowByIDInternal(rowID);
|
|||
|
DataBrid();
|
|||
|
ShowNotify("删除成功!");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 行加载事件
|
|||
|
/// </summary>
|
|||
|
protected void Grid1_RowDataBound(object sender, GridRowEventArgs e)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 按钮
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 搜索
|
|||
|
/// </summary>
|
|||
|
protected void btnSearch_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
DataBrid();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 删除
|
|||
|
/// </summary>
|
|||
|
protected void btnDelete_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (Grid1.SelectedRowIndexArray.Length == 0)
|
|||
|
{
|
|||
|
ShowNotify("至少选择一条数据!");
|
|||
|
return;
|
|||
|
}
|
|||
|
foreach (int rowIndex in Grid1.SelectedRowIndexArray)
|
|||
|
{
|
|||
|
string rowID = Grid1.DataKeys[rowIndex][0].ToString();
|
|||
|
DeleteRowByIDInternal(rowID);
|
|||
|
}
|
|||
|
DataBrid();
|
|||
|
ShowNotify("删除成功!");
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 新增
|
|||
|
/// </summary>
|
|||
|
protected void btnAdd_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
PageContext.RegisterStartupScript(Window1.GetShowReference($"DivisionSubProjectsEdit.aspx?DivisionId=&ParentId=", "新增"));
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 添加子级
|
|||
|
/// </summary>
|
|||
|
protected void btnParentAdd_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (Grid1.SelectedRowIndexArray.Length == 0)
|
|||
|
{
|
|||
|
ShowNotify("请选择一条数据!", MessageBoxIcon.Warning);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
var rowIndex = Grid1.SelectedRowIndex;
|
|||
|
var rowId = Grid1.DataKeys[rowIndex][0].ToString();
|
|||
|
var runLevel = Grid1.DataKeys[rowIndex][2] != null ? Convert.ToInt32(Grid1.DataKeys[rowIndex][2]) : 1;
|
|||
|
if (runLevel > 5)
|
|||
|
{
|
|||
|
ShowNotify("最小节点无子节点!", MessageBoxIcon.Warning);
|
|||
|
return;
|
|||
|
}
|
|||
|
PageContext.RegisterStartupScript(Window1.GetShowReference($"DivisionSubProjectsEdit.aspx?RunId=&ParentId={rowId}", "添加子级"));
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 编辑
|
|||
|
/// </summary>
|
|||
|
protected void btnEdit_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
if (Grid1.SelectedRowIndexArray.Length == 0)
|
|||
|
{
|
|||
|
ShowNotify("请选择一条数据!", MessageBoxIcon.Warning);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
var rowIndex = Grid1.SelectedRowIndex;
|
|||
|
var rowId = Grid1.DataKeys[rowIndex][0].ToString();
|
|||
|
var parentId = Grid1.DataKeys[rowIndex][1] != null ? Grid1.DataKeys[rowIndex][1].ToString() : string.Empty;
|
|||
|
PageContext.RegisterStartupScript(Window1.GetShowReference($"DivisionSubProjectsEdit.aspx?RunId={rowId}&ParentId={parentId}", "编辑"));
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 关闭
|
|||
|
/// </summary>
|
|||
|
protected void Window1_Close(object sender, WindowCloseEventArgs e)
|
|||
|
{
|
|||
|
DataBrid();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 导入
|
|||
|
/// </summary>
|
|||
|
protected void btnImport_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
if (this.fileData.HasFile == false)
|
|||
|
{
|
|||
|
ShowNotify("请选择excel文件!", MessageBoxIcon.Warning);
|
|||
|
return;
|
|||
|
}
|
|||
|
string IsXls = Path.GetExtension(this.fileData.FileName).ToString().Trim().ToLower();
|
|||
|
if (IsXls != ".xls" && IsXls != ".xlsx")
|
|||
|
{
|
|||
|
this.fileData.Reset();
|
|||
|
ShowNotify("excel文件类型错误!", MessageBoxIcon.Warning);
|
|||
|
return;
|
|||
|
}
|
|||
|
string rootPath = Server.MapPath("~/");
|
|||
|
string initFullPath = rootPath + Const.ExcelUrl;
|
|||
|
if (!Directory.Exists(initFullPath))
|
|||
|
{
|
|||
|
Directory.CreateDirectory(initFullPath);
|
|||
|
}
|
|||
|
//指定上传文件名称
|
|||
|
string fileUrl = BLL.Funs.GetNewFileName() + IsXls;
|
|||
|
//上传文件路径
|
|||
|
string filePath = initFullPath + fileUrl;
|
|||
|
//文件上传服务器
|
|||
|
this.fileData.PostedFile.SaveAs(filePath);
|
|||
|
//文件上传服务器后的名称
|
|||
|
string fileName = rootPath + Const.ExcelUrl + fileUrl;
|
|||
|
//读取Excel
|
|||
|
DataSet ds = NPOIHelper.ExcelToDataSet(fileName, out string message, false);
|
|||
|
if (ds == null)
|
|||
|
{
|
|||
|
this.fileData.Reset();
|
|||
|
ShowNotify("模板错误,请从系统下载正确的模板!", MessageBoxIcon.Warning);
|
|||
|
return;
|
|||
|
}
|
|||
|
if (!string.IsNullOrWhiteSpace(message))
|
|||
|
{
|
|||
|
ShowNotify(message, MessageBoxIcon.Warning);
|
|||
|
return;
|
|||
|
}
|
|||
|
if (ds.Tables[0].Rows.Count > 1)
|
|||
|
{
|
|||
|
var fileVerify = VerifyFile(ds);
|
|||
|
if (!fileVerify)
|
|||
|
{
|
|||
|
this.fileData.Reset();
|
|||
|
ShowNotify("请获取正确模板!", MessageBoxIcon.Warning);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
int index = 1;
|
|||
|
List<DivisionSubProjectsDto> list = new List<DivisionSubProjectsDto>();
|
|||
|
DivisionSubProjectsDto previousModel = new DivisionSubProjectsDto();
|
|||
|
foreach (DataRow item in ds.Tables[0].Rows)
|
|||
|
{
|
|||
|
DivisionSubProjectsDto model = new DivisionSubProjectsDto();
|
|||
|
if (index == 1)
|
|||
|
{
|
|||
|
index++;
|
|||
|
continue;
|
|||
|
}
|
|||
|
if (StrIsNumm(item[10]))
|
|||
|
{
|
|||
|
this.fileData.Reset();
|
|||
|
ShowNotify($"{index}级别为空!", MessageBoxIcon.Warning);
|
|||
|
break;
|
|||
|
}
|
|||
|
|
|||
|
previousModel.Level = int.Parse(item[10].ToString());
|
|||
|
previousModel.EngineeringCode = item[0].ToString();
|
|||
|
previousModel.EngineeringName = item[1].ToString();
|
|||
|
previousModel.SubEngineeringCode = item[2].ToString();
|
|||
|
previousModel.SubEngineeringName = item[3].ToString();
|
|||
|
previousModel.BranchEngineeringCode = item[4].ToString();
|
|||
|
previousModel.BranchEngineeringName = item[5].ToString();
|
|||
|
previousModel.SubBranchEngineeringName = item[6].ToString();
|
|||
|
previousModel.ProEngineeringCode = item[7].ToString();
|
|||
|
previousModel.ProEngineeringName = item[8].ToString();
|
|||
|
previousModel.ProEngineeringNum = item[9].ToString();
|
|||
|
previousModel.ParentId = "";
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
////判断是否为装置
|
|||
|
//if (!StrIsNumm(item[0]) && !StrIsNumm(item[1]) && StrIsNumm(item[2]) && StrIsNumm(item[3]) && StrIsNumm(item[4]) && StrIsNumm(item[5]) && StrIsNumm(item[6]) && StrIsNumm(item[7]))
|
|||
|
//{
|
|||
|
// model.InstallationCode = item[0].ToString();
|
|||
|
// model.InstallationName = item[1].ToString();
|
|||
|
// model.Level = 1;
|
|||
|
//}
|
|||
|
////判断是否为工序
|
|||
|
//else if (!StrIsNumm(item[0]) && !StrIsNumm(item[1]) && !StrIsNumm(item[2]) && !StrIsNumm(item[3]) && StrIsNumm(item[4]) && StrIsNumm(item[5]) && StrIsNumm(item[6]) && StrIsNumm(item[7]))
|
|||
|
//{
|
|||
|
// model.InstallationCode = item[0].ToString();
|
|||
|
// model.InstallationName = item[1].ToString();
|
|||
|
// model.ProcessesCode = item[2].ToString();
|
|||
|
// model.ProcessesName = item[3].ToString();
|
|||
|
// model.Level = 2;
|
|||
|
//}
|
|||
|
////判断是否为系统
|
|||
|
//else if (!StrIsNumm(item[0]) && !StrIsNumm(item[1]) && !StrIsNumm(item[2]) && !StrIsNumm(item[3]) && !StrIsNumm(item[4]) && !StrIsNumm(item[5]) && StrIsNumm(item[6]) && StrIsNumm(item[7]))
|
|||
|
//{
|
|||
|
// model.InstallationCode = item[0].ToString();
|
|||
|
// model.InstallationName = item[1].ToString();
|
|||
|
// model.ProcessesCode = item[2].ToString();
|
|||
|
// model.ProcessesName = item[3].ToString();
|
|||
|
// model.SystemCode = item[4].ToString();
|
|||
|
// model.SystemName = item[5].ToString();
|
|||
|
// model.Level = 3;
|
|||
|
//}
|
|||
|
////判断是否为子系统
|
|||
|
//else if (!StrIsNumm(item[0]) && !StrIsNumm(item[1]) && !StrIsNumm(item[2]) && !StrIsNumm(item[3]) && !StrIsNumm(item[4]) && !StrIsNumm(item[5]) && !StrIsNumm(item[6]) && !StrIsNumm(item[7]))
|
|||
|
//{
|
|||
|
// model.InstallationCode = item[0].ToString();
|
|||
|
// model.InstallationName = item[1].ToString();
|
|||
|
// model.ProcessesCode = item[2].ToString();
|
|||
|
// model.ProcessesName = item[3].ToString();
|
|||
|
// model.SystemCode = item[4].ToString();
|
|||
|
// model.SystemName = item[5].ToString();
|
|||
|
// model.SubsystemCode = item[6].ToString();
|
|||
|
// model.SubsystemName = item[7].ToString();
|
|||
|
// model.Level = 4;
|
|||
|
//}
|
|||
|
//else
|
|||
|
//{
|
|||
|
// this.fileData.Reset();
|
|||
|
// ShowNotify($"{index}行数据存在错误,数据格式具体见模板说明为空!", MessageBoxIcon.Warning);
|
|||
|
// break;
|
|||
|
//}
|
|||
|
list.Add(model);
|
|||
|
index++;
|
|||
|
previousModel = new DivisionSubProjectsDto();
|
|||
|
}
|
|||
|
|
|||
|
#region 数据验证
|
|||
|
|
|||
|
////验证装置编码
|
|||
|
//if (list.Count(x => x.Level == 1) > 0)
|
|||
|
//{
|
|||
|
// var installationCodes = list.Where(x => x.Level == 1).Select(a => a.InstallationCode);
|
|||
|
// var importCodes = installationCodes.GroupBy(x => x).Where(x => x.Count() > 1).Select(x => x.Key).ToList();
|
|||
|
// if (importCodes.Count > 0)
|
|||
|
// {
|
|||
|
// this.fileData.Reset();
|
|||
|
// ShowNotify($"EXCEL中装置编码{string.Join(",", importCodes)}重复,请调整模板数据!", MessageBoxIcon.Warning);
|
|||
|
// return;
|
|||
|
// }
|
|||
|
// installationCodes = installationCodes.Distinct();
|
|||
|
// if (installationCodes.Count() > 0)
|
|||
|
// {
|
|||
|
// var existInstallations = Funs.DB.PreRun_SysDevice.Where(a => installationCodes.Contains(a.PreRunCode) && a.PreRunLevel == 1 && a.ProjectId == this.CurrUser.LoginProjectId).ToList();
|
|||
|
// if (existInstallations.Count > 0)
|
|||
|
// {
|
|||
|
// this.fileData.Reset();
|
|||
|
// ShowNotify($"装置编码({string.Join(",", existInstallations.ConvertAll(s => s.PreRunCode))})已存在!", MessageBoxIcon.Warning);
|
|||
|
// return;
|
|||
|
// }
|
|||
|
// }
|
|||
|
|
|||
|
//}
|
|||
|
////验证工序编码
|
|||
|
//if (list.Count(x => x.Level == 2) > 0)
|
|||
|
//{
|
|||
|
// var processesCodes = list.Where(x => x.Level == 2).Select(a => a.ProcessesCode);
|
|||
|
// var importCodes = processesCodes.GroupBy(x => x).Where(x => x.Count() > 1).Select(x => x.Key).ToList();
|
|||
|
// if (importCodes.Count > 0)
|
|||
|
// {
|
|||
|
// this.fileData.Reset();
|
|||
|
// ShowNotify($"EXCEL中工序编码{string.Join(",", importCodes)}重复,请调整模板数据!", MessageBoxIcon.Warning);
|
|||
|
// return;
|
|||
|
// }
|
|||
|
// processesCodes = processesCodes.Distinct();
|
|||
|
// if (processesCodes.Count() > 0)
|
|||
|
// {
|
|||
|
// var existProcessess = Funs.DB.PreRun_SysDevice.Where(a => processesCodes.Contains(a.PreRunCode) && a.PreRunLevel == 2 && a.ProjectId == this.CurrUser.LoginProjectId).ToList();
|
|||
|
// if (existProcessess.Count > 0)
|
|||
|
// {
|
|||
|
// this.fileData.Reset();
|
|||
|
// ShowNotify($"工序编码({string.Join(",", existProcessess.ConvertAll(s => s.PreRunCode))})已存在!", MessageBoxIcon.Warning);
|
|||
|
// return;
|
|||
|
// }
|
|||
|
// }
|
|||
|
//}
|
|||
|
////验证系统编码
|
|||
|
//if (list.Count(x => x.Level == 3) > 0)
|
|||
|
//{
|
|||
|
// var systemCodes = list.Where(x => x.Level == 3).Select(a => a.SystemCode);
|
|||
|
// var importCodes = systemCodes.GroupBy(x => x).Where(x => x.Count() > 1).Select(x => x.Key).ToList();
|
|||
|
// if (importCodes.Count > 0)
|
|||
|
// {
|
|||
|
// this.fileData.Reset();
|
|||
|
// ShowNotify($"EXCEL中系统编码{string.Join(",", importCodes)}重复,请调整模板数据!", MessageBoxIcon.Warning);
|
|||
|
// return;
|
|||
|
// }
|
|||
|
// systemCodes = systemCodes.Distinct().ToList();
|
|||
|
// if (systemCodes.Count() > 0)
|
|||
|
// {
|
|||
|
// var existSystems = Funs.DB.PreRun_SysDevice.Where(a => systemCodes.Contains(a.PreRunCode) && a.PreRunLevel == 3 && a.ProjectId == this.CurrUser.LoginProjectId).ToList();
|
|||
|
// if (existSystems.Count > 0)
|
|||
|
// {
|
|||
|
// this.fileData.Reset();
|
|||
|
// ShowNotify($"系统编码({string.Join(",", existSystems.ConvertAll(s => s.PreRunCode))})已存在!", MessageBoxIcon.Warning);
|
|||
|
// return;
|
|||
|
// }
|
|||
|
// }
|
|||
|
//}
|
|||
|
////验证子系统编码
|
|||
|
//if (list.Count(x => x.Level == 4) > 0)
|
|||
|
//{
|
|||
|
// var subsystemCodes = list.Where(x => x.Level == 4).Select(a => a.SubsystemCode);
|
|||
|
// var importCodes = subsystemCodes.GroupBy(x => x).Where(x => x.Count() > 1).Select(x => x.Key).ToList();
|
|||
|
// if (importCodes.Count > 0)
|
|||
|
// {
|
|||
|
// this.fileData.Reset();
|
|||
|
// ShowNotify($"EXCEL中子系统编码{string.Join(",", importCodes)}重复,请调整模板数据!", MessageBoxIcon.Warning);
|
|||
|
// return;
|
|||
|
// }
|
|||
|
// subsystemCodes = subsystemCodes.Distinct().ToList();
|
|||
|
// if (subsystemCodes.Count() > 0)
|
|||
|
// {
|
|||
|
// var existSubsystems = Funs.DB.PreRun_SysDevice.Where(a => subsystemCodes.Contains(a.PreRunCode) && a.PreRunLevel == 4 && a.ProjectId == this.CurrUser.LoginProjectId).ToList();
|
|||
|
// if (existSubsystems.Count > 0)
|
|||
|
// {
|
|||
|
// this.fileData.Reset();
|
|||
|
// ShowNotify($"子系统编码({string.Join(",", existSubsystems.ConvertAll(s => s.PreRunCode))})已存在!", MessageBoxIcon.Warning);
|
|||
|
// return;
|
|||
|
// }
|
|||
|
// }
|
|||
|
//}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 数据处理
|
|||
|
|
|||
|
//var installationData = new List<PreRun_SysDevice>();
|
|||
|
//var processesData = new List<PreRun_SysDevice>();
|
|||
|
//var systemData = new List<PreRun_SysDevice>();
|
|||
|
|
|||
|
////处理装置
|
|||
|
//if (list.Count(x => x.Level == 1) > 0)
|
|||
|
//{
|
|||
|
// list.Where(x => x.Level == 1).ToList().ForEach(a =>
|
|||
|
// {
|
|||
|
// a.InstallationId = Guid.NewGuid().ToString();
|
|||
|
// });
|
|||
|
//}
|
|||
|
////处理工序
|
|||
|
//if (list.Count(x => x.Level == 2) > 0)
|
|||
|
//{
|
|||
|
// var codes = list.ConvertAll(a => a.InstallationCode).Distinct();
|
|||
|
// installationData = Funs.DB.PreRun_SysDevice.Where(x => x.PreRunLevel == 1 && codes.Contains(x.PreRunCode)).ToList();
|
|||
|
// list.Where(x => x.Level == 2).ToList().ForEach(a =>
|
|||
|
// {
|
|||
|
// //装置
|
|||
|
// if (list.Count(p => p.InstallationCode == a.InstallationCode && p.Level == 1) > 0)
|
|||
|
// {
|
|||
|
// a.InstallationId = list.FirstOrDefault(p => p.InstallationCode == a.InstallationCode && p.Level == 1).InstallationId;
|
|||
|
// }
|
|||
|
// else if (installationData.Count(p => p.PreRunCode == a.InstallationCode) > 0)
|
|||
|
// {
|
|||
|
// a.InstallationId = installationData.FirstOrDefault(p => p.PreRunCode == a.InstallationCode).PreRunId;
|
|||
|
// }
|
|||
|
// //上级编码
|
|||
|
// a.ParentId = a.InstallationId;
|
|||
|
// //工序
|
|||
|
// a.ProcessesId = Guid.NewGuid().ToString();
|
|||
|
// });
|
|||
|
//}
|
|||
|
////处理系统
|
|||
|
//if (list.Count(x => x.Level == 3) > 0)
|
|||
|
//{
|
|||
|
// var codes = list.ConvertAll(a => a.ProcessesCode).Distinct();
|
|||
|
// processesData = Funs.DB.PreRun_SysDevice.Where(x => x.PreRunLevel == 2 && codes.Contains(x.PreRunCode)).ToList();
|
|||
|
// list.Where(x => x.Level == 3).ToList().ForEach(a =>
|
|||
|
// {
|
|||
|
// //装置
|
|||
|
// if (list.Count(p => p.InstallationCode == a.InstallationCode && p.Level == 1) > 0)
|
|||
|
// {
|
|||
|
// a.InstallationId = list.FirstOrDefault(p => p.InstallationCode == a.InstallationCode && p.Level == 1).InstallationId;
|
|||
|
// }
|
|||
|
// else if (installationData.Count(p => p.PreRunCode == a.InstallationCode) > 0)
|
|||
|
// {
|
|||
|
// a.InstallationId = installationData.FirstOrDefault(p => p.PreRunCode == a.InstallationCode).PreRunId;
|
|||
|
// }
|
|||
|
// //工序
|
|||
|
// if (list.Count(p => p.ProcessesCode == a.ProcessesCode && p.Level == 2) > 0)
|
|||
|
// {
|
|||
|
// a.ProcessesId = list.FirstOrDefault(p => p.ProcessesCode == a.ProcessesCode && p.Level == 2).ProcessesId;
|
|||
|
// }
|
|||
|
// else if (processesData.Count(p => p.PreRunCode == a.ProcessesCode) > 0)
|
|||
|
// {
|
|||
|
// a.ProcessesId = processesData.FirstOrDefault(p => p.PreRunCode == a.ProcessesCode).PreRunId;
|
|||
|
// }
|
|||
|
// //上级编码
|
|||
|
// a.ParentId = a.ProcessesId;
|
|||
|
// //系统
|
|||
|
// a.SystemId = Guid.NewGuid().ToString();
|
|||
|
// });
|
|||
|
//}
|
|||
|
////处理子系统
|
|||
|
//if (list.Count(x => x.Level == 4) > 0)
|
|||
|
//{
|
|||
|
// var codes = list.ConvertAll(a => a.SystemCode).Distinct();
|
|||
|
// systemData = Funs.DB.PreRun_SysDevice.Where(x => x.PreRunLevel == 3 && codes.Contains(x.PreRunCode)).ToList();
|
|||
|
// list.Where(x => x.Level == 4).ToList().ForEach(a =>
|
|||
|
// {
|
|||
|
// //装置
|
|||
|
// if (list.Count(p => p.InstallationCode == a.InstallationCode && p.Level == 1) > 0)
|
|||
|
// {
|
|||
|
// a.InstallationId = list.FirstOrDefault(p => p.InstallationCode == a.InstallationCode && p.Level == 1).InstallationId;
|
|||
|
// }
|
|||
|
// else if (installationData.Count(p => p.PreRunCode == a.InstallationCode) > 0)
|
|||
|
// {
|
|||
|
// a.InstallationId = installationData.FirstOrDefault(p => p.PreRunCode == a.InstallationCode).PreRunId;
|
|||
|
// }
|
|||
|
// //工序
|
|||
|
// if (list.Count(p => p.ProcessesCode == a.ProcessesCode && p.Level == 2) > 0)
|
|||
|
// {
|
|||
|
// a.ProcessesId = list.FirstOrDefault(p => p.ProcessesCode == a.ProcessesCode && p.Level == 2).ProcessesId;
|
|||
|
// }
|
|||
|
// else if (processesData.Count(p => p.PreRunCode == a.ProcessesCode) > 0)
|
|||
|
// {
|
|||
|
// a.ProcessesId = processesData.FirstOrDefault(p => p.PreRunCode == a.ProcessesCode).PreRunId;
|
|||
|
// }
|
|||
|
// //系统
|
|||
|
// if (list.Count(p => p.SystemCode == a.SystemCode && p.Level == 3) > 0)
|
|||
|
// {
|
|||
|
// a.SystemId = list.FirstOrDefault(p => p.SystemCode == a.SystemCode && p.Level == 3).SystemId;
|
|||
|
// }
|
|||
|
// else if (systemData.Count(p => p.PreRunCode == a.SystemCode) > 0)
|
|||
|
// {
|
|||
|
// a.SystemId = systemData.FirstOrDefault(p => p.PreRunCode == a.SystemCode).PreRunId;
|
|||
|
// }
|
|||
|
// //上级编码
|
|||
|
// a.ParentId = a.SystemId;
|
|||
|
// //子系统
|
|||
|
// a.SubsystemId = Guid.NewGuid().ToString();
|
|||
|
// });
|
|||
|
//}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 数据入库
|
|||
|
|
|||
|
//var listData = new List<PreRun_SysDevice>();
|
|||
|
//int oneIndex = 1;
|
|||
|
//int twoIndex = 1;
|
|||
|
//int threeIndex = 1;
|
|||
|
//int fourIndex = 1;
|
|||
|
//foreach (var itemData in list)
|
|||
|
//{
|
|||
|
// var model = new PreRun_SysDevice();
|
|||
|
// model.ProjectId = this.CurrUser.LoginProjectId;
|
|||
|
// model.PreRunLevel = itemData.Level;
|
|||
|
// if (itemData.Level == 1)
|
|||
|
// {
|
|||
|
// model.PreRunId = itemData.InstallationId;
|
|||
|
// model.PreRunCode = itemData.InstallationCode;
|
|||
|
// model.PreRunName = itemData.InstallationName;
|
|||
|
// model.ParentId = itemData.ParentId;
|
|||
|
// model.AddUser = CurrUser.Account;
|
|||
|
// model.OperateTime = DateTime.Now;
|
|||
|
// model.Sort = Funs.DB.PreRun_SysDevice.Count(p => p.ProjectId == CurrUser.LoginProjectId) + oneIndex;
|
|||
|
// oneIndex++;
|
|||
|
// }
|
|||
|
// if (itemData.Level == 2)
|
|||
|
// {
|
|||
|
// model.PreRunId = itemData.ProcessesId;
|
|||
|
// model.ProcessesId = itemData.ProcessesId;
|
|||
|
// model.PreRunCode = itemData.ProcessesCode;
|
|||
|
// model.PreRunName = itemData.ProcessesName;
|
|||
|
// model.InstallationId = itemData.InstallationId;
|
|||
|
// model.ParentId = itemData.ParentId;
|
|||
|
// model.AddUser = CurrUser.Account;
|
|||
|
// model.OperateTime = DateTime.Now;
|
|||
|
// model.Sort = Funs.DB.PreRun_SysDevice.Count(p => p.ProjectId == CurrUser.LoginProjectId) + twoIndex;
|
|||
|
// twoIndex++;
|
|||
|
// }
|
|||
|
// if (itemData.Level == 3)
|
|||
|
// {
|
|||
|
// model.PreRunId = itemData.SystemId;
|
|||
|
// model.SystemId = itemData.SystemId;
|
|||
|
// model.PreRunCode = itemData.SystemCode;
|
|||
|
// model.PreRunName = itemData.SystemName;
|
|||
|
// model.InstallationId = itemData.InstallationId;
|
|||
|
// model.ProcessesId = itemData.ProcessesId;
|
|||
|
// model.ParentId = itemData.ParentId;
|
|||
|
// model.AddUser = CurrUser.Account;
|
|||
|
// model.OperateTime = DateTime.Now;
|
|||
|
// model.Sort = Funs.DB.PreRun_SysDevice.Count(p => p.ProjectId == CurrUser.LoginProjectId) + threeIndex;
|
|||
|
// threeIndex++;
|
|||
|
// }
|
|||
|
// if (itemData.Level == 4)
|
|||
|
// {
|
|||
|
// model.PreRunId = itemData.SubsystemId;
|
|||
|
// model.SubsystemId = itemData.SubsystemId;
|
|||
|
// model.PreRunCode = itemData.SubsystemCode;
|
|||
|
// model.PreRunName = itemData.SubsystemName;
|
|||
|
// model.InstallationId = itemData.InstallationId;
|
|||
|
// model.ProcessesId = itemData.ProcessesId;
|
|||
|
// model.SystemId = itemData.SystemId;
|
|||
|
// model.ParentId = itemData.ParentId;
|
|||
|
// model.AddUser = CurrUser.Account;
|
|||
|
// model.OperateTime = DateTime.Now;
|
|||
|
// model.Sort = Funs.DB.PreRun_SysDevice.Count(p => p.ProjectId == CurrUser.LoginProjectId) + fourIndex;
|
|||
|
// fourIndex++;
|
|||
|
// }
|
|||
|
// listData.Add(model);
|
|||
|
//}
|
|||
|
|
|||
|
//Funs.DB.PreRun_SysDevice.InsertAllOnSubmit(listData);
|
|||
|
//Funs.DB.SubmitChanges();
|
|||
|
//ShowNotify("导入成功!", MessageBoxIcon.Success);
|
|||
|
|
|||
|
#endregion
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
this.fileData.Reset();
|
|||
|
ShowNotify("文件无数据!", MessageBoxIcon.Warning);
|
|||
|
}
|
|||
|
DataBrid();
|
|||
|
this.fileData.Reset();
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
this.fileData.Reset();
|
|||
|
ShowNotify(ex.Message, MessageBoxIcon.Warning);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 下载模板
|
|||
|
/// </summary>
|
|||
|
protected void btnDownLoad_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
PageContext.RegisterStartupScript(Confirm.GetShowReference("是否确认下载模板?", String.Empty, MessageBoxIcon.Question, PageManager1.GetCustomEventReference(false, "Confirm_OK"), PageManager1.GetCustomEventReference("Confirm_Cancel")));
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 下载导入模板
|
|||
|
/// </summary>
|
|||
|
protected void PageManager1_CustomEvent(object sender, CustomEventArgs e)
|
|||
|
{
|
|||
|
if (e.EventArgument == "Confirm_OK")
|
|||
|
{
|
|||
|
string rootPath = Server.MapPath("~/");
|
|||
|
string uploadfilepath = rootPath + Const.WBSDivisionUrl;
|
|||
|
string filePath = Const.WBSDivisionUrl;
|
|||
|
string fileName = Path.GetFileName(filePath);
|
|||
|
FileInfo info = new FileInfo(uploadfilepath);
|
|||
|
long fileSize = info.Length;
|
|||
|
Response.ClearContent();
|
|||
|
Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
|
|||
|
Response.ContentType = "excel/plain";
|
|||
|
Response.ContentEncoding = System.Text.Encoding.UTF8;
|
|||
|
Response.AddHeader("Content-Length", fileSize.ToString().Trim());
|
|||
|
Response.TransmitFile(uploadfilepath, 0, fileSize);
|
|||
|
Response.End();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 右击修改
|
|||
|
/// </summary>
|
|||
|
protected void btnMenuModify_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
btnEdit_Click(sender, e);
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 右击新增子级别
|
|||
|
/// </summary>
|
|||
|
protected void btnMenuParentAdd_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
btnParentAdd_Click(sender, e);
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 私有方法
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 根据行ID来删除行数据
|
|||
|
/// </summary>
|
|||
|
private void DeleteRowByIDInternal(string rowID)
|
|||
|
{
|
|||
|
var model = Funs.DB.Division_SubProjects.FirstOrDefault(p => p.DivisionId == rowID);
|
|||
|
if (model != null)
|
|||
|
{
|
|||
|
Funs.DB.Division_SubProjects.DeleteOnSubmit(model);
|
|||
|
GetDevice(rowID);
|
|||
|
}
|
|||
|
Funs.DB.SubmitChanges();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 删除
|
|||
|
/// </summary>
|
|||
|
private void GetDevice(string id)
|
|||
|
{
|
|||
|
var model = Funs.DB.Division_SubProjects.FirstOrDefault(p => p.ParentId == id);
|
|||
|
if (model != null)
|
|||
|
{
|
|||
|
Funs.DB.Division_SubProjects.DeleteOnSubmit(model);
|
|||
|
GetDevice(model.DivisionId);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 验证单位分部分项工程划分模板是否正确
|
|||
|
/// </summary>
|
|||
|
/// <param name="ds"></param>
|
|||
|
/// <returns></returns>
|
|||
|
private bool VerifyFile(DataSet ds)
|
|||
|
{
|
|||
|
var result = true;
|
|||
|
if (ds.Tables[0].Rows[1][0].ToString().Contains("单位工程名称")) result = false;
|
|||
|
if (ds.Tables[0].Rows[1][1].ToString().Contains("子单位工程编码")) result = false;
|
|||
|
if (ds.Tables[0].Rows[1][2].ToString().Contains("子单位工程名称")) result = false;
|
|||
|
if (ds.Tables[0].Rows[1][3].ToString().Contains("分部工程编号")) result = false;
|
|||
|
if (ds.Tables[0].Rows[1][4].ToString().Contains("分部工程名称")) result = false;
|
|||
|
if (ds.Tables[0].Rows[1][5].ToString().Contains("子分部工程名称")) result = false;
|
|||
|
if (ds.Tables[0].Rows[1][6].ToString().Contains("分项工程编号")) result = false;
|
|||
|
if (ds.Tables[0].Rows[1][7].ToString().Contains("分项工程名称")) result = false;
|
|||
|
if (ds.Tables[0].Rows[1][7].ToString().Contains("分部分项码")) result = false;
|
|||
|
if (ds.Tables[0].Rows[1][7].ToString().Contains("级别")) result = false;
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 验证datatable某列是否存在重复
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
public bool HasRepeatData(DataTable dt, string[] colName)
|
|||
|
{
|
|||
|
bool flag = false;
|
|||
|
DataView myDataView = new DataView(dt);
|
|||
|
if (myDataView.ToTable(true, colName).Rows.Count < dt.Rows.Count)
|
|||
|
{
|
|||
|
flag = true;
|
|||
|
}
|
|||
|
return flag;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 获取某一列的所有值
|
|||
|
/// </summary>
|
|||
|
/// <typeparam name="T">列数据类型</typeparam>
|
|||
|
/// <param name="dtSource">数据表</param>
|
|||
|
/// <param name="filedName">列名</param>
|
|||
|
/// <returns></returns>
|
|||
|
public static List<T> GetColumnValues<T>(DataTable dtSource, string filedName)
|
|||
|
{
|
|||
|
return (from r in dtSource.AsEnumerable() select r.Field<T>(filedName)).ToList<T>();
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 判断是否为空
|
|||
|
/// </summary>
|
|||
|
/// <returns></returns>
|
|||
|
public bool StrIsNumm(object value)
|
|||
|
{
|
|||
|
bool result = false;
|
|||
|
if (value == null) result = true;
|
|||
|
if (string.IsNullOrWhiteSpace(value.ToString())) result = true;
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 单位分部分项工程划分信息
|
|||
|
/// </summary>
|
|||
|
public class DivisionSubProjectsDto
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 上级主键
|
|||
|
/// </summary>
|
|||
|
public string ParentId { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 级别
|
|||
|
/// </summary>
|
|||
|
public int Level { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 单位工程编码
|
|||
|
/// </summary>
|
|||
|
public string EngineeringCode { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 单位工程名称
|
|||
|
/// </summary>
|
|||
|
public string EngineeringName { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 子单位工程编码
|
|||
|
/// </summary>
|
|||
|
public string SubEngineeringCode { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 子单位工程名称
|
|||
|
/// </summary>
|
|||
|
public string SubEngineeringName { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 分部工程编号
|
|||
|
/// </summary>
|
|||
|
public string BranchEngineeringCode { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 分部工程名称
|
|||
|
/// </summary>
|
|||
|
public string BranchEngineeringName { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 子分部工程名称
|
|||
|
/// </summary>
|
|||
|
public string SubBranchEngineeringName { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 分项工程编号
|
|||
|
/// </summary>
|
|||
|
public string ProEngineeringCode { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 分项工程名称
|
|||
|
/// </summary>
|
|||
|
public string ProEngineeringName { get; set; }
|
|||
|
/// <summary>
|
|||
|
/// 分部分项码
|
|||
|
/// </summary>
|
|||
|
public string ProEngineeringNum { get; set; }
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
}
|
|||
|
}
|