|
|
|
|
using Mesnac.Compressor.Data;
|
|
|
|
|
using Mesnac.Compressor.Entity;
|
|
|
|
|
using Mesnac.Compressor.Unity;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
|
|
namespace BarTenderPrint
|
|
|
|
|
{
|
|
|
|
|
public class PrintManager
|
|
|
|
|
{
|
|
|
|
|
public void Print(string barcode, int Machine, string ShiftID)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
MLable mlb = new MLable();
|
|
|
|
|
BoxLable boxlb = new BoxLable();
|
|
|
|
|
barcodLable barcodelb = new barcodLable();
|
|
|
|
|
|
|
|
|
|
string printType = "";
|
|
|
|
|
string Serialnum = "";
|
|
|
|
|
string type = "";
|
|
|
|
|
DbHandler db = new DbHandler();
|
|
|
|
|
string machine = db.GetProductInfoByBarCode(barcode);
|
|
|
|
|
DataTable dt = db.GetCurrentMachine(int.Parse(machine));
|
|
|
|
|
|
|
|
|
|
string Mbarcode = "";
|
|
|
|
|
|
|
|
|
|
//ShiftInfo shift = db.GetShiftInfo();
|
|
|
|
|
string ShiftNo = ShiftID;
|
|
|
|
|
#region 从数据库获取打印数据
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
//0表示正常品1表示试制品
|
|
|
|
|
type = dt.Rows[0]["ProductType"].ToString();
|
|
|
|
|
//打印那种标签
|
|
|
|
|
printType = dt.Rows[0]["PrintType"].ToString();
|
|
|
|
|
//车间字段
|
|
|
|
|
mlb.ShopID = dt.Rows[0]["ShopID"].ToString();
|
|
|
|
|
//日期前面是否+A
|
|
|
|
|
mlb.HasA = Convert.ToInt16(dt.Rows[0]["HasA"]) == 1;
|
|
|
|
|
//是否有另一处需要+时间的地方
|
|
|
|
|
mlb.HasDate = Convert.ToInt16(dt.Rows[0]["HasDate"]) == 1;
|
|
|
|
|
//名牌模板位置
|
|
|
|
|
mlb.TempName= dt.Rows[0]["MPTemplate"].ToString();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
boxlb.MachineNam = dt.Rows[0]["ProductName"].ToString();
|
|
|
|
|
|
|
|
|
|
//前缀
|
|
|
|
|
barcodelb.PreString = dt.Rows[0]["Prefix"].ToString();
|
|
|
|
|
barcodelb.EndString = dt.Rows[0]["Suffix"].ToString();
|
|
|
|
|
//条码模板位置
|
|
|
|
|
barcodelb.TempName = dt.Rows[0]["TMTemplate"].ToString();
|
|
|
|
|
barcodelb.codeType = dt.Rows[0]["CodeType"].ToString();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("未找到该机种信息");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
Console.WriteLine("机种ID:" + Machine.ToString() + "打印类别:" + printType+"");
|
|
|
|
|
|
|
|
|
|
#region 获取序列号
|
|
|
|
|
//这个需要在系统内进行获取早中晚班分别用A,B,C表示
|
|
|
|
|
string beginTime = "";
|
|
|
|
|
DateTime time = DateTime.Now;
|
|
|
|
|
if (string.IsNullOrEmpty(barcode))
|
|
|
|
|
{
|
|
|
|
|
Serialnum = "0001";
|
|
|
|
|
beginTime = DateTime.Now.ToString();
|
|
|
|
|
Console.WriteLine("半部件条码为空");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//通过壳体条码搜索系统M条码,以M条码的后四位作为流水号号
|
|
|
|
|
|
|
|
|
|
Mbarcode = db.GetMbarcode(barcode);
|
|
|
|
|
|
|
|
|
|
Serialnum = Mbarcode.Substring(Mbarcode.Length - 4, 4);
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 获取生产日期
|
|
|
|
|
|
|
|
|
|
Console.WriteLine("半部件条码:"+ Mbarcode);
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
beginTime = getDateString(Mbarcode);
|
|
|
|
|
time = Convert.ToDateTime(beginTime);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
time = DateTime.Now;
|
|
|
|
|
ICSharpCode.Core.LoggingService.Debug(e.ToString());
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
barcodelb.PrintType = printType;
|
|
|
|
|
barcodelb.SerialNum = Serialnum;
|
|
|
|
|
barcodelb.ShiftNo = ShiftNo;
|
|
|
|
|
barcodelb.Date = time;
|
|
|
|
|
|
|
|
|
|
mlb.PrintType = printType;
|
|
|
|
|
mlb.serialNum = Serialnum;
|
|
|
|
|
mlb.ShiftNO = getShift(ShiftNo) ;
|
|
|
|
|
mlb.Date = time;
|
|
|
|
|
|
|
|
|
|
int itype = 0;
|
|
|
|
|
if (!string.IsNullOrEmpty(printType))
|
|
|
|
|
{
|
|
|
|
|
itype = Convert.ToInt32(printType);
|
|
|
|
|
}
|
|
|
|
|
//判断是否需要打印铭牌
|
|
|
|
|
if (!string.IsNullOrEmpty(mlb.TempName))
|
|
|
|
|
{
|
|
|
|
|
#region 打印铭牌
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//这些每个机种应该都谁确定的,在数据库里保存,以后可以一个存储过程去获取
|
|
|
|
|
|
|
|
|
|
Console.WriteLine("开始打印铭牌");
|
|
|
|
|
|
|
|
|
|
PrintEquip Smallequip = new NamePlatePrintEquip();
|
|
|
|
|
Smallequip.tempPath = mlb.TempName;
|
|
|
|
|
Smallequip.ParaClass = mlb;
|
|
|
|
|
Smallequip.Open();
|
|
|
|
|
Smallequip.print();
|
|
|
|
|
Smallequip.Colse();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine(e.ToString());
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
if (!string.IsNullOrEmpty(barcodelb.TempName))
|
|
|
|
|
{
|
|
|
|
|
//0打印条码,1打印纸箱标签
|
|
|
|
|
if (itype == 1)
|
|
|
|
|
{
|
|
|
|
|
#region 纸箱标签
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("开始打印纸箱标签");
|
|
|
|
|
PrintEquip equip = new CartonPrintEquip();
|
|
|
|
|
equip.tempPath = "";
|
|
|
|
|
equip.ParaClass = boxlb;
|
|
|
|
|
equip.Open();
|
|
|
|
|
equip.print();
|
|
|
|
|
equip.Colse();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine(e.ToString());
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
else if (itype == 0)
|
|
|
|
|
{
|
|
|
|
|
#region 条码标签
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("开始打印条码标签");
|
|
|
|
|
PrintEquip equip = new barcodePrintEquip();
|
|
|
|
|
equip.tempPath = barcodelb.TempName;
|
|
|
|
|
equip.ParaClass = barcodelb;
|
|
|
|
|
equip.Open();
|
|
|
|
|
equip.print();
|
|
|
|
|
equip.Colse();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine(e.ToString());
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
else if (itype == 2)
|
|
|
|
|
{
|
|
|
|
|
#region 二维码标签
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("开始打印二维码标签");
|
|
|
|
|
PrintEquip equip = new QRCodePrintEquip();
|
|
|
|
|
equip.tempPath = barcodelb.TempName;
|
|
|
|
|
equip.ParaClass = barcodelb;
|
|
|
|
|
equip.Open();
|
|
|
|
|
equip.print();
|
|
|
|
|
equip.Colse();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine(e.ToString());
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
//else if (itype == 3)
|
|
|
|
|
//{
|
|
|
|
|
// #region 打印铭牌
|
|
|
|
|
// try
|
|
|
|
|
// {
|
|
|
|
|
// //这些每个机种应该都谁确定的,在数据库里保存,以后可以一个存储过程去获取
|
|
|
|
|
|
|
|
|
|
// Console.WriteLine("开始打印铭牌");
|
|
|
|
|
|
|
|
|
|
// PrintEquip Smallequip = new NamePlatePrintEquip();
|
|
|
|
|
// Smallequip.tempPath = mlb.TempName;
|
|
|
|
|
// Smallequip.ParaClass = mlb;
|
|
|
|
|
// Smallequip.Open();
|
|
|
|
|
// Smallequip.print();
|
|
|
|
|
// Smallequip.Colse();
|
|
|
|
|
// }
|
|
|
|
|
// catch (Exception e)
|
|
|
|
|
// {
|
|
|
|
|
// Console.WriteLine(e.ToString());
|
|
|
|
|
// }
|
|
|
|
|
// #endregion
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|