huangxiaoqiang
2025-04-25 a8f4641741af34ffbe5fd565003cc5d55bbec119
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MCS/Partial/NotifyFinishTest.cs
@@ -1,4 +1,6 @@
using Newtonsoft.Json;
using LogLibrary.Log;
using Masuit.Tools;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -9,9 +11,11 @@
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_DTO;
using WIDESEA_DTO.MOM;
using WIDESEA_DTO.WMS;
using WIDESEA_Model.Models;
using WIDESEA_StorageBasicRepository;
using WIDESEAWCS_Model.Models;
namespace WIDESEA_StoragIntegrationServices
{
@@ -30,9 +34,29 @@
                if (string.IsNullOrEmpty(result?.PalletBarcode))
                    throw new Exception("上传托盘号为空");
                LogFactory.GetLog("分容测试完成通知").Info(true, $"\r\r--------------------------------------");
                LogFactory.GetLog("分容测试完成通知").Info(true, result.ToJsonString());
                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;
@@ -41,42 +65,84 @@
                    CreateDate = DateTime.Now,
                    Creater = "HK",
                    CurrentAddress = result.LocationID,
                    Grade = 1,
                    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 = "",
                    TargetAddress = stationManager.stationLocation,
                    NextAddress = stationManager.stationChildCode,
                    TaskNum = taskNum, //_taskRepository.GetTaskNo().Result,
                    TaskId = 0,
                };
                WMSTaskDTO taskDTO = new WMSTaskDTO
                // 尝试添加新任务
                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,
                    Grade = 1,
                    PalletCode = result.PalletBarcode,
                    RoadWay = location.RoadwayNo,
                    SourceAddress = result.LocationID,
                    TargetAddress = result.LocationID,
                    TaskNum = taskNum,  //_taskRepository.GetTaskNo().Result,
                    TaskState = (int)TaskOutStatusEnum.OutNew,
                    TaskType = result.IsNG == 1 ? (int)TaskOutboundTypeEnum.OutNG : (int)TaskOutboundTypeEnum.Outbound,
                };
                var sysConfig = _configService.GetByConfigKey(CateGoryConst.CONFIG_SYS_IPAddress, SysConfigConst.WCSIPAddress);
                var respon = HttpHelper.Post(sysConfig.ConfigValue, JsonConvert.SerializeObject(taskDTO));
                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);
                        location.LocationStatus = (int) LocationEnum.InStockDisable;
                        _locationRepository.UpdateData(location);
                        //_simpleCacheService.HashDel<DtStockInfo>(WIDESEA_Cache.CacheConst.Cache_DtStockInfo, new string[] { taskDTO.PalletCode });
                    }
                    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);
            }
        }