コード例 #1
0
 /// <summary>
 /// 单据状态跟踪描述信息。
 /// </summary>
 /// <param name="tableName"></param>
 /// <param name="docType"></param>
 /// <param name="docID"></param>
 /// <param name="userCode"></param>
 /// <param name="remark"></param>
 /// <param name="operateType"></param>
 public DocStateTraceInfo(string tableName, string docType, int docID, string userCode, string remark, DocOperateType operateType)
 {
     _OBJECT_TABLE_NAME = tableName;
     _DOC_TYPE          = docType;
     _DOC_ID            = docID;
     _OP_USER_CODE      = userCode;
     _OP_STATE          = operateType;
     _REMARK            = remark;
 }
コード例 #2
0
        /// <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;
        }
コード例 #3
0
        /// <summary>
        ///  存储单据操作的状态改变操作记录。
        ///  这里有很多特殊的约束:要求主表必须有一个ID、DOC_STATE和LAST_MODIFIED_DATE,同时键值必须是Int32类型。
        /// </summary>
        /// <param name="stateInfo"></param>
        /// <returns></returns>
        public int SaveDocState(string docType, MB.Orm.Common.BaseModel docEntity, string remark, DocOperateType operateType)
        {
            Database db = MB.Orm.Persistence.DatabaseHelper.CreateDatabase();

            return(SaveDocState(db, docType, docEntity, remark, operateType));
        }
コード例 #4
0
        /// <summary>
        /// 存储单据操作的状态改变操作记录。
        /// 这里有很多特殊的约束:要求主表必须有一个ID、DOC_STATE和LAST_MODIFIED_DATE,同时键值必须是Int32类型。
        /// </summary>
        /// <param name="db">连接的数据库</param>
        /// <param name="stateInfo">状态改变的记录信息</param>
        /// <returns>1表示成功,-1表示不成功</returns>
        public int SaveDocState(Database db, string docType, MB.Orm.Common.BaseModel docEntity, string remark, DocOperateType operateType)
        {
            DocStateTraceInfo stateInfo = new DocStateTraceInfo(docType, docEntity, remark, operateType);

            var databaseType = MB.Orm.Persistence.DatabaseHelper.GetDatabaseType(db);

            //在提交之前先检查服务器日期
            MB.Orm.Persistence.EntityDistributedHelper.NewInstance.CheckEntityCanSave(docEntity);

            string    sql   = databaseType == MB.Orm.Enums.DatabaseType.Oracle ? SQL_INSERT_DOC_TRACE.Replace('@', ':') : SQL_INSERT_DOC_TRACE;
            DbCommand dbCmd = db.GetSqlStringCommand(sql);

            if (stateInfo.ID <= 0)
            {
                stateInfo.ID = MB.Orm.Persistence.EntityIdentityHelper.NewInstance.GetEntityIdentity("SYS_DOC_STATE_CHANGED_TRACE");
            }

            //@ID,@DOC_TYPE,@DOC_ID,@DOC_ORG_SATE,@OP_USER_CODE,@OP_DATE,@OP_STATE,@REMARK
            db.AddInParameter(dbCmd, "ID", System.Data.DbType.Int32, stateInfo.ID);
            db.AddInParameter(dbCmd, "DOC_TYPE", System.Data.DbType.String, stateInfo.DOC_TYPE);
            db.AddInParameter(dbCmd, "DOC_ID", System.Data.DbType.Int32, stateInfo.DOC_ID);
            db.AddInParameter(dbCmd, "DOC_ORG_SATE", System.Data.DbType.Int32, (int)stateInfo.DOC_ORG_SATE);
            db.AddInParameter(dbCmd, "OP_STATE", System.Data.DbType.Int32, (int)stateInfo.OP_STATE);
            db.AddInParameter(dbCmd, "OP_USER_CODE", System.Data.DbType.String, stateInfo.OP_USER_CODE);
            db.AddInParameter(dbCmd, "REMARK", System.Data.DbType.String, stateInfo.REMARK);
            //更改原表的单据状态
            string orgObjectSql = string.Format(SQL_UPDATE_DOC_STATE, stateInfo.OBJECT_TABLE_NAME);

            orgObjectSql = databaseType == MB.Orm.Enums.DatabaseType.Oracle ? orgObjectSql.Replace('@', ':') : orgObjectSql;

            DbCommand orgCmd = db.GetSqlStringCommand(orgObjectSql);

            db.AddInParameter(orgCmd, "DOC_STATE", System.Data.DbType.Int32, convertToDocState(db, stateInfo));
            db.AddInParameter(orgCmd, "DOC_ID", System.Data.DbType.Int32, stateInfo.DOC_ID);

            return(MB.RuleBase.Common.DatabaseExecuteHelper.NewInstance.ExecuteNonQuery(db, new DbCommand[] { dbCmd, orgCmd }));
        }