电梯下发逻辑变更

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;
}
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];
@@ -1274,7 +1281,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
// 找到没有绑定料架的且库位未锁定的料架区
ISugarQueryable<WmsMechanicalArmH> WmsMechanicalArmHsuagar = db_Floor2timer送满托到下升降区.Queryable<WmsMechanicalArmH>()
.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();
@@ -1284,7 +1291,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
return;
}
await db_Floor2timer送满托到下升降区.Ado.BeginTranAsync();
// 料架区
foreach (WmsMechanicalArmH wmsMechanicalArmH in WmsMechanicalArmHs)
@@ -1352,6 +1359,14 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA
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];

View File

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

View File

@@ -10,6 +10,6 @@ namespace Tnb.WarehouseMgr.Interfaces
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)
{
await _db.Ado.BeginTranAsync();
Logger.Information($"【二楼机械臂Floor2MechanicalComplete】收到到货完成信号 传入参数: {disTask.bill_code} {action}");
Logger.Information($"【二楼机械臂Floor2MechanicalComplete】收到到货确认信号 传入参数: {disTask.bill_code} {action}");
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();
//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
//{
// 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);
//同电梯组电梯
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))
{
throw new AppFriendlyException("电梯被禁用或未配置", 500);
}
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);
}
}
// //同电梯组电梯
// 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))
// {
// throw new AppFriendlyException("电梯被禁用或未配置", 500);
// }
// 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;
}
// }
// }
//}
//catch (Exception ex)
//{
// Logger.Error("路径算法异常", ex);
// throw;
//}
return points;
}

View File

