液晶标签协议对接 接口业务实现
This commit is contained in:
@ -2,6 +2,8 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Security.Policy;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
@ -69,6 +71,7 @@ namespace WCS.BLL.Services.Service
|
||||
Message = $"操作失败:库位【{task.StoreCode}】当前在{task.TaskMode}!",
|
||||
};
|
||||
}
|
||||
|
||||
var tasks = new List<CurrentTask>();
|
||||
//生成任务数据
|
||||
foreach (var orderDetail in request.List)
|
||||
@ -106,7 +109,7 @@ namespace WCS.BLL.Services.Service
|
||||
Message = $"操作失败:{ex.Message}"
|
||||
};
|
||||
}
|
||||
//发送任务至各个标签
|
||||
//发送任务至各个标签 交给后台线程来做
|
||||
return new ResponseCommon<object>
|
||||
{
|
||||
Code = 200,
|
||||
@ -131,15 +134,15 @@ namespace WCS.BLL.Services.Service
|
||||
//第一步:校验库位在数据库中是否都存在
|
||||
var storeCodeList = request.StoreCodes.Distinct()
|
||||
.ToList();
|
||||
var stores = DbHelp.db.Queryable<StoreInfo>()
|
||||
var modules = DbHelp.db.Queryable<ModuleInfo>()
|
||||
.LeftJoin<ShelfTypeInfo>((si, sti) => si.ShelfTypeId == sti.Id)
|
||||
.Where((si, sti) => sti.ShelfTypeName == "液晶货架")
|
||||
.Where((si, sti) => storeCodeList.Contains(si.StoreCode))
|
||||
.Select((st, sti) => st)
|
||||
.Where((si, sti) => sti.ShelfTypeName == "液晶标签货架")
|
||||
.Where((si, sti) => storeCodeList.Contains(si.ModuleCode))
|
||||
.Select((si, sti) => si)
|
||||
.ToList();
|
||||
if (stores.Count < storeCodeList.Count)
|
||||
if (modules.Count < storeCodeList.Count)
|
||||
{
|
||||
var storeCodesInDB = stores.Select(t => t.StoreCode).ToList();
|
||||
var storeCodesInDB = modules.Select(t => t.ModuleCode).ToList();
|
||||
storeCodeList.RemoveAll(t => storeCodesInDB.Contains(t));
|
||||
return new ResponseCommon
|
||||
{
|
||||
@ -147,7 +150,38 @@ namespace WCS.BLL.Services.Service
|
||||
Message = $"操作失败:库位【{string.Join(",", storeCodeList)}】不存在!",
|
||||
};
|
||||
}
|
||||
//向WMS系统获取对应库位最新的库存信息、更新至电子标签
|
||||
//第二步:获取到对应货架
|
||||
var shelfs = modules.Select(t => new
|
||||
{
|
||||
ShelfId = t.ShelfId,
|
||||
ModuId = t.Id
|
||||
})
|
||||
.GroupBy(t => t.ShelfId)
|
||||
.Select(g => new
|
||||
{
|
||||
ShelfId = g.Key,
|
||||
ModuIds = g.Select(t => t.ModuId).ToList()
|
||||
})
|
||||
.ToList();
|
||||
//标记对应的模组为需要刷新
|
||||
foreach (var shelf in shelfs)
|
||||
{
|
||||
var shelfInMemory = ShelfManager.Shelves.Where(t => t.ShelfTypeName == "液晶标签货架")
|
||||
.Where(t => t.ShelfId == shelf.ShelfId)
|
||||
.FirstOrDefault();
|
||||
if (shelfInMemory == null)
|
||||
{
|
||||
Logs.Write($"[后台APi refreshInventoryRequest]通过{shelf.ShelfId}在内存缓存中查找货架失败!");
|
||||
continue;
|
||||
}
|
||||
//将内存中对应模组置为需要刷新!
|
||||
var modulesInMemory = shelfInMemory.MXL4Modules.Where(t => shelf.ModuIds.Contains(t.ModuleId))
|
||||
.ToList();
|
||||
modulesInMemory.ForEach(t =>
|
||||
{
|
||||
t.IsNeedRefresh = true;
|
||||
});
|
||||
}
|
||||
return new ResponseCommon
|
||||
{
|
||||
Code = 200,
|
||||
|
Reference in New Issue
Block a user