schangxiang@126.com
2025-05-04 dbb886f05af928ec4bd8b632fe7204f2551ef866
2222
已修改3个文件
403 ■■■■■ 文件已修改
Weben_CMS专用代码生成器/Code/Generate/Controller/Controller_Generate.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/MainForm.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Controller模板.txt 372 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Generate/Controller/Controller_Generate.cs
@@ -1,5 +1,6 @@

using GenerateCode_WeiBen_WMS.Model;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -12,24 +13,16 @@
    /// </summary>
    public class Controller_Generate : BaseGenerate
    {
        public static string CreateText(string Modulelogo,
            string ChinaComment, List<ColumnModel> columnNameList, string entityName, string orderByName = "")
        public static string CreateText(GenerateCodeParam param)
        {
            var str = TextHelper.ReadText(@"Templete\Controller模板.txt");
            CommonReplace(ref str);
            str = str.Replace("$ChinaComment$", ChinaComment);//中文注释
            str = str.Replace("$EntityName$", entityName);
            str = str.Replace("$Modulelogo$", Modulelogo);//模块简写
            str = str.Replace("$OrderByName$", orderByName == "" ? "Id" : orderByName);//模块简写
            str = str.Replace("$ValidateEmptyForInsert$", StructStrHelper.GetValidateEmptyStrForController(columnNameList));
            str = str.Replace("$ValidateEmptyForUpdate$", StructStrHelper.GetValidateEmptyStrForController(columnNameList, false));
            CommonReplace(ref str);
            CommonHelper.CommonReplaceStr(param, ref str);
            var pageStr = StructStrHelper.GetPageFilterStrForController(columnNameList);
            str = str.Replace("$PageSearchFilter$", pageStr);
            return str;
        }
    }
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/MainForm.cs
@@ -33,7 +33,7 @@
            this.tb_ChinaComment.Text = "物料基础信息表";//中文注释
            this.tb_CreatePerson.Text = "shaocx";//创建人
            this.tb_EntityName.Text = "WmsMaterial";//实体类名
            this.tb_EntityProName.Text = "_wmsMaterial";//实体类对象名
            //this.tb_EntityProName.Text = "wmsMaterial";//实体类对象名
            this.tb_EnumList.Text = "PurchaseType|PurchaseTypeEnum|PurchaseTypeDesc,MaterialType|MaterialTypeEnum|MaterialTypeDesc,IsMainBranch|YesNoEnum|IsMainBranchDesc";
            this.cmb_DataSource.DropDownStyle = ComboBoxStyle.DropDownList;
@@ -163,7 +163,7 @@
                    NameSpacePath = wcf_NameSpacePath,
                    ColumnNameList = columnList,
                    EntityName = entityName,
                    EntityInstanceName= tableAlias
                    EntityInstanceName = tableAlias
                };
                //处理枚举类型
                List<EnumModel> enumList = new List<EnumModel>();