@@ -48,7 +48,7 @@ namespace Tnb.WarehouseMgr
/// </param>
/// <returns></returns>
[HttpPost]
public async Task<dynamic> Instock(WmsEmptycarryInstockServiceInstockInput input)
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> Instock(WmsEmptycarryInstockServiceInstockInput input)
{
try
{
@@ -108,14 +108,14 @@ namespace Tnb.WarehouseMgr
await _db.Ado.CommitTranAsync();
return await Task.FromResult(true);
return await ToApiResult(HttpStatusCode.OK, "成功");
}
catch (Exception ex)
{
Logger.LogInformation("【WmsEmptycarryInstockService-Instock】" + ex.Message);
Logger.LogInformation("【WmsEmptycarryInstockService-Instock】" + ex.StackTrace);
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>
/// <exception cref="AppFriendlyException"></exception>
[HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> Distribute(MaterialTransferDistributeInput input)
public async Task<Entities.Dto.Outputs.Result> Distribute(MaterialTransferDistributeInput input)
{
try
{
@@ -421,7 +421,7 @@ namespace Tnb.WarehouseMgr
await _db.Ado.RollbackTranAsync();
Logger.LogError("【Distribute】" + ex.Message);
Logger.LogError("【Distribute】" + ex.StackTrace);
throw Oops.Bah(ex.Message);
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
}
finally
{
@@ -429,7 +429,7 @@ namespace Tnb.WarehouseMgr
InvokeGenPretaskExcute();
}
return await Task.FromResult(true);
return await ToApiResult(HttpStatusCode.OK, "成功");
}
/// <summary>
@@ -439,7 +439,7 @@ namespace Tnb.WarehouseMgr
/// <returns></returns>
/// <exception cref="AppFriendlyException"></exception>
[HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> DistributeHCC(MaterialTransferDistributeInput input)
public async Task<Entities.Dto.Outputs.Result> DistributeHCC(MaterialTransferDistributeInput input)
{
try
{
@@ -571,7 +571,7 @@ namespace Tnb.WarehouseMgr
await _db.Ado.RollbackTranAsync();
Logger.LogError("【Distribute】" + ex.Message);
Logger.LogError("【Distribute】" + ex.StackTrace);
throw Oops.Bah(ex.Message);
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
}
finally
{
@@ -579,7 +579,7 @@ namespace Tnb.WarehouseMgr
InvokeGenPretaskExcute();
}
return await Task.FromResult(true);
return await ToApiResult(HttpStatusCode.OK, "成功");
}
/// <summary>
@@ -645,7 +645,7 @@ namespace Tnb.WarehouseMgr
/// <returns></returns>
/// <exception cref="AppFriendlyException"></exception>
[HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> DistributeBCK(MaterialTransferDistributeInput input)
public async Task<Entities.Dto.Outputs.Result> DistributeBCK(MaterialTransferDistributeInput input)
{
try
{
@@ -759,7 +759,7 @@ namespace Tnb.WarehouseMgr
await _db.Ado.RollbackTranAsync();
Logger.LogError("【Distribute】" + ex.Message);
Logger.LogError("【Distribute】" + ex.StackTrace);
throw Oops.Bah(ex.Message);
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
}
finally
{
@@ -767,7 +767,7 @@ namespace Tnb.WarehouseMgr
InvokeGenPretaskExcute();
}
return await Task.FromResult(true);
return await ToApiResult(HttpStatusCode.OK, "成功");
}
@@ -910,7 +910,7 @@ namespace Tnb.WarehouseMgr
/// <returns></returns>
/// <exception cref="AppFriendlyException"></exception>
[HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> DistributeToZCC(MaterialTransferDistributeToZCCInput input)
public async Task<Entities.Dto.Outputs.Result> DistributeToZCC(MaterialTransferDistributeToZCCInput input)
{
s_taskDistributeToZCC.Wait();
@@ -1036,14 +1036,14 @@ namespace Tnb.WarehouseMgr
await _db.Ado.RollbackTranAsync();
Logger.LogError("【DistributeToZCC】" + ex.Message);
Logger.LogError("【DistributeToZCC】" + ex.StackTrace);
throw Oops.Bah(ex.Message);
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
}
finally
{
s_taskDistributeToZCC.Release();
InvokeGenPretaskExcute();
}
return await Task.FromResult(true);
return await ToApiResult(HttpStatusCode.OK, "成功");
}
/// <summary>
@@ -1053,7 +1053,7 @@ namespace Tnb.WarehouseMgr
/// <returns></returns>
/// <exception cref="AppFriendlyException"></exception>
[HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> CallRackToProductionLine(MaterialTransferCallRackToProductionLineInput input)
public async Task<Entities.Dto.Outputs.Result> CallRackToProductionLine(MaterialTransferCallRackToProductionLineInput input)
{
try
{
@@ -1155,10 +1155,10 @@ namespace Tnb.WarehouseMgr
{
Logger.LogError("【CallRackToProductionLine】" + ex.Message);
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>
@@ -1168,7 +1168,7 @@ namespace Tnb.WarehouseMgr
/// <returns></returns>
/// <exception cref="AppFriendlyException"></exception>
[HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> RackAndMatByWorkstation(MaterialTransferGetRackAndMatByWorkStationInput input)
public async Task<Entities.Dto.Outputs.Result> RackAndMatByWorkstation(MaterialTransferGetRackAndMatByWorkStationInput input)
{
try
{
@@ -1222,13 +1222,13 @@ namespace Tnb.WarehouseMgr
pairs["details"] = JArray.Parse(JsonConvert.SerializeObject(matCodes));
jArray.Add(pairs);
}
return Task.FromResult(true);
return await ToApiResult(HttpStatusCode.OK, jArray);
}
catch (Exception ex)
{
Logger.LogError("【RackAndMatByWorkstation】" + ex.Message);
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>
/// <returns></returns>
[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();
@@ -1255,11 +1255,11 @@ namespace Tnb.WarehouseMgr
else
{
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
{
@@ -1362,12 +1362,12 @@ namespace Tnb.WarehouseMgr
Logger.LogError("【RackInstock】" + ex.Message);
Logger.LogError("【RackInstock】" + ex.StackTrace);
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
{
@@ -1421,9 +1421,9 @@ namespace Tnb.WarehouseMgr
Logger.LogError("【RackInstock】" + ex.Message);
Logger.LogError("【RackInstock】" + ex.StackTrace);
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>

View File

@@ -40,7 +40,7 @@ namespace Tnb.WarehouseMgr
private readonly IWmsCarryUnbindService _wmsCarryUnbindService;
private readonly IWmsCarryService _wmsCarryService;
public WmsPDACarryBindService(
ISqlSugarRepository<WmsCarryH> repository,
@@ -163,7 +163,7 @@ namespace Tnb.WarehouseMgr
/// <returns></returns>
/// <exception cref="AppFriendlyException"></exception>
[HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> OutsourcedPartsInstock(OutsourcedPartsInstockInput input)
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> OutsourcedPartsInstock(OutsourcedPartsInstockInput input)
{
try
{
@@ -204,7 +204,7 @@ namespace Tnb.WarehouseMgr
}
WmsPointH sPoint = null!;
WmsPointH ePoint = null!;
sPoint = await _db.Queryable<WmsPointH>().FirstAsync(it => it.location_id == input.startlocation_id);
if (endLocations?.Count > 0)
{
@@ -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();
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();
@@ -360,7 +360,7 @@ namespace Tnb.WarehouseMgr
catch (Exception ex)
{
await _db.Ado.RollbackTranAsync();
throw Oops.Bah(ex.Message);
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
}
finally
{
@@ -368,7 +368,7 @@ namespace Tnb.WarehouseMgr
await InvokeGenPretaskExcute();
}
return await Task.FromResult(true);
return await ToApiResult(HttpStatusCode.OK, "成功");
}
/// <summary>
@@ -377,7 +377,7 @@ namespace Tnb.WarehouseMgr
/// <param name="input"></param>
/// <returns></returns>
[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}");
if (string.IsNullOrEmpty(input.carry_code))
@@ -414,7 +414,7 @@ namespace Tnb.WarehouseMgr
throw new AppFriendlyException($"库位id {wmsCarryH.location_id}没有对应的库位基础资料!", 500);
}
WmsDistaskH wmsDistaskH = _db.Queryable<WmsDistaskH>().Where(r => r.carry_code == input.carry_code && r.endlocation_id == location.id
WmsDistaskH wmsDistaskH = _db.Queryable<WmsDistaskH>().Where(r => r.carry_code == input.carry_code && r.endlocation_id == location.id
&& r.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID && r.status != WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID).First();
if (wmsDistaskH != null)
{
@@ -458,12 +458,12 @@ namespace Tnb.WarehouseMgr
Logger.Error($"【FinishproductOutstockSign】 {ex.Message}");
Logger.Error($"【FinishproductOutstockSign】 {ex.StackTrace}");
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>
/// <exception cref="AppFriendlyException"></exception>
[HttpPost, NonUnify, AllowAnonymous]
public async Task<dynamic> PackInstock(OutsourcedPartsInstockInput input)
public async Task<Tnb.WarehouseMgr.Entities.Dto.Outputs.Result> PackInstock(OutsourcedPartsInstockInput input)
{
try
{
@@ -180,10 +180,6 @@ namespace Tnb.WarehouseMgr
}
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
{
@@ -318,7 +314,7 @@ namespace Tnb.WarehouseMgr
Logger.LogError($"【PackInstock】 {ex.Message}");
Logger.LogError($"【PackInstock】 {ex.StackTrace}");
await _db.Ado.RollbackTranAsync();
throw Oops.Bah(ex.Message);
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
}
finally
{
@@ -326,7 +322,7 @@ namespace Tnb.WarehouseMgr
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>
/// <returns></returns>
[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();
if (wmsPrdReturnH == null)
@@ -93,12 +93,12 @@ namespace Tnb.WarehouseMgr
else
{
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
{
@@ -134,15 +134,15 @@ namespace Tnb.WarehouseMgr
BasLocation endlocation = rackEndLocations.First();
var memberCarryCodes = _db.Queryable<WmsCarryH>()
.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
{
carry_code = a.carry_code,
barcode = b.barcode,
material_id = b.material_id,
material_code = b.material_code,
}).ToList();
var memberCarryCodes = _db.Queryable<WmsCarryH>()
.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
{
carry_code = a.carry_code,
barcode = b.barcode,
material_id = b.material_id,
material_code = b.material_code,
}).ToList();
List<string> matIds = memberCarryCodes.Select(r => r.material_id).Distinct().ToList();
@@ -177,7 +177,7 @@ namespace Tnb.WarehouseMgr
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)
{
throw new AppFriendlyException($"【PrdReturn】 料架 {wmsCarryH.carry_code} 退料状态回写失败", 500);
@@ -228,12 +228,12 @@ namespace Tnb.WarehouseMgr
Logger.LogError("【PrdReturn】" + ex.Message);
Logger.LogError("【PrdReturn】" + ex.StackTrace);
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
{
@@ -304,7 +304,7 @@ namespace Tnb.WarehouseMgr
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)
{
throw new AppFriendlyException($"【PrdReturn】 料架 {wmsCarryH.carry_code} 退料状态回写失败", 500);
@@ -335,9 +335,9 @@ namespace Tnb.WarehouseMgr
Logger.LogError("【PrdReturn】" + ex.Message);
Logger.LogError("【PrdReturn】" + ex.StackTrace);
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)

View File

@@ -145,7 +145,7 @@ namespace Tnb.WarehouseMgr
/// <returns></returns>
/// <exception cref="AppFriendlyException"></exception>
[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】 销售出库下发");
try
@@ -163,7 +163,7 @@ namespace Tnb.WarehouseMgr
await s_taskExecuteSemaphore.WaitAsync();
await _db.Ado.BeginTranAsync();
//入库取终点 //出库起点
OutStockStrategyQuery inStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_CP_ID, material_id = wmsOutstockD.material_id, qty = input.qty, code_batch = wmsOutstockD.code_batch };
OutStockStrategyQuery inStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_CP_ID, material_id = wmsOutstockD.material_id, qty = input.qty, code_batch = wmsOutstockD.code_batch };
List<Tuple<string, WmsCarryH, WmsCarryCode, BasLocation>> items = await _wareHouseService.OutStockStrategy_saleRelease(inStockStrategyInput);
decimal canOutstockQty = items.Sum(r => r.Item3.codeqty).ParseToDecimal();
@@ -359,7 +359,7 @@ namespace Tnb.WarehouseMgr
await _db.Ado.RollbackTranAsync();
Logger.LogError($"【Distribute】 销售出库 {ex.Message}");
Logger.LogError($"【Distribute】 销售出库 {ex.StackTrace}");
throw Oops.Bah(ex.Message);
return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message);
}
finally
{
@@ -367,7 +367,7 @@ namespace Tnb.WarehouseMgr
await InvokeGenPretaskExcute();
}
return await Task.FromResult(true);
return await ToApiResult(HttpStatusCode.OK, "成功");
}
/// <summary>
@@ -376,7 +376,7 @@ namespace Tnb.WarehouseMgr
/// <param name="input"></param>
/// <returns></returns>
[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))
{
@@ -413,10 +413,14 @@ namespace Tnb.WarehouseMgr
catch (Exception ex)
{
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, "成功");
}
}
}