This commit is contained in:
2024-06-13 10:28:22 +08:00
parent 89cfac6564
commit dd86185625
7 changed files with 1120 additions and 698 deletions

View File

@@ -76,6 +76,7 @@ namespace Tnb.WarehouseMgr
private readonly IRunService _runService;
public static SemaphoreSlim s_floor2CreatePretask = new(1);
public SemaphoreSlim s_taskCommonCreatePretask = new(1);
public Func<string, int, Task> AddUnExecuteTask { get; set; }
@@ -418,12 +419,13 @@ namespace Tnb.WarehouseMgr
getdic.Add("ZSSSXCTU01", new string[] { "YTCS", "AllowAgvEmptyOut_CS01" });
getdic.Add("ZSSSXCTU02", new string[] { "YTCS", "AllowAgvEmptyOut_CS03" });
#region
putdic.Add("ZS-C01-1", new string[] { "hxjC", "A2允许入空箱", });
getdic.Add("ZS-C01-2", new string[] { "hxjC", "A2允许取满箱" });
putdic.Add("ZS-C02-1", new string[] { "hxjC", "A3允许入空箱", });
getdic.Add("ZS-C02-2", new string[] { "hxjC", "A3允许取满箱" });
putdic.Add("ZS-C03-1", new string[] { "hxjC", "A4允许入空箱", });
getdic.Add("ZS-C03-2", new string[] { "hxjC", "A4允许取满箱" });
@@ -435,6 +437,69 @@ namespace Tnb.WarehouseMgr
putdic.Add("ZS-C06-1", new string[] { "hxjC", "A7允许入空箱", });
getdic.Add("ZS-C06-2", new string[] { "hxjC", "A7允许取满箱" });
putdic.Add("ZS-C07-1", new string[] { "hxjC", "A8允许入空箱", });
getdic.Add("ZS-C07-2", new string[] { "hxjC", "A8允许取满箱" });
putdic.Add("ZS-C08-1", new string[] { "hxjC", "A9允许入空箱", });
getdic.Add("ZS-C08-2", new string[] { "hxjC", "A9允许取满箱" });
putdic.Add("ZS-C09-1", new string[] { "hxjC", "A10允许入空箱", });
getdic.Add("ZS-C09-2", new string[] { "hxjC", "A10允许取满箱" });
putdic.Add("ZS-C10-1", new string[] { "hxjC", "A11允许入空箱", });
getdic.Add("ZS-C10-2", new string[] { "hxjC", "A11允许取满箱" });
putdic.Add("ZS-C11-1", new string[] { "hxjC", "A12允许入空箱", });
getdic.Add("ZS-C11-2", new string[] { "hxjC", "A12允许取满箱" });
putdic.Add("ZS-C12-1", new string[] { "hxjC", "A13允许入空箱", });
getdic.Add("ZS-C12-2", new string[] { "hxjC", "A13允许取满箱" });
putdic.Add("ZS-C13-1", new string[] { "hxjC", "A14允许入空箱", });
getdic.Add("ZS-C13-2", new string[] { "hxjC", "A14允许取满箱" });
putdic.Add("ZS-C14-1", new string[] { "hxjC", "A1允许入空箱", });
getdic.Add("ZS-C14-2", new string[] { "hxjC", "A1允许取满箱" });
putdic.Add("ZS-A01-1", new string[] { "hxjA", "A3允许入空箱", });
getdic.Add("ZS-A01-2", new string[] { "hxjA", "A3允许取满箱" });
putdic.Add("ZS-A02-1", new string[] { "hxjA", "A4允许入空箱", });
getdic.Add("ZS-A02-2", new string[] { "hxjA", "A4允许取满箱" });
putdic.Add("ZS-A03-1", new string[] { "hxjA", "A5允许入空箱", });
getdic.Add("ZS-A03-2", new string[] { "hxjA", "A5允许取满箱" });
putdic.Add("ZS-A04-1", new string[] { "hxjA", "A6允许入空箱", });
getdic.Add("ZS-A04-2", new string[] { "hxjA", "A6允许取满箱" });
putdic.Add("ZS-A05-1", new string[] { "hxjA", "A7允许入空箱", });
getdic.Add("ZS-A05-2", new string[] { "hxjA", "A7允许取满箱" });
putdic.Add("ZS-A06-1", new string[] { "hxjA", "A8允许入空箱", });
getdic.Add("ZS-A06-2", new string[] { "hxjA", "A8允许取满箱" });
putdic.Add("ZS-A07-1", new string[] { "hxjA", "A9允许入空箱", });
getdic.Add("ZS-A07-2", new string[] { "hxjA", "A9允许取满箱" });
putdic.Add("ZS-A08-1", new string[] { "hxjA", "A10允许入空箱", });
getdic.Add("ZS-A08-2", new string[] { "hxjA", "A10允许取满箱" });
putdic.Add("ZS-A09-1", new string[] { "hxjA", "A11允许入空箱", });
getdic.Add("ZS-A09-2", new string[] { "hxjA", "A11允许取满箱" });
putdic.Add("ZS-A10-1", new string[] { "hxjA", "A12允许入空箱", });
getdic.Add("ZS-A10-2", new string[] { "hxjA", "A12允许取满箱" });
putdic.Add("ZS-A11-1", new string[] { "hxjA", "A13允许入空箱", });
getdic.Add("ZS-A11-2", new string[] { "hxjA", "A13允许取满箱" });
putdic.Add("ZS-A12-1", new string[] { "hxjA", "A14允许入空箱", });
getdic.Add("ZS-A12-2", new string[] { "hxjA", "A14允许取满箱" });
#endregion
var strs = new string[] { };
if (action == "LOAD")//取货
@@ -548,7 +613,7 @@ namespace Tnb.WarehouseMgr
["TagName"] = strarr[1],
["Value"] = strarr[2],
};
Logger.Information($"SsxControlUNLOAD:{dicCommand}");
Logger.Information($"SsxControlUNLOAD:{JsonConvert.SerializeObject(dicCommand)}");
var str = await HttpClientHelper.GetRequestAsync(_eleCtlCfg.WriteTagUrl, dicCommand);
Logger.Information($"SsxControlUNLOAD:{str}");
}
@@ -560,7 +625,7 @@ namespace Tnb.WarehouseMgr
/// 二楼机械臂
/// </summary>
/// <returns></returns>
public async Task<bool> Floor2MechanicalComplete(WmsDistaskH disTask, string action)
public async Task Floor2MechanicalComplete(WmsDistaskH disTask, string action)
{
List<string> rackAreaPointsUp = new List<string>();
List<string> rackAreaPointsDown = new List<string>();
@@ -573,10 +638,10 @@ namespace Tnb.WarehouseMgr
try {
await _db.Ado.BeginTranAsync();
if (disTask.area_code == "E")
{
await _db.Ado.BeginTranAsync();
Logger.Information($"【二楼机械臂Floor2MechanicalComplete】收到到货完成信号 传入参数: {disTask.bill_code} {action}");
SqlSugarClient db = _db.CopyNew();
@@ -589,7 +654,7 @@ namespace Tnb.WarehouseMgr
if (WmsMechanicalArmHs.Count() == 0)
{
Logger.Information($"【二楼机械臂Floor2MechanicalComplete】 任务执行终点{disTask.endpoint_code} 与料架区的点位不匹配");
return false;
throw new Exception($"【二楼机械臂Floor2MechanicalComplete】 任务执行终点{disTask.endpoint_code} 与料架区的点位不匹配");
}
WmsMechanicalArmH target = WmsMechanicalArmHs.First();
@@ -611,7 +676,7 @@ namespace Tnb.WarehouseMgr
Logger.LogInformation($@"【送满托到下升降区】设定下升降机满托{target.stackingposition}满托数量为 {LXCount} 结果为 {result}");
if (!result)
{
return false;
throw new Exception($"下升降机满托{target.stackingposition}数量 写入失败");
}
// 尝试写入满托送到信号
@@ -619,7 +684,7 @@ namespace Tnb.WarehouseMgr
Logger.LogInformation($@"【送满托到下升降区】回写 下升降机满托{target.stackingposition}送到 结果为{result下升降机空托送到}");
if (!result下升降机空托送到)
{
return false;
throw new Exception($"下升降机满托{target.stackingposition}送到 写入失败");
}
// 绑定料架
@@ -671,7 +736,7 @@ namespace Tnb.WarehouseMgr
if (WmsMechanicalArmHs.Count() == 0)
{
Logger.Information($"【二楼机械臂Floor2MechanicalComplete】 任务执行起点{disTask.endpoint_code} 与料架区的点位不匹配");
return false;
throw new Exception($"【二楼机械臂Floor2MechanicalComplete】 任务执行起点{disTask.endpoint_code} 与料架区的点位不匹配");
}
WmsMechanicalArmH target = WmsMechanicalArmHs.First();
@@ -719,17 +784,15 @@ namespace Tnb.WarehouseMgr
Logger.Information($"【二楼机械臂Floor2MechanicalComplete】{disTask.bill_code} AGV在料架区取货完成");
}
}
await _db.Ado.CommitTranAsync();
}
await _db.Ado.CommitTranAsync();
return true;
}
catch(Exception ex)
{
Logger.LogError("【Floor2MechanicalComplete】" + ex.ToString());
await _db.Ado.RollbackTranAsync();
return false;
throw;
}
return false;
}
private async Task<bool> Floor2UpDownMachinecode_SetTag(string tag, string value)
@@ -1808,8 +1871,6 @@ namespace Tnb.WarehouseMgr
locIts.Add(loc);
}
Logger.Information($@"TaskComplate 更新carryIts: {JsonConvert.SerializeObject(carryIts)}");
Logger.Information($@"TaskComplate 更新carryCodeIts: {JsonConvert.SerializeObject(carryCodeIts)}");
_ = 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();
@@ -1869,9 +1930,10 @@ namespace Tnb.WarehouseMgr
}
}
}
Logger.Information($"【TaskComplate】 任务操作完成提交事务 {string.Join(",", input.disTaskIds)}");
await _db.Ado.CommitTranAsync();
Logger.Information("任务操作完成");
Logger.Information($"【TaskComplate】 任务操作完成 {string.Join(",", input.disTaskIds)}");
}
catch (Exception ex)
{
@@ -2470,8 +2532,9 @@ namespace Tnb.WarehouseMgr
[HttpPost, NonUnify, AllowAnonymous]
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> CommonCreatePretask(CommonCreatePretaskInput input)
{
using (var db = _db.CopyNew())
//using (var db = _db.CopyNew())
{
await s_taskCommonCreatePretask.WaitAsync();
Logger.LogInformation($"【createPretask】 接收到请求 参数:{JsonConvert.SerializeObject(input)}");
try
{
@@ -2481,11 +2544,11 @@ namespace Tnb.WarehouseMgr
if (!string.IsNullOrEmpty(input.startlocation_id))
{
sPoint = await db.Queryable<WmsPointH>().FirstAsync(it => it.location_id == input.startlocation_id);
sPoint = await _db.Queryable<WmsPointH>().FirstAsync(it => it.location_id == input.startlocation_id);
}
if (!string.IsNullOrEmpty(input.endlocation_id))
{
ePoint = await db.Queryable<WmsPointH>().FirstAsync(it => it.location_id == input.endlocation_id);
ePoint = await _db.Queryable<WmsPointH>().FirstAsync(it => it.location_id == input.endlocation_id);
}
List<WmsPointH> points = new List<WmsPointH>();
@@ -2520,14 +2583,14 @@ namespace Tnb.WarehouseMgr
// 如果指定了carry_id
else if (!string.IsNullOrEmpty(input.carry_id))
{
wmsCarryH = db.Queryable<WmsCarryH>().Where(r => r.id == input.carry_id).First();
wmsCarryH = _db.Queryable<WmsCarryH>().Where(r => r.id == input.carry_id).First();
carry_id = wmsCarryH.id;
carry_code = wmsCarryH.carry_code;
}
// carry_code
else if (!string.IsNullOrEmpty(input.carry_code))
{
wmsCarryH = db.Queryable<WmsCarryH>().Where(r => r.carry_code == input.carry_code).First();
wmsCarryH = _db.Queryable<WmsCarryH>().Where(r => r.carry_code == input.carry_code).First();
carry_id = wmsCarryH.id;
carry_code = wmsCarryH.carry_code;
}
@@ -2596,7 +2659,7 @@ namespace Tnb.WarehouseMgr
};
//根据载具移入Id回更单据状态
_ = await db.Updateable<WmsMoveInstock>().SetColumns(it => new WmsMoveInstock { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync();
_ = await _db.Updateable<WmsMoveInstock>().SetColumns(it => new WmsMoveInstock { status = WmsWareHouseConst.BILLSTATUS_ON_ID }).Where(it => it.id == preTaskUpInput.RquireId).ExecuteCommandAsync();
Expression<Func<WmsCarryH, WmsCarryH>> wmsCarryHChangeExp = a => new WmsCarryH { is_lock = 1 };
@@ -2625,6 +2688,7 @@ namespace Tnb.WarehouseMgr
}
finally
{
s_taskCommonCreatePretask.Release();
if (input.isExcuteMission)
{
GenTaskExecute();