From 1e29c520440adc28292d87a000c11e6898bda1ac Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期四, 30 十月 2025 13:29:33 +0800
Subject: [PATCH] 物料标签增加补打标签和合并标签功能
---
Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs | 233 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 220 insertions(+), 13 deletions(-)
diff --git a/Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs b/Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs
index a8f25c3..ae97734 100644
--- a/Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs
@@ -15,6 +15,9 @@
using WMS.Entity.Context;
using WMS.Entity.SysEntity;
using WMS.IBLL.IBllAsnServer;
+using WMS.Entity.DataEntity;
+using Dm;
+using System.Reflection;
namespace WMS.BLL.BllAsnServer
{
@@ -534,8 +537,17 @@
{
throw new Exception("鏈煡璇㈠埌鍗曟嵁鏄庣粏淇℃伅锛岃鏍稿疄");
}
+ var skuInfo = Db.Queryable<SysMaterials>().First(w => w.IsDel == "0" && w.SkuNo == asnDetail.SkuNo);
+ if (skuInfo == null)
+ {
+ throw new Exception("鏈煡璇㈠埌鐗╂枡淇℃伅锛岃鏍稿疄");
+ }
+ if (string.IsNullOrEmpty(skuInfo.PackagNo))
+ {
+ throw new Exception("鏈煡璇㈠埌鐗╂枡鐨勫寘瑁呬俊鎭紝璇锋牳瀹�");
+ }
- var packInfo = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == asnDetail.PackagNo);
+ var packInfo = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == skuInfo.PackagNo);
if (packInfo == null)
{
throw new Exception("鏈煡璇㈠埌鍗曟嵁鏄庣粏涓殑鐗╂枡鍖呰淇℃伅");
@@ -663,8 +675,8 @@
#region 鍖呰鏌ヨ
- var bNum = 0;//绠辩墿鍝佹暟閲�
- var zNum = 0;//鏀墿鍝佹暟閲�
+ var bNum = 0m;//绠辩墿鍝佹暟閲�
+ var zNum = 0m;//鏀墿鍝佹暟閲�
var packLevel = 0;
if (pack.L2Num.HasValue)
@@ -672,7 +684,7 @@
if (pack.L2Name != "鎵�")
{
packLevel = 1;//JC34椤圭洰鍙湁涓�绾ф爣绛�
- bNum = Convert.ToInt32(pack.L2Num);
+ bNum = Convert.ToDecimal(pack.L2Num);
}
}
if (pack.L1Num.HasValue)
@@ -680,9 +692,9 @@
if (packLevel == 0)
{
packLevel = 1;
- bNum = Convert.ToInt32(pack.L1Num);
+ bNum = Convert.ToDecimal(pack.L1Num);
}
- zNum = Convert.ToInt32(pack.L1Num);
+ zNum = Convert.ToDecimal(pack.L1Num);
}
if (packLevel < 1)//鍖呰绛夌骇灏忎簬1锛屾寜鐓�1绾ф爣绛炬墦鍗�
@@ -781,7 +793,6 @@
maxBoxCode = maxBoxCode.Substring(0, maxBoxCode.Length-6) + (int.Parse(maxBoxCode.Substring(maxBoxCode.Length - 6, 6)) + 1).ToString().PadLeft(6, '0');
}
- DateTime? storeTime2 = null;
// 灏嗘潯鐮佷繚瀛樺埌鍘熸枡鏉$爜琛�
var labelModel = new BllBoxInfo()
{
@@ -801,14 +812,26 @@
BitBoxMark = bNum > boxQty ? "1" : "0",
InspectStatus = "0",
- ProductionTime = DateTime.Parse(productionTime),
- StoreTime = string.IsNullOrWhiteSpace(storeTime) ? storeTime2 : DateTime.Parse(storeTime ),
- ExpirationTime = DateTime.Parse(expirationTime),
+ ProductionTime = null,
+ StoreTime = null,
+ ExpirationTime = null,
Origin = "WMS鐢熸垚",
CreateUser = userId,
CreateTime = DateTime.Now,
};
+ if (!string.IsNullOrEmpty(productionTime))
+ {
+ labelModel.ProductionTime = DateTime.Parse(productionTime);
+ }
+ if (!string.IsNullOrEmpty(storeTime))
+ {
+ labelModel.StoreTime = DateTime.Parse(storeTime);
+ }
+ if (!string.IsNullOrEmpty(expirationTime))
+ {
+ labelModel.ExpirationTime = DateTime.Parse(expirationTime);
+ }
Db.Insertable(labelModel).ExecuteCommand();
modelList.Add(labelModel);
@@ -953,14 +976,26 @@
BitBoxMark = bNum > boxQty ? "1" : "0",
InspectStatus = "0",
- ProductionTime = DateTime.Parse(productionTime),
- StoreTime = DateTime.Parse(storeTime),
- ExpirationTime = DateTime.Parse(expirationTime),
+ ProductionTime = null,
+ StoreTime = null,
+ ExpirationTime = null,
Origin = "WMS鐢熸垚",
CreateUser = userId,
CreateTime = DateTime.Now,
};
+ if (!string.IsNullOrEmpty(productionTime))
+ {
+ labelModel.ProductionTime = DateTime.Parse(productionTime);
+ }
+ if (!string.IsNullOrEmpty(storeTime))
+ {
+ labelModel.StoreTime = DateTime.Parse(storeTime);
+ }
+ if (!string.IsNullOrEmpty(expirationTime))
+ {
+ labelModel.ExpirationTime = DateTime.Parse(expirationTime);
+ }
Db.Insertable(labelModel).ExecuteCommand();
modelList.Add(labelModel);
@@ -1713,6 +1748,178 @@
throw new Exception(e.Message);
}
}
+ /// <summary>
+ /// 鎷嗗垎绠辩爜鏍囩
+ /// </summary>
+ /// <param name="boxNo"></param>
+ /// <param name="chaiQty"></param>
+ /// <param name="userId"></param>
+ /// <exception cref="Exception"></exception>
+ public void ChaiLableBox(string boxNo,decimal chaiQty, int userId)
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(boxNo))
+ {
+ throw new Exception("璇疯緭鍏ユ媶绠辩鐮�");
+ }
+ if (chaiQty <= 0)
+ {
+ throw new Exception("璇疯緭鍏ユ媶鍒嗘暟閲�");
+ }
+ //鏍囩淇℃伅
+ var boxList = Db.Queryable<BllBoxInfo>().Where(w => w.IsDel == "0" && w.BoxNo == boxNo).ToList();
+ if (boxList.Count != 1)
+ {
+ throw new Exception("璇ョ鐮佷俊鎭敊璇紝瀛樺湪澶氫釜姝ょ鐮佷俊鎭�");
+ }
+ var boxInfo = boxList.First();
+ if (boxInfo.Qty <= chaiQty)
+ {
+ throw new Exception("鎷嗙鏁伴噺澶х瓑浜庡綋鍓嶇鍐呮暟閲�");
+ }
+ if (boxInfo.Status != "0")
+ {
+ throw new Exception("璇ョ鐮佷笉鏄湭缁勬墭鐘舵�侊紝涓嶅厑璁告媶绠憋紒");
+ }
+
+ //寮�鍚簨鍔�
+ Db.BeginTran();
+
+ boxInfo.Qty -= chaiQty;
+ boxInfo.BitBoxMark = "1";
+ //鏇存柊绠辩爜搴撳瓨琛�
+ Db.Updateable(boxInfo).ExecuteCommand();
+
+ var boxStr = boxInfo.BoxNo.Substring(0, boxInfo.BoxNo.Length - 6);//鑾峰彇绠辩爜鍓嶇紑-闄ゅ悗鍏綅娴佹按澶�
+ var maxBoxCode1 = Db.Queryable<BllBoxInfo>().Where(m => m.BoxNo.Contains(boxStr) && m.IsDel == "0" && m.Origin == "WMS鐢熸垚").Max(a => a.BoxNo);
+
+ var maxBoxCode2 = Db.Queryable<DataBoxInfo>().Where(m => m.BoxNo.Contains(boxStr) && m.IsDel == "0").Max(a => a.BoxNo);
+ //濡傛灉缁撴灉涓�0锛屽垯璇存槑涓や釜瀛楃涓茬浉绛夛紱 ABC BCE
+ //濡傛灉缁撴灉灏忎簬0锛屽垯璇存槑绗竴涓瓧绗︿覆灏忎簬绗簩涓瓧绗︿覆锛�
+ //濡傛灉缁撴灉澶т簬0锛屽垯璇存槑绗竴涓瓧绗︿覆澶т簬绗簩涓瓧绗︿覆銆�
+ var maxBoxCode = maxBoxCode1;
+ var bol = String.CompareOrdinal(maxBoxCode1, maxBoxCode2);
+ if (bol < 0)
+ {
+ maxBoxCode = maxBoxCode2;
+ }
+ var boxNoNew = maxBoxCode.Substring(0, maxBoxCode.Length - 6) + (int.Parse(maxBoxCode.Substring(maxBoxCode.Length - 6, 6)) + 1).ToString().PadLeft(6, '0');
+
+ // 娣诲姞鏂扮鐮佷俊鎭�
+ var boxModel = new BllBoxInfo()
+ {
+ ASNNo = boxInfo.ASNNo,
+ ASNDetailNo = boxInfo.ASNDetailNo,
+ BoxNo = boxNoNew,
+ BoxNo2 = "",
+ BoxNo3 = "",
+ Qty = chaiQty,
+ FullQty = boxInfo.FullQty,
+ Status = "0",//寰呯粍鎵�
+ BindNo = null,
+ PalletNo = "",
+ SkuNo = boxInfo.SkuNo,
+ SkuName = boxInfo.SkuName,
+ LotNo = boxInfo.LotNo,
+ Standard = boxInfo.Standard,
+ PackageStandard = boxInfo.PackageStandard,
+ SupplierLot = boxInfo.SupplierLot,
+ InspectMark = boxInfo.InspectMark,
+ BitBoxMark = "1",
+ InspectStatus = "0",
+
+ ProductionTime = boxInfo.ProductionTime,
+ StoreTime = boxInfo.StoreTime,
+ ExpirationTime = boxInfo.ExpirationTime,
+
+ Origin = "WMS",
+ CreateUser = userId,
+ CreateTime = DateTime.Now,
+ };
+ Db.Insertable(boxModel).ExecuteCommand();
+
+ //娣诲姞鎿嶄綔鏃ュ織
+ new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鐗╂枡鏍囩", boxNo, "缂栬緫", $"鎷嗗垎浜嗙鐮亄boxInfo}鏁伴噺{chaiQty}鍒版柊绠辩爜{boxNoNew}", userId);
+ //鎻愪氦浜嬪姟
+ Db.CommitTran();
+ }
+ catch (Exception e)
+ {
+ //鍥炴粴浜嬪姟
+ Db.RollbackTran();
+ throw new Exception(e.Message);
+ }
+ }
+ /// <summary>
+ /// 鍚堝苟绠辩爜鏍囩
+ /// </summary>
+ /// <param name="boxNo"></param>
+ /// <param name="boxNo2"></param>
+ /// <param name="userId"></param>
+ public void MergeLableBox(string boxNo,string boxNo2, int userId)
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(boxNo) || string.IsNullOrEmpty(boxNo2))
+ {
+ throw new Exception("璇疯緭鍏ヨ鍚堝苟鐨勭鐮�");
+ }
+ //鏍囩淇℃伅
+ var boxList = Db.Queryable<BllBoxInfo>().Where(w => w.IsDel == "0" && w.BoxNo == boxNo).ToList();
+ if (boxList.Count != 1)
+ {
+ throw new Exception($"{boxNo}璇ョ鐮佷俊鎭敊璇紝瀛樺湪澶氫釜姝ょ鐮佷俊鎭�");
+ }
+ var boxInfo = boxList.First();
+ if (boxInfo.Status != "0")
+ {
+ throw new Exception($"{boxNo}璇ョ鐮佷笉鏄湭缁勬墭鐘舵�侊紝涓嶅厑璁稿悎骞讹紒");
+ }
+ var boxList2 = Db.Queryable<BllBoxInfo>().Where(w => w.IsDel == "0" && w.BoxNo == boxNo2).ToList();
+ if (boxList2.Count != 1)
+ {
+ throw new Exception($"{boxNo2}璇ョ鐮佷俊鎭敊璇紝瀛樺湪澶氫釜姝ょ鐮佷俊鎭�");
+ }
+ var boxInfo2 = boxList2.First();
+ if (boxInfo2.Status != "0")
+ {
+ throw new Exception($"{boxNo2}璇ョ鐮佷笉鏄湭缁勬墭鐘舵�侊紝涓嶅厑璁稿悎骞讹紒");
+ }
+ if (boxInfo.SkuNo != boxInfo2.SkuNo || boxInfo.LotNo != boxInfo2.LotNo)
+ {
+ throw new Exception($"涓や釜绠辩爜涓嶆槸鐗╂枡鎵规淇℃伅涓嶄竴鑷达紝涓嶅厑璁稿悎骞讹紒");
+ }
+ if (boxInfo.ASNNo != boxInfo2.ASNNo || boxInfo.ASNDetailNo != boxInfo2.ASNDetailNo)
+ {
+ throw new Exception($"涓や釜绠辩爜涓嶆槸鎵�灞炲叆搴撳崟淇℃伅涓嶄竴鑷达紝涓嶅厑璁稿悎骞讹紒");
+ }
+ if (boxInfo.Qty + boxInfo2.Qty > boxInfo.FullQty)
+ {
+ throw new Exception($"涓や釜绠辩爜鍚堝苟鍚庢暟閲忚秴杩囨弧绠辨暟閲忥紝涓嶅厑璁稿悎骞讹紒");
+ }
+ //寮�鍚簨鍔�
+ Db.BeginTran();
+
+ boxInfo.Qty += boxInfo2.Qty;
+ //鏇存柊绠辩爜搴撳瓨琛�
+ Db.Updateable(boxInfo).ExecuteCommand();
+ //鍒犻櫎琚悎骞剁鐮佷俊鎭�
+ Db.Deleteable(boxInfo2).ExecuteCommand();
+
+ //娣诲姞鎿嶄綔鏃ュ織
+ new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鐗╂枡鏍囩", boxNo, "缂栬緫", $"灏唟boxNo2}绠辩爜鍚堝苟鍒颁簡{boxNo}绠辩爜涓�", userId);
+ //鎻愪氦浜嬪姟
+ Db.CommitTran();
+
+ }
+ catch (Exception e)
+ {
+ //鍥炴粴浜嬪姟
+ Db.RollbackTran();
+ throw new Exception(e.Message);
+ }
+ }
#endregion
#region 鏁版嵁褰掓。
--
Gitblit v1.8.0