电梯下发逻辑变更

This commit is contained in:
2024-07-17 22:50:24 +08:00
parent c6ae917bc9
commit 019651b023
10 changed files with 246 additions and 144 deletions

View File

@@ -1184,6 +1184,13 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
continue; continue;
} }
WmsPretaskH wmsPretaskH = db_Floor2timer送空托到上升降区.Queryable<WmsPretaskH>().Where(r => r.endlocation_code == wmsMechanicalArmH.location_code
&& r.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID && r.status != WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID).First();
if (wmsPretaskH != null)
{
LoggerFloor2RackDelivery.LogWarning($"【送空托到上升降区】料架区{wmsMechanicalArmH.location_code}存在未完成的预任务{wmsPretaskH.bill_code}");
continue;
}
// 空料架 // 空料架
WmsCarryH targetCarry = wmsCarryHs[0]; WmsCarryH targetCarry = wmsCarryHs[0];
@@ -1274,7 +1281,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
// 找到没有绑定料架的且库位未锁定的料架区 // 找到没有绑定料架的且库位未锁定的料架区
ISugarQueryable<WmsMechanicalArmH> WmsMechanicalArmHsuagar = db_Floor2timer送满托到下升降区.Queryable<WmsMechanicalArmH>() ISugarQueryable<WmsMechanicalArmH> WmsMechanicalArmHsuagar = db_Floor2timer送满托到下升降区.Queryable<WmsMechanicalArmH>()
.InnerJoin<BasLocation>((a, b) => a.location_id == b.id) .InnerJoin<BasLocation>((a, b) => a.location_id == b.id)
.Where((a, b) => string.IsNullOrEmpty(a.rackcode) && b.is_lock == 0 && configs_upMachine.Contains(a.name)); .Where((a, b) => string.IsNullOrEmpty(a.rackcode) && b.is_lock == 0 && b.is_use == "0" && configs_upMachine.Contains(a.name));
List<WmsMechanicalArmH> WmsMechanicalArmHs = WmsMechanicalArmHsuagar.ToList(); List<WmsMechanicalArmH> WmsMechanicalArmHs = WmsMechanicalArmHsuagar.ToList();
@@ -1352,6 +1359,14 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
continue; continue;
} }
WmsPretaskH wmsPretaskH = db_Floor2timer送满托到下升降区.Queryable<WmsPretaskH>().Where(r => r.endlocation_code == wmsMechanicalArmH.location_code
&& r.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID && r.status != WmsWareHouseConst.PRETASK_BILL_STATUS_CANCEL_ID).First();
if (wmsPretaskH != null)
{
LoggerFloor2RackDelivery.LogWarning($"【送满托到下升降区】料架区{wmsMechanicalArmH.location_code}存在未完成的预任务{wmsPretaskH.bill_code}");
continue;
}
// 满料架 // 满料架
WmsCarryH targetCarry = wmsCarryHs[0]; WmsCarryH targetCarry = wmsCarryHs[0];

View File

@@ -42,7 +42,10 @@
/// 组装线边库 /// 组装线边库
/// </summary> /// </summary>
public const string WAREHOUSE_ZZXBK_ID = "26257716248101"; public const string WAREHOUSE_ZZXBK_ID = "26257716248101";
/// <summary>
/// 一楼包材缓存库
/// </summary>
public const string WAREHOUSE_F1BCK_ID = "35418033338389";
/// <summary> /// <summary>
/// 四楼包材库 /// 四楼包材库
/// </summary> /// </summary>

View File

@@ -10,6 +10,6 @@ namespace Tnb.WarehouseMgr.Interfaces
public interface IWmsEmptycarryInstockLogService public interface IWmsEmptycarryInstockLogService
{ {
Task<dynamic> Instock(WmsEmptycarryInstockServiceInstockInput input); Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> Instock(WmsEmptycarryInstockServiceInstockInput input);
} }
} }

View File

