Files
tnb.server/WarehouseMgr/Tnb.WarehouseMgr/WmsFeedingService.cs
alex b8b040981b 1
2023-07-17 13:36:20 +08:00

61 lines
2.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
using Mapster;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using Tnb.BasicData.Entities;
using Tnb.WarehouseMgr.Entities;
using Tnb.WarehouseMgr.Entities.Consts;
using Tnb.WarehouseMgr.Entities.Dto;
using Tnb.WarehouseMgr.Interfaces;
namespace Tnb.WarehouseMgr
{
/// <summary>
/// 投料记录
/// </summary>
public class WmsFeedingService : BaseWareHouseService, IWmsFeedingService
{
private readonly ISqlSugarClient _db;
private static Dictionary<string, object> dicMaterial = new Dictionary<string, object>();
public WmsFeedingService(ISqlSugarRepository<WmsFeedingrecordH> repository)
{
_db = repository.AsSugarClient();
}
/// <summary>
/// 根据载具Id获取载具条码记录
/// </summary>
/// <param name="carryId"></param>
/// <returns></returns>
[HttpGet]
public async Task<dynamic> GetCarryCodeList([FromRoute] string carryId)
{
if (dicMaterial.Count < 1)
{
dicMaterial = await _db.Queryable<BasMaterial>().ToDictionaryAsync(x => x.id, x => x.name);
}
var carry = await _db.Queryable<WmsCarryH>().SingleAsync(it => it.id == carryId);
List<string> carryMIds = new();
if (carry.carrystd_id == WmsWareHouseConst.CARRY_LJSTD_ID)
{
var carryDs = await _db.Queryable<WmsCarryD>().Where(it => it.carry_id == carryId).ToListAsync();
carryMIds = carryDs.Select(x => x.membercarry_id).ToList();
}
Expression<Func<WmsCarryCode, bool>> whereExp = carryMIds?.Count > 0 ? a => carryMIds.Contains(a.carry_id) : a => a.carry_id == carryId;
var items = await _db.Queryable<WmsCarryCode>().Where(whereExp)
.Select<CarryCodeDetailOutput>()
.Mapper(it => it.material_name = (it.material_id != null && dicMaterial.ContainsKey(it.material_id)) ? dicMaterial[it.material_id].ToString() : "")
.ToListAsync();
return items ?? Enumerable.Empty<dynamic>();
}
}
}