using iWare.Wms.Core; using Furion.DatabaseAccessor; using Furion.DatabaseAccessor.Extensions; using Furion.DependencyInjection; using Furion.DynamicApiController; using Furion.Extras.iWare.Wms.Entity; using Mapster; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace iWare.Wms.Application { /// /// 代码生成详细配置服务 /// [ApiDescriptionSettings(Name = "CodeGenConfig", Order = 100)] [Route("api")] public class SysCodeGenerateConfigService : ICodeGenConfigService, IDynamicApiController, ITransient { private readonly IRepository _sysLowCodeRep; // 代码生成器仓储 private readonly IRepository _sysCodeGenRep; // 代码生成器仓储 private readonly IRepository _sysCodeGenConfigRep; // 代码生成详细配置仓储 public SysCodeGenerateConfigService(IRepository sysCodeGenConfigRep, IRepository sysCodeGenRep , IRepository sysLowCodeRep ) { _sysLowCodeRep = sysLowCodeRep; _sysCodeGenConfigRep = sysCodeGenConfigRep; _sysCodeGenRep = sysCodeGenRep; } /// /// 代码生成详细配置列表 /// /// /// [HttpGet("sysCodeGenerateConfig/list")] public async Task> List([FromQuery] CodeGenConfig input) { var result = await _sysCodeGenConfigRep.DetachedEntities .Where(u => u.CodeGenId == input.CodeGenId && u.WhetherCommon != YesOrNot.Y.ToString()) .ProjectToType() .Distinct() .ToListAsync(); var codeGen = await _sysCodeGenRep.FirstOrDefaultAsync(x => x.Id == input.CodeGenId); var codeGenOutput = codeGen.Adapt(); result.ForEach(x => x.CodeGen = codeGenOutput); return result; } /// /// 更新 /// /// /// [HttpPost("sysCodeGenerateConfig/edit")] public async Task Update(List inputList) { if (inputList == null || inputList.Count < 1) return; var list = inputList.Adapt>(); await _sysCodeGenConfigRep.UpdateAsync(list); } /// /// 详情 /// /// /// [HttpGet("·/detail")] public async Task Detail([FromQuery] CodeGenConfig input) { return await _sysCodeGenConfigRep.FirstOrDefaultAsync(u => u.Id == input.Id); } /// /// 批量增加 /// /// /// [NonAction] public async Task DelAndAddList(List tableColumnOuputList, SysCodeGen codeGenerate) { if (tableColumnOuputList == null) return; var list = new List(); List list_LowCode = new List(); if (codeGenerate != null && codeGenerate.LowCodeId > 0 && _sysLowCodeRep.Where(x => x.SysLowCodeId == codeGenerate.LowCodeId).Any()) { list_LowCode = _sysLowCodeRep.Where(x => x.SysLowCodeId == codeGenerate.LowCodeId).ToList(); } foreach (var tableColumn in tableColumnOuputList) { var codeGenConfig = new SysCodeGenConfig(); var YesOrNo = YesOrNot.Y.ToString(); if (Convert.ToBoolean(tableColumn.ColumnKey)) { YesOrNo = YesOrNot.N.ToString(); } if (CodeGenUtil.IsCommonColumn(tableColumn.ColumnName)) { codeGenConfig.WhetherCommon = YesOrNot.Y.ToString(); YesOrNo = YesOrNot.N.ToString(); } else { codeGenConfig.WhetherCommon = YesOrNot.N.ToString(); } codeGenConfig.CodeGenId = codeGenerate.Id; codeGenConfig.ColumnName = tableColumn.ColumnName; codeGenConfig.ColumnComment = tableColumn.ColumnComment; codeGenConfig.NetType = CodeGenUtil.ConvertDataType(tableColumn.DataType); codeGenConfig.DtoNetType = list_LowCode.Where(x => x.FieldName == tableColumn.ColumnName).Select(x => x.DtoTypeName).FirstOrDefault(); if (string.IsNullOrEmpty(codeGenConfig.DtoNetType)) codeGenConfig.DtoNetType = codeGenConfig.NetType; codeGenConfig.WhetherRetract = YesOrNot.N.ToString(); codeGenConfig.WhetherRequired = YesOrNot.N.ToString(); codeGenConfig.QueryWhether = YesOrNo; codeGenConfig.WhetherAddUpdate = YesOrNo; codeGenConfig.WhetherTable = YesOrNo; codeGenConfig.WhetherOrderBy = YesOrNo; codeGenConfig.ColumnKey = tableColumn.ColumnKey; codeGenConfig.DataType = tableColumn.DataType; codeGenConfig.EffectType = CodeGenUtil.DataTypeToEff(codeGenConfig.NetType); codeGenConfig.QueryType = "=="; // QueryTypeEnum.eq.ToString(); list.Add(codeGenConfig); } _sysCodeGenConfigRep.Context.DeleteRange(x => x.CodeGenId == codeGenerate.Id); await _sysCodeGenConfigRep.InsertAsync(list); } /// /// 增加 /// /// /// [NonAction] public async Task Add(CodeGenConfig input) { var codeGenConfig = input.Adapt(); await codeGenConfig.InsertAsync(); } /// /// 删除 /// /// /// [NonAction] public async Task Delete(long codeGenId) { var codeGenConfigList = await _sysCodeGenConfigRep.Where(u => u.CodeGenId == codeGenId).ToListAsync(); await _sysCodeGenConfigRep.DeleteAsync(codeGenConfigList); } } }