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; } } }