@@ -963,7 +963,7 @@ namespace Tnb.WarehouseMgr
if (disTask.area_code == "E" && basLocations.Count() == 0) if (disTask.area_code == "E" && basLocations.Count() == 0)
{ {
await _db.Ado.BeginTranAsync(); await _db.Ado.BeginTranAsync();
Logger.Information($"【二楼机械臂Floor2MechanicalComplete】收到到货完成信号 传入参数: {disTask.bill_code} {action}"); Logger.Information($"【二楼机械臂Floor2MechanicalComplete】收到到货确认信号 传入参数: {disTask.bill_code} {action}");
if (action == "UNLOAD") if (action == "UNLOAD")
{ {
@@ -2668,9 +2668,93 @@ namespace Tnb.WarehouseMgr
List<WmsRoad> roads = await _db.Queryable<WmsRoad>().Where(it => it.status == 1).ToListAsync(); List<WmsPointH> wmsPointHs = await _db.Queryable<WmsPointH>().Where(it => it.status == 1).ToListAsync();
List<WmsPointH> points = new List<WmsPointH>();
// 待验证 算法太慢 电梯不跑算法 电梯起终点仓库对应表
BasLocation startlocation = await _db.Queryable<BasLocation>().InnerJoin<WmsPointH>((a, b) => a.id == b.location_id).Where((a, b) => b.id == pStartId).FirstAsync();
BasLocation endlocation = await _db.Queryable<BasLocation>().InnerJoin<WmsPointH>((a, b) => a.id == b.location_id).Where((a, b) => b.id == pEndId).FirstAsync();
// 后续可整理成配置表
// 3-1
if (startlocation.wh_id == WmsWareHouseConst.WAREHOUSE_CP_ID && endlocation.wh_id == WmsWareHouseConst.WAREHOUSE_CPCRK_ID)
{
WmsElevatorH wmsElevatorH = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == "2" && it.enabled == 1).OrderBy(r => r.task_nums).FirstAsync();
string elevatorSno = wmsElevatorH.elevator_code.Replace("Elevator", "");
points.Add(wmsPointHs.Where(r => r.id == pStartId).First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-C-03-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-3-{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-1-{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-R-01-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.id == pEndId).First());
}
//1-3
else if (startlocation.wh_id == WmsWareHouseConst.WAREHOUSE_CPCRK_ID && endlocation.wh_id == WmsWareHouseConst.WAREHOUSE_CP_ID)
{
WmsElevatorH wmsElevatorH = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == "2" && it.enabled == 1).OrderBy(r => r.task_nums).FirstAsync();
string elevatorSno = wmsElevatorH.elevator_code.Replace("Elevator", "");
points.Add(wmsPointHs.Where(r => r.id == pStartId).First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-C-01-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-1-{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-3-{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-R-03-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.id == pEndId).First());
}
// 2-4
else if(startlocation.wh_id == WmsWareHouseConst.WAREHOUSE_ZZXBK_ID && endlocation.wh_id == WmsWareHouseConst.WAREHOUSE_DMJC_ID)
{
WmsElevatorH wmsElevatorH = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == "1" && it.enabled == 1).OrderBy(r => r.task_nums).FirstAsync();
string elevatorSno = wmsElevatorH.elevator_code.Replace("Elevator", "");
points.Add(wmsPointHs.Where(r => r.id == pStartId).First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-C-02-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-2-{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-4-{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-R-04-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.id == pEndId).First());
}
// 1-4
else if(startlocation.wh_id == WmsWareHouseConst.WAREHOUSE_F1BCK_ID && endlocation.wh_id == WmsWareHouseConst.WAREHOUSE_BCK_ID)
{
WmsElevatorH wmsElevatorH = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == "1" && it.enabled == 1).OrderBy(r => r.task_nums).FirstAsync();
string elevatorSno = wmsElevatorH.elevator_code.Replace("Elevator", "");
points.Add(wmsPointHs.Where(r => r.id == pStartId).First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-C-01-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-1-{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-4-{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-R-04-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.id == pEndId).First());
}
// 4-2
else if (startlocation.wh_id == WmsWareHouseConst.WAREHOUSE_BCK_ID && endlocation.wh_id == WmsWareHouseConst.WAREHOUSE_F2BCQ_ID)
{
WmsElevatorH wmsElevatorH = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == "1" && it.enabled == 1).OrderBy(r => r.task_nums).FirstAsync();
string elevatorSno = wmsElevatorH.elevator_code.Replace("Elevator", "");
points.Add(wmsPointHs.Where(r => r.id == pStartId).First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-C-04-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-4-{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-2-{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.point_code == $"DT-R-02-0{elevatorSno}").First());
points.Add(wmsPointHs.Where(r => r.id == pEndId).First());
}
else
{
List<WmsRoad> roads = await _db.Queryable<WmsRoad>().Where(it => it.status == 1).ToListAsync();
points = await LocPathCalcAlgorithms(pStartId, pEndId, roads);
}
Logger.Information($"起点{startlocation.location_code} 终点{endlocation.location_code} 获取到路径 {JsonConvert.SerializeObject(points)}");
if (points.Count < 6)
{
throw new AppFriendlyException($"路径错误,需要检查路径配置{JsonConvert.SerializeObject(points)}", 500);
}
// 待验证 电梯不跑算法
//List<WmsRoad> wmsRoads = await _db.Queryable<WmsRoad>().Where(r => r.startpoint_id == pStartId).ToListAsync(); //List<WmsRoad> wmsRoads = await _db.Queryable<WmsRoad>().Where(r => r.startpoint_id == pStartId).ToListAsync();
//if (wmsRoads?.FindAll(x => x.endpoint_code != null && x.location_code.Contains("dt", StringComparison.OrdinalIgnoreCase))?.Count > 0) //if (wmsRoads?.FindAll(x => x.endpoint_code != null && x.location_code.Contains("dt", StringComparison.OrdinalIgnoreCase))?.Count > 0)
//{ //{
@@ -2681,71 +2765,71 @@ namespace Tnb.WarehouseMgr
List<WmsPointH> points = await LocPathCalcAlgorithms(pStartId, pEndId, roads);
try
{
if (points?.FindAll(x => x.location_code != null && x.location_code.Contains("dt", StringComparison.OrdinalIgnoreCase))?.Count > 0)
{
//查询当前电梯点
List<WmsElevatorD> curEleDs = await _db.Queryable<WmsElevatorD>().InnerJoin<WmsElevatorH>((a, b) => a.bill_id == b.id).Where((a, b) => points.Select(x => x.id).Contains(a.point_id)).ToListAsync();
Logger.Information($"curEleDs==null :{curEleDs == null},curEleDs:{string.Join(",", curEleDs.Select(x => x.bill_id))}");
//如果有电梯点,则会进行电梯的均匀分配
if (curEleDs?.Count > 0)
{
//当前电梯
WmsElevatorH curEle = await _db.Queryable<WmsElevatorH>().SingleAsync(it => it.id == curEleDs.First().bill_id);
//同电梯组电梯 //try
List<WmsElevatorH> sGpEle = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.enabled == 1).ToListAsync(); //{
if (curEle.enabled == 0 && (sGpEle == null || sGpEle.Count < 1)) // if (points?.FindAll(x => x.location_code != null && x.location_code.Contains("dt", StringComparison.OrdinalIgnoreCase))?.Count > 0)
{ // {
throw new AppFriendlyException("电梯被禁用或未配置", 500); // //查询当前电梯点
} // List<WmsElevatorD> curEleDs = await _db.Queryable<WmsElevatorD>().InnerJoin<WmsElevatorH>((a, b) => a.bill_id == b.id).Where((a, b) => points.Select(x => x.id).Contains(a.point_id)).ToListAsync();
if ((sGpEle == null || sGpEle.Count < 1) && curEle.enabled == 1) // Logger.Information($"curEleDs==null :{curEleDs == null},curEleDs:{string.Join(",", curEleDs.Select(x => x.bill_id))}");
{ // //如果有电梯点,则会进行电梯的均匀分配
return points; // if (curEleDs?.Count > 0)
} // {
if (sGpEle?.Count > 0 && curEle.enabled == 0) // //当前电梯
{ // WmsElevatorH curEle = await _db.Queryable<WmsElevatorH>().SingleAsync(it => it.id == curEleDs.First().bill_id);
return points;
}
//判断电梯组中各电梯任务数
if (sGpEle.FindAll(x => Math.Abs(x.task_nums - curEle.task_nums) % 2 == 1)?.Count > 0)
{
List<WmsElevatorD> sGpDs = await _db.Queryable<WmsElevatorD>().Where(it => it.bill_id == sGpEle.First().id).ToListAsync();
if (sGpDs?.Count > 0)
{
List<WmsPointH> sGpPoints = await _db.Queryable<WmsPointH>().Where(it => sGpDs.Select(x => x.point_id).Contains(it.id)).ToListAsync();
string sFEndId = sGpDs.Single(x => x.floor == curEleDs.First().floor).point_id;
string eFStartId = sGpDs.Single(x => x.floor == curEleDs.Last().floor).point_id;
List<WmsPointH> sFPoints = await LocPathCalcAlgorithms(pStartId, sFEndId, roads);
List<WmsPointH> elePoints = new();
foreach (WmsElevatorD pt in curEleDs)
{
WmsPointH? elePoint = sGpPoints.Find(x => x.floor == pt.floor);
if (elePoint != null)
{
elePoints.Add(elePoint);
}
}
List<WmsPointH> eFPoints = await LocPathCalcAlgorithms(eFStartId, pEndId, roads);
_ = elePoints.Remove(elePoints.First());
_ = elePoints.Remove(elePoints.Last());
points.Clear();
points.AddRange(sFPoints);
points.AddRange(elePoints);
points.AddRange(eFPoints);
}
}
} // //同电梯组电梯
} // List<WmsElevatorH> sGpEle = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.enabled == 1).ToListAsync();
} // if (curEle.enabled == 0 && (sGpEle == null || sGpEle.Count < 1))
catch (Exception ex) // {
{ // throw new AppFriendlyException("电梯被禁用或未配置", 500);
Logger.Error("路径算法异常", ex); // }
throw; // if ((sGpEle == null || sGpEle.Count < 1) && curEle.enabled == 1)
} // {
// return points;
// }
// if (sGpEle?.Count > 0 && curEle.enabled == 0)
// {
// return points;
// }
// //判断电梯组中各电梯任务数
// if (sGpEle.FindAll(x => Math.Abs(x.task_nums - curEle.task_nums) % 2 == 1)?.Count > 0)
// {
// List<WmsElevatorD> sGpDs = await _db.Queryable<WmsElevatorD>().Where(it => it.bill_id == sGpEle.First().id).ToListAsync();
// if (sGpDs?.Count > 0)
// {
// List<WmsPointH> sGpPoints = await _db.Queryable<WmsPointH>().Where(it => sGpDs.Select(x => x.point_id).Contains(it.id)).ToListAsync();
// string sFEndId = sGpDs.Single(x => x.floor == curEleDs.First().floor).point_id;
// string eFStartId = sGpDs.Single(x => x.floor == curEleDs.Last().floor).point_id;
// List<WmsPointH> sFPoints = await LocPathCalcAlgorithms(pStartId, sFEndId, roads);
// List<WmsPointH> elePoints = new();
// foreach (WmsElevatorD pt in curEleDs)
// {
// WmsPointH? elePoint = sGpPoints.Find(x => x.floor == pt.floor);
// if (elePoint != null)
// {
// elePoints.Add(elePoint);
// }
// }
// List<WmsPointH> eFPoints = await LocPathCalcAlgorithms(eFStartId, pEndId, roads);
// _ = elePoints.Remove(elePoints.First());
// _ = elePoints.Remove(elePoints.Last());
// points.Clear();
// points.AddRange(sFPoints);
// points.AddRange(elePoints);
// points.AddRange(eFPoints);
// }
// }
// }
// }
//}
//catch (Exception ex)
//{
// Logger.Error("路径算法异常", ex);
// throw;
//}
return points; return points;
} }

View File

@@ -48,7 +48,7 @@ namespace Tnb.WarehouseMgr
/// </param> /// </param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public async Task<dynamic> Instock(WmsEmptycarryInstockServiceInstockInput input) public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> Instock(WmsEmptycarryInstockServiceInstockInput input)
{ {
try try
{ {
@@ -108,14 +108,14 @@ namespace Tnb.WarehouseMgr
await _db.Ado.CommitTranAsync(); await _db.Ado.CommitTranAsync();
return await Task.FromResult(true); return await ToApiResult(HttpStatusCode.OK, "成功");
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.LogInformation("【WmsEmptycarryInstockService-Instock】" + ex.Message); Logger.LogInformation("【WmsEmptycarryInstockService-Instock】" + ex.Message);
Logger.LogInformation("【WmsEmptycarryInstockService-Instock】" + ex.StackTrace); Logger.LogInformation("【WmsEmptycarryInstockService-Instock】" + ex.StackTrace);
await _db.Ado.RollbackTranAsync(); await _db.Ado.RollbackTranAsync();
throw Oops.Bah(ex.Message); return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
} }
} }
} }

