diff --git a/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs b/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs
index 6a3d17e6..95b03123 100644
--- a/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs
+++ b/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs
@@ -48,6 +48,10 @@ public static class DictConst
/// 包装工单
///
public const string PrdMoTypeBZ = "25019191681045";
+ ///
+ /// 物料分类
+ ///
+ public const string MaterialCatagoryID = "24882163283733";
#endregion
diff --git a/BasicData/Tnb.BasicData.Entities/Entity/BasRegionMat.cs b/BasicData/Tnb.BasicData.Entities/Entity/BasRegionMat.cs
new file mode 100644
index 00000000..6086951f
--- /dev/null
+++ b/BasicData/Tnb.BasicData.Entities/Entity/BasRegionMat.cs
@@ -0,0 +1,72 @@
+using JNPF.Common.Contracts;
+using JNPF.Common.Security;
+using SqlSugar;
+
+namespace Tnb.BasicData.Entities;
+
+///
+/// 区域物料设定
+///
+[SugarTable("bas_region_mat")]
+public partial class BasRegionMat : BaseEntity
+{
+ public BasRegionMat()
+ {
+ id = SnowflakeIdHelper.NextId();
+ }
+ ///
+ /// 所属组织
+ ///
+ public string? org_id { get; set; }
+
+ ///
+ /// 区域ID
+ ///
+ public string region_id { get; set; } = string.Empty;
+
+ ///
+ /// 区域代码
+ ///
+ public string region_code { get; set; } = string.Empty;
+
+ ///
+ /// 物料分类
+ ///
+ public string material_type { get; set; } = string.Empty;
+
+ ///
+ /// 备注
+ ///
+ public string? remark { get; set; }
+
+ ///
+ /// 创建用户
+ ///
+ public string create_id { get; set; } = string.Empty;
+
+ ///
+ /// 创建时间
+ ///
+ public DateTime create_time { get; set; } = DateTime.Now;
+
+ ///
+ /// 修改用户
+ ///
+ public string? modify_id { get; set; }
+
+ ///
+ /// 修改时间
+ ///
+ public DateTime? modify_time { get; set; }
+
+ ///
+ /// 扩展字段
+ ///
+ public string? extras { get; set; }
+
+ ///
+ /// 时间戳(用于并发控制)
+ ///
+ public DateTime? timestamp { get; set; }
+
+}
diff --git a/BasicData/Tnb.BasicData/BasRegionMatService.cs b/BasicData/Tnb.BasicData/BasRegionMatService.cs
new file mode 100644
index 00000000..f89d5907
--- /dev/null
+++ b/BasicData/Tnb.BasicData/BasRegionMatService.cs
@@ -0,0 +1,99 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Aspose.Cells.Drawing;
+using DingTalk.Api.Request;
+using JNPF.Common.Dtos.VisualDev;
+using JNPF.Common.Extension;
+using JNPF.DependencyInjection;
+using JNPF.DynamicApiController;
+using JNPF.FriendlyException;
+using JNPF.Systems.Interfaces.System;
+using JNPF.VisualDev;
+using JNPF.VisualDev.Entitys;
+using JNPF.VisualDev.Interfaces;
+using Microsoft.AspNetCore.Components.Forms;
+using Microsoft.AspNetCore.Mvc;
+using SqlSugar;
+using Tnb.BasicData.Entities;
+
+namespace Tnb.BasicData
+{
+ ///
+ /// 区域物料设定
+ ///
+ [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 701)]
+ [Route("api/[area]/[controller]/[action]")]
+ [OverideVisualDev(ModuleId)]
+
+ public class BasRegionMatService : IOverideVisualDevService, IDynamicApiController, ITransient
+ {
+ private const string ModuleId = "26187428200229";
+ private readonly ISqlSugarClient _db;
+ private readonly IRunService _runService;
+ private readonly IVisualDevService _visualDevService;
+ private readonly IDictionaryDataService _dataDictionaryService;
+ private static Dictionary s_materialCategoryMap = new();
+
+ public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
+ public BasRegionMatService(ISqlSugarRepository repo,
+ IRunService runService, IVisualDevService visualDevService,
+ IDictionaryDataService dataDictionaryService
+ )
+ {
+ _db = repo.AsSugarClient();
+ _runService = runService;
+ _visualDevService = visualDevService;
+ _dataDictionaryService = dataDictionaryService;
+ OverideFuncs.CreateAsync = CreateAsync;
+ }
+
+ private async Task CreateAsync(VisualDevModelDataCrInput input)
+ {
+ Task respTask = Task.FromResult(1);
+ try
+ {
+ await _db.Ado.BeginTranAsync();
+
+ string? regionCode = null, materialType = null;
+ if (input.data.ContainsKey(nameof(BasRegionMat.region_code)) && input.data[nameof(BasRegionMat.region_code)].IsNotEmptyOrNull())
+ {
+ regionCode = input.data[nameof(BasRegionMat.region_code)].ToString();
+ }
+ if (input.data.ContainsKey(nameof(BasRegionMat.material_type)) && input.data[nameof(BasRegionMat.material_type)].IsNotEmptyOrNull())
+ {
+ materialType = input.data[nameof(BasRegionMat.material_type)].ToString();
+ }
+ var blTrueAll = new List { regionCode.IsNullOrWhiteSpace(), materialType.IsNullOrWhiteSpace() };
+ if (blTrueAll.All(b => !b))
+ {
+ if (s_materialCategoryMap.Count == 0)
+ {
+ s_materialCategoryMap = await _dataDictionaryService.GetDictionaryByTypeId(DictConst.MaterialCatagoryID);
+ }
+ var regionMat = await _db.Queryable().FirstAsync(it => it.region_code == regionCode && it.material_type == materialType);
+ if (regionMat != null)
+ {
+ throw new AppFriendlyException($"区域:【{regionCode}】,物料:【{s_materialCategoryMap[materialType]?.ToString()}】已存在", 500);
+ }
+ }
+ await _db.Ado.CommitTranAsync();
+
+ VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true);
+ await _runService.Create(templateEntity, input);
+
+ }
+ catch (Exception)
+ {
+ respTask = Task.FromResult(0);
+ await _db.Ado.RollbackTranAsync();
+ throw;
+ }
+
+ return await respTask;
+ }
+
+ }
+}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs
index d7dd9e09..b4bd74b9 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs
@@ -195,4 +195,9 @@ public class ModuleConsts
/// 模块标识-在库物料维护
///
public const string MODULE_WMSINSTKMIN_ID = "27124095468309";
+ ///
+ /// 模块标识-区域物料设定
+ ///
+ public const string MODULE_BASREGIONMAT_ID = "26187428200229";
+
}
\ No newline at end of file
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs
index bec5a1b3..056da03d 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs
@@ -265,5 +265,7 @@
/// 盘点任务计算状态-未结算
///
public const string CLOSINGSTATUS_WJS_ID = "27674058079509";
+
+
}
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.cs
index 88ca59b7..0b7fe63c 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.cs
@@ -47,7 +47,8 @@ public partial class WmsElevatorH : BaseEntity
///
/// 状态
///
- public int status { get; set; }
+ [SugarColumn(ColumnName = "status")]
+ public int enable_mark { get; set; }
///
/// 任务数量
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.part.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.part.cs
index a605cbb1..4709864f 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.part.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.part.cs
@@ -59,4 +59,11 @@ public partial class WmsElevatorH
///
[SugarColumn(IsIgnore = true)]
public string device_id { get; set; }
+
+ ///
+ /// 状态
+ ///
+ [SugarColumn(ColumnName = "status")]
+ public int enable_mark { get; set; }
+
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/BasRegionMatService.cs b/WarehouseMgr/Tnb.WarehouseMgr/BasRegionMatService.cs
new file mode 100644
index 00000000..f850db17
--- /dev/null
+++ b/WarehouseMgr/Tnb.WarehouseMgr/BasRegionMatService.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using JNPF.VisualDev;
+
+namespace Tnb.WarehouseMgr
+{
+ ///
+ /// 区域物料设定
+ ///
+ [OverideVisualDev(ModuleConsts.MODULE_BASREGIONMAT_ID)]
+ public class BasRegionMatService :BaseWareHouseService
+ {
+
+ }
+}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs
index ab54ec7b..ce5286db 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs
@@ -2,6 +2,7 @@
using System.Runtime.InteropServices;
using System.Security.Claims;
using JNPF;
+using JNPF.Common.Contracts;
using JNPF.Common.Core.Manager;
using JNPF.Common.Enums;
using JNPF.Common.Extension;
@@ -300,6 +301,8 @@ namespace Tnb.WarehouseMgr
}
}
+
+
#region 斑马打印
///
/// 打印
@@ -347,7 +350,7 @@ namespace Tnb.WarehouseMgr
// tcs.SetResult(printerList);
// return tcs.Task;
//}
- #endregion
+ #endregion
///
/// Api响应结果
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs
index 084109fa..606f6ac9 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs
@@ -32,7 +32,7 @@ namespace Tnb.WarehouseMgr
/// Wms设备接口提供程序服务类
///
- public class DeviceProviderService : BaseWareHouseService
+ public class DeviceProviderService : ServiceLoggerBase
{
private readonly ISqlSugarClient _db;
private readonly IWareHouseService _wareHouseService;
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService`1.cs b/WarehouseMgr/Tnb.WarehouseMgr/ServiceLoggerBase`1.cs
similarity index 90%
rename from WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService`1.cs
rename to WarehouseMgr/Tnb.WarehouseMgr/ServiceLoggerBase`1.cs
index 246da2d1..aafd0c79 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService`1.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/ServiceLoggerBase`1.cs
@@ -6,17 +6,19 @@ using Tnb.WarehouseMgr.Entities;
namespace Tnb.WarehouseMgr
{
- public class BaseWareHouseService : BaseWareHouseService
+ public class ServiceLoggerBase : BaseWareHouseService
{
protected static Dictionary s_elevatorMap = new();
private static readonly Lazy initializationTask;
- static BaseWareHouseService()
+ static ServiceLoggerBase()
{
initializationTask = new Lazy(InitializeAsync);
}
+
+
private static async Task InitializeAsync()
{
@@ -37,7 +39,7 @@ namespace Tnb.WarehouseMgr
- protected ILogger Logger => LoggerFactory.Create(builder => builder.AddFile($"{AppContext.BaseDirectory}/logs/custom{DateTime.Now:yyyyMMdd}.log", cfgOpts =>
+ protected ILogger Logger => LoggerFactory.Create(builder => builder.AddFile($"{AppContext.BaseDirectory}/logs/{this.GetType().Name}{DateTime.Now:yyyyMMdd}.log", cfgOpts =>
{
//cfgOpts.DateFormat = "yyyy-MM-dd HH:mm:ss.fff";
@@ -54,7 +56,7 @@ namespace Tnb.WarehouseMgr
return sb.ToString();
};
- })).CreateLogger();
+ })).CreateLogger();
}
public static class CustomLoggerExtenstions
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs
index 2d3a6937..e0095e8f 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs
@@ -33,7 +33,7 @@ namespace Tnb.WarehouseMgr
///
/// 库房业务类(出入库)
///
- public class WareHouseService : BaseWareHouseService, IWareHouseService
+ public class WareHouseService : ServiceLoggerBase, IWareHouseService
{
private readonly ISqlSugarClient _db;
private readonly IDictionaryDataService _dictionaryDataService;
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsBasicDataBase`1.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsBasicDataBase`1.cs
new file mode 100644
index 00000000..14fdeb1d
--- /dev/null
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsBasicDataBase`1.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using JNPF.Common.Contracts;
+using Microsoft.AspNetCore.Mvc;
+using SqlSugar;
+
+namespace Tnb.WarehouseMgr
+{
+ ///
+ /// Wms基础数据基类
+ ///
+ ///
+ public class WmsBasicDataBase : BaseWareHouseService where TEntity : BaseEntity, new()
+ {
+ private readonly ISqlSugarClient _db;
+ public WmsBasicDataBase()
+ {
+
+ }
+ [HttpPost]
+ public async Task IsEnabledMark(IEnumerable ids,int status)
+ {
+
+ }
+ }
+}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs
index d00f1dc2..c54969ce 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCheckTaskService.cs
@@ -29,7 +29,7 @@ namespace Tnb.WarehouseMgr
/// 盘点任务
///
[OverideVisualDev(ModuleConsts.MODULE_WMSCHECKTASK_ID)]
- public class WmsCheckTaskService : BaseWareHouseService
+ public class WmsCheckTaskService : ServiceLoggerBase
{
private readonly ISqlSugarClient _db;
private readonly IWareHouseService _warehouseService;
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs
index 6ac049fc..25ebbc91 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs
@@ -30,7 +30,7 @@ namespace Tnb.WarehouseMgr
[OverideVisualDev(ModuleConsts.MODULE_WMSEMPTYINSTOCK_ID)]
[ServiceModule(BizTypeId)]
- public class WmsEmptyInstockService : BaseWareHouseService, IWmsEmptyInstockService
+ public class WmsEmptyInstockService : ServiceLoggerBase, IWmsEmptyInstockService
{
private const string BizTypeId = "26121986416677";
private readonly ISqlSugarClient _db;
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs
index 0fe26b25..53e6c2d8 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs
@@ -34,7 +34,7 @@ namespace Tnb.WarehouseMgr
///
[OverideVisualDev(ModuleConsts.MODULE_WMSOUTSTOCK_ID)]
[ServiceModule(BizTypeId)]
- public class WmsOutStockService : BaseWareHouseService, IWmsOutStockService
+ public class WmsOutStockService : ServiceLoggerBase, IWmsOutStockService
{
private const string BizTypeId = "26191522660645";
private readonly ISqlSugarClient _db;
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsStockReportService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsStockReportService.cs
index df16f071..99ef65d1 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsStockReportService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsStockReportService.cs
@@ -1,9 +1,11 @@
using JNPF.Common.Core.Manager;
+using JNPF.Common.Extension;
using JNPF.Common.Filter;
using JNPF.Common.Security;
using JNPF.VisualDev;
using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
using Mapster;
+using Newtonsoft.Json.Linq;
using SqlSugar;
using Tnb.BasicData.Entities;
using Tnb.WarehouseMgr.Entities;
@@ -29,11 +31,18 @@ namespace Tnb.WarehouseMgr
private async Task GetListAsync(VisualDevModelListQueryInput input)
{
+ var materialCode = "";
+ if (!input.queryJson.IsNullOrWhiteSpace())
+ {
+ materialCode = JObject.Parse(input.queryJson).Value(nameof(WmsCarryCode.material_code));
+ }
+
List items = await _db.Queryable().InnerJoin((a, b) => a.material_id == b.id)
.InnerJoin((a, b, c) => b.id == c.material_id)
.InnerJoin((a, b, c, d) => a.carry_id == d.id)
.InnerJoin((a, b, c, d, e) => d.location_id == e.id)
.Where((a, b, c, d, e) => e.is_type == ((int)EnumLocationType.存储库位).ToString())
+ .WhereIF(!string.IsNullOrEmpty(materialCode), (a, b, c, d, e) => a.material_code.Contains(materialCode))
.Select((a, b, c, d, e) => new WmsStockReportH
{
warehouse_id = a.warehouse_id,