using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CoreFS.CA06;
using System.Data;
using Infragistics.Win.UltraWinGrid;
using Core.Mes.Client.Comm;
using System.Windows.Forms;
using Infragistics.Win.UltraWinEditors;
using System.Collections;
using Core.Mes.Client.Comm.Control;
using Core.Mes.Client.Comm.Server;
using Core.Mes.Client.Comm.Tool;
namespace Core.StlMes.Client.Lims.Resource
{
///
/// 自定义公共方法类
///
class PublicResource
{
//状态位
//CHECKCONSIGN_BASEINFO 0委托单位未取样,1委托单位正在送样,2加工已确认
//CHECKCONSIGN_DETAIL '0', '未下发', '1', '加工已下发', '2', '试验室已确认', '3', '试验室已录入', '4', '试验室已审核'
public const string chemMax = "ANA_C ANA_SI ANA_MN ANA_P ANA_S ANA_NI ANA_CR ANA_MO ANA_CU ANA_AL ANA_ALS ANA_CA ANA_V ANA_NB ANA_TI ANA_O ANA_N ANA_H ANA_ZN ANA_B ANA_ZR ANA_W ANA_CO ANA_FE ANA_PB ANA_SN ANA_AS ANA_SB ANA_BI";
public const string chemMin = "C Si Mn P S Ni Cr Mo Cu Al Als Ca V Nb Ti O N H Zn B Zr W Co Fe Pb Sn As Sb Bi";
///
/// 筛选符合条件的DataTable
///
/// 源dt
///
public static DataTable GetSelectDt(DataTable dtSource, string sql)
{
if (dtSource != null)
{
DataTable dtReturn = dtSource.Clone();
DataRow[] arrDrSelect = dtSource.Select(sql);
if (arrDrSelect != null && arrDrSelect.Length > 0)
{
foreach (DataRow row in arrDrSelect)
{
dtReturn.Rows.Add(row.ItemArray);
}
}
return dtReturn;
}
else
{
return null;
}
}
///
/// 筛选符合条件的DataTable加入排序
///
/// 源dt
///
public static DataTable GetSelectDt(DataTable dtSource, string sql, string sort)
{
if (dtSource != null)
{
DataTable dtReturn = dtSource.Clone();
DataRow[] arrDrSelect;
if (sort != "")
{
arrDrSelect = dtSource.Select(sql, sort);
}
else
{
arrDrSelect = dtSource.Select(sql);
}
if (arrDrSelect != null && arrDrSelect.Length > 0)
{
foreach (DataRow row in arrDrSelect)
{
dtReturn.Rows.Add(row.ItemArray);
}
}
return dtReturn;
}
else
{
return null;
}
}
///
/// 比较字符串是否含某元素
///
/// 元素名称
///
public static bool IsHaveChemItems(string chemName, string[] arrChems)
{
if (chemName == "" || arrChems.Length == 0)
{
return false;
}
else
{
foreach (string row in arrChems)
{
if (chemName == row)
{
return true;
}
}
}
return false;
}
///
/// 激活当前操作的列
///
///
///
/// 主键
public static void ActiveOperateRow(UltraGrid ultraGrid, string strPK, string strPKText)
{
for (int i = 0; i < ultraGrid.Rows.Count; i++)
{
if (ultraGrid.Rows[i].Cells[strPK].Text == strPKText)
{
ultraGrid.Rows[i].Activated = true;
}
}
}
///
/// 激活当前操作的列
///
///
///
/// 多主键
public static void ActiveOperateRow(UltraGrid ultraGrid, object[] strPK, object[] strPKText)
{
bool isEquals;
for (int i = 0; i < ultraGrid.Rows.Count; i++)
{
isEquals = true;
for (int j = 0; j < strPK.Length; j++)
{
if (ultraGrid.Rows[i].Cells[strPK[j].ToString()].Text != strPKText[j].ToString())
{
isEquals = false;
break;
}
}
if (isEquals == true)
{
ultraGrid.Rows[i].Activated = true;
return;
}
}
}
//点击Grid编辑区显示基本信息
public static void ShowBaseInfo(UltraGridRow ur, Panel panel)
{
if (ur != null)
{
foreach (UltraGridCell uc in ur.Cells)
{
if (panel.Controls.ContainsKey("txt" + uc.Column.Key) == true && panel.Controls["txt" + uc.Column.Key] is UltraTextEditor)//判定是否存在text
{
((UltraTextEditor)panel.Controls["txt" + uc.Column.Key]).Text = uc.Text.Trim();
}
else if (panel.Controls.ContainsKey("ultra" + uc.Column.Key) == true && panel.Controls["ultra" + uc.Column.Key] is UltraComboEditor)//判定是否存在text
{
((UltraComboEditor)panel.Controls["ultra" + uc.Column.Key]).Text = uc.Text.Trim();
}
else if (panel.Controls.ContainsKey("ttxt" + uc.Column.Key) == true && panel.Controls["ttxt" + uc.Column.Key] is UltraDateTimeEditor)//判定是否存在text
{
((UltraDateTimeEditor)panel.Controls["ttxt" + uc.Column.Key]).Text = uc.Text.Trim();
}
}
}
}
//点击Grid编辑区显示基本信息
public static void ShowDataTaleInfo(DataTable dt, Panel panel)
{
foreach (DataColumn dc in dt.Columns)
{
if (panel.Controls.ContainsKey("txt" + dc.ColumnName) == true)//判定是否存在text
{
}
if (panel.Controls.ContainsKey("txt" + dc.ColumnName) == true)//判定是否存在text
{
((UltraTextEditor)panel.Controls["txt" + dc.ColumnName]).Text = dt.Rows[0][dc.ColumnName].ToString();
}
else if (panel.Controls.ContainsKey("ultra" + dc.ColumnName) == true)//判定是否存在text
{
((UltraComboEditor)panel.Controls["ultra" + dc.ColumnName]).Text = dt.Rows[0][dc.ColumnName].ToString();
}
}
}
//点击Grid编辑区显示基本信息
public static void ClearBaseInfo(Panel panel, string[] cols)
{
if (cols != null)
{
foreach (string col in cols)
{
if (panel.Controls.ContainsKey("txt" + col) == true && panel.Controls["txt" + col] is UltraTextEditor)//判定是否存在text && panel.Controls.ContainsKey("txt" + col).GetType(). == UltraTextEditor
{
((UltraTextEditor)panel.Controls["txt" + col]).Text = "";
}
else if (panel.Controls.ContainsKey("ultra" + col) == true && panel.Controls["ultra" + col] is UltraComboEditor)//判定是否存在text && panel.Controls.ContainsKey("txt" + col).GetType(). == UltraTextEditor
{
((UltraComboEditor)panel.Controls["ultra" + col]).Text = "";
}
}
}
}
///
/// 隐藏空列
///
/// 本来就隐藏的列名集合
/// 需要操作的UltraGrid
/// 需要操作的dt
private void HideNullColumn(string strHidden, UltraGrid ultraGrid, DataTable dataTable)
{
if (strHidden != "")
{
foreach (DataColumn dc in dataTable.Columns)
{
if (strHidden.IndexOf(dc.ColumnName) >= 0)
{
continue;
}
foreach (DataRow dr in dataTable.Rows)
{
if (dr[dc].ToString() != "")
{
ultraGrid.DisplayLayout.Bands[0].Columns[dc.ColumnName].Hidden = false;
break;
}
else
{
ultraGrid.DisplayLayout.Bands[0].Columns[dc.ColumnName].Hidden = true;
}
}
}
}
else
{
foreach (DataColumn dc in dataTable.Columns)
{
foreach (DataRow dr in dataTable.Rows)
{
if (dr[dc].ToString() != "")
{
ultraGrid.DisplayLayout.Bands[0].Columns[dc.ColumnName].Hidden = false;
break;
}
else
{
ultraGrid.DisplayLayout.Bands[0].Columns[dc.ColumnName].Hidden = true;
}
}
}
}
}
///
/// UltraGrid可读
///
/// UltraGrid
/// 可编辑列
public static void setOtherColumnReadOnly(UltraGrid ugr, string[] keys)
{
if (keys == null || keys.Length == 0)
{
foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns)
{
ugc.CellActivation = Activation.ActivateOnly;
}
}
else
{
keys.ToArray();
foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns)
{
if (!keys.Contains(ugc.Key))
{
ugc.CellActivation = Activation.ActivateOnly;
}
//else
//{
// ugc.CellActivation = Activation.AllowEdit;
//}
}
}
if (ugr.DisplayLayout.Bands[0].Columns.Exists("CHK"))
{
ugr.DisplayLayout.Bands[0].Columns["CHK"].DefaultCellValue = "False";
ugr.DisplayLayout.Bands[0].Columns["CHK"].Header.CheckBoxVisibility = Infragistics.Win.UltraWinGrid.HeaderCheckBoxVisibility.Always;
ugr.DisplayLayout.Bands[0].Columns["CHK"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.CheckBox;
}
}
///
/// UltraGrid可读
///
/// UltraGrid
/// 可编辑列
public static void setOtherColumnReadOnly(UltraGrid ugr, string[] keys, int bandNum)
{
if (bandNum < 0 || ugr.DisplayLayout.Bands.Count < bandNum + 1)
{
return;
}
if (keys == null || keys.Length == 0)
{
foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[bandNum].Columns)
{
ugc.CellActivation = Activation.ActivateOnly;
}
}
else
{
keys.ToArray();
foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[bandNum].Columns)
{
if (!keys.Contains(ugc.Key))
{
ugc.CellActivation = Activation.ActivateOnly;
}
}
}
if (ugr.DisplayLayout.Bands[bandNum].Columns.Exists("CHK"))
{
ugr.DisplayLayout.Bands[bandNum].Columns["CHK"].DefaultCellValue = "False";
ugr.DisplayLayout.Bands[bandNum].Columns["CHK"].Header.CheckBoxVisibility = Infragistics.Win.UltraWinGrid.HeaderCheckBoxVisibility.Always;
ugr.DisplayLayout.Bands[bandNum].Columns["CHK"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.CheckBox;
}
}
///
/// UltraGrid列是否隐藏
/// isShow 为true则显示其他隐藏,false则隐藏其他显示
/// UltraGrid
/// 隐藏列
public static void setColumnShowOrHidden(UltraGrid ugr, string[] keys, bool isShow)
{
if (keys == null || keys.Length == 0)
{
foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns)
{
ugc.Hidden = false;
}
}
else
{
keys.ToArray();
foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[0].Columns)
{
if (keys.Contains(ugc.Key))
{
if (isShow)
{
ugc.Hidden = false;
}
else
{
ugc.Hidden = true;
}
}
else
{
if (isShow)
{
ugc.Hidden = true;
}
}
}
}
}
///
/// UltraGrid列是否隐藏
/// isShow 为true则显示其他隐藏,false则隐藏其他显示
/// UltraGrid
/// 隐藏列
public static void setColumnShowOrHidden(UltraGrid ugr, string[] keys, bool isShow, int bandNum)
{
if (bandNum < 0 || ugr.DisplayLayout.Bands.Count < bandNum + 1)
{
return;
}
if (keys == null || keys.Length == 0)
{
foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[bandNum].Columns)
{
ugc.Hidden = false;
}
}
else
{
keys.ToArray();
foreach (UltraGridColumn ugc in ugr.DisplayLayout.Bands[bandNum].Columns)
{
if (keys.Contains(ugc.Key))
{
if (isShow)
{
ugc.Hidden = false;
}
else
{
ugc.Hidden = true;
}
}
else
{
if (isShow)
{
ugc.Hidden = true;
}
}
}
}
}
//初始化列
public static void InitColumns(string[] arrColumns, string[] arrCaption, DataTable dataTable1)
{
if (arrColumns.Length == 0 || arrColumns.Length != arrCaption.Length)
{
return;
}
dataTable1.Columns.Clear();//先清除
DataColumn dc;
for (int i = 0; i < arrColumns.Length; i++)
{
try
{
dc = new DataColumn(arrColumns[i]);
dc.Caption = arrCaption[i];
dataTable1.Columns.Add(dc);
if (dc.ColumnName == "CHK")
{
dc.DataType = typeof(bool);
dc.DefaultValue = "False";
}
}
catch
{
continue;
}
}
}
//初始化列
public static void InitColumns(string[] arrColumns, string[] chemMax, object[] arrCaption, string[] chemMin, DataTable dataTable1)
{
if (arrColumns.Length == 0 || arrColumns.Length != arrCaption.Length || chemMax.Length != chemMin.Length)
{
return;
}
dataTable1.Columns.Clear();//先清除
DataColumn dc;
for (int i = 0; i < arrColumns.Length; i++)
{
try
{
dc = new DataColumn(arrColumns[i].ToString());
dc.Caption = arrCaption[i].ToString();
dataTable1.Columns.Add(dc);
if (dc.ColumnName == "CHK")
{
dc.DataType = typeof(bool);
dc.DefaultValue = "False";
}
}
catch
{
continue;
}
}
for (int i = 0; i < chemMax.Length; i++)
{
try
{
dc = new DataColumn(chemMax[i]);
dc.Caption = chemMin[i];
dataTable1.Columns.Add(dc);
}
catch
{
continue;
}
}
}
public static void InitColumns(string[] arrColumns, string[] arrCaption, DataTable dataTable, UltraGrid ultraGrid, string[] show, bool isShow, string[] ope)
{
InitColumns(arrColumns, arrCaption, dataTable);
setColumnShowOrHidden(ultraGrid, show, isShow);
setOtherColumnReadOnly(ultraGrid, ope);
}
//隐藏空列
///
///
///
///
/// 需要判断的列
///
public static void HideNullColumn(string strHidden, UltraGrid ug)
{
string[] arr = strHidden.Split(',');
for (int i = 0; i < arr.Length; i++)
{
if (!ug.DisplayLayout.Bands[0].Columns.Exists(arr[i]))
{
continue;
}
foreach (UltraGridRow ur in ug.Rows)
{
if (ur.Cells[arr[i]].Text != "")
{
ug.DisplayLayout.Bands[0].Columns[arr[i]].Hidden = false;
break;
}
else
{
ug.DisplayLayout.Bands[0].Columns[arr[i]].Hidden = true;
}
}
}
}
//选择事件
///
///
///
///
///
///
public static void SelectRow(UltraGrid ultraGrid)
{
if (ultraGrid.DisplayLayout.Bands[0].Columns.Exists("CHK"))
{
foreach (UltraGridRow uRow in ultraGrid.Selected.Rows)
{
if (uRow.GetType() != typeof(Infragistics.Win.UltraWinGrid.UltraGridGroupByRow))
{
uRow.Cells["CHK"].Value = true;
}
}
}
}
public static void ReMoveColumns(DataTable dataTable, int position)
{
//从0开始
int dcNum = dataTable.Columns.Count;
if (dcNum > position)
{
for (int i = 0; i < dcNum - position; i++)
{
dataTable.Columns.RemoveAt(position);
}
}
}
//自适应
private void RefreshAutoSize(UltraGrid ultraGrid1)
{
ultraGrid1.DisplayLayout.Bands[0].Columns[0].Width = 80;
for (int i = 1; i < ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++)
{
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Width = 60;//设置列宽
}
}
///
/// 设置列宽
///
/// 需要设置的UltraGrid
/// 不需要清除的列
/// /// 宽度
public static void ColumnsWidth(UltraGrid ultraGrid, int haveNum, int width)
{
int col = ultraGrid.DisplayLayout.Bands[0].Columns.Count;
for (int i = haveNum; i < col; i++)
{
ultraGrid.DisplayLayout.Bands[0].Columns[i].Width = width;//设置列宽
}
}
///
/// 设置列宽
///
/// 需要设置的UltraGrid
/// 不需要清除的列
/// /// 宽度
public static void ColumnsWidth(UltraGrid ultraGrid, int haveNum, int width, string[] noSet)
{
ArrayList al = new ArrayList();
for (int i = 0; i < noSet.Length; i++)
{
al.Add(noSet[i]);
}
int col = ultraGrid.DisplayLayout.Bands[0].Columns.Count;
for (int i = haveNum; i < col; i++)
{
if (!al.Contains(ultraGrid.DisplayLayout.Bands[0].Columns[i].ToString()))
{
ultraGrid.DisplayLayout.Bands[0].Columns[i].Width = width;//设置列宽
}
}
}
///
/// 刷新Grid数据并根据数据调整Grid列宽
///
/// 需要处理的Grid
/// 需要调整的列
/// true则自适应,false则不自适应
public static void RefreshAndAutoSizeColumns(Infragistics.Win.UltraWinGrid.UltraGrid ultraGrid, object[] cols, bool isMove)
{
try
{
ultraGrid.DataBind();
foreach (Infragistics.Win.UltraWinGrid.UltraGridBand band in ultraGrid.DisplayLayout.Bands)
{
foreach (Infragistics.Win.UltraWinGrid.UltraGridColumn column in band.Columns)
{
if (cols != null && cols.Contains(column.Key))
{
if (!isMove)
{
continue;
}
column.PerformAutoResize(Infragistics.Win.UltraWinGrid.PerformAutoSizeType.AllRowsInBand);//AllRowsInBand
}
else
{
if (!isMove)
{
column.PerformAutoResize(Infragistics.Win.UltraWinGrid.PerformAutoSizeType.AllRowsInBand);
}
}
}
}
ultraGrid.Refresh();
}
catch { }
}
//改变splitContainer1.Panel1
public static void ChangeSplit(SplitContainer splitContainer, DataTable dtPhyMax)
{
if (dtPhyMax != null && dtPhyMax.Rows.Count > 0)
{
splitContainer.Panel1Collapsed = false;
}
else
{
splitContainer.Panel1Collapsed = true; ;
}
}
//如果用户为admin默认试验室数据权限
public static string[] ValidData()
{
string[] arrId = new string[7] { "002001007009", "002001007015", "002001007013", "002001007014", "002001007010", "002001020001", "002001020002" };
//DECODE(T.DEPT_ID,
// '002001007009',
// '力学',
// '002001007015',
// '金相',
// '002001007013',
// '腐蚀',
// '002001007014',
// '工程',
// '002001007010',
// '化学',
// '002001020001',
// '一快分',
// '002001020002',
// '二快分')
return arrId;
}
//解析数据权限
public static string ValidDataString(string[] arrId)
{
string strId = "";
if (arrId != null)
{
foreach (string str in arrId)
{
strId += "'" + str + "',";
}
}
strId = strId.Remove(0, 1);
strId = strId.Remove(strId.Length - 2);
return strId;
}
// 路径组成 Lims + 界面名称 + 文件名 "Lims/data/base/";
public static string GetFilePath(string strPath)
{
return "";
}
///
/// 更改文件路径
///
/// user_depatment
///
public static void UpdateFilePosition(string strTableName, string strPath, string strPk, string strPkValue, OpeBase ob)
{
try
{
string sql = "UPDATE " + strTableName + " SET FILE_POSITION = '" + strPath + "' WHERE " + strPk + " = '" + strPkValue + "'";
PublicServer.SetData("com.steering.BaseInfo.UpdateFilePosition", new Object[] { sql }, ob);
}
catch
{
}
}
///
/// 查看文件路径
///
/// user_depatment
///
public static bool ViewFilePosition(OpeBase _ob, string path)
{
bool isSucc = true;
FormFileDown down = new FormFileDown(_ob, path);
down.ShowDialog();
if (down.CtrlFileDown1.List.Count == 0)
{
isSucc = false;//删除了则更新FILE_POSITION
}
return isSucc;
}
///
/// 上传文件路径
///
/// user_depatment
///
public static bool UploadFilePosition(OpeBase _ob, string path)
{
//var serverFileList = FileHelper.Download(path);
//if (serverFileList.Count > 0)
//{
// MessageUtil.ShowWarning("该记录已存在一份文件,请删除后再重新上传!");
// return false;
//}
List list = new List();
FileBean bean = new FileBean();
OpenFileDialog file = new OpenFileDialog();
file.Multiselect = false;
DialogResult drStat;
drStat = file.ShowDialog();
if (drStat == DialogResult.OK)
{
string filePath = file.FileName;
string fileName = System.IO.Path.GetFileName(filePath);
bean = new FileBean();
bean.setFileName(fileName);
bean.setPathName(path);
bean.setFile(FileHelper.FileToArray(filePath));
list.Add(bean);
bool isSuccess = Core.Mes.Client.Comm.Server.FileHelper.Upload(list);
if (isSuccess)
{
MessageUtil.ShowTips("上传成功!");
}
else
{
MessageUtil.ShowTips("上传失败,请重试!");
}
return isSuccess;//成功了则更新FILE_POSITION
}
return false;
}
}
}