bug处理
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
using JNPF;
|
||||
using Aliyun.OSS;
|
||||
using Aop.Api.Domain;
|
||||
using JNPF;
|
||||
using JNPF.Common.Core.Manager;
|
||||
using JNPF.Common.Enums;
|
||||
using JNPF.Common.Extension;
|
||||
@@ -34,7 +36,7 @@ namespace Tnb.WarehouseMgr
|
||||
/// Wms设备接口提供程序服务类
|
||||
/// </summary>
|
||||
|
||||
public class DeviceProviderService : ServiceLoggerBase<DeviceProviderService>
|
||||
public class DeviceProviderService : DevServBase<DeviceProviderService>
|
||||
{
|
||||
private readonly ISqlSugarClient _db;
|
||||
private readonly IWareHouseService _wareHouseService;
|
||||
@@ -45,7 +47,6 @@ namespace Tnb.WarehouseMgr
|
||||
private readonly ElevatorControlConfiguration _eleCtlCfg = App.Configuration.Build<ElevatorControlConfiguration>();
|
||||
private readonly ILoggerFactory _loggerFactory;
|
||||
public static Dictionary<string, int> s_eleUseStatusDic = new();
|
||||
public static Dictionary<string, int> s_loadedStatusDic = new();
|
||||
|
||||
|
||||
|
||||
@@ -54,7 +55,7 @@ namespace Tnb.WarehouseMgr
|
||||
IEventPublisher eventPublisher,
|
||||
IUserManager userManger,
|
||||
IElevatorControlService elevatorControlService
|
||||
) //: base(repository.AsSugarClient())
|
||||
) : base(repository.AsSugarClient())
|
||||
{
|
||||
_db = repository.AsSugarClient();
|
||||
_wareHouseService = wareHouseService;
|
||||
@@ -92,7 +93,7 @@ namespace Tnb.WarehouseMgr
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> LoadConfirm(ConfirmInput input)
|
||||
{
|
||||
|
||||
Logger.Information("取货确认..................");
|
||||
Logger.Information("【LoadConfirm】接收到WCS取货确认信号.................. ");
|
||||
|
||||
var dis = _db.Queryable<WmsDistaskH>().Where(P => P.bill_code == input.taskCode).First();
|
||||
if (dis.area_code == "ZSCJ001")
|
||||
@@ -101,12 +102,12 @@ namespace Tnb.WarehouseMgr
|
||||
if (flag)
|
||||
{
|
||||
await _wareHouseService.SsxControl(dis, "LOAD");
|
||||
Logger.Information(dis.startlocation_code+"取货确认..................成功");
|
||||
Logger.Information("【LoadConfirm】 " + dis.startlocation_code + "取货确认..................成功");
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Information(dis.startlocation_code + "取货确认..................失败");
|
||||
Logger.Information("【LoadConfirm】 " + dis.startlocation_code + "取货确认..................失败");
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, "失败");
|
||||
}
|
||||
}
|
||||
@@ -126,14 +127,14 @@ namespace Tnb.WarehouseMgr
|
||||
device_id = a.elevator_id,
|
||||
}, true)
|
||||
.FirstAsync();*/
|
||||
Logger.Information($"当前取货,子任务编号:{input.taskCode}");
|
||||
Logger.Information($"【LoadConfirm】 当前取货,子任务编号:{input.taskCode}");
|
||||
|
||||
ElevagorInfoQuery q = new() { taskCode = input.taskCode, sourceName = input.sourceName };
|
||||
WmsElevatorH elevator = await FindElevatorFromPars(q);
|
||||
if (elevator.IsNull())
|
||||
{
|
||||
Logger.Error("未找到匹配的电梯任务", new Exception($"根据参数,sourceName:{input.sourceName},taskCode:{input.taskCode},未找到匹配的电梯任务"));
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, $"根据参数,sourceName:{input.sourceName},taskCode:{input.taskCode},未找到匹配的电梯任务");
|
||||
Logger.Error("【LoadConfirm】 未找到匹配的电梯任务", new Exception($"【LoadConfirm】 根据参数,sourceName:{input.sourceName},taskCode:{input.taskCode},未找到匹配的电梯任务"));
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, $"【LoadConfirm】 根据参数,sourceName:{input.sourceName},taskCode:{input.taskCode},未找到匹配的电梯任务");
|
||||
}
|
||||
try
|
||||
{
|
||||
@@ -141,11 +142,11 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
//s_eleUseStatusDic[elevator.device_id] = (int)EnumElevatorUseStatus.空闲;
|
||||
string devName = elevatorCode?.ToString();
|
||||
Logger.Information($"获取设备:{devName},状态");
|
||||
Logger.Information($"【LoadConfirm】 获取设备:{devName},状态");
|
||||
var tags = _eleCtlCfg.tags;
|
||||
await Task.Delay(1000);
|
||||
(int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) = await _elevatorControlService.GetElevatorStatus(devName, tags, CancellationToken.None);
|
||||
Logger.Information($"电梯当前状态->系统状态:{sysStatus.ToEnum<EnumSysStatus>()},运行状态:{runStatus.ToEnum<EnumRunStatus>()},Agv状态:{agvStatus.ToEnum<EnumAgvStatus>()},当前楼层:{floorNo}");
|
||||
Logger.Information($"【LoadConfirm】 电梯当前状态->系统状态:{sysStatus.ToEnum<EnumSysStatus>()},运行状态:{runStatus.ToEnum<EnumRunStatus>()},Agv状态:{agvStatus.ToEnum<EnumAgvStatus>()},当前楼层:{floorNo}");
|
||||
{
|
||||
var curFloor = await GetRealFloor(elevator.end_floor);
|
||||
/* Logger.Information($"目标楼层:{curFloor},电梯当前楼层:{floorNo}");
|
||||
@@ -153,13 +154,13 @@ namespace Tnb.WarehouseMgr
|
||||
var loadedStatus = s_eleUseStatusDic[elevator.device_id] == 1 ? "完成" : "未完成";
|
||||
Logger.Information($"{devName.Match(@"\d+")}#梯,取货-> {loadedStatus}");
|
||||
*/
|
||||
if (s_eleUseStatusDic[elevator.device_id] == (int)EnumElevatorUseStatus.空闲 &&curFloor != floorNo)
|
||||
if (s_eleUseStatusDic[elevator.device_id] == (int)EnumElevatorUseStatus.空闲 && curFloor != floorNo)
|
||||
{
|
||||
_ = await _elevatorControlService.CallLift(devName, curFloor, CancellationToken.None);
|
||||
}
|
||||
if (curFloor != floorNo)
|
||||
{
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, "电梯还未开门,请重试!");
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, "【LoadConfirm】 电梯还未开门,请重试!");
|
||||
}
|
||||
if (doorStatus.ToEnum<EnumDoorStatus>() != EnumDoorStatus.开门到位保持 && runStatus.ToEnum<EnumRunStatus>() == EnumRunStatus.停梯 && floorNo == curFloor) //判断电梯楼层与当前放货在同一楼层在允许放货
|
||||
{
|
||||
@@ -199,6 +200,7 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
protected async Task<WmsElevatorH> FindElevatorFromPars(ElevagorInfoQuery input)
|
||||
{
|
||||
Logger.Information($"【FindElevatorFromPars】 根据任务单号获取电梯参数: {JsonConvert.SerializeObject(input)}");
|
||||
var whereExpable = Expressionable.Create<WmsElevatorH, WmsElevatorD, WmsDistaskH>()
|
||||
.And((a, b, c) => a.enabled == 1);
|
||||
if (!input.taskCode.IsNullOrEmpty())
|
||||
@@ -213,7 +215,8 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
whereExpable.AndIF(!SqlFunc.IsNullOrEmpty(input.startlocation_id), (a, b, c) => b.location_id == input.startlocation_id);
|
||||
}
|
||||
var ele = await _db.CopyNew().Queryable<WmsElevatorH>().InnerJoin<WmsElevatorD>((a, b) => a.id == b.bill_id)
|
||||
|
||||
ISugarQueryable<WmsElevatorH> queryable = _db.CopyNew().Queryable<WmsElevatorH>().InnerJoin<WmsElevatorD>((a, b) => a.id == b.bill_id)
|
||||
.InnerJoin<WmsDistaskH>((a, b, c) => b.location_code == c.endlocation_code || b.location_code == c.startlocation_code)
|
||||
.Where(whereExpable.ToExpression())
|
||||
.WhereIF(!SqlFunc.IsNullOrEmpty(input.sourceName) && SqlFunc.StartsWith("DT-R", input.sourceName), (a, b, c) => c.startpoint_code == input.sourceName)
|
||||
@@ -223,9 +226,13 @@ namespace Tnb.WarehouseMgr
|
||||
bill_code = c.bill_code,
|
||||
device_id = a.elevator_id,
|
||||
end_floor = c.end_floor
|
||||
}, true)
|
||||
}, true);
|
||||
Logger.Information($"【FindElevatorFromPars】 根据任务单号获取电梯sql {queryable.ToSqlString()}");
|
||||
var ele = await queryable
|
||||
.FirstAsync();
|
||||
|
||||
|
||||
|
||||
return ele;
|
||||
|
||||
}
|
||||
@@ -238,8 +245,8 @@ namespace Tnb.WarehouseMgr
|
||||
[HttpPost, NonUnify, AllowAnonymous]
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> UnloadConfirm(ConfirmInput input)//
|
||||
{
|
||||
Logger.Information("放货确认..................");
|
||||
Logger.Information($"当前放货,任务编号:{input.taskCode}");
|
||||
Logger.Information("【UnloadConfirm】 接收到WCS放货确认信号..................");
|
||||
Logger.Information($"【UnloadConfirm】 当前放货,任务编号:{input.taskCode}");
|
||||
var dis = _db.Queryable<WmsDistaskH>().Where(P => P.bill_code == input.taskCode).First();
|
||||
if (dis.area_code == "ZSCJ001")
|
||||
{
|
||||
@@ -277,49 +284,48 @@ namespace Tnb.WarehouseMgr
|
||||
WmsElevatorH elevator = await FindElevatorFromPars(q);
|
||||
if (elevator.IsNull())
|
||||
{
|
||||
Logger.Error($"根据参数,sourceName:{input.sourceName},taskCode:{input.taskCode},未找到匹配的电梯任务");
|
||||
Logger.Error($"【UnloadConfirm】 根据参数,sourceName:{input.sourceName},taskCode:{input.taskCode},未找到匹配的电梯任务");
|
||||
}
|
||||
if (s_elevatorMap.TryGetValue(elevator.device_id, out object? elevatorCode))
|
||||
{
|
||||
|
||||
string devName = elevatorCode?.ToString();
|
||||
|
||||
Logger.Information($"当前放货设备ID:{elevator.device_id}");
|
||||
Logger.Information($"【UnloadConfirm】 当前放货设备ID:{elevator.device_id}");
|
||||
var loadedStatus = s_eleUseStatusDic[elevator.device_id] == 1 ? "占用" : "空闲";
|
||||
Logger.Information($"{devName.Match(@"\d+")}#梯,状态-> {loadedStatus}");
|
||||
Logger.Information($"获取设备:{devName},状态");
|
||||
Logger.Information($"【UnloadConfirm】 {devName.Match(@"\d+")}#梯,状态-> {loadedStatus}");
|
||||
Logger.Information($"【UnloadConfirm】 获取设备:{devName},状态");
|
||||
//await Task.Delay(3000);
|
||||
(int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) = await _elevatorControlService.GetElevatorStatus(devName, _eleCtlCfg.tags, CancellationToken.None);//elevator.elevator_code
|
||||
Logger.Information($"电梯当前状态->系统状态:{sysStatus.ToEnum<EnumSysStatus>()},运行状态:{runStatus},门状态:{doorStatus},Agv状态:{agvStatus},当前楼层:{floorNo}");
|
||||
Logger.Information($"【UnloadConfirm】 电梯当前状态->系统状态:{sysStatus.ToEnum<EnumSysStatus>()},运行状态:{runStatus},门状态:{doorStatus},Agv状态:{agvStatus},当前楼层:{floorNo}");
|
||||
//判断Agv电梯是否进入状态
|
||||
if (agvStatus != (int)EnumAgvStatus.AGV运行状态)
|
||||
{
|
||||
await _elevatorControlService.WriteTagAsync(devName, ElevatorConsts.AGVControl, 1);
|
||||
dynamic res = await _elevatorControlService.WriteTagAsync(devName, ElevatorConsts.AGVControl, 1);
|
||||
Logger.Information($"【UnloadConfirm】 发送AGVControl 切换电梯{devName}控制模式结果 {JsonConvert.SerializeObject(res)}");
|
||||
}
|
||||
|
||||
var curFloor = await GetRealFloor(elevator.end_floor);
|
||||
|
||||
|
||||
|
||||
Logger.Information($"【UnloadConfirm】 电梯状态 {s_eleUseStatusDic[elevator.device_id]} 当前楼层:{curFloor},电梯所在楼层:{floorNo}");
|
||||
if (s_eleUseStatusDic[elevator.device_id] == (int)EnumElevatorUseStatus.空闲 && curFloor != floorNo)
|
||||
{
|
||||
_ = await _elevatorControlService.CallLift(devName, curFloor, CancellationToken.None);
|
||||
}
|
||||
if (curFloor != floorNo)
|
||||
{
|
||||
Logger.Information($"【UnloadConfirm】 电梯还未开门,请重试!curFloor != floorNo");
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, "电梯还未开门,请重试!");
|
||||
}
|
||||
|
||||
Logger.Information($"当前楼层:{curFloor},电梯所在楼层:{floorNo}");
|
||||
|
||||
|
||||
|
||||
if (doorStatus == (int)EnumDoorStatus.开门到位保持 && s_eleUseStatusDic[elevator.device_id] == (int)EnumElevatorUseStatus.占用)
|
||||
{
|
||||
Logger.Information($"【UnloadConfirm】 电梯当前在s_eleUseStatusDic中的状态为占用!");
|
||||
await ToApiResult(HttpStatusCode.InternalServerError, "电梯还未开门,请重试!");
|
||||
}
|
||||
//电梯到达目标楼层后,判断当前电梯门状态是否为开门到位保持状态
|
||||
if (doorStatus != (int)EnumDoorStatus.开门到位保持 && curFloor == floorNo) //判断目标楼层与电梯所在楼层在同一层才可开门放货
|
||||
if (doorStatus != (int)EnumDoorStatus.开门到位保持 && s_eleUseStatusDic[elevator.device_id] == (int)EnumElevatorUseStatus.空闲 && curFloor == floorNo) //判断目标楼层与电梯所在楼层在同一层才可开门放货
|
||||
{
|
||||
_ = await _elevatorControlService.SendOpenCloseCmd(devName, 3); //发送电梯前门开门指令
|
||||
}
|
||||
@@ -327,21 +333,23 @@ namespace Tnb.WarehouseMgr
|
||||
if (sysStatus == (int)EnumSysStatus.正常状态 && runStatus == (int)EnumRunStatus.停梯
|
||||
&& doorStatus == (int)EnumDoorStatus.开门到位保持 && s_eleUseStatusDic[elevator.device_id] == (int)EnumElevatorUseStatus.空闲)
|
||||
{
|
||||
Logger.Information($"【UnloadConfirm】 成功");
|
||||
s_eleUseStatusDic[elevator.device_id] = (int)EnumElevatorUseStatus.占用;
|
||||
return await ToApiResult(HttpStatusCode.OK, "成功");
|
||||
}
|
||||
Logger.Information($"【UnloadConfirm】 电梯还未开门,请重试!sysStatus: {sysStatus} runStatus:{runStatus} doorStatus: {doorStatus} s_eleUseStatusDic[elevator.device_id]: {s_eleUseStatusDic[elevator.device_id]}");
|
||||
}
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, "电梯还未开门,请重试!");
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Error("放货确认失败", ex);
|
||||
Logger.Error("【UnloadConfirm】 放货确认失败", ex);
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, "电梯还未开门,请重试!");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 任务链状态上报
|
||||
/// </summary>
|
||||
@@ -352,7 +360,7 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
try
|
||||
{
|
||||
Logger.Information($"任务链上报->任务链编号:{input.taskChainCode},状态:{input.status},设备ID:{input.deviceID}");
|
||||
Logger.Information($"【TaskChainCallBack】 接收到WCS信号 任务链上报->任务链编号:{input.taskChainCode},状态:{input.status},设备ID:{input.deviceID}");
|
||||
switch (input.status)
|
||||
{
|
||||
case "CREATED": break;
|
||||
@@ -366,7 +374,7 @@ namespace Tnb.WarehouseMgr
|
||||
List<EqpEquipment> eps = await _db.Queryable<EqpEquipment>().Where(it => it.code.Contains(input.deviceID)).ToListAsync();
|
||||
if (disTasks == null || disTasks.Count < 1)
|
||||
{
|
||||
Logger.Error($"根据任务链编号:{input.taskChainCode} ,未获取到任何任务");
|
||||
Logger.Error($"【TaskChainCallBack】 根据任务链编号:{input.taskChainCode} ,未获取到任何任务");
|
||||
}
|
||||
if (disTasks?.Count > 0)
|
||||
{
|
||||
@@ -410,8 +418,8 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Error("任务链状态上报", ex);
|
||||
Logger.Error($"任务链状态上报错误堆栈{Environment.NewLine}{ex.StackTrace}");
|
||||
Logger.Error("【TaskChainCallBack】 任务链状态上报", ex);
|
||||
Logger.Error($"【TaskChainCallBack】 任务链状态上报错误堆栈{Environment.NewLine}{ex.StackTrace}");
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, "请重试!");
|
||||
throw;
|
||||
}
|
||||
@@ -429,7 +437,7 @@ namespace Tnb.WarehouseMgr
|
||||
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> TaskCallback(TaskCallBackInput input)
|
||||
{
|
||||
|
||||
Logger.Information($"任务状态上报->接收参数:{JsonConvert.SerializeObject(input)}");
|
||||
Logger.Information($"【TaskCallback】 接收到WCS信号 任务状态上报->接收参数:{JsonConvert.SerializeObject(input)}");
|
||||
try
|
||||
{
|
||||
var disTask = await _db.Queryable<WmsDistaskH>().FirstAsync(it => it.bill_code == input.taskCode);
|
||||
@@ -441,34 +449,44 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
disTaskIds = disTasks.Select(x => x.id).ToList()
|
||||
};
|
||||
Logger.Information($"设备取返回输入参数:{JsonConvert.SerializeObject(taskExecuteAfterUpInput)}");
|
||||
Logger.Information($"【TaskCallback】 设备取返回输入参数:{JsonConvert.SerializeObject(taskExecuteAfterUpInput)}");
|
||||
await _wareHouseService.TaskExecuteAfter(taskExecuteAfterUpInput);
|
||||
Logger.Information($"Agv取货完成,任务编号:{string.Join(",", disTasks.Select(x => x.bill_code))}");
|
||||
Logger.Information($"【TaskCallback】 Agv取货完成,任务编号:{string.Join(",", disTasks.Select(x => x.bill_code))}");
|
||||
|
||||
//根据Agv传递的参数获取,对应的电梯
|
||||
|
||||
if(!input.sourceName.IsNullOrWhiteSpace() && input.sourceName.Contains("DT-R", StringComparison.OrdinalIgnoreCase))
|
||||
|
||||
if (!input.sourceName.IsNullOrWhiteSpace() && (input.sourceName.Contains("DT-R", StringComparison.OrdinalIgnoreCase)))
|
||||
{
|
||||
Logger.Information($"【TaskCallback】 开始根据任务单查找电梯 {input.sourceName}");
|
||||
ElevagorInfoQuery q = new() { taskCode = input.taskCode };
|
||||
if (!input.sourceName.IsNullOrEmpty())
|
||||
{
|
||||
q = new() { taskCode = input.taskCode, sourceName = input.sourceName };
|
||||
}
|
||||
WmsElevatorH elevator = await FindElevatorFromPars(q);
|
||||
Logger.Information($"【TaskCallback】 根据任务单查找电梯结果 {JsonConvert.SerializeObject(elevator)}");
|
||||
if (!elevator?.device_id.IsNullOrEmpty() ?? false)
|
||||
{
|
||||
s_eleUseStatusDic[elevator.device_id] = (int)EnumElevatorUseStatus.空闲;
|
||||
// 根据disTask StartLocationId 起始库位关联电梯获取设备ID location_code.Continas("")
|
||||
var devName = s_elevatorMap[elevator.device_id]?.ToString();
|
||||
Logger.Information($"{devName.Match(@"\d+")}#梯,设备名称:{devName},开始进入关门流程");
|
||||
Logger.Information($"【TaskCallback】 {devName.Match(@"\d+")}#梯,设备名称:{devName},开始进入关门流程");
|
||||
int doorStatus = await _elevatorControlService.GetTagAsync(devName, ElevatorConsts.DoorStatus);
|
||||
Logger.Information($"设备:{devName},门状态:{doorStatus.ToEnum<EnumDoorStatus>().ToString()}");
|
||||
Logger.Information($"【TaskCallback】 设备:{devName},门状态:{doorStatus.ToEnum<EnumDoorStatus>().ToString()}");
|
||||
if (doorStatus.ToEnum<EnumDoorStatus>() != EnumDoorStatus.关门到位保持
|
||||
)//&& !disTask.endlocation_code.StartsWith("DT", StringComparison.OrdinalIgnoreCase)
|
||||
{
|
||||
_ = await _elevatorControlService.SendOpenCloseCmd(devName, 4); //向电梯发送前门关门指令
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Information($"【TaskCallback】 没找到电梯,不能解锁电梯状态 {JsonConvert.SerializeObject(elevator)}");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Information($"【TaskCallback】sourceName不符合条件 {input.sourceName}");
|
||||
}
|
||||
|
||||
|
||||
@@ -503,8 +521,8 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Error("任务状态上报出现错误", ex);
|
||||
Logger.Error("任务状态上报错误堆栈信息", ex.StackTrace);
|
||||
Logger.Error("【TaskCallback】 任务状态上报出现错误", ex);
|
||||
Logger.Error("【TaskCallback】 任务状态上报错误堆栈信息", ex.StackTrace);
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, "请重试!");
|
||||
throw;
|
||||
}
|
||||
@@ -526,13 +544,15 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
try
|
||||
{
|
||||
Logger.Information($"【ElevatorConfirm】 接收到WCS申请进出电梯信号 接收参数:{JsonConvert.SerializeObject(input)}");
|
||||
List<WmsElevatorH> eles = await _db.Queryable<WmsElevatorH>().LeftJoin<WmsElevatorD>((a, b) => a.id == b.bill_id)
|
||||
.LeftJoin<WmsDistaskH>((a, b, c) => b.location_id == c.startlocation_id)
|
||||
.Where((a, b, c) => c.startlocation_code == input.sourceName && c.bill_code == input.taskCode)
|
||||
.ToListAsync();
|
||||
}
|
||||
catch (Exception)
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Error("【ElevatorConfirm】 申请进出电梯信号错误", ex);
|
||||
return await ToApiResult(HttpStatusCode.InternalServerError, "请重试!");
|
||||
throw;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user