/// <summary> /// 单据状态跟踪描述信息。 /// </summary> /// <param name="docType"></param> /// <param name="docEntityInfo">单据对应的实体对象</param> /// <param name="remark"></param> /// <param name="operateType"></param> public DocStateTraceInfo(string docType, MB.Orm.Common.BaseModel docEntityInfo, string remark, DocOperateType operateType) { _DOC_TYPE = docType; _OP_STATE = operateType; _REMARK = remark; MB.Orm.Mapping.Att.ModelMapAttribute att = Attribute.GetCustomAttribute(docEntityInfo.GetType(), typeof(MB.Orm.Mapping.Att.ModelMapAttribute)) as MB.Orm.Mapping.Att.ModelMapAttribute; if (att == null) { throw new MB.Util.APPException("在进行DocStateTrace 时对应的实体对象需要配置 MB.Orm.Mapping.Att.ModelMapAttribute", MB.Util.APPMessageType.SysErrInfo); } _OBJECT_TABLE_NAME = att.TableName; _DOC_ID = MB.Util.MyReflection.Instance.InvokePropertyForGet <int>(docEntityInfo, "ID"); _DOC_ORG_SATE = MB.Util.MyReflection.Instance.InvokePropertyForGet <int>(docEntityInfo, "DOC_STATE"); _OP_USER_CODE = MB.WcfService.MessageHeaderHelper.GetCurrentLoginUser().USER_CODE; }
/// <summary> /// 获取数据对象的主键。 /// </summary> /// <param name="baseRule"></param> /// <param name="dataInfo"></param> /// <returns></returns> public object GetObjectKeyValue(IBaseRule baseRule, ObjectDataInfo dataInfo) { string keyName = null; if (dataInfo.DataInDocType != null) { ObjectDataMappingAttribute mappingAtt = AttributeConfigHelper.Instance.GetObjectDataMappingAttribute(dataInfo.DataInDocType); if (mappingAtt != null) { keyName = mappingAtt.KeyName; } } bool isEntity = dataInfo.ObjectData.GetType().IsSubclassOf(typeof(MB.Orm.Common.BaseModel)); if (string.IsNullOrEmpty(keyName) && isEntity) { MB.Orm.Mapping.Att.ModelMapAttribute tattr = Attribute.GetCustomAttribute(dataInfo.ObjectData.GetType(), typeof(MB.Orm.Mapping.Att.ModelMapAttribute)) as MB.Orm.Mapping.Att.ModelMapAttribute; string[] keys = tattr.PrimaryKeys; if (keys != null && keys.Length > 0) { MB.Util.TraceEx.Assert(keys.Length > 1, "业务类:" + baseRule.GetType().FullName + " 主表对象的键值配置不能存在联合主键!"); } keyName = keys[0]; } if (string.IsNullOrEmpty(keyName)) { throw new MB.Util.APPException("业务类:" + baseRule.GetType().FullName + " 的主表对象的主键信息没有配置!", MB.Util.APPMessageType.SysErrInfo); } if (isEntity) { return(MB.Util.MyReflection.Instance.InvokePropertyForGet(dataInfo.ObjectData, keyName)); } else if ((dataInfo.ObjectData as DataRow) != null) { return((dataInfo.ObjectData as DataRow)[keyName]); } else { throw new MB.Util.APPException("获取业务类:" + baseRule.GetType().FullName + " 的主表对象的键值有误!", MB.Util.APPMessageType.SysErrInfo); } }