schangxiang@126.com
2024-04-23 c611663e387949c48c37587a0a291f2ed1eb92a6
修复 打印模板 处理枚举类型的问题
已修改4个文件
140 ■■■■ 文件已修改
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.xml 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/CodeGenService.cs 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/ISysEnumDataService.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/SysEnumDataService.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.xml
@@ -4866,7 +4866,7 @@
            代码生成器服务
            </summary>
        </member>
        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysCodeGen},Furion.DatabaseAccessor.IRepository{Furion.Extras.Admin.NET.Entity.SysLowCode},Admin.NET.Application.ICodeGenConfigService,Furion.ViewEngine.IViewEngine,Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysMenu},Admin.NET.Application.ISysExcelTemplateService)">
        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysCodeGen},Furion.DatabaseAccessor.IRepository{Furion.Extras.Admin.NET.Entity.SysLowCode},Admin.NET.Application.ICodeGenConfigService,Furion.ViewEngine.IViewEngine,Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysMenu},Admin.NET.Application.ISysEnumDataService)">
            <summary>
            构造函数
            </summary>
@@ -4875,6 +4875,7 @@
            <param name="codeGenConfigService"></param>
            <param name="viewEngine"></param>
            <param name="sysMenuRep"></param>
            <param name="sysEnumDataService"></param>
        </member>
        <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.QueryCodeGenPageList(Admin.NET.Application.CodeGenPageInput)">
            <summary>
@@ -7117,6 +7118,20 @@
            <param name="input"></param>
            <returns></returns>
        </member>
        <member name="M:Admin.NET.Application.ISysEnumDataService.GetEnumDataListStrAsync(Admin.NET.Application.EnumDataInput)">
            <summary>
            通过枚举类型获取枚举值字符串集合
            </summary>
            <param name="input"></param>
            <returns></returns>
        </member>
        <member name="M:Admin.NET.Application.ISysEnumDataService.GetEnumDataListStr(Admin.NET.Application.EnumDataInput)">
            <summary>
            通过枚举类型获取枚举值字符串集合
            </summary>
            <param name="input"></param>
            <returns></returns>
        </member>
        <member name="M:Admin.NET.Application.ISysEnumDataService.GetEnumDataListByField(Admin.NET.Application.QueryEnumDataInput)">
            <summary>
            
@@ -7136,6 +7151,20 @@
            <param name="input"></param>
            <returns></returns>
        </member>
        <member name="M:Admin.NET.Application.SysEnumDataService.GetEnumDataListStrAsync(Admin.NET.Application.EnumDataInput)">
            <summary>
            通过枚举类型获取枚举值字符串集合
            </summary>
            <param name="input"></param>
            <returns></returns>
        </member>
        <member name="M:Admin.NET.Application.SysEnumDataService.GetEnumDataListStr(Admin.NET.Application.EnumDataInput)">
            <summary>
            通过枚举类型获取枚举值字符串集合
            </summary>
            <param name="input"></param>
            <returns></returns>
        </member>
        <member name="M:Admin.NET.Application.SysEnumDataService.GetEnumDataListByField(Admin.NET.Application.QueryEnumDataInput)">
            <summary>
            通过实体字段类型获取相关集合(目前仅支持枚举类型)
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/CodeGenService.cs
@@ -16,23 +16,11 @@
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Newtonsoft.Json;
using OfficeOpenXml.Drawing;
using OfficeOpenXml;
using System;
using StackExchange.Profiling.Internal;
using System.Reflection;
using System.Text;
using System.Web;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
using OfficeOpenXml.Style;
using System.Net.WebSockets;
using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using System.Reflection;
using NetTopologySuite.Noding;
using System.Xml.Linq;
using static Npgsql.Replication.PgOutput.Messages.RelationMessage;
using StackExchange.Profiling.Internal;
using System.Collections.Generic;
using System.Data.SqlTypes;
namespace Admin.NET.Application.CodeGen
{
@@ -47,7 +35,7 @@
        private readonly IRepository<SysLowCode> _sysLowCodeRep; // 代码生成器仓储
        private readonly ICodeGenConfigService _codeGenConfigService;
        private readonly IViewEngine _viewEngine;
        private readonly ISysExcelTemplateService _sysExcelTemplateService;
        private readonly ISysEnumDataService _sysEnumDataService;
        private readonly IRepository<SysMenu> _sysMenuRep; // 菜单表仓储
        /// <summary>
@@ -58,19 +46,20 @@
        /// <param name="codeGenConfigService"></param>
        /// <param name="viewEngine"></param>
        /// <param name="sysMenuRep"></param>
        /// <param name="sysEnumDataService"></param>
        public CodeGenerateService(IRepository<SysCodeGen> sysCodeGenRep,
                              IRepository<SysLowCode> sysLowCodeRep,
                              ICodeGenConfigService codeGenConfigService,
                              IViewEngine viewEngine,
                              IRepository<SysMenu> sysMenuRep,
            ISysExcelTemplateService sysExcelTemplateService)
            ISysEnumDataService sysEnumDataService)
        {
            _sysCodeGenRep = sysCodeGenRep;
            _sysLowCodeRep = sysLowCodeRep;
            _codeGenConfigService = codeGenConfigService;
            _viewEngine = viewEngine;
            _sysMenuRep = sysMenuRep;
            _sysExcelTemplateService = sysExcelTemplateService;
            _sysEnumDataService = sysEnumDataService;
        }
        /// <summary>
