using RIZO.Model;
using RIZO.Model.MES.recipe;
using RIZO.Model.MES.recipe.Dto;
using RIZO.Repository;
using RIZO.Service.MES.recipe.IService;
using Infrastructure.Attribute;
using Infrastructure.Extensions;
using Infrastructure.Model;
using MDM.Service;
namespace RIZO.Service.MES.recipe
{
///
/// 配方下达记录表Service业务层处理
///
[AppService(ServiceType = typeof(IPfRecipeIssueLogService), ServiceLifetime = LifeTime.Transient)]
public class PfRecipeIssueLogService : BaseService, IPfRecipeIssueLogService
{
private readonly PfRecipeParametersService pfRecipeParametersService = new PfRecipeParametersService();
///
/// 查询配方下达记录表列表
///
///
///
public PagedInfo GetList(PfRecipeIssueLogQueryDto parm)
{
var predicate = QueryExp(parm);
var response = Queryable()
.Where(predicate.ToExpression())
.ToPage(parm);
return response;
}
///
/// 获取详情
///
///
///
public PfRecipeIssueLog GetInfo(int Id)
{
var response = Queryable()
.Where(x => x.Id == Id)
.First();
return response;
}
///
/// 添加配方下达记录表
///
///
///
public PfRecipeIssueLog AddPfRecipeIssueLog(PfRecipeIssueLog model)
{
return Insertable(model).ExecuteReturnEntity();
}
///
/// 修改配方下达记录表
///
///
///
public int UpdatePfRecipeIssueLog(PfRecipeIssueLog model)
{
return Update(model, true);
}
///
/// 查询导出表达式
///
///
///
private static Expressionable QueryExp(PfRecipeIssueLogQueryDto parm)
{
var predicate = Expressionable.Create();
if (parm != null)
{
if (!string.IsNullOrEmpty(parm.RecipeCode))
{
predicate = predicate.And(it => it.RecipeCode == parm.RecipeCode);
}
if (!string.IsNullOrEmpty(parm.Version))
{
predicate = predicate.And(it => it.Version == parm.Version);
}
if (parm.StartTime != null && parm.StartTime > DateTime.MinValue)
{
predicate = predicate.And(it => it.CreatedTime >= parm.StartTime);
}
if (parm.EndTime != null && parm.EndTime > DateTime.MinValue)
{
predicate = predicate.And(it => it.CreatedTime <= parm.EndTime);
}
}
return predicate;
}
public ApiResult IssueRecipe(PfRecipeIssueLog model)
{
try
{
if (string.IsNullOrEmpty(model.RecipeCode) || string.IsNullOrEmpty(model.Version))
{
return new ApiResult(210, "参数不可为空", -1);
}
var parmeterlist = pfRecipeParametersService.Queryable()
.Where(x => x.RecipeCode == model.RecipeCode && x.Version == model.Version).ToList();
if (!parmeterlist.Any())
{
return new ApiResult(210, "该配方未配置参数", -1);
}
bool bResult = sendRecipeByMqtt(parmeterlist);
if (!bResult)
{
return new ApiResult(210, "发送配方失败", -1);
}
else
{
int iResult = Insertable(model).ExecuteReturnIdentity();
return new ApiResult(200, "操作成功");
}
}
catch (Exception ex)
{
return new ApiResult(210,ex.ToString());
}
}
private bool sendRecipeByMqtt(List parmeterlist)
{
//实现MQTT发送配方到上位机
return true;
}
}
}