CNCEC_SUBQHSE_WUHUAN/SGGL/FineUIPro.Web/TestRun/BeforeTestRun/DeviceRun.aspx.cs

751 lines
34 KiB
C#

using BLL;
using Model;
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;
namespace FineUIPro.Web.TestRun.BeforeTestRun
{
public partial class DeviceRun : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataBrid();
}
}
#region
/// <summary>
/// 数据绑定
/// </summary>
public void DataBrid()
{
string strSql = @"select a.PreRunId,a.PreRunCode,a.PreRunName,b.ProjectId,b.ProjectName,a.PreRunLevel,
(case a.PreRunLevel when 1 then '装置' when 2 then '工序' when 3 then 'S系统' when 4 then 'SS子系统' else '' end) as RunLevelName,
a.ParentId,a.Remark,a.OperateTime,a.Sort
from PreRun_SysDevice as a
inner join Base_Project as b on a.ProjectId=b.ProjectId where a.ProjectId=@ProjectId order by a.Sort,a.PreRunLevel asc";
List<SqlParameter> listStr = new List<SqlParameter>();
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
if (!string.IsNullOrEmpty(sRunName.Text.Trim()))
{
strSql += " and a.PreRunName=@PreRunName";
listStr.Add(new SqlParameter("@PreRunName", this.sRunName.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($"DeviceRunEdit.aspx?RunId=&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 > 3)
{
ShowNotify("最小节点无子节点!", MessageBoxIcon.Warning);
return;
}
PageContext.RegisterStartupScript(Window1.GetShowReference($"DeviceRunEdit.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($"DeviceRunEdit.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")
{
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)
{
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)
{
ShowNotify("请获取正确模板!", MessageBoxIcon.Warning);
return;
}
int index = 1;
List<SysDeviceDto> list = new List<SysDeviceDto>();
foreach (DataRow item in ds.Tables[0].Rows)
{
SysDeviceDto model = new SysDeviceDto();
if (index == 1)
{
index++;
continue;
}
if (StrIsNumm(item[0]) || StrIsNumm(item[1]))
{
ShowNotify($"{index}行装置编码或名称为空!", MessageBoxIcon.Warning);
break;
}
//判断是否为装置
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
{
ShowNotify($"{index}行数据存在错误,数据格式具体见模板说明为空!", MessageBoxIcon.Warning);
break;
}
list.Add(model);
index++;
}
#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)
{
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)
{
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)
{
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)
{
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)
{
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)
{
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)
{
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)
{
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
{
ShowNotify("文件无数据!", MessageBoxIcon.Warning);
}
DataBrid();
}
catch (Exception ex)
{
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.PreRunUrl;
string filePath = Const.PreRunUrl;
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();
}
}
#endregion
#region
/// <summary>
/// 根据行ID来删除行数据
/// </summary>
private void DeleteRowByIDInternal(string rowID)
{
var model = Funs.DB.PreRun_SysDevice.FirstOrDefault(p => p.PreRunId == rowID);
if (model != null)
{
Funs.DB.PreRun_SysDevice.DeleteOnSubmit(model);
GetDevice(rowID);
}
Funs.DB.SubmitChanges();
}
/// <summary>
/// 删除
/// </summary>
private void GetDevice(string id)
{
var model = Funs.DB.PreRun_SysDevice.FirstOrDefault(p => p.ParentId == id);
if (model != null)
{
Funs.DB.PreRun_SysDevice.DeleteOnSubmit(model);
GetDevice(model.PreRunId);
}
}
/// <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;
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 SysDeviceDto
{
/// <summary>
/// 上级主键
/// </summary>
public string ParentId { get; set; }
/// <summary>
/// 主键编码
/// </summary>
public string InstallationId { get; set; }
/// <summary>
/// 装置编码
/// </summary>
public string InstallationCode { get; set; }
/// <summary>
/// 装置名称
/// </summary>
public string InstallationName { get; set; }
/// <summary>
/// 工序主键
/// </summary>
public string ProcessesId { get; set; }
/// <summary>
/// 工序编码
/// </summary>
public string ProcessesCode { get; set; }
/// <summary>
/// 工序名称
/// </summary>
public string ProcessesName { get; set; }
/// <summary>
/// 系统主键
/// </summary>
public string SystemId { get; set; }
/// <summary>
/// 系统编码
/// </summary>
public string SystemCode { get; set; }
/// <summary>
/// 系统名称
/// </summary>
public string SystemName { get; set; }
/// <summary>
/// 子系统主键
/// </summary>
public string SubsystemId { get; set; }
/// <summary>
/// 子系统编码
/// </summary>
public string SubsystemCode { get; set; }
/// <summary>
/// 子系统名称
/// </summary>
public string SubsystemName { get; set; }
/// <summary>
/// 级别1:装置 2:工序 3:系统 4:子系统
/// </summary>
public int Level { get; set; }
}
#endregion
}
}