|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Web;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using DSWeb.Areas.MvcShipping.Models.Message;
|
|
|
|
|
using DSWeb.Areas.MvcShipping.Models.Message.HCHX_DATA;
|
|
|
|
|
using Microsoft.Practices.EnterpriseLibrary.Data;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using DSWeb.Areas.MvcShipping.Comm;
|
|
|
|
|
using System.Data.SqlClient;
|
|
|
|
|
using System.Messaging;
|
|
|
|
|
using System.Text.RegularExpressions;
|
|
|
|
|
|
|
|
|
|
namespace DSWeb.Areas.MvcShipping.DAL.Message
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 期初库存报文
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static class MSGDAL_HCHX_DATA
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 根据入库单号获取报文
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="wmsno"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static string GetXMLMessageWithWMSNO ( string wmsno, string userid, string trade_code,string unit,string ip,out string msg)
|
|
|
|
|
{
|
|
|
|
|
//签名
|
|
|
|
|
TRANSMIT t = new TRANSMIT();
|
|
|
|
|
t.BOXTYPE = "2005";
|
|
|
|
|
|
|
|
|
|
//库存信息
|
|
|
|
|
List<STORE_INIT> storelist = new List<STORE_INIT>();
|
|
|
|
|
|
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
|
sb.Append(@"SELECT
|
|
|
|
|
w.BZTCHNO AS EMS_NO,
|
|
|
|
|
(SELECT goodno FROM code_goods WHERE GID=(SELECT TOP 1 GOODSNAMEID FROM wms_in WHERE ASSOCIATEDNO=w.GID)) AS COP_G_NO,
|
|
|
|
|
(SELECT SUM(GOODSPACK) FROM wms_in WHERE ASSOCIATEDNO = w.GID) AS QTY,
|
|
|
|
|
(select c.UNIT from user_company uc JOIN company c on c.GID = uc.COMPANYID where uc.USERID ='@userid') AS UNIT,
|
|
|
|
|
(select c.TRADE_CODE from user_company uc JOIN company c on c.GID = uc.COMPANYID where uc.USERID = '@userid') AS TRADE_CODE,
|
|
|
|
|
CONVERT(varchar(100), w.WMSDATE, 23) AS CHECK_DATE,
|
|
|
|
|
'C' AS DATA_TYPE,
|
|
|
|
|
WHS_CODE AS WHS_CODE,
|
|
|
|
|
AREANAME AS LOCATION_CODE
|
|
|
|
|
FROM wms w
|
|
|
|
|
WHERE WMSNO in (" + wmsno+") ");
|
|
|
|
|
SqlCommand com = new SqlCommand(sb.ToString());
|
|
|
|
|
SqlParameter sp = new SqlParameter("@userid", userid);
|
|
|
|
|
com.Parameters.Add(sp);
|
|
|
|
|
Database db = DatabaseFactory.CreateDatabase();
|
|
|
|
|
string TRADE_CODE = trade_code;
|
|
|
|
|
string UNIT = unit;
|
|
|
|
|
string EMS_NO = "";
|
|
|
|
|
using (IDataReader reader = db.ExecuteReader(com))
|
|
|
|
|
{
|
|
|
|
|
while (reader.Read())
|
|
|
|
|
{
|
|
|
|
|
EMS_NO = reader["EMS_NO"].ToString();
|
|
|
|
|
|
|
|
|
|
STORE_INIT si = new STORE_INIT();
|
|
|
|
|
si.EMS_NO = reader["EMS_NO"].ToString();
|
|
|
|
|
si.COP_G_NO = reader["COP_G_NO"].ToString();
|
|
|
|
|
si.QTY = reader["QTY"].ToString();
|
|
|
|
|
si.COP_G_NO = reader["COP_G_NO"].ToString();
|
|
|
|
|
si.UNIT =UNIT;
|
|
|
|
|
si.CHECK_DATE = reader["CHECK_DATE"].ToString();
|
|
|
|
|
si.DATA_TYPE = reader["DATA_TYPE"].ToString();
|
|
|
|
|
si.WHS_CODE = reader["WHS_CODE"].ToString();
|
|
|
|
|
si.LOCATION_CODE = reader["LOCATION_CODE"].ToString();
|
|
|
|
|
storelist.Add(si);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
t.EMS_NO = EMS_NO;
|
|
|
|
|
t.TRADE_CODE = TRADE_CODE;
|
|
|
|
|
//序列化XML
|
|
|
|
|
HCHX_DATA hd = new HCHX_DATA();
|
|
|
|
|
hd.TRANSMIT = t;
|
|
|
|
|
hd.STORE_INIT = storelist;
|
|
|
|
|
string xml = XmlHelper.XmlSerialize(hd, Encoding.UTF8, "HCHX_DATA",ip);
|
|
|
|
|
//正则过滤
|
|
|
|
|
var reg = new Regex(@"<STORE_INIT>(\r\n)*\s*(?=<STORE_INIT>)|(?<=</STORE_INIT>)(\r\n)*\s*</STORE_INIT>");
|
|
|
|
|
xml = reg.Replace(xml, "");
|
|
|
|
|
string message = checkNullAndEmpty(hd);
|
|
|
|
|
msg = message;
|
|
|
|
|
if (SendMessage(xml))
|
|
|
|
|
{
|
|
|
|
|
msg = "";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
msg = "发送失败";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return xml;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static string checkNullAndEmpty ( HCHX_DATA data )
|
|
|
|
|
{
|
|
|
|
|
string msg = "";
|
|
|
|
|
if (data.TRANSMIT.EMS_NO == null || data.TRANSMIT.EMS_NO == "")
|
|
|
|
|
{
|
|
|
|
|
msg += "EMS_NO(电子账册号),";
|
|
|
|
|
}
|
|
|
|
|
if (data.TRANSMIT.TRADE_CODE == null || data.TRANSMIT.TRADE_CODE == "")
|
|
|
|
|
{
|
|
|
|
|
msg += "TRADE_CODE(企业编码),";
|
|
|
|
|
}
|
|
|
|
|
if (data.TRANSMIT.BOXTYPE == null || data.TRANSMIT.BOXTYPE == "")
|
|
|
|
|
{
|
|
|
|
|
msg += "BOXTYPE(业务类型),";
|
|
|
|
|
}
|
|
|
|
|
var list = data.STORE_INIT;
|
|
|
|
|
foreach (var si in list)
|
|
|
|
|
{
|
|
|
|
|
if (si.EMS_NO == null || si.EMS_NO == "")
|
|
|
|
|
{
|
|
|
|
|
msg += "EMS_NO(电子账册号),";
|
|
|
|
|
}
|
|
|
|
|
if (si.COP_G_NO == null || si.COP_G_NO == "")
|
|
|
|
|
{
|
|
|
|
|
msg += "COP_G_NO(料号)" + ",";
|
|
|
|
|
}
|
|
|
|
|
if (si.QTY == null || si.QTY == "")
|
|
|
|
|
{
|
|
|
|
|
msg += "QTY(期初数量)" + ",";
|
|
|
|
|
}
|
|
|
|
|
if (si.UNIT == null || si.UNIT == "")
|
|
|
|
|
{
|
|
|
|
|
msg += "UNIT(申报单位)" + ",";
|
|
|
|
|
}
|
|
|
|
|
if (si.CHECK_DATE == null || si.CHECK_DATE == "")
|
|
|
|
|
{
|
|
|
|
|
msg += "CHECK_DATE(期初日期)" + ",";
|
|
|
|
|
}
|
|
|
|
|
if (si.WHS_CODE == null || si.WHS_CODE == "")
|
|
|
|
|
{
|
|
|
|
|
msg += "WHS_CODE(库别)" + ",";
|
|
|
|
|
}
|
|
|
|
|
if (si.LOCATION_CODE == null || si.LOCATION_CODE == "")
|
|
|
|
|
{
|
|
|
|
|
msg += "LOCATION_CODE(储位)" + ",";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return msg;
|
|
|
|
|
}
|
|
|
|
|
public static bool SendMessage(string xml)
|
|
|
|
|
{
|
|
|
|
|
MessageQueue SmsQueue = new MessageQueue();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//string mqPath = "124.133.23.188\\Private$\\testjnzs";//给基站告警用的(wz的程序)
|
|
|
|
|
string mqPath = "124.133.23.188\\Private$\\zsplat2cust";//给基站告警用的(wz的程序)
|
|
|
|
|
mqPath = string.Format(@"FormatName:DIRECT=TCP:{0}", mqPath);
|
|
|
|
|
|
|
|
|
|
SmsQueue.MessageReadPropertyFilter.Body = true;
|
|
|
|
|
SmsQueue.MessageReadPropertyFilter.AppSpecific = true;
|
|
|
|
|
SmsQueue.MessageReadPropertyFilter.Priority = true;
|
|
|
|
|
SmsQueue.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) });
|
|
|
|
|
SmsQueue.Path = mqPath;
|
|
|
|
|
System.Messaging.Message msg = new System.Messaging.Message();
|
|
|
|
|
msg.Body = xml;
|
|
|
|
|
SmsQueue.Send(msg, MessageQueueTransactionType.Single);
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
SmsQueue.Close();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|