Files
tnb.server/EquipMgr/Tnb.EquipMgr/ToolMoldMaintainTaskService.cs
2024-08-14 17:25:53 +08:00

163 lines
6.5 KiB
C#

using JNPF.Common.Core.Manager;
using JNPF.Common.Enums;
using JNPF.Common.Extension;
using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
using JNPF.FriendlyException;
using JNPF.VisualDev;
using JNPF.VisualDev.Entitys;
using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
using JNPF.VisualDev.Interfaces;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using Tnb.EquipMgr.Entities;
using Tnb.EquipMgr.Entities.Dto;
using Tnb.EquipMgr.Entities.Enums;
using Tnb.EquipMgr.Interfaces;
namespace Tnb.EquipMgr
{
/// <summary>
/// 模具维修任务接口
/// </summary>
[ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 700)]
[Route("api/[area]/[controller]/[action]")]
[OverideVisualDev(ModuleId)]
public class ToolMoldMaintainTaskService : IOverideVisualDevService, IToolMoldMaintainTaskService, IDynamicApiController, ITransient
{
private const string ModuleId = "26189001337381";
private readonly ISqlSugarClient _db;
private readonly IRunService _runService;
private readonly IVisualDevService _visualDevService;
private static Dictionary<string, (string code, string name)> _dicMold = new();
private readonly IUserManager _userManager;
public ToolMoldMaintainTaskService(
ISqlSugarRepository<ToolMoldMaintainTask> repository,
IRunService runService,
IVisualDevService visualDevService,
IUserManager userManager
)
{
_db = repository.AsSugarClient();
_runService = runService;
_visualDevService = visualDevService;
OverideFuncs.GetListAsync = GetList;
_userManager = userManager;
//OverideFuncs.CreateAsync = Create;
}
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
private async Task<dynamic> GetList(VisualDevModelListQueryInput input)
{
if (_dicMold.Count < 1)
{
List<ToolMolds> items = await _db.Queryable<ToolMolds>().ToListAsync();
_dicMold = items?.ToDictionary(x => x.id, x => (x.mold_code, x.mold_name))!;
}
VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true);
JNPF.Common.Filter.PageResult<Dictionary<string, object>> data = await _runService.GetListResult(templateEntity, input);
if (data?.list.Count > 0)
{
foreach (Dictionary<string, object> row in data.list)
{
object pair = row[nameof(ToolMoldMaintainTask.mold_id)];
if (pair.IsNotEmptyOrNull())
{
if (_dicMold.TryGetValue(pair.ToString(), out (string code, string name) multi))
{
row[nameof(ToolMoldMaintainTask.mold_id)] = $"{multi.code}/{multi.name}";
}
}
}
}
return data!;
}
public async Task Create(ToolMoldMaintainTask entity)
{
int row = await _db.Insertable(entity).ExecuteCommandAsync();
if (row < 1)
{
throw Oops.Oh(ErrorCode.COM1000);
}
}
/// <summary>
/// 修改任务单状态
/// </summary>
/// <param name="input">输入参数</param>
/// <returns></returns>
[HttpPost]
public async Task UpdateStatus(MaintainStatusUpInput input)
{
DateTime? beginTiem = DateTime.Now;
DateTime? endTime = null;
if (input.status.ToEnum<MaintainStatus>() == MaintainStatus.YWC)
{
endTime = DateTime.Now;
}
int row = await _db.Updateable<ToolMoldMaintainTask>().SetColumns(it => new ToolMoldMaintainTask { status = input.status, modify_strat_time = beginTiem, modify_end_time = endTime })
.Where(it => input.ids.Contains(it.id)).ExecuteCommandAsync();
if (row < 1)
{
throw Oops.Oh(ErrorCode.COM1001);
}
}
/// <summary>
/// 开始维修
/// </summary>
/// <param name="input">输入参数</param>
/// <returns></returns>
[HttpPost]
public async Task StartWx(MoldStartWxInput input)
{
DateTime? StartTime = DateTime.Now;
int row = await _db.Updateable<ToolMoldMaintainTask>().SetColumns(it => new ToolMoldMaintainTask { status = "WXZ", modify_strat_time = StartTime, modify_id = _userManager.UserId })
.Where(it => input.id == it.id).ExecuteCommandAsync();
if (row < 1)
{
throw Oops.Oh(ErrorCode.COM1001);
}
}
[HttpPost]
public async Task<string> RepeatRepair(MaintainRecordRepeatInput input)
{
ToolMoldMaintainTask toolMoldMaintainTask = await _db.Queryable<ToolMoldMaintainTask>().SingleAsync(x => x.id == input.id);
if (toolMoldMaintainTask.status != "FHZ")
{
throw Oops.Bah("状态错误");
}
DbResult<bool> result = await _db.Ado.UseTranAsync(async () =>
{
await _db.Updateable<ToolMoldMaintainTask>()
.SetColumns(x => x.repeat_result == input.repeat_result)
.SetColumns(x => x.repeat_descrip == input.repeat_descrip)
.SetColumns(x=>x.repeat_user_id==_userManager.UserId)
.SetColumns(x=>x.repeat_time==DateTime.Now)
.Where(x => x.id == input.id)
.ExecuteCommandAsync();
if (toolMoldMaintainTask.scrap_qty > 0)
{
ToolMolds toolMolds = await _db.Queryable<ToolMolds>().SingleAsync(x=>x.id==toolMoldMaintainTask.mold_id);
if (toolMolds.mold_cavity < toolMoldMaintainTask.scrap_qty)
{
throw Oops.Bah("报废数量大于有效模穴数");
}
await _db.Updateable<ToolMolds>()
.SetColumns(x => x.mold_cavity == x.mold_cavity - toolMoldMaintainTask.scrap_qty)
.Where(x => x.id == toolMolds.id)
.ExecuteCommandAsync();
}
});
return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : result.IsSuccess ? "复核成功" : result.ErrorMessage;
}
}
}