天津投入产出系统后端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

295 lines
12 KiB

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Configuration;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QMFrameWork.Data;
using QMAPP.FJC.Entity.FIS;
using System.Data;
using System.Collections;
using Model;
namespace DCS.Common
{
public class PrintCode
{
/// <summary>
/// 获取打印标签模板
/// </summary>
string strGetPrintModel = ConfigUtil.GetPrintModel();
/// <summary>
/// 获取第三方打印程序
/// </summary>
string strGetPrintExe = ConfigUtil.GetPrintExe();
/// <summary>
/// 获取打印标签文本数据
/// </summary>
string strGetDataFile = ConfigUtil.GetDataFile();
#region 生成txt文件(打印条码使用)
/// <summary>
/// 生成txt文件
/// </summary>
/// <param name="_type">状态:0 下线打印 1 补打条码 </param>
/// <param name="zcNum">总成条码</param>
/// <param name="prodNo">零件号</param>
public void WriteFile(string _type, string zcNum, string prodNo, DateTime time)
{
StringBuilder sb = new StringBuilder();
//工厂名称
string factoryName = "FJC Chengdu";
#region 获得零件号名称
//获得零件号名称判断字段
string zcNumTemp = zcNum.Substring(7, 1);
string prodName = "";
if (zcNumTemp == "A")
{
prodName = "NCS GP IP 黑";
}
else if (zcNumTemp == "B")
{
prodName = "NCS GP IP 灰";
}
else if (zcNumTemp == "C")
{
prodName = "NCS IP";
}
#endregion
#region 获得生产时间
string dateString = "";//生产时间
string paraId = "";//参数ID,用来标记班次
string classOneTime = "";//标记班次1的班次时间
string classTwoTime = "";//标记班次2的班次时间
string classThreeTime = "";//标记班次3的班次时间
StringBuilder sbsql = new StringBuilder();
sbsql.Append("SELECT [PARAID],[PARAVALUE] FROM T_QM_PARA WHERE FLAGDEL=0 AND PARATYPE = 7");
//DataTable dt = SqlHelper.QueryReturnDataTable(sbsql.ToString());
QMAPP.ServicesAgent.ServiceAgent agent = QMAPP.WinForm.ClientContext.GetServiceAgent();
DataTable dt = agent.InvokeServiceFunction<DataTable>(QMAPP.ServicesAgent.FrmPlaceManage.FrmPlaceBLL_WriteFile.ToString(), sbsql);
if (dt.Rows.Count > 0)
{
// 取得班次时间
foreach (DataRow item in dt.Rows)
{
if (item["PARAID"].ToString() == "05")
{
classOneTime = item["PARAVALUE"].ToString();
}
if (item["PARAID"].ToString() == "06")
{
classTwoTime = item["PARAVALUE"].ToString();
}
if (item["PARAID"].ToString() == "07")
{
classThreeTime = item["PARAVALUE"].ToString();
}
}
// 确定日期--------------------------------------------------------------------------
// 如果早于一班时间,算前一天的班次
string resultDate = time.ToString("yyyy-MM-dd");
string classThisTime = time.ToString("yyyy-MM-dd HH:mm:ss").Substring(11, 8);
if (Convert.ToDateTime(classThisTime) < Convert.ToDateTime(classOneTime))
{
resultDate = time.AddDays(-1).ToString("yyyy-MM-dd");
}
// 计算班次--------------------------------------------------------------------------
// 计算班次开始时间点
string resultClass = "";
DateTime testTime0 = Convert.ToDateTime(classThisTime);
DateTime testTime1 = Convert.ToDateTime(classOneTime);
DateTime testTime2 = Convert.ToDateTime(classTwoTime);
DateTime testTime3 = Convert.ToDateTime(classThreeTime);
if (testTime2 > testTime3)
{
testTime3 = Convert.ToDateTime(classThreeTime).AddDays(1);
}
if (testTime0 < testTime1)
{
testTime0 = Convert.ToDateTime(classThisTime).AddDays(1);
}
if (testTime0 >= testTime1 && testTime0 < testTime2)
{
resultClass = " A";
}
else if (testTime0 >= testTime2 && testTime0 < testTime3)
{
resultClass = " B";
}
else
{
resultClass = " C";
}
//拼写时间串
dateString = resultDate + resultClass;
}
#endregion
//生成文本头
sb.Append("\"总成条码\",");
sb.Append("\"零件名称\",");
sb.Append("\"工厂名称\",");
sb.Append("\"零件号\",");
sb.Append("\"时间\"");
//生成文本数据
sb.Append("\r\n\"" + zcNum + "\",");//加\R\N
sb.Append("\"" + prodName + "\",");//加\R\N
sb.Append("\"" + factoryName + "\",");//加\R\N
sb.Append("\"" + prodNo + "\",");//零件号
sb.Append("\"" + dateString.Replace("/",".") + "\"");
//默认数据文件位置
string labelDataFile = ConfigurationManager.AppSettings.Get("LabelDataFile"); //"d://barcode.txt";
labelDataFile = strGetDataFile;
if (String.IsNullOrEmpty(labelDataFile))
{
labelDataFile = ConfigurationManager.AppSettings.Get("LabelDataFile"); //"d://barcode.txt";
}
StreamWriter sw = new StreamWriter(labelDataFile, false, Encoding.Default);
sw.Write(sb.ToString());
sw.Flush();
sw.Close();
}
#endregion
#region 打印标签
/// <summary>
/// 打印标签
/// </summary>
public void PinrtHU()
{
//string logFile = "d:\\logFile.txt";
//if (System.IO.File.Exists(logFile))
//{
// System.IO.File.AppendAllText(logFile, "A |" + DateTime.Now.ToLongTimeString());
//}
//else
//{
// System.IO.File.WriteAllText(logFile, "B |" + DateTime.Now.ToLongTimeString());
//}
//string labelQdfFile = ConfigurationManager.AppSettings.Get("LabelQdfFile");//"d://barcode.qdf";
string labelQdfFile = strGetPrintModel;
if (String.IsNullOrEmpty(labelQdfFile))
{
labelQdfFile = ConfigurationManager.AppSettings.Get("LabelQdfFile");//"d://barcode.qdf";
}
//string labelPrinter = ConfigurationManager.AppSettings.Get("LabelPrinter"); //"C://Program Files//lmw32//lmwprint.exe";
string labelPrinter = strGetPrintExe;
if (String.IsNullOrEmpty(labelPrinter))
{
labelPrinter = ConfigurationManager.AppSettings.Get("LabelPrinter"); //"C://Program Files//lmw32//lmwprint.exe";
}
//System.IO.File.AppendAllText(logFile, "C |" + DateTime.Now.ToLongTimeString());
//ProcessStartInfo psi = new ProcessStartInfo();
//System.IO.File.AppendAllText(logFile, "D |" + DateTime.Now.ToLongTimeString());
//psi.FileName = labelPrinter;
//System.IO.File.AppendAllText(logFile, "E |" + DateTime.Now.ToLongTimeString());
//psi.Arguments = "\"" + labelQdfFile + "\"";
//System.IO.File.AppendAllText(logFile, "F |" + DateTime.Now.ToLongTimeString());
Process[] pro = Process.GetProcesses();
foreach (Process proces in pro)
{
if (proces.ProcessName == "Lmwprint"&&(DateTime.Now-proces.StartTime).Seconds>3)
{
proces.Kill();
}
}
Process.Start(labelPrinter, "\"" + labelQdfFile + "\"");
//System.IO.File.AppendAllText(logFile, "G |" + DateTime.Now.ToLongTimeString());
}
#endregion
#region 打印标签
/// <summary>
/// 打印标签
/// </summary>
public void PinrtFirstPlaceHU()
{
string labelQdfFile = ConfigUtil.GetFirstPlacePrintModel();
if (String.IsNullOrEmpty(labelQdfFile))
{
labelQdfFile = ConfigurationManager.AppSettings.Get("LabelQdfFilePlace");//"d://barcode.qdf";
}
string labelPrinter = strGetPrintExe;
if (String.IsNullOrEmpty(labelPrinter))
{
labelPrinter = ConfigurationManager.AppSettings.Get("LabelMatrix"); //"C://Program Files//lmw32//lmwprint.exe";
}
//System.IO.File.AppendAllText(logFile, "C |" + DateTime.Now.ToLongTimeString());
//ProcessStartInfo psi = new ProcessStartInfo();
//System.IO.File.AppendAllText(logFile, "D |" + DateTime.Now.ToLongTimeString());
//psi.FileName = labelPrinter;
//System.IO.File.AppendAllText(logFile, "E |" + DateTime.Now.ToLongTimeString());
//psi.Arguments = "\"" + labelQdfFile + "\"";
//System.IO.File.AppendAllText(logFile, "F |" + DateTime.Now.ToLongTimeString());
WriteFileForFirstPlace("");
Process[] pro = Process.GetProcesses();
foreach (Process proces in pro)
{
if (proces.ProcessName == "Lmwprint" && (DateTime.Now - proces.StartTime).Seconds > 3)
{
proces.Kill();
}
}
Process.Start(labelPrinter, "\"" + labelQdfFile + "\"");
//System.IO.File.AppendAllText(logFile, "G |" + DateTime.Now.ToLongTimeString());
}
#endregion
#region 生成txt文件(打印条码使用)
/// <summary>
/// 生成txt文件
/// </summary>
public void WriteFileForFirstPlace(string _filePath)
{
StringBuilder sb = new StringBuilder();
//生成文本头
sb.Append("编码,显示值");
//生成文本数据
sb.Append("\r\n\"" + ConfigurationManager.AppSettings.Get("PlaceFirstPositionCode") + "\",");//加\R\N
sb.Append("\"" + ConfigurationManager.AppSettings.Get("PlaceFirstPositionText") + "\",");//加\R\N
//默认数据文件位置
string labelDataFile = ConfigurationManager.AppSettings.Get("LabelDataFilePlace"); //"d://barcode.txt";
//labelDataFile = strGetDataFile;
if (String.IsNullOrEmpty(labelDataFile))
{
labelDataFile = ConfigurationManager.AppSettings.Get("LabelDataFilePlace"); //"d://barcode.txt";
}
StreamWriter sw = new StreamWriter(labelDataFile, false, Encoding.Default);
sw.Write(sb.ToString());
sw.Flush();
sw.Close();
}
#endregion
}
}