1738 lines
70 KiB
C#
1738 lines
70 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.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Project.Dialog
|
|
{
|
|
public partial class fLoaderInfo : Form
|
|
{
|
|
string PrintPos = "";
|
|
|
|
public fLoaderInfo(List<string> errlist)
|
|
{
|
|
InitializeComponent();
|
|
Pub.flag.set(eFlag.WAIT_LOADERINFO, true, "_LOAD");
|
|
this.FormClosed += FLoaderInfo_FormClosed;
|
|
this.lstErrmsg.Items.Clear();
|
|
|
|
if (errlist != null)
|
|
{
|
|
|
|
foreach (var item in errlist)
|
|
AddErrorMessage(item);
|
|
}
|
|
|
|
}
|
|
|
|
void AddErrorMessage(string msg)
|
|
{
|
|
if (this.lstErrmsg.InvokeRequired)
|
|
{
|
|
this.lstErrmsg.BeginInvoke(new Action(() =>
|
|
{
|
|
//동일한 태그를 가진 항목이 존재하는가?
|
|
if (lstErrmsg.FindString(msg) < 0)
|
|
lstErrmsg.Items.Add(string.Format("{0}", msg));
|
|
}));
|
|
}
|
|
else
|
|
{
|
|
//동일한 태그를 가진 항목이 존재하는가?
|
|
if (lstErrmsg.FindString(msg) < 0)
|
|
lstErrmsg.Items.Add(string.Format("{0}", msg));
|
|
}
|
|
}
|
|
|
|
private void FLoaderInfo_FormClosed(object sender, FormClosedEventArgs e)
|
|
{
|
|
//이미지해제 210329
|
|
if (this.iv1.Image != null)
|
|
{
|
|
this.iv1.Image.Dispose();
|
|
this.iv1.Image = null;
|
|
}
|
|
|
|
Pub.flag.set(eFlag.WAIT_LOADERINFO, false, "_CLOSE");
|
|
|
|
//사용자가 정보를 정확히 입력하지 않고 닫았다
|
|
if (Pub.Result.ItemData[1].VisionData.Confirm == false)
|
|
{
|
|
if (Pub.sm.Step == StateMachine.eSMStep.RUN)
|
|
{
|
|
Pub.Result.SetResultMessage(eResult.OPERATION, eECode.CAM_NOBARCODEL, eNextStep.pause, 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void fLoaderInfo_Load(object sender, EventArgs e)
|
|
{
|
|
//현재 바코드가 읽었단 자료를 모두 표시한다.
|
|
this.tbRID.Text = Pub.Result.ItemData[1].VisionData.RID;
|
|
this.tbRID.Tag = Pub.Result.ItemData[1].VisionData.RID0;
|
|
|
|
//if (Pub.Result.JobType == "13" )
|
|
//{
|
|
// if (Pub.Result.ItemData[1].VisionData.SID.StartsWith("103"))
|
|
// {
|
|
// tbSID.Text = Pub.Result.ItemData[1].VisionData.SID;
|
|
// }
|
|
// else
|
|
// {
|
|
// var msg = $"13작업이나 입력된 SID가 103이 아니여서 적용하지 않습니다. sid:{Pub.Result.ItemData[1].VisionData.SID}";
|
|
// Pub.AddSystemLog(Application.ProductVersion, "LoaderInfo", msg);
|
|
// Pub.log.AddAT(msg);
|
|
// }
|
|
//}
|
|
//else
|
|
{
|
|
tbSID.Text = Pub.Result.ItemData[1].VisionData.SID;
|
|
}
|
|
|
|
|
|
lbSID0.Text = Pub.Result.ItemData[1].VisionData.SID0;
|
|
tbVLOT.Text = Pub.Result.ItemData[1].VisionData.VLOT;
|
|
|
|
if (lbSID0.Text.isEmpty() == false)
|
|
lbSID0.Tag = lbSID0.Text;
|
|
|
|
//수량메뉴얼입력칸
|
|
if (Pub.Result.Option_QtyUpdateM)
|
|
{
|
|
if (Pub.Result.ItemData[1].VisionData.QTYRQ == true)
|
|
{
|
|
//수동입력이나 바코드에서 RQ값이 들어있는 상태이니 그것을 사용한다.
|
|
//lock (Pub.Result.ItemData[1].VisionData.barcodelist)
|
|
{
|
|
var rqBcd = Pub.Result.ItemData[1].VisionData.barcodelist.Where(t => t.Data.StartsWith("RQ")).FirstOrDefault();
|
|
if (rqBcd != null)
|
|
{
|
|
var newqty = rqBcd.Data.Substring(2).Trim();
|
|
Pub.log.Add($"수량업데이트 {tbQTY.Text}->{newqty}");
|
|
tbQTY.Text = newqty;
|
|
}
|
|
else
|
|
{
|
|
Pub.log.AddAT("RQ가 설정되어있었으나 해당 값이 코드 목록에 없어 수량을 채우지 않습니다");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
//수량을 직접입력하는 경우이므로 수량값을 지워버린다.
|
|
Pub.log.Add($"수량업데이트 {tbQTY.Text}-> (직접입력으로인한삭제)");
|
|
tbQTY.Text = string.Empty;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Pub.log.Add($"수량업데이트 {tbQTY.Text}->{Pub.Result.ItemData[1].VisionData.QTY}");
|
|
tbQTY.Text = Pub.Result.ItemData[1].VisionData.QTY;
|
|
}
|
|
|
|
lbQTY0.Text = Pub.Result.ItemData[1].VisionData.QTY0;
|
|
tbDate.Text = Pub.Result.ItemData[1].VisionData.MFGDATE;
|
|
tbVName.Text = Pub.Result.ItemData[1].VisionData.VNAME;
|
|
tbpartno.Text = Pub.Result.ItemData[1].VisionData.PARTNO;
|
|
|
|
TbCustCode.Text = Pub.Result.ItemData[1].VisionData.temp_custcode; //210317
|
|
tbCustName.Text = Pub.Result.ItemData[1].VisionData.temp_custname;
|
|
//라벨위치 정보표시 - 210127
|
|
DisplayLabelPos(Pub.Result.ItemData[1].VisionData.LabelPositionData);
|
|
|
|
//프린트정보표시
|
|
this.PrintPos = Pub.Result.ItemData[1].VisionData.PrintPositionData;
|
|
DisplayPrintPos(Pub.Result.ItemData[1].VisionData.PrintPositionData);
|
|
|
|
//이미지표시 210121
|
|
this.iv1.Shapes.Clear();
|
|
if (Pub.Result.ItemData[1].VisionData.image != null)
|
|
{
|
|
//이미지복사해서사용 210329
|
|
var keyImage = Pub.Result.ItemData[1].VisionData.image.Clone();
|
|
this.iv1.Image = keyImage;
|
|
}
|
|
|
|
this.lvbcdList.Items.Clear();
|
|
|
|
//키엔스로부터 읽은 바코드 목록을 표시한다(우측)
|
|
func_displaybcdlist();
|
|
|
|
if (iv1.Image != null)
|
|
iv1.ZoomFit();
|
|
|
|
|
|
selectInput(this.tbRID);
|
|
|
|
//자동판단데이터 확인; (101-103d우선처리)
|
|
//이제 모든 sid변환은 1,3컬럼만 사용한다, 22-01-04
|
|
if (Pub.Result.JobType2 == "13" && tbSID.Text.StartsWith("10")) func_sidconv(true);
|
|
|
|
//릴아이디가 없는 경우 자동 생성해준다.
|
|
Boolean updaterid = false;
|
|
var custCode = TbCustCode.Text;
|
|
if (Pub.Result.Option_NewReelID)
|
|
{
|
|
|
|
if (tbRID.Text.isEmpty())
|
|
{
|
|
if (custCode.isEmpty() == false) updaterid = true;
|
|
else Pub.log.AddAT("릴 아이디를 생성해야하는데 커스터머 코드가 없습니다.");
|
|
}
|
|
else if (custCode.isEmpty() == false)
|
|
{
|
|
//릴id는 있는데. customer 코드값이 다르면 다시 만들어줘야한다.
|
|
if (tbRID.Text.StartsWith("RC" + custCode) == false)
|
|
{
|
|
Pub.log.Add("릴 ID의 cust 코드가 달라 다시 생성합니다");
|
|
updaterid = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (updaterid)
|
|
{
|
|
var YY = DateTime.Now.Year.ToString().Substring(2);
|
|
var MM = DateTime.Now.Month.ToString("X");
|
|
var datestr = YY + MM;
|
|
var newsn = AmkorReelID.GetNextSNbyYM(datestr);
|
|
|
|
var data = "R";
|
|
data += "C";
|
|
data += custCode.Trim();
|
|
data += "4";
|
|
data += "A";
|
|
data += YY;
|
|
data += MM;
|
|
data += newsn;
|
|
if (data.Length == 15)
|
|
{
|
|
this.tbRID.Text = data;
|
|
Pub.log.Add("기초자료가 있어 릴 id를 자동 생성했음" + data);
|
|
}
|
|
else
|
|
{
|
|
Util.MsgE("릴 ID생성했지만 15자리가 아님 프로그램 오류(" + data + ")");
|
|
}
|
|
}
|
|
|
|
|
|
//자동완료이며, 사용자 확인이 off된상태, 수량입력도 false 된 상태여야함
|
|
if (Pub.Result.Option_AutoConf && Pub.Result.Option_Confirm1 == false && Pub.Result.Option_QtyUpdateM == false && Pub.Result.JobFirst == false)
|
|
{
|
|
//자료가 모두 있는지 확인한다.
|
|
tmAutoConfirm.Start();
|
|
}
|
|
|
|
}
|
|
|
|
void func_displaybcdlist()
|
|
{
|
|
var angok = Pub.Result.ItemData[1].VisionData.BaseAngle(out string msg, out Class.KeyenceBarcodeData bcd);
|
|
lock (Pub.Result.ItemData[1].VisionData.barcodelist)
|
|
{
|
|
var no = 1;
|
|
lvbcdList.Items.Clear(); //기존꺼 삭제
|
|
foreach (var item in Pub.Result.ItemData[1].VisionData.barcodelist)
|
|
{
|
|
var lv = this.lvbcdList.Items.Add(item.Angle.ToString("N1"));
|
|
lv.SubItems.Add(item.Data);
|
|
//lv.SubItems.Add(item.CenterPX.X.ToString());
|
|
//lv.SubItems.Add(item.CenterPX.Y.ToString());
|
|
var c = new StdLabelPrint.CAmkorSTDBarcode(item.Data);
|
|
if (c.isValid) lv.ForeColor = Color.Blue;
|
|
else lv.ForeColor = Color.Black;
|
|
|
|
if (item.sym == "1") lv.BackColor = Color.Gold;
|
|
else if (item.sym == "2") lv.BackColor = Color.Lime;
|
|
else lv.BackColor = Color.WhiteSmoke;
|
|
|
|
//회전에 사용할 데이터라면 체크를 해준다.
|
|
if (angok && bcd.Data == item.Data)
|
|
{
|
|
if (this.lvbcdList.CheckedItems.Count == 0)
|
|
lv.Checked = true;
|
|
}
|
|
else lv.Checked = false;
|
|
|
|
//vertext 표시
|
|
var vt = item.vertex;
|
|
if (vt.Length == 4)
|
|
{
|
|
Color lcolor = no % 2 == 0 ? Color.Tomato : Color.Lime;
|
|
iv1.AddShapeLine(vt[0], vt[1], lcolor);
|
|
iv1.AddShapeLine(vt[1], vt[2], lcolor);
|
|
iv1.AddShapeLine(vt[2], vt[3], lcolor);
|
|
iv1.AddShapeLine(vt[3], vt[0], lcolor);
|
|
|
|
iv1.AddShapeText(vt[0], no.ToString(), Color.Black); //210312
|
|
}
|
|
|
|
//가장우측상단에 번호를 표시한다.
|
|
|
|
|
|
no += 1;
|
|
}
|
|
}
|
|
}
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void label6_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
string TagStr = string.Empty;
|
|
void selectInput(Control c)
|
|
{
|
|
TagStr = string.Empty;
|
|
if (c is TextBox)
|
|
{
|
|
var tb = c as TextBox;
|
|
TagStr = tb.Tag.ToString();
|
|
}
|
|
else if (c is Label)
|
|
{
|
|
var lb = c as Label;
|
|
TagStr = lb.Tag.ToString();
|
|
}
|
|
|
|
//동일태그를 가진 textbox 의 배경색을 업데이트한다
|
|
foreach (Control tb in groupBox2.Controls)
|
|
{
|
|
if (tb is TextBox)
|
|
{
|
|
if (tb.Tag.ToString() == TagStr)
|
|
{
|
|
tb.BackColor = Color.SkyBlue;
|
|
}
|
|
else tb.BackColor = SystemColors.Control;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void button2_Click(object sender, EventArgs e)
|
|
{
|
|
//if (this.listView1.FocusedItem == null)
|
|
//{
|
|
// Util.MsgE("입력할 바코드 값을 먼저 선택하세요");
|
|
// return;
|
|
//}
|
|
if (this.TagStr.isEmpty())
|
|
{
|
|
Util.MsgE("데이터를 입력할 칸을 먼저 클릭 하세요");
|
|
return;
|
|
}
|
|
var lvitem = this.lvbcdList.FocusedItem;
|
|
if (lvitem == null) return;
|
|
|
|
var lvValue = lvitem.SubItems[1].Text.Trim();
|
|
if (lvValue.isEmpty())
|
|
{
|
|
Util.MsgE("선택한 자료에 값이 없습니다\n\n다른 자료를 선택하세요");
|
|
return;
|
|
}
|
|
|
|
//선택자료가 ; 으로 분류가능하면 추가로 팝업
|
|
if (lvValue.Split(';').Length > 1)
|
|
{
|
|
var ff = new Dialog.fSelectDataList(lvValue.Split(';'));
|
|
if (ff.ShowDialog() == DialogResult.OK)
|
|
{
|
|
lvValue = ff.SelectedValue;
|
|
}
|
|
else return;
|
|
}
|
|
else if (lvValue.Split(',').Length > 1)
|
|
{
|
|
var ff = new Dialog.fSelectDataList(lvValue.Split(','));
|
|
if (ff.ShowDialog() == DialogResult.OK)
|
|
{
|
|
lvValue = ff.SelectedValue;
|
|
}
|
|
else return;
|
|
}
|
|
|
|
if (TagStr == "RID" || TagStr == "ID")
|
|
{
|
|
tbRID.Text = lvValue;
|
|
}
|
|
else if (TagStr == "SID")
|
|
{
|
|
tbSID.Text = lvValue;
|
|
|
|
//sid값을 적용했다면 프린트 위치도 확인한.다.
|
|
if (this.PrintPos.isEmpty() || this.PrintPos == "5" && lvValue.isEmpty() == false)
|
|
{
|
|
try
|
|
{
|
|
using (var db = new EEEntities())
|
|
{
|
|
var dr = db.Component_Reel_SIDInfo.Where(t => t.SID == lvValue).FirstOrDefault();
|
|
if (dr != null) //자료가잇는 경우에만 적용
|
|
{
|
|
this.PrintPos = dr.PrintPosition;
|
|
this.DisplayPrintPos(this.PrintPos);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Util.MsgE("SID:" + lvValue + " 의 인쇄위치값 불러오기 실패\n" + ex.Message);
|
|
}
|
|
}
|
|
}
|
|
else if (TagStr == "VLOT")
|
|
{
|
|
tbVLOT.Text = lvValue;
|
|
}
|
|
else if (TagStr == "QTY")
|
|
{
|
|
Pub.log.Add($"수량업데이트 {tbQTY.Text}->{lvValue}");
|
|
tbQTY.Text = lvValue;
|
|
}
|
|
else if (TagStr == "MFGDATE")
|
|
{
|
|
tbDate.Text = lvValue;
|
|
}
|
|
else if (TagStr == "SUPPLY")
|
|
{
|
|
tbVName.Text = lvValue;
|
|
}
|
|
else if (TagStr == "PARTNO")
|
|
{
|
|
tbpartno.Text = lvValue;
|
|
}
|
|
}
|
|
|
|
private void button3_Click(object sender, EventArgs e)
|
|
{
|
|
CancleAutoConfirm();
|
|
//Pub.Result.JobEndTime
|
|
//sid를 변경했다면 원본값은 sid0에 넣는다
|
|
func_sidconv(false);
|
|
}
|
|
|
|
void CancleAutoConfirm()
|
|
{
|
|
if (Pub.Result.Option_AutoConf)
|
|
{
|
|
btOK.Text = "◆ 입력 완료 ◆";
|
|
tmAutoConfirm.Stop();
|
|
}
|
|
}
|
|
|
|
void func_sidconv(Boolean auto)
|
|
{
|
|
var sid = tbSID.Text.Trim();
|
|
var jobtype = Pub.Result.JobType2;
|
|
if (jobtype == "13")
|
|
{
|
|
if (auto)
|
|
{
|
|
//데이터베이스에서 조회한다.
|
|
try
|
|
{
|
|
using (var db = new EEEntities())
|
|
{
|
|
var dr = db.Component_Reel_SIDConv.Where(t => t.SIDFrom == sid && string.IsNullOrEmpty(t.SIDTo) == false);
|
|
if (dr.Any() == true) //변환테이블자료가 있다.
|
|
{
|
|
if (dr.Count() == 1)
|
|
{
|
|
//원본에 값이 없는경우에만 생성한다
|
|
if(lbSID0.Text.isEmpty())
|
|
{
|
|
lbSID0.Tag = tbSID.Text; //변환정보가 있으니 현재 정보를 원본의 값에 넣는다
|
|
lbSID0.Text = tbSID.Text; //원본값
|
|
}
|
|
tbSID.Text = dr.First().SIDTo; //변환된 값을 현재 값에 넣는다.
|
|
Pub.log.Add(string.Format("다음 SID 자동변환 {0}->{1},작업:{2}", dr.First().SIDFrom, dr.First().SIDTo, jobtype));
|
|
}
|
|
else Pub.log.AddE(string.Format("SID 자동변환실패 {0}, 발견 SID변환정보 수량:{1}", dr.First().SIDFrom, dr.Count()));
|
|
}
|
|
else Pub.log.Add(string.Format("SID자동변경실패 변환자료 없음 sid:{0},작업:{1}", sid, jobtype));
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Pub.log.AddE("SID변환작업실패 메세지:" + ex.Message);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var f = new Dialog.fNewSID(sid);
|
|
if (f.ShowDialog() != DialogResult.OK) return;
|
|
|
|
if (lbSID0.Tag == null || lbSID0.Tag.ToString().isEmpty()) //기존에 변환된 정보가 있는가?
|
|
{
|
|
//원본값 백업
|
|
lbSID0.Tag = tbSID.Text;
|
|
lbSID0.Text = tbSID.Text;
|
|
|
|
//from & to
|
|
Pub.Result.LastSIDFrom = tbSID.Text.Trim();
|
|
Pub.Result.LastSIDTo = f.NewSID.Trim();
|
|
|
|
Pub.log.Add($"sid수동선택으로 인해 마지막 기록을 입력합니다 from={Pub.Result.LastSIDFrom},to={Pub.Result.LastSIDTo}");
|
|
}
|
|
|
|
Pub.Result.LastSIDCnt = f.FindSIDCount;
|
|
tbSID.Text = f.NewSID;
|
|
}
|
|
|
|
UpdateSID(auto);
|
|
makenewId();
|
|
}
|
|
else
|
|
{
|
|
Util.MsgE("sid변환작업 불가 :작업형태가 일치하지 않습니다 값=" + Pub.Result.JobType2);
|
|
}
|
|
}
|
|
|
|
void makenewId()
|
|
{
|
|
//ID가 잘못되었다.
|
|
if (Pub.Result.Option_NewReelID && CheckRID() == false)
|
|
{
|
|
//릴 아이디가 잘못되었다면 새로 갱신한다
|
|
var yy = DateTime.Now.ToString("yy");
|
|
var m = DateTime.Now.Month.ToString("X");
|
|
if (TbCustCode.Text.isEmpty())
|
|
{
|
|
Pub.log.AddAT("Customer 값이 없어 reelid를 새로 생성하지 못했습니다");
|
|
}
|
|
else
|
|
{
|
|
var newrid = AmkorReelID.MakeReelID(TbCustCode.Text, yy + m);
|
|
Pub.log.Add($"RID값을 자동 변경 했습니다 {tbRID.Text} -> {newrid}");
|
|
//if(tbRID.Text.isEmpty()==false) tbri
|
|
tbRID.Text = newrid;
|
|
}
|
|
}
|
|
}
|
|
|
|
void UpdateSID(Boolean auto = false)
|
|
{
|
|
//고칠게 없다.
|
|
if (TbCustCode.Text.isEmpty() == false && tbpartno.Text.isEmpty() == false && this.PrintPos.isEmpty() == false)
|
|
{
|
|
return;
|
|
}
|
|
|
|
//sid 가 변경되었으나 해당 sid 인쇄위치 및 customer / part no 값을 확인 합니다.
|
|
using (var db = new EEEntities())
|
|
{
|
|
var sid = this.tbSID.Text.Trim();
|
|
|
|
var dr = db.Component_Reel_SIDInfo.Where(t => t.SID == sid).FirstOrDefault();
|
|
if (dr == null) return;
|
|
|
|
var msg = "SID 변경으로 인해 다음 자료를 입력할까요?";
|
|
Boolean bupdate = false;
|
|
if (dr.CustCode.isEmpty() == false && dr.CustCode != TbCustCode.Text)
|
|
{
|
|
msg += "\nCustomer Code : " + dr.CustCode;
|
|
msg += "\nCustomer Name : " + dr.CustName;
|
|
bupdate = true;
|
|
}
|
|
|
|
if (dr.PartNo.isEmpty() == false && dr.PartNo != tbpartno.Text)// tbpartno.Text.isEmpty())
|
|
{
|
|
msg += "\nPart No : " + dr.PartNo;
|
|
bupdate = true;
|
|
}
|
|
|
|
if (dr.PrintPosition.isEmpty() == false)
|
|
{
|
|
msg += "\nPrint Position : " + dr.PrintPosition;
|
|
bupdate = true;
|
|
}
|
|
if (bupdate == false)
|
|
{
|
|
//Util.MsgE("변경 가능한 자료가 없습니다");
|
|
return;
|
|
}
|
|
|
|
//화면에 표시 --자동화면일떄에는 묻지않고 적용한다
|
|
if (auto == false && Util.MsgQ(msg) != DialogResult.Yes) return;
|
|
if (dr.CustCode.isEmpty() == false && TbCustCode.Text != dr.CustCode)
|
|
{
|
|
TbCustCode.Text = dr.CustCode;
|
|
tbCustName.Text = dr.CustName;
|
|
}
|
|
|
|
if (dr.PartNo.isEmpty() == false && tbpartno.Text != dr.PartNo)
|
|
{
|
|
this.tbpartno.Text = dr.PartNo;
|
|
}
|
|
|
|
if (dr.PrintPosition.isEmpty() == false)
|
|
{
|
|
this.PrintPos = dr.PrintPosition;
|
|
DisplayPrintPos(this.PrintPos);
|
|
}
|
|
|
|
//이 SID의 최근 MFGDate 와 Qty 를 추가 체크한다 210326
|
|
if (tbDate.Text.isEmpty() || tbQTY.Text.isEmpty())
|
|
{
|
|
func_CheckDateQty();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
Boolean func_CheckDateQty()
|
|
{
|
|
Boolean bwarn = false;
|
|
using (var db2 = new EEEntities())
|
|
{
|
|
var sid = this.tbSID.Text.Trim();
|
|
if (sid.isEmpty()) return false; //sid가 없다.
|
|
|
|
//최근 6시간안에서 동일한 데이터를 찾아서 제안 해준다
|
|
var sd = DateTime.Now.AddHours(-1);
|
|
var preData = db2.Component_Reel_Result.AsNoTracking().Where(t =>
|
|
t.JTYPE == Pub.Result.JobType2 &&
|
|
t.SID == sid &&
|
|
string.IsNullOrEmpty(t.QR) == false &&
|
|
t.STIME >= sd).OrderByDescending(t => t.wdate).FirstOrDefault();
|
|
|
|
//기존자료가 없다면 취소
|
|
if (preData == null) return false;
|
|
var amkorid = new StdLabelPrint.CAmkorSTDBarcode(preData.QR);
|
|
|
|
if (preData.VNAME != tbVName.Text)
|
|
{
|
|
//해당 mfgdae 가 바코드목록에 잇다면 바로 적용
|
|
//업다면 적용하고 적용 메세지 표시한다
|
|
//Pub.log.Add(string.Format("이전결과에서 값 업데이트 sid:{0},mfgdata={1}", sid, amkorid.MFGDate));
|
|
tbVName.Text = preData.VNAME;
|
|
bwarn = true;
|
|
//if (func_existbcddata(amkorid.MFGDate) == false)
|
|
{
|
|
AddErrorMessage("V.Name 이전 기록으로 업데이트");
|
|
Pub.log.Add("'V.Name' 값을 이전 기록을 통해서 입력했습니다\n" +
|
|
"이전 작업시간 : " + ((DateTime)(preData.wdate)).ToString("yyyy-MM-dd HH:mm:ss") + "\n" +
|
|
"SID : " + preData.SID + "\n" +
|
|
"MFG Date : " + amkorid.MFGDate + "\n" +
|
|
"Part No : " + amkorid.PARTNO + "\n" +
|
|
"Vender Lot : " + amkorid.VLOT + "\n" +
|
|
"Vender Name : " + amkorid.VENDERNAME + "\n" +
|
|
"QTY : " + amkorid.QTY.ToString(), true);
|
|
}
|
|
}
|
|
|
|
|
|
if (amkorid.MFGDate.isEmpty() == false && tbDate.Text.isEmpty())
|
|
{
|
|
//해당 mfgdae 가 바코드목록에 잇다면 바로 적용
|
|
//업다면 적용하고 적용 메세지 표시한다
|
|
//Pub.log.Add(string.Format("이전결과에서 값 업데이트 sid:{0},mfgdata={1}", sid, amkorid.MFGDate));
|
|
tbDate.Text = amkorid.MFGDate;
|
|
bwarn = true;
|
|
if (func_existbcddata(amkorid.MFGDate) == false)
|
|
{
|
|
AddErrorMessage("MFG 이전 기록으로 업데이트");
|
|
Pub.log.Add("'MFG Date' 값을 이전 기록을 통해서 입력했습니다\n" +
|
|
"이전 작업시간 : " + ((DateTime)(preData.wdate)).ToString("yyyy-MM-dd HH:mm:ss") + "\n" +
|
|
"SID : " + preData.SID + "\n" +
|
|
"MFG Date : " + amkorid.MFGDate + "\n" +
|
|
"Part No : " + amkorid.PARTNO + "\n" +
|
|
"Vender Lot : " + amkorid.VLOT + "\n" +
|
|
"Vender Name : " + amkorid.VENDERNAME + "\n" +
|
|
"QTY : " + amkorid.QTY.ToString(), true);
|
|
}
|
|
}
|
|
|
|
if (amkorid.QTY > 0 && tbQTY.Text.isEmpty())
|
|
{
|
|
//해당 mfgdae 가 바코드목록에 잇다면 바로 적용
|
|
//업다면 적용하고 적용 메세지 표시한다
|
|
Pub.log.Add($"수량업데이트 {tbQTY.Text}->{amkorid.QTY}");
|
|
tbQTY.Text = amkorid.QTY.ToString();
|
|
//Pub.log.Add(string.Format("이전결과에서 값 업데이트 sid:{0},qty={1}", sid, amkorid.QTY));
|
|
bwarn = true;
|
|
if (func_existbcddata(amkorid.QTY.ToString()) == false)
|
|
{
|
|
AddErrorMessage("QTY 이전 기록으로 업데이트");
|
|
Pub.log.Add("'Qty' 값을 이전 기록을 통해서 입력했습니다\n" +
|
|
"이전 작업시간 : " + ((DateTime)(preData.wdate)).ToString("yyyy-MM-dd HH:mm:ss") + "\n" +
|
|
"SID : " + preData.SID + "\n" +
|
|
"MFG Date : " + amkorid.MFGDate + "\n" +
|
|
"Part No : " + amkorid.PARTNO + "\n" +
|
|
"Vender Lot : " + amkorid.VLOT + "\n" +
|
|
"Vender Name : " + amkorid.VENDERNAME + "\n" +
|
|
"QTY : " + amkorid.QTY.ToString(), true);
|
|
}
|
|
|
|
}
|
|
|
|
if (amkorid.PARTNO.isEmpty() == false && tbpartno.Text.isEmpty())
|
|
{
|
|
//해당 mfgdae 가 바코드목록에 잇다면 바로 적용
|
|
//업다면 적용하고 적용 메세지 표시한다
|
|
tbpartno.Text = amkorid.PARTNO;
|
|
bwarn = true;
|
|
//Pub.log.Add(string.Format("이전결과에서 값 업데이트 sid:{0},PARTNO={1}", sid, amkorid.PARTNO));
|
|
if (func_existbcddata(amkorid.PARTNO) == false)
|
|
{
|
|
AddErrorMessage("PartNo 이전 기록으로 업데이트");
|
|
Pub.log.Add("'Part No' 값을 이전 기록을 통해서 입력했습니다\n" +
|
|
"이전 작업시간 : " + ((DateTime)(preData.wdate)).ToString("yyyy-MM-dd HH:mm:ss") + "\n" +
|
|
"SID : " + preData.SID + "\n" +
|
|
"MFG Date : " + amkorid.MFGDate + "\n" +
|
|
"Part No : " + amkorid.PARTNO + "\n" +
|
|
"Vender Lot : " + amkorid.VLOT + "\n" +
|
|
"Vender Name : " + amkorid.VENDERNAME + "\n" +
|
|
"QTY : " + amkorid.QTY.ToString(), true);
|
|
}
|
|
|
|
}
|
|
|
|
//Customer
|
|
if (amkorid.RID.Length > 10 && amkorid.RID.Substring(2, 4) != TbCustCode.Text.Trim())
|
|
{
|
|
//해당 mfgdae 가 바코드목록에 잇다면 바로 적용
|
|
//업다면 적용하고 적용 메세지 표시한다
|
|
TbCustCode.Text = amkorid.RID.Substring(2, 4);
|
|
bwarn = true;
|
|
//Pub.log.Add(string.Format("이전결과에서 값 업데이트 sid:{0},VLOT={1}", sid, amkorid.VLOT));
|
|
if (func_existbcddata(TbCustCode.Text) == false)
|
|
{
|
|
AddErrorMessage("Customer Code 이전 기록으로 업데이트");
|
|
Pub.log.Add("'Customer Code' 값을 이전 기록을 통해서 입력했습니다\n" +
|
|
"이전 작업시간 : " + ((DateTime)(preData.wdate)).ToString("yyyy-MM-dd HH:mm:ss") + "\n" +
|
|
"SID : " + preData.SID + "\n" +
|
|
"MFG Date : " + amkorid.MFGDate + "\n" +
|
|
"Part No : " + amkorid.PARTNO + "\n" +
|
|
"Vender Lot : " + amkorid.VLOT + "\n" +
|
|
"Vender Name : " + amkorid.VENDERNAME + "\n" +
|
|
"QTY : " + amkorid.QTY.ToString(), true);
|
|
|
|
|
|
}
|
|
button6.PerformClick();
|
|
}
|
|
|
|
|
|
if (amkorid.VLOT.isEmpty() == false && tbVLOT.Text.isEmpty())
|
|
{
|
|
//해당 mfgdae 가 바코드목록에 잇다면 바로 적용
|
|
//업다면 적용하고 적용 메세지 표시한다
|
|
tbVLOT.Text = amkorid.VLOT;
|
|
bwarn = true;
|
|
//Pub.log.Add(string.Format("이전결과에서 값 업데이트 sid:{0},VLOT={1}", sid, amkorid.VLOT));
|
|
if (func_existbcddata(amkorid.VLOT) == false)
|
|
{
|
|
AddErrorMessage("VLOT 이전 기록으로 업데이트");
|
|
Pub.log.Add("'Vender LOT' 값을 이전 기록을 통해서 입력했습니다\n" +
|
|
"이전 작업시간 : " + ((DateTime)(preData.wdate)).ToString("yyyy-MM-dd HH:mm:ss") + "\n" +
|
|
"SID : " + preData.SID + "\n" +
|
|
"MFG Date : " + amkorid.MFGDate + "\n" +
|
|
"Part No : " + amkorid.PARTNO + "\n" +
|
|
"Vender Lot : " + amkorid.VLOT + "\n" +
|
|
"Vender Name : " + amkorid.VENDERNAME + "\n" +
|
|
"QTY : " + amkorid.QTY.ToString(), true);
|
|
}
|
|
|
|
}
|
|
|
|
if (amkorid.VENDERNAME.isEmpty() == false && tbVName.Text.isEmpty())
|
|
{
|
|
//해당 mfgdae 가 바코드목록에 잇다면 바로 적용
|
|
//업다면 적용하고 적용 메세지 표시한다
|
|
tbVName.Text = amkorid.VENDERNAME;
|
|
bwarn = true;
|
|
//Pub.log.Add(string.Format("이전결과에서 값 업데이트 sid:{0},VENDERNAME={1}", sid, amkorid.VENDERNAME));
|
|
if (func_existbcddata(amkorid.VENDERNAME) == false)
|
|
{
|
|
AddErrorMessage("VNAME 이전 기록으로 업데이트");
|
|
Pub.log.Add("'Vender Name' 값을 이전 기록을 통해서 입력했습니다\n" +
|
|
"이전 작업시간 : " + ((DateTime)(preData.wdate)).ToString("yyyy-MM-dd HH:mm:ss") + "\n" +
|
|
"SID : " + preData.SID + "\n" +
|
|
"MFG Date : " + amkorid.MFGDate + "\n" +
|
|
"Part No : " + amkorid.PARTNO + "\n" +
|
|
"Vender Lot : " + amkorid.VLOT + "\n" +
|
|
"Vender Name : " + amkorid.VENDERNAME + "\n" +
|
|
"QTY : " + amkorid.QTY.ToString(), true);
|
|
}
|
|
|
|
}
|
|
}
|
|
return bwarn;
|
|
|
|
}
|
|
/// <summary>
|
|
/// 키엔스 바코드 목록에서 해당 데이터가 있는지 체크합니다
|
|
/// </summary>
|
|
/// <param name="data"></param>
|
|
/// <returns></returns>
|
|
Boolean func_existbcddata(string data)
|
|
{
|
|
var lv = lvbcdList.FindItemWithText(data);
|
|
return lv != null;
|
|
}
|
|
|
|
private void btReqQty_Click(object sender, EventArgs e)
|
|
{
|
|
var msg = string.Empty;
|
|
var rid = tbRID.Text.Trim();
|
|
if (rid.isEmpty())
|
|
{
|
|
Util.MsgE("Reel ID 가 필요 합니다");
|
|
return;
|
|
}
|
|
if (Pub.setting.OnlineMode == false)
|
|
{
|
|
Util.MsgE("오프라인 모드라 사용할 수 없습니다");
|
|
return;
|
|
}
|
|
var cnt = (Amkor.RestfulService.get_stock_count(rid, out msg));
|
|
if (cnt > 0)
|
|
{
|
|
var oldCnt = int.Parse(tbQTY.Text.Replace(",", ""));
|
|
var newCnt = (int)cnt;
|
|
if (oldCnt == newCnt)
|
|
{
|
|
//수량이 동일하니 처리하지 않는다
|
|
}
|
|
else
|
|
{
|
|
//숫자가 달라지면?
|
|
if (Util.MsgQ(string.Format("수량을 변경하시겠습니까?\n현재:{0}\n서버:{1}", tbQTY.Text, newCnt)) == DialogResult.Yes)
|
|
{
|
|
Pub.log.Add($"수량업데이트 {tbQTY.Text}->{newCnt}");
|
|
tbQTY.Text = newCnt.ToString();
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Util.MsgE("서버수량 확인 실패\n\n" + msg);
|
|
}
|
|
}
|
|
|
|
private void tbSupply_TextChanged(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
private void label13_Click(object sender, EventArgs e)
|
|
{
|
|
//라벨위치
|
|
//라벨위치느느 클릭해서 고칠필요 없다
|
|
}
|
|
|
|
|
|
private void label22_Click(object sender, EventArgs e)
|
|
{
|
|
//부착위치
|
|
var lb = sender as Label;
|
|
PrintPos = lb.Tag.ToString();
|
|
DisplayPrintPos(PrintPos);
|
|
}
|
|
|
|
void DisplayPrintPos(string v)
|
|
{
|
|
var lbs = new Label[] { pb7, pb8, pb9, pb4, pb6, pb1, pb2, pb3 };
|
|
foreach (Label item in lbs)
|
|
if (item.Tag.ToString() == v) item.BackColor = Color.Blue;
|
|
else item.BackColor = Color.FromArgb(64, 64, 64);
|
|
}
|
|
|
|
|
|
//라벨은 여러 위치에서 발견될 수 있다
|
|
void DisplayLabelPos(byte[] labelpos)
|
|
{
|
|
var lbs = new Label[] { lbl1, lbl2, lbl3, lbl4, lbl6, lbl7, lbl8, lbl9 };
|
|
for (int i = 0; i < labelpos.Length; i++)
|
|
lbs[i].BackColor = labelpos[i] > 0 ? Color.Blue : Color.FromArgb(64, 64, 64);
|
|
}
|
|
|
|
private void btNewID_Click(object sender, EventArgs e)
|
|
{
|
|
var id = TbCustCode.Text; // string.Empty;
|
|
if (id.Length != 4)
|
|
{
|
|
Util.MsgE($"올바른 고객번호를 입력하세요\n" +
|
|
$"고객번호는 4자리여야 합니다\n" +
|
|
$"값 : {id}\n" +
|
|
$"길이 : {id.Length}");
|
|
return;
|
|
}
|
|
//if (tbRID.Text.Length > 4) id = tbRID.Text.Substring(0, 4);
|
|
var f = new Dialog.fNewReelID(id);
|
|
if (f.ShowDialog() != DialogResult.OK) return;
|
|
this.tbRID.Text = f.NewID;
|
|
if (f.tbCustCode.Text.Trim() != "" && f.tbCustCode.Text.Trim() != this.TbCustCode.Text.Trim())
|
|
this.TbCustCode.Text = f.tbCustCode.Text.Trim();
|
|
}
|
|
|
|
private void tbDate_Click(object sender, EventArgs e)
|
|
{
|
|
selectInput(sender as TextBox);
|
|
}
|
|
|
|
private void button4_Click(object sender, EventArgs e)
|
|
{
|
|
DateTime dt = DateTime.Now;
|
|
var dtstr = this.tbDate.Text.Trim().Replace("-", "").Replace("/", "");
|
|
if (dtstr.Length == 8)
|
|
{
|
|
dt = new DateTime(
|
|
int.Parse(dtstr.Substring(0, 4)),
|
|
int.Parse(dtstr.Substring(4, 2)),
|
|
int.Parse(dtstr.Substring(6, 2)));
|
|
}
|
|
|
|
var f = new Dialog.fSelectDay(dt);
|
|
if (f.ShowDialog() == DialogResult.OK)
|
|
{
|
|
this.tbDate.Text = f.dt.ToShortDateString();
|
|
}
|
|
}
|
|
|
|
private void groupBox2_Enter(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
{
|
|
//클릭하면 입력창을 띄운다
|
|
Util.TouchKeyShow(tbRID, "Input REEL ID");
|
|
}
|
|
|
|
private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
{
|
|
Util.TouchKeyShow(tbSID, "INPUT SID");
|
|
}
|
|
|
|
private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
{
|
|
Util.TouchKeyShow(tbVLOT, "INPUT VENDER LOT");
|
|
}
|
|
|
|
private void linkLabel4_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
{
|
|
Util.TouchKeyShow(tbQTY, "INPUT QTY");
|
|
}
|
|
|
|
private void linkLabel5_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
{
|
|
Util.TouchKeyShow(tbDate, "INPUT MFG DATE");
|
|
}
|
|
|
|
private void linkLabel6_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
{
|
|
Util.TouchKeyShow(tbVName, "INPUT SUPPLY NAME");
|
|
}
|
|
|
|
private void linkLabel7_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
{
|
|
//tbpartno
|
|
Util.TouchKeyShow(tbpartno, "INPUT CUSTOMER PART NO.");
|
|
}
|
|
|
|
private void button5_Click(object sender, EventArgs e)
|
|
{
|
|
//파트번호자동입력(sid 를 가지고 테이블에서 찾는다)
|
|
if (tbSID.Text.isEmpty())
|
|
{
|
|
Util.MsgE("SID값이 필요 합니다", true);
|
|
return;
|
|
}
|
|
var sid = tbSID.Text.Trim();
|
|
using (var db = new EEEntities())
|
|
{
|
|
var dr = db.Component_Reel_SIDInfo.Where(t =>
|
|
t.SID == sid).FirstOrDefault();
|
|
if (dr == null)
|
|
{
|
|
Util.MsgE("해당 SID로 등록된 정보가 없습니다");
|
|
return;
|
|
}
|
|
|
|
//파트번호가 잇어야 한다.
|
|
if (dr.PartNo != null || dr.PartNo.isEmpty())
|
|
{
|
|
Util.MsgE("해당 SID에 Part No 의 값이 입력되지 않았습니다");
|
|
return;
|
|
}
|
|
|
|
var partno = dr.PartNo.Trim();
|
|
if (tbpartno.Text.isEmpty()) tbpartno.Text = partno;
|
|
else
|
|
{
|
|
var dlg = Util.MsgQ(string.Format("Part NO 값을 변경 할까요?\n" +
|
|
"기존 : " + tbpartno.Text + "\n" +
|
|
"신규 : " + partno));
|
|
if (dlg == DialogResult.Yes) tbpartno.Text = dr.PartNo;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
private void button6_Click(object sender, EventArgs e)
|
|
{
|
|
using (var db = new EEEntities())
|
|
{
|
|
////서플라이코드가 있다면 그 코드값으로 가져온다
|
|
//var custCode = TbCustCode.Text.Trim();
|
|
//if (custCode.isEmpty() == false)
|
|
//{
|
|
// var drCustCode = db.Component_Reel_SIDConv.Where(t => t.cust == custCode).FirstOrDefault();
|
|
// if (drCustCode != null && drCustCode.manu.isEmpty() == false)
|
|
// {
|
|
// Pub.log.Add(string.Format("서플라이네임을 가져옴 값={0},코드={1}", drCustCode.manu, custCode));
|
|
// tbVName.Text = drCustCode.manu;
|
|
// return;
|
|
// }
|
|
//}
|
|
|
|
var sid = tbSID.Text.Trim();
|
|
if (sid.isEmpty())
|
|
{
|
|
Util.MsgE("SID값이 필요 합니다", true);
|
|
return;
|
|
}
|
|
|
|
var dr = db.Component_Reel_SIDInfo.AsNoTracking().Where(t =>
|
|
t.SID == sid).FirstOrDefault();
|
|
|
|
|
|
if (dr == null || dr.CustCode.isEmpty())
|
|
{
|
|
Util.MsgE("해당 SID로 등록된 정보가 없습니다");
|
|
return;
|
|
}
|
|
|
|
//찾은데이터에서 값을 확인한다.
|
|
//Util.MsgI(string.Format("Customer/Vender 정보가 업데이트 되었습니다\n" +
|
|
// "Customer : {0}\n" +
|
|
// "Customer Name : {1}\n" +
|
|
// "Vender Name : {2}", dr.CustCode, dr.CustName, dr.VenderName));
|
|
|
|
//벤더네임은 vlot값을 가지고 한다. 210504
|
|
var vlot = this.tbVLOT.Text.Trim();
|
|
if (vlot.isEmpty() == false)
|
|
{
|
|
var dr2 = db.Component_Reel_Result.AsNoTracking().Where(t => t.VLOT == vlot).OrderByDescending(t => t.wdate).FirstOrDefault();
|
|
if (dr2 != null)
|
|
{
|
|
tbVName.Text = dr2.VNAME;
|
|
}
|
|
}
|
|
TbCustCode.Text = dr.CustCode;
|
|
tbCustName.Text = dr.CustName;
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
private void linkLabel8_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
{
|
|
Util.TouchKeyShow(TbCustCode, "INPUT SUPPLY CODE");
|
|
}
|
|
|
|
private void button7_Click(object sender, EventArgs e)
|
|
{
|
|
//진수석님 데이터에서 찾아본다.
|
|
var custcode = TbCustCode.Text.Trim();
|
|
var partno = tbpartno.Text.Trim();
|
|
if (partno.isEmpty())
|
|
{
|
|
Util.MsgE("SID 를 찾기 위해서는 다음 정보가 필요 합니다\n" +
|
|
"1. Part No");
|
|
return;
|
|
}
|
|
|
|
//각 상황에 따라 다르다.
|
|
using (var db = new EEEntities())
|
|
{
|
|
var amksid = string.Empty;
|
|
|
|
if (custcode.isEmpty() == false && partno.isEmpty() == false)
|
|
{
|
|
var dr = db.Component_Reel_SIDInfo.Where(t => t.CustCode == custcode && t.PartNo == partno && string.IsNullOrEmpty(t.SID) == false).FirstOrDefault();
|
|
if (dr != null && dr.SID.isEmpty() == false)
|
|
{
|
|
amksid = dr.SID;
|
|
}
|
|
else
|
|
{
|
|
Util.MsgE("등록된 Customer Code /Part No 에 해당되는 SID를 확인할 수 없습니다\n" +
|
|
"Customer Code : " + custcode + "\n" +
|
|
"Part No : " + partno);
|
|
return;
|
|
}
|
|
}
|
|
else if (custcode.isEmpty() == false)
|
|
{
|
|
var drow = db.Component_Reel_SIDInfo.Where(t => t.CustCode == custcode && string.IsNullOrEmpty(t.SID) == false).ToList();
|
|
if (drow == null || drow.Count < 1)
|
|
{
|
|
Util.MsgE("등록된 Customer Code 에 해당되는 SID를 확인할 수 없습니다\nCustomer : " + custcode);
|
|
return;
|
|
}
|
|
var f = new fSelectDataList(drow.Select(t => t.SID).ToArray());
|
|
if (f.ShowDialog() == DialogResult.OK)
|
|
{
|
|
amksid = f.SelectedValue;
|
|
}
|
|
else
|
|
{
|
|
Util.MsgE("사용자 선택이 취소 되었습니다");
|
|
return;
|
|
}
|
|
}
|
|
else if (partno.isEmpty() == false)
|
|
{
|
|
var drow = db.Component_Reel_SIDInfo.Where(t => t.PartNo == partno && string.IsNullOrEmpty(t.SID) == false).ToList();
|
|
if (drow == null || drow.Count < 1)
|
|
{
|
|
Util.MsgE("등록된 Part No 에 해당되는 SID를 확인할 수 없습니다\n" + "Part No : " + partno);
|
|
return;
|
|
}
|
|
|
|
var sidarr = drow.Select(t => t.SID).ToList();
|
|
var lst = new List<String>();
|
|
foreach (var item in sidarr)
|
|
{
|
|
var m101 = string.Empty;
|
|
var m103 = item.Trim();
|
|
var m106 = string.Empty;
|
|
lst.Add(m101 + ";" + m103 + ";" + m106);
|
|
}
|
|
var f = new Dialog.fSelectSID(lst);
|
|
if (f.ShowDialog() == DialogResult.OK)
|
|
{
|
|
var returndata = f.Value.Split(';');
|
|
amksid = returndata[1].Trim();
|
|
}
|
|
else
|
|
{
|
|
Util.MsgE("사용자 선택이 취소 되었습니다");
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (amksid.isEmpty() == false)
|
|
{
|
|
Pub.log.Add(string.Format("amkor SId찾기 code={0},part={1},sid={2}", custcode, partno, amksid));
|
|
tbSID.Text = amksid;
|
|
UpdateSID();
|
|
makenewId();
|
|
}
|
|
else
|
|
{
|
|
Pub.log.Add(string.Format("검색된 SID가 없어 sid찾기가 실패 했습니다\n" +
|
|
"Cust:{0}\n" +
|
|
"PartNo:{1}", custcode, partno));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
private void button8_Click(object sender, EventArgs e)
|
|
{
|
|
//중복검사
|
|
var rid = tbRID.Text.Trim();
|
|
if (rid.isEmpty())
|
|
{
|
|
Util.MsgE("Reel Id 값이 없습니다");
|
|
return;
|
|
}
|
|
if (Pub.setting.OnlineMode == false)
|
|
{
|
|
Util.MsgE("오프라인 모드라 사용할 수 없습니다");
|
|
return;
|
|
}
|
|
var result = Amkor.RestfulService.get_existed_matl_by_id(rid);
|
|
if (result.Complete == false)
|
|
{
|
|
Util.MsgE(result.Message);
|
|
}
|
|
else
|
|
{
|
|
if (result.Result == true)
|
|
{
|
|
Util.MsgE($"해당 ID는 중복된 ID 입니다\n값:{rid}");
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
Util.MsgI($"해당 ID는 중복되지 않았습니다\n{rid}");
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
private void button9_Click(object sender, EventArgs e)
|
|
{
|
|
var f = new Dialog.fSelectCustInfo();
|
|
if (f.ShowDialog() == DialogResult.OK)
|
|
{
|
|
this.tbCustName.Text = f.CustName;
|
|
this.TbCustCode.Text = f.CustCode;
|
|
Pub.log.Add(string.Format("사용자가 Customer 를 직접 선택함 {0}:{1}", tbCustName.Text, TbCustCode.Text));
|
|
}
|
|
}
|
|
|
|
Boolean CheckRID()
|
|
{
|
|
var rid = tbRID.Text.Trim();
|
|
if (rid.Length < 10) return false;
|
|
var cut = TbCustCode.Text.Trim();
|
|
if (rid.Substring(2, 4) != cut)
|
|
{
|
|
return false;
|
|
}
|
|
else return true;
|
|
}
|
|
Boolean autoconf = false;
|
|
Boolean warn = false;
|
|
Boolean samesidwarn = false;
|
|
private void btOK_Click(object sender, EventArgs e)
|
|
{
|
|
//manu 목록에 없다면 추가 해준다.
|
|
var manuName = tbVName.Text.Trim().ToLower();
|
|
if (manuName.isEmpty() == false)
|
|
{
|
|
lock (Pub.Result.dsList)
|
|
{
|
|
if (Pub.Result.dsList.Supply.Where(t => t.TITLE.ToLower() == manuName).Any() == false)
|
|
{
|
|
//기존 manu 목록에 없으니 추가한다.
|
|
var newdr = Pub.Result.dsList.Supply.NewSupplyRow();
|
|
newdr.TITLE = tbVName.Text.Trim();
|
|
Pub.Result.dsList.Supply.AddSupplyRow(newdr);
|
|
Pub.Result.SaveListDB();
|
|
}
|
|
}
|
|
}
|
|
|
|
//회전용데이터가 여러개 있다면 처리하지 않는다.
|
|
if (this.lvbcdList.CheckedItems.Count != 1)
|
|
{
|
|
Pub.AddSystemLog(Application.ProductVersion, "MAIN", $"회전 기준데이터가 {this.lvbcdList.CheckedItems.Count}건 입니다");
|
|
Util.MsgE("회전 기준데이터는 1개만 선택되어야 합니다");
|
|
return;
|
|
}
|
|
if (this.lvbcdList.CheckedItems.Count == 1)
|
|
{
|
|
var bcddata = lvbcdList.CheckedItems[0].SubItems[1].Text;
|
|
lock (Pub.Result.ItemData[1].VisionData.barcodelist)
|
|
{
|
|
foreach (var item in Pub.Result.ItemData[1].VisionData.barcodelist)
|
|
{
|
|
if (item.Data == bcddata)
|
|
{
|
|
Pub.log.Add(string.Format("회전 기준 바코드값 {0}", item.Data));
|
|
item.UserActive = true;
|
|
}
|
|
else item.UserActive = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
//마지막에 작업한 데이터와 비교 ?? 220104
|
|
if (tbSID.Text == Pub.Result.LastSIDTo && tbVName.Text != Pub.Result.LastVName)
|
|
{
|
|
Pub.Result.LastVName = tbVName.Text;
|
|
Pub.log.Add($"Vname 값을 저장하여 연속작업시 사용합니다 sid:{tbSID.Text},vname:{tbVName.Text}");
|
|
}
|
|
|
|
if (tbSID.Text.isEmpty())
|
|
{
|
|
Util.MsgE("SID 가 입력되지 않았습니다");
|
|
tbSID.Focus();
|
|
return;
|
|
}
|
|
if (tbVLOT.Text.isEmpty())
|
|
{
|
|
Util.MsgE("VLOT 가 입력되지 않았습니다");
|
|
tbVLOT.Focus();
|
|
return;
|
|
}
|
|
if (tbQTY.Text.isEmpty())
|
|
{
|
|
Util.MsgE("QTY 가 입력되지 않았습니다");
|
|
tbQTY.Focus();
|
|
return;
|
|
}
|
|
if (tbDate.Text.isEmpty())
|
|
{
|
|
Util.MsgE("MFG-DATE 가 입력되지 않았습니다");
|
|
tbDate.Focus();
|
|
return;
|
|
}
|
|
if (tbRID.Text.isEmpty())
|
|
{
|
|
Util.MsgE("REEL ID 가 입력되지 않았습니다");
|
|
tbRID.Focus();
|
|
return;
|
|
}
|
|
|
|
//파트넘버 필수로 필요한 - 최준호s
|
|
if (this.tbpartno.Text.isEmpty())
|
|
{
|
|
Util.MsgE("PART No 가 입력되지 않았습니다");
|
|
tbpartno.Focus();
|
|
return;
|
|
}
|
|
if (this.PrintPos.isEmpty())
|
|
{
|
|
Util.MsgE("프린트 부착 위치가 지정되지 않았습니다");
|
|
return;
|
|
}
|
|
|
|
if (Pub.Result.Option_vname && this.tbVName.Text.isEmpty())
|
|
{
|
|
Util.MsgE("Vender Name 이 입력되지 않았습니다");
|
|
return;
|
|
}
|
|
|
|
//현재 작업모드와 SID가 일치하는지 확인한다.
|
|
var sidNew = this.tbSID.Text.Trim();
|
|
var sidOld = this.lbSID0.Text.Trim();//.Tag == null ? string.Empty : lbSID0.Text;
|
|
|
|
|
|
if (Pub.Result.Option_NewReelID && tbRID.Text.Length != 15)
|
|
{
|
|
Util.MsgE("신규 릴ID 생성모드 입니다.\n현재 릴ID는 15자리 가 아닙니다.\n릴ID를 확인하세요.");
|
|
return;
|
|
}
|
|
|
|
if (CheckRID() == false)
|
|
{
|
|
Pub.AddSystemLog(Application.ProductVersion, "MAIN", $"Reel ID 의 Customer Code 값이 현재 값과 일치하지 않습니다(RID:{tbRID.Text}/CUST:{TbCustCode.Text})");
|
|
Util.MsgE("Reel ID 의 Customer Code 값이 현재 값과 일치하지 않습니다");
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
//SID별 부착위치를 결정시켜준다 - 210202
|
|
try
|
|
{
|
|
if (Pub.setting.OnlineMode)
|
|
{
|
|
using (var db = new EEEntities())
|
|
{
|
|
var drPrnPos = db.Component_Reel_SIDInfo.Where(t => t.SID == sidNew).FirstOrDefault();
|
|
if (drPrnPos == null)
|
|
{
|
|
var newdrpos = new Component_Reel_SIDInfo()
|
|
{
|
|
SID = sidNew,
|
|
PrintPosition = this.PrintPos,
|
|
Remark = string.Empty
|
|
};
|
|
db.Component_Reel_SIDInfo.Add(newdrpos);
|
|
db.SaveChanges();
|
|
Pub.log.Add(string.Format("SId별 프린트 위치 정보 추가 sid:{0},위치:{1}", tbSID.Text, this.PrintPos));
|
|
|
|
|
|
}
|
|
else if (drPrnPos.PrintPosition != this.PrintPos)
|
|
{
|
|
//기존에있는경우 내용이 다르면 업데이트한다
|
|
drPrnPos.PrintPosition = this.PrintPos;
|
|
db.SaveChanges();
|
|
Pub.log.Add(string.Format("SId별 프린트 위치 정보 추가 sid:{0},위치:{1}", tbSID.Text, this.PrintPos));
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Pub.log.AddE(string.Format("sid별 프린트 위치 정보 추가 실패 sid:{0},메세지:{1}", tbSID.Text, ex.Message));
|
|
}
|
|
|
|
//sid lot 이름 검증
|
|
//var sid = this.tbSID.Text.Trim();
|
|
var lot = this.tbVLOT.Text.Trim();
|
|
if (warn == false && autoconf == true)
|
|
{
|
|
if (Pub.setting.OnlineMode)
|
|
using (var db = new EEEntities())
|
|
{
|
|
var predata = db.Component_Reel_Result.AsNoTracking().Where(t => t.SID == sidNew).OrderByDescending(t => t.wdate).FirstOrDefault();
|
|
if (predata != null && predata.VLOT != lot)
|
|
{
|
|
Util.MsgE("이전 LOT 값이 일치 하지 않습니다. 자동 확인이 취소 됩니다");
|
|
warn = true;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//변환테이블의 데이터를 확인하고 업데이트한다.
|
|
if (Pub.setting.OnlineMode)
|
|
using (var db = new EEEntities())
|
|
{
|
|
|
|
//파트번호 업데이트
|
|
bool dataUpdate = false;
|
|
var drsidInfo = db.Component_Reel_SIDInfo.Where(t => t.SID == sidNew).FirstOrDefault();
|
|
if (drsidInfo.PartNo.isEmpty() && tbpartno.Text.isEmpty() == false &&
|
|
drsidInfo.PartNo != tbpartno.Text)
|
|
{
|
|
if (Util.MsgQ("다음 SID의 PART NO를 기록할까요?\n기록을 진행하면 이후 작업에는 묻지 않고 진행 됩니다\n" +
|
|
"SID:" + sidNew + "\nPARTNO:" + tbpartno.Text) == DialogResult.Yes)
|
|
{
|
|
drsidInfo.PartNo = this.tbpartno.Text.Trim();
|
|
dataUpdate = true;
|
|
}
|
|
}
|
|
if (drsidInfo.CustCode.isEmpty() && TbCustCode.Text.isEmpty() == false &&
|
|
drsidInfo.CustCode != TbCustCode.Text)
|
|
{
|
|
if (Util.MsgQ("다음 SID의 Customer Code 를 기록할까요?\n기록을 진행하면 이후 작업에는 묻지 않고 진행 됩니다\n" +
|
|
"SID:" + sidNew + "\n" + "CUST:" + TbCustCode.Text) == DialogResult.Yes)
|
|
{
|
|
drsidInfo.CustCode = this.TbCustCode.Text.Trim();
|
|
dataUpdate = true;
|
|
}
|
|
}
|
|
|
|
//커스터머이름도 저장한다. 220108
|
|
if (drsidInfo.CustName.isEmpty() && tbCustName.Text.isEmpty() == false && drsidInfo.CustName != tbCustName.Text)
|
|
{
|
|
if (Util.MsgQ("다음 SID의 Customer Name 을 기록할까요?\n기록을 진행하면 이후 작업에는 묻지 않고 진행 됩니다\n" +
|
|
"SID:" + sidNew + "\n" + "Cust Name:" + tbCustName.Text) == DialogResult.Yes)
|
|
{
|
|
drsidInfo.CustName = this.tbCustName.Text.Trim();
|
|
dataUpdate = true;
|
|
}
|
|
}
|
|
|
|
//SID변환테이블 -220104
|
|
if (Pub.Result.JobType2 == "13" && sidOld != sidNew && sidOld.isEmpty() == false && sidNew.isEmpty() == false)
|
|
{
|
|
var drConvData = db.Component_Reel_SIDConv.Where(t => t.SIDFrom == sidOld && t.SIDTo == sidNew).Any();
|
|
if (drConvData == false)
|
|
{
|
|
if (Util.MsgQ("다음 변환된 SID 정보를 저장할까요?\n기록을 진행하면 이후 작업에는 묻지 않고 진행 됩니다\n" +
|
|
"SID 원본 :" + sidOld + "\n" + "SID 대상:" + sidNew) == DialogResult.Yes)
|
|
{
|
|
//자료가 없다면 추가하고
|
|
//var olist = db.Component_Reel_SIDConv.Where(t => t.M101 == lbSID0.Text).ToList();
|
|
//if (olist.Count < 1)
|
|
//{
|
|
try
|
|
{
|
|
var newdr = new Component_Reel_SIDConv();
|
|
newdr.SIDFrom = sidOld;
|
|
newdr.SIDTo = sidNew;
|
|
newdr.Remark = "Auto Gen";
|
|
//newdr.M106 = string.Empty;
|
|
//newdr.M108 = string.Empty;
|
|
db.Component_Reel_SIDConv.Add(newdr);
|
|
db.SaveChanges();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Util.MsgE("SID변환 정보를 서버에 저장하지 못했습니다");
|
|
Pub.log.Add("sid변환정보 저장 실패 : " + ex.Message);
|
|
}
|
|
|
|
//}
|
|
//else
|
|
//{
|
|
// //있긴이삳.
|
|
// foreach (var item in olist)
|
|
// item.M103 = sid;
|
|
// db.SaveChanges();
|
|
//}
|
|
//있다면 업데이트 해준다.
|
|
}
|
|
}
|
|
}
|
|
|
|
//벤더는 SID에 종속되지 않는다
|
|
//if (drConv.VenderName.isEmpty() && tbVName.Text.isEmpty() == false && drConv.VenderName != tbVName.Text)
|
|
//{
|
|
// if (Util.MsgQ("다음 SID의 Vender Name 를 기록할까요? 기록을 진행하면 이후 작업에는 묻지 않고 진행 됩니다") == DialogResult.Yes)
|
|
// {
|
|
// drConv.VenderName = this.tbVName.Text.Trim();
|
|
// dataUpdate = true;
|
|
// }
|
|
//}
|
|
if (dataUpdate)
|
|
{
|
|
Pub.log.Add("Customer / Partno 의 SId연결 정보를 업데이트 합니다");
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//값을 설정해주고 빠져나간다
|
|
|
|
Pub.Result.ItemData[1].VisionData.SID = tbSID.Text.Trim();
|
|
Pub.Result.ItemData[1].VisionData.SID0 = lbSID0.Text.Trim();
|
|
Pub.Result.ItemData[1].VisionData.VLOT = tbVLOT.Text.Trim();
|
|
Pub.Result.ItemData[1].VisionData.QTY = tbQTY.Text.Trim();
|
|
Pub.Result.ItemData[1].VisionData.MFGDATE = tbDate.Text.Trim();
|
|
Pub.Result.ItemData[1].VisionData.VNAME = tbVName.Text.Trim();
|
|
Pub.Result.ItemData[1].VisionData.SetRID(tbRID.Text.Trim(), "USER CONFIRM");//.RID = tbRID.Text.Trim();
|
|
|
|
if (tbRID.Tag == null || tbRID.Text.isEmpty()) Pub.Result.ItemData[1].VisionData.RID0 = string.Empty;
|
|
else Pub.Result.ItemData[1].VisionData.RID0 = tbRID.Text.Trim();// tbRID.Tag.ToString(); //210429
|
|
|
|
Pub.Result.ItemData[1].VisionData.PARTNO = tbpartno.Text.Trim();
|
|
|
|
if (this.autoconf) Pub.Result.ItemData[1].VisionData.ConfirmAuto = true;
|
|
Pub.Result.ItemData[1].VisionData.ConfirmUser = true; //사용자가확인했다!
|
|
|
|
Pub.Result.ItemData[1].VisionData.PrintPositionData = this.PrintPos;
|
|
Pub.Result.ItemData[1].VisionData.PrintPositionCheck = true; //사용자가 확인했다.
|
|
|
|
this.DisplayLabelPos(Pub.Result.ItemData[1].VisionData.LabelPositionData);
|
|
|
|
this.PrintPos = Pub.Result.ItemData[1].VisionData.PrintPositionData;
|
|
this.DisplayPrintPos(Pub.Result.ItemData[1].VisionData.PrintPositionData);
|
|
|
|
this.Close();
|
|
}
|
|
|
|
private void label26_Click(object sender, EventArgs e)
|
|
{
|
|
var sid = this.tbSID.Text.Trim();
|
|
if (sid.isEmpty()) return;
|
|
|
|
var dlg = Util.MsgQ("SID 에서 인쇄 위치를 검색 할까요?");
|
|
if (dlg != DialogResult.Yes) return;
|
|
|
|
using (var db = new EEEntities())
|
|
{
|
|
var dr = db.Component_Reel_SIDInfo.Where(t => t.SID == sid).FirstOrDefault();
|
|
if (dr == null || dr.PrintPosition.isEmpty())
|
|
{
|
|
Util.MsgE("입력된 SID에 저장된 인쇄 위치가 없습니다\n" +
|
|
"SID:" + sid);
|
|
return;
|
|
}
|
|
this.PrintPos = dr.PrintPosition;
|
|
DisplayPrintPos(this.PrintPos);
|
|
}
|
|
}
|
|
|
|
private void button1_Click_1(object sender, EventArgs e)
|
|
{
|
|
//데이터베이스 결과에서 자료를 추가한다.
|
|
|
|
List<Component_Reel_Result> result = new List<Component_Reel_Result>();
|
|
|
|
using (var db = new EEEntities())
|
|
{
|
|
//1.sid sid를 먼저 검색한다. 이것이 확률이 제일 높음
|
|
if (this.tbSID.Text.isEmpty() == false)
|
|
{
|
|
var list = db.Component_Reel_Result.AsNoTracking().
|
|
OrderByDescending(t => t.wdate).
|
|
Where(t => t.SID == tbSID.Text.Trim()).Take(5).ToList();
|
|
if (list != null && list.Count > 0) result.AddRange(list);
|
|
}
|
|
//2.파트번호
|
|
if (result.Count == 0 && this.tbpartno.Text.isEmpty() == false)
|
|
{
|
|
var list = db.Component_Reel_Result.AsNoTracking().
|
|
OrderByDescending(t => t.wdate).
|
|
Where(t => t.QR.Contains(";" + tbpartno.Text)).Take(5).ToList();
|
|
if (list != null && list.Count > 0) result.AddRange(list);
|
|
}
|
|
//3.벤더LOT
|
|
if (result.Count == 0 && this.tbVLOT.Text.isEmpty() == false)
|
|
{
|
|
var list = db.Component_Reel_Result.AsNoTracking().
|
|
OrderByDescending(t => t.wdate).
|
|
Where(t => t.QR.Contains(";" + tbVLOT.Text + ";")).Take(5).ToList();
|
|
if (list != null && list.Count > 0) result.AddRange(list);
|
|
}
|
|
|
|
//4.벤더이름
|
|
if (result.Count == 0 && this.tbVName.Text.isEmpty() == false)
|
|
{
|
|
var list = db.Component_Reel_Result.AsNoTracking().
|
|
OrderByDescending(t => t.wdate).
|
|
Where(t => t.QR.Contains(";" + tbVName.Text + ";")).Take(5).ToList();
|
|
if (list != null && list.Count > 0) result.AddRange(list);
|
|
}
|
|
|
|
}
|
|
|
|
//customer code
|
|
|
|
if (result.Count < 1)
|
|
{
|
|
Util.MsgE("검색된 결과가 없습니다\n검색 아이템\n" +
|
|
"1.SID\n" +
|
|
"2.LOT\n" +
|
|
"3.PARTNO\n");
|
|
return;
|
|
}
|
|
var f = new fSelectResult(result);
|
|
if (f.ShowDialog() != DialogResult.OK) return;
|
|
|
|
//값이 없는 것만 처리한다.
|
|
string msg = string.Empty;
|
|
var qr = f.SelectedValue.QR;
|
|
var amk = new StdLabelPrint.CAmkorSTDBarcode(qr);
|
|
if (this.tbSID.Text.isEmpty() && amk.SID.isEmpty() == false)
|
|
{
|
|
msg += (msg.isEmpty() ? "" : "\n") + string.Format("SID:{0}=>{1}", tbSID.Text, amk.SID);
|
|
tbSID.Text = amk.SID;
|
|
}
|
|
if (this.tbpartno.Text.isEmpty() && amk.PARTNO.isEmpty() == false)
|
|
{
|
|
msg += (msg.isEmpty() ? "" : "\n") + string.Format("Part No:{0}=>{1}", tbpartno.Text, amk.PARTNO);
|
|
tbpartno.Text = amk.PARTNO;
|
|
}
|
|
if (this.tbVLOT.Text.isEmpty() && amk.VLOT.isEmpty() == false)
|
|
{
|
|
msg += (msg.isEmpty() ? "" : "\n") + string.Format("Vender LOT:{0}=>{1}", tbVLOT.Text, amk.VLOT);
|
|
tbVLOT.Text = amk.VLOT;
|
|
}
|
|
if (this.tbVName.Text.isEmpty() && f.SelectedValue.VNAME.isEmpty() == false)
|
|
{
|
|
msg += (msg.isEmpty() ? "" : "\n") + string.Format("Vender Name:{0}=>{1}", tbVName.Text, f.SelectedValue.VNAME);
|
|
tbVName.Text = f.SelectedValue.VNAME;
|
|
}
|
|
if (this.tbDate.Text.isEmpty() && amk.MFGDate.isEmpty() == false)
|
|
{
|
|
msg += (msg.isEmpty() ? "" : "\n") + string.Format("MFG Date:{0}=>{1}", tbDate.Text, amk.MFGDate);
|
|
tbDate.Text = amk.MFGDate;
|
|
}
|
|
|
|
if (Pub.Result.Option_QtyUpdateM == false && this.tbQTY.Text.isEmpty() && amk.QTY != 0)
|
|
{
|
|
msg += (msg.isEmpty() ? "" : "\n") + string.Format("QTY:{0}=>{1}", tbQTY.Text, amk.QTY);
|
|
|
|
Pub.log.Add($"수량업데이트 {tbQTY.Text}->{amk.QTY}");
|
|
tbQTY.Text = amk.QTY.ToString();
|
|
}
|
|
|
|
|
|
var custcode = amk.RID.Substring(2, 4);
|
|
if (this.TbCustCode.Text.isEmpty() && custcode.isEmpty() == false)
|
|
{
|
|
msg += (msg.isEmpty() ? "" : "\n") + string.Format("QTY:{0}=>{1}", TbCustCode.Text, custcode);
|
|
TbCustCode.Text = custcode;// amk.QTY.ToString();
|
|
}
|
|
|
|
if (msg.isEmpty() == false)
|
|
{
|
|
Util.MsgI("다음 정보가 변경 되었습니다\n" + msg, true);
|
|
}
|
|
}
|
|
|
|
private void label2_Click_1(object sender, EventArgs e)
|
|
{
|
|
var sid = this.tbSID.Text.Trim();
|
|
if (sid.isEmpty()) return;
|
|
|
|
|
|
|
|
using (var db = new EEEntities())
|
|
{
|
|
var dr = db.Component_Reel_SIDInfo.Where(t => t.SID == sid).FirstOrDefault();
|
|
if (dr == null || dr.PrintPosition.isEmpty())
|
|
{
|
|
Util.MsgE("입력된 SID에 저장된 인쇄 위치가 없습니다\n" +
|
|
"SID:" + sid);
|
|
return;
|
|
}
|
|
this.PrintPos = dr.PrintPosition;
|
|
}
|
|
|
|
DisplayPrintPos(this.PrintPos);
|
|
}
|
|
|
|
private void button3_Click_1(object sender, EventArgs e)
|
|
{
|
|
var sid = this.tbSID.Text.Trim();
|
|
if (sid.isEmpty())
|
|
{
|
|
Util.MsgE("SID 값이 필요합니다");
|
|
return;
|
|
}
|
|
func_CheckDateQty();
|
|
}
|
|
|
|
DateTime stime = DateTime.Now;
|
|
private void tmAutoConfirm_Tick(object sender, EventArgs e)
|
|
{
|
|
var ts = DateTime.Now - stime;
|
|
btOK.Text = string.Format("{0:N0}/{1:N0} 초후 자동 완료", ts.TotalSeconds, Pub.setting.Timeout_AutoConfirm);
|
|
if (ts.TotalSeconds >= Pub.setting.Timeout_AutoConfirm)
|
|
{
|
|
tmAutoConfirm.Stop();
|
|
autoconf = true;
|
|
btOK.PerformClick();
|
|
}
|
|
}
|
|
|
|
private void 회전기준바코드로설정ToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
if (lvbcdList.FocusedItem == null)
|
|
{
|
|
Util.MsgE("포커스를 받은 항목이 없습니다");
|
|
return;
|
|
}
|
|
var dataindex = lvbcdList.FocusedItem.Index;
|
|
foreach (ListViewItem item in this.lvbcdList.Items)
|
|
{
|
|
if (item.Index == dataindex) item.Checked = true;
|
|
else item.Checked = false;
|
|
}
|
|
}
|
|
|
|
private void button4_Click_1(object sender, EventArgs e)
|
|
{
|
|
if (tbpartno.Text.isEmpty()) tbpartno.Text = "N/A";
|
|
else
|
|
{
|
|
var dlg = Util.MsgQ("현재 Part No 값을 N/A로 변경 할까요?");
|
|
if (dlg == DialogResult.Yes) tbpartno.Text = "N/A";
|
|
}
|
|
}
|
|
|
|
private void linkLabel9_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
{
|
|
Util.TouchKeyShow(this.tbCustName, "INPUT CUST NAME");
|
|
}
|
|
|
|
private void button5_Click_1(object sender, EventArgs e)
|
|
{
|
|
var a = 1;
|
|
var b = 0;
|
|
var c = a / b;
|
|
|
|
}
|
|
}
|
|
}
|