using System; using System.Collections; using System.Collections.Generic; using System.Text; using SiaSun.LMS.Interface; using System.Data; using SiaSun.LMS.Persistence; using System.ServiceModel; using System.Reflection; using System.IO; using System.Xml; using System.Linq; using IBatisNet.Common; using log4net; using SiaSun.LMS.Model; [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)] namespace SiaSun.LMS.Implement { [ServiceBehavior(IncludeExceptionDetailInFaults = true, InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple, MaxItemsInObjectGraph = int.MaxValue)] public partial class S_BaseService : SiaSun.LMS.Interface.I_BaseService { public S_BaseService() { dicDataAccess.Add("HouseMap", _P_Base_House); dicDataAccess.Add("ERPMap", _P_Base_ERP); } /// /// 消息转换文档 /// public static XmlDocument xmlDocMessage = null; /// /// 日志操作 /// public ILog _log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); IDictionary dicDataAccess = new Dictionary(); public SiaSun.LMS.Persistence.P_Base_House _P_Base_House = new SiaSun.LMS.Persistence.P_Base_House(); public SiaSun.LMS.Persistence.P_Base_ERP _P_Base_ERP = new P_Base_ERP(); #region ------数据持久层实例 public SiaSun.LMS.Persistence.P_FIELD_DESCRIPTION _P_FIELD_DESCRIPTION = new P_FIELD_DESCRIPTION(); public SiaSun.LMS.Persistence.P_FLOW_ACTION _P_FLOW_ACTION = new SiaSun.LMS.Persistence.P_FLOW_ACTION(); public SiaSun.LMS.Persistence.P_FLOW_NODE _P_FLOW_NODE = new SiaSun.LMS.Persistence.P_FLOW_NODE(); public SiaSun.LMS.Persistence.P_FLOW_PARA _P_FLOW_PARA = new SiaSun.LMS.Persistence.P_FLOW_PARA(); public SiaSun.LMS.Persistence.P_FLOW_TYPE _P_FLOW_TYPE = new SiaSun.LMS.Persistence.P_FLOW_TYPE(); public SiaSun.LMS.Persistence.P_GOODS_CLASS _P_GOODS_CLASS = new SiaSun.LMS.Persistence.P_GOODS_CLASS(); public SiaSun.LMS.Persistence.P_GOODS_MAIN _P_GOODS_MAIN = new SiaSun.LMS.Persistence.P_GOODS_MAIN(); public SiaSun.LMS.Persistence.P_GOODS_TEMPLATE _P_GOODS_TEMPLETE = new SiaSun.LMS.Persistence.P_GOODS_TEMPLATE(); public SiaSun.LMS.Persistence.P_GOODS_TEMPLATE_LIST _P_GOODS_TEMPLETE_LIST = new SiaSun.LMS.Persistence.P_GOODS_TEMPLATE_LIST(); public SiaSun.LMS.Persistence.P_GOODS_TYPE _P_GOODS_TYPE = new SiaSun.LMS.Persistence.P_GOODS_TYPE(); public SiaSun.LMS.Persistence.P_GOODS_PROPERTY _P_GOODS_PROPERTY = new SiaSun.LMS.Persistence.P_GOODS_PROPERTY(); public SiaSun.LMS.Persistence.P_IO_CONTROL _P_IO_CONTROL = new SiaSun.LMS.Persistence.P_IO_CONTROL(); public SiaSun.LMS.Persistence.P_IO_CONTROL_APPLY _P_IO_CONTROL_APPLY = new SiaSun.LMS.Persistence.P_IO_CONTROL_APPLY(); public SiaSun.LMS.Persistence.P_IO_CONTROL_APPLY_HIS _P_IO_CONTROL_APPLY_HIS = new SiaSun.LMS.Persistence.P_IO_CONTROL_APPLY_HIS(); public SiaSun.LMS.Persistence.P_IO_CONTROL_ROUTE _P_IO_CONTROL_ROUTE = new SiaSun.LMS.Persistence.P_IO_CONTROL_ROUTE(); public SiaSun.LMS.Persistence.P_RECORD_DETAIL _P_RECORD_DETAIL = new SiaSun.LMS.Persistence.P_RECORD_DETAIL(); public SiaSun.LMS.Persistence.P_RECORD_LIST _P_RECORD_LIST = new SiaSun.LMS.Persistence.P_RECORD_LIST(); public SiaSun.LMS.Persistence.P_RECORD_MAIN _P_RECORD_MAIN = new SiaSun.LMS.Persistence.P_RECORD_MAIN(); public SiaSun.LMS.Persistence.P_MANAGE_DETAIL _P_MANAGE_DETAIL = new SiaSun.LMS.Persistence.P_MANAGE_DETAIL(); public SiaSun.LMS.Persistence.P_MANAGE_LIST _P_MANAGE_LIST = new SiaSun.LMS.Persistence.P_MANAGE_LIST(); public SiaSun.LMS.Persistence.P_MANAGE_MAIN _P_MANAGE_MAIN = new SiaSun.LMS.Persistence.P_MANAGE_MAIN(); public SiaSun.LMS.Persistence.P_MANAGE_TYPE _P_MANAGE_TYPE = new SiaSun.LMS.Persistence.P_MANAGE_TYPE(); public SiaSun.LMS.Persistence.P_MANAGE_TYPE_PARAM _P_MANAGE_TYPE_PARAM = new SiaSun.LMS.Persistence.P_MANAGE_TYPE_PARAM(); public SiaSun.LMS.Persistence.P_MES_INTERFACE _P_MES_INTERFACE = new SiaSun.LMS.Persistence.P_MES_INTERFACE(); public SiaSun.LMS.Persistence.P_MES_INTERFACE_LOG _P_MES_INTERFACE_LOG = new SiaSun.LMS.Persistence.P_MES_INTERFACE_LOG(); public SiaSun.LMS.Persistence.P_MES_INTERFACE_RETRY _P_MES_INTERFACE_RETRY = new SiaSun.LMS.Persistence.P_MES_INTERFACE_RETRY(); public SiaSun.LMS.Persistence.P_PLAN_DETAIL _P_PLAN_DETAIL = new SiaSun.LMS.Persistence.P_PLAN_DETAIL(); public SiaSun.LMS.Persistence.P_PLAN_LIST _P_PLAN_LIST = new SiaSun.LMS.Persistence.P_PLAN_LIST(); public SiaSun.LMS.Persistence.P_PLAN_MAIN _P_PLAN_MAIN = new SiaSun.LMS.Persistence.P_PLAN_MAIN(); public SiaSun.LMS.Persistence.P_PLAN_TYPE _P_PLAN_TYPE = new SiaSun.LMS.Persistence.P_PLAN_TYPE(); public SiaSun.LMS.Persistence.P_STORAGE_DETAIL _P_STORAGE_DETAIL = new SiaSun.LMS.Persistence.P_STORAGE_DETAIL(); public SiaSun.LMS.Persistence.P_STORAGE_LIST _P_STORAGE_LIST = new SiaSun.LMS.Persistence.P_STORAGE_LIST(); public SiaSun.LMS.Persistence.P_STORAGE_MAIN _P_STORAGE_MAIN = new SiaSun.LMS.Persistence.P_STORAGE_MAIN(); public SiaSun.LMS.Persistence.P_SYS_ITEM _P_SYS_ITEM = new SiaSun.LMS.Persistence.P_SYS_ITEM(); public SiaSun.LMS.Persistence.P_SYS_ITEM_LIST _P_SYS_ITEM_LIST = new SiaSun.LMS.Persistence.P_SYS_ITEM_LIST(); public SiaSun.LMS.Persistence.P_SYS_MENU _P_SYS_MENU = new SiaSun.LMS.Persistence.P_SYS_MENU(); public SiaSun.LMS.Persistence.P_SYS_LOG _P_SYS_LOG = new SiaSun.LMS.Persistence.P_SYS_LOG(); public SiaSun.LMS.Persistence.P_SYS_ROLE _P_SYS_ROLE = new SiaSun.LMS.Persistence.P_SYS_ROLE(); public SiaSun.LMS.Persistence.P_SYS_ROLE_WINDOW _P_SYS_ROLE_WINDOW = new SiaSun.LMS.Persistence.P_SYS_ROLE_WINDOW(); public SiaSun.LMS.Persistence.P_SYS_USER _P_SYS_USER = new SiaSun.LMS.Persistence.P_SYS_USER(); public SiaSun.LMS.Persistence.P_SYS_TABLE_CONVERTER _P_SYS_TABLE_CONVERTER = new SiaSun.LMS.Persistence.P_SYS_TABLE_CONVERTER(); public SiaSun.LMS.Persistence.P_SYS_TABLE_CONVERTER_LIST _P_SYS_TABLE_CONVERTER_LIST = new SiaSun.LMS.Persistence.P_SYS_TABLE_CONVERTER_LIST(); public SiaSun.LMS.Persistence.P_SYS_RELATION _P_SYS_RELATION = new SiaSun.LMS.Persistence.P_SYS_RELATION(); public SiaSun.LMS.Persistence.P_SYS_RELATION_LIST _P_SYS_RELATION_LIST = new SiaSun.LMS.Persistence.P_SYS_RELATION_LIST(); public SiaSun.LMS.Persistence.P_TECHNICS_MAIN _P_TECHNICS_MAIN = new P_TECHNICS_MAIN(); public SiaSun.LMS.Persistence.P_TECHNICS_ROUTE _P_TECHNICS_ROUTE = new P_TECHNICS_ROUTE(); public SiaSun.LMS.Persistence.P_WH_AREA _P_WH_AREA = new SiaSun.LMS.Persistence.P_WH_AREA(); public SiaSun.LMS.Persistence.P_WH_CELL _P_WH_CELL = new SiaSun.LMS.Persistence.P_WH_CELL(); public SiaSun.LMS.Persistence.P_WH_DESCRIPTION _P_WH_DESCRIPTION = new SiaSun.LMS.Persistence.P_WH_DESCRIPTION(); public SiaSun.LMS.Persistence.P_WH_LOGIC _P_WH_LOGIC = new SiaSun.LMS.Persistence.P_WH_LOGIC(); public SiaSun.LMS.Persistence.P_WH_WAREHOUSE _P_WH_WAREHOUSE = new SiaSun.LMS.Persistence.P_WH_WAREHOUSE(); public SiaSun.LMS.Persistence.P_LED_MAIN _P_LED_MAIN = new SiaSun.LMS.Persistence.P_LED_MAIN(); public SiaSun.LMS.Persistence.P_LED_LIST _P_LED_LIST = new SiaSun.LMS.Persistence.P_LED_LIST(); public SiaSun.LMS.Persistence.P_APPLY_TYPE _P_APPLY_TYPE = new SiaSun.LMS.Persistence.P_APPLY_TYPE(); #endregion #region ------业务层实例 /// /// 系统处理类 /// private SiaSun.LMS.Implement.SystemBase _s_systemservice = null; public SiaSun.LMS.Implement.SystemBase _S_SystemService { get { if (_s_systemservice == null) _s_systemservice = new SiaSun.LMS.Implement.SystemBase(); return _s_systemservice; } } /// /// 工作流处理类 /// private SiaSun.LMS.Implement.FlowBase _s_flowservice = null; public SiaSun.LMS.Implement.FlowBase _S_FlowService { get { if (_s_flowservice == null) _s_flowservice = new FlowBase(); return _s_flowservice; } } /// /// 仓库处理类 /// private SiaSun.LMS.Implement.CellBase _s_cellservice = null; public SiaSun.LMS.Implement.CellBase _S_CellService { get { if (_s_cellservice == null) _s_cellservice = new CellBase(); return _s_cellservice; } } /// /// 计划单据类 /// private SiaSun.LMS.Implement.PlanBase _s_planservice = null; public SiaSun.LMS.Implement.PlanBase _S_PlanService { get { if (_s_planservice == null) _s_planservice = new PlanBase(); return _s_planservice; } } /// /// 任务处理类 /// private SiaSun.LMS.Implement.ManageBase _s_manageservice = null; public SiaSun.LMS.Implement.ManageBase _S_ManageService { get { if (_s_manageservice == null) _s_manageservice = new ManageBase(); return _s_manageservice; } } /// /// 物料、库存处理类 /// private SiaSun.LMS.Implement.StorageBase _s_storageservice = null; public SiaSun.LMS.Implement.StorageBase _S_StorageService { get { if (_s_storageservice == null) _s_storageservice = new StorageBase(); return _s_storageservice; } } /// /// 物料类 /// private SiaSun.LMS.Implement.GoodsBase _s_goodsservice = null; public SiaSun.LMS.Implement.GoodsBase _S_GoodsService { get { if (_s_goodsservice == null) _s_goodsservice = new GoodsBase(); return _s_goodsservice; } } /// /// 发送屏幕 /// private SiaSun.LMS.Implement.LedBase _s_ledsservice = null; public SiaSun.LMS.Implement.LedBase _S_LEDService { get { if (_s_ledsservice == null) _s_ledsservice = new LedBase(); return _s_ledsservice; } } #endregion #region 操作方法 public bool Invoke(string sClassType, string sMethod, object[] inParams, out string sResult) { bool bResult = true; sResult = string.Empty; string sClassFullName = string.Format("SiaSun.LMS.Implement.{0}", sClassType); List oPara = inParams.ToList(); oPara.Add(sResult); Type t = this.GetType(); Assembly complierAssembly = t.Assembly; object complierInstance = complierAssembly.CreateInstance(sClassFullName); Type type = complierInstance.GetType(); object[] obj = oPara.ToArray(); object oResult = null; //创建反射的所有公用方法 MethodInfo[] lsMethodInfo = type.GetMethods(); foreach (MethodInfo methodInfo in lsMethodInfo) { if (methodInfo.Name.Equals(sMethod) && oPara.Count.Equals(methodInfo.GetParameters().Length)) { oResult = methodInfo.Invoke(complierInstance, obj); break; } } bResult = Convert.ToBoolean(oResult); sResult = obj[oPara.Count - 1].ToString(); return bResult; } public bool Invoke(string sClassType, string sMethod, object[] inParams, out object[] outParams) { bool bResult = true; string sClassFullName = string.Format("SiaSun.LMS.Implement.{0}", sClassType); List oPara = inParams.ToList(); Type t = this.GetType(); Assembly complierAssembly = t.Assembly; object complierInstance = complierAssembly.CreateInstance(sClassFullName); Type type = complierInstance.GetType(); outParams = oPara.ToArray(); object oResult = null; //创建反射的所有公用方法 MethodInfo[] lsMethodInfo = type.GetMethods(); foreach (MethodInfo methodInfo in lsMethodInfo) { if (methodInfo.Name.Equals(sMethod) && oPara.Count.Equals(methodInfo.GetParameters().Length)) { oResult = methodInfo.Invoke(complierInstance, outParams); break; } } bResult = Convert.ToBoolean(oResult); return bResult; } public void ExecuteNonQuery_ReturnVoid(string strSQL, string DataAccess = "HouseMap") { try { this.dicDataAccess[DataAccess].ExecuteNonQuery(strSQL, "dynamicSQL"); } catch (Exception ex) { throw new Exception(string.Format("ExecuteNonQuery({0}):", strSQL) + ex.Message, ex); } return; } public int ExecuteNonQuery_ReturnInt(string strSQL, string DataAccess = "HouseMap") { try { int intResult = this.dicDataAccess[DataAccess].ExecuteNonQuery(strSQL, "dynamicSQL"); return intResult; } catch (Exception ex) { throw new Exception(string.Format("ExecuteNonQuery({0}):", strSQL) + ex.Message, ex); } } /// /// 执行查询语句返回结果 /// public object ExecuteScalar(string strSQL, string DataAccess = "HouseMap") { try { object objResult = this.dicDataAccess[DataAccess].ExecuteScalar(strSQL); return objResult; } catch (Exception ex) { throw new Exception(string.Format("ExecuteScalar({0}):", strSQL) + ex.Message, ex); } } public DataTable GetList(string strSQL, string DataAccess = "HouseMap") { DataTable dtResult = new DataTable(); try { dtResult = this.dicDataAccess[DataAccess].ExecuteQueryForDataTable("dynamicSQL", strSQL); } catch (Exception ex) { throw ex; } return dtResult; } public DataTable GetTableXmlSql(string statementsql, object paramObject, string DataAccess = "HouseMap") { DataTable dtResult = new DataTable(); try { dtResult = this.dicDataAccess[DataAccess].ExecuteQueryForDataTable(statementsql, paramObject); } catch (Exception ex) { throw ex; } return dtResult; } public ObjectT GetModel(string statementName, object parameterObject, string DataAccess = "HouseMap") { try { return this.dicDataAccess[DataAccess].ExecuteQueryForObject(statementName, parameterObject); } catch (Exception ex) { throw ex; } } public ObjectList GetListObject(string statementName, object parameterObject, string DataAccess = "HouseMap") { try { return this.dicDataAccess[DataAccess].ExecuteQueryForList(statementName, parameterObject); } catch (Exception ex) { throw ex; } } public int Save(DataTable dt, string tablename, string DataAccess = "HouseMap") { int iResult = 0; try { iResult = this.dicDataAccess[DataAccess].SaveDataTable(dt, tablename); } catch (Exception ex) { } return iResult; } #region SYS_LOG /// 生成系统日志 /// 生成系统日志 /// /// 日志事件 /// 操作者 /// 日志级别 /// 日志信息 /// public void CreateSYS_LOG(string LOG_THREAD, string LOG_LOGGER, string LOG_LEVEL, string LOG_MESSAGE) { SiaSun.LMS.Model.SYS_LOG mSYS_LOG = new SYS_LOG(); mSYS_LOG.LOG_THREAD = LOG_THREAD; mSYS_LOG.LOG_LOGGER = LOG_LOGGER; mSYS_LOG.LOG_DATE = SiaSun.LMS.Common.StringUtil.GetCurDateTimeString(); mSYS_LOG.LOG_LEVEL = LOG_LEVEL; mSYS_LOG.LOG_MESSAGE = LOG_MESSAGE; this._P_SYS_LOG.Add(mSYS_LOG); } #endregion #endregion /// /// 根据关键字获得信息描述 /// public string MessageConverter_GetKeyValue(string Key, params object[] Param) { string strMessage = null; try { string strLanguge = SiaSun.LMS.Common.AppSettings.GetValue("Language"); if (xmlDocMessage == null) { xmlDocMessage = MessageConverter_GetXmlDoc(); } System.Xml.XmlNode xmlNode = xmlDocMessage.SelectSingleNode(string.Format("MessageDictionary/Message[@Key='{0}']", Key)); if (xmlNode != null) { //获得消息值 strMessage = string.Format(xmlNode.Attributes[strLanguge].Value.ToString(), (Param == null || Param.Length == 0 ? new object[] { string.Empty } : Param)); } } catch { strMessage = Key; } return string.IsNullOrEmpty(strMessage) ? Key : strMessage; } public string GetDataBaseConnectionString() { string strMessageXmlFile = AppDomain.CurrentDomain.BaseDirectory + string.Format(@"HouseMap.config"); XmlDocument xmldoc = new Common.XmlFiles(strMessageXmlFile); System.Xml.XmlNodeList xmlNode = xmldoc.GetElementsByTagName("dataSource"); string strDBConnection = string.Empty; if (xmlNode != null) { strDBConnection = xmlNode[0].Attributes["connectionString"].Value; } return strDBConnection; } /// /// 根据关键字获得信息描述 /// private System.Xml.XmlDocument MessageConverter_GetXmlDoc() { try { string strMessageXmlFile = AppDomain.CurrentDomain.BaseDirectory + string.Format(@"Files\MessageDictionary.xml"); return new Common.XmlFiles(strMessageXmlFile); } catch (Exception ex) { throw ex; } } /// 系统初始化 /// 系统初始化 /// public void InitSystem() { this._P_Base_House.InitSystem(); } } }