Browse Source

支持现代打印标签

master
ruoxing.wang 1 day ago
parent
commit
a21c91ae53
  1. 6
      MESClassLibrary/BLL/Injection/UniqueBll.cs
  2. 16
      MESClassLibrary/DAL/Injection/UniqueDal.cs
  3. 8
      PunchingMistake/FrmAssemble.Designer.cs
  4. 80
      PunchingMistake/FrmAssemble.cs
  5. 4
      PunchingMistake/FrmLogin.cs
  6. 2
      PunchingMistake/FrmPlanSeach.cs
  7. 32
      PunchingMistake/Function2.cs
  8. 16
      PunchingMistake/Printer.cs
  9. 2
      PunchingMistake/Program.cs
  10. 1
      PunchingMistake/PunchingMistake.csproj
  11. BIN
      PunchingMistake/Report/总成条码Hyundai.grf

6
MESClassLibrary/BLL/Injection/UniqueBll.cs

@ -24,10 +24,14 @@ namespace MESClassLibrary.BLL.Injection
/// <param name="partNo"></param>
/// <param name="size"></param>
/// <returns></returns>
public string GetPunchSerialNo(string partNo, int size,ref string seriaLNo)
public string GetPunchSerialNoMI(string partNo, int size,ref string seriaLNo)
{
return da.GetPunchSerialNo(partNo, size,ref seriaLNo);
}
public string GetPunchSerialNoHyundai(string partNo, int size, ref string seriaLNo)
{
return da.GetPunchSerialNo2(partNo, size, ref seriaLNo);
}
/// <summary>
/// 直供件 条码
/// </summary>

16
MESClassLibrary/DAL/Injection/UniqueDal.cs

@ -93,7 +93,23 @@ namespace MESClassLibrary.DAL.Injection
return GetPunchSerialNo(partNo, size,ref seriaLNo);
}
}
public string GetPunchSerialNo2(string partNo, int size, ref string seriaLNo)
{
DateTime time = DateTime.Now;
string batch = time.Month.ToString().PadLeft(2, '0') + time.Day.ToString().PadLeft(2, '0');
seriaLNo = GetBillNo(partNo + batch + "小件装配总成码", size);
string sjBarCode = "A010X00062A" + batch + seriaLNo + "K" + partNo;
try
{
SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, $" insert into tb_BarCodeUnique(OneBarCode) values('{sjBarCode}')");
return sjBarCode;
}
catch (Exception ex)
{
return GetPunchSerialNo2(partNo, size, ref seriaLNo);
}
}
}

8
PunchingMistake/FrmAssemble.Designer.cs

