using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Comm.LogInfo;
using WIDESEA_Core.EFDbContext;
using WIDESEA_Entity.DomainModels;
using WIDESEA_WCS.IRepositories;
using WIDESEA_WCS.IServices;
using WIDESEA_WCS.Repositories;
using WIDESEA_WCS.Services;
using WIDESEA_WMS.IRepositories;
using WIDESEA_WMS.Repositories;
namespace WIDESEA_WCS.JobsPart.Common
{
public class AutoUpdateWork
{
#region MyRegion
//static FreeDB freeDB = new FreeDB();
/////
///// 自动取空托任务
/////
//public static void HCJCreation()
//{
// try
// {
// List stationinfos = new List();
// for (int i = 1; i <= 3; i++)
// {
// for (int j = 1; j <= 3; j++)
// {
// dt_stationinfo stationinfo = new dt_stationinfo();
// stationinfo.id = Guid.NewGuid();
// stationinfo.stationCode = "X0" + i + (i <= 9 ? "00" + i : "0" + i) + (j <= 9 ? "00" + j : "0" + j);
// stationinfo.area = "5";
// stationinfo.enable = true;
// stationinfo.line = i;
// stationinfo.column = j;
// stationinfos.Add(stationinfo);
// }
// }
// freeDB.AddRange(stationinfos);
// }
// catch (Exception ex)
// {
// throw;
// }
//}
#endregion
///
/// 查询已完成工单
///
public static void FinishMesWork()
{
VOLContext context = new VOLContext();
Idt_mes_headRepository mes_HeadRepository = new dt_mes_headRepository(context);
Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context);
Idt_management_timeRepository timeRepository = new dt_management_timeRepository(context);
var val = timeRepository.Find(x => x.management_name == "FinishMesWork").FirstOrDefault().management_numericalvalue;
var mes_heads = mes_HeadRepository.Find(x => x.quantity == x.finishNum || x.CreateTime.AddDays(val) < DateTime.Now).Take(10).ToList();
#region 检测线工单
var mes_head_jcxs = mes_heads.Where(x => x.processCode == "28").ToList();
if (mes_head_jcxs.Count > 0)
{
foreach (var mes_head in mes_head_jcxs)
{
AddHtyMesWork(mes_head, mes_HeadRepository);
}
}
#endregion
#region 机加工工单
var mes_head_jjgs = mes_heads.Where(x => x.processCode == "17").ToList();
if (mes_head_jjgs.Count > 0)
{
foreach (var mes_head in mes_head_jjgs)
{
var inventorys = inventoryRepository.Find(x => x.jobID == mes_head.jobID).ToList();
if (inventorys.Count == mes_head.quantity || inventorys.Count==0)
AddHtyMesWork(mes_head, mes_HeadRepository);
}
var k = "加载完成";
}
#endregion
}
///
/// 已完成工单移入历史
///
public static void AddHtyMesWork(dt_mes_head mes_Head, Idt_mes_headRepository mes_HeadRepository, string compeletor = "system", string operatetype = "自动完成")
{
try
{
VOLContext context = new VOLContext();
Idt_mes_detailRepository mes_DetailRepository = new dt_mes_detailRepository(context);
Idt_mes_detail_htyRepository mes_DetailRepository_hty = new dt_mes_detail_htyRepository(context);
Idt_mes_head_htyRepository mes_Head_HtyRepository = new dt_mes_head_htyRepository(context);
var mes_Details = mes_DetailRepository.Find(x => x.jobID == mes_Head.jobID).ToList();
if (mes_Details.Count > 0)
{
List mes_Details_hty = new List();
foreach (var mes_Detail in mes_Details)
{
dt_mes_detail_hty mes_Detail_Hty = new dt_mes_detail_hty
{
billetID = mes_Detail.billetID,
compeletor = compeletor,
FinishTime = mes_Detail.FinishTime,
heatBatchID = mes_Detail.heatBatchID,
heatID = mes_Detail.heatID,
jobID = mes_Detail.jobID,
mes_detail_id = mes_Detail.mes_detail_id,
mes_headID = mes_Detail.mes_headID,
operatetype = string.IsNullOrEmpty(mes_Detail.Status) ? "超时清理" : operatetype,
SN = mes_Detail.SN,
Status = mes_Detail.Status,
completedate = DateTime.Now,
};
mes_Details_hty.Add(mes_Detail_Hty);
mes_DetailRepository.Delete(mes_Detail, true);
}
mes_DetailRepository_hty.AddRange(mes_Details_hty, true);
}
dt_mes_head_hty mes_Head_Hty = new dt_mes_head_hty()
{
materialCode = mes_Head.materialCode,
area = mes_Head.area,
compeletor = compeletor,
creator = mes_Head.creator,
CreateTime = mes_Head.CreateTime,
drawingNo = mes_Head.drawingNo,
drawingNoVer = mes_Head.drawingNoVer,
jobID = mes_Head.jobID,
expectedFinishTime = mes_Head.expectedFinishTime,
quantity = mes_Head.quantity,
expectedStartTime = mes_Head.expectedStartTime,
finishNum = mes_Head.finishNum,
FinishTime = mes_Head.FinishTime,
maxDiameterDiff = mes_Head.maxDiameterDiff,
operatetype = operatetype,
processCode = mes_Head.processCode,
mes_id = mes_Head.mes_id,
skip_op_1 = mes_Head.skip_op_1,
skip_op_2 = mes_Head.skip_op_2,
skip_op_3 = mes_Head.skip_op_3,
stackNoRange = mes_Head.stackNoRange,
productDesc = mes_Head.productDesc,
productName = mes_Head.productName,
reqID = mes_Head.reqID,
reqIDLineNo = mes_Head.reqIDLineNo,
typeID = mes_Head.typeID,
workOrder = mes_Head.workOrder,
completedate = DateTime.Now,
};
mes_Head_HtyRepository.Add(mes_Head_Hty, true);
mes_HeadRepository.Delete(mes_Head, true);
WriteDBLog.Success("处理已完成工单", $"工单编号:{mes_Head.jobID}", "PCS", compeletor);
}
catch (Exception ex)
{
WriteDBLog.Error("处理已完成工单", $"错误信息:{ex.Message}", "PCS", compeletor);
}
}
}
}