using AngleSharp.Common;
using Masuit.Tools;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common;
using WIDESEA_Common.MES;
using WIDESEA_Common.MES.Request;
using WIDESEA_Core;
using WIDESEA_Core.Const;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_DTO.WMS;
using WIDESEA_Model.Models;
using WIDESEAWCS_BasicInfoService;
using WIDESEAWCS_Model.Models;
namespace WIDESEA_StoragIntegrationServices
{
///
/// 车身绑定工单(焊装直通涂装)
///
public partial class MESService
{
public WebResponseContent pullLock(object jsondata)
{
WebResponseContent content = new WebResponseContent();
try
{
if (string.IsNullOrEmpty(jsondata.ToString())) throw new Exception("请求参数为空");
Console.WriteLine(jsondata);
var result = JsonConvert.DeserializeObject>(jsondata.ToString());
foreach (var item in result)
{
var assemblyOrderInfo = _assemblyOrderInfoRepository.QueryFirst(x => x.workOrderNo == item.workOrderNo && x.orderType == item.workOrderType);
if (assemblyOrderInfo == null) throw new Exception($"拉动锁车失败:未知总装工单号{item.workOrderNo}");
//Dt_PalletStockInfo carinfo = null;
VV_StockInfo OutStock = new VV_StockInfo();
//Dt_CarBodyInfo carbodyinfo = null;
if (!string.IsNullOrEmpty(item.pvi))
{
OutStock = _VVStockInfoRepository.QueryFirst(x => x.PVI == item.pvi && x.StockStatus == 0 && x.LockOrder == 0 && x.StayStatus == 0 && x.CarType == (int)BodyType.PaintedBody);
if (OutStock == null)
{
throw new Exception($"未找到指定PVI车身信息{item.pvi}");
}
}
else
{
OutStock = _VVStockInfoRepository.QueryData(x => x.pbMaterial == item.pbMaterial && x.StockStatus == 0 && x.LockOrder == 0 && x.StayStatus == 0 && x.workOrderType == item.workOrderType && x.CarType == (int)BodyType.PaintedBody).OrderBy(x => x.biwInPassTime).First();
}
if (OutStock == null)
{
throw new Exception("未匹配到车身,拉动锁定失败");
}
var stockInfo = _palletStockInfoRepository.QueryFirst(x => x.CarBodyInfo.PVI == OutStock.PVI);
var carBody = _carBodyRepository.QueryFirst(x => x.PVI == OutStock.PVI);
var lockInfo = _MESLockInfoRepository.QueryData().OrderByDescending(x => x.sequenceNo).FirstOrDefault();
int serial = 1;
if (lockInfo != null)
{
serial = lockInfo.sequenceNo + 1;
}
Dt_MESLockInfo mESLockInfo = new Dt_MESLockInfo
{
carBodyID = stockInfo.carBodyID,
CarBodyInfo = carBody,
CreateDate = DateTime.Now,
Creater = "System",
LockStatue = 0,
sequenceNo = serial,
TCLine = OutStock.RoadwayNo
};
#region 任务下发
//Dt_Task task = new Dt_Task()
//{
// CreateDate = DateTime.Now,
// Creater = "System",
// CurrentAddress = carinfo.LocationCode,
// Grade = 5,
// PalletCode = carinfo.PalletCode,
// PVI = item.pvi,
// Roadway = carinfo.RoadwayNo,
// SourceAddress = carinfo.LocationCode,
// TaskNum = _taskRepository.GetTaskNo().Result,
// TaskType = (int)TaskOutboundTypeEnum.Outbound,
// TaskState = (int)TaskOutStatusEnum.OutNew,
// TargetAddress = ""
//};
//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
//};
//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;
#endregion
_unitOfWorkManage.BeginTran();
//var WCSresult = HttpHelper.PostAsync(wmsIpAddress, taskDTO.ToJsonString()).Result;
//content = JsonConvert.DeserializeObject(WCSresult);
//if (content != null && content.Status)
//{
stockInfo.StockStatus = 0;
stockInfo.LockOrder = 1;
//carBody.BodyStatus = 1;
assemblyOrderInfo.pvi = carBody.PVI;
carBody.assemblyWorrkNo = item.workOrderNo;
_MESLockInfoRepository.AddData(mESLockInfo);
_assemblyOrderInfoRepository.UpdateData(assemblyOrderInfo);
//_taskRepository.AddData(task);
_palletStockInfoRepository.UpdateData(stockInfo);
_carBodyRepository.UpdateData(carBody);
_unitOfWorkManage.CommitTran();
//}
LogFactory.GetLog("MES拉动锁车").Info(true, $"\r\r--------------------------------------");
LogFactory.GetLog("MES拉动锁车").Info(true, jsondata.ToJsonString());
LockResult lockResult = new LockResult { result = "1", lockPvi = carBody.PVI };
content.OK(data: lockResult);
}
}
catch (Exception ex)
{
LogFactory.GetLog("MES拉动锁车").Info(true, $"锁车失败:{ex.Message};请求参数{jsondata.ToJsonString()}; ");
_unitOfWorkManage.RollbackTran();
content.result = "2";
LockResult result = new LockResult { result = "2", lockPvi = "" };
content.Error(ex.Message, result);
}
return content;
}
}
}