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

This commit is contained in:
2024-09-19 15:28:20 +08:00
6 changed files with 72 additions and 48 deletions

View File

@@ -708,7 +708,6 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = "1", Size = 1, passage = startlocation.passage, AvoidBusyPassage = true, Region_id = WmsWareHouseConst.REGION_Purchase_ID, PolicyCode = WmsWareHouseConst.POLICY_YCLINSTOCK }; InStockStrategyQuery inStockStrategyInput = new() { warehouse_id = "1", Size = 1, passage = startlocation.passage, AvoidBusyPassage = true, Region_id = WmsWareHouseConst.REGION_Purchase_ID, PolicyCode = WmsWareHouseConst.POLICY_YCLINSTOCK };
List<BasLocation> endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput); List<BasLocation> endLocations = await _wareHouseService.InStockStrategy(inStockStrategyInput);
if (endLocations.Count() == 0) if (endLocations.Count() == 0)
{ {
LoggerYCLInternalTransfer.LogWarning($"【YCLInternalTransfer】 当前巷道没有空库位可以入库或者有任务正在执行"); LoggerYCLInternalTransfer.LogWarning($"【YCLInternalTransfer】 当前巷道没有空库位可以入库或者有任务正在执行");
continue; continue;

View File

@@ -5,7 +5,7 @@ using SqlSugar;
namespace Tnb.WarehouseMgr.Entities.Entity; namespace Tnb.WarehouseMgr.Entities.Entity;
/// <summary> /// <summary>
/// 委外订单表子表 /// 委外收货表子表
/// </summary> /// </summary>
[SugarTable("wms_outsource_d")] [SugarTable("wms_outsource_d")]
public partial class WmsOutsourceD : BaseEntity<string> public partial class WmsOutsourceD : BaseEntity<string>

View File

@@ -145,8 +145,8 @@ namespace Tnb.WarehouseMgr
return _Logger; return _Logger;
} }
} }
protected string _LoggerAgvElevatorTaskFileName = ""; protected static string _LoggerAgvElevatorTaskFileName = "";
protected ILogger _LoggerAgvElevatorTask; protected static ILogger _LoggerAgvElevatorTask;
protected ILogger LoggerAgvElevatorTask protected ILogger LoggerAgvElevatorTask
{ {
get get

View File

@@ -403,7 +403,7 @@ namespace Tnb.WarehouseMgr
Logger.Information($"【UnloadConfirm】 发送电梯{devName}前门开门指令"); Logger.Information($"【UnloadConfirm】 发送电梯{devName}前门开门指令");
_ = await _elevatorControlService.SendOpenCloseCmd(devName, 3); //发送电梯前门开门指令 _ = await _elevatorControlService.SendOpenCloseCmd(devName, 3); //发送电梯前门开门指令
} }
string innerpos = "";
// 3 4号梯需要电梯是当前楼层开门状态就能进 // 3 4号梯需要电梯是当前楼层开门状态就能进
bool canEnter = false; bool canEnter = false;
if (devName == "Elevator3" || devName == "Elevator4") if (devName == "Elevator3" || devName == "Elevator4")
@@ -431,18 +431,14 @@ namespace Tnb.WarehouseMgr
Logger.LogInformation($"电梯内{devName}已有两托货!"); Logger.LogInformation($"电梯内{devName}已有两托货!");
return await ToApiResult(HttpStatusCode.InternalServerError, $"电梯{devName}内已有两托货!"); return await ToApiResult(HttpStatusCode.InternalServerError, $"电梯{devName}内已有两托货!");
} }
WmsElevatorH wmsElevatorH = await _db.Queryable<WmsElevatorH>().Where(r => r.elevator_id == elevator.device_id).FirstAsync();
WmsElevatorcacheArea wmsElevatorcacheArea = await _db.Queryable<WmsElevatorcacheArea>().Where(r => r.location_id == dis.startlocation_id).FirstAsync(); WmsElevatorcacheArea wmsElevatorcacheArea = await _db.Queryable<WmsElevatorcacheArea>().Where(r => r.location_id == dis.startlocation_id).FirstAsync();
// 如果当前所放梯内货位已占用 // 如果当前所放梯内货位已占用
if (wmsElevatorH.innerpos.Contains(wmsElevatorcacheArea.name)) if (elevator.innerpos.Contains(wmsElevatorcacheArea.name))
{ {
Logger.LogInformation($"电梯{devName}内托盘{dis.carry_code}当前准备放置的货位已有货!"); Logger.LogInformation($"电梯{devName}内托盘{dis.carry_code}当前准备放置的货位已有货!");
return await ToApiResult(HttpStatusCode.InternalServerError, $"电梯{devName}内托盘{dis.carry_code}当前准备放置的货位已有货!"); return await ToApiResult(HttpStatusCode.InternalServerError, $"电梯{devName}内托盘{dis.carry_code}当前准备放置的货位已有货!");
} }
innerpos = wmsElevatorH.innerpos + "," + wmsElevatorcacheArea.name;
canEnter = true; canEnter = true;
} }
@@ -452,8 +448,7 @@ namespace Tnb.WarehouseMgr
await _db.Updateable<WmsElevatorH>().SetColumns(r => new WmsElevatorH await _db.Updateable<WmsElevatorH>().SetColumns(r => new WmsElevatorH
{ {
is_use = (int)EnumElevatorUseStatus., is_use = (int)EnumElevatorUseStatus.,
use_tasks = $"','{r.use_tasks}".Trim(','), use_tasks = $"','{r.use_tasks}".Trim(',')
innerpos = innerpos.Trim(',')
}).Where(r => r.elevator_id == elevator.device_id).ExecuteCommandAsync(); }).Where(r => r.elevator_id == elevator.device_id).ExecuteCommandAsync();
s_eleUseStatusDic[elevator.device_id] = (int)EnumElevatorUseStatus.; s_eleUseStatusDic[elevator.device_id] = (int)EnumElevatorUseStatus.;
Logger.Information($"【UnloadConfirm】 {devName}放货成功 状态变更为占用 {s_eleUseStatusDic.GetHashCode()} {s_eleUseStatusDic[elevator.device_id]}"); Logger.Information($"【UnloadConfirm】 {devName}放货成功 状态变更为占用 {s_eleUseStatusDic.GetHashCode()} {s_eleUseStatusDic[elevator.device_id]}");
@@ -953,6 +948,24 @@ namespace Tnb.WarehouseMgr
await _wareHouseService.AgvelevatorTimerTaskExceptionHandle(); await _wareHouseService.AgvelevatorTimerTaskExceptionHandle();
} }
} }
else if(disTask.area_code == "FC")
{
WmsElevatorcacheArea wmsElevatorcacheArea = await _db.Queryable<WmsElevatorcacheArea>().Where(r => r.location_id == disTask.startlocation_id).FirstAsync();
ElevagorInfoQuery q = new() { taskCode = input.taskCode, sourceName = input.sourceName };
WmsElevatorH elevator = await FindElevatorFromPars(q);
if (elevator.IsNull())
{
Logger.Error($"【UnloadConfirm】 根据参数,sourceName:{input.sourceName},taskCode:{input.taskCode},未找到匹配的电梯任务");
}
string innerpos = elevator.innerpos + "," + wmsElevatorcacheArea.name;
await _db.Updateable<WmsElevatorH>().SetColumns(r => new WmsElevatorH
{
is_use = (int)EnumElevatorUseStatus.,
use_tasks = $"','{r.use_tasks}".Trim(','),
innerpos = innerpos.Trim(',')
}).Where(r => r.elevator_id == elevator.device_id).ExecuteCommandAsync();
}
Logger.Information($"【TaskCallback】 Agv放货完成,任务编号:{string.Join(",", disTasks.Select(x => x.bill_code))}"); Logger.Information($"【TaskCallback】 Agv放货完成,任务编号:{string.Join(",", disTasks.Select(x => x.bill_code))}");
} }
@@ -960,8 +973,8 @@ namespace Tnb.WarehouseMgr
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.Error("【TaskCallback】 任务状态上报出现错误", ex.Message); Logger.Error($"【TaskCallback】 任务状态上报出现错误{ex.Message}");
Logger.Error("【TaskCallback】 任务状态上报错误堆栈信息", ex.StackTrace); Logger.Error($"【TaskCallback】 任务状态上报错误堆栈信息{ex.Message}");
return await ToApiResult(HttpStatusCode.InternalServerError, "请重试!" + ex.Message); return await ToApiResult(HttpStatusCode.InternalServerError, "请重试!" + ex.Message);
throw; throw;
} }

