using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using CoreFS.CA06;
using Core.Mes.Client.Comm.Server;
using Core.Mes.Client.Comm;
using Core.Mes.Client.Comm.Tool;
using System.Reflection;
using Microsoft.Office.Interop.Excel;
using com.steering.pss.plnsaleord.order.model;
namespace Core.StlMes.Client.PlnSaleOrd
{
public partial class FrmOrderCraftImport : FrmBase
{
///
/// 模板路径
///
string modelPatch = "";
public string ModelPatch
{
get { return modelPatch; }
set { modelPatch = value; }
}
public FrmOrderCraftImport()
{
InitializeComponent();
}
private void FrmOrderCraftImport_Load(object sender, EventArgs e)
{
Init();
}
///
/// 构造
///
///
public FrmOrderCraftImport(OpeBase ob)
{
this.ob = ob;
InitializeComponent();
}
///
/// 初始化
///
private void Init()
{
ultraNumRowStart.Value = 2;
ultraNumRowEnd.Value = 2;
if (!System.IO.File.Exists(ModelPatch))//检察文件是否存在
{
return;
}
try
{
System.IO.File.Move(ModelPatch, ModelPatch);
}
catch
{
MessageUtil.ShowTips("文件已经被打开,请先关闭!");
return;
}
uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Open(ModelPatch, true);
this.ultraNumRowEnd.Value = getExcelRowsCount();
}
///
/// 获取excl的行数
///
private int getExcelRowsCount()
{
//获取行数(上限5000)
int colOrderNo = 0;
int j = 4999;
string[,] arr = null;
string[,] head = ObjectToString(uC_EmbedExcelIntoWinFormNoDLL1.GetRangeArray_Value("A" + 1, "BZ" + 1));
if (head == null)
{
return 1;
}
for (int i = 0; i < head.GetLength(1); i++)
{
if (head[0, i].Trim().Equals("合同号"))
{
colOrderNo = i;
break;
}
}
arr = ObjectToString(uC_EmbedExcelIntoWinFormNoDLL1.GetRangeArray_Value(
ExcelHelper.SeqToXlsCol[colOrderNo + 1] + 2,
ExcelHelper.SeqToXlsCol[colOrderNo + 1] + 5001));
if (arr == null)
{
return 1;
}
for (j = 4999; j >= 0; j--)
{
if (!arr[j, 0].Equals(""))
{
break;
}
}
return j + 2;
}
private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
{
switch (e.Tool.Key)
{
case "Save":
doSave();
break;
case "Open":
doOpen();
break;
case "Close":
doClose();
break;
}
}
///
/// 打开excel文件
///
private void doOpen()
{
try
{
OpenFileDialog dialog = new OpenFileDialog();
uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Exit();
if (dialog.ShowDialog() == DialogResult.OK)
{
ModelPatch = dialog.FileName;
if (!System.IO.File.Exists(ModelPatch))//检察文件是否存在
{
return;
}
try
{
System.IO.File.Move(ModelPatch, ModelPatch);
}
catch
{
MessageUtil.ShowTips("文件已经被打开,请先关闭!");
return;
}
uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Open(ModelPatch, true);
this.ultraNumRowEnd.Value = getExcelRowsCount();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
///
/// 导入数据到工艺文件表中
///
private void doSave()
{
try
{
int startRow = (int)ultraNumRowStart.Value;
int endRow = (int)ultraNumRowEnd.Value;
if (endRow - startRow < 0)
{
MessageUtil.ShowTips("没有任何行数据!");
return;
}
string[,] head = ObjectToString(uC_EmbedExcelIntoWinFormNoDLL1.GetRangeArray_Value("A" + 1, "BZ" + 1));
if (head == null)
{
return;
}
string[] colhead = new string[head.GetLength(1)];
for (int i = 0; i < colhead.Length; i++)
{
colhead[i] = head[0, i];
}
#region 获取合同号、工艺号等所在列
int colNum = 0;
int colOrderNo = -1;
int colCraftFileNo = -1;
int colstdLgNo = -1;
int colstdZgNo = -1;
int colstdGjgNo = -1;
int colcraftFileMan = -1;
int colversionChange = -1;
int colversionDesc = -1;
int colheightNkMin = -1;
int colheightNkMax = -1;
int coliussedId = -1;
if (!((IList)colhead).Contains("合同号"))
{
MessageUtil.ShowWarning("列“合同号”不存在!");
return;
}
if (!((IList)colhead).Contains("工艺号"))
{
MessageUtil.ShowWarning("列“工艺号”不存在!");
return;
}
if (!((IList)colhead).Contains("炼钢标准"))
{
MessageUtil.ShowWarning("列“炼钢标准”不存在!");
return;
}
if (!((IList)colhead).Contains("轧管标准"))
{
MessageUtil.ShowWarning("列“轧管标准”不存在!");
return;
}
if (!((IList)colhead).Contains("加工标准"))
{
MessageUtil.ShowWarning("列“加工标准”不存在!");
return;
}
if (!((IList)colhead).Contains("工艺文件责任人"))
{
MessageUtil.ShowWarning("列“工艺文件责任人”不存在!");
return;
}
if (!((IList)colhead).Contains("壁厚下限"))
{
MessageUtil.ShowWarning("列“壁厚下限”不存在!");
return;
}
if (!((IList)colhead).Contains("壁厚上限"))
{
MessageUtil.ShowWarning("列“壁厚上限”不存在!");
return;
}
if (!((IList)colhead).Contains("下发版次"))
{
MessageUtil.ShowWarning("列“下发版次”不存在!");
return;
}
for (int i = head.GetLength(1) - 1; i >= 0; i--)
{
if (!head[0, i].Equals("") && colNum == 0)
{
colNum = i;
}
if (head[0, i].Trim().Equals("合同号"))
{
colOrderNo = i;
}
if (head[0, i].Trim().Equals("工艺号"))
{
colCraftFileNo = i;
}
if (head[0, i].Trim().Equals("炼钢标准"))
{
colstdLgNo = i;
}
if (head[0, i].Trim().Equals("轧管标准"))
{
colstdZgNo = i;
}
if (head[0, i].Trim().Equals("加工标准"))
{
colstdGjgNo = i;
}
if (head[0, i].Trim().Equals("工艺文件责任人"))
{
colcraftFileMan = i;
}
if (head[0, i].Trim().Equals("工艺变动"))
{
colversionChange = i;
}
if (head[0, i].Trim().Equals("工艺版本描述"))
{
colversionDesc = i;
}
if (head[0, i].Trim().Equals("壁厚下限"))
{
colheightNkMin = i;
}
if (head[0, i].Trim().Equals("壁厚上限"))
{
colheightNkMax = i;
}
if (head[0, i].Trim().Equals("下发版次"))
{
coliussedId = i;
}
}
#endregion
string[,] arr = ObjectToString(uC_EmbedExcelIntoWinFormNoDLL1.GetRangeArray_Value(
"A" + startRow, ExcelHelper.SeqToXlsCol[colNum + 1] + endRow));
if (arr == null)
{
return;
}
for (int i = 0; i <= endRow -startRow; i++)
{
if (arr[i,colOrderNo].Equals(""))
{
MessageUtil.ShowTips("第" + (i + startRow).ToString() + "行,合同号为空!");
return;
}
}
ArrayList ListCraftFile = new ArrayList();
ArrayList listOrderNo = new ArrayList();
WaitFromOpen();
for (int i = 0; i < arr.GetLength(0); i++)
{
if (!arr[i, colCraftFileNo].Equals("") && !arr[i, coliussedId].Equals("")
&& !listOrderNo.Contains(arr[i, colOrderNo].ToString()))
{
PlnOrdCraftFileEntity craftFile = new PlnOrdCraftFileEntity();
string orderNoseq = arr[i, colOrderNo].ToString();
if (!orderNoseq.Contains('/'))
{
WaitFromColse();
MessageUtil.ShowTips("第" + (i + startRow).ToString() + "行,合同行号为空!");
return;
}
string orderNo = orderNoseq.Substring(0, orderNoseq.LastIndexOf('/'));
string orderSeq = orderNoseq.Substring(orderNoseq.LastIndexOf('/') + 1);
double heightnkmin = 0;
double heightnkmax = 0;
listOrderNo.Add(orderNoseq);
#region 取系统数据
System.Data.DataTable dt = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreOrderCraftInfo.getSaleOrderStatus",
new object[] { orderNo, orderSeq }, this.ob);
if (dt != null && dt.Rows.Count > 0)
{
ArrayList param = new ArrayList();
double outdiameter = 0;
double wallthick = 0;
param.Add(dt.Rows[0]["ORD_LN_PK"].ToString());
param.Add(dt.Rows[0]["ORD_LN_PK"].ToString());
param.Add(dt.Rows[0]["INDEX_SEQ"].ToString());
System.Data.DataTable dtPro = ServerHelper.GetData("com.steering.pss.plnsaleord.order.CoreOrderCraftInfo.getOrderCraftpath",
new object[] { param }, this.ob);
if (dtPro != null && dtPro.Rows.Count > 0)
{
System.Data.DataTable dtPath = null;
dtPro.DefaultView.RowFilter = "PROCESS_CODE= 'D'";
dtPath = dtPro.DefaultView.ToTable();
if (dtPath != null && dtPath.Rows.Count > 0)
{
craftFile.CraftPath = dtPath.Rows[0]["PROCESS_DESC_C"].ToString();
}
dtPro.DefaultView.RowFilter = "PROCESS_CODE= 'F'";
dtPath = dtPro.DefaultView.ToTable();
if (dtPath != null && dtPath.Rows.Count > 0)
{
craftFile.RclInfo = dtPath.Rows[0]["PROCESS_DESC_C"].ToString();
}
}
double.TryParse(dt.Rows[0]["WALLTHICK"].ToString(), out wallthick);
double.TryParse(dt.Rows[0]["OUTDIAMETER"].ToString(), out outdiameter);
craftFile.ProducJx = dt.Rows[0]["PRODUCNAME"].ToString();
craftFile.Steelname = dt.Rows[0]["STEELNAME"].ToString();
craftFile.Steelcode = dt.Rows[0]["STEELCODE"].ToString();
craftFile.Outdiameter = outdiameter.ToString();
craftFile.Wallthick = wallthick.ToString();
craftFile.ModelCode = dt.Rows[0]["MODEL_CODE"].ToString();
craftFile.ModelDesc = dt.Rows[0]["MODEL_DESC"].ToString();
craftFile.LengthExtent = dt.Rows[0]["LENGTHDISC"].ToString();
craftFile.Gradecode = dt.Rows[0]["GRADECODE_ALL"].ToString();
craftFile.BjType = dt.Rows[0]["BJ_TYPE"].ToString();
craftFile.PaydownDpt = dt.Rows[0]["ENDGXNAME"].ToString();
craftFile.MonitorInfo = dt.Rows[0]["MONITORDEMAND"].ToString();
craftFile.SDivD = wallthick / outdiameter;
}
#endregion
craftFile.OrderNo = orderNo;
craftFile.OrderSeq = orderSeq;
craftFile.CraftFileNo = arr[i, colCraftFileNo].ToString();
craftFile.StdLgNo = arr[i, colstdLgNo].ToString();
craftFile.StdZgNo = arr[i, colstdZgNo].ToString();
craftFile.StdGjgNo = arr[i, colstdGjgNo].ToString();
craftFile.CraftFileMan = arr[i, colcraftFileMan].ToString();
double.TryParse(arr[i, colheightNkMin].ToString(), out heightnkmin);
craftFile.HeightNkMin = heightnkmin.ToString();
double.TryParse(arr[i, colheightNkMax].ToString(), out heightnkmax);
craftFile.HeightNkMax = heightnkmax.ToString();
if (colversionChange != -1)
{
if (!arr[i, colversionChange].ToString().Equals(""))
{
craftFile.VersionNo = "True";
}
}
if (colversionDesc != -1)
{
craftFile.VersionDesc = arr[i, colversionDesc].ToString();
}
craftFile.CreateName = UserInfo.GetUserName();
ListCraftFile.Add(craftFile);
}
}
CoreClientParam ccp = new CoreClientParam();
ccp.ServerName = "com.steering.pss.plnsaleord.order.CoreOrderCraftInfo";
ccp.MethodName = "saveCraftInfo";
ccp.ServerParams = new object[] { ListCraftFile, startRow };
ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
WaitFromColse();
if (ccp.ReturnCode != -1)
{
MessageUtil.ShowTips(ccp.ReturnInfo);
}
else
{
MessageUtil.ShowError("导入失败!" + ccp.ReturnInfo);
}
}
catch (Exception ex)
{
WaitFromColse();
MessageBox.Show(ex.Message);
}
}
///
/// 关闭
///
private void doClose()
{
uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Exit();
}
private void FrmOrderCraftImport_FormClosed(object sender, FormClosedEventArgs e)
{
uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Exit();
}
private void ultraNumRowStart_ValueChanged(object sender, EventArgs e)
{
ultraNumRowEnd.MinValue = ultraNumRowStart.Value;
}
private void ultraNumRowEnd_ValueChanged(object sender, EventArgs e)
{
ultraNumRowStart.MaxValue = ultraNumRowEnd.Value;
}
///
/// object二维数组转string二维数组
///
///
///
private string[,] ObjectToString(object[,] obj)
{
int rows = obj.GetLength(0); //获取m_objRangeArrayValue的行数
int columns = obj.GetLength(1); //获取m_objRangeArrayValue的列数
object[,] param = new object[rows, columns]; //转化为起始为0的数组
Array.Copy(obj, param, rows * columns); //临时结果,学习用
string[,] str = new string[param.GetLength(0), param.GetLength(1)];
for (int i = 0; i < str.GetLength(0); i++)
{
for (int j = 0; j < str.GetLength(1); j++)
{
if (param[i, j] == null)
{
str[i, j] = "";
}
else
{
str[i, j] = param[i, j].ToString();
}
}
}
return str;
}
///
/// 等待窗口
///
private void WaitFromOpen()
{
this.Cursor = Cursors.WaitCursor; //控制鼠标的样式为等待
if (Constant.WaitingForm == null)
{
Constant.WaitingForm = new WaitingForm();
}
Constant.WaitingForm.ShowToUser = true;
Constant.WaitingForm.Show();
Constant.WaitingForm.Update();
}
///
/// 关闭等待
///
private void WaitFromColse()
{
this.Cursor = Cursors.Default;
Constant.WaitingForm.ShowToUser = false;
Constant.WaitingForm.Close();
Constant.WaitingForm = null;
}
}
}