View File

@@ -298,7 +298,7 @@ namespace Tnb.WarehouseMgr
/// <returns></returns> /// <returns></returns>
/// <exception cref="AppFriendlyException"></exception> /// <exception cref="AppFriendlyException"></exception>
[HttpPost, NonUnify, AllowAnonymous] [HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> Distribute(MaterialTransferDistributeInput input) public async Task<Entities.Dto.Outputs.Result> Distribute(MaterialTransferDistributeInput input)
{ {
try try
{ {
@@ -421,7 +421,7 @@ namespace Tnb.WarehouseMgr
await _db.Ado.RollbackTranAsync(); await _db.Ado.RollbackTranAsync();
Logger.LogError("【Distribute】" + ex.Message); Logger.LogError("【Distribute】" + ex.Message);
Logger.LogError("【Distribute】" + ex.StackTrace); Logger.LogError("【Distribute】" + ex.StackTrace);
throw Oops.Bah(ex.Message); return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
} }
finally finally
{ {
@@ -429,7 +429,7 @@ namespace Tnb.WarehouseMgr
InvokeGenPretaskExcute(); InvokeGenPretaskExcute();
} }
return await Task.FromResult(true); return await ToApiResult(HttpStatusCode.OK, "成功");
} }
/// <summary> /// <summary>
@@ -439,7 +439,7 @@ namespace Tnb.WarehouseMgr
/// <returns></returns> /// <returns></returns>
/// <exception cref="AppFriendlyException"></exception> /// <exception cref="AppFriendlyException"></exception>
[HttpPost, NonUnify, AllowAnonymous] [HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> DistributeHCC(MaterialTransferDistributeInput input) public async Task<Entities.Dto.Outputs.Result> DistributeHCC(MaterialTransferDistributeInput input)
{ {
try try
{ {
@@ -571,7 +571,7 @@ namespace Tnb.WarehouseMgr
await _db.Ado.RollbackTranAsync(); await _db.Ado.RollbackTranAsync();
Logger.LogError("【Distribute】" + ex.Message); Logger.LogError("【Distribute】" + ex.Message);
Logger.LogError("【Distribute】" + ex.StackTrace); Logger.LogError("【Distribute】" + ex.StackTrace);
throw Oops.Bah(ex.Message); return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
} }
finally finally
{ {
@@ -579,7 +579,7 @@ namespace Tnb.WarehouseMgr
InvokeGenPretaskExcute(); InvokeGenPretaskExcute();
} }
return await Task.FromResult(true); return await ToApiResult(HttpStatusCode.OK, "成功");
} }
/// <summary> /// <summary>
@@ -645,7 +645,7 @@ namespace Tnb.WarehouseMgr
/// <returns></returns> /// <returns></returns>
/// <exception cref="AppFriendlyException"></exception> /// <exception cref="AppFriendlyException"></exception>
[HttpPost, NonUnify, AllowAnonymous] [HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> DistributeBCK(MaterialTransferDistributeInput input) public async Task<Entities.Dto.Outputs.Result> DistributeBCK(MaterialTransferDistributeInput input)
{ {
try try
{ {
@@ -759,7 +759,7 @@ namespace Tnb.WarehouseMgr
await _db.Ado.RollbackTranAsync(); await _db.Ado.RollbackTranAsync();
Logger.LogError("【Distribute】" + ex.Message); Logger.LogError("【Distribute】" + ex.Message);
Logger.LogError("【Distribute】" + ex.StackTrace); Logger.LogError("【Distribute】" + ex.StackTrace);
throw Oops.Bah(ex.Message); return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
} }
finally finally
{ {
@@ -767,7 +767,7 @@ namespace Tnb.WarehouseMgr
InvokeGenPretaskExcute(); InvokeGenPretaskExcute();
} }
return await Task.FromResult(true); return await ToApiResult(HttpStatusCode.OK, "成功");
} }
@@ -910,7 +910,7 @@ namespace Tnb.WarehouseMgr
/// <returns></returns> /// <returns></returns>
/// <exception cref="AppFriendlyException"></exception> /// <exception cref="AppFriendlyException"></exception>
[HttpPost, NonUnify, AllowAnonymous] [HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> DistributeToZCC(MaterialTransferDistributeToZCCInput input) public async Task<Entities.Dto.Outputs.Result> DistributeToZCC(MaterialTransferDistributeToZCCInput input)
{ {
s_taskDistributeToZCC.Wait(); s_taskDistributeToZCC.Wait();
@@ -1036,14 +1036,14 @@ namespace Tnb.WarehouseMgr
await _db.Ado.RollbackTranAsync(); await _db.Ado.RollbackTranAsync();
Logger.LogError("【DistributeToZCC】" + ex.Message); Logger.LogError("【DistributeToZCC】" + ex.Message);
Logger.LogError("【DistributeToZCC】" + ex.StackTrace); Logger.LogError("【DistributeToZCC】" + ex.StackTrace);
throw Oops.Bah(ex.Message); return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
} }
finally finally
{ {
s_taskDistributeToZCC.Release(); s_taskDistributeToZCC.Release();
InvokeGenPretaskExcute(); InvokeGenPretaskExcute();
} }
return await Task.FromResult(true); return await ToApiResult(HttpStatusCode.OK, "成功");
} }
/// <summary> /// <summary>
@@ -1053,7 +1053,7 @@ namespace Tnb.WarehouseMgr
/// <returns></returns> /// <returns></returns>
/// <exception cref="AppFriendlyException"></exception> /// <exception cref="AppFriendlyException"></exception>
[HttpPost, NonUnify, AllowAnonymous] [HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> CallRackToProductionLine(MaterialTransferCallRackToProductionLineInput input) public async Task<Entities.Dto.Outputs.Result> CallRackToProductionLine(MaterialTransferCallRackToProductionLineInput input)
{ {
try try
{ {
@@ -1155,10 +1155,10 @@ namespace Tnb.WarehouseMgr
{ {
Logger.LogError("【CallRackToProductionLine】" + ex.Message); Logger.LogError("【CallRackToProductionLine】" + ex.Message);
Logger.LogError("【CallRackToProductionLine】" + ex.StackTrace); Logger.LogError("【CallRackToProductionLine】" + ex.StackTrace);
throw Oops.Bah(ex.Message); return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
} }
return await Task.FromResult(true); return await ToApiResult(HttpStatusCode.OK, "成功");
} }
/// <summary> /// <summary>
@@ -1168,7 +1168,7 @@ namespace Tnb.WarehouseMgr
/// <returns></returns> /// <returns></returns>
/// <exception cref="AppFriendlyException"></exception> /// <exception cref="AppFriendlyException"></exception>
[HttpPost, NonUnify, AllowAnonymous] [HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> RackAndMatByWorkstation(MaterialTransferGetRackAndMatByWorkStationInput input) public async Task<Entities.Dto.Outputs.Result> RackAndMatByWorkstation(MaterialTransferGetRackAndMatByWorkStationInput input)
{ {
try try
{ {
@@ -1222,13 +1222,13 @@ namespace Tnb.WarehouseMgr
pairs["details"] = JArray.Parse(JsonConvert.SerializeObject(matCodes)); pairs["details"] = JArray.Parse(JsonConvert.SerializeObject(matCodes));
jArray.Add(pairs); jArray.Add(pairs);
} }
return Task.FromResult(true); return await ToApiResult(HttpStatusCode.OK, jArray);
} }
catch (Exception ex) catch (Exception ex)
{ {
Logger.LogError("【RackAndMatByWorkstation】" + ex.Message); Logger.LogError("【RackAndMatByWorkstation】" + ex.Message);
Logger.LogError("【RackAndMatByWorkstation】" + ex.StackTrace); Logger.LogError("【RackAndMatByWorkstation】" + ex.StackTrace);
return Oops.Bah(ex.Message); return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
} }
} }
@@ -1238,7 +1238,7 @@ namespace Tnb.WarehouseMgr
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost, NonUnify, AllowAnonymous] [HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> RackInstock(MaterialTransferRackInstockInput input) public async Task<Entities.Dto.Outputs.Result> RackInstock(MaterialTransferRackInstockInput input)
{ {
WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.carry_code == input.carry_code).FirstAsync(); WmsCarryH wmsCarryH = await _db.Queryable<WmsCarryH>().Where(r => r.carry_code == input.carry_code).FirstAsync();
@@ -1255,11 +1255,11 @@ namespace Tnb.WarehouseMgr
else else
{ {
Logger.LogError($"【RackInstock】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!"); Logger.LogError($"【RackInstock】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!");
return Oops.Bah($"【RackInstock】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!"); return await ToApiResult(HttpStatusCode.InternalServerError, $"【RackInstock】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!");
} }
} }
async Task<dynamic> RackInstock_到暂存仓(MaterialTransferRackInstockInput input, WmsCarryH wmsCarryH) async Task<Entities.Dto.Outputs.Result> RackInstock_到暂存仓(MaterialTransferRackInstockInput input, WmsCarryH wmsCarryH)
{ {
try try
{ {
@@ -1362,12 +1362,12 @@ namespace Tnb.WarehouseMgr
Logger.LogError("【RackInstock】" + ex.Message); Logger.LogError("【RackInstock】" + ex.Message);
Logger.LogError("【RackInstock】" + ex.StackTrace); Logger.LogError("【RackInstock】" + ex.StackTrace);
await _db.Ado.RollbackTranAsync(); await _db.Ado.RollbackTranAsync();
throw Oops.Bah(ex.Message); return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
} }
return await Task.FromResult(true); return await ToApiResult(HttpStatusCode.OK, "成功");
} }
async Task<dynamic> RackInstock_到缓存仓(MaterialTransferRackInstockInput input, WmsCarryH wmsCarryH) async Task<Entities.Dto.Outputs.Result> RackInstock_到缓存仓(MaterialTransferRackInstockInput input, WmsCarryH wmsCarryH)
{ {
try try
{ {
@@ -1421,9 +1421,9 @@ namespace Tnb.WarehouseMgr
Logger.LogError("【RackInstock】" + ex.Message); Logger.LogError("【RackInstock】" + ex.Message);
Logger.LogError("【RackInstock】" + ex.StackTrace); Logger.LogError("【RackInstock】" + ex.StackTrace);
await _db.Ado.RollbackTranAsync(); await _db.Ado.RollbackTranAsync();
throw Oops.Bah(ex.Message); return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
} }
return await Task.FromResult(true); return await ToApiResult(HttpStatusCode.OK, "成功");
} }
/// <summary> /// <summary>

View File

@@ -163,7 +163,7 @@ namespace Tnb.WarehouseMgr
/// <returns></returns> /// <returns></returns>
/// <exception cref="AppFriendlyException"></exception> /// <exception cref="AppFriendlyException"></exception>
[HttpPost, NonUnify, AllowAnonymous] [HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> OutsourcedPartsInstock(OutsourcedPartsInstockInput input) public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> OutsourcedPartsInstock(OutsourcedPartsInstockInput input)
{ {
try try
{ {
@@ -348,11 +348,11 @@ namespace Tnb.WarehouseMgr
} }
// 入库明细都完成 回写主表完成状态 // 入库明细都完成 回写主表完成状态
List<WmsTransferInstockD> wmsTransferInstockDs =_db.Queryable<WmsTransferInstockD>().InnerJoin<WmsTransferInstockD>((a, b) => a.bill_id == b.bill_id).Where((a, b) => a.id == input.source_id) List<WmsTransferInstockD> wmsTransferInstockDs = _db.Queryable<WmsTransferInstockD>().InnerJoin<WmsTransferInstockD>((a, b) => a.bill_id == b.bill_id).Where((a, b) => a.id == input.source_id)
.Where((a, b) => b.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID).ToList(); .Where((a, b) => b.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID).ToList();
if (wmsTransferInstockDs.Count == 0) if (wmsTransferInstockDs.Count == 0)
{ {
await _db.Updateable<WmsTransferInstockH>().SetColumns(r =>r.status == WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID).Where(r => r.id == wmsTransferInstockD.bill_id).ExecuteCommandAsync(); await _db.Updateable<WmsTransferInstockH>().SetColumns(r => r.status == WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID).Where(r => r.id == wmsTransferInstockD.bill_id).ExecuteCommandAsync();
} }
await _db.Ado.CommitTranAsync(); await _db.Ado.CommitTranAsync();
@@ -360,7 +360,7 @@ namespace Tnb.WarehouseMgr
catch (Exception ex) catch (Exception ex)
{ {
await _db.Ado.RollbackTranAsync(); await _db.Ado.RollbackTranAsync();
throw Oops.Bah(ex.Message); return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
} }
finally finally
{ {
@@ -368,7 +368,7 @@ namespace Tnb.WarehouseMgr
await InvokeGenPretaskExcute(); await InvokeGenPretaskExcute();
} }
return await Task.FromResult(true); return await ToApiResult(HttpStatusCode.OK, "成功");
} }
/// <summary> /// <summary>
@@ -377,7 +377,7 @@ namespace Tnb.WarehouseMgr
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost, NonUnify, AllowAnonymous] [HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> FinishproductOutstockSign(FinishproductOutstockSignInput input) public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> FinishproductOutstockSign(FinishproductOutstockSignInput input)
{ {
Logger.LogInformation($"【FinishproductOutstockSign】载具签收 {input.carry_code}"); Logger.LogInformation($"【FinishproductOutstockSign】载具签收 {input.carry_code}");
if (string.IsNullOrEmpty(input.carry_code)) if (string.IsNullOrEmpty(input.carry_code))
@@ -458,10 +458,10 @@ namespace Tnb.WarehouseMgr
Logger.Error($"【FinishproductOutstockSign】 {ex.Message}"); Logger.Error($"【FinishproductOutstockSign】 {ex.Message}");
Logger.Error($"【FinishproductOutstockSign】 {ex.StackTrace}"); Logger.Error($"【FinishproductOutstockSign】 {ex.StackTrace}");
await _db.Ado.RollbackTranAsync(); await _db.Ado.RollbackTranAsync();
throw Oops.Bah(ex.Message); return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
} }
return await Task.FromResult(true); return await ToApiResult(HttpStatusCode.OK, "成功");
} }

View File

@@ -118,7 +118,7 @@ namespace Tnb.WarehouseMgr
/// <returns></returns> /// <returns></returns>
/// <exception cref="AppFriendlyException"></exception> /// <exception cref="AppFriendlyException"></exception>
[HttpPost, NonUnify, AllowAnonymous] [HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> PackInstock(OutsourcedPartsInstockInput input) public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> PackInstock(OutsourcedPartsInstockInput input)
{ {
try try
{ {
@@ -180,10 +180,6 @@ namespace Tnb.WarehouseMgr
} }
ePoint = await _db.Queryable<WmsPointH>().FirstAsync(it => it.location_id == endLocations[0].id); ePoint = await _db.Queryable<WmsPointH>().FirstAsync(it => it.location_id == endLocations[0].id);
if (ePoint == null)
{
throw new AppFriendlyException($"{endLocations[0].location_code}终点未配置点位", 500);
}
} }
else else
{ {
@@ -318,7 +314,7 @@ namespace Tnb.WarehouseMgr
Logger.LogError($"【PackInstock】 {ex.Message}"); Logger.LogError($"【PackInstock】 {ex.Message}");
Logger.LogError($"【PackInstock】 {ex.StackTrace}"); Logger.LogError($"【PackInstock】 {ex.StackTrace}");
await _db.Ado.RollbackTranAsync(); await _db.Ado.RollbackTranAsync();
throw Oops.Bah(ex.Message); return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
} }
finally finally
{ {
@@ -326,7 +322,7 @@ namespace Tnb.WarehouseMgr
await InvokeGenPretaskExcute(); await InvokeGenPretaskExcute();
} }
return await Task.FromResult(true); return await ToApiResult(HttpStatusCode.OK, "成功");
} }
} }

