Tiandele
2026-03-20 daea1a90c2fa1b5cc2f52e62be15bd95cc4155f6
ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_StoragIntegrationServices/MES/Partial/pushOrderInfo.cs
@@ -18,9 +18,6 @@
namespace WIDESEA_StoragIntegrationServices
{
    /// <summary>
    /// æ€»è£…工单信息
    /// </summary>
    public partial class MESService
    {
        public WebResponseContent pushOrderInfo(object json)
@@ -29,103 +26,48 @@
            try
            {
                if (string.IsNullOrEmpty(json.ToString())) throw new Exception("请求参数为空");
                var result = JsonConvert.DeserializeObject<pushOrderInfo>(json.ToString());
                Console.WriteLine(json);
                var result = JsonConvert.DeserializeObject<List<pushOrderInfo>>(json.ToString());
                if (result.plantCode != "1052") throw new Exception("非本工厂订单,请重试");
                if (result[0].plantCode != "1052") throw new Exception("非本工厂订单,请重试");
                var palletStockInfos = _palletStockInfoRepository.QueryData(x => x.OrderID == result.workOrderNo);
                var ListTaskDto = new List<WMSTaskDTO>();
                var ListTask = new List<Dt_Task>();
                //如存在预绑定工单的库存,则优先出库预绑定的工单
                if (palletStockInfos != null || palletStockInfos.Count != 0)
                var ListAssemblyOrderInfo = new List<Dt_AssemblyOrderInfo>();
                foreach (var item in result)
                {
                    foreach (var item in palletStockInfos)
                    Dt_AssemblyOrderInfo assemblyOrderInfo = new Dt_AssemblyOrderInfo
                    {
                        Dt_Task task = new Dt_Task()
                        {
                            CurrentAddress = item.LocationCode,
                            Grade = 2,
                            NextAddress = item.LocationCode,
                            PalletCode = item.PalletCode,
                            OrderNo = item.OrderID,
                            PVI = item.PVI,
                            Modifier = item.Modifier,
                            Roadway = item.RoadwayNo,
                            SourceAddress = item.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 == result.pvi);
                        biwMaterial = item.biwMaterial,
                        CreateDate = DateTime.Now,
                        Creater = "System",
                        orderType = item.orderType,
                        pbMaterial = item.pbMaterial,
                        plantCode = item.plantCode,
                        pvi = item.pvi,
                        sequenceNo = item.sequenceNo,
                        spare1 = item.spare1,
                        spare2 = item.spare2,
                        spare3 = item.spare3,
                        splitStrategy = item.splitStrategy,
                        vehicleCharacteristic = item.vehicleCharacteristic,
                        vehicleCode = item.vehicleCode,
                        vehicleOrderNo = item.vehicleOrderNo,
                        workOrderNo = item.workOrderNo,
                        workOrderSendStatus = item.workOrderSendStatus,  //1-排产 2-撤回
                    };
                    ListAssemblyOrderInfo.Add(assemblyOrderInfo);
                }
                pushOrderInfo orderInfo = new pushOrderInfo
                {
                _assemblyOrderInfoRepository.AddData(ListAssemblyOrderInfo);
                };
                Dt_OutOrder outOrder = new()
                {
                    CreateDate = DateTime.Now,
                    Creater = "System",
                    Status = 1,
                    //UpperOutOrderId = result.workOrderNo,
                    OrderNumber = result.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<WebResponseContent>(WCSresult);
                _unitOfWorkManage.BeginTran();
                _OutOrderRepository.AddData(outOrder);
                _taskRepository.AddData(ListTask);
                _unitOfWorkManage.CommitTran();
                LogFactory.GetLog("总装工单信息").Info(true, $"\r\r--------------------------------------");
                LogFactory.GetLog("总装工单信息").Info(true, json.ToJsonString());
                responseContent.OK();
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                //_unitOfWorkManage.RollbackTran();
                LogFactory.GetLog("总装工单信息").Info(true, $"\r\r--------------------------------------");
                LogFactory.GetLog("总装工单信息").Info(true, $"总装工单接收异常:{ex.Message}");
                return responseContent.Error(ex.Message);
            }
            return responseContent;