Пример #1
0
        /// <summary>
        /// 获取编码类型的字典数据
        /// </summary>
        /// <param name="column"></param>
        /// <param name="dictionaryToExport"></param>
        /// <returns></returns>
        protected void GetCodeDictionaryData(FapColumn column, Dictionary <string, DictionarySheetData> dictionaryToExport)
        {
            //string code = Get30String("C_" + refTable);
            string code = "C_" + column.Id;

            if (!dictionaryToExport.ContainsKey(code))
            {
                IEnumerable <FapDict> dicData = _dataAccessor.Dictionarys(column.ComboxSource);
                if (dicData != null && dicData.Count() > 0)
                {
                    DictionarySheetData dictionarySheetData = new DictionarySheetData();
                    dictionarySheetData.SheetName = code;
                    dictionarySheetData.Data      = new List <DictionaryRowData>();

                    foreach (var item in dicData)
                    {
                        DictionaryRowData dictionaryRowData = new DictionaryRowData();
                        dictionaryRowData.KeyData = new CellData()
                        {
                            Data = item.Code, Type = CellDataType.STRING
                        };
                        dictionaryRowData.ValueData = new CellData()
                        {
                            Data = item.Name, Type = CellDataType.STRING
                        };
                        dictionarySheetData.Data.Add(dictionaryRowData);
                    }

                    dictionaryToExport.Add(code, dictionarySheetData);
                }
            }
        }
Пример #2
0
        /// <summary>
        /// 写入一行的数据
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="rowData"></param>
        /// <param name="rowCount"></param>
        private void WriteDictionaryRowData(IWorkbook workbook, ISheet sheet, DictionaryRowData rowData, ref int rowCount)
        {
            if (rowData == null || rowData.KeyData == null || rowData.ValueData == null)
            {
                return;
            }
            IRow row = sheet.CreateRow(rowCount);

            ICellStyle cellStyle = this.GetDefaultCellType(workbook);

            SetCellValue(row, cellStyle, 0, rowData.KeyData);
            SetCellValue(row, cellStyle, 1, rowData.ValueData);
            rowCount++;
        }
Пример #3
0
        /// <summary>
        /// 获取引用类型的字典数据
        /// </summary>
        /// <param name="column"></param>
        /// <param name="dictionaryToExport"></param>
        /// <returns></returns>
        protected void GetReferenceDictionaryData(FapColumn column, Dictionary <string, DictionarySheetData> dictionaryToExport)
        {
            string refTable     = column.RefTable;
            string refID        = column.RefID;
            string refCode      = column.RefCode;
            string refName      = column.RefName;
            string refCondition = column.RefCondition;

            if (refCondition.IsPresent())
            {
                //去掉权限
                refCondition = refCondition.Replace(FapDbConstants.EmployeeNoPower, "");
            }
            if (!(refCondition.IsPresent() && refCondition.IndexOf("$") < 0))
            {
                //去掉参数条件
                refCondition = "";
            }
            string code = "R_" + column.Id; //Get30String("R_" + refTable + refID + refName);

            if (!dictionaryToExport.ContainsKey(code))
            {
                if (refCode.IsMissing())
                {
                    refCode = "Id";
                }
                string refWhere = refCondition.IsMissing() ? "" : " where " + refCondition;
                string sql      = string.Format("SELECT {0} AS FID, {1} AS CODE,{2} AS NAME FROM {3} {4}", refID, refCode, refName, refTable, refWhere);
                IEnumerable <FapDict> dicData = _dataAccessor.Query <FapDict>(sql);
                if (!RefTableCache.ContainsKey(refTable))
                {
                    RefTableCache.Add(refTable, dicData);
                }
                if (dicData != null && dicData.Count() > 0)
                {
                    DictionarySheetData dictionarySheetData = new DictionarySheetData();
                    dictionarySheetData.SheetName = code;
                    dictionarySheetData.Data      = new List <DictionaryRowData>();
                    var groupDict = dicData.GroupBy(d => d.Name);
                    foreach (var dict in groupDict)
                    {
                        if (dict.Count() > 1)
                        {
                            var dicts = dict.ToList();
                            foreach (var item in dicts)
                            {
                                DictionaryRowData dictionaryRowData = new DictionaryRowData();
                                dictionaryRowData.KeyData = new CellData()
                                {
                                    Data = item.Fid, Type = CellDataType.STRING
                                };
                                dictionaryRowData.ValueData = new CellData()
                                {
                                    Data = item.Name + "(" + item.Code + ")", Type = CellDataType.STRING
                                };
                                dictionarySheetData.Data.Add(dictionaryRowData);
                            }
                        }
                        else
                        {
                            var item = dict.First();
                            DictionaryRowData dictionaryRowData = new DictionaryRowData();
                            dictionaryRowData.KeyData = new CellData()
                            {
                                Data = item.Fid, Type = CellDataType.STRING
                            };
                            dictionaryRowData.ValueData = new CellData()
                            {
                                Data = item.Name, Type = CellDataType.STRING
                            };
                            dictionarySheetData.Data.Add(dictionaryRowData);
                        }
                    }

                    dictionaryToExport.Add(code, dictionarySheetData);
                }
            }
        }