@@ -1041,6 +1030,7 @@
                    //获取要处理的代码生成配置的是增改的模版字段
                    var showCodeGenConfigs = tableFieldList.Where(w => w.WhetherAddUpdate.Equals("Y")).ToList();
                    showCodeGenConfigs = showCodeGenConfigs.Where(x => x.ColumnKey.ToLower() == "false").ToList();
                    int _mergeCellsCount = showCodeGenConfigs.Count();//合并列(模版赋值的标题列数)
                                                                      //获取必填字段
@@ -1102,26 +1092,26 @@
            StringBuilder _remarkContentBuilder = new StringBuilder();
            _remarkContentBuilder.AppendLine("");
            _remarkContentBuilder.AppendLine("1.支持Excel2007及以上版本文件。");
            _remarkContentBuilder.AppendLine("2.导入新增数据时不能超过5000行。");
            _remarkContentBuilder.AppendLine("3.导入更新数据时不能超过2000行。");
            _remarkContentBuilder.AppendLine("2.导入数据时不能超过5000行。");
            _remarkContentBuilder.AppendLine("");
            _remarkContentBuilder.AppendLine("");
            Dictionary<string, string> typeNameDict = new()
            {
                { "string", "文本。"},
                { "int", "数字。"},
                { "long", "数字。"},
                { "decimal", "小数。"},
                { "bool", "布尔。示例:是、否。"},
                { "string", "输入文本。"},
                { "int", "输入数字。"},
                { "long", "输入数字。"},
                { "decimal", "输入小数。"},
                { "bool", "是,否。"},
            };
            Dictionary<string, string> effectTypeDict = new()
            {
                { "datepicker", "日期。 示例: 2023/3/1"},
                { "datetimepicker", "日期时间。示例: 2023/3/1 12:00:00"},
                { "datepicker", "日期。 示例: 2023/3/1。"},
                { "datetimepicker", "日期时间。示例: 2023/3/1 12:00:00。"},
            };
            requiredTableFieldList.ForEach(x =>
            {
                string text = "";
@@ -1134,6 +1124,12 @@
                {
                    text += typeNameDict[x.DtoNetType];
                }
                else if (x.EffectType == "select")
                {
                    var queryValue = x.DtoNetType.Split('.').Last();
                    var enumStr = _sysEnumDataService.GetEnumDataListStr(new EnumDataInput() { EnumName = queryValue });
                    text += enumStr + "。";
                }
                else
                {
                    text += ("注意:类型未能识别出来,需要自己维护!!!。");
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/ISysEnumDataService.cs
@@ -15,6 +15,20 @@
        Task<dynamic> GetEnumDataList([FromQuery] EnumDataInput input);
        /// <summary>
        /// 通过枚举类型获取枚举值字符串集合
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<string> GetEnumDataListStrAsync([FromQuery] EnumDataInput input);
        /// <summary>
        /// 通过枚举类型获取枚举值字符串集合
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        string GetEnumDataListStr([FromQuery] EnumDataInput input);
        /// <summary>
        /// 
        /// </summary>
        /// <param name="input"></param>
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/SysEnumDataService.cs
@@ -6,6 +6,7 @@
using Furion.FriendlyException;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.Linq;
namespace Admin.NET.Application
{
@@ -41,6 +42,52 @@
        }
        /// <summary>
        /// 通过枚举类型获取枚举值字符串集合
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpGet("sysEnumData/getEnumDataListStrAsync")]
        public async Task<string> GetEnumDataListStrAsync([FromQuery] EnumDataInput input)
        {
            // 查找枚举
            var enumType = App.EffectiveTypes.FirstOrDefault(t => t.IsEnum && t.Name == input.EnumName);
            if (enumType == null)
                throw Oops.Oh(ErrorCode.D1502).StatusCode(405);
            // 获取枚举的Key和描述
            List<EnumDataOutput> retList = await Task.Run(() => EnumUtil.GetEnumDescDictionary(enumType)
                   .Select(x => new EnumDataOutput
                   {
                       Code = x.Key,
                       Value = x.Value
                   }).ToList());
            return string.Join(",", retList.Select(x => x.Value).ToList());
        }
        /// <summary>
        /// 通过枚举类型获取枚举值字符串集合
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpGet("sysEnumData/getEnumDataListStr")]
        public string GetEnumDataListStr([FromQuery] EnumDataInput input)
        {
            // 查找枚举
            var enumType = App.EffectiveTypes.FirstOrDefault(t => t.IsEnum && t.Name == input.EnumName);
            if (enumType == null)
                throw Oops.Oh(ErrorCode.D1502).StatusCode(405);
            // 获取枚举的Key和描述
            List<EnumDataOutput> retList = EnumUtil.GetEnumDescDictionary(enumType)
                   .Select(x => new EnumDataOutput
                   {
                       Code = x.Key,
                       Value = x.Value
                   }).ToList();
            return string.Join(",", retList.Select(x => x.Value).ToList());
        }
        /// <summary>
        /// 通过实体字段类型获取相关集合(目前仅支持枚举类型)
        /// </summary>
        /// <param name="input"></param>