Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
2023-07-27 14:33:59 +08:00
8 changed files with 240 additions and 9 deletions

View File

@@ -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; }
}

View File

@@ -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; }
}

View File

@@ -548,6 +548,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;
}

View File

@@ -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;
}

View File

@@ -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();

View File

@@ -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()
{

View File

@@ -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())

View File

@@ -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();