From 8df624a41b03581fc06132172156a5d33b2cfcd3 Mon Sep 17 00:00:00 2001
From: admin <qiutairan163@163.com>
Date: 星期四, 18 十二月 2025 14:24:24 +0800
Subject: [PATCH] 取消AGV移库任务CancelMoveTask目标储位去除仓库限制

---
 Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs |  149 ++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 139 insertions(+), 10 deletions(-)

diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index 75b2736..10da52c 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -746,7 +746,7 @@
                         VBELN = notice.OrderCode,
                         WERKS = notice.CustomerNo,
                         LFART = notice.Type,
-                        WADAT_IST = Convert.ToDateTime(notice.CompleteTime).ToString("yyyy-MM-dd"),
+                        WADAT_IST = Convert.ToDateTime(notice.UpdateTime).ToString("yyyy-MM-dd"),
                         ITEM = list
                     };
                     #region 閫氳繃鎺ュ彛鍙戦�佽嚦erp
@@ -2016,9 +2016,13 @@
                                 string stockDetailSql = $@"select LockQty-{lessQty} as morelockQty from DataStockDetail where IsDel='0' and SkuNo='{d.SkuNo}' and LotNo='{d.LotNo}' and PalletNo='{dr["PalletNo"] + ""}'";
                                 decimal morelockQty = Db.Ado.GetDecimal(stockDetailSql);
 
-                                if (morelockQty >= 0)
+                                if (morelockQty > 0)
                                 {
-                                    sqlList.Add($@"update DataStockDetail set LockQty=LockQty-{morelockQty} where IsDel='0' and SkuNo='{d.SkuNo}' and LotNo='{d.LotNo}' and PalletNo='{dr["PalletNo"] + ""}'");
+                                    sqlList.Add($@"update DataStockDetail set LockQty=LockQty-{lessQty} where IsDel='0' and SkuNo='{d.SkuNo}' and LotNo='{d.LotNo}' and PalletNo='{dr["PalletNo"] + ""}'");
+                                }
+                                else if (morelockQty == 0)
+                                {
+                                    sqlList.Add($@"update DataStockDetail set LockQty=0,Status='0' where IsDel='0' and SkuNo='{d.SkuNo}' and LotNo='{d.LotNo}' and PalletNo='{dr["PalletNo"] + ""}'");
                                 }
                             }
 
@@ -2043,9 +2047,14 @@
 
                             if (morelockQty >= 0)
                             {
-                                sqlList.Add($@"update DataStock set LockQty=LockQty-{morelockQty} where IsDel='0' and SkuNo='{dr["SkuNo"] + ""}' and LotNo='{dr["LotNo"] + ""}'");
+                                sqlList.Add($@"update DataStock set LockQty=LockQty-{lessQty} where IsDel='0' and SkuNo='{dr["SkuNo"] + ""}' and LotNo='{dr["LotNo"] + ""}'");
                             }
                         }
+                    }
+
+                    foreach (string sqlStr in sqlList)
+                    {
+                        var end = Db.Ado.ExecuteCommand(sqlStr);
                     }
 
                     //娣诲姞鎿嶄綔鏃ュ織璁板綍
@@ -2140,10 +2149,10 @@
                                 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);
+                                strr[i] = comDetail[i].BoxNo2 + "," + 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);
+                                strr[i] = comDetail[i].BoxNo3 + "," + comDetail[i].SONo + "," + userinfo + "," + Convert.ToString(comDetail[i].CreateTime);
                                 break;
                             default:
                                 break;
@@ -2171,6 +2180,123 @@
                 throw new Exception("鐢熸垚XML鏂囦欢閿欒锛�" + ex.Message);
             }
         }
+
+
+        /// <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(OrderCode,'') when '' then 'null' else OrderCode end OrderCode
+	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["OrderCode"] + ""}_linklink"; } break;
+                        //鎶芥鍑哄簱
+                        case "2": { xmlName = "CheckWareHouseOut"; fileName = $@"CheckWareHouseOut_{dr["OrderCode"] + ""}_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].BoxNo2 + "," + comDetail[i].SONo + "," + userinfo + "," + Convert.ToString(comDetail[i].CreateTime); break;
+                                case 3: strr[i] = comDetail[i].BoxNo3 + "," + 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
 
@@ -2843,11 +2969,14 @@
                         }
                         //杩橀渶瑕佸垎閰嶇殑鏁伴噺
                         decimal needQty = detail.Qty - (detail.AllotQty == null ? 0 : decimal.Parse(detail.AllotQty.ToString()));
-                        //搴撳瓨鏄庣粏 Status 0锛氬緟鍒嗛厤 1锛氶儴鍒嗗垎閰�  2锛氬凡鍒嗛厤 
-                        var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.SkuNo == detail.SkuNo && (m.Qty - m.FrozenQty - m.LockQty + m.InspectQty) > 0 && (m.Status == "0" || m.Status == "1") && m.IsDel == "0"
-                        && m.AreaNo != "B06" && m.AreaNo != "B07" && m.AreaNo != "B09" && m.AreaNo != "B24" && m.AreaNo != "B26" && m.AreaNo != "B27" && m.AreaNo != "B28")//鎺掗櫎杞﹂棿搴撳瓨
-                            .ToList();
 
+                        //鎺掗櫎杞﹂棿搴撳瓨
+                        string areaNoSql = $@"select AreaNo from SysStorageArea where IsDel='0' and AreaType='1'";
+                        DataTable areaNoDt = Db.Ado.GetDataTable(areaNoSql);
+                        List<string> areaNoList = areaNoDt.Rows.Cast<DataRow>().Select(e => e["AreaNo"] + "").ToList();
+
+                        //搴撳瓨鏄庣粏 Status 0锛氬緟鍒嗛厤 1锛氶儴鍒嗗垎閰�  2锛氬凡鍒嗛厤 
+                        var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.SkuNo == detail.SkuNo && (m.Qty - m.FrozenQty - m.LockQty + m.InspectQty) > 0 && (m.Status == "0" || m.Status == "1") && m.IsDel == "0" && !areaNoList.Contains(m.AreaNo)).ToList();
 
                         //鍒ゆ柇鍗曞彿鏄惁鎸囧畾鎵规
                         if (!string.IsNullOrWhiteSpace(detail.LotNo))

--
Gitblit v1.8.0