using Aop.Api.Domain; using Aspose.Cells.Drawing; using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Filter; using JNPF.Common.Security; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.Extras.CollectiveOAuth.Models; using JNPF.FriendlyException; using JNPF.Logging; using JNPF.Systems.Entitys.Permission; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Entitys.Dto.VisualDevModelData; using JNPF.VisualDev.Interfaces; using Mapster; using Microsoft.AspNetCore.Mvc; using Senparc.NeuChar.ApiHandlers; using SqlSugar; using Tnb.BasicData; using Tnb.EquipMgr.Entities; using Tnb.EquipMgr.Entities.Dto; using Tnb.EquipMgr.Interfaces; using Tnb.BasicData.Entities; namespace Tnb.EquipMgr { /// /// 设备管理 /// [ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 700)] [Route("api/[area]/[controller]/[action]")] [OverideVisualDev(ModuleId)] public class EquipmentService : IOverideVisualDevService, IEquipmentService, IDynamicApiController, ITransient { public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); private const string ModuleId = "26012367560469"; private readonly ISqlSugarRepository _repository; private readonly IVisualDevService _visualDevService; private readonly IRunService _runService; private readonly IUserManager _userManager; public EquipmentService(ISqlSugarRepository repository, IVisualDevService visualDevService, IUserManager userManager, IRunService runService ) { _repository = repository; _visualDevService = visualDevService; _runService = runService; _userManager = userManager; OverideFuncs.CreateAsync = Create; OverideFuncs.UpdateAsync = Update; } /// /// 在线开发-获取设备列表 /// /// /// private async Task GetList(VisualDevModelListQueryInput input) { var dic = new Dictionary { { "Qualified","合格"}, { "Unqualified","不合格"}, }; var pagedList = await _repository.AsQueryable() //.Where(it => it.station_code == input.station_code || string.IsNullOrEmpty(input.station_code)) .Select(it => new EquipmentListOutput { id = it.id, eqp_code = it.code, eqp_name = it.name, eqp_type_code = SqlFunc.Subqueryable().Where(x=>x.id == it.equip_type_id).Select(x=>x.code), //accept_status = it.accept_status, //supplier_code = it.supplier_code, install_date = it.install_date, //use_department_code = it.use_department_code, remark = it.remark, }) //.Mapper(it => it.accept_status = dic.ContainsKey(it.accept_status) ? dic[it.accept_status] : "") .ToPagedListAsync(input.currentPage, input.pageSize); return pagedList; } private async Task Create(VisualDevModelDataCrInput visualDevModelDataCrInput) { string qrcode = visualDevModelDataCrInput.data.ContainsKey("qrcode") ? visualDevModelDataCrInput.data["qrcode"].ToString() : ""; if (!string.IsNullOrEmpty(qrcode) && await _repository.AsSugarClient().Queryable().AnyAsync(x => x.code == qrcode)) { throw Oops.Bah("二维码总表中已存在该二维码"); } else { VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); await _runService.Create(templateEntity, visualDevModelDataCrInput); string equipId = visualDevModelDataCrInput.data["ReturnIdentity"].ToString() ?? ""; if (!string.IsNullOrEmpty(qrcode)) { BasQrcode basQrcode = new BasQrcode() { code = visualDevModelDataCrInput.data["qrcode"].ToString(), source_id = equipId, source_name = "EQP_EQUIPMENT", create_id = _userManager.UserId, create_time = DateTime.Now, org_id = _userManager.GetUserInfo().Result.organizeId, }; await _repository.AsSugarClient().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 _repository.AsSugarClient().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 _repository.AsSugarClient().Queryable().AnyAsync(x => x.source_id == id)) { await _repository.AsSugarClient().Updateable() .SetColumns(x => x.code == visualDevModelDataUpInput.data["qrcode"].ToString()).Where(x => x.source_id == id) .ExecuteCommandAsync(); } else { BasQrcode basQrcode = new BasQrcode() { code = visualDevModelDataUpInput.data["qrcode"].ToString(), source_id = id, source_name = "EQP_EQUIPMENT", create_id = _userManager.UserId, create_time = DateTime.Now, org_id = _userManager.GetUserInfo().Result.organizeId, }; await _repository.AsSugarClient().Insertable(basQrcode).ExecuteCommandAsync(); } } } return await Task.FromResult(true); } [HttpPost] public async Task GetEntityById(Dictionary dic) { string id = dic["id"]; return await _repository.GetSingleAsync(x => x.id == id); } [HttpPost] public async Task GetListByTypeId(Dictionary dic) { string typeIds = dic["typeIds"]; string[] typeIdArr = typeIds.Split(","); return await _repository.AsSugarClient().Queryable().Where(x => typeIdArr.Contains(x.equip_type_id)) .ToListAsync(); } [HttpPost] public async Task GetWorklineAndEquipTree(Dictionary dic) { string equipTypes = dic.ContainsKey("equipTypes") ? dic["equipTypes"] : ""; var db = _repository.AsSugarClient(); var queryable1 = db.Queryable() .Where((a) => a.DeleteMark == null && a.Category==DictConst.RegionCategoryWorkshopCode) .Select((a) => new WorklineAndEquipTreeOutput() { id = a.Id, title = a.EnCode+"/"+a.FullName, parentId = "0", hasChildren = SqlFunc.Subqueryable().Where(b=>b.ParentId==a.Id && b.DeleteMark==null && b.Category==DictConst.RegionCategoryWorklineCode).Any(), num = SqlFunc.Subqueryable().Where(b=>b.ParentId==a.Id && b.DeleteMark==null && b.Category==DictConst.RegionCategoryWorklineCode).Count(), isLeaf = false, children = SqlFunc.Subqueryable().Where(b=>b.ParentId==a.Id && b.DeleteMark==null && b.Category==DictConst.RegionCategoryWorklineCode).ToList(b=>new WorklineAndEquipTreeOutput() { id = b.Id, title = b.EnCode+"/"+b.FullName, parentId = b.ParentId, hasChildren = false, num = 0, isLeaf = true, }) }); List list2 = new List(); if (!string.IsNullOrEmpty(equipTypes)) { string[] equipTypeArr = equipTypes.Split(","); list2 = await db.Queryable() .Where((a) => equipTypeArr.Contains(a.code)) .Select((a) => new WorklineAndEquipTreeOutput() { id = a.id, title = a.name, parentId = "0", hasChildren = SqlFunc.Subqueryable().Where(b=>b.equip_type_id==a.id).Any(), num = SqlFunc.Subqueryable().Where(b=>b.equip_type_id==a.id).Count(), isLeaf = false, children = SqlFunc.Subqueryable().Where(b=>b.equip_type_id==a.id).ToList(b=>new WorklineAndEquipTreeOutput() { id = b.id, title = b.code+"/"+b.name, parentId = b.equip_type_id, hasChildren = false, num = 0, isLeaf = true, }) }).ToListAsync(); } // var list = await db.UnionAll(queryable1, queryable2).ToListAsync(); var list1 = await queryable1.ToListAsync(); list1.AddRange(list2); return new AuthResponse(200, "", new Dictionary() { ["list"] = list1, }); } [HttpPost] public async Task GetEntityByQrcode(Dictionary dic) { string qrcode = dic["qrcode"]; return await _repository.GetSingleAsync(x => x.qrcode == qrcode); } } }