using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;
using Estsh.Web.Util;
using Estsh.Web.Dal;
using System.Data;
using System.Text;
/***************************************************************************************************
*
* 作者:贾文涛
* 创建时间:2014.07.17
* 描述:成品发运(JIS)业务处理类
* 修改日志:
*
* *************************************************************************************************/
namespace Estsh.Core.Services
{
///
/// 成品发运(JIS)业务处理类
///
public class ShippingJISService
{
private ShippingJISDal dal = new ShippingJISDal(RemotingProxyProvider._remotingProxy);
#region 成品发运(JIS)
///
/// 查询发运数据
///
///
///
public Hashtable getShippingData(Hashtable htReq)
{
string endCarNo = Convert.ToString(htReq["endCarNo"]);
string endOrderNo = Convert.ToString(htReq["endOrderNo"]);
string endSeq = Convert.ToString(htReq["endSeq"]);
string useNo = Convert.ToString(htReq["useNo"]);
if (useNo != null && useNo.Equals("2"))
{
endCarNo = dal.getCarNobyOrderNo(endOrderNo, endSeq);
}
Hashtable result = new Hashtable();
result.Add("@endCarNo",endCarNo);
if (endCarNo != null && !endCarNo.Equals(""))
{
DataTable retDt = dal.GetShippingJIS(endCarNo, out result);
if (retDt != null)
{
ArrayList dataList = DataTypeConvert.NewObject.DataTableToArrayList(retDt);
result.Add("rows", dataList);
}
else
{
result.Add("rows", new ArrayList());
}
if (result.Contains("@startCarNO"))
{
DataTable orderDt = dal.GetOrderNOViaCarNO(result["@startCarNO"].ToString());
if (orderDt != null && orderDt.Rows.Count > 0)
{
result.Add("@startOrderNo", orderDt.Rows[0]["order_no"]);
result.Add("@startSlotNo", orderDt.Rows[0]["slot_no"]);
}
}
}
else
{
result.Add("@retCode","Fail");
result.Add("@retMsg","不能找到此结束单号和序号!");
}
return result;
}
///
/// 查询车身件订单
///
///
public Hashtable GetJISCSJOrderNOList()
{
Hashtable result = new Hashtable();
DataTable retDt = dal.QueryCSPartOrder();
if (retDt != null)
{
ArrayList dataList = DataTypeConvert.NewObject.DataTableToArrayList(retDt);
result.Add("list", dataList);
}
return result;
}
///
/// 查询车身件发运数据
///
///
///
public Hashtable GetShippingCSJ(Hashtable htReq)
{
string csjOrderNo = Convert.ToString(htReq["csjOrderNo"]);
Hashtable result = new Hashtable();
DataTable retDt = dal.GetShippingCSJ(csjOrderNo, out result);
if (retDt != null)
{
ArrayList dataList = DataTypeConvert.NewObject.DataTableToArrayList(retDt);
result.Add("rows", dataList);
}
else
{
result.Add("rows", new ArrayList());
}
return result;
}
///
/// 提交发运数据
///
///
///
public Hashtable SubmitShippingData(Hashtable htReq)
{
Hashtable result = new Hashtable();
string chkCarNo = Convert.ToString(htReq["chkCarNo"]);
string plateNumber = Convert.ToString(htReq["plateNumber"]);
string shippingOrder = Convert.ToString(htReq["shippingOrder"]);
string factory = Convert.ToString(htReq["factory"]);
string shippingLocateName = Convert.ToString(htReq["shippingLocateName"]);
string shippingDate = Convert.ToString(htReq["shippingDate"]);
string costomCode = Convert.ToString(htReq["costomCode"]);
string endCarNo = Convert.ToString(htReq["endCarNo"]);
string csjOrderNo = Convert.ToString(htReq["csjOrderNo"]);
string startCarNo = Convert.ToString(htReq["startCarNo"]);
string retMsg = "";
retMsg = dal.CheckParamsValid(factory, shippingLocateName, costomCode);
if (!"PASSED".Equals(retMsg))
{
result.Add("@retCode", "Fail");
result.Add("@retMsg", retMsg);
return result;
}
Hashtable submitData = new Hashtable();
int queryType = 0;
if (chkCarNo != null && chkCarNo.ToLower().Equals("checked"))
{
submitData = GetShippingCSJ(htReq);
queryType = 1;
}
else
{
submitData = getShippingData(htReq);
queryType = 0;
}
if (submitData != null && submitData.Contains("rows"))
{
ArrayList submitDataList = (ArrayList)submitData["rows"];
if (submitDataList != null && submitDataList.Count > 0)
{
StringBuilder insertSen = new StringBuilder(409600);
string tabName = "WMS_JIS";
string fields = "ZZ_WMSNUM ,ZZ_CARID ,WERKS ,LGORT ,LFDAT ,KUNNR ,MATNR ,LFIMG ,MEINS,ZPOST,ZTIME";
/*
* ,@retCode VARCHAR(10) OUTPUT -- 存储过程返回代码
,@retMsg VARCHAR(512) OUTPUT -- 存储过程返回信息
*/
insertSen.AppendLine(" DECLARE @retCode VARCHAR(10) ");
insertSen.AppendLine(" DECLARE @retMsg VARCHAR(512) ");
insertSen.AppendLine(" DECLARE @ztime VARCHAR(10) ");
insertSen.AppendLine(" SET @ztime = dbo.get_hms(); ");
insertSen.AppendLine(" BEGIN TRY ");
insertSen.AppendLine(" DECLARE @sretCode VARCHAR(10) ");
insertSen.AppendLine(" DECLARE @sretMsg VARCHAR(512) ");
insertSen.AppendLine(" IF EXISTS (SELECT TOP 1 1 FROM WMS_JIS WHERE ZZ_WMSNUM = '" + plateNumber + "') ");
insertSen.AppendLine(" BEGIN ");
insertSen.AppendLine(" SET @sretCode = 'FAILED'; ");
insertSen.AppendLine(" SET @sretMsg = '此发运单号的数据已经上传过。' ");
insertSen.AppendLine(" SELECT @sretCode AS retCode, @sretMsg AS retMsg ");
insertSen.AppendLine(" RETURN; ");
insertSen.AppendLine(" END ");
insertSen.AppendLine(" BEGIN TRAN ");
Hashtable rows = new Hashtable(); ;
for (int rowIdx = 0; rowIdx < submitDataList.Count; rowIdx++)
{
rows.Clear();
rows = (Hashtable)submitDataList[rowIdx];
if (rows["PartNO"].ToString().Length <= 0)
{
result.Add("@retCode", "Fail");
result.Add("@retMsg", "第" + (rowIdx + 1).ToString() + "行的零件号长度为[0]");
return result;
}
if (rows["Unit"].ToString().Length <= 0)
{
result.Add("@retCode", "Fail");
result.Add("@retMsg", "第" + (rowIdx + 1).ToString() + "行的零件单位长度为[0]");
return result;
}
insertSen.AppendLine(" INSERT INTO " + tabName + " (" + fields + ") VALUES (");
insertSen.Append("'" + shippingOrder + "'");
insertSen.Append(",'" + plateNumber + "'");
insertSen.Append(",'" + factory + "'");
insertSen.Append(",'" + shippingLocateName + "'");
insertSen.Append(",'" + shippingDate + "'");
insertSen.Append(",'" + costomCode + "'");
insertSen.Append(",'" + rows["PartNO"].ToString() + "'"); // part_no
insertSen.Append(",'" + rows["Qty"].ToString() + "'"); // qty
insertSen.Append(",'" + rows["Unit"].ToString() + "'"); // UINT
insertSen.Append(",dbo.wms2sap_ymd(dbo.get_ymd()) "); //DATE
insertSen.Append(",dbo.wms2sap_hms(@ztime) "); //DATE
insertSen.Append("); ");
}
insertSen.AppendLine(" UPDATE sys_sn_seed SET value = value + 1 WHERE sn_name = 'SHIPPING_JIS_WSN' ");
if (queryType == 0)
{
insertSen.AppendLine(" UPDATE sys_base SET param_value = '" + endCarNo + "' WHERE param_name = 'SHIPPING_JIS_LastCarNO' ");
}
insertSen.AppendLine(" COMMIT ");
insertSen.AppendLine(" SET @sretCode = 'PASSED'; ");
insertSen.AppendLine(" SET @sretMsg = '所有语句都已执行' ");
insertSen.AppendLine(" END TRY ");
insertSen.AppendLine(" BEGIN CATCH ");
insertSen.AppendLine(" ROLLBACK ");
insertSen.AppendLine(" SET @sretCode = 'FAILED'; ");
insertSen.AppendLine(" SET @sretMsg = ERROR_MESSAGE(); ");
insertSen.AppendLine(" END CATCH ");
insertSen.AppendLine("SELECT @sretCode AS retCode, @sretMsg AS retMsg ");
DataTable resDT;
result = this.dal.ExecMutilSentenceInBatch(insertSen.ToString(), out resDT);
if (result.Contains("@retCode") && result["@retCode"].Equals("PASSED"))
{
if (resDT != null && resDT.Rows.Count > 0)
{
retMsg = resDT.Rows[0]["retMsg"].ToString();
if (!resDT.Rows[0]["retCode"].ToString().StartsWith("PASSED", StringComparison.CurrentCultureIgnoreCase)) //语句执行出错了
{
result.Add("@retCode", "Fail");
result.Add("@retMsg", retMsg);
}
else
{
retMsg= "数据已向SAP提交成功。";
if (queryType == 1)
{
result = this.dal.UpdateCSJStatus(csjOrderNo, "S", "C");
if (result.Contains("@retCode") && result["@retCode"].ToString().ToUpper().Equals("PASSED"))
{
retMsg += ";更新车身件数据成功(" + result["@retMsg"] + ")";
}
else
{
retMsg += ";更新车身件数据失败(" + result["@retMsg"] + ")";
}
}
if (queryType == 0)
{
result = this.dal.UpdateZCStatus(startCarNo, endCarNo, "6", "100");
if (result.Contains("@retCode") && result["@retCode"].ToString().ToUpper().Equals("PASSED"))
{
retMsg += ";更新总成发运数据成功(" + result["@retMsg"] + ")";
}
else
{
retMsg += ";更新总成发运数据失败(" + result["@retMsg"] + ")";
}
}
if (result.Contains("@retMsg"))
{
result.Remove("@retMsg");
result.Add("@retMsg", retMsg);
}
else
{
result.Add("@retMsg", retMsg);
}
}
}
}
}
else
{
result.Add("@retCode", "Fail");
result.Add("@retMsg", "已提交完成或待提交的数据为空!请重新查询数据!");
}
}
return result;
}
#endregion
}
}