From 2237ece5fa5840b36b65c0dcecd993c7ea19bbc5 Mon Sep 17 00:00:00 2001 From: xiaochanghai Date: Fri, 6 Jun 2025 16:22:16 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E7=89=9B=E5=B0=BE=E3=80=91=E5=9F=B9?= =?UTF-8?q?=E8=AE=AD=E8=AE=A1=E5=88=92=E6=96=B0=E5=A2=9EExcel=E5=AF=BC?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lib/Tiobon.Core.Base.dll | Bin 179200 -> 179200 bytes Lib/Tiobon.Core.Model.Entity.dll | Bin 40960 -> 43520 bytes Lib/Tiobon.Core.Model.Entity.xml | 55 ++++++++++ ...orizontal_Preferred_Cyan300_CMYK_72ppi.png | Bin 4674 -> 0 bytes Tiobon.Core.Common/DB/Aop/SqlsugarAop.cs | 1 + Tiobon.Core.Common/DB/RepositorySetting.cs | 6 +- Tiobon.Core.Common/Helper/NPOIHelper.cs | 83 +++++++++++++- Tiobon.Core.Model/Base/BasePoco.cs | 78 ------------- .../Models/RootTkey/BaseEntity.cs | 4 +- .../RootTkey/Interface/IDeleteFilter.cs | 13 --- .../Ghre/Ghre_PlanServices.cs | 103 +++++++++++++++++- .../Ghre/Ghre_StudyRuleServices.cs | 1 - Tiobon.Core/Tiobon.Core.Model.xml | 55 ---------- 13 files changed, 239 insertions(+), 160 deletions(-) delete mode 100644 Tiobon.Core.Api/wwwroot/MVP_Logo_Horizontal_Preferred_Cyan300_CMYK_72ppi.png delete mode 100644 Tiobon.Core.Model/Base/BasePoco.cs delete mode 100644 Tiobon.Core.Model/Models/RootTkey/Interface/IDeleteFilter.cs diff --git a/Lib/Tiobon.Core.Base.dll b/Lib/Tiobon.Core.Base.dll index 8d7b349cf60fc4ff310872d7a7418615b93d1091..128f0ddf49c434567575ab4cc512400452746f43 100644 GIT binary patch delta 137 zcmZqp!PW4CYeEOhbY{tejXhg?7_YGLC^5Jz+vzJY7_!^xx96}kZqH$7vhf!gjR=>?ma0t5=?cxIhe$Z_kDQChW5X_NHy3!9mu h6riGFXP}}$^@%4QX=_GK@JR0awWw^n*A}L2>;Tz{HiQ5G delta 137 zcmZqp!PW4CYeEN$O`hqw#-6P`j91urOdl`J|@Y#5i)h*A}L2>;R;6I{E+r diff --git a/Lib/Tiobon.Core.Model.Entity.dll b/Lib/Tiobon.Core.Model.Entity.dll index 01594ff104db349ce058c867e9cb7775ff4d58b1..0652f75e73fe72e89aefcd16bb1174410bdfb53c 100644 GIT binary patch literal 43520 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 MN> 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 literal 40960 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 z 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 tRsehD{~=O8CV7QY%Ha1 zs>8DSI+As|ttmmNTFf@|`LODCZU3LtJs#=EYu&!XP qZ$MvGpoc>^V%m>Tiobon.Core.Model.Entity + + + 表主键 + + + + + 1:有效,0:未生效 + + + + + 创建人 + + + + + 创建时间 + + + + + 创建程序 + + + + + 创建IP + + + + + 最后修改人 + + + + + 最后修改时间 + + + + + 最后修改程序 + + + + + 最后修改IP + + + + + 软删除 过滤器 + + 动态查询条件 diff --git a/Tiobon.Core.Api/wwwroot/MVP_Logo_Horizontal_Preferred_Cyan300_CMYK_72ppi.png b/Tiobon.Core.Api/wwwroot/MVP_Logo_Horizontal_Preferred_Cyan300_CMYK_72ppi.png deleted file mode 100644 index 0315b2efdd004642dfa790456df7a5de0488d178..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4674 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 Ef?kR382|tP diff --git a/Tiobon.Core.Common/DB/Aop/SqlsugarAop.cs b/Tiobon.Core.Common/DB/Aop/SqlsugarAop.cs index 194970ad..a561cad1 100644 --- a/Tiobon.Core.Common/DB/Aop/SqlsugarAop.cs +++ b/Tiobon.Core.Common/DB/Aop/SqlsugarAop.cs @@ -5,6 +5,7 @@ using StackExchange.Profiling; using Tiobon.Core.Common.LogHelper; using Tiobon.Core.Common.UserManager; using Tiobon.Core.Model; +using Tiobon.Core.Model.Entity; using Tiobon.Core.Model.Models.RootTkey; using Tiobon.Core.Model.Tenants; diff --git a/Tiobon.Core.Common/DB/RepositorySetting.cs b/Tiobon.Core.Common/DB/RepositorySetting.cs index 011e697c..5a583256 100644 --- a/Tiobon.Core.Common/DB/RepositorySetting.cs +++ b/Tiobon.Core.Common/DB/RepositorySetting.cs @@ -1,7 +1,7 @@ -using Tiobon.Core.Model.Models.RootTkey; -using Tiobon.Core.Model.Models.RootTkey.Interface; +using SqlSugar; +using Tiobon.Core.Model.Entity; +using Tiobon.Core.Model.Models.RootTkey; using Tiobon.Core.Model.Tenants; -using SqlSugar; namespace Tiobon.Core.Common.DB; diff --git a/Tiobon.Core.Common/Helper/NPOIHelper.cs b/Tiobon.Core.Common/Helper/NPOIHelper.cs index f5c012d4..edd853ad 100644 --- a/Tiobon.Core.Common/Helper/NPOIHelper.cs +++ b/Tiobon.Core.Common/Helper/NPOIHelper.cs @@ -186,6 +186,80 @@ public class NPOIHelper } #endregion + #region 培训计划【牛尾】 + if (sheetName == "培训计划【牛尾】") + { + HeightInPoints = 15; + #region 标题单元格样式 + + ICellStyle titleStyle = workbook.CreateCellStyle(); + titleStyle.Alignment = HorizontalAlignment.Center; //居中 + titleStyle.VerticalAlignment = VerticalAlignment.Center;//垂直居中 + titleStyle.WrapText = true;//自动换行 + // 边框 + titleStyle.BorderBottom = BorderStyle.Thin; + titleStyle.BorderLeft = BorderStyle.Thin; + titleStyle.BorderRight = BorderStyle.Thin; + titleStyle.BorderTop = BorderStyle.Thin; + + IFont font = workbook.CreateFont(); + font.FontHeightInPoints = (short)10; + font.FontName = "宋体"; + font.IsBold = true; + titleStyle.SetFont(font); + #endregion + + IRow headerRow = sheet.CreateRow(intTop); + headerRow.HeightInPoints = HeightInPoints; + + for (int i = 0; i < 13; i++) + { + headerRow.CreateCell(i).SetCellValue(dtSource.Columns[i].ColumnName); + headerRow.GetCell(i).CellStyle = titleStyle; + sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0 + intTop, 1 + intTop, i, i)); + } + + for (int i = 13; i < 36; i = i + 2) + { + string month = dtSource.Columns[i].ColumnName.Replace("实际合计人天_M", "") + "月"; + //month = month.Replace("进展率_M", ""); + headerRow.CreateCell(i).SetCellValue(month); + headerRow.GetCell(i).CellStyle = titleStyle; + headerRow.CreateCell(i + 1).SetCellValue(month); + headerRow.GetCell(i + 1).CellStyle = titleStyle; + sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(intTop, intTop, i, i + 1)); + + } + + for (int i = 37; i < 42; i++) + { + headerRow.CreateCell(i).SetCellValue(dtSource.Columns[i].ColumnName); + headerRow.GetCell(i).CellStyle = titleStyle; + sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0 + intTop, 1 + intTop, i, i)); + } + + //for (int i = 5; i < 17; i++) + //{ + // headerRow.CreateCell(i).SetCellValue("预算编制数"); + // headerRow.GetCell(i).CellStyle = titleStyle; + + //} + + ////headerRow.CreateCell(5).SetCellValue("预算编制数"); + ////headerRow.GetCell(5).CellStyle = titleStyle; + //headerRow.CreateCell(17).SetCellValue("备注"); + //headerRow.GetCell(17).CellStyle = titleStyle; + + + //for (int i = 36; i < 41; i++) + //sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0 + intTop, 1 + intTop, 17, 17)); + //sheet.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0 + intTop, 0 + intTop, 5, 16)); + + intTop += 1; + + } + #endregion + #region 列头及样式 { IRow headerRow = sheet.CreateRow(intTop); @@ -218,7 +292,14 @@ public class NPOIHelper //headStyle.SetFont(font); foreach (DataColumn column in dtSource.Columns) { - headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName); + var name = column.ColumnName; + + if (name.IndexOf("实际合计人天") > -1) + name = "实际合计人天"; + if (name.IndexOf("进展率") > -1) + name = "进展率"; + + headerRow.CreateCell(column.Ordinal).SetCellValue(name); headerRow.GetCell(column.Ordinal).CellStyle = headStyle; //设置列宽 //sheet.SetColumnWidth(column.Ordinal, (arrColWidth[column.Ordinal] + 1) * 256); diff --git a/Tiobon.Core.Model/Base/BasePoco.cs b/Tiobon.Core.Model/Base/BasePoco.cs deleted file mode 100644 index 09a2f7a6..00000000 --- a/Tiobon.Core.Model/Base/BasePoco.cs +++ /dev/null @@ -1,78 +0,0 @@ -using Tiobon.Core.Model.Models.RootTkey.Interface; - -namespace Tiobon.Core.Model; - -public class BasePoco : BasePoco1 -{ - - /// - /// 表主键 - /// - //public long Id { get; set; } - [SugarColumn(IsNullable = false, IsPrimaryKey = true, IsIdentity = false), Display(Name = "表主键")] - public long Id { get; set; } -} -public class BasePoco1 : IBaseDeleteFilter -{ - - /// - /// 1:有效,0:未生效 - /// - [Display(Name = "1:有效,0:未生效")] - public int IsEnable { get; set; } = 1; - - ///// - ///// 操作日志ID - ///// - //[Display(Name = "操作日志ID")] - //public long? OperateLogID { get; set; } - - /// - /// 创建人 - /// - [Display(Name = "创建人"), SugarColumn(IsOnlyIgnoreUpdate = true)] - public int? CreateBy { get; set; } - - /// - /// 创建时间 - /// - [Display(Name = "创建时间"), SugarColumn(IsOnlyIgnoreUpdate = true)] - public DateTime? CreateTime { get; set; } - - /// - /// 创建程序 - /// - [Display(Name = "创建程序"), SugarColumn(IsOnlyIgnoreUpdate = true)] - public string CreateProg { get; set; } - - /// - /// 创建IP - /// - [Display(Name = "创建IP"), SugarColumn(IsOnlyIgnoreUpdate = true)] - public string CreateIP { get; set; } - - /// - /// 最后修改人 - /// - [Display(Name = "最后修改人")] - public int? UpdateBy { get; set; } - - /// - /// 最后修改时间 - /// - [Display(Name = "最后修改时间")] - public DateTime? UpdateTime { get; set; } - - /// - /// 最后修改程序 - /// - [Display(Name = "最后修改程序")] - public string UpdateProg { get; set; } - - /// - /// 最后修改IP - /// - [Display(Name = "最后修改IP")] - public string UpdateIP { get; set; } - -} diff --git a/Tiobon.Core.Model/Models/RootTkey/BaseEntity.cs b/Tiobon.Core.Model/Models/RootTkey/BaseEntity.cs index cfbcad8b..8e2eea8b 100644 --- a/Tiobon.Core.Model/Models/RootTkey/BaseEntity.cs +++ b/Tiobon.Core.Model/Models/RootTkey/BaseEntity.cs @@ -1,6 +1,4 @@ -using Tiobon.Core.Model.Models.RootTkey.Interface; - -namespace Tiobon.Core.Model.Models.RootTkey; +namespace Tiobon.Core.Model.Models.RootTkey; [SugarIndex("index_{table}_Enabled", nameof(Enabled), OrderByType.Asc)] [SugarIndex("index_{table}_IsDeleted", nameof(IsDeleted), OrderByType.Asc)] diff --git a/Tiobon.Core.Model/Models/RootTkey/Interface/IDeleteFilter.cs b/Tiobon.Core.Model/Models/RootTkey/Interface/IDeleteFilter.cs deleted file mode 100644 index afbbf682..00000000 --- a/Tiobon.Core.Model/Models/RootTkey/Interface/IDeleteFilter.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Tiobon.Core.Model.Models.RootTkey.Interface; - -/// -/// 软删除 过滤器 -/// -public interface IDeleteFilter -{ - public bool IsDeleted { get; set; } -} -public interface IBaseDeleteFilter -{ - public int IsEnable { get; set; } -} \ No newline at end of file diff --git a/Tiobon.Core.Services/Ghre/Ghre_PlanServices.cs b/Tiobon.Core.Services/Ghre/Ghre_PlanServices.cs index 7c950b53..2fd01c5b 100644 --- a/Tiobon.Core.Services/Ghre/Ghre_PlanServices.cs +++ b/Tiobon.Core.Services/Ghre/Ghre_PlanServices.cs @@ -394,11 +394,11 @@ public class Ghre_PlanServices : BaseServices item.field, item => item.label); - var dt = ToDataTable(data.result.DT_TableDataT1, fieldDescs, null); + var dt = ToUshioDataTable(data.result.DT_TableDataT1, fieldDescs, null); // 获取所有列名 var dtColumns = dt.Columns; @@ -422,13 +422,104 @@ public class Ghre_PlanServices : BaseServices.OprateSuccess("导出成功", result); } + + public static DataTable ToUshioDataTable(List list, Dictionary fieldDescs = null, params string[] propertyName) + { + var (fields, colunms) = Sort(fieldDescs, null); + + List propertyNameList = new List(); + if (propertyName != null) + { + propertyNameList.AddRange(propertyName); + } + DataTable result = new DataTable(); + if (list.Count > 0) + { + PropertyInfo[] propertys = list[0].GetType().GetProperties(); + for (int i = 0; i < fields.Count; i++) + { + foreach (PropertyInfo pi in propertys) + { + if (propertyNameList.Count == 0) + { + //if (DBNull.Value.Equals(pi.PropertyType)) + //{ + // // pi.PropertyType = DateTime; + //} + Type colType = pi.PropertyType; + if (colType.IsGenericType && colType.GetGenericTypeDefinition() == typeof(Nullable<>)) + { + colType = colType.GetGenericArguments()[0]; + } + if (fields[i] == pi.Name) + { + if (fields[i].IndexOf("_Count") > 0) + result.Columns.Add(colunms[i] + "_" + fields[i].Replace("_Count", ""), colType); + else if (fields[i].IndexOf("_CompletionRate") > 0) + result.Columns.Add(colunms[i] + "_" + fields[i].Replace("_CompletionRate", ""), colType); + else + result.Columns.Add(colunms[i], colType); + } + //result.Columns.Add(pi.Name, pi.PropertyType); + } + else + { + if (propertyNameList.Contains(pi.Name)) + { + if (fields[i] == pi.Name) + result.Columns.Add(fields[i], pi.PropertyType); + } + } + } + } + for (int i = 0; i < list.Count; i++) + { + ArrayList tempList = new ArrayList(); + for (int j = 0; j < fields.Count; j++) + { + foreach (PropertyInfo pi in propertys) + { + if (fields[j] == pi.Name) + { + if (propertyNameList.Count == 0) + { + object obj = pi.GetValue(list[i], null); + tempList.Add(obj); + } + else + { + if (propertyNameList.Contains(pi.Name)) + { + object obj = pi.GetValue(list[i], null); + tempList.Add(obj); + } + } + } + } + } + object[] array = tempList.ToArray(); + + try + { + result.LoadDataRow(array, true); + } + catch (Exception E) + { + + } + + } + } + return result; + } + #endregion public override async Task> DownloadExcel(string menuName) diff --git a/Tiobon.Core.Services/Ghre/Ghre_StudyRuleServices.cs b/Tiobon.Core.Services/Ghre/Ghre_StudyRuleServices.cs index 232f9fbe..bcc47b68 100644 --- a/Tiobon.Core.Services/Ghre/Ghre_StudyRuleServices.cs +++ b/Tiobon.Core.Services/Ghre/Ghre_StudyRuleServices.cs @@ -1,5 +1,4 @@ using MongoDB.Driver.Linq; -using Tiobon.Core.Model.Models.RootTkey.Interface; using static Tiobon.Core.Model.Consts; namespace Tiobon.Core.Services; diff --git a/Tiobon.Core/Tiobon.Core.Model.xml b/Tiobon.Core/Tiobon.Core.Model.xml index df8aeb1b..9be796f5 100644 --- a/Tiobon.Core/Tiobon.Core.Model.xml +++ b/Tiobon.Core/Tiobon.Core.Model.xml @@ -4,56 +4,6 @@ Tiobon.Core.Model - - - 表主键 - - - - - 1:有效,0:未生效 - - - - - 创建人 - - - - - 创建时间 - - - - - 创建程序 - - - - - 创建IP - - - - - 最后修改人 - - - - - 最后修改时间 - - - - - 最后修改程序 - - - - - 最后修改IP - - 年级 (Dto.Base) @@ -38794,11 +38744,6 @@ 数据版本 - - - 软删除 过滤器 - - 系统租户表