绑定库位

This commit is contained in:
2024-06-21 16:54:58 +08:00
parent 112f15a096
commit af388c17dd
2 changed files with 113 additions and 0 deletions

View File

@@ -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
{
/// <summary>
/// 工位绑定库位
/// </summary>
[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<OrganizeRelationEntity> _repository;
private readonly IUserManager _userManager;
private readonly IVisualDevService _visualDevService;
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
public BasOrgLocationService(
ISqlSugarRepository<OrganizeRelationEntity> repository,
IUserManager userManager,
IVisualDevService visualDevService)
{
_repository = repository;
_userManager = userManager;
_visualDevService = visualDevService;
OverideFuncs.GetListAsync = GetList;
OverideFuncs.CreateAsync = Create;
}
private async Task<dynamic> GetList(VisualDevModelListQueryInput input)
{
ISqlSugarClient db = _repository.AsSugarClient();
Dictionary<string, string>? queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(input.queryJson) : new Dictionary<string, string>();
string f_organize_id = queryJson.ContainsKey("f_organize_id") ? queryJson["f_organize_id"].ToString() : "";
SqlSugarPagedList<OrgLocOutput> result = await db.Queryable<OrganizeRelationEntity>()
.LeftJoin<BasLocation>((a, b) => a.ObjectId == b.id)
.LeftJoin<OrganizeEntity>((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<OrgLocOutput>.SqlSugarPageResult(result);
}
/// <summary>
/// 保存工序工位关联表
/// </summary>
[HttpPost]
public async Task<dynamic> Create(VisualDevModelDataCrInput visualDevModelDataCrInput)
{
DbResult<bool> result = await _repository.AsSugarClient().Ado.UseTranAsync(async () =>
{
Console.WriteLine(JsonConvert.SerializeObject(visualDevModelDataCrInput.data));
List<string> orgIds = JsonConvert.DeserializeObject<List<String>>(visualDevModelDataCrInput.data["f_organize_id"].ToString());
List<string> locIds = JsonConvert.DeserializeObject<List<String>>(visualDevModelDataCrInput.data["f_object_id"].ToString());
List<OrganizeRelationEntity> list = new List<OrganizeRelationEntity>();
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);
}
}
}