using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; using System.ServiceModel; namespace SiaSun.LMS.Implement { [ServiceBehavior(IncludeExceptionDetailInFaults = true, InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple, MaxItemsInObjectGraph = int.MaxValue)] public class GoodsBase : S_BaseService, SiaSun.LMS.Interface.I_GoodsService { public GoodsBase() { } /// /// /// /// 物料编号 /// public SiaSun.LMS.Model.GOODS_MAIN GoodsGetModelGoodsID(int GOODS_ID) { return this._P_GOODS_MAIN.GetModel(GOODS_ID); } public SiaSun.LMS.Model.GOODS_MAIN GoodsGetModelGoodsCode(string GOODS_CODE) { return this._P_GOODS_MAIN.GetModel(GOODS_CODE); } public SiaSun.LMS.Model.GOODS_MAIN GoodsGetModelGoodsCodeContract(string GOODS_CODE, string CONTRACT) { return this._P_GOODS_MAIN.GetModel(GOODS_CODE, CONTRACT); } public SiaSun.LMS.Model.GOODS_CLASS GoodsClassGetModelGoodsClassCode(string GOODS_CLASS_CODE) { return this._P_GOODS_CLASS.GetModel(GOODS_CLASS_CODE); } /// /// /// /// 物料编号 /// public SiaSun.LMS.Model.GOODS_CLASS GoodsClassGetModelGoodsClassID(int GOODS_CLASS_ID) { return this._P_GOODS_CLASS.GetModel(GOODS_CLASS_ID); } /// /// /// /// 物料编号 /// public IList GoodsGetListGoodsClassID(int GOODS_CLASS_ID) { return this._P_GOODS_MAIN.GetListGoodsClassID(GOODS_CLASS_ID); } public IList GoodsPropertyGetListGoodsTypeID(int GOODS_TYPE_ID) { return this._P_GOODS_PROPERTY.GetListGoodsTypeID(GOODS_TYPE_ID); } /// /// 获得GOODS_PROPERTY组合查询条件 /// /// 物料索引 /// 是否完全匹配属性条件 /// PLAN_LIST,MANAGE_LIST,STORAGE_LIST等模式层 /// public bool GetGoodsPropertyCondition(int GOODS_ID, bool bExact, object mObj,out string sGOODS_PROPERTY_CONDITION, out string sResult) { bool bResult = true; sResult = string.Empty; sGOODS_PROPERTY_CONDITION = string.Empty; string GOODS_PROPERTY_CODE = string.Empty; string GOODS_PROPERTY_VALUE = string.Empty; try { SiaSun.LMS.Model.GOODS_MAIN mGOODS_MAIN = this._P_GOODS_MAIN.GetModel(GOODS_ID); if (mGOODS_MAIN == null) { bResult = false; sResult= string.Format("物料索引[{0}]不存在", GOODS_ID); return bResult; } SiaSun.LMS.Model.GOODS_CLASS mGOODS_CLASS = this._P_GOODS_CLASS.GetModel(mGOODS_MAIN.GOODS_CLASS_ID); if (mGOODS_CLASS == null) { bResult = false; sResult= string.Format("物料类别索引[{0}]不存在", mGOODS_MAIN.GOODS_CLASS_ID); return bResult; } IList lsGOODS_PROPERTY = this._P_GOODS_PROPERTY.GetListGoodsTypeID(mGOODS_CLASS.GOODS_TYPE_ID); foreach (SiaSun.LMS.Model.GOODS_PROPERTY mGOODS_PROPERTY in lsGOODS_PROPERTY) { GOODS_PROPERTY_CODE = mGOODS_PROPERTY.GOODS_PROPERTY_CODE; PropertyInfo[] propertys = mObj.GetType().GetProperties(); foreach (PropertyInfo pi in propertys) { //忽略大小写的比较 if (pi.Name.Equals(GOODS_PROPERTY_CODE, StringComparison.CurrentCultureIgnoreCase)) { GOODS_PROPERTY_VALUE = pi.GetValue(mObj, null) == null ? string.Empty : pi.GetValue(mObj, null).ToString(); if (string.IsNullOrEmpty(GOODS_PROPERTY_VALUE)) { if (!bExact) { continue; } sGOODS_PROPERTY_CONDITION = string.Format(" {0} AND {1}", sGOODS_PROPERTY_CONDITION, string.Format(" ({0} IS NULL OR {0} = '')", GOODS_PROPERTY_CODE)); } else { sGOODS_PROPERTY_CONDITION = string.Format(" {0} AND {1}", sGOODS_PROPERTY_CONDITION, string.Format(" {0} = '{1}'", GOODS_PROPERTY_CODE, GOODS_PROPERTY_VALUE)); } } } } sGOODS_PROPERTY_CONDITION =(!string.IsNullOrEmpty(sGOODS_PROPERTY_CONDITION)) ? string.Format(" (1=1 {0}) ", sGOODS_PROPERTY_CONDITION) : "1=1" ; } catch (Exception ex) { bResult = false; sResult=ex.Message; this._log.Fatal(string.Format("调用方法{0}发生异常。", MethodBase.GetCurrentMethod().Name), ex); } return bResult; } /// /// 数据库物料属性动态赋值 /// /// /// /// /// /// /// public bool GoodsPropertySetValue(int GOODS_ID, T objTarget, object objSource, out string sResult) { bool bResult = true; sResult = string.Empty; SiaSun.LMS.Model.GOODS_MAIN mGOODS_MAIN = this._P_GOODS_MAIN.GetModel(GOODS_ID); SiaSun.LMS.Model.GOODS_CLASS mGOODS_CLASS = this._P_GOODS_CLASS.GetModel(mGOODS_MAIN.GOODS_CLASS_ID); IList lsGOODS_PROPERTY = this._P_GOODS_PROPERTY.GetListGoodsTypeID(mGOODS_CLASS.GOODS_TYPE_ID); string GOODS_PROPERTY_CODE = string.Empty; string GOODS_PROPERTY_SOURCE = string.Empty; string GOODS_PROPERTY_VALUE = string.Empty; foreach (SiaSun.LMS.Model.GOODS_PROPERTY mGOODS_PROPERTY in lsGOODS_PROPERTY) { try { GOODS_PROPERTY_CODE = mGOODS_PROPERTY.GOODS_PROPERTY_FIELD; GOODS_PROPERTY_SOURCE = mGOODS_PROPERTY.GOODS_PROPERTY_CODE; if (string.IsNullOrEmpty(GOODS_PROPERTY_CODE)) { continue; } PropertyInfo[] propertys_source = objSource.GetType().GetProperties(); foreach (PropertyInfo pi in propertys_source) { if (pi.Name.Equals(GOODS_PROPERTY_CODE, StringComparison.CurrentCultureIgnoreCase)) { GOODS_PROPERTY_VALUE = pi.GetValue(objSource, null) == null ? string.Empty : pi.GetValue(objSource, null).ToString(); } } if (string.IsNullOrEmpty(GOODS_PROPERTY_VALUE)) { continue; } PropertyInfo[] propertys_in = objTarget.GetType().GetProperties(); foreach (PropertyInfo pi in propertys_in) { if (pi.Name.Equals(GOODS_PROPERTY_CODE, StringComparison.CurrentCultureIgnoreCase)) { pi.SetValue(objTarget, GOODS_PROPERTY_VALUE, null); } } } catch (Exception ex) { bResult = false; sResult = ex.StackTrace; } } return bResult; } /// /// 数据库物料属性是否一致 /// /// /// /// /// /// /// public bool GoodsPropertybEqual(int GOODS_ID, T objTarget, object objSource, out string sResult) { bool bResult = true; sResult = string.Empty; SiaSun.LMS.Model.GOODS_MAIN mGOODS_MAIN = this._P_GOODS_MAIN.GetModel(GOODS_ID); SiaSun.LMS.Model.GOODS_CLASS mGOODS_CLASS = this._P_GOODS_CLASS.GetModel(mGOODS_MAIN.GOODS_CLASS_ID); IList lsGOODS_PROPERTY = this._P_GOODS_PROPERTY.GetListGoodsTypeID(mGOODS_CLASS.GOODS_TYPE_ID); string GOODS_PROPERTY_CODE = string.Empty; string GOODS_PROPERTY_VALUE_Source = string.Empty; string GOODS_PROPERTY_VALUE_Target = string.Empty; foreach (SiaSun.LMS.Model.GOODS_PROPERTY mGOODS_PROPERTY in lsGOODS_PROPERTY) { try { GOODS_PROPERTY_CODE = mGOODS_PROPERTY.GOODS_PROPERTY_FIELD; if (string.IsNullOrEmpty(GOODS_PROPERTY_CODE)) { continue; } PropertyInfo[] propertys_source = objSource.GetType().GetProperties(); foreach (PropertyInfo pi in propertys_source) { if (pi.Name.Equals(GOODS_PROPERTY_CODE, StringComparison.CurrentCultureIgnoreCase)) { GOODS_PROPERTY_VALUE_Source = pi.GetValue(objSource, null) == null ? string.Empty : pi.GetValue(objSource, null).ToString(); } } PropertyInfo[] propertys_in = objTarget.GetType().GetProperties(); foreach (PropertyInfo pi in propertys_in) { if (pi.Name.Equals(GOODS_PROPERTY_CODE, StringComparison.CurrentCultureIgnoreCase)) { GOODS_PROPERTY_VALUE_Target = pi.GetValue(objTarget, null) == null ? string.Empty : pi.GetValue(objTarget, null).ToString(); } } if (GOODS_PROPERTY_VALUE_Source != GOODS_PROPERTY_VALUE_Target) { bResult = false; break; } } catch (Exception ex) { bResult = false; sResult = ex.StackTrace; } } return bResult; } /// /// /// /// /// /// /// public bool GoodsPropertyCheck(int GOODS_ID, Object mObj, out string sResult) { bool bResult = true; sResult = string.Empty; SiaSun.LMS.Model.GOODS_MAIN mGOODS_MAIN = this._P_GOODS_MAIN.GetModel(GOODS_ID); SiaSun.LMS.Model.GOODS_CLASS mGOODS_CLASS = this._P_GOODS_CLASS.GetModel(mGOODS_MAIN.GOODS_CLASS_ID); IList lsGOODS_PROPERTY = this._P_GOODS_PROPERTY.GetListGoodsTypeID(mGOODS_CLASS.GOODS_TYPE_ID); string GOODS_PROPERTY_CODE = string.Empty; string GOODS_PROPERTY_VALUE = string.Empty; foreach (SiaSun.LMS.Model.GOODS_PROPERTY mGOODS_PROPERTY in lsGOODS_PROPERTY) { try { GOODS_PROPERTY_CODE = mGOODS_PROPERTY.GOODS_PROPERTY_CODE; PropertyInfo[] propertys = mObj.GetType().GetProperties(); foreach (PropertyInfo pi in propertys) { if (pi.Name.Equals(GOODS_PROPERTY_CODE)) { GOODS_PROPERTY_VALUE = pi.GetValue(mObj, null).ToString(); } } //是自定义属性 if ("1".Equals(mGOODS_PROPERTY.GOODS_PROPERTY_VALID) && (string.IsNullOrEmpty(GOODS_PROPERTY_VALUE) || GOODS_PROPERTY_VALUE.Equals("%"))) { bResult = false; sResult = string.Format("{0}为必填项", mGOODS_PROPERTY.GOODS_PROPERTY_NAME); return bResult; } } catch (Exception ex) { sResult += ex.Message; } } return bResult; } public SiaSun.LMS.Model.GOODS_TEMPLATE GoodsTemplateGetModel(int TEMPLATE_ID) { return this._P_GOODS_TEMPLETE.GetModel(TEMPLATE_ID); } public IList GoodsTemplateGetList(int GOODS_ID) { return this._P_GOODS_TEMPLETE.GetList(GOODS_ID); } public IList GoodsTemplateListGetList(int TEMPLATE_ID) { return this._P_GOODS_TEMPLETE_LIST.GetList(TEMPLATE_ID); } } }