Browse Source

注塑喷涂

master
wrx 4 months ago
parent
commit
8092d37a20
  1. 740
      SjMes/AddMaterial/App_Code/Function.cs
  2. 115
      SjMes/AddMaterial/App_Code/JSONHelper.cs
  3. 133
      SjMes/AddMaterial/App_Code/LogHelper.cs
  4. 109
      SjMes/AddMaterial/App_Code/Model.cs
  5. 17
      SjMes/AddMaterial/App_Data/PublishProfiles/AddMaterial.pubxml
  6. 84
      SjMes/AddMaterial/Default.html
  7. 268
      SjMes/AddMaterial/Handler.ashx
  8. 43
      SjMes/AddMaterial/PaintView.ashx
  9. 105
      SjMes/AddMaterial/PaintView.html
  10. BIN
      SjMes/AddMaterial/Pic/banner.jpg
  11. 190
      SjMes/AddMaterial/PlanScreen.html
  12. 97
      SjMes/AddMaterial/PlanScreenStyleSheet.css
  13. 49
      SjMes/AddMaterial/StyleSheet.css
  14. BIN
      SjMes/AddMaterial/Tools.dll
  15. 32
      SjMes/AddMaterial/Web.Debug.config
  16. 23
      SjMes/AddMaterial/Web.config
  17. 45
      SjMes/AddMaterial/echarts.min.js
  18. 5
      SjMes/AddMaterial/jquery-1.8.0.min.js
  19. 159
      SjMes/BBMPT.sln
  20. BIN
      SjMes/InjectionPC/2.ico
  21. 52
      SjMes/InjectionPC/App.config
  22. 136
      SjMes/InjectionPC/AutoUpdater.cs
  23. 71
      SjMes/InjectionPC/Form1.Designer.cs
  24. 28
      SjMes/InjectionPC/Form1.cs
  25. 120
      SjMes/InjectionPC/Form1.resx
  26. 620
      SjMes/InjectionPC/FrmBarCode.Designer.cs
  27. 1558
      SjMes/InjectionPC/FrmBarCode.cs
  28. 484
      SjMes/InjectionPC/FrmBarCode.resx
  29. 435
      SjMes/InjectionPC/FrmDown.Designer.cs
  30. 343
      SjMes/InjectionPC/FrmDown.cs
  31. 481
      SjMes/InjectionPC/FrmDown.resx
  32. 149
      SjMes/InjectionPC/FrmLogin.Designer.cs
  33. 212
      SjMes/InjectionPC/FrmLogin.cs
  34. 713
      SjMes/InjectionPC/FrmLogin.resx
  35. 428
      SjMes/InjectionPC/FrmQuality.Designer.cs
  36. 597
      SjMes/InjectionPC/FrmQuality.cs
  37. 484
      SjMes/InjectionPC/FrmQuality.resx
  38. BIN
      SjMes/InjectionPC/GlacialList.dll
  39. 230
      SjMes/InjectionPC/InjectionPC.csproj
  40. BIN
      SjMes/InjectionPC/Interop.TaskScheduler.dll
  41. 76
      SjMes/InjectionPC/LogHelper.cs
  42. BIN
      SjMes/InjectionPC/Logo.png
  43. BIN
      SjMes/InjectionPC/Picture/V&W205-AMG-F.jpg
  44. 93
      SjMes/InjectionPC/Program.cs
  45. 36
      SjMes/InjectionPC/Properties/AssemblyInfo.cs
  46. 63
      SjMes/InjectionPC/Properties/Resources.Designer.cs
  47. 117
      SjMes/InjectionPC/Properties/Resources.resx
  48. 26
      SjMes/InjectionPC/Properties/Settings.Designer.cs
  49. 7
      SjMes/InjectionPC/Properties/Settings.settings
  50. 99
      SjMes/InjectionPC/ReportHelper.cs
  51. BIN
      SjMes/InjectionPC/SchTaskExtAPI.dll
  52. 99
      SjMes/InjectionPC/Upload.cs
  53. BIN
      SjMes/InjectionPC/北汽模塑.png
  54. 9
      SjMes/InjectionPLC/App.config
  55. 64
      SjMes/InjectionPLC/Form1.Designer.cs
  56. 253
      SjMes/InjectionPLC/Form1.cs
  57. 120
      SjMes/InjectionPLC/Form1.resx
  58. 103
      SjMes/InjectionPLC/InjectionPLC.csproj
  59. BIN
      SjMes/InjectionPLC/Interop.OPCAutomation.dll
  60. 22
      SjMes/InjectionPLC/Program.cs
  61. 36
      SjMes/InjectionPLC/Properties/AssemblyInfo.cs
  62. 63
      SjMes/InjectionPLC/Properties/Resources.Designer.cs
  63. 117
      SjMes/InjectionPLC/Properties/Resources.resx
  64. 26
      SjMes/InjectionPLC/Properties/Settings.Designer.cs
  65. 7
      SjMes/InjectionPLC/Properties/Settings.settings
  66. 15
      SjMes/InjectionSearch/App.config
  67. 145
      SjMes/InjectionSearch/Form1.Designer.cs
  68. 110
      SjMes/InjectionSearch/Form1.cs
  69. 713
      SjMes/InjectionSearch/Form1.resx
  70. 445
      SjMes/InjectionSearch/FrmBarCodeSearch.Designer.cs
  71. 486
      SjMes/InjectionSearch/FrmBarCodeSearch.cs
  72. 120
      SjMes/InjectionSearch/FrmBarCodeSearch.resx
  73. BIN
      SjMes/InjectionSearch/GlacialList.dll
  74. 159
      SjMes/InjectionSearch/InjectionSearch.csproj
  75. 43
      SjMes/InjectionSearch/Program.cs
  76. 36
      SjMes/InjectionSearch/Properties/AssemblyInfo.cs
  77. 71
      SjMes/InjectionSearch/Properties/Resources.Designer.cs
  78. 117
      SjMes/InjectionSearch/Properties/Resources.resx
  79. 30
      SjMes/InjectionSearch/Properties/Settings.Designer.cs
  80. 7
      SjMes/InjectionSearch/Properties/Settings.settings
  81. BIN
      SjMes/InjectionSearch/北汽模塑.png
  82. 20
      SjMes/MESClassLibrary/App.config
  83. 42
      SjMes/MESClassLibrary/BLL/Andon/AndonButtonRecordBLL.cs
  84. 31
      SjMes/MESClassLibrary/BLL/Andon/AndonButtonTypeBLL.cs
  85. 178
      SjMes/MESClassLibrary/BLL/BasicBLL.cs
  86. 44
      SjMes/MESClassLibrary/BLL/BasicInfo/BadInjectionBLL.cs
  87. 174
      SjMes/MESClassLibrary/BLL/BasicInfo/BarCodeBLL.cs
  88. 271
      SjMes/MESClassLibrary/BLL/BasicInfo/BomBLL.cs
  89. 184
      SjMes/MESClassLibrary/BLL/BasicInfo/BucketInfoBLL.cs
  90. 198
      SjMes/MESClassLibrary/BLL/BasicInfo/CheckItemBLL.cs
  91. 214
      SjMes/MESClassLibrary/BLL/BasicInfo/ColorBLL.cs
  92. 181
      SjMes/MESClassLibrary/BLL/BasicInfo/DefectBLL.cs
  93. 144
      SjMes/MESClassLibrary/BLL/BasicInfo/DeptBLL.cs
  94. 251
      SjMes/MESClassLibrary/BLL/BasicInfo/DeviceBLL.cs
  95. 148
      SjMes/MESClassLibrary/BLL/BasicInfo/FactoryBLL.cs
  96. 141
      SjMes/MESClassLibrary/BLL/BasicInfo/ImgVideoBLL.cs
  97. 419
      SjMes/MESClassLibrary/BLL/BasicInfo/InjectionPlanBLL.cs
  98. 170
      SjMes/MESClassLibrary/BLL/BasicInfo/LineBLL.cs
  99. 149
      SjMes/MESClassLibrary/BLL/BasicInfo/LocationBLL.cs
  100. 184
      SjMes/MESClassLibrary/BLL/BasicInfo/MachineBLL.cs

740
SjMes/AddMaterial/App_Code/Function.cs

@ -0,0 +1,740 @@
using DBUtility;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Reflection;
using System.Web;
/// <summary>
/// Function 的摘要说明
/// </summary>
public class Function
{
/// <summary>
/// 获取页面所需数据
/// </summary>
/// <returns></returns>
public static List<Model> GetData()
{
List<Model> list = new List<Model>();
try
{
string sql = @"
select a.CylinderNo, d.StationNo, b.BarCode, b.Time1
from tb_Cylinder a
left join tb_CylinderAndRaw b
on a.CylinderID = b.CylinderID and b.Time2 is null
left join tb_StationAndCylinder c
on a.CylinderID = c.CylinderID and c.Time2 is null
left join tb_Station d
on c.StationID = d.StationID
--WHERE datediff(dd,b.Time1,GETDATE())=0
order by a.CylinderNo
";
DataTable dt1 = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (dt1 != null && dt1.Rows.Count > 0)
{
for (int i = 0; i < dt1.Rows.Count; i++)
{
string stockNo = "";
string batchNo = "";
string partNo = "";
GetCode(dt1.Rows[i]["BarCode"].ToString(), out stockNo, out batchNo, out partNo);
DataTable dt2 = new DataTable();
if (!string.IsNullOrWhiteSpace(stockNo))
{
string sql2 = " select PartName, ProductName from tb_Product where StockNo = '" + stockNo.Trim() + "' ";
dt2 = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql2, null);
}
else if (!string.IsNullOrWhiteSpace(partNo))
{
string sql2 = " select PartName, ProductName from tb_Product where PartNo = '" + partNo.Trim() + "' ";
dt2 = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql2, null);
}
Model model = new Model();
model.Drum = dt1.Rows[i]["CylinderNo"].ToString();
model.Station = dt1.Rows[i]["StationNo"].ToString();
model.BatchNo = batchNo;
model.Time1 = dt1.Rows[i]["Time1"].ToString();
if (dt2 != null && dt2.Rows.Count > 0)
{
model.MaterialName = dt2.Rows[0]["ProductName"].ToString();
//model.ProductName = dt2.Rows[0]["PartName"].ToString();
}
DataTable dt_product = GetProductName(model.Station);
if (dt_product != null && dt_product.Rows.Count > 0)
{
model.ProductName = dt_product.Rows[0]["Plan"].ToString();
}
list.Add(model);
}
}
return list;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return list;
}
}
/// <summary>
/// 根据注塑机查询计划要生产的产品信息
/// </summary>
/// <param name="machineCode"></param>
/// <returns></returns>
private static DataTable GetProductName(string machineCode)
{
DataTable res = new DataTable();
try
{
string sql = @"
select top 1 ProductName as [Plan] from tb_Product where StockNo = (
select top 1 StockNo from tb_InjectionPlan where StationID = (
select StationID from tb_Station where StationNo = '" + machineCode + @"' )
AND (IsFinish is null or IsFinish = 0)
ORDER BY BeginTime ASC
)
";
res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (res == null || res.Rows.Count < 1)
{
string sql2 = @" select top 1 ProductName as [Plan] from tb_Product where PartNo = (
select top 1 PartNo from tb_InjectionPlan where StationID = (
select StationID from tb_Station where StationNo = '" + machineCode + @"' )
AND (IsFinish is null or IsFinish = 0)
ORDER BY BeginTime ASC
)
";
res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql2, null);
}
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return res;
}
}
/// <summary>
/// 解析条码(一维码返回存货代码,二维码返回零件号)
/// </summary>
/// <param name="code">条码</param>
/// <param name="stockNo">存货代码</param>
/// <param name="batchNo">批次</param>
/// /// <param name="partNo">零件号</param>
public static void GetCode(string code, out string stockNo, out string batchNo, out string partNo)
{
//解析塑料粒子条码,长度为20的为一维码22000000821906090201,否则为二维码
//二维码样例Z-340.180411.000001;5000;S35001;20180411;P1710401.[#Line#];180411;
//第一个分号之前的数据,即Z-340.180411.000001; Z-340为零件号,180411为批次号,000001为流水号
//一维码前十位为零件号,tb_Product PartNo,11~16位为批次
stockNo = ""; //存货代码
batchNo = ""; //批次
partNo = ""; //零件号
try
{
if (code.Contains(".") == false)
{
//一维码
if (code.Length > 9)
{
stockNo = code.Substring(0, 10);
batchNo = code.Substring(10, 6);
}
}
else
{
//二维码
string[] strs = code.Split(';');
if (strs.Length > 0)
{
string str = strs[0];
string[] props = str.Split('.');
if (props.Length >= 3)
{
partNo = props[0];
batchNo = props[1];
}
}
}
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
}
}
/// <summary>
/// 注塑车间计划看板数据
/// lx 20190531
/// </summary>
/// <returns></returns>
public static string GetPlanTable()
{
string res = "";
PlanModel model = new PlanModel();
try
{
//string stationNo = ConfigurationManager.AppSettings["StationNo"].ToString();
#region 获取端口号,查工位号--注销
//int ipPort = HttpContext.Current.Request.Url.Port;
//string sqlStation = @" select StationNo from tb_PlanScreenConfig where IP = '" + ipPort + @"' ";
//string stationNo = "";
//object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sqlStation, null);
//if (aa != null)
//{
// stationNo = aa.ToString();
//}
#endregion
#region 工位号
string stationNo = ConfigurationManager.AppSettings["StationNo"].ToString();
model.Station = stationNo;
#endregion
#region 查询生产计划
string stockNo = "";
string partNo = "";
DataTable dtPlan = new DataTable();
string sqlPlan1 = @"
select top 1 ProductName as [Plan],StockNo,PartNo from tb_Product where StockNo = (
select top 1 StockNo from tb_InjectionPlan where StationID = (
select StationID from tb_Station where StationNo = '" + stationNo + @"' )
AND (IsFinish IS NULL OR IsFinish = 0)
ORDER BY BeginTime ASC
)
";
dtPlan = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sqlPlan1, null);
if (dtPlan == null || dtPlan.Rows.Count < 1)
{
string sqlPlan2 = @" select top 1 ProductName as [Plan],StockNo,PartNo from tb_Product where PartNo = (
select top 1 PartNo from tb_InjectionPlan where StationID = (
select StationID from tb_Station where StationNo = '" + stationNo + @"' )
AND (IsFinish IS NULL OR IsFinish = 0)
ORDER BY BeginTime ASC
)
";
dtPlan = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sqlPlan2, null);
}
if (dtPlan != null && dtPlan.Rows.Count > 0)
{
model.PartNo = dtPlan.Rows[0]["PartNo"].ToString();
stockNo = dtPlan.Rows[0]["StockNo"].ToString();
partNo = dtPlan.Rows[0]["PartNo"].ToString();
}
#endregion
#region 查询产品信息
DataTable dtProduct = GetProductName(stationNo);
if (dtProduct != null && dtProduct.Rows.Count > 0)
{
model.ProductName = dtProduct.Rows[0][0].ToString();
}
#endregion
#region 查询数量
#region 查询StationID
string stationID = "";
string sqlStationID = " select StationID from tb_Station where StationNo = '" + stationNo + "' ";
stationID = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sqlStationID, null).ToString();
#endregion
#region 计划数量
DataTable dt3 = new DataTable();
string sql3 = "";
if (!string.IsNullOrWhiteSpace(stockNo))
{
sql3 = @" SELECT InjectionPlanID, PlanCount FROM tb_InjectionPlan WHERE StationID = '" + stationID + @"' AND StockNo = '" + stockNo +
"' AND (IsFinish is null or IsFinish = 0) ORDER BY BeginTime ASC ";
}
else if (!string.IsNullOrWhiteSpace(partNo))
{
sql3 = @" SELECT InjectionPlanID, PlanCount FROM tb_InjectionPlan WHERE StationID = '" + stationID + @"' AND PartNo = '" + partNo +
"' AND (IsFinish is null or IsFinish = 0) ORDER BY BeginTime ASC ";
}
dt3 = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql3, null);
string injectionPlanID = "";
if (dt3 != null && dt3.Rows.Count > 0)
{
model.PlanCount = dt3.Rows[0]["PlanCount"].ToString();
injectionPlanID = dt3.Rows[0]["InjectionPlanID"].ToString();
}
#endregion
#region 完成数量等
DataTable dt4 = new DataTable();
string sql4 = "";
string date = DateTime.Now.ToString("yyyy-MM-dd");
if (DateTime.Now.Hour >= 0 && DateTime.Now.Hour < 8)
{
date = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
}
if (!string.IsNullOrWhiteSpace(stockNo))
{
sql4 = @" SELECT ISNULL(SUM(ISNULL(ProductCount,0)),0) ProductCount, ISNULL(SUM(ISNULL(BadCount,0)),0) BadCount
FROM tb_Product_Injection
WHERE StationID = '" + stationID + @"'
AND StockNo = '" + stockNo + @"'
AND ProductDate = '" + date + @"'
AND ClassName = '" + GetWorkClass() + @"'
AND PlanID = '" + injectionPlanID + @"'
";
}
else if (!string.IsNullOrWhiteSpace(partNo))
{
sql4 = @" SELECT ISNULL(SUM(ISNULL(ProductCount,0)),0) ProductCount, ISNULL(SUM(ISNULL(BadCount,0)),0) BadCount
FROM tb_Product_Injection
WHERE StationID = '" + stationID + @"'
AND PartNo = '" + partNo + @"'
AND ProductDate = '" + date + @"'
AND ClassName = '" + GetWorkClass() + @"'
AND PlanID = '" + injectionPlanID + @"'
";
}
dt4 = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql4, null);
if (dt4 != null && dt4.Rows.Count > 0)
{
model.CompleteCount = dt4.Rows[0]["ProductCount"].ToString();
int prc = 0; int badc = 0;
Int32.TryParse(dt4.Rows[0]["ProductCount"].ToString(), out prc);
Int32.TryParse(dt4.Rows[0]["BadCount"].ToString(), out badc);
model.PassCount = (prc - badc).ToString();
int passc = 0;
double compc = 0.0;
Int32.TryParse(model.PassCount, out passc);
Double.TryParse(model.CompleteCount, out compc);
if (compc == 0.0)
{
model.CompleteRate = "0.0%";
}
else
{
model.CompleteRate = (passc / compc * 100).ToString("0.00") + "%";
}
}
#endregion
#region 查询剩余计划零件号和计划数量
//string sql_plan = @" select PartNo, PlanCount from tb_InjectionPlan where StationID = '" + dt.Rows[0]["StationID"].ToString() + "' AND (IsFinish is null or IsFinish = 0) ORDER BY BeginTime ASC ";
string sql_plan = @"
SELECT tb_Product.ProductName ProductName, PlanCount from tb_InjectionPlan
JOIN tb_Product ON tb_Product.StockNo = tb_InjectionPlan.StockNo
WHERE StationID = '" + stationID + @"' AND (IsFinish is null or IsFinish = 0) ORDER BY BeginTime ASC
";
DataTable dt_plan = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql_plan, null);
if (dt_plan != null && dt_plan.Rows.Count > 0)
{
if (dt_plan.Rows.Count >= 2)
{
//model.PartNo2 = dt_plan.Rows[1]["PartNo"].ToString();
model.PartNo2 = dt_plan.Rows[1]["ProductName"].ToString();
model.PlanCount2 = dt_plan.Rows[1]["PlanCount"].ToString();
}
if (dt_plan.Rows.Count >= 3)
{
//model.PartNo3 = dt_plan.Rows[2]["PartNo"].ToString();
model.PartNo3 = dt_plan.Rows[2]["ProductName"].ToString();
model.PlanCount3 = dt_plan.Rows[2]["PlanCount"].ToString();
}
}
#endregion
#endregion
string sql = @"
select a.CylinderNo, d.StationNo, d.StationID, b.BarCode, b.Time1
from tb_Cylinder a
left join tb_CylinderAndRaw b
on a.CylinderID = b.CylinderID and b.Time2 is null
left join tb_StationAndCylinder c
on a.CylinderID = c.CylinderID and c.Time2 is null
left join tb_Station d
on c.StationID = d.StationID
where d.StationNo = '" + stationNo + @"'
";
DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (dt != null && dt.Rows.Count > 0)
{
model.Drum = dt.Rows[0]["CylinderNo"].ToString();
model.Time1 = dt.Rows[0]["Time1"].ToString();
string batchNo = "";
GetCode(dt.Rows[0]["BarCode"].ToString(), out stockNo, out batchNo, out partNo);
model.BatchNo = batchNo;
#region 查询原料信息
DataTable dt2 = new DataTable();
string sql2 = "";
if (!string.IsNullOrWhiteSpace(stockNo))
{
sql2 = " select PartNo, PartName, ProductName from tb_Product where StockNo = '" + stockNo + "' ";
}
else if (!string.IsNullOrWhiteSpace(partNo))
{
sql2 = " select PartNo, PartName, ProductName from tb_Product where PartNo = '" + partNo + "' ";
}
dt2 = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql2, null);
if (dt2 != null && dt2.Rows.Count > 0)
{
model.MaterialName = dt2.Rows[0]["ProductName"].ToString();
}
#endregion
#region 存储报表数据
Function.InsertInjectPlanReport(injectionPlanID, model.ProductName, model.MaterialName, model.Drum, model.BatchNo, model.Time1);
#endregion
}
res = JSONHelper.ObjectToJSON(model);
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return res;
}
}
public static void InsertInjectPlanReport(string injectionPlanID, string ProductName, string MaterialName, string Drum, string BatchNo, string Time1)
{
try
{
string sql = @"
IF NOT EXISTS ( SELECT * FROM tb_InjectPlanReport WHERE InjectionPlanID = '"+ injectionPlanID +@"' )
BEGIN
INSERT INTO tb_InjectPlanReport
([ID]
,[InjectionPlanID]
,[ProductName]
,[MaterialName]
,[Drum]
,[BatchNo]
,[Time1]
)
VALUES(
(SELECT NEWID())
,'"+ injectionPlanID +@"'
,'"+ ProductName +@"'
,'"+ MaterialName +@"'
,'"+ Drum +@"'
,'"+ BatchNo +@"'
,'"+ Time1 + @"'
)
END
else
begin
delete from tb_InjectPlanReport where InjectionPlanID = '"+ injectionPlanID +@"'
INSERT INTO tb_InjectPlanReport
([ID]
,[InjectionPlanID]
,[ProductName]
,[MaterialName]
,[Drum]
,[BatchNo]
,[Time1]
)
VALUES(
(SELECT NEWID())
,'" + injectionPlanID + @"'
,'" + ProductName + @"'
,'" + MaterialName + @"'
,'" + Drum + @"'
,'" + BatchNo + @"'
,'" + Time1 + @"'
)
end
";
SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
}
}
public static StockModel getBar()
{
StockModel md = new StockModel();
md.c1 = new List<int>();
md.c2 = new List<int>();
md.h1 = new List<string>();
string sql = "";
try
{
if (DateTime.Now > DateTime.Parse(DateTime.Now.ToShortDateString() + " 08:00:00") && DateTime.Now < DateTime.Parse(DateTime.Now.ToShortDateString() + " 20:00:00"))
{
sql =
@"IF OBJECT_ID('TEMPDB..#a') IS NOT NULL
DROP TABLE #a
create table #a (BarCode nvarchar(100),productInfo nvarchar(100),color NVARCHAR(50),paintCode NVARCHAR(100),createTime DATETIME)
INSERT INTO #a SELECT dbo.tb_StockIn.barcode, dbo.tb_Product.ProductName,dbo.View_Color.Des,paintCode,dbo.tb_StockIn.createTime
FROM dbo.tb_Product RIGHT OUTER JOIN
dbo.tb_StockIn ON dbo.tb_Product.StockNo = SUBSTRING(dbo.tb_StockIn.barcode, 1, 10) LEFT OUTER JOIN
dbo.View_Color ON SUBSTRING(dbo.tb_StockIn.paintCode, LEN(dbo.tb_StockIn.paintCode) - 3, 4) = dbo.View_Color.ColorNo
WHERE createTime BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 08:00:01')
AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 20:00:00') AND pass=1
SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 08:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 08:59:59.999')) AND productInfo LIKE '%%') c2,08 AS h
FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 08:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 08:59:59.999')) AND productInfo LIKE '%%'
UNION ALL SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 09:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 09:59:59.999')) AND productInfo LIKE '%%') c2,09 AS h
FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 09:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 09:59:59.999')) AND productInfo LIKE '%%'
UNION ALL SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 10:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 10:59:59.999')) AND productInfo LIKE '%%') c2,10 AS h
FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 10:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 10:59:59.999')) AND productInfo LIKE '%%'
UNION ALL SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 11:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 11:59:59.999')) AND productInfo LIKE '%%' ) c2,11 AS h
FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 11:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 11:59:59.999')) AND productInfo LIKE '%%'
UNION ALL SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 12:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 12:59:59.999')) AND productInfo LIKE '%%' ) c2,12 AS h
FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 12:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 12:59:59.999')) AND productInfo LIKE '%%'
UNION ALL SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 13:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 13:59:59.999')) AND productInfo LIKE '%%' ) c2,13 AS h
FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 13:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 13:59:59.999')) AND productInfo LIKE '%%'
UNION ALL SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 14:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 14:59:59.999')) AND productInfo LIKE '%%') c2,14 AS h
FROM #a WHERE ([createTime]BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 14:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 14:59:59.999')) AND productInfo LIKE '%%'
UNION ALL SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 15:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 15:59:59.999')) AND productInfo LIKE '%%') c2,15 AS h
FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 15:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 15:59:59.999')) AND productInfo LIKE '%%'
UNION ALL SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 16:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 16:59:59.999')) AND productInfo LIKE '%%') c2,16 AS h
FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 16:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 16:59:59.999')) AND productInfo LIKE '%%'
UNION ALL SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 17:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 17:59:59.999')) AND productInfo LIKE '%%') c2,17 AS h
FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 17:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 17:59:59.999')) AND productInfo LIKE '%%'
UNION ALL SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 18:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 18:59:59.999')) AND productInfo LIKE '%%' ) c2,18 AS h
FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 18:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 18:59:59.999')) AND productInfo LIKE '%%'
UNION ALL SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:59:59.999')) AND productInfo LIKE '%%') c2,19 AS h
FROM #a WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 19:59:59.999')) AND productInfo LIKE '%%'
ORDER BY h asc ";
}
else
{
if (DateTime.Now > DateTime.Parse(DateTime.Now.ToShortDateString() + " 20:00:00") && DateTime.Now < DateTime.Parse(DateTime.Now.ToShortDateString() + " 23:59:59"))
{
sql = @"IF OBJECT_ID('TEMPDB..#b') IS NOT NULL
DROP TABLE #b
create table #b (BarCode nvarchar(100),productInfo nvarchar(100),color NVARCHAR(50),paintCode NVARCHAR(100),createTime DATETIME)
INSERT INTO #b SELECT dbo.tb_StockIn.barcode, dbo.tb_Product.ProductName,dbo.View_Color.Des,paintCode,dbo.tb_StockIn.createTime
FROM dbo.tb_Product RIGHT OUTER JOIN
dbo.tb_StockIn ON dbo.tb_Product.StockNo = SUBSTRING(dbo.tb_StockIn.barcode, 1, 10) LEFT OUTER JOIN
dbo.View_Color ON SUBSTRING(dbo.tb_StockIn.paintCode, LEN(dbo.tb_StockIn.paintCode) - 3, 4) = dbo.View_Color.ColorNo
WHERE createTime BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 20:00:00.000')
AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 23:59:59.999') AND pass=1
SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #b WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 20:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 20:59:59.999')) AND productInfo LIKE '%%') c2,20 AS h
FROM #b WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 20:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 20:59:59.999')) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #b WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 21:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 21:59:59.999')) AND productInfo LIKE '%%') c2,21 AS h
FROM #b WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 21:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 21:59:59.999')) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #b WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 22:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 22:59:59.999')) AND productInfo LIKE '%%') c2,22 AS h
FROM #b WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 22:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 22:59:59.999')) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #b WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 23:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 23:59:59.999')) AND productInfo LIKE '%%' ) c2,23 AS h
FROM #b WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 23:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 23:59:59.999')) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #b WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 00:00:00.000') AND DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 00:59:59.999'))) AND productInfo LIKE '%%') c2,00 AS h
FROM #b WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 00:00:00.000') AND DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 00:59:59.999'))) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #b WHERE ([createTime] BETWEEN DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 01:00:00.000')) AND DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 01:59:59.999'))) AND productInfo LIKE '%%' ) c2,01 AS h
FROM #b WHERE ([createTime] BETWEEN DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 01:00:00.000')) AND DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 01:59:59.999'))) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #b WHERE ([createTime] BETWEEN DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 02:00:00.000')) AND DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 02:59:59.999'))) AND productInfo LIKE '%%' ) c2,02 AS h
FROM #b WHERE ([createTime]BETWEEN DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 02:00:00.000')) AND DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 02:59:59.999'))) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #b WHERE ([createTime] BETWEEN DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 03:00:00.000')) AND DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 03:59:59.999'))) AND productInfo LIKE '%%' ) c2,03 AS h
FROM #b WHERE ([createTime] BETWEEN DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 03:00:00.000')) AND DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 03:59:59.999'))) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #b WHERE ([createTime] BETWEEN DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 04:00:00.000')) AND DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 04:59:59.999'))) AND productInfo LIKE '%%' ) c2,04 AS h
FROM #b WHERE ([createTime] BETWEEN DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 04:00:00.000')) AND DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 04:59:59.999'))) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #b WHERE ([createTime] BETWEEN DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 05:00:00.000')) AND DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 05:59:59.999'))) AND productInfo LIKE '%%') c2,05 AS h
FROM #b WHERE ([createTime] BETWEEN DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 05:00:00.000')) AND DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 05:59:59.999'))) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #b WHERE ([createTime] BETWEEN DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 06:00:00.000')) AND DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 06:59:59.999'))) AND productInfo LIKE '%%' ) c2,06 AS h
FROM #b WHERE ([createTime] BETWEEN DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 06:00:00.000')) AND DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 06:59:59.999'))) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #b WHERE ([createTime] BETWEEN DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:00:00.000')) AND DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:59:59.999'))) AND productInfo LIKE '%%' ) c2,07 AS h
FROM #b WHERE ([createTime] BETWEEN DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:00:00.000')) AND DATEADD(DAY,1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:59:59.999'))) AND productInfo LIKE '%%'
";
}
else
{
sql = @"IF OBJECT_ID('TEMPDB..#c') IS NOT NULL
DROP TABLE #b
create table #c (BarCode nvarchar(100),productInfo nvarchar(100),color NVARCHAR(50),paintCode NVARCHAR(100),createTime DATETIME)
INSERT INTO #c SELECT dbo.tb_StockIn.barcode, dbo.tb_Product.ProductName,dbo.View_Color.Des,paintCode,dbo.tb_StockIn.createTime
FROM dbo.tb_Product RIGHT OUTER JOIN
dbo.tb_StockIn ON dbo.tb_Product.StockNo = SUBSTRING(dbo.tb_StockIn.barcode, 1, 10) LEFT OUTER JOIN
dbo.View_Color ON SUBSTRING(dbo.tb_StockIn.paintCode, LEN(dbo.tb_StockIn.paintCode) - 3, 4) = dbo.View_Color.ColorNo
WHERE createTime BETWEEN DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 20:00:00.000'))
AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 08:00:00.000') AND pass=1
SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #c WHERE ([createTime] BETWEEN DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 20:00:00.000')) AND DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 20:59:59.999'))) AND productInfo LIKE '%%') c2,20 AS h
FROM #c WHERE ([createTime] BETWEEN DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 20:00:00.000')) AND DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 20:59:59.999'))) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #c WHERE ([createTime] BETWEEN DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 21:00:00.000')) AND DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 21:59:59.999'))) AND productInfo LIKE '%%') c2,21 AS h
FROM #c WHERE ([createTime] BETWEEN DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 21:00:00.000')) AND DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 21:59:59.999'))) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #c WHERE ([createTime] BETWEEN DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 22:00:00.000')) AND DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 22:59:59.999'))) AND productInfo LIKE '%%') c2,22 AS h
FROM #c WHERE ([createTime] BETWEEN DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 22:00:00.000')) AND DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 22:59:59.999'))) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #c WHERE ([createTime] BETWEEN DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 23:00:00.000')) AND DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 23:59:59.999'))) AND productInfo LIKE '%%') c2,23 AS h
FROM #c WHERE ([createTime] BETWEEN DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 23:00:00.000')) AND DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 23:59:59.999'))) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #c WHERE ([createTime] BETWEEN DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 00:00:00.000')) AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 00:59:59.999')) AND productInfo LIKE '%%') c2,00 AS h
FROM #c WHERE ([createTime] BETWEEN DATEADD(DAY,-1,CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 00:00:00.000')) AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 00:59:59.999')) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #c WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 01:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 01:59:59.999')) AND productInfo LIKE '%%') c2,01 AS h
FROM #c WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 01:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 01:59:59.999')) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #c WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 02:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 02:59:59.999')) AND productInfo LIKE '%%') c2,02 AS h
FROM #c WHERE ([createTime]BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 02:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 02:59:59.999')) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #c WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 03:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 03:59:59.999')) AND productInfo LIKE '%%' ) c2,03 AS h
FROM #c WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 03:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 03:59:59.999')) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #c WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 04:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 04:59:59.999')) AND productInfo LIKE '%%') c2,04 AS h
FROM #c WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 04:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 04:59:59.999')) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #c WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 05:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 05:59:59.999')) AND productInfo LIKE '%%') c2,05 AS h
FROM #c WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 05:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 05:59:59.999')) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #c WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 06:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 06:59:59.999')) AND productInfo LIKE '%%') c2,06 AS h
FROM #c WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 06:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 06:59:59.999')) AND productInfo LIKE '%%'
UNION all SELECT COUNT(*) AS c1 ,
(SELECT COUNT(*) FROM #c WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:59:59.999')) AND productInfo LIKE '%%') c2,07 AS h
FROM #c WHERE ([createTime] BETWEEN CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:00:00.000') AND CONVERT(DATETIME,SUBSTRING(CONVERT(NVARCHAR(50),GETDATE(),120),1,10)+ ' 07:59:59.999')) AND productInfo LIKE '%%'
";
}
}
DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (dt != null && dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
md.c1.Add(int.Parse(dt.Rows[i]["c1"].ToString()));
md.c2.Add(int.Parse(dt.Rows[i]["c2"].ToString()));
md.h1.Add(dt.Rows[i]["h"].ToString() + ":00");
}
}
return md;
}
catch (Exception ex)
{
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return md;
}
}
/// <summary>
/// 获取班次,规定早8至晚8为A班
/// </summary>
/// <returns></returns>
public static string GetWorkClass()
{
bool classA = IsBetweenTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "2019-06-12 08:00:00", "2019-06-12 20:00:00");
if (classA)
{
return "A班";
}
else
{
return "B班";
}
}
/// <summary>
/// 判断传入时间是否在工作时间段内
/// </summary>
/// <param name="timeStr"></param>
/// <param name="startTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public static bool IsBetweenTime(string timeStr, string startTime, string endTime)
{
//判断传入时间是否在工作时间段内
try
{
TimeSpan startSpan = DateTime.Parse(startTime).TimeOfDay;
TimeSpan endSpan = DateTime.Parse(endTime).TimeOfDay;
DateTime t1 = Convert.ToDateTime(timeStr);
TimeSpan dspNow = t1.TimeOfDay;
if (dspNow > startSpan && dspNow < endSpan)
{
return true;
}
return false;
}
catch (Exception ex)
{
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return false;
}
}
}

115
SjMes/AddMaterial/App_Code/JSONHelper.cs

@ -0,0 +1,115 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Web.Script.Serialization;
/// <summary>
/// JSONHelper 的摘要说明
/// </summary>
public class JSONHelper
{
/// <summary>
/// 对象转JSON
/// </summary>
/// <param name="obj">对象</param>
/// <returns>JSON格式的字符串</returns>
public static string ObjectToJSON(object obj)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
try
{
return jss.Serialize(obj);
}
catch (Exception ex)
{
throw new Exception("JSONHelper.ObjectToJSON(): " + ex.Message);
}
}
/// <summary>
/// 数据表转键值对集合
/// </summary>
/// <param name="dt">数据表</param>
/// <returns>哈希表数组</returns>
public static List<Dictionary<string, object>> DataTableToList(DataTable dt)
{
List<Dictionary<string, object>> list
= new List<Dictionary<string, object>>();
foreach (DataRow dr in dt.Rows)
{
Dictionary<string, object> dic = new Dictionary<string, object>();
foreach (DataColumn dc in dt.Columns)
{
dic.Add(dc.ColumnName, dr[dc.ColumnName]);
}
list.Add(dic);
}
return list;
}
/// <summary>
/// 数据集转键值对数组字典
/// </summary>
/// <param name="dataSet">数据集</param>
/// <returns>键值对数组字典</returns>
public static Dictionary<string, List<Dictionary<string, object>>> DataSetToDic(DataSet ds)
{
Dictionary<string, List<Dictionary<string, object>>> result = new Dictionary<string, List<Dictionary<string, object>>>();
foreach (DataTable dt in ds.Tables)
result.Add(dt.TableName, DataTableToList(dt));
return result;
}
/// <summary>
/// 数据表转JSON
/// </summary>
/// <param name="dataTable">数据表</param>
/// <returns>JSON字符串</returns>
public static string DataTableToJSON(DataTable dt)
{
return ObjectToJSON(DataTableToList(dt));
}
/// <summary>
/// JSON文本转对象,泛型方法
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="jsonText">JSON文本</param>
/// <returns>指定类型的对象</returns>
public static T JSONToObject<T>(string jsonText)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
try
{
return jss.Deserialize<T>(jsonText);
}
catch (Exception ex)
{
throw new Exception("JSONHelper.JSONToObject(): " + ex.Message);
}
}
/// <summary>
/// 将JSON文本转换为数据表数据
/// </summary>
/// <param name="jsonText">JSON文本</param>
/// <returns>数据表字典</returns>
public static Dictionary<string, List<Dictionary<string, object>>> TablesDataFromJSON(string jsonText)
{
return JSONToObject<Dictionary<string, List<Dictionary<string, object>>>>(jsonText);
}
/// <summary>
/// 将JSON文本转换成数据行
/// </summary>
/// <param name="jsonText">JSON文本</param>
/// <returns>数据行的字典</returns>
public static Dictionary<string, object> DataRowFromJSON(string jsonText)
{
return JSONToObject<Dictionary<string, object>>(jsonText);
}
}

133
SjMes/AddMaterial/App_Code/LogHelper.cs

@ -0,0 +1,133 @@
using DBUtility;
using System;
using System.Data;
using System.IO;
using System.Text;
/// <summary>
/// LogHelper 的摘要说明
/// </summary>
public class LogHelper
{
private static string CodeVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString().Trim();
//<summary>
//保存日志的文件夹
//<summary>
private static string logPath = AppDomain.CurrentDomain.BaseDirectory + @"log\";
/// <summary>
/// 写日志
/// </summary>
/// <param name="msg"></param>
/// <param name="errorFile"></param>
public static void WriteLog(string msg, string errorFile = "")
{
try
{
if (string.IsNullOrEmpty(msg))
{
return;
}
else
{
msg = string.Format("程序版本号:{0},Time:{1},Message:{2}", CodeVersion, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffff"), msg);
}
//如果不存在log文件夹 则创建
if (!Directory.Exists(logPath))
{
Directory.CreateDirectory(logPath);
}
StreamWriter sw = File.AppendText(logPath + errorFile + DateTime.Now.ToString("yyyyMMdd") + ".Log");
sw.WriteLine(msg);
sw.Close();
}
catch (Exception ex)
{
}
}
/// <summary>
/// 拼接错误日志
/// </summary>
/// <param name="ex">异常类</param>
/// <param name="errorFile">异常类文件夹名,可为空</param>
public static void WriteLogManager(Exception ex, string errorFile = "")
{
StringBuilder str = new StringBuilder();//保存到文件中的日志信息
str.AppendLine("****************************异常文本****************************");
str.AppendLine("【程序版本号】:" + CodeVersion + " 【出现时间】:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
if (ex != null)
{
str.AppendLine(string.Format("【异常类型】:{0}\r\n【异常信息】:{1}\r\n【异常方法】:{2}\r\n【堆栈调用】:{3}", ex.GetType().Name, ex.Message, ex.TargetSite, ex.StackTrace));
}
else
{
str.AppendLine(string.Format("【未处理应用程序线程错误】:{0}", ex));
}
str.AppendLine("****************************************************************");
//保存日志
WriteLog(str.ToString(), "Error" + errorFile);
}
/// <summary>
/// 系统日志(写数据库)
/// </summary>
/// <param name="msg"></param>
/// <param name="method"></param>
public static void WriteSysLogBase(string msg, string method)
{
try
{
if (msg.Contains("'"))
{
msg = msg.Replace("'", "''");
}
string sql = @" INSERT INTO [dbo].[LogSys]
([ID]
,[SysContent]
,[SysSource]
,[CreateTime])
VALUES
((SELECT NEWID())
,'" + msg + @"'
,'" + method + @"'
,(SELECT GETDATE())) ";
SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 错误日志(写数据库)
/// </summary>
/// <param name="msg"></param>
/// <param name="method"></param>
public static void WriteErrLogBase(string msg, string method)
{
try
{
string sql = @"
INSERT INTO [dbo].[LogErr]
([ID]
,[ErrContent]
,[ErrSource]
,[ErrTime])
VALUES
((SELECT NEWID())
,'" + msg + @"'
,'" + method + @"'
,(SELECT GETDATE()))
";
SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
}
catch (Exception ex)
{
throw ex;
}
}
}

109
SjMes/AddMaterial/App_Code/Model.cs

@ -0,0 +1,109 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Model 的摘要说明
/// </summary>
public class Model
{
/// <summary>
/// 烘干料筒
/// </summary>
public string Drum { get; set; }
/// <summary>
/// 注塑机号
/// </summary>
public string Station { get; set; }
/// <summary>
/// 产品名称
/// </summary>
public string ProductName { get; set; }
/// <summary>
/// 原料名称
/// </summary>
public string MaterialName { get; set; }
/// <summary>
/// 加料批次
/// </summary>
public string BatchNo { get; set; }
/// <summary>
/// 加料时间
/// </summary>
public string Time1 { get; set; }
}
public class PlanModel
{
/// <summary>
/// 烘干料筒
/// </summary>
public string Drum { get; set; }
/// <summary>
/// 注塑机号
/// </summary>
public string Station { get; set; }
/// <summary>
/// 产品名称
/// </summary>
public string ProductName { get; set; }
/// <summary>
/// 原料名称
/// </summary>
public string MaterialName { get; set; }
/// <summary>
/// 加料批次
/// </summary>
public string BatchNo { get; set; }
/// <summary>
/// 加料时间
/// </summary>
public string Time1 { get; set; }
/// <summary>
/// 零件号
/// </summary>
public string PartNo { get; set; }
/// <summary>
/// 计划数量
/// </summary>
public string PlanCount { get; set; }
/// <summary>
/// 生产数量
/// </summary>
public string CompleteCount { get; set; }
/// <summary>
/// 合格数量
/// </summary>
public string PassCount { get; set; }
/// <summary>
/// 合格率
/// </summary>
public string CompleteRate { get; set; }
/// <summary>
/// 零件号
/// </summary>
public string PartNo2 { get; set; }
/// <summary>
/// 计划数量
/// </summary>
public string PlanCount2 { get; set; }
/// <summary>
/// 零件号
/// </summary>
public string PartNo3 { get; set; }
/// <summary>
/// 计划数量
/// </summary>
public string PlanCount3 { get; set; }
}
public class StockModel
{
public List<int> c1 { get; set; }
public List<int> c2 { get; set; }
public List<string> h1 { get; set; }
}

17
SjMes/AddMaterial/App_Data/PublishProfiles/AddMaterial.pubxml

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
您 Web 项目的发布/打包进程将使用此文件。您可以通过编辑此 MSBuild 文件
来自定义该进程的行为。若要了解与此相关的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkID=208121。
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<LastUsedBuildConfiguration>Debug</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<publishUrl>D:\Add</publishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles>
</PropertyGroup>
</Project>

84
SjMes/AddMaterial/Default.html

@ -0,0 +1,84 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>注塑车间塑料粒子加料目视看板</title>
<script src="jquery-1.8.0.min.js"></script>
<link href="StyleSheet.css" rel="stylesheet" />
<script>
$(function () {
setInterval("GetTime()", 1000);
setInterval("initTable()", 3000);
//initTable();
});
function initTable() {
$.ajax({
type: "GET",
url: "/Handler.ashx?method=GetTable1",
dataType: "text",
success: function (result1) {
$("#table1").html(result1);
}
})
$.ajax({
type: "GET",
url: "/Handler.ashx?method=GetTable2",
dataType: "text",
success: function (result2) {
$("#table2").html(result2);
}
})
}
function GetTime() {
var today = new Date();
$("#DivTimer").html('<br>' + today.Format("yyyy-MM-dd hh:mm:ss") + '<br>');
}
// 对Date的扩展,将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子:
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function (fmt) { //author: meizz
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
</script>
</head>
<body>
<table>
<tr>
<td>
<table id="TableTitle"><tr><td id="tdImg"><img id="Img"></td><td id="Title">注塑车间塑料粒子加料目视看板</td><td style="border-right:hidden;"><div id="DivTimer"></div></td></tr></table>
</td>
</tr>
<tr>
<td>
<div id="table1">
</div>
</td>
</tr>
<tr>
<td>
<div id="table2">
</div>
</td>
</tr>
</table>
</body>
</html>

268
SjMes/AddMaterial/Handler.ashx

@ -0,0 +1,268 @@
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using System.Collections.Generic;
public class Handler : IHttpHandler {
HttpRequest Request = null;
HttpResponse Response = null;
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
Request = context.Request;
Response = context.Response;
string method = Request.Params["method"];
switch (method)
{
case "GetTable1":
GetTable1();
break;
case "GetTable2":
GetTable2();
break;
case "GetPlanTable":
GetPlanTable();
break;
default:
break;
}
}
public bool IsReusable
{
get
{
return false;
}
}
#region 注塑车间塑料粒子加料目视看板
void GetTable1()
{
string html = "<table id='TableTop'>";
List<Model> list = Function.GetData();
if (list.Count > 0)
{
for (int j = 0; j <= 5; j++)
{
html += "<tr>";
for (int i = 0; i <= 4; i++)
{
switch (j)
{
case 0:
if (i == 0)
{
html += "<td class='TableTitle'>" + "烘干料筒" + "</td>";
}
if (i % 2 == 0)
{
html += "<td class='tdWhite'>" + list[i].Drum + "</td>";
}
else
{
html += "<td class='tdGreen'>" + list[i].Drum + "</td>";
}
break;
case 1:
if (i == 0)
{
html += "<td class='TableTitle'>" + "注塑机号" + "</td>";
}
if (i % 2 == 0)
{
html += "<td class='tdWhite'>" + list[i].Station + "</td>";
}
else
{
html += "<td class='tdGreen'>" + list[i].Station + "</td>";
}
break;
case 2:
if (i == 0)
{
html += "<td class='TableTitle'>" + "产品名称" + "</td>";
}
if (i % 2 == 0)
{
html += "<td class='tdWhite'>" + list[i].ProductName + "</td>";
}
else
{
html += "<td class='tdGreen'>" + list[i].ProductName + "</td>";
}
break;
case 3:
if (i == 0)
{
html += "<td class='TableTitle'>" + "原料名称" + "</td>";
}
if (i % 2 == 0)
{
html += "<td class='tdWhite'>" + list[i].MaterialName + "</td>";
}
else
{
html += "<td class='tdGreen'>" + list[i].MaterialName + "</td>";
}
break;
case 4:
if (i == 0)
{
html += "<td class='TableTitle'>" + "加料批次" + "</td>";
}
if (i % 2 == 0)
{
html += "<td class='tdWhite'>" + list[i].BatchNo + "</td>";
}
else
{
html += "<td class='tdGreen'>" + list[i].BatchNo + "</td>";
}
break;
case 5:
if (i == 0)
{
html += "<td class='TableTitle'>" + "加料时间" + "</td>";
}
if (i % 2 == 0)
{
html += "<td class='tdWhite'>" + list[i].Time1 + "</td>";
}
else
{
html += "<td class='tdGreen'>" + list[i].Time1 + "</td>";
}
break;
}
}
html += "</tr>";
}
}
html += "</table>";
Response.Write(html);
Response.End();
}
void GetTable2()
{
string html = "<table id='TableBottom'>";
List<Model> list = Function.GetData();
if (list.Count >= 5)
{
for (int j = 0; j <= 5; j++)
{
html += "<tr>";
for (int i = 5; i < 10; i++)
{
switch (j)
{
case 0:
if (i == 5)
{
html += "<td class='TableTitle'>" + "烘干料筒" + "</td>";
}
if (i % 2 == 0)
{
html += "<td class='tdWhite'>" + list[i].Drum + "</td>";
}
else
{
html += "<td class='tdGreen'>" + list[i].Drum + "</td>";
}
break;
case 1:
if (i == 5)
{
html += "<td class='TableTitle'>" + "注塑机号" + "</td>";
}
if (i % 2 == 0)
{
html += "<td class='tdWhite'>" + list[i].Station + "</td>";
}
else
{
html += "<td class='tdGreen'>" + list[i].Station + "</td>";
}
break;
case 2:
if (i == 5)
{
html += "<td class='TableTitle'>" + "产品名称" + "</td>";
}
if (i % 2 == 0)
{
html += "<td class='tdWhite'>" + list[i].ProductName + "</td>";
}
else
{
html += "<td class='tdGreen'>" + list[i].ProductName + "</td>";
}
break;
case 3:
if (i == 5)
{
html += "<td class='TableTitle'>" + "原料名称" + "</td>";
}
if (i % 2 == 0)
{
html += "<td class='tdWhite'>" + list[i].MaterialName + "</td>";
}
else
{
html += "<td class='tdGreen'>" + list[i].MaterialName + "</td>";
}
break;
case 4:
if (i == 5)
{
html += "<td class='TableTitle'>" + "加料批次" + "</td>";
}
if (i % 2 == 0)
{
html += "<td class='tdWhite'>" + list[i].BatchNo + "</td>";
}
else
{
html += "<td class='tdGreen'>" + list[i].BatchNo + "</td>";
}
break;
case 5:
if (i == 5)
{
html += "<td class='TableTitle'>" + "加料时间" + "</td>";
}
if (i % 2 == 0)
{
html += "<td class='tdWhite'>" + list[i].Time1 + "</td>";
}
else
{
html += "<td class='tdGreen'>" + list[i].Time1 + "</td>";
}
break;
}
}
html += "</tr>";
}
}
html += "</table>";
Response.Write(html);
Response.End();
}
#endregion
void GetPlanTable()
{
Response.Write(Function.GetPlanTable());
Response.End();
}
}

43
SjMes/AddMaterial/PaintView.ashx

@ -0,0 +1,43 @@
<%@ WebHandler Language="C#" Class="PaintView" %>
using System;
using System.Collections.Generic;
using System.Web;
using Tools;
public class PaintView : IHttpHandler
{
HttpRequest Request = null;
HttpResponse Response = null;
public void ProcessRequest (HttpContext context)
{
context.Response.ContentType = "text/plain";
Request = context.Request;
Response = context.Response;
string method = Request.Params["method"];
switch (method)
{
case "getBar":
getBar();
break;
}
}
public bool IsReusable
{
get
{
return false;
}
}
void getBar()
{
StockModel md = Function.getBar();
Response.Write(JSONTools.ScriptSerialize(md));
Response.End();
}
}

105
SjMes/AddMaterial/PaintView.html

@ -0,0 +1,105 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script src="jquery-1.8.0.min.js"></script>
<script src="echarts.min.js"></script>
</head>
<body>
<div id="main" style="width: 100%;height: 400px"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
$(function () {
////控件大小自适应
//pageSize();
////轮播时间间隔设定
//$('.carousel').carousel({
// //interval: 60000,
// interval: 2000,
// pause: false
//});
setInterval("Show()", 5000);
});
function Show() {
var myChart = echarts.init(document.getElementById('main'));
$.ajax({
url: "PaintView.ashx?method=getBar",
datatype: 'json',
type: "Post",
contentType: "application/json; charset=utf-8",
async: false,
success: function (result) {
if (result) {
//var objlist = JSON.parse(result);
var objlist = eval('(' + result + ')');
myChart.setOption({
tooltip: {
trigger: 'axis',
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
},
legend: {
data: ['保险杠', '门槛']
},
color: ['#2899F4', '#00FF00'],
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
type: 'category',
data: objlist.h1
},
yAxis: { type: 'value' },
series: [
{
name: '保险杠',
type: 'bar',
stack: '总量',
label: {
normal: {
show: true
},
},
data: objlist.c1
},
{
name: '门槛',
type: 'bar',
stack: '总量',
label: {
normal: {
show: true
}
},
data: objlist.c2
}
]
});
}
}
});
}
</script>
</body>
</html>

BIN
SjMes/AddMaterial/Pic/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

190
SjMes/AddMaterial/PlanScreen.html

@ -0,0 +1,190 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>注塑车间计划看板</title>
<link href="PlanScreenStyleSheet.css" rel="stylesheet" />
<script src="jquery-1.8.0.min.js"></script>
<script>
$(function () {
setInterval("getDate()", 1000);
setInterval("initTable()", 3000);
});
function getDate() {
var today = new Date();
$("#DivTimer").html('<br>' + today.Format("yyyy-MM-dd hh:mm:ss") + '<br>');
}
function initTable() {
var content1 = ""; //零件号
var content2 = ""; //产品名称
var content3 = ""; //工位号
var content4 = ""; //合格率
var content5 = ""; //生产数量
var content6 = ""; //合格数量
var content7 = ""; //原料名称
var content8 = ""; //烘干料筒
var content9 = ""; //加料批次
var content10 = ""; //加料时间
var content11 = ""; //下一模具
var content12 = ""; //零件号
var content13 = ""; //计划数量
var content14 = ""; //零件号
var content15 = ""; //计划数量
var content16 = ""; //零件号
var content17 = ""; //计划数量
$.ajax({
type: "GET",
url: "/Handler.ashx?method=GetPlanTable",
dataType: "json",
success: function (result) {
content1 = GetNum(result.PartNo);
content2 = GetNum(result.ProductName);
content3 = GetNum(result.Station);
content4 = GetNum(result.CompleteRate);
content5 = GetNum(result.CompleteCount);
content6 = GetNum(result.PassCount);
content7 = GetNum(result.MaterialName);
content8 = GetNum(result.Drum);
content9 = GetNum(result.BatchNo);
content10 = GetNum(result.Time1);
content11 = "";
//content12 = GetNum(result.PartNo);
content12 = GetNum(result.ProductName);
content13 = GetNum(result.PlanCount);
content14 = GetNum(result.PartNo2);
content15 = GetNum(result.PlanCount2);
content16 = GetNum(result.PartNo3);
content17 = GetNum(result.PlanCount3);
$("#content1").text(content1);
$("#content2").text(content2);
$("#content3").text(content3);
$("#content4").text(content4);
$("#content5").text(content5);
$("#content6").text(content6);
$("#content7").text(content7);
$("#content8").text(content8);
$("#content9").text(content9);
$("#content10").text(content10);
$("#content11").text(content11);
$("#content12").text(content12);
$("#content13").text(content13);
$("#content14").text(content14);
$("#content15").text(content15);
$("#content16").text(content16);
$("#content17").text(content17);
}
})
}
function GetNum(num)
{
if ( num != null ) {
return num;
}
else {
return "0";
}
}
// 对Date的扩展,将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子:
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function (fmt) { //author: meizz
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
</script>
</head>
<body>
<table class="TableFrame">
<tr>
<td><table id="TableTitle"><tr><td id="tdImg" style="width:10%"><img id="Img"></td><td id="Title" style="width:60%">&nbsp;&nbsp;注塑车间计划看板&nbsp;&nbsp;</td><td style="border-right:hidden; text-align:center;"><div id="DivTimer"></div></td></tr></table></td>
</tr>
<tr>
<td><table id="TableSecondRow"><tr><td class="tdTitle" style="width:200px;">产品信息:</td><td class="tdContent" id="content1"></td><td class="tdContent" id="content2"></td><td class="tdContent" id="content3" style="border-right:hidden;"></td></tr></table></td>
</tr>
<tr>
<td>
<table class="TableFrame">
<tr>
<td>
<table id="TableLeft">
<tr style="height:70%; width:925px;">
<!--<td colspan="2"><table style="width:970px; height:330px;"><tr style="height:10%"><td class="tdTitle">零件号</td><td class="tdTitle">计划数量</td></tr>-->
<td colspan="2">
<table style="width:970px; height:330px;">
<tr style="height:10%"><td class="tdTitle">产品名称</td><td class="tdTitle">计划数量</td></tr>
<tr style="height:90%"><td class="tdContent" id="content12"></td><td class="tdContent" id="content13"></td></tr>
<tr><td class="tdContent" id="content14"></td><td class="tdContent" id="content15"></td></tr>
<tr><td class="tdContent" id="content16"></td><td class="tdContent" id="content17"></td></tr>
</table>
</td>
</tr>
<tr style ="height:30%">
<td class="tdTitle">合格率:</td>
<td class="tdContent" id="content4"></td>
</tr>
</table>
</td>
<td>
<table id="TableRight">
<tr style="height:20%">
<td class="tdTitle">生产数量</td>
<td class="tdTitle">合格数量</td>
</tr>
<tr style="height:80%">
<td class="tdContent" id="content5"></td>
<td class="tdContent" id="content6"></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table id="TableBottom">
<tr>
<td class="tdTitle">原料名称:</td>
<td class="tdContent" id="content7"></td>
<td class="tdTitle">烘干料筒:</td>
<td class="tdContent" id="content8"></td>
</tr>
<tr>
<td class="tdTitle">加料批次:</td>
<td class="tdContent" id="content9"></td>
<td class="tdTitle">加料时间:</td>
<td class="tdContent" id="content10"></td>
</tr>
<tr>
<td class="tdTitle">下一模具:</td>
<td colspan="3" class="tdContent" id="content11">&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>

97
SjMes/AddMaterial/PlanScreenStyleSheet.css

@ -0,0 +1,97 @@
table,table tr th, table tr td { border:1px solid #808080; border-collapse: collapse; width: 1900px; background-color:#000000; color:#ffffff; }
.TableFrame {
border:hidden; width: 1900px;
}
#TableLeft, #TableRight {
width:925px; height:500px;border:hidden;
}
.tdTitle {
width:150px; height:48px; /*background-color: #B4EEB4;*/ text-align:center; font-family:黑体; font-size:32px; font-weight:500; background-color:#191970
}
.tdContent {
width:580px; height:48px; /*background-color:white;*/ text-align:center; font-family:黑体; font-size:60px; font-weight:500;
}
#TableBottom, #TableSecondRow {
border-right:hidden; width:1900px;
}
/*#region 字体 */
#content1, #content2, #content3, #content4, #content5 {
/*color: #2222DD;*/
}
#content6 {
/*color: #4DB34D;*/
}
#content7, #content8, #content9, #content10, #content11 {
/*color: #FF9900;*/
font-size: 60px;
}
#content4 {
font-size: 140px;
font-weight: 900;
}
#content5, #content6 {
font-size: 140px;
font-weight: 900;
}
#content2, #content3, #content1 {
font-size: 60px;
font-weight: 600;
}
#content12, #content13 {
/*color:red;*/
font-size: 60px;
font-weight: 600;
}
/*#endregion */
/*#region 标题表格 */
#TableTitle, #TableTitle tr th, #TableTitle tr td {
/*border: 1px solid #0094ff;*/
border: 1px solid white;
border-collapse: collapse;
}
#TableTitle {
width: 1900px;
height: 80px;
}
#Title {
width: 800px;
font-size: 90px;
font-family: 黑体;
text-align: center;
font-weight: 800;
/*background-color:white;*/
background-color:black; color:white;
height:90px;
padding-left:0px;
}
#tdImg, #Img {
background-image:url(Pic/Logo.png); background-repeat:no-repeat; width:190px; height:90px;
}
#DivTimer {
/*background-color:white;*/ font-size:55px; font-family:黑体; text-align:center; font-weight:800; width:650px; padding-bottom:20px; padding-top:0px; height:90px; background-color:black; color:white; border: 0px;
}
/*#endregion */

49
SjMes/AddMaterial/StyleSheet.css

@ -0,0 +1,49 @@
table,table tr th, table tr td { /*border:1px solid #0094ff;*/ border-collapse: collapse; border: 1px solid white; table-layout:fixed;word-break:break-all;}
table #TableTop, table #TableBottom { width: 1860px; height:400px; font-size:30px; font-family:; text-align:center; font-weight:500; table-layout:fixed;word-break:break-all;}
.TableTitle {
background-color:#0094ff; /*background-color:#000000;*/ width:100px; font-weight:700; color:white;
}
.tdWhite {
/*background-color:#F0F8FF;*/ width:260px; background-color:#000000; color:white;word-wrap:break-word;word-break:break-all;
}
.tdGreen {
/*background-color:#B4EEB4;*/ width:260px; background-color:#191970; color:white;word-wrap:break-word;word-break:break-all;
}
/*#region 标题表格 */
#TableTitle, #TableTitle tr th, #TableTitle tr td {
/*border: 1px solid #0094ff;*/
border: 1px solid white;
border-collapse: collapse;
}
#TableTitle {
width: 1850px;
height: 90px;
}
#Title {
width: 1320px;
font-size: 40px;
font-family: 黑体;
text-align: center;
font-weight: 800;
/*background-color:white;*/
background-color:black; color:white;
height:90px;
}
#tdImg, #Img {
background-image:url(Pic/Logo.png); background-repeat:no-repeat; width:190px; height:90px;
}
#DivTimer {
/*background-color:white;*/ font-size:30px; font-family:黑体; text-align:center; font-weight:500; width:340px; height:95px; background-color:black; color:white; border: 0px;
}
/*#endregion */

BIN
SjMes/AddMaterial/Tools.dll

Binary file not shown.

32
SjMes/AddMaterial/Web.Debug.config

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- 有关使用 web.config 转换的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--
在下例中,“SetAttributes”转换将更改
“connectionString”的值,以仅在“Match”定位器
找到值为“MyDB”的特性“name”时使用“ReleaseSQLServer”。
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
-->
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<!--
在下例中,“Replace”转换将替换
web.config 文件的整个 <customErrors> 节。
请注意,由于
在 <system.web> 节点下仅有一个 customErrors 节,因此不需要使用“xdt:Locator”特性。
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
-->
</system.web>
</configuration>

23
SjMes/AddMaterial/Web.config

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
有关如何配置 ASP.NET 应用程序的详细信息,请访问
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
<connectionStrings>
<!--数据库连接串-->
<add name="SqlConnString" connectionString="Data Source=10.60.101.9;user id=sa;password=a1+;database=BBMPT;max pool size = 50;"/>
<!--<add name="SqlConnString" connectionString="Data Source=10.60.101.9;user id=sa;password=a1+;database=BBMPT;max pool size = 50;"/>-->
</connectionStrings>
<appSettings>
<add key="StationNo" value="IM03"/><!--工位号-->
</appSettings>
</configuration>

45
SjMes/AddMaterial/echarts.min.js

File diff suppressed because one or more lines are too long

5
SjMes/AddMaterial/jquery-1.8.0.min.js

File diff suppressed because one or more lines are too long

159
SjMes/BBMPT.sln

@ -0,0 +1,159 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.8.34330.188
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MESWebSite", "MESWebSite\MESWebSite.csproj", "{B1DEC82C-3F33-4FC9-A37B-9527315E2C5E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MESClassLibrary", "MESClassLibrary\MESClassLibrary.csproj", "{867989D8-6837-41DC-9BF1-4658F5D6CFEF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InjectionPC", "InjectionPC\InjectionPC.csproj", "{0FDBFD8E-C694-45C2-89B2-BC3120B944BF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PaintingPC", "PaintingPC\PaintingPC.csproj", "{BA977F8C-A368-48B9-AD23-965246580D4C}"
EndProject
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "AddMaterial", "http://localhost:10812", "{A1FB4CE7-8397-4811-B8A1-58E55AA1FFB7}"
ProjectSection(WebsiteProperties) = preProject
UseIISExpress = "true"
TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.5"
Debug.AspNetCompiler.VirtualPath = "/localhost_10812"
Debug.AspNetCompiler.PhysicalPath = "AddMaterial\"
Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\localhost_10812\"
Debug.AspNetCompiler.Updateable = "true"
Debug.AspNetCompiler.ForceOverwrite = "true"
Debug.AspNetCompiler.FixedNames = "false"
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.VirtualPath = "/localhost_10812"
Release.AspNetCompiler.PhysicalPath = "AddMaterial\"
Release.AspNetCompiler.TargetPath = "PrecompiledWeb\localhost_10812\"
Release.AspNetCompiler.Updateable = "true"
Release.AspNetCompiler.ForceOverwrite = "true"
Release.AspNetCompiler.FixedNames = "false"
Release.AspNetCompiler.Debug = "False"
SlnRelativePath = "AddMaterial\"
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebService", "WebService\WebService.csproj", "{61D9D50E-F645-40DE-8C7A-B4039D840C52}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{0D128182-FB8C-4E0B-A42F-DF3767E4DE39}"
ProjectSection(SolutionItems) = preProject
数据结构修改记录.txt = 数据结构修改记录.txt
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PaintingScreen", "PaintingScreen\PaintingScreen.csproj", "{14A52CF0-E299-459C-9EDA-E86F47B2C8E8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PaintingPrintBarCode", "PaintingPrintBarCode\PaintingPrintBarCode.csproj", "{672D0D1C-A1A5-4DD0-A538-6CAF934CD7C0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InjectionSearch", "InjectionSearch\InjectionSearch.csproj", "{558CD727-2A5C-434E-A113-EA2D5D62F430}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InjectionPLC", "InjectionPLC\InjectionPLC.csproj", "{47AFB38B-AF4D-4AB8-AD26-272F985A5851}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PunchingMistake", "PunchingMistake\PunchingMistake.csproj", "{BA30C71B-41B4-4DBA-BFA0-405B53757BC4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Updater", "Updater\Updater.csproj", "{B2A5892E-A99E-4E26-B298-CE36488213CC}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PurchingMistakeNew", "PurchingMistakeNew\PurchingMistakeNew.csproj", "{D41C0724-818F-495C-84AF-945D6C9AE693}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AndonAssembly", "AndonAssembly\AndonAssembly.csproj", "{1BD4E2B2-0FE4-4022-8DE0-C55A467BE201}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B1DEC82C-3F33-4FC9-A37B-9527315E2C5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B1DEC82C-3F33-4FC9-A37B-9527315E2C5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B1DEC82C-3F33-4FC9-A37B-9527315E2C5E}.Debug|x86.ActiveCfg = Debug|Any CPU
{B1DEC82C-3F33-4FC9-A37B-9527315E2C5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B1DEC82C-3F33-4FC9-A37B-9527315E2C5E}.Release|Any CPU.Build.0 = Release|Any CPU
{B1DEC82C-3F33-4FC9-A37B-9527315E2C5E}.Release|x86.ActiveCfg = Release|Any CPU
{867989D8-6837-41DC-9BF1-4658F5D6CFEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{867989D8-6837-41DC-9BF1-4658F5D6CFEF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{867989D8-6837-41DC-9BF1-4658F5D6CFEF}.Debug|x86.ActiveCfg = Debug|Any CPU
{867989D8-6837-41DC-9BF1-4658F5D6CFEF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{867989D8-6837-41DC-9BF1-4658F5D6CFEF}.Release|Any CPU.Build.0 = Release|Any CPU
{867989D8-6837-41DC-9BF1-4658F5D6CFEF}.Release|x86.ActiveCfg = Release|Any CPU
{0FDBFD8E-C694-45C2-89B2-BC3120B944BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0FDBFD8E-C694-45C2-89B2-BC3120B944BF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0FDBFD8E-C694-45C2-89B2-BC3120B944BF}.Debug|x86.ActiveCfg = Debug|Any CPU
{0FDBFD8E-C694-45C2-89B2-BC3120B944BF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0FDBFD8E-C694-45C2-89B2-BC3120B944BF}.Release|Any CPU.Build.0 = Release|Any CPU
{0FDBFD8E-C694-45C2-89B2-BC3120B944BF}.Release|x86.ActiveCfg = Release|Any CPU
{BA977F8C-A368-48B9-AD23-965246580D4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BA977F8C-A368-48B9-AD23-965246580D4C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BA977F8C-A368-48B9-AD23-965246580D4C}.Debug|x86.ActiveCfg = Debug|Any CPU
{BA977F8C-A368-48B9-AD23-965246580D4C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BA977F8C-A368-48B9-AD23-965246580D4C}.Release|Any CPU.Build.0 = Release|Any CPU
{BA977F8C-A368-48B9-AD23-965246580D4C}.Release|x86.ActiveCfg = Release|Any CPU
{A1FB4CE7-8397-4811-B8A1-58E55AA1FFB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1FB4CE7-8397-4811-B8A1-58E55AA1FFB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A1FB4CE7-8397-4811-B8A1-58E55AA1FFB7}.Debug|x86.ActiveCfg = Debug|Any CPU
{A1FB4CE7-8397-4811-B8A1-58E55AA1FFB7}.Release|Any CPU.ActiveCfg = Debug|Any CPU
{A1FB4CE7-8397-4811-B8A1-58E55AA1FFB7}.Release|Any CPU.Build.0 = Debug|Any CPU
{A1FB4CE7-8397-4811-B8A1-58E55AA1FFB7}.Release|x86.ActiveCfg = Debug|Any CPU
{61D9D50E-F645-40DE-8C7A-B4039D840C52}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{61D9D50E-F645-40DE-8C7A-B4039D840C52}.Debug|Any CPU.Build.0 = Debug|Any CPU
{61D9D50E-F645-40DE-8C7A-B4039D840C52}.Debug|x86.ActiveCfg = Debug|Any CPU
{61D9D50E-F645-40DE-8C7A-B4039D840C52}.Release|Any CPU.ActiveCfg = Release|Any CPU
{61D9D50E-F645-40DE-8C7A-B4039D840C52}.Release|Any CPU.Build.0 = Release|Any CPU
{61D9D50E-F645-40DE-8C7A-B4039D840C52}.Release|x86.ActiveCfg = Release|Any CPU
{14A52CF0-E299-459C-9EDA-E86F47B2C8E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{14A52CF0-E299-459C-9EDA-E86F47B2C8E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{14A52CF0-E299-459C-9EDA-E86F47B2C8E8}.Debug|x86.ActiveCfg = Debug|Any CPU
{14A52CF0-E299-459C-9EDA-E86F47B2C8E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{14A52CF0-E299-459C-9EDA-E86F47B2C8E8}.Release|Any CPU.Build.0 = Release|Any CPU
{14A52CF0-E299-459C-9EDA-E86F47B2C8E8}.Release|x86.ActiveCfg = Release|Any CPU
{672D0D1C-A1A5-4DD0-A538-6CAF934CD7C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{672D0D1C-A1A5-4DD0-A538-6CAF934CD7C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{672D0D1C-A1A5-4DD0-A538-6CAF934CD7C0}.Debug|x86.ActiveCfg = Debug|Any CPU
{672D0D1C-A1A5-4DD0-A538-6CAF934CD7C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{672D0D1C-A1A5-4DD0-A538-6CAF934CD7C0}.Release|Any CPU.Build.0 = Release|Any CPU
{672D0D1C-A1A5-4DD0-A538-6CAF934CD7C0}.Release|x86.ActiveCfg = Release|Any CPU
{558CD727-2A5C-434E-A113-EA2D5D62F430}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{558CD727-2A5C-434E-A113-EA2D5D62F430}.Debug|Any CPU.Build.0 = Debug|Any CPU
{558CD727-2A5C-434E-A113-EA2D5D62F430}.Debug|x86.ActiveCfg = Debug|Any CPU
{558CD727-2A5C-434E-A113-EA2D5D62F430}.Release|Any CPU.ActiveCfg = Release|Any CPU
{558CD727-2A5C-434E-A113-EA2D5D62F430}.Release|Any CPU.Build.0 = Release|Any CPU
{558CD727-2A5C-434E-A113-EA2D5D62F430}.Release|x86.ActiveCfg = Release|Any CPU
{47AFB38B-AF4D-4AB8-AD26-272F985A5851}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{47AFB38B-AF4D-4AB8-AD26-272F985A5851}.Debug|Any CPU.Build.0 = Debug|Any CPU
{47AFB38B-AF4D-4AB8-AD26-272F985A5851}.Debug|x86.ActiveCfg = Debug|Any CPU
{47AFB38B-AF4D-4AB8-AD26-272F985A5851}.Release|Any CPU.ActiveCfg = Release|Any CPU
{47AFB38B-AF4D-4AB8-AD26-272F985A5851}.Release|Any CPU.Build.0 = Release|Any CPU
{47AFB38B-AF4D-4AB8-AD26-272F985A5851}.Release|x86.ActiveCfg = Release|Any CPU
{BA30C71B-41B4-4DBA-BFA0-405B53757BC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BA30C71B-41B4-4DBA-BFA0-405B53757BC4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BA30C71B-41B4-4DBA-BFA0-405B53757BC4}.Debug|x86.ActiveCfg = Debug|Any CPU
{BA30C71B-41B4-4DBA-BFA0-405B53757BC4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BA30C71B-41B4-4DBA-BFA0-405B53757BC4}.Release|Any CPU.Build.0 = Release|Any CPU
{BA30C71B-41B4-4DBA-BFA0-405B53757BC4}.Release|x86.ActiveCfg = Release|Any CPU
{B2A5892E-A99E-4E26-B298-CE36488213CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B2A5892E-A99E-4E26-B298-CE36488213CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B2A5892E-A99E-4E26-B298-CE36488213CC}.Debug|x86.ActiveCfg = Debug|x86
{B2A5892E-A99E-4E26-B298-CE36488213CC}.Debug|x86.Build.0 = Debug|x86
{B2A5892E-A99E-4E26-B298-CE36488213CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B2A5892E-A99E-4E26-B298-CE36488213CC}.Release|Any CPU.Build.0 = Release|Any CPU
{B2A5892E-A99E-4E26-B298-CE36488213CC}.Release|x86.ActiveCfg = Release|x86
{B2A5892E-A99E-4E26-B298-CE36488213CC}.Release|x86.Build.0 = Release|x86
{D41C0724-818F-495C-84AF-945D6C9AE693}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D41C0724-818F-495C-84AF-945D6C9AE693}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D41C0724-818F-495C-84AF-945D6C9AE693}.Debug|x86.ActiveCfg = Debug|Any CPU
{D41C0724-818F-495C-84AF-945D6C9AE693}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D41C0724-818F-495C-84AF-945D6C9AE693}.Release|Any CPU.Build.0 = Release|Any CPU
{D41C0724-818F-495C-84AF-945D6C9AE693}.Release|x86.ActiveCfg = Release|Any CPU
{1BD4E2B2-0FE4-4022-8DE0-C55A467BE201}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1BD4E2B2-0FE4-4022-8DE0-C55A467BE201}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1BD4E2B2-0FE4-4022-8DE0-C55A467BE201}.Debug|x86.ActiveCfg = Debug|Any CPU
{1BD4E2B2-0FE4-4022-8DE0-C55A467BE201}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1BD4E2B2-0FE4-4022-8DE0-C55A467BE201}.Release|Any CPU.Build.0 = Release|Any CPU
{1BD4E2B2-0FE4-4022-8DE0-C55A467BE201}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {52EF8F7E-6AC9-4400-82F1-31F70143C867}
EndGlobalSection
EndGlobal

BIN
SjMes/InjectionPC/2.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

52
SjMes/InjectionPC/App.config

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<!--<add name="SqlConnString" connectionString="Persist Security Info=true;Initial Catalog=BBMPT;Data Source=39.97.227.79;User ID=sa;Password=a1+"/>-->
<add name="SqlConnString" connectionString="DATA SOURCE = dev.ccwin-in.com,6191;USER ID = sa;PASSWORD = Microsoft@2021;INITIAL CATALOG = BBMPT"/>
<!--<add name="report" connectionString="Provider=SQLOLEDB.1;Password=a1+;Persist Security Info=True;User ID=sa;Initial Catalog=BBMPT;Data Source=10.60.101.9;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=PC201904081405E;Use Encryption for Data=False;Tag with column collation when possible=False"/>-->
<add name="report" connectionString="Provider=SQLOLEDB.1;Password=a1+;Persist Security Info=True;User ID=sa;Initial Catalog=BBMPT;Data Source=39.97.227.79;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=PC201904081405E;Use Encryption for Data=False;Tag with column collation when possible=False"/>
</connectionStrings>
<appSettings>
<!--<add key="SqlConnString" value="Persist Security Info=true;Initial Catalog=BBMPT;Data Source=60.205.186.180;User ID=sa;Password=ran1+"/>-->
<add key="Station" value="IM02"/>
<add key="InterVal" value="5000"/>
<!--<add key="IP" value="10.60.52.96"/>-->
<!--<add key="RemoteIP" value="10.60.52.186"/>-->
<!--<add key="IP" value="10.60.52.181"/>-->
<!--<add key="WeightFolder" value="UserData"/>
<add key="WeightFile" value="ProdHisFile.csv"/>-->
<!--<add key="WeightUser" value="1"/>
<add key="WeightPsw" value="1"/>-->
<!--<add key="IP" value="172.16.142.243"/>-->
<add key="IP" value="192.168.1.100"/>
<add key="WeightFolder" value="aa"/>
<add key="WeightFile" value="111.xlsx"/>
<add key="WeightUser" value="fangfang wang"/>
<add key="WeightPsw" value="182352"/>
<add key="PictureFolder" value="pdf"/>
<!--<add key="WeightFile" value="ProdHisFile.csv"/>-->
<add key="PictureUser" value="administrator"/>
<add key="PicturePsw" value="ABCabc123"/>
<add key="RemoteIP" value="10.60.101.10"/>
<add key="PicturePath" value="\\10.60.101.10\PDF\"/>
<add key="ClientSettingsProvider.ServiceUri" value=""/>
<add key="Psw" value="123456"/>
<add key="Printer1" value="Microsoft XPS Document Writer"/>
<add key="Printer2" value="Microsoft XPS Document Writer"/>
</appSettings>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri=""/>
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400"/>
</providers>
</roleManager>
</system.web>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration>

136
SjMes/InjectionPC/AutoUpdater.cs

@ -0,0 +1,136 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;
namespace InjectionPC
{
public class AutoUpdater
{
private string _serverUrl;
private string _softwareName;
private string _newVersion;
private string _filePath;
private string _fileName;
private string _lastUpdateTime;
private string _desc;
public bool CheckUpdateLoad(string serverUrl, string updateXmlFileName)
{
bool result = false;
_serverUrl = serverUrl;
try
{
if (CheckUpdate(serverUrl,updateXmlFileName))
{
var sb = new StringBuilder();
sb.AppendLine("当前版本:" + Assembly.LoadFrom(_softwareName).GetName().Version);
sb.AppendLine("检查到新版本:" + _newVersion);
sb.AppendLine("更新时间:" + _lastUpdateTime);
sb.AppendLine("更新说明:" + _desc);
sb.AppendLine();
sb.AppendLine("是否更新?");
//var form = new FormFoundUpdate(sb.ToString());
DialogResult result1 = MessageBox.Show("是否更新程序!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (result1 == DialogResult.Yes)
{
var path = Application.StartupPath;
var args = new StringBuilder();
args.Append("\'"+_serverUrl+"\',");
args.Append("\'" + _softwareName + "\',");
args.Append("\'" + _newVersion + "\',");
args.Append("\'" + _filePath + "\',");
args.Append("\'" + _fileName + "\',");
args.Append("\'" + _lastUpdateTime + "\',");
args.Append("\'" + _desc + "\',");
//args.Append("\'{_softwareName}\',");
//args.Append("\'{_newVersion}\',");
//args.Append("\'{_filePath}\',");
//args.Append("\'{_fileName}\',");
//args.Append("\'{_lastUpdateTime}\',");
//args.Append("\'{_desc}\'");
var process = new System.Diagnostics.Process
{
StartInfo =
{
FileName = "Updater.exe",
WorkingDirectory = path,
CreateNoWindow = true,
Arguments = args.ToString(),
}
};
// MessageBox.Show(process.StartInfo.FileName+" "+process.StartInfo.Arguments);
process.Start();
result = true;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
result = false;
}
return result;
}
private bool CheckUpdate(string serverUrl, string updateXmlFileName)
{
var fullFileName = serverUrl + updateXmlFileName;
try
{
var wc = new WebClient();
var stream = wc.OpenRead(fullFileName);
//http://127.0.0.1/PcUpdate.xml
var xmlDoc = new XmlDocument();
if (stream != null) xmlDoc.Load(stream);
XmlNode rootNode = xmlDoc.SelectSingleNode("AutoUpdate");
if (rootNode != null)
foreach (XmlNode node in rootNode.ChildNodes.Cast<XmlNode>().Where(node => node.Name == "SoftWare"))
{
if (node.Attributes != null) _softwareName = node.Attributes["Name"].Value;
foreach (XmlNode n in node.ChildNodes)
{
switch (n.Name)
{
case "Version":
_newVersion = n.InnerText;
break;
case "FilePath":
_filePath = n.InnerText;
break;
case "FileName":
_fileName = n.InnerText;
break;
case "LastUpdateTime":
_lastUpdateTime = n.InnerText;
break;
case "Desc":
_desc = n.InnerText;
break;
}
}
}
Version newVersion = new Version(_newVersion);
Version oldVersion = Assembly.LoadFrom(_softwareName).GetName().Version;
var tm = oldVersion.CompareTo(newVersion);
var hasUpdate = tm < 0;
return hasUpdate;
}
catch (Exception ex)
{
throw new Exception("更新出现错误,请确认网络连接无误后重试!\n{fullFileName}\n{ex.Message}");
}
}
}
}

71
SjMes/InjectionPC/Form1.Designer.cs

@ -0,0 +1,71 @@
namespace InjectionPC
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(30, 33);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(228, 21);
this.textBox1.TabIndex = 0;
this.textBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyDown);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(80, 149);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(41, 12);
this.label1.TabIndex = 1;
this.label1.Text = "label1";
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 261);
this.Controls.Add(this.label1);
this.Controls.Add(this.textBox1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Label label1;
}
}

28
SjMes/InjectionPC/Form1.cs

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace InjectionPC
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode==Keys.Enter)
{
textBox1.Text = "1";
}
}
}
}

120
SjMes/InjectionPC/Form1.resx

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

620
SjMes/InjectionPC/FrmBarCode.Designer.cs

@ -0,0 +1,620 @@
namespace InjectionPC
{
partial class FrmBarCode
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmBarCode));
GlacialComponents.Controls.GLColumn glColumn1 = new GlacialComponents.Controls.GLColumn();
GlacialComponents.Controls.GLColumn glColumn2 = new GlacialComponents.Controls.GLColumn();
GlacialComponents.Controls.GLColumn glColumn3 = new GlacialComponents.Controls.GLColumn();
GlacialComponents.Controls.GLColumn glColumn4 = new GlacialComponents.Controls.GLColumn();
this.panel1 = new System.Windows.Forms.Panel();
this.label2 = new System.Windows.Forms.Label();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.label1 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label();
this.label9 = new System.Windows.Forms.Label();
this.label10 = new System.Windows.Forms.Label();
this.glacialList1 = new GlacialComponents.Controls.GlacialList();
this.label11 = new System.Windows.Forms.Label();
this.label12 = new System.Windows.Forms.Label();
this.label13 = new System.Windows.Forms.Label();
this.panel2 = new System.Windows.Forms.Panel();
this.textBox2 = new System.Windows.Forms.TextBox();
this.label17 = new System.Windows.Forms.Label();
this.label16 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.label15 = new System.Windows.Forms.Label();
this.comboBox2 = new System.Windows.Forms.ComboBox();
this.label14 = new System.Windows.Forms.Label();
this.label18 = new System.Windows.Forms.Label();
this.label19 = new System.Windows.Forms.Label();
this.label20 = new System.Windows.Forms.Label();
this.label21 = new System.Windows.Forms.Label();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.panel3 = new System.Windows.Forms.Panel();
this.button2 = new System.Windows.Forms.Button();
this.button1 = new System.Windows.Forms.Button();
this.textBox3 = new System.Windows.Forms.TextBox();
this.label22 = new System.Windows.Forms.Label();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.panel2.SuspendLayout();
this.panel3.SuspendLayout();
this.SuspendLayout();
//
// panel1
//
this.panel1.Controls.Add(this.label2);
this.panel1.Controls.Add(this.pictureBox1);
this.panel1.Controls.Add(this.label1);
this.panel1.Location = new System.Drawing.Point(1, 1);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(1275, 91);
this.panel1.TabIndex = 0;
//
// label2
//
this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label2.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.Location = new System.Drawing.Point(1080, 5);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(192, 84);
this.label2.TabIndex = 3;
this.label2.Text = "2019-05-29 10:30:31";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label2.Click += new System.EventHandler(this.label2_Click);
//
// pictureBox1
//
this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
this.pictureBox1.Location = new System.Drawing.Point(4, 4);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(169, 84);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox1.TabIndex = 2;
this.pictureBox1.TabStop = false;
//
// label1
//
this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label1.Font = new System.Drawing.Font("宋体", 36F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(172, 5);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(911, 84);
this.label1.TabIndex = 1;
this.label1.Text = "注塑车间条码打印";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label3
//
this.label3.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label3.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label3.Location = new System.Drawing.Point(5, 89);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(169, 52);
this.label3.TabIndex = 1;
this.label3.Text = "用户信息:";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label4
//
this.label4.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label4.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label4.Location = new System.Drawing.Point(174, 89);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(110, 52);
this.label4.TabIndex = 2;
this.label4.Text = "班组:";
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// comboBox1
//
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.Font = new System.Drawing.Font("宋体", 32F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Items.AddRange(new object[] {
"A班",
"B班"});
this.comboBox1.Location = new System.Drawing.Point(284, 91);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(136, 51);
this.comboBox1.TabIndex = 3;
//
// label5
//
this.label5.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label5.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label5.Location = new System.Drawing.Point(419, 91);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(110, 52);
this.label5.TabIndex = 4;
this.label5.Text = "工位:";
this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label6
//
this.label6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label6.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label6.Location = new System.Drawing.Point(529, 93);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(145, 52);
this.label6.TabIndex = 5;
this.label6.Text = "IM01";
this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label7
//
this.label7.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label7.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label7.Location = new System.Drawing.Point(675, 93);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(110, 52);
this.label7.TabIndex = 6;
this.label7.Text = "用户:";
this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label8
//
this.label8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label8.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label8.Location = new System.Drawing.Point(784, 93);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(123, 52);
this.label8.TabIndex = 7;
this.label8.Text = "cy";
this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label9
//
this.label9.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label9.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label9.Location = new System.Drawing.Point(904, 93);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(180, 52);
this.label9.TabIndex = 8;
this.label9.Text = "质量录入";
this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label9.Click += new System.EventHandler(this.label9_Click);
//
// label10
//
this.label10.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label10.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label10.Location = new System.Drawing.Point(5, 141);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(169, 622);
this.label10.TabIndex = 9;
this.label10.Text = "打印记录:";
this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// glacialList1
//
this.glacialList1.AllowColumnResize = true;
this.glacialList1.AllowMultiselect = false;
this.glacialList1.AlternateBackground = System.Drawing.Color.DarkGreen;
this.glacialList1.AlternatingColors = false;
this.glacialList1.AutoHeight = true;
this.glacialList1.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.glacialList1.BackgroundStretchToFit = true;
glColumn1.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None;
glColumn1.CheckBoxes = false;
glColumn1.ImageIndex = -1;
glColumn1.Name = "Column1";
glColumn1.NumericSort = false;
glColumn1.Text = "条码";
glColumn1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
glColumn1.Width = 350;
glColumn2.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None;
glColumn2.CheckBoxes = false;
glColumn2.ImageIndex = -1;
glColumn2.Name = "Column2";
glColumn2.NumericSort = false;
glColumn2.Text = "产品名称";
glColumn2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
glColumn2.Width = 320;
glColumn3.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None;
glColumn3.CheckBoxes = false;
glColumn3.ImageIndex = -1;
glColumn3.Name = "Column3";
glColumn3.NumericSort = false;
glColumn3.Text = "打印方式";
glColumn3.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
glColumn3.Width = 150;
glColumn4.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None;
glColumn4.CheckBoxes = false;
glColumn4.ImageIndex = -1;
glColumn4.Name = "Column4";
glColumn4.NumericSort = false;
glColumn4.Text = "打印时间";
glColumn4.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
glColumn4.Width = 270;
this.glacialList1.Columns.AddRange(new GlacialComponents.Controls.GLColumn[] {
glColumn1,
glColumn2,
glColumn3,
glColumn4});
this.glacialList1.ControlStyle = GlacialComponents.Controls.GLControlStyles.Normal;
this.glacialList1.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.glacialList1.FullRowSelect = true;
this.glacialList1.GridColor = System.Drawing.Color.DeepSkyBlue;
this.glacialList1.GridLines = GlacialComponents.Controls.GLGridLines.gridBoth;
this.glacialList1.GridLineStyle = GlacialComponents.Controls.GLGridLineStyles.gridSolid;
this.glacialList1.GridTypes = GlacialComponents.Controls.GLGridTypes.gridNormal;
this.glacialList1.HeaderHeight = 40;
this.glacialList1.HeaderVisible = true;
this.glacialList1.HeaderWordWrap = false;
this.glacialList1.HotColumnTracking = false;
this.glacialList1.HotItemTracking = false;
this.glacialList1.HotTrackingColor = System.Drawing.Color.LightGray;
this.glacialList1.HoverEvents = false;
this.glacialList1.HoverTime = 1;
this.glacialList1.ImageList = null;
this.glacialList1.ItemHeight = 30;
this.glacialList1.ItemWordWrap = false;
this.glacialList1.Location = new System.Drawing.Point(173, 142);
this.glacialList1.Name = "glacialList1";
this.glacialList1.Selectable = true;
this.glacialList1.SelectedTextColor = System.Drawing.Color.White;
this.glacialList1.SelectionColor = System.Drawing.Color.Lime;
this.glacialList1.ShowBorder = true;
this.glacialList1.ShowFocusRect = false;
this.glacialList1.Size = new System.Drawing.Size(1100, 621);
this.glacialList1.SortType = GlacialComponents.Controls.SortTypes.InsertionSort;
this.glacialList1.SuperFlatHeaderColor = System.Drawing.Color.White;
this.glacialList1.TabIndex = 10;
this.glacialList1.Text = "glacialList1";
this.glacialList1.Click += new System.EventHandler(this.glacialList1_Click);
//
// label11
//
this.label11.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label11.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label11.Location = new System.Drawing.Point(5, 763);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(169, 252);
this.label11.TabIndex = 11;
this.label11.Text = "打印信息:";
this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label12
//
this.label12.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label12.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label12.Location = new System.Drawing.Point(173, 763);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(73, 252);
this.label12.TabIndex = 12;
this.label12.Text = "暂停打印";
this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label12.Click += new System.EventHandler(this.label12_Click);
//
// label13
//
this.label13.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label13.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label13.Location = new System.Drawing.Point(245, 763);
this.label13.Name = "label13";
this.label13.Size = new System.Drawing.Size(73, 252);
this.label13.TabIndex = 13;
this.label13.Text = "下一计划";
this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label13.Click += new System.EventHandler(this.label13_Click);
//
// panel2
//
this.panel2.BackColor = System.Drawing.Color.Aquamarine;
this.panel2.Controls.Add(this.textBox2);
this.panel2.Controls.Add(this.label17);
this.panel2.Controls.Add(this.label16);
this.panel2.Controls.Add(this.textBox1);
this.panel2.Controls.Add(this.label15);
this.panel2.Controls.Add(this.comboBox2);
this.panel2.Controls.Add(this.label14);
this.panel2.Location = new System.Drawing.Point(318, 763);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(737, 252);
this.panel2.TabIndex = 14;
//
// textBox2
//
this.textBox2.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox2.Location = new System.Drawing.Point(167, 150);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(167, 41);
this.textBox2.TabIndex = 6;
this.textBox2.Click += new System.EventHandler(this.textBox2_Click);
//
// label17
//
this.label17.AutoSize = true;
this.label17.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label17.Location = new System.Drawing.Point(37, 156);
this.label17.Name = "label17";
this.label17.Size = new System.Drawing.Size(103, 29);
this.label17.TabIndex = 5;
this.label17.Text = "数量:";
//
// label16
//
this.label16.AutoSize = true;
this.label16.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label16.Location = new System.Drawing.Point(378, 84);
this.label16.Name = "label16";
this.label16.Size = new System.Drawing.Size(141, 29);
this.label16.TabIndex = 4;
this.label16.Text = "(yyMMdd)";
//
// textBox1
//
this.textBox1.Enabled = false;
this.textBox1.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox1.Location = new System.Drawing.Point(168, 81);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(166, 41);
this.textBox1.TabIndex = 3;
//
// label15
//
this.label15.AutoSize = true;
this.label15.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label15.Location = new System.Drawing.Point(38, 89);
this.label15.Name = "label15";
this.label15.Size = new System.Drawing.Size(103, 29);
this.label15.TabIndex = 2;
this.label15.Text = "批次:";
//
// comboBox2
//
this.comboBox2.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.comboBox2.FormattingEnabled = true;
this.comboBox2.Location = new System.Drawing.Point(168, 19);
this.comboBox2.Name = "comboBox2";
this.comboBox2.Size = new System.Drawing.Size(481, 37);
this.comboBox2.TabIndex = 1;
//
// label14
//
this.label14.AutoSize = true;
this.label14.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label14.Location = new System.Drawing.Point(38, 23);
this.label14.Name = "label14";
this.label14.Size = new System.Drawing.Size(103, 29);
this.label14.TabIndex = 0;
this.label14.Text = "产品:";
//
// label18
//
this.label18.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label18.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label18.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label18.Location = new System.Drawing.Point(1129, 763);
this.label18.Name = "label18";
this.label18.Size = new System.Drawing.Size(73, 252);
this.label18.TabIndex = 15;
this.label18.Text = "补打";
this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label18.Visible = false;
this.label18.Click += new System.EventHandler(this.label18_Click);
//
// label19
//
this.label19.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label19.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label19.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label19.Location = new System.Drawing.Point(1056, 763);
this.label19.Name = "label19";
this.label19.Size = new System.Drawing.Size(73, 252);
this.label19.TabIndex = 16;
this.label19.Text = "手工打印";
this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label19.Click += new System.EventHandler(this.label19_Click);
//
// label20
//
this.label20.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label20.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label20.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label20.Location = new System.Drawing.Point(1202, 763);
this.label20.Name = "label20";
this.label20.Size = new System.Drawing.Size(73, 252);
this.label20.TabIndex = 17;
this.label20.Text = "删除条码";
this.label20.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label20.Visible = false;
this.label20.Click += new System.EventHandler(this.label20_Click);
//
// label21
//
this.label21.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label21.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label21.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label21.Location = new System.Drawing.Point(1081, 93);
this.label21.Name = "label21";
this.label21.Size = new System.Drawing.Size(192, 50);
this.label21.TabIndex = 18;
this.label21.Text = "停机录入";
this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label21.Click += new System.EventHandler(this.label21_Click);
//
// timer1
//
this.timer1.Enabled = true;
this.timer1.Interval = 5000;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// panel3
//
this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel3.Controls.Add(this.button2);
this.panel3.Controls.Add(this.button1);
this.panel3.Controls.Add(this.textBox3);
this.panel3.Controls.Add(this.label22);
this.panel3.Location = new System.Drawing.Point(512, 555);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(527, 56);
this.panel3.TabIndex = 19;
//
// button2
//
this.button2.Location = new System.Drawing.Point(417, 20);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(75, 23);
this.button2.TabIndex = 3;
this.button2.Text = "取消";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// button1
//
this.button1.Location = new System.Drawing.Point(309, 20);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 2;
this.button1.Text = "确定";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// textBox3
//
this.textBox3.Location = new System.Drawing.Point(81, 20);
this.textBox3.Name = "textBox3";
this.textBox3.Size = new System.Drawing.Size(176, 21);
this.textBox3.TabIndex = 1;
this.textBox3.UseSystemPasswordChar = true;
this.textBox3.Click += new System.EventHandler(this.textBox3_Click);
this.textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox3_KeyDown);
//
// label22
//
this.label22.AutoSize = true;
this.label22.Location = new System.Drawing.Point(26, 24);
this.label22.Name = "label22";
this.label22.Size = new System.Drawing.Size(41, 12);
this.label22.TabIndex = 0;
this.label22.Text = "密码:";
//
// FrmBarCode
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1264, 985);
this.Controls.Add(this.panel3);
this.Controls.Add(this.label21);
this.Controls.Add(this.label20);
this.Controls.Add(this.label19);
this.Controls.Add(this.label18);
this.Controls.Add(this.panel2);
this.Controls.Add(this.label13);
this.Controls.Add(this.label12);
this.Controls.Add(this.label11);
this.Controls.Add(this.glacialList1);
this.Controls.Add(this.label10);
this.Controls.Add(this.label9);
this.Controls.Add(this.label8);
this.Controls.Add(this.label7);
this.Controls.Add(this.label6);
this.Controls.Add(this.label5);
this.Controls.Add(this.comboBox1);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.panel1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Name = "FrmBarCode";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Form1";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FrmBarCode_FormClosed);
this.Load += new System.EventHandler(this.FrmBarCode_Load);
this.panel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
this.panel3.ResumeLayout(false);
this.panel3.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.Label label10;
private GlacialComponents.Controls.GlacialList glacialList1;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.Label label17;
private System.Windows.Forms.Label label16;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Label label15;
private System.Windows.Forms.ComboBox comboBox2;
private System.Windows.Forms.Label label14;
private System.Windows.Forms.Label label18;
private System.Windows.Forms.Label label19;
private System.Windows.Forms.Label label20;
private System.Windows.Forms.Label label21;
private System.Windows.Forms.Timer timer1;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox3;
private System.Windows.Forms.Label label22;
}
}

1558
SjMes/InjectionPC/FrmBarCode.cs

File diff suppressed because it is too large

484
SjMes/InjectionPC/FrmBarCode.resx

@ -0,0 +1,484 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
q22C8fY24wAAAABJRU5ErkJggg==
</value>
</data>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

435
SjMes/InjectionPC/FrmDown.Designer.cs

@ -0,0 +1,435 @@
namespace InjectionPC
{
partial class FrmDown
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmDown));
this.panel1 = new System.Windows.Forms.Panel();
this.label2 = new System.Windows.Forms.Label();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.label1 = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.label4 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label9 = new System.Windows.Forms.Label();
this.label22 = new System.Windows.Forms.Label();
this.label21 = new System.Windows.Forms.Label();
this.label20 = new System.Windows.Forms.Label();
this.label10 = new System.Windows.Forms.Label();
this.label11 = new System.Windows.Forms.Label();
this.label12 = new System.Windows.Forms.Label();
this.label13 = new System.Windows.Forms.Label();
this.label14 = new System.Windows.Forms.Label();
this.label15 = new System.Windows.Forms.Label();
this.label16 = new System.Windows.Forms.Label();
this.panel2 = new System.Windows.Forms.Panel();
this.panel3 = new System.Windows.Forms.Panel();
this.button1 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.panel3.SuspendLayout();
this.SuspendLayout();
//
// panel1
//
this.panel1.Controls.Add(this.label2);
this.panel1.Controls.Add(this.pictureBox1);
this.panel1.Controls.Add(this.label1);
this.panel1.Location = new System.Drawing.Point(3, 3);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(1276, 91);
this.panel1.TabIndex = 18;
//
// label2
//
this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label2.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.Location = new System.Drawing.Point(1087, 4);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(187, 84);
this.label2.TabIndex = 3;
this.label2.Text = "2019-05-29 10:30:31";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label2.Click += new System.EventHandler(this.label2_Click);
//
// pictureBox1
//
this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
this.pictureBox1.Location = new System.Drawing.Point(4, 4);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(169, 84);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox1.TabIndex = 2;
this.pictureBox1.TabStop = false;
//
// label1
//
this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label1.Font = new System.Drawing.Font("宋体", 28F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(172, 4);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(917, 84);
this.label1.TabIndex = 1;
this.label1.Text = "注塑车间质量信息录入";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label8
//
this.label8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label8.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label8.Location = new System.Drawing.Point(806, 90);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(184, 52);
this.label8.TabIndex = 32;
this.label8.Text = "cy";
this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label7
//
this.label7.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label7.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label7.Location = new System.Drawing.Point(700, 90);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(110, 52);
this.label7.TabIndex = 31;
this.label7.Text = "用户:";
this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label6
//
this.label6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label6.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label6.Location = new System.Drawing.Point(545, 91);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(155, 52);
this.label6.TabIndex = 30;
this.label6.Text = "IM01";
this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label5
//
this.label5.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label5.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label5.Location = new System.Drawing.Point(436, 91);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(110, 52);
this.label5.TabIndex = 29;
this.label5.Text = "工位:";
this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// comboBox1
//
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.Font = new System.Drawing.Font("宋体", 32F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Items.AddRange(new object[] {
"A班",
"B班"});
this.comboBox1.Location = new System.Drawing.Point(284, 91);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(152, 51);
this.comboBox1.TabIndex = 28;
//
// label4
//
this.label4.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label4.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label4.Location = new System.Drawing.Point(175, 91);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(110, 52);
this.label4.TabIndex = 27;
this.label4.Text = "班组:";
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label3
//
this.label3.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label3.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label3.Location = new System.Drawing.Point(7, 91);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(169, 52);
this.label3.TabIndex = 26;
this.label3.Text = "用户信息:";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label9
//
this.label9.BackColor = System.Drawing.Color.SpringGreen;
this.label9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label9.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label9.Location = new System.Drawing.Point(990, 90);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(289, 52);
this.label9.TabIndex = 33;
this.label9.Text = "切换到:条码打印";
this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label9.Click += new System.EventHandler(this.label9_Click);
//
// label22
//
this.label22.BackColor = System.Drawing.SystemColors.Control;
this.label22.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label22.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label22.Location = new System.Drawing.Point(545, 142);
this.label22.Name = "label22";
this.label22.Size = new System.Drawing.Size(445, 52);
this.label22.TabIndex = 39;
this.label22.Text = "停机";
this.label22.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label22.Click += new System.EventHandler(this.label22_Click);
//
// label21
//
this.label21.BackColor = System.Drawing.Color.SpringGreen;
this.label21.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label21.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label21.Location = new System.Drawing.Point(175, 142);
this.label21.Name = "label21";
this.label21.Size = new System.Drawing.Size(371, 52);
this.label21.TabIndex = 38;
this.label21.Text = "开机";
this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label21.Click += new System.EventHandler(this.label21_Click);
//
// label20
//
this.label20.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label20.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label20.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label20.Location = new System.Drawing.Point(7, 142);
this.label20.Name = "label20";
this.label20.Size = new System.Drawing.Size(169, 52);
this.label20.TabIndex = 37;
this.label20.Text = "当前状态:";
this.label20.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label10
//
this.label10.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label10.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label10.Location = new System.Drawing.Point(7, 193);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(169, 52);
this.label10.TabIndex = 40;
this.label10.Text = "设备状态:";
this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label11
//
this.label11.BackColor = System.Drawing.Color.SpringGreen;
this.label11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label11.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label11.Location = new System.Drawing.Point(175, 193);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(261, 52);
this.label11.TabIndex = 41;
this.label11.Text = "开机运行";
this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label11.Click += new System.EventHandler(this.label11_Click);
//
// label12
//
this.label12.BackColor = System.Drawing.SystemColors.Control;
this.label12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label12.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label12.Location = new System.Drawing.Point(435, 193);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(261, 52);
this.label12.TabIndex = 42;
this.label12.Text = "开始换模";
this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label12.Click += new System.EventHandler(this.label12_Click);
//
// label13
//
this.label13.BackColor = System.Drawing.SystemColors.Control;
this.label13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label13.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label13.Location = new System.Drawing.Point(695, 193);
this.label13.Name = "label13";
this.label13.Size = new System.Drawing.Size(261, 52);
this.label13.TabIndex = 43;
this.label13.Text = "计划停机";
this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label13.Click += new System.EventHandler(this.label13_Click);
//
// label14
//
this.label14.BackColor = System.Drawing.SystemColors.Control;
this.label14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label14.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label14.Location = new System.Drawing.Point(953, 193);
this.label14.Name = "label14";
this.label14.Size = new System.Drawing.Size(261, 52);
this.label14.TabIndex = 44;
this.label14.Text = "故障停机";
this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label14.Click += new System.EventHandler(this.label14_Click);
//
// label15
//
this.label15.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label15.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label15.Location = new System.Drawing.Point(7, 245);
this.label15.Name = "label15";
this.label15.Size = new System.Drawing.Size(169, 473);
this.label15.TabIndex = 45;
this.label15.Text = "停机原因:";
this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label16
//
this.label16.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label16.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label16.Location = new System.Drawing.Point(7, 718);
this.label16.Name = "label16";
this.label16.Size = new System.Drawing.Size(169, 302);
this.label16.TabIndex = 46;
this.label16.Text = "备注:";
this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// panel2
//
this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel2.Location = new System.Drawing.Point(175, 245);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(1104, 473);
this.panel2.TabIndex = 47;
//
// panel3
//
this.panel3.Controls.Add(this.button1);
this.panel3.Controls.Add(this.textBox1);
this.panel3.Location = new System.Drawing.Point(175, 718);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(1104, 302);
this.panel3.TabIndex = 48;
//
// button1
//
this.button1.BackColor = System.Drawing.Color.SpringGreen;
this.button1.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.button1.Location = new System.Drawing.Point(1027, 6);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(77, 296);
this.button1.TabIndex = 1;
this.button1.Text = "保存";
this.button1.UseVisualStyleBackColor = false;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// textBox1
//
this.textBox1.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox1.Location = new System.Drawing.Point(3, 3);
this.textBox1.Multiline = true;
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(1018, 302);
this.textBox1.TabIndex = 0;
this.textBox1.Click += new System.EventHandler(this.textBox1_Click);
//
// FrmDown
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1280, 1024);
this.Controls.Add(this.panel3);
this.Controls.Add(this.panel2);
this.Controls.Add(this.label16);
this.Controls.Add(this.label15);
this.Controls.Add(this.label14);
this.Controls.Add(this.label13);
this.Controls.Add(this.label12);
this.Controls.Add(this.label11);
this.Controls.Add(this.label10);
this.Controls.Add(this.label22);
this.Controls.Add(this.label21);
this.Controls.Add(this.label20);
this.Controls.Add(this.label8);
this.Controls.Add(this.label7);
this.Controls.Add(this.label6);
this.Controls.Add(this.label5);
this.Controls.Add(this.comboBox1);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.label9);
this.Controls.Add(this.panel1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Name = "FrmDown";
this.Text = "FrmDown";
this.Load += new System.EventHandler(this.FrmDown_Load);
this.panel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.panel3.ResumeLayout(false);
this.panel3.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.Label label22;
private System.Windows.Forms.Label label21;
private System.Windows.Forms.Label label20;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.Label label14;
private System.Windows.Forms.Label label15;
private System.Windows.Forms.Label label16;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button button1;
}
}

343
SjMes/InjectionPC/FrmDown.cs

@ -0,0 +1,343 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using MESClassLibrary.BLL.BasicInfo;
using MESClassLibrary.Model;
using MESClassLibrary.BLL.Log;
using MESClassLibrary.BLL.Injection;
namespace InjectionPC
{
public partial class FrmDown : Form
{
private static string reason = "",downType="";
public FrmDown()
{
InitializeComponent();
}
private void label22_Click(object sender, EventArgs e)
{
label21.BackColor = System.Drawing.Color.Gray;
label22.BackColor = System.Drawing.Color.Chartreuse;
label11.BackColor = System.Drawing.Color.Gray;
}
void dLbRoom_Click(object sender, EventArgs e)
{
Label a = (Label)sender;
if (a.BackColor == Color.Transparent)
{
a.BackColor = Color.FromArgb(150, Color.Chartreuse);
reason += a.Text + ";";
}
else
{
reason = reason.Replace(a.Text + ";", "");
a.BackColor = Color.Transparent;
}
}
private void FrmDown_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
label6.Text = Program.station;
label8.Text = Program.OperatorName;
comboBox1.Text = Program.Shift;
label13.BackColor = System.Drawing.Color.Gray;
label14.BackColor = System.Drawing.Color.Gray;
label12.BackColor = System.Drawing.Color.Gray;
label22.BackColor = System.Drawing.Color.Gray;
Thread t = new Thread(new ThreadStart(TimeGo));
t.Start();
}
private void TimeGo()
{
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 1000;
timer.Enabled = true;
timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick);
}
private void timer_Tick(object sender, EventArgs e)
{
label2.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
Thread.Sleep(500);
}
private void button1_Click(object sender, EventArgs e)
{
string stationID="";
InjectionDownRecordBLL bll=new InjectionDownRecordBLL();
InjectionDownRecordModel md=new InjectionDownRecordModel();
#region 获取工位编号
StationBLL sbll=new StationBLL();
DataTable sdt = sbll.SearchInfoByNo(Program.station);
if (sdt != null && sdt.Rows.Count > 0)
{
stationID = sdt.Rows[0]["StationID"].ToString();
sdt.Dispose();
}
#endregion
if (downType == "")
{
MessageBox.Show("请选择停线类型!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (reason == "")
{
MessageBox.Show("请选择停线原因!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (reason != "")
{
//md.ID = Guid.NewGuid().ToString();
md.StationID = stationID;
md.DownType = downType;
md.DownReason = reason;
md.Des = textBox1.Text;
//md.StartTime = DateTime.Now;
bool flag=bll.UpdateInfo(md);
if (flag == true)
{
MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("保存失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
reason = "";
downType = "";
}
}
private void label12_Click(object sender, EventArgs e)
{
label11.BackColor = System.Drawing.Color.Gray;
label12.BackColor = System.Drawing.Color.Chartreuse;
label13.BackColor = System.Drawing.Color.Gray;
label14.BackColor = System.Drawing.Color.Gray;
downType = label12.Text;
panel2.Visible = false;
}
private void label13_Click(object sender, EventArgs e)
{
label11.BackColor = System.Drawing.Color.Gray;
label12.BackColor = System.Drawing.Color.Gray;
label13.BackColor = System.Drawing.Color.Chartreuse;
label14.BackColor = System.Drawing.Color.Gray;
panel2.Visible = true;
downType = label13.Text;
DownReasonBLL bll = new DownReasonBLL();
int drow = 0, dcol = 4;
DataTable dt = bll.SearchReason();
if (dt != null && dt.Rows.Count > 0)
{
drow = Convert.ToInt32(Math.Ceiling((double)dt.Rows.Count / dcol));
Label[] dLb = new Label[7];
string[] dstr = new string[dt.Rows.Count];
for (int i = 0; i < dt.Rows.Count; i++)
{
dstr[i] = dt.Rows[i]["Reason"].ToString();
}
for (int i = 0; i < dcol; i++) //列
{
for (int j = 0; j < drow; j++) //行
{
dLb[i] = new Label();
if ((i + dcol * j) < dstr.Length)
{
dLb[i].Text = dstr[i + dcol * j].ToString();
dLb[i].Font = new Font(dLb[i].Font.FontFamily, 20, FontStyle.Bold);
dLb[i].Size = new Size(250, 50);
dLb[i].Location = new Point(20 + i * (dLb[i].Size.Width + 25),
5 + j * (dLb[i].Size.Height + 20));
dLb[i].BorderStyle = BorderStyle.FixedSingle;
dLb[i].BackColor = Color.Transparent;
dLb[i].TextAlign = ContentAlignment.MiddleCenter;
panel2.Controls.Add(dLb[i]);
dLb[i].Click += new EventHandler(dLbRoom_Click);
}
}
}
dt.Dispose();
}
}
private void label14_Click(object sender, EventArgs e)
{
label11.BackColor = System.Drawing.Color.Gray;
label12.BackColor = System.Drawing.Color.Gray;
label13.BackColor = System.Drawing.Color.Gray;
label14.BackColor = System.Drawing.Color.Chartreuse;
downType = label14.Text;
panel2.Visible = true;
DownReasonBLL bll = new DownReasonBLL();
int drow = 0, dcol = 4;
DataTable dt = bll.SearchReason();
if (dt != null && dt.Rows.Count > 0)
{
drow = Convert.ToInt32(Math.Ceiling((double)dt.Rows.Count / dcol));
Label[] dLb = new Label[7];
string[] dstr = new string[dt.Rows.Count];
for (int i = 0; i < dt.Rows.Count; i++)
{
dstr[i] = dt.Rows[i]["Reason"].ToString();
}
for (int i = 0; i < dcol; i++) //列
{
for (int j = 0; j < drow; j++) //行
{
dLb[i] = new Label();
if ((i + dcol * j) < dstr.Length)
{
dLb[i].Text = dstr[i + dcol * j].ToString();
dLb[i].Font = new Font(dLb[i].Font.FontFamily, 20, FontStyle.Bold);
dLb[i].Size = new Size(250, 50);
dLb[i].Location = new Point(20 + i * (dLb[i].Size.Width + 25),
5 + j * (dLb[i].Size.Height + 20));
dLb[i].BorderStyle = BorderStyle.FixedSingle;
dLb[i].BackColor = Color.Transparent;
dLb[i].TextAlign = ContentAlignment.MiddleCenter;
panel2.Controls.Add(dLb[i]);
dLb[i].Click += new EventHandler(dLbRoom_Click);
}
}
}
dt.Dispose();
}
}
private void label21_Click(object sender, EventArgs e)
{
label22.BackColor = System.Drawing.Color.Gray;
label21.BackColor = System.Drawing.Color.Chartreuse;
label11.BackColor = System.Drawing.Color.Chartreuse;
label12.BackColor = System.Drawing.Color.Gray;
label13.BackColor = System.Drawing.Color.Gray;
label14.BackColor = System.Drawing.Color.Gray;
}
private void label11_Click(object sender, EventArgs e)
{
label11.BackColor = System.Drawing.Color.Chartreuse;
label12.BackColor = System.Drawing.Color.Gray;
label13.BackColor = System.Drawing.Color.Gray;
label14.BackColor = System.Drawing.Color.Gray;
}
private void label9_Click(object sender, EventArgs e)
{
this.Close();
}
protected override void OnVisibleChanged(EventArgs e)
{
base.OnVisibleChanged(e);
if (!IsHandleCreated)
{
this.Close();
}
}
private void textBox1_Click(object sender, EventArgs e)
{
ShowInputPanel();
}
private const Int32 WM_SYSCOMMAND = 274;
private const UInt32 SC_CLOSE = 61536;
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern bool PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern bool PostMessage(IntPtr hWnd, int Msg, uint wParam, uint lParam);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern int RegisterWindowMessage(string lpString);
//显示屏幕键盘
public static int ShowInputPanel()
{
try
{
dynamic file = "C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe";
if (!System.IO.File.Exists(file))
return -1;
Process.Start(file);
//return SetUnDock(); //不知SetUnDock()是什么,所以直接注释返回1
return 1;
}
catch (Exception)
{
return 255;
}
}
private void label2_Click(object sender, EventArgs e)
{
Environment.Exit(0);
}
}
}

481
SjMes/InjectionPC/FrmDown.resx

@ -0,0 +1,481 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
q22C8fY24wAAAABJRU5ErkJggg==
</value>
</data>
</root>

149
SjMes/InjectionPC/FrmLogin.Designer.cs

@ -0,0 +1,149 @@
namespace InjectionPC
{
partial class FrmLogin
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmLogin));
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(216, 194);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(66, 19);
this.label1.TabIndex = 0;
this.label1.Text = "用户名";
//
// label2
//
this.label2.AutoSize = true;
this.label2.BackColor = System.Drawing.Color.Transparent;
this.label2.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.Location = new System.Drawing.Point(216, 247);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(47, 19);
this.label2.TabIndex = 1;
this.label2.Text = "密码";
//
// textBox1
//
this.textBox1.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox1.Location = new System.Drawing.Point(296, 185);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(159, 29);
this.textBox1.TabIndex = 2;
this.textBox1.Click += new System.EventHandler(this.textBox1_Click);
//
// textBox2
//
this.textBox2.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox2.Location = new System.Drawing.Point(296, 247);
this.textBox2.Name = "textBox2";
this.textBox2.PasswordChar = '*';
this.textBox2.Size = new System.Drawing.Size(159, 29);
this.textBox2.TabIndex = 3;
this.textBox2.Click += new System.EventHandler(this.textBox2_Click);
//
// button1
//
this.button1.BackColor = System.Drawing.Color.LightSkyBlue;
this.button1.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.button1.Location = new System.Drawing.Point(231, 306);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(84, 38);
this.button1.TabIndex = 4;
this.button1.Text = "登陆";
this.button1.UseVisualStyleBackColor = false;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button2
//
this.button2.BackColor = System.Drawing.Color.LightSkyBlue;
this.button2.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.button2.Location = new System.Drawing.Point(387, 306);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(83, 38);
this.button2.TabIndex = 5;
this.button2.Text = "取消";
this.button2.UseVisualStyleBackColor = false;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// pictureBox1
//
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
this.pictureBox1.Location = new System.Drawing.Point(0, 0);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(703, 453);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox1.TabIndex = 6;
this.pictureBox1.TabStop = false;
this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click);
//
// FrmLogin
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(703, 453);
this.Controls.Add(this.label2);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.button1);
this.Controls.Add(this.button2);
this.Controls.Add(this.label1);
this.Controls.Add(this.pictureBox1);
this.Name = "FrmLogin";
this.Text = "登录";
this.Load += new System.EventHandler(this.FrmLogin_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.PictureBox pictureBox1;
}
}

212
SjMes/InjectionPC/FrmLogin.cs

@ -0,0 +1,212 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Runtime.InteropServices;
using MESClassLibrary.BLL.BasicInfo;
using MESClassLibrary.Model;
using MESClassLibrary.BLL.Log;
namespace InjectionPC
{
public partial class FrmLogin : Form
{
public FrmLogin()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Program.station = ConfigurationManager.AppSettings["Station"].ToString();
Program.IP = ConfigurationManager.AppSettings["IP"].ToString();
Program.RemoteIP = ConfigurationManager.AppSettings["RemoteIP"].ToString();
Program.PicturePath = ConfigurationManager.AppSettings["PicturePath"].ToString();
Program.WeightFolder = ConfigurationManager.AppSettings["WeightFolder"].ToString();
Program.WeightFile = ConfigurationManager.AppSettings["WeightFile"].ToString();
Program.WeightUser = ConfigurationManager.AppSettings["WeightUser"].ToString();
Program.WeightPsw = ConfigurationManager.AppSettings["WeightPsw"].ToString();
Program.interVal = Convert.ToInt32(ConfigurationManager.AppSettings["InterVal"].ToString());
if (DateTime.Now.Hour >= 8 && DateTime.Now.Hour < 20)
{
Program.Shift = "A班";
Program.ProductDate = DateTime.Now.ToString("yyyy-MM-dd");
}
else
{
Program.Shift = "B班";
if (DateTime.Now.Hour >= 0 && DateTime.Now.Hour < 8)
{
Program.ProductDate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
}
Program.ProductDate = DateTime.Now.ToString("yyyy-MM-dd");
}
OpenDb();
string stationID="";
#region 判断输入合法性
if(textBox1.Text.Trim()=="")
{
MessageBox.Show("用户名不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
textBox1.Focus();
return;
}
if (textBox2.Text.Trim() == "")
{
MessageBox.Show("密码不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
textBox1.Focus();
return;
}
#endregion
StationBLL sbll = new StationBLL();
DataTable sdt=sbll.SearchInfoByNo(Program.station);
if (sdt!=null && sdt.Rows.Count>0)
{
stationID=sdt.Rows[0]["StationID"].ToString();
}
sdt.Dispose();
Program.OperatorName = textBox1.Text.Trim();
OperatorBLL bll = new OperatorBLL();
DataTable dt=bll.SearchInfoByNameAndPsw(textBox1.Text.Trim(),stationID,textBox2.Text.Trim());
if (dt!=null && dt.Rows.Count >0)
{
this.Visible = false;
//Form fr=new FrmBarCode();
Form fr = new FrmQuality();
fr.Show();
}
else
{
}
dt.Dispose();
}
private bool OpenDb()
{
bool OpenDb = false;
string value = ConfigurationManager.ConnectionStrings["SqlConnString"].ToString();
Program.DBConn = new SqlConnection(value);
if (Program.DBConn.State.ToString().ToUpper() == "OPEN") Program.DBConn.Close();
try
{
Program.DBConn.Open();
}
catch (Exception Err)
{
if (Err != null)
{
MessageBox.Show("数据库连接失败,请检查网络连接,并重新连接!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return OpenDb;
}
}
OpenDb = true;
return OpenDb;
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void textBox1_Click(object sender, EventArgs e)
{
ShowInputPanel();
}
private const Int32 WM_SYSCOMMAND = 274;
private const UInt32 SC_CLOSE = 61536;
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern bool PostMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern bool PostMessage(IntPtr hWnd, int Msg, uint wParam, uint lParam);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern int RegisterWindowMessage(string lpString);
//显示屏幕键盘
public static int ShowInputPanel()
{
try
{
dynamic file = "C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe";
if (!System.IO.File.Exists(file))
return -1;
Process.Start(file);
//return SetUnDock(); //不知SetUnDock()是什么,所以直接注释返回1
return 1;
}
catch (Exception)
{
return 255;
}
}
private void textBox2_Click(object sender, EventArgs e)
{
ShowInputPanel();
}
private void FrmLogin_Load(object sender, EventArgs e)
{
var serverUrl = "http://10.60.101.10:8013/";
var updateXmlFileName = "InjectionUpdate.xml";
var updater = new AutoUpdater();
if (updater.CheckUpdateLoad(serverUrl, updateXmlFileName))
{
Environment.Exit(0);
}
}
private void pictureBox1_Click(object sender, EventArgs e)
{
}
}
}

713
SjMes/InjectionPC/FrmLogin.resx

@ -0,0 +1,713 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
</root>

428
SjMes/InjectionPC/FrmQuality.Designer.cs

@ -0,0 +1,428 @@
namespace InjectionPC
{
partial class FrmQuality
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmQuality));
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.label11 = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.label4 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.label1 = new System.Windows.Forms.Label();
this.label10 = new System.Windows.Forms.Label();
this.label9 = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
this.label20 = new System.Windows.Forms.Label();
this.label21 = new System.Windows.Forms.Label();
this.label22 = new System.Windows.Forms.Label();
this.label23 = new System.Windows.Forms.Label();
this.textBox3 = new System.Windows.Forms.TextBox();
this.label24 = new System.Windows.Forms.Label();
this.textBox4 = new System.Windows.Forms.TextBox();
this.pictureBox2 = new System.Windows.Forms.PictureBox();
this.panel2 = new System.Windows.Forms.Panel();
this.button1 = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
this.SuspendLayout();
//
// timer1
//
this.timer1.Interval = 1000;
//
// label11
//
this.label11.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label11.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label11.Location = new System.Drawing.Point(13, 744);
this.label11.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(225, 524);
this.label11.TabIndex = 28;
this.label11.Text = "缺陷原因:";
this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label8
//
this.label8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label8.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label8.Location = new System.Drawing.Point(1079, 115);
this.label8.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(245, 64);
this.label8.TabIndex = 24;
this.label8.Text = "cy";
this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label7
//
this.label7.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label7.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label7.Location = new System.Drawing.Point(937, 115);
this.label7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(146, 64);
this.label7.TabIndex = 23;
this.label7.Text = "用户:";
this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label6
//
this.label6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label6.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label6.Location = new System.Drawing.Point(731, 116);
this.label6.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(206, 64);
this.label6.TabIndex = 22;
this.label6.Text = "IM01";
this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label5
//
this.label5.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label5.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label5.Location = new System.Drawing.Point(585, 116);
this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(146, 64);
this.label5.TabIndex = 21;
this.label5.Text = "工位:";
this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// comboBox1
//
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.Font = new System.Drawing.Font("宋体", 32F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Items.AddRange(new object[] {
"A班",
"B班"});
this.comboBox1.Location = new System.Drawing.Point(383, 116);
this.comboBox1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(201, 61);
this.comboBox1.TabIndex = 20;
//
// label4
//
this.label4.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label4.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label4.Location = new System.Drawing.Point(237, 116);
this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(146, 64);
this.label4.TabIndex = 19;
this.label4.Text = "班组:";
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label3
//
this.label3.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label3.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label3.Location = new System.Drawing.Point(13, 116);
this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(225, 64);
this.label3.TabIndex = 18;
this.label3.Text = "用户信息:";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label2
//
this.label2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label2.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.Location = new System.Drawing.Point(1440, 5);
this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(249, 104);
this.label2.TabIndex = 3;
this.label2.Text = "2019-05-29 10:30:31";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label2.Click += new System.EventHandler(this.label2_Click);
//
// pictureBox1
//
this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
this.pictureBox1.Location = new System.Drawing.Point(5, 5);
this.pictureBox1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(225, 104);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox1.TabIndex = 2;
this.pictureBox1.TabStop = false;
//
// label1
//
this.label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label1.Font = new System.Drawing.Font("宋体", 28F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(229, 5);
this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(1214, 104);
this.label1.TabIndex = 1;
this.label1.Text = "注塑车间质量信息录入";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label10
//
this.label10.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label10.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label10.Location = new System.Drawing.Point(13, 308);
this.label10.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(225, 437);
this.label10.TabIndex = 26;
this.label10.Text = "产品展示:";
this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label9
//
this.label9.BackColor = System.Drawing.Color.SpringGreen;
this.label9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label9.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label9.Location = new System.Drawing.Point(1324, 115);
this.label9.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(375, 64);
this.label9.TabIndex = 25;
this.label9.Text = "切换到:条码打印";
this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label9.Click += new System.EventHandler(this.label9_Click);
//
// panel1
//
this.panel1.Controls.Add(this.label2);
this.panel1.Controls.Add(this.pictureBox1);
this.panel1.Controls.Add(this.label1);
this.panel1.Location = new System.Drawing.Point(8, 6);
this.panel1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(1692, 114);
this.panel1.TabIndex = 17;
//
// label20
//
this.label20.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label20.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label20.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label20.Location = new System.Drawing.Point(13, 180);
this.label20.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label20.Name = "label20";
this.label20.Size = new System.Drawing.Size(225, 64);
this.label20.TabIndex = 34;
this.label20.Text = "功能选择:";
this.label20.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// label21
//
this.label21.BackColor = System.Drawing.Color.SpringGreen;
this.label21.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label21.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label21.Location = new System.Drawing.Point(237, 180);
this.label21.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label21.Name = "label21";
this.label21.Size = new System.Drawing.Size(347, 64);
this.label21.TabIndex = 35;
this.label21.Text = "量产";
this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label22
//
this.label22.BackColor = System.Drawing.SystemColors.Control;
this.label22.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label22.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label22.Location = new System.Drawing.Point(585, 181);
this.label22.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label22.Name = "label22";
this.label22.Size = new System.Drawing.Size(351, 64);
this.label22.TabIndex = 36;
this.label22.Text = "量产前调试";
this.label22.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label23
//
this.label23.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label23.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label23.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label23.Location = new System.Drawing.Point(13, 244);
this.label23.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label23.Name = "label23";
this.label23.Size = new System.Drawing.Size(225, 64);
this.label23.TabIndex = 37;
this.label23.Text = "扫描条码:";
this.label23.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// textBox3
//
this.textBox3.Font = new System.Drawing.Font("宋体", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox3.Location = new System.Drawing.Point(237, 244);
this.textBox3.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.textBox3.Name = "textBox3";
this.textBox3.Size = new System.Drawing.Size(699, 61);
this.textBox3.TabIndex = 38;
this.textBox3.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox3_KeyDown);
//
// label24
//
this.label24.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label24.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label24.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label24.Location = new System.Drawing.Point(939, 241);
this.label24.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
this.label24.Name = "label24";
this.label24.Size = new System.Drawing.Size(199, 64);
this.label24.TabIndex = 39;
this.label24.Text = "产品名称:";
this.label24.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// textBox4
//
this.textBox4.Font = new System.Drawing.Font("宋体", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox4.Location = new System.Drawing.Point(1137, 241);
this.textBox4.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.textBox4.Name = "textBox4";
this.textBox4.Size = new System.Drawing.Size(555, 61);
this.textBox4.TabIndex = 40;
//
// pictureBox2
//
this.pictureBox2.Location = new System.Drawing.Point(237, 310);
this.pictureBox2.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.pictureBox2.Name = "pictureBox2";
this.pictureBox2.Size = new System.Drawing.Size(1459, 435);
this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox2.TabIndex = 41;
this.pictureBox2.TabStop = false;
//
// panel2
//
this.panel2.Location = new System.Drawing.Point(237, 744);
this.panel2.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(1349, 525);
this.panel2.TabIndex = 42;
//
// button1
//
this.button1.BackColor = System.Drawing.Color.DarkGray;
this.button1.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.button1.Location = new System.Drawing.Point(1591, 744);
this.button1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(103, 521);
this.button1.TabIndex = 40;
this.button1.Text = "保存";
this.button1.UseVisualStyleBackColor = false;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// FrmQuality
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1707, 1280);
this.Controls.Add(this.button1);
this.Controls.Add(this.panel2);
this.Controls.Add(this.pictureBox2);
this.Controls.Add(this.textBox4);
this.Controls.Add(this.label24);
this.Controls.Add(this.textBox3);
this.Controls.Add(this.label23);
this.Controls.Add(this.label22);
this.Controls.Add(this.label21);
this.Controls.Add(this.label20);
this.Controls.Add(this.label11);
this.Controls.Add(this.label8);
this.Controls.Add(this.label7);
this.Controls.Add(this.label6);
this.Controls.Add(this.label5);
this.Controls.Add(this.comboBox1);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.label10);
this.Controls.Add(this.label9);
this.Controls.Add(this.panel1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.Name = "FrmQuality";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "质量录入";
this.Load += new System.EventHandler(this.FrmQuality_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.panel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Timer timer1;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label label20;
private System.Windows.Forms.Label label21;
private System.Windows.Forms.Label label22;
private System.Windows.Forms.Label label23;
private System.Windows.Forms.TextBox textBox3;
private System.Windows.Forms.Label label24;
private System.Windows.Forms.TextBox textBox4;
private System.Windows.Forms.PictureBox pictureBox2;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Button button1;
}
}

597
SjMes/InjectionPC/FrmQuality.cs

@ -0,0 +1,597 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using MESClassLibrary.BLL.BasicInfo;
using MESClassLibrary.BLL.Log;
using MESClassLibrary.Model;
namespace InjectionPC
{
public partial class FrmQuality : Form
{
private static string position = "", reason = "";
int count = 0; //缺陷图选择个数
public FrmQuality()
{
InitializeComponent();
}
private void label9_Click(object sender, EventArgs e)
{
this.Close();
//OnVisibleChanged()
}
protected override void OnVisibleChanged(EventArgs e)
{
base.OnVisibleChanged(e);
if (!IsHandleCreated)
{
this.Close();
}
}
private void FrmQuality_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
string LineID = "";
label6.Text = Program.station;
label8.Text = Program.OperatorName;
comboBox1.Text = Program.Shift;
textBox3.TabIndex = 0;
textBox3.Focus();
Thread t = new Thread(new ThreadStart(TimeGo));
t.Start();
#region 测试
//获取服务器上图片
//Ping p1 = new Ping();
//bool status = false;
//PingReply reply = p1.Send(Program.IP); //发送主机名或Ip地址
//StringBuilder sbuilder;
//if (reply.Status == IPStatus.Success)
//{
// status = Upload.DoConnComputer(Program.IP, "aa", "Administrator", "Wff775168+");
// if (status == true)
// {
// //共享文件夹的目录
// DirectoryInfo theFolder = new DirectoryInfo(@"\\" + Program.IP + "\\aa\\");
// string filename = theFolder.ToString();
// //执行方法
// TransportRemoteToLocal(@"D:\车间.png", filename, "车间.png"); //实现将远程服务器文件写入到本地
// }
//}
//FileStream fs = new FileStream("D:\\2.jpg", FileMode.Open,
// FileAccess.Read);//获取图片文件流
//Image img = Image.FromStream(fs); // 文件流转换成Image格式
//pictureBox2.Image = img; //给 图片框设置要显示的图片
//fs.Close(); // 关闭流,释放图片资源
//Label[] lb = new Label[5];
//string[] str = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O" };
//for (int i = 0; i < 5; i++)
//{
// for (int j = 0; j < 3; j++)
// {
// lb[i] = new Label();
// lb[i].Text = str[i].ToString();
// lb[i].Font = new Font(lb[i].Font.FontFamily, 32, FontStyle.Bold);
// lb[i].Size = new Size(pictureBox2.Width / 5, pictureBox2.Height / 3);
// lb[i].Location = new Point(0 + i * lb[i].Size.Width, 0 + j * lb[i].Size.Height);
// lb[i].BorderStyle = BorderStyle.FixedSingle;
// lb[i].BackColor = Color.Transparent;
// lb[i].TextAlign = ContentAlignment.MiddleCenter;
// pictureBox2.Controls.Add(lb[i]);
// lb[i].Click += new EventHandler(lblRoom_Click);
// }
//}
//StationBLL sbll = new StationBLL();
//DataTable sdt = sbll.SearchInfoByNo(Program.station);
//if (sdt != null && sdt.Rows.Count > 0)
//{
// LineID = sdt.Rows[0]["LineID"].ToString();
//}
//sdt.Dispose();
//int row = 0, col = 6;
//DefectBLL dbll = new DefectBLL();
//DataTable dt3 = dbll.SearchInfo(LineID);
//if (dt3 != null && dt3.Rows.Count > 0)
//{
// row = Convert.ToInt32(Math.Ceiling((double)dt3.Rows.Count / 6));
// Label[] dLb = new Label[7];
// string[] dstr = new string[dt3.Rows.Count];
// for (int i = 0; i < dt3.Rows.Count; i++)
// {
// dstr[i] = dt3.Rows[i]["DefectName"].ToString();
// }
// for (int i = 0; i < 6; i++) //列
// {
// for (int j = 0; j < row;j++) //行
// {
// dLb[i] = new Label();
// if ((i + 6 * j) < dstr.Length)
// {
// dLb[i].Text = dstr[i + 6 * j].ToString();
// dLb[i].Font = new Font(dLb[i].Font.FontFamily, 24, FontStyle.Bold);
// dLb[i].Size = new Size(150, 50);
// dLb[i].Location = new Point(20 + i * (dLb[i].Size.Width+25), 5 + j * (dLb[i].Size.Height+20));
// dLb[i].BorderStyle = BorderStyle.FixedSingle;
// dLb[i].BackColor = Color.Transparent;
// dLb[i].TextAlign = ContentAlignment.MiddleCenter;
// panel2.Controls.Add(dLb[i]);
// }
// }
// }
//}
#endregion
}
private void TimeGo()
{
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 1000;
timer.Enabled = true;
timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Tick);
}
private void timer_Tick(object sender, EventArgs e)
{
label2.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
Thread.Sleep(500);
}
/// <summary>
/// 从远程服务器下载文件到本地
/// </summary>
/// <param name="src">下载到本地后的文件路径,包含文件的扩展名</param>
/// <param name="dst">远程服务器路径(共享文件夹路径)</param>
/// <param name="fileName">远程服务器(共享文件夹)中的文件名称,包含扩展名</param>
public static void TransportRemoteToLocal(string src, string dst, string fileName) //src:下载到本地后的文件路径 dst:远程服务器路径 fileName:远程服务器dst路径下的文件名
{
try
{
FileStream inFileStream = new FileStream(src, FileMode.Open); //远程服务器文件 此处假定远程服务器共享文件夹下确实包含本文件,否则程序报错
if (!Directory.Exists(dst))
{
Directory.CreateDirectory(dst);
}
dst = dst + fileName;
FileStream outFileStream = new FileStream(dst, FileMode.OpenOrCreate); //从远程服务器下载到本地的文件
byte[] buf = new byte[inFileStream.Length];
int byteCount;
while ((byteCount = inFileStream.Read(buf, 0, buf.Length)) > 0)
{
outFileStream.Write(buf, 0, byteCount);
}
inFileStream.Flush();
inFileStream.Close();
outFileStream.Flush();
outFileStream.Close();
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
}
}
void lblRoom_Click(object sender, EventArgs e)
{
Label a = (Label) sender;
//foreach (Control c in pictureBox2.Controls)
//{
// c.BackColor = Color.Transparent;
//}
if (a.BackColor == Color.Transparent)
{
a.BackColor = Color.FromArgb(150, System.Drawing.Color.Chartreuse);
count++;
}
else
{
a.BackColor = Color.Transparent;
count--;
}
//position +=a.Text+",";
}
void dLbRoom_Click(object sender, EventArgs e)
{
//if (count == 0)
//{
// MessageBox.Show("请选择缺陷位置!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
// return;
//}
Label a = (Label)sender;
string aa = a.Text;
if (a.BackColor == Color.Transparent)
{
a.BackColor = Color.FromArgb(150, Color.Chartreuse);
reason += a.Text+";";
}
else
{
reason = reason.Replace(a.Text+";","");
a.BackColor = Color.Transparent;
}
}
/// <summary>
/// 保存缺陷
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
string stockNo = "",batchNo="",partNo="";
foreach (Control c in pictureBox2.Controls)
{
Label lab = c as Label;
if (lab.BackColor != Color.Transparent)
{
position += lab.Text + ";";
}
}
if (position == "")
{
MessageBox.Show("请选择缺陷位置!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (reason == "")
{
MessageBox.Show("请选择缺陷原因!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
BadInjectionBLL badBLL = new BadInjectionBLL();
BadInjectionModel badmd = new BadInjectionModel();
ProductOfInjectionModel md = new ProductOfInjectionModel();
ProductOfInjectionBLL bll=new ProductOfInjectionBLL();
#region 判断是否已做过报废
DataTable baddt = badBLL.SearchByCode(textBox3.Text.Trim());
if (baddt != null && baddt.Rows.Count > 0)
{
MessageBox.Show("请产品已做过报废处理!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
reason = "";
textBox3.Text = "";
textBox3.TabIndex = 0;
textBox3.Focus();
textBox4.Text = "";
pictureBox2.Image = null;
pictureBox2.Controls.Clear();
panel2.Controls.Clear();
return;
}
#endregion
#region 保存报废详细信息
badmd.ID = Guid.NewGuid().ToString();
if (textBox3.Text.Trim().Contains("."))
{
badmd.BarCode = textBox3.Text.Trim();
badmd.OneBarCode = "";
}
else
{
badmd.OneBarCode = textBox3.Text.Trim();
badmd.BarCode = "";
}
badmd.BadPosition = position;
badmd.BadReason = reason.Trim();
badBLL.Add_Info(badmd);
#endregion
#region 修改注塑产量表,如果是开机报废则把产量减1,报废数不变
//DataTable dt = badBLL.SearchByCode(textBox3.Text.Trim());
//if (dt != null && dt.Rows.Count != 1)
//{
//}
//else
//{
// Program.GetCode(textBox3.Text.Trim(), out stockNo, out batchNo, out partNo);
// md.BadCount = 1;
// md.ClassName = Program.Shift;
// StationBLL sbll = new StationBLL();
// DataTable sdt = sbll.SearchInfoByNo(Program.station);
// if (sdt != null && sdt.Rows.Count > 0)
// {
// md.StationID = sdt.Rows[0]["StationID"].ToString();
// }
// else
// {
// md.StationID = "";
// }
// sdt.Dispose();
// md.ProductDate = Program.ProductDate;
// md.PartNo = partNo;
// md.StockNo = stockNo;
// if (reason.Contains("开机报废"))
// {
// md.ProductCount = 1;
// bll.updateProductCount(md);
// }
// else
// {
// bll.UpdateBad_Info(md);
// }
//}
#endregion
reason = "";
textBox3.Text = "";
textBox3.TabIndex = 0;
textBox3.Focus();
textBox4.Text = "";
pictureBox2.Image = null;
pictureBox2.Controls.Clear();
panel2.Controls.Clear();
position = "";
reason = "";
//this.Close();
}
private void button2_Click(object sender, EventArgs e)
{
Form fr = new FrmBarCode();
this.Hide();
fr.Show();
}
private void textBox3_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
string[] barcode=new string[3];
int row = 0, col = 0;
string picture = "";
string LineID = "";
ProductBLL bll = new ProductBLL();
string aa = textBox3.Text.Trim();
if (textBox3.Text.Length == 20)
{
DataTable dt = bll.SearchInfoByStock(textBox3.Text.Substring(0,10));
if (dt != null && dt.Rows.Count > 0)
{
textBox4.Text = dt.Rows[0]["ProductName"].ToString();
row = Convert.ToInt32(dt.Rows[0]["Rows"].ToString());
col = Convert.ToInt32(dt.Rows[0]["Cols"].ToString());
picture = dt.Rows[0]["PicturePath"].ToString();
dt.Dispose();
}
}
else
{
barcode = textBox3.Text.Trim().Split('.');
DataTable dt = bll.SearchInfoByPartNo(barcode[0]);
if (dt != null && dt.Rows.Count > 0)
{
textBox4.Text = dt.Rows[0]["ProductName"].ToString();
row = Convert.ToInt32(dt.Rows[0]["Rows"].ToString());
col = Convert.ToInt32(dt.Rows[0]["Cols"].ToString());
picture = dt.Rows[0]["PicturePath"].ToString();
dt.Dispose();
}
}
try
{
#region Load PictureBox
if (!string.IsNullOrEmpty(picture))
{
if (!File.Exists(System.IO.Directory.GetCurrentDirectory() + @"\" + picture))
{
string strImageURL = "http://10.60.101.10:8001/PDF/" + picture;
System.Net.WebClient webClient = new System.Net.WebClient();
webClient.DownloadFile(strImageURL, Directory.GetCurrentDirectory() + @"\" + picture);
}
FileStream fs = new FileStream(Directory.GetCurrentDirectory() + "\\" + picture, FileMode.Open,
FileAccess.Read); //获取图片文件流
Image img = Image.FromStream(fs); // 文件流转换成Image格式
pictureBox2.Image = img; //给 图片框设置要显示的图片
fs.Close(); // 关闭流,释放图片资源
}
//if (!File.Exists(System.IO.Directory.GetCurrentDirectory() + @"\" + picture))
//{
// Ping p1 = new Ping();
// bool status = false;
// PingReply reply = p1.Send(Program.RemoteIP); //发送主机名或Ip地址
// StringBuilder sbuilder;
// if (reply.Status == IPStatus.Success)
// {
// string PictureFolder = ConfigurationManager.AppSettings["PictureFolder"].ToString();
// string User = ConfigurationManager.AppSettings["PictureUser"].ToString();
// string UserPwd = ConfigurationManager.AppSettings["PicturePsw"].ToString();
// status = Upload.DoConnComputer(Program.RemoteIP, PictureFolder, User, UserPwd);
// if (status == true)
// {
// //共享文件夹的目录
// string path = ConfigurationManager.AppSettings["PicturePath"].ToString() + picture;
// DirectoryInfo theFolder = new DirectoryInfo(path);
// string filename = theFolder.ToString();
// //执行方法
// TransportRemoteToLocal(filename, System.Environment.CurrentDirectory + "\\", picture); //实现将远程服务器文件写入到本地
// }
// //string PictureFolder = ConfigurationManager.AppSettings["PictureFolder"].ToString();
// //string User = ConfigurationManager.AppSettings["User"].ToString();
// //string UserPwd = ConfigurationManager.AppSettings["UserPwd"].ToString();
// //status = Upload.DoConnComputer(Program.IP, "aa", "Administrator", "Wff775168+");
// //if (status == true)
// //{
// // //共享文件夹的目录
// // DirectoryInfo theFolder = new DirectoryInfo(@"\\" + Program.IP + "\\aa\\");
// // string filename = theFolder.ToString();
// // //执行方法
// // TransportRemoteToLocal(@"D:\" + picture, filename, picture); //实现将远程服务器文件写入到本地
// //}
// }
//}
//FileStream fs = new FileStream(System.Environment.CurrentDirectory + "\\" + picture, FileMode.Open,
// FileAccess.Read); //获取图片文件流
//Image img = Image.FromStream(fs); // 文件流转换成Image格式
//pictureBox2.Image = img; //给 图片框设置要显示的图片
//fs.Close(); // 关闭流,释放图片资源
#endregion
#region 缺陷图划分区域
Label[] lb = new Label[5];
string[] str =
{
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
"U", "V", "W", "X", "Y", "Z"
};
for (int i = 0; i < col; i++)
{
for (int j = 0; j < row; j++)
{
lb[i] = new Label();
lb[i].Text = str[i + col * j].ToString();
lb[i].Font = new Font(lb[i].Font.FontFamily, 32, FontStyle.Bold);
lb[i].Size = new Size(pictureBox2.Width / col, pictureBox2.Height / row);
lb[i].Location = new Point(0 + i * lb[i].Size.Width, 0 + j * lb[i].Size.Height);
lb[i].BorderStyle = BorderStyle.FixedSingle;
lb[i].BackColor = Color.Transparent;
lb[i].TextAlign = ContentAlignment.MiddleCenter;
pictureBox2.Controls.Add(lb[i]);
lb[i].Click += new EventHandler(lblRoom_Click);
}
}
#endregion
#region 缺陷原因
StationBLL sbll = new StationBLL();
DataTable sdt = sbll.SearchInfoByNo(Program.station);
if (sdt != null && sdt.Rows.Count > 0)
{
LineID = sdt.Rows[0]["LineID"].ToString();
}
sdt.Dispose();
int drow = 0, dcol = 6;
DefectBLL dbll = new DefectBLL();
DataTable dt3 = dbll.SearchInfo(LineID);
if (dt3 != null && dt3.Rows.Count > 0)
{
drow = Convert.ToInt32(Math.Ceiling((double) dt3.Rows.Count / dcol));
Label[] dLb = new Label[7];
string[] dstr = new string[dt3.Rows.Count];
for (int i = 0; i < dt3.Rows.Count; i++)
{
dstr[i] = dt3.Rows[i]["DefectName"].ToString();
}
for (int i = 0; i < dcol; i++) //列
{
for (int j = 0; j < drow; j++) //行
{
dLb[i] = new Label();
if ((i + dcol * j) < dstr.Length)
{
dLb[i].Text = dstr[i + dcol * j].ToString();
dLb[i].Font = new Font(dLb[i].Font.FontFamily, 20, FontStyle.Bold);
dLb[i].Size = new Size(130, 50);
dLb[i].Location = new Point(50 + i * (dLb[i].Size.Width + 25),
50 + j * (dLb[i].Size.Height + 20));
dLb[i].BorderStyle = BorderStyle.FixedSingle;
dLb[i].BackColor = Color.Transparent;
dLb[i].TextAlign = ContentAlignment.MiddleCenter;
panel2.Controls.Add(dLb[i]);
dLb[i].Click += new EventHandler(dLbRoom_Click);
}
}
}
}
#endregion
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
}
}
}
private void label2_Click(object sender, EventArgs e)
{
Environment.Exit(0);
}
}
}

484
SjMes/InjectionPC/FrmQuality.resx

@ -0,0 +1,484 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>13, -3</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
q22C8fY24wAAAABJRU5ErkJggg==
</value>
</data>
</root>

BIN
SjMes/InjectionPC/GlacialList.dll

Binary file not shown.

230
SjMes/InjectionPC/InjectionPC.csproj

@ -0,0 +1,230 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{0FDBFD8E-C694-45C2-89B2-BC3120B944BF}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>InjectionPC</RootNamespace>
<AssemblyName>InjectionPC</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
<PublishUrl>发布\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="GlacialList, Version=1.0.1513.31776, Culture=neutral">
<SpecificVersion>False</SpecificVersion>
<HintPath>.\GlacialList.dll</HintPath>
</Reference>
<Reference Include="Interop.TaskScheduler, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<EmbedInteropTypes>True</EmbedInteropTypes>
<HintPath>.\Interop.TaskScheduler.dll</HintPath>
</Reference>
<Reference Include="SchTaskExtAPI, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>.\SchTaskExtAPI.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="AutoUpdater.cs" />
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="FrmDown.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmDown.Designer.cs">
<DependentUpon>FrmDown.cs</DependentUpon>
</Compile>
<Compile Include="FrmLogin.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmLogin.Designer.cs">
<DependentUpon>FrmLogin.cs</DependentUpon>
</Compile>
<Compile Include="FrmQuality.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmQuality.Designer.cs">
<DependentUpon>FrmQuality.cs</DependentUpon>
</Compile>
<Compile Include="FrmBarCode.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmBarCode.Designer.cs">
<DependentUpon>FrmBarCode.cs</DependentUpon>
</Compile>
<Compile Include="LogHelper.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ReportHelper.cs" />
<Compile Include="Upload.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmBarCode.resx">
<DependentUpon>FrmBarCode.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmDown.resx">
<DependentUpon>FrmDown.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmLogin.resx">
<DependentUpon>FrmLogin.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmQuality.resx">
<DependentUpon>FrmQuality.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="App.config">
<SubType>Designer</SubType>
</None>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.0">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4 %28x86 和 x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.4.5">
<Visible>False</Visible>
<ProductName>Windows Installer 4.5</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Content Include="2.ico" />
<Content Include="GlacialList.dll" />
<Content Include="Interop.TaskScheduler.dll" />
<Content Include="Logo.png" />
<Content Include="Picture\V&amp;W205-AMG-F.jpg" />
<Content Include="SchTaskExtAPI.dll" />
<Content Include="北汽模塑.png" />
</ItemGroup>
<ItemGroup>
<COMReference Include="grdesLib">
<Guid>{0CDAC26E-8F92-47EE-9E2E-844DBF78703A}</Guid>
<VersionMajor>5</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
<COMReference Include="grproLib">
<Guid>{715CBE0F-4F50-46EF-B009-CACED3A5C868}</Guid>
<VersionMajor>5</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
<COMReference Include="stdole">
<Guid>{00020430-0000-0000-C000-000000000046}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MESClassLibrary\MESClassLibrary.csproj">
<Project>{867989d8-6837-41dc-9bf1-4658f5d6cfef}</Project>
<Name>MESClassLibrary</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

BIN
SjMes/InjectionPC/Interop.TaskScheduler.dll

Binary file not shown.

76
SjMes/InjectionPC/LogHelper.cs

@ -0,0 +1,76 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MESClassLibrary.DAL;
namespace InjectionPC
{
public class LogHelper
{
private static string CodeVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString().Trim();
//<summary>
//保存日志的文件夹
//<summary>
private static string logPath = AppDomain.CurrentDomain.BaseDirectory + @"log\";
/// <summary>
/// 写日志
/// </summary>
/// <param name="msg"></param>
/// <param name="errorFile"></param>
public static void WriteLog(string msg, string errorFile = "")
{
try
{
if (string.IsNullOrEmpty(msg))
{
return;
}
else
{
msg = string.Format("程序版本号:{0},Time:{1},Message:{2}", CodeVersion, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffff"), msg);
}
//如果不存在log文件夹 则创建
if (!Directory.Exists(logPath))
{
Directory.CreateDirectory(logPath);
}
StreamWriter sw = File.AppendText(logPath + errorFile + DateTime.Now.ToString("yyyyMMdd") + ".Log");
sw.WriteLine(msg);
sw.Close();
}
catch (Exception ex)
{
}
}
/// <summary>
/// 拼接错误日志
/// </summary>
/// <param name="ex">异常类</param>
/// <param name="errorFile">异常类文件夹名,可为空</param>
public static void WriteLogManager(Exception ex, string errorFile = "")
{
StringBuilder str = new StringBuilder();//保存到文件中的日志信息
str.AppendLine("****************************异常文本****************************");
str.AppendLine("【程序版本号】:" + CodeVersion + " 【出现时间】:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
if (ex != null)
{
str.AppendLine(string.Format("【异常类型】:{0}\r\n【异常信息】:{1}\r\n【异常方法】:{2}\r\n【堆栈调用】:{3}", ex.GetType().Name, ex.Message, ex.TargetSite, ex.StackTrace));
}
else
{
str.AppendLine(string.Format("【未处理应用程序线程错误】:{0}", ex));
}
str.AppendLine("****************************************************************");
//保存日志
WriteLog(str.ToString(), "Error" + errorFile);
}
}
}

BIN
SjMes/InjectionPC/Logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
SjMes/InjectionPC/Picture/V&W205-AMG-F.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

93
SjMes/InjectionPC/Program.cs

@ -0,0 +1,93 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;
namespace InjectionPC
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
///
public static SqlConnection DBConn; //数据库连接串
public static string station;
public static string OperatorName;
public static string IP;
public static string Shift; //班次
public static string ProductDate;
public static string RemoteIP;
public static string PicturePath;
public static string WeightFolder;
public static string WeightFile;
public static string WeightUser;
public static string WeightPsw;
public static int interVal;
[STAThread]
static void Main()
{
bool isRuned;
System.Threading.Mutex mutex = new System.Threading.Mutex(true, "OnlyRunOneInstance", out isRuned);
if (isRuned)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FrmLogin());
mutex.ReleaseMutex();
}
else
{
MessageBox.Show("程序已启动!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
//Application.Run(new Form1());
}
/// <summary>判断指定字符串是否包含有汉字</summary>
/// <param name="StrChineseString">指定的字符串</param>
/// <returns>若包含有汉字则返回True,否则返回False</returns>
public static bool InChinese1(string StrChineseString)
{
return System.Text.RegularExpressions.Regex.IsMatch(StrChineseString, @"[/u4e00-/u9fa5]+");
}
public static void GetCode(string code, out string stockNo, out string batchNo, out string partNo)
{
//解析塑料粒子条码,长度为20的为一维码22000000821906090201,否则为二维码
//二维码样例Z-340.180411.000001;5000;S35001;20180411;P1710401.[#Line#];180411;
//第一个分号之前的数据,即Z-340.180411.000001; Z-340为零件号,180411为批次号,000001为流水号
//一维码前十位为零件号,tb_Product PartNo,11~16位为批次
stockNo = ""; //存货代码
batchNo = ""; //批次
partNo = ""; //零件号
if (code.Contains(".") == false)
{
//一维码
stockNo = code.Substring(0, 10);
batchNo = code.Substring(10, 6);
}
else
{
//二维码
string[] strs = code.Split(';');
if (strs.Length > 0)
{
string str = strs[0];
string[] props = str.Split('.');
if (props.Length >= 3)
{
partNo = props[0];
batchNo = props[1];
}
}
}
}
}
}

36
SjMes/InjectionPC/Properties/AssemblyInfo.cs

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("InjectionPC")]
[assembly: AssemblyDescription("获取批次取服务器时间")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("InjectionPC")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("d6193cb5-fa92-4ddd-b2d9-594279a18461")]
// 程序集的版本信息由下面四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.17")]
[assembly: AssemblyFileVersion("1.0.0.17")]

63
SjMes/InjectionPC/Properties/Resources.Designer.cs

@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace InjectionPC.Properties {
using System;
/// <summary>
/// 一个强类型的资源类,用于查找本地化的字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// 返回此类使用的缓存的 ResourceManager 实例。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("InjectionPC.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 使用此强类型资源类,为所有资源查找
/// 重写当前线程的 CurrentUICulture 属性。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

117
SjMes/InjectionPC/Properties/Resources.resx

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

26
SjMes/InjectionPC/Properties/Settings.Designer.cs

@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace InjectionPC.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}

7
SjMes/InjectionPC/Properties/Settings.settings

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

99
SjMes/InjectionPC/ReportHelper.cs

@ -0,0 +1,99 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using grproLib;
namespace InjectionPC
{
public class ReportHelper
{
public GridppReport Report;
private DataTable _dtDataDetail;
public ReportHelper(string filename, DataTable dtDataHead, DataTable dtDataDetail, int paperOrigntation, short copies, string printerName)
{
Init(filename, dtDataHead, dtDataDetail, paperOrigntation, copies, printerName);
}
private void Init(string filename, DataTable dtDataHead, DataTable dtDataDetail, int paperOrigntation, short copies, string printerName)
{
try
{
_dtDataDetail = dtDataDetail;
Report = new GridppReport();
Report.LoadFromFile(filename);
Report.FetchRecord += Report_FetchRecord;
Report.Printer.PrinterName = printerName;
Report.Printer.PaperOrientation = (GRPaperOrientation)paperOrigntation;
Report.Printer.Copies = copies;
FillParameters(Report, dtDataHead);
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
public void Print(bool isPreview, bool isShowDialog = true)
{
if (isPreview)
Report.PrintPreview(true);
else
Report.Print(isShowDialog);
}
private void Report_FetchRecord()
{
if (_dtDataDetail != null)
{
FillRecordToReport(Report, _dtDataDetail);
}
}
private void FillRecordToReport(IGridppReport report, DataTable dtDetail)
{
foreach (DataRow dr in dtDetail.Rows)
{
report.DetailGrid.Recordset.Append();
foreach (DataColumn dc in dtDetail.Columns)
{
var field = report.FieldByName(dc.ColumnName);
if (field == null) continue;
field.Value = dr[dc.ColumnName];
}
report.DetailGrid.Recordset.Post();
}
}
private void FillParameters(GridppReport report, DataTable dtHead)
{
if (dtHead.Rows.Count == 0) return;
foreach (DataColumn dc in dtHead.Columns)
{
var param = report.ParameterByName(dc.ColumnName);
if (param == null) continue;
param.Value = dtHead.Rows[0][dc.ColumnName];
}
}
public static string GetTemplateFile(string sourfilename)
{
var ofd = new OpenFileDialog
{
Filter = @"Grid++ files (*.grf)|*.grf",
Multiselect = false,
RestoreDirectory = true,
FileName = sourfilename,
InitialDirectory = Path.GetDirectoryName(sourfilename),
};
if (ofd.ShowDialog() != DialogResult.OK) return string.Empty;
return ofd.FileName;
}
}
}

BIN
SjMes/InjectionPC/SchTaskExtAPI.dll

Binary file not shown.

99
SjMes/InjectionPC/Upload.cs

@ -0,0 +1,99 @@
using System;
using System.Collections.Generic;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Net;
using System.Security.Policy;
namespace InjectionPC
{
public class Upload
{
public static void DownLoad(string Url, string FileName)
{
bool Value = false;
WebResponse response = null;
Stream stream = null;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
response = request.GetResponse();
stream = response.GetResponseStream();
if (!response.ContentType.ToLower().StartsWith("text/"))
{
Value = SaveBinaryFile(response, FileName);
}
}
catch (Exception err)
{
string aa = err.ToString();
}
}
/// <summary>
/// Save a binary file to disk.
/// </summary>
/// <param name="response">The response used to save the file</param>
// 将二进制文件保存到磁盘
private static bool SaveBinaryFile(WebResponse response, string FileName)
{
bool Value = true;
byte[] buffer = new byte[1024];
try
{
if (File.Exists(FileName))
File.Delete(FileName);
Stream outStream = System.IO.File.Create(FileName);
Stream inStream = response.GetResponseStream();
int l;
do
{
l = inStream.Read(buffer, 0, buffer.Length);
if (l > 0)
outStream.Write(buffer, 0, l);
}
while (l > 0);
outStream.Close();
inStream.Close();
}
catch
{
Value = false;
}
return Value;
}
public void Down(string url, string dtnow)
{
WebRequest wreq = WebRequest.Create(url);
HttpWebResponse wresp = (HttpWebResponse)wreq.GetResponse();
Stream s = wresp.GetResponseStream();
System.Drawing.Image img;
img = System.Drawing.Image.FromStream(s);
img.Save("D:\\" + dtnow, ImageFormat.Jpeg);
MemoryStream ms = new MemoryStream();
img.Save(ms, ImageFormat.Jpeg);
img.Dispose();
}
public static bool DoConnComputer(string ip, string folder, string strName, string strPsw)
{
try
{
return SchTaskExtAPI.ConnectOtherComputer.DoConnectOtherComputer(ip, folder, strName, strPsw);
}
catch (Exception ex)
{
throw ex;
}
}
}
}

BIN
SjMes/InjectionPC/北汽模塑.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

9
SjMes/InjectionPLC/App.config

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="SqlConnString" connectionString="Persist Security Info=true;Initial Catalog=BBMPT;Data Source=10.60.101.9;User ID=sa;Password=a1+"/>
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>
</configuration>

64
SjMes/InjectionPLC/Form1.Designer.cs

@ -0,0 +1,64 @@
namespace InjectionPLC
{
partial class Form1
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("宋体", 48F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.ForeColor = System.Drawing.Color.Red;
this.label1.Location = new System.Drawing.Point(22, 103);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(873, 64);
this.label1.TabIndex = 0;
this.label1.Text = "数据采集中,请勿关闭!!!";
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(919, 277);
this.Controls.Add(this.label1);
this.Name = "Form1";
this.Text = "数据采集";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
}
}

253
SjMes/InjectionPLC/Form1.cs

@ -0,0 +1,253 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using OPCAutomation;
using MESClassLibrary;
using MESClassLibrary.BLL.BasicInfo;
using MESClassLibrary.Model;
using MESClassLibrary.BLL.Log;
using MESClassLibrary.BLL.Injection;
using MESClassLibrary.DAL.Injection;
namespace InjectionPLC
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
#region 变量
private string strHostIP;
private string strHostName;
private OPCServer opcServer;
private OPCGroups opcGroups;
private OPCGroup opcGroup;
private OPCItems opcItems;
private OPCItem[] opcItemm;
private string[] ItemIDs;
object ItemValues;
object Qualities;
object TimeStamps;
public bool Connected = false;
#endregion
private void Form1_Load(object sender, EventArgs e)
{
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
CreateServer();
ConnectServer(strHostIP, "Kepware.KEPServerEX.V6");
Connected = true;
opcGroups = opcServer.OPCGroups;
opcGroup = opcGroups.Add("111");
SetGroupProperty(opcGroup, 500);
opcGroup.DataChange += new DIOPCGroupEvent_DataChangeEventHandler(opcGroup_DataChange);
opcItems = opcGroup.OPCItems;
opcItems.DefaultIsActive = true;
opcItemm = new OPCItem[6];
opcItems = opcGroup.OPCItems;
opcItemm[0] = opcItems.AddItem("IM.IM01.DI0", 0);
opcItemm[1] = opcItems.AddItem("IM.IM02.DI0", 1);
opcItemm[2] = opcItems.AddItem("IM.IM03.DI0", 2);
opcItemm[3] = opcItems.AddItem("IM.IM04.DI0", 3);
opcItemm[4] = opcItems.AddItem("IM.IM05.DI0", 4);
opcItemm[5] = opcItems.AddItem("IM.IM06.DI0", 5);
Thread.Sleep(200);
}
/// <summary>
/// 创建服务
/// </summary>
/// <returns></returns>
private bool CreateServer()
{
try
{
opcServer = new OPCServer();
}
catch
{
return false;
}
return true;
}
/// <summary>
/// 连接到服务器
/// </summary>
/// <param name="strHostIP"></param>
/// <param name="strHostName"></param>
/// <returns></returns>
private bool ConnectServer(string strHostIP, string strHostName)
{
try
{
opcServer.Connect(strHostName, strHostIP);
}
catch
{
return false;
}
return true;
}
/// <summary>
/// 设置组的属性
/// </summary>
/// <param name="opcGroup"></param>
/// <param name="updateRate"></param>
private void SetGroupProperty(OPCGroup opcGroup, int updateRate)
{
opcGroup.IsActive = true;
opcGroup.DeadBand = 0;
opcGroup.UpdateRate = updateRate;
opcGroup.IsSubscribed = true;
}
void opcGroup_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps)
{
InjectionDownRecordModel md=new InjectionDownRecordModel();
InjectionDownRecordBLL bll = new InjectionDownRecordBLL();
for (int i = 1; i <= NumItems; i++)
{
#region IM01
if (Convert.ToInt32(ClientHandles.GetValue(i).ToString().Trim()) == 0)
{
md.StationID = GetStationID("IM01");
if (ItemValues.GetValue(i).ToString() == "True")
{
md.ID = Guid.NewGuid().ToString();
md.StartTime = DateTime.Now;
bll.AddInfo(md);
}
else
{
md.EndTime = DateTime.Now;
bll.UpdateInfo(md);
}
}
#endregion
#region IM02
if (Convert.ToInt32(ClientHandles.GetValue(i).ToString().Trim()) == 1)
{
md.StationID = GetStationID("IM02");
if (ItemValues.GetValue(i).ToString() == "True")
{
md.ID = Guid.NewGuid().ToString();
md.StartTime = DateTime.Now;
bll.AddInfo(md);
}
else
{
md.EndTime = DateTime.Now;
bll.UpdateInfo(md);
}
}
#endregion
#region IM03
if (Convert.ToInt32(ClientHandles.GetValue(i).ToString().Trim()) == 2)
{
md.StationID = GetStationID("IM03");
if (ItemValues.GetValue(i).ToString() == "True")
{
md.ID = Guid.NewGuid().ToString();
md.StartTime = DateTime.Now;
bll.AddInfo(md);
}
else
{
md.EndTime = DateTime.Now;
bll.UpdateInfo(md);
}
}
#endregion
#region IM04
if (Convert.ToInt32(ClientHandles.GetValue(i).ToString().Trim()) == 3)
{
md.StationID = GetStationID("IM04");
if (ItemValues.GetValue(i).ToString() == "True")
{
md.ID = Guid.NewGuid().ToString();
md.StartTime = DateTime.Now;
bll.AddInfo(md);
}
else
{
md.EndTime = DateTime.Now;
bll.UpdateInfo(md);
}
}
#endregion
#region IM05
if (Convert.ToInt32(ClientHandles.GetValue(i).ToString().Trim()) == 4)
{
md.StationID = GetStationID("IM05");
if (ItemValues.GetValue(i).ToString() == "True")
{
md.ID = Guid.NewGuid().ToString();
md.StartTime = DateTime.Now;
bll.AddInfo(md);
}
else
{
md.EndTime = DateTime.Now;
bll.UpdateInfo(md);
}
}
#endregion
#region IM06
if (Convert.ToInt32(ClientHandles.GetValue(i).ToString().Trim()) == 5)
{
md.StationID = GetStationID("IM06");
if (ItemValues.GetValue(i).ToString() == "True")
{
md.ID = Guid.NewGuid().ToString();
md.StartTime = DateTime.Now;
bll.AddInfo(md);
}
else
{
md.EndTime = DateTime.Now;
bll.UpdateInfo(md);
}
}
#endregion
}
}
private string GetStationID(string stationNo)
{
string stationID = "";
StationBLL sbll = new StationBLL();
DataTable sdt = sbll.SearchInfoByNo(stationNo);
if (sdt != null && sdt.Rows.Count > 0)
{
stationID = sdt.Rows[0]["StationID"].ToString();
sdt.Dispose();
}
return stationID;
}
}
}

120
SjMes/InjectionPLC/Form1.resx

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

103
SjMes/InjectionPLC/InjectionPLC.csproj

@ -0,0 +1,103 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{47AFB38B-AF4D-4AB8-AD26-272F985A5851}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>InjectionPLC</RootNamespace>
<AssemblyName>InjectionPLC</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>x86</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Interop.OPCAutomation, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<EmbedInteropTypes>True</EmbedInteropTypes>
<HintPath>.\Interop.OPCAutomation.dll</HintPath>
</Reference>
<Reference Include="MESClassLibrary">
<HintPath>..\MESClassLibrary\bin\Debug\MESClassLibrary.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Content Include="Interop.OPCAutomation.dll" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

BIN
SjMes/InjectionPLC/Interop.OPCAutomation.dll

Binary file not shown.

22
SjMes/InjectionPLC/Program.cs

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace InjectionPLC
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}

36
SjMes/InjectionPLC/Properties/AssemblyInfo.cs

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("InjectionPLC")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("InjectionPLC")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("ff62846a-c75a-400b-8d03-02b854c890fc")]
// 程序集的版本信息由下面四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

63
SjMes/InjectionPLC/Properties/Resources.Designer.cs

@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace InjectionPLC.Properties {
using System;
/// <summary>
/// 一个强类型的资源类,用于查找本地化的字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// 返回此类使用的缓存的 ResourceManager 实例。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("InjectionPLC.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 使用此强类型资源类,为所有资源查找
/// 重写当前线程的 CurrentUICulture 属性。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

117
SjMes/InjectionPLC/Properties/Resources.resx

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

26
SjMes/InjectionPLC/Properties/Settings.Designer.cs

@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace InjectionPLC.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}

7
SjMes/InjectionPLC/Properties/Settings.settings

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

15
SjMes/InjectionSearch/App.config

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<!--<add name="SqlConnString" connectionString="Persist Security Info=true;Initial Catalog=BBMPT;Data Source=39.97.227.79;User ID=sa;Password=a1+"/>-->
<add name="SqlConnString" connectionString="Persist Security Info=true;Initial Catalog=BBMPT;Data Source=10.60.101.9;User ID=sa;Password=a1+"/>
<add name="report" connectionString="Provider=SQLOLEDB.1;Password=a1+;Persist Security Info=True;User ID=sa;Initial Catalog=BBMPT;Data Source=10.60.101.9;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=PC201904081405E;Use Encryption for Data=False;Tag with column collation when possible=False"/>
</connectionStrings>
<appSettings>
<add key="Station" value="P02"/>
<add key="StationID" value="2910283f-1052-42db-88fe-0c881d96c460"/>
</appSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>

145
SjMes/InjectionSearch/Form1.Designer.cs

@ -0,0 +1,145 @@
namespace InjectionSearch
{
partial class FrmLogin
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmLogin));
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.label2 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
//
// pictureBox1
//
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
this.pictureBox1.Location = new System.Drawing.Point(1, 0);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(704, 456);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
//
// label2
//
this.label2.AutoSize = true;
this.label2.BackColor = System.Drawing.Color.Transparent;
this.label2.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.Location = new System.Drawing.Point(224, 234);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(47, 19);
this.label2.TabIndex = 7;
this.label2.Text = "密码";
//
// textBox1
//
this.textBox1.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox1.Location = new System.Drawing.Point(304, 172);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(159, 29);
this.textBox1.TabIndex = 8;
//
// textBox2
//
this.textBox2.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.textBox2.Location = new System.Drawing.Point(304, 234);
this.textBox2.Name = "textBox2";
this.textBox2.PasswordChar = '*';
this.textBox2.Size = new System.Drawing.Size(159, 29);
this.textBox2.TabIndex = 9;
this.textBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox2_KeyDown);
//
// button1
//
this.button1.BackColor = System.Drawing.Color.LightSkyBlue;
this.button1.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.button1.Location = new System.Drawing.Point(239, 293);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(84, 38);
this.button1.TabIndex = 10;
this.button1.Text = "登陆";
this.button1.UseVisualStyleBackColor = false;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button2
//
this.button2.BackColor = System.Drawing.Color.LightSkyBlue;
this.button2.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.button2.Location = new System.Drawing.Point(395, 293);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(83, 38);
this.button2.TabIndex = 11;
this.button2.Text = "取消";
this.button2.UseVisualStyleBackColor = false;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("宋体", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(224, 181);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(66, 19);
this.label1.TabIndex = 6;
this.label1.Text = "用户名";
//
// FrmLogin
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(703, 453);
this.Controls.Add(this.label2);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.button1);
this.Controls.Add(this.button2);
this.Controls.Add(this.label1);
this.Controls.Add(this.pictureBox1);
this.Name = "FrmLogin";
this.Text = "登录";
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Label label1;
}
}

110
SjMes/InjectionSearch/Form1.cs

@ -0,0 +1,110 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Configuration;
using System.Data.SqlClient;
using MESClassLibrary.BLL.BasicInfo;
namespace InjectionSearch
{
public partial class FrmLogin : Form
{
public FrmLogin()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Login();
}
private void Login()
{
string stationID = "";
Program.station = ConfigurationManager.AppSettings["Station"].ToString();
Program.StationID = ConfigurationManager.AppSettings["StationID"].ToString();
OpenDb();
#region 判断输入合法性
if (textBox1.Text.Trim() == "")
{
MessageBox.Show("用户名不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
textBox1.Focus();
return;
}
if (textBox2.Text.Trim() == "")
{
MessageBox.Show("密码不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
textBox1.Focus();
return;
}
#endregion
StationBLL sbll = new StationBLL();
DataTable sdt = sbll.SearchInfoByNo(Program.station);
if (sdt != null && sdt.Rows.Count > 0)
{
stationID = sdt.Rows[0]["StationID"].ToString();
}
sdt.Dispose();
Program.OperatorName = textBox1.Text.Trim();
OperatorBLL bll = new OperatorBLL();
DataTable dt = bll.SearchInfoByNameAndPsw(textBox1.Text.Trim(), stationID, textBox2.Text.Trim());
if (dt != null && dt.Rows.Count > 0)
{
Form fr = new FrmBarCodeSearch();
fr.Show();
this.Hide();
}
else
{
}
}
private bool OpenDb()
{
bool OpenDb = false;
string value = ConfigurationManager.ConnectionStrings["SqlConnString"].ToString();
Program.DBConn = new SqlConnection(value);
if (Program.DBConn.State.ToString().ToUpper() == "OPEN") Program.DBConn.Close();
try
{
Program.DBConn.Open();
}
catch (Exception Err)
{
if (Err != null)
{
MessageBox.Show("数据库连接失败,请检查网络连接,并重新连接!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return OpenDb;
}
}
OpenDb = true;
return OpenDb;
}
private void textBox2_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
Login();
}
}
}
}

713
SjMes/InjectionSearch/Form1.resx

@ -0,0 +1,713 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
</root>

445
SjMes/InjectionSearch/FrmBarCodeSearch.Designer.cs

@ -0,0 +1,445 @@
namespace InjectionSearch
{
partial class FrmBarCodeSearch
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
GlacialComponents.Controls.GLColumn glColumn1 = new GlacialComponents.Controls.GLColumn();
GlacialComponents.Controls.GLColumn glColumn2 = new GlacialComponents.Controls.GLColumn();
GlacialComponents.Controls.GLColumn glColumn3 = new GlacialComponents.Controls.GLColumn();
GlacialComponents.Controls.GLColumn glColumn4 = new GlacialComponents.Controls.GLColumn();
GlacialComponents.Controls.GLColumn glColumn5 = new GlacialComponents.Controls.GLColumn();
GlacialComponents.Controls.GLColumn glColumn6 = new GlacialComponents.Controls.GLColumn();
this.label1 = new System.Windows.Forms.Label();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.label2 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
this.comboBox2 = new System.Windows.Forms.ComboBox();
this.label7 = new System.Windows.Forms.Label();
this.label16 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.textBox4 = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.textBox3 = new System.Windows.Forms.TextBox();
this.label19 = new System.Windows.Forms.Label();
this.label11 = new System.Windows.Forms.Label();
this.label10 = new System.Windows.Forms.Label();
this.label18 = new System.Windows.Forms.Label();
this.panel3 = new System.Windows.Forms.Panel();
this.button1 = new System.Windows.Forms.Button();
this.label6 = new System.Windows.Forms.Label();
this.textBox5 = new System.Windows.Forms.TextBox();
this.glacialList1 = new GlacialComponents.Controls.GlacialList();
this.panel1.SuspendLayout();
this.panel3.SuspendLayout();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold);
this.label1.Location = new System.Drawing.Point(90, 59);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(103, 29);
this.label1.TabIndex = 0;
this.label1.Text = "产品:";
//
// comboBox1
//
this.comboBox1.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold);
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Location = new System.Drawing.Point(222, 57);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(627, 37);
this.comboBox1.TabIndex = 1;
this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold);
this.label2.Location = new System.Drawing.Point(85, 109);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(133, 29);
this.label2.TabIndex = 2;
this.label2.Text = "零件号:";
//
// textBox1
//
this.textBox1.Enabled = false;
this.textBox1.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold);
this.textBox1.Location = new System.Drawing.Point(222, 101);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(239, 41);
this.textBox1.TabIndex = 3;
//
// textBox2
//
this.textBox2.Enabled = false;
this.textBox2.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold);
this.textBox2.Location = new System.Drawing.Point(222, 152);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(627, 41);
this.textBox2.TabIndex = 4;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold);
this.label3.Location = new System.Drawing.Point(90, 163);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(103, 29);
this.label3.TabIndex = 5;
this.label3.Text = "原料:";
//
// panel1
//
this.panel1.BackColor = System.Drawing.Color.Aquamarine;
this.panel1.Controls.Add(this.comboBox2);
this.panel1.Controls.Add(this.label7);
this.panel1.Controls.Add(this.label16);
this.panel1.Controls.Add(this.label5);
this.panel1.Controls.Add(this.textBox4);
this.panel1.Controls.Add(this.label4);
this.panel1.Controls.Add(this.textBox3);
this.panel1.Controls.Add(this.label1);
this.panel1.Controls.Add(this.label3);
this.panel1.Controls.Add(this.comboBox1);
this.panel1.Controls.Add(this.textBox2);
this.panel1.Controls.Add(this.label2);
this.panel1.Controls.Add(this.textBox1);
this.panel1.Location = new System.Drawing.Point(185, 541);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(936, 317);
this.panel1.TabIndex = 6;
//
// comboBox2
//
this.comboBox2.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold);
this.comboBox2.FormattingEnabled = true;
this.comboBox2.Location = new System.Drawing.Point(222, 8);
this.comboBox2.Name = "comboBox2";
this.comboBox2.Size = new System.Drawing.Size(206, 37);
this.comboBox2.TabIndex = 12;
//
// label7
//
this.label7.AutoSize = true;
this.label7.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold);
this.label7.Location = new System.Drawing.Point(90, 16);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(103, 29);
this.label7.TabIndex = 11;
this.label7.Text = "机台:";
//
// label16
//
this.label16.AutoSize = true;
this.label16.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label16.Location = new System.Drawing.Point(490, 210);
this.label16.Name = "label16";
this.label16.Size = new System.Drawing.Size(141, 29);
this.label16.TabIndex = 10;
this.label16.Text = "(yyMMdd)";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold);
this.label5.Location = new System.Drawing.Point(86, 259);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(103, 29);
this.label5.TabIndex = 8;
this.label5.Text = "数量:";
//
// textBox4
//
this.textBox4.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold);
this.textBox4.Location = new System.Drawing.Point(222, 259);
this.textBox4.Name = "textBox4";
this.textBox4.Size = new System.Drawing.Size(239, 41);
this.textBox4.TabIndex = 9;
this.textBox4.Text = "1000";
//
// label4
//
this.label4.AutoSize = true;
this.label4.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold);
this.label4.Location = new System.Drawing.Point(80, 219);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(133, 29);
this.label4.TabIndex = 6;
this.label4.Text = "批次号:";
//
// textBox3
//
this.textBox3.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold);
this.textBox3.Location = new System.Drawing.Point(222, 207);
this.textBox3.Name = "textBox3";
this.textBox3.Size = new System.Drawing.Size(239, 41);
this.textBox3.TabIndex = 7;
//
// label19
//
this.label19.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label19.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label19.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label19.Location = new System.Drawing.Point(1186, 541);
this.label19.Name = "label19";
this.label19.Size = new System.Drawing.Size(73, 317);
this.label19.TabIndex = 17;
this.label19.Text = "打印条码";
this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label19.Click += new System.EventHandler(this.label19_Click);
//
// label11
//
this.label11.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label11.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label11.Location = new System.Drawing.Point(2, 541);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(182, 317);
this.label11.TabIndex = 18;
this.label11.Text = "打印信息:";
this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label10
//
this.label10.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label10.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label10.Location = new System.Drawing.Point(2, 66);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(182, 475);
this.label10.TabIndex = 19;
this.label10.Text = "打印记录:";
this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label18
//
this.label18.BackColor = System.Drawing.Color.DeepSkyBlue;
this.label18.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.label18.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label18.Location = new System.Drawing.Point(1114, 541);
this.label18.Name = "label18";
this.label18.Size = new System.Drawing.Size(73, 317);
this.label18.TabIndex = 20;
this.label18.Text = "补打";
this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label18.Click += new System.EventHandler(this.label18_Click);
//
// panel3
//
this.panel3.BackColor = System.Drawing.SystemColors.Control;
this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel3.Controls.Add(this.button1);
this.panel3.Controls.Add(this.label6);
this.panel3.Controls.Add(this.textBox5);
this.panel3.Location = new System.Drawing.Point(2, 2);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(1250, 61);
this.panel3.TabIndex = 22;
//
// button1
//
this.button1.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold);
this.button1.Location = new System.Drawing.Point(1074, 10);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(95, 43);
this.button1.TabIndex = 6;
this.button1.Text = "查询";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// label6
//
this.label6.AutoSize = true;
this.label6.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold);
this.label6.Location = new System.Drawing.Point(477, 12);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(133, 29);
this.label6.TabIndex = 4;
this.label6.Text = "条码号:";
//
// textBox5
//
this.textBox5.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Bold);
this.textBox5.Location = new System.Drawing.Point(626, 9);
this.textBox5.Name = "textBox5";
this.textBox5.Size = new System.Drawing.Size(415, 41);
this.textBox5.TabIndex = 5;
//
// glacialList1
//
this.glacialList1.AllowColumnResize = true;
this.glacialList1.AllowMultiselect = false;
this.glacialList1.AlternateBackground = System.Drawing.Color.DarkGreen;
this.glacialList1.AlternatingColors = false;
this.glacialList1.AutoHeight = true;
this.glacialList1.BackColor = System.Drawing.SystemColors.ControlLightLight;
this.glacialList1.BackgroundStretchToFit = true;
glColumn1.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None;
glColumn1.CheckBoxes = false;
glColumn1.ImageIndex = -1;
glColumn1.Name = "Column1";
glColumn1.NumericSort = false;
glColumn1.Text = "条码";
glColumn1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
glColumn1.Width = 200;
glColumn2.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None;
glColumn2.CheckBoxes = false;
glColumn2.ImageIndex = -1;
glColumn2.Name = "Column2";
glColumn2.NumericSort = false;
glColumn2.Text = "产品名称";
glColumn2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
glColumn2.Width = 150;
glColumn3.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None;
glColumn3.CheckBoxes = false;
glColumn3.ImageIndex = -1;
glColumn3.Name = "Column3";
glColumn3.NumericSort = false;
glColumn3.Text = "打印方式";
glColumn3.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
glColumn3.Width = 80;
glColumn4.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None;
glColumn4.CheckBoxes = false;
glColumn4.ImageIndex = -1;
glColumn4.Name = "Column4";
glColumn4.NumericSort = false;
glColumn4.Text = "打印时间";
glColumn4.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
glColumn4.Width = 220;
glColumn5.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None;
glColumn5.CheckBoxes = false;
glColumn5.ImageIndex = -1;
glColumn5.Name = "Column2x";
glColumn5.NumericSort = false;
glColumn5.Text = "原料名称";
glColumn5.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
glColumn5.Width = 250;
glColumn6.ActivatedEmbeddedType = GlacialComponents.Controls.GLActivatedEmbeddedTypes.None;
glColumn6.CheckBoxes = false;
glColumn6.ImageIndex = -1;
glColumn6.Name = "Column3x";
glColumn6.NumericSort = false;
glColumn6.Text = "原料批次";
glColumn6.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
glColumn6.Width = 160;
this.glacialList1.Columns.AddRange(new GlacialComponents.Controls.GLColumn[] {
glColumn1,
glColumn2,
glColumn3,
glColumn4,
glColumn5,
glColumn6});
this.glacialList1.ControlStyle = GlacialComponents.Controls.GLControlStyles.Normal;
this.glacialList1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.glacialList1.FullRowSelect = true;
this.glacialList1.GridColor = System.Drawing.Color.DeepSkyBlue;
this.glacialList1.GridLines = GlacialComponents.Controls.GLGridLines.gridBoth;
this.glacialList1.GridLineStyle = GlacialComponents.Controls.GLGridLineStyles.gridSolid;
this.glacialList1.GridTypes = GlacialComponents.Controls.GLGridTypes.gridNormal;
this.glacialList1.HeaderHeight = 40;
this.glacialList1.HeaderVisible = true;
this.glacialList1.HeaderWordWrap = false;
this.glacialList1.HotColumnTracking = false;
this.glacialList1.HotItemTracking = false;
this.glacialList1.HotTrackingColor = System.Drawing.Color.LightGray;
this.glacialList1.HoverEvents = false;
this.glacialList1.HoverTime = 1;
this.glacialList1.ImageList = null;
this.glacialList1.ItemHeight = 21;
this.glacialList1.ItemWordWrap = false;
this.glacialList1.Location = new System.Drawing.Point(185, 65);
this.glacialList1.Name = "glacialList1";
this.glacialList1.Selectable = true;
this.glacialList1.SelectedTextColor = System.Drawing.Color.White;
this.glacialList1.SelectionColor = System.Drawing.Color.Lime;
this.glacialList1.ShowBorder = true;
this.glacialList1.ShowFocusRect = false;
this.glacialList1.Size = new System.Drawing.Size(1074, 473);
this.glacialList1.SortType = GlacialComponents.Controls.SortTypes.InsertionSort;
this.glacialList1.SuperFlatHeaderColor = System.Drawing.Color.White;
this.glacialList1.TabIndex = 23;
this.glacialList1.Text = "glacialList1";
//
// FrmBarCodeSearch
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1264, 861);
this.Controls.Add(this.glacialList1);
this.Controls.Add(this.panel3);
this.Controls.Add(this.label18);
this.Controls.Add(this.label10);
this.Controls.Add(this.label11);
this.Controls.Add(this.label19);
this.Controls.Add(this.panel1);
this.Name = "FrmBarCodeSearch";
this.Text = "条码信息";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmBarCodeSearch_FormClosing);
this.Load += new System.EventHandler(this.FrmBarCodeSearch_Load);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.panel3.ResumeLayout(false);
this.panel3.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox textBox4;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox textBox3;
private System.Windows.Forms.Label label16;
private System.Windows.Forms.Label label19;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.Label label18;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.TextBox textBox5;
private GlacialComponents.Controls.GlacialList glacialList1;
private System.Windows.Forms.ComboBox comboBox2;
private System.Windows.Forms.Label label7;
}
}

486
SjMes/InjectionSearch/FrmBarCodeSearch.cs

@ -0,0 +1,486 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using grproLib;
using MESClassLibrary.BLL.BasicInfo;
using MESClassLibrary.BLL.Log;
using MESClassLibrary.DAL;
using MESClassLibrary.Model;
using DataTable = System.Data.DataTable;
namespace InjectionSearch
{
public partial class FrmBarCodeSearch : Form
{
public FrmBarCodeSearch()
{
InitializeComponent();
}
private void initProduct()
{
comboBox1.Items.Clear();
ProductBLL bll = new ProductBLL();
DataTable dt = bll.SearchInfoAllByType("2000");
if (dt != null && dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
comboBox1.Items.Add(dt.Rows[i]["StockNo"].ToString() +"--"+dt.Rows[i]["ProductName"].ToString());
}
}
dt.Dispose();
}
private void initBarCode()
{
BarCodeBLL bll = new BarCodeBLL();
glacialList1.Items.Clear();
DataTable dt = bll.SearchBarCode();
if (dt != null && dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
glacialList1.Items.Add(i.ToString());
glacialList1.Items[i].SubItems[0].Text = dt.Rows[i]["BarCode"].ToString();
glacialList1.Items[i].SubItems[1].Text = dt.Rows[i]["ProductName"].ToString();
glacialList1.Items[i].SubItems[2].Text = dt.Rows[i]["PrintType"].ToString();
glacialList1.Items[i].SubItems[3].Text = dt.Rows[i]["PrintTime"].ToString() == "" ? "" : Convert.ToDateTime(dt.Rows[i]["PrintTime"].ToString()).ToString("yyyy-MM-dd HH:mm:ss.fff");
glacialList1.Items[i].SubItems[4].Text = dt.Rows[i]["MaterialName"].ToString();
glacialList1.Items[i].SubItems[5].Text = dt.Rows[i]["BatchNo"].ToString();
}
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string stockNo = comboBox1.Text.Substring(0, 10);
ProductBLL bll=new ProductBLL();
BomBLL bombll=new BomBLL();
DataTable dt = bll.SearchInfoByStock(stockNo);
if (dt != null && dt.Rows.Count > 0)
{
textBox1.Text = dt.Rows[0]["PartNo"].ToString();
dt.Dispose();
}
else
{
textBox1.Text = "";
}
DataTable dt1 = bombll.SearchBom(textBox1.Text);
if (dt1 != null && dt1.Rows.Count > 0)
{
textBox2.Text = dt1.Rows[0]["PartNo2"].ToString();
dt.Dispose();
}
else
{
textBox2.Text = "";
}
}
private void FrmBarCodeSearch_Load(object sender, EventArgs e)
{
initProduct();
initBarCode();
comboBox2.Items.Clear();
comboBox2.Items.Add("IM01");
comboBox2.Items.Add("IM02");
comboBox2.Items.Add("IM03");
comboBox2.Items.Add("IM04");
comboBox2.Items.Add("IM05");
comboBox2.Items.Add("IM06");
}
private void label18_Click(object sender, EventArgs e)
{
string code = "";
BarCodeModel md = new BarCodeModel();
BarCodeBLL bll = new BarCodeBLL();
ProductBLL pbll=new ProductBLL();
try
{
if (glacialList1.SelectedItems.Count == 0)
{
MessageBox.Show("请选择要补打的条码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
else
{
GlacialComponents.Controls.GLItem gv;
gv = glacialList1.SelectedItems[0] as GlacialComponents.Controls.GLItem;
code = gv.Text;
DataTable dt = bll.SearchInfoByBarCode(code);
if (dt != null && dt.Rows.Count > 0)
{
md.ID = Guid.NewGuid().ToString();
md.BarCode = code;
md.StationID = Program.StationID;
md.StockNo = dt.Rows[0]["StockNo"].ToString();
md.OneBarCode = dt.Rows[0]["OneBarCode"].ToString();
md.StationID2 = dt.Rows[0]["StationID"].ToString();
md.PrintType = 2;
DataTable pdt = pbll.SearchIsImportByStockNo(md.StockNo);
if (pdt != null && pdt.Rows.Count > 0)
{
if (pdt.Rows[0]["isImport"].ToString() == "1")
{
md.Import = "国产料Kingfa";
}
else
{
md.Import = "";
}
}
//if (md.StockNo == "2200000064" || md.StockNo == "2200000093" || md.StockNo == "2200000096" ||
// md.StockNo == "2200000052")
//{
// md.Import = "国产料Kingfa";
//}
//else
//{
// md.Import = "";
//}
}
dt.Dispose();
bll.Add_Info(md);
#region 打印条码
GridppReport report = new GridppReport();
report.Register("");
report.LoadFromFile(@"D:\P02 - 副本.grf");
report.ConnectionString = ConfigurationManager.ConnectionStrings["report"].ToString();
//report.PrintPreview(true);
report.Print(false);
#endregion
bll.Update_Info(md);
initBarCode();
}
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
}
}
public DateTime GetDateTime()
{
string sql = "";
DateTime time;
DataTable dt;
try
{
sql = @"select getdate() as time";
dt = SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null).Tables[0];
if (dt != null && dt.Rows.Count > 0)
{
time = Convert.ToDateTime(dt.Rows[0]["time"].ToString());
}
else
{
time = DateTime.Now;
}
return time;
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return DateTime.Now;
}
}
private static bool IsNumeric(string str)
{
System.Text.RegularExpressions.Regex reg1 = new System.Text.RegularExpressions.Regex(@"^[0-9]\d*$");
return reg1.IsMatch(str);
}
private void label19_Click(object sender, EventArgs e)
{
string code = "", stationID = "", OneCode = "";
string newcode = "", partNo = "", stockNo = "", NewOneCode = "";
try
{
#region 数据合法性判断
if (comboBox2.Text.Trim() == "")
{
MessageBox.Show("请选择机台!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (comboBox1.Text.Trim() == "")
{
MessageBox.Show("请选择产品!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (textBox3.Text.Trim() == "")
{
MessageBox.Show("请输入批次!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (textBox4.Text.Trim() == "")
{
MessageBox.Show("请输入数量!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (!IsNumeric(textBox4.Text.Trim()))
{
MessageBox.Show("数量格式不正确!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (Convert.ToInt32(textBox4.Text.Trim()) > 1000)
{
MessageBox.Show("数量不能大于1000!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
#endregion
#region 获取工位编号
StationBLL sbll = new StationBLL();
DataTable sdt = sbll.SearchInfoByNo(comboBox2.Text.Trim());
if (sdt != null && sdt.Rows.Count > 0)
{
stationID = sdt.Rows[0]["StationID"].ToString();
}
sdt.Dispose();
#endregion
DialogResult result = MessageBox.Show("确定手工打印条码?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
if (result == DialogResult.OK)
{
#region 生成条码
ProductBLL pbll = new ProductBLL();
//查询零件号
stockNo = comboBox1.Text.Substring(0, 10);
partNo = textBox1.Text.Trim();
//根据零件号、批次号查找
BarCodeBLL bll = new BarCodeBLL();
BarCodeModel md = new BarCodeModel();
//DataTable dt = bll.SearchSerialNoByBarCode(partNo + "." + textBox3.Text.Trim());
//DataTable dt = bll.SearchInfoByStock(stockNo);
DataTable dt = bll.SearchSerialNoByBarCode(stockNo, textBox3.Text.Trim());
if (dt != null && dt.Rows.Count > 0)
{
OneCode = dt.Rows[0]["OneBarCode"].ToString().Trim();
code = dt.Rows[0]["BarCode"].ToString().TrimEnd();
for (int i = 1; i <= Convert.ToInt32(textBox4.Text.Trim()); i++)
{
newcode = code.Substring(0, code.Length - 4) +
(Convert.ToInt32(code.Substring(code.Length - 4, 4)) + i)
.ToString()
.PadLeft(4, '0');
NewOneCode = OneCode.Substring(0, OneCode.Length - 4) +
(Convert.ToInt32(OneCode.Substring(OneCode.Length - 4, 4)) + i).ToString()
.PadLeft(4, '0');
string[] part = newcode.Split('.');
//存入tb_BarCode表
md.ID = Guid.NewGuid().ToString();
md.StationID = Program.StationID;
md.StationID2 = stationID;
md.OneBarCode = NewOneCode;
md.BarCode = newcode;
md.BatchNo= textBox3.Text.Trim();
md.StockNo = stockNo;
md.PrintType = 1;
DataTable pdt = pbll.SearchIsImportByStockNo(stockNo);
if (pdt != null && pdt.Rows.Count > 0)
{
if (pdt.Rows[0]["isImport"].ToString() == "1")
{
md.Import = "国产料Kingfa";
}
else
{
md.Import = "";
}
}
//if (NewOneCode.Substring(0, 10) == "2200000064" ||
// NewOneCode.Substring(0, 10) == "2200000093" ||
// NewOneCode.Substring(0, 10) == "2200000096" ||
// NewOneCode.Substring(0, 10) == "2200000084" ||
// NewOneCode.Substring(0, 10) == "2200000090" ||
// NewOneCode.Substring(0, 10) == "2200000052")
//{
// md.Import = "国产料Kingfa";
//}
//else
//{
// md.Import = "";
//}
if (bll.Add_Info(md))
{
#region 打印条码
GridppReport report = new GridppReport();
report.Register("");
//report.LoadFromFile(@"D:\P02.grf");
report.LoadFromFile(@"D:\P02 - 副本.grf");
report.ConnectionString = ConfigurationManager.ConnectionStrings["report"].ToString();
//report.PrintPreview(true);
report.Print(false);
#endregion
bll.Update_Info(md);
}
}
}
else
{
for (int i = 1; i <= Convert.ToInt32(textBox4.Text.Trim()); i++)
{
newcode = partNo + "." + textBox3.Text.Trim() + "." + i.ToString().PadLeft(4, '0');
NewOneCode = stockNo + textBox3.Text.Trim() + i.ToString().PadLeft(4, '0');
string[] part = newcode.Split('.');
//存入tb_BarCode表
md.ID = Guid.NewGuid().ToString();
md.StationID = Program.StationID;
md.StationID2 = stationID;
md.StockNo = stockNo;
md.OneBarCode = NewOneCode;
md.BarCode = newcode;
md.PrintType = 1;
md.BatchNo = textBox3.Text.Trim();
DataTable pdt = pbll.SearchIsImportByStockNo(stockNo);
if (pdt != null && pdt.Rows.Count > 0)
{
if (pdt.Rows[0]["isImport"].ToString() == "1")
{
md.Import = "国产料Kingfa";
}
else
{
md.Import = "";
}
}
bll.Add_Info(md);
#region 打印条码
GridppReport report = new GridppReport();
report.Register("");
//report.LoadFromFile(@"D:\P02.grf");
report.LoadFromFile(@"D:\P02 - 副本.grf");
report.ConnectionString = ConfigurationManager.ConnectionStrings["report"].ToString();
//report.PrintPreview(true);
report.Print(false);
#endregion
bll.Update_Info(md);
}
}
#endregion
initBarCode();
}
else
{
return;
}
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
}
}
private void button1_Click(object sender, EventArgs e)
{
BarCodeBLL bll = new BarCodeBLL();
DataTable dt = null;
try
{
glacialList1.Items.Clear();
if (textBox5.Text.Trim() == "")
{
dt = bll.SearchBarCode();
}
else
{
if (textBox5.Text.Trim().Length == 20)
{
dt = bll.SearchBarCodeByOne(textBox5.Text.Trim());
}
else
{
dt = bll.SearchBarCodeByTwo(textBox5.Text.Trim());
}
}
if (dt != null && dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
glacialList1.Items.Add(i.ToString());
glacialList1.Items[i].SubItems[0].Text = dt.Rows[i]["BarCode"].ToString();
glacialList1.Items[i].SubItems[1].Text = dt.Rows[i]["ProductName"].ToString();
glacialList1.Items[i].SubItems[2].Text = dt.Rows[i]["PrintType"].ToString();
glacialList1.Items[i].SubItems[3].Text = dt.Rows[i]["PrintTime"].ToString() == "" ? "" : Convert.ToDateTime(dt.Rows[i]["PrintTime"].ToString()).ToString("yyyy-MM-dd HH:mm:ss.fff");
glacialList1.Items[i].SubItems[4].Text = dt.Rows[i]["MaterialName"].ToString();
glacialList1.Items[i].SubItems[5].Text = dt.Rows[i]["BatchNo"].ToString();
}
}
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
}
}
private void FrmBarCodeSearch_FormClosing(object sender, FormClosingEventArgs e)
{
Application.Exit();
}
}
}

120
SjMes/InjectionSearch/FrmBarCodeSearch.resx

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

BIN
SjMes/InjectionSearch/GlacialList.dll

Binary file not shown.

159
SjMes/InjectionSearch/InjectionSearch.csproj

@ -0,0 +1,159 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{558CD727-2A5C-434E-A113-EA2D5D62F430}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>InjectionSearch</RootNamespace>
<AssemblyName>InjectionSearch</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="GlacialList, Version=1.0.1513.31776, Culture=neutral">
<SpecificVersion>False</SpecificVersion>
<HintPath>.\GlacialList.dll</HintPath>
</Reference>
<Reference Include="ICSharpCode.SharpZipLib">
<HintPath>..\packages\SharpZipLib.1.0.0\lib\net45\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
<Reference Include="NPOI">
<HintPath>..\packages\NPOI.2.4.1\lib\net45\NPOI.dll</HintPath>
</Reference>
<Reference Include="NPOI.OOXML">
<HintPath>..\packages\NPOI.2.4.1\lib\net45\NPOI.OOXML.dll</HintPath>
</Reference>
<Reference Include="NPOI.OpenXml4Net">
<HintPath>..\packages\NPOI.2.4.1\lib\net45\NPOI.OpenXml4Net.dll</HintPath>
</Reference>
<Reference Include="NPOI.OpenXmlFormats">
<HintPath>..\packages\NPOI.2.4.1\lib\net45\NPOI.OpenXmlFormats.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="FrmBarCodeSearch.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmBarCodeSearch.Designer.cs">
<DependentUpon>FrmBarCodeSearch.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmBarCodeSearch.resx">
<DependentUpon>FrmBarCodeSearch.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config">
<SubType>Designer</SubType>
</None>
</ItemGroup>
<ItemGroup>
<Content Include="GlacialList.dll" />
<Content Include="北汽模塑.png" />
</ItemGroup>
<ItemGroup>
<COMReference Include="grdesLib">
<Guid>{0CDAC26E-8F92-47EE-9E2E-844DBF78703A}</Guid>
<VersionMajor>5</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
<COMReference Include="grproLib">
<Guid>{715CBE0F-4F50-46EF-B009-CACED3A5C868}</Guid>
<VersionMajor>5</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
<COMReference Include="stdole">
<Guid>{00020430-0000-0000-C000-000000000046}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MESClassLibrary\MESClassLibrary.csproj">
<Project>{867989d8-6837-41dc-9bf1-4658f5d6cfef}</Project>
<Name>MESClassLibrary</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

43
SjMes/InjectionSearch/Program.cs

@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace InjectionSearch
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
public static SqlConnection DBConn; //数据库连接串
public static string station;
public static string StationID;
public static string OperatorName;
public static string IP;
public static string Shift; //班次
public static string ProductDate;
[STAThread]
static void Main()
{
bool isRuned;
System.Threading.Mutex mutex = new System.Threading.Mutex(true, "OnlyRunOneInstance", out isRuned);
if (isRuned)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FrmLogin());
mutex.ReleaseMutex();
}
else
{
MessageBox.Show("程序已启动!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}

36
SjMes/InjectionSearch/Properties/AssemblyInfo.cs

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("InjectionSearch")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("InjectionSearch")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("c52495a5-34ac-405e-9a07-348f246bdb20")]
// 程序集的版本信息由下面四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.1")]
[assembly: AssemblyFileVersion("1.0.0.1")]

71
SjMes/InjectionSearch/Properties/Resources.Designer.cs

@ -0,0 +1,71 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本: 4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace InjectionSearch.Properties
{
/// <summary>
/// 一个强类型的资源类,用于查找本地化的字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// 返回此类使用的、缓存的 ResourceManager 实例。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("InjectionSearch.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 为所有资源查找重写当前线程的 CurrentUICulture 属性,
/// 方法是使用此强类型资源类。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}

117
SjMes/InjectionSearch/Properties/Resources.resx

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

30
SjMes/InjectionSearch/Properties/Settings.Designer.cs

@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace InjectionSearch.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}

7
SjMes/InjectionSearch/Properties/Settings.settings

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

BIN
SjMes/InjectionSearch/北汽模塑.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

20
SjMes/MESClassLibrary/App.config

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb"/>
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
</providers>
</entityFramework>
<connectionStrings>
<add name="BBMPTEntities" connectionString="metadata=res://*/EFModel.BBMPT.csdl|res://*/EFModel.BBMPT.ssdl|res://*/EFModel.BBMPT.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=10.60.101.9;initial catalog=BBMPT;user id=sa;password=a1+;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient"/>
</connectionStrings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

42
SjMes/MESClassLibrary/BLL/Andon/AndonButtonRecordBLL.cs

@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using MESClassLibrary.BLL.Log;
using MESClassLibrary.DAL.Andon;
using MESClassLibrary.Model;
namespace MESClassLibrary.BLL.Andon
{
public class AndonButtonRecordBLL
{
AndonButtonRecordDAL da=new AndonButtonRecordDAL();
public bool InsertInfo(AndonRecordModel md)
{
try
{
return da.InsertInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
public bool UpdateInfo(AndonRecordModel md)
{
try
{
return da.UpdateInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
}
}

31
SjMes/MESClassLibrary/BLL/Andon/AndonButtonTypeBLL.cs

@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Reflection;
using System.Text;
using MESClassLibrary.BLL.Log;
using MESClassLibrary.DAL;
using MESClassLibrary.DAL.Andon;
namespace MESClassLibrary.BLL.Andon
{
public class AndonButtonTypeBLL
{
public DataTable SearchInfoByName(string buttonName)
{
try
{
AndonButtonTypeDAL da = new AndonButtonTypeDAL();
return da.SearchInfoByName(buttonName);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
}
}

178
SjMes/MESClassLibrary/BLL/BasicBLL.cs

@ -0,0 +1,178 @@
using MESClassLibrary.BLL.Log;
using MESClassLibrary.DAL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace MESClassLibrary.BLL
{
public class BasicBLL<T> where T : class, new()
{
BaseDAL<T> db = new BaseDAL<T>();
/// 新增信息
public bool AddInfo(T md)
{
try
{
if (db.Add(md) > 0)
{
return true;
}
return false;
}
catch (Exception ex)
{
//LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// 修改信息
public bool UpdateInfo(T md, params string[] proNames)
{
try
{
//T u = new T() { uId = 1, uLoginName = "asdfasdf" };
if (db.Modify(md, proNames) > 0)
{
return true;
}
return false;
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// 删除信息
public bool DelInfo(T md)
{
try
{
if (db.Del(md) > 0)
{
return true;
}
return false;
}
catch (Exception ex)
{
//LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
public List<T> SearchInfo(int page, int pagesize, out int total)
{
try
{
var list = db.GetListBy(LambdaHelper.CreateEqual<T>("IsUseing", 1)).ToList();
total = list.Count;
int Skipcount = (page - 1) * pagesize;
return list.Skip(Skipcount).Take(pagesize).ToList();
}
catch (Exception ex)
{
total = 0;
//LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public List<T> SearchInfoByKey(string keyname, object keyvalue)
{
try
{
var list = db.GetListBy(LambdaHelper.CreateEqual<T>(keyname, keyvalue)).ToList();
return list;
}
catch (Exception)
{
return new List<T>();
//return null;
}
}
public List<T> SearchInfoContains(string keyname, string keyvalue)
{
try
{
var list = db.GetListBy(LambdaHelper.GetContains<T>(keyname, keyvalue)).ToList();
return list;
}
catch (Exception)
{
return new List<T>();
//return null;
}
}
public List<T> SearchInfoAll(int page, int pagesize, out int total)
{
try
{
var list = db.GetListBy(LambdaHelper.True<T>()).ToList();
total = list.Count;
int Skipcount = (page - 1) * pagesize;
return list.Skip(Skipcount).Take(pagesize).ToList();
}
catch (Exception ex)
{
total = 0;
//LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public T SearchInfoByID(string ID)
{
try
{
var list = db.Find(ID);
return list;
}
catch (Exception ex)
{
return null;
}
}
public List<T> SearchAllInfo()
{
try
{
return db.GetListBy(LambdaHelper.True<T>()).ToList();
}
catch (Exception ex)
{
//LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public List<T> SearchInfoByTime(string cname, DateTime stime, DateTime etime)
{
try
{
IQueryable<T> list = db.GetListBy(LambdaHelper.CreateCompareToLater<T>(cname, stime)).AsQueryable();
list = list.Where(LambdaHelper.CreateCompareToEarlier<T>(cname, etime));
return list.ToList();
}
catch (Exception)
{
return new List<T>();
//return null;
}
}
}
}

44
SjMes/MESClassLibrary/BLL/BasicInfo/BadInjectionBLL.cs

@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using MESClassLibrary.BLL.Log;
using MESClassLibrary.DAL.BasicInfo;
using MESClassLibrary.Model;
namespace MESClassLibrary.BLL.BasicInfo
{
public class BadInjectionBLL
{
BadInjectionDAL db=new BadInjectionDAL();
public bool Add_Info(BadInjectionModel md)
{
try
{
return db.AddInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
public DataTable SearchByCode(string code)
{
try
{
return db.SearchByCode(code);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
}
}

174
SjMes/MESClassLibrary/BLL/BasicInfo/BarCodeBLL.cs

@ -0,0 +1,174 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using MESClassLibrary.BLL.Log;
using MESClassLibrary.DAL.BasicInfo;
using MESClassLibrary.Model;
namespace MESClassLibrary.BLL.BasicInfo
{
public class BarCodeBLL
{
BarCodeDAl db = new BarCodeDAl();
public DataTable SearchInfoByStock(string StockNo)
{
try
{
return db.SearchInfoByStock(StockNo);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
throw ex;
}
}
public bool Add_Info(BarCodeModel md)
{
try
{
return db.AddInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
public DataTable SearchInfo(string stationNo)
{
try
{
return db.SearchInfo(stationNo);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public DataTable SearchInfoAll()
{
try
{
return db.SearchInfoAll();
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public DataTable SearchBarCode()
{
try
{
return db.SearchBarCode();
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public DataTable SearchBarCodeByOne(string OneBarCode)
{
try
{
return db.SearchBarCodeByOne(OneBarCode);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public DataTable SearchBarCodeByTwo(string BarCode)
{
try
{
return db.SearchBarCodeByTwo(BarCode);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public DataTable SearchSerialNoByBarCode(string stockNo,string batchNo)
{
try
{
return db.SearchSerialNoByBarCode(stockNo, batchNo);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public DataTable SearchInfoByBarCode(string BarCode)
{
try
{
return db.SearchInfoByBarCode(BarCode);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public bool Update_Info(BarCodeModel md)
{
try
{
return db.UpdateInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
public bool DelBarCode(BarCodeModel md)
{
try
{
return db.DelBarCode(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
public DataTable SearchOneBarCode(string barCode,int a)
{
try
{
return db.SearchOneBarCode(barCode,a);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
}
}

271
SjMes/MESClassLibrary/BLL/BasicInfo/BomBLL.cs

@ -0,0 +1,271 @@
using MESClassLibrary.BLL.Log;
using MESClassLibrary.EFModel;
using MESClassLibrary.Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using MESClassLibrary.DAL.BasicInfo;
namespace MESClassLibrary.BLL.BasicInfo
{
public class BomBLL
{
BasicBLL<tb_Bom> db = new BasicBLL<tb_Bom>();
/// <summary>
/// 新增信息
/// </summary>
/// <param name="md"></param>
/// <returns></returns>
public bool AddInfo(tb_Bom md)
{
try
{
var list = db.SearchInfoByKey("PartNo1", md.PartNo1);//判断是否有重复数据
if (list != null)
{
if (list.Where(p => p.BomID != md.BomID).Count() > 0)
{
return false;
}
}
return db.AddInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 修改信息
/// </summary>
/// <param name="md"></param>
/// <returns></returns>
public bool UpdateInfo(tb_Bom md)
{
try
{
var list = db.SearchAllInfo().Where(p => p.PartNo1 == md.PartNo1 && p.BomID != md.BomID).ToList();//判断是否有重复数据
if (list.Count > 0)
{
return false;
}
//初始化要更新的字段
string[] proNames = new string[2];
proNames[0] = "PartNo1";
proNames[1] = "PartNo2";
//必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
//如果没有初始化必填字段,更新会报错
return db.UpdateInfo(md, proNames);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 删除信息
/// </summary>
/// <param name="md"></param>
/// <param name="flag"></param>
/// <returns></returns>
public bool DeleteInfo(tb_Bom md)
{
try
{
return db.DelInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 查询全部信息分页
/// </summary>
/// <returns></returns>
public string SearchInfoAll(string page, string pagesize, string partNo1)
{
try
{
string jsonStr = "[]";
int total = 0;//总行数
List<tb_Bom> list = db.SearchAllInfo();
if (!String.IsNullOrEmpty(partNo1))
{
list = list.Where(p => p.PartNo1.Contains(partNo1)).ToList();
}
if (list.Count > 0)
{
total = list.Count;
int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
List<BomModel> modelList = new List<BomModel>();
BasicBLL<tb_Product> s_db = new BasicBLL<tb_Product>();
var s_list = s_db.SearchAllInfo();
foreach (var item in list)
{
BomModel dm = Tool.Mapper<BomModel, tb_Bom>(item);
var info = s_list.FirstOrDefault(p => p.PartNo == item.PartNo1);
if (info != null)
{
dm.ProductName1 = info.ProductName;
}
var info2 = s_list.FirstOrDefault(p => p.PartNo == item.PartNo2);
if (info2 != null)
{
dm.ProductName2 = info2.ProductName;
}
modelList.Add(dm);
}
JsonDataModel<BomModel> md = new JsonDataModel<BomModel>();
md.total = total.ToString();
md.rows = modelList;
jsonStr = JSONTools.ScriptSerialize<JsonDataModel<BomModel>>(md);
}
return jsonStr;
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
/// <summary>
/// 查询全部信息
/// </summary>
/// <returns></returns>
public List<tb_Bom> SearchAll()
{
try
{
var s_list = db.SearchAllInfo().ToList();
return s_list;
}
catch (Exception)
{
return null;
}
}
/// <summary>
/// 根据ID查询信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public tb_Bom SearchInfoByID(string id)
{
try
{
return db.SearchInfoByID(id);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public DataTable SearchBom(string PartNo)
{
BomDAL dal=new BomDAL();
try
{
return dal.SearchBom(PartNo);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public DataTable Search(string partNo1, string partNo2)
{
BomDAL dal = new BomDAL();
try
{
return dal.Search(partNo1, partNo2);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public bool AddInfo(BomModel md)
{
BomDAL dal = new BomDAL();
try
{
return dal.AddInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
public bool updateInfo(BomModel md)
{
BomDAL dal = new BomDAL();
try
{
return dal.updateInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
public bool DelInfo(BomModel md)
{
BomDAL dal = new BomDAL();
try
{
return dal.DelInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
}
}

184
SjMes/MESClassLibrary/BLL/BasicInfo/BucketInfoBLL.cs

@ -0,0 +1,184 @@
using MESClassLibrary.BLL.Log;
using MESClassLibrary.EFModel;
using MESClassLibrary.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace MESClassLibrary.BLL.BasicInfo
{
public class BucketInfoBLL
{
BasicBLL<tb_BucketInfo> db = new BasicBLL<tb_BucketInfo>();
/// <summary>
/// 新增信息
/// </summary>
/// <param name="md"></param>
/// <returns></returns>
public bool AddInfo(tb_BucketInfo md)
{
try
{
var list = db.SearchInfoByKey("BucketCode", md.BucketCode);//判断是否有重复数据
if (list != null)
{
if (list.Where(p => p.ID != md.ID && p.IsUsing == 1).Count() > 0)
{
return false;
}
}
return db.AddInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 修改信息
/// </summary>
/// <param name="md"></param>
/// <returns></returns>
public bool UpdateInfo(tb_BucketInfo md)
{
try
{
var list = db.SearchAllInfo().Where(p => p.BucketCode == md.BucketCode && p.ID != md.ID && p.IsUsing == 1).ToList();//判断是否有重复数据
if (list.Count > 0)
{
return false;
}
//初始化要更新的字段
string[] proNames = new string[3];
proNames[0] = "BucketCode";
proNames[1] = "BucketName";
proNames[2] = "IsUsing";
//必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
//如果没有初始化必填字段,更新会报错
//md.Des = "";
return db.UpdateInfo(md, proNames);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 删除信息
/// </summary>
/// <param name="md"></param>
/// <param name="flag"></param>
/// <returns></returns>
public bool DeleteInfo(tb_BucketInfo md)
{
try
{
return db.DelInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 查询全部信息分页
/// </summary>
/// <returns></returns>
public string SearchInfoAll(string page, string pagesize, string BucketCode)
{
try
{
string jsonStr = "[]";
int total = 0;//总行数
List<tb_BucketInfo> list = db.SearchAllInfo();
if (!String.IsNullOrEmpty(BucketCode))
{
list = list.Where(p => p.BucketCode.Contains(BucketCode)).ToList();
}
total = list.Count;
int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
JsonDataModel<tb_BucketInfo> md = new JsonDataModel<tb_BucketInfo>();
md.total = total.ToString();
md.rows = list;
return JSONTools.ScriptSerialize(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
/// <summary>
/// 根据ID查询信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public tb_BucketInfo SearchInfoByID(string id)
{
try
{
return db.SearchInfoByID(id);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public string GetComboboxData()
{
try
{
string jsonStr = "[]";
var list = db.SearchAllInfo().ToList();//判断是否有重复数据
List<SelectModel> sl = new List<SelectModel>();
foreach (var item in list)
{
SelectModel md = new SelectModel();
md.textField = item.BucketCode+"--"+ item.BucketName;
md.valueField = item.ID;
sl.Add(md);
}
jsonStr = JSONTools.ScriptSerialize(sl);
return jsonStr;
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return "";
}
}
}
}

198
SjMes/MESClassLibrary/BLL/BasicInfo/CheckItemBLL.cs

@ -0,0 +1,198 @@
using MESClassLibrary.BLL.Log;
using MESClassLibrary.EFModel;
using MESClassLibrary.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace MESClassLibrary.BLL.BasicInfo
{
public class CheckItemBLL
{
BasicBLL<tb_CheckItem> db = new BasicBLL<tb_CheckItem>();
/// <summary>
/// 查询信息
/// </summary>
/// <returns></returns>
public string SearchInfo(string page, string pagesize, string CheckContent, string DeviceID)
{
try
{
string jsonStr = "[]";
int total = 0;//总行数
List<tb_CheckItem> list = db.SearchAllInfo();
if (!String.IsNullOrEmpty(DeviceID))
{
list = list.Where(p => p.DeviceID == DeviceID).ToList();
}
if (!String.IsNullOrEmpty(CheckContent))
{
list = list.Where(p => p.CheckContent.Contains(CheckContent)).ToList();
}
if (list.Count > 0)
{
total = list.Count;
int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
#region 联查
List<CheckItemModel> ModelList = new List<CheckItemModel>();
BasicBLL<tb_Device> p_db = new BasicBLL<tb_Device>();
var p_list = p_db.SearchAllInfo().ToList();
foreach (var item in list)
{
CheckItemModel dm = Tool.Mapper<CheckItemModel, tb_CheckItem>(item);
var info = p_list.FirstOrDefault(p => p.DeviceID == item.DeviceID);
if (info != null)
{
dm.DeviceName = info.DeviceName;
}
ModelList.Add(dm);
}
#endregion
JsonDataModel<CheckItemModel> md = new JsonDataModel<CheckItemModel>();
md.total = total.ToString();
md.rows = ModelList;
jsonStr = JSONTools.ScriptSerialize<JsonDataModel<CheckItemModel>>(md);
}
return jsonStr;
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return "";
}
}
/// <summary>
/// 添加信息
/// </summary>
/// <param name="md">生产线模型对象</param>
/// <returns></returns>
public bool AddInfo(tb_CheckItem md)
{
try
{
var list = db.SearchInfoByKey("CheckContent", md.CheckContent);//判断是否有重复数据
if (list != null)
{
if (list.Where(p => p.DeviceID.Equals(md.DeviceID)).Count() > 0)
{
return false;
}
}
return db.AddInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 修改信息
/// </summary>
/// <param name="md">生产线模型对象</param>
/// <returns></returns>
public bool UpdateInfo(tb_CheckItem md)
{
try
{
var list = db.SearchAllInfo().Where(p => p.CheckContent == md.CheckContent && p.DeviceID == md.DeviceID && p.ID != md.ID).ToList();//判断是否有重复数据
if (list.Count > 0)
{
return false;
}
//初始化要更新的字段
string[] proNames = new string[3];
proNames[0] = "DeviceID";
proNames[1] = "CheckContent";
proNames[2] = "CheckVersion";
//必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
//如果没有初始化必填字段,更新会报错
//md.Des = "";
return db.UpdateInfo(md, proNames);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// 删除生产线信息
public bool DelInfo(tb_CheckItem md)
{
try
{
return db.DelInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
public string GetComboboxData()
{
try
{
string jsonStr = "[]";
var list = db.SearchAllInfo().ToList();//判断是否有重复数据
jsonStr = JSONTools.ScriptSerialize<List<tb_CheckItem>>(list);
return jsonStr;
}
catch (Exception)
{
return "";
}
}
public string GetTreeData(string deviceID)
{
try
{
string jsonStr = "[]";
BasicBLL<tb_CheckItem> li_db = new BasicBLL<tb_CheckItem>();
List<TreeModel> trlist = new List<TreeModel>();
TreeModel tr = new TreeModel();
tr.id = "-1";
tr.text = "点检项";
tr.state = "open";
var li_list = li_db.SearchAllInfo().Where(p => p.DeviceID.Equals(deviceID)).ToList();
var queryData = from a in li_list
select new ChildTreeModel
{
id = a.ID,
text = a.CheckContent
};
List<ChildTreeModel> clist = queryData.ToList();
if (clist.Count > 0)
{
tr.children = clist;
trlist.Add(tr);
}
jsonStr = JSONTools.ScriptSerialize<List<TreeModel>>(trlist);
return jsonStr;
}
catch (Exception)
{
return "";
}
}
}
}

214
SjMes/MESClassLibrary/BLL/BasicInfo/ColorBLL.cs

@ -0,0 +1,214 @@
using MESClassLibrary.BLL.Log;
using MESClassLibrary.EFModel;
using MESClassLibrary.Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using MESClassLibrary.DAL.BasicInfo;
namespace MESClassLibrary.BLL.BasicInfo
{
public class ColorBLL
{
BasicBLL<tb_Color> db = new BasicBLL<tb_Color>();
/// <summary>
/// 新增信息
/// </summary>
/// <param name="md"></param>
/// <returns></returns>
public bool AddInfo(tb_Color md)
{
try
{
//var list = db.SearchInfoByKey("ColorCode", md.ColorCode);//判断是否有重复数据
//if (list != null)
//{
// if (list.Where(p => p.ID != md.ID).Count() > 0)
// {
// return false;
// }
//}
return db.AddInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 修改信息
/// </summary>
/// <param name="md"></param>
/// <returns></returns>
public bool UpdateInfo(tb_Color md)
{
try
{
//var list = db.SearchAllInfo().Where(p => p.ColorCode == md.ColorCode && p.ID != md.ID).ToList();//判断是否有重复数据
//if (list.Count > 0)
//{
// return false;
//}
//初始化要更新的字段
string[] proNames = new string[5];
proNames[0] = "ColorCode";
proNames[1] = "ColorNo";
proNames[2] = "ColorQQCode";
proNames[3] = "Des";
proNames[4] = "ColorDQCode";
//必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
//如果没有初始化必填字段,更新会报错
//md.Des = "";
return db.UpdateInfo(md, proNames);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 删除信息
/// </summary>
/// <param name="md"></param>
/// <param name="flag"></param>
/// <returns></returns>
public bool DeleteInfo(tb_Color md)
{
try
{
return db.DelInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 查询全部信息分页
/// </summary>
/// <returns></returns>
public string SearchInfoAll(string page, string pagesize,string ColorCode)
{
try
{
string jsonStr = "[]";
int total = 0;//总行数
List<tb_Color> list = db.SearchAllInfo();
if (!String.IsNullOrEmpty(ColorCode))
{
list = list.Where(p => p.ColorCode.Contains(ColorCode)).ToList();
}
total = list.Count;
int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
JsonDataModel<tb_Color> md = new JsonDataModel<tb_Color>();
md.total = total.ToString();
md.rows = list;
return JSONTools.ScriptSerialize(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
/// <summary>
/// 根据ID查询信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public tb_Color SearchInfoByID(string id)
{
try
{
return db.SearchInfoByID(id);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public string GetComboboxData()
{
try
{
string jsonStr = "[]";
var list = db.SearchAllInfo().Select(p=>p.Des).Distinct().ToList();//判断是否有重复数据
List<SelectModel> sl = new List<SelectModel>();
foreach (var item in list)
{
SelectModel md = new SelectModel();
md.textField = item;
md.valueField = item;
sl.Add(md);
}
jsonStr = JSONTools.ScriptSerialize(sl);
return jsonStr;
}
catch (Exception)
{
return "";
}
}
public DataTable SearchAll()
{
ColorDAL da = new ColorDAL();
try
{
return da.SearchInfoAll();
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public DataTable SearchByName(string color)
{
ColorDAL da = new ColorDAL();
try
{
return da.SearchByName(color);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
}
}

181
SjMes/MESClassLibrary/BLL/BasicInfo/DefectBLL.cs

@ -0,0 +1,181 @@
using MESClassLibrary.BLL.Log;
using MESClassLibrary.EFModel;
using MESClassLibrary.Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using MESClassLibrary.DAL.BasicInfo;
namespace MESClassLibrary.BLL.BasicInfo
{
public class DefectBLL
{
BasicBLL<tb_Defect> db = new BasicBLL<tb_Defect>();
/// <summary>
/// 查询信息
/// </summary>
/// <returns></returns>
public string SearchInfo(string page, string pagesize, string DefectName, string LineID)
{
try
{
string jsonStr = "[]";
int total = 0;//总行数
List<tb_Defect> list = db.SearchAllInfo();
if (!String.IsNullOrEmpty(LineID))
{
list = list.Where(p => p.LineID == LineID).ToList();
}
if (!String.IsNullOrEmpty(DefectName))
{
list = list.Where(p => p.DefectName.Contains(DefectName)).ToList();
}
if (list.Count > 0)
{
total = list.Count;
int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
#region 联查
List<DefectModel> ModelList = new List<DefectModel>();
BasicBLL<tb_Line> p_db = new BasicBLL<tb_Line>();
var p_list = p_db.SearchAllInfo().ToList();
foreach (var item in list)
{
DefectModel dm = Tool.Mapper<DefectModel, tb_Defect>(item);
var info = p_list.FirstOrDefault(p => p.LineID == item.LineID);
if (info != null)
{
dm.LineName = info.LineName;
}
ModelList.Add(dm);
}
#endregion
JsonDataModel<DefectModel> md = new JsonDataModel<DefectModel>();
md.total = total.ToString();
md.rows = ModelList;
jsonStr = JSONTools.ScriptSerialize<JsonDataModel<DefectModel>>(md);
}
return jsonStr;
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return "";
}
}
/// <summary>
/// 添加信息
/// </summary>
/// <param name="md">生产线模型对象</param>
/// <returns></returns>
public bool AddInfo(tb_Defect md)
{
try
{
var list = db.SearchInfoByKey("DefectName", md.DefectName);//判断是否有重复数据
if (list != null)
{
if (list.Where(p => p.ID != md.ID).Count() > 0)
{
return false;
}
}
return db.AddInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 修改信息
/// </summary>
/// <param name="md">生产线模型对象</param>
/// <returns></returns>
public bool UpdateInfo(tb_Defect md)
{
try
{
var list = db.SearchAllInfo().Where(p => p.DefectName == md.DefectName && p.ID != md.ID).ToList();//判断是否有重复数据
if (list.Count > 0)
{
return false;
}
//初始化要更新的字段
string[] proNames = new string[3];
proNames[0] = "LineID";
proNames[1] = "DefectName";
proNames[2] = "Des";
//必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
//如果没有初始化必填字段,更新会报错
//md.Des = "";
return db.UpdateInfo(md, proNames);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// 删除生产线信息
public bool DelInfo(tb_Defect md)
{
try
{
return db.DelInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
public string GetComboboxData()
{
try
{
string jsonStr = "[]";
var list = db.SearchAllInfo().ToList();//判断是否有重复数据
jsonStr = JSONTools.ScriptSerialize<List<tb_Defect>>(list);
return jsonStr;
}
catch (Exception)
{
return "";
}
}
public DataTable SearchInfo(string LineID)
{
DefectDAL da=new DefectDAL();
try
{
return da.SearchInfoAll(LineID);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
}
}

144
SjMes/MESClassLibrary/BLL/BasicInfo/DeptBLL.cs

@ -0,0 +1,144 @@
using MESClassLibrary.BLL.Log;
using MESClassLibrary.EFModel;
using MESClassLibrary.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace MESClassLibrary.BLL.BasicInfo
{
public class DeptBLL
{
BasicBLL<TA_DEPT> db = new BasicBLL<TA_DEPT>();
/// <summary>
/// 查询信息
/// </summary>
/// <returns></returns>
public string SearchInfo(string page, string pagesize, string DeptName)
{
try
{
string jsonStr = "[]";
int total = 0;//总行数
List<TA_DEPT> list = db.SearchAllInfo();
if (!String.IsNullOrEmpty(DeptName))
{
list = list.Where(p => p.DeptName.Contains(DeptName)).ToList();//按条件分页查询
}
if (list.Count > 0)
{
total = list.Count;
int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
JsonDataModel<TA_DEPT> md = new JsonDataModel<TA_DEPT>();
md.total = total.ToString();
md.rows = list;
jsonStr = JSONTools.ScriptSerialize(md);
}
return jsonStr;
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return "";
}
}
/// <summary>
/// 添加信息
/// </summary>
/// <param name="md">生产线模型对象</param>
/// <returns></returns>
public bool AddInfo(TA_DEPT md)
{
try
{
var list = db.SearchInfoByKey("LineName", md.DeptName);//判断是否有重复数据
if (list != null)
{
if (list.Where(p => p.GUID != md.GUID).Count() > 0)
{
return false;
}
}
return db.AddInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 修改信息
/// </summary>
/// <param name="md">生产线模型对象</param>
/// <returns></returns>
public bool UpdateInfo(TA_DEPT md)
{
try
{
var list = db.SearchAllInfo().Where(p => p.DeptName == md.DeptName && p.GUID != md.GUID).ToList();//判断是否有重复数据
if (list.Count > 0)
{
return false;
}
//初始化要更新的字段
string[] proNames = new string[3];
proNames[0] = "DeptCode";
proNames[1] = "DeptName";
proNames[2] = "Remark";
//必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
//如果没有初始化必填字段,更新会报错
//md.Des = "";
return db.UpdateInfo(md, proNames);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// 删除生产线信息
public bool DelInfo(TA_DEPT md)
{
try
{
return db.DelInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
public string GetComboboxData()
{
try
{
string jsonStr = "[]";
var list = db.SearchAllInfo().ToList();//判断是否有重复数据
jsonStr = JSONTools.ScriptSerialize<List<TA_DEPT>>(list);
return jsonStr;
}
catch (Exception ex)
{
return "";
}
}
}
}

251
SjMes/MESClassLibrary/BLL/BasicInfo/DeviceBLL.cs

@ -0,0 +1,251 @@
using MESClassLibrary.BLL.Log;
using MESClassLibrary.EFModel;
using MESClassLibrary.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace MESClassLibrary.BLL.BasicInfo
{
public class DeviceBLL
{
BasicBLL<tb_Device> db = new BasicBLL<tb_Device>();
/// <summary>
/// 查询信息
/// </summary>
/// <returns></returns>
public string SearchInfo(string page, string pagesize, string DeviceNo, string StationID)
{
try
{
string jsonStr = "[]";
int total = 0;//总行数
List<tb_Device> list = db.SearchAllInfo();
if (!String.IsNullOrEmpty(StationID))
{
list = list.Where(p => p.StationID == StationID).ToList();//按条件分页查询
}
if (!String.IsNullOrEmpty(DeviceNo))
{
list = list.Where(p => p.DeviceNo.Contains(DeviceNo)).ToList();//按条件分页查询
}
if (list.Count > 0)
{
total = list.Count;
int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
#region 联查
List<DeviceModel> StationList = new List<DeviceModel>();
BasicBLL<tb_Station> pl_db = new BasicBLL<tb_Station>();
var pl_list = pl_db.SearchAllInfo().ToList();
foreach (var item in list)
{
DeviceModel dm = Tool.Mapper<DeviceModel, tb_Device>(item);
var info = pl_list.FirstOrDefault(p => p.StationID == item.StationID);
if (info != null)
{
dm.StationNo = info.StationNo;
}
StationList.Add(dm);
}
#endregion
JsonDataModel<DeviceModel> md = new JsonDataModel<DeviceModel>();
md.total = total.ToString();
md.rows = StationList;
jsonStr = JSONTools.ScriptSerialize<JsonDataModel<DeviceModel>>(md);
}
return jsonStr;
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return "";
}
}
public string SearchInfoByID(string DeviceID) {
try
{
string jsonStr = "[]";
tb_Device info = db.SearchInfoByID(DeviceID);
jsonStr = JSONTools.ScriptSerialize<tb_Device>(info);
return jsonStr;
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return "";
}
}
/// <summary>
/// 添加信息
/// </summary>
/// <param name="md">生产线模型对象</param>
/// <returns></returns>
public bool AddInfo(tb_Device md)
{
try
{
var list = db.SearchInfoByKey("DeviceNo", md.DeviceNo);//判断是否有重复数据
if (list != null)
{
if (list.Where(p => p.DeviceID != md.DeviceID).Count() > 0)
{
return false;
}
}
return db.AddInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 修改信息
/// </summary>
/// <param name="md">生产线模型对象</param>
/// <returns></returns>
public bool UpdateInfo(tb_Device md)
{
try
{
var list = db.SearchAllInfo().Where(p => p.DeviceNo == md.DeviceNo && p.DeviceID != md.DeviceID).ToList();//判断是否有重复数据
if (list.Count > 0)
{
return false;
}
//初始化要更新的字段
string[] proNames = new string[6];
proNames[0] = "StationID";
proNames[1] = "DeviceNo";
proNames[2] = "DeviceName";
proNames[3] = "FixNo";
proNames[4] = "Des";
proNames[5] = "DeviceModel";
//必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
//如果没有初始化必填字段,更新会报错
//md.Des = "";
return db.UpdateInfo(md, proNames);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// 删除生产线信息
public bool DelInfo(tb_Device md)
{
try
{
return db.DelInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
public string GetComboboxData()
{
try
{
string jsonStr = "[]";
var list = db.SearchAllInfo().ToList();//判断是否有重复数据
foreach (var item in list)
{
item.DeviceName = item.DeviceNo + "----" + item.DeviceName;
}
jsonStr = JSONTools.ScriptSerialize<List<tb_Device>>(list);
return jsonStr;
}
catch (Exception)
{
return "";
}
}
public string QueryForComboboxByLineID(string fl_id)
{
try
{
string jsonStr = "[]";
var list = db.SearchAllInfo().ToList();//判断是否有重复数据
if (fl_id != null && fl_id != "")
{
BasicBLL<tb_Station> s_db = new BasicBLL<tb_Station>();
var s_list = s_db.SearchAllInfo().Where(p => p.LineID == fl_id).ToList();//判断是否有重复数据
if (s_list.Count > 0)
{
string[] arr = s_list.Select(p => p.StationID).ToArray();
list = list.Where(p => arr.Contains(p.StationID)).ToList();
foreach (var item in list)
{
item.DeviceName = item.DeviceNo + "----" + item.DeviceName;
}
jsonStr = JSONTools.ScriptSerialize<List<tb_Device>>(list);
return jsonStr;
}
}
return "";
}
catch (Exception)
{
return "";
}
}
public string QueryForComboboxByStationID(string fl_id)
{
try
{
string jsonStr = "[]";
if (fl_id != null && fl_id != "")
{
var list = db.SearchAllInfo().Where(p => p.StationID == fl_id).ToList();//判断是否有重复数据
foreach (var item in list)
{
item.DeviceName = item.DeviceNo + "----" + item.DeviceName;
}
jsonStr = JSONTools.ScriptSerialize<List<tb_Device>>(list);
return jsonStr;
}
return "";
}
catch (Exception)
{
return "";
}
}
}
}

148
SjMes/MESClassLibrary/BLL/BasicInfo/FactoryBLL.cs

@ -0,0 +1,148 @@
using MESClassLibrary.BLL.Log;
using MESClassLibrary.EFModel;
using MESClassLibrary.Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace MESClassLibrary.BLL.BasicInfo
{
public class FactoryBLL
{
BasicBLL<tb_Factory> db = new BasicBLL<tb_Factory>();
/// <summary>
/// 查询信息
/// </summary>
/// <returns></returns>
public string SearchInfo(string page, string pagesize, string FactoryName)
{
try
{
string jsonStr = "[]";
int total = 0;//总行数
List<tb_Factory> list = db.SearchAllInfo();
if (!String.IsNullOrEmpty(FactoryName))
{
list = list.Where(p => p.FactoryName.Contains(FactoryName)).ToList();//按条件分页查询
}
if (list.Count > 0)
{
total = list.Count;
int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
JsonDataModel<tb_Factory> md = new JsonDataModel<tb_Factory>();
md.total = total.ToString();
md.rows = list;
jsonStr = JSONTools.ScriptSerialize<JsonDataModel<tb_Factory>>(md);
}
return jsonStr;
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return "";
}
}
/// <summary>
/// 添加信息
/// </summary>
/// <param name="md">生产线模型对象</param>
/// <returns></returns>
public bool AddInfo(tb_Factory md)
{
try
{
var list = db.SearchInfoByKey("FactoryName", md.FactoryName);//判断是否有重复数据
if (list != null)
{
if (list.Where(p => p.FactoryID != md.FactoryID).Count() > 0)
{
return false;
}
}
return db.AddInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 修改信息
/// </summary>
/// <param name="md">生产线模型对象</param>
/// <returns></returns>
public bool UpdateInfo(tb_Factory md)
{
try
{
var list = db.SearchAllInfo().Where(p => p.FactoryName == md.FactoryName && p.FactoryID != md.FactoryID).ToList();//判断是否有重复数据
if (list.Count > 0)
{
return false;
}
//初始化要更新的字段
string[] proNames = new string[2];
proNames[0] = "FactoryName";
proNames[1] = "Des";
//必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
//如果没有初始化必填字段,更新会报错
//md.Des = "";
return db.UpdateInfo(md, proNames);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// 删除生产线信息
public bool DelInfo(tb_Factory md)
{
try
{
return db.DelInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
public string GetComboboxData()
{
try
{
string jsonStr = "[]";
var list = db.SearchAllInfo().ToList();//判断是否有重复数据
jsonStr = JSONTools.ScriptSerialize<List<tb_Factory>>(list);
return jsonStr;
}
catch (Exception)
{
return "";
}
}
}
}

141
SjMes/MESClassLibrary/BLL/BasicInfo/ImgVideoBLL.cs

@ -0,0 +1,141 @@
using MESClassLibrary.BLL.Log;
using MESClassLibrary.EFModel;
using MESClassLibrary.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
namespace MESClassLibrary.BLL.BasicInfo
{
public class ImgVideoBLL
{
BBMPTEntities ef = new BBMPTEntities();
BasicBLL<tb_ImgVideo> db = new BasicBLL<tb_ImgVideo>();
/// <summary>
/// 新增信息
/// </summary>
/// <param name="md"></param>
/// <returns></returns>
public bool AddInfo(tb_ImgVideo md)
{
try
{
var list = db.SearchInfoByKey("fileName", md.fileName);//判断是否有重复数据
if (list != null)
{
return false;
}
return db.AddInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 修改信息
/// </summary>
/// <param name="md"></param>
/// <returns></returns>
public bool UpdateInfo(tb_ImgVideo md)
{
try
{
//初始化要更新的字段
string[] proNames = new string[3];
proNames[0] = "fileUrl";
proNames[1] = "fileName";
proNames[2] = "UpdateTime";
//必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
//如果没有初始化必填字段,更新会报错
//md.Des = "";
return db.UpdateInfo(md, proNames);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 删除信息
/// </summary>
/// <param name="md"></param>
/// <param name="flag"></param>
/// <returns></returns>
public bool DeleteInfo(tb_ImgVideo md)
{
try
{
return db.DelInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 查询全部信息分页
/// </summary>
/// <returns></returns>
public string SearchInfoAll(string page, string pagesize)
{
try
{
string jsonStr = "[]";
int total = 0;//总行数
List<tb_ImgVideo> list = ef.tb_ImgVideo.OrderByDescending(p=>p.CreateTime).ToList();
total = list.Count;
int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
JsonDataModel<tb_ImgVideo> md = new JsonDataModel<tb_ImgVideo>();
md.total = total.ToString();
md.rows = list;
return JSONTools.ScriptSerialize(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
/// <summary>
/// 根据ID查询信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public tb_ImgVideo SearchInfoByID(string id)
{
try
{
return db.SearchInfoByID(id);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
}
}

419
SjMes/MESClassLibrary/BLL/BasicInfo/InjectionPlanBLL.cs

@ -0,0 +1,419 @@
using MESClassLibrary.BLL.Log;
using MESClassLibrary.EFModel;
using MESClassLibrary.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using MESClassLibrary.DAL.BasicInfo;
namespace MESClassLibrary.BLL.BasicInfo
{
public class InjectionPlanBLL
{
BBMPTEntities ef = new BBMPTEntities();
BasicBLL<tb_InjectionPlan> db = new BasicBLL<tb_InjectionPlan>();
InjectionPlanDAL dal = new InjectionPlanDAL();
/// <summary>
/// 新增信息
/// </summary>
/// <param name="md"></param>
/// <returns></returns>
public bool AddInfo(tb_InjectionPlan md)
{
try
{
return db.AddInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 修改信息
/// </summary>
/// <param name="md"></param>
/// <returns></returns>
public bool UpdateInfo(tb_InjectionPlan md)
{
try
{
//初始化要更新的字段
string[] proNames = new string[8];
proNames[0] = "StationID";
proNames[1] = "BeginTime";
proNames[2] = "StockNo";
proNames[3] = "PlanCount";
proNames[4] = "EndTime";
proNames[5] = "PlanDate";
proNames[6] = "RealCycle";
proNames[7] = "PartNo";
//必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
//如果没有初始化必填字段,更新会报错
return db.UpdateInfo(md, proNames);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 删除信息
/// </summary>
/// <param name="md"></param>
/// <param name="flag"></param>
/// <returns></returns>
public bool DeleteInfo(tb_InjectionPlan md)
{
try
{
return db.DelInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 查询全部信息分页
/// </summary>
/// <returns></returns>
public string SearchInfoAll(string page, string pagesize, string stationID, string stockNo)
{
try
{
string jsonStr = "[]";
int total = 0;//总行数
List<tb_InjectionPlan> list = db.SearchAllInfo().Where(p => p.IsFinish != 1).ToList();
if (!String.IsNullOrEmpty(stationID))
{
list = list.Where(p => p.StationID.Equals(stationID)).ToList();
}
if (!String.IsNullOrEmpty(stockNo))
{
list = list.Where(p => p.StockNo.Contains(stockNo)).ToList();
}
list = list.OrderBy(p => p.BeginTime).ToList();
List<InjectionPlanModel> modelList = new List<InjectionPlanModel>();
if (list.Count > 0)
{
total = list.Count;
int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
#region 联查
BasicBLL<tb_Product> product_db = new BasicBLL<tb_Product>();
var product_list = product_db.SearchAllInfo();
BasicBLL<tb_Station> station_db = new BasicBLL<tb_Station>();
var station_list = station_db.SearchAllInfo();
foreach (var item in list)
{
InjectionPlanModel dm = Tool.Mapper<InjectionPlanModel, tb_InjectionPlan>(item);
var product_info = product_list.FirstOrDefault(p => p.StockNo == item.StockNo);
if (product_info != null)
{
dm.PartNo = product_info.PartNo;
dm.ProductName = product_info.ProductName;
}
var station_info = station_list.FirstOrDefault(p => p.StationID == item.StationID);
if (station_info != null)
{
dm.StationNo = station_info.StationNo;
}
modelList.Add(dm);
}
#endregion
JsonDataModel<InjectionPlanModel> md = new JsonDataModel<InjectionPlanModel>();
md.total = total.ToString();
md.rows = modelList;
jsonStr = JSONTools.ScriptSerialize(md);
}
return jsonStr;
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public string SearchInfoAll2(string page, string pagesize, string stationID, string stockNo, string StartTime, string EndTime)
{
try
{
string jsonStr = "[]";
int total = 0;//总行数
total = dal.SearchByTimeCount(stationID, stockNo, StartTime, EndTime);
DataTable dt = dal.SearchByTime(Convert.ToInt32(page), Convert.ToInt32(pagesize), stationID, stockNo, StartTime, EndTime);
List<tb_InjectionPlan> list = Tool.ConvertTo<tb_InjectionPlan>(dt).ToList();
//List<tb_InjectionPlan> list = ef.tb_InjectionPlan.Where(p => DateTime.Parse(p.BeginTime) >= stime && DateTime.Parse(p.EndTime) <= etime).ToList();
if (!String.IsNullOrEmpty(stationID))
{
list = list.Where(p => p.StationID.Equals(stationID)).ToList();
}
if (!String.IsNullOrEmpty(stockNo))
{
list = list.Where(p => p.StockNo.Contains(stockNo)).ToList();
}
list = list.OrderBy(p => p.BeginTime).ToList();
List<InjectionPlanModel> modelList = new List<InjectionPlanModel>();
if (list.Count > 0)
{
total = list.Count;
int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
#region 联查
BasicBLL<tb_Product> product_db = new BasicBLL<tb_Product>();
var product_list = product_db.SearchAllInfo();
BasicBLL<tb_Station> station_db = new BasicBLL<tb_Station>();
var station_list = station_db.SearchAllInfo();
foreach (var item in list)
{
InjectionPlanModel dm = Tool.Mapper<InjectionPlanModel, tb_InjectionPlan>(item);
var product_info = product_list.FirstOrDefault(p => p.StockNo == item.StockNo);
if (product_info != null)
{
dm.PartNo = product_info.PartNo;
dm.ProductName = product_info.ProductName;
}
var station_info = station_list.FirstOrDefault(p => p.StationID == item.StationID);
if (station_info != null)
{
dm.StationNo = station_info.StationNo;
}
modelList.Add(dm);
}
#endregion
JsonDataModel<InjectionPlanModel> md = new JsonDataModel<InjectionPlanModel>();
md.total = total.ToString();
md.rows = modelList;
jsonStr = JSONTools.ScriptSerialize(md);
}
return jsonStr;
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public bool UpdateInfo2(tb_InjectionPlan md)
{
try
{
//初始化要更新的字段
string[] proNames = new string[3];
proNames[0] = "workClass";
proNames[1] = "JK_Weight";
proNames[2] = "Waste_Weight";
//必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
//如果没有初始化必填字段,更新会报错
return db.UpdateInfo(md, proNames);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 查询全部信息
/// </summary>
/// <returns></returns>
public List<tb_InjectionPlan> SearchAll()
{
try
{
var s_list = db.SearchAllInfo().ToList();
return s_list;
}
catch (Exception)
{
return null;
}
}
/// <summary>
/// 根据ID查询信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public tb_InjectionPlan SearchInfoByID(string id)
{
try
{
return db.SearchInfoByID(id);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public String GetEndTime(tb_InjectionPlan md)
{
try
{
BasicBLL<tb_Plastic> Plastic_db = new BasicBLL<tb_Plastic>();
var info = from c in Plastic_db.SearchAllInfo()
where c.StockNo == md.StockNo && c.StationID == md.StationID && c.IsBackup == 1
select c.CycleTime;
if (info.FirstOrDefault() != null)
{
double seconds = Convert.ToDouble(info.FirstOrDefault().Value) * Convert.ToDouble(md.PlanCount);
return Convert.ToDateTime(md.BeginTime).AddSeconds(seconds).ToString("yyyy-MM-dd HH:mm:ss");
}
return md.BeginTime;
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public DataTable SearchInfoByName(string StationID)
{
try
{
return dal.SearchPlanByStation(StationID);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public DataTable NextSearchInfoByName(string StationID)
{
try
{
return dal.NextSearchPlanByStation(StationID);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
public bool UpdateFinish(InjectionPlanModel md)
{
InjectionPlanDAL dal = new InjectionPlanDAL();
try
{
return dal.UpdateFinish(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
public string GetStartTime(string StationID)
{
var bf = db.SearchInfoByKey("StationID", StationID).OrderByDescending(p => p.EndTime).FirstOrDefault();
if (bf != null)
{
return bf.EndTime;
}
return "";
}
public List<tb_InjectionPlan> isExit(string startTime, string endTime, string stationID, string stockNo)
{
try
{
return db.SearchAllInfo().Where(p =>
p.StationID == stationID && p.BeginTime == startTime && p.EndTime == endTime &&
p.StockNo == stockNo)
.ToList();
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
//public bool DeleteInfoByAPS(tb_InjectionPlan md)
//{
// try
// {
// }
// catch (Exception ex)
// {
// LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod());
// return false;
// }
//}
}
}

170
SjMes/MESClassLibrary/BLL/BasicInfo/LineBLL.cs

@ -0,0 +1,170 @@
using MESClassLibrary.BLL.Log;
using MESClassLibrary.EFModel;
using MESClassLibrary.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace MESClassLibrary.BLL.BasicInfo
{
public class LineBLL
{
BasicBLL<tb_Line> db = new BasicBLL<tb_Line>();
/// <summary>
/// 查询信息
/// </summary>
/// <returns></returns>
public string SearchInfo(string page, string pagesize, string LineName, string PlaceID, string userID)
{
try
{
string jsonStr = "[]";
int total = 0;//总行数
List<tb_Line> list = db.SearchAllInfo();
//数据权限
//BasicBLL<T_Sys_Users> userdb = new BasicBLL<T_Sys_Users>();
//T_Sys_Users user = userdb.SearchInfoByID(userID);
//List<tb_Line> list = db.SearchInfoContains("LineName", user.Department);
if (!String.IsNullOrEmpty(PlaceID))
{
list = list.Where(p => p.PlaceID == PlaceID).ToList();//按条件分页查询
}
if (!String.IsNullOrEmpty(LineName))
{
list = list.Where(p => p.LineName.Contains(LineName)).ToList();//按条件分页查询
}
if (list.Count > 0)
{
total = list.Count;
int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
#region 联查
List<LineModel> ModelList = new List<LineModel>();
BasicBLL<tb_Place> p_db = new BasicBLL<tb_Place>();
var p_list = p_db.SearchAllInfo().ToList();
foreach (var item in list)
{
LineModel dm = Tool.Mapper<LineModel, tb_Line>(item);
var info = p_list.FirstOrDefault(p => p.PlaceID == item.PlaceID);
if (info != null)
{
dm.PlaceName = info.PlaceName;
}
ModelList.Add(dm);
}
#endregion
JsonDataModel<LineModel> md = new JsonDataModel<LineModel>();
md.total = total.ToString();
md.rows = ModelList;
jsonStr = JSONTools.ScriptSerialize<JsonDataModel<LineModel>>(md);
}
return jsonStr;
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return "";
}
}
/// <summary>
/// 添加信息
/// </summary>
/// <param name="md">生产线模型对象</param>
/// <returns></returns>
public bool AddInfo(tb_Line md)
{
try
{
var list = db.SearchInfoByKey("LineName", md.LineName);//判断是否有重复数据
if (list != null)
{
if (list.Where(p => p.LineID != md.LineID).Count() > 0)
{
return false;
}
}
return db.AddInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 修改信息
/// </summary>
/// <param name="md">生产线模型对象</param>
/// <returns></returns>
public bool UpdateInfo(tb_Line md)
{
try
{
var list = db.SearchAllInfo().Where(p => p.LineName == md.LineName && p.LineID != md.LineID).ToList();//判断是否有重复数据
if (list.Count > 0)
{
return false;
}
//初始化要更新的字段
string[] proNames = new string[3];
proNames[0] = "PlaceID";
proNames[1] = "LineName";
proNames[2] = "Des";
//必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
//如果没有初始化必填字段,更新会报错
//md.Des = "";
return db.UpdateInfo(md, proNames);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// 删除生产线信息
public bool DelInfo(tb_Line md)
{
try
{
return db.DelInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
public string GetComboboxData()
{
try
{
string jsonStr = "[]";
var list = db.SearchAllInfo().ToList();//判断是否有重复数据
jsonStr = JSONTools.ScriptSerialize<List<tb_Line>>(list);
return jsonStr;
}
catch (Exception)
{
return "";
}
}
}
}

149
SjMes/MESClassLibrary/BLL/BasicInfo/LocationBLL.cs

@ -0,0 +1,149 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using MESClassLibrary.BLL.Log;
using MESClassLibrary.EFModel;
using MESClassLibrary.Model;
namespace MESClassLibrary.BLL.BasicInfo
{
public class LocationBLL
{
BasicBLL<tb_Location> db = new BasicBLL<tb_Location>();
/// <summary>
/// 查询信息
/// </summary>
/// <returns></returns>
public string SearchInfo(string page, string pagesize, string Location)
{
try
{
string jsonStr = "[]";
int total = 0; //总行数
List<tb_Location> list = db.SearchAllInfo();
if (!String.IsNullOrEmpty(Location))
{
list = list.Where(p => p.Location.Contains(Location)).ToList(); //按条件分页查询
}
if (list.Count > 0)
{
total = list.Count;
int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
JsonDataModel<tb_Location> md = new JsonDataModel<tb_Location>();
md.total = total.ToString();
md.rows = list;
jsonStr = JSONTools.ScriptSerialize<JsonDataModel<tb_Location>>(md);
}
return jsonStr;
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return "";
}
}
/// <summary>
/// 添加信息
/// </summary>
/// <param name="md">生产线模型对象</param>
/// <returns></returns>
public bool AddInfo(tb_Location md)
{
try
{
var list = db.SearchInfoByKey("Location", md.Location);//判断是否有重复数据
if (list != null)
{
if (list.Where(p => p.ID != md.ID).Count() > 0)
{
return false;
}
}
return db.AddInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 修改信息
/// </summary>
/// <param name="md">生产线模型对象</param>
/// <returns></returns>
public bool UpdateInfo(tb_Location md)
{
try
{
var list = db.SearchAllInfo().Where(p => p.Location == md.Location && p.ID != md.ID).ToList();//判断是否有重复数据
if (list.Count > 0)
{
return false;
}
//初始化要更新的字段
string[] proNames = new string[1];
proNames[0] = "Location";
//必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
//如果没有初始化必填字段,更新会报错
//md.Des = "";
return db.UpdateInfo(md, proNames);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// 删除生产线信息
public bool DelInfo(tb_Location md)
{
try
{
BasicBLL<tb_Project> db1=new BasicBLL<tb_Project>();
var list = db1.SearchAllInfo().Where(p => p.LocationID == md.ID).ToList();
if (list.Count > 0)
{
return false;
}
return db.DelInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
public string GetComboboxData()
{
try
{
string jsonStr = "[]";
var list = db.SearchAllInfo().ToList(); //判断是否有重复数据
jsonStr = JSONTools.ScriptSerialize<List<tb_Location>>(list);
return jsonStr;
}
catch (Exception)
{
return "";
}
}
}
}

184
SjMes/MESClassLibrary/BLL/BasicInfo/MachineBLL.cs

@ -0,0 +1,184 @@
using MESClassLibrary.BLL.Log;
using MESClassLibrary.EFModel;
using MESClassLibrary.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace MESClassLibrary.BLL.BasicInfo
{
public class MachineBLL
{
BasicBLL<tb_Machine> db = new BasicBLL<tb_Machine>();
/// <summary>
/// 新增信息
/// </summary>
/// <param name="md"></param>
/// <returns></returns>
public bool AddInfo(tb_Machine md)
{
try
{
var list = db.SearchInfoByKey("MachineNo", md.MachineNo);//判断是否有重复数据
if (list != null)
{
if (list.Where(p => p.MachineID != md.MachineID).Count() > 0)
{
return false;
}
}
return db.AddInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 修改信息
/// </summary>
/// <param name="md"></param>
/// <returns></returns>
public bool UpdateInfo(tb_Machine md)
{
try
{
var list = db.SearchAllInfo().Where(p => p.MachineNo == md.MachineNo && p.MachineID != md.MachineID).ToList();//判断是否有重复数据
if (list.Count > 0)
{
return false;
}
//初始化要更新的字段
string[] proNames = new string[2];
proNames[0] = "MachineNo";
proNames[1] = "Des";
//必填字段初始化,如果不需要更新必填字段则设置为空即可,时间类型无需初始化
//如果没有初始化必填字段,更新会报错
//md.Des = "";
return db.UpdateInfo(md, proNames);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 删除信息
/// </summary>
/// <param name="md"></param>
/// <param name="flag"></param>
/// <returns></returns>
public bool DeleteInfo(tb_Machine md)
{
try
{
return db.DelInfo(md);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return false;
}
}
/// <summary>
/// 查询全部信息分页
/// </summary>
/// <returns></returns>
public string SearchInfoAll(string page, string pagesize, string machineNo)
{
string jsonStr = "[]";
int total = 0;//总行数
List<tb_Machine> list = db.SearchAllInfo();
if (!String.IsNullOrEmpty(machineNo))
{
list = list.Where(p => p.MachineNo.Contains(machineNo)).ToList();
}
if (list.Count > 0)
{
total = list.Count;
int Skipcount = (Convert.ToInt32(page) - 1) * Convert.ToInt32(pagesize);
list = list.Skip(Skipcount).Take(Convert.ToInt32(pagesize)).ToList();
JsonDataModel<tb_Machine> md = new JsonDataModel<tb_Machine>();
md.total = total.ToString();
md.rows = list;
jsonStr = JSONTools.ScriptSerialize<JsonDataModel<tb_Machine>>(md);
}
return jsonStr;
}
/// <summary>
/// 查询全部信息
/// </summary>
/// <returns></returns>
public List<tb_Machine> SearchAll()
{
try
{
var s_list = db.SearchAllInfo().ToList();
return s_list;
}
catch (Exception)
{
return null;
}
}
/// <summary>
/// 根据ID查询信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public tb_Machine SearchInfoByID(string id)
{
try
{
return db.SearchInfoByID(id);
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(), MethodBase.GetCurrentMethod());
return null;
}
}
//下拉框查询方法
public string GetComboboxData()
{
try
{
string jsonStr = "[]";
var list = db.SearchAllInfo().ToList();
jsonStr = JSONTools.ScriptSerialize<List<tb_Machine>>(list);
return jsonStr;
}
catch (Exception)
{
return "";
}
}
}
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save