using Admin.NET.Core.Service;
|
using Admin.NET.Application.Entity;
|
using Microsoft.AspNetCore.Http;
|
namespace Admin.NET.Application;
|
/// <summary>
|
/// 业务类型服务
|
/// </summary>
|
[ApiDescriptionSettings(ApplicationConst.WmsBaseGroupName, Order = 100)]
|
public class WmsBaseBusinessTypeService : IDynamicApiController, ITransient
|
{
|
private readonly SqlSugarRepository<WmsBaseBusinessType> _rep;
|
private readonly SqlSugarRepository<WmsOrderAsn> _repWmsOrderAsn;
|
private readonly SqlSugarRepository<WmsOrderMovement> _repWmsOrderMovement;
|
private readonly SqlSugarRepository<WmsOrderPurchase> _repWmsOrderPurchase;
|
private readonly SqlSugarRepository<WmsOrderDeliver> _repWmsOrderDeliver;
|
private readonly SqlSugarRepository<WmsOrderSort> _repWmsOrderSort;
|
private readonly SqlSugarRepository<WmsOrderQc> _repWmsOrderQc;
|
|
public WmsBaseBusinessTypeService(SqlSugarRepository<WmsBaseBusinessType> rep,
|
SqlSugarRepository<WmsOrderAsn> repWmsOrderAsn,
|
SqlSugarRepository<WmsOrderMovement> repWmsOrderMovement,
|
SqlSugarRepository<WmsOrderPurchase> repWmsOrderPurchase,
|
SqlSugarRepository<WmsOrderDeliver> repWmsOrderDeliver, SqlSugarRepository<WmsOrderSort> repWmsOrderSort, SqlSugarRepository<WmsOrderQc> repWmsOrderQc
|
)
|
{
|
_rep = rep;
|
_repWmsOrderAsn = repWmsOrderAsn;
|
_repWmsOrderMovement = repWmsOrderMovement;
|
_repWmsOrderPurchase = repWmsOrderPurchase;
|
_repWmsOrderDeliver = repWmsOrderDeliver;
|
_repWmsOrderSort = repWmsOrderSort;
|
_repWmsOrderQc = repWmsOrderQc;
|
}
|
|
/// <summary>
|
/// 分页查询业务类型
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost]
|
[ApiDescriptionSettings(Name = "Page")]
|
[Description("WmsBaseBusinessType/Page")]
|
public async Task<SqlSugarPagedList<WmsBaseBusinessTypeOutput>> Page(WmsBaseBusinessTypeInput input)
|
{
|
var query = CommonPageFilter(input);
|
return await query.OrderBuilder(input, "", "BusinessTypeValue", false).ToPagedListAsync(input.Page, input.PageSize);
|
}
|
|
/// <summary>
|
/// 不分页查询业务类型
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpGet]
|
[ApiDescriptionSettings(Name = "List")]
|
[Description("WmsBaseBusinessType/List")]
|
public async Task<List<WmsBaseBusinessTypeOutput>> List([FromQuery] WmsBaseBusinessTypeInput input)
|
{
|
var query = CommonPageFilter(input);
|
return await query.OrderBuilder(input, "", "BusinessTypeValue", false).Select<WmsBaseBusinessTypeOutput>().ToListAsync();
|
}
|
|
/// <summary>
|
/// 增加业务类型
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost]
|
[ApiDescriptionSettings(Name = "Add")]
|
[Description("WmsBaseBusinessType/Add")]
|
public async Task<long> Add(AddWmsBaseBusinessTypeInput input)
|
{
|
var entity = input.Adapt<WmsBaseBusinessType>();
|
entity.MoveTypeName = entity.MoveType.GetDescription();
|
if (!entity.IsSystemParameter.HasValue)
|
{
|
entity.IsSystemParameter = false;
|
}
|
|
if (entity.IsSystemParameter == true)
|
{
|
throw Oops.Oh("不允许增加是否系统参数为是的业务类型!");
|
}
|
|
//重复性验证
|
await CheckExist(entity);
|
//验证业务类型值是否以移动类型枚举值开头
|
await CheckValue(entity);
|
await _rep.InsertAsync(entity);
|
return entity.Id;
|
}
|
|
/// <summary>
|
/// 删除业务类型
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost]
|
[ApiDescriptionSettings(Name = "Delete")]
|
[Description("WmsBaseBusinessType/Delete")]
|
public async Task Delete(DeleteWmsBaseBusinessTypeInput input)
|
{
|
|
|
var BusinessTypeModel = await _rep.AsQueryable().FirstAsync(p => p.Id == input.Id);
|
|
if (BusinessTypeModel?.IsSystemParameter == true) throw Oops.Oh("系统配置的业务类型不允许删除!");
|
var count = 0;
|
if (await _repWmsOrderAsn.AsQueryable().AnyAsync(p => p.BusinessType == BusinessTypeModel.BusinessTypeValue))
|
{
|
count++;
|
}
|
if (await _repWmsOrderMovement.AsQueryable().AnyAsync(p => (int)p.BusinessType == BusinessTypeModel.BusinessTypeValue))
|
{
|
count++;
|
}
|
if (await _repWmsOrderPurchase.AsQueryable().AnyAsync(p => (int)p.BusinessType == BusinessTypeModel.BusinessTypeValue))
|
{
|
count++;
|
}
|
if (await _repWmsOrderDeliver.AsQueryable().AnyAsync(p => (int)p.BusinessType == BusinessTypeModel.BusinessTypeValue))
|
{
|
count++;
|
}
|
if (await _repWmsOrderSort.AsQueryable().AnyAsync(p => (int)p.BusinessType == BusinessTypeModel.BusinessTypeValue))
|
{
|
count++;
|
}
|
if (await _repWmsOrderQc.AsQueryable().AnyAsync(p => (int)p.BusinessType == BusinessTypeModel.BusinessTypeValue))
|
{
|
count++;
|
}
|
if (count > 0) throw Oops.Oh("不可删除此业务类型,已有关联信息!!");
|
|
var entity = await _rep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
|
//await _rep.FakeDeleteAsync(entity); //假删除
|
await _rep.DeleteAsync(entity); //真删除
|
}
|
|
/// <summary>
|
/// 更新业务类型
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost]
|
[ApiDescriptionSettings(Name = "Update")]
|
[Description("WmsBaseBusinessType/Update")]
|
public async Task Update(UpdateWmsBaseBusinessTypeInput input)
|
{
|
var BusinessTypeModel = await _rep.AsQueryable().FirstAsync(p => p.Id == input.Id);
|
|
if (BusinessTypeModel?.IsSystemParameter == true) throw Oops.Oh("系统配置的业务类型不允许修改!");
|
|
var entity = input.Adapt<WmsBaseBusinessType>();
|
entity.MoveTypeName = entity.MoveType.GetDescription();
|
if (!entity.IsSystemParameter.HasValue)
|
{
|
entity.IsSystemParameter = false;
|
}
|
else
|
if (entity.IsSystemParameter == true)//
|
{
|
throw Oops.Oh("系统参数不允许修改!");
|
}
|
|
//重复性验证
|
await CheckExist(entity, true);
|
//验证业务类型值是否以移动类型枚举值开头
|
await CheckValue(entity);
|
await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
|
}
|
|
/// <summary>
|
/// 获取业务类型
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpGet]
|
[ApiDescriptionSettings(Name = "Detail")]
|
[Description("WmsBaseBusinessType/Detail")]
|
public async Task<WmsBaseBusinessType> Detail([FromQuery] QueryByIdWmsBaseBusinessTypeInput input)
|
{
|
return await _rep.GetFirstAsync(u => u.Id == input.Id);
|
}
|
|
|
|
|
|
#region 私有方法
|
|
/// <summary>
|
/// 公共查询业务类型条件
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
private ISugarQueryable<WmsBaseBusinessTypeOutput> CommonPageFilter(WmsBaseBusinessTypeInput input)
|
{
|
var query = _rep.AsQueryable()
|
.WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u =>
|
u.BusinessTypeName.Contains(input.SearchKey.Trim())
|
|| u.MoveTypeName.Contains(input.SearchKey.Trim())
|
|| u.MoveTypeCode.Contains(input.SearchKey.Trim())
|
//|| u.CreateUserName.Contains(input.SearchKey.Trim())
|
//|| u.UpdateUserName.Contains(input.SearchKey.Trim())
|
)
|
.WhereIF(input.BusinessTypeValue.HasValue, u => u.BusinessTypeValue == input.BusinessTypeValue)
|
.WhereIF(!string.IsNullOrWhiteSpace(input.BusinessTypeName), u => u.BusinessTypeName.Contains(input.BusinessTypeName.Trim()))
|
.WhereIF(input.MoveType.HasValue, u => u.MoveType == input.MoveType)
|
.WhereIF(input.IsDisabled.HasValue, u => u.IsDisabled == input.IsDisabled)
|
.WhereIF(input.UpDownShelvesType.HasValue, u => u.UpDownShelvesType == input.UpDownShelvesType)
|
.WhereIF(input.IsSystemParameter.HasValue, u => u.IsSystemParameter == input.IsSystemParameter)
|
.WhereIF(input.DownShelvesIsAutoFinish.HasValue, u => u.DownShelvesIsAutoFinish == input.DownShelvesIsAutoFinish)
|
.WhereIF(input.IsDisabled.HasValue, u => u.IsDisabled == input.IsDisabled)
|
.Select<WmsBaseBusinessTypeOutput>();
|
return query;
|
}
|
|
/// <summary>
|
/// 重复性验证
|
/// </summary>
|
/// <param name="input">验证对象</param>
|
/// <param name="isEdit">是否是编辑</param>
|
/// <returns></returns>
|
private async Task CheckExist(WmsBaseBusinessType input, bool isEdit = false)
|
{
|
|
|
//输出数据已存在错误
|
ErrorCodeItemMetadataAttribute metadata = ErrorCodeEnum.D1006.GetErrorCodeItemMetadata();
|
|
WmsBaseBusinessType _existItem = null;
|
if (!isEdit)//新增
|
{
|
_existItem = await _rep.GetFirstAsync(u => u.BusinessTypeValue.Equals(input.BusinessTypeValue));
|
if (_existItem != null) throw Oops.Oh($"业务类型[{input.BusinessTypeValue}]{metadata.ErrorMessage}");
|
|
_existItem = await _rep.GetFirstAsync(u => u.BusinessTypeName.Equals(input.BusinessTypeName));
|
if (_existItem != null) throw Oops.Oh($"业务类型名称[{input.BusinessTypeName}]{metadata.ErrorMessage}");
|
}
|
else//编辑
|
{
|
//当前编辑数据以外是否存在重复
|
_existItem = await _rep.GetFirstAsync(u => u.Id != input.Id && u.BusinessTypeValue.Equals(input.BusinessTypeValue));
|
if (_existItem != null) throw Oops.Oh($"业务类型[{input.BusinessTypeValue}]{metadata.ErrorMessage}");
|
_existItem = await _rep.GetFirstAsync(u => u.Id != input.Id && u.BusinessTypeName.Equals(input.BusinessTypeName));
|
if (_existItem != null) throw Oops.Oh($"业务类型名称[{input.BusinessTypeName}]{metadata.ErrorMessage}");
|
}
|
}
|
#endregion
|
|
/// <summary>
|
/// //验证业务类型值是否以移动类型枚举值开头
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
private async Task CheckValue(WmsBaseBusinessType input)
|
{
|
string businessType = input.BusinessTypeValue.ToString();
|
string moveType = ((int)input.MoveType).ToString();
|
if (!businessType.StartsWith(moveType))
|
{
|
|
throw Oops.Oh($"移动类型是{input.MoveType.GetDescription()} 业务类型值[{input.BusinessTypeValue}]必须是以{moveType}开头");
|
|
}
|
|
|
}
|
|
}
|