using System; using System.Collections.Generic; using System.Dynamic; using System.Linq; using System.Numerics; using System.Reactive.Joins; using System.Text; using System.Threading.Tasks; using Aop.Api.Domain; using Aspose.Cells.Drawing; using JNPF.Common.Core.Manager; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.Message.Service; using JNPF.Systems.Interfaces.System; using JNPF.TaskScheduler; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using SqlSugar; using Tnb.BasicData.Entities; using Tnb.EquipMgr.Interfaces; using Tnb.ProductionMgr.Entities; using Tnb.ProductionMgr.Entities.Dto.PrdManage; using Tnb.ProductionMgr.Entities.Entity; using Tnb.ProductionMgr.Interfaces; namespace Tnb.ProductionMgr { [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)] [Route("api/[area]/[controller]/[action]")] public class AndonService : IAndonService, IDynamicApiController, ITransient { private readonly ISqlSugarClient _db; private readonly IUserManager _userManager; public AndonService(ISqlSugarRepository repository,IUserManager userManager) { _userManager = userManager; _db = repository.AsSugarClient(); } [HttpGet] public async Task GetPrdTask(string stationId) { Dictionary dic = new Dictionary(); dic.Add("ToBeStarted", "待开工"); dic.Add("InProgress", "进行中"); dic.Add("Closed", "关闭"); dic.Add("Complated", "完工"); dic.Add("ToBeScheduled", "待下发"); dic.Add("Pause", "暂停"); dic.Add("Exception", "异常"); dic.Add("Revoke", "撤销"); List result = new(); var List = await _db.Queryable() .WhereIF(!string.IsNullOrEmpty(stationId), p => p.workstation_id == stationId) .ToListAsync(); var materials = await _db.Queryable().ToListAsync(); foreach (var data in List) { dynamic info = new ExpandoObject(); info.id = data.id; info.material_id = materials.Where(p => p.id == data.material_id).Any() ? materials.Where(p => p.id == data.material_id).First().name : ""; info.material_id_id = data.material_id; info.status = dic.Where(p => p.Key == data.mo_task_status).Any() ? dic.Where(p => p.Key == data.mo_task_status).First().Value : ""; info.mo_code = data.mo_task_code; info.mo_type = data.schedule_type == 1 ? "注塑工单" : "组装工单"; info.plan_gty = data.plan_qty; info.plan_start_date = data.estimated_start_date == null ? "" : ((DateTime)data.estimated_start_date!).ToString("yyyy-MM-dd"); info.plan_end_date = data.estimated_end_date == null ? "" : ((DateTime)data.estimated_end_date!).ToString("yyyy-MM-dd"); result.Add(info); } result.OrderByDescending(p => p.plan_start_date); return result; } [HttpPost] public async Task SaveData(AndonRecordInput AndonRecordInput) { var list = _db.Queryable().ToList(); AndonRecords andonRecord = new AndonRecords(); andonRecord.mo_id = AndonRecordInput.mo_id; andonRecord.breakdown_type = list.Where(p => p.id == AndonRecordInput.breakdown).Any() ? list.Where(p => p.id == AndonRecordInput.breakdown).First().type_id : ""; andonRecord.breakdown = AndonRecordInput.breakdown; andonRecord.create_time = DateTime.Now; andonRecord.create_id = _userManager.UserId; await _db.Insertable(andonRecord).ExecuteCommandAsync(); } [HttpPost] public async Task GetAndonCascaderOptions() { Dictionary result = new Dictionary(); List andonTypes = await _db.Queryable().ToListAsync(); List andonInfos = await _db.Queryable().ToListAsync(); List andonBreakDowns = await _db.Queryable().ToListAsync(); List options = new List(); foreach (var andonType in andonTypes) { options.Add(new AndonCascaderOptionsOuput() { label = andonType.name, value = andonType.id, children = andonInfos.Where(x=>x.andon_type==andonType.id).Select(x=>new AndonCascaderOptionsOuput() { label = x.name, value = x.id, children = andonBreakDowns.Where(y=>x.breakdown_id.Contains(y.id)).Select(y=>new AndonCascaderOptionsOuput() { label = y.name, value = y.id }).ToList() }).ToList() }); } string defaultValue = ""; if (!string.IsNullOrEmpty(andonInfos.FirstOrDefault()?.breakdown_id)) { string[] breakdownIdArr = JsonConvert.DeserializeObject(andonInfos.FirstOrDefault()?.breakdown_id); defaultValue = breakdownIdArr[0]; } result.Add("options",options); result.Add("defaultValue",defaultValue); return result; } } }