刘磊
2025-06-09 dabbcafc629ef87d11ba55ef8cc1cdc776c047d8
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 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);
            }
        }
    }
}