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