盘点任务增加盘点签收配置

This commit is contained in:
2023-11-10 14:53:33 +08:00
parent ae2446eef0
commit 113f67b168
2 changed files with 109 additions and 4 deletions

View File

@@ -1,4 +1,5 @@
using System.Linq.Expressions;
using System.Linq;
using System.Linq.Expressions;
using JNPF.Common.Core.Manager;
using JNPF.Common.Dtos.VisualDev;
using JNPF.Common.Extension;
@@ -10,6 +11,7 @@ using JNPF.VisualDev;
using JNPF.VisualDev.Entitys;
using JNPF.VisualDev.Interfaces;
using Mapster;
using Newtonsoft.Json.Linq;
using SqlSugar;
using Tnb.BasicData.Entities;
using Tnb.WarehouseMgr.Entities;
@@ -127,9 +129,35 @@ namespace Tnb.WarehouseMgr
//生成预任务信息
if (details.Count > 0 && carryCodes.Count > 0)
{
string[] locTypes = new[] { ((int)EnumLocationType.).ToString(), ((int)EnumLocationType.).ToString() };
BasLocation[] endLocs = await _db.Queryable<BasLocation>().Where(it => it.wh_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString() && locTypes.Contains(it.is_type)).ToArrayAsync();
int randomIndex = new Random().Next(0, endLocs.GetUpperBound(0));
// 判断当前仓库是否有盘点签收配置
var wcsConf = await _db.Queryable<WmsCheckSignConfig>().Where(it => it.warehouse_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString() && it.enabled == 1)
.FirstAsync();
BasLocation[] endLocs = Array.Empty<BasLocation>();
int randomIndex = 0;
if (wcsConf != null)
{
if (wcsConf.location_id == null) {
throw new AppFriendlyException("盘点签收配置库位为空,请查看配置!", 500);
}
JArray? jsonArr = null;
jsonArr = JArray.Parse(wcsConf.location_id);
string?[] locArr = jsonArr.Select(x => x.ToObject<string>()).ToArray();
if (locArr != null)
{
endLocs = await _db.Queryable<BasLocation>().Where(it => it.wh_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString() && locArr.Contains(it.id)).ToArrayAsync();
randomIndex = new Random().Next(0, endLocs.GetUpperBound(0));
}
else {
throw new AppFriendlyException("盘点签收配置有误,请查看配置!", 500);
}
}
else {
string[] locTypes = new[] { ((int)EnumLocationType.).ToString(), ((int)EnumLocationType.).ToString() };
endLocs = await _db.Queryable<BasLocation>().Where(it => it.wh_id == input.data[nameof(WmsCheckstockH.warehouse_id)].ToString() && locTypes.Contains(it.is_type)).ToArrayAsync();
randomIndex = new Random().Next(0, endLocs.GetUpperBound(0));
}
List<WmsCarryH> carrys = await _db.Queryable<WmsCarryH>().Where(it => carryCodes.Select(x => x.carry_id).Distinct().Contains(it.id)).ToListAsync();
List<WmsCheckstockD> curDetails = details.DistinctBy(x => x.carry_id).ToList();
List<WmsCarryCode> curCarryCodes = carryCodes.FindAll(x => curDetails.Select(d => d.carry_id).Contains(x.carry_id));