1
This commit is contained in:
@@ -250,7 +250,10 @@ namespace Tnb.WarehouseMgr
|
||||
Dictionary<string, string[]> putdic = new Dictionary<string, string[]>();
|
||||
|
||||
putdic.Add("SSX-011-006", new string[] { "YTCS", "AllowEmptyIn_CS06" });
|
||||
|
||||
putdic.Add("SSX-121-009", new string[] { "东面提升机输送线", "上升降机9允许入箱" });
|
||||
putdic.Add("SSX-121-010", new string[] { "东面提升机输送线", "上升降机10允许入箱" });
|
||||
putdic.Add("SSX-021-003", new string[] { "YTCS", "AllowCtuEmptyIn_CS03" });
|
||||
putdic.Add("SSX-021-001", new string[] { "YTCS", "AllowCtuEmptyIn_CS01" });
|
||||
var strs = new string[] { };
|
||||
|
||||
if (!putdic.ContainsKey(input.targetName))
|
||||
@@ -274,19 +277,26 @@ namespace Tnb.WarehouseMgr
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
|
||||
[HttpGet]
|
||||
[AllowAnonymous]
|
||||
public async Task Test()
|
||||
{
|
||||
var a = _db.Queryable<WmsDistaskH>().Where(p => p.id == "31900194166806").First();
|
||||
await SsxControl(a, "UNLOAD");
|
||||
}
|
||||
|
||||
public async Task SsxControl(WmsDistaskH disTask, string action)
|
||||
{
|
||||
Dictionary<string, string[]> putdic = new Dictionary<string, string[]>();
|
||||
Dictionary<string, string[]> getdic = new Dictionary<string, string[]>();
|
||||
getdic.Add("SSX-021-005", new string[] { "YTCS", "FullOut_CS05Done", "true" });
|
||||
|
||||
getdic.Add("SSX-111-011", new string[] { "东面提升机输送线", "下升降机11出箱完毕", "true" });
|
||||
getdic.Add("SSX-111-012", new string[] { "东面提升机输送线", "下升降机12出箱完毕", "true" });
|
||||
getdic.Add("ZSSSXCTU02", new string[] { "YTCS", "AgvEmptyOut_CS03Done", "true" });
|
||||
getdic.Add("ZSSSXCTU01", new string[] { "YTCS", "AgvEmptyOut_CS01Done", "true" });
|
||||
|
||||
putdic.Add("SSX-011-006", new string[] { "YTCS", "EmptyIn_CS06Done", "true" });
|
||||
putdic.Add("SSX-021-003", new string[] { "YTCS", "AgvFullIn_CS03Done", "true" });
|
||||
putdic.Add("SSX-021-001", new string[] { "YTCS", "CtuEmptyIn_CS01Done", "true" });
|
||||
|
||||
putdic.Add("ZSSSXCTU02", new string[] { "YTCS", "AgvFullIn_CS04Done", "true" });
|
||||
putdic.Add("ZSSSXCTU01", new string[] { "YTCS", "AgvFullIn_CS02Done", "true" });
|
||||
putdic.Add("SSX-121-009", new string[] { "东面提升机输送线", "上升降机9入箱完毕", "true" });
|
||||
putdic.Add("SSX-121-010", new string[] { "东面提升机输送线", "上升降机10入箱完毕", "true" });
|
||||
putdic.Add("YCLCKBGW", new string[] { "CP8", "PutDoneEmptyBox", "true" });
|
||||
if (action == "LOAD")//取货
|
||||
{
|
||||
@@ -301,7 +311,7 @@ namespace Tnb.WarehouseMgr
|
||||
["Value"] = strarr[2],
|
||||
};
|
||||
Logger.Information($"SsxControlLOAD:{dicCommand}");
|
||||
var str= await HttpClientHelper.GetAsync(_eleCtlCfg.WriteTagUrl, new Dictionary<string, string>(), dicCommand);
|
||||
var str = await HttpClientHelper.GetRequestAsync(_eleCtlCfg.WriteTagUrl, dicCommand);
|
||||
Logger.Information($"SsxControlLOAD:{str}");
|
||||
}
|
||||
}
|
||||
@@ -318,7 +328,7 @@ namespace Tnb.WarehouseMgr
|
||||
["Value"] = strarr[2],
|
||||
};
|
||||
Logger.Information($"SsxControlUNLOAD:{dicCommand}");
|
||||
var str = await HttpClientHelper.GetAsync(_eleCtlCfg.WriteTagUrl, new Dictionary<string, string>(), dicCommand);
|
||||
var str = await HttpClientHelper.GetRequestAsync(_eleCtlCfg.WriteTagUrl, dicCommand);
|
||||
Logger.Information($"SsxControlUNLOAD:{str}");
|
||||
}
|
||||
}
|
||||
@@ -333,7 +343,7 @@ namespace Tnb.WarehouseMgr
|
||||
[HttpPost]
|
||||
public async Task GenTaskExecute()
|
||||
{
|
||||
|
||||
CTUTaskExecute();
|
||||
await s_taskExecuteSemaphore.WaitAsync();
|
||||
|
||||
Stopwatch sw = Stopwatch.StartNew();
|
||||
@@ -379,7 +389,7 @@ namespace Tnb.WarehouseMgr
|
||||
preTasks = normalPreTasks.Concat(agvElevatorTasks).Concat(elePreTasks).ToList();
|
||||
|
||||
//一楼中储仓CTU
|
||||
CTUTaskExecute();
|
||||
|
||||
List<string> ids = preTasks.Select(x => x.id).Distinct().ToList();
|
||||
List<WmsPretaskCode>? preTaskCodes = await db.Queryable<WmsPretaskCode>().Where(it => ids.Contains(it.bill_id)).ToListAsync();
|
||||
if (preTasks.Count > 0)
|
||||
@@ -567,10 +577,15 @@ namespace Tnb.WarehouseMgr
|
||||
/// 生成CTU任务执行
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private async Task CTUTaskExecute()
|
||||
[HttpPost]
|
||||
public async Task CTUTaskExecute()
|
||||
{
|
||||
try
|
||||
{
|
||||
Dictionary<string, string[]> indic = new Dictionary<string, string[]>();
|
||||
indic.Add("SSX-021-005", new string[] { "YTCS", "CallCtuFullIn_CS05" });
|
||||
indic.Add("SSX-111-011", new string[] { "东面提升机输送线", "下升降机11呼叫CTU" });
|
||||
indic.Add("SSX-111-012", new string[] { "东面提升机输送线", "下升降机12呼叫CTU" });
|
||||
var db = _db.CopyNew();
|
||||
List<WmsPretaskH> CTUTasks = await db.Queryable<WmsPretaskH>()
|
||||
.InnerJoin<WmsAreaH>((a, b) => a.area_id == b.id)
|
||||
@@ -597,42 +612,57 @@ namespace Tnb.WarehouseMgr
|
||||
var outCtuExec = new List<WmsDistaskH>();
|
||||
foreach (var item in InTasks)
|
||||
{
|
||||
WmsDistaskH distaskH = item.Adapt<WmsDistaskH>();
|
||||
distaskH.id = SnowflakeIdHelper.NextId();
|
||||
distaskH.status = WmsWareHouseConst.TASK_BILL_STATUS_DZX_ID;
|
||||
distaskH.is_chain = 1;
|
||||
distaskH.create_time = DateTime.Now;
|
||||
var billcode = GetBillCode(OriginDistaskHs, DistaskHs, distaskH);
|
||||
distaskH.groups = billcode.Substring(0, billcode.Length - 2);
|
||||
distaskH.bill_code = billcode;
|
||||
var num = int.Parse(distaskH.bill_code.Substring(billcode.Length - 1, 1));
|
||||
if (num == item.move_num)
|
||||
/*
|
||||
if (indic.Keys.Contains(item.startlocation_code))
|
||||
{
|
||||
distaskH.status = WmsWareHouseConst.TASK_BILL_STATUS_YXD_ID;
|
||||
inCtuExec.Add(distaskH);
|
||||
if (OriginDistaskHs.Where(p => p.groups == distaskH.groups).Any())
|
||||
var strs = indic.Where(p => p.Key == item.startlocation_code).First().Value;
|
||||
bool flag = _redisData.HashExist(strs[0], strs[1]).Result;
|
||||
if (!flag)
|
||||
continue;
|
||||
string data = _redisData.GetHash(strs[0], strs[1]).Result;
|
||||
JObject? res = JsonConvert.DeserializeObject<JObject>(data);
|
||||
bool result = res != null && res["Value"] != null ? res.Value<bool>("Value") : false;
|
||||
if (!result)
|
||||
continue;
|
||||
}*/
|
||||
|
||||
WmsDistaskH distaskH = item.Adapt<WmsDistaskH>();
|
||||
distaskH.id = SnowflakeIdHelper.NextId();
|
||||
distaskH.status = WmsWareHouseConst.TASK_BILL_STATUS_DZX_ID;
|
||||
distaskH.is_chain = 1;
|
||||
distaskH.create_time = DateTime.Now;
|
||||
var billcode = GetBillCode(OriginDistaskHs, DistaskHs, distaskH);
|
||||
distaskH.groups = billcode.Substring(0, billcode.Length - 2);
|
||||
distaskH.bill_code = billcode;
|
||||
var num = int.Parse(distaskH.bill_code.Substring(billcode.Length - 1, 1));
|
||||
if (num == item.move_num)
|
||||
{
|
||||
OriginDistaskHs.Where(p => p.groups == distaskH.groups).ToList().ForEach(p => p.status = WmsWareHouseConst.TASK_BILL_STATUS_YXD_ID);
|
||||
distaskH.status = WmsWareHouseConst.TASK_BILL_STATUS_YXD_ID;
|
||||
inCtuExec.Add(distaskH);
|
||||
if (OriginDistaskHs.Where(p => p.groups == distaskH.groups).Any())
|
||||
{
|
||||
OriginDistaskHs.Where(p => p.groups == distaskH.groups).ToList().ForEach(p => p.status = WmsWareHouseConst.TASK_BILL_STATUS_YXD_ID);
|
||||
|
||||
UpDistaskHs.AddRange(OriginDistaskHs.Where(p => p.groups == distaskH.groups).ToList());
|
||||
inCtuExec.AddRange(OriginDistaskHs.Where(p => p.groups == distaskH.groups).ToList());
|
||||
UpDistaskHs.AddRange(OriginDistaskHs.Where(p => p.groups == distaskH.groups).ToList());
|
||||
inCtuExec.AddRange(OriginDistaskHs.Where(p => p.groups == distaskH.groups).ToList());
|
||||
}
|
||||
if (DistaskHs.Where(p => p.groups == distaskH.groups).Any())
|
||||
{
|
||||
DistaskHs.Where(p => p.groups == distaskH.groups).ToList().ForEach(p => p.status = WmsWareHouseConst.TASK_BILL_STATUS_YXD_ID);
|
||||
inCtuExec.AddRange(DistaskHs.Where(p => p.groups == distaskH.groups).ToList());
|
||||
}
|
||||
}
|
||||
if (DistaskHs.Where(p => p.groups == distaskH.groups).Any())
|
||||
List<WmsPretaskCode> preTaskCodes = TaskCodes.FindAll(x => x.bill_id == distaskH.pretask_id);
|
||||
List<WmsDistaskCode> disTaskCodes = preTaskCodes.Adapt<List<WmsDistaskCode>>();
|
||||
disTaskCodes.ForEach(x =>
|
||||
{
|
||||
DistaskHs.Where(p => p.groups == distaskH.groups).ToList().ForEach(p => p.status = WmsWareHouseConst.TASK_BILL_STATUS_YXD_ID);
|
||||
inCtuExec.AddRange(DistaskHs.Where(p => p.groups == distaskH.groups).ToList());
|
||||
}
|
||||
}
|
||||
List<WmsPretaskCode> preTaskCodes = TaskCodes.FindAll(x => x.bill_id == distaskH.pretask_id);
|
||||
List<WmsDistaskCode> disTaskCodes = preTaskCodes.Adapt<List<WmsDistaskCode>>();
|
||||
disTaskCodes.ForEach(x =>
|
||||
{
|
||||
x.id = SnowflakeIdHelper.NextId();
|
||||
x.bill_id = distaskH.id;
|
||||
x.create_time = DateTime.Now;
|
||||
});
|
||||
DistaskHs.Add(distaskH);
|
||||
DistaskCodes.AddRange(disTaskCodes);
|
||||
x.id = SnowflakeIdHelper.NextId();
|
||||
x.bill_id = distaskH.id;
|
||||
x.create_time = DateTime.Now;
|
||||
});
|
||||
DistaskHs.Add(distaskH);
|
||||
DistaskCodes.AddRange(disTaskCodes);
|
||||
|
||||
}
|
||||
foreach (var item in OutTasks)
|
||||
{
|
||||
@@ -1015,6 +1045,9 @@ namespace Tnb.WarehouseMgr
|
||||
private async Task AgvDispatch(List<WmsDistaskH> disTasks, CancellationToken token)
|
||||
{
|
||||
Logger.Information("Agv任务执行....");
|
||||
List<string> kiva = new List<string>();
|
||||
kiva.Add("ZSSSXCTU02");
|
||||
kiva.Add("ZSSSXCTU01");
|
||||
//调用AGV创建任务链接口
|
||||
try
|
||||
{
|
||||
@@ -1029,14 +1062,22 @@ namespace Tnb.WarehouseMgr
|
||||
containerCode = it.carry_code,
|
||||
}));
|
||||
Logger.Information($"请求地址:{url}");
|
||||
|
||||
foreach ((string k, object v) in taskChainCodeDic)
|
||||
{
|
||||
var typeflag = false;
|
||||
var dis = disTasks.Where(p => p.groups == k).First();
|
||||
if (kiva.Contains(dis.startlocation_code) || kiva.Contains(dis.endlocation_code))
|
||||
{
|
||||
typeflag = true;
|
||||
}
|
||||
dynamic reqBody = new ExpandoObject();
|
||||
reqBody.taskChainCode = k;
|
||||
reqBody.type = (int)EnumTaskChainType.AGV;
|
||||
reqBody.type = typeflag ? (int)EnumTaskChainType.KIVA : (int)EnumTaskChainType.AGV;
|
||||
reqBody.sequential = false;
|
||||
reqBody.taskChainPriority = 0;
|
||||
reqBody.taskList = v;
|
||||
reqBody.floor = dis.end_floor;
|
||||
Logger.Information($"请求参数:{JsonConvert.SerializeObject(reqBody)}");
|
||||
dynamic respBody = await HttpClientHelper.PostStreamAsync(url, reqBody, token);
|
||||
Logger.Information($"调用Agv接口响应结果:{respBody}");
|
||||
@@ -1353,6 +1394,24 @@ namespace Tnb.WarehouseMgr
|
||||
[NonAction]
|
||||
public async Task<List<WmsPointH>> PathAlgorithms(string pStartId, string pEndId)
|
||||
{
|
||||
/*
|
||||
var sp= await _db.Queryable<WmsPointH>().Where(it => it.id == pStartId).FirstAsync();
|
||||
var ep = await _db.Queryable<WmsPointH>().Where(it => it.id == pEndId).FirstAsync();
|
||||
|
||||
if (sp.area_code == "B" || ep.area_code == "B")
|
||||
{
|
||||
List<WmsPointH> Points = new List<WmsPointH>();
|
||||
var zp = await _db.Queryable<WmsPointH>().Where(it => it.point_code == "ZSCJZJD").FirstAsync();
|
||||
Points.Add(sp);
|
||||
Points.Add(ep);
|
||||
Points.Add(zp);
|
||||
Points.ForEach(p =>
|
||||
{
|
||||
p.area_code = zp.area_code;
|
||||
p.area_id = zp.area_id;
|
||||
});
|
||||
return Points;
|
||||
}*/
|
||||
List<WmsRoad> roads = await _db.Queryable<WmsRoad>().Where(it => it.status == 1).ToListAsync();
|
||||
List<WmsPointH> points = await LocPathCalcAlgorithms(pStartId, pEndId, roads);
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user