Files
ATV_STDLabelAttach/Handler/Project/Dialog/fNewReelID.cs
2025-07-17 16:11:46 +09:00

262 lines
8.0 KiB
C#

using AR;
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 fNewReelID : Form
{
public string NewID { get; set; }
public fNewReelID(string custcode)
{
InitializeComponent();
this.NewID = string.Empty;
tbCustCode.Text = custcode;
if (PUB.Result.JobType2 == "RET")
radReturn.Checked = true;
else
radNormal.Checked = false;
tbRID.TextChanged += (s1, e1) =>
{
lbLen.Text = $"길이({tbRID.Text.Length})";
lbLen.BackColor = tbRID.Text.Length == 15 ? Color.Lime : Color.Tomato;
};
}
private void fNewReelID_Load(object sender, EventArgs e)
{
tbtype.Text = "C";
tbLoca.Text = AR.SETTING.Data.ReelIdDeviceLoc;
tbDiv.Text = AR.SETTING.Data.ReelIdDeviceID;
tbYear.Text = DateTime.Now.Year.ToString().Substring(2);
tbMon.Text = DateTime.Now.Month.ToString("X");
this.radNormal.Checked = true;
RefreshID();
}
private void btOK_Click(object sender, EventArgs e)
{
var codelen = 15;
this.NewID = tbRID.Text;
if (this.NewID.Length != codelen)
{
UTIL.MsgE($"Reel ID는 {codelen}자리 입니다");
return;
}
//db에서도 검색한다
var db = new EEEntities();
if (db.Component_Reel_Result.Where(t => t.RID == NewID).Any())
{
UTIL.MsgE($"해당 ID는 발행 기록이 있는 ID 입니다\n값:{NewID}");
return;
}
//서버에서 중복검사실행
if (AR.SETTING.Data.OnlineMode == false)
{
UTIL.MsgE("오프라인 모드라 사용할 수 없습니다");
return;
}
var rlt = Amkor.RestfulService.get_existed_matl_by_id(NewID);
if (rlt.Complete == false)
{
UTIL.MsgE("중복검사 실패\n" + rlt.Message);
return;
}
else if (rlt.Result == true)
{
UTIL.MsgE("REEL ID 가 중복되었습니다\n새로고침 하세요");
return;
}
////데이터를 추가해준다.
//var db = new EEEntities();
//db.Component_Reel_NewAssign.Add(new Component_Reel_NewAssign()
//{
// bPrint = false,
// CUST = tbCustCode.Text.Trim(),
// TIME = tbYear.Text.Trim(),
// DIV = tbDiv.Text.Trim(),
// SEQ = tbSeq.Text,
// RID = tbRID.Text.Trim(),
// wdate = DateTime.Now,
// wuid = COMM.SETTING.Data.Asset,
//});
//db.SaveChanges();
DialogResult = DialogResult.OK;
}
void UpdateRID()
{
var data = tb1.Text.Trim();
data += tbtype.Text.Trim();
data += tbCustCode.Text.Trim();
data += tbLoca.Text.Trim();
data += tbDiv.Text.Trim();
data += tbYear.Text.Trim();
data += tbMon.Text.Trim();
data += tbSeq.Text.Trim();
this.tbRID.Text = data;
}
private void tbCustCode_TextChanged(object sender, EventArgs e)
{
UpdateRID();
}
private void button1_Click(object sender, EventArgs e)
{
RefreshID();
}
void RefreshID()
{
if (tbCustCode.Text.Length != 4)
{
tbCustCode.Focus();
tbCustCode.SelectAll();
}
//시간정보업데이트
tbYear.Text = DateTime.Now.ToString("yy");
tbDiv.Text = AR.SETTING.Data.ReelIdDeviceID; //라벨어태치용
UpdateSN();
UpdateRID();
}
/// <summary>
/// 일련번호 업데이트
/// </summary>
void UpdateSN()
{
var datestr = this.tbYear.Text + this.tbMon.Text;
if (datestr.Length != 3)
{
UTIL.MsgE("년도/월 값이 입력되지 않았습니다");
return;
}
var newsn = string.Empty;
if (this.radReturn.Checked)
newsn = AmkorReelID.GetNextSNbyYM_Return(datestr);
else if (this.radDup.Checked)
newsn = AmkorReelID.GetNextSNbyYM_Dup(datestr);
else
newsn = AmkorReelID.GetNextSNbyYM(datestr);
tbSeq.Text = newsn;
}
private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
UTIL.TouchKeyShow(tbCustCode, "고객코드를 입력하세요");
}
private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
UTIL.TouchKeyShow(tbDiv, "장치 분류를 입력(L:Logistic/M:Manufacture,A:AutoLabel Attach)");
}
private void linkLabel4_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
UTIL.TouchKeyShow(tbSeq, "일련번호입력(001~999)");
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
UTIL.TouchKeyShow(tbYear, "년도(2자리)");
}
private void linkLabel5_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
UTIL.TouchKeyShow(tb1, "예약됨(R)");
}
private void linkLabel6_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
UTIL.TouchKeyShow(tbtype, "예약됨(C/I)");
}
private void linkLabel7_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
UTIL.TouchKeyShow(tbLoca, "발행처(3/4/5)");
}
private void linkLabel8_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
UTIL.TouchKeyShow(tbMon, "월(1자리 10월=A,11월=B,12월=C");
}
private void button8_Click(object sender, EventArgs e)
{
//중복검사
var rid = tbRID.Text.Trim();
if (rid.isEmpty())
{
UTIL.MsgE("Reel Id 값이 없습니다");
return;
}
//db에서도 검색한다
if (AR.SETTING.Data.OnlineMode)
{
var db = new EEEntities();
if (db.Component_Reel_Result.Where(t => t.RID == rid).Any())
{
UTIL.MsgE($"해당 ID는 발행 기록이 있는 ID 입니다\n값:{rid}");
return;
}
var result = Amkor.RestfulService.get_existed_matl_by_id(rid);
if (result.Complete == false)
{
UTIL.MsgE("중복검사 서버 오류\n" + result.Message);
}
else
{
if (result.Result == true)
{
UTIL.MsgE($"해당 ID는 중복된 ID 입니다\n값:{rid}");
return;
}
else
{
UTIL.MsgI($"해당 ID는 중복되지 않았습니다\n{rid}");
}
}
}
}
private void chkReturn_CheckedChanged(object sender, EventArgs e)
{
UpdateSN();
UpdateRID();
}
private void button1_Click_1(object sender, EventArgs e)
{
UpdateSN();
}
private void radNormal_Click(object sender, EventArgs e)
{
UpdateSN();
UpdateRID();
}
}
}