From b06b33248bcc19f8ea6c574124d5c536b7fa6c49 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期三, 16 七月 2025 19:22:27 +0800
Subject: [PATCH] 添加常温直接出库功能,增加实框入库存在任务发往异常口

---
 CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs |   98 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 96 insertions(+), 2 deletions(-)

diff --git a/CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs b/CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs
index abc8393..7c2ccb6 100644
--- a/CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs
+++ b/CodeManagement/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs
@@ -4,6 +4,7 @@
 using WIDESEA_Common;
 using WIDESEA_Core;
 using WIDESEA_DTO;
+using WIDESEA_IServices;
 using WIDESEA_Model.Models;
 
 namespace WIDESEA_StorageBasicService;
@@ -19,7 +20,9 @@
     private readonly IDt_WareAreaInfoRepository _wareAreaInfoRepository;
     private readonly IPointStackerRelationRepository _pointStackerRelationRepository;
     private readonly ITaskExecuteDetailRepository _taskExecuteDetailRepository;
+    private readonly IDt_AreaInfoRepository _AreaInfoRepository;
     private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository;
+    private readonly ISys_ConfigService _configService;
     private readonly IMapper _mapper;
 
     public LocationInfoService(ILocationInfoRepository BaseDal,
@@ -32,7 +35,9 @@
                                     ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository,
                                     IStockInfoDetailRepository stockInfoDetailRepository,
                                     IMapper mapper,
-                                    IDt_TaskService taskService) : base(BaseDal)
+                                    IDt_TaskService taskService ,
+                                    IDt_AreaInfoRepository AreaInfoRepository,
+                                    ISys_ConfigService configService) : base(BaseDal)
     {
         _unitOfWorkManage = unitOfWorkManage;
         _taskRepository = taskRepository;
@@ -43,7 +48,9 @@
         _locationStatusChangeRecordRepository = locationStatusChangeRecordRepository;
         _stockInfoDetailRepository = stockInfoDetailRepository;
         _mapper = mapper;
-        _taskService = taskService;
+        _taskService = taskService; 
+        _AreaInfoRepository = AreaInfoRepository;
+        _configService = configService;
     }
 
     /// <summary>
@@ -117,6 +124,93 @@
 
         return base.UpdateData(saveModel);
     }
+    public WebResponseContent HandOutTask(int locationID)
+    {
+        LogFactory.GetLog("鎵嬪姩鍑哄簱浠诲姟").InfoFormat(true, "鎵嬪姩鍑哄簱浠诲姟", JsonConvert.SerializeObject(locationID), App.User.UserName);
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+            Dt_AreaInfo areaInfo = _AreaInfoRepository.QueryFirst(x => x.AreaCode == "CWSC1");
+            DtLocationInfo location = BaseDal.QueryFirst(x => x.Id == locationID);
+            DtStockInfo stock = _stockInfoRepository.QueryFirst(x => x.LocationId == location.Id && x.LocationCode == location.LocationCode);
+            if (location.AreaId == areaInfo.AreaID)
+            {
+                Dt_Task task = new Dt_Task
+                {
+                    Grade = 1,
+                    Roadway = location.RoadwayNo,
+                    TargetAddress = "001-035-001",
+                    Dispatchertime = DateTime.Now,
+                    MaterialNo = "",
+                    NextAddress = "001-035-001",
+                    OrderNo = null,
+                    PalletCode = stock == null ? "M" + DateTime.Now.ToString("MMddHHmmss") + "-" + new Random().Next(100, 1000) : stock.PalletCode,
+                    SourceAddress = location.LocationCode,
+                    CurrentAddress = location.LocationCode,
+                    TaskState = (int)TaskOutStatusEnum.OutNew,
+                    TaskType = (int)TaskOutboundTypeEnum.InToOut,
+                    TaskNum = _taskRepository.GetTaskNo().Result,
+                    Creater = "System", // 淇鎷煎啓閿欒
+                    CreateDate = DateTime.Now,
+                    TaskId = 0,
+                    ProductionLine = stock == null ? "" : stock.ProductionLine,
+                    ProcessCode = stock == null ? "" : stock.ProcessCode,
+                };
+
+                var taskDTO = new WMSTaskDTO
+                {
+                    TaskNum = task.TaskNum.Value,
+                    Grade = task.Grade.Value,
+                    PalletCode = task.PalletCode,
+                    RoadWay = task.Roadway,
+                    SourceAddress = task.SourceAddress,
+                    TargetAddress = task.TargetAddress,
+                    TaskState = task.TaskState.Value,
+                    Id = 0,
+                    TaskType = task.TaskType,
+                    ProductionLine = task.ProductionLine,
+                };
+                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;
+                        BaseDal.UpdateData(location);
+                    }
+                    else
+                    {
+                        throw new Exception("WCS澶勭悊澶辫触:" + respone.Message);
+                    }
+                }
+                else
+                {
+                    throw new Exception("WCS澶勭悊澶辫触");
+                }
+                return content.OK("浠诲姟娣诲姞鎴愬姛锛�");
+            }
+            else
+            {
+                return content.Error("涓嶆槸甯告俯璐т綅锛屼笉鍏佽鍑哄簱锛侊紒");
+            }
+        }
+        catch (Exception ex)
+        {
+            return content.Error(ex.Message);
+        }
+    }
+
     #region 鍒濆鍖栧簱浣�
     public async Task<WebResponseContent> initializeLocation(int locationID)
     {

--
Gitblit v1.9.3