using System;
using System.Data;
using UAS_LabelMachine.CustomControl;
using UAS_LabelMachine.Entity;
namespace UAS_LabelMachine.PublicMethod
{
class LogicHandler
{
static AccessDBHelper adh = SystemInf.adh;
static DataHelper dh = SystemInf.dh;
///
/// 更新为已复核
///
///
public static void UpdateRowRechecked(object iPibID)
{
adh.UpdateByCondition("prodiobarcode", "pib_ifcheck=-1", "pib_id=" + iPibID);
}
///
/// 更新为已打印
///
///
public static void UpdateRowPrinted(object iPibID)
{
adh.UpdateByCondition("prodiobarcode", "pib_ifprint=-1", "pib_id=" + iPibID);
}
///
/// 更新为已采集
///
///
public static void UpdateRowPicked(object iPibID)
{
adh.UpdateByCondition("prodiobarcode", "pib_ifpick=-1,pib_modify=-1", "pib_id=" + iPibID);
}
///
/// 根据对应的动作查找字段发送指令
///
///
///
public static void SendDataToPLC(SerialPortWithTag PLC, string Movement, AccessDBHelper adh)
{
DataTable dt = (DataTable)adh.ExecuteSql("select * from plcinstruct", "select");
if (PLC.IsOpen && dt.Rows.Count > 0)
{
string DevStart = dt.Rows[0][Movement].ToString();
byte[] newbyte = new byte[1];
newbyte[0] = (byte)Convert.ToInt32(DevStart, 16);
PLC.Write(newbyte, 0, 1);
}
}
public static void GetBarCode(string iPIID, string iPDID, int BarCodeNum, out string oBarCode)
{
oBarCode = "";
string[] param = new string[] { iPIID, iPDID, BarCodeNum.ToString(), "", "", "", "", "", "", oBarCode };
dh.CallProcedure("GETCUSTBARCODERULE", ref param);
oBarCode = param[9];
}
///
/// 获取十六进制字节数组
///
///
///
public static byte[] SendPLCData(string Data)
{
byte[] arr = new byte[1];
arr[0] = (byte)Convert.ToInt32(Data, 16);
return arr;
}
///
/// 检测数据库未上传的数据,根据设置的上传条数上传数据
///
///
public static bool CheckUploadData(string iInoutno, int iUploadNum)
{
DataTable dt = (DataTable)adh.ExecuteSql("select pib_id,pib_outboxcode1,pib_outboxcode2,pib_custmidboxcode,pib_custoutboxcode,pib_lotno,pib_datecode,pib_ifmodify,pib_ifupload,pib_ifpick,pib_ifprint,pib_ifrecheck from prodiobarcode where pib_inoutno='" + iInoutno + "' ", "select");
DataTable upload = BaseUtil.filterDataTable(dt, "pib_ifupload=0 and pib_ifrecheck=-1");
DataTable unupload = BaseUtil.filterDataTable(dt, "pib_ifpick=0");
//如果本地需要上传的数据已经达到了需要上传的条数或者已经采集完了最后一条数据
for (int i = 0; i < upload.Rows.Count; i++)
{
upload.Rows[i]["pib_ifupload"] = -1;
}
if (iUploadNum <= upload.Rows.Count || unupload.Rows.Count == 0)
{
dh.CallProcedure("sp_uploadbarcode", upload);
//更新本地数据为已上传
if (adh.UpdateByCondition("prodiobarcode", "pib_ifupload=-1", "pib_inoutno='" + iInoutno + "' and pib_ifrecheck=-1 and pib_ifupload<>-1") > 0)
{
return true;
}
}
return false;
}
///
/// 检测数据库未上传的数据,根据设置的上传条数上传数据
///
///
public static bool CheckUploadData(string iInoutno)
{
DataTable dt = (DataTable)adh.ExecuteSql("select pib_id,pib_outboxcode1,pib_outboxcode2,pib_custmidboxcode,pib_custoutboxcode,pib_lotno,pib_datecode,pib_ifmodify,-1 as pib_ifupload,pib_ifpick,pib_ifprint,pib_ifrecheck from prodiobarcode where pib_inoutno='" + iInoutno + "' and pib_ifupload=0 and pib_ifrecheck=-1 ", "select");
if (dt.Rows.Count > 0)
{
dh.CallProcedure("sp_uploadbarcode", dt);
//更新本地数据为已上传
if (adh.UpdateByCondition("prodiobarcode", "pib_ifupload=-1", "pib_inoutno='" + iInoutno + "' and pib_ifrecheck=-1 and pib_ifupload<>-1") > 0)
{
return true;
}
}
return false;
}
}
}