using ComponentFactory.Krypton.Navigator; using ComponentFactory.Krypton.Toolkit; using ComponentFactory.Krypton.Workspace; using NXWMS.Client.Code.Excel; using NXWMS.Client.Code.Extends; using NXWMS.Client.Code.Serialize; using NXWMS.Client.Model.AppModels.Condition.Common; using NXWMS.Client.Model.AppModels.Condition.Rule; using NXWMS.Client.Model.AppModels.Result; using NXWMS.Client.Model.AppModels.Result.Common; using NXWMS.Client.Model.AppModels.Result.Rule; using NXWMS.Client.Model.CoreModels; using NXWMS.Client.String.Enums; using NXWMS.Commons; using NXWMS.Services; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; namespace NXWMS.Forms.Rule { public partial class frmTempImportData : Form { private string _TemplateCode; private string _BatchNo; private int _selectIndex; private int _selectId; private string _selectNo; private int _pageSize; private int _pageIndex; private int _totalCount; private bool _IsCheck; /// /// 模版列表 /// private List _clientFieldOrderTemplateList; /// /// 临时数据列表 /// private List _clientFieldOrderBatchList; /// /// 导入数据列表 /// private List _clientFieldOrderDataList; /// /// 导入模版选择列表 /// private List _importTemplateSelectList; /// /// 导入模版列表 /// private List _importTemplateList; /// /// 界面功能类型 /// public EnumFunctionType _FunctionType; /// /// 功能类型 /// public enum EnumFunctionType { Import, Search, } public frmTempImportData(string templateCode = "", string batchNo = "") { InitializeComponent(); _TemplateCode = templateCode; _BatchNo = batchNo; InitData(); InitControl(); } /// /// 控件初始化 /// private void InitControl() { CheckForIllegalCrossThreadCalls = false; dataGridViewBatch.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderBatchList), false); dataGridViewFile.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderDataList), false, false); dataGridViewTemplate.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderTemplateList), false, false); this.SetFormSizeLocation(); //功能类型 switch (_FunctionType) { case EnumFunctionType.Import: txtSearchBatchNo.Text = _BatchNo; cmbSearchImport.SelectedValue = _TemplateCode; cmbSearchImport.Enabled = false; cmbSearchStatus.SelectedValue = (int)TempImportStatus.Init; txtSearchBatchNo.Text = _TemplateCode.ToUpper().Replace("FRM", "").First() + DateTime.Now.ToString("yyyyMMDDHHmmss"); var loadfrm = new frmLoading(); loadfrm.Show(); var message = loadfrm.EventCalExec(LoadSearchTemplate, _pageIndex, _pageSize); if (!string.IsNullOrWhiteSpace(message)) { KryptonMessageBox.Show($"查询失败!\r\n{message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } break; case EnumFunctionType.Search: break; } _pageIndex = 1; _pageSize = 20; } /// /// 数据初始化 /// private void InitData() { //批次组 _clientFieldOrderBatchList = new List(); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "BATCH_NO", FieldDesc = "批次单号" }); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "IMPORT_DATA_NUMBER", FieldDesc = "导入行数" }); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "ImportStatusName", FieldDesc = "导入状态" }); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "LAST_CHECK_TIME", FieldDesc = "最后检查时间" }); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "LAST_CHECK_MESSAGE", FieldDesc = "最后检查消息" }); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "LAST_IMPORT_TIME", FieldDesc = "最后导入时间" }); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "LAST_IMPORT_MESSAGE", FieldDesc = "最后导入消息" }); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "ImportTemplateCode", FieldDesc = "导入模版编码" }); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "ImportTemplateName", FieldDesc = "导入模版名称" }); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "ImportModeName", FieldDesc = "导入方式" }); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "TargetObjectTypeName", FieldDesc = "目标对象编码" }); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "TargetObjectCode", FieldDesc = "目标对象名称" }); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "TargetObjectName", FieldDesc = "目标对象类型" }); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "IMPORT_DATA_JSON", FieldDesc = "导入数据JSON" }); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "DESCRIBE", FieldDesc = "描述" }); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "CreateName", FieldDesc = "创建人" }); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "CREATE_TIME", FieldDesc = "创建时间" }); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "UpdateName", FieldDesc = "更新人" }); _clientFieldOrderBatchList.Add(new ClientFieldOrderResult { FieldName = "UPDATE_TIME", FieldDesc = "更新时间" }); //Excel数据 _clientFieldOrderDataList = new List(); _clientFieldOrderDataList.Add(new ClientFieldOrderResult { FieldName = "Data", FieldDesc = "Excel数据" }); //模版数据 _clientFieldOrderTemplateList = new List(); _clientFieldOrderTemplateList.Add(new ClientFieldOrderResult { FieldName = "IMPORT_TEMPLATE_CODE", FieldDesc = "导入模版编号" }); _clientFieldOrderTemplateList.Add(new ClientFieldOrderResult { FieldName = "IMPORT_TEMPLATE_NAME", FieldDesc = "导入模版名称" }); _clientFieldOrderTemplateList.Add(new ClientFieldOrderResult { FieldName = "ImportModeName", FieldDesc = "导入方式" }); _clientFieldOrderTemplateList.Add(new ClientFieldOrderResult { FieldName = "TARGET_OBJECT_CODE", FieldDesc = "源对象编码" }); _clientFieldOrderTemplateList.Add(new ClientFieldOrderResult { FieldName = "TARGET_OBJECT_NAME", FieldDesc = "源对象名称" }); _clientFieldOrderTemplateList.Add(new ClientFieldOrderResult { FieldName = "TargetObjectType", FieldDesc = "源对象类型" }); _clientFieldOrderTemplateList.Add(new ClientFieldOrderResult { FieldName = "SOURCE_CODE", FieldDesc = "源结构编码" }); _clientFieldOrderTemplateList.Add(new ClientFieldOrderResult { FieldName = "SOURCE_NAME", FieldDesc = "源结构名称" }); _clientFieldOrderTemplateList.Add(new ClientFieldOrderResult { FieldName = "SourceTypeName", FieldDesc = "源结构类型" }); _clientFieldOrderTemplateList.Add(new ClientFieldOrderResult { FieldName = "SourceLength", FieldDesc = "源结构长度" }); _clientFieldOrderTemplateList.Add(new ClientFieldOrderResult { FieldName = "SourceRequiredFlagName", FieldDesc = "源结构必填标识" }); _clientFieldOrderTemplateList.Add(new ClientFieldOrderResult { FieldName = "TARGET_CODE", FieldDesc = "目标结构编码" }); _clientFieldOrderTemplateList.Add(new ClientFieldOrderResult { FieldName = "TARGET_NAME", FieldDesc = "目标结构名称" }); _clientFieldOrderTemplateList.Add(new ClientFieldOrderResult { FieldName = "TargetTypeName", FieldDesc = "目标结构类型" }); _clientFieldOrderTemplateList.Add(new ClientFieldOrderResult { FieldName = "TargetLength", FieldDesc = "目标结构长度" }); _clientFieldOrderTemplateList.Add(new ClientFieldOrderResult { FieldName = "TargetRequiredFlagName", FieldDesc = "目标结构必填标识" }); _clientFieldOrderTemplateList.Add(new ClientFieldOrderResult { FieldName = "TargetRelationTypeName", FieldDesc = "目标关联类型编码" }); _clientFieldOrderTemplateList.Add(new ClientFieldOrderResult { FieldName = "TargetRelationContent", FieldDesc = "目标关联类型内容" }); var importTemplateResult = RuleServices.importTemplateService.GetList(new ImportTemplateSearchCondition { IsUsed = true, ItemSQL = "IMPORT_TEMPLATE_CODE,IMPORT_TEMPLATE_NAME" }); if (importTemplateResult.Status == OperateStatus.Success) { _importTemplateSelectList = importTemplateResult.Data.RowData.ToList(); } var fieldList = new List().Add(new FieldValue { Code = "", Name = "全部" }); cmbSearchImport.DataSource = fieldList.GetFieldValueIdList(_importTemplateSelectList, "IMPORT_TEMPLATE_CODE", "IMPORT_TEMPLATE_NAME"); cmbSearchImport.DisplayMember = "Name"; cmbSearchImport.ValueMember = "Id"; cmbSearchImport.SelectedIndex = -1; fieldList = new List().Add(new FieldValue { Id = "", Name = "全部" }); cmbSearchStatus.DataSource = new List().GetFieldValueIdList(); cmbSearchStatus.DisplayMember = "Name"; cmbSearchStatus.ValueMember = "Id"; cmbSearchStatus.SelectedIndex = -1; } private void btnSelect_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Files|*.xls;*.xlsx"; openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); if (openFileDialog.ShowDialog() == DialogResult.OK) { var filePath = openFileDialog.FileName; var loadfrm = new frmLoading(); loadfrm._message = "正在加载文件数据,请耐心等待......"; loadfrm.Show(); Thread.Sleep(500); Application.DoEvents(); var message = loadfrm.EventCalExec(LoadFileData, dataGridViewFile, filePath); if (!string.IsNullOrWhiteSpace(message)) { KryptonMessageBox.Show($"加载失败!\r\n{message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } txtFilePath.Text = filePath; dataGridViewFile.Columns.Add("$INFO", "执行结果"); dataGridViewFile.Columns["$INFO"].ReadOnly = true; dataGridViewFile.Columns["$INFO"].DisplayIndex = 0; navigatorTool.SelectedPage = pagImportFile; } } /// /// 加载文件数据 /// /// /// /// private string LoadFileData(DataGridView dataGridView, string filePath) { dataGridView.Columns.Clear(); dataGridView.DataSource = SDExcelHelper.GetDataTable(filePath); return string.Empty; } private void btnSearch_Click(object sender, EventArgs e) { _pageIndex = 1; var loadfrm = new frmLoading(); loadfrm.Show(); var message = loadfrm.EventCalExec(LoadSearchBatch, this.pageTool.PageIndex, this.pageTool.PageSize); pageTool.DataCount = _totalCount; if (!string.IsNullOrWhiteSpace(message)) { KryptonMessageBox.Show($"查询失败!\r\n{message}", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private string LoadSearchBatch(int pageIndex, int pageSize) { var result = TempServices.tempImportService.GetList(new TempImportSearchCondition { OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId, BatchNo = txtSearchBatchNo.Text, ImportStatus = cmbSearchImport.SelectedValue.GetObjectToInt(), PageIndex = pageIndex, PageSize = pageSize }); if (result.Status == OperateStatus.Success) { _totalCount = result.Data.TotalCount; _pageIndex = pageIndex; _pageSize = pageSize; if (result.Data.RowData.Any()) { dataGridViewBatch.Columns.Clear(); dataGridViewBatch.DataSource = result.Data.RowData.ToList(); dataGridViewBatch.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderBatchList)); } else { if (dataGridViewBatch.DataSource != null) { dataGridViewBatch.DataSource = new List(); } dataGridViewBatch.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderBatchList), false); } return string.Empty; } else { return result.Message; } } private string LoadSearchTemplate(int pageIndex, int pageSize) { var result = RuleServices.importTemplateService.GetDetailList(new ImportTemplateDetailSearchCondition { IsUsed = true, TemplateCode = _TemplateCode }); if (result.Status == OperateStatus.Success) { _importTemplateList = result.Data.ToList(); if (result.Data.Any()) { dataGridViewTemplate.Columns.Clear(); dataGridViewTemplate.DataSource = result.Data; dataGridViewTemplate.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderTemplateList)); } else { if (dataGridViewTemplate.DataSource != null) { dataGridViewTemplate.DataSource = new List(); } dataGridViewTemplate.BuildDataGridView(CommonUtil.GetFieldOrderDic(_clientFieldOrderTemplateList), false); } navigatorTool.SelectedPage = pagTemplate; return string.Empty; } else { return result.Message; } } private void btnCheck_Click(object sender, EventArgs e) { if (dataGridViewFile.Rows.Count > 0) { txtSearchBatchNo.Enabled = false; var data = (DataTable)dataGridViewFile.DataSource; int index = 0; foreach (DataRow dr in data.Rows) { DataRow[] dataTemp = { dr }; var detail = new TempImportDetailCondition { DataJson = dataTemp.CopyToDataTable(), BatchNo = txtSearchBatchNo.Text, ImportTemplateId = _importTemplateList.FirstOrDefault().IMPORT_TEMPLATE_ID, TempImportExecType = TempImportExecType.Check, }; //添入临时表 var addResult = TempServices.tempImportService.Add(new TempImportCondition { OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId, DetailList = new List().Add(detail), }); if (addResult.Status == OperateStatus.Success) { dataGridViewFile.Rows[index].Cells["$INFO"].Value = "导入成功!开始执行检查..."; //检查数据 var checkResult = TempServices.tempImportService.Exec(new TempImportExecCondition { OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId, BatchNo = txtSearchBatchNo.Text, TempImportExecType = TempImportExecType.Check, }); Application.DoEvents(); //检查成功 if (checkResult.Status == OperateStatus.Success) { dataGridViewFile.Rows[index].Cells["$INFO"].Value = "检查成功!可进行导入!"; dataGridViewFile.Rows[index].Cells["$INFO"].Style.ForeColor = Color.Green; } else { dataGridViewFile.Rows[index].Cells["$INFO"].Value = "检查失败!" + checkResult.Message; dataGridViewFile.Rows[index].Cells["$INFO"].Style.ForeColor = Color.Red; } } else { dataGridViewFile.Rows[index].Cells["$INFO"].Value = "出现位置错误!"+addResult.Message; dataGridViewFile.Rows[index].Cells["$INFO"].Style.ForeColor = Color.Violet; } index++; } _IsCheck = true; } else { _IsCheck = false; KryptonMessageBox.Show($"请选择导入文件!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } } private void btnImport_Click(object sender, EventArgs e) { if (!_IsCheck) { KryptonMessageBox.Show($"请先执行检查数据!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (dataGridViewFile.Rows.Count > 0) { //导入 var checkResult = TempServices.tempImportService.Exec(new TempImportExecCondition { OperationUserId = AppConfig.UserLoginResult.UserInfo.UserId, BatchNo = txtSearchBatchNo.Text, TempImportExecType = TempImportExecType.Import, }); Application.DoEvents(); int index = 0; //检查成功 if (checkResult.Status == OperateStatus.Success) { foreach(DataRow item in dataGridViewFile.Rows) { dataGridViewFile.Rows[index].Cells["$INFO"].Value = "导入成功!"; dataGridViewFile.Rows[index].Cells["$INFO"].Style.ForeColor = Color.Green; } } else { dataGridViewFile.Rows[index].Cells["$INFO"].Value = "导入失败!" + checkResult.Message; dataGridViewFile.Rows[index].Cells["$INFO"].Style.ForeColor = Color.Red; } index++; _IsCheck = false; txtSearchBatchNo.Enabled = true; txtSearchBatchNo.Text = ""; txtFilePath.Text = ""; dataGridViewFile.DataSource = new DataTable(); } else { KryptonMessageBox.Show($"请选择导入文件!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } }