using DBUtility;
using System;
using System.Linq;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Reflection;
using System.Security.Cryptography;
using System.Text;
using MESClassLibrary.BLL.Log;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Tools;
using WebService.Model;
using System.Data.SqlClient;
namespace Webservice
{
public class Function
{
public static readonly string app_id = "9b38d8d9-af87-49d2-a0a1-87516c86f254";
public static readonly string app_secret = "422f5bd0-0393-408b-9024-a98f8c6367a4";
///
/// 判断AppID是否合法
///
///
///
public static bool AppIDIsRight(string app_id)
{
if (app_id.Trim() != Function.app_id.Trim())
{
return false;
}
else
{
return true;
}
}
public static string MD5Encryption(string str)
{
try
{
if (!string.IsNullOrWhiteSpace(str))
{
byte[] result = Encoding.Default.GetBytes(str); //tbPass为输入密码的文本框
MD5 md5 = new MD5CryptoServiceProvider();
byte[] output = md5.ComputeHash(result);
return BitConverter.ToString(output).Replace("-", "");
}
else
{
return string.Empty;
}
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
return string.Empty;
}
}
///
/// 传入的参数是否合法
///
///
///
///
public static bool signIsRight(string[] param, string sign)
{
bool res;
string str = "";
if (param.Length > 0)
{
foreach (string s in param)
{
str += s.Trim();
}
}
string getMd5 = MD5Encryption(str);
if (getMd5 != sign)
{
res = false;
}
else
{
res = true;
}
return res;
}
public static DataTable GetInfoByParticles(string stockNo, string partNo, out string errorReason)
{
DataTable res = new DataTable();
try
{
if (!string.IsNullOrWhiteSpace(stockNo))
{
string sql = @"
select * from tb_Product where StockNo = '" + stockNo + @"'
";
res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
}
else if (!string.IsNullOrWhiteSpace(partNo))
{
string sql = @"
select * from tb_Product where PartNo = '" + partNo + @"'
";
res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
}
errorReason = "";
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
errorReason = ex.Message;
return res;
}
}
public static bool QueryIsBind(string particleCode, string drumCode, out string errorReason)
{
try
{
string sql = " SELECT * FROM tb_StationAndCylinder WHERE CylinderID = ( SELECT CylinderID from tb_Cylinder WHERE CylinderNo = ('" + drumCode + "') ) and Time2 is null ";
DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (dt != null && dt.Rows.Count > 0)
{
errorReason = " 料筒" + drumCode + "已绑定了塑料粒子与注塑机,请先做解绑操作!";
return true;
}
else
{
string sql_2 = " update tb_CylinderAndRaw set Time2 = getdate() where DrumBarCode = '" + drumCode.Trim() + "' and Time2 is null ";
SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql_2, null);
errorReason = "";
return false;
}
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
errorReason = ex.ToString();
return true;
}
}
public static bool UnBindParticleAndDrum(string drumCode, out string errorReason)
{
bool res = false;
errorReason = "";
try
{
string sql = @"
insert into tb_JbCylinderAndRaw([CylinderID]
,[DrumBarCode]
,[BarCode]
,[Time1])
select [CylinderID]
,[DrumBarCode]
,[BarCode]
,[Time1]
from tb_CylinderAndRaw
where DrumBarCode = '" + drumCode + @"';
delete from tb_CylinderAndRaw where DrumBarCode = '" + drumCode + @"';
";
SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
res = true;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
errorReason = ex.ToString();
res = false;
}
return res;
}
///
/// 绑定塑料粒子与料筒
///
/// 塑料粒子
/// 料筒
///
///
public static int BindparticleCodeAndDrum(string particleCode, string drumCode, out string errorReason)
{
int res = 0;
try
{
string sql = @"
insert into tb_CylinderAndRaw(ID, CylinderID, DrumBarCode, BarCode, Time1)
values((select newid()),(select CylinderID from tb_Cylinder where CylinderNo = '" + drumCode + @"'),'" + drumCode + @"',
'" + particleCode + @"', (select getdate()))
";
res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
errorReason = "";
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
errorReason = ex.Message;
return res;
}
}
///
/// 注塑机号(即工位号)
///
///
///
///
public static DataTable GetPlan(string machineCode, out string errorReason)
{
errorReason = "";
DataTable res = new DataTable();
try
{
#region 注销
//// string sql = @"
//// select top 1 ProductName as [Plan] from tb_Product where StockNo in (
//// 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
//// )
//// ";
// string sql = @"
// select top 1 ProductName as [Plan] from tb_Product where StockNo in (
//
// select REPLACE(SUBSTRING((select top 1 StockNo from tb_InjectionPlan where StationID = (
// select StationID from tb_Station where StationNo = 'IM01' )
// AND (IsFinish IS NULL OR IsFinish = 0)
// ORDER BY BeginTime ASC),1,charindex(',',(select top 1 StockNo from tb_InjectionPlan where StationID = (
// select StationID from tb_Station where StationNo = 'IM01' )
// 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 in (
//// 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
//// )
//// ";
// string sql2 = @"
// select top 1 ProductName as [Plan] from tb_Product where PartNo in (
//
// select REPLACE(SUBSTRING((select top 1 PartNo from tb_InjectionPlan where StationID = (
// select StationID from tb_Station where StationNo = 'IM01' )
// AND (IsFinish IS NULL OR IsFinish = 0)
// ORDER BY BeginTime ASC),1,charindex(',',(select top 1 StockNo from tb_InjectionPlan where StationID = (
// select StationID from tb_Station where StationNo = 'IM01' )
// AND (IsFinish IS NULL OR IsFinish = 0)
// ORDER BY BeginTime ASC))),',',''))
// ";
// res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql2, null);
// }
#endregion
string ssql = @"
select top 1 StockNo,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
";
DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, ssql, null);
if (dt != null && dt.Rows.Count > 0)
{
string stockNos = dt.Rows[0]["StockNo"].ToString();
string partNos = dt.Rows[0]["PartNo"].ToString();
if (stockNos.Contains(",") || partNos.Contains(","))
{
//计划生产两个产品
string[] stocks = { "", "" };
string[] parts = { "", "" };
if (stockNos.Contains(","))
{
stocks = stockNos.Split(',');
}
if (partNos.Contains(","))
{
parts = partNos.Split(',');
}
string sql = @" select top 1 a.ProductName+'|'+b.ProductName as [Plan], stuff((select ','+PartNo2 from tb_Bom where PartNo1 = '" + parts[0] + @"' FOR xml PATH('')), 1, 1, '') as Material from
( select ProductName from tb_Product where StockNo in ('" + stocks[0] + @"','" + stocks[1] + @"') or partNo in ('" + parts[0] + @"','" + parts[1] + @"') ) a,
( select ProductName from tb_Product where StockNo in ('" + stocks[0] + @"','" + stocks[1] + @"') or partNo in ('" + parts[0] + @"','" + parts[1] + @"') ) b
where a.ProductName != b.ProductName ";
res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
}
else
{
//计划只生产一个产品
string sql = @" select top 1 ProductName as [Plan], stuff((select ','+PartNo2 from tb_Bom where PartNo1 = '" + partNos + @"' FOR xml PATH('')), 1, 1, '') as Material from tb_Product where PartNo = '" + partNos + "' ";
res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
}
}
else
{
errorReason = "根据注塑机号查询不到信息,请查看是否维护生产计划";
}
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
errorReason = ex.Message;
return res;
}
}
public static DataTable GetMaterialInfo(string drumCode, out string errorReason)
{
DataTable res = new DataTable();
try
{
string sql = @"
select top 1 BarCode from tb_CylinderAndRaw where DrumBarCode = '" + drumCode + @"' and Time2 is null order by Time1 desc
";
res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
errorReason = "";
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
errorReason = ex.Message;
return res;
}
}
///
/// 绑定注塑机与料筒
///
/// 注塑机(实际传的是工位号,一个工位就是一个注塑机)
/// 料筒
///
///
public static int BindMachineAndDrum(string machineCode, string drumCode, out string errorReason)
{
int res = 0;
try
{
#region 查询当前注塑机计划生产的产品与料筒中的原料是否有对应关系,如果不匹配则不能绑定
string particlePartNo = "";
string productPartNo = "";
string sqlGetproductPartNo = @"
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
";
object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sqlGetproductPartNo, null);
if (aa != null)
{
productPartNo = aa.ToString();
}
string sqlGetparticlePartNo = @"
SELECT TOP 1 BarCode
FROM tb_CylinderAndRaw
WHERE DrumBarCode = '" + drumCode + @"'
AND Time2 IS NULL
ORDER BY Time1 DESC
";
object bb = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sqlGetparticlePartNo, null);
if (bb != null)
{
string stockNo = "";
string partNo = "";
string batchNo = "";
GetCode(bb.ToString(), out stockNo, out batchNo, out partNo);
particlePartNo = partNo;
}
DataTable dt = new DataTable();
if (productPartNo.Contains(","))
{
string[] zz = productPartNo.Split(',');
string sqlGetProductAndMetiral = @" SELECT * FROM tb_Bom WHERE PartNo1 = '" + zz[0] + @"' AND PartNo2 = '" + particlePartNo + @"' ";
dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sqlGetProductAndMetiral, null);
}
else
{
string sqlGetProductAndMetiral = @" SELECT * FROM tb_Bom WHERE PartNo1 = '" + productPartNo + @"' AND PartNo2 = '" + particlePartNo + @"' ";
dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sqlGetProductAndMetiral, null);
}
LogHelper.WriteSysLogBase("APP【绑定注塑机与料筒】machineCode:" + machineCode + ",drumCode:" + drumCode + ",产品:" + productPartNo + ",原料:" + particlePartNo, MethodBase.GetCurrentMethod().Name);
if (dt != null && dt.Rows.Count > 0)
{
#region 20200927注销:先解绑之前的注塑机与料筒
// string sql_unBind = " update tb_StationAndCylinder set Time2 = getdate() where StationID = (select StationID from tb_Station where StationNo = '" + machineCode + @"') ";
// SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql_unBind, null);
// string sql_unBind2 = @" update tb_StationAndCylinder set Time2 = getdate() where CylinderID = ( SELECT top 1 CylinderID
// FROM tb_CylinderAndRaw
// WHERE DrumBarCode = '"+ drumCode +@"'
// AND Time2 IS NULL
// ORDER BY Time1 DESC ) ";
// SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql_unBind2, null);
#endregion
#region 绑定注塑机与料筒
string sql = @"
insert into tb_StationAndCylinder(ID, StationID, CylinderID, Time1, StationNo, CylinderNo)
values((select newid()), (select StationID from tb_Station where StationNo = '" + machineCode + @"'),
(select CylinderID from tb_Cylinder where CylinderNo = '" + drumCode + @"'),
(select getdate()), '" + machineCode + @"','" + drumCode + @"' )
";
res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
errorReason = "";
#endregion
}
else
{
res = 0;
errorReason = "当前注塑机生产产品与料筒的原料不匹配";
}
#endregion
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
errorReason = ex.Message;
return res;
}
}
///
/// 绑定注塑机与料筒(双料筒)
///
/// 注塑机(实际传的是工位号,一个工位就是一个注塑机)
/// 料筒
///
///
public static int BindMachineAndDrum2(string machineCode, string drumCode1, string drumCode2, out string errorReason)
{
int res = 0;
errorReason = "";
try
{
#region 查产品(一个或两个,逗号分隔)
string productpartNo = "";
string sqlGetproductPartNo = @"
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
";
object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sqlGetproductPartNo, null);
if (aa != null)
{
productpartNo = aa.ToString();
}
else
{
errorReason = "根据当前机台查找不到计划生产的产品,请查看生产计划";
return res;
}
#endregion
#region 查原料(两个)
string meaa = @"
SELECT TOP 1 BarCode
FROM tb_CylinderAndRaw
WHERE DrumBarCode = '" + drumCode1 + @"'
AND Time2 IS NULL
ORDER BY Time1 DESC
";
object bb = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, meaa, null);
if (bb != null)
{
string stockNo = "";
string partNo = "";
string batchNo = "";
GetCode(bb.ToString(), out stockNo, out batchNo, out partNo);
string particlePartNo = partNo;
string sqlGetProductAndMetiral = @" SELECT * FROM tb_Bom WHERE PartNo1 = '" + productpartNo + @"' AND PartNo2 = '" + particlePartNo + @"' ";
DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sqlGetProductAndMetiral, null);
if (dt != null && dt.Rows.Count > 0)
{
string mebb = @"
SELECT TOP 1 BarCode
FROM tb_CylinderAndRaw
WHERE DrumBarCode = '" + drumCode2 + @"'
AND Time2 IS NULL
ORDER BY Time1 DESC
";
object cc = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, mebb, null);
if (cc != null)
{
string stockNo2 = "";
string partNo2 = "";
string batchNo2 = "";
GetCode(cc.ToString(), out stockNo2, out batchNo2, out partNo2);
particlePartNo = partNo2;
string sqlGetProductAndMetiral2 = @" SELECT * FROM tb_Bom WHERE PartNo1 = '" + productpartNo + @"' AND PartNo2 = '" + particlePartNo + @"' ";
DataTable dt2 = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sqlGetProductAndMetiral, null);
if (dt2 != null && dt2.Rows.Count > 0)
{
#region 先解绑之前的注塑机与料筒
string sql_unBind = " update tb_StationAndCylinder2 set Time2 = getdate() where StationID = (select StationID from tb_Station where StationNo = '" + machineCode + @"') ";
SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql_unBind, null);
string sql_unBind2 = @" update tb_StationAndCylinder2 set Time2 = getdate() where CylinderID = ( SELECT top 1 CylinderID
FROM tb_CylinderAndRaw
WHERE DrumBarCode = '" + drumCode1 + @"'
AND Time2 IS NULL
ORDER BY Time1 DESC ) ";
SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql_unBind2, null);
string sql_unBind3 = @" update tb_StationAndCylinder2 set Time2 = getdate() where CylinderID = ( SELECT top 1 CylinderID
FROM tb_CylinderAndRaw
WHERE DrumBarCode = '" + drumCode2 + @"'
AND Time2 IS NULL
ORDER BY Time1 DESC ) ";
SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql_unBind3, null);
#endregion
#region 绑定注塑机与料筒
string sql = @"
insert into tb_StationAndCylinder2(ID, StationID, CylinderID1, CylinderID2, Time1)
values((select newid()), (select StationID from tb_Station where StationNo = '" + machineCode + @"'),
(select CylinderID from tb_Cylinder where CylinderNo = '" + drumCode1 + @"'),
(select CylinderID from tb_Cylinder where CylinderNo = '" + drumCode2 + @"'),
(select getdate()))
";
res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
errorReason = "";
#endregion
}
else
{
errorReason = "当前注塑机生产产品" + productpartNo + "与料筒的原料" + particlePartNo + "不匹配";
return res;
}
}
else
{
errorReason = "根据当前料筒号" + drumCode2 + "查找不到原料,请进行绑定操作";
return res;
}
}
else
{
errorReason = "当前注塑机生产产品" + productpartNo + "与料筒的原料" + particlePartNo + "不匹配";
return res;
}
}
else
{
errorReason = "根据当前料筒号" + drumCode2 + "查找不到原料,请进行绑定操作";
return res;
}
#endregion
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
errorReason = ex.Message;
return res;
}
}
///
/// 解绑料筒的绑定关系
///
///
///
///
public static int ClearDrum(string drumCode, out string errorReason)
{
int res = 0;
try
{
string sql = @"
update tb_CylinderAndRaw set Time2 = (select getdate())
where CylinderID = (select CylinderID from tb_Cylinder where CylinderNo = '" + drumCode + @"')
and Time2 is null;
update tb_StationAndCylinder set Time2 = (select getdate())
where CylinderID = (select CylinderID from tb_Cylinder where CylinderNo = '" + drumCode + @"')
and Time2 is null;
";
res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
errorReason = "";
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
errorReason = ex.Message;
return res;
}
}
public static bool UnBindStationAndCylinder(string machineCode, string drumCode, out string errorReason)
{
errorReason = "";
bool res = false;
try
{
string sql = @"
insert into tb_JbStationAndCylinder([StationID]
,[CylinderID]
,[Time1]
,[StationNo]
,[CylinderNo])
select [StationID]
,[CylinderID]
,[Time1]
,[StationNo]
,[CylinderNo]
from tb_StationAndCylinder
where StationNo = '" + machineCode + @"' and CylinderNo = '" + drumCode + @"';
delete from tb_StationAndCylinder where StationNo = '" + machineCode + @"' and CylinderNo = '" + drumCode + @"';
";
int i = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (i >= 1)
{
res = true;
}
else
{
res = false;
errorReason = "料筒与机台未进行绑定,无需解绑";
}
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
errorReason = ex.Message;
res = false;
}
return res;
}
#region 工具
///
/// 解析条码(一维码返回存货代码,二维码返回零件号)
///
/// 条码
/// 存货代码
/// 批次
/// /// 零件号
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)
{
stockNo = ""; //存货代码
batchNo = ""; //批次
partNo = ""; //零件号
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
}
}
///
/// 转换字符串编码
///
///
///
public static string EncodingStr(String str)
{
Encoding utf8 = Encoding.UTF8;
Encoding defaultCode = Encoding.Default;
byte[] utf8Bytes = defaultCode.GetBytes(str);
byte[] defaultBytes = Encoding.Convert(utf8, defaultCode, utf8Bytes);
char[] defaultChars = new char[defaultCode.GetCharCount(defaultBytes, 0, defaultBytes.Length)];
defaultCode.GetChars(defaultBytes, 0, defaultBytes.Length, defaultChars, 0);
return new string(defaultChars);
}
#endregion
#region WMS接口
///
/// 根据条码查询产线ID
/// lx 20190610
///
///
///
public static DataTable GetLineIDByBarcode(string barcode)
{
DataTable res = new DataTable();
try
{
string sql = @" SELECT [StationID]
,[LineID]
FROM tb_Station
WHERE StationID = ( SELECT TOP 1 StationID
FROM tb_BarCode
WHERE BarCode = '" + barcode + @"' ) ";
res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return res;
}
}
///
/// 根据产线ID查询工厂ID
/// lx 20190610
///
///
///
public static DataTable GetFactoryIDByLineId(string lineID)
{
DataTable res = new DataTable();
try
{
string sql = @" SELECT FactoryID
FROM tb_Place
WHERE PlaceID = (
SELECT PlaceID FROM tb_Line WHERE LineID = '" + lineID + @"'
) ";
res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return res;
}
}
///
/// 根据id查询指定值
///
///
///
///
public static string GetNoByID(string id, string name)
{
string res = "";
try
{
string queryName = "";
string tableName = "";
switch (name.ToLower().Trim())
{
case "lineid":
queryName = " LineName ";
tableName = " tb_Line ";
break;
case "factoryid":
queryName = " FactoryName ";
tableName = " tb_Factory ";
break;
}
string sql = @" select " + queryName + " from " + tableName + " where " + name + " = '" + id + "' ";
res = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null).ToString();
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return res;
}
}
///
/// 喷涂报废、合格接口
///
///
///
///
///
///
///
public static string WMSSpraying(string barcode, int isPass, string stcokNo, string partNo, string batchNo,ref string colorName,ref string productName,ref string carType)
{
JsonModel model = new JsonModel();
model.Result = "0";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = "";
model.DataList = null;
string lu_code = "";
int repaint = 0;
try
{
#region 目前全部存储一维码,将二维码转换为一维码
if (barcode.Contains("."))
{
string newCode = Function.TransToBarCodeOne(barcode);
if (!string.IsNullOrEmpty(newCode) && newCode.Length ==20)
{
barcode = newCode;
Function.GetCode(barcode, out stcokNo, out batchNo, out partNo);
}
else
{
model.Result = "0";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = "条码" + barcode + "在系统中不存在,或者格式不正确!";
model.DataList = null;
return JSONTools.ScriptSerialize>(model);
}
}
#endregion
#region 是否允许发送给wms 返喷判断 合格或不合格同检测记录是否一致,报废转合格,已报工校验, 读取返喷状态和颜色状态
if (string.IsNullOrWhiteSpace(stcokNo))
{
model.Result = "0";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = barcode + "的存货代码为空,请维护基础信息!";
model.DataList = null;
return JSONTools.ScriptSerialize>(model);
}
string msg = string.Empty;
if(AllowSendToWms(barcode,isPass, ref repaint,ref msg,ref lu_code, ref colorName, ref productName, ref carType) == false)
{
model.Result = "0";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = msg;
return JSONTools.ScriptSerialize>(model);
}
#endregion
#region 转换零件号,并查找油漆件的零件号
LogHelper.WriteSysLogBase("【转换零件号】:barcode:" + barcode, MethodBase.GetCurrentMethod().Name);
if (!string.IsNullOrWhiteSpace(stcokNo))
{
if (string.IsNullOrWhiteSpace(lu_code))
{
model.Result = "0";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = barcode + "的油漆件的零件号不存在!";
model.DataList = null;
return JSONTools.ScriptSerialize>(model);
}
}
else
{
model.Result = "0";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = barcode + "的零件号为空,请维护零件号!";
model.DataList = null;
return JSONTools.ScriptSerialize>(model);
}
#endregion
#region 组织参数
List list = new List();
WMS03Model wmsM = new WMS03Model();
wmsM.BarCode = barcode;
wmsM.WmsBarCode = "";
wmsM.LU_Code = lu_code;
wmsM.Batch = batchNo;
wmsM.Q_level = "";
wmsM.CreationTime = DateTime.Now;
wmsM.IsOk = isPass;
wmsM.Ok_Status = isPass.ToString();
wmsM.FactoryId = 0;
wmsM.LineId = 0;
wmsM.WmsRead = 1;
wmsM.ReadTime = null;
wmsM.Remark = "";
wmsM.Repaint = repaint.ToString();
wmsM.ColorName = colorName;
#region 产线及工厂ID
LogHelper.WriteSysLogBase("【添加产线ID】barcode:" + barcode, MethodBase.GetCurrentMethod().Name);
string lineid = ConfigurationManager.AppSettings["LineID"].ToString().Trim();
int lineId = 0;
Int32.TryParse(lineid, out lineId);
wmsM.LineId = lineId;
#endregion
list.Add(wmsM);
#endregion
#region 调用WMS接口前记录数据
try
{
string sql_bf = @" INSERT INTO [tb_StockIn_beif]
([ID]
,[barcode]
,[pass]
,[createTime])
VALUES
((select newid())
,'" + barcode + @"'
,'" + isPass.ToString() + @"'
,(select getdate())) ";
SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql_bf, null);
}
catch(Exception ex)
{
model.Result = "0";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = "调用接口前,保存入tb_StockIn_beif表失败,原因:"+ex.Message;
model.DataList = null;
return JSONTools.ScriptSerialize>(model);
}
#endregion
#region 调用WMS Web Service
string res = string.Empty;
try
{
WebService.WebReference.JsonService webService = GetWebService();
string jsonParam = " [{\"ServiceType\":\"AddMesData\",\"OperName\":\"ADMIN\"}]";
string strJson = "[25," + JSONTools.ScriptSerialize>(list) + "]";
//res = webService.AddData(jsonParam, strJson);
res = "true";
LogHelper.WriteSysLogBase("条码:" + barcode + "调用WMS入库接口,参数:strJson = " + strJson + "返回结果:" + res, MethodBase.GetCurrentMethod().Name);
}
catch(Exception ex)
{
model.Result = "0";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = $"调用WMS接口[{ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString()}]异常,原因:" + ex.Message;
model.DataList = null;
return JSONTools.ScriptSerialize>(model);
}
#endregion
#region 调用,返回结果
#region 调用是否成功,若成功则存入数据库,WMS调用成功则无返回结果
if (res.ToUpper() == "TRUE")
{
try
{
string sql = @" INSERT INTO [tb_StockIn]
([ID]
,[barcode]
,[pass]
,[createTime],Repaint)
VALUES
((select newid())
,'" + barcode + @"'
,'" + isPass.ToString() + @"'
,(select getdate()),'" + repaint + "') ";
SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
model.Result = "1";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = " 成功";
}
catch(Exception ex)
{
model.Result = "0";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = "Wms接口传递成功,但是存入tb_StockIn失败,原因:" + ex.Message;
}
}
else
{
model.Result = "0";
model.ResultType = "Result";
model.ResultRowsCount = "0";
model.ErrReason = "Wms接口返回错误,错误信息:"+ res;
}
#endregion
return JSONTools.ScriptSerialize>(model);
#endregion
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
model.Result = "0";
model.ErrReason =$"执行方法[WMSSpraying]发生异常,原因" + ex.Message;
return JSONTools.ScriptSerialize>(model);
}
}
///
/// WMS是否移库,true:未移库允许报废转合格 false:已经移库,无法操作报废转合格
///
///
///
static bool GetWmsCompleteState(string sjBarCode)
{
string jsonParam = " [{\"ServiceType\":\"GetMesData\",\"BarCode\":\""+sjBarCode+"\"}]";
WebService.WebReference.JsonService webService = GetWebService();
string rst = webService.GetData(jsonParam);
return true;
}
///
/// 是否允许发送给wms 是否质检等判断
///
///
/// 0-不合格;1-合格 9-返喷 8-其它
/// pRepaint 只存在返喷 Repaint =1 只存在其它 Repaint =3 既存在返喷又存在其它 Repaint =4
///
static bool AllowSendToWms(string oneBarCode, int state,
ref int pRepaint,ref string errorMssg ,ref string paintColor, ref string colorName, ref string productName,ref string carType)
{
if (string.IsNullOrEmpty(oneBarCode)) return false;
DataTable inspectTable = GetInspectResultTable($"{oneBarCode}");
if (inspectTable.Rows.Count == 0)
{
errorMssg = "没有进行质量判定,不能入库";
return false;
}
colorName = inspectTable.Rows[0]["remark1"].ToString();
productName = inspectTable.Rows[0]["remark2"].ToString();
carType = inspectTable.Rows[0]["CarType"].ToString();
paintColor = inspectTable.Rows[0]["remark1"].ToString();
//返喷状态
int rePaint = GetRepainState(inspectTable);
pRepaint = rePaint;
string lastState = string.Empty;
if (inspectTable.Rows.Count > 1)
{
lastState = inspectTable.Rows[1]["inspectResult"].ToString();
}
//返喷状态
pRepaint = GetRapaintState(inspectTable);
//合格 1 最近一条是报废记录,可以重发. 否则不可以.
if (state == 1)
{
//第一次合格
if (string.IsNullOrEmpty(lastState))
{
return true;
}
else
{
//上一次是合格
if (lastState.Contains("合格"))
{
errorMssg = $"条码[{oneBarCode}]已判定[合格],不需要重复判定为[合格].";
return false;
}
else if (lastState.Contains("报废"))
{
errorMssg = $"条码[{oneBarCode}]已判定[报废],不能重新判定[合格].";
return false;
}
else
{
return true;
}
}
#region 原来的
//if (inspectTable.Rows.Count > 1) //有多条记录,判定前一条记录状态. 若只有一条记录,就是允许的
//{
// if (rePaint == 0) //没返喷的合格,
// {
// if (IsStockInAll(oneBarCode))
// {
// string lastRst = inspectTable.Rows[1]["inspectResult"].ToString();
// if (lastRst.Contains("报废")) //允许报废转合格
// {
// errorMssg = $"条码[{oneBarCode}]已报废,不能重新报工.";
// return false;
// }
// errorMssg = $"条码[{oneBarCode}]已报工,不能重新报工.";
// return false;
// }
// }
// else //存在返喷的合格
// {
// if (IsStockInAll(oneBarCode, true))
// {
// string lastRst = inspectTable.Rows[1]["inspectResult"].ToString();
// if (lastRst.Contains("报废")) //允许报废转合格
// {
// return true;
// }
// if (lastRst.Contains("打磨")) //允许返喷二次判定为合格
// {
// return true;
// }
// if (lastRst.Contains("其它")) //允许其他转合格
// {
// return true;
// }
// errorMssg = $"条码[{oneBarCode}]存在返喷报工,不能重新报工." + inspectTable.Rows.Count + "[" + inspectTable.Rows[0]["ID"].ToString();
// return false;
// }
// }
//}
#endregion
}
//不合格报废0 有报工记录不能重发
else if (state == 0)
{
//第一次操作
if (string.IsNullOrEmpty(lastState))
{
return true;
}
//上次合格,这次转报废,需要wms给true
if (lastState.Contains("合格"))
{
bool wmsAllow = GetWmsCompleteState(oneBarCode);
if(wmsAllow == false)
{
errorMssg = $"条码[{oneBarCode}]在Wms已移库,不允许重新判定为[报废].";
return false;
}
else
{
return true;
}
}
if (lastState.Contains("报废"))
{
errorMssg = $"条码[{oneBarCode}]已报废,不需要重复判定为[报废].";
return false;
}
return true;
//if (rePaint == 0)
//{
// if (IsStockInAll(oneBarCode))
// {
// errorMssg = $"条码[{oneBarCode}]已报工,不能重新报工.";
// return false;
// }
//}
//if (inspectTable.Rows.Count > 1)
//{
// if (inspectTable.Rows[1]["inspectResult"].ToString().Contains("报废"))//只要上一次为报废,就不能进行任何一项其他判定
// {
// errorMssg = $"条码[{oneBarCode}]已报废,不能重新报工.";
// return false;
// }
// else if (inspectTable.Rows[0]["inspectResult"].ToString().Contains("其它") && inspectTable.Rows[1]["inspectResult"].ToString().Contains("其它"))
// {
// errorMssg = $"条码[{oneBarCode}]已经存在其它状态,不能重新判定为其它状态.";
// return false;
// }
// else if (inspectTable.Rows[0]["inspectResult"].ToString().Contains("打磨") && inspectTable.Rows[1]["inspectResult"].ToString().Contains("打磨"))
// {
// errorMssg = $"条码[{oneBarCode}]已经存在返喷状态,不能重新判定为返喷状态.";
// return false;
// }
//}
}
//其它状态
else if(state == 8)
{
//第一次合格
if (string.IsNullOrEmpty(lastState))
{
return true;
}
//上次合格,这次转其它,需要wms给true
if (lastState.Contains("合格"))
{
bool wmsAllow = GetWmsCompleteState(oneBarCode);
if (wmsAllow == false)
{
errorMssg = $"条码[{oneBarCode}]在Wms已移库,不允许重新判定为[其它].";
return false;
}
else
{
return true;
}
}
else if (lastState.Contains("报废"))
{
errorMssg = $"条码[{oneBarCode}]已判定[报废],不能重新判定[其它].";
return false;
}
if (lastState.Contains("其它"))
{
errorMssg = $"条码[{oneBarCode}]已判定为[其它],不需要重复判定为[其它].";
return false;
}
}
else if(state == 9)
{
//第一次合格
if (string.IsNullOrEmpty(lastState))
{
return true;
}
//上次合格,这次转报废,需要wms给true
if (lastState.Contains("合格"))
{
bool wmsAllow = GetWmsCompleteState(oneBarCode);
if (wmsAllow == false)
{
errorMssg = $"条码[{oneBarCode}]在Wms已移库,不允许重新判定为[返喷].";
return false;
}
else
{
return true;
}
}
else if (lastState.Contains("报废"))
{
errorMssg = $"条码[{oneBarCode}]已判定[报废],不能重新判定[返喷].";
return false;
}
if (lastState.Contains("打磨") )
{
errorMssg = $"条码[{oneBarCode}]已判定为[返喷],不需要重复判定为[返喷].";
return false;
}
}
return true;
}
///
/// 返喷状态 只存在返喷 Repaint =1 只存在其它 Repaint =3 既存在返喷又存在其它 Repaint =4
///
///
///
static int GetRapaintState(DataTable inspectTable)
{
int rePaintCount = inspectTable.AsEnumerable().Count(p => p.Field("inspectResult").Contains("返喷"));
int reOtherCount = inspectTable.AsEnumerable().Count(p => p.Field("inspectResult").Contains("其它"));
if(rePaintCount>0 && reOtherCount > 0)
{
return 4;
}
else if (rePaintCount > 0)
{
return 1;
}
else if (reOtherCount > 0)
{
return 3;
}
else
{
return 0;
}
}
///
/// 计算返喷状态 线边返喷=1,库房判定返喷=2 其它状态=9 正常=0
///
///
///
static int GetRepainState(DataTable inspectTable)
{
int rePaint = 0; //0:未返喷,1:喷涂线边判断返喷 2:物流仓库判定返喷
List paintRows = inspectTable.AsEnumerable().Where(p => p.Field("inspectResult").Contains("打磨")).ToList();
if (paintRows.Count > 0)
{
List wmsPaintRows = paintRows.Where(p => p.Field("inspectResult").Contains("打磨WMS")).ToList();
if (wmsPaintRows.Count > 0)
{
rePaint = 2;
}
else
{
rePaint = 1;
}
}
else
{
List paintRows2 = inspectTable.AsEnumerable().Where(p => p.Field("inspectResult").Contains("其它")).ToList();
if (paintRows2.Count > 0)
{
rePaint = 9;
}
else
{
rePaint = 0;
}
//rePaint = 0;
}
return rePaint;
}
///
/// 将二维码转换成相应一维码
///
///
///
public static string TransToBarCodeOne(string barcode)
{
string res = "";
try
{
string sql = @"
SELECT TOP 1 OneBarCode FROM v_Code WHERE BarCode = '" + barcode + @"'
";
object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (aa != null)
{
res = aa.ToString();
}
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return res;
}
}
///
/// 查看是否已入库
///
///
///
public static bool IsStockIn(string barcode)
{
try
{
string sql = @" select * from tb_StockIn where barcode = '" + barcode + "' and pass = '1' ";
DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (dt != null && dt.Rows.Count > 0)
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return false;
}
}
public static bool IsStockInAll(string barcode, bool isRepaint = false)
{
try
{
string sql = @" select * from tb_StockIn where barcode = '" + barcode + "' ";
if(isRepaint == true)
{
sql = @" select * from tb_StockIn where barcode = '" + barcode + "' and (Repaint=2 or Repaint=1) ";
}
DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (dt != null && dt.Rows.Count > 0)
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return false;
}
}
///
/// 查询检验结果,最终是否合格
///
///
///
public static bool barcodeStatus(string barcode)
{
try
{
DataTable dt = new DataTable();
string sql = "";
if (barcode.Contains("."))
{
string barcodeOne = TransToBarCodeOne(barcode);
sql = @" select * from (SELECT * from (select TOP 1 * from tb_InspectResult where barcode = '" + barcode + @"' or barcode = '" + barcodeOne + @"' AND InspectTimes = '1' ORDER BY createTime DESC) aa
UNION
SELECT * from (select TOP 1 * from tb_InspectResult where barcode = '" + barcode + @"' or barcode = '" + barcodeOne + @"' AND InspectTimes = '2' ORDER BY createTime DESC) bb
UNION
SELECT * from (select TOP 1 * from tb_InspectResult where barcode = '" + barcode + @"' or barcode = '" + barcodeOne + @"' AND InspectTimes = '3' ORDER BY createTime DESC) cc) dd order by createTime DESC ";
}
else
{
// sql = @" select * from (SELECT * from (select TOP 1 * from tb_InspectResult where barcode = '" + barcode + @"' AND InspectTimes = '1' ORDER BY createTime DESC) aa
// UNION
// SELECT * from (select TOP 1 * from tb_InspectResult where barcode = '" + barcode + @"' AND InspectTimes = '2' ORDER BY createTime DESC) bb
// UNION
// SELECT * from (select TOP 1 * from tb_InspectResult where barcode = '" + barcode + @"' AND InspectTimes = '3' ORDER BY createTime DESC) cc) dd order by createTime DESC ";
sql = @" select top 1 * from tb_InspectResult where barcode='" + barcode + @"' order by ID desc";
}
dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
LogHelper.WriteSysLogBase("质量判定结果--" + sql + " : " + dt.ToString(), MethodBase.GetCurrentMethod().Name); //查询质量判定结果
if (dt != null && dt.Rows.Count > 0)
{
string inspectResult = dt.Rows[0]["inspectResult"].ToString().Trim();
if ("合格" == inspectResult) //合格报工
{
return true;
}
else
{
return false;
}
}
return false;
}
catch (Exception ex)
{
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return false;
}
}
///
/// 查询是否进行了质量判定
///
///
///
public static bool exsitInspectResult(string barcode)
{
bool res = false;
try
{
string sql = "";
if (barcode.Contains("."))
{
string barcodeOne = TransToBarCodeOne(barcode);
sql = @" select * from tb_InspectResult where barcode = '" + barcode.Trim() + "' or barcode = '" + barcodeOne + @"' ";
}
else
{
sql = @" select * from tb_InspectResult where barcode = '" + barcode.Trim() + "'";
}
DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
LogHelper.WriteSysLogBase("是否进行过质量判定--" + sql + " : " + dt.ToString(), MethodBase.GetCurrentMethod().Name); //查询是否进行过质量判定
if (dt != null && dt.Rows.Count > 0)
{
res = true;
}
else
{
res = false;
}
return res;
}
catch (Exception ex)
{
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return false;
}
}
///
/// 根据塑件码查询所有检验记录
///
///
///
static DataTable GetInspectResultTable(string oneBarCode )
{
string sql = "";
if (oneBarCode.Contains("."))
{
string barcodeOne = TransToBarCodeOne(oneBarCode);
sql = @" select * from tb_InspectResult where barcode = '" + oneBarCode.Trim() + "' or barcode = '" + barcodeOne + @"' order by id desc ";
}
else
{
sql = @" select * from tb_InspectResult where barcode = '" + oneBarCode.Trim() + "' order by id desc";
}
DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
return dt;
}
static string GetPaintLU(string stockNo, string color)
{
string sql = @"select * from tb_PaintColorInfo where StockNo='" + stockNo + @"' and Color='" +
color + @"'";
DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (dt != null && dt.Rows.Count > 0)
{
return dt.Rows[0]["Paint_No"].ToString();
}
return "";
}
///
/// 查询条码是否曾经上喷涂线
///
///
///
public static bool ExistInLine(string barcode)
{
bool res = false;
try
{
string sql = @"
DECLARE @barcode varchar(30);
SET @barcode = '" + barcode + @"';
SELECT Setvalue_BC_Color_No, *
FROM [PRODUCTION_DATA].[dbo].[Paintline_Proddata]
WHERE LTrim(RTrim(Side_1_BC01)) = @barcode
OR LTrim(RTrim(Side_1_BC02))= @barcode
OR LTrim(RTrim(Side_1_BC03))= @barcode
OR LTrim(RTrim(Side_1_BC04))= @barcode
OR LTrim(RTrim(Side_1_BC05))= @barcode
OR LTrim(RTrim(Side_1_BC06))= @barcode
OR LTrim(RTrim(Side_1_BC07))= @barcode
OR LTrim(RTrim(Side_1_BC08))= @barcode
OR LTrim(RTrim(Side_1_BC09))= @barcode
OR LTrim(RTrim(Side_1_BC10))= @barcode
OR LTrim(RTrim(Side_1_BC11))= @barcode
OR LTrim(RTrim(Side_1_BC12))= @barcode
OR LTrim(RTrim(Side_2_BC01)) = @barcode
OR LTrim(RTrim(Side_2_BC02))= @barcode
OR LTrim(RTrim(Side_2_BC03))= @barcode
OR LTrim(RTrim(Side_2_BC04))= @barcode
OR LTrim(RTrim(Side_2_BC05))= @barcode
OR LTrim(RTrim(Side_2_BC06))= @barcode
OR LTrim(RTrim(Side_2_BC07))= @barcode
OR LTrim(RTrim(Side_2_BC08))= @barcode
OR LTrim(RTrim(Side_2_BC09))= @barcode
OR LTrim(RTrim(Side_2_BC10))= @barcode
OR LTrim(RTrim(Side_2_BC11))= @barcode
OR LTrim(RTrim(Side_2_BC12))= @barcode
";
string sqlConnString = ConfigurationManager.ConnectionStrings["SqlConnStringForeign"].ConnectionString;
DataTable dt = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, sql, null);
if (dt != null && dt.Rows.Count > 0)
{
res = true;
}
else
{
// string sql2 = @"
// DECLARE @barcode varchar(30);
// SET @barcode = '" + barcode + @"';
// SELECT Setvalue_BC_Color_No, *
// FROM [PRODUCTION_DATA].[dbo].[Paintline_Loadingdata]
// WHERE LTrim(RTrim(Side_1_BC01)) = @barcode
// OR LTrim(RTrim(Side_1_BC02))= @barcode
// OR LTrim(RTrim(Side_1_BC03))= @barcode
// OR LTrim(RTrim(Side_1_BC04))= @barcode
// OR LTrim(RTrim(Side_1_BC05))= @barcode
// OR LTrim(RTrim(Side_1_BC06))= @barcode
// OR LTrim(RTrim(Side_1_BC07))= @barcode
// OR LTrim(RTrim(Side_1_BC08))= @barcode
// OR LTrim(RTrim(Side_1_BC09))= @barcode
// OR LTrim(RTrim(Side_1_BC10))= @barcode
// OR LTrim(RTrim(Side_1_BC11))= @barcode
// OR LTrim(RTrim(Side_1_BC12))= @barcode
// OR LTrim(RTrim(Side_2_BC01)) = @barcode
// OR LTrim(RTrim(Side_2_BC02))= @barcode
// OR LTrim(RTrim(Side_2_BC03))= @barcode
// OR LTrim(RTrim(Side_2_BC04))= @barcode
// OR LTrim(RTrim(Side_2_BC05))= @barcode
// OR LTrim(RTrim(Side_2_BC06))= @barcode
// OR LTrim(RTrim(Side_2_BC07))= @barcode
// OR LTrim(RTrim(Side_2_BC08))= @barcode
// OR LTrim(RTrim(Side_2_BC09))= @barcode
// OR LTrim(RTrim(Side_2_BC10))= @barcode
// OR LTrim(RTrim(Side_2_BC11))= @barcode
// OR LTrim(RTrim(Side_2_BC12))= @barcode
// ";
// DataTable dt2 = SqlHelper.GetDataDateTable(sqlConnString, CommandType.Text, sql2, null);
// if (dt2 != null && dt2.Rows.Count > 0)
// {
// res = true;
// }
// else
// {
// res = false;
// }
res = false;
}
return res;
}
catch (Exception ex)
{
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return false;
}
}
public static bool AddStockInBarcode(string barcode, out string errorReason)
{
bool res = false;
try
{
string sql = @"
INSERT INTO tb_StockIn
([ID]
,[barcode]
,[pass]
,[createTime])
VALUES
((select newid())
,'" + barcode + @"'
,'1'
,(select getdate()))
";
int result = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (result > 0)
{
res = true;
}
else
{
res = false;
}
errorReason = "";
return res;
}
catch (Exception ex)
{
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
errorReason = ex.ToString();
return res;
}
}
///
/// 根据条码和颜色查找对应油漆件的零件号
///
///
///
public static string GetPaintCoe(string barcode)
{
try
{
string res = "", color = "";
string sql = @"select top 1 * from tb_InspectResult where barcode='" + barcode + @"'";
DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (dt != null && dt.Rows.Count > 0)
{
color = dt.Rows[0]["remark1"].ToString();
}
sql = @"select * from tb_PaintColorInfo where StockNo='" + barcode.Substring(0, 10) + @"' and Color='" +
color + @"'";
dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (dt != null && dt.Rows.Count > 0)
{
res = dt.Rows[0]["Paint_No"].ToString();
}
return res;
}
catch (Exception ex)
{
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return "";
}
}
#endregion
#region 加漆防错接口
///
/// 查询油漆是否存在或在用
///
///
///
///
public static DataTable GetPaintInfoIsUsing(string PaintCode, out string errorReason)
{
DataTable res = new DataTable();
try
{
string sql = @"
select * from tb_PaintInfo where IsUsing=1 and PaintCode = '" + PaintCode + @"'
";
res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
errorReason = "";
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
errorReason = ex.Message;
return res;
}
}
///
/// 查询油漆信息
///
///
///
///
public static DataTable GetPaintInfo(string PaintCode, out string errorReason)
{
DataTable res = new DataTable();
try
{
string sql = @"
select * from tb_PaintInfo where PaintCode = '" + PaintCode + @"'
";
res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
errorReason = "";
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
errorReason = ex.Message;
return res;
}
}
public static DataTable IsMatch(string PaintCode, string DrumCode, out string errorReason)
{
DataTable res = new DataTable();
try
{
string sql = @"SELECT dbo.tb_BucketInfo.BucketCode, dbo.tb_PaintInfo.PaintCode
FROM dbo.tb_BucketInfo INNER JOIN
dbo.tb_Paint_Bucket ON dbo.tb_BucketInfo.ID = dbo.tb_Paint_Bucket.BucketID INNER JOIN
dbo.tb_PaintInfo ON dbo.tb_Paint_Bucket.PaintID = dbo.tb_PaintInfo.ID where dbo.tb_BucketInfo.BucketCode='" + DrumCode + "' and dbo.tb_PaintInfo.PaintCode = '" + PaintCode + @"'
";
res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
errorReason = "";
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
errorReason = ex.Message;
return res;
}
}
public static DataTable IsEmpty(string bucketCode, out string errorReason)
{
DataTable res = new DataTable();
try
{
string sql = @"select top 1 PaintCode from tb_AddColorRecord where BucketCode='" + bucketCode + @"' order by ID desc";
res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
errorReason = "";
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
errorReason = ex.Message;
return res;
}
}
public static DataTable IsExitBucketCode(string bucketCode, out string errorReason)
{
DataTable res = new DataTable();
try
{
string sql = @"select ID from tb_BucketInfo where BucketCode='" + bucketCode + @"'";
res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
errorReason = "";
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
errorReason = ex.Message;
return res;
}
}
public static int AddPaint(string PaintCode, string DrumCode, int state, out string errorReason)
{
int res = 0;
try
{
string sql = @"IF EXISTS (SELECT ID FROM dbo.tb_AddColorRecord WHERE BucketCode='" + DrumCode + @"') UPDATE dbo.tb_AddColorRecord SET PaintCode='" + PaintCode + @"',State=" + state + @",CreateTime=GETDATE() WHERE BucketCode='" + DrumCode + @"';
IF NOT EXISTS (SELECT ID FROM dbo.tb_AddColorRecord WHERE BucketCode='" + DrumCode + @"') INSERT INTO dbo.tb_AddColorRecord (BucketCode,PaintCode,State) VALUES('" + DrumCode + @"','" + PaintCode + @"'," + state + @");";
res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
errorReason = "";
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
errorReason = ex.Message;
return res;
}
}
public static int ClearBucket(string bucketCode, out string errorReason)
{
int res = 0;
try
{
string sql = @"update dbo.tb_AddColorRecord SET PaintCode='',State=0,CreateTime=GETDATE() WHERE BucketCode='" +
bucketCode + @"'";
res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
errorReason = "";
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
errorReason = ex.Message;
return res;
}
}
public static bool IsExitPaintCode(string paintCode)
{
bool res = false;
try
{
string sql = @"select ID from tb_AddColorRecord where PaintCode='" + paintCode + @"'";
DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (dt != null && dt.Rows.Count > 0)
{
res = true;
}
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
res=false;
}
return res;
}
public static int IsPaint(string paintCode)
{
int res = 1;
try
{
string sql = @"select IsPaint from tb_PaintInfo where PaintCode='" + paintCode + @"'";
DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (dt != null && dt.Rows.Count > 0)
{
res = int.Parse(dt.Rows[0]["IsPaint"].ToString());
}
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
}
return res;
}
public static DataTable GetPaintRecord(out string errorReason)
{
DataTable res = new DataTable();
try
{
//string sql = @"
// select PaintCode,BucketCode,CreateTime, CASE [State] WHEN 0 THEN '空闲' WHEN 1 THEN '绑定' WHEN 2 THEN '清洗' END AS BucketState
// from tb_AddColorRecord order by BucketCode
// ";
string sql = @"select a.PaintCode,a.BucketCode,a.CreateTime, CASE a.[State] WHEN 0 THEN '空闲' WHEN 1 THEN '绑定' WHEN 2 THEN '清洗' END AS BucketState,ISNULL(b.PaintName,'') AS PaintName
from tb_AddColorRecord a LEFT OUTER JOIN dbo.tb_PaintInfo b ON a.PaintCode=b.PaintCode
ORDER by BucketCode ";
res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
errorReason = "";
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
errorReason = ex.Message;
return res;
}
}
#endregion
#region 质检判定
///
/// 获取班次,规定早8至晚8为A班
///
///
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班";
}
}
///
/// 判断传入时间是否在工作时间段内
///
///
///
///
///
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;
}
}
///
/// 根据条码号获取AB侧
///
///
///
public static string GetSide(string barcode)
{
string res = "";
try
{
//有一检结果的
string sql = @" select top 1 side from tb_InspectResult where barcode = '" + barcode + "' and InspectTimes = '1' order by createTime desc ";
object aa = SqlHelper.ExecuteScalar(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (aa != null)
{
res = aa.ToString();
}
else
{
if (string.IsNullOrWhiteSpace(res))
{
//没有一检结果,查询老外数据库
string sql_foreign = @"
DECLARE @barcode varchar(30);
SET @barcode = '" + barcode + @"';
SELECT Setvalue_BC_Color_No
FROM [PRODUCTION_DATA].[dbo].[Paintline_Loadingdata]
WHERE LTrim(RTrim(Side_1_BC01)) = @barcode
OR LTrim(RTrim(Side_1_BC02))= @barcode
OR LTrim(RTrim(Side_1_BC03))= @barcode
OR LTrim(RTrim(Side_1_BC04))= @barcode
OR LTrim(RTrim(Side_1_BC05))= @barcode
OR LTrim(RTrim(Side_1_BC06))= @barcode
OR LTrim(RTrim(Side_1_BC07))= @barcode
OR LTrim(RTrim(Side_1_BC08))= @barcode
OR LTrim(RTrim(Side_1_BC09))= @barcode
OR LTrim(RTrim(Side_1_BC10))= @barcode
OR LTrim(RTrim(Side_1_BC11))= @barcode
OR LTrim(RTrim(Side_1_BC12))= @barcode
";
string sqlConnString = ConfigurationManager.ConnectionStrings["SqlConnStringForeign"].ToString();
object bb = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql_foreign, null);
string colorNo = "";
if (bb != null)
{
colorNo = bb.ToString();
if (!string.IsNullOrWhiteSpace(colorNo))
{
res = "A侧";
}
}
else
{
string sql_foreign2 = @"
DECLARE @barcode varchar(30);
SET @barcode = '" + barcode + @"';
SELECT Setvalue_BC_Color_No
FROM [PRODUCTION_DATA].[dbo].[Paintline_Loadingdata]
WHERE LTrim(RTrim(Side_2_BC01)) = @barcode
OR LTrim(RTrim(Side_2_BC02))= @barcode
OR LTrim(RTrim(Side_2_BC03))= @barcode
OR LTrim(RTrim(Side_2_BC04))= @barcode
OR LTrim(RTrim(Side_2_BC05))= @barcode
OR LTrim(RTrim(Side_2_BC06))= @barcode
OR LTrim(RTrim(Side_2_BC07))= @barcode
OR LTrim(RTrim(Side_2_BC08))= @barcode
OR LTrim(RTrim(Side_2_BC09))= @barcode
OR LTrim(RTrim(Side_2_BC10))= @barcode
OR LTrim(RTrim(Side_2_BC11))= @barcode
OR LTrim(RTrim(Side_2_BC12))= @barcode
";
object cc = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql_foreign2, null);
string colorNo2 = "";
if (cc != null)
{
colorNo2 = cc.ToString();
if (!string.IsNullOrWhiteSpace(colorNo2))
{
res = "B侧";
}
}
else
{
string sql_foreign3 = @"
DECLARE @barcode varchar(30);
SET @barcode = '" + barcode + @"';
SELECT Setvalue_BC_Color_No
FROM [PRODUCTION_DATA].[dbo].[Paintline_Proddata]
WHERE LTrim(RTrim(Side_2_BC01)) = @barcode
OR LTrim(RTrim(Side_2_BC02))= @barcode
OR LTrim(RTrim(Side_2_BC03))= @barcode
OR LTrim(RTrim(Side_2_BC04))= @barcode
OR LTrim(RTrim(Side_2_BC05))= @barcode
OR LTrim(RTrim(Side_2_BC06))= @barcode
OR LTrim(RTrim(Side_2_BC07))= @barcode
OR LTrim(RTrim(Side_2_BC08))= @barcode
OR LTrim(RTrim(Side_2_BC09))= @barcode
OR LTrim(RTrim(Side_2_BC10))= @barcode
OR LTrim(RTrim(Side_2_BC11))= @barcode
OR LTrim(RTrim(Side_2_BC12))= @barcode
";
object dd = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql_foreign3, null);
string colorNo3 = "";
if (dd != null)
{
colorNo3 = dd.ToString();
if (!string.IsNullOrWhiteSpace(colorNo3))
{
res = "B侧";
}
}
else
{
string sql_foreign4 = @"
DECLARE @barcode varchar(30);
SET @barcode = '" + barcode + @"';
SELECT Setvalue_BC_Color_No
FROM [PRODUCTION_DATA].[dbo].[Paintline_Proddata]
WHERE LTrim(RTrim(Side_1_BC01)) = @barcode
OR LTrim(RTrim(Side_1_BC02))= @barcode
OR LTrim(RTrim(Side_1_BC03))= @barcode
OR LTrim(RTrim(Side_1_BC04))= @barcode
OR LTrim(RTrim(Side_1_BC05))= @barcode
OR LTrim(RTrim(Side_1_BC06))= @barcode
OR LTrim(RTrim(Side_1_BC07))= @barcode
OR LTrim(RTrim(Side_1_BC08))= @barcode
OR LTrim(RTrim(Side_1_BC09))= @barcode
OR LTrim(RTrim(Side_1_BC10))= @barcode
OR LTrim(RTrim(Side_1_BC11))= @barcode
OR LTrim(RTrim(Side_1_BC12))= @barcode
";
object ee = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql_foreign4, null);
string colorNo4 = "";
if (ee != null)
{
colorNo4 = ee.ToString();
if (!string.IsNullOrWhiteSpace(colorNo4))
{
res = "A侧";
}
}
}
}
}
}
}
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return res;
}
}
///
/// 根据条码在老外库里查询颜色信息
///
///
///
public static string GetProductInfo(string barcode)
{
string res = "";
try
{
string sql = @"
DECLARE @barcode varchar(30);
SET @barcode = '" + barcode + @"';
SELECT Setvalue_BC_Color_No
FROM [PRODUCTION_DATA].[dbo].[Paintline_Proddata]
WHERE LTrim(RTrim(Side_1_BC01)) = @barcode
OR LTrim(RTrim(Side_1_BC02))= @barcode
OR LTrim(RTrim(Side_1_BC03))= @barcode
OR LTrim(RTrim(Side_1_BC04))= @barcode
OR LTrim(RTrim(Side_1_BC05))= @barcode
OR LTrim(RTrim(Side_1_BC06))= @barcode
OR LTrim(RTrim(Side_1_BC07))= @barcode
OR LTrim(RTrim(Side_1_BC08))= @barcode
OR LTrim(RTrim(Side_1_BC09))= @barcode
OR LTrim(RTrim(Side_1_BC10))= @barcode
OR LTrim(RTrim(Side_1_BC11))= @barcode
OR LTrim(RTrim(Side_1_BC12))= @barcode
OR LTrim(RTrim(Side_2_BC01)) = @barcode
OR LTrim(RTrim(Side_2_BC02))= @barcode
OR LTrim(RTrim(Side_2_BC03))= @barcode
OR LTrim(RTrim(Side_2_BC04))= @barcode
OR LTrim(RTrim(Side_2_BC05))= @barcode
OR LTrim(RTrim(Side_2_BC06))= @barcode
OR LTrim(RTrim(Side_2_BC07))= @barcode
OR LTrim(RTrim(Side_2_BC08))= @barcode
OR LTrim(RTrim(Side_2_BC09))= @barcode
OR LTrim(RTrim(Side_2_BC10))= @barcode
OR LTrim(RTrim(Side_2_BC11))= @barcode
OR LTrim(RTrim(Side_2_BC12))= @barcode
";
string sqlConnString = ConfigurationManager.ConnectionStrings["SqlConnStringForeign"].ToString();
object aa = SqlHelper.ExecuteScalar(sqlConnString, CommandType.Text, sql, null);
string colorNo = "";
if (aa != null)
{
colorNo = aa.ToString();
}
//根据颜色代码查颜色
string colorInfo = "";
if (!string.IsNullOrWhiteSpace(colorNo))
{
DataTable dt = new DataTable();
string sql_c = @" select * from tb_Color where ColorCode = '" + colorNo + "' ";
dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql_c, null);
if (dt != null && dt.Rows.Count > 0)
{
res = dt.Rows[0]["Des"].ToString();
colorInfo = dt.Rows[0]["Des"].ToString().Trim() + "," + dt.Rows[0]["ColorCode"].ToString().Trim() + "," + dt.Rows[0]["ColorNo"].ToString().Trim();
}
}
//根据条码查询产品信息
string stockNo = "";
string batchNo = "";
string partNo = "";
Function.GetCode(barcode, out stockNo, out batchNo, out partNo);
string productName = "";
Function.GetInfoByStockNo(stockNo, partNo, out productName);
colorInfo = colorInfo + "," + productName;
res = colorInfo;
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return res;
}
}
///
/// 根据存货代码获得零件名称、颜色名称
///
///
///
///
public static void GetInfoByStockNo(string stockNo, string partNo, out string partName)
{
partName = "";
string sql = "";
try
{
DataTable dt = new DataTable();
if (!string.IsNullOrWhiteSpace(stockNo))
{
sql = " select ProductName from tb_Product where StockNo = '" + stockNo + @"' ";
dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
}
else if (!string.IsNullOrWhiteSpace(partNo))
{
sql = @" select ProductName from tb_Product where PartNo = '" + partNo + @"' ";
dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
}
if (dt != null && dt.Rows.Count > 0)
{
partName = dt.Rows[0]["ProductName"].ToString();
}
else
{
partName = "";
}
LogHelper.WriteSysLogBase("[入参]:stockNo=" + stockNo + ",partNo=" + partNo + "; [出参:]partName=" + partName + ";[sql:] + sql", MethodBase.GetCurrentMethod().Name);
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
}
}
///
/// 保存检验结果
///
///
///
public static int InsertInspect(InspectModel model)
{
int res = 0;
try
{
string sql = @" INSERT INTO [dbo].[tb_InspectResult]
([ID]
,[barcode]
,[side]
,[position]
,[stationNo]
,[workClass]
,[inspectResult]
,[damnPosition]
,[defectID]
,[reason]
,[productInfo]
,[productOption]
,[createTime]
,[InspectTimes]
)
VALUES
('" + model.ID + @"'
,'" + model.barcode + @"'
,'" + model.side + @"'
,'" + model.position + @"'
,'" + model.stationNo + @"'
,'" + model.workClass + @"'
,'" + model.inspectResult + @"'
,'" + model.damnPosition + @"'
,'" + model.defectID + @"'
,'" + model.reason + @"'
,'" + model.productInfo + @"'
,'" + model.productOption + @"'
,(select getdate()), '" + model.InspectTimes + @"'
) ";
res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
LogHelper.WriteSysLogBase("[sql:]" + sql, MethodBase.GetCurrentMethod().Name);
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return res;
}
}
#endregion
#region 247防错
public static DataTable IsMatchDeviceAndPart(string DeviceNo, string PartNo, out string errorReason)
{
DataTable res = new DataTable();
try
{
string sql = @"SELECT * from tb_Mistake_247
where [DeviceNo]='" + DeviceNo + "' and PartNo = '" + PartNo + @"'
";
res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
errorReason = "";
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
errorReason = ex.Message;
return res;
}
}
//public static int InsertInspect(InspectModel model)
#endregion
#region 装配
public static bool WMSInterfaceStockIn(string barcode, string partNo, string batchNo, int isPass, int LineId)
{
bool res = false;
try
{
List list = new List();
WMS03Model wmsM = new WMS03Model();
wmsM.BarCode = barcode;
wmsM.WmsBarCode = "";
wmsM.LU_Code = partNo;
wmsM.Batch = batchNo;
wmsM.Q_level = "";
wmsM.CreationTime = DateTime.Now;
wmsM.IsOk = isPass;
wmsM.Ok_Status = isPass.ToString();
wmsM.FactoryId = 0;
wmsM.LineId = LineId;
wmsM.WmsRead = 1;
wmsM.ReadTime = null;
wmsM.Remark = "";
string lineid = ConfigurationManager.AppSettings["LineID"].ToString().Trim();
int lineId = 0;
Int32.TryParse(lineid, out lineId);
wmsM.LineId = lineId;
list.Add(wmsM);
#region 调用WMS接口前记录数据
string sql_bf = @" INSERT INTO [tb_StockIn_beif]
([ID]
,[barcode]
,[pass]
,[createTime])
VALUES
((select newid())
,'" + barcode + @"'
,'" + isPass.ToString() + @"'
,(select getdate())) ";
SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql_bf, null);
#endregion
#region 调用WMS Web Service
WebService.WebReference.JsonService webService = GetWebService();
string jsonParam = " [{\"ServiceType\":\"AddMesData\",\"OperName\":\"ADMIN\"}]";
//string strJson = "[55," + JSONTools.ScriptSerialize>(list) + "]";
IsoDateTimeConverter timeConverter = new IsoDateTimeConverter();
//这里使用自定义日期格式,如果不使用的话,默认是ISO8601格式
timeConverter.DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss";
//timeConverter.DateTimeFormat = "yyyy'-'MM'-'dd";
string strJson = "[55," + JsonConvert.SerializeObject(list, Formatting.Indented, timeConverter) + "]";
#endregion
#region 调用,返回结果
LogHelper.WriteSysLogBase("条码:" + barcode + "调用WMS入库接口,参数:strJson = " + strJson + "调入时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), MethodBase.GetCurrentMethod().Name);
string resStr = webService.AddData(jsonParam, strJson);
LogHelper.WriteSysLogBase("条码:" + barcode + "调用WMS入库接口,参数:strJson = " + strJson + "返回结果:" + resStr + "返回结果时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), MethodBase.GetCurrentMethod().Name);
//LogHelper.WriteSysLogBase("条码:" + barcode + "调用WMS入库接口,参数:strJson = " + strJson + "返回结果:" + resStr, MethodBase.GetCurrentMethod().Name);
if (resStr.ToLower() == "true")
{
res = true;
}
return res;
#endregion
}
catch (Exception ex)
{
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return res;
}
}
public static string SaveLineDownInfo(string barcode,string cartype,string color,string productName)
{
try
{
#region 执行存储过程操作 1、将上线表Flag改为1;2、插入到下线表中;3、判断是否需要打箱单;4、将pannel8对应标签选中并标记颜色
SqlParameter[] param = new SqlParameter[5];
param[0] = new SqlParameter("@barCode", SqlDbType.NVarChar, 50);
param[0].Value = barcode;
param[1] = new SqlParameter("@carType", SqlDbType.NVarChar, 50);
param[1].Value = cartype;
param[2] = new SqlParameter("@color", SqlDbType.NVarChar, 50);
param[2].Value = color;
param[3] = new SqlParameter("@flag", SqlDbType.Int);
param[3].Value = 1;
param[4] = new SqlParameter("@productName", SqlDbType.NVarChar, 100);
param[4].Value = productName;
#endregion
int res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.StoredProcedure, "ChaimDown", param);
return null;
}
catch(Exception ex)
{
return ex.Message;
}
}
public static bool ExsitBarCodeInDownRecord(string barcode)
{
DataTable res = new DataTable();
try
{
string sql = @"
select * from tb_ChainDown where barcode = '" + barcode + @"'
";
res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
return res.Rows.Count > 0;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return false;
}
}
#endregion
#region TruckBox
public static bool CheckPart(string partName)
{
bool res = false;
try
{
string sql = @"select ID from tb_AddPartInfo where PartName ='" + partName + @"'";
DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (dt != null && dt.Rows.Count > 0)
{
res = true;
}
return res;
}
catch (Exception ex)
{
LogHelper.WriteErrLogBase(ex.ToString(),MethodBase.GetCurrentMethod().Name);
return res;
}
}
public static int SavePart(string partName, string bucketNo,string batchNo, out string errorReason)
{
int res = 0;
try
{
string sql ="";
if (string.IsNullOrWhiteSpace(bucketNo))
{
sql = @"
update tb_AddPartInfo set BatchNo ='" + batchNo + @"',Des1='" + batchNo + @"' where PartName ='" + partName +
@"'
";
}
else
{
if (bucketNo.Contains("1"))
{
sql = @"
update tb_AddPartInfo set BatchNo ='" + batchNo + @"',Des1='" + batchNo + @"' where PartName ='" + partName +
@"'
";
}
else
{
sql = @"
update tb_AddPartInfo set BatchNo ='" + batchNo + @"',Des2='" + batchNo + @"' where PartName ='" + partName +
@"'
";
}
}
res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
errorReason = "";
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
errorReason = ex.Message;
return res;
}
}
public static DataTable GetPartInfo()
{
DataTable res = null;
try
{
string sql = "select PartName from tb_AddPartInfo order by ID";
res = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
return res;
}
catch (Exception ex)
{
LogHelper.WriteLogManager(ex);
LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name);
return res;
}
}
public static bool IsAdd(string address)
{
bool res = false;
try
{
string sql=@"select RealValue from tb_Address_tx where Address='"+ address +@"'";
DataTable dt = SqlHelper.GetDataDateTable(SqlHelper.SqlConnString, CommandType.Text, sql, null);
if (dt != null && dt.Rows.Count > 0)
{
res = dt.Rows[0]["RealValue"].ToString().ToLower() == "true" ? true : false;
}
}
catch (Exception ex)
{
LogErrBLL.AddInfo(ex.ToString(),MethodBase.GetCurrentMethod());
}
return res;
}
///
/// 更新加注完成
///
/// id
/// 失效时间
/// 保质期
///
public static int UpdateDone(int id, string time1, string time2)
{
int res = 0;
try
{
string sql = "";
if (id == 59)
{
sql = @"
update tb_Address_tx set RealValue='" + time1 + @"' where ID=54;
update tb_Address_tx set RealValue='" + time2 + @"' where ID=55;
update tb_Address_tx set RealValue='True' where ID=59;";
}
else if (id == 60)
{
sql = @"
update tb_Address_tx set RealValue='" + time1 + @"' where ID=56;
update tb_Address_tx set RealValue='" + time2 + @"' where ID=57;
update tb_Address_tx set RealValue='True' where ID=60;";
}
res = SqlHelper.ExecuteNonQuery(SqlHelper.SqlConnString, CommandType.Text, sql, null);
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
return res;
}
#endregion
static WebService.WebReference.JsonService GetWebService()
{
WebService.WebReference.JsonService webService = new WebService.WebReference.JsonService();
webService.Url = ConfigurationManager.AppSettings["WMSWebServiceURL"].ToString();
webService.Timeout = 1200000;
return webService;
}
}
}