using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Aspose.Cells.Drawing; using JNPF.Common.Core.Manager; using JNPF.Common.Filter; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.Systems.Entitys.Permission; using JNPF.Systems.Entitys.System; using JNPF.VisualDev; using JNPF.VisualDev.Entitys.Dto.VisualDevModelData; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using SqlSugar; using Tnb.BasicData.Entities; using Tnb.QcMgr.Entities; namespace Tnb.QcMgr { /// /// 质检任务模块 /// [ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 800)] [Route("api/[area]/[controller]/[action]")] [OverideVisualDev(ModuleId)] public class QcCheckTaskResultServic:IDynamicApiController, ITransient, IOverideVisualDevService { private const string ModuleId = "26873741070613"; private readonly ISqlSugarRepository _repository; private readonly IUserManager _userManager; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public QcCheckTaskResultServic(ISqlSugarRepository repository, IUserManager userManager) { _repository = repository; _userManager = userManager; OverideFuncs.GetListAsync = GetListAsync; } private async Task GetListAsync(VisualDevModelListQueryInput input) { var db = _repository.AsSugarClient(); Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); string materialid = queryJson.ContainsKey("materialid") ? queryJson["materialid"].ToString() : ""; string checktype = queryJson.ContainsKey("checktype") ? queryJson["checktype"].ToString() : ""; string status = queryJson.ContainsKey("status") ? queryJson["status"].ToString() : ""; var list = await db.Queryable() .LeftJoin((a, b) => a.DictionaryTypeId == b.Id) .Where((a, b) => b.FullName == "质检状态" || b.FullName == "质检类型选择").ToListAsync(); var result = await db.Queryable() .LeftJoin((a, b) => a.materialid == b.id) .LeftJoin((a, b, c) => a.processid == c.id) .LeftJoin((a, b, c, d) => a.workid == d.Id) .LeftJoin((a, b, c, d, e) => a.execuser == e.Id) .WhereIF(!string.IsNullOrEmpty(materialid), (a, b, c, d, e) => a.materialid == materialid) .WhereIF(!string.IsNullOrEmpty(checktype), (a, b, c, d, e) => a.checktype == checktype) .WhereIF(!string.IsNullOrEmpty(status), (a, b, c, d, e) => a.status == status) .Where((a, b, c, d, e) => a.status == list.Where(p => p.FullName == "已完成").First().Id) .Select((a, b, c, d, e) => new QcCheckExecHOut { id = a.id, materialid = b.name, checktype = a.checktype, workid = d.FullName, processid = c.process_name, wareid = a.wareid, checknum = a.checknum, status = a.status, result = a.result, tasktime = a.tasktime == null ? "" : a.tasktime, exectime = a.exectime == null ? "" : a.exectime, execuser = e.RealName == null ? "" : e.RealName, }).OrderByDescending(a => a.tasktime).ToPagedListAsync(input.currentPage, input.pageSize); foreach (var item in result.list) { item.checktype = list.Select(p => p.Id).Contains(item.checktype) ? list.Where(p => p.Id == item.checktype).First().FullName : ""; item.status = list.Select(p => p.Id).Contains(item.status) ? list.Where(p => p.Id == item.status).First().FullName : ""; } return PageResult.SqlSugarPageResult(result); } } }