Exemplo n.º 1
0
        /// <summary>
        /// 更新单据表(发起时)
        /// </summary>
        /// <param name="billTableName"></param>
        /// <param name="billId"></param>
        internal void UpdateBillDataWhenStartup(string billTableName, string billId)
        {
            FapTable table = DbSession.QueryFirstOrDefault <FapTable>($"select * from FapTable where TableName='{billTableName}'");

            if (table == null || string.IsNullOrWhiteSpace(table.TableFeature))
            {
                return;
            }

            if (("," + table.TableFeature + ",").IndexOf(",BillFeature,") >= 0)
            {
                //单据数据
                dynamic billData = DbSession.Get(billTableName, billId);
                if (billData == null)
                {
                    return;
                }
                WfProcessInstance process    = DbSession.Get <WfProcessInstance>(ProcessId);
                DynamicParameters parameters = new DynamicParameters();
                parameters.Add("ProcessId", ProcessId);
                IEnumerable <WfTask> tasks = DbSession.QueryWhere <WfTask>("ProcessId=@ProcessId", parameters);
                if (tasks != null && tasks.Count() > 0)
                {
                    billData.CurrApprover = tasks.First().ExecutorEmpUid;
                }
                //更新单据的字段数据
                billData.SubmitTime = PublicUtils.GetSysDateTimeStr();
                billData.BillStatus = BillStatus.PROCESSING;

                DbSession.UpdateDynamicData(billData);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 导出excel数据
        /// </summary>
        /// <param name="model"></param>
        /// <returns>filename</returns>
        public string ExportExcelData(JqGridPostData model)
        {
            string   tableName = model.QuerySet.TableName;
            FapTable ftb       = _dbContext.Table(tableName);
            string   fileName  = $"{ftb.TableComment}_{UUIDUtils.Fid}.xlsx";
            string   filePath  = Path.Combine(Environment.CurrentDirectory, FapPlatformConstants.TemporaryFolder, fileName);
            Pageable pageable  = AnalysisPostData(model);

            pageable.QueryCols = model.QuerySet.ExportCols;
            string sql = pageable.Wraper.MakeExportSql();

            if (pageable.Parameters != null && pageable.Parameters.Count > 0)
            {
                foreach (var param in pageable.Parameters)
                {
                    sql = sql.Replace("@" + param.Key, "'" + param.Value + "'");
                }
            }
            ExportModel em = new ExportModel()
            {
                DataSql = sql, FileName = filePath, TableName = tableName, ExportCols = pageable.QueryCols
            };

            bool result = _officeService.ExportExcel(em);

            return(result ? fileName : "");
        }
Exemplo n.º 3
0
        public string CreateTableSql(FapTable table, IEnumerable <FapColumn> columns)
        {
            StringBuilder sqlBuilder = new StringBuilder();

            //sqlBuilder.AppendLine("-- 创建表");
            sqlBuilder.AppendLine($"CREATE TABLE `{table.TableName}`( ");
            foreach (var fapColumn in columns.OrderBy(c => c.ColOrder))
            {
                sqlBuilder.Append(CreateColumnSql(fapColumn)).Append(",").AppendLine();
                if (fapColumn.IsMultiLang == 1) //多语
                {
                    string fname        = fapColumn.ColName;
                    string description  = fapColumn.ColComment;
                    var    languageList = typeof(MultiLanguage.MultiLanguageEnum).EnumItems();
                    foreach (var lang in languageList)
                    {
                        fapColumn.ColName     = fname + lang.Value;
                        fapColumn.ColComment  = description + lang.Description;
                        fapColumn.IsMultiLang = 0;
                        sqlBuilder.Append(CreateColumnSql(fapColumn)).Append(",").AppendLine();
                    }
                }
            }
            var pkField = columns.FirstOrDefault(f => f.ColType == FapColumn.COL_TYPE_PK);

            if (pkField != null)
            {
                sqlBuilder.Append("PRIMARY KEY (").Append(pkField.ColName).Append("),");
            }
            sqlBuilder.Remove(sqlBuilder.Length - 1, 1);
            sqlBuilder.AppendFormat(")comment='{0}' ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;", table.TableComment).AppendLine();

            return(sqlBuilder.ToString());
        }
Exemplo n.º 4
0
        /// <summary>
        /// 导入数据的具体方法
        /// </summary>
        /// <param name="workbook"></param>
        public override void Import(IWorkbook workbook, SheetMetadata sheetMetadata)
        {
            int sheetCount = workbook.NumberOfSheets;

            if (sheetCount == 0)
            {
                return;
            }
            this.sheetMetadata = sheetMetadata;

            FapTable table = _dataAccessor.Table(tableName);

            if (table == null)
            {
                return;
            }

            //if (mode == ImportMode.FORCE) //强制导入
            //{
            //    _dataAccessor.DeleteExec(tableName);
            //    if (!string.IsNullOrWhiteSpace(table.ExtTable))
            //    {
            //        _dataAccessor.DeleteExec(table.ExtTable);
            //    }
            //}

            ImportDataToTable(workbook, workbook.GetSheetAt(0), this.tableName);
        }
Exemplo n.º 5
0
        public string DropTableSql(FapTable fapTable)
        {
            StringBuilder builder = new StringBuilder();

            //builder.AppendLine("-- 删除表");
            builder.AppendLine($"drop table if exists  {fapTable.TableName};");
            return(builder.ToString());
        }
Exemplo n.º 6
0
        public string DropTableSql(FapTable fapTable)
        {
            StringBuilder builder = new StringBuilder();

            //builder.AppendLine("-- 删除表");
            builder.AppendLine($"if exists(select * from sysobjects where id = object_id(N'[{fapTable.TableName}]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)");
            builder.AppendLine($"drop table {fapTable.TableName};");
            return(builder.ToString());
        }
Exemplo n.º 7
0
        public JsonResult ExportModeClass(string fid)
        {
            FapTable table      = _dbContext.Get <FapTable>(fid);
            var      columns    = _dbContext.QueryWhere <FapColumn>($"TableName='{table.TableName}'").Where(c => c.IsDefaultCol == 0);
            string   modelClass = _dbMetadataContext.GeneraterModelClass(table, columns);

            return(Json(new ResponseViewModel {
                success = true, data = modelClass
            }));
        }
Exemplo n.º 8
0
        /// <summary>
        ///数据属性
        /// </summary>
        /// <returns></returns>
        public PartialViewResult ColumnMetadata(string fid)
        {
            FapTable table = _dbContext.Get <FapTable>(fid);

            JqGridViewModel model = this.GetJqGridModel("FapColumn", (q) =>
            {
                q.GlobalWhere = $"TableName='{table.TableName}' and IsDefaultCol=0";
                q.AddDefaultValue("TableName", table.TableName);
            });

            return(PartialView(model));
        }
Exemplo n.º 9
0
        public override void BeforeDynamicObjectDelete(FapDynamicObject fapDynamicData)
        {
            string   fid      = fapDynamicData.Get("Fid").ToString();
            FapTable fapTable = _dbContext.Get <FapTable>(fid);

            if (fapTable.IsSync == 1)
            {
                throw new FapException("表已经建立,不能再删除!");
            }
            _dbContext.DeleteExec(nameof(FapMultiLanguage), "Qualifier=@Qualifier and LangKey=@LangKey", new Dapper.DynamicParameters(new { Qualifier = MultiLanguageOriginEnum.FapTable.ToString(), LangKey = fapTable.TableName }));
            _dbContext.DeleteExec(nameof(FapTable), "TableName=@TableName", new Dapper.DynamicParameters(new { TableName = fapTable.TableName }));
            _dbContext.DeleteExec(nameof(FapColumn), "TableName=@TableName", new Dapper.DynamicParameters(new { TableName = fapTable.TableName }));
        }
Exemplo n.º 10
0
        public bool TryGetValueByName(string tableName, out FapTable fapTable)
        {
            if (!_initialized)
            {
                Init();
            }
            var result = _allTables.FirstOrDefault <FapTable>(f => f.TableName.Equals(tableName, StringComparison.CurrentCultureIgnoreCase));

            if (result != null)
            {
                fapTable = result;
                return(true);
            }
            fapTable = null;
            return(false);
        }
Exemplo n.º 11
0
        public bool TryGetValue(string fid, out FapTable fapTable)
        {
            if (!_initialized)
            {
                Init();
            }
            var result = _allTables.FirstOrDefault <FapTable>(f => f.Fid == fid);

            if (result != null)
            {
                fapTable = result;
                return(true);
            }
            fapTable = null;
            return(false);
        }
Exemplo n.º 12
0
        public string ExportExcelTemplate(QuerySet querySet)
        {
            querySet.InitWhere = "1=2";
            FapTable ftb      = _dbContext.Table(querySet.TableName);
            string   fileName = $"{ftb.TableComment}_{UUIDUtils.Fid}_模板.xlsx";
            string   filePath = Path.Combine(Environment.CurrentDirectory, FapPlatformConstants.TemporaryFolder, fileName);

            ExportModel em = new ExportModel()
            {
                DataSql = querySet.ToString(), FileName = filePath, TableName = querySet.TableName, ExportCols = querySet.QueryCols
            };

            bool result = _officeService.ExportExcel(em);

            return(result ? fileName : "");
        }
Exemplo n.º 13
0
        /// <summary>
        /// 更新单据表(完成时)
        /// </summary>
        /// <param name="billTableName"></param>
        /// <param name="billId"></param>
        internal void UpdateBillDataWhenComplete(string billTableName, string billId)
        {
            FapTable table = DbSession.Table(billTableName);

            if (table == null || string.IsNullOrWhiteSpace(table.TableFeature))
            {
                return;
            }

            if (("," + table.TableFeature + ",").IndexOf(",BillFeature,") >= 0)
            {
                //单据数据
                dynamic billData = DbSession.Get(billTableName, billId);
                if (billData == null)
                {
                    return;
                }

                DynamicParameters parameters = new DynamicParameters();
                parameters.Add("ProcessId", ProcessId);
                //WfProcessInstance process = DbSession.QueryFirstOrDefaultEntityByWhere<WfProcessInstance>("Fid=@ProcessId", parameters);
                //WfTask task = DbSession.QueryFirstOrDefaultEntityBySql<WfTask>("select top 1 * from WfTask where ProcessId=@ProcessId order by Fid desc", parameters);
                //WfTaskAdvice taskAdvice = DbSession.QueryFirstOrDefaultEntityBySql<WfTaskAdvice>("select top 1 * from WfTaskAdvice where TaskId='" + task.Fid + "' order by Fid desc");
                WfProcessInstance process = DbSession.Get <WfProcessInstance>(ProcessId);
                WfTask            task    = DbSession.Get <WfTask>(TaskId);
                //更新单据的字段数据
                billData.CurrApprover     = task.ExecutorEmpUid;
                billData.ApprovalTime     = task.ExecuteTime;
                billData.ApprovalComments = task.Suggestion;
                if (task.ApproveState == WfApproveState.Agree)
                {
                    billData.BillStatus = BillStatus.PASSED; //同意
                }
                else if (task.ApproveState == WfApproveState.Disagree)
                {
                    billData.BillStatus = BillStatus.REJECTED; //不同意
                }

                billData.EffectiveState = 0;
                //billData.EffectiveTime = PublicUtils.GetSysDateTimeStr();

                DbSession.UpdateDynamicData(billData);
            }
        }
Exemplo n.º 14
0
        public long CreatePayCase(string caseUid)
        {
            var payCase = _dbContext.Get <PayCase>(caseUid);
            //生成工资套对应表元数据
            FapTable ft = new FapTable();

            ft.Fid           = UUIDUtils.Fid;
            ft.TableName     = $"PayCase{_applicationContext.TenantID}{payCase.CaseCode}";
            ft.TableType     = "BUSINESS";
            ft.TableCategory = "Pay";
            ft.TableComment  = $"{payCase.CaseName}薪资套";
            ft.TableMode     = "SINGLE";
            ft.TableFeature  = "";//根据ColProperty='3'过滤,不在用TableFeature
            ft.IsSync        = 1;
            ft.IsBasic       = 1;
            ft.ProductUid    = "HCM";

            IEnumerable <FapColumn> centerCols = _dbContext.Columns(PAYROLLCENTER);
            var caseItems = _dbContext.QueryWhere <PayItem>("CaseUid=@CaseUid", new Dapper.DynamicParameters(new { CaseUid = caseUid }))
                            .Select(c => c.ColumnUid);
            List <FapColumn> cols = new List <FapColumn>();

            foreach (var col in centerCols.Where(c => caseItems.Contains(c.Fid)))
            {
                col.Fid       = null;
                col.TableName = ft.TableName;
                cols.Add(col);
            }
            DynamicParameters param = new DynamicParameters();

            param.Add("TableName", ft.TableName);
            _dbContext.Execute("delete from FapTable where TableName=@TableName", param);
            _dbContext.Execute("delete from FapColumn where TableName=@TableName", param);
            _dbContext.Execute($"delete from FapMultiLanguage where LangKey like '{ft.TableName}_%'");
            _dbContext.Insert <FapTable>(ft);
            _dbContext.InsertBatch <FapColumn>(cols);
            _platformDomain.TableSet.Refresh();
            _platformDomain.ColumnSet.Refresh();
            _platformDomain.MultiLangSet.Refresh();
            payCase.TableName = ft.TableName;
            _dbContext.Update(payCase);
            return(ft.Id);
        }
Exemplo n.º 15
0
        public BaseForm SetQueryOption(QuerySet querySet)
        {
            _fapTable = _dbContext.Table(querySet.TableName);
            DynamicParameters parameters = new DynamicParameters();

            querySet.Parameters.ForEach(q => parameters.Add(q.ParamKey, q.ParamValue));
            var frmData = _dbContext.QueryFirstOrDefault(querySet.ToString(), parameters, true);

            _fapColumns = _dbContext.Columns(querySet.TableName);
            if (!querySet.QueryCols.EqualsWithIgnoreCase("*"))
            {
                var queryColList = querySet.QueryCols.ToLower().SplitComma();
                _fapColumns = _dbContext.Columns(querySet.TableName).Where(c => queryColList.Contains(c.ColName.ToLower()));
            }
            if (frmData != null)
            {
                FormData = (frmData as IDictionary <string, object>).ToFapDynamicObject(_fapColumns);
                if (_formStatus != FormStatus.View)
                {
                    _formStatus = FormStatus.Edit;
                }
            }
            else
            {
                FormData    = _dbContext.GetDefualtData(querySet.TableName);
                _formStatus = FormStatus.Add;
            }
            if (_fapTable.TableFeature != null && _fapTable.TableFeature.Contains("BillFeature"))
            {
                IsDocument = true;
            }
            FidValue = FormData.Get("Fid").ToString();
            if (_fapColumns.Any())
            {
                SetFapClumns(querySet);
            }
            return(this);
        }
Exemplo n.º 16
0
        public override void BeforeDynamicObjectUpdate(FapDynamicObject fapDynamicData)
        {
            string   fid       = fapDynamicData.Get("Fid").ToString();
            FapTable fapTable  = _dbContext.Get <FapTable>(fid);
            string   tbFeature = fapDynamicData.Get(nameof(FapTable.TableFeature)).ToString();

            if (fapTable.TableFeature.IsPresent() && fapTable.TableFeature != tbFeature)
            {
                var features = fapTable.TableFeature.SplitSemicolon();
                foreach (var feature in features)
                {
                    var featureColumns = GetColumnsByFeature(feature.Split(':')[0].Trim());
                    if (featureColumns.Any())
                    {
                        var fcs  = featureColumns.ToList();
                        var cols = fcs.Select(c => c.ColName);
                        if (fapTable.IsSync == 1)
                        {
                            var columns = _dbContext.Query <FapColumn>("select * from FapColumn where TableName=@TableName and ColName in @Cols", new Dapper.DynamicParameters(new { TableName = fapTable.TableName, Cols = cols }));
                            try
                            {
                                foreach (var column in columns)
                                {
                                    _metadataContext.DropColumn(column);
                                }
                            }
                            catch (Exception)
                            {
                                throw new FapException("物理表删除列出错!");
                            }
                        }

                        _dbContext.DeleteExec(nameof(FapColumn), "TableName=@TableName and ColName in @Cols"
                                              , new Dapper.DynamicParameters(new { TableName = fapTable.TableName, Cols = cols }));
                    }
                }
            }
            //更新多语
            string tableLabel = fapDynamicData.Get(nameof(FapTable.TableComment)).ToString();

            if (!fapTable.TableComment.EqualsWithIgnoreCase(tableLabel))
            {
                string updateMultisql = $"Update {nameof(FapMultiLanguage)} set {nameof(FapMultiLanguage.LangValue)}=@LangValue where Qualifier=@Qualifier and LangKey=@LangKey";
                var    param          = new Dapper.DynamicParameters(new { Qualifier = MultiLanguageOriginEnum.FapTable.ToString(), LangKey = fapTable.TableName, LangValue = tableLabel });
                _dbContext.Execute(updateMultisql, param);
            }

            if (tbFeature.IsPresent())
            {
                var features = tbFeature.SplitSemicolon();
                foreach (var feature in features)
                {
                    var featureColumns = GetColumnsByFeature(feature.Split(':')[0].Trim());
                    if (featureColumns.Any())
                    {
                        var fcs = featureColumns.ToList();
                        fcs.ForEach(c => c.TableName = fapTable.TableName);
                        if (fapTable.IsSync == 1)
                        {
                            foreach (var column in fcs)
                            {
                                _metadataContext.AddColumn(column);
                            }
                        }
                        _dbContext.InsertBatch(fcs);
                    }
                }
            }
        }
Exemplo n.º 17
0
        public string CreateTableSql(FapTable table, IEnumerable <FapColumn> columns)
        {
            StringBuilder sqlBuilder = new StringBuilder();

            sqlBuilder.Append($"CREATE TABLE [{table.TableName}](").AppendLine();

            foreach (var fapColumn in columns.OrderBy(c => c.ColOrder))
            {
                sqlBuilder.Append(CreateColumnSql(fapColumn)).Append(",").AppendLine();
                if (fapColumn.IsMultiLang == 1) //多语
                {
                    string fname        = fapColumn.ColName;
                    string description  = fapColumn.ColComment;
                    var    languageList = typeof(MultiLanguage.MultiLanguageEnum).EnumItems();
                    foreach (var item in languageList)
                    {
                        FapColumn mf = (FapColumn)fapColumn.Clone();
                        mf.ColName     = fname + item.Value;
                        mf.ColComment  = description + item.Description;
                        mf.IsMultiLang = 0;
                        sqlBuilder.Append(CreateColumnSql(mf)).Append(",").AppendLine();
                    }
                }
            }
            var pkField = columns.FirstOrDefault(f => f.ColType == FapColumn.COL_TYPE_PK);

            if (pkField != null)
            {
                sqlBuilder.Append("PRIMARY KEY (").Append(pkField.ColName).Append("),");
            }
            sqlBuilder.Remove(sqlBuilder.Length - 1, 1);
            sqlBuilder.AppendLine(");");
            //默认值
            //foreach (var field in columns)
            //{
            //    if (HasDefaultValueConstraint(field))
            //    {
            //        sqlBuilder.AppendLine(string.Format("ALTER TABLE {0} ADD CONSTRAINT DF_{0}_{1} DEFAULT ('{2}') FOR {1};", field.TableName, field.ColName, field.ColDefault));
            //    }
            //}
            //表注释
            MakeTableCommentSql(table, sqlBuilder);
            foreach (var field in columns.OrderBy(c => c.ColOrder))
            {
                //字段注释
                sqlBuilder.AppendLine(MakeColumnCommentSql(field));
                if (field.IsMultiLang == 1)
                {
                    var languageList = typeof(MultiLanguage.MultiLanguageEnum).EnumItems();
                    foreach (var lang in languageList)
                    {
                        FapColumn column = (FapColumn)field.Clone();
                        column.ColName    = field.ColName + lang.Value;
                        column.ColComment = field.ColComment + lang.Description;
                        //多余字段注释
                        sqlBuilder.AppendLine(MakeColumnCommentSql(column));
                    }
                }
            }
            return(sqlBuilder.ToString());

            void MakeTableCommentSql(FapTable table, StringBuilder sqlBuilder)
            {
                if (table.TableComment.IsPresent())
                {
                    sqlBuilder.Append("EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'");
                    sqlBuilder.Append(table.TableComment);
                    sqlBuilder.Append("' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'");
                    sqlBuilder.Append(table.TableName);
                    sqlBuilder.AppendLine("';");
                }
            }
        }
Exemplo n.º 18
0
        /// <summary>
        /// 更新单据表(处理中)
        /// </summary>
        /// <param name="billTableName"></param>
        /// <param name="billId"></param>
        internal void UpdateBillDataWhenProcessing(string billTableName, string billId)
        {
            FapTable table = DbSession.Table(billTableName);

            if (table == null || string.IsNullOrWhiteSpace(table.TableFeature))
            {
                return;
            }

            if (("," + table.TableFeature + ",").IndexOf(",BillFeature,") >= 0)
            {
                //单据数据
                dynamic billData = DbSession.Get(billTableName, billId);
                if (billData == null)
                {
                    return;
                }

                DynamicParameters parameters = new DynamicParameters();
                parameters.Add("ProcessId", ProcessId);
                //WfProcessInstance process = DbSession.QueryFirstOrDefaultEntityByWhere<WfProcessInstance>("Fid=@ProcessId", parameters);
                //WfTask task = DbSession.QueryFirstOrDefaultEntityBySql<WfTask>("select * from WfTask where ProcessId=@ProcessId order by Fid desc", parameters);
                //WfTask task = DbSession.QueryFirstOrDefaultEntityByWhere<WfTask>("ProcessId=@ProcessId",parameters,"Id desc");
                //order by  查不到事务中的数据
                //WfTaskAdvice taskAdvice = DbSession.QueryFirstOrDefaultEntityBySql<WfTaskAdvice>("select * from WfTaskAdvice where TaskId='" + task.Fid + "' order by Fid desc");
                WfProcessInstance process = DbSession.Get <WfProcessInstance>(ProcessId);
                //WfTask task = DbSession.Get<WfTask>(TaskId);
                IEnumerable <WfTask> tasks = DbSession.QueryWhere <WfTask>(" ProcessId=@ProcessId and TaskState='Handling'", parameters);

                WfTask task = tasks.FirstOrDefault();
                if (task == null)
                {
                    throw new Exception("不存在新任务");
                }
                //更新单据的字段数据
                if (process.ProcessState == WfProcessInstanceState.Running)
                {
                    billData.BillStatus       = BillStatus.PROCESSING;
                    billData.CurrApprover     = task.ExecutorEmpUid;
                    billData.ApprovalTime     = PublicUtils.CurrentDateTimeStr; //task.ExecuteTime;
                    billData.ApprovalComments = task.Suggestion;
                    DbSession.UpdateDynamicData(billData);
                }
                else if (process.ProcessState == WfProcessInstanceState.Canceled)
                {
                    billData.BillStatus       = BillStatus.CANCELED;
                    billData.CurrApprover     = task.ExecutorEmpUid;
                    billData.ApprovalTime     = PublicUtils.CurrentDateTimeStr;// task.ExecuteTime;
                    billData.ApprovalComments = task.Suggestion;
                    DbSession.UpdateDynamicData(billData);
                }
                else if (process.ProcessState == WfProcessInstanceState.Deleted)
                {
                    billData.BillStatus       = BillStatus.CLOSED;
                    billData.CurrApprover     = task.ExecutorEmpUid;
                    billData.ApprovalTime     = PublicUtils.CurrentDateTimeStr;// task.ExecuteTime;
                    billData.ApprovalComments = task.Suggestion;
                    DbSession.UpdateDynamicData(billData);
                }
                else if (process.ProcessState == WfProcessInstanceState.Ended)
                {
                    billData.BillStatus       = BillStatus.CLOSED;
                    billData.CurrApprover     = task.ExecutorEmpUid;
                    billData.ApprovalTime     = PublicUtils.CurrentDateTimeStr;// task.ExecuteTime;
                    billData.ApprovalComments = task.Suggestion;
                    DbSession.UpdateDynamicData(billData);
                }
                else if (process.ProcessState == WfProcessInstanceState.Suspended)
                {
                    billData.BillStatus       = BillStatus.SUSPENDED;
                    billData.CurrApprover     = task.ExecutorEmpUid;
                    billData.ApprovalTime     = PublicUtils.CurrentDateTimeStr;// task.ExecuteTime;
                    billData.ApprovalComments = task.Suggestion;
                    DbSession.UpdateDynamicData(billData);
                }
                else if (process.ProcessState == WfProcessInstanceState.Withdrawed)
                {
                    billData.BillStatus       = BillStatus.WITHDRAWED;
                    billData.CurrApprover     = task.ExecutorEmpUid;
                    billData.ApprovalTime     = PublicUtils.CurrentDateTimeStr;// task.ExecuteTime;
                    billData.ApprovalComments = task.Suggestion;
                    DbSession.UpdateDynamicData(billData);
                }
                else if (process.ProcessState == WfProcessInstanceState.Revoked)
                {
                    billData.BillStatus       = BillStatus.REVOKED;
                    billData.CurrApprover     = task.ExecutorEmpUid;
                    billData.ApprovalTime     = PublicUtils.CurrentDateTimeStr;// task.ExecuteTime;
                    billData.ApprovalComments = task.Suggestion;
                    DbSession.UpdateDynamicData(billData);
                }
            }
        }
Exemplo n.º 19
0
        /// <summary>
        /// 收集数据
        /// </summary>
        public override void CollectData()
        {
            //主表的信息
            FapTable table = _dataAccessor.Table(tableName);
            IEnumerable <FapColumn> columnList = _dataAccessor.Columns(tableName);

            if (exportColumns.IsPresent() && exportColumns != "*")
            {
                var cols = exportColumns.SplitComma();
                columnList = columnList.Where(f => cols.Contains(f.ColName, new FapStringEqualityComparer()));
            }

            //字典表
            foreach (var column in columnList.Where(c => c.RefTable.IsPresent() || c.ComboxSource.IsPresent()))
            {
                if (column.CtrlType == FapColumn.CTRL_TYPE_COMBOBOX)
                {
                    this.GetCodeDictionaryData(column, DictionaryToExport);
                }
                else if (column.CtrlType == FapColumn.CTRL_TYPE_REFERENCE)
                {
                    this.GetReferenceDictionaryData(column, DictionaryToExport);
                }
            }

            //主表元数据
            foreach (var column in columnList)
            {
                string code = "C_" + column.Id;
                if (column.CtrlType == FapColumn.CTRL_TYPE_REFERENCE)
                {
                    code = "R_" + column.Id;
                }
                if ((column.CtrlType == FapColumn.CTRL_TYPE_REFERENCE || column.CtrlType == FapColumn.CTRL_TYPE_COMBOBOX) && this.DictionaryToExport.ContainsKey(code))
                {
                    string range      = this.DictionaryToExport[code].DictionaryExcelRange;
                    int    startIndex = this.DictionaryToExport[code].DictionaryRowStartIndex;
                    int    endIndex   = this.DictionaryToExport[code].DictionaryRowEndIndex;
                    this.SheetMetadata.Columns.Add(new ColumnMd()
                    {
                        StartRowIndex = startIndex, EndRowIndex = endIndex, DictionarySheetRange = range, DictionarySheetName = code, Field = column.ColName, IsNeedDictionary = true, Title = column.ColComment
                    });
                }
                else
                {
                    this.SheetMetadata.Columns.Add(new ColumnMd()
                    {
                        Field = column.ColName, IsNeedDictionary = false, Title = column.ColComment
                    });
                }
            }

            //主表
            SheetData mainSheetData = new SheetData();

            mainSheetData.SheetName = tableName + "主表";
            mainSheetData.Data      = new List <RowData>();

            mainSheetData.ColumnTitle = this.GetColumnTitle(columnList);
            mainSheetData.Data.Add(this.GetColumnName(columnList));
            mainSheetData.ColumnProperties = this.GetColumnProperty(columnList);

            //主表的数据
            List <RowData> dataList = this.GetEntityDataList(tableName, columnList);

            foreach (var data in dataList)
            {
                mainSheetData.Data.Add(data);
            }

            this.DataToExport.Add(mainSheetData);

            /*
             * //扩展表
             * if (!string.IsNullOrWhiteSpace(table.ExtTable))
             * {
             *  SheetData extSheetData = new SheetData();
             *  extSheetData.SheetName = tableName + "扩展表";
             *  extSheetData.Data = new List<RowData>();
             *  string extTableName = table.ExtTable;
             *  FapTable extTable = dataAccessor.GetSingleTable(extTableName);
             *  List<FapColumn> extColumnList = dataAccessor.GetColumnList(tableName);
             *  extSheetData.ColumnTitle = this.GetColumnTitle(columnList, defaultColumnNameList);
             *  extSheetData.Data.Add(this.GetColumnName(columnList, defaultColumnNameList));
             *
             *  //扩展表的数据
             *  List<RowData> extDataList = this.GetEntityDataList(extTableName, columnList, defaultColumnNameList);
             *  foreach (var data in extDataList)
             *  {
             *      extSheetData.Data.Add(data);
             *  }
             *
             *  this.DataToExport.Add(extSheetData);
             * }
             * */
        }
Exemplo n.º 20
0
        public override void AfterEntityInsert(object entity)
        {
            FapTable tb = entity as FapTable;

            AddColumns(tb.TableName, tb.TableFeature, tb.TableComment);
        }