using LogLibrary.Log;
|
using Masuit.Tools;
|
using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEA_Core;
|
using WIDESEA_Core.Const;
|
using WIDESEA_Core.Enums;
|
using WIDESEA_Core.Helper;
|
using WIDESEA_DTO;
|
using WIDESEA_DTO.WMS;
|
using WIDESEA_Model.Models;
|
using WIDESEA_StorageBasicRepository;
|
using WIDESEAWCS_Model.Models;
|
|
namespace WIDESEA_StoragIntegrationServices
|
{
|
|
public partial class MCSService
|
{
|
public WebResponseContent NotifyFinishTest(object json)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
if (string.IsNullOrEmpty(json.ToString())) throw new Exception("上传参数为空");
|
|
var result = JsonConvert.DeserializeObject<NotifyFinishTest>(json.ToString());
|
|
if (string.IsNullOrEmpty(result?.PalletBarcode))
|
throw new Exception("上传托盘号为空");
|
|
var location = _locationRepository.QueryFirst(x => x.AreaId == result.LocationArea && x.LocationCode == result.LocationID);
|
|
if (location == null) throw new Exception("未知库位");
|
|
if (_taskRepository.QueryFirst(x => x.SourceAddress == result.LocationID && x.Roadway == location.RoadwayNo) != null)
|
{
|
throw new Exception("当前库位已存在任务");
|
}
|
|
Dt_StationManager stationManager;
|
if (result.IsNG == 1)
|
{
|
stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == location.RoadwayNo && x.stationType == 4);
|
}
|
else
|
{
|
stationManager = _stationManagerRepository.QueryFirst(x => x.Roadway == location.RoadwayNo && x.stationType == 2);
|
}
|
|
if (stationManager == null) throw new Exception("未知站台");
|
|
int taskNum = _taskRepository.GetTaskNo().Result;
|
|
Dt_Task task = new Dt_Task
|
{
|
CreateDate = DateTime.Now,
|
Creater = "HK",
|
CurrentAddress = result.LocationID,
|
Grade = result.IsNG == 1 ? 1 : 2,
|
Dispatchertime = DateTime.Now,
|
PalletCode = result.PalletBarcode,
|
Roadway = location.RoadwayNo,
|
SourceAddress = result.LocationID,
|
TaskState = (int)TaskOutStatusEnum.OutNew,
|
TaskType = result.IsNG == 1 ? (int)TaskOutboundTypeEnum.OutNG : (int)TaskOutboundTypeEnum.Outbound,
|
TargetAddress = stationManager.stationLocation,
|
NextAddress = stationManager.stationChildCode,
|
TaskNum = taskNum, //_taskRepository.GetTaskNo().Result,
|
TaskId = 0,
|
};
|
|
// 尝试添加新任务
|
WMSTaskDTO taskDTO = new WMSTaskDTO()
|
{
|
TaskNum = task.TaskNum.Value,
|
Grade = result.IsNG == 1 ? 1 : 2,
|
PalletCode = task.PalletCode,
|
RoadWay = task.Roadway,
|
SourceAddress = task.SourceAddress,
|
TargetAddress = task.TargetAddress,
|
TaskState = task.TaskState.Value,
|
Id = 0,
|
TaskType = result.IsNG == 1 ? (int)TaskOutboundTypeEnum.OutNG : (int)TaskOutboundTypeEnum.Outbound,
|
};
|
|
var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
|
var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.WCSIPAddress)?.ConfigValue;
|
var ReceiveByWMSTask = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.ReceiveByWMSTask)?.ConfigValue;
|
if (ReceiveByWMSTask == null || ipAddress == null)
|
{
|
throw new Exception("WMS IP 未配置");
|
}
|
var wmsIpAddrss = ipAddress + ReceiveByWMSTask;
|
|
var respon = HttpHelper.Post(wmsIpAddrss, JsonConvert.SerializeObject(taskDTO)); //http://localhost:9291/api/Task/ReceiveTask,
|
if (respon != null)
|
{
|
WebResponseContent respone = JsonConvert.DeserializeObject<WebResponseContent>(respon.ToString());
|
if (respone.Status)
|
{
|
var taskId = _taskRepository.AddData(task);
|
}
|
|
else
|
{
|
throw new Exception("WCS处理失败:" + respone.Message);
|
}
|
}
|
else
|
{
|
throw new Exception("WCS处理失败");
|
}
|
//WMSTaskDTO taskDTO = new WMSTaskDTO
|
//{
|
// Id = 0,
|
// Grade = 1,
|
// PalletCode = result.PalletBarcode,
|
// RoadWay = location.RoadwayNo,
|
// SourceAddress = result.LocationID,
|
// TargetAddress = task.TargetAddress,
|
// TaskNum = taskNum, //_taskRepository.GetTaskNo().Result,
|
// TaskState = (int)TaskOutStatusEnum.OutNew,
|
//};
|
LogFactory.GetLog("分容测试完成通知").Info(true, $"\r\r--------------------------------------");
|
LogFactory.GetLog("分容测试完成通知").Info(true, result.ToJsonString());
|
return content.OK();
|
}
|
catch (Exception ex)
|
{
|
LogFactory.GetLog("分容测试完成通知").Info(true, $"\r\r--------------------------------------");
|
LogFactory.GetLog("分容测试完成通知").Info(true, ex.Message);
|
return content.Error(ex.Message);
|
}
|
}
|
}
|
}
|