From f26b99b11db7d779494a5f111b05dd8f5d55bf9c Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期三, 20 十一月 2024 13:12:52 +0800
Subject: [PATCH] 消息中心推送消息的逻辑修改

---
 service/base/GetErpParametersServer.cs |  149 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 146 insertions(+), 3 deletions(-)

diff --git a/service/base/GetErpParametersServer.cs b/service/base/GetErpParametersServer.cs
index 1960d02..dedcba0 100644
--- a/service/base/GetErpParametersServer.cs
+++ b/service/base/GetErpParametersServer.cs
@@ -1,20 +1,163 @@
 锘縰sing System.Text;
+using System.Web;
+using NewPdaSqlServer.Dto.service;
 using NewPdaSqlServer.entity;
+using NewPdaSqlServer.service.Warehouse;
 using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
 
 namespace NewPdaSqlServer.service.@base;
 
 public class GetErpParametersServer
 {
-    // private readonly MesInvItemInCDetailsManager _invItemInCDetailsServer =
-    //     new();
-    //
+    private readonly MesInvItemInCDetailsManager _invItemInCDetailsServer =
+        new();
+
     // private readonly MesInvItemOutsManager _invItemOutsServer =
     //     new();
 
     private readonly MessageCenterManager _messageCenterServer = new();
 
 
+    public string Resend(MessageCenter data)
+    {
+        //鑾峰彇鎵�鏈夌殑鍥炶皟
+        var messageCenters =
+            _messageCenterServer.GetList(it => it.Pid == data.Guid);
+        messageCenters.Add(data);
+        var erpParameters = GetErpParameters(messageCenters);
+
+        return sendHttp(erpParameters).Result;
+    }
+
+    private List<MessageCenter> GetErpParameters(List<MessageCenter> data)
+    {
+        var centers = new List<MessageCenter>();
+
+        //鑾峰彇涓昏姹�
+        var center = data.Find(p => p.Seq == 1);
+
+        //瑙f瀽URL
+        var queryString =
+            center.PageName.Substring(center.PageName.IndexOf('?') + 1);
+        //鎻愬彇鍙傛暟
+        var queryParameters = HttpUtility.ParseQueryString(queryString);
+
+        var strings = center.TableName.Split("_");
+
+        var centerUpdateBy = center.UpdateBy;
+        var centerUpdateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+        MessageCenter mesToErp = null;
+        var query = new WarehouseQuery();
+        switch (center.TableName)
+        {
+            //閲囪喘鍏ュ簱鍗曞鏍�
+            case "MES_INV_ITEM_INS_A":
+            //閲囪喘鍏ュ簱鍗曞弽瀹℃牳
+            case "MES_INV_ITEM_INS_B":
+
+                //鑾峰彇鍒扮被鍨嬶紙瀹℃牳杩樻槸鍙嶅鏍革級
+                query.Type = strings[^1];
+                //鑾峰彇url涓檮甯︾殑鍙傛暟
+                query.id = queryParameters["id"];
+                query.billNo = queryParameters["billNo"];
+                query.userName = centerUpdateBy;
+                //閲嶆柊鑾峰彇璇锋眰鐨勬暟鎹�
+                mesToErp = _invItemInCDetailsServer.MesToErpParam(query);
+                //璧嬪�间富id
+                mesToErp.Guid = center.Guid;
+                mesToErp.UpdateBy = centerUpdateBy;
+                mesToErp.UpdateDate = centerUpdateDate;
+                centers.Add(mesToErp);
+
+                //鏇存柊鍓╀笅鐨勮姹傜殑鍙傛暟
+                var messageCenter = data[0];
+                var json = new JObject
+                {
+                    new JProperty("id", query.id),
+                    new JProperty("billNo", query.billNo),
+                    new JProperty("userName", query.userName)
+                };
+                messageCenter.Data = json.ToString();
+                messageCenter.UpdateBy = centerUpdateBy;
+                messageCenter.UpdateDate = centerUpdateDate;
+                centers.Add(messageCenter);
+
+                break;
+
+            //閲囪喘閫�鏂欏崟瀹℃牳
+            case "MES_INV_ITEM_OUTS_A":
+            //閲囪喘閫�鏂欏崟鍙嶅鏍�
+            case "MES_INV_ITEM_OUTS_B":
+
+                //鑾峰彇鍒扮被鍨嬶紙瀹℃牳杩樻槸鍙嶅鏍革級
+                query.Type = strings[^1];
+                query.id = queryParameters["id"];
+                query.billNo = queryParameters["itemOutNo"];
+                query.userName = centerUpdateBy;
+
+                //閲嶆柊鑾峰彇璇锋眰鐨勬暟鎹�
+                // mesToErp = _invItemOutsServer.MesToErpParam(query);
+                //鏇存涓轰富id
+                mesToErp.Guid = center.Guid;
+                mesToErp.UpdateBy = centerUpdateBy;
+                mesToErp.UpdateDate = centerUpdateDate;
+                //娣诲姞鍒拌姹傞泦鍚堜腑
+                centers.Add(mesToErp);
+
+                //鑾峰彇鍓╀綑鐨勮姹�
+                PostRequest(data, query, centers, centerUpdateDate);
+                break;
+            //鐢熶骇棰嗘枡鍗�
+            case "INV_ITEM_OUTS_A":
+                //鑾峰彇鍒扮被鍨嬶紙瀹℃牳杩樻槸鍙嶅鏍革級
+                query.Type = strings[^1];
+                query.id = queryParameters["id"];
+                query.billNo = queryParameters["itemOutNo"];
+                query.userName = centerUpdateBy;
+
+                //閲嶆柊鑾峰彇璇锋眰鐨勬暟鎹�
+                //mesToErp = _invItemOutsServer.ProductionMesToErpParam(query);
+                //鏇存涓轰富id
+                mesToErp.Guid = center.Guid;
+                mesToErp.UpdateBy = centerUpdateBy;
+                mesToErp.UpdateDate = centerUpdateDate;
+                //娣诲姞鍒拌姹傞泦鍚堜腑
+                centers.Add(mesToErp);
+
+                //鑾峰彇鍓╀綑鐨勮姹�
+                PostRequest(data, query, centers, centerUpdateDate);
+                break;
+            default:
+                throw new Exception("鏃犳硶璇嗗埆TableName绫诲瀷");
+        }
+
+        //鏍规嵁椤哄簭杩斿洖
+        return centers.OrderBy(p => p.Seq).ToList();
+    }
+
+
+    private void PostRequest(List<MessageCenter> data, WarehouseQuery query,
+        List<MessageCenter> centers, string centerUpdateDate)
+    {
+        var find = data.FindAll(s => s.Seq != 1);
+
+        var result = new JObject
+        {
+            new JProperty("id", query.id),
+            new JProperty("billNo", query.billNo),
+            new JProperty("userName", query.userName)
+        };
+        find.ForEach(s =>
+        {
+            s.Data = result.ToString();
+            s.UpdateBy = query.userName;
+            s.UpdateDate = centerUpdateDate;
+            centers.Add(s);
+        });
+    }
+
     private async Task<string> sendHttp(List<MessageCenter> requestList)
     {
         var sortedRequests = requestList.OrderBy(r => r.Seq).ToList();

--
Gitblit v1.9.3