View File

@@ -303,13 +303,6 @@ namespace Tnb.WarehouseMgr
.Select((a, b) => b.passage).ToListAsync(); .Select((a, b) => b.passage).ToListAsync();
string sss = db.Queryable<WmsPretaskH>()
.InnerJoin<BasLocation>((a, b) =>
(a.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID && a.status != WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID)
&& (b.id == a.startlocation_id || b.id == a.endlocation_id))
.Where((a, b) => b.wh_id == input.warehouse_id)
.Where((a, b) => b.is_type == ((int)EnumLocationType.).ToString())
.WhereIF(!string.IsNullOrEmpty(input.Region_id), (a, b) => b.region_id == input.Region_id).ToSqlString();
} }
Expression<Func<BasLocation, bool>> whereExp = Expressionable.Create<BasLocation>() Expression<Func<BasLocation, bool>> whereExp = Expressionable.Create<BasLocation>()
@@ -1085,14 +1078,14 @@ namespace Tnb.WarehouseMgr
getdic.Add("ZS-C13-2", new string[] { "hxjC", "A14AGV允许入满箱", "true" }); getdic.Add("ZS-C13-2", new string[] { "hxjC", "A14AGV允许入满箱", "true" });
getdic.Add("ZS-C14-2", new string[] { "hxjC", "A1AGV允许入满箱", "true" }); getdic.Add("ZS-C14-2", new string[] { "hxjC", "A1AGV允许入满箱", "true" });
getdic.Add("ZS-A01-2", new string[] { "hxjA", "A3AGV允许入满箱", "true" }); //getdic.Add("ZS-A01-2", new string[] { "hxjA", "A3AGV允许入满箱", "true" });
getdic.Add("ZS-A02-2", new string[] { "hxjA", "A4AGV允许入满箱", "true" }); //getdic.Add("ZS-A02-2", new string[] { "hxjA", "A4AGV允许入满箱", "true" });
getdic.Add("ZS-A03-2", new string[] { "hxjA", "A5AGV允许入满箱", "true" }); //getdic.Add("ZS-A03-2", new string[] { "hxjA", "A5AGV允许入满箱", "true" });
getdic.Add("ZS-D06-2", new string[] { "hxjA", "A6AGV允许入满箱", "true" }); //getdic.Add("ZS-D06-2", new string[] { "hxjA", "A6AGV允许入满箱", "true" });
getdic.Add("ZS-A05-2", new string[] { "hxjA", "A7AGV允许入满箱", "true" }); //getdic.Add("ZS-A05-2", new string[] { "hxjA", "A7AGV允许入满箱", "true" });
getdic.Add("ZS-A06-2", new string[] { "hxjA", "A8AGV允许入满箱", "true" }); //getdic.Add("ZS-A06-2", new string[] { "hxjA", "A8AGV允许入满箱", "true" });
getdic.Add("ZS-A07-2", new string[] { "hxjA", "A9AGV允许入满箱", "true" }); //getdic.Add("ZS-A07-2", new string[] { "hxjA", "A9AGV允许入满箱", "true" });
getdic.Add("ZS-A08-2", new string[] { "hxjA", "A10AGV允许入满箱", "true" }); //getdic.Add("ZS-A08-2", new string[] { "hxjA", "A10AGV允许入满箱", "true" });
getdic.Add("ZS-A09-2", new string[] { "hxjA", "A11AGV允许入满箱", "true" }); getdic.Add("ZS-A09-2", new string[] { "hxjA", "A11AGV允许入满箱", "true" });
getdic.Add("ZS-A10-2", new string[] { "hxjA", "A12AGV允许入满箱", "true" }); getdic.Add("ZS-A10-2", new string[] { "hxjA", "A12AGV允许入满箱", "true" });
getdic.Add("ZS-A11-2", new string[] { "hxjA", "A13AGV允许入满箱", "true" }); getdic.Add("ZS-A11-2", new string[] { "hxjA", "A13AGV允许入满箱", "true" });
@@ -1229,14 +1222,14 @@ namespace Tnb.WarehouseMgr
getdic.Add("ZS-C13-2", new string[] { "hxjC", "A14AGV允许入满箱", "true" }); getdic.Add("ZS-C13-2", new string[] { "hxjC", "A14AGV允许入满箱", "true" });
getdic.Add("ZS-C14-2", new string[] { "hxjC", "A1AGV允许入满箱", "true" }); getdic.Add("ZS-C14-2", new string[] { "hxjC", "A1AGV允许入满箱", "true" });
getdic.Add("ZS-A01-2", new string[] { "hxjA", "A3AGV允许入满箱", "true" }); //getdic.Add("ZS-A01-2", new string[] { "hxjA", "A3AGV允许入满箱", "true" });
getdic.Add("ZS-A02-2", new string[] { "hxjA", "A4AGV允许入满箱", "true" }); //getdic.Add("ZS-A02-2", new string[] { "hxjA", "A4AGV允许入满箱", "true" });
getdic.Add("ZS-A03-2", new string[] { "hxjA", "A5AGV允许入满箱", "true" }); //getdic.Add("ZS-A03-2", new string[] { "hxjA", "A5AGV允许入满箱", "true" });
getdic.Add("ZS-D06-2", new string[] { "hxjA", "A6AGV允许入满箱", "true" }); //getdic.Add("ZS-D06-2", new string[] { "hxjA", "A6AGV允许入满箱", "true" });
getdic.Add("ZS-A05-2", new string[] { "hxjA", "A7AGV允许入满箱", "true" }); //getdic.Add("ZS-A05-2", new string[] { "hxjA", "A7AGV允许入满箱", "true" });
getdic.Add("ZS-A06-2", new string[] { "hxjA", "A8AGV允许入满箱", "true" }); //getdic.Add("ZS-A06-2", new string[] { "hxjA", "A8AGV允许入满箱", "true" });
getdic.Add("ZS-A07-2", new string[] { "hxjA", "A9AGV允许入满箱", "true" }); //getdic.Add("ZS-A07-2", new string[] { "hxjA", "A9AGV允许入满箱", "true" });
getdic.Add("ZS-A08-2", new string[] { "hxjA", "A10AGV允许入满箱", "true" }); //getdic.Add("ZS-A08-2", new string[] { "hxjA", "A10AGV允许入满箱", "true" });
getdic.Add("ZS-A09-2", new string[] { "hxjA", "A11AGV允许入满箱", "true" }); getdic.Add("ZS-A09-2", new string[] { "hxjA", "A11AGV允许入满箱", "true" });
getdic.Add("ZS-A10-2", new string[] { "hxjA", "A12AGV允许入满箱", "true" }); getdic.Add("ZS-A10-2", new string[] { "hxjA", "A12AGV允许入满箱", "true" });
getdic.Add("ZS-A11-2", new string[] { "hxjA", "A13AGV允许入满箱", "true" }); getdic.Add("ZS-A11-2", new string[] { "hxjA", "A13AGV允许入满箱", "true" });
@@ -2746,8 +2739,8 @@ namespace Tnb.WarehouseMgr
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.LogWarning("执行到目标楼层电梯任务失败", ex.Message); Logger.LogWarning($"执行到目标楼层电梯任务失败{ex.Message}");
Logger.LogWarning("执行到目标楼层电梯任务失败", ex.StackTrace); Logger.LogWarning($"执行到目标楼层电梯任务失败{ex.StackTrace}");
throw; throw;
} }
} }
@@ -3165,13 +3158,13 @@ namespace Tnb.WarehouseMgr
work_station = "" work_station = ""
}).Where(r => r.id == dt.carry_id).ExecuteCommandAsync(); }).Where(r => r.id == dt.carry_id).ExecuteCommandAsync();
await QTRK2BIP(dt, db); //await QTRK2BIP(dt, db);
// require_code是任务单 // require_code是任务单
//string mo_task_code = dt.require_code; //string mo_task_code = dt.require_code;
} }
else if (dt.biz_type == "erp_qtrk") else if (dt.biz_type == "erp_qtrk")
{ {
await QTRK2BIP(dt, db); //await QTRK2BIP(dt, db);
} }
#endregion #endregion
@@ -4756,11 +4749,12 @@ namespace Tnb.WarehouseMgr
else else
{ {
// 仅切换电梯后 如果一托任务在等第二托时要做特殊处理 // 仅切换电梯后 如果一托任务在等第二托时要做特殊处理
if (wmsElevatorH.task_nums == 1) //if (wmsElevatorH.task_nums == 1)
{ //{
await ChangeSelectedElevator(db_agvElevatorTaskExceptionHandles); // await ChangeSelectedElevator(db_agvElevatorTaskExceptionHandles);
} // elevatorSno = elevatorSno == "3" ? "4" : "3";
else //}
//else
{ {
// 剩余可放托数 // 剩余可放托数
await db_agvElevatorTaskExceptionHandles.Updateable<BasFactoryConfig>().SetColumns(r => r.value == floor3FirstSelectElevatorTasknums.value) await db_agvElevatorTaskExceptionHandles.Updateable<BasFactoryConfig>().SetColumns(r => r.value == floor3FirstSelectElevatorTasknums.value)

View File

@@ -28,6 +28,7 @@ using Tnb.WarehouseMgr.Interfaces;
using Tnb.ProductionMgr.Entities.Entity; using Tnb.ProductionMgr.Entities.Entity;
using Tnb.BasicData; using Tnb.BasicData;
using Tnb.WarehouseMgr.Entities.Entity; using Tnb.WarehouseMgr.Entities.Entity;
using Microsoft.Extensions.Logging;
namespace Tnb.WarehouseMgr namespace Tnb.WarehouseMgr
{ {
@@ -297,6 +298,14 @@ namespace Tnb.WarehouseMgr
// 采购入库 // 采购入库
if (instock.bill_type == WmsWareHouseConst.BILLTYPE_MATERIALINSTOCK_ID) if (instock.bill_type == WmsWareHouseConst.BILLTYPE_MATERIALINSTOCK_ID)
{ {
WmsPurchaseD wmsPurchaseD = await _db.Queryable<WmsPurchaseD>().SingleAsync(x => x.id == input.wmsDistaskH.source_id);
await _db.Updateable<WmsCarryCode>().SetColumns(r => new WmsCarryCode
{
auxprop_gys = wmsPurchaseD.auxprop_gys,
auxprop_xph = wmsPurchaseD.auxprop_xph
}).Where(r => r.carry_id == input.wmsDistaskH.carry_id).ExecuteCommandAsync();
if (instock.sync_status != WmsWareHouseConst.SYNC_STATUS_NONEEDSYNC) if (instock.sync_status != WmsWareHouseConst.SYNC_STATUS_NONEEDSYNC)
{ {
//如果是自动单据,需要回更上层系统 //如果是自动单据,需要回更上层系统
@@ -443,11 +452,18 @@ namespace Tnb.WarehouseMgr
// 委外入库 // 委外入库
else if (instock.bill_type == WmsWareHouseConst.BILLTYPE_OUTSOURCEINSTOCK_ID) else if (instock.bill_type == WmsWareHouseConst.BILLTYPE_OUTSOURCEINSTOCK_ID)
{ {
} }
// 调拨入库 // 调拨入库
else if (instock.bill_type == WmsWareHouseConst.BILLTYPE_RAWMATTRANSFERINSTOCK_ID) else if (instock.bill_type == WmsWareHouseConst.BILLTYPE_RAWMATTRANSFERINSTOCK_ID)
{ {
WmsRawmatTransferinstockD wmsRawmatTransferinstockD = await _db.Queryable<WmsRawmatTransferinstockD>().SingleAsync(x => x.id == input.wmsDistaskH.source_id);
await _db.Updateable<WmsCarryCode>().SetColumns(r => new WmsCarryCode
{
auxprop_gys = wmsRawmatTransferinstockD.auxprop_gys,
auxprop_xph = wmsRawmatTransferinstockD.auxprop_xph
}).Where(r => r.carry_id == input.wmsDistaskH.carry_id).ExecuteCommandAsync();
// List<WmsInstockD> allInstockDetails = await _db.Queryable<WmsInstockD>().Where(it => it.bill_id == input.requireId).ToListAsync(); // List<WmsInstockD> allInstockDetails = await _db.Queryable<WmsInstockD>().Where(it => it.bill_id == input.requireId).ToListAsync();
// //
// WmsTempCode wmsTempCode = await _db.Queryable<WmsCarryCode>() // WmsTempCode wmsTempCode = await _db.Queryable<WmsCarryCode>()
@@ -563,8 +579,10 @@ namespace Tnb.WarehouseMgr
await _db.Ado.CommitTranAsync(); await _db.Ado.CommitTranAsync();
} }
catch (Exception) catch (Exception ex)
{ {
Logger.LogWarning($"【WmsInStockService Modify】 {ex.Message}");
Logger.LogWarning($"【MaterialSign Modify】 {ex.StackTrace}");
await _db.Ado.RollbackTranAsync(); await _db.Ado.RollbackTranAsync();
throw; throw;
} }