using Infrastructure.App;
using Infrastructure.Attribute;
using Model.Dto.WarehouseManagement;
using Model.WarehouseManagement;
using Service.Interface.WarehouseManagement;
using Microsoft.AspNetCore.Hosting;
namespace Service.WarehouseManagement
[AppService(ServiceType = typeof(IWarehouseService), ServiceLifetime = LifeTime.Transient)]
public class WarehouseService : BaseService<Warehouse>, IWarehouseService
public long AddWarehouse(Warehouse warehouse, string userName)
warehouse.Create_by = userName;
warehouse.Create_time = DateTime.Now;
return InsertReturnBigIdentity(warehouse);
public long DeleteWarehouse(long warehouseId)
return Delete(warehouseId);
public (string, string) DownloadImportTemplate()
IWebHostEnvironment webHostEnvironment = (IWebHostEnvironment)App.ServiceProvider.GetService(typeof(IWebHostEnvironment));
string sFileName = "仓库信息.xlsx";
string fullPath = Path.Combine(webHostEnvironment.WebRootPath, "ImportTemplate", sFileName);
return (sFileName, fullPath);
public long EidtWarehouse(Warehouse warehouse, string userName)
warehouse.Update_by = userName;
warehouse.Update_time = DateTime.Now;
return Update(warehouse);
public PagedInfo GetAllWarehouses(WarehouseQueryDto warehouseQueryDto)
var expression = Expressionable.Create()
.AndIF(!string.IsNullOrEmpty(warehouseQueryDto.WarehouseName), warehouse => warehouse.WarehouseName.Contains(warehouseQueryDto.WarehouseName))
.AndIF(!string.IsNullOrEmpty(warehouseQueryDto.City), warehouse => warehouse.City.Contains(warehouseQueryDto.City))
.AndIF(!string.IsNullOrEmpty(warehouseQueryDto.Manager), warehouse => warehouse.Manager.Contains(warehouseQueryDto.Manager))
.AndIF(warehouseQueryDto.BeginTime != DateTime.MinValue && warehouseQueryDto.BeginTime != null, exp => exp.Create_time >= warehouseQueryDto.BeginTime)
.AndIF(warehouseQueryDto.EndTime != DateTime.MaxValue && warehouseQueryDto.EndTime != null, exp => exp.Create_time <= warehouseQueryDto.EndTime);
.Where(expression.ToExpression())
.ToPage(warehouseQueryDto);
public List GetAllWarehouses()
public Warehouse GetWarehouse(long warehouseId)
.Where(it => it.WarehouseId == warehouseId)
public (string, object) ImportWarehouses(List warehouse)
var storage = Context.Storageable(warehouse)
.SplitUpdate(it => it.Any())
.SplitError(it => string.IsNullOrEmpty(it.Item.WarehouseName), "仓库名称不能为空")
.SplitError(it => string.IsNullOrEmpty(it.Item.Manager), "负责人不能为空")
.SplitError(it => string.IsNullOrEmpty(it.Item.ContactTel), "联系方式不能为空")
.WhereColumns(it => it.WarehouseName)
storage.AsInsertable.ExecuteCommand();
storage.AsUpdateable.ExecuteCommand();
string msg = string.Format(" 插入{0} 更新{1} 错误{2} 不计算{3} 删除{4} 总共{5}",
storage.InsertList.Count,
storage.UpdateList.Count,
storage.IgnoreList.Count,
storage.DeleteList.Count,
storage.TotalList.Count);
foreach (var item in storage.ErrorList)
Console.WriteLine("userName为" + item.Item.WarehouseName + " : " + item.StorageMessage);
return (msg, storage.ErrorList);
public bool IsOtherUse(long warehouseId)
var regionQuery = Context
.Where(it => it.WarehouseId == warehouseId)
.Select(it => (object)new { Name = it.RegionName });
var locationQuery = Context
.Where(it => it.WarehouseId == warehouseId)
.Select(it => (object)new { Name = it.LocationCode });
.UnionAll(regionQuery, locationQuery)