@@ -235,6 +235,16 @@
                #endregion
                #region Contorller
                //10、生成 Contorller æ–‡ä»¶
                var continerlllePath = tbPath.Text + @"\server\src\CMS.Plugin." + tb_WCF_NameSpacePath.Text.Trim() + @".Controller";
                str_generate = Controller_Generate.CreateText(param);
                tf = TextHelper.Export2File_V2(continerlllePath, $"{param.EntityName}Controller.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
                #endregion
                ////生成 OutputModel æ–‡ä»¶
                //str_generate = OutputModel_Generate.CreateQueryModelLText(modulelogo, chinaComment, columnList, entityName);
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/ControllerÄ£°å.txt
@@ -1,274 +1,188 @@
using $ProjectNamePrefix$.Core.Common.HttpContextUser;
using $ProjectNamePrefix$.Core.Extensions.Others;
using $ProjectNamePrefix$.Core.IServices;
using $ProjectNamePrefix$.Core.Model;
using $ProjectNamePrefix$.Core.Model.CommonModel;
using $ProjectNamePrefix$.Core.Model.Models;
using $ProjectNamePrefix$.Core.Model.ParamModels;
using $ProjectNamePrefix$.Core.Utility;
using Ao.Lang;
using CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Dtos.$EntityName$;
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Threading.Tasks;
using System;
using MiniExcelLibs;
using System.Reflection;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
namespace $ProjectNamePrefix$.Core.Api.Controllers
namespace CMS.Plugin.$NameSpacePath$.Controller
{
    /// <summary>
    /// $ChinaComment$
    /// $ChinaComment$服务
    /// </summary>
    [Route("api/[controller]/[action]")]
    [ApiController]
    [Authorize(Permissions.Name)]
    [TypeFilter(typeof(CMSLanguageFilter))]
    [TypeFilter(typeof(CMSUowActionFilter))]
    [TypeFilter(typeof(CMSAuditActionFilter))]
    [TypeFilter(typeof(CMSExceptionFilter))]
    [Route("api/v{version:apiVersion}/$NameSpacePath$/[controller]")]
    public class $EntityName$Controller : ControllerBase
    {
        private readonly I$EntityName$Services _$EntityName$Services;
        private readonly IUser _user;
        private readonly ILogger<$EntityName$Controller> _logger;
        private readonly I$EntityName$AppService _$EntityInstanceName$AppService;
        public $EntityName$Controller(I$EntityName$Services $EntityName$Services, IUser user, ILogger<$EntityName$Controller> logger)
        /// <summary>
        /// Initializes a new instance of the <see cref="$EntityName$Controller"/> class.
        /// </summary>
        /// <param name="$EntityInstanceName$AppService">The $EntityInstanceName$ application service.</param>
        public $EntityName$Controller(I$EntityName$AppService $EntityInstanceName$AppService)
        {
            _$EntityName$Services = $EntityName$Services;
            _user = user;
            _logger = logger;
            _$EntityInstanceName$AppService = $EntityInstanceName$AppService;
        }
        /// <summary>
        /// åˆ†é¡µèŽ·å–$ChinaComment$列表
        /// èŽ·å–$ChinaComment$
        /// </summary>
        /// <param name="param">筛选条件</param>
        /// <returns>获取结果</returns>
        [HttpPost]
        public async Task<MessageModel<PageModel<$EntityName$>>> Get([FromBody] $EntityName$Param param)
        {
            if (string.IsNullOrEmpty(param.searchVal) || string.IsNullOrWhiteSpace(param.searchVal))
            {
                param.searchVal = string.Empty;
            }
            var whereConditions = WhereConditionsExtensions.GetWhereConditions<$EntityName$, $EntityName$Param>(param);
            if (!whereConditions.IsSuccess) {
                return new MessageModel<PageModel<$EntityName$>>()
                {
                    msg = whereConditions.ErrMsg,
                    success = false,
                    response = null
                };
            }
            var data = await _$EntityName$Services.QueryPage(whereConditions.data, param.page, param.pageSize, " $OrderByName$ desc ");
            return new MessageModel<PageModel<$EntityName$>>()
            {
                msg = "获取成功",
                success = true,
                response = data
            };
        }
        /// <summary>
        /// èŽ·å–å•ä¸ª$ChinaComment$
        /// </summary>
        /// <param name="id">主键</param>
        /// <returns>获取结果</returns>
        [HttpGet]
        public async Task<MessageModel<$EntityName$>> Get(int id = 0)
        {
            return new MessageModel<$EntityName$>()
            {
                msg = "获取成功",
                success = true,
                response = await _$EntityName$Services.QueryById(id)
            };
        }
        /// <summary>
        /// æ–°å¢ž$ChinaComment$
        /// </summary>
        /// <param name="request">要新增的$ChinaComment$对象</param>
        /// <param name="id">标识符.</param>
        /// <returns></returns>
        [HttpPost]
        public async Task<MessageModel<string>> Post([FromBody] $EntityName$ request)
        [HttpGet]
        [Route("{id}")]
        public virtual Task<$EntityName$Dto> GetAsync(Guid id)
        {
            try
            {
                #region éªŒè¯
                MessageModel<string> retBody = null;
                retBody = ValidateDataHelper.CommonValidateIsNULL<$EntityName$, string>(request);
                if (retBody != null)
                {
                    return retBody;
                }
            return _$EntityInstanceName$AppService.GetAsync(id);
        }
                List<ValidateModel> columnsList = null;
                columnsList = new List<ValidateModel>() {
                   $ValidateEmptyForInsert$
                };
                retBody = ValidateDataHelper.CommonValidate<$EntityName$, string>(request, columnsList);
                if (retBody != null)
                {
                    return retBody;
                }
                #endregion
        /// <summary>
        /// åˆ†é¡µèŽ·å–$ChinaComment$的列表.
        /// </summary>
        /// <param name="input">输入.</param>
        /// <returns></returns>
        [HttpGet]
        [Route("Page")]
        public virtual Task<PagedResultDto<$EntityName$Dto>> GetListAsync([FromQuery] Get$EntityName$Input input)
        {
            return _$EntityInstanceName$AppService.GetListAsync(input);
        }
                request.CreateTime = request.ModifyTime = DateTime.Now;
                request.CreateBy = request.ModifyBy = _user.Name;
                request.CreateId = request.ModifyId = _user.ID;
                request.OperationRemark = "添加";
                var id = await _$EntityName$Services.Add(request);
                var success = id > 0;
                if (success)
                {
                    return MessageModel<string>.Success("添加成功", id.ObjToString());
                }
                return MessageModel<string>.Fail("添加失败");
            }
            catch (Exception ex)
            {
                _logger.LogError(ex,"新增$ChinaComment$出现异常:" + ex.Message);
                return MessageModel<string>.Fail("新增$ChinaComment$出现异常:" + ex.Message);
            }
        /// <summary>
        /// åˆ›å»º$ChinaComment$
        /// </summary>
        /// <param name="input">输入.</param>
        /// <returns></returns>
        //[Authorize]
        [HttpPost]
        public virtual Task<$EntityName$Dto> CreateAsync($EntityName$CreateDto input)
        {
            return _$EntityInstanceName$AppService.CreateAsync(input);
        }
        /// <summary>
        /// æ›´æ–°$ChinaComment$
        /// </summary>
        /// <param name="request">要更新的$ChinaComment$对象</param>
        /// <returns>更新结果</returns>
        /// <param name="id">标识符.</param>
        /// <param name="input">输入.</param>
        /// <returns></returns>
        //[Authorize]
        [HttpPut]
        public async Task<MessageModel<string>> Put([FromBody] $EntityName$ request)
        [Route("{id}")]
        public virtual Task<$EntityName$Dto> UpdateAsync(Guid id, $EntityName$UpdateDto input)
        {
            try
            {
                #region éªŒè¯
                MessageModel<string> retBody = null;
                retBody = ValidateDataHelper.CommonValidateIsNULL<$EntityName$, string>(request);
                if (retBody != null)
                {
                    return retBody;
                }
            return _$EntityInstanceName$AppService.UpdateAsync(id, input);
        }
                List<ValidateModel> columnsList = null;
                columnsList = new List<ValidateModel>()
                {
                    $ValidateEmptyForUpdate$
                };
                retBody = ValidateDataHelper.CommonValidate<$EntityName$, string>(request, columnsList);
                if (retBody != null)
                {
                    return retBody;
                }
                #endregion
                var dbObj = await _$EntityName$Services.QueryById(request.Id);
                if (dbObj == null)
                {
                    return MessageModel<string>.Fail("数据不存在!");
                }
                request.ModifyTime = DateTime.Now;
                request.ModifyBy = _user.Name;
                request.ModifyId = _user.ID;
                request.OperationRemark = "更新";
                var success = await _$EntityName$Services.Update(request);
                if (success)
                {
                    return MessageModel<string>.Success("更新成功", request.Id.ObjToString());
                }
                return MessageModel<string>.Fail("更新失败");
            }
            catch (Exception ex)
            {
                _logger.LogError(ex,"更新$ChinaComment$出现异常:" + ex.Message);
                return MessageModel<string>.Fail("更新$ChinaComment$出现异常:" + ex.Message);
            }
        /// <summary>
        /// å…‹éš†$ChinaComment$
        /// </summary>
        /// <param name="ids">Id集合.</param>
        /// <returns></returns>
        //[Authorize]
        [HttpPost]
        [Route("Clone")]
        public virtual Task<List<$EntityName$Dto>> CloneAsync([FromBody] IEnumerable<Guid> ids)
        {
            return _$EntityInstanceName$AppService.CloneAsync(ids);
        }
        /// <summary>
        /// åˆ é™¤$ChinaComment$
        /// </summary>
        /// <param name="id">主键</param>
        /// <returns>删除结果</returns>
        /// <param name="id">标识符.</param>
        /// <returns></returns>
        //[Authorize]
        [HttpDelete]
        public async Task<MessageModel<string>> Delete(int id = 0)
        [Route("{id}")]
        public virtual Task DeleteAsync(Guid id)
        {
            try
            {
                var data = new MessageModel<string>();
                if (id > 0)
                {
                    var detail = await _$EntityName$Services.QueryById(id);
                    if (detail != null)
                    {
                        data.success = await _$EntityName$Services.DeleteById(detail.Id);
                        if (data.success)
                        {
                            data.msg = "删除成功";
                            data.response = detail?.Id.ObjToString();
                        }
                    }
                    else {
                        return MessageModel<string>.Fail("数据不存在!");
                    }
                }
                else
                {
                    data.success = false;
                    data.msg = "删除失败,$ChinaComment$不存在";
                }
                return data;
            }
            catch (Exception ex)
            {
                _logger.LogError(ex,"删除$ChinaComment$出现异常:" + ex.Message);
                return MessageModel<string>.Fail("删除$ChinaComment$出现异常:" + ex.Message);
            }
            return _$EntityInstanceName$AppService.DeleteAsync(id);
        }
        /// <summary>
        /// é€»è¾‘删除$ChinaComment$
        /// <summary>
        /// æ‰¹é‡åˆ é™¤$ChinaComment$
        /// </summary>
        /// <param name="id">主键</param>
        /// <returns>删除结果</returns>
        /// <param name="ids">The ids.</param>
        /// <returns></returns>
        //[Authorize]
        [HttpDelete]
        public async Task<MessageModel<string>> LogicDelete(int id = 0)
        public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids)
        {
            try
            return _$EntityInstanceName$AppService.DeleteManyAsync(ids);
        }
        /// <summary>
        /// è°ƒæ•´æŽ’序$ChinaComment$
        /// </summary>
        /// <param name="id">标识符.</param>
        /// <returns></returns>
        [HttpPut]
        [Route("{id}/AdjustSort/{sort}")]
        public virtual Task AdjustSortAsync(Guid id, int sort)
        {
            return _$EntityInstanceName$AppService.AdjustSortAsync(id, sort);
        }
        /// <summary>
        /// å¯¼å…¥$ChinaComment$
        /// </summary>
        /// <returns></returns>
        [Authorize]
        [HttpPost]
        [Route("Import")]
        public virtual async Task<IActionResult> ImportAsync(IFormFile file)
        {
            using var stream = new MemoryStream();
            await file.CopyToAsync(stream);
            stream.Seek(0L, SeekOrigin.Begin);
            var sheetNames = stream.GetSheetNames();
            var $EntityInstanceName$Rows = sheetNames.Contains("配置") ? MiniExcel.Query<$EntityName$sImportModel.$EntityName$ImportModel>(stream, sheetName: "配置").ToList() : new();
            if (!$EntityInstanceName$Rows.Any())
            {
                var data = new MessageModel<string>();
                if (id > 0)
                {
                    var detail = await _$EntityName$Services.QueryById(id);
                    if (detail != null)
                    {
                        detail.ModifyTime = DateTime.Now;
                        detail.ModifyBy = _user.Name;
                        detail.ModifyId = _user.ID;
                        detail.IsDeleted = true;
                        detail.OperationRemark = "删除";
                        data.success = await _$EntityName$Services.Update(detail);
                        if (data.success)
                        {
                            data.msg = "删除成功";
                            data.response = detail?.Id.ObjToString();
                        }
                    }
                }
                else
                {
                    data.success = false;
                    data.msg = "删除失败,数据不存在";
                }
                return data;
                throw new UserFriendlyException("请检查导入的表格");
            }
            catch (Exception ex)
            await _$EntityInstanceName$AppService.ImportAsync(new $EntityName$sImportModel
            {
                _logger.LogError(ex,"逻辑删除$ChinaComment$出现异常:" + ex.Message);
                return MessageModel<string>.Fail("逻辑删除$ChinaComment$出现异常:" + ex.Message);
                $EntityName$s = $EntityInstanceName$Rows,
            });
            return Ok();
        }
        /// <summary>
        /// å¯¼å‡º$ChinaComment$
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        [Route("Export")]
        public virtual async Task<IActionResult> ExportAsync([FromQuery] Get$EntityName$Input input)
        {
            input.MaxResultCount = int.MaxValue;
            var exportData = await _$EntityInstanceName$AppService.ExportAsync(input);
            var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/$EntityName$导出模板.xlsx");
            if (!System.IO.File.Exists(templatePath))
            {
                templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/$EntityName$导出模板.xlsx");
            }
            var memoryStream = new MemoryStream();
            await memoryStream.SaveAsByTemplateAsync(templatePath, exportData.Sheets);
            memoryStream.Seek(0L, SeekOrigin.Begin);
            return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = $"{exportData.FileName}_{DateTime.Now:yyyyMMddhhmmss}.xlsx" };
        }
    }
}
}