From 7ca9651f81d7b84f054194d3d46fdbd1d9c8b922 Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期三, 09 七月 2025 22:55:27 +0800 Subject: [PATCH] 增加质检出入库逻辑 --- 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/Seed/FrameSeed.cs | 582 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 582 insertions(+), 0 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Seed/FrameSeed.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Seed/FrameSeed.cs" new file mode 100644 index 0000000..4711bda --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Seed/FrameSeed.cs" @@ -0,0 +1,582 @@ +锘縰sing SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEA_Core.Seed +{ + public class FrameSeed + { + + /// <summary> + /// 鐢熸垚Controller灞� + /// </summary> + /// <param name="sqlSugarClient">sqlsugar瀹炰緥</param> + /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param> + /// <param name="tableNames">鏁版嵁搴撹〃鍚嶆暟缁勶紝榛樿绌猴紝鐢熸垚鎵�鏈夎〃</param> + /// <param name="isMuti"></param> + /// <returns></returns> + public static bool CreateControllers(SqlSugarScope sqlSugarClient, string ConnId = null, bool isMuti = false, string[] tableNames = null) + { + Create_Controller_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.Api.Controllers", "Blog.Core.Api.Controllers", tableNames, "", isMuti); + return true; + } + + /// <summary> + /// 鐢熸垚Model灞� + /// </summary> + /// <param name="sqlSugarClient">sqlsugar瀹炰緥</param> + /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param> + /// <param name="tableNames">鏁版嵁搴撹〃鍚嶆暟缁勶紝榛樿绌猴紝鐢熸垚鎵�鏈夎〃</param> + /// <param name="isMuti"></param> + /// <returns></returns> + public static bool CreateModels(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null) + { + Create_Model_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.Model", "Blog.Core.Model.Models", tableNames, "", isMuti); + return true; + } + + /// <summary> + /// 鐢熸垚IRepository灞� + /// </summary> + /// <param name="sqlSugarClient">sqlsugar瀹炰緥</param> + /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param> + /// <param name="isMuti"></param> + /// <param name="tableNames">鏁版嵁搴撹〃鍚嶆暟缁勶紝榛樿绌猴紝鐢熸垚鎵�鏈夎〃</param> + /// <returns></returns> + public static bool CreateIRepositorys(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null) + { + Create_IRepository_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.IRepository", "Blog.Core.IRepository", tableNames, "", isMuti); + return true; + } + + + + /// <summary> + /// 鐢熸垚 IService 灞� + /// </summary> + /// <param name="sqlSugarClient">sqlsugar瀹炰緥</param> + /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param> + /// <param name="isMuti"></param> + /// <param name="tableNames">鏁版嵁搴撹〃鍚嶆暟缁勶紝榛樿绌猴紝鐢熸垚鎵�鏈夎〃</param> + /// <returns></returns> + public static bool CreateIServices(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null) + { + Create_IServices_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.IServices", "Blog.Core.IServices", tableNames, "", isMuti); + return true; + } + + + + /// <summary> + /// 鐢熸垚 Repository 灞� + /// </summary> + /// <param name="sqlSugarClient">sqlsugar瀹炰緥</param> + /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param> + /// <param name="isMuti"></param> + /// <param name="tableNames">鏁版嵁搴撹〃鍚嶆暟缁勶紝榛樿绌猴紝鐢熸垚鎵�鏈夎〃</param> + /// <returns></returns> + public static bool CreateRepository(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null) + { + Create_Repository_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.Repository", "Blog.Core.Repository", tableNames, "", isMuti); + return true; + } + + + + /// <summary> + /// 鐢熸垚 Service 灞� + /// </summary> + /// <param name="sqlSugarClient">sqlsugar瀹炰緥</param> + /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param> + /// <param name="isMuti"></param> + /// <param name="tableNames">鏁版嵁搴撹〃鍚嶆暟缁勶紝榛樿绌猴紝鐢熸垚鎵�鏈夎〃</param> + /// <returns></returns> + public static bool CreateServices(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null) + { + Create_Services_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.Services", "Blog.Core.Services", tableNames, "", isMuti); + return true; + } + + + #region 鏍规嵁鏁版嵁搴撹〃鐢熶骇Controller灞� + + /// <summary> + /// 鍔熻兘鎻忚堪:鏍规嵁鏁版嵁搴撹〃鐢熶骇Controller灞� + /// 浣溿��銆�鑰�:Blog.Core + /// </summary> + /// <param name="sqlSugarClient"></param> + /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param> + /// <param name="strPath">瀹炰綋绫诲瓨鏀捐矾寰�</param> + /// <param name="strNameSpace">鍛藉悕绌洪棿</param> + /// <param name="lstTableNames">鐢熶骇鎸囧畾鐨勮〃</param> + /// <param name="strInterface">瀹炵幇鎺ュ彛</param> + /// <param name="isMuti"></param> + /// <param name="blnSerializable">鏄惁搴忓垪鍖�</param> + private static void Create_Controller_ClassFileByDBTalbe( + SqlSugarScope sqlSugarClient, + string ConnId, + string strPath, + string strNameSpace, + string[] lstTableNames, + string strInterface, + bool isMuti = false, + bool blnSerializable = false) + { + var IDbFirst = sqlSugarClient.DbFirst; + if (lstTableNames != null && lstTableNames.Length > 0) + { + IDbFirst = IDbFirst.Where(lstTableNames); + } + var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute() + + .SettingClassTemplate(p => p = +@"using Blog.Core.IServices; +using Blog.Core.Model; +using Blog.Core.Model.Models; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Linq.Expressions; +using System.Threading.Tasks; + +namespace " + strNameSpace + @" +{ + [Route(""api/[controller]/[action]"")] + [ApiController] + [Authorize(Permissions.Name)] + public class {ClassName}Controller : ControllerBase + { + /// <summary> + /// 鏈嶅姟鍣ㄦ帴鍙o紝鍥犱负鏄ā鏉跨敓鎴愶紝鎵�浠ラ瀛楁瘝鏄ぇ鍐欑殑锛岃嚜宸卞彲浠ラ噸鏋勪笅 + /// </summary> + private readonly I{ClassName}Services _{ClassName}Services; + + public {ClassName}Controller(I{ClassName}Services {ClassName}Services) + { + _{ClassName}Services = {ClassName}Services; + } + + [HttpGet] + public async Task<MessageModel<PageModel<{ClassName}>>> Get(int page = 1, string key = """",int intPageSize = 50) + { + if (string.IsNullOrEmpty(key) || string.IsNullOrWhiteSpace(key)) + { + key = """"; + } + + Expression<Func<{ClassName}, bool>> whereExpression = a => true; + + return new MessageModel<PageModel<{ClassName}>>() + { + msg = ""鑾峰彇鎴愬姛"", + success = true, + response = await _{ClassName}Services.QueryPage(whereExpression, page, intPageSize) + }; + + } + + [HttpGet(""{id}"")] + public async Task<MessageModel<{ClassName}>> Get(string id) + { + return new MessageModel<{ClassName}>() + { + msg = ""鑾峰彇鎴愬姛"", + success = true, + response = await _{ClassName}Services.QueryById(id) + }; + } + + [HttpPost] + public async Task<MessageModel<string>> Post([FromBody] {ClassName} request) + { + var data = new MessageModel<string>(); + + var id = await _{ClassName}Services.Add(request); + data.success = id > 0; + if (data.success) + { + data.response = id.ObjToString(); + data.msg = ""娣诲姞鎴愬姛""; + } + + return data; + } + + [HttpPut] + public async Task<MessageModel<string>> Put([FromBody] {ClassName} request) + { + var data = new MessageModel<string>(); + data.success = await _{ClassName}Services.Update(request); + if (data.success) + { + data.msg = ""鏇存柊鎴愬姛""; + data.response = request?.id.ObjToString(); + } + + return data; + } + + [HttpDelete] + public async Task<MessageModel<string>> Delete(int id) + { + var data = new MessageModel<string>(); + var model = await _{ClassName}Services.QueryById(id); + model.IsDeleted = true; + data.success = await _departmentServices.Update(model); + if (data.success) + { + data.msg = ""鍒犻櫎鎴愬姛""; + data.response = model?.Id.ObjToString(); + } + + return data; + } + } +}") + + .ToClassStringList(strNameSpace); + + Dictionary<string, string> newdic = new Dictionary<string, string>(); + //寰幆澶勭悊 棣栧瓧姣嶅皬鍐� 骞舵彃鍏ユ柊鐨� Dictionary + foreach (KeyValuePair<string, string> item in ls) + { + string newkey = "_" + item.Key.First().ToString().ToLower() + item.Key.Substring(1); + string newvalue = item.Value.Replace("_" + item.Key, newkey); + newdic.Add(item.Key, newvalue); + } + CreateFilesByClassStringList(newdic, strPath, "{0}Controller"); + } + #endregion + + + #region 鏍规嵁鏁版嵁搴撹〃鐢熶骇Model灞� + + /// <summary> + /// 鍔熻兘鎻忚堪:鏍规嵁鏁版嵁搴撹〃鐢熶骇Model灞� + /// 浣溿��銆�鑰�:Blog.Core + /// </summary> + /// <param name="sqlSugarClient"></param> + /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param> + /// <param name="strPath">瀹炰綋绫诲瓨鏀捐矾寰�</param> + /// <param name="strNameSpace">鍛藉悕绌洪棿</param> + /// <param name="lstTableNames">鐢熶骇鎸囧畾鐨勮〃</param> + /// <param name="strInterface">瀹炵幇鎺ュ彛</param> + /// <param name="isMuti"></param> + /// <param name="blnSerializable">鏄惁搴忓垪鍖�</param> + private static void Create_Model_ClassFileByDBTalbe( + SqlSugarScope sqlSugarClient, + string ConnId, + string strPath, + string strNameSpace, + string[] lstTableNames, + string strInterface, + bool isMuti = false, + bool blnSerializable = false) + { + //澶氬簱鏂囦欢鍒嗙 + if (isMuti) + { + strPath = strPath + @"\Models\" + ConnId; + strNameSpace = strNameSpace + "." + ConnId; + } + + var IDbFirst = sqlSugarClient.DbFirst; + if (lstTableNames != null && lstTableNames.Length > 0) + { + IDbFirst = IDbFirst.Where(lstTableNames); + } + var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute() + + .SettingClassTemplate(p => p = +@"{using} + +namespace " + strNameSpace + @" +{ +{ClassDescription} + [SugarTable( ""{ClassName}"", """ + ConnId + @""")]" + (blnSerializable ? "\n [Serializable]" : "") + @" + public class {ClassName}" + (string.IsNullOrEmpty(strInterface) ? "" : (" : " + strInterface)) + @" + { + public {ClassName}() + { + } +{PropertyName} + } +}") + //.SettingPropertyDescriptionTemplate(p => p = string.Empty) + .SettingPropertyTemplate(p => p = +@"{SugarColumn} + public {PropertyType} {PropertyName} { get; set; }") + + //.SettingConstructorTemplate(p => p = " this._{PropertyName} ={DefaultValue};") + + .ToClassStringList(strNameSpace); + CreateFilesByClassStringList(ls, strPath, "{0}"); + } + #endregion + + + #region 鏍规嵁鏁版嵁搴撹〃鐢熶骇IRepository灞� + + /// <summary> + /// 鍔熻兘鎻忚堪:鏍规嵁鏁版嵁搴撹〃鐢熶骇IRepository灞� + /// 浣溿��銆�鑰�:Blog.Core + /// </summary> + /// <param name="sqlSugarClient"></param> + /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param> + /// <param name="strPath">瀹炰綋绫诲瓨鏀捐矾寰�</param> + /// <param name="strNameSpace">鍛藉悕绌洪棿</param> + /// <param name="lstTableNames">鐢熶骇鎸囧畾鐨勮〃</param> + /// <param name="strInterface">瀹炵幇鎺ュ彛</param> + /// <param name="isMuti"></param> + private static void Create_IRepository_ClassFileByDBTalbe( + SqlSugarScope sqlSugarClient, + string ConnId, + string strPath, + string strNameSpace, + string[] lstTableNames, + string strInterface, + bool isMuti = false + ) + { + //澶氬簱鏂囦欢鍒嗙 + if (isMuti) + { + strPath = strPath + @"\" + ConnId; + strNameSpace = strNameSpace + "." + ConnId; + } + + var IDbFirst = sqlSugarClient.DbFirst; + if (lstTableNames != null && lstTableNames.Length > 0) + { + IDbFirst = IDbFirst.Where(lstTableNames); + } + var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute() + + .SettingClassTemplate(p => p = +@"using Blog.Core.IRepository.Base; +using Blog.Core.Model.Models" + (isMuti ? "." + ConnId + "" : "") + @"; + +namespace " + strNameSpace + @" +{ + /// <summary> + /// I{ClassName}Repository + /// </summary> + public interface I{ClassName}Repository : IBaseRepository<{ClassName}>" + (string.IsNullOrEmpty(strInterface) ? "" : (" , " + strInterface)) + @" + { + } +}") + + .ToClassStringList(strNameSpace); + CreateFilesByClassStringList(ls, strPath, "I{0}Repository"); + } + #endregion + + + #region 鏍规嵁鏁版嵁搴撹〃鐢熶骇IServices灞� + + /// <summary> + /// 鍔熻兘鎻忚堪:鏍规嵁鏁版嵁搴撹〃鐢熶骇IServices灞� + /// 浣溿��銆�鑰�:Blog.Core + /// </summary> + /// <param name="sqlSugarClient"></param> + /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param> + /// <param name="strPath">瀹炰綋绫诲瓨鏀捐矾寰�</param> + /// <param name="strNameSpace">鍛藉悕绌洪棿</param> + /// <param name="lstTableNames">鐢熶骇鎸囧畾鐨勮〃</param> + /// <param name="strInterface">瀹炵幇鎺ュ彛</param> + /// <param name="isMuti"></param> + private static void Create_IServices_ClassFileByDBTalbe( + SqlSugarScope sqlSugarClient, + string ConnId, + string strPath, + string strNameSpace, + string[] lstTableNames, + string strInterface, + bool isMuti = false) + { + //澶氬簱鏂囦欢鍒嗙 + if (isMuti) + { + strPath = strPath + @"\" + ConnId; + strNameSpace = strNameSpace + "." + ConnId; + } + + var IDbFirst = sqlSugarClient.DbFirst; + if (lstTableNames != null && lstTableNames.Length > 0) + { + IDbFirst = IDbFirst.Where(lstTableNames); + } + var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute() + + .SettingClassTemplate(p => p = +@"using Blog.Core.IServices.BASE; +using Blog.Core.Model.Models" + (isMuti ? "." + ConnId + "" : "") + @"; + +namespace " + strNameSpace + @" +{ + /// <summary> + /// I{ClassName}Services + /// </summary> + public interface I{ClassName}Services :IBaseServices<{ClassName}>" + (string.IsNullOrEmpty(strInterface) ? "" : (" , " + strInterface)) + @" + { + } +}") + + .ToClassStringList(strNameSpace); + CreateFilesByClassStringList(ls, strPath, "I{0}Services"); + } + #endregion + + + + #region 鏍规嵁鏁版嵁搴撹〃鐢熶骇 Repository 灞� + + /// <summary> + /// 鍔熻兘鎻忚堪:鏍规嵁鏁版嵁搴撹〃鐢熶骇 Repository 灞� + /// 浣溿��銆�鑰�:Blog.Core + /// </summary> + /// <param name="sqlSugarClient"></param> + /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param> + /// <param name="strPath">瀹炰綋绫诲瓨鏀捐矾寰�</param> + /// <param name="strNameSpace">鍛藉悕绌洪棿</param> + /// <param name="lstTableNames">鐢熶骇鎸囧畾鐨勮〃</param> + /// <param name="strInterface">瀹炵幇鎺ュ彛</param> + /// <param name="isMuti"></param> + private static void Create_Repository_ClassFileByDBTalbe( + SqlSugarScope sqlSugarClient, + string ConnId, + string strPath, + string strNameSpace, + string[] lstTableNames, + string strInterface, + bool isMuti = false) + { + //澶氬簱鏂囦欢鍒嗙 + if (isMuti) + { + strPath = strPath + @"\" + ConnId; + strNameSpace = strNameSpace + "." + ConnId; + } + + var IDbFirst = sqlSugarClient.DbFirst; + if (lstTableNames != null && lstTableNames.Length > 0) + { + IDbFirst = IDbFirst.Where(lstTableNames); + } + var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute() + + .SettingClassTemplate(p => p = +@"using Blog.Core.IRepository" + (isMuti ? "." + ConnId + "" : "") + @"; +using Blog.Core.IRepository.UnitOfWork; +using Blog.Core.Model.Models" + (isMuti ? "." + ConnId + "" : "") + @"; +using Blog.Core.Repository.Base; + +namespace " + strNameSpace + @" +{ + /// <summary> + /// {ClassName}Repository + /// </summary> + public class {ClassName}Repository : BaseRepository<{ClassName}>, I{ClassName}Repository" + (string.IsNullOrEmpty(strInterface) ? "" : (" , " + strInterface)) + @" + { + public {ClassName}Repository(IUnitOfWork unitOfWork) : base(unitOfWork) + { + } + } +}") + .ToClassStringList(strNameSpace); + + + CreateFilesByClassStringList(ls, strPath, "{0}Repository"); + } + #endregion + + + #region 鏍规嵁鏁版嵁搴撹〃鐢熶骇 Services 灞� + + /// <summary> + /// 鍔熻兘鎻忚堪:鏍规嵁鏁版嵁搴撹〃鐢熶骇 Services 灞� + /// 浣溿��銆�鑰�:Blog.Core + /// </summary> + /// <param name="sqlSugarClient"></param> + /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param> + /// <param name="strPath">瀹炰綋绫诲瓨鏀捐矾寰�</param> + /// <param name="strNameSpace">鍛藉悕绌洪棿</param> + /// <param name="lstTableNames">鐢熶骇鎸囧畾鐨勮〃</param> + /// <param name="strInterface">瀹炵幇鎺ュ彛</param> + /// <param name="isMuti"></param> + private static void Create_Services_ClassFileByDBTalbe( + SqlSugarScope sqlSugarClient, + string ConnId, + string strPath, + string strNameSpace, + string[] lstTableNames, + string strInterface, + bool isMuti = false) + { + //澶氬簱鏂囦欢鍒嗙 + if (isMuti) + { + strPath = strPath + @"\" + ConnId; + strNameSpace = strNameSpace + "." + ConnId; + } + + var IDbFirst = sqlSugarClient.DbFirst; + if (lstTableNames != null && lstTableNames.Length > 0) + { + IDbFirst = IDbFirst.Where(lstTableNames); + } + var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute() + + .SettingClassTemplate(p => p = +@" +using Blog.Core.IServices" + (isMuti ? "." + ConnId + "" : "") + @"; +using Blog.Core.Model.Models" + (isMuti ? "." + ConnId + "" : "") + @"; +using Blog.Core.Services.BASE; +using Blog.Core.IRepository.Base; + +namespace " + strNameSpace + @" +{ + public class {ClassName}Services : BaseServices<{ClassName}>, I{ClassName}Services" + (string.IsNullOrEmpty(strInterface) ? "" : (" , " + strInterface)) + @" + { + private readonly IBaseRepository<{ClassName}> _dal; + public {ClassName}Services(IBaseRepository<{ClassName}> dal) + { + this._dal = dal; + base.BaseDal = dal; + } + } +}") + .ToClassStringList(strNameSpace); + + CreateFilesByClassStringList(ls, strPath, "{0}Services"); + } + #endregion + + + #region 鏍规嵁妯℃澘鍐呭鎵归噺鐢熸垚鏂囦欢 + /// <summary> + /// 鏍规嵁妯℃澘鍐呭鎵归噺鐢熸垚鏂囦欢 + /// </summary> + /// <param name="ls">绫绘枃浠跺瓧绗︿覆list</param> + /// <param name="strPath">鐢熸垚璺緞</param> + /// <param name="fileNameTp">鏂囦欢鍚嶆牸寮忔ā鏉�</param> + private static void CreateFilesByClassStringList(Dictionary<string, string> ls, string strPath, string fileNameTp) + { + + foreach (var item in ls) + { + var fileName = $"{string.Format(fileNameTp, item.Key)}.cs"; + var fileFullPath = Path.Combine(strPath, fileName); + if (!Directory.Exists(strPath)) + { + Directory.CreateDirectory(strPath); + } + File.WriteAllText(fileFullPath, item.Value, Encoding.UTF8); + } + } + #endregion + } +} -- Gitblit v1.9.3