using JNPF; using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Extension; using JNPF.Common.Filter; using JNPF.Common.Security; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.Logging; using JNPF.Systems.Entitys.System; using JNPF.Systems.Interfaces.System; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Entitys.Dto.VisualDevModelData; using JNPF.VisualDev.Interfaces; using Mapster; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Senparc.CO2NET.HttpUtility; using SqlSugar; using Tnb.BasicData; using Tnb.BasicData.Entities; using Tnb.Common.Extension; using Tnb.EquipMgr.Entities; using Tnb.ProductionMgr.Entities; using Tnb.WarehouseMgr.Entities.Configs; using Tnb.Common.Utils; using Tnb.WarehouseMgr.Entities.Consts; using HttpClientHelper = Tnb.Common.Utils.HttpClientHelper; using Tnb.Common.Redis; using Tnb.ProductionMgr.Entities.Dto.PrdManage; namespace Tnb.ProductionMgr { /// /// 机台原料设定服务 /// [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)] [Route("api/[area]/[controller]/[action]")] [OverideVisualDev(ModuleId)] public class PrdRawMaterialBarcodeTwoService: IOverideVisualDevService,IDynamicApiController, ITransient { private const string ModuleId = "36009683052821"; private readonly ISqlSugarClient _db; private readonly IDictionaryDataService _dictionaryDataService; private readonly IUserManager _userManager; private static Dictionary> _dicWorkLine = new(); private readonly ElevatorControlConfiguration _eleCtlCfg = App.Configuration.Build(); private readonly IBillRullService _billRuleService; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); private readonly IVisualDevService _visualDevService; private readonly IRunService _runService; private readonly RedisData _redisData; public PrdRawMaterialBarcodeTwoService(ISqlSugarRepository repository, IUserManager userManager, IBillRullService billRuleService, IVisualDevService visualDevService, RedisData redisData, IRunService runService, IDictionaryDataService dictionaryDataService) { _db = repository.AsSugarClient(); _userManager = userManager; _billRuleService = billRuleService; _dictionaryDataService = dictionaryDataService; _visualDevService = visualDevService; _runService = runService; _redisData = redisData; OverideFuncs.GetListAsync = GetList; } private async Task GetList(VisualDevModelListQueryInput input) { Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); string billCode = queryJson.ContainsKey("bill_code") ? queryJson["bill_code"].ToString() : ""; string equipTypeId = queryJson.ContainsKey("f_flowid") ? queryJson["f_flowid"].ToString() : ""; string isUpdate = queryJson.ContainsKey("is_update") ? queryJson["is_update"].ToString() : ""; SqlSugarPagedList result = await _db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a, b,c) => a.equip_id == c.id) .LeftJoin((a,b,c,d)=>c.equip_type_id==d.id) .WhereIF(!string.IsNullOrEmpty(billCode),(a,b,c)=>a.bill_code.Contains(billCode)) .WhereIF(!string.IsNullOrEmpty(equipTypeId),(a,b,c)=>c.equip_type_id==equipTypeId) .WhereIF(!string.IsNullOrEmpty(isUpdate),(a,b,c)=>a.is_update.ToString()==isUpdate) .Where((a,b,c)=>a.type=="2") .OrderBy((a,b,c,d)=>c.code) .Select((a, b, c,d) => new PrdRawMaterialBarcodeListDto { id = a.id, bill_code = a.bill_code, equip_id = c.name, material_id = b.name, f_flowtaskid = b.material_specification, extras = b.material_standard, absorb_material_finish = a.absorb_material_finish==1 ? "是" : "否", is_update = a.is_update==1 ? "是" : "否", piping_status = a.piping_status == 1 ? "开" : "关", start_time = a.start_time!=null ? a.start_time.Value.ToString(DbTimeFormat.SS) : "", end_time = a.end_time!=null ? a.end_time.Value.ToString(DbTimeFormat.SS) : "", remark = a.remark, stop_valve = a.stop_valve, f_flowid = d.name, equip_id_id = c.id, material_id_id = b.id, equip_ids = SqlFunc.Subqueryable().Where(x=>a.equip_ids.Contains(x.id)).SelectStringJoin(x=>x.name,",") }).ToPagedListAsync(input.currentPage, int.MaxValue); return PageResult.SqlSugarPageResult(result); } } }