|
using Newtonsoft.Json.Serialization;
|
using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEA_Common.APIEnum;
|
using WIDESEA_Common.CommonEnum;
|
using WIDESEA_Common.LocationEnum;
|
using WIDESEA_Common.OtherEnum;
|
using WIDESEA_Common.StockEnum;
|
using WIDESEA_Common.TaskEnum;
|
using WIDESEA_Common.WareHouseEnum;
|
using WIDESEA_Core;
|
using WIDESEA_Core.BaseServices;
|
using WIDESEA_Core.Enums;
|
using WIDESEA_Core.Helper;
|
using WIDESEA_DTO;
|
using WIDESEA_DTO.ERP;
|
using WIDESEA_ITaskInfoRepository;
|
using WIDESEA_ITaskInfoService;
|
using WIDESEA_Model.Models;
|
using WIDESEA_Common.OrderEnum;
|
using System.Diagnostics.Metrics;
|
using System.Reflection.Metadata;
|
using WIDESEA_DTO.Task;
|
using WIDESEA_DTO.Stock;
|
using SqlSugar;
|
using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
|
using WIDESEA_DTO.MES;
|
|
namespace WIDESEA_TaskInfoService
|
{
|
public partial class TaskService
|
{
|
static object lock_out = new object();
|
/// <summary>
|
/// MES自动叫料接口
|
/// </summary>
|
/// <returns></returns>
|
public WebResponseContent ReceiveAutoIssue(MESAutoIssueDTO autoIssueDTO)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
if (autoIssueDTO == null)
|
{
|
return content.Error("传入信息不能为空");
|
}
|
//获取对应单据
|
Dt_OutMESOrder? outMESOrder = _outboundRepository.OutMESOrderRepository.QueryFirst(x=>x.OutDetailId==autoIssueDTO.OutDetailId);
|
if (outMESOrder==null)
|
{
|
return content.Error($"领料计划{nameof(MESAutoIssueDTO.OutDetailId)}{autoIssueDTO.OutDetailId}不存在");
|
}
|
if (outMESOrder.OutMESOrderStatus==OutOrderStatusEnum.关闭.ObjToInt())
|
{
|
return content.Error($"领料计划{nameof(MESAutoIssueDTO.OutDetailId)}{outMESOrder.ProductOrderNo}工单已关闭");
|
}
|
//获取周转位置编号
|
Dt_AGVStationInfo? stationInfo = _basicRepository.AGVStationInfoRepository.QueryFirst(x=>x.MESPointCode==autoIssueDTO.PointCode);
|
if (stationInfo == null)
|
{
|
return content.Error($"领料计划周转位{nameof(MESAutoIssueDTO.PointCode)}{autoIssueDTO.PointCode}不存在");
|
}
|
if (autoIssueDTO.IsEmptyPallet>0)
|
{
|
return content.Error($"领料计划周转位{nameof(MESAutoIssueDTO.PointCode)}{autoIssueDTO.PointCode}存在空托");
|
}
|
//Dt_Task? task = BaseDal.QueryData(x => x.OrderNo == outMESOrder.OutMESOrderNo && x.TaskStatus == TaskStatusEnum.CallPending.ObjToInt()).OrderByDescending(x => x.Grade).ThenBy(x => x.TaskNum).FirstOrDefault();
|
////获取任务
|
//if (task == null)
|
//{
|
// return content.Error($"未找到领料计划编号{outMESOrder.ProductOrderNo}可配送任务");
|
//}
|
//task.TaskStatus = TaskStatusEnum.New.ObjToInt();
|
//task.TargetAddress = stationInfo.AGVStationCode;
|
//PushTasksToWCS(new List<Dt_Task> { task });
|
return content.OK("叫料成功");
|
}
|
catch (Exception ex)
|
{
|
content.Error(ex.Message);
|
}
|
return content;
|
}
|
|
public WebResponseContent ReceiveManualIssue(MESManualIssueDTO manualIssueDTO)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
if (manualIssueDTO == null)
|
{
|
return content.Error("传入信息不能为空");
|
}
|
//获取对应单据
|
Dt_OutMESOrder? outMESOrder = _outboundRepository.OutMESOrderRepository.QueryFirst(x => x.OutDetailId == manualIssueDTO.OutDetailId);
|
if (outMESOrder == null)
|
{
|
return content.Error($"领料计划{nameof(MESAutoIssueDTO.OutDetailId)}{manualIssueDTO.OutDetailId}不存在");
|
}
|
if (outMESOrder.OutMESOrderStatus == OutOrderStatusEnum.关闭.ObjToInt())
|
{
|
return content.Error($"领料计划{nameof(MESAutoIssueDTO.OutDetailId)}{outMESOrder.ProductOrderNo}工单已关闭");
|
}
|
//获取周转位置编号
|
Dt_AGVStationInfo? stationInfo = _basicRepository.AGVStationInfoRepository.QueryFirst(x => x.MESPointCode == manualIssueDTO.PointCode);
|
if (stationInfo == null)
|
{
|
return content.Error($"领料计划周转位{nameof(MESAutoIssueDTO.PointCode)}{manualIssueDTO.PointCode}不存在");
|
}
|
//Dt_Task? task = BaseDal.QueryData(x => x.OrderNo == outMESOrder.OutMESOrderNo && x.TaskStatus == TaskStatusEnum.CallPending.ObjToInt()).OrderByDescending(x => x.Grade).ThenBy(x => x.TaskNum).FirstOrDefault();
|
////获取任务
|
//if (task == null)
|
//{
|
// return content.Error($"未找到领料计划编号{outMESOrder.ProductOrderNo}可配送任务");
|
//}
|
//task.TaskStatus = TaskStatusEnum.New.ObjToInt();
|
//task.TargetAddress = stationInfo.AGVStationCode;
|
//PushTasksToWCS(new List<Dt_Task> { task });
|
return content.OK("叫料成功");
|
}
|
catch (Exception ex)
|
{
|
content.Error(ex.Message);
|
}
|
return content;
|
}
|
|
public WebResponseContent ReceiveReturnIssue(List<MESReturnIssueDTO> returnIssueDTOs)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
if (returnIssueDTOs==null || returnIssueDTOs.Count<=0)
|
{
|
return content.Error("传入信息不能为空");
|
}
|
//获取所有AGV点位
|
List<Dt_AGVStationInfo> aGVStationInfos= _basicRepository.AGVStationInfoRepository.QueryData(x => !string.IsNullOrEmpty(x.MESPointCode));
|
MESReturnIssueDTO? returnIssueDTO = returnIssueDTOs.FirstOrDefault(x=> !aGVStationInfos.Select(x=>x.MESPointCode).Contains(x.PointCode));
|
if (returnIssueDTO != null)
|
{
|
return content.Error($"周转位{nameof(MESReturnIssueDTO.PointCode)}{returnIssueDTO.PointCode}不存在");
|
}
|
content.OK("呼叫成功");
|
}
|
catch (Exception ex)
|
{
|
content.Error(ex.Message);
|
}
|
return content;
|
}
|
|
}
|
}
|