using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Enums; using JNPF.Common.Filter; using JNPF.Common.Security; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.Systems.Entitys.Permission; using JNPF.Systems.Entitys.System; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Entitys.Dto.VisualDevModelData; using JNPF.VisualDev.Interfaces; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SqlSugar; using Tnb.BasicData.Entities; namespace Tnb.BasicData { /// /// 工位绑定库位 /// [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 1102)] [Route("api/[area]/[controller]/[action]")] [OverideVisualDev(ModelId)] public class BasOrgLocationService : IOverideVisualDevService, IDynamicApiController, ITransient { public const string ModelId = "35018844692245"; private readonly ISqlSugarRepository _repository; private readonly IUserManager _userManager; private readonly IVisualDevService _visualDevService; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public BasOrgLocationService( ISqlSugarRepository repository, IUserManager userManager, IVisualDevService visualDevService) { _repository = repository; _userManager = userManager; _visualDevService = visualDevService; OverideFuncs.GetListAsync = GetList; OverideFuncs.CreateAsync = Create; } private async Task GetList(VisualDevModelListQueryInput input) { ISqlSugarClient db = _repository.AsSugarClient(); Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); string f_organize_id = queryJson.ContainsKey("f_organize_id") ? queryJson["f_organize_id"].ToString() : ""; SqlSugarPagedList result = await db.Queryable() .LeftJoin((a, b) => a.ObjectId == b.id) .LeftJoin((a,b,c)=>a.OrganizeId==c.Id) .WhereIF(!string.IsNullOrEmpty(f_organize_id), (a, b) => a.OrganizeId.Contains(f_organize_id)) .Where(a=>a.ObjectType=="Loc") .OrderByDescending(a => a.CreatorTime) .Select((a, b,c) => new OrgLocOutput { id = a.Id, f_organize_id = c.FullName, f_object_id = b.location_name }).ToPagedListAsync(input.currentPage, input.pageSize); return PageResult.SqlSugarPageResult(result); } /// /// 保存工序工位关联表 /// [HttpPost] public async Task Create(VisualDevModelDataCrInput visualDevModelDataCrInput) { DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { Console.WriteLine(JsonConvert.SerializeObject(visualDevModelDataCrInput.data)); List orgIds = JsonConvert.DeserializeObject>(visualDevModelDataCrInput.data["f_organize_id"].ToString()); List locIds = JsonConvert.DeserializeObject>(visualDevModelDataCrInput.data["f_object_id"].ToString()); List list = new List(); foreach (var item in locIds) { list.Add(new OrganizeRelationEntity() { Id = SnowflakeIdHelper.NextId(), OrganizeId = orgIds[orgIds.Count-1], ObjectId = item, ObjectType = "Loc", CreatorTime = DateTime.Now, CreatorUserId = _userManager.UserId }); } if (list.Count > 0) { await _repository.AsSugarClient().Insertable(list).ExecuteCommandAsync(); } }); return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result.IsSuccess ? "保存成功" : result.ErrorMessage); } } }