You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
435 lines
20 KiB
C#
435 lines
20 KiB
C#
using DevExpress.XtraEditors;
|
|
using DevExpress.XtraEditors.Controls;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.IO;
|
|
using System.Threading;
|
|
using System.Web.UI.WebControls;
|
|
using System.Windows.Forms;
|
|
using ZJ_BYD.Common;
|
|
using ZJ_BYD.DB;
|
|
using ZJ_BYD.Model;
|
|
using ZJ_BYD.Untils;
|
|
using ZJ_BYD.ViewModel;
|
|
|
|
namespace ZJ_BYD.UserControls.PlcPoint
|
|
{
|
|
public partial class PlcPointConfig : XtraUserControl
|
|
{
|
|
private int pagesize = 30; //每页显示行数
|
|
private int totalCount = 0; //总记录数
|
|
private int pageCurrent = 1; //当前页号
|
|
|
|
public PlcPointConfig()
|
|
{
|
|
InitializeComponent();
|
|
|
|
gridcontrol.CustomDrawRowIndicator += GridView1_CustomDrawRowIndicator;
|
|
gridPage1.williamPagerEvent += GridPage1_williamPagerEvent;
|
|
gridcontrol.IndicatorWidth = 35;
|
|
}
|
|
|
|
private void PlcPointConfig_Load(object sender, EventArgs e)
|
|
{
|
|
BindCombox.BindStation(cmbStation);
|
|
GetData();
|
|
}
|
|
|
|
private void GetData(int pageCurrent = 1)
|
|
{
|
|
var list = DataSource();
|
|
this.plcgrid.DataSource = list;
|
|
gridPage1.RefreshPager(pagesize, totalCount, pageCurrent);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 数据源
|
|
/// </summary>
|
|
/// <param name="isPage"></param>
|
|
/// <returns></returns>
|
|
private List<PlcPointVM> DataSource(bool isPage = true)
|
|
{
|
|
var selectedStation = cmbStation.SelectedItem as ListItem;
|
|
var keyWord = this.txtkeyword.Text.Trim();
|
|
var data = PlcPointHelper.QueryPlcPoints()
|
|
.InnerJoin<T_Station>((a, b) => a.StationCode == b.StationCode && !a.IsDeleted && !b.IsDeleted)
|
|
.Select((a, b) => new PlcPointVM
|
|
{
|
|
Id = a.Id,
|
|
IpcId = a.IpcId,
|
|
LineCode = a.LineCode,
|
|
StationCode = a.StationCode,
|
|
StationName = b.StationName,
|
|
PointCode = a.PointCode,
|
|
PointName = a.PointName,
|
|
PointStartAddress = a.PointStartAddress,
|
|
PointLength = a.PointLength,
|
|
PointDataType = a.PointDataType,
|
|
StrIsShowMain = a.IsShowMain ? "是" : "否",
|
|
StrIsSaveDb = a.IsSaveDb ? "是" : "否",
|
|
ResultField = a.ResultField,
|
|
StrIsTestItem = a.IsTestItem ? "是" : "否",
|
|
StrIsResponseData = a.IsResponseData ? "是" : "否",
|
|
StrIsSub = a.IsSub ? "是" : "否",
|
|
StrIsSystem = a.IsSystem ? "是" : "否",
|
|
SortIndex = a.SortIndex,
|
|
Remark = a.Remark,
|
|
StrIsActive = a.IsActive ? "是" : "否",
|
|
CreatedTime = a.CreatedTime
|
|
}).Distinct().OrderBy(a => a.StationCode);
|
|
if (!string.IsNullOrWhiteSpace(keyWord))
|
|
{
|
|
data.Where(a => a.PointCode.ToLower().Contains(keyWord.ToLower())
|
|
|| a.PointName.ToLower().Contains(keyWord.ToLower()));
|
|
}
|
|
if (selectedStation != null && !string.IsNullOrWhiteSpace(selectedStation.Value))
|
|
{
|
|
data.Where(a => a.StationCode == selectedStation.Value);
|
|
}
|
|
if (isPage)
|
|
{
|
|
return data.ToPageList(pageCurrent, pagesize, ref totalCount);
|
|
}
|
|
return data.ToList();
|
|
}
|
|
|
|
private void btnsearch_Click(object sender, EventArgs e)
|
|
{
|
|
splashScreenManager1.ShowWaitForm();
|
|
GetData();
|
|
splashScreenManager1.CloseWaitForm();
|
|
}
|
|
|
|
private void btnAdd_Click(object sender, EventArgs e)
|
|
{
|
|
EditPlcPoint editPlcPoint = new EditPlcPoint();
|
|
var result = editPlcPoint.ShowDialog();
|
|
if (result == DialogResult.OK)
|
|
{
|
|
GetData();
|
|
}
|
|
}
|
|
|
|
private void plcgrid_Load(object sender, EventArgs e)
|
|
{
|
|
this.repositoryItemHyperLinkEdit1.ButtonClick += new ButtonPressedEventHandler(repositoryItemHyperLinkEdit_ButtonClick);
|
|
}
|
|
|
|
private void repositoryItemHyperLinkEdit_ButtonClick(object sender, ButtonPressedEventArgs e)
|
|
{
|
|
var rowHandle = gridcontrol.FocusedRowHandle;
|
|
var model = gridcontrol.GetRow(rowHandle) as PlcPointVM;
|
|
EditPlcPoint editPlcPoint = new EditPlcPoint(model.Id);
|
|
var result = editPlcPoint.ShowDialog();
|
|
if (result == DialogResult.OK)
|
|
{
|
|
GetData();
|
|
}
|
|
}
|
|
|
|
private void btndel_Click(object sender, EventArgs e)
|
|
{
|
|
var ids = new List<int>();
|
|
var rowsNumber = this.gridcontrol.GetSelectedRows();
|
|
if (rowsNumber.Length <= 0)
|
|
{
|
|
XtraMessageBox.Show("请选择数据行!");
|
|
return;
|
|
}
|
|
splashScreenManager1.ShowWaitForm();
|
|
foreach (var rownumber in rowsNumber)
|
|
{
|
|
var maskCode = this.gridcontrol.GetRow(rownumber) as PlcPointVM;
|
|
ids.Add(maskCode.Id);
|
|
}
|
|
if (ids.Count > 0)
|
|
{
|
|
var rows = PlcPointHelper.DoDelPlcPointsByIds(ids);
|
|
if (rows > 0)
|
|
{
|
|
splashScreenManager1.CloseWaitForm();
|
|
XtraMessageBox.Show("操作成功!");
|
|
GetData();
|
|
}
|
|
else
|
|
{
|
|
splashScreenManager1.CloseWaitForm();
|
|
XtraMessageBox.Show("操作失败!");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
splashScreenManager1.CloseWaitForm();
|
|
}
|
|
}
|
|
|
|
private void btnimport_Click(object sender, EventArgs e)
|
|
{
|
|
var importThread = new Thread(new ThreadStart(ImportDialog));
|
|
importThread.SetApartmentState(ApartmentState.STA); //重点
|
|
importThread.Start();
|
|
}
|
|
|
|
private void btnExport_Click(object sender, EventArgs e)
|
|
{
|
|
var importThread = new Thread(new ThreadStart(ExportDialog));
|
|
importThread.SetApartmentState(ApartmentState.STA); //重点
|
|
importThread.Start();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 导出
|
|
/// </summary>
|
|
private void ExportDialog()
|
|
{
|
|
try
|
|
{
|
|
FolderBrowserDialog path = new FolderBrowserDialog();
|
|
if (path.ShowDialog() == DialogResult.OK)
|
|
{
|
|
splashScreenManager1.ShowWaitForm();
|
|
var list = DataSource(false);
|
|
var filePath = string.Format("{0}\\{1}.xlsx", path.SelectedPath, DateTime.Now.ToString("yyyyMMddHHmmss"));
|
|
|
|
#region 设置列名称
|
|
var mappingColumns = new List<ExcelColumns>();
|
|
var co1 = new ExcelColumns { field = "StationCode", title = "工位编码" };
|
|
var co2 = new ExcelColumns { field = "PointName", title = "点位名称" };
|
|
var co3 = new ExcelColumns { field = "PointCode", title = "点位编码" };
|
|
var co4 = new ExcelColumns { field = "PointStartAddress", title = "点位起始地址" };
|
|
var co5 = new ExcelColumns { field = "PointLength", title = "长度" };
|
|
var co6 = new ExcelColumns { field = "PointDataType", title = "数据类型" };
|
|
var co7 = new ExcelColumns { field = "StrIsShowMain", title = "是否在主页面显示" };
|
|
var co8 = new ExcelColumns { field = "StrIsSaveDb", title = "是否存数据库" };
|
|
var co9 = new ExcelColumns { field = "ResultField", title = "存库字段" };
|
|
var co10 = new ExcelColumns { field = "StrIsTestItem", title = "是否测试项点位" };
|
|
var co11 = new ExcelColumns { field = "StrIsResponseData", title = "是否反馈数据点位" };
|
|
var co12 = new ExcelColumns { field = "StrIsSub", title = "是否组件条码点位" };
|
|
var co13 = new ExcelColumns { field = "StrIsSystem", title = "是否系统内置点位" };
|
|
var co14 = new ExcelColumns { field = "StrIsActive", title = "是否启用" };
|
|
var co15 = new ExcelColumns { field = "SortIndex", title = "排序索引" };
|
|
var co16 = new ExcelColumns { field = "Remark", title = "备注" };
|
|
//var co1 = new ExcelColumns { field = "StationCode", title = "工位编码" };
|
|
//var co2 = new ExcelColumns { field = "StationName", title = "工位名称" };
|
|
//var co3 = new ExcelColumns { field = "PointCode", title = "点位编码" };
|
|
//var co4 = new ExcelColumns { field = "PointName", title = "点位名称" };
|
|
//var co5 = new ExcelColumns { field = "PointStartAddress", title = "点位起始地址" };
|
|
//var co6 = new ExcelColumns { field = "PointLength", title = "长度" };
|
|
//var co7 = new ExcelColumns { field = "PointDataType", title = "数据类型" };
|
|
//var co8 = new ExcelColumns { field = "StrIsShowMain", title = "是否在主页面显示" };
|
|
//var co9 = new ExcelColumns { field = "StrIsSaveDb", title = "是否存数据库" };
|
|
//var co10 = new ExcelColumns { field = "ResultField", title = "存库字段" };
|
|
//var co11 = new ExcelColumns { field = "StrIsTestItem", title = "是否测试项" };
|
|
//var co12 = new ExcelColumns { field = "StrIsResponseData", title = "是否反馈点位" };
|
|
//var co13 = new ExcelColumns { field = "StrIsSub", title = "是否组件条码" };
|
|
//var co14 = new ExcelColumns { field = "StrIsSystem", title = "是否系统内置点位" };
|
|
//var co15 = new ExcelColumns { field = "SortIndex", title = "排序索引" };
|
|
//var co16 = new ExcelColumns { field = "StrIsActive", title = "是否启用" };
|
|
//var co17 = new ExcelColumns { field = "Remark", title = "备注" };
|
|
mappingColumns.Add(co1);
|
|
mappingColumns.Add(co2);
|
|
mappingColumns.Add(co3);
|
|
mappingColumns.Add(co4);
|
|
mappingColumns.Add(co5);
|
|
mappingColumns.Add(co6);
|
|
mappingColumns.Add(co7);
|
|
mappingColumns.Add(co8);
|
|
mappingColumns.Add(co9);
|
|
mappingColumns.Add(co10);
|
|
mappingColumns.Add(co11);
|
|
mappingColumns.Add(co12);
|
|
mappingColumns.Add(co13);
|
|
mappingColumns.Add(co14);
|
|
mappingColumns.Add(co15);
|
|
mappingColumns.Add(co16);
|
|
//mappingColumns.Add(co17);
|
|
#endregion
|
|
|
|
if (list.Count <= 0)
|
|
{
|
|
Invoke(new Action(() => { XtraMessageBox.Show("无数据!", "提示"); }));
|
|
splashScreenManager1.CloseWaitForm();
|
|
return;
|
|
}
|
|
ExcelHelper.ToExcel(list, filePath, mappingColumns, true);
|
|
Invoke(new Action(() => { XtraMessageBox.Show("导出成功!", "提示"); }));
|
|
splashScreenManager1.CloseWaitForm();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Invoke(new Action(() => { XtraMessageBox.Show("导出数据异常!", "提示"); }));
|
|
LogHelper.WriteErrorLog("导出数据异常!", ex);
|
|
}
|
|
}
|
|
|
|
private void ImportDialog()
|
|
{
|
|
using (OpenFileDialog openFileDialog = new OpenFileDialog() { Filter = "Excel Workbook|*.xlsx|Excel 97-2003 Workbook|*.xls" })
|
|
{
|
|
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
splashScreenManager1.ShowWaitForm();
|
|
var filePath = openFileDialog.FileName;
|
|
var dt = ExcelHelper.GetExcel(filePath, 0, out var maxColumnNum);
|
|
if (dt.Rows.Count <= 0)
|
|
{
|
|
Invoke(new Action(() => { XtraMessageBox.Show("文件不能为空!", "提示"); }));
|
|
splashScreenManager1.CloseWaitForm();
|
|
return;
|
|
}
|
|
|
|
var result = CheckData(dt);
|
|
if (!result.isOk)
|
|
{
|
|
Invoke(new Action(() => { XtraMessageBox.Show("存在不合法数据,请检查!", "提示"); }));
|
|
splashScreenManager1.CloseWaitForm();
|
|
return;
|
|
}
|
|
if (PlcPointHelper.AddPlcPoints(result.list))
|
|
{
|
|
Invoke(new Action(() => { XtraMessageBox.Show("操作成功!", "提示"); }));
|
|
Invoke(new Action(() => { GetData(); }));
|
|
}
|
|
else
|
|
{
|
|
Invoke(new Action(() => { XtraMessageBox.Show("操作失败!", "提示"); }));
|
|
}
|
|
splashScreenManager1.CloseWaitForm();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 校验上传数据
|
|
/// </summary>
|
|
/// <param name="dt"></param>
|
|
/// <returns></returns>
|
|
private (bool isOk, List<T_PlcPoint> list) CheckData(DataTable dt)
|
|
{
|
|
var isOk = true;
|
|
var t_PlcPoints = new List<T_PlcPoint>();
|
|
for (int rowindex = 0; rowindex < dt.Rows.Count; rowindex++)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(dt.Rows[rowindex]["col_1"].ToString())
|
|
|| string.IsNullOrWhiteSpace(dt.Rows[rowindex]["col_2"].ToString())
|
|
|| string.IsNullOrWhiteSpace(dt.Rows[rowindex]["col_3"].ToString())
|
|
|| string.IsNullOrWhiteSpace(dt.Rows[rowindex]["col_4"].ToString())
|
|
|| string.IsNullOrWhiteSpace(dt.Rows[rowindex]["col_5"].ToString())
|
|
|| string.IsNullOrWhiteSpace(dt.Rows[rowindex]["col_6"].ToString())
|
|
|| string.IsNullOrWhiteSpace(dt.Rows[rowindex]["col_7"].ToString())
|
|
|| string.IsNullOrWhiteSpace(dt.Rows[rowindex]["col_10"].ToString())
|
|
|| string.IsNullOrWhiteSpace(dt.Rows[rowindex]["col_11"].ToString())
|
|
|| string.IsNullOrWhiteSpace(dt.Rows[rowindex]["col_12"].ToString())
|
|
|| string.IsNullOrWhiteSpace(dt.Rows[rowindex]["col_13"].ToString())
|
|
|| string.IsNullOrWhiteSpace(dt.Rows[rowindex]["col_14"].ToString())
|
|
|| string.IsNullOrWhiteSpace(dt.Rows[rowindex]["col_15"].ToString()))
|
|
{
|
|
isOk = false;
|
|
continue;
|
|
}
|
|
else if (!StationHelper.CheckStationCode(dt.Rows[rowindex]["col_1"].ToString()))
|
|
{
|
|
isOk = false;
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
var t_PlcPoint = new T_PlcPoint
|
|
{
|
|
IpcId = Program.CurrentIpcId,
|
|
LineCode = Program.CurrentLineCode,
|
|
StationCode = dt.Rows[rowindex]["col_1"].ToString(),
|
|
PointName = dt.Rows[rowindex]["col_2"].ToString(),
|
|
PointCode = dt.Rows[rowindex]["col_3"].ToString(),
|
|
PointStartAddress = dt.Rows[rowindex]["col_4"].ToString(),
|
|
PointLength = dt.Rows[rowindex]["col_5"].ToString(),
|
|
PointDataType = dt.Rows[rowindex]["col_6"].ToString(),
|
|
IsShowMain = dt.Rows[rowindex]["col_7"].ToString() == "是",
|
|
IsSaveDb = dt.Rows[rowindex]["col_8"].ToString() == "是",
|
|
ResultField = dt.Rows[rowindex]["col_9"].ToString(),
|
|
IsTestItem = dt.Rows[rowindex]["col_10"].ToString() == "是",
|
|
IsResponseData = dt.Rows[rowindex]["col_11"].ToString() == "是",
|
|
IsSub = dt.Rows[rowindex]["col_12"].ToString() == "是",
|
|
IsSystem = dt.Rows[rowindex]["col_13"].ToString() == "是",
|
|
IsActive = dt.Rows[rowindex]["col_14"].ToString() == "是",
|
|
SortIndex = int.Parse(dt.Rows[rowindex]["col_15"].ToString()),
|
|
Remark = dt.Rows[rowindex]["col_16"].ToString(),
|
|
CreatedTime = DateTime.Now,
|
|
CreatedBy = CurrentUser.UserName
|
|
};
|
|
t_PlcPoints.Add(t_PlcPoint);
|
|
}
|
|
}
|
|
return (isOk, t_PlcPoints);
|
|
}
|
|
|
|
private void btnDown_Click(object sender, EventArgs e)
|
|
{
|
|
var downThread = new Thread(new ThreadStart(DownDialog));
|
|
downThread.SetApartmentState(ApartmentState.STA); //重点
|
|
downThread.Start();
|
|
}
|
|
|
|
private void DownDialog()
|
|
{
|
|
var fileName = "PlcPoint.xlsx";
|
|
var filePath = Path.Combine(Application.StartupPath, "FileTemplate/" + fileName);
|
|
if (!File.Exists(filePath))
|
|
{
|
|
Invoke(new Action(() => { XtraMessageBox.Show("模板文件不存在!", "提示"); }));
|
|
return;
|
|
}
|
|
using (FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog())
|
|
{
|
|
splashScreenManager1.ShowWaitForm();
|
|
var localPath = "";
|
|
if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
localPath = Path.Combine(folderBrowserDialog.SelectedPath, fileName);
|
|
FileHelper.DownloadFile(filePath, localPath);
|
|
if (File.Exists(localPath))
|
|
{
|
|
Invoke(new Action(() => { XtraMessageBox.Show("下载成功!", "提示"); }));
|
|
}
|
|
else
|
|
{
|
|
Invoke(new Action(() => { XtraMessageBox.Show("下载失败!", "提示"); }));
|
|
}
|
|
splashScreenManager1.CloseWaitForm();
|
|
}
|
|
else
|
|
{
|
|
splashScreenManager1.CloseWaitForm();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 分页事件
|
|
/// </summary>
|
|
/// <param name="curPage"></param>
|
|
/// <param name="pageSize"></param>
|
|
private void GridPage1_williamPagerEvent(int curPage, int pageSize)
|
|
{
|
|
pageCurrent = curPage;
|
|
pagesize = pageSize;
|
|
GetData(curPage);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 行号
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void GridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
|
|
{
|
|
if (e.Info.IsRowIndicator && e.RowHandle > -1)
|
|
{
|
|
e.Info.DisplayText = (e.RowHandle + 1).ToString();
|
|
}
|
|
}
|
|
}
|
|
}
|