From e13f1fd3d25fe0449f1db6364ce9adc569baa669 Mon Sep 17 00:00:00 2001
From: hlb <894797954@qq.com>
Date: Wed, 15 Nov 2023 09:25:58 +0800
Subject: [PATCH 1/2] =?UTF-8?q?=E9=87=8D=E5=86=99=E5=9C=A8=E5=BA=93?=
=?UTF-8?q?=E7=89=A9=E6=96=99=E7=BB=B4=E6=8A=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Consts/ModuleConsts.cs | 4 +
.../Tnb.WarehouseMgr/WmsInStkMinService.cs | 106 ++++++++++++++++++
2 files changed, 110 insertions(+)
create mode 100644 WarehouseMgr/Tnb.WarehouseMgr/WmsInStkMinService.cs
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs
index a267545b..d7dd9e09 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs
@@ -191,4 +191,8 @@ public class ModuleConsts
/// 模块标识-采购收货
///
public const string MODULE_WMSPURCHASE_ID = "29975280336405";
+ ///
+ /// 模块标识-在库物料维护
+ ///
+ public const string MODULE_WMSINSTKMIN_ID = "27124095468309";
}
\ No newline at end of file
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsInStkMinService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsInStkMinService.cs
new file mode 100644
index 00000000..cc8dc1bf
--- /dev/null
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsInStkMinService.cs
@@ -0,0 +1,106 @@
+using JNPF.Common.Core.Manager;
+using JNPF.Common.Dtos.VisualDev;
+using JNPF.Common.Extension;
+using JNPF.EventBus;
+using JNPF.Systems.Interfaces.System;
+using JNPF.VisualDev;
+using JNPF.VisualDev.Interfaces;
+using SqlSugar;
+using Tnb.BasicData.Entities;
+using Tnb.WarehouseMgr.Entities;
+using Tnb.WarehouseMgr.Entities.Consts;
+using Tnb.WarehouseMgr.Entities.Enums;
+using Tnb.WarehouseMgr.Interfaces;
+
+namespace Tnb.WarehouseMgr
+
+{
+ ///
+ /// 在库物料维护
+ ///
+ [OverideVisualDev(ModuleConsts.MODULE_WMSINSTKMIN_ID)]
+
+ public class WmsInStkMinService : BaseWareHouseService
+ {
+ private readonly ISqlSugarClient _db;
+ private readonly IRunService _runService;
+ private readonly IVisualDevService _visualDevService;
+ private readonly IWareHouseService _wareHouseService;
+ private readonly IBillRullService _billRullService;
+ private readonly IUserManager _userManager;
+ private readonly IEventPublisher _eventPublisher;
+ public WmsInStkMinService(
+ ISqlSugarRepository repository,
+ IRunService runService,
+ IVisualDevService visualDevService,
+ IWareHouseService wareHouseService,
+ IUserManager userManager,
+ IBillRullService billRullService,
+ IEventPublisher eventPublisher
+ )
+ {
+ _db = repository.AsSugarClient();
+ _runService = runService;
+ _visualDevService = visualDevService;
+ _wareHouseService = wareHouseService;
+ _userManager = userManager;
+ _billRullService = billRullService;
+ _eventPublisher = eventPublisher;
+ OverideFuncs.CreateAsync = WmsInStkMin;
+ }
+
+
+
+ private async Task WmsInStkMin(VisualDevModelDataCrInput input)
+ {
+
+ try
+ {
+ await _db.Ado.BeginTranAsync();
+ //更新载具条码及状态
+ WmsCarryCode wmsCarryCode = new()
+ {
+ org_id = _userManager.User.OrganizeId,
+ barcode = input.data[nameof(WmsCarryCode.barcode)]?.ToString(),
+ carry_id = input.data[nameof(WmsCarryCode.carry_id)]?.ToString(),
+ material_id = input.data[nameof(WmsCarryCode.material_id)]?.ToString(),
+ material_code = input.data[nameof(WmsCarryCode.material_code)]?.ToString(),
+ code_batch = input.data[nameof(WmsCarryCode.code_batch)]?.ToString(),
+ codeqty =input.data[nameof(WmsCarryCode.codeqty)].ParseToDecimal(),
+ is_out = 0,
+ location_id = input.data[nameof(WmsCarryCode.location_id)]?.ToString(),
+ location_code = input.data[nameof(WmsCarryCode.location_code)]?.ToString(),
+ unit_id = input.data[nameof(WmsCarryCode.unit_id)]?.ToString(),
+ warehouse_id = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID,
+ create_id = _userManager.UserId,
+ create_time = DateTime.Now
+ };
+ if (wmsCarryCode.carry_id != null && wmsCarryCode.location_id != null)
+ {
+ await _db.Updateable().SetColumns(it => new WmsCarryH { carry_status = ((int)EnumCarryStatus.占用).ToString(), location_id = wmsCarryCode.location_id, location_code = wmsCarryCode.location_code }).Where(it => it.id == wmsCarryCode.carry_id).ExecuteCommandAsync();
+ }
+ else {
+ await _db.Updateable().SetColumns(it => new WmsCarryH { carry_status = ((int)EnumCarryStatus.占用).ToString()}).Where(it => it.id == wmsCarryCode.carry_id).ExecuteCommandAsync();
+ }
+ await _db.Insertable(wmsCarryCode).ExecuteCommandAsync();
+ //更新库位数据
+ if (wmsCarryCode.location_id != null)
+ {
+ await _db.Updateable().SetColumns(it => new BasLocation { is_use = ((int)EnumCarryStatus.占用).ToString() }).Where(it => it.id == wmsCarryCode.location_id).ExecuteCommandAsync();
+ }
+ await _db.Ado.CommitTranAsync();
+ }
+ catch (Exception)
+ {
+ await _db.Ado.RollbackTranAsync();
+ throw;
+ }
+ finally
+ {
+ // 用JNPF的发布订阅模式发布消息
+ await InvokeGenPretaskExcute();
+ }
+ return Task.FromResult(true);
+ }
+ }
+}
From d606315f9492dd850978bb5b248a3f9e5cbee2fe Mon Sep 17 00:00:00 2001
From: "yang.lee"
Date: Wed, 15 Nov 2023 10:16:34 +0800
Subject: [PATCH 2/2] =?UTF-8?q?1=E3=80=81=E8=B0=83=E6=95=B4=E7=9B=98?=
=?UTF-8?q?=E7=82=B9=E4=BB=BB=E5=8A=A1=E5=8A=A8=E6=80=81=E7=94=9F=E6=88=90?=
=?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6=202=E3=80=81LambdaExpressi?=
=?UTF-8?q?onExtensions=20=E6=96=B0=E5=A2=9E=E8=A1=A8=E8=BE=BE=E5=BC=8F?=
=?UTF-8?q?=E6=A0=91=E6=89=A9=E5=B1=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Tnb.WarehouseMgr/WmsCheckTaskService.cs | 43 +++++++++++++------
.../Extension/LambdaExpressionExtensions.cs | 17 ++++++++
2 files changed, 48 insertions(+), 12 deletions(-)
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs
index 951f5ab0..d00f1dc2 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs
@@ -13,7 +13,6 @@ using JNPF.VisualDev.Interfaces;
using Mapster;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
-using NPOI.SS.Formula.Functions;
using SqlSugar;
using Tnb.BasicData.Entities;
using Tnb.WarehouseMgr.Entities;
@@ -112,12 +111,33 @@ namespace Tnb.WarehouseMgr
areaIds = input.data[nameof(WmsCheckstockH.area_id)].ToObject();
}
- filterExpable = checkType!.ToEnum() switch
+ Expression> filterExp = (a, b, c) => false;
+ switch (checkType?.ToEnum())
{
- EnumCheckType.物料盘点 => filterExpable.AndIF(input.data.ContainsKey(nameof(WmsCarryCode.material_id)) && input.data[nameof(WmsCarryCode.material_id)] != null, (a, b, c) => b.material_id == input.data[nameof(WmsCarryCode.material_id)].ToString()),
- EnumCheckType.批次盘点 => filterExpable.AndIF(areaIds?.Length > 0, (a, b, c) => areaIds.Contains(a.region_id)),
- _ => filterExpable,
- };
+ case EnumCheckType.全库盘点:
+ {
+ filterExp = (a, b, c) => a.wh_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString()
+ && a.is_type == ((int)EnumLocationType.存储库位).ToString()
+ && c.is_lock == 0;
+ }
+ break;
+ case EnumCheckType.物料盘点:
+ {
+ if (!input.data.ContainsKey(nameof(WmsCarryCode.material_id)) && input.data[nameof(WmsCarryCode.material_id)] != null)
+ {
+ filterExp = (a, b, c) => b.material_id == input.data[nameof(WmsCarryCode.material_id)].ToString();
+ }
+ }
+ break;
+ case EnumCheckType.批次盘点:
+ {
+ if (areaIds?.Length > 0)
+ {
+ filterExp = (a, b, c) => areaIds.Contains(a.region_id);
+ }
+ }
+ break;
+ }
var carryCodes = await _db.Queryable().InnerJoin((a, b) => a.id == b.location_id)
.InnerJoin((a, b, c) => b.carry_id == c.id)
@@ -320,22 +340,21 @@ namespace Tnb.WarehouseMgr
_carryMap = await _db.Queryable().ToDictionaryAsync(x => x.id, x => x.carry_code);
}
- //var filterExpable = Expressionable.Create();
Expression> filterExp = (a, b, c) => false;
switch (input.CheckType)
{
case EnumCheckType.全库盘点:
{
- filterExp.And((a, b, c) => a.wh_id == input.warehouse_id)
- .And((a, b, c) => a.is_type == ((int)EnumLocationType.存储库位).ToString())
- .And((a, b, c) => c.is_lock == 0);
+ filterExp = (a, b, c) => a.wh_id == input.warehouse_id
+ && a.is_type == ((int)EnumLocationType.存储库位).ToString()
+ && c.is_lock == 0;
}
break;
case EnumCheckType.物料盘点:
{
if (!input.material_id.IsNullOrWhiteSpace())
{
- filterExp.And((a, b, c) => b.material_id == input.material_id);
+ filterExp = (a, b, c) => b.material_id == input.material_id;
}
}
break;
@@ -343,7 +362,7 @@ namespace Tnb.WarehouseMgr
{
if (input.regionIds?.Count > 0)
{
- filterExp.And((a, b, c) => input.regionIds.Contains(a.region_id));
+ filterExp = (a, b, c) => input.regionIds.Contains(a.region_id);
}
}
break;
diff --git a/common/Tnb.Common/Extension/LambdaExpressionExtensions.cs b/common/Tnb.Common/Extension/LambdaExpressionExtensions.cs
index b0b1b420..04ab917b 100644
--- a/common/Tnb.Common/Extension/LambdaExpressionExtensions.cs
+++ b/common/Tnb.Common/Extension/LambdaExpressionExtensions.cs
@@ -59,6 +59,23 @@ namespace JNPF.Common.Extension
return first.Compose(second, Expression.And);
}
+
+ ///
+ /// or扩展
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static Expression> Or(this Expression> first, Expression> second)
+ {
+ if (first.IsNull())
+ {
+ first = second;
+ return first;
+ }
+ return first.Compose(second, Expression.Or);
+ }
}