using Estsh.Core.Model.EnumUtil;
using Estsh.Core.Models;
using Estsh.Core.Quartz.BaseService;
using Estsh.Core.Util;
using Estsh.Core.Wms.IRepositories;
namespace Estsh.Core.Wms.Jobs
{
///
/// 处理成品下线报工业务--滑轨
///
public class OutPdlineHGJob : IJobService
{
private readonly IOutPdlineHgRepository repository;
private readonly IPdlineRepository pdlineRepository;
private readonly IBomRepository bomRepository;
public OutPdlineHGJob(IOutPdlineHgRepository _repository,
IPdlineRepository _pdlineRepository,
IBomRepository _bomRepository)
{
this.repository = _repository;
this.pdlineRepository = _pdlineRepository;
this.bomRepository = _bomRepository;
}
public string ExecuteService(string parameter)
{
try
{
List wmsRetrs = repository.GetFinishedLineOffInfo();
if (wmsRetrs.Count > 0)
{
repository.InsertFinishedLineOffInfo(wmsRetrs); // "没有待处理的成品下线数据!";
}
List outPdlines = repository.GetOutPdlineInfo();
if (outPdlines.Count <= 0)
{
return "没有待报工数据!";
}
List pdlines = pdlineRepository.GetPdlineInfo();
List bomDetailList = bomRepository.GetReportBomInfo("");
foreach (var outPdline in outPdlines)
{
List bomDetails = bomDetailList.Where(a => a.PartId == outPdline.PartId).ToList();
if (bomDetails.Count <= 0)
{
repository.UpdateOutPdlineInfo(outPdline, MesEnumUtil.OutPdlineReportStatus.EXCEPTION, "找不到BOM信息!");
continue;
}
var pdline = pdlines.Where(a => a.PdlineCode == outPdline.PdlineCode).FirstOrDefault();
if (outPdline.ProductType == (int)MesEnumUtil.OutPdlineProductType.FINISHED_PRODUCT &&
(pdline == null || string.IsNullOrEmpty(pdline.DestLocateName)))
{
repository.UpdateOutPdlineInfo(outPdline, MesEnumUtil.OutPdlineReportStatus.EXCEPTION, "成品入库找不到产线默认的入库库位!");
continue;
}
if (outPdline.ProductType == (int)MesEnumUtil.OutPdlineProductType.WIP &&
(pdline == null || string.IsNullOrEmpty(pdline.DestLocateName)))
{
repository.UpdateOutPdlineInfo(outPdline, MesEnumUtil.OutPdlineReportStatus.EXCEPTION, "半成品入库找不到产线默认的入库库位!");
continue;
}
repository.DoOutPdline(outPdline, bomDetails, pdline, bomDetailList);
}
return "滑轨下线报工成功!";
}
catch (Exception ex)
{
LogHelper.Error("滑轨下线报工错误!" + ex);
return "滑轨下线报工错误!" + ex.Message;
}
}
}
}