1.增加电梯的路径判断与平均分配
2.载具查询异常抛出 3.在线开发的子表使用弹窗时,编辑显示时bug,例如"_point_code_"在dictionary中 不存在
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Security;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Tnb.WarehouseMgr.Entities.Entity;
|
||||
|
||||
/// <summary>
|
||||
/// WMS电梯设定明细表
|
||||
/// </summary>
|
||||
[SugarTable("wms_elevator_d")]
|
||||
public partial class WmsElevatorD : BaseEntity<string>
|
||||
{
|
||||
public WmsElevatorD()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId();
|
||||
}
|
||||
/// <summary>
|
||||
/// 所属组织
|
||||
/// </summary>
|
||||
public string? org_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 上级表单ID
|
||||
/// </summary>
|
||||
public string bill_id { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 库位ID
|
||||
/// </summary>
|
||||
public string location_id { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 库位编号
|
||||
/// </summary>
|
||||
public string location_code { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 点位ID
|
||||
/// </summary>
|
||||
public string point_id { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 点位编号
|
||||
/// </summary>
|
||||
public string point_code { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 楼层
|
||||
/// </summary>
|
||||
public int floor { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建用户
|
||||
/// </summary>
|
||||
public string create_id { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTime create_time { get; set; } = DateTime.Now;
|
||||
|
||||
/// <summary>
|
||||
/// 修改用户
|
||||
/// </summary>
|
||||
public string? modify_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改时间
|
||||
/// </summary>
|
||||
public DateTime? modify_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 扩展
|
||||
/// </summary>
|
||||
public string? extras { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
public string? remark { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 时间戳(用于并发控制)
|
||||
/// </summary>
|
||||
public DateTime? timestamp { get; set; }
|
||||
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
using JNPF.Common.Contracts;
|
||||
using JNPF.Common.Security;
|
||||
using SqlSugar;
|
||||
|
||||
namespace Tnb.WarehouseMgr.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// WMS电梯设定主表
|
||||
/// </summary>
|
||||
[SugarTable("wms_elevator_h")]
|
||||
public partial class WmsElevatorH : BaseEntity<string>
|
||||
{
|
||||
public WmsElevatorH()
|
||||
{
|
||||
id = SnowflakeIdHelper.NextId();
|
||||
}
|
||||
/// <summary>
|
||||
/// 所属组织
|
||||
/// </summary>
|
||||
public string? org_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 电梯ID
|
||||
/// </summary>
|
||||
public string elevator_id { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 电梯编号
|
||||
/// </summary>
|
||||
public string elevator_code { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 管理区ID
|
||||
/// </summary>
|
||||
public string area_id { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 管理区编号
|
||||
/// </summary>
|
||||
public string area_code { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 电梯组
|
||||
/// </summary>
|
||||
public string elevator_group { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 状态
|
||||
/// </summary>
|
||||
public int status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务数量
|
||||
/// </summary>
|
||||
public int task_nums { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
public string? remark { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建用户
|
||||
/// </summary>
|
||||
public string create_id { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
public DateTime create_time { get; set; } = DateTime.Now;
|
||||
|
||||
/// <summary>
|
||||
/// 最后修改人员
|
||||
/// </summary>
|
||||
public string? modify_id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最后修改时间
|
||||
/// </summary>
|
||||
public DateTime? modify_time { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 扩展字段
|
||||
/// </summary>
|
||||
public string? extras { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 时间戳(用于并发控制)
|
||||
/// </summary>
|
||||
public DateTime? timestamp { get; set; }
|
||||
|
||||
}
|
||||
@@ -554,6 +554,46 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
var roads = await _db.Queryable<WmsRoad>().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<WmsElevatorD>().Where(it => points.Select(x => x.id).Contains(it.point_id)).ToListAsync();
|
||||
//如果有电梯点,则会进行电梯的均匀分配
|
||||
if (curElePts.Count > 0)
|
||||
{
|
||||
//当前电梯
|
||||
var curEle = await _db.Queryable<WmsElevatorH>().SingleAsync(it => it.id == curElePts.First().bill_id);
|
||||
//同电梯组电梯
|
||||
var sGpEle = await _db.Queryable<WmsElevatorH>().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<WmsElevatorD>().Where(it => it.bill_id == sGpEle.First().id).ToListAsync();
|
||||
if (sGpPts.Count > 0)
|
||||
{
|
||||
var sGpPoints = await _db.Queryable<WmsPointH>().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<WmsPointH> 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;
|
||||
}
|
||||
|
||||
|
||||
@@ -76,6 +76,7 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
var mIds = carryDsLst.Select(it => it.membercarry_id).ToList();
|
||||
carryCodes = await _db.Queryable<WmsCarryCode>().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<CarryQueryOutput>();
|
||||
data.wmsCarryCodes = carryCodes.Adapt<List<CarryCodeQueryOutput>>();
|
||||
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
throw ;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ namespace Tnb.WarehouseMgr
|
||||
if (!isMatch) throw new AppFriendlyException("库位与载具规格不匹配", 500);
|
||||
ePoint = await _db.Queryable<WmsPointH>().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<WmsElevatorH>().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => it.area_code == eleP.area_code).ExecuteCommandAsync();
|
||||
}
|
||||
if (isOk)
|
||||
{
|
||||
var preTaskUpInput = new GenPreTaskUpInput();
|
||||
|
||||
@@ -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<WmsElevatorH>().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()
|
||||
{
|
||||
|
||||
@@ -81,10 +81,6 @@ namespace Tnb.WarehouseMgr
|
||||
//判断目标库位是否自动签收
|
||||
var loc = await _db.Queryable<BasLocation>().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString());
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var carryIds = new List<string>();
|
||||
//tablefield120 出库物料明细
|
||||
if (input.data.ContainsKey("tablefield120") && input.data["tablefield120"].IsNotEmptyOrNull())
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user