新增日志归类,将日志写入到指定的文件中
This commit is contained in:
@@ -39,7 +39,7 @@ namespace Tnb.WarehouseMgr
|
||||
/// <summary>
|
||||
/// 库房业务类(出入库)
|
||||
/// </summary>
|
||||
public class WareHouseService : BaseWareHouseService, IWareHouseService
|
||||
public class WareHouseService : BaseWareHouseService<WareHouseService>, IWareHouseService
|
||||
{
|
||||
private readonly ISqlSugarClient _db;
|
||||
private readonly IDictionaryDataService _dictionaryDataService;
|
||||
@@ -352,11 +352,13 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
//执行电梯任务
|
||||
var elevatorTasks = disTasks.Where(it => it.area_code.Contains("ELE", StringComparison.OrdinalIgnoreCase)).ToList();
|
||||
Log.Information($"当前电梯任务数:{elevatorTasks?.Count ?? 0}");
|
||||
Log.Information("准备执行电梯任务");
|
||||
|
||||
if (elevatorTasks?.Count > 0)
|
||||
{
|
||||
Log.Information("执行电梯任务");
|
||||
Logger.Information($"当前电梯任务数:{elevatorTasks?.Count ?? 0}");
|
||||
Logger.Information("准备执行电梯任务");
|
||||
Logger.Information("执行电梯任务");
|
||||
|
||||
foreach (var elevatorTask in elevatorTasks)
|
||||
{
|
||||
await ExecuteTargetFloorTask(elevatorTask);
|
||||
@@ -378,7 +380,7 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error("生成预任务执行时出现错误", ex);
|
||||
Logger.Error("生成预任务执行时出现错误", ex);
|
||||
await db.Ado.RollbackTranAsync();
|
||||
throw;
|
||||
}
|
||||
@@ -394,7 +396,7 @@ namespace Tnb.WarehouseMgr
|
||||
/// <returns></returns>
|
||||
private async Task CallingLanding(List<(string endlocation_code, string device_id, string id, string floorNO)> endLocCodes)
|
||||
{
|
||||
Log.Information($"开始呼梯操作.............");
|
||||
Logger.Information($"开始呼梯操作.............");
|
||||
try
|
||||
{
|
||||
var item = endLocCodes.FirstOrDefault();
|
||||
@@ -402,7 +404,7 @@ namespace Tnb.WarehouseMgr
|
||||
var devName = _eleCtlCfg.DevName;
|
||||
{
|
||||
var agvStatus = await _elevatorControlService.GetTagAsync(devName, ElevatorConsts.AGVControl);
|
||||
Log.Information($"当前Agv状态:{agvStatus.ToEnum<EnumAgvStatus>().ToString()}");
|
||||
Logger.Information($"当前Agv状态:{agvStatus.ToEnum<EnumAgvStatus>().ToString()}");
|
||||
|
||||
//判断当前设备是否为运行状态,不是则进入Agv电梯控制状态
|
||||
if (agvStatus.ToEnum<EnumAgvStatus>() != EnumAgvStatus.AGV运行状态)
|
||||
@@ -415,11 +417,11 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
foreach (var (_, devId, disTaskId, floorNO) in endLocCodes)
|
||||
{
|
||||
Log.Information($"任务开始目标楼层为:{floorNO}");
|
||||
Logger.Information($"任务开始目标楼层为:{floorNO}");
|
||||
|
||||
var floorN = await GetRealFloor(floorNO.ParseToInt());
|
||||
|
||||
Log.Information($"实际目标楼层为:{floorN}");
|
||||
Logger.Information($"实际目标楼层为:{floorN}");
|
||||
|
||||
WmsElevatorUnexecute elevatorQueueItem = new()
|
||||
{
|
||||
@@ -431,7 +433,7 @@ namespace Tnb.WarehouseMgr
|
||||
create_id = _userManager.UserId,
|
||||
create_time = DateTime.Now
|
||||
};
|
||||
var elevatorQueue = await _db.Queryable<WmsElevatorUnexecute>().Where(it => it.elevator_id == devId && it.task_status == "执行中").ToListAsync();
|
||||
var elevatorQueue = await _db.Queryable<WmsElevatorUnexecute>().Where(it => it.distask_id == disTaskId && it.task_status == "执行中").ToListAsync();
|
||||
if ((elevatorQueue.IsNull() || elevatorQueue.Count < 1) && floorNO.ParseToInt() != curFloorNo)
|
||||
{
|
||||
|
||||
@@ -439,7 +441,7 @@ namespace Tnb.WarehouseMgr
|
||||
var callLiftRes = await _elevatorControlService.CallLift(devName, floorN, CancellationToken.None);
|
||||
string successful = "成功", fail = "失败";
|
||||
var callLiftResult = callLiftRes ? successful : fail;
|
||||
Log.Information($"呼梯结果:{callLiftResult}");
|
||||
Logger.Information($"呼梯结果:{callLiftResult}");
|
||||
}
|
||||
|
||||
//如果当前电梯有任务在做,将当前呼梯任务放入待执行队列
|
||||
@@ -450,11 +452,11 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error("呼梯操作错误", ex);
|
||||
Logger.Error("呼梯操作错误", ex);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 执行到目标楼层电梯任务
|
||||
/// </summary>
|
||||
@@ -463,48 +465,52 @@ namespace Tnb.WarehouseMgr
|
||||
private async Task ExecuteTargetFloorTask(WmsDistaskH disTask)
|
||||
{
|
||||
//收到放货确认通知,向电梯发送到3楼的指令
|
||||
Log.Information($"开始执行电梯任务,任务ID:{disTask.id}");
|
||||
Logger.Information($"开始执行电梯任务,任务ID:{disTask.id}");
|
||||
try
|
||||
{
|
||||
var elevatorQueueItem = await _db.Queryable<WmsElevatorUnexecute>().FirstAsync(it => it.task_status == "执行中");
|
||||
/* var elevatorQueueItem = await _db.Queryable<WmsElevatorUnexecute>().FirstAsync(it => it.task_status == "执行中");
|
||||
Log.Information($"是否存在电梯任务项:{elevatorQueueItem != null}");
|
||||
if (elevatorQueueItem != null)
|
||||
*/ //if (elevatorQueueItem != null)
|
||||
{
|
||||
//var disTask = disTasks.Find(x => x.id == elevatorQueueItem.distask_id);
|
||||
//if (disTask?.status == WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID)
|
||||
{
|
||||
var doorStatus = -1;
|
||||
var closeDoorRes = await _elevatorControlService.SendOpenCloseCmd(elevatorQueueItem.elevator_code, 4); //向电梯发送前门关门指令
|
||||
Log.Information($"关门结果:{closeDoorRes}");
|
||||
var closeDoorRes = await _elevatorControlService.SendOpenCloseCmd(_eleCtlCfg.DevName, 4); //向电梯发送前门关门指令
|
||||
Logger.Information($"关门结果:{closeDoorRes}");
|
||||
do
|
||||
{
|
||||
doorStatus = await _elevatorControlService.GetTagAsync(elevatorQueueItem.elevator_code, ElevatorConsts.DoorStatus);
|
||||
doorStatus = await _elevatorControlService.GetTagAsync(_eleCtlCfg.DevName, ElevatorConsts.DoorStatus);
|
||||
await Task.Delay(2000);
|
||||
} while (doorStatus != 4);
|
||||
Log.Information($"当前门状态:{doorStatus}");
|
||||
Logger.Information($"当前门状态:{doorStatus}");
|
||||
|
||||
var floor = await GetRealFloor(disTask.end_floor.ParseToInt());
|
||||
Log.Information($"目标楼层:{floor}");
|
||||
|
||||
Logger.Information($"目标楼层:{floor}");
|
||||
|
||||
//发送到目标楼的指令
|
||||
var reuslt = await _elevatorControlService.WriteTagAsync(elevatorQueueItem.elevator_code, ElevatorConsts.FloorExecute, floor);
|
||||
var reuslt = await _elevatorControlService.WriteTagAsync(_eleCtlCfg.DevName, ElevatorConsts.FloorExecute, floor);
|
||||
//电梯任务手动执行任务状态上报
|
||||
(int sysStatus, int runStatus, int floorNo, int doorStatus, int agvStatus) tuple = (-1, -1, -1, -1, -1);
|
||||
|
||||
do
|
||||
{
|
||||
tuple = await _elevatorControlService.GetElevatorStatus(elevatorQueueItem.elevator_code, CancellationToken.None);
|
||||
tuple = await _elevatorControlService.GetElevatorStatus(_eleCtlCfg.DevName, CancellationToken.None);
|
||||
await Task.Delay(2000);
|
||||
} while (tuple.sysStatus != 3 && tuple.runStatus != 0);
|
||||
|
||||
Log.Information($"sysStatus:{tuple.sysStatus},runStatus:{tuple.runStatus},floorNo:{tuple.floorNo},disTask.end_floor={disTask.end_floor}");
|
||||
Logger.Information($"sysStatus:{tuple.sysStatus},runStatus:{tuple.runStatus},floorNo:{tuple.floorNo},disTask.end_floor={disTask.end_floor}");
|
||||
|
||||
if (tuple.sysStatus.ToEnum<EnumSysStatus>() == EnumSysStatus.正常状态 && tuple.runStatus.ToEnum<EnumRunStatus>() == EnumRunStatus.停梯)
|
||||
{
|
||||
Log.Information($"disTask.require_id={disTask.require_id}");
|
||||
|
||||
List<string> disTaskIds = new() { disTask.id };
|
||||
Log.Information($"disTaskIds={string.Join(",", disTaskIds)}");
|
||||
TaskExecuteAfterUpInput teaUpInput = new() { disTaskIds = disTaskIds };
|
||||
await TaskExecuteAfter(teaUpInput);
|
||||
|
||||
TaskCompleUpInput tcUpInput = new() { disTaskIds = disTaskIds };
|
||||
await TaskComplate(tcUpInput);
|
||||
}
|
||||
@@ -513,7 +519,7 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error("执行到目标楼层电梯任务失败", ex);
|
||||
Logger.Error("执行到目标楼层电梯任务失败", ex);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
@@ -538,7 +544,7 @@ namespace Tnb.WarehouseMgr
|
||||
targetName = it.endpoint_code,
|
||||
containerCode = it.carry_code,
|
||||
}));
|
||||
Log.Information($"请求地址:{url}");
|
||||
Logger.Information($"请求地址:{url}");
|
||||
foreach (var (k, v) in taskChainCodeDic)
|
||||
{
|
||||
dynamic reqBody = new ExpandoObject();
|
||||
@@ -547,14 +553,14 @@ namespace Tnb.WarehouseMgr
|
||||
reqBody.sequential = false;
|
||||
reqBody.taskChainPriority = 0;
|
||||
reqBody.taskList = v;
|
||||
Log.Information($"请求参数:{JsonConvert.SerializeObject(reqBody)}");
|
||||
Logger.Information($"请求参数:{JsonConvert.SerializeObject(reqBody)}");
|
||||
var respBody = await HttpClientHelper.PostStreamAsync(url, reqBody, token);
|
||||
Log.Information($"调用Agv接口响应结果:{respBody}");
|
||||
Logger.Information($"调用Agv接口响应结果:{respBody}");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error("agv调度失败异常", ex);
|
||||
Logger.Error("agv调度失败异常", ex);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
@@ -658,11 +664,13 @@ namespace Tnb.WarehouseMgr
|
||||
await _db.Updateable<WmsPretaskH>().SetColumns(it => new WmsPretaskH { status = WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID }).Where(it => preTaskIds.Contains(it.id)).ExecuteCommandAsync();
|
||||
|
||||
//更新电梯任务数量
|
||||
var eles = await _db.Queryable<WmsElevatorH>().Where(it => disTasks.Select(x => x.area_code).Contains(it.area_code)).ToListAsync();
|
||||
if (eles?.Count > 0)
|
||||
await _db.Updateable(eles).ReSetValue(it => it.task_nums--).ExecuteCommandAsync();
|
||||
|
||||
/* var eles = await _db.Queryable<WmsElevatorH>().Where(it => disTasks.Select(x => x.area_code).Contains(it.area_code)).ToListAsync();
|
||||
if (eles?.Count > 0)
|
||||
await _db.Updateable(eles).ReSetValue(it => it.task_nums--).ExecuteCommandAsync();
|
||||
*/
|
||||
//更新载具,锁定状态为未锁定,更新载具的库位当前任务的目标库位
|
||||
Logger.Information("更新载具及库位准备中.....");
|
||||
|
||||
var multiList = disTasks.Select(it => (it.carry_id, it.carry_status, it.endlocation_id, it.endlocation_code)).ToList();
|
||||
var locWhIdMap = await _db.Queryable<BasLocation>().Where(it => multiList.Select(x => x.endlocation_id).Contains(it.id)).ToDictionaryAsync(it => it.id, it => it.wh_id);
|
||||
List<WmsCarryH> carryIts = new();
|
||||
@@ -677,9 +685,10 @@ namespace Tnb.WarehouseMgr
|
||||
location_id = multiList[i].endlocation_id,
|
||||
location_code = multiList[i].endlocation_code
|
||||
};
|
||||
var endLocId = multiList[i].endlocation_id;
|
||||
WmsCarryCode carryCode = new()
|
||||
{
|
||||
warehouse_id = locWhIdMap[multiList[i].endlocation_id].ToString(),
|
||||
warehouse_id = locWhIdMap.ContainsKey(endLocId) ? locWhIdMap[endLocId].ToString() : "",
|
||||
location_id = multiList[i].endlocation_id,
|
||||
location_code = multiList[i].endlocation_code
|
||||
};
|
||||
@@ -697,25 +706,37 @@ namespace Tnb.WarehouseMgr
|
||||
|
||||
locIts.Add(loc);
|
||||
}
|
||||
Log.Information("更新载具及库位开始.....");
|
||||
Logger.Information("更新载具及库位开始.....");
|
||||
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(locIts).UpdateColumns(it => new { it.is_use, it.is_lock }).ExecuteCommandAsync();
|
||||
Log.Information("更新载具及库位结束.....");
|
||||
Log.Information($"_userManager.LoginType={_userManager.LoginType}");
|
||||
//更新业务主表的单据状态
|
||||
Logger.Information("更新载具及库位结束.....");
|
||||
Logger.Information($"_userManager==null:{_userManager == null}");
|
||||
/* var loginType= _userManager?.LoginType ?? "web";
|
||||
Log.Information($"_userManager.LoginType={loginType}");
|
||||
*/ //更新业务主表的单据状态
|
||||
foreach (var dt in disTasks)
|
||||
{
|
||||
Logger.Information("开始业务回更");
|
||||
var disTaskCodes = await _db.Queryable<WmsDistaskCode>().Where(it => it.bill_id == dt.id).ToListAsync();
|
||||
var upInput = new WareHouseUpInput { bizTypeId = dt.biz_type, requireId = dt.require_id!, distaskCodes = disTaskCodes, carryIds = disTasks.Select(x => x.carry_id).ToList() };
|
||||
|
||||
upInput.loginType = !_userManager.LoginType.IsNullOrEmpty() ? "app" : "web";
|
||||
Log.Information($"upInput.loginType={upInput.loginType}");
|
||||
/*if (!_userManager?.LoginType.IsNullOrEmpty() ?? false)
|
||||
{
|
||||
upInput.loginType = "app";
|
||||
}
|
||||
else
|
||||
{
|
||||
upInput.loginType = "web";
|
||||
}*/
|
||||
Logger.Information("loginType赋值前");
|
||||
upInput.loginType = "web";//(!string.IsNullOrEmpty(_userManager?.LoginType) ? "app" : "web") ?? "web";
|
||||
Logger.Information($"upInput.loginType={upInput.loginType}");
|
||||
if (dt.is_sign == 1 && dt.chain_type == "3")
|
||||
{
|
||||
Log.Information("执行业务回更操作.....");
|
||||
Logger.Information("执行业务回更操作.....");
|
||||
await DoUpdate(upInput);
|
||||
}
|
||||
}
|
||||
@@ -724,8 +745,8 @@ namespace Tnb.WarehouseMgr
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error($"任务结束失败", ex);
|
||||
Log.Error($"任务结束失败堆栈异常", ex.StackTrace);
|
||||
Logger.Error($"任务结束失败", ex);
|
||||
Log .Error($"任务结束失败堆栈异常", ex.StackTrace);
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
throw;
|
||||
}
|
||||
@@ -792,11 +813,13 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
row = await _db.Insertable(preTaskCodes).ExecuteCommandAsync();
|
||||
}
|
||||
var eleP = preTasks.Find(x => x.area_code.Contains("ELE"));
|
||||
if (eleP != null)
|
||||
{
|
||||
row = await _db.Updateable<WmsElevatorH>().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => it.area_code == eleP.area_code).ExecuteCommandAsync();
|
||||
}
|
||||
//先注释 by ly on 20231025
|
||||
/* var eleP = preTasks.Find(x => x.area_code.Contains("ELE"));
|
||||
if (eleP != null)
|
||||
{
|
||||
row = await _db.Updateable<WmsElevatorH>().SetColumns(it => it.task_nums == it.task_nums + 1).Where(it => it.area_code == eleP.area_code).ExecuteCommandAsync();
|
||||
}
|
||||
*/
|
||||
return row > 0;
|
||||
}
|
||||
/// <summary>
|
||||
@@ -847,7 +870,7 @@ namespace Tnb.WarehouseMgr
|
||||
[NonAction]
|
||||
public async Task<List<WmsPointH>> PathAlgorithms(string pStartId, string pEndId)
|
||||
{
|
||||
var roads = await _db.Queryable<WmsRoad>().ToListAsync();
|
||||
var roads = await _db.Queryable<WmsRoad>().Where(it => it.status == 1).ToListAsync();
|
||||
var points = await LocPathCalcAlgorithms(pStartId, pEndId, roads);
|
||||
try
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user