刘磊
2025-11-11 6fed1f731b16c1820a43fc34130a70b21465e2bb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
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
{
    /// <summary>
    /// 总装工单信息
    /// </summary>
    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<pushOrderInfo>(json.ToString());
 
                if (result.plantCode != "1052") throw new Exception("非本工厂订单,请重试");
 
                var ListTaskDto = new List<WMSTaskDTO>();
                var ListTask = new List<Dt_Task>();
                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<WebResponseContent>(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;
        }
    }
}