using Masuit.Tools;
using Newtonsoft.Json;
using SqlSugar.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common;
using WIDESEA_Core;
using WIDESEA_Core.Const;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_DTO.WMS;
using WIDESEA_Model.Models;
using WIDESEA_StorageBasicRepository;
using WIDESEA_StorageOutOrderRepository;
namespace WIDESEA_StoragIntegrationServices
{
///
/// 总装工单信息
///
public partial class MESService
{
public WebResponseContent pushOrderInfo(object json)
{
WebResponseContent responseContent = new WebResponseContent();
try
{
if (string.IsNullOrEmpty(json.ToString())) throw new Exception("请求参数为空");
var result = JsonConvert.DeserializeObject(json.ToString());
if (result.plantCode != "1052") throw new Exception("非本工厂订单,请重试");
var ListTaskDto = new List();
var ListTask = new List();
foreach (var item in result.data)
{
var palletStockInfos = _palletStockInfoRepository.QueryData(x => x.OrderID == item.workOrderNo);
//如存在预绑定工单的库存,则优先出库预绑定的工单
if (palletStockInfos != null || palletStockInfos.Count != 0)
{
foreach (var item1 in palletStockInfos)
{
Dt_Task task = new Dt_Task()
{
CurrentAddress = item1.LocationCode,
Grade = 2,
NextAddress = item1.LocationCode,
PalletCode = item1.PalletCode,
OrderNo = item1.OrderID,
PVI = item1.PVI,
Modifier = item1.Modifier,
Roadway = item1.RoadwayNo,
SourceAddress = item1.LocationCode,
TaskNum = _taskRepository.GetTaskNo().Result,
TaskState = (int)TaskOutStatusEnum.OutNew,
TaskType = (int)TaskOutboundTypeEnum.Outbound,
TargetAddress = "",
Creater = "System",
CreateDate = DateTime.Now
};
ListTask.Add(task);
WMSTaskDTO taskDTO = new WMSTaskDTO()
{
Grade = task.Grade.Value,
PalletCode = task.PalletCode,
SourceAddress = task.SourceAddress,
TargetAddress = task.TargetAddress,
RoadWay = task.Roadway,
TaskState = task.TaskState.Value,
TaskType = task.TaskType,
TaskNum = task.TaskNum.Value
};
ListTaskDto.Add(taskDTO);
}
}
else
{
//如不存在预绑定工单车辆,则按照工单信息匹配库存车辆
//todo 特征信息匹配
_palletStockInfoRepository.QueryData(x => x.PVI == item.pvi);
}
}
pushOrderInfo orderInfo = new pushOrderInfo
{
};
Dt_OutOrder outOrder = new()
{
CreateDate = DateTime.Now,
Creater = "System",
Status = 1,
//UpperOutOrderId = result.workOrderNo,
OrderNumber = result.data[0].workOrderNo,
WarehouseId = 1,
OrderDate = DateTime.Now,
UpperOutOrderId = 1,
Remarks = "测试订单"
};
var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
var wmsBase = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.WCSIPAddress)?.ConfigValue;
var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.ReceiveTask)?.ConfigValue;
if (wmsBase == null || ipAddress == null)
{
throw new InvalidOperationException("WMS IP 未配置");
}
var wmsIpAddress = wmsBase + ipAddress;
var WCSresult = HttpHelper.PostAsync(wmsIpAddress, ListTaskDto.ToJsonString()).Result;
var content = JsonConvert.DeserializeObject(WCSresult);
_unitOfWorkManage.BeginTran();
_OutOrderRepository.AddData(outOrder);
_taskRepository.AddData(ListTask);
_unitOfWorkManage.CommitTran();
responseContent.OK();
}
catch (Exception ex)
{
_unitOfWorkManage.RollbackTran();
return responseContent.Error(ex.Message);
}
return responseContent;
}
}
}