Files
Groupware/Project/_Management/fImpEquipment.cs

287 lines
10 KiB
C#

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;
namespace Project._Management
{
public partial class fImpEquipment : Form
{
DataTable dt = null;
DataTable dtExcel = new DataTable();
Project._Management.fEquipment.eTabletype imptype = fEquipment.eTabletype.MOLD;
public fImpEquipment(Project._Management.fEquipment.eTabletype type_)
{
InitializeComponent();
this.FormClosed += __Closed;
imptype = type_;
switch (imptype)
{
case fEquipment.eTabletype.FOL:
dt = new dsEQ.EquipmentFDataTable();
break;
case fEquipment.eTabletype.MOLD:
dt = new dsEQ.EquipmentMEDataTable();
break;
case fEquipment.eTabletype.BUMP:
dt = new dsEQ.EquipmentBDataTable();
break;
}
}
private void __Load(object sender, EventArgs e)
{
this.Text = string.Format("Data Import({0})", this.imptype);
var form = this as Form;
Pub.SetFormStatus(ref form, this.Name, true);
this.Show();
Application.DoEvents();
}
void __Closed(object sender, FormClosedEventArgs e)
{
var form = this as Form;
Pub.SetFormStatus(ref form, this.Name, false);
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
OpenFileDialog od = new OpenFileDialog();
od.Filter = "excel|*.xlsx|all files|*.*";
od.InitialDirectory = Util.CurrentPath + "model";
od.FilterIndex = 1;
od.RestoreDirectory = true;
if (od.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
textBox1.Text = od.FileName;
}
private string[] getCSVFormat(string line)
{
List<string> datas = new List<string>();
var charlist = line.ToCharArray();
int c = 0;
System.Text.StringBuilder sb = new StringBuilder();
Boolean findCom = false;
foreach (var ch in charlist)
{
if (ch == '"')
{
if (findCom == false)
findCom = true;
else findCom = false;
}
else if (ch == ',')
{
if (findCom)
{
sb.Append(ch);
}
else
{
datas.Add(sb.ToString());
sb.Clear();
findCom = false;
}
}
else sb.Append(ch);
}
return datas.ToArray();
}
private void button1_Click(object sender, EventArgs e)
{
dtExcel.Columns.Clear();
libxl.Book book;// = new libxl.BinBook();
book = new libxl.XmlBook();
book.setKey("Amkor Technology korea, Inc", "windows-282b2b0800c5e0016bb06a6fafjfd6o8");
book.load(textBox1.Text);
var sheet = book.getSheet(0);
var MaxRow = sheet.lastRow();
var MinRow = sheet.firstRow();
List<string> cols = new List<string>();
for (int r = MinRow; r <= MaxRow; r++)
{
DataRow dr = null;
if (r > 0) dr = dtExcel.NewRow();
for (int c = sheet.firstCol(); c <= sheet.lastCol(); c++)
{
var strVallue = sheet.readStr(r, c);
if (r == 0)
{
cols.Add(strVallue);
this.dtExcel.Columns.Add(strVallue);
}
else
{
if (!cols[c].isEmpty())
dr[cols[c]] = strVallue;
}
}
if (dr != null) dtExcel.Rows.Add(dr);
}
dtExcel.AcceptChanges();
//
book = null;
this.bs.DataSource = dtExcel;
this.dataGridView1.DataSource = dtExcel;
this.bn.BindingSource = this.bs;
}
private void button2_Click(object sender, EventArgs e)
{
dsMSSQLTableAdapters.LineCodeTableAdapter ta = new dsMSSQLTableAdapters.LineCodeTableAdapter();
var lineTd = ta.GetData();
lineTd.AcceptChanges();
//12,13
foreach (DataRow dr in dt.Rows)
{
var linecode = dr[12].ToString();
var linedesc = dr[13].ToString();
var codeDrows = lineTd.Select("code='" + linecode + "'");
if (codeDrows.Length == 0)
{
var newdr = lineTd.NewLineCodeRow();
newdr.code = linecode;
newdr.memo = linedesc;
var linebuf = linedesc.Split('-');
if (linebuf.Length > 1)
{
newdr.team = linebuf[0];
newdr.part = linebuf[1];
}
else
{
newdr.team = linedesc;
}
newdr.wuid = Pub.Login.no;
newdr.wdate = DateTime.Now;
lineTd.AddLineCodeRow(newdr);
}
}
ta.Update(lineTd);
lineTd.AcceptChanges();
Util.MsgE("test");
}
private void button3_Click(object sender, EventArgs e)
{
//라인코드를 읽어서 값을 기록해준다.
var taLine = new dsMSSQLTableAdapters.LineCodeTableAdapter();
var lineTd = taLine.GetData();
lineTd.AcceptChanges();
dt.Clear();
dt.AcceptChanges();
var dateStr = this.dateTimePicker1.Value.ToShortDateString();
this.progressBar1.Value = 0;
this.progressBar1.Maximum = dtExcel.Rows.Count;
//12,13
foreach (DataRow dr in dtExcel.Rows)
{
this.progressBar1.Value += 1;
var linecode = dr[12].ToString();
var linedesc = dr[13].ToString();
var lineT = string.Empty;
var lineP = string.Empty;
//없는 라인코드는 추가
var lineDrows = lineTd.Select("code='" + linecode + "'");
if (lineDrows.Length == 0)
{
var linebuf = linedesc.Split('-');
if (linebuf.Length > 1)
{
lineT = linebuf[0];
lineP = linebuf[1];
}
else
{
lineT = linedesc;
lineP = string.Empty;
}
var newli = lineTd.NewLineCodeRow();
newli.code = linecode;
newli.team = lineT;
newli.part = lineP;
newli.memo = linedesc;
newli.except = false;
newli.wuid = Pub.Login.no;
newli.wdate = DateTime.Now;
lineTd.AddLineCodeRow(newli);
}
else
{
var lineDr = lineDrows[0] as dsMSSQL.LineCodeRow;
lineT = lineDr.team;
lineP = lineDr.part;
}
//데이터추가
var newdr = dt.NewRow();
newdr["pdate"] = dateTimePicker1.Value.ToShortDateString();
newdr["asset"] = dr[6].ToString();
newdr["grp"] = dr[0].ToString();
newdr["type"] = dr[2].ToString();
newdr["model"] = dr[3].ToString();
newdr["linecode"] = linecode;
newdr["lineT"] = lineT;
newdr["lineP"] = lineP;
newdr["serial"] = dr[7].ToString();
newdr["manu"] = dr[9].ToString();
newdr["primary"] = true;
newdr["wuid"] = Pub.Login.no;
newdr["wdate"] = DateTime.Now;
newdr["except"] = false;
newdr["memo"] = string.Empty;
if (imptype == fEquipment.eTabletype.BUMP) newdr["param1"] = "8\"";
else newdr["param1"] = string.Empty;
dt.Rows.Add(newdr);
}
taLine.Update(lineTd);
lineTd.AcceptChanges();
switch (imptype)
{
case fEquipment.eTabletype.MOLD:
var taE = new dsEQTableAdapters.EquipmentMETableAdapter();
taE.DeleteData(dateStr);
taE.Update((dsEQ.EquipmentMEDataTable)dt);
break;
case fEquipment.eTabletype.BUMP:
var taB = new dsEQTableAdapters.EquipmentBTableAdapter();
taB.DeleteData(dateStr);
taB.Update((dsEQ.EquipmentBDataTable)dt);
break;
case fEquipment.eTabletype.FOL:
var taF = new dsEQTableAdapters.EquipmentFTableAdapter();
taF.DeleteData(dateStr);
taF.Update((dsEQ.EquipmentFDataTable)dt);
break;
}
dt.AcceptChanges();
Util.MsgE("test");
}
}
}