diff --git a/BasicData/Tnb.BasicData.Entities/Dto/OrgLocOutput.cs b/BasicData/Tnb.BasicData.Entities/Dto/OrgLocOutput.cs new file mode 100644 index 00000000..84af4710 --- /dev/null +++ b/BasicData/Tnb.BasicData.Entities/Dto/OrgLocOutput.cs @@ -0,0 +1,9 @@ +namespace Tnb.BasicData.Entities +{ + public class OrgLocOutput + { + public string id { get; set; } + public string f_organize_id { get; set; } + public string f_object_id { get; set; } + } +} \ No newline at end of file diff --git a/BasicData/Tnb.BasicData/BasOrgLocationService.cs b/BasicData/Tnb.BasicData/BasOrgLocationService.cs new file mode 100644 index 00000000..a47082a8 --- /dev/null +++ b/BasicData/Tnb.BasicData/BasOrgLocationService.cs @@ -0,0 +1,104 @@ +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); + } + } +} \ No newline at end of file