using Infrastructure.Attribute;
using Infrastructure.Extensions;
using Infrastructure.Model;
using RIZO.Model.Mes.Dto.WorkOrderInfo;
using RIZO.Model.Mes.MasterData;
using RIZO.Model.Mes.WorkOrderInfo;
using RIZO.Repository;
using RIZO.Service.Mes.IMesService.WorkOrderInfo;
namespace RIZO.Service.Mes.WorkOrderInfo
{
///
/// 工单从表(存储工单所需物料明细及物料流转状态)Service业务层处理
///
[AppService(ServiceType = typeof(IWorkOrderItemService), ServiceLifetime = LifeTime.Transient)]
public class WorkOrderItemService : BaseService, IWorkOrderItemService
{
private PlcFirstCodeService plcFirstCodeService = new PlcFirstCodeService();
///
/// 查询工单从表(存储工单所需物料明细及物料流转状态)列表
///
///
///
public PagedInfo GetList(WorkOrderItemQueryDto parm)
{
var predicate = QueryExp(parm);
var response = Queryable()
.Where(predicate.ToExpression())
.ToPage(parm);
return response;
}
public PagedInfo GetWorkOrderItemByCode(WorkOrderItemQueryDto parm)
{
var predicate = QueryExpByWorkOrderCode(parm);
var response = Queryable()
.Where(predicate.ToExpression())
.ToPage(parm);
return response;
}
public PagedInfo GetListExport(WorkOrderItemQueryDto parm)
{
var predicate = QueryExpExport(parm);
var response = Queryable()
.Where(predicate.ToExpression())
.ToPage(parm);
return response;
}
///
/// 获取详情
///
///
///
public WorkOrderItem GetInfo(long Id)
{
var response = Queryable()
.Where(x => x.Id == Id)
.First();
return response;
}
///
/// 添加工单从表(存储工单所需物料明细及物料流转状态)
///
///
///
public WorkOrderItem AddWorkOrderItem(WorkOrderItem model)
{
return Insertable(model).ExecuteReturnEntity();
}
///
/// 修改工单从表(存储工单所需物料明细及物料流转状态)
///
///
///
public int UpdateWorkOrderItem(WorkOrderItem model)
{
return Update(model, true);
}
///
/// 查询导出表达式
///
///
///
private static Expressionable QueryExp(WorkOrderItemQueryDto parm)
{
var predicate = Expressionable.Create();
if (!string.IsNullOrWhiteSpace(parm.ProcessName))
{
predicate.And(it => it.ProcessName.Contains(parm.ProcessName));
}
if (!string.IsNullOrWhiteSpace(parm.ProcessCode))
{
predicate.And(it => it.ProcessCode.Contains(parm.ProcessCode));
}
if (!string.IsNullOrWhiteSpace(parm.WorkOrderCode))
{
predicate.And(it => it.ProcessCode.Contains(parm.WorkOrderCode));
}
return predicate;
}
private static Expressionable QueryExpByWorkOrderCode(WorkOrderItemQueryDto parm)
{
var predicate = Expressionable.Create();
if (!string.IsNullOrWhiteSpace(parm.WorkOrderCode))
{
predicate.And(it => it.WorkOrderCode.Contains(parm.WorkOrderCode));
}
return predicate;
}
///
/// 查询导出表达式
///
///
///
private static Expressionable QueryExpExport(WorkOrderItemQueryDto parm)
{
var predicate = Expressionable.Create();
if (parm.StartTime != null && parm.StartTime.ToString().Length > 0)
{
predicate.And(it => it.CreateTime >= parm.StartTime);
}
if (parm.EndTime != null && parm.EndTime.ToString().Length > 0)
{
predicate.And(it => it.CreateTime < parm.EndTime);
}
return predicate;
}
public ApiResult CreateWorkOrderItemBySacnCode(PartsBasketCard partsBasketCard)
{
try
{
//if (string.IsNullOrWhiteSpace(json))
//{
// return ApiResult.Error(400, "扫码数据为空,请重新扫码");
//}
////字符串转对象
//PartsBasketCard partsBasketCard = new PartsBasketCard();
//try
//{
// partsBasketCard = JsonConvert.DeserializeObject(json);
//}
//catch (Exception ex)
//{
// return ApiResult.Error(400, "扫码数据格式错误,无法解析");
//}
string plcCode = "";
PlcFirstCode plcFirstCode = plcFirstCodeService.Queryable()
.Where(it => it.Character == partsBasketCard.Character).First();
string strPlcFirstCode = "";
if (plcFirstCode != null)
{
strPlcFirstCode = plcFirstCode.FirstCode;
}
int Sequcence = 1;
WorkOrderItem workOrderItem = Queryable()
.Where(it => it.WorkOrderCode == partsBasketCard.WorkOrderCode).OrderByDescending(it => it.Sequcence).First();
if (workOrderItem != null)
{
Sequcence = workOrderItem.Sequcence;
Sequcence += 1;
}
string formattedSequence = Sequcence.ToString("D2");
string strWorkOrderItemCode = partsBasketCard.WorkOrderCode + formattedSequence;
plcCode = strPlcFirstCode + strWorkOrderItemCode;
WorkOrderItem workOrderItem1 = new WorkOrderItem();
workOrderItem1.WorkOrderCode = partsBasketCard.WorkOrderCode;
workOrderItem1.WorkOrderItemCode = strWorkOrderItemCode;
workOrderItem1.PlcCode = plcCode;
workOrderItem1.FirstInspection = partsBasketCard.FirstInspection;
workOrderItem1.LineCode = partsBasketCard.LineCode;
workOrderItem1.LineName = partsBasketCard.LineName;
workOrderItem1.ProcessCode = partsBasketCard.ProcessCode;
workOrderItem1.ProcessName = partsBasketCard.ProcessName;
workOrderItem1.Character = partsBasketCard.Character;
workOrderItem1.IfClean = partsBasketCard.IfClean;
workOrderItem1.CreateBy = partsBasketCard.UserId;
workOrderItem1.CreateName = partsBasketCard.UserName;
workOrderItem1.UpdateBy = partsBasketCard.UserId;
workOrderItem1.UpdateName = partsBasketCard.UserName;
workOrderItem1.CreateTime = DateTime.Now;
workOrderItem1.UpdateTime = DateTime.Now;
workOrderItem1.Sequcence = Sequcence;
int iFlag = Insert(workOrderItem1);
if (iFlag > 0)
{
return ApiResult.Success(workOrderItem1);
}
else
{
return ApiResult.Error("工单明细创建失败");
}
}
catch (Exception ex)
{
return ApiResult.Error("工单明细创建失败" + ex.ToString());
}
}
public string GetFirstInspectionResult(String strWorkOrderItemCode)
{
string strResult = "首检不合格";
var workOrderItem = Queryable().Where(it => it.WorkOrderItemCode == strWorkOrderItemCode).First();
if (workOrderItem != null)
{
if (workOrderItem.FirstInspectionResult != null && workOrderItem.FirstInspectionResult == 1)
{
strResult = "首检合格";
}
}
return strResult;
}
}
}