using CMS.Plugin.HIAWms.Application.Contracts.Dtos.CommonDto;
|
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsEnumDto;
|
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialType;
|
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsStore;
|
using CMS.Plugin.HIAWms.Application.Contracts.Services;
|
using CMS.Plugin.HIAWms.Domain.Shared.Enums;
|
using CMS.Plugin.HIAWms.Domain.WmsAreas;
|
using CMS.Plugin.HIAWms.Domain.WmsMaterials;
|
using CMS.Plugin.HIAWms.Domain.WmsMaterialTypes;
|
using CMS.Plugin.HIAWms.Domain.WmsPlaces;
|
using CMS.Plugin.HIAWms.Domain.WmsStores;
|
using CmsQueryExtensions;
|
using CmsQueryExtensions.Extension;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Linq.Expressions;
|
using System.Text;
|
using System.Threading.Tasks;
|
using CMS.Plugin.HIAWms.Domain.WmsMaterialTypes;
|
using static CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsArea.WmsAreaCreateOrUpdateDtoBase;
|
using static CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlace.WmsPlaceCreateOrUpdateDtoBase;
|
|
namespace CMS.Plugin.HIAWms.Application.Implements
|
{
|
/// <summary>
|
/// 枚举类型接口实现
|
/// </summary>
|
public class WmsEnumAppService : CMSPluginAppService, IWmsEnumAppService
|
{
|
private readonly IWmsStoreRepository _storeRepository;
|
private readonly IWmsAreaRepository _wmsAreaRepository;
|
private readonly IWmsPlaceRepository _wmsPlaceRepository;
|
private readonly IWmsMaterialRepository _wmsMaterialRepository;
|
private readonly IWmsMaterialTypeRepository _WmsMaterialTypeRepository;
|
|
public WmsEnumAppService(IWmsStoreRepository storeRepository, IWmsAreaRepository wmsAreaRepository, IWmsPlaceRepository wmsPlaceRepository, IWmsMaterialRepository wmsMaterialRepository, IWmsMaterialTypeRepository wmsMaterialTypeRepository)
|
{
|
_storeRepository = storeRepository;
|
_wmsAreaRepository = wmsAreaRepository;
|
_wmsPlaceRepository = wmsPlaceRepository;
|
_wmsMaterialRepository = wmsMaterialRepository;
|
_WmsMaterialTypeRepository = wmsMaterialTypeRepository;
|
}
|
|
public List<EnumItem> GetEnumDataList(WmsEnumInput enumInput)
|
{
|
return EnumHelper.GetEnumItems(enumInput.EnumName);
|
}
|
|
/// <summary>
|
/// 获取仓库列表
|
/// </summary>
|
/// <returns></returns>
|
public async Task<List<WmsStoreForAreaOutpur>> GetStreList()
|
{
|
var list = await _storeRepository.GetListForSelectAsync();
|
if (list == null || list.Count <= 0) { return new List<WmsStoreForAreaOutpur>(); }
|
|
var result = list.Select(x => new WmsStoreForAreaOutpur
|
{
|
StoreCode = x.StoreCode,
|
StoreName = x.StoreName,
|
}).ToList();
|
return result;
|
}
|
|
/// <summary>
|
/// 库区列表
|
/// </summary>
|
/// <returns></returns>
|
public async Task<List<AreaForListOuptut>> GetAreaListAsync()
|
{
|
var list = await _wmsAreaRepository.GetListForSelectAsync();
|
if (list == null || list.Count <= 0) { return new List<AreaForListOuptut>(); }
|
var result = list.Select(x => new AreaForListOuptut
|
{
|
AreaName = x.AreaName,
|
AreaNo = x.AreaNo,
|
}).ToList();
|
|
return result;
|
}
|
|
/// <summary>
|
/// 巷道列表
|
/// </summary>
|
/// <returns></returns>
|
public async Task<List<PlaceAisleForListOuptut>> GetAisleListAsync()
|
{
|
var list = await _wmsPlaceRepository.GetAisleListForSelectAsync();
|
if (list == null || list.Count <= 0) { return new List<PlaceAisleForListOuptut>(); }
|
|
var result = list.Select(x => new PlaceAisleForListOuptut
|
{
|
Aisle = x.Aisle,
|
AisleName = $"第{x.Aisle}巷道",
|
}).ToList();
|
|
return result;
|
}
|
|
/// <summary>
|
/// 获取机型
|
/// </summary>
|
/// <returns></returns>
|
public async Task<List<MaterialModelOutput>> GetMaterialModeListAsync()
|
{
|
var materialList = await _wmsMaterialRepository.GetMaterialListAsync(new WmsMaterial());
|
if (materialList == null || materialList.Count <= 0) return new List<MaterialModelOutput>();
|
|
return materialList.Select(material => new MaterialModelOutput
|
{
|
MaterialModel = material.MaterialModel,
|
MaterialModelDesc = material.MaterialModel
|
}).ToList();
|
}
|
|
|
/// <summary>
|
/// 获取库区列表
|
/// </summary>
|
/// <param name="cancellationToken"></param>
|
/// <returns></returns>
|
public async Task<List<PlaceListOutput>> GetPlaceListForSelectAsync(PlaceTypeEnum placeType)
|
{
|
var placeList = await _wmsPlaceRepository.GetPlaceListForSelectAsync(placeType);
|
if (placeList == null || placeList.Count <= 0) return new List<PlaceListOutput>(); ;
|
|
return placeList.Select(place => new PlaceListOutput
|
{
|
PlaceNo = place.PlaceNo,
|
PlaceNoDesc = place.PlaceNo
|
}).ToList();
|
}
|
|
/// <summary>
|
/// 获取类型列表
|
/// </summary>
|
/// <returns></returns>
|
public async Task<List<MaterialTypeOutput>> GetMaterialTypeListAsync()
|
{
|
var queryInput = new GetWmsMaterialTypeInput();
|
var whereConditions = DynamicGetQueryParams(queryInput);
|
var list = await _WmsMaterialTypeRepository.GetListAsync(whereConditions);
|
|
var result = new List<MaterialTypeOutput>();
|
if (list == null || list.Count <= 0) return result;
|
|
result = list.Select(x => new MaterialTypeOutput
|
{
|
MaterialTypeCode = x.MaterialTypeCode,
|
MaterialTypeDesc = x.MaterialTypeDesc,
|
}).ToList();
|
return result;
|
}
|
|
private FunReturnResultModel<Expression<Func<WmsMaterialType, bool>>> DynamicGetQueryParams(GetWmsMaterialTypeInput input)
|
{
|
//动态构造查询条件
|
var whereConditions = WhereConditionsExtensions.GetWhereConditions<WmsMaterialType, GetWmsMaterialTypeInput>(input);
|
if (!whereConditions.IsSuccess)
|
{
|
throw new Exception("动态构造查询条件失败:" + whereConditions.ErrMsg);
|
}
|
|
//也可再次自定义构建查询条件
|
Expression<Func<WmsMaterialType, bool>> extendExpression = a => a.IsDeleted == false;
|
// 使用 System.Linq.PredicateBuilder 的 And
|
var pres = (System.Linq.Expressions.Expression<Func<WmsMaterialType, bool>>)(whereConditions.data);
|
whereConditions.data = System.Linq.PredicateBuilder.And(pres, extendExpression);
|
|
return whereConditions;
|
}
|
}
|
}
|