View File

@@ -59,7 +59,7 @@ namespace Tnb.WarehouseMgr
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost, NonUnify, AllowAnonymous] [HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> PrdReturn(PrdReturnInput input) public async Task<Result> PrdReturn(PrdReturnInput input)
{ {
WmsPrdReturnH wmsPrdReturnH = await _db.Queryable<WmsPrdReturnH>().Where(r => r.id == input.source_id).FirstAsync(); WmsPrdReturnH wmsPrdReturnH = await _db.Queryable<WmsPrdReturnH>().Where(r => r.id == input.source_id).FirstAsync();
if (wmsPrdReturnH == null) if (wmsPrdReturnH == null)
@@ -93,12 +93,12 @@ namespace Tnb.WarehouseMgr
else else
{ {
Logger.LogError($"【PrdReturn】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!"); Logger.LogError($"【PrdReturn】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!");
return Oops.Bah($"【PrdReturn】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!"); return await ToApiResult(HttpStatusCode.InternalServerError, $"【PrdReturn】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!");
} }
} }
async Task<dynamic> Return_到暂存仓(PrdReturnInput input, WmsCarryH wmsCarryH, WmsPrdReturnH wmsPrdReturnH) async Task<Result> Return_到暂存仓(PrdReturnInput input, WmsCarryH wmsCarryH, WmsPrdReturnH wmsPrdReturnH)
{ {
try try
{ {
@@ -134,15 +134,15 @@ namespace Tnb.WarehouseMgr
BasLocation endlocation = rackEndLocations.First(); BasLocation endlocation = rackEndLocations.First();
var memberCarryCodes = _db.Queryable<WmsCarryH>() var memberCarryCodes = _db.Queryable<WmsCarryH>()
.InnerJoin<WmsCarryCode>((a, b) => a.id == b.carry_id) .InnerJoin<WmsCarryCode>((a, b) => a.id == b.carry_id)
.Where((a, b) => input.details.Select(r => r.carry_code).Contains(a.carry_code)).Select((a, b) => new .Where((a, b) => input.details.Select(r => r.carry_code).Contains(a.carry_code)).Select((a, b) => new
{ {
carry_code = a.carry_code, carry_code = a.carry_code,
barcode = b.barcode, barcode = b.barcode,
material_id = b.material_id, material_id = b.material_id,
material_code = b.material_code, material_code = b.material_code,
}).ToList(); }).ToList();
List<string> matIds = memberCarryCodes.Select(r => r.material_id).Distinct().ToList(); List<string> matIds = memberCarryCodes.Select(r => r.material_id).Distinct().ToList();
@@ -177,7 +177,7 @@ namespace Tnb.WarehouseMgr
await _db.Ado.BeginTranAsync(); await _db.Ado.BeginTranAsync();
// 标记为退料 // 标记为退料
int row2= await _db.Updateable<WmsCarryH>().SetColumns(r => r.carry_status == ((int)(EnumCarryStatus.退)).ToString()).Where(r => r.carry_code == wmsCarryH.carry_code).ExecuteCommandAsync(); int row2 = await _db.Updateable<WmsCarryH>().SetColumns(r => r.carry_status == ((int)(EnumCarryStatus.退)).ToString()).Where(r => r.carry_code == wmsCarryH.carry_code).ExecuteCommandAsync();
if (row2 == 0) if (row2 == 0)
{ {
throw new AppFriendlyException($"【PrdReturn】 料架 {wmsCarryH.carry_code} 退料状态回写失败", 500); throw new AppFriendlyException($"【PrdReturn】 料架 {wmsCarryH.carry_code} 退料状态回写失败", 500);
@@ -228,12 +228,12 @@ namespace Tnb.WarehouseMgr
Logger.LogError("【PrdReturn】" + ex.Message); Logger.LogError("【PrdReturn】" + ex.Message);
Logger.LogError("【PrdReturn】" + ex.StackTrace); Logger.LogError("【PrdReturn】" + ex.StackTrace);
await _db.Ado.RollbackTranAsync(); await _db.Ado.RollbackTranAsync();
throw Oops.Bah(ex.Message); return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
} }
return await Task.FromResult(true); return await ToApiResult(HttpStatusCode.OK, "成功");
} }
async Task<dynamic> Return_到缓存仓(PrdReturnInput input, WmsCarryH wmsCarryH, WmsPrdReturnH wmsPrdReturnH) async Task<Result> Return_到缓存仓(PrdReturnInput input, WmsCarryH wmsCarryH, WmsPrdReturnH wmsPrdReturnH)
{ {
try try
{ {
@@ -304,7 +304,7 @@ namespace Tnb.WarehouseMgr
await _db.Ado.BeginTranAsync(); await _db.Ado.BeginTranAsync();
// 标记为退料 // 标记为退料
int row2 =await _db.Updateable<WmsCarryH>().SetColumns(r => r.carry_status == ((int)(EnumCarryStatus.退)).ToString()).Where(r => r.id == wmsCarryH.id).ExecuteCommandAsync(); int row2 = await _db.Updateable<WmsCarryH>().SetColumns(r => r.carry_status == ((int)(EnumCarryStatus.退)).ToString()).Where(r => r.id == wmsCarryH.id).ExecuteCommandAsync();
if (row2 == 0) if (row2 == 0)
{ {
throw new AppFriendlyException($"【PrdReturn】 料架 {wmsCarryH.carry_code} 退料状态回写失败", 500); throw new AppFriendlyException($"【PrdReturn】 料架 {wmsCarryH.carry_code} 退料状态回写失败", 500);
@@ -335,9 +335,9 @@ namespace Tnb.WarehouseMgr
Logger.LogError("【PrdReturn】" + ex.Message); Logger.LogError("【PrdReturn】" + ex.Message);
Logger.LogError("【PrdReturn】" + ex.StackTrace); Logger.LogError("【PrdReturn】" + ex.StackTrace);
await _db.Ado.RollbackTranAsync(); await _db.Ado.RollbackTranAsync();
throw Oops.Bah(ex.Message); return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
} }
return await Task.FromResult(true); return await ToApiResult(HttpStatusCode.OK, "成功");
} }
public override async Task ModifyAsync(WareHouseUpInput input) public override async Task ModifyAsync(WareHouseUpInput input)

View File

@@ -145,7 +145,7 @@ namespace Tnb.WarehouseMgr
/// <returns></returns> /// <returns></returns>
/// <exception cref="AppFriendlyException"></exception> /// <exception cref="AppFriendlyException"></exception>
[HttpPost, NonUnify, AllowAnonymous] [HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> Distribute(SaleReleaseDistributeInput input) public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> Distribute(SaleReleaseDistributeInput input)
{ {
Logger.LogInformation($"【Distribute】 销售出库下发"); Logger.LogInformation($"【Distribute】 销售出库下发");
try try
@@ -359,7 +359,7 @@ namespace Tnb.WarehouseMgr
await _db.Ado.RollbackTranAsync(); await _db.Ado.RollbackTranAsync();
Logger.LogError($"【Distribute】 销售出库 {ex.Message}"); Logger.LogError($"【Distribute】 销售出库 {ex.Message}");
Logger.LogError($"【Distribute】 销售出库 {ex.StackTrace}"); Logger.LogError($"【Distribute】 销售出库 {ex.StackTrace}");
throw Oops.Bah(ex.Message); return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
} }
finally finally
{ {
@@ -367,7 +367,7 @@ namespace Tnb.WarehouseMgr
await InvokeGenPretaskExcute(); await InvokeGenPretaskExcute();
} }
return await Task.FromResult(true); return await ToApiResult(HttpStatusCode.OK, "成功");
} }
/// <summary> /// <summary>
@@ -376,7 +376,7 @@ namespace Tnb.WarehouseMgr
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost, NonUnify, AllowAnonymous] [HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> Sort(FinishproductOutstockSortInput input) public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> Sort(FinishproductOutstockSortInput input)
{ {
if (string.IsNullOrEmpty(input.source_id)) if (string.IsNullOrEmpty(input.source_id))
{ {
@@ -413,10 +413,14 @@ namespace Tnb.WarehouseMgr
catch (Exception ex) catch (Exception ex)
{ {
await _db.Ado.RollbackTranAsync(); await _db.Ado.RollbackTranAsync();
throw Oops.Bah(ex.Message); return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
} }
return await Task.FromResult(true); return await ToApiResult(HttpStatusCode.OK, "成功");
} }
} }
} }