Files
tnb.server/BasicData/Tnb.BasicData/BasRouteService.cs
2023-05-09 17:25:33 +08:00

106 lines
4.0 KiB
C#

using JNPF.Common.Core.Manager;
using JNPF.Common.Enums;
using JNPF.Common.Filter;
using JNPF.Common.Security;
using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
using JNPF.FriendlyException;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using Tnb.BasicData.Entities;
using Tnb.BasicData.Interfaces;
using Tnb.BasicData.Entities.Dto;
namespace Tnb.BasicData
{
/// <summary>
/// 物料清单
/// </summary>
[ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 701)]
[Route("api/[area]/[controller]/[action]")]
public class BasRouteService : IBasRouteService,IDynamicApiController, ITransient
{
private readonly ISqlSugarRepository<BasRouteH> _repository;
public BasRouteService(
UserManager userManager,
ISqlSugarRepository<BasRouteH> repository)
{
_repository = repository;
}
/// <summary>
/// 发布工艺路线
/// </summary>
/// <param name="parameters">工艺路线id id</param>
[HttpPost]
public async Task Publish(Dictionary<string, string> parameters)
{
string id = parameters["id"];
await _repository.UpdateAsync(x => new BasRouteH()
{
status = "1",
}, x => x.id == id);
}
/// <summary>
/// 复制工艺路线
/// </summary>
/// <param name="parameters">工艺路线id id</param>
[HttpPost]
public async Task<string> Copy(Dictionary<string, string> parameters)
{
string id = parameters["id"];
BasRouteH basRouteH = await _repository.GetByIdAsync(id);
List<BasRouteD> basRouteDs = await _repository.AsSugarClient().Queryable<BasRouteD>().Where(x => x.route_id == id).ToListAsync();
string newId = SnowflakeIdHelper.NextId();
basRouteH.id = newId;
basRouteH.code += "_复制的请修改";
basRouteH.name += "_复制的请修改";
DbResult<bool> result = await _repository.AsSugarClient().Ado.UseTranAsync(async () =>
{
await _repository.InsertAsync(basRouteH);
foreach (BasRouteD basRouteD in basRouteDs)
{
basRouteD.id = SnowflakeIdHelper.NextId();
basRouteD.route_id = newId;
}
await _repository.AsSugarClient().Insertable<BasRouteD>(basRouteDs).ExecuteCommandAsync();
});
if(!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008);
return result.IsSuccess ? "复制成功" : result.ErrorMessage;
}
/// <summary>
/// 获取有效的已发布的工艺路线
/// </summary>
/// <param name="parameters"></param>
[HttpPost]
public async Task<dynamic> GetValidRouteList([FromBody]PageInputBase pageInputBase)
{
var db = _repository.AsSugarClient();
var result = await db.Queryable<BasRouteH>()
.Where(x => x.status == "1" && ((x.start_time != null && x.start_time.Value <= DateTime.Now && x.end_time != null && x.end_time.Value>=DateTime.Now)
|| (x.start_time==null && x.end_time>=DateTime.Now)
|| (x.end_time==null && x.start_time<=DateTime.Now)
|| (x.start_time == null && x.end_time == null)
))
.Select(x=>new VaildRouteOutput()
{
id = x.id,
code = x.code,
name = x.name,
start_time = x.start_time,
end_time = x.end_time,
}).ToPagedListAsync(pageInputBase.currentPage, pageInputBase.pageSize);
return PageResult<VaildRouteOutput>.SqlSugarPageResult(result);
}
}
}