using LabelManager2;
using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;
using UAS_MES_NEW.DataOperate;
using UAS_MES_NEW.Entity;
using UAS_MES_NEW.PublicForm;
using UAS_MES_NEW.PublicMethod;
namespace UAS_MES_NEW.Make
{
public partial class Make_TestCollectionqrcode2 : Form
{
DataHelper dh = null;
DataTable dt = null;
//当前工序的名称
string ErrorMessage = "";
//用于保存是否之前输入的ms_sncode
string LastSncode;
string oMakeCode = "";
string oMSID = "";
string ifrework = "";
string reworkstatus = "";
LogStringBuilder sql = new LogStringBuilder();
AutoSizeFormClass asc = new AutoSizeFormClass();
///
/// 已选的不良
///
List ChoosedList = new List();
///
/// 待选的不良
///
List WaitList = new List();
bool AutoCut = false;
bool LockSn = false;
DataTable Dbfind;
Thread InitPrint;
ApplicationClass lbl;
public BarTender.Application engine;
public Make_TestCollectionqrcode2()
{
InitializeComponent();
}
private void TestCollection_Load(object sender, EventArgs e)
{
GoodProduct.Checked = true;
asc.controllInitializeSize(this);
ms_sncode.Focus();
Process[] processes = System.Diagnostics.Process.GetProcessesByName("lppa");
Process[] processes1 = System.Diagnostics.Process.GetProcessesByName("bartend");
for (int i = 0; i < processes1.Length; i++)
{
processes1[i].Kill();
}
for (int i = 0; i < processes.Length; i++)
{
processes[i].Kill();
}
InitPrint = new Thread(InPrint);
SetLoadingWindow stw = new SetLoadingWindow(InitPrint, "初始化打印程序");
BaseUtil.SetFormCenter(stw);
stw.ShowDialog();
//设置锁定工单
LockMakeCode.GetMakeCodeCtl(ma_code);
ma_code.SetLockCheckBox(LockMakeCode);
ControlLockTimer.Tick += ControlLockTimer_Tick;
ControlLockTimer.Interval = 100;
//lockCheckBox1.GetMakeCodeCtl(US_ID);
//US_ID.SetLockCheckBox(lockCheckBox1);
//US_ID.TableName = "upcsku";
//US_ID.SelectField = "US_ID # ID,US_PRODUCTCOLOR # PRODUCT_COLOR,US_COLORCODE # 颜色号,US_SKU # SKU,US_UPC # UPC,US_LOCATION # 出货地";
//US_ID.FormName = Name;
//US_ID.SetValueField = new string[] { "US_ID","US_SKU", "US_PRODUCTCOLOR", "US_COLORCODE", "US_UPC","US_LOCATION" };
//US_ID.Condition = "1=1";
//US_ID.DbChange += US_SKU_DbChange;
//工单号放大镜配置
ma_code.TableName = "make left join product on ma_prodcode=pr_code";
ma_code.SelectField = "ma_code # 工单号,ma_prodcode # 产品编号,ma_qty # 工单数量,pr_spec # 产品规格,ma_softversion # 软件版本,ma_appversion # APP版本,ma_rom # ROM ,ma_ram # RAM,ma_salecode # 销售单号,pr_sendchecktype # 产品送检方式";
ma_code.FormName = Name;
ma_code.SetValueField = new string[] { "ma_code", "ma_prodcode", "ma_qty", "pr_spec", "ma_softversion", "ma_appversion", "ma_rom", "ma_ram", "ma_salecode", "nvl(pr_sendchecktype,'LineCode')pr_sendchecktype" };
ma_code.Condition = "ma_statuscode='STARTED'";
ma_code.DbChange += Ma_code_DbChange;
dh = SystemInf.dh;
StepCount.StepCode = User.CurrentStepCode;
StepCount.Source = User.UserSourceCode;
StepCount.LineCode = User.UserLineCode;
StepCount.Dh = dh;
StepCount.Start();
}
private void US_SKU_DbChange(object sender, EventArgs e)
{
//Dbfind = US_ID.ReturnData;
//BaseUtil.SetFormValue(this.Controls, Dbfind);
}
private void InPrint()
{
try
{
engine = new BarTender.Application();
lbl = new ApplicationClass();
BaseUtil.WriteLbl();
}
catch (Exception ex)
{
OperateResult.AppendText("未正确安装CodeSoft软件\n", Color.Red);
}
}
private void ControlLockTimer_Tick(object sender, EventArgs e)
{
this.Activate();
ms_sncode.Focus();
}
private void Ma_code_DbChange(object sender, EventArgs e)
{
Dbfind = ma_code.ReturnData;
BaseUtil.SetFormValue(this.Controls, Dbfind);
LoadCollectedNum();
}
private void CleanInfo_Click(object sender, EventArgs e)
{
OperateResult.Clear();
}
private void ms_code_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
string softversion = "";
string othid = "";
string appver = "";
string rom = "";
string ram = "";
string mac = "";
string bt = "";
string listmac = "";
string listbt = "";
try
{
String[] message = ms_sncode.Text.Split(';');
if (getframeid.Checked)
{
if (message.Length != 8)
{
OperateResult.AppendText(">>需要采集相框ID,采集二维码解析出" + message.Length + "个数据,不符合要求\n", Color.Red, ms_sncode);
return;
}
ms_sncode.Text = message[0];
bt = message[2];
mac = message[1];
softversion = message[3];
othid = message[4];
appver = message[5];
rom = message[6];
ram = message[7];
}
else
{
if (message.Length != 7)
{
OperateResult.AppendText(">>不需要采集相框ID,采集二维码解析出" + message.Length + "个数据,不符合要求\n", Color.Red, ms_sncode);
return;
}
ms_sncode.Text = message[0];
bt = message[2];
mac = message[1];
softversion = message[3];
//othid = message[4];
appver = message[4];
rom = message[5];
ram = message[6];
}
DataGridViewRow row = new DataGridViewRow();
row.CreateCells(LabelDataGridView);
row.Cells[0].Value = ms_sncode.Text;
row.Cells[3].Value = softversion;
row.Cells[4].Value = othid;
row.Cells[5].Value = appver;
row.Cells[6].Value = rom;
row.Cells[2].Value = mac;
row.Cells[1].Value = bt;
row.Cells[7].Value = ram;
LabelDataGridView.Rows.Insert(0, row);
//int index = LabelDataGridView.Rows.Add();
//LabelDataGridView.Rows[index].Cells["SN"].Value = ms_sncode.Text;
//LabelDataGridView.Rows[index].Cells["softversion"].Value = softversion;
//LabelDataGridView.Rows[index].Cells["xkid"].Value = othid;
//LabelDataGridView.Rows[index].Cells["mmi1"].Value = mmi1;
//LabelDataGridView.Rows[index].Cells["mmi2"].Value = mmi2;
//LabelDataGridView.Rows[index].Cells["wifis"].Value = mac;
//LabelDataGridView.Rows[index].Cells["bts"].Value = bt;
//LabelDataGridView.Rows[index].Cells["opentime"].Value = opentime;
}
catch (Exception ex)
{
OperateResult.AppendText(">>" + ex.Message + "\n", Color.Red, ms_sncode);
return;
}
WaitList.Clear();
ChoosedList.Clear();
if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out ErrorMessage))
{
bool NoteAlready = LogicHandler.CheckDiffMakeCodeBeforeStepCheck(ms_sncode.Text, ma_code.Text, NoteForChange.Checked, out oMakeCode, out ErrorMessage);
if (!NoteAlready)
{
OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
return;
}
if (LogicHandler.CheckStepSNAndMacode(oMakeCode, User.UserSourceCode, ms_sncode.Text, User.UserCode, out oMakeCode, out oMSID, out ErrorMessage))
{
//是否提示过工单切换框,检测前后执行
if (!LogicHandler.CheckDiffMakeCodeAfterStepCheck(ms_sncode.Text, oMakeCode, NoteForChange.Checked, NoteAlready, ma_code, out ErrorMessage))
{
OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
return;
}
if (ma_code.Text != oMakeCode && oMakeCode != null)
{
dt = (DataTable)dh.ExecuteSql("select ma_code,ma_prodcode,ma_softversion,ma_salecode,pr_spec,nvl(pr_sendchecktype,'LineCode')pr_sendchecktype,ma_qty,ma_appversion,ma_rom,ma_ram from make left join product on ma_prodcode=pr_code where ma_code='" + oMakeCode + "'", "select");
if (dt.Rows.Count > 0)
{
BaseUtil.SetFormValue(this.Controls, dt);
LockMakeCode.Checked = true;
}
}
dt = (DataTable)dh.ExecuteSql("select ms_nextstepcode,ms_sncode,ms_reworkstatus,nvl(ms_ifrework,0)ms_ifrework,ms_stepcode,ms_status,nvl(ms_netcode,' ') ms_netcode,nvl(st_ifrepair,0) st_ifrepair from makeserial left join step on ms_stepcode=st_code where ms_id='" + oMSID + "'", "select");
string status = dt.Rows[0]["ms_status"].ToString();
reworkstatus = dt.Rows[0]["ms_reworkstatus"].ToString();
string stepcode = dt.Rows[0]["ms_stepcode"].ToString();
string ifrepair = dt.Rows[0]["st_ifrepair"].ToString();
string sncode = dt.Rows[0]["ms_sncode"].ToString();
string ms_netcode = dt.Rows[0]["ms_netcode"].ToString();
string ms_nextstepcode = dt.Rows[0]["ms_nextstepcode"].ToString();
//if (ms_netcode != " " && dh.CheckExist("makeserial", "ms_netcode = '" + ms_netcode + "' and ms_sncode <>'" + ms_sncode.Text + "'"))
//{
// string othersn = dh.getFieldDataByCondition("makeserial", "ms_sncode", "ms_netcode = '" + ms_netcode + "' and ms_sncode <>'" + ms_sncode.Text + "'").ToString();
// OperateResult.AppendText(">>" + ms_sncode.Text + "对应wifibox:"+ms_netcode+"已被SN:"+othersn+"使用\n", Color.Red, ms_sncode);
// return;
//}
if (sncode != ms_sncode.Text)
{
OperateResult.AppendText(">>" + ms_sncode.Text + " 序列号已执行过转号,不允许使用TSN采集\n", Color.Red, ms_sncode);
return;
}
ifrework = dt.Rows[0]["ms_ifrework"].ToString();
//string softversioncheck = dh.GetConfig("softversion", "sys").ToString();
if (softversion != ma_softversion.Text)
{
OperateResult.AppendText("<<序列号:" + ms_sncode.Text + "对应软件版本:" + softversion + "与工单维护软件版本:" + ma_softversion.Text + "不一致\n", Color.Red);
return;
}
if (appver != ma_appversion.Text)
{
OperateResult.AppendText("<<序列号:" + ms_sncode.Text + "对应APP版本:" + appver + "与工单维护APP版本:" + ma_appversion.Text + "不一致\n", Color.Red);
return;
}
if (rom != ma_rom.Text)
{
OperateResult.AppendText("<<序列号:" + ms_sncode.Text + "对应ROM:" + rom + "与工单维护ROM:" + ma_rom.Text + "不一致\n", Color.Red);
return;
}
if (ram != ma_ram.Text)
{
OperateResult.AppendText("<<序列号:" + ms_sncode.Text + "对应RAM:" + ram + "与工单维护RAM:" + ma_ram.Text + "不一致\n", Color.Red);
return;
}
//if (!mmi1.Contains("PASS") || !mmi2.Contains("PASS"))
//{
// OperateResult.AppendText("<<序列号:" + ms_sncode.Text + "未通过MMI测试\n", Color.Red);
// return;
//}
//if (dh.CheckExist("product", "pr_code = '" + ma_prodcode.Text + "' and pr_length = -1 ") && mmi1.Contains("UNKNOWN"))
//{
// OperateResult.AppendText("<<序列号:" + ms_sncode.Text + " MMI1信息异常\n", Color.Red);
// return;
//}
//if (dh.CheckExist("product", "pr_code = '" + ma_prodcode.Text + "' and pr_width = -1 ") && mmi2.Contains("UNKNOWN"))
//{
// OperateResult.AppendText("<<序列号:" + ms_sncode.Text + " MMI2信息异常\n", Color.Red);
// return;
//}
if (dh.CheckExist("product", "pr_code = '" + ma_prodcode.Text + "' and pr_volume = -1 ") && bt.Contains("UNKNOWN"))
{
OperateResult.AppendText("<<序列号:" + ms_sncode.Text + " BT信息异常\n", Color.Red);
return;
}
if (dh.CheckExist("product", "pr_code = '" + ma_prodcode.Text + "' and pr_height = -1 ") && mac.Contains("UNKNOWN"))
{
OperateResult.AppendText("<<序列号:" + ms_sncode.Text + " WIFI信息异常\n", Color.Red);
return;
}
if (dh.CheckExist("product", "pr_code = '" + ma_prodcode.Text + "' and pr_palletheight = -1 ") && othid.Contains("UNKNOWN"))
{
OperateResult.AppendText("<<序列号:" + ms_sncode.Text + " 相框ID信息异常\n", Color.Red);
return;
}
listmac = dh.getFieldDataByCondition("makesnlist", "msl_mac", "msl_sncode ='" + ms_sncode.Text + "' and msl_makecode = '" + ma_code.Text + "'").ToString();
if (listmac != "" && listmac != mac.ToUpper())
{
OperateResult.AppendText("<<序列号:" + ms_sncode.Text + " 导入WIFI为:" + listmac + ",与二维码mac:" + mac + "不一致\n", Color.Red);
return;
}
listbt = dh.getFieldDataByCondition("makesnlist", "msl_bt", "msl_sncode ='" + ms_sncode.Text + "' and msl_makecode = '" + ma_code.Text + "'").ToString();
if (listbt != "" && listbt != bt.ToUpper())
{
OperateResult.AppendText("<<序列号:" + ms_sncode.Text + " 导入BT为:" + listbt + ",与二维码BT:" + bt + "不一致\n", Color.Red);
return;
}
dh.ExecuteSql("update makeserial set MS_SOFTVERSION = '" + softversion + "',ms_othid1 = '" + othid + "'," +
"ms_mac = '" + mac + "',ms_bt = '" + bt + "',ms_appver = '" + appver + "' where ms_sncode = '" + ms_sncode.Text + "' and ms_makecode = '" + ma_code.Text + "'", "update");
//if (US_SKU.Text != "")
//{
// dh.ExecuteSql("update makeserial set ms_sku = '" + US_SKU.Text + "' where ms_sncode = '" + ms_sncode.Text + "' and ms_makecode = '" + ma_code.Text + "'", "update");
//}
//if (US_UPC.Text != "")
//{
// dh.ExecuteSql("update makeserial set ms_upc = '" + US_UPC.Text + "' where ms_sncode = '" + ms_sncode.Text + "' and ms_makecode = '" + ma_code.Text + "'", "update");
//}
//if (US_LOCATION.Text != "")
//{
// dh.ExecuteSql("update makeserial set MS_location = '" + US_LOCATION.Text + "' where ms_sncode = '" + ms_sncode.Text + "' and ms_makecode = '" + ma_code.Text + "'", "update");
//}
if (autoprint.Checked)
{
if (PrintLabel.Text.ToUpper().Contains(".BTW"))
{
if (Print.SinglePrint(Tag.ToString(), engine, PrintLabel.Text, PrintLabel.SelectedValue.ToString(), Printer.Text, ms_sncode.Text, int.Parse(PrintNum.Text), oMakeCode, ma_prodcode.Text, "机身标", "0", out ErrorMessage))
{
//提示用户打印成功
OperateResult.AppendText(">>序列号:" + ms_sncode.Text + "打印成功\n", Color.Green);
}
else
{
OperateResult.AppendText(ErrorMessage + "\n", Color.Red);
}
}
else
{
if (Print.CodeSoft(Tag.ToString(), ref lbl, PrintLabel.Text, PrintLabel.SelectedValue.ToString(), Printer.Text, ms_sncode.Text, int.Parse(PrintNum.Text), oMakeCode, ma_prodcode.Text, "机身标", "0", out ErrorMessage))
{
//提示用户打印成功
OperateResult.AppendText(">>序列号:" + ms_sncode.Text + "打印成功\n", Color.Green);
}
else
{
OperateResult.AppendText(ErrorMessage + "\n", Color.Red);
}
}
}
SetCollectResult();
}
else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
}
else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
}
}
///
/// 设置良品或者不良品的采集结果
///
private void SetCollectResult()
{
string ErrorMessage = "";
//如果勾选的是不良品
if (Reject.Checked)
{
OperateResult.AppendText(">>请采集不良代码\n", Color.Green);
//勾选了自动产生代码
if (AutoBadCode.Checked)
Save_Click(new object(), new EventArgs());
}
else if (GoodProduct.Checked)
{
//如果不是返修的
if (ifrework == "0")
{
dt = (DataTable)dh.ExecuteSql("select mb_id,bc_name,mbr_mbid from makebad left join makebadreason on mbr_mbid=mb_id left join badcode on mb_badcode=bc_code where mb_sncode='" + ms_sncode.Text + "' and mb_makecode='" + ma_code.Text + "' and mb_status=0", "select");
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["mb_id"].ToString() != dt.Rows[i]["mbr_mbid"].ToString())
ErrorMessage += "【" + dt.Rows[i]["bc_name"].ToString() + "】";
}
//存在不良记录
if (ErrorMessage != "")
{
OperateResult.AppendText(">>序列号:" + ms_sncode.Text + " 已经判为不良品,不允许修改!\n", Color.Red);
return;
}
else
{
//良品信息采集
if (LogicHandler.SetStepResult(ma_code.Text, User.UserSourceCode, ms_sncode.Text, "良品采集", "检测合格", User.UserCode, out ErrorMessage))
{
//提示正确返回时传递的信息
if (ErrorMessage.Contains("AFTERSUCCESS"))
OperateResult.AppendText(">>" + ErrorMessage + "\n");
LastSncode = ms_sncode.Text;
OperateResult.AppendText(">>" + ms_sncode.Text + "良品采集成功\n", Color.Green, ms_sncode);
//记录操作日志
LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "采集良品", "采集良品成功", LastSncode, ob_checkno.Text);
}
else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
}
}
else
{
if (reworkstatus != "3")
{
if (LogicHandler.SetStepResult(ma_code.Text, User.UserSourceCode, ms_sncode.Text, "良品采集", "检测合格", User.UserCode, out ErrorMessage))
{
//提示正确返回时传递的信息
if (ErrorMessage.Contains("AFTERSUCCESS"))
OperateResult.AppendText(">>" + ErrorMessage + "\n");
LastSncode = ms_sncode.Text;
OperateResult.AppendText(">>" + ms_sncode.Text + "成功采集为良品\n", Color.Green, ms_sncode);
//记录操作日志
LogicHandler.DoCommandLog(Tag.ToString(), User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "采集良品", "采集良品成功", LastSncode, ob_checkno.Text);
}
else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
}
else
{
OperateResult.AppendText(">>返修的不良序列号必须先进行维修\n", Color.Red);
}
}
}
//加载页面信息
LoadCollectedNum();
}
private void 测试采集_SizeChanged(object sender, EventArgs e)
{
asc.controlAutoSize(this);
}
private void LoadCollectedNum()
{
dt = (DataTable)dh.ExecuteSql("select mcd_inqty,ma_qty-mcd_inqty mcd_remainqty from make left join makecraftdetail on mcd_macode=ma_code where ma_code='" + ma_code.Text + "' and mcd_stepcode='" + User.CurrentStepCode + "'", "select");
BaseUtil.SetFormValue(Controls, dt);
}
private void Save_Click(object sender, EventArgs e)
{
if (ms_sncode.Text == "")
{
OperateResult.AppendText(">>序列号不允许为空\n", Color.Red);
return;
}
if (GoodProduct.Checked)
ms_code_KeyDown(sender, new KeyEventArgs(Keys.Enter));
}
private void GoodProduct_CheckedChanged(object sender, EventArgs e)
{
if (GoodProduct.Checked)
{
Save.Visible = false;
}
else
{
Save.Visible = true;
}
if (ms_sncode.Text == "")
{
ms_sncode.Focus();
}
}
///
/// 工单变化修改数量
///
///
///
private void ma_code_UserControlTextChanged(object sender, EventArgs e)
{
if (ma_code.Text.Length > 4)
{
BaseUtil.CleanControlsText(mcd_inqty, mcd_remainqty, ob_nowcheckqty);
LoadCollectedNum();
//LoadCheckQTY();
}
}
private void Make_TestCollection_FormClosing(object sender, FormClosingEventArgs e)
{
BaseUtil.ClosePrint(lbl);
if (engine != null)
engine.Quit(BarTender.BtSaveOptions.btDoNotSaveChanges);
dh.Dispose();
}
private void ma_prodcode_TextChanged(object sender, EventArgs e)
{
DataTable dt = (DataTable)dh.ExecuteSql("select la_id,la_url,la_isdefault from label where la_prodcode='" + ma_prodcode.Text + "' and la_templatetype='机身标' and la_statuscode='AUDITED' order by la_isdefault", "select");
if (dt.Rows.Count == 0)
{
return;
}
PrintLabel.DataSource = dt;
PrintLabel.DisplayMember = "la_url";
PrintLabel.ValueMember = "la_id";
}
private void Make_TestCollection_KeyDown(object sender, KeyEventArgs e)
{
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Q)
{
if (!LockSn)
{
ControlLockTimer.Start();
LockSn = true;
Lock_label.Visible = true;
}
else
{
ControlLockTimer.Stop();
LockSn = false;
Lock_label.Visible = false;
}
}
}
private void button1_Click(object sender, EventArgs e)
{
}
}
}