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 JinianNet.JNTemplate.Nodes;
using MDM.Service;
namespace RIZO.Service.MES.recipe
{
///
/// 配方版本控制表Service业务层处理
///
[AppService(ServiceType = typeof(IPfRecipeVersionService), ServiceLifetime = LifeTime.Transient)]
public class PfRecipeVersionService : BaseService, IPfRecipeVersionService
{
private readonly PfRefProductRecipeService pfRefProductRecipeService = new PfRefProductRecipeService();
private readonly PfRecipeParametersService pfRecipeParametersService = new PfRecipeParametersService();
///
/// 查询配方版本控制表列表
///
///
///
public PagedInfo GetList(PfRecipeVersionQueryDto parm)
{
var predicate = QueryExp(parm);
var query = Context.Queryable((t, p) => new object[] {
JoinType.Inner, t.RecipeCode == p.RecipeCode })
.Where(predicate.ToExpression())
.Select((t, p) => new PfRecipeVersionDto
{
Id = t.Id,
RecipeCode = t.RecipeCode,
Version = t.Version,
Status = t.Status,
Sequence = t.Sequence,
ProductCode = p.Productcode,
ProductName = p.ProductName,
IssueStatus = SqlFunc.Subqueryable()
.Where(h => h.RecipeCode == t.RecipeCode && h.Version == t.Version)
.Any() ? 1 : 0
}).OrderByDescending(t => t.Sequence);
var response = query.ToPage(parm);
return response;
}
///
/// 获取详情
///
///
///
public PfRecipeVersion GetInfo(int Id)
{
var response = Queryable()
.Where(x => x.Id == Id)
.First();
return response;
}
///
/// 添加配方版本控制表
///
///
///
public PfRecipeVersion AddPfRecipeVersion(PfRecipeVersion model)
{
return Insertable(model).ExecuteReturnEntity();
}
///
/// 修改配方版本控制表
///
///
///
public int UpdatePfRecipeVersion(PfRecipeVersion model)
{
return Update(model, true);
}
///
/// 查询导出表达式
///
///
///
private static Expressionable QueryExp(PfRecipeVersionQueryDto parm)
{
var predicate = Expressionable.Create();
if (parm != null)
{
if (!string.IsNullOrEmpty(parm.RecipeCode))
{
predicate.And(t => t.RecipeCode == parm.RecipeCode);
}
if (!string.IsNullOrEmpty(parm.Version))
{
predicate.And(t => t.Version == parm.Version);
}
//if (!string.IsNullOrEmpty(parm.Status.ToString()))
//{
// predicate.And(t => t.Status == parm.Status);
//}
}
return predicate;
}
public ApiResult CreatePfRecipeVersionAndParameters(PfRecipeVersionDto parm)
{
try
{
int Sequence = 1;
var pfVersionMax = Queryable()
.Where(x => x.RecipeCode == parm.RecipeCode).OrderByDescending(x => x.Sequence).First();
if (pfVersionMax != null)
{
Sequence = pfVersionMax.Sequence;
Sequence += 1;
}
var pfVersion = Queryable().Where(x => x.RecipeCode == parm.RecipeCode && x.Version == parm.Version).First();
if (pfVersion != null)
{
return ApiResult.Error("该配方版本已存在!");
}
PfRecipeVersion pfRecipeVersion = new PfRecipeVersion();
List pfRecipeParametersList = new List();
pfRecipeVersion.RecipeCode = parm.RecipeCode;
pfRecipeVersion.Version = parm.Version;
pfRecipeVersion.Status = 1;
pfRecipeVersion.Sequence = Sequence;
pfRecipeVersion.CreatedBy = parm.CreatedBy;
pfRecipeVersion.CreatedTime = parm.CreatedTime;
pfRecipeVersion.UpdatedBy = parm.UpdatedBy;
pfRecipeVersion.UpdatedTime = parm.UpdatedTime;
foreach (var item in parm.RecipeParametersList)
{
PfRecipeParameters pfRecipeParameters = new PfRecipeParameters();
pfRecipeParameters.RecipeCode = parm.RecipeCode;
pfRecipeParameters.Version = parm.Version;
pfRecipeParameters.ParamName = item.ParamName;
pfRecipeParameters.Unit = item.Unit;
pfRecipeParameters.UpperLimit = item.UpperLimit;
pfRecipeParameters.LowerLimit = item.LowerLimit;
pfRecipeParameters.StandardValue = item.StandardValue;
pfRecipeParameters.Remark = item.Remark;
pfRecipeParameters.Ifcheck = item.Ifcheck;
pfRecipeParameters.CreatedBy = item.CreatedBy;
pfRecipeParameters.CreatedTime = item.CreatedTime;
pfRecipeParameters.UpdatedBy = item.UpdatedBy;
pfRecipeParameters.UpdatedTime = item.UpdatedTime;
pfRecipeParametersList.Add(pfRecipeParameters);
}
int iResult = Insert(pfRecipeVersion);
if (iResult > 0)
{
iResult = pfRecipeParametersService.Insert(pfRecipeParametersList);
return ApiResult.Success("操作成功!", pfRecipeParametersList);
}
else
{
return ApiResult.Error("操作失败!");
}
}
catch (Exception ex)
{
return ApiResult.Error(ex.Message);
}
}
public ApiResult QuerylatestVersion(PfRecipeVersionQueryDto parm)
{
var pfVersionMax = Queryable()
.Where(x => x.RecipeCode == parm.RecipeCode).OrderByDescending(x => x.Sequence).First();
if (pfVersionMax == null)
{
return ApiResult.Success("操作成功!", null);
}
else
{
var parametersList = pfRecipeParametersService.Queryable()
.Where(x => x.RecipeCode == pfVersionMax.RecipeCode && x.Version == pfVersionMax.Version)
.Select(x => new PfRecipeParametersDto
{
Id = x.Id,
RecipeCode = x.RecipeCode,
ParamName = x.ParamName,
Unit = x.Unit,
UpperLimit = x.UpperLimit,
LowerLimit = x.LowerLimit,
StandardValue = x.StandardValue,
Remark = x.Remark,
Ifcheck = x.Ifcheck,
})
.ToList();
if (parametersList != null && parametersList.Count > 0)
{
return ApiResult.Success("操作成功!", parametersList);
}
else
{
return ApiResult.Success("操作成功!", null);
}
}
}
public ApiResult DELPfRecipeVersion(PfRecipeVersionDto parm)
{
string recipeCode = parm.RecipeCode;
string version = parm.Version;
if (string.IsNullOrEmpty(recipeCode) || string.IsNullOrEmpty(version))
{
return ApiResult.Error("参数错误!");
}
var iResult = Deleteable()
.Where(x => x.RecipeCode == recipeCode && x.Version == version)
.ExecuteCommand();
if (iResult > 0)
{
pfRecipeParametersService.Deleteable()
.Where(x => x.RecipeCode == recipeCode && x.Version == version)
.ExecuteCommand();
return ApiResult.Success("操作成功!");
}
else
{
return ApiResult.Error("操作失败!");
}
}
}
}