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.Tool;
using Core.Mes.Client.Comm.Server;
using com.steering.pss.plnsaleord.order.model;
using System.Globalization;
using Core.Mes.Client.Comm;
namespace Core.StlMes.Client.PlnSaleOrd.PopupWindow
{
public partial class FrmImportSetMatJg : FrmBase
{
///
/// 模板路径
///
string modelPatch = "";
///
/// 模板路径
///
public string ModelPatch
{
get { return modelPatch; }
set { modelPatch = value; }
}
public FrmImportSetMatJg()
{
InitializeComponent();
}
public FrmImportSetMatJg(OpeBase openbase)
{
this.ob = openbase;
InitializeComponent();
}
private void FrmImportSetOrder_Load(object sender, EventArgs e)
{
Init();
}
///
/// 初始化
///
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;
}
}
///
/// 保存
///
private void doSave()
{
try
{
ArrayList messageErr = new ArrayList();
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 colf_in_time = -1;
int colspec_jg_desc = -1;
int colmodel_desc = -1;
int colsteelname = -1;
int colcoat_type = -1;
int coljg_orderno = -1;
int colfinal_user_desc = -1;
int coljudge_stove_no = -1;
int colbatch_no = -1;
int colpro_num = -1;
int colsingleweight = -1;
int colpro_wt = -1;
int colgradename = -1;
int colmin_d = -1;
int colmin_h = -1;
int colsoure_name = -1;
int colmemo = -1;
int coloutdiameter = -1;
int colwallthick = -1;
int coljskbz = -1;
int coljgfl = -1;
int coljsbz = -1;
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("技术科备注"))
{
coljskbz = i;
}
if (head[0, i].Trim().Equals("入库日期"))
{
colf_in_time = i;
}
if (head[0, i].Trim().Equals("对应规格"))
{
colspec_jg_desc = i;
}
if (head[0, i].Trim().Equals("扣型"))
{
colmodel_desc = i;
}
if (head[0, i].Trim().Equals("钢级"))
{
colsteelname = i;
}
if (head[0, i].Trim().Equals("接箍分类"))
{
coljgfl = i;
}
if (head[0, i].Trim().Equals("涂层"))
{
colcoat_type = i;
}
if (head[0, i].Trim().Equals("合同号"))
{
coljg_orderno = i;
}
if (head[0, i].Trim().Equals("合同用户"))
{
colfinal_user_desc = i;
}
if (head[0, i].Trim().Equals("炉号"))
{
coljudge_stove_no = i;
}
if (head[0, i].Trim().Equals("批号"))
{
colbatch_no = i;
}
if (head[0, i].Trim().Equals("库存个数"))
{
colpro_num = i;
}
if (head[0, i].Trim().Equals("单重(KG)"))
{
colsingleweight = i;
}
if (head[0, i].Trim().Equals("库存重量"))
{
colpro_wt = i;
}
if (head[0, i].Trim().Equals("钢种"))
{
colgradename = i;
}
if (head[0, i].Trim().Equals("原料外径"))
{
colmin_d = i;
}
if (head[0, i].Trim().Equals("原料壁厚"))
{
colmin_h = i;
}
if (head[0, i].Trim().Equals("标准"))
{
coljsbz = i;
}
if (head[0, i].Trim().Equals("来源"))
{
colsoure_name = i;
}
if (head[0, i].Trim().Equals("备注"))
{
colmemo = i;
}
if (head[0, i].Trim().Equals("成品外径"))
{
coloutdiameter = i;
}
if (head[0, i].Trim().Equals("成品长度"))
{
colwallthick = i;
}
}
//if (colOrderPk == -1)
//{
// MessageUtil.ShowError("未找到交货编码PK的列");
// return;
//}
#endregion
ArrayList list = new ArrayList();
string[,] arr = ObjectToString(uC_EmbedExcelIntoWinFormNoDLL1.GetRangeArray_Value(
"A" + startRow, ExcelHelper.SeqToXlsCol[colNum + 1] + endRow));
if (arr == null)
{
return;
}
WaitFromOpen();
for (int i = 0; i < arr.GetLength(0); i++)
{
ArrayList param = new ArrayList();
CouplingMatMEntity entity = new CouplingMatMEntity();
//string orderPk = arr[i, colOrderPk].Trim();
//string ordLnDlyPk = "";
//string plnDivideId = "";
//if (orderPk.Equals(""))
//{
// messageErr.Add("第" + (i + startRow).ToString() + "条数据PK码为空");
// continue;
//}
//if (orderPk.Contains('-'))
//{
// int lenPk = orderPk.LastIndexOf('-');
// ordLnDlyPk = orderPk.Substring(0, lenPk);
// plnDivideId = orderPk.Substring(lenPk + 1, orderPk.Length - lenPk - 1);
//}
//else
//{
// ordLnDlyPk = orderPk;
//}
//if (ordLnDlyPk.Equals(""))
//{
// messageErr.Add("第" + (i + startRow).ToString() + "条数据PK码有误。");
// continue;
//}
//if (colRollMonth != -1)
//{
// DateTime date = new DateTime();
// string rollMonth = arr[i, colRollMonth].ToString();
// if (DateTime.TryParseExact(rollMonth, "yyyyMM", null, DateTimeStyles.None, out date))
// {
// entity.RollMonth = date.ToString("yyyy-MM");
// }
//}
entity.JudgeStoveNo = arr[i, coljudge_stove_no].ToString().Trim();
//entity.JgOrderno = arr[i, coljg_orderno].ToString().Trim();
//string rollMonth = arr[i, colf_in_time].ToString().Trim();
//DateTime date = new DateTime();
//if (DateTime.TryParseExact(rollMonth, "yyyyMM", null, DateTimeStyles.None, out date))
//{
// entity.FInTime = date.ToString("yyyy-MM");
//}
entity.FinTime = DateTime.Parse(arr[i, colf_in_time].ToString().Trim()).ToString("yyyy-MM-dd");
entity.SpecJgDesc = arr[i, colspec_jg_desc].ToString().Trim();
entity.ModelDesc = arr[i, colmodel_desc].ToString().Trim();
entity.Steelname = arr[i, colsteelname].ToString().Trim();
entity.CoatType = arr[i, colcoat_type].ToString().Trim();
entity.BatchNo = arr[i, colbatch_no].ToString().Trim();
entity.FinalUserDesc= arr[i, colfinal_user_desc].ToString().Trim();
entity.ProNum = Convert.ToDecimal(arr[i, colpro_num].ToString().Trim());
entity.Singleweight = Convert.ToDecimal(arr[i, colsingleweight].ToString().Trim());
entity.ProWt = Convert.ToDecimal(arr[i, colpro_wt].ToString().Trim());
entity.Gradename = arr[i, colgradename].ToString().Trim();
entity.MinD = Convert.ToDecimal(arr[i, colmin_d].ToString().Trim());
entity.MinH = Convert.ToDecimal(arr[i, colmin_h].ToString().Trim());
entity.SoureName = arr[i, colsoure_name].ToString().Trim();
entity.JudgeStdName=arr[i, coljsbz].ToString().Trim();
entity.Memo = "技术科备注:" + arr[i, coljskbz].ToString().Trim() + ",接箍分类:" + arr[i, coljgfl].ToString().Trim() + ",合同号:" + arr[i, coljg_orderno].ToString().Trim() + ",合同用户:" + arr[i, colfinal_user_desc].ToString().Trim() + ",备注:" + arr[i, colmemo].ToString().Trim();
entity.Outdiameter = Convert.ToDecimal(arr[i, coloutdiameter].ToString().Trim());
//entity.Wallthick = Convert.ToDecimal(arr[i, colwallthick].ToString().Trim());
entity.Aimlength = Convert.ToDecimal(arr[i, colwallthick].ToString().Trim());
list.Add(Core.Mes.Client.Comm.Format.JSONFormat.Format(entity));
}
CoreClientParam ccp = new CoreClientParam();
ccp.ServerName = "com.steering.pss.plnsaleord.planStove.FrmImportSetMatJg";
ccp.MethodName = "saveOrderSetlog";
ccp.ServerParams = new object[] { list, this.UserInfo.GetUserName() };
ccp = ob.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
WaitFromColse();
if (ccp.ReturnCode == -1) return;
//MessageUtil.ShowTips(ccp.ReturnInfo);
if (ccp.ReturnInfo.Equals("成功!"))
{
if (messageErr.Count == 0)
{
MessageUtil.ShowTips("导入成功,共" + list.Count + "条。");
}
else
{
MessageUtil.ShowTips(list.Count + "条导入成功," + messageErr.Count + "条导入失败。\n" + messageErr[0]);
}
}
else
{
MessageUtil.ShowTips("导入失败,共" + list.Count + "条。");
}
}
catch (Exception ex)
{
WaitFromColse();
if (!(ex is MESException))
{
MessageUtil.ShowError(ex.Message);
}
}
}
///
/// 打开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 doClose()
{
uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Exit();
}
///
/// 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;
}
private void FrmImportSetOrder_FormClosed(object sender, FormClosedEventArgs e)
{
uC_EmbedExcelIntoWinFormNoDLL1.AppExcel_Exit();
}
}
}