using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Interfaces; using Microsoft.AspNetCore.Mvc; using SqlSugar; using Tnb.BasicData.Entities; using Tnb.EquipMgr.Entities; using Tnb.EquipMgr.Interfaces; namespace Tnb.EquipMgr { /// /// 模具库位服务 /// [ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 700)] [Route("api/[area]/[controller]/[action]")] [OverideVisualDev(ModuleId)] public class ToolMoldLocationService : IToolMoldLocationService, IOverideVisualDevService, IDynamicApiController, ITransient { public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); private const string ModuleId = "27207685649173"; private readonly ISqlSugarClient _db; private readonly IVisualDevService _visualDevService; private readonly IRunService _runService; private readonly IUserManager _userManager; public ToolMoldLocationService(ISqlSugarRepository repository, IVisualDevService visualDevService, IUserManager userManager, IRunService runService) { _db = repository.AsSugarClient(); _visualDevService = visualDevService; _runService = runService; _userManager = userManager; OverideFuncs.CreateAsync = Create; OverideFuncs.UpdateAsync = Update; } public async Task> GetLocationDictionary() { return await _db.Queryable().ToDictionaryAsync(x => x.id, x => x.location_code); } private async Task Create(VisualDevModelDataCrInput visualDevModelDataCrInput) { string? qrcode = visualDevModelDataCrInput.data.ContainsKey("qrcode") ? visualDevModelDataCrInput.data["qrcode"].ToString() : ""; if (!string.IsNullOrEmpty(qrcode) && await _db.Queryable().AnyAsync(x => x.code == qrcode)) { throw Oops.Bah("二维码总表中已存在该二维码"); } else { VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); await _runService.Create(templateEntity, visualDevModelDataCrInput); string id = visualDevModelDataCrInput.data["ReturnIdentity"].ToString() ?? ""; if (!string.IsNullOrEmpty(qrcode)) { BasQrcode basQrcode = new() { code = visualDevModelDataCrInput.data["qrcode"].ToString(), source_id = id, source_name = "TOOL_LOCATION", create_id = _userManager.UserId, create_time = DateTime.Now, org_id = _userManager.GetUserInfo().Result.organizeId, }; _ = await _db.Insertable(basQrcode).ExecuteCommandAsync(); } } return await Task.FromResult(true); } private async Task Update(string id, VisualDevModelDataUpInput visualDevModelDataUpInput) { string? qrcode = visualDevModelDataUpInput.data.ContainsKey("qrcode") ? visualDevModelDataUpInput.data["qrcode"].ToString() : ""; if (!string.IsNullOrEmpty(qrcode) && await _db.Queryable().AnyAsync(x => x.code == visualDevModelDataUpInput.data["qrcode"] && x.source_id != id)) { throw Oops.Bah("二维码总表中已存在该二维码"); } else { VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); await _runService.Update(id, templateEntity, visualDevModelDataUpInput); if (!string.IsNullOrEmpty(qrcode)) { if (await _db.Queryable().AnyAsync(x => x.source_id == id)) { _ = await _db.Updateable() .SetColumns(x => x.code == visualDevModelDataUpInput.data["qrcode"].ToString()).Where(x => x.source_id == id) .ExecuteCommandAsync(); } else { BasQrcode basQrcode = new() { code = visualDevModelDataUpInput.data["qrcode"].ToString(), source_id = id, source_name = "TOOL_LOCATION", create_id = _userManager.UserId, create_time = DateTime.Now, org_id = _userManager.GetUserInfo().Result.organizeId, }; _ = await _db.Insertable(basQrcode).ExecuteCommandAsync(); } } } return await Task.FromResult(true); } } }