You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

297 lines
14 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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
{
/// <summary>
/// 成品发运JIS业务处理类
/// </summary>
public class ShippingJISService
{
private ShippingJISDal dal = new ShippingJISDal(RemotingProxyProvider._remotingProxy);
#region 成品发运JIS
/// <summary>
/// 查询发运数据
/// </summary>
/// <param name="htReq"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 查询车身件订单
/// </summary>
/// <returns></returns>
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;
}
/// <summary>
/// 查询车身件发运数据
/// </summary>
/// <param name="htReq"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 提交发运数据
/// </summary>
/// <param name="htReq"></param>
/// <returns></returns>
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
}
}