From bbeadfe2c0dd55405b83641751ad88874d0716f6 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期五, 31 十月 2025 09:06:52 +0800
Subject: [PATCH] 完善物料标签的补打标签和合并标签功能
---
Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs | 197 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 192 insertions(+), 5 deletions(-)
diff --git a/Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs b/Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs
index 6296674..9e38ac1 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
{
@@ -672,8 +675,8 @@
#region 鍖呰鏌ヨ
- var bNum = 0;//绠辩墿鍝佹暟閲�
- var zNum = 0;//鏀墿鍝佹暟閲�
+ var bNum = 0m;//绠辩墿鍝佹暟閲�
+ var zNum = 0m;//鏀墿鍝佹暟閲�
var packLevel = 0;
if (pack.L2Num.HasValue)
@@ -681,7 +684,7 @@
if (pack.L2Name != "鎵�")
{
packLevel = 1;//JC34椤圭洰鍙湁涓�绾ф爣绛�
- bNum = Convert.ToInt32(pack.L2Num);
+ bNum = Convert.ToDecimal(pack.L2Num);
}
}
if (pack.L1Num.HasValue)
@@ -689,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绾ф爣绛炬墦鍗�
@@ -1745,6 +1748,190 @@
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("璇ョ鐮佷俊鎭敊璇紝鏈煡鍒版绠辩爜淇℃伅");
+ }
+ 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, "缂栬緫", $"鎷嗗垎浜嗙鐮亄boxNo}鏁伴噺{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}璇ョ鐮佷俊鎭敊璇紝鏈煡鍒版绠辩爜淇℃伅");
+ }
+ 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}璇ョ鐮佷俊鎭敊璇紝鏈煡鍒版绠辩爜淇℃伅");
+ }
+ 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