qrmode 에서 wms rcv 태그 인식되게 함

This commit is contained in:
ChiKyun Kim
2025-08-06 10:05:24 +09:00
parent a7bc964b5c
commit c17296101a
89 changed files with 8051 additions and 6661 deletions

View File

@@ -2,12 +2,14 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using AR;
using SATOPrinterAPI;
namespace Project.Dialog
{
@@ -585,33 +587,9 @@ namespace Project.Dialog
}
UpdateSID(auto);
makenewId();
}
void makenewId()
{
//ID가 잘못되었다.
if (VAR.BOOL[eVarBool.Opt_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;
}
}
}
/// <summary>
/// 데이터베이스의 정보를 UI에 반영한다
/// </summary>
@@ -699,181 +677,193 @@ namespace Project.Dialog
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 sql = "select * from K4EE_Component_Reel_Result with (no lock)" +
" where jtype = @jtype and sid = @sid and isnull(QR,'') <> '' and stime >= @sd" +
" order by wdate desc";
var ps = new SqlParameter[] {
new SqlParameter("jtype", PUB.Result.JobType2),
new SqlParameter("sid", sid),
new SqlParameter("sd", sd),
};
DataSet1.Component_Reel_ResultRow preData = null;
var preDatas = DBHelper.Get(sql, ps);
if (preDatas.Rows.Count > 0) preData = preDatas.Rows[0] as DataSet1.Component_Reel_ResultRow;
//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)
{
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)
{
//해당 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 && tbMFG.Text.isEmpty())
{
//해당 mfgdae 가 바코드목록에 잇다면 바로 적용
//업다면 적용하고 적용 메세지 표시한다
//Pub.log.Add(string.Format("이전결과에서 값 업데이트 sid:{0},mfgdata={1}", sid, amkorid.MFGDate));
tbMFG.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);
}
btCustomAutoInput.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);
}
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 && tbMFG.Text.isEmpty())
{
//해당 mfgdae 가 바코드목록에 잇다면 바로 적용
//업다면 적용하고 적용 메세지 표시한다
//Pub.log.Add(string.Format("이전결과에서 값 업데이트 sid:{0},mfgdata={1}", sid, amkorid.MFGDate));
tbMFG.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);
}
btCustomAutoInput.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;
}
@@ -902,7 +892,8 @@ namespace Project.Dialog
UTIL.MsgE("오프라인 모드라 사용할 수 없습니다");
return;
}
var cnt = (Amkor.RestfulService.get_stock_count(rid, out msg));
var cnt = 0;// (Amkor.RestfulService.get_stock_count(rid, out msg));
if (cnt > 0)
{
var oldCnt = int.Parse(tbQTY.Text.Replace(",", ""));
@@ -968,15 +959,15 @@ namespace Project.Dialog
bool NewReelId = false;
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;
}
//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);
//already check
@@ -992,29 +983,29 @@ namespace Project.Dialog
//웹서비스로 생성한다.
if (MakeNewID)
{
var newid = Amkor.RestfulService.Allocation_Unique_ReelID_AmkorSTD(id, "4", "A", out string err);
if (newid.isEmpty())
var sid = tbSID.Text.Trim();
if (sid.isEmpty())
{
UTIL.MsgE(err, true);
}
else
{
//remain original reel id
if (this.tbRID0.Text.isEmpty() && tbRID.Text.isEmpty() == false)
this.tbRID0.Text = tbRID.Text.Trim();
this.tbRID.Text = newid;
NewReelId = true;
PUB.log.AddI($"New REELID:{newid}(LoaderInfo)");
UTIL.MsgE("No SID");
return;
}
//WMS은 DB에서 생성하낟.
var newid = PUB.MakeNewREELID(sid);
if (newid.success==false)
{
UTIL.MsgE($"No ReelID Data\n{newid.message}" , true);
return;
}
//remain original reel id
if (this.tbRID0.Text.isEmpty() && tbRID.Text.isEmpty() == false)
this.tbRID0.Text = tbRID.Text.Trim();
this.tbRID.Text = newid.newid;
NewReelId = true;
PUB.log.AddI($"New REELID:{newid.newid}(LoaderInfo)");
}
//var f = new Dialog.fNewReelID(id);
//if (f.ShowDialog() != DialogResult.OK) return;
//this.tbRID.Text = f.NewID;
}
private void tbDate_Click(object sender, EventArgs e)
@@ -1272,7 +1263,6 @@ namespace Project.Dialog
PUB.log.Add(string.Format("amkor SId찾기 code={0},part={1},sid={2}", custcode, partno, amksid));
tbSID.Text = amksid;
UpdateSID();
makenewId();
}
else
{
@@ -1287,7 +1277,7 @@ namespace Project.Dialog
}
private void button8_Click(object sender, EventArgs e)
private void btIDCheck_Click(object sender, EventArgs e)
{
//중복검사
var rid = tbRID.Text.Trim();
@@ -1301,23 +1291,25 @@ namespace Project.Dialog
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}");
}
}
UTIL.MsgE("WMS 기능 없음");
//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)
@@ -1683,6 +1675,11 @@ namespace Project.Dialog
{
InsertTarget.Add(col.Key, col.Value);
}
foreach (var item in wheres)
{
if (InsertTarget.ContainsKey(item.Key) == false)
InsertTarget.Add(item.Key, item.Value);
}
}
if (UpdateTarget.Count > 0) //if update target
@@ -1741,17 +1738,13 @@ namespace Project.Dialog
var dlgMsg = $"다음 값을 서버에 저장 하시겠습니까?\n";
foreach (var item in InsertTarget)
dlgMsg += $"항목:{item.Key} => {item.Value}\n";
foreach (var item in wheres)
dlgMsg += $"항목:{item.Key} => {item.Value}\n";
var dlg = UTIL.MsgQ(dlgMsg);
if (dlg == DialogResult.Yes)
{
var ISQL = $"insert into Component_Reel_SID_Information ([MC],wdate," +
string.Join(",", wheres.Select(t => "[" + t.Key + "]")) + "," +
string.Join(",", InsertTarget.Select(t => "[" + t.Key + "]")) + ") values(" +
$"'{PUB.MCCode}',getdate()," +
string.Join(",", wheres.Select(t => "'" + t.Value.Replace("'", "''") + "'")) + "," +
string.Join(",", InsertTarget.Select(t => "'" + t.Value.Replace("'", "''") + "'")) + ")";
//ISQL += WSQL;
@@ -1826,6 +1819,11 @@ namespace Project.Dialog
{
InsertTarget.Add(col.Key, col.Value);
}
foreach (var item in wheres)
{
if (InsertTarget.ContainsKey(item.Key) == false)
InsertTarget.Add(item.Key, item.Value);
}
}
if (UpdateTarget.Count > 0) //if update target
@@ -1884,17 +1882,14 @@ namespace Project.Dialog
var dlgMsg = $"다음 변환값을 서버에 추가 하시겠습니까?\n";
foreach (var item in InsertTarget)
dlgMsg += $"항목:{item.Key} => {item.Value}\n";
foreach (var item in wheres)
dlgMsg += $"항목:{item.Key} => {item.Value}\n";
var dlg = UTIL.MsgQ(dlgMsg);
if (dlg == DialogResult.Yes)
{
var ISQL = $"insert into {tableName} ([MC]," +
string.Join(",", wheres.Select(t => "[" + t.Key + "]")) + "," +
string.Join(",", InsertTarget.Select(t => "[" + t.Key + "]")) + ") values(" +
$"'{PUB.MCCode}'," +
string.Join(",", wheres.Select(t => "'" + t.Value.Replace("'", "''") + "'")) + "," +
string.Join(",", InsertTarget.Select(t => "'" + t.Value.Replace("'", "''") + "'")) + ")";
//ISQL += WSQL;
@@ -1973,6 +1968,11 @@ namespace Project.Dialog
{
InsertTarget.Add(col.Key, col.Value);
}
foreach (var item in wheres)
{
if (InsertTarget.ContainsKey(item.Key) == false)
InsertTarget.Add(item.Key, item.Value);
}
}
if (UpdateTarget.Count > 0) //if update target
@@ -2031,17 +2031,14 @@ namespace Project.Dialog
var dlgMsg = $"다음 값을 서버(변환정보)에 저장 하시겠습니까?\n";
foreach (var item in InsertTarget)
dlgMsg += $"항목:{item.Key} => {item.Value}\n";
foreach (var item in wheres)
dlgMsg += $"항목:{item.Key} => {item.Value}\n";
var dlg = UTIL.MsgQ(dlgMsg);
if (dlg == DialogResult.Yes)
{
var ISQL = $"insert into Component_Reel_SID_Convert ([MC],wdate," +
string.Join(",", wheres.Select(t => "[" + t.Key + "]")) + "," +
string.Join(",", InsertTarget.Select(t => "[" + t.Key + "]")) + ") values(" +
$"null,getdate()," +
string.Join(",", wheres.Select(t => "'" + t.Value.Replace("'", "''") + "'")) + "," +
string.Join(",", InsertTarget.Select(t => "'" + t.Value.Replace("'", "''") + "'")) + ")";
//ISQL += WSQL;
@@ -2090,49 +2087,51 @@ namespace Project.Dialog
private void button1_Click_1(object sender, EventArgs e)
{
//데이터베이스 결과에서 자료를 추가한다.
var result = new DataSet1.Component_Reel_ResultDataTable();// new List<Component_Reel_Result>();
List<Component_Reel_Result> result = new List<Component_Reel_Result>();
var tabName = "K4EE_Component_Reel_Result with (no lock)";
using (var db = new EEEntities())
//1.sid sid를 먼저 검색한다. 이것이 확률이 제일 높음
if (this.tbSID.Text.isEmpty() == false)
{
//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);
}
var sql = $"select top 5 * from {tabName} where sid = @sid order by wdate desc";
var list = DBHelper.Get(sql, new SqlParameter("sid", $"{tbSID.Text}"));
//sql = sql.Replace("@sid", tbSID.Text.Trim());
if (list.Rows.Count > 0) result.Merge(list);
}
//2.파트번호
if (result.Count == 0 && this.tbpartno.Text.isEmpty() == false)
{
var sql = $"select top 5 * from {tabName} where QR like @search order by wdate desc";
var list = DBHelper.Get(sql, new SqlParameter("search", $"%;{tbpartno.Text}%"));
if (list.Rows.Count > 0) result.Merge(list);
}
//3.벤더LOT
if (result.Count == 0 && this.tbVLOT.Text.isEmpty() == false)
{
var sql = $"select top 5 * from {tabName} where QR like @search order by wdate desc";
var list = DBHelper.Get(sql, new SqlParameter("search", $"%;{tbVLOT.Text}%"));
if (list.Rows.Count > 0) result.Merge(list);
//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);
}
//4.벤더이름
if (result.Count == 0 && this.tbVName.Text.isEmpty() == false)
{
var sql = $"select top 5 * from {tabName} where QR like @search order by wdate desc";
var list = DBHelper.Get(sql, new SqlParameter("search", $"%;{tbVName.Text}%"));
if (list.Rows.Count > 0) result.Merge(list);
//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" +