From 8529ae408d5e41d5982a8caab2a035e360cfc6c6 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期五, 10 五月 2024 18:26:29 +0800
Subject: [PATCH] WMS添加PDA人工出库接口

---
 代码管理/WMS/WMS_Server/WIDESEA_WMS/Services/system/Partial/dt_inventoryService.cs |    9 +++
 代码管理/WMS/WMS_Server/WIDESEA_WMS/ToMes/OutsourceInbound.cs                      |  102 +++++++++++++++++++++++++++++++++
 代码管理/WMS/WMS_Server/WIDESEA_WebApi/Controllers/ToWms/ToWMSController.cs        |   15 +++++
 3 files changed, 125 insertions(+), 1 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Services/system/Partial/dt_inventoryService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Services/system/Partial/dt_inventoryService.cs"
index 8ac8691..ec2d131 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Services/system/Partial/dt_inventoryService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Services/system/Partial/dt_inventoryService.cs"
@@ -224,6 +224,8 @@
         public override WebResponseContent Del(object[] keys, bool delList = true)
         {
             WebResponseContent content = new WebResponseContent();
+            VOLContext context = new VOLContext();
+            Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context);
             string str = "";
             try
             {
@@ -268,6 +270,13 @@
 
                             foreach (var inventory in inventorys)
                             {
+                                var station = stationinfoRepository.Find(x => x.stationCode == inventory.stationCode).FirstOrDefault();
+                                var bindSNS = station.bindSN.Split(",");
+                                station.bindSN = ToMesServer.OperStr(bindSNS, inventory.SN);
+                                var billetS = station.billetID.Split(",");
+                                station.billetID = ToMesServer.OperStr(billetS, inventory.BilletNumber.ToString());
+                                station.quantity = station.quantity - 1;
+                                stationinfoRepository.Update(station, true);
                                 _repository.Delete(inventory, true);
                             }
                             WriteDBLog.Write($"鎵嬪姩鍒犻櫎搴撳瓨 ", $"璐т綅缂栧彿锛歿inventorys.Key}锛汼N鍙凤細{str}", LogState.Sucess, "WMS", UserContext.Current.UserName);
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/OutsourceInbound.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/OutsourceInbound.cs"
index 7bf5815..61acc33 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/OutsourceInbound.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/OutsourceInbound.cs"
@@ -1,4 +1,5 @@
 锘縰sing Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
 using System;
 using System.Collections.Generic;
 using System.Threading.Tasks;
@@ -8,6 +9,7 @@
 using WIDESEA_Comm.MES_Info.Request;
 using WIDESEA_Comm.TaskNo;
 using WIDESEA_Common;
+using WIDESEA_Core.BaseProvider;
 using WIDESEA_Core.EFDbContext;
 using WIDESEA_Core.ManageUser;
 using WIDESEA_Core.Utilities;
@@ -22,6 +24,104 @@
 {
     public partial class ToMesServer
     {
+        /// <summary>
+        /// 浜哄伐鍑哄簱
+        /// </summary>
+        /// <param name="saveModel"></param>
+        /// <returns></returns>
+        public WebResponseContent Outsource(SaveModel saveModel)
+        {
+            WebResponseContent content = new WebResponseContent();
+            VOLContext context = new VOLContext();
+            Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context);
+            Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context);
+            string sn = saveModel.MainData["dataSN"].ToString();   //杞﹁疆SN鍙�
+            string user = saveModel.MainData["creator"].ToString();
+            string str = "";
+            try
+            {
+                List<string> list = new List<string>();
+                foreach (var SN in sn.Split(","))
+                {
+                    if (!string.IsNullOrEmpty(SN))
+                        list.Add(SN);
+                }
+                var inventoryList = inventoryRepository.Find(x => list.Contains(x.SN)).ToList();
+                foreach (var inventorys in inventoryList.GroupBy(x => x.stationCode))
+                {
+                    try
+                    {
+                        List<detail> lists = new List<detail>();
+                        foreach (var inventory in inventorys)
+                        {
+                            detail detail = new detail();
+                            detail.sn = inventory.SN;
+                            lists.Add(detail);
+                            str = str == "" ? inventory.SN : "," + inventory.SN;
+                        }
+                        agvInWarehousePara outWarehousePara = new agvInWarehousePara()
+                        {
+                            //WorkOrder = task.jobID,
+                            zoneID = inventorys.Key,
+                            //processCode = task.agv_worktype.ToString(),
+                            details = lists,
+                            layerNo = 1,
+                            stackID = "1",
+                            warehouseName = "Agv搴�",
+                            Operator = UserContext.Current.UserName,
+                        };
+                        var postJson = JsonConvert.SerializeObject(outWarehousePara);
+                        var mesData = Request.RequestData(postJson, MESAPIAddress.IPAddress_MES + "agvOutWarehouse");
+                        if (mesData.Contains("杩炴帴灏濊瘯澶辫触")) throw new Exception(mesData);
+                        MES_Response requestMes = JsonConvert.DeserializeObject<MES_Response>(mesData);
+                        if (requestMes.code == "200" && requestMes.Type == "success")
+                        {
+                            //鏃ュ織璁板綍涓婁紶鏁版嵁鎴愬姛
+                            WriteWMSLog.LogAdd("", "鎴愬姛", "MES", "PDA", postJson, mesData, "浜哄伐鍚屾MES杞﹁疆鍑哄簱", "agvOutWarehouse", requestMes.message);
+
+                            foreach (var inventory in inventorys)
+                            {
+                                var station = stationinfoRepository.Find(x => x.stationCode == inventory.stationCode).FirstOrDefault();
+                                var bindSNS = station.bindSN.Split(",");
+                                station.bindSN = OperStr(bindSNS, inventory.SN);
+                                var billetS = station.billetID.Split(",");
+                                station.billetID = OperStr(billetS, inventory.BilletNumber.ToString());
+                                station.quantity = station.quantity - 1;
+                                stationinfoRepository.Update(station, true);
+                                inventoryRepository.Delete(inventory, true);
+                            }
+                            WriteDBLog.Write($"浜哄伐鍑哄簱鎴愬姛 ", $"璐т綅缂栧彿锛歿inventorys.Key}锛汼N鍙凤細{str}", LogState.Sucess, "PDA", user);
+                        }
+                        else
+                        {
+                            WriteWMSLog.LogAdd("", "澶辫触", "MES", "PDA", postJson, mesData, "浜哄伐鍚屾MES杞﹁疆鍑哄簱", "agvOutWarehouse", requestMes.message);
+                            throw new Exception("浜哄伐鍑哄簱鍚屾MES杞﹁疆鍑哄簱澶辫触锛�" + requestMes.message);
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        content.Message = ex.Message;
+                        WriteDBLog.Write($"浜哄伐鍑哄簱澶辫触 ", new { 閿欒淇℃伅 = ex.Message, 鏁版嵁 = str }, LogState.Error, "PDA", user);
+                    }
+
+                }
+
+                content.OK();
+            }
+            catch (Exception ex)
+            {
+                content.Error($"浜哄伐鍑哄簱澶辫触锛�:{ex.Message}");
+                WriteDBLog.Write($"浜哄伐鍑哄簱澶辫触 ", new { 閿欒淇℃伅 = ex.Message, 鏁版嵁 = sn }, LogState.Error, "PDA", user);
+            }
+            return content;
+        }
+        public static string OperStr(string[] strArrty, string SN)
+        {
+            string[] newstr = strArrty.Where(x => x != SN).ToArray();
+            string Newsn = string.Join(",", newstr);
+
+            return Newsn;
+        }
         /// <summary>
         /// 澶栧崗鍑哄簱(妫�娴嬩笂鏂�)
         /// </summary>
@@ -75,7 +175,7 @@
                         count++;
                         bindSN += bindSN == "" ? item : "," + item;
 
-                         mes_Work = freeDB.Select<VV_Mes_Workinfo>().Where(x => x.SN == item && x.processCode == "28").First();
+                        mes_Work = freeDB.Select<VV_Mes_Workinfo>().Where(x => x.SN == item && x.processCode == "28").First();
                         if (mes_Work == null)
                             return content.Error($"绗瑊count}涓溅杞棤妫�娴嬩笂鏂欏伐鍗曚俊鎭紝璇锋牳鏌ュ伐鍗曞悗鍦ㄦ壂鎻忥紒");
                         //info = freeDB.Select<dt_mes_detail>().Where(x => x.SN == item).First();
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/ToWms/ToWMSController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/ToWms/ToWMSController.cs"
index bf51130..8b4d0c3 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/ToWms/ToWMSController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/ToWms/ToWMSController.cs"
@@ -12,6 +12,7 @@
     public class ToWMSController : ControllerBase
     {
         private static readonly object OutsourceInboundobj = new object();
+        private static readonly object Outsourceobj=new object();
         private static readonly object agvTransferListobj = new object();
         private static readonly object shiftingparkingobj = new object();
         private static readonly object GetStationobj = new object();
@@ -80,6 +81,20 @@
         }
 
         /// <summary>
+        /// 浜哄伐鍑哄簱
+        /// </summary>
+        /// <param name="request"></param>
+        /// <returns></returns>
+        [HttpPost, Route("Outsource")]
+        public WebResponseContent Outsource([FromBody] SaveModel saveModel)
+        {
+            lock (Outsourceobj)
+            {
+                return new ToMesServer().Outsource(saveModel);
+            }
+        }
+
+        /// <summary>
         /// 澶栧崗鍑哄簱(妫�娴嬩笂鏂�)
         /// </summary>
         /// <param name="request"></param>

--
Gitblit v1.9.3