You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

272 lines
7.7 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using BarTenderPrint;
using Mesnac.Codd.Session;
using Mesnac.Compressor.Data;
using System;
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;
using System.Windows.Forms;
namespace FrmPrint
{
public partial class Form1 : Form
{
protected DbHandler db = new DbHandler();
DbHelper dbHelper = null;
SerialEquip Com;
string Port = System.Configuration.ConfigurationManager.AppSettings["Com"];
public delegate void Transit(string data);
public Form1()
{
InitializeComponent();
Console.WriteLine("开始初始化");
try
{
string constr = System.Configuration.ConfigurationManager.AppSettings["SqlString"];
DbSession dbsession = new DbSession(SqlClientFactory.Instance, constr);
dbHelper = new DbHelper(dbsession);
}
catch
{
MessageBox.Show("数据库连接异常,请检查网络");
return;
}
BindClass();
bindMachine();
InitPort();
}
public void InitPort()
{
//Com = new SerialEquip(Port);
//Com.OpenCom(null);
//Com.SerialData += Receive;
}
public void Receive(string Data)
{
try
{
Reresh(Data);
PrintPrepare(Data);
}
catch(Exception e)
{
//ICSharpCode.Core.LoggingService.Debug(e.ToString())
Console.WriteLine(e.ToString());
}
}
private void PrintPrepare(string Data)
{
if (string.IsNullOrEmpty(Data) || Data.Length < 4)
{
MessageBox.Show("条码长度不够");
return;
}
Print pt= new FrmPrint.Print();
pt.barcode = Data;
////查询当前机种信息
pt.Machine= Convert.ToInt32(cb_machine.SelectedValue);
//pt.Machine = 1;//没办法加载强制置1
pt.Shift= getShift(cb_shift.SelectedValue.ToString());
ThreadPool.QueueUserWorkItem(new WaitCallback(Print), pt);
//Print(Data);
}
/// <summary>
/// 更新barcode
/// </summary>
/// <param name="barcode"></param>
private void Reresh(string barcode)
{
if (this.InvokeRequired)
{
this.Invoke(new Transit(Reresh), barcode);
return;
}
this.txt_barcode.Text = barcode.ToString();
}
/// <summary>
/// 机种绑定
/// </summary>
private void bindMachine()
{
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "SELECT ProductID,ProductName FROM dbo.T_BD_ProductInfo";
DataTable dt= dbHelper.ToDataTable();
cb_machine.DisplayMember = "ProductName";
cb_machine.ValueMember = "ProductID";
cb_machine.DataSource = dt;
}
catch
{
MessageBox.Show("机种绑定失败");
}
}
private void Print(object print)
{
lock (string.Empty)
{
var pt = print as Print;
if(pt==null)
{
return;
}
PrintManager pm = new PrintManager();
pm.Print(pt.barcode,pt.Machine,pt.Shift);
}
}
public void BindClass()
{
DataTable dt = new DataTable();
dt.Columns.Add("key", typeof(string));
dt.Columns.Add("value", typeof(string));
DataRow dr = dt.NewRow();
dr[0] = "01";
dr[1] = "早班";
dt.Rows.Add(dr);
DataRow dr2 = dt.NewRow();
dr2[0] = "02";
dr2[1] = "中班";
dt.Rows.Add(dr2);
DataRow dr3 = dt.NewRow();
dr3[0] = "03";
dr3[1] = "晚班";
dt.Rows.Add(dr3);
this.cb_shift.DataSource = dt;
this.cb_shift.DisplayMember = "value";
this.cb_shift.ValueMember = "key";
}
private string getShift(string shift)
{
string shiftA = "A";
switch (shift)
{
case "01":
shiftA = "A";
break;
case "02":
shiftA = "B";
break;
case "03":
shiftA = "C";
break;
default:
break;
}
return shiftA;
}
private string getDateString(string semiBarcode)
{
string datestring = "20";
if (string.IsNullOrEmpty(semiBarcode))
{
datestring = DateTime.Now.ToString();
}
else
{
string year = semiBarcode.Substring(1, 2);
string month = semiBarcode.Substring(3, 2);
string date = semiBarcode.Substring(5, 2);
datestring += year + "-" + month + "-" + date;
}
return datestring;
}
public DataTable GetCurrentMachine(string MachineID)
{
if (dbHelper == null)
{
return null;
}
try
{
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
string sql = " SELECT * FROM dbo.T_BD_ProductInfo WHERE ProductID='" + MachineID + "'";
dbHelper.CommandText = sql;
Console.WriteLine("sql语句"+sql);
return dbHelper.ToDataTable();
}
catch (Exception ex)
{
Console.WriteLine("数据查询错误:"+ex.ToString());
return null;
}
}
public string LastWorkProductionInfo(string barcode, string TableName)
{
if (dbHelper == null)
{
return null;
}
try
{
StringBuilder sb = new StringBuilder();
dbHelper.ClearParameter();
dbHelper.CommandType = CommandType.Text;
dbHelper.CommandText = "";
sb.Append(" SELECT TOP(1) State FROM " + TableName + " WHERE ScanBarcode='").Append(barcode).Append("' order by InsertTime desc ");
dbHelper.CommandText = sb.ToString();
DataTable dt = dbHelper.ToDataTable();
return dbHelper.ToScalar().ToString();
}
catch (Exception ex)
{
Console.WriteLine("数据查询错误:" + ex.ToString());
return null;
}
}
private void btn_close_Click(object sender, EventArgs e)
{
this.Com.Comm.Close();
this.Close();
}
private void btn_print_Click(object sender, EventArgs e)
{
PrintPrepare(txt_barcode.Text);
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
public class Print
{
public int Machine;
public string Shift = "";
public string barcode = "";
}
}