From 69ccec8360ba960e8e3198356ea7a23c625393fd Mon Sep 17 00:00:00 2001
From: admin <qiutairan163@163.com>
Date: 星期二, 16 十二月 2025 17:30:31 +0800
Subject: [PATCH] 开发AddExportXmls批量生成xml接口

---
 Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs |  119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 118 insertions(+), 1 deletions(-)

diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index 791436c..5259d77 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -2181,6 +2181,123 @@
             }
         }
 
+
+        /// <summary>
+        /// 鎵归噺鐢熸垚xml
+        /// </summary>
+        /// <param name="date">鏃ユ湡</param>
+        /// <param name="userId">鐢ㄦ埛id</param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        public List<ExportXmlDto> AddExportXmls(string date, int userId)
+        {
+            List<ExportXmlDto> xmlList = new List<ExportXmlDto>();
+            try
+            {
+                string exportSql = $@"select SONo,Status,Type,case isnull(CustomerNo,'') when '' then 'null' else CustomerNo end CustomerNo
+	from BllExportNotice
+	where IsDel='0' and Type='0'and SONo like 'SO{date.Replace("-", "")}%'
+	order by SONo";
+                DataTable exportDt = Db.Ado.GetDataTable(exportSql);
+
+                if (exportDt == null || exportDt.Rows.Count < 1)
+                {
+                    return xmlList;
+                }
+
+                foreach (DataRow dr in exportDt.Rows)
+                {
+                    string soNo = dr["SONo"] + "";
+                    string status = dr["Status"] + "";
+                    string type = dr["Type"] + "";
+
+                    var noticeDetial = Db.Queryable<BllExportNoticeDetail>().Where(w => w.IsDel == "0" && w.SONo == soNo).First();
+                    if (noticeDetial == null)
+                    {
+                        throw new Exception("鏈煡璇㈠埌鍑哄簱鍗曟嵁鏄庣粏淇℃伅");
+                    }
+                    List<string> statusList = new List<string>() { "4", "5", "6" };
+                    if (!statusList.Contains(status))
+                    {
+                        throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︿负鎵ц瀹屾垚鎴栬鍗曞叧闂�/宸蹭笂浼�");
+                    }
+                    string xmlName = string.Empty;
+                    string fileName = "";
+                    switch (type)
+                    {
+                        //鎴愬搧鍑哄簱/閿�鍞嚭搴�
+                        case "0": { xmlName = "SalesWareHouseOut"; fileName = $@"SalesWareHouseOut_{dr["CustomerNo"] + ""}_linklink"; } break;
+                        //鎶芥鍑哄簱
+                        case "2": { xmlName = "CheckWareHouseOut"; fileName = $@"CheckWareHouseOut_{dr["CustomerNo"] + ""}_linklink"; } break;
+                        default: throw new Exception("鍗曟嵁绫诲瀷寮傚父");
+                    }
+
+                    var materiDetial = Db.Queryable<SysMaterials>().First(w => w.IsDel == "0" && w.SkuNo == noticeDetial.SkuNo);
+                    var packType = Db.Queryable<SysPackag>().First(w => w.IsDel == "0" && w.PackagNo == materiDetial.PackagNo);
+                    int level = 0;
+                    if (!string.IsNullOrEmpty(packType.L2Name))
+                    {
+                        level = 1;
+                    }
+                    if (!string.IsNullOrEmpty(packType.L3Name))
+                    {
+                        level = 2;
+                    }
+                    if (!string.IsNullOrEmpty(packType.L4Name))
+                    {
+                        level = 3;
+                    }
+                    //鍑哄簱鍗曟槑缁�
+                    var comDetail = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.SONo == soNo).ToList();
+                    var userinfo = Db.Queryable<SysUserInfor>().Where(m => m.Id == comDetail.First().CreateUser).First().RealName;
+
+                    //寮�鍚簨鍔�
+                    Db.BeginTran();
+                    try
+                    {
+                        var pars = new List<string>();
+                        string[] strr = new string[comDetail.Count];
+
+                        for (int i = 0; i < comDetail.Count(); i++)
+                        {
+                            switch (level)
+                            {
+                                case 1: strr[i] = comDetail[i].BoxNo + "," + comDetail[i].SONo + "," + userinfo + "," + Convert.ToString(comDetail[i].CreateTime); break;
+                                case 2: strr[i] = comDetail[i].BoxNo3 + "," + comDetail[i].SONo + "," + userinfo + "," + Convert.ToString(comDetail[i].CreateTime); break;
+                                case 3: strr[i] = comDetail[i].BoxNo2 + "," + comDetail[i].SONo + "," + userinfo + "," + Convert.ToString(comDetail[i].CreateTime); break;
+                                default: break;
+                            }
+                            pars.Add(strr[i]);
+                        }
+
+                        XmlDocument dom = HttpHelper.EncodeParsToFuMa(pars, "", xmlName, "ExInfoXml");
+
+                        ExportXmlDto xmlDto = new ExportXmlDto()
+                        {
+                            fileName = fileName,
+                            fileContent = dom.InnerXml
+                        };
+                        xmlList.Add(xmlDto);
+                        //娣诲姞鎿嶄綔鏃ュ織璁板綍
+                        var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", soNo, "涓婁紶", $"涓婁紶浜嗗崟鎹彿涓簕soNo}鐨勫崟鎹俊鎭�", userId);
+
+                        Db.CommitTran();
+                    }
+                    catch (Exception e)
+                    {
+                        Db.RollbackTran();
+                        throw new Exception(e.Message);
+                    }
+                }
+                return xmlList;
+            }
+            catch (Exception ex)
+            {
+                throw new Exception("鐢熸垚XML鏂囦欢閿欒锛�" + ex.Message);
+            }
+        }
+
+
         #endregion
 
         #region 鎵樼洏鍑哄簱
@@ -2852,7 +2969,7 @@
                         }
                         //杩橀渶瑕佸垎閰嶇殑鏁伴噺
                         decimal needQty = detail.Qty - (detail.AllotQty == null ? 0 : decimal.Parse(detail.AllotQty.ToString()));
-                        
+
                         //鎺掗櫎杞﹂棿搴撳瓨
                         List<string> areaNoList = new List<string>() { "B06", "B07", "B09", "B24", "B26", "B27", "B28", "B29" };
                         //搴撳瓨鏄庣粏 Status 0锛氬緟鍒嗛厤 1锛氶儴鍒嗗垎閰�  2锛氬凡鍒嗛厤 

--
Gitblit v1.8.0