diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorD.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorD.cs
new file mode 100644
index 00000000..383ebf48
--- /dev/null
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorD.cs
@@ -0,0 +1,87 @@
+using JNPF.Common.Contracts;
+using JNPF.Common.Security;
+using SqlSugar;
+
+namespace Tnb.WarehouseMgr.Entities.Entity;
+
+///
+/// WMS电梯设定明细表
+///
+[SugarTable("wms_elevator_d")]
+public partial class WmsElevatorD : BaseEntity
+{
+ public WmsElevatorD()
+ {
+ id = SnowflakeIdHelper.NextId();
+ }
+ ///
+ /// 所属组织
+ ///
+ public string? org_id { get; set; }
+
+ ///
+ /// 上级表单ID
+ ///
+ public string bill_id { get; set; } = string.Empty;
+
+ ///
+ /// 库位ID
+ ///
+ public string location_id { get; set; } = string.Empty;
+
+ ///
+ /// 库位编号
+ ///
+ public string location_code { get; set; } = string.Empty;
+
+ ///
+ /// 点位ID
+ ///
+ public string point_id { get; set; } = string.Empty;
+
+ ///
+ /// 点位编号
+ ///
+ public string point_code { get; set; } = string.Empty;
+
+ ///
+ /// 楼层
+ ///
+ public int floor { 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 string? remark { get; set; }
+
+ ///
+ /// 时间戳(用于并发控制)
+ ///
+ public DateTime? timestamp { get; set; }
+
+}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.cs
new file mode 100644
index 00000000..d4f6730b
--- /dev/null
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsElevatorH.cs
@@ -0,0 +1,92 @@
+using JNPF.Common.Contracts;
+using JNPF.Common.Security;
+using SqlSugar;
+
+namespace Tnb.WarehouseMgr.Entities;
+
+///
+/// WMS电梯设定主表
+///
+[SugarTable("wms_elevator_h")]
+public partial class WmsElevatorH : BaseEntity
+{
+ public WmsElevatorH()
+ {
+ id = SnowflakeIdHelper.NextId();
+ }
+ ///
+ /// 所属组织
+ ///
+ public string? org_id { get; set; }
+
+ ///
+ /// 电梯ID
+ ///
+ public string elevator_id { get; set; } = string.Empty;
+
+ ///
+ /// 电梯编号
+ ///
+ public string elevator_code { get; set; } = string.Empty;
+
+ ///
+ /// 管理区ID
+ ///
+ public string area_id { get; set; } = string.Empty;
+
+ ///
+ /// 管理区编号
+ ///
+ public string area_code { get; set; } = string.Empty;
+
+ ///
+ /// 电梯组
+ ///
+ public string elevator_group { get; set; } = string.Empty;
+
+ ///
+ /// 状态
+ ///
+ public int status { get; set; }
+
+ ///
+ /// 任务数量
+ ///
+ public int task_nums { get; set; }
+
+ ///
+ /// 备注
+ ///
+ 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/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs
index 0b6a3f23..adf7ae9d 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs
@@ -554,6 +554,46 @@ namespace Tnb.WarehouseMgr
{
var roads = await _db.Queryable().ToListAsync();
var points = await LocPathCalcAlgorithms(pStartId, pEndId, roads);
+
+ if (points.FindAll(x => x.location_code != null && x.location_code.Contains("ELE")).Count > 0)
+ {//查询当前电梯点
+ var curElePts = await _db.Queryable().Where(it => points.Select(x => x.id).Contains(it.point_id)).ToListAsync();
+ //如果有电梯点,则会进行电梯的均匀分配
+ if (curElePts.Count > 0)
+ {
+ //当前电梯
+ var curEle = await _db.Queryable().SingleAsync(it => it.id == curElePts.First().bill_id);
+ //同电梯组电梯
+ var sGpEle = await _db.Queryable().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id).ToListAsync();
+ //判断电梯组中各电梯任务数
+ if (sGpEle.FindAll(x => x.task_nums < curEle.task_nums + 1)?.Count > 0)
+ {
+ var sGpPts = await _db.Queryable().Where(it => it.bill_id == sGpEle.First().id).ToListAsync();
+ if (sGpPts.Count > 0)
+ {
+ var sGpPoints = await _db.Queryable().Where(it => sGpPts.Select(x => x.point_id).Contains(it.id)).ToListAsync();
+ var sFEndId = sGpPts.Single(x => x.floor == curElePts.First().floor).point_id;
+ var eFStartId = sGpPts.Single(x => x.floor == curElePts.Last().floor).point_id;
+ var sFPoints = await LocPathCalcAlgorithms(pStartId, sFEndId, roads);
+ List elePoints = new();
+ foreach (var pt in curElePts)
+ {
+ var elePoint = sGpPoints.Find(x => x.floor == pt.floor);
+ if (elePoint != null)
+ elePoints.Add(elePoint);
+ }
+ var eFPoints = await LocPathCalcAlgorithms(eFStartId, pEndId, roads);
+ elePoints.Remove(elePoints.First());
+ elePoints.Remove(elePoints.Last());
+ points.Clear();
+ points.AddRange(sFPoints);
+ points.AddRange(elePoints);
+ points.AddRange(eFPoints);
+ }
+ }
+ }
+ }
+
return points;
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryQueryService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryQueryService.cs
index e5b17a29..372c4088 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryQueryService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryQueryService.cs
@@ -76,6 +76,7 @@ namespace Tnb.WarehouseMgr
{
var mIds = carryDsLst.Select(it => it.membercarry_id).ToList();
carryCodes = await _db.Queryable().Where(it => mIds.Contains(it.carry_id)).ToListAsync();
+ if (carryCodes.Count < mIds.Count) throw new AppFriendlyException("载具条码数据异常,有料箱为空",500);
for (int i = 0, cnt = mIds.Count; i < cnt; i++)
{
carryCodes[i].member_carrycode = carryDsLst.Find(x => x.membercarry_id == mIds[i])?.membercarry_code ?? string.Empty;
@@ -87,11 +88,11 @@ namespace Tnb.WarehouseMgr
}
data = carry.Adapt();
data.wmsCarryCodes = carryCodes.Adapt>();
-
}
catch (Exception)
{
await _db.Ado.RollbackTranAsync();
+ throw ;
}
return data;
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs
index cb64b15e..d719fe04 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs
@@ -85,7 +85,7 @@ namespace Tnb.WarehouseMgr
if (!isMatch) throw new AppFriendlyException("库位与载具规格不匹配", 500);
ePoint = await _db.Queryable().FirstAsync(it => it.location_id == endLocations[0].id);
}
-
+
//在线开发
VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSEMPTYINSTOCK_ID, true);
await _runService.Create(templateEntity, input);
@@ -125,6 +125,12 @@ namespace Tnb.WarehouseMgr
return preTask;
}).ToList();
var isOk = await _wareHouseService.GenPreTask(preTasks, null!);
+ //更新电梯任务数量
+ var eleP = points.Find(x => x.area_code.Contains("ELE"));
+ if (eleP != null)
+ {
+ await _db.Updateable().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => it.area_code == eleP.area_code).ExecuteCommandAsync();
+ }
if (isOk)
{
var preTaskUpInput = new GenPreTaskUpInput();
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs
index 5ea04629..e6cfb620 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs
@@ -23,6 +23,7 @@ using Tnb.WarehouseMgr.Entities.Attributes;
using Tnb.WarehouseMgr.Entities.Consts;
using Tnb.WarehouseMgr.Entities.Dto;
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
+using Tnb.WarehouseMgr.Entities.Entity;
using Tnb.WarehouseMgr.Entities.Enums;
using Tnb.WarehouseMgr.Interfaces;
@@ -155,8 +156,14 @@ namespace Tnb.WarehouseMgr
preTasks[^1].is_sign = 0; // 修改最后一个元素的是否签收值
}
isOk = await _wareHouseService.GenPreTask(preTasks, null!);
+ //更新电梯任务数量
+ var eleP = points.Find(x => x.area_code.Contains("ELE"));
+ if (eleP != null)
+ {
+ await _db.Updateable().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => it.area_code == eleP.area_code).ExecuteCommandAsync();
+ }
}
- if (isOk)
+ if(isOk)
{
GenPreTaskUpInput preTaskUpInput = new()
{
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs
index d6c26e3a..b278eeb6 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs
@@ -81,10 +81,6 @@ namespace Tnb.WarehouseMgr
//判断目标库位是否自动签收
var loc = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString());
-
-
-
-
var carryIds = new List();
//tablefield120 出库物料明细
if (input.data.ContainsKey("tablefield120") && input.data["tablefield120"].IsNotEmptyOrNull())
diff --git a/visualdev/Tnb.VisualDev/RunService.cs b/visualdev/Tnb.VisualDev/RunService.cs
index 214bb0df..3bef9517 100644
--- a/visualdev/Tnb.VisualDev/RunService.cs
+++ b/visualdev/Tnb.VisualDev/RunService.cs
@@ -3635,8 +3635,10 @@ public class RunService : IRunService, ITransient
{
var relationValueId = dataItem[item.__vModel__].ToString(); // 获取关联表单id
- // 添加到 子表 列
- model.__config__.children.Where(x => x.relationField.ReplaceRegex(@"_jnpfTable_(\w+)", string.Empty) == item.__vModel__).ToList().ForEach(citem =>
+
+ // 添加到 子表 列
+ // 配置弹窗关联控件会将弹窗选择控件一起配置,导致报错,将弹窗选择控件移除 增加 && x.__vModel__ != item.__vModel__ --modified by lianFan 20230727
+ model.__config__.children.Where(x => x.relationField.ReplaceRegex(@"_jnpfTable_(\w+)", string.Empty) == item.__vModel__ && x.__vModel__ != item.__vModel__).ToList().ForEach(citem =>
{
citem.__vModel__ = item.__vModel__ + "_" + citem.showField;
var value = pDataList.Where(x => x.Values.Contains(dataItem[item.__vModel__].ToString())).FirstOrDefault();