@ -225,17 +225,17 @@ namespace PunchingMistake
//
// lbPlanQty
//
this.lbPlanQty.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lbPlanQty.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.lbPlanQty.AutoSize = true;
this.lbPlanQty.BackColor = System.Drawing.Color.Transparent;
this.lbPlanQty.Font = new System.Drawing.Font("宋体", 128.1429F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lbPlanQty.ForeColor = System.Drawing.Color.LightSeaGreen;
this.lbPlanQty.Location = new System.Drawing.Point(150, 195);
this.lbPlanQty.Location = new System.Drawing.Point(136, 170);
this.lbPlanQty.Name = "lbPlanQty";
this.lbPlanQty.Size = new System.Drawing.Size(275, 300);
this.lbPlanQty.TabIndex = 3;
this.lbPlanQty.Text = "0";
this.lbPlanQty.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label12
//
@ -267,7 +267,7 @@ namespace PunchingMistake
this.lbCompleteQty.BackColor = System.Drawing.Color.Transparent;
this.lbCompleteQty.Font = new System.Drawing.Font("宋体", 128.1429F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lbCompleteQty.ForeColor = System.Drawing.Color.LimeGreen;
this.lbCompleteQty.Location = new System.Drawing.Point(150, 179);
this.lbCompleteQty.Location = new System.Drawing.Point(145, 206);
this.lbCompleteQty.Name = "lbCompleteQty";
this.lbCompleteQty.Size = new System.Drawing.Size(275, 300);
this.lbCompleteQty.TabIndex = 4;

80
PunchingMistake/FrmAssemble.cs

@ -25,12 +25,13 @@ namespace PunchingMistake
{
private PlcInvoke _plcInvoke = null;
private GridppReport Report = new GridppReport();
private string oneBarCode = "", _stationNo = "", stationId = "";
private string oneBarCode = "", stationId = "" ;
private UniqueBll _uniqueBll = new UniqueBll();
private string _sjBarCode = string.Empty;
private string _partNo1 = string.Empty;
private string _partNo2 = string.Empty;
private string _carModelCode = string.Empty;
private string _barCodeFormate = string.Empty;
/// <summary>
/// 当前设备行数据ID
/// </summary>
@ -48,17 +49,23 @@ namespace PunchingMistake
rate = 200;
}
this.Size = new Size(1280, 1024);
_plcInvoke = new PlcInvoke("BBMPT.Assemble", _stationNo);
_plcInvoke = new PlcInvoke("BBMPT.Assemble", Program.station);
_plcInvoke.ShowLinkInfo = ShowLinkResult;
_plcInvoke.ShowMessage = ShowMassege;
_plcInvoke.InitDev(rate);
}
private void FrmAssemble_Load(object sender, EventArgs e)
{
_stationNo = ConfigurationManager.AppSettings["Station"];
{
_barCodeFormate = ConfigurationManager.AppSettings["BarCodeFormate"];
if (string.IsNullOrEmpty(_barCodeFormate))
{
MessageBox.Show("配置文件中,条码格式[BarCodeFormate]不能为空.");
return;
}
//stationId = ProScreenFunc.GetStationId(stationNo);
lbStation.Text = Function2.GetStation(_stationNo);
lbStation.Text = Program.stationName;// Function2.GetStation(_stationNo);
Control.CheckForIllegalCrossThreadCalls = false;
Thread t = new Thread(new ThreadStart(TimeGo));
t.Start();
@ -67,7 +74,7 @@ namespace PunchingMistake
}
public void LoadScreen()
{
DataTable dt = Function2.GetProScreen(_stationNo);
DataTable dt = Function2.GetProScreen(Program.station);
if (dt != null && dt.Rows.Count > 0)
{
SetPage(dt);
@ -76,13 +83,14 @@ namespace PunchingMistake
{
if (this.Tag != null)
{
DataTable lineTable = Function2.GetPunchLineInfo(this.Tag.ToString(), _stationNo);
DataTable lineTable = Function2.GetPunchLineInfo(this.Tag.ToString(), Program.station);
if (lineTable.Rows.Count > 0)
{
_lineDataID = lineTable.Rows[0]["ID"].ToString();
_sjBarCode = lineTable.Rows[0]["SjBarCode"].ToString();
_partNo1 = lineTable.Rows[0]["PartNo1"].ToString();
_partNo2 = lineTable.Rows[0]["PartNo2"].ToString();
_carModelCode = lineTable.Rows[0]["CarModelCode"].ToString();
ScanAll.barCode1 = lineTable.Rows[0]["barCode1"].ToString();
ScanAll.barCode2 = lineTable.Rows[0]["barCode2"].ToString();
ScanAll.barCode3 = lineTable.Rows[0]["barCode3"].ToString();
@ -159,7 +167,7 @@ namespace PunchingMistake
}
public void LoadPlanScreen(string id, string plan)
{
DataTable dt = Function2.GetProScreenPlan(id, _stationNo, plan);
DataTable dt = Function2.GetProScreenPlan(id, Program.station, plan);
if (dt != null && dt.Rows.Count > 0)
{
SetPage(dt);
@ -191,7 +199,11 @@ namespace PunchingMistake
{
return;
}
WriteHint("", true);
WriteHint("", true);
txtBarCode.Focus();
txtBarCode.SelectAll();
string barcode = txtBarCode.Text?.Trim();
if (string.IsNullOrEmpty(barcode))
{
@ -222,7 +234,7 @@ namespace PunchingMistake
}
SaveScanRecord(_sjBarCode, _partNo1, _partNo2);
SaveScanRecord(_sjBarCode, _partNo1, _partNo2, _carModelCode);
Function2. DeleteLineData(_lineDataID);
ClearScanData(true);
SentToPlc(true, _lineDataID);
@ -297,14 +309,16 @@ namespace PunchingMistake
_partNo2 = PartScanVerify();
_partNo1 = Function2.GetAssemblePartCode(_partNo2, _stationNo);
_partNo1 = Function2.GetAssemblePartCode(_partNo2, Program.station);
_carModelCode = Function2.GetCarType(_partNo1);
if (lbPart.Text?.ToLower() != _partNo1?.ToLower())
{
throw new Exception($"扫描半成品码在BOM中对应的总成零件号[{_partNo1}]与当前计划的零件号[{lbPart.Text}]不匹配.");
}
DataTable bomTable = Function2.GetBomTable(_partNo1, _stationNo);
DataTable bomTable = Function2.GetBomTable(_partNo1, Program.station);
//需要校验的关键件
List<DataRow> list = bomTable.AsEnumerable().Where(p => p.Field<bool>("IsChecked") == true).ToList();
@ -325,11 +339,11 @@ namespace PunchingMistake
if (list2.Count > 0)
{
//接收到螺钉信号后再保存
SendScrewRivet(bomTable, list2, _sjBarCode);
SendScrewRivet(bomTable, list2, _sjBarCode, _carModelCode);
}
else
{
_lineDataID = Function2.SaveLineInfo(_sjBarCode, this.Tag?.ToString(), _stationNo, _partNo1, _partNo2, 0, 0, 0, 0, 0);
_lineDataID = Function2.SaveLineInfo(_sjBarCode, this.Tag?.ToString(), Program.station, _partNo1, _partNo2, 0, 0, 0, 0, 0, _carModelCode);
WriteHint("验证成功,请扫完成码保存", true);
//SaveScanRecord(barCode, partNo1, partNo2);
@ -342,11 +356,11 @@ namespace PunchingMistake
if (list2.Count > 0)
{
//接收到螺钉信号后再保存
SendScrewRivet(bomTable, list2, _sjBarCode);
SendScrewRivet(bomTable, list2, _sjBarCode, _carModelCode);
}
else
{
_lineDataID = Function2.SaveLineInfo(_sjBarCode, this.Tag?.ToString(), _stationNo, _partNo1, _partNo2, 0, 0, 0, 0, 0);
_lineDataID = Function2.SaveLineInfo(_sjBarCode, this.Tag?.ToString(), Program.station, _partNo1, _partNo2, 0, 0, 0, 0, 0, _carModelCode);
WriteHint("验证成功,请扫完成码保存", true);
//SaveScanRecord(barCode, partNo1, partNo2);
}
@ -420,7 +434,7 @@ namespace PunchingMistake
return true;
}
void SendScrewRivet(DataTable bomTable, List<DataRow> list2 ,string barCode)
void SendScrewRivet(DataTable bomTable, List<DataRow> list2 ,string barCode,string carModelCode)
{
if (list2.Count > 0)
{
@ -457,7 +471,7 @@ namespace PunchingMistake
lbIrlsAll.Text = leftQty3.ToString();
}
}
_lineDataID = Function2.SaveLineInfo(sjBarCode, this.Tag?.ToString(),_stationNo,_partNo1,_partNo2, leftQty2, rightQty2, leftQty1, rightQty1, leftQty3);
_lineDataID = Function2.SaveLineInfo(sjBarCode, this.Tag?.ToString(), Program.station, _partNo1,_partNo2, leftQty2, rightQty2, leftQty1, rightQty1, leftQty3, carModelCode);
SentToPlc(false,_lineDataID);
}
}
@ -466,22 +480,32 @@ namespace PunchingMistake
_plcInvoke.SendToPLC(isInit, lineID);
}
private void SaveScanRecord(string barcode,string partNo1,string partNo2)
private void SaveScanRecord(string barcode,string partNo1,string partNo2,string carModelCode)
{
//保存装配记录
//更新计划完成数量
//
string serailNo = "0001";
string assembleBarCode = _uniqueBll.GetPunchSerialNo(partNo1, 4,ref serailNo);
string serailNo = "00001";
string assembleBarCode = "";
if(_barCodeFormate == "MI")
{
assembleBarCode = _uniqueBll.GetPunchSerialNoMI(partNo1, 5, ref serailNo);
}
else
{
assembleBarCode = _uniqueBll.GetPunchSerialNoHyundai(partNo1, 5, ref serailNo);
}
int res = Function2.SavePartAndProduct_New(barcode, partNo1, partNo2, assembleBarCode,
lbPlan.Text.Trim(), lbClass.Text, this.Tag?.ToString(), serailNo,
ScanAll.barCode1, ScanAll.barCode2, ScanAll.barCode3,
ScanAll.barCode4, ScanAll.barCode5, ScanAll.barCode6, _stationNo, ConfigurationManager.AppSettings["StationDescription"]);
ScanAll.barCode4, ScanAll.barCode5, ScanAll.barCode6, Program.station, ConfigurationManager.AppSettings["StationDescription"], carModelCode);
Function2.SaveZcCode(barcode, partNo1);
Function2.AddCompleteCount(this.Tag?.ToString(),"合格");
PrintAssembleBarCode(assembleBarCode, partNo1, lbPartDesc.Text, serailNo);
PrintAssembleBarCode(assembleBarCode, partNo1, lbPartDesc.Text, serailNo, carModelCode);
if (Function2.CheckPlanCompleted(this.Tag.ToString().Trim()))
{
@ -493,9 +517,9 @@ namespace PunchingMistake
}
}
private void PrintAssembleBarCode(string BarCode, string PartNo, string PartName, string SerialNo )
private void PrintAssembleBarCode(string BarCode, string PartNo, string PartName, string SerialNo,string carModelCode )
{
Printer.PrintPunchAssembleBarCode(BarCode, PartNo, PartName, SerialNo);
Printer.PrintPunchAssembleBarCode(BarCode, PartNo, PartName, SerialNo, carModelCode);
}
@ -651,8 +675,8 @@ namespace PunchingMistake
{
lbClass.Text = Function3.GetWorkClass();
txtBarCode.Focus();
txtBarCode.SelectAll();
//txtBarCode.Focus();
//txtBarCode.SelectAll();
}
/// <summary>

4
PunchingMistake/FrmLogin.cs

@ -73,7 +73,9 @@ namespace PunchingMistake
DataTable sdt = sbll.SearchInfoByNo(Program.station);
if (sdt != null && sdt.Rows.Count > 0)
{
stationID = sdt.Rows[0]["StationID"].ToString();
stationID = sdt.Rows[0]["StationID"].ToString();
Program.stationName = sdt.Rows[0]["Des"].ToString();
Program.LineName = sdt.Rows[0]["LineName"].ToString();
}
sdt.Dispose();

2
PunchingMistake/FrmPlanSeach.cs

@ -47,7 +47,7 @@ namespace PunchingMistake
MessageBox.Show($"总成零件号[{row["ZcPartNo"].ToString()}]在零件表中不存在.");
return;
}
Printer.PrintPunchAssembleBarCode(row["ZcBarCode"].ToString(), row["ZcPartNo"].ToString(), partName, row["SerialNo"].ToString());
Printer.PrintPunchAssembleBarCode(row["ZcBarCode"].ToString(), row["ZcPartNo"].ToString(), partName, row["SerialNo"].ToString(), row["CarModelCode"].ToString());
}
}

32
PunchingMistake/Function2.cs

@ -426,7 +426,7 @@ namespace PunchingMistake
}
}
public static int SavePartAndProduct_New(string barcode, string partNo1, string partNo2, string ZcID, string OrderNo, string WorkClass, string planID, string SerialNo, string barCode1, string barCode2, string barCode3, string barCode4, string barCode5, string barCode6, string stationId, string description)
public static int SavePartAndProduct_New(string barcode, string partNo1, string partNo2, string ZcID, string OrderNo, string WorkClass, string planID, string SerialNo, string barCode1, string barCode2, string barCode3, string barCode4, string barCode5, string barCode6, string stationId, string description,string carMoedelCode)
{
int res = 0;
try
@ -441,7 +441,7 @@ namespace PunchingMistake
,[WorkClass]
,[CreateTime], PlanID,SerialNo
,barCode1,barCode2,barCode3
,barCode4,barCode5,barCode6,StationNo,StationDescription)
,barCode4,barCode5,barCode6,StationNo,StationDescription,CarModelCode)
VALUES
('" + barcode + @"'
,'" + partNo2 + @"'
@ -451,7 +451,7 @@ namespace PunchingMistake
,'" + WorkClass + @"'
,(select getdate()), '" + planID + @"','" + SerialNo + @"'
,'" + barCode1 + @"','" + barCode2 + @"','" + barCode3 + @"'
,'" + barCode4 + @"','" + barCode5 + @"','" + barCode6 + @"','" + stationId + @"','" + description + "@')";
,'" + barCode4 + @"','" + barCode5 + @"','" + barCode6 + @"','" + stationId + @"','" + description + @"','" + carMoedelCode + "@')";
res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
return res;
}
@ -714,26 +714,6 @@ namespace PunchingMistake
res = dd.ToString();
}
}
//string sql3 = "";
//if (partNo != "")
//{
// sql3 = @"select ProductID
// from tb_Product
// where partNo = '" + partNo + @"'";
//}
//else
//{
// sql3 = @"select ProductID
// from tb_Product
// where StockNo = '" + stockNo + @"'";
//}
//object dd = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql3, null);
//if (dd != null)
//{
// res = dd.ToString();
//}
}
}
//LogHelper.WriteSysLogBase("[一码到底]传出ProductID2:" + res, MethodBase.GetCurrentMethod().Name);
@ -910,13 +890,13 @@ namespace PunchingMistake
return res;
}
public static string SaveLineInfo(string sjBarCode, string planID,string stationNo,string partNo1,string partNo2, int LeftRivet1All, int RightRivet1All, int LeftScrew1All, int RightScrew1All, int IrIsAll )
public static string SaveLineInfo(string sjBarCode, string planID,string stationNo,string partNo1,string partNo2, int LeftRivet1All, int RightRivet1All, int LeftScrew1All, int RightScrew1All, int IrIsAll ,string carModelCode)
{
string res = string.Empty;
try
{
string sql = $"insert into tb_Punch_Line (SjBarCode,PlanID,StationNo,PartNo1,PartNo2,barCode1,barCode2,barCode3,barCode4,barCode5,barCode6, LeftRivet1All,RightRivet1All,LeftScrew1All,RightScrew1All,IrIsAll ) " +
$"values('{sjBarCode}','{planID}','{stationNo}','{partNo1}','{partNo2}','{ScanAll.barCode1}','{ScanAll.barCode2}','{ScanAll.barCode3}','{ScanAll.barCode4}','{ScanAll.barCode5}','{ScanAll.barCode6}','{LeftRivet1All}','{RightRivet1All}','{LeftScrew1All}','{RightScrew1All}','{IrIsAll}' );select @@Identity";
string sql = $"insert into tb_Punch_Line (SjBarCode,PlanID,StationNo,PartNo1,PartNo2,barCode1,barCode2,barCode3,barCode4,barCode5,barCode6, LeftRivet1All,RightRivet1All,LeftScrew1All,RightScrew1All,IrIsAll,CarModelCode ) " +
$"values('{sjBarCode}','{planID}','{stationNo}','{partNo1}','{partNo2}','{ScanAll.barCode1}','{ScanAll.barCode2}','{ScanAll.barCode3}','{ScanAll.barCode4}','{ScanAll.barCode5}','{ScanAll.barCode6}','{LeftRivet1All}','{RightRivet1All}','{LeftScrew1All}','{RightScrew1All}','{IrIsAll}','{carModelCode}' );select @@Identity";
object dd = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (dd != null)
{

16
PunchingMistake/Printer.cs

@ -15,7 +15,7 @@ namespace PunchingMistake
/// <summary>
/// 小件总成装配打印总成条码
/// </summary>
public static void PrintPunchAssembleBarCode( string barCode, string partNo1, string partName, string serialNo)
public static void PrintPunchAssembleBarCode( string barCode, string partNo1, string partName, string serialNo,string carType)
{
string filename = GetPrintFileName();
DataTable headTable = new DataTable();
@ -25,6 +25,8 @@ namespace PunchingMistake
headTable.Columns.Add("BatchNo");
headTable.Columns.Add("SerialNo");
headTable.Columns.Add("Line");
headTable.Columns.Add("Operater");
headTable.Columns.Add("CarType");
DataRow row = headTable.NewRow();
row["BarCode"] = barCode;
@ -33,6 +35,9 @@ namespace PunchingMistake
row["BatchNo"] = DateTime.Now.ToString("yyMMdd");
row["SerialNo"] = serialNo;
row["Line"] = ConfigurationManager.AppSettings["Line"];
row["Operater"] = Program.UserName;
row["CarType"] = carType;
string printBoxName = "Printer1";
string reportName = ConfigurationManager.AppSettings[printBoxName].ToString();
@ -44,12 +49,9 @@ namespace PunchingMistake
}
static string GetPrintFileName()
{
if (Program.station == "F01")
{
return System.AppDomain.CurrentDomain.BaseDirectory + "Report\\总成条码MI.grf";
}
return System.AppDomain.CurrentDomain.BaseDirectory + "Report\\总成条码MI.grf";
string templateName = ConfigurationManager.AppSettings["PrintTemplate"].ToString();
return System.AppDomain.CurrentDomain.BaseDirectory + $"Report\\{templateName}.grf";
}
}
}

2
PunchingMistake/Program.cs

@ -12,6 +12,8 @@ namespace PunchingMistake
{
public static string station;
public static string UserName;
public static string stationName;
public static string LineName;
public static SqlConnection DBConn;
public static string WmsConn;

1
PunchingMistake/PunchingMistake.csproj

@ -173,6 +173,7 @@
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<None Include="Report\总成条码Hyundai.grf" />
<None Include="Report\总成条码MI.grf">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>

BIN
PunchingMistake/Report/总成条码Hyundai.grf

Binary file not shown.
Loading…
Cancel
Save