From 4c49b591b3833a2752634355cb37b0a74923e916 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期五, 07 十一月 2025 09:41:17 +0800
Subject: [PATCH] 开发成品出库导出上传码上放心平台xm文件
---
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 220 +++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 174 insertions(+), 46 deletions(-)
diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index c28c5bc..c9bc7b9 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -997,10 +997,10 @@
inspectStatus = "1";
break;
case "1"://棰嗘枡鍑哄簱
- if (house != "W02")
- {
- throw new Exception("棰嗘枡鍑哄簱鍙兘閫夋嫨鍘熸枡搴�");
- }
+ //if (house != "W02")
+ //{
+ // throw new Exception("棰嗘枡鍑哄簱鍙兘閫夋嫨鍘熸枡搴�");
+ //}
skuType = "(0,1,3)";
inspectStatus = "1";
break;
@@ -1097,7 +1097,7 @@
skuList = skuList.Where(m => m.SkuNo == "100088").ToList();
}
skuStrList = skuList.Select(m => m.SkuNo).ToList();
- var areaStr = new List<string>() { "B06", "B07", "B09" };
+ var areaStr = new List<string>() { "B06", "B07", "B09", "B24" };
var stockRst = new StockServer();
var stockDetailRst = new StockDetailServer();
Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>()
@@ -1194,6 +1194,12 @@
//}
break;
case "W02"://鍘熸枡搴�
+ if (skuList.Any(m => m.Type == "2"))
+ {
+ throw new Exception("浠撳簱涓庡嚭搴撶墿鏂欎笉绗�");
+ }
+ break;
+ case "W04"://骞冲簱
if (skuList.Any(m => m.Type == "2"))
{
throw new Exception("浠撳簱涓庡嚭搴撶墿鏂欎笉绗�");
@@ -2007,6 +2013,13 @@
}
}
+ /// <summary>
+ /// 瀵煎嚭xml鏂囦欢
+ /// </summary>
+ /// <param name="id"></param>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ /// <exception cref="Exception"></exception>
public XmlNode AddExXmlStr(int id, int userId)
{
try
@@ -2016,27 +2029,80 @@
{
throw new Exception("鏈煡璇㈠埌鍑哄簱鍗曟嵁淇℃伅");
}
+ var noticeDetial = Db.Queryable<BllExportNoticeDetail>().Where(w => w.IsDel == "0" && w.SONo == notice.SONo).First();
+ if (noticeDetial == null)
+ {
+ throw new Exception("鏈煡璇㈠埌鍑哄簱鍗曟嵁鏄庣粏淇℃伅");
+ }
var statusLis = new List<string>() { "4", "5", "6" };
if (!statusLis.Contains(notice.Status))
{
throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︿负鎵ц瀹屾垚鎴栬鍗曞叧闂�/宸蹭笂浼�");
}
+ string xmlName = string.Empty;
+ switch (notice.Type)
+ {
+ case "0"://鎴愬搧鍑哄簱/閿�鍞嚭搴�
+ xmlName = "SalesWareHouseOut";
+ break;
+ case "2"://鎶芥鍑哄簱
+ xmlName = "CheckWareHouseOut";
+ 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 == notice.SONo).Select(m => m.BoxNo3).ToList();
+ var comDetail = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.SONo == notice.SONo).ToList();
+ var userinfo = Db.Queryable<SysUserInfor>().Where(m => m.Id == comDetail.First().CreateUser).First().RealName;
+
Db.BeginTran();//寮�鍚簨鍔�
try
{
//Hashtable pars = new Hashtable(); //鐢ㄦ潵瀛樻斁鍙傛暟
var pars = new List<string>();
- //for (int i = 0; i < 10; i++)
- //{
- // pars.Add("202203240009000479940290");
- //}
+ string[] strr = new string[comDetail.Count];
- var dom = HttpHelper.EncodeParsToFuMa(comDetail, "ceshi", "ExInfoXml");
+ 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]);
+ }
+ //string fileName = $"{xmlName}_{notice.OrderCode}_linklink";
+ var dom = HttpHelper.EncodeParsToFuMa(pars, "", xmlName, "ExInfoXml");
////娣诲姞鎿嶄綔鏃ュ織璁板綍
- //var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "鍏冲崟", $"鍏抽棴浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId);
+ var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "涓婁紶", $"涓婁紶浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId);
Db.CommitTran();
return dom;
@@ -2725,7 +2791,9 @@
//杩橀渶瑕佸垎閰嶇殑鏁伴噺
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").ToList();
+ 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")//鎺掗櫎杞﹂棿搴撳瓨
+ .ToList();
//鍒ゆ柇鍗曞彿鏄惁鎸囧畾鎵规
@@ -2765,8 +2833,8 @@
}
#region 鍖呰淇℃伅
- var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺
- var bNum = 0;//绠辩墿鍝佹暟閲�
+ var pNum = 0m;//鎵樼洏鐗╁搧鏁伴噺
+ var bNum = 0m;//绠辩墿鍝佹暟閲�
//鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺
new Common().GetPackQtyInfo(detail.PackagNo, ref pNum, ref bNum);
@@ -2774,7 +2842,8 @@
//鍙栧悎閫傚簱瀛樺晢鍝�
Dictionary<int, decimal> stockQtyDic = new Dictionary<int, decimal>();//鎵樺嚭搴撶墿鍝佹暟
- var qty = 0m;
+ var qty = 0m;//鍒嗛厤鏁伴噺
+ var xQty = 0m;//涓嬫灦鏁伴噺
var house = "";
//鍒嗛厤璐х墿
@@ -2810,6 +2879,11 @@
CreateUser = userId,
CreateTime = DateTime.Now
};
+ if (s.WareHouseNo == "W04")
+ {
+ allot.Status = "2";//寰呮嫞璐�
+ xQty += allot.Qty;
+ }
exAllotList.Add(allot);
s.LockQty += stockQtyDic[s.Id];
@@ -2822,11 +2896,12 @@
{
s.Status = "1";
}
-
+
var sd = Db.Updateable(s).UpdateColumns(it => new { it.LockQty, it.Status }).ExecuteCommand();
}
- detail.AllotQty += qty;
+ detail.AllotQty += qty;//鍒嗛厤鏁伴噺
+ detail.FactQty += xQty;//涓嬫灦鏁伴噺
detail.UpdateUser = userId;
detail.UpdateTime = DateTime.Now;
if (detail.Status == "0")
@@ -2892,8 +2967,13 @@
//璇佹槑鎵�鏈夊垎閰嶆暟閲忓叏閮ㄥ皬浜庣瓑浜庡嚭搴撴暟閲� 涓嶅仛淇敼
break;
}
-
+ var outPalletCount = exAllotList.Where(w => w.Status == "0").Count();//鏌ユ壘鏈夋棤闇�瑕佸嚭搴撶殑鎵樼洏
+ if (outPalletCount <= 0)
+ {
+ notice.Status = "3";//姝e湪鎵ц
+ }
}
+
notice.UpdateUser = userId;
notice.UpdateTime = DateTime.Now;
var zd = Db.Updateable(notice).ExecuteCommand();
@@ -3005,6 +3085,7 @@
soDetailList.Add(soDetail);
}
d.AllotQty = 0;
+ d.FactQty = 0;
d.Status = "0";
d.UpdateUser = userId;
d.UpdateTime = DateTime.Now;
@@ -3137,7 +3218,8 @@
m => m.SkuNo.Contains(msg.Trim())
|| m.SkuName.Contains(msg.Trim())
|| m.LocatNo.Contains(msg.Trim()))
- .And(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo && (m.Status == "0" || m.Status == "1"))
+ .And(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo && (m.Status == "0" || m.Status == "1")
+ && m.AreaNo != "B06" && m.AreaNo != "B07" && m.AreaNo != "B09" && m.AreaNo != "B24")//鎺掗櫎杞﹂棿搴撳瓨
.ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏�
var list = Db.Queryable<DataStockDetail>().Where(item).Select(a => new StockDetailDto
@@ -3210,7 +3292,8 @@
//var stockz = Db.Queryable<DataStock>().First(d => d.IsDel == "0" && d.SkuNo == detail.SkuNo && d.LotNo == detail.LotNo);
var allotList = new List<BllExportAllot>();
- decimal outQtys = 0;
+ decimal outQtys = 0;//鍒嗛厤鏁伴噺
+ decimal xQty = 0;//涓嬫灦鏁伴噺
foreach (var st in model.StockList)
{
var stock = stockList.First(a => a.Id == st.StockId);
@@ -3252,6 +3335,11 @@
CreateUser = userId,
CreateTime = DateTime.Now
};
+ if (stock.WareHouseNo == "W04")
+ {
+ allot.Status = "2";//寰呮嫞璐�
+ xQty += allot.Qty;
+ }
allotList.Add(allot);
}
else
@@ -3274,7 +3362,8 @@
}
Db.Insertable(allotList).ExecuteCommand();
//淇敼鍗曟嵁鏄庣粏
- detail.AllotQty += outQtys;
+ detail.AllotQty += outQtys;//鍒嗛厤鏁伴噺
+ detail.FactQty += xQty;//涓嬫灦鏁伴噺
detail.UpdateUser = userId;
detail.UpdateTime = DateTime.Now;
if (detail.Status == "0")
@@ -3303,6 +3392,12 @@
else if (totalAllotQty < totalQty && totalAllotQty > 0)
{
notice.Status = "1";//璇佹槑鍒嗛厤鏁伴噺灏忎簬绛変簬鍑哄簱鏁伴噺 淇敼涓洪儴鍒嗗垎閰�
+ }
+
+ var outPalletCount = allotList.Where(w => w.Status == "0").Count();//鏌ユ壘鏈夋棤闇�瑕佸嚭搴撶殑鎵樼洏
+ if (outPalletCount <= 0)
+ {
+ notice.Status = "3";//姝e湪鎵ц
}
Db.Updateable(notice).ExecuteCommand();
}
@@ -4308,31 +4403,65 @@
var tray2 = Db.Queryable<DataStockDetail>().Where(m => m.SkuNo == item2.SkuNo
&& m.LotNo == item2.LotNo && !slotList.Contains(m.LocatNo) && m.PalletTags == item2.PalletTags && okLan.Contains(m.RoadwayNo)).ToList();
- foreach (var s in tray2)
+ if (tray2.Count > 0)
{
- if (string.IsNullOrWhiteSpace(s.RoadwayNo))//鍒ゆ柇鏄惁鍦ㄥ簱澶栵紝濡傛槸璺宠繃
+ foreach (var s in tray2)
{
- continue;
- }
- var lan = Db.Queryable<SysStorageLocat>().Where(m => m.RoadwayNo == s.RoadwayNo).OrderBy(m => m.LocatNo).ToList();
- //鍒ゆ柇鏄惁鏈夊叆搴撲腑銆佸嚭搴撲腑銆佺Щ鍏ヤ腑銆佺Щ鍑轰腑
- if (lan.Count(m => m.Status == "2" || m.Status == "3" || m.Status == "4" || m.Status == "5") > 0)
- {
- continue;
- }
- if (lan.Count(m => m.Status == "0") > 0)
- {
-
- var bol = GetBecomingLocation(s.RoadwayNo, ref location);
- if (bol && !string.IsNullOrWhiteSpace(location))
+ if (string.IsNullOrWhiteSpace(s.RoadwayNo))//鍒ゆ柇鏄惁鍦ㄥ簱澶栵紝濡傛槸璺宠繃
{
- newAddress = location;
- return newAddress;
+ continue;
+ }
+ var lan = Db.Queryable<SysStorageLocat>().Where(m => m.RoadwayNo == s.RoadwayNo).OrderBy(m => m.LocatNo).ToList();
+ //鍒ゆ柇鏄惁鏈夊叆搴撲腑銆佸嚭搴撲腑銆佺Щ鍏ヤ腑銆佺Щ鍑轰腑
+ if (lan.Count(m => m.Status == "2" || m.Status == "3" || m.Status == "4" || m.Status == "5") > 0)
+ {
+ continue;
+ }
+ if (lan.Count(m => m.Status == "0") > 0)
+ {
+
+ var bol = GetBecomingLocation(s.RoadwayNo, ref location);
+ if (bol && !string.IsNullOrWhiteSpace(location))
+ {
+ newAddress = location;
+ return newAddress;
+ }
}
-
}
}
+ if(string.IsNullOrEmpty(newAddress))
+ {
+ //宸叉湁鐗╁搧鐨勫贩閬�
+ var roadwayHave = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.WareHouseNo == "W01").GroupBy(g => g.RoadwayNo).Select(s => s.RoadwayNo).ToList();
+ //鏌ユ壘娌℃湁鐗╁搧鐨勫贩閬�
+ var roadwayNull = Db.Queryable<SysStorageRoadway>().Where(w => w.IsDel == "0" && w.WareHouseNo == "W01" && w.Status == "0" && okLan.Contains(w.RoadwayNo) && !roadwayHave.Contains(w.RoadwayNo)).Select(s => s.RoadwayNo).ToList();
+ if (roadwayNull.Count > 0)
+ {
+ foreach (var itemRoad in roadwayNull)
+ {
+ var bol = GetBecomingLocation(itemRoad, ref location);
+ if (bol && !string.IsNullOrWhiteSpace(location))
+ {
+ newAddress = location;
+ return newAddress;
+ }
+ }
+ }
+ else
+ {
+ foreach (var itemRoad in roadwayHave)
+ {
+ var bol = GetBecomingLocation(itemRoad, ref location);
+ if (bol && !string.IsNullOrWhiteSpace(location))
+ {
+ newAddress = location;
+ return newAddress;
+ }
+ }
+ }
+ }
+
}
}
@@ -4506,16 +4635,15 @@
if (slotModel[0].Column > aisleRow)
{
- // 鍙栨渶涓婇潰涓�鎺�
- location = slotModel[0].LocatNo;
-
- }
- else
- {
// 鍙栨渶涓嬮潰涓�鎺�
location = slotModel[slotModel.Count - 1].LocatNo;
}
+ else
+ {
+ // 鍙栨渶涓婇潰涓�鎺�
+ location = slotModel[0].LocatNo;
+ }
bl = true;
}
--
Gitblit v1.8.0