From 9264556f49d200d7ac53c6092318b2662179625e Mon Sep 17 00:00:00 2001 From: majian <780924089@qq.com> Date: Fri, 20 Sep 2024 11:42:59 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=BD=AC=E5=BA=93=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Consts/WmsWareHouseConst.cs | 8 +++ .../Entity/WmsMaterialTransfer.cs | 4 -- .../Tnb.WarehouseMgr/DeviceProviderService.cs | 17 +++--- .../Tnb.WarehouseMgr/ErpToWmsService.cs | 52 ++++++++----------- .../WmsMaterialTransferService.cs | 16 +++--- 5 files changed, 50 insertions(+), 47 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs index 3e0a6c8a..792ba745 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs @@ -112,6 +112,14 @@ /// 跨层外协件出入库 /// public const string MATERIALTRANSFER_CROSSLAYER_CODE = "crosslayer"; + /// + /// 包材出库 + /// + public const string MATERIALTRANSFER_PACKING_CODE = "packing"; + /// + /// 外协调拨出库 + /// + public const string MATERIALTRANSFER_WXDBOUTWAREHOUSE_CODE = "wxdbOutWarehouse"; /// /// 出入库单据状态TypeID diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsMaterialTransfer.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsMaterialTransfer.cs index 6aadb201..c105723a 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsMaterialTransfer.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsMaterialTransfer.cs @@ -129,10 +129,6 @@ public partial class WmsMaterialTransfer : BaseEntity /// public string? erp_bill_code { get; set; } - /// - /// 转库类型(弃用) - /// - public string? transfer_type { get; set; } /// /// 主表主键 diff --git a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs index 4012227f..2c01924b 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs @@ -432,11 +432,16 @@ namespace Tnb.WarehouseMgr return await ToApiResult(HttpStatusCode.InternalServerError, $"电梯{devName}内已有两托货!"); } WmsElevatorcacheArea wmsElevatorcacheArea = await _db.Queryable().Where(r => r.location_id == dis.startlocation_id).FirstAsync(); - // 如果当前所放梯内货位已占用 - if (elevator.innerpos.Contains(wmsElevatorcacheArea.name)) + + + // 两托盘出库进此判断 如果当前所放梯内货位已占用 + if (wmsElevatorcacheArea != null) { - Logger.LogInformation($"电梯{devName}内托盘{dis.carry_code}当前准备放置的货位已有货!"); - return await ToApiResult(HttpStatusCode.InternalServerError, $"电梯{devName}内托盘{dis.carry_code}当前准备放置的货位已有货!"); + if (elevator.innerpos.Contains(wmsElevatorcacheArea.name)) + { + Logger.LogInformation($"电梯{devName}内托盘{dis.carry_code}当前准备放置的货位已有货!"); + return await ToApiResult(HttpStatusCode.InternalServerError, $"电梯{devName}内托盘{dis.carry_code}当前准备放置的货位已有货!"); + } } canEnter = true; @@ -461,8 +466,8 @@ namespace Tnb.WarehouseMgr } catch (Exception ex) { - Logger.Error("【UnloadConfirm】 放货确认失败", ex.Message); - Logger.Error("【UnloadConfirm】 放货确认失败", ex.StackTrace); + Logger.Error($"【UnloadConfirm】 放货确认失败{ex.Message}"); + Logger.Error($"【UnloadConfirm】 放货确认失败{ex.StackTrace}"); return await ToApiResult(HttpStatusCode.InternalServerError, "电梯还未开门,请重试!"); throw; } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs b/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs index 3f6bbf0c..a1a7581d 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/ErpToWmsService.cs @@ -726,8 +726,10 @@ namespace Tnb.WarehouseMgr } string transfer_type = ""; - // 中储仓到暂存仓 - if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_ZC_ID + + #region 转库类型 + // 齐套出入库 + if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_ZC_ID && (warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_ZCC_ID || warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_HCC_ID)) { int count = input.details.Where(r => string.IsNullOrEmpty(r.station_code)).Count(); @@ -736,35 +738,27 @@ namespace Tnb.WarehouseMgr _LoggerErp2Mes.LogWarning($@"【MaterialTransfer】表体存在未填写工位的明细!"); throw new AppFriendlyException($@"表体存在未填写工位的明细!", 500); } - - transfer_type = WmsWareHouseConst.MATERIALTRANSFER_CGCK_CODE; - } - else if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_CPCRK_ID && warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_CP_ID) - { - transfer_type = WmsWareHouseConst.MATERIALTRANSFER_WXDBRK_CODE; - } - else if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_YCL_ID && warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_JZGL_ID) - { - transfer_type = WmsWareHouseConst.MATERIALTRANSFER_JZGLRK_CODE; - } - else if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_YCL_ID && warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_ZZXBK_ID) - { - transfer_type = WmsWareHouseConst.MATERIALTRANSFER_CROSSLAYER_CODE; - } - - // 暂时其他情况都算齐套出入库类型(未定) - else - { - int count = input.details.Where(r => string.IsNullOrEmpty(r.station_code)).Count(); - if (count > 0) - { - _LoggerErp2Mes.LogWarning($@"【MaterialTransfer】表体存在未填写工位的明细!"); - throw new AppFriendlyException($@"表体存在未填写工位的明细!", 500); - } - transfer_type = WmsWareHouseConst.MATERIALTRANSFER_QTCRK_CODE; } - + // 外协调拨入库 + else if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_YCL_ID && warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_ZC_ID) + transfer_type = WmsWareHouseConst.MATERIALTRANSFER_WXDBRK_CODE; + // 集中供料入库 + else if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_YCL_ID && warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_JZGL_ID) + transfer_type = WmsWareHouseConst.MATERIALTRANSFER_JZGLRK_CODE; + // 跨层外协件出入库 + else if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_YCL_ID && warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_ZZXBK_ID) + transfer_type = WmsWareHouseConst.MATERIALTRANSFER_CROSSLAYER_CODE; + // 包材出库 + else if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_BCK_ID && warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_F2BCQ_ID) + transfer_type = WmsWareHouseConst.MATERIALTRANSFER_PACKING_CODE; + // 长管出库 + else if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_HCC_ID && warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_ZZXBK_ID) + transfer_type = WmsWareHouseConst.MATERIALTRANSFER_CGCK_CODE; + // 外协调拨出库 + else if (warehouse_outstock.id == WmsWareHouseConst.WAREHOUSE_ZC_ID && warehouse_instock.id == WmsWareHouseConst.WAREHOUSE_YCL_ID) + transfer_type = WmsWareHouseConst.MATERIALTRANSFER_WXDBOUTWAREHOUSE_CODE; + #endregion //var wmsMaterialTransferdsDistinct = input.details.Select(r => new //{ diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs index 724ac44e..d8a6b8d7 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs @@ -452,17 +452,18 @@ namespace Tnb.WarehouseMgr .InnerJoin((a, b, c, d) => b.id == d.fk_id) .WhereIF(!string.IsNullOrEmpty(input.warehouse_outstock), (a, b, c) => a.warehouse_outstock == input.warehouse_outstock) .WhereIF(!string.IsNullOrEmpty(input.warehouse_instock), (a, b, c) => a.warehouse_instock == input.warehouse_instock) - .Where((a, b, c,d) => d.rk_qty < d.actual_outstock_qty) + .Where((a, b, c, d) => d.rk_qty < d.actual_outstock_qty) + .OrderBy((a, b, c, d) => b.create_time) .Select((a, b, c, d) => new { materialtransfer_billcode = a.bill_code, otheroutstock_id = b.id, otheroutstock_billcode = b.bill_code, - outstock_time = b.create_time, - material_id=c.material_id, - material_code=c.material_code, - material_name=c.material_ex, - material_spec=c.material_specification, + outstock_time = b.create_time.ToString("yyyy-MM-dd HH:mm:ss"), + material_id = c.material_id, + material_code = c.material_code, + material_name = c.material_ex, + material_spec = c.material_specification, unit_code = c.unit_id, code_batch = c.code_batch, remainqty = d.actual_outstock_qty - d.rk_qty @@ -1063,9 +1064,8 @@ namespace Tnb.WarehouseMgr if (input.area_code == "E") await sign(input); - // 其它入库 - if (input.wmsDistaskH.task_type == WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID) + if (wmsMaterialTransfer.type == WmsWareHouseConst.MATERIALTRANSFER_WXDBRK_CODE) { Logger.LogInformation("【WmsMaterialTransferService ModifyAsync】同步其它入库单到erp..."); From 755f6e9c449bb21d56b27c50e1f0b97b77bc26d9 Mon Sep 17 00:00:00 2001 From: majian <780924089@qq.com> Date: Fri, 20 Sep 2024 13:55:28 +0800 Subject: [PATCH 2/2] 1 --- .../WmsMaterialSignHService.cs | 7 ++- .../WmsMaterialTransferService.cs | 54 ++++++++++++++----- 2 files changed, 47 insertions(+), 14 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialSignHService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialSignHService.cs index 4288e0eb..b6349172 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialSignHService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialSignHService.cs @@ -544,10 +544,12 @@ namespace Tnb.WarehouseMgr thirdWebapiRecord.remark = $"原材料转库单wms_material_transfer:{wmsMaterialTransfer.bill_code}"; await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); - Logger.LogInformation("【WmsMaterialTransferService ModifyAsync】同步其它出库单到erp成功"); + Logger.LogInformation("【WmsMaterialSignHService ModifyAsync】同步其它出库单到erp成功"); - if (!_wareHouseService.GetFloor1WXSGWOutstockLocation().Contains(carryLoc.id)) + if (wmsMaterialTransfer.type == WmsWareHouseConst.MATERIALTRANSFER_JZGLRK_CODE + || wmsMaterialTransfer.type == WmsWareHouseConst.MATERIALTRANSFER_QTCRK_CODE + || wmsMaterialTransfer.type == WmsWareHouseConst.MATERIALTRANSFER_PACKING_CODE) { // todo 对接其它入库单 入库数量为签收数量 @@ -615,6 +617,7 @@ namespace Tnb.WarehouseMgr thirdWebapiRecord2.remark = $"原材料转库单wms_material_transfer:{wmsMaterialTransfer.bill_code}"; await _db.Insertable(thirdWebapiRecord2).ExecuteCommandAsync(); + Logger.LogInformation("【WmsMaterialSignHService ModifyAsync】同步其它入库单到erp成功"); } break; } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs index bf95f39f..2de53a5a 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs @@ -327,10 +327,10 @@ namespace Tnb.WarehouseMgr WmsMaterialTransferD wmsMaterialTransferD = await _db.Queryable().FirstAsync(it => it.id == input.source_id); WmsMaterialTransfer wmsMaterialTransfer = await _db.Queryable().FirstAsync(it => it.id == wmsMaterialTransferD.bill_id); - if (wmsMaterialTransferD.yxfqty >= wmsMaterialTransferD.qty) - { - throw new AppFriendlyException("已下发数量已达到转库数量", 500); - } + //if (wmsMaterialTransferD.yxfqty >= wmsMaterialTransferD.qty) + //{ + // throw new AppFriendlyException("已下发数量已达到转库数量", 500); + //} await _db.Ado.BeginTranAsync(); @@ -1065,7 +1065,9 @@ namespace Tnb.WarehouseMgr await sign(input); // 其它入库 - if (wmsMaterialTransfer.type == WmsWareHouseConst.MATERIALTRANSFER_WXDBRK_CODE) + if (wmsMaterialTransfer.type == WmsWareHouseConst.MATERIALTRANSFER_WXDBRK_CODE + || wmsMaterialTransfer.type == WmsWareHouseConst.MATERIALTRANSFER_CROSSLAYER_CODE + || wmsMaterialTransfer.type == WmsWareHouseConst.MATERIALTRANSFER_WXDBOUTWAREHOUSE_CODE) { Logger.LogInformation("【WmsMaterialTransferService ModifyAsync】同步其它入库单到erp..."); @@ -1855,8 +1857,35 @@ namespace Tnb.WarehouseMgr // Logger.LogWarning($"【RackAndMatByWorkstation】工位{input.work_station}绑定的{wmsCarryH.carry_code}载具不是料架类型!请检查"); // continue; //} + if (wmsCarryH.carrystd_id == WmsWareHouseConst.CARRY_ZYLJSTD_ID || wmsCarryH.carrystd_id == WmsWareHouseConst.CARRY_ZYXCSTD_ID) + { + var matCodes = _db.Queryable() + .InnerJoin((a, b) => a.material_id == b.id) + .Where((a, b) => a.carry_id == wmsCarryH.id) + .Select((a, b) => new + { + a.org_id, + a.material_id, + a.material_code, + material_name = b.name, + a.material_specification, + a.unit_id, + a.barcode, + a.code_batch, + a.codeqty, + a.create_id, + a.create_time + }).ToList(); - var matCodes = _db.Queryable() + JObject pairs = new JObject(); + pairs["carry_id"] = wmsCarryH.id; + pairs["carry_code"] = wmsCarryH.carry_code; + pairs["details"] = JArray.Parse(JsonConvert.SerializeObject(matCodes)); + jArray.Add(pairs); + } + else + { + var matCodes = _db.Queryable() .InnerJoin((a, b) => a.membercarry_id == b.carry_id) .InnerJoin((a, b, c) => b.material_id == c.id) .Where((a, b, c) => a.carry_id == wmsCarryH.id) @@ -1877,11 +1906,12 @@ namespace Tnb.WarehouseMgr b.create_time }).ToList(); - JObject pairs = new JObject(); - pairs["carry_id"] = wmsCarryH.id; - pairs["carry_code"] = wmsCarryH.carry_code; - pairs["details"] = JArray.Parse(JsonConvert.SerializeObject(matCodes)); - jArray.Add(pairs); + JObject pairs = new JObject(); + pairs["carry_id"] = wmsCarryH.id; + pairs["carry_code"] = wmsCarryH.carry_code; + pairs["details"] = JArray.Parse(JsonConvert.SerializeObject(matCodes)); + jArray.Add(pairs); + } } return await ToApiResult(HttpStatusCode.OK, jArray); } @@ -2331,7 +2361,7 @@ namespace Tnb.WarehouseMgr carryMaterialDetails.Add(carryMaterialDetail); carryMaterialBindInput.details = carryMaterialDetails; await _wmsCarryBindService.CarryMaterialBind(carryMaterialBindInput, _db); - await _db.Updateable().SetColumns(r => r.carry_status == "1").Where(r => r.id == wmsCarryH.id).ExecuteCommandAsync(); + await _db.Updateable().SetColumns(r => r.carry_status == "3").Where(r => r.id == wmsCarryH.id).ExecuteCommandAsync(); // 更新子表已下发数量 await _db.Updateable().SetColumns(r => r.yxfqty_rk == r.yxfqty_rk + input.qty).Where(r => r.id == input.source_id).ExecuteCommandAsync();