diff --git a/PerMgr/Tnb.PerMgr/PerProcessStandardsService.cs b/PerMgr/Tnb.PerMgr/PerProcessStandardsService.cs index 4c6ea01f..bd165278 100644 --- a/PerMgr/Tnb.PerMgr/PerProcessStandardsService.cs +++ b/PerMgr/Tnb.PerMgr/PerProcessStandardsService.cs @@ -233,12 +233,13 @@ namespace Tnb.PerMgr MemoryStream ms = new MemoryStream(); workbook.Write(ms); - MemoryStream ms2 = new MemoryStream(ms.ToArray()); - ms2.Position = 0; - // FileStreamResult fileStreamResult = new FileStreamResult(ms2, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = "导入报错说明.xlsx" }; - // return fileStreamResult; string fileName = $"工艺标准导入报错{DateTime.Now.Ticks}.xlsx"; - await _fileManager.UploadFileByType(ms2, FileVariable.TemporaryFilePath, fileName); + using (MemoryStream ms2 = new MemoryStream(ms.ToArray())) + { + ms2.Position = 0; + await _fileManager.UploadFileByType(ms2, FileVariable.TemporaryFilePath, fileName); + + } return new Dictionary() { ["isSuccess"] = "false", diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs index bf27e4ff..202897f4 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs @@ -38,6 +38,8 @@ using JNPF.Logging; using System.Dynamic; using Tnb.EquipMgr.Entities.Dto; using JNPF.Common.Filter; +using JNPF.Systems.Entitys.System; +using Newtonsoft.Json; using Tnb.BasicData.Entities.Dto; using NPOI.SS.Formula.Functions; @@ -411,6 +413,88 @@ namespace Tnb.ProductionMgr .ToListAsync(); return result; } + // /// + // /// 获取组装、包装 待排产工单树形列表 + // /// + // /// + // [HttpGet] + // public async Task GetUnSchedulingList([FromQuery] VisualDevModelListQueryInput input) + // { + // List trees = new(); + // VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(MoModuleId, true); + // var data = await _runService.GetListResult(templateEntity, input); + // + // if (data?.list?.Count > 0) + // { + // var parentIdField = nameof(PrdMo.parent_id); + // var nodes = data.list.Where(it => it.ContainsKey(parentIdField) && it[parentIdField].IsNullOrEmpty()).ToList(); + // foreach (var row in nodes) + // { + // var pkName = "material_id_id"; + // var dic = row.ToDictionary(x => x.Key, x => x.Value); + // + // PrdMoTreeOutput node = DictionaryToObject(row); + // node.parentId = "0"; + // node.mo_id = node.id; + // if (dic.ContainsKey(pkName)) + // { + // var materialId = dic[pkName]?.ToString(); + // var material = await _db.Queryable().FirstAsync(it => it.id == materialId); + // node.material_id_id = materialId; + // node.material_code = material?.code; + // node.material_name = material?.name; + // node.material_standard = material?.material_standard; + // } + // // + // var scheldQtyCol = nameof(PrdMo.scheduled_qty); + // + // node.scheduled_qty = _db.Queryable().Where(it => it.mo_id == dic["id"].ToString()).Sum(it => it.scheduled_qty)?.ToString(); + // var queryObj = new { parent_id = node.id }; + // input.superQueryJson = ""; + // input.queryJson = queryObj.ToJsonString(); + // var subData = await _runService.GetListResult(templateEntity, input); + // if (subData?.list?.Count > 0) + // { + // var childNodes = new List(); + // foreach (var item in subData.list) + // { + // dic = item.ToDictionary(x => x.Key, x => x.Value); + // PrdMoTreeOutput subNode = DictionaryToObject(item); + // subNode.parentId = node.id; + // subNode.mo_id = subNode.id; + // if (dic.ContainsKey(pkName)) + // { + // var materialId = dic[pkName]?.ToString(); + // var material = await _db.Queryable().FirstAsync(it => it.id == materialId); + // subNode.material_id_id = materialId; + // subNode.material_code = material?.code; + // subNode.material_name = material?.name; + // subNode.material_standard = material?.material_standard; + // } + // node.scheduled_qty = _db.Queryable().Where(it => it.mo_id == dic["id"].ToString()).Sum(it => it.scheduled_qty)?.ToString(); + // childNodes.Add(subNode); + // } + // trees.AddRange(childNodes); + // } + // trees.Add(node); + // } + // } + // var treeList = trees.ToTree(); + // var list = treeList.Skip(input.currentPage - 1).Take(input.pageSize).ToList(); + // SqlSugarPagedList pagedList = new() + // { + // list = treeList, + // pagination = new Pagination + // { + // CurrentPage = input.currentPage, + // PageSize = input.pageSize, + // Total = treeList.Count + // } + // }; + // return PageResult.SqlSugarPageResult(pagedList); + // } + + /// /// 获取组装、包装 待排产工单树形列表 /// @@ -418,78 +502,66 @@ namespace Tnb.ProductionMgr [HttpGet] public async Task GetUnSchedulingList([FromQuery] VisualDevModelListQueryInput input) { - List trees = new(); - VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(MoModuleId, true); - var data = await _runService.GetListResult(templateEntity, input); - - if (data?.list?.Count > 0) + Dictionary queryJson = input.queryJson!=null ? JsonConvert.DeserializeObject>(input.queryJson) : null; + List moStatusList = new List(); + if (queryJson!=null && queryJson.ContainsKey("mo_stauts")) { - var parentIdField = nameof(PrdMo.parent_id); - var nodes = data.list.Where(it => it.ContainsKey(parentIdField) && it[parentIdField].IsNullOrEmpty()).ToList(); - foreach (var row in nodes) - { - var pkName = "material_id_id"; - var dic = row.ToDictionary(x => x.Key, x => x.Value); - - PrdMoTreeOutput node = DictionaryToObject(row); - node.parentId = "0"; - node.mo_id = node.id; - if (dic.ContainsKey(pkName)) - { - var materialId = dic[pkName]?.ToString(); - var material = await _db.Queryable().FirstAsync(it => it.id == materialId); - node.material_id_id = materialId; - node.material_code = material?.code; - node.material_name = material?.name; - node.material_standard = material?.material_standard; - } - // - var scheldQtyCol = nameof(PrdMo.scheduled_qty); - - node.scheduled_qty = _db.Queryable().Where(it => it.mo_id == dic["id"].ToString()).Sum(it => it.scheduled_qty)?.ToString(); - var queryObj = new { parent_id = node.id }; - input.superQueryJson = ""; - input.queryJson = queryObj.ToJsonString(); - var subData = await _runService.GetListResult(templateEntity, input); - if (subData?.list?.Count > 0) - { - var childNodes = new List(); - foreach (var item in subData.list) - { - dic = item.ToDictionary(x => x.Key, x => x.Value); - PrdMoTreeOutput subNode = DictionaryToObject(item); - subNode.parentId = node.id; - subNode.mo_id = subNode.id; - if (dic.ContainsKey(pkName)) - { - var materialId = dic[pkName]?.ToString(); - var material = await _db.Queryable().FirstAsync(it => it.id == materialId); - subNode.material_id_id = materialId; - subNode.material_code = material?.code; - subNode.material_name = material?.name; - subNode.material_standard = material?.material_standard; - } - node.scheduled_qty = _db.Queryable().Where(it => it.mo_id == dic["id"].ToString()).Sum(it => it.scheduled_qty)?.ToString(); - childNodes.Add(subNode); - } - trees.AddRange(childNodes); - } - trees.Add(node); - } + moStatusList = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(queryJson["mo_status"])); } - var treeList = trees.ToTree(); - var list = treeList.Skip(input.currentPage - 1).Take(input.pageSize).ToList(); - SqlSugarPagedList pagedList = new() + List moTypeList = new List(); + if (queryJson!=null && queryJson.ContainsKey("mo_type")) { - list = treeList, - pagination = new Pagination + moTypeList = JsonConvert.DeserializeObject>(JsonConvert.SerializeObject(queryJson["mo_type"])); + } + string moCode = queryJson!=null && queryJson.ContainsKey("mo_code") ? queryJson["mo_code"].ToString() : ""; + string combineMoCode = queryJson!=null && queryJson.ContainsKey("combine_mo_code") ? queryJson["combine_mo_code"].ToString() : ""; + var db = _repository.AsSugarClient(); + var result = await db.Queryable() + .LeftJoin((a, b) => a.material_id == b.id) + .LeftJoin((a, b, c) => a.mo_type == c.Id) + .LeftJoin((a, b, c, d) => a.mo_status == d.Id) + .LeftJoin((a, b, c, d, e) => a.create_id == e.Id) + .WhereIF(moStatusList != null && moStatusList.Count > 0, + (a, b, c, d, e) => moStatusList.Contains(a.mo_status)) + .WhereIF(moTypeList != null && moTypeList.Count > 0, (a, b, c, d, e) => moTypeList.Contains(a.mo_type)) + .WhereIF(!string.IsNullOrEmpty(moCode),(a,b,c,d,e)=>a.mo_code.Contains(moCode)) + .WhereIF(!string.IsNullOrEmpty(combineMoCode),(a,b,c,d,e)=>a.combine_mo_code.Contains(combineMoCode)) + .OrderByDescending((a,b,c,d,e)=>a.create_time) + .Select((a, b, c, d, e) => new PrdMoTreeOutput { - CurrentPage = input.currentPage, - PageSize = input.pageSize, - Total = treeList.Count - } - }; - return PageResult.SqlSugarPageResult(pagedList); + org_id = a.org_id, + mo_id = a.id, + mo_code = a.mo_code, + material_code = b.code, + material_name = b.name, + material_standard = b.material_standard, + mo_type = c.FullName, + mo_status = d.FullName, + plan_qty = a.plan_qty.Value.ToString(), + input_qty = a.input_qty.Value.ToString(), + complete_qty = a.complete_qty.Value.ToString(), + scrap_qty = a.scrap_qty.Value.ToString(), + plan_start_date = a.plan_start_date.Value.ToString("yyyy-MM-dd"), + plan_end_date = a.plan_end_date.Value.ToString("yyyy-MM-dd"), + is_create_dispatch = a.is_create_dispatch==0 ? "否" : "是", + production_linecode = a.production_linecode, + is_merge = a.is_merge==0 ? "否" : "是", + combine_mo_code = a.combine_mo_code, + time_stamp = a.time_stamp, + create_id = e.RealName, + create_time = a.create_time.Value.ToString("yyyy-MM-dd : HH:mm:ss"), + material_id = b.code, + material_id_id = a.material_id, + scheduled_qty = a.scheduled_qty.Value.ToString(), + parent_id = "0", + id = a.id, + hasChildren = false, + num = 0, + isLeaf = true, + }).ToPagedListAsync(input.currentPage, input.pageSize); + + + return PageResult.SqlSugarPageResult(result); } #endregion