using JNPF.Common.Core.Manager; using JNPF.Common.Filter; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.Systems.Entitys.Permission; using JNPF.Systems.Interfaces.Permission; using JNPF.VisualDev; using JNPF.VisualDev.Entitys.Dto.VisualDevModelData; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using SqlSugar; using Tnb.BasicData; using Tnb.BasicData.Entities; using Tnb.EquipMgr.Entities; using Tnb.ProductionMgr.Entities; using Tnb.ProductionMgr.Entities.Dto; using Tnb.WarehouseMgr.Entities; namespace Tnb.ProductionMgr { /// /// 齐套出库领料记录pc端 /// [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)] [Route("api/[area]/[controller]/[action]")] [OverideVisualDev(ModuleId)] public class PrdKittingOutRecordService : IDynamicApiController, ITransient, IOverideVisualDevService { private readonly ISqlSugarRepository _repository; private readonly IUserManager _userManager; private readonly IOrganizeService _organizeService; private const string ModuleId = "30303202245397"; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public PrdKittingOutRecordService( ISqlSugarRepository repository, IOrganizeService organizeService, IUserManager userManager ) { _repository = repository; _organizeService = organizeService; _userManager = userManager; OverideFuncs.GetListAsync = GetList; } private async Task GetList(VisualDevModelListQueryInput input) { var db = _repository.AsSugarClient(); Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); string mo_task_code = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : ""; string mo_code = queryJson.ContainsKey("mo_id.mo_code") ? queryJson["mo_id.mo_code"].ToString() : ""; string workstation_id_str = queryJson.ContainsKey("workstation_id") ? queryJson["workstation_id"].ToString() : ""; string workstation_id = ""; if (!string.IsNullOrEmpty(workstation_id_str)) { string[] workstation_arr = JsonConvert.DeserializeObject(workstation_id_str); if (workstation_arr != null && workstation_arr.Length > 0) { workstation_id = workstation_arr[workstation_arr.Length - 1]; } } if (string.IsNullOrEmpty(input.sidx)) { input.sidx = "a.create_time"; input.sort = "desc"; } else { input.sidx = "a." + input.sidx; } var result = await db.Queryable() .LeftJoin((a, b) => a.material_id == b.id) .LeftJoin((a,b,c)=>a.workstation_id==c.Id) .LeftJoin((a,b,c,d)=>a.process_id==d.id) .LeftJoin((a,b,c,d,e)=>a.mo_id==e.id) .WhereIF(!string.IsNullOrEmpty(mo_task_code),a=>a.mo_task_code.Contains(mo_task_code)) .WhereIF(!string.IsNullOrEmpty(mo_code),(a,b,c,d,e)=>e.mo_code.Contains(mo_code)) .WhereIF(!string.IsNullOrEmpty(workstation_id),(a,b,c,d,e)=>a.workstation_id==workstation_id) .Where(a=>a.act_start_date!=null) .OrderBy($"{input.sidx} {input.sort}") .Select((a, b, c, d,e) => new OutstockRecordListOutput { id = a.id, mo_task_code = a.mo_task_code, mo_id = e.mo_code, material_id = b.name, material_id_id = a.material_id, workstation_id = c.FullName, workstation_id_id = a.workstation_id, process_id = d.process_name, process_id_id = a.process_id, act_start_date = a.act_start_date==null ? "" : a.act_start_date.Value.ToString(DbTimeFormat.SS), tablefield105 = SqlFunc.Subqueryable() .LeftJoin((x,y)=>x.warehouse_id==y.id) .LeftJoin((x,y,z)=>x.create_id==z.Id) .LeftJoin((x,y,z,cs)=>x.collocation_scheme_id==cs.id) .Where(x=>x.mo_task_id==a.id).ToList((x,y,z,cs)=>new PrdKittingOutRecordListChildOutput() { id = x.id, code = x.code, bill_code = x.code, warehouse_id = y.whname, warehouse_id_id = x.warehouse_id, location_code = x.location_code, create_id = z.RealName, create_time = x.create_time==null ? "" : x.create_time.Value.ToString(DbTimeFormat.SS), collocation_scheme_id = cs.bill_name, collocation_scheme_id_id = x.collocation_scheme_id, type="1" }), tablefield134 = SqlFunc.Subqueryable() .LeftJoin((x,y)=>x.warehouse_id==y.id) .LeftJoin((x,y,z)=>x.create_id==z.Id) .Where(x=>x.mo_task_id==a.id).ToList((x,y,z)=>new OutstockRecordListChildOutput() { id = x.id, code = x.bill_code, bill_code = x.bill_code, warehouse_id = y.whname, warehouse_id_id = x.warehouse_id, location_code = x.location_code, create_id = z.RealName, create_time = x.create_time==null ? "" : x.create_time.Value.ToString(DbTimeFormat.SS), type="2" }), }).ToPagedListAsync(input.currentPage, input.pageSize); return PageResult.SqlSugarPageResult(result); } } }