From a6fdf646819b075b9fc08eaa48696f10ba562b98 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 5 Sep 2023 17:40:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=87=BA=E5=BA=93=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=EF=BC=8C=E7=BB=88=E6=AD=A2=E7=82=B9=E4=BD=8D=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entity/WmsOutstockH.cs | 13 ++++- .../Tnb.WarehouseMgr/WmsOutStockService.cs | 47 +++++++++++++++++-- .../Tnb.WarehouseMgr/WmsPDAInStockService.cs | 1 + .../Entity/Permission/OrganizeEntity.cs | 2 +- .../Entity/Permission/OrganizeEntity.part.cs | 14 ++++++ 5 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 system/Tnb.Systems.Entitys/Entity/Permission/OrganizeEntity.part.cs diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsOutstockH.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsOutstockH.cs index bea1851e..6416d598 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsOutstockH.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsOutstockH.cs @@ -158,5 +158,16 @@ public partial class WmsOutstockH : BaseEntity /// 修改时间 /// public DateTime modify_time { get; set; } = DateTime.Now; - + /// + /// 工位Id + /// + public string station_id { get; set; } + /// + /// 工位编码 + /// + public string station_code { get; set; } + /// + /// 载具Id + /// + public string carry_id { get; set; } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs index d5fcf14a..63423169 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using Aop.Api.Domain; @@ -10,12 +11,14 @@ using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Extension; using JNPF.Common.Security; using JNPF.FriendlyException; +using JNPF.Systems.Entitys.Permission; using JNPF.Systems.Interfaces.System; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Interfaces; using Mapster; using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json.Linq; using SqlSugar; using SqlSugar.DbConvert; using Tnb.BasicData.Entities; @@ -101,10 +104,15 @@ namespace Tnb.WarehouseMgr code_batch = os.code_batch, }; var outStkCarrys = await _wareHouseService.OutStockStrategy(OutStockStrategyInput); - var carryCodesPart = await _db.Queryable().InnerJoin((a, b) => a.id == b.carry_id).InnerJoin((a, b, c) => a.location_id == c.id) - .Where((a, b) => outStkCarrys.Select(x => x.id).Contains(b.carry_id)) - .Select() - .ToListAsync(); + Expression> whereExp = input.data.ContainsKey(nameof(WmsOutstockH.carry_id)) + ? (a, b) => a.id == input.data[nameof(WmsOutstockH.carry_id)].ToString() + : (a, b) => outStkCarrys.Select(x => x.id).Contains(b.carry_id); + + List? carryCodesPart = await _db.Queryable().InnerJoin((a, b) => a.id == b.carry_id).InnerJoin((a, b, c) => a.location_id == c.id) + .Where(whereExp) + .Select() + .ToListAsync(); ; + if (carryCodesPart?.Count > 0) { var codeQty = carryCodesPart.Sum(x => x.codeqty); @@ -199,6 +207,37 @@ namespace Tnb.WarehouseMgr { ePoint = await _db.Queryable().FirstAsync(it => it.location_id == input.data[nameof(WmsPointH.location_id)].ToString()); } + else if (input.data.ContainsKey(nameof(WmsOutstockH.station_id))) + { + //多个投料库位 + /* + * 潍柴 + * 1、那个库位状态是空的出那个 + * 1.1、没有空位直接抛异常 + * + * 天益 + * 2、不管库位是否为空, 获取到所有库位 A B + * 2.1 根据这些库位去查任务执行 目的库位是这些库位的未完成任务数。 A 10 B 9 + * 2.2 哪个最少给哪个 + */ + var org = await _db.Queryable().FirstAsync(it => it.Id == input.data[nameof(WmsOutstockH.station_id)].ToString()); + if (!org?.FeedingLocationId.IsNullOrWhiteSpace() ?? false) + { + var fLocIds = JArray.Parse(org.FeedingLocationId).Values(); + var minTaskNumLoc = await _db.Queryable().Where(it => it.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID && fLocIds.Contains(it.endlocation_id)) + .GroupBy(it => it.endlocation_id) + .Select(it => new + { + it.endlocation_id, + count = SqlFunc.AggregateCount(it.endlocation_id) + }) + .MergeTable() + .OrderBy(it => it.count) + .FirstAsync(); + ePoint = await _db.Queryable().FirstAsync(it => it.location_id == minTaskNumLoc.endlocation_id); + } + } + if (sPoint != null && ePoint != null) { var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs index 178daf7c..776bd53b 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs @@ -83,6 +83,7 @@ namespace Tnb.WarehouseMgr if (input.data.ContainsKey("tablefield115")) { jArr = JArray.Parse(input.data["tablefield115"].ToString()!); + } //入库取终点 //出库起点 var inStockStrategyInput = new InStockStrategyQuery { warehouse_id = input.data[nameof(InStockStrategyQuery.warehouse_id)].ToString()!, Size = 1 }; diff --git a/system/Tnb.Systems.Entitys/Entity/Permission/OrganizeEntity.cs b/system/Tnb.Systems.Entitys/Entity/Permission/OrganizeEntity.cs index 2506c3c4..774b8a81 100644 --- a/system/Tnb.Systems.Entitys/Entity/Permission/OrganizeEntity.cs +++ b/system/Tnb.Systems.Entitys/Entity/Permission/OrganizeEntity.cs @@ -10,7 +10,7 @@ namespace JNPF.Systems.Entitys.Permission; /// 日 期:2017.09.20. /// [SugarTable("BASE_ORGANIZE")] -public class OrganizeEntity : CLDEntityBase +public partial class OrganizeEntity : CLDEntityBase { /// /// 机构上级. diff --git a/system/Tnb.Systems.Entitys/Entity/Permission/OrganizeEntity.part.cs b/system/Tnb.Systems.Entitys/Entity/Permission/OrganizeEntity.part.cs new file mode 100644 index 00000000..6602eeae --- /dev/null +++ b/system/Tnb.Systems.Entitys/Entity/Permission/OrganizeEntity.part.cs @@ -0,0 +1,14 @@ +using JNPF.Common.Contracts; +using SqlSugar; + +namespace JNPF.Systems.Entitys.Permission; + +public partial class OrganizeEntity +{ + /// + /// + /// + [SugarColumn(ColumnName = "F_FEEDING_LOCATIONID")] + public string FeedingLocationId { get; set; } + +} \ No newline at end of file