模具保养计划执行模块代码提交

This commit is contained in:
DEVICE8\12494
2023-05-22 19:17:14 +08:00
parent 486d76e3d0
commit 6ee558a3e4
11 changed files with 441 additions and 180 deletions

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -128,6 +129,54 @@ namespace Tnb.ProductionMgr
}
return result;
}
/// <summary>
/// 获取停机历史记录
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpGet]
public async Task<dynamic> GetClosedownHistory([FromQuery] ClosedownHistoryQuery input)
{
var pagedList = await _db.Queryable<PrdCancelClosedownRecord>()
.WhereIF(!string.IsNullOrEmpty(input.eqpName), it => it.eqp_name.Contains(input.eqpName))
.WhereIF(input.beginTime.HasValue, it => it.closedown_start_time.Value == input.beginTime)
.WhereIF(input.endTime.HasValue, it => it.closedown_end_time.Value == input.endTime)
.Select(it => new ClosedownHistoryOutput
{
closedown_start_time = it.closedown_start_time,
closedown_end_time = it.closedown_end_time,
closedown_time = it.closedown_time,
})
.ToPagedListAsync(input.currentPage, input.pageSize);
return pagedList;
}
/// <summary>
/// 根据设备id获取生产任务单信息模具信息
/// </summary>
/// <param name="eqpId">设备Id</param>
/// <remarks>
/// returns:
/// <br/>{
/// <br/> mo_task_code:任务单编号
/// <br/> mold_code:模具编号
/// <br/> mold_name:模具名称
/// <br/>}
/// </remarks>
[HttpGet]
public async Task<dynamic> GetInfoFromEqpId([FromRoute] string eqpId)
{
dynamic info = new ExpandoObject();
var moTask = await _db.Queryable<PrdMoTask>().Where(it => it.mo_task_status == DictConst.InProgressEnCode).FirstAsync(it => it.eqp_id == eqpId);
if (moTask != null)
{
var mold = await _db.Queryable<ToolMolds>().FirstAsync(it => it.id == moTask.mo_id);
info.mo_task_code = moTask.mo_task_code;
info.mold_code = mold?.mold_code;
info.mold_name = mold?.mold_name;
}
return info;
}
/// <summary>
/// 异常停机-开始
@@ -145,7 +194,7 @@ namespace Tnb.ProductionMgr
var moTaskList = await _prdMoTaskService.GetListByEqpId(input.eqp_id);
if (moTaskList?.Count > 1) throw new AppFriendlyException($"设备{input.eqp_id},目前有两条进行中的生产任务", 500);
if (moTaskList.Count > 0)
if (moTaskList?.Count > 0)
{
var cancelCloseDown = input.Adapt<PrdCancelClosedown>();
cancelCloseDown.id = SnowflakeIdHelper.NextId();
@@ -155,7 +204,10 @@ namespace Tnb.ProductionMgr
cancelCloseDown.closedown_start_time = DateTime.Now;
await _db.Insertable(cancelCloseDown).ExecuteCommandAsync();
var eqp = await _db.Queryable<EqpEquipment>().FirstAsync(it => it.id == input.eqp_id);
var record = cancelCloseDown.Adapt<PrdCancelClosedownRecord>();
record.eqp_code = eqp?.code;
record.eqp_name = eqp?.name;
await _db.Insertable(record).ExecuteCommandAsync();
var moldId = moTaskList.First().mold_id;
@@ -179,13 +231,13 @@ namespace Tnb.ProductionMgr
{
Log.Error("停机开始失败", ex);
await _db.Ado.RollbackTranAsync();
throw ex;
throw;
}
}
/// <summary>
/// 停机结束
/// </summary>
/// <param name="maintainTaskId"></param>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task CloseDownEnd(CloseDownStartInput input)
@@ -196,46 +248,29 @@ namespace Tnb.ProductionMgr
{
await _db.Ado.BeginTranAsync();
var moTaskList = await _prdMoTaskService.GetListByEqpId(input.eqp_id);
if (moTaskList?.Count > 1) throw new AppFriendlyException($"设备{input.eqp_id},目前有两条进行中的生产任务", 500);
var cancelCloseDown = input.Adapt<PrdCancelClosedown>();
cancelCloseDown.id = SnowflakeIdHelper.NextId();
cancelCloseDown.create_id = _userManager.UserId;
cancelCloseDown.create_time = DateTime.Now;
cancelCloseDown.closedown_start_time = DateTime.Now;
var row = await _db.Insertable(cancelCloseDown).ExecuteCommandAsync();
var moldId = moTaskList.First().mold_id;
if (moldId.IsNullOrEmpty())
var closeDown = await _db.Queryable<PrdCancelClosedown>().Where(it => it.eqp_id == input.eqp_id).OrderByDescending(it => it.closedown_start_time).FirstAsync();
if (closeDown != null)
{
var mold = await _moldService.GetListById(moldId);
var maintaindTask = new ToolMoldMaintainTask();
maintaindTask.mold_id = moldId;
maintaindTask.code = DictConst.MaintainStatusYWCCode;
maintaindTask.create_id = _userManager.UserId;
maintaindTask.create_time = DateTime.Now;
closeDown.closedown_end_time = DateTime.Now;
await _db.Updateable(closeDown).ExecuteCommandAsync();
var record = closeDown.Adapt<PrdCancelClosedownRecord>();
//计算停机时间间隔,以小时为单位
if (record.closedown_start_time.HasValue && record.closedown_end_time.HasValue)
{
var interval = record.closedown_end_time.Value.Subtract(record.closedown_start_time.Value).TotalHours;
record.closedown_time = Convert.ToDecimal(interval);
}
await _db.Updateable(record).ExecuteCommandAsync();
await _maintainTaskService.Create(maintaindTask);
await _db.Ado.CommitTranAsync();
}
await _db.Ado.CommitTranAsync();
}
catch (Exception ex)
{
Log.Error("停机开始失败", ex);
Log.Error("停机结束失败", ex);
await _db.Ado.RollbackTranAsync();
throw;
}
//var row = await _db.Updateable<ToolMoldMaintainTask>().SetColumns(c => new ToolMoldMaintainTask
//{
// status = DictConst.MaintainStatusDWXCode,
// modify_id = _userManager.UserId,
// modify_end_time = DateTime.Now,
//})
// .ExecuteCommandAsync();
//if (row < 1) throw Oops.Oh(ErrorCode.COM1001);
}
}
}