1、新增出入库策略函数
2、调整更新空载具函数,删除多余参数
This commit is contained in:
@@ -577,46 +577,54 @@ namespace Tnb.WarehouseMgr
|
||||
{
|
||||
var roads = await _db.Queryable<WmsRoad>().ToListAsync();
|
||||
var points = await LocPathCalcAlgorithms(pStartId, pEndId, roads);
|
||||
|
||||
if (points.FindAll(x => x.location_code != null && x.location_code.Contains("ELE"))?.Count > 0)
|
||||
try
|
||||
{
|
||||
//查询当前电梯点
|
||||
var curEleDs = await _db.Queryable<WmsElevatorD>().Where(it => points.Select(x => x.id).Contains(it.point_id)).ToListAsync();
|
||||
//如果有电梯点,则会进行电梯的均匀分配
|
||||
if (curEleDs?.Count > 0)
|
||||
if (points.FindAll(x => x.location_code != null && x.location_code.Contains("ELE"))?.Count > 0)
|
||||
{
|
||||
//当前电梯
|
||||
var curEle = await _db.Queryable<WmsElevatorH>().SingleAsync(it => it.id == curEleDs.First().bill_id && it.status == 1) ?? throw new AppFriendlyException("电梯被禁用", 500);
|
||||
//同电梯组电梯
|
||||
var sGpEle = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.status == 1).ToListAsync();
|
||||
//判断电梯组中各电梯任务数
|
||||
if (sGpEle.FindAll(x => Math.Abs(x.task_nums - curEle.task_nums) % 2 == 1)?.Count > 0)
|
||||
//查询当前电梯点
|
||||
var curEleDs = await _db.Queryable<WmsElevatorD>().Where(it => points.Select(x => x.id).Contains(it.point_id)).ToListAsync();
|
||||
//如果有电梯点,则会进行电梯的均匀分配
|
||||
if (curEleDs?.Count > 0)
|
||||
{
|
||||
var sGpDs = await _db.Queryable<WmsElevatorD>().Where(it => it.bill_id == sGpEle.First().id).ToListAsync();
|
||||
if (sGpDs?.Count > 0)
|
||||
//当前电梯
|
||||
var curEle = await _db.Queryable<WmsElevatorH>().SingleAsync(it => it.id == curEleDs.First().bill_id && it.status == 1);
|
||||
if (curEle == null) throw new AppFriendlyException("电梯被禁用或未配置", 500);
|
||||
//同电梯组电梯
|
||||
var sGpEle = await _db.Queryable<WmsElevatorH>().Where(it => it.elevator_group == curEle.elevator_group && it.id != curEle.id && it.status == 1).ToListAsync();
|
||||
//判断电梯组中各电梯任务数
|
||||
if (sGpEle.FindAll(x => Math.Abs(x.task_nums - curEle.task_nums) % 2 == 1)?.Count > 0)
|
||||
{
|
||||
var sGpPoints = await _db.Queryable<WmsPointH>().Where(it => sGpDs.Select(x => x.point_id).Contains(it.id)).ToListAsync();
|
||||
var sFEndId = sGpDs.Single(x => x.floor == curEleDs.First().floor).point_id;
|
||||
var eFStartId = sGpDs.Single(x => x.floor == curEleDs.Last().floor).point_id;
|
||||
var sFPoints = await LocPathCalcAlgorithms(pStartId, sFEndId, roads);
|
||||
List<WmsPointH> elePoints = new();
|
||||
foreach (var pt in curEleDs)
|
||||
var sGpDs = await _db.Queryable<WmsElevatorD>().Where(it => it.bill_id == sGpEle.First().id).ToListAsync();
|
||||
if (sGpDs?.Count > 0)
|
||||
{
|
||||
var elePoint = sGpPoints.Find(x => x.floor == pt.floor);
|
||||
if (elePoint != null)
|
||||
elePoints.Add(elePoint);
|
||||
var sGpPoints = await _db.Queryable<WmsPointH>().Where(it => sGpDs.Select(x => x.point_id).Contains(it.id)).ToListAsync();
|
||||
var sFEndId = sGpDs.Single(x => x.floor == curEleDs.First().floor).point_id;
|
||||
var eFStartId = sGpDs.Single(x => x.floor == curEleDs.Last().floor).point_id;
|
||||
var sFPoints = await LocPathCalcAlgorithms(pStartId, sFEndId, roads);
|
||||
List<WmsPointH> elePoints = new();
|
||||
foreach (var pt in curEleDs)
|
||||
{
|
||||
var elePoint = sGpPoints.Find(x => x.floor == pt.floor);
|
||||
if (elePoint != null)
|
||||
elePoints.Add(elePoint);
|
||||
}
|
||||
var 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);
|
||||
}
|
||||
var 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)
|
||||
{
|
||||
throw;
|
||||
}
|
||||
|
||||
return points;
|
||||
}
|
||||
|
||||
@@ -69,8 +69,8 @@ namespace Tnb.WarehouseMgr
|
||||
var data = new CarryQueryOutput();
|
||||
try
|
||||
{
|
||||
var carry = await _db.Queryable<WmsCarryH>().SingleAsync(it => it.carry_code == input.carry_code);
|
||||
if (carry.IsNull()) throw new AppFriendlyException($"编号{input.carry_code},对应载具不存在", 500);
|
||||
var carry = await _db.Queryable<WmsCarryH>().SingleAsync(it => it.carry_code == input.carry_code && it.status == 1);
|
||||
if (carry.IsNull()) throw new AppFriendlyException($"编号{input.carry_code},对应载具不存在或被禁用", 500);
|
||||
List<WmsCarryCode> carryCodes = new();
|
||||
var carryDsLst = await _db.Queryable<WmsCarryD>().Where(it => it.carry_id == carry.id).ToListAsync();
|
||||
if (carry.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID && carryDsLst?.Count > 0)
|
||||
|
||||
@@ -110,8 +110,8 @@ namespace Tnb.WarehouseMgr
|
||||
if (carryCodesPart?.Count > 0)
|
||||
{
|
||||
|
||||
carryCodes.AddRange(carryCodesPart);
|
||||
var codeQty = carryCodes.Sum(x => x.codeqty);
|
||||
|
||||
var codeQty = carryCodesPart.Sum(x => x.codeqty);
|
||||
if (codeQty < os.pr_qty)
|
||||
{
|
||||
throw new AppFriendlyException($"需要出库[{os.pr_qty}],实际库存{codeQty},数量不足", 500);
|
||||
@@ -132,6 +132,7 @@ namespace Tnb.WarehouseMgr
|
||||
break;
|
||||
}
|
||||
}
|
||||
carryCodes.AddRange(curCarryCodes);
|
||||
var partCarryMats = curCarryCodes.Adapt<List<WmsCarryMat>>();
|
||||
for (int i = 0; i < partCarryMats.Count; i++)
|
||||
{
|
||||
@@ -655,6 +656,7 @@ namespace Tnb.WarehouseMgr
|
||||
osd.qty += dic[osd.id].Sum(d => d);
|
||||
if (osd.qty >= osd.pr_qty)
|
||||
{
|
||||
osd.qty = osd.pr_qty;
|
||||
osd.line_status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID;
|
||||
}
|
||||
else
|
||||
@@ -704,9 +706,8 @@ namespace Tnb.WarehouseMgr
|
||||
await _db.Updateable(carryCode).UpdateColumns(it => it.codeqty).ExecuteCommandAsync();
|
||||
}
|
||||
}
|
||||
await _db.Updateable<WmsCarryH>().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.正常).ToString() }).Where(it => input.carryIds.Contains(it.id)).ExecuteCommandAsync();
|
||||
var row = await _db.Updateable<WmsCarryH>().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.正常).ToString() }).Where(it => input.carryIds.Contains(it.id)).ExecuteCommandAsync();
|
||||
await _db.Deleteable<WmsCarryMat>().Where(it => input.carryIds.Contains(it.carry_id)).ExecuteCommandAsync();
|
||||
|
||||
}
|
||||
if (delBarcodes.Count > 0)
|
||||
{
|
||||
|
||||
@@ -104,7 +104,7 @@ namespace Tnb.WarehouseMgr
|
||||
loginType = "web",
|
||||
bizTypeId = disTask.biz_type,
|
||||
requireId = disTask!.require_id!,
|
||||
carryIds = new List<string> { input.carryId },
|
||||
carryIds = new List<string> { carry!.id },
|
||||
distaskCodes = input.distaskCodes
|
||||
};
|
||||
await DoUpdate(upInput); //回更业务
|
||||
@@ -132,6 +132,7 @@ namespace Tnb.WarehouseMgr
|
||||
var isSuccessFul = false;
|
||||
if (input.IsNull()) throw new ArgumentNullException("input");
|
||||
var signInput = input.Adapt<SignForDeliveryInput>();
|
||||
if (signInput.carryId.IsNotEmptyOrNull()) signInput.carryId = "";
|
||||
try
|
||||
{
|
||||
await SignForDelivery(signInput);
|
||||
|
||||
@@ -20,6 +20,7 @@ using JNPF.Systems.Interfaces.System;
|
||||
using Mapster;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
||||
using SqlSugar;
|
||||
using Tnb.BasicData.Entities;
|
||||
using Tnb.WarehouseMgr.Entities;
|
||||
@@ -341,8 +342,6 @@ namespace Tnb.WarehouseMgr
|
||||
if (input.IsNull()) throw new ArgumentNullException(nameof(input));
|
||||
try
|
||||
{
|
||||
|
||||
|
||||
await _db.Ado.BeginTranAsync();
|
||||
List<WmsKittingoutD> kittingOutDs = new();
|
||||
var kittingOuts = input.Adapt<List<WmsKittingoutH>>();
|
||||
@@ -372,6 +371,7 @@ namespace Tnb.WarehouseMgr
|
||||
kittingOutDs.AddRange(d);
|
||||
}
|
||||
}
|
||||
|
||||
await _db.Insertable(kittingOuts).ExecuteCommandAsync();
|
||||
await _db.Insertable(kittingOutDs).ExecuteCommandAsync();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user