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