using System; using System.Collections.Generic; using System.Linq; using System.Web; using ApServerProvider; using System.Collections; using System.Text; using System.Data; using DbCommon; using Estsh.Web.Util; /*************************************************************************************************** * * 作者:贾文涛 * 创建时间:2014.07.17 * 描述:成品发运(JIS)数据库访问类 * 修改日志: * * *************************************************************************************************/ namespace Estsh.Core.Repositories { /// /// 处理成品发运(JIS)的业务数据 /// public class ShippingJISDal : BaseApp { public ShippingJISDal(RemotingProxy remotingProxy) : base(remotingProxy) { } #region 成品发运(JIS) /// /// /// /// /// /// public String getCarNobyOrderNo(string endOrderNo,string endSeq) { lock (_remotingProxy) { Hashtable result = new Hashtable(); String strSql = "SELECT TOP 1 car_no FROM dbo.vw_orders_info WHERE order_no = @orderNo AND slot_no = @slotNo "; if (endOrderNo.Length == 10) { endOrderNo = "2200JIT027" + endOrderNo; } Hashtable values = new Hashtable(2); values.Add("@orderNo", endOrderNo); values.Add("@slotNo", endSeq); object objRes = _remotingProxy.GetScalar(strSql, values); if (null == objRes || objRes is DBNull) { return ""; } else { return Convert.ToString(objRes); } } } /// /// 查询发运数据 /// /// /// /// public DataTable GetShippingJIS(string endCarNO, out Hashtable htRes) { lock (_remotingProxy) { htRes = new Hashtable(); List spParas = new List(); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@endCarNO", endCarNO)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@endOrderNO", "")); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@shippingModel", "JIS")); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@startCarNO", 20)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@factoryCode", 50)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@shippingWarehouseCode", 50)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@custCode", 50)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@shippingDate", 10)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@shippingFormNO", 50)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@retCode", 10)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@retMsg", 512)); DataTable tmpDT = null; try { tmpDT = _remotingProxy.ExecuteSotreProcedure("sys_shipping_data_query", spParas, ref htRes); } catch (System.Exception ex) { htRes.Add("@retMsg", ex.Message); return null; } if (!htRes.Contains("@retCode")) { htRes.Add("@retMsg", "Unknown Error When Execute Store Procedure."); return null; } if (htRes["@retCode"].ToString().ToUpper() == "PASSED") { return tmpDT; } else { return null; } } } /// /// 取回排序单号 /// /// /// public DataTable GetOrderNOViaCarNO(string startCarNO) { lock (_remotingProxy) { string querySen = " SELECT TOP 1 order_no,slot_no,car_no FROM dbo.vw_orders_info WHERE car_no = @carNO "; Hashtable htPara = new Hashtable(); htPara.Add("@carNO", startCarNO); try { DataTable tmpDT = _remotingProxy.GetDataTable(querySen, htPara); return tmpDT; } catch (System.Exception ex) { return null; } } } /// /// 查询车身件的订单 /// /// public DataTable QueryCSPartOrder() { lock (_remotingProxy) { StringBuilder SqlStringBuilder = new StringBuilder(1024); SqlStringBuilder.Append("SELECT DISTINCT "); SqlStringBuilder.Append(" cpm.order_no AS [value], cpm.order_no AS [key] "); SqlStringBuilder.Append("FROM dbo.g_cspart_master cpm "); SqlStringBuilder.Append(" JOIN dbo.g_cspart_detail cpd ON cpm.order_no = cpd.order_no "); SqlStringBuilder.Append("WHERE 1 = 1 "); SqlStringBuilder.Append(" AND cpm.type = 'LXJ' "); SqlStringBuilder.Append(" AND cpm.order_status = 'S' "); SqlStringBuilder.Append("ORDER BY cpm.order_no "); return _remotingProxy.GetDataTable(SqlStringBuilder.ToString()); } } public DataTable GetShippingCSJ(string orderNO, out Hashtable htRes) { lock (_remotingProxy) { htRes = new Hashtable(); List spParas = new List(); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@orderNO", orderNO)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@factoryCode", 50)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@shippingWarehouseCode", 50)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@custCode", 50)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@shippingDate", 10)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@shippingFormNO", 50)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@retCode", 10)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@retMsg", 512)); DataTable tmpDT = null; try { tmpDT = _remotingProxy.ExecuteSotreProcedure("sys_shipping_addition", spParas, ref htRes); } catch (System.Exception ex) { htRes.Add("@retMsg", ex.Message); return null; } if (!htRes.Contains("@retCode")) { htRes.Add("@retMsg", "Unknown Error When Execute Store Procedure."); return null; } if (htRes["@retCode"].ToString().ToUpper().StartsWith("PASSED")) { return tmpDT; } else { return null; } } } /// /// 检查Factory Code, Warehouse Code, Customer Code Invalid or not. /// /// Factory Code /// SAP warehouse Code. /// Customer Code /// -99:Query Exception. /// 0 : Code Invalid. /// 1 : Code Valid. /// public String CheckParamsValid(string factoryCode, string warehouseCode, string custCode) { lock (_remotingProxy) { string querySen = " SELECT TOP 1 factory_code From sys_factory WHERE factory_code = '" + factoryCode + "';"; try { object outFC = _remotingProxy.GetScalar(querySen); if (outFC is DBNull || null == outFC) { return "[" + factoryCode + "] 为无效的工厂代码!"; } } catch (System.Exception ex) { return "查询工厂代码异常!"; } querySen = " SELECT TOP 1 erp_warehouse FROM dbo.sys_warehouse WHERE erp_warehouse = '" + warehouseCode + "';"; try { object outFC = _remotingProxy.GetScalar(querySen); if (outFC is DBNull || null == outFC) { return "[" + warehouseCode + "] 为无效的ERP库存地代码!"; } } catch (System.Exception ex) { return "查询ERP库存地异常!"; } querySen = " SELECT TOP 1 customer_code FROM dbo.sys_customer WHERE customer_code = '" + custCode + "';"; try { object outFC = _remotingProxy.GetScalar(querySen); if (outFC is DBNull || null == outFC) { return "[" + custCode + "] 为无效的客户代码!"; } } catch (System.Exception ex) { return "查询客户代码异常!"; } return "PASSED"; } } /// /// 类似存储过程的方式运行一批语句 /// /// /// public Hashtable ExecMutilSentenceInBatch(string sqlSen, out DataTable resDT) { lock (_remotingProxy) { resDT = null; Hashtable htRes = new Hashtable(); List spParas = new List(); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@tsqlSen", sqlSen)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@retCode", 10)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@retMsg", 512)); try { resDT = _remotingProxy.ExecuteSotreProcedure("sys_exec_tsql_batch", spParas, ref htRes); } catch (System.Exception ex) { htRes.Add("@retCode", "Fail"); htRes.Add("@retMsg", ex.Message); } return htRes; } } /// /// 更新车身件的状态(单号,旧状态,新状态,更新人ID = 登录人ID) /// /// 车身件发运时的单号 /// 旧状态 /// 新状态 /// public Hashtable UpdateCSJStatus(string orderNO, string oldSta, string newSta) { lock (_remotingProxy) { Hashtable htRes = new Hashtable(); List spParas = new List(); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@orderNO", orderNO)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@oldSta", oldSta)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@newSta", newSta)); spParas.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@userID", _remotingProxy.UserID)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@retCode", 10)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@retMsg", 512)); try { _remotingProxy.ExecuteSotreProcedure("sys_shipping_updcs", spParas, ref htRes); } catch (System.Exception ex) { htRes.Add("@retCode", "Fail"); htRes.Add("@retMsg", ex.Message); } if (!htRes.Contains("@retCode")) { htRes.Add("@retCode", "Fail"); htRes.Add("@retMsg", "Unknown Error When Execute Store Procedure."); } if (!htRes.Contains("@retMsg")) { htRes.Add("@retMsg", "Fail"); } return htRes; } } /// /// 更新总成数据状态 /// /// /// /// /// /// public Hashtable UpdateZCStatus(string startCarNO, string endCarNO, string zcOldSta, string zcNewSta) { lock (_remotingProxy) { //return UpdateZCStatus(startCarNO, endCarNO, zcOldSta, zcOldSta, "JISUPD"); Hashtable htRes = new Hashtable(); /* CREATE PROCEDURE [dbo].[sys_upd_shippingdata] @startCarNO VARCHAR(50) = '' --- 开始车号 ,@endCarNO VARCHAR(50) = '' --- 结束车号 ,@oldSta VARCHAR(10) = '' -- 只将状态为 oldSta 的更新为newSta ,@newSta VARCHAR(10) = '' -- 更新为newSta ,@action VARCHAR(512) = '' -- 执行的指令 ,@userID INT = 0 -- ,@retCode VARCHAR(10) OUTPUT -- 成功执行返回PASSED, 错误返回FAILED ,@retMsg VARCHAR(512) OUTPUT -- 执行的结果信息 */ List spParas = new List(); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@startCarNO", startCarNO)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@endCarNO", endCarNO)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@oldSta", zcOldSta)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@newSta", zcNewSta)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Input, "@action", "JISUPD")); spParas.Add(new StoreProcedureParameter(DbType.Int32, ParameterDirection.Input, "@userID", _remotingProxy.UserID)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@retCode", 10)); spParas.Add(new StoreProcedureParameter(DbType.String, ParameterDirection.Output, "@retMsg", 512)); try { _remotingProxy.ExecuteSotreProcedure("sys_upd_shippingdata", spParas, ref htRes); } catch (System.Exception ex) { htRes.Add("@retCode", "Fail"); htRes.Add("@retMsg", ex.Message); } if (!htRes.Contains("@retCode")) { htRes.Add("@retCode", "Fail"); htRes.Add("@retMsg", "Unknown Error When Execute Store Procedure."); } if (!htRes.Contains("@retMsg")) { htRes.Add("@retMsg", "Fail"); } return htRes; } } #endregion } }