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);
}
}
}