1、调整电梯逻辑代码

2、新增内部测试类
This commit is contained in:
yang.lee
2023-12-01 22:16:39 +08:00
parent 7033db95e6
commit 33e4028853
4 changed files with 95 additions and 23 deletions

View File

@@ -82,11 +82,17 @@ namespace Tnb.WarehouseMgr
[HttpPost, NonUnify, AllowAnonymous] [HttpPost, NonUnify, AllowAnonymous]
public async Task<Result> LoadConfirm(ConfirmInput input) public async Task<Result> LoadConfirm(ConfirmInput input)
{ {
Log.Information("取货确认.................."); Logger.Information("--------------------------------------------------------");
Logger.Information("取货确认..................");
var whereExp = Expressionable.Create<WmsElevatorH, WmsElevatorD, WmsDistaskH>()
.And((a, b, c) => c.bill_code == input.taskCode)
.AndIF(SqlFunc.Contains("DT-R", input.sourceName), (a, b, c) => c.startpoint_code == input.sourceName)
.AndIF(SqlFunc.Contains("DT-C", input.sourceName), (a, b, c) => c.endlocation_code == input.sourceName)
.ToExpression();
WmsElevatorH elevator = await _db.Queryable<WmsElevatorH>().LeftJoin<WmsElevatorD>((a, b) => a.id == b.bill_id) WmsElevatorH elevator = await _db.Queryable<WmsElevatorH>().InnerJoin<WmsElevatorD>((a, b) => a.id == b.bill_id)
.LeftJoin<WmsDistaskH>((a, b, c) => b.location_id == c.startlocation_id) .InnerJoin<WmsDistaskH>((a, b, c) => b.location_id == c.startlocation_id)
.Where((a, b, c) => c.endpoint_code == input.sourceName && input.taskCode == input.taskCode) .Where(whereExp)
.Select((a, b, c) => new WmsElevatorH .Select((a, b, c) => new WmsElevatorH
{ {
distask_id = c.id, distask_id = c.id,
@@ -132,6 +138,7 @@ namespace Tnb.WarehouseMgr
throw; throw;
} }
return await ToApiResult(HttpStatusCode.OK, "未启用"); return await ToApiResult(HttpStatusCode.OK, "未启用");
Logger.Information("--------------------------------------------------------");
} }
/// <summary> /// <summary>
@@ -142,14 +149,21 @@ namespace Tnb.WarehouseMgr
[HttpPost, NonUnify, AllowAnonymous] [HttpPost, NonUnify, AllowAnonymous]
public async Task<Result> UnloadConfirm(ConfirmInput input)// public async Task<Result> UnloadConfirm(ConfirmInput input)//
{ {
Logger.Information($"输入参数:{JsonConvert.SerializeObject(input)}"); Logger.Information("--------------------------------------------------------");
Logger.Information("放货确认.................."); Logger.Information("放货确认..................");
Logger.Information($"输入参数:{JsonConvert.SerializeObject(input)}");
try try
{ {
var whereExp = Expressionable.Create<WmsElevatorH, WmsElevatorD, WmsDistaskH>()
.And((a, b, c) => c.bill_code == input.taskCode)
.AndIF(SqlFunc.Contains("DT-R", input.sourceName), (a, b, c) => c.startpoint_code == input.sourceName)
.AndIF(SqlFunc.Contains("DT-C", input.sourceName), (a, b, c) => c.endlocation_code == input.sourceName)
.ToExpression();
//根据Agv传递的参数获取对应的电梯 //根据Agv传递的参数获取对应的电梯
WmsElevatorH elevator = await _db.Queryable<WmsElevatorH>().LeftJoin<WmsElevatorD>((a, b) => a.id == b.bill_id) WmsElevatorH elevator = await _db.Queryable<WmsElevatorH>().LeftJoin<WmsElevatorD>((a, b) => a.id == b.bill_id)
.LeftJoin<WmsDistaskH>((a, b, c) => b.location_id == c.endlocation_id) .LeftJoin<WmsDistaskH>((a, b, c) => b.location_id == c.endlocation_id)
.Where((a, b, c) => c.endpoint_code == input.targetName && (c.bill_code == input.taskCode || c.bill_code == input.taskChainCode)) .Where(whereExp)
.Select((a, b, c) => new WmsElevatorH .Select((a, b, c) => new WmsElevatorH
{ {
end_floor = SqlFunc.ToInt32(c.end_floor), end_floor = SqlFunc.ToInt32(c.end_floor),
@@ -201,7 +215,7 @@ namespace Tnb.WarehouseMgr
} }
return await ToApiResult(HttpStatusCode.InternalServerError, "电梯还未开门,请重试!"); return await ToApiResult(HttpStatusCode.InternalServerError, "电梯还未开门,请重试!");
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -209,6 +223,7 @@ namespace Tnb.WarehouseMgr
return await ToApiResult(HttpStatusCode.InternalServerError, "电梯还未开门,请重试!"); return await ToApiResult(HttpStatusCode.InternalServerError, "电梯还未开门,请重试!");
throw; throw;
} }
Logger.Information("--------------------------------------------------------");
} }
/// <summary> /// <summary>
@@ -218,6 +233,8 @@ namespace Tnb.WarehouseMgr
[HttpPost, NonUnify, AllowAnonymous] [HttpPost, NonUnify, AllowAnonymous]
public async Task<Result> TaskChainCallBack(TaskChainCallBackInput input) public async Task<Result> TaskChainCallBack(TaskChainCallBackInput input)
{ {
Logger.Information("--------------------------------------------------------");
try try
{ {
Logger.Information($"任务链上报->任务链编号:{input.taskChainCode},状态:{input.status},设备ID{input.deviceID}"); Logger.Information($"任务链上报->任务链编号:{input.taskChainCode},状态:{input.status},设备ID{input.deviceID}");
@@ -254,7 +271,7 @@ namespace Tnb.WarehouseMgr
} }
/*ConnectionConfigOptions opts = App.GetOptions<ConnectionConfigOptions>(); /*ConnectionConfigOptions opts = App.GetOptions<ConnectionConfigOptions>();
@@ -281,7 +298,10 @@ namespace Tnb.WarehouseMgr
return await ToApiResult(HttpStatusCode.InternalServerError, "请重试!"); return await ToApiResult(HttpStatusCode.InternalServerError, "请重试!");
throw; throw;
} }
Logger.Information("--------------------------------------------------------");
return await ToApiResult(HttpStatusCode.OK, "成功"); return await ToApiResult(HttpStatusCode.OK, "成功");
} }
/// <summary> /// <summary>
@@ -292,7 +312,9 @@ namespace Tnb.WarehouseMgr
[HttpPost, NonUnify, AllowAnonymous] [HttpPost, NonUnify, AllowAnonymous]
public async Task<Result> TaskCallback(TaskCallBackInput input) public async Task<Result> TaskCallback(TaskCallBackInput input)
{ {
Log.Information($"任务状态上报->接收参数:{JsonConvert.SerializeObject(input)}"); Logger.Information("--------------------------------------------------------");
Logger.Information($"任务状态上报->接收参数:{JsonConvert.SerializeObject(input)}");
try try
{ {
@@ -305,6 +327,7 @@ namespace Tnb.WarehouseMgr
{ {
disTaskIds = disTasks.Select(x => x.id).ToList() disTaskIds = disTasks.Select(x => x.id).ToList()
}; };
Logger.Information($"设备取返回输入参数:{JsonConvert.SerializeObject(taskExecuteAfterUpInput)}"); Logger.Information($"设备取返回输入参数:{JsonConvert.SerializeObject(taskExecuteAfterUpInput)}");
await _wareHouseService.TaskExecuteAfter(taskExecuteAfterUpInput); await _wareHouseService.TaskExecuteAfter(taskExecuteAfterUpInput);
Logger.Information($"Agv取货完成,任务Id:{string.Join(",", disTasks.Select(x => x.id))}"); Logger.Information($"Agv取货完成,任务Id:{string.Join(",", disTasks.Select(x => x.id))}");
@@ -312,8 +335,11 @@ namespace Tnb.WarehouseMgr
if (elevatorQueueItem != null) if (elevatorQueueItem != null)
{ {
Logger.Information("开始进入关门流程"); Logger.Information("开始进入关门流程");
var disTask = disTasks.Find(x => x.id == elevatorQueueItem.distask_id);
int doorStatus = await _elevatorControlService.GetTagAsync(elevatorQueueItem.elevator_code, ElevatorConsts.DoorStatus); int doorStatus = await _elevatorControlService.GetTagAsync(elevatorQueueItem.elevator_code, ElevatorConsts.DoorStatus);
if (doorStatus.ToEnum<EnumDoorStatus>() != EnumDoorStatus.) if (doorStatus.ToEnum<EnumDoorStatus>() != EnumDoorStatus.
&& !disTask.endlocation_code.StartsWith("DT", StringComparison.OrdinalIgnoreCase)
)
{ {
_ = await _elevatorControlService.SendOpenCloseCmd(elevatorQueueItem.elevator_code, 4); //向电梯发送前门关门指令 _ = await _elevatorControlService.SendOpenCloseCmd(elevatorQueueItem.elevator_code, 4); //向电梯发送前门关门指令
_ = await _db.Deleteable(elevatorQueueItem).ExecuteCommandAsync(); _ = await _db.Deleteable(elevatorQueueItem).ExecuteCommandAsync();
@@ -347,7 +373,9 @@ namespace Tnb.WarehouseMgr
{ {
_ = InvokeGenPretaskExcute(); _ = InvokeGenPretaskExcute();
} }
Logger.Information("--------------------------------------------------------");
return await ToApiResult(HttpStatusCode.OK, "成功"); return await ToApiResult(HttpStatusCode.OK, "成功");
} }
/// <summary> /// <summary>

View File

@@ -303,8 +303,10 @@ namespace Tnb.WarehouseMgr
var tasks = tags.Select(tag => GetTag(tag)); var tasks = tags.Select(tag => GetTag(tag));
var results = await Task.WhenAll(tasks.Select(task => task)); var results = await Task.WhenAll(tasks.Select(task => task));
Logger.Information($"状态结果:{string.Join(",",results)}");
var jos = results.Select(r => JObject.Parse(r)).ToArray(); var jos = results.Select(r => JObject.Parse(r)).ToArray();
var (sysStatus, runStatus, floorNo, doorStatus, agvStatus) = (0, 0, 0, 0, 0); var (sysStatus, runStatus, floorNo, doorStatus, agvStatus) = (0, 0, 0, 0, 0);
var propertyMap = new Dictionary<string, Action<int>>() var propertyMap = new Dictionary<string, Action<int>>()
{ {
{ ElevatorConsts.SysStatus, v => sysStatus = v }, { ElevatorConsts.SysStatus, v => sysStatus = v },
@@ -425,7 +427,7 @@ namespace Tnb.WarehouseMgr
throw new ArgumentNullException(nameof(input.devNames)); throw new ArgumentNullException(nameof(input.devNames));
} }
var tasks = ParallelWriteTagAsync(input); var tasks = ParallelWriteTagAsync(input);
await Task.WhenAll(tasks); var writeRes = await Task.WhenAll(tasks);
var timedTaskSvc = _backgudSvc as TimedTaskBackgroundService; var timedTaskSvc = _backgudSvc as TimedTaskBackgroundService;
if (timedTaskSvc != null) if (timedTaskSvc != null)
{ {

View File

@@ -250,7 +250,7 @@ namespace Tnb.WarehouseMgr
floor = b.floor floor = b.floor
}, true).ToListAsync(); }, true).ToListAsync();
Logger.Information($"可用电梯信息:{elevatorList.Select(e => e.elevator_code)}"); Logger.Information($"可用电梯信息:{string.Join(",", elevatorList.Select(e => e.elevator_code).Distinct())}");
//获取所有未下发的预任务申请 //获取所有未下发的预任务申请
@@ -265,6 +265,8 @@ namespace Tnb.WarehouseMgr
third_eqp_type = c.third_eqp_type, third_eqp_type = c.third_eqp_type,
}, true) }, true)
.ToListAsync(); .ToListAsync();
Logger.Information("获取未下发的预任务列表完成的......");
List<WmsPretaskH> agvElevatorTasks = preTasks List<WmsPretaskH> agvElevatorTasks = preTasks
.Where(it => it.endlocation_code.StartsWith("DT", StringComparison.OrdinalIgnoreCase) && .Where(it => it.endlocation_code.StartsWith("DT", StringComparison.OrdinalIgnoreCase) &&
!it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)) !it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase))
@@ -392,7 +394,6 @@ namespace Tnb.WarehouseMgr
} }
} }
} }
//disTasks.ForEach(x => x.id = SnowflakeIdHelper.NextId());
int row = await db.Insertable(disTasks).ExecuteCommandAsync(); int row = await db.Insertable(disTasks).ExecuteCommandAsync();
@@ -408,6 +409,8 @@ namespace Tnb.WarehouseMgr
await db.Ado.CommitTranAsync(); await db.Ado.CommitTranAsync();
Logger.Information("预任务执行完成");
if (string.Equals(_eleCtlCfg.Environment, ElevatorConsts.EnvironmentName, StringComparison.OrdinalIgnoreCase)) if (string.Equals(_eleCtlCfg.Environment, ElevatorConsts.EnvironmentName, StringComparison.OrdinalIgnoreCase))
{ {
//呼梯操作 //呼梯操作
@@ -418,7 +421,7 @@ namespace Tnb.WarehouseMgr
foreach (var at in agvDTTasks) foreach (var at in agvDTTasks)
{ {
var ele = elevatorList.Find(x => x.location_code == at.endlocation_code); var ele = elevatorList.Find(x => x.location_code == at.endlocation_code);
Logger.Information($"ele.elevator_id:{ele?.elevator_id},elevator_code:{ele.elevator_code}"); Logger.Information($"ele.elevator_id:{ele?.elevator_id},elevator_code:{ele?.elevator_code}");
if (ele != null) if (ele != null)
{ {
at.device_id = ele.elevator_id; at.device_id = ele.elevator_id;
@@ -429,6 +432,7 @@ namespace Tnb.WarehouseMgr
.Select(it => (it.endlocation_code, it.device_id, it.id, it.start_floor)).ToList(); .Select(it => (it.endlocation_code, it.device_id, it.id, it.start_floor)).ToList();
if (endLocCodes?.Count > 0) if (endLocCodes?.Count > 0)
{ {
Logger.Information("呼梯操作");
await CallingLanding(endLocCodes); await CallingLanding(endLocCodes);
} }
//执行电梯任务 //执行电梯任务
@@ -437,9 +441,6 @@ namespace Tnb.WarehouseMgr
if (elevatorTasks?.Count > 0) if (elevatorTasks?.Count > 0)
{ {
Logger.Information($"当前电梯任务数:{elevatorTasks?.Count ?? 0}"); Logger.Information($"当前电梯任务数:{elevatorTasks?.Count ?? 0}");
Logger.Information("准备执行电梯任务");
Logger.Information("执行电梯任务");
foreach (WmsDistaskH? elevatorTask in elevatorTasks) foreach (WmsDistaskH? elevatorTask in elevatorTasks)
{ {
await ExecuteTargetFloorTask(elevatorTask); await ExecuteTargetFloorTask(elevatorTask);
@@ -463,6 +464,7 @@ namespace Tnb.WarehouseMgr
catch (Exception ex) catch (Exception ex)
{ {
Logger.Error("生成预任务执行时出现错误", ex); Logger.Error("生成预任务执行时出现错误", ex);
Logger.Error(ex.StackTrace!);
await db.Ado.RollbackTranAsync(); await db.Ado.RollbackTranAsync();
throw; throw;
} }
@@ -479,6 +481,7 @@ namespace Tnb.WarehouseMgr
/// <returns></returns> /// <returns></returns>
private async Task CallingLanding(List<(string endlocation_code, string device_id, string id, int floorNO)> endLocCodes) private async Task CallingLanding(List<(string endlocation_code, string device_id, string id, int floorNO)> endLocCodes)
{ {
Logger.Information("--------------------------------------------------------");
Logger.Information($" 开始呼梯操作............."); Logger.Information($" 开始呼梯操作.............");
Logger.Information($"电梯信息:{JsonConvert.SerializeObject(s_elevatorMap)}"); Logger.Information($"电梯信息:{JsonConvert.SerializeObject(s_elevatorMap)}");
try try
@@ -546,6 +549,8 @@ namespace Tnb.WarehouseMgr
//如果当前电梯有任务在做,将当前呼梯任务放入待执行队列 //如果当前电梯有任务在做,将当前呼梯任务放入待执行队列
_ = await _db.Insertable(elevatorQueueItem).ExecuteCommandAsync(); _ = await _db.Insertable(elevatorQueueItem).ExecuteCommandAsync();
Logger.Information("呼梯任务执行完成");
} }
} }
catch (Exception ex) catch (Exception ex)
@@ -554,6 +559,7 @@ namespace Tnb.WarehouseMgr
Logger.Error($"呼梯操作错误堆栈跟踪:{Environment.NewLine}{ex.StackTrace}"); Logger.Error($"呼梯操作错误堆栈跟踪:{Environment.NewLine}{ex.StackTrace}");
throw; throw;
} }
Logger.Information("--------------------------------------------------------");
} }
/// <summary> /// <summary>
@@ -563,6 +569,7 @@ namespace Tnb.WarehouseMgr
/// <returns></returns> /// <returns></returns>
private async Task ExecuteTargetFloorTask(WmsDistaskH disTask) private async Task ExecuteTargetFloorTask(WmsDistaskH disTask)
{ {
Logger.Information("--------------------------------------------------------");
//收到放货确认通知向电梯发送到3楼的指令 //收到放货确认通知向电梯发送到3楼的指令
Logger.Information($"开始执行电梯任务任务ID:{disTask.id}"); Logger.Information($"开始执行电梯任务任务ID:{disTask.id}");
try try
@@ -631,6 +638,8 @@ namespace Tnb.WarehouseMgr
disTaskIds = disTaskIds, disTaskIds = disTaskIds,
}; };
await TaskComplate(tcUpInput); await TaskComplate(tcUpInput);
Logger.Information("电梯任务执行完成");
} }
} }
@@ -639,6 +648,7 @@ namespace Tnb.WarehouseMgr
Logger.Error("执行到目标楼层电梯任务失败", ex); Logger.Error("执行到目标楼层电梯任务失败", ex);
throw; throw;
} }
Logger.Information("--------------------------------------------------------");
} }
/// <summary> /// <summary>
/// Agv调度 /// Agv调度
@@ -780,7 +790,6 @@ namespace Tnb.WarehouseMgr
await _db.Updateable(eles).ReSetValue(it => it.task_nums--).ExecuteCommandAsync(); await _db.Updateable(eles).ReSetValue(it => it.task_nums--).ExecuteCommandAsync();
//更新载具,锁定状态为未锁定,更新载具的库位当前任务的目标库位 //更新载具,锁定状态为未锁定,更新载具的库位当前任务的目标库位
Logger.Information("更新载具及库位准备中.....");
List<(string carry_id, string carry_status, string endlocation_id, string endlocation_code)> multiList = disTasks.Select(it => (it.carry_id, it.carry_status, it.endlocation_id, it.endlocation_code)).ToList(); List<(string carry_id, string carry_status, string endlocation_id, string endlocation_code)> multiList = disTasks.Select(it => (it.carry_id, it.carry_status, it.endlocation_id, it.endlocation_code)).ToList();
Dictionary<string, object> locWhIdMap = await _db.Queryable<BasLocation>().Where(it => multiList.Select(x => x.endlocation_id).Contains(it.id)).ToDictionaryAsync(it => it.id, it => it.wh_id); Dictionary<string, object> locWhIdMap = await _db.Queryable<BasLocation>().Where(it => multiList.Select(x => x.endlocation_id).Contains(it.id)).ToDictionaryAsync(it => it.id, it => it.wh_id);
@@ -819,7 +828,6 @@ namespace Tnb.WarehouseMgr
locIts.Add(loc); locIts.Add(loc);
} }
Logger.Information("更新载具及库位开始.....");
_ = await _db.Updateable(carryIts).UpdateColumns(it => new { it.is_lock, it.location_id, it.location_code }).ExecuteCommandAsync(); _ = await _db.Updateable(carryIts).UpdateColumns(it => new { it.is_lock, it.location_id, it.location_code }).ExecuteCommandAsync();
//更新条码的库位和仓库信息 //更新条码的库位和仓库信息
_ = await _db.Updateable(carryCodeIts).UpdateColumns(it => new { it.warehouse_id, it.location_id, it.location_code }).Where(it => multiList.Select(x => x.carry_id).Contains(it.carry_id)).ExecuteCommandAsync(); _ = await _db.Updateable(carryCodeIts).UpdateColumns(it => new { it.warehouse_id, it.location_id, it.location_code }).Where(it => multiList.Select(x => x.carry_id).Contains(it.carry_id)).ExecuteCommandAsync();
@@ -830,7 +838,6 @@ namespace Tnb.WarehouseMgr
*/ //更新业务主表的单据状态 */ //更新业务主表的单据状态
foreach (WmsDistaskH? dt in disTasks) foreach (WmsDistaskH? dt in disTasks)
{ {
Logger.Information("开始业务回更");
List<WmsDistaskCode> disTaskCodes = await _db.Queryable<WmsDistaskCode>().Where(it => it.bill_id == dt.id).ToListAsync(); List<WmsDistaskCode> disTaskCodes = await _db.Queryable<WmsDistaskCode>().Where(it => it.bill_id == dt.id).ToListAsync();
WareHouseUpInput upInput = new() { bizTypeId = dt.biz_type, requireId = dt.require_id!, distaskCodes = disTaskCodes, carryIds = disTasks.Select(x => x.carry_id).ToList() }; WareHouseUpInput upInput = new() { bizTypeId = dt.biz_type, requireId = dt.require_id!, distaskCodes = disTaskCodes, carryIds = disTasks.Select(x => x.carry_id).ToList() };
@@ -845,12 +852,13 @@ namespace Tnb.WarehouseMgr
upInput.loginType = "web";//(!string.IsNullOrEmpty(_userManager?.LoginType) ? "app" : "web") ?? "web"; upInput.loginType = "web";//(!string.IsNullOrEmpty(_userManager?.LoginType) ? "app" : "web") ?? "web";
if (dt.is_sign == 1 && dt.chain_type == "3") if (dt.is_sign == 1 && dt.chain_type == "3")
{ {
Logger.Information("执行业务回更操作.....");
await DoUpdate(upInput); await DoUpdate(upInput);
} }
} }
} }
await _db.Ado.CommitTranAsync(); await _db.Ado.CommitTranAsync();
Logger.Information("任务操作完成");
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -993,7 +1001,6 @@ namespace Tnb.WarehouseMgr
{ {
if (points?.FindAll(x => x.location_code != null && x.location_code.Contains("dt", StringComparison.OrdinalIgnoreCase))?.Count > 0) if (points?.FindAll(x => x.location_code != null && x.location_code.Contains("dt", StringComparison.OrdinalIgnoreCase))?.Count > 0)
{ {
Logger.Information("包含电梯Agv任务");
//查询当前电梯点 //查询当前电梯点
List<WmsElevatorD> curEleDs = await _db.Queryable<WmsElevatorD>().InnerJoin<WmsElevatorH>((a, b) => a.bill_id == b.id).Where((a, b) => points.Select(x => x.id).Contains(a.point_id)).ToListAsync(); List<WmsElevatorD> curEleDs = await _db.Queryable<WmsElevatorD>().InnerJoin<WmsElevatorH>((a, b) => a.bill_id == b.id).Where((a, b) => points.Select(x => x.id).Contains(a.point_id)).ToListAsync();
Logger.Information($"curEleDs==null :{curEleDs == null},curEleDs:{string.Join(",", curEleDs.Select(x => x.bill_id))}"); Logger.Information($"curEleDs==null :{curEleDs == null},curEleDs:{string.Join(",", curEleDs.Select(x => x.bill_id))}");
@@ -1002,7 +1009,6 @@ namespace Tnb.WarehouseMgr
{ {
//当前电梯 //当前电梯
WmsElevatorH curEle = await _db.Queryable<WmsElevatorH>().SingleAsync(it => it.id == curEleDs.First().bill_id); WmsElevatorH curEle = await _db.Queryable<WmsElevatorH>().SingleAsync(it => it.id == curEleDs.First().bill_id);
Logger.Information($"curEle==null :{curEle == null}");
//同电梯组电梯 //同电梯组电梯
List<WmsElevatorH> sGpEle = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.enabled == 1).ToListAsync(); List<WmsElevatorH> sGpEle = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.enabled == 1).ToListAsync();

View File

@@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using JNPF.Common.Extension;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using Tnb.BasicData.Entities;
namespace Tnb.WarehouseMgr
{
public class WmsInternalTempTestService
{
private readonly ISqlSugarClient _db;
public WmsInternalTempTestService(ISqlSugarRepository<BasLocation> repo)
{
_db = repo.AsSugarClient();
}
/// <summary>
/// 修改列
/// </summary>
/// <returns></returns>
[HttpPost]
public void UpdateCol()
{
List<BasLocation> list = new List<BasLocation>();
foreach (var loc in list)
{
ReadOnlySpan<char> inputSpan= loc.location_code.AsSpan();
ReadOnlySpan<char> lastTwoCharacters = inputSpan.Slice(inputSpan.Length - 2);
var num = lastTwoCharacters.ToString().Match(@"\d+");
}
}
}
}