From d0e66990cd779227c4df6495398d922a7a326d6c Mon Sep 17 00:00:00 2001 From: FanLian Date: Thu, 3 Aug 2023 17:05:36 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E9=BD=90=E5=A5=97=E5=88=86=E6=8B=A3?= =?UTF-8?q?=E7=9A=84org=5Fid=20=E7=9A=84user=E5=8F=AF=E8=83=BD=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=EF=BC=8C=E7=A9=BA=E8=BD=BD=E5=85=B7=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E5=87=BA=E5=BA=93=E7=AD=96=E7=95=A5=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WmsEmptyOutstockService .cs | 29 ++++++++++--------- .../Tnb.WarehouseMgr/WmsSetSortingService.cs | 2 +- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs index ab1034ab..d5a781d7 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs @@ -77,13 +77,16 @@ namespace Tnb.WarehouseMgr //判断目标库位是否自动签收 var loc = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString()); //出库取起点,获取所有符合输入的载具规格的载具 - var OutStockStrategyInput = new OutStockStrategyQuery { carry_id = input.data[nameof(OutStockStrategyQuery.carry_id)].ToString() }; - var outStkCarrys = await _wareHouseService.OutStockStrategy(OutStockStrategyInput); - + //var OutStockStrategyInput = new OutStockStrategyQuery { carry_id = input.data[nameof(OutStockStrategyQuery.carry_id)].ToString() }; + //var carrys = await _wareHouseService.OutStockStrategy(OutStockStrategyInput); + var carrys = await _db.Queryable().LeftJoin((a, b) => a.location_id == b.id) + .Where((a, b) => a.carrystd_id == input.data[nameof(WmsEmptyOutstockH.carrystd_id)].ToString() + && a.carry_status == ((int)EnumCarryStatus.空闲).ToString() && a.is_lock == 0 && b.is_lock == 0 && b.is_type == ((int)EnumLocationType.存储库位).ToString()) + .ToListAsync(); // 判断最终目标库位是否可以放置当前载具 - if (outStkCarrys?.Count > 0) + if (carrys?.Count > 0) { - var curCarry = outStkCarrys[^outStkCarrys.Count]; + var curCarry = carrys[^carrys.Count]; var isMatch = await IsCarryAndLocationMatchByCarryStd(curCarry, loc); if (!isMatch) throw new AppFriendlyException("该载具无法放置到目标库位", 500); } @@ -99,12 +102,12 @@ namespace Tnb.WarehouseMgr ePoint = await _db.Queryable().FirstAsync(it => it.location_id == input.data[nameof(WmsPointH.location_id)].ToString() && it.is_lock == 0); } //根据每个载具的起始库位做路径运算 - if (outStkCarrys?.Count > 0) + if (carrys?.Count > 0) { - int min = (outStkCarrys.Count > setQty.qty) ? setQty.qty : outStkCarrys.Count; + int min = (carrys.Count > setQty.qty) ? setQty.qty : carrys.Count; for (int i = 0; i < min; i++) { - sPoint = await _db.Queryable().FirstAsync(it => it.location_id == outStkCarrys[i].location_id); + sPoint = await _db.Queryable().FirstAsync(it => it.location_id == carrys[i].location_id); var isOk = false; if (sPoint != null && ePoint != null) @@ -136,8 +139,8 @@ namespace Tnb.WarehouseMgr status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID, biz_type = WmsWareHouseConst.BIZTYPE_WMSEPTYOUTSTK_ID, task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID, - carry_id = outStkCarrys![i].id, - carry_code = outStkCarrys![i].carry_code, + carry_id = carrys![i].id, + carry_code = carrys![i].carry_code, area_id = sPoint?.area_id!, area_code = it.Key, require_id = input.data["ReturnIdentity"].ToString(), @@ -161,7 +164,7 @@ namespace Tnb.WarehouseMgr GenPreTaskUpInput preTaskUpInput = new() { RquireId = input.data["ReturnIdentity"].ToString()!, - CarryId = outStkCarrys![i].id, + CarryId = carrys![i].id, CarryStartLocationId = points!.FirstOrDefault()!.location_id!, CarryStartLocationCode = points!.FirstOrDefault()!.location_code!, LocationIds = points!.Select(x => x.location_id).ToList()! @@ -175,8 +178,8 @@ namespace Tnb.WarehouseMgr biz_type = WmsWareHouseConst.BIZTYPE_WMSEPTYOUTSTK_ID, location_id = ePoint.location_id!, status = WmsWareHouseConst.BILLSTATUS_ON_ID, - carry_id = outStkCarrys[i].id, - carry_code = outStkCarrys[i].carry_code, + carry_id = carrys[i].id, + carry_code = carrys[i].carry_code, create_id = _userManager.UserId, create_time = DateTime.Now }; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs index fc089f35..56c8009e 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs @@ -301,7 +301,7 @@ namespace Tnb.WarehouseMgr x.id = SnowflakeIdHelper.NextId(); x.bill_id = input.requireId; x.bill_d_id = billDId!; - x.org_id = _userManager.User.OrganizeId; + x.org_id = ssds?.Select(xx=>xx.org_id).FirstOrDefault() ?? string.Empty; x.create_id = _userManager.UserId; x.create_time = DateTime.Now; }); From 5c0a184cddba8da37c5412efe7bd83b35978d6fb Mon Sep 17 00:00:00 2001 From: zhoukeda <1315948824@qq.com> Date: Thu, 3 Aug 2023 17:28:53 +0800 Subject: [PATCH 2/3] 1 --- .../Tnb.ProductionMgr/PrdFeedingService.cs | 7 ++++++- .../Permission/DepartmentService.cs | 21 +++++++++++++++++++ .../System/DataInterfaceService.cs | 13 +++++++++++- 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdFeedingService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdFeedingService.cs index c053f113..545d70eb 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdFeedingService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdFeedingService.cs @@ -173,8 +173,13 @@ namespace Tnb.ProductionMgr { var moTask = await db.Queryable().FirstAsync(x => x.id == input.mo_task_id); var parentMoTask = await db.Queryable().FirstAsync(x => x.id == moTask.parent_id); + string worklineId = moTask.workline_id; + if (parentMoTask != null && !string.IsNullOrEmpty(parentMoTask.workline_id)) + { + worklineId = parentMoTask.workline_id; + } var carry = await db.Queryable().SingleAsync(x => x.carry_code == input.carry_code); - var workline = await db.Queryable().SingleAsync(x => x.Id == parentMoTask.workline_id); + var workline = await db.Queryable().SingleAsync(x => x.Id == worklineId); var workshop = await db.Queryable().SingleAsync(x=>x.Id==workline.ParentId); var inputMaterials = await db.Queryable() .Where(x => x.mbom_id == moTask.bom_id && x.mbom_process_id == moTask.mbom_process_id) diff --git a/system/Tnb.Systems/Permission/DepartmentService.cs b/system/Tnb.Systems/Permission/DepartmentService.cs index 0bbea0f5..47949942 100644 --- a/system/Tnb.Systems/Permission/DepartmentService.cs +++ b/system/Tnb.Systems/Permission/DepartmentService.cs @@ -687,6 +687,27 @@ public class DepartmentService : IDepartmentService, IDynamicApiController, ITra return null; } + + /// + /// 根据工位id获取车间信息 + /// + /// + /// + [HttpPost] + public async Task GetWorkshopByWorkstationId(Dictionary dic) + { + string id = dic["id"]; + var db = _repository.AsSugarClient(); + OrganizeEntity organizeEntity = await db.Queryable().SingleAsync(x => x.Id == id); + if (organizeEntity != null && !string.IsNullOrEmpty(organizeEntity.OrganizeIdTree)) + { + string[] arr = organizeEntity.OrganizeIdTree.Split(","); + return await db.Queryable().SingleAsync(x => arr.Contains(x.Id) && x.Category == DictConst.RegionCategoryWorkshopCode); + } + + return null; + + } #endregion diff --git a/system/Tnb.Systems/System/DataInterfaceService.cs b/system/Tnb.Systems/System/DataInterfaceService.cs index e8403e0d..f6379698 100644 --- a/system/Tnb.Systems/System/DataInterfaceService.cs +++ b/system/Tnb.Systems/System/DataInterfaceService.cs @@ -39,6 +39,7 @@ using Mapster; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SqlSugar; @@ -559,7 +560,17 @@ public class DataInterfaceService : IDataInterfaceService, IDynamicApiController { try { - return (await Preview(id, input)).ToObject>>().FirstOrDefault().Keys.ToList(); + //modifyby zhoukeda 20230803 + var result = await Preview(id, input); + if (result is DataTable) + { + List> list = JsonConvert.DeserializeObject>>(JsonConvert.SerializeObject(result)); + return list.FirstOrDefault()?.Keys.ToList() ?? Enumerable.Empty(); + } + else + { + return result.ToObject>>().FirstOrDefault().Keys.ToList(); + } } catch (Exception e) { From 56c15393c9f671147d49539d56d54a3c817e2205 Mon Sep 17 00:00:00 2001 From: FanLian Date: Thu, 3 Aug 2023 17:41:40 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=87=BA=E5=BA=93=E7=AD=96=E7=95=A5?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dto/Queries/OutStockStrategyQuery.cs | 4 ++++ .../Tnb.WarehouseMgr/WareHouseService.cs | 11 ++++++----- .../Tnb.WarehouseMgr/WmsEmptyOutstockService .cs | 16 ++++++++++------ 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/OutStockStrategyQuery.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/OutStockStrategyQuery.cs index de9911a5..879a02f1 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/OutStockStrategyQuery.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Queries/OutStockStrategyQuery.cs @@ -17,6 +17,10 @@ namespace Tnb.WarehouseMgr.Entities.Dto /// public string carry_id { get; set; } /// + /// 载具规格Id + /// + public string carrystd_id { get; set; } + /// /// 物料Id /// public string material_id { get; set; } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index 29484940..78fabc26 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -192,17 +192,18 @@ namespace Tnb.WarehouseMgr .And((a, b, c) => a.out_status == "0") .And((a, b, c) => c.wh_id == input.warehouse_id) .AndIF(!string.IsNullOrEmpty(input.material_id), (a, b, c) => b.material_id == input.material_id) - .AndIF(!string.IsNullOrEmpty(input.code_batch), (a, b, c) => b.code_batch == input.code_batch); + .AndIF(!string.IsNullOrEmpty(input.code_batch), (a, b, c) => b.code_batch == input.code_batch) + .AndIF(!string.IsNullOrEmpty(input.carrystd_id), (a,b,c)=>a.carrystd_id == input.carrystd_id); Expression> carryStatusFilterExp = !input.material_id.IsNullOrWhiteSpace() - ? (a, b, c) => a.status == (int)EnumCarryStatus.占用 - : (a, b, c) => a.status == (int)EnumCarryStatus.空闲; + ? (a, b, c) => a.carry_status == ((int)EnumCarryStatus.占用).ToString() + : (a, b, c) => a.carry_status == ((int)EnumCarryStatus.空闲).ToString(); whereExprable.And(carryStatusFilterExp); var whereExpr = whereExprable.ToExpression(); var policy = await _db.Queryable().Where(it => it.status == 1).FirstAsync(); if (policy == null) throw new AppFriendlyException("没有可用策略", 500); - var items = await _db.Queryable().InnerJoin((a, b) => a.id == b.carry_id) - .InnerJoin((a, b, c) => a.location_id == c.id) + var items = await _db.Queryable().LeftJoin((a, b) => a.id == b.carry_id) + .LeftJoin((a, b, c) => a.location_id == c.id) .Where(whereExpr) .OrderBy(policy.policy) .Select() diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs index d5a781d7..025e309e 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs @@ -77,12 +77,16 @@ namespace Tnb.WarehouseMgr //判断目标库位是否自动签收 var loc = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString()); //出库取起点,获取所有符合输入的载具规格的载具 - //var OutStockStrategyInput = new OutStockStrategyQuery { carry_id = input.data[nameof(OutStockStrategyQuery.carry_id)].ToString() }; - //var carrys = await _wareHouseService.OutStockStrategy(OutStockStrategyInput); - var carrys = await _db.Queryable().LeftJoin((a, b) => a.location_id == b.id) - .Where((a, b) => a.carrystd_id == input.data[nameof(WmsEmptyOutstockH.carrystd_id)].ToString() - && a.carry_status == ((int)EnumCarryStatus.空闲).ToString() && a.is_lock == 0 && b.is_lock == 0 && b.is_type == ((int)EnumLocationType.存储库位).ToString()) - .ToListAsync(); + var OutStockStrategyInput = new OutStockStrategyQuery { + carrystd_id = input.data[nameof(OutStockStrategyQuery.carrystd_id)].ToString(), + warehouse_id = input.data[nameof(OutStockStrategyQuery.warehouse_id)].ToString(), + + }; + var carrys = await _wareHouseService.OutStockStrategy(OutStockStrategyInput); + //var carrys = await _db.Queryable().LeftJoin((a, b) => a.location_id == b.id) + // .Where((a, b) => a.carrystd_id == input.data[nameof(WmsEmptyOutstockH.carrystd_id)].ToString() + // && a.carry_status == ((int)EnumCarryStatus.空闲).ToString() && a.is_lock == 0 && b.is_lock == 0 && b.is_type == ((int)EnumLocationType.存储库位).ToString()) + // .ToListAsync(); // 判断最终目标库位是否可以放置当前载具 if (carrys?.Count > 0) {