From 9ff4a447bc9b8a7ff1f09dfee1ce2f1263dccca2 Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期三, 11 六月 2025 14:38:50 +0800
Subject: [PATCH] 添加叠托机申请接口
---
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs | 464 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 462 insertions(+), 2 deletions(-)
diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
index d4719d4..5699ad4 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -2226,10 +2226,12 @@
};
//鑾峰彇鐘舵�佹槸鏈粍鎵樼殑鏍囩淇℃伅
- var models = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId ).GroupBy(m=> new { m.ProductionTime,m.ExpirationTime }).Select(m=>new { m.ProductionTime ,m.ExpirationTime}).OrderBy(m=>m.ProductionTime).ToList();//&& m.Status == "0"
+ var models = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId && m.Status == "0")
+ .GroupBy(m=> new { m.ProductionTime,m.ExpirationTime })
+ .Select(m=>new { m.ProductionTime ,m.ExpirationTime}).OrderBy(m=>m.ProductionTime).ToList();//&& m.Status == "0"
foreach (var item in models)
{
- var boxNoList = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId && m.ProductionTime == item.ProductionTime).Select(m => m.BoxNo).ToList();
+ var boxNoList = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.Status == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId && m.ProductionTime == item.ProductionTime).Select(m => m.BoxNo).ToList();
if (boxNoList.Count > 0)
{
data.BoxNoList = boxNoList;
@@ -2413,6 +2415,464 @@
}
}
+ /// <summary>
+ /// 鏍规嵁绠辩爜鑾峰彇鏍囩绠辩爜淇℃伅锛堣溅闂村叆搴�-鑾峰彇WMS鐢熸垚鐨勭淇℃伅锛�
+ /// </summary>
+ /// <param name="model"></param>
+ /// <returns></returns>
+ public List<BoxInfoDto> GetWmsBoxInfos(string boxNo)
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(boxNo))
+ {
+ throw new Exception("璇锋壂鎻忓绠辨潯鐮�!");
+ }
+
+ string sqlString = $@"SELECT BoxNo, SkuNo, SkuName, LotNo, BitBoxMark, SUM(Qty) as Qty FROM BllBoxInfo
+ WHERE IsDel = '0' and Status='0' and BoxNo = '{boxNo}'
+ GROUP BY BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+ var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
+
+ if (models.Count != 0)
+ {
+ return models;
+ }
+ else
+ {
+ throw new Exception("娌℃湁鏌ヨ鍒扮鐮佷俊鎭�");
+ }
+
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+
+
+ public void ChejianIn(string palletNo,string boxNo,decimal qty,string areaNo,int userId)
+ {
+ try
+ {
+ #region MyRegion
+
+ if (string.IsNullOrWhiteSpace(palletNo))
+ {
+ throw new Exception("鎵樼洏鍙蜂笉鑳戒负绌�");
+ }
+ if (string.IsNullOrWhiteSpace(boxNo))
+ {
+ throw new Exception("绠卞彿涓嶈兘涓虹┖");
+ }
+ if (qty<=0)
+ {
+ throw new Exception("鏁伴噺涓嶈兘灏忕瓑0");
+ }
+ var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo).ToList();
+ if (boxInfo.Count == 0)
+ {
+ throw new Exception("鏈煡璇㈠埌褰撳墠绠卞彿淇℃伅");
+ }
+ var boxInfoOne = boxInfo.First();
+ var pall = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNo);
+ if (pall == null)
+ {
+ throw new Exception("鏈煡璇㈠埌褰撳墠鎵樼洏淇℃伅");
+ }
+ #endregion
+
+ //寮�鍚簨鍔�
+ Db.BeginTran();
+ //褰撳墠鏃堕棿
+ var comTime = DateTime.Now;
+
+ #region 鍖呰
+
+ var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == boxInfoOne.SkuNo);
+ var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == sku.PackagNo);
+
+ var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺
+ var bNum = 0;//绠辩爜鐗╁搧鏁伴噺
+
+ //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺
+ new Common().GetPackQtyInfo(pack.PackagNo, ref pNum, ref bNum);
+
+ #endregion
+
+ var msgStr = $"绠卞彿涓簕boxNo}";
+ var boxInfoList = new List<BllBoxInfo>();
+
+
+ boxInfoList.AddRange(boxInfo);
+
+ #region 搴撳瓨鏄庣粏
+
+ var area = Db.Queryable<SysStorageArea>().First(m => m.IsDel == "0" && m.AreaNo == areaNo);
+ if (area == null)
+ {
+ throw new Exception("鍏ュ簱鍖哄煙涓嶈兘涓虹┖");
+ }
+
+ var tags = "0";
+
+ // 鍒ゆ柇搴撳瓨鏄庣粏鏄惁宸叉湁姝ゆ墭鐩樹俊鎭�
+ var sd1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.SkuNo== boxInfoOne.SkuNo && m.LotNo == boxInfoOne.LotNo && m.PalletNo == palletNo);
+ var sdId1 = 0;
+ if (sd1 != null)
+ {
+ if (sd1.AreaNo!= areaNo)
+ {
+ throw new Exception("閫夋嫨鐨勫尯鍩熶笌搴撳瓨涓嶅悓");
+ }
+ sdId1 = sd1.Id;
+ // 搴撳瓨宸插瓨鍦� 鏇存柊鏁版嵁
+ sd1.Qty += qty;
+ sd1.CompleteTime = comTime;
+ sd1.UpdateUser = userId;
+ sd1.UpdateTime = comTime;
+
+ Db.Updateable(sd1).ExecuteCommand();
+ }
+ else
+ {
+ var sd2 = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == palletNo && m.IsDel == "0" && !string.IsNullOrWhiteSpace(m.AreaNo));
+ if (sd2.Count(m=>m.AreaNo!= areaNo) > 0)
+ {
+ throw new Exception("褰撳墠鎵樼洏浣嶇疆涓庨�夋嫨鐨勪笉鍚岋紝璇锋牳瀹�");
+ }
+ // 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁
+ sd1 = new DataStockDetail()
+ {
+ ASNNo = "",
+ LotNo = boxInfoOne.LotNo,
+ LotText = boxInfoOne.LotText,
+ SupplierLot = boxInfoOne.SupplierLot,
+ SkuNo = sku.SkuNo,
+ SkuName = sku.SkuName,
+ Standard = sku.Standard,
+ Qty = qty,
+ LockQty = 0,
+ FrozenQty = 0,
+ InspectQty = 0,
+ WareHouseNo = area.WareHouseNo,//鎵�灞炰粨搴�
+ RoadwayNo = "",//鎵�灞炲贩閬�
+ AreaNo = area.AreaNo,//鎵�灞炲尯鍩�
+ LocatNo = "",//鍌ㄤ綅鍦板潃
+ PalletNo = palletNo,
+ PalletTags = tags,
+ CompleteTime = comTime,
+ ProductionTime = boxInfoOne.ProductionTime,
+ ExpirationTime = boxInfoOne.ExpirationTime,
+ Status = "0",
+ InspectMark = boxInfoOne.InspectMark,
+ InspectStatus = sku.IsInspect,
+ BitPalletMark = "1",
+ PackagNo = sku.PackagNo,
+
+ IsDel = "0",
+ CreateUser = 0,
+ CreateTime = comTime
+ };
+
+ //娣诲姞搴撳瓨鏄庣粏
+ sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity();
+ }
+ #endregion
+
+ // 鏇存敼绠辨敮鍏崇郴琛�
+ decimal factQty = 0.00m;//鎵樼洏鎬绘暟閲�
+
+
+ //鏍囩缁勬墭
+ var boxGroup = boxInfo.GroupBy(m => m.BoxNo).ToList();
+ foreach (var g in boxGroup)
+ {
+ decimal boxFullQty = 0;//绠卞唴鎬绘暟閲�
+ foreach (var box in g)
+ {
+ if (box.BindNo != null && box.BindNo != 0)
+ {
+ continue;
+ }
+
+
+ box.PalletNo = palletNo;
+ box.Status = "2";
+
+ box.CompleteTime = comTime;
+ box.UpdateTime = comTime;
+ box.UpdateUser = userId;
+
+ //box.Qty = box.Qty;
+ //box.BitBoxMark = box.Qty == box.FullQty ? "0" : "1";
+
+ factQty += box.Qty;
+ boxFullQty += box.Qty;
+
+ #region 搴撳瓨绠辩爜鏄庣粏
+ var box2 = new DataBoxInfo()
+ {
+ StockDetailId = sdId1,
+ BoxNo = box.BoxNo,
+ BoxNo2 = box.BoxNo2,
+ BoxNo3 = box.BoxNo3,
+ PalletNo = box.PalletNo,
+ PalletNo2 = box.PalletNo2,
+ PalletNo3 = box.PalletNo3,
+ Qty = box.Qty,
+ FullQty = box.FullQty,
+ Status = "2",//0锛氭湭缁勬墭 1锛氬凡缁勬墭 2锛氬凡鍏ュ簱 3锛氬凡鍑哄簱 4:宸插垎閰� 5锛氬凡鎷h揣
+ LotNo = box.LotNo,
+ LotText = box.LotText,
+ SkuNo = box.SkuNo,
+ SkuName = box.SkuName,
+ Standard = sku.Standard,
+ ProductionTime = box.ProductionTime,
+ SupplierLot = box.SupplierLot,
+ InspectStatus = sku.IsInspect,
+ InspectMark = box.InspectMark,
+ BitBoxMark = box.BitBoxMark,
+ ExpirationTime = box.ExpirationTime,
+
+ CreateUser = 0,
+ CreateTime = comTime
+ };
+ //娣诲姞搴撳瓨绠辩爜鏄庣粏
+ Db.Insertable(box2).ExecuteCommand();
+ #endregion
+ }
+ if (boxFullQty > bNum)
+ {
+ throw new Exception($"缁戝畾澶辫触锛寋g.Key}绠辩爜缁戝畾鏁伴噺澶т簬璇ョ墿鍝佸寘瑁呮暟閲忥紒");
+ }
+ }
+ //鏇存敼绠辨敮鍏崇郴琛ㄤ俊鎭�
+ Db.Updateable(boxInfoList).ExecuteCommand();
+
+
+ #region 搴撳瓨
+ var dataStock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == boxInfoOne.LotNo);
+ if (dataStock != null)
+ {
+ dataStock.Qty += factQty;
+ Db.Updateable(dataStock).ExecuteCommand();
+ }
+ else
+ {
+ var stock = new DataStock()
+ {
+ SkuNo = sku.SkuNo,
+ SkuName = sku.SkuName,
+ Standard = sku.Standard,
+ LotNo = boxInfoOne.LotNo,
+ LotText = boxInfoOne.LotText,
+ Qty = qty,
+ LockQty = 0,
+ FrozenQty = 0,
+ IsSampling = "0",
+ IsDel = "0",
+ CreateUser = userId,
+ CreateTime = comTime
+ };
+ Db.Insertable(stock).ExecuteCommand();
+ }
+ #endregion
+
+ // 鏇存敼鎵樼洏浣跨敤鐘舵��
+ var sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{palletNo}';";
+ ////娣诲姞鎵樼洏璁板綍琛ㄦ暟鎹�
+ //sqlStr += $"insert into LogPalletTrack values('{palletNo}','{boxNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);";
+ //Db.Ado.ExecuteCommand(sqlStr);
+ new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "杞﹂棿鍏ュ簱", boxNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{palletNo}銆亄msgStr}鐨勫叆搴撲俊鎭�", userId);
+
+ //鎻愪氦浜嬪姟
+ Db.CommitTran();
+
+ }
+ catch (Exception e)
+ {
+ Db.RollbackTran();
+ throw new Exception(e.Message);
+ }
+ }
+
+ /// <summary>
+ /// 杞﹂棿缁戝畾鎵樼洏 涓嶈创鏍囩墿鏂�
+ /// </summary>
+ /// <param name="model"></param>
+ /// <param name="userId"></param>
+ /// <exception cref="Exception"></exception>
+ public void ChejianQtyIn(string palletNo, string skuNo, string lotNo, decimal qty, string areaNo, int userId)
+ {
+ try
+ {
+ #region MyRegion
+
+ if (string.IsNullOrWhiteSpace(palletNo))
+ {
+ throw new Exception("鎵樼洏鍙蜂笉鑳戒负绌�");
+ }
+ if (string.IsNullOrWhiteSpace(skuNo))
+ {
+ throw new Exception("鐗╂枡涓嶈兘涓虹┖");
+ }
+ if (qty <= 0)
+ {
+ throw new Exception("鏁伴噺涓嶈兘灏忕瓑0");
+ }
+ var skuInfo = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == skuNo);
+ if (skuInfo == null)
+ {
+ throw new Exception("鏈煡璇㈠埌鐗╂枡淇℃伅");
+ }
+ var pall = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNo);
+ if (pall == null)
+ {
+ throw new Exception("鏈煡璇㈠埌褰撳墠鎵樼洏淇℃伅");
+ }
+ #endregion
+
+ //寮�鍚簨鍔�
+ Db.BeginTran();
+ //褰撳墠鏃堕棿
+ var comTime = DateTime.Now;
+
+ #region 鍖呰
+
+ var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == skuInfo.PackagNo);
+
+ var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺
+ var bNum = 0;//绠辩爜鐗╁搧鏁伴噺
+
+ //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺
+ new Common().GetPackQtyInfo(pack.PackagNo, ref pNum, ref bNum);
+
+ #endregion
+
+
+
+ #region 搴撳瓨鏄庣粏
+
+ var area = Db.Queryable<SysStorageArea>().First(m => m.IsDel == "0" && m.AreaNo == areaNo);
+ if (area == null)
+ {
+ throw new Exception("鍏ュ簱鍖哄煙涓嶈兘涓虹┖");
+ }
+
+ var tags = "0";
+
+ // 鍒ゆ柇搴撳瓨鏄庣粏鏄惁宸叉湁姝ゆ墭鐩樹俊鎭�
+ var sd1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.SkuNo == skuNo && m.LotNo == lotNo && m.PalletNo == palletNo);
+ var sdId1 = 0;
+ if (sd1 != null)
+ {
+ if (sd1.AreaNo != areaNo)
+ {
+ throw new Exception("閫夋嫨鐨勫尯鍩熶笌搴撳瓨涓嶅悓");
+ }
+ sdId1 = sd1.Id;
+ // 搴撳瓨宸插瓨鍦� 鏇存柊鏁版嵁
+ sd1.Qty += qty;
+ sd1.CompleteTime = comTime;
+ sd1.UpdateUser = userId;
+ sd1.UpdateTime = comTime;
+ if (sd1.Qty >= pNum)
+ {
+ sd1.BitPalletMark = "0";
+ }
+ Db.Updateable(sd1).ExecuteCommand();
+ }
+ else
+ {
+ // 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁
+ sd1 = new DataStockDetail()
+ {
+ LotNo = lotNo,
+ SupplierLot = "",
+ SkuNo = skuInfo.SkuNo,
+ SkuName = skuInfo.SkuName,
+ Standard = skuInfo.Standard,
+ Qty = qty,
+ LockQty = 0,
+ FrozenQty = 0,
+ InspectQty = 0,
+ WareHouseNo = area.WareHouseNo,//鎵�灞炰粨搴�
+ RoadwayNo = "",//鎵�灞炲贩閬�
+ AreaNo = area.AreaNo,//鎵�灞炲尯鍩�
+ LocatNo = "",//鍌ㄤ綅鍦板潃
+ PalletNo = palletNo,
+ PalletTags = tags,
+ CompleteTime = comTime,
+ //ProductionTime = boxInfoOne.ProductionTime,
+ //ExpirationTime = boxInfoOne.ExpirationTime,
+ Status = "0",
+ InspectMark = "0",
+ InspectStatus = "1",
+ BitPalletMark = qty >= pNum ?"0" :"1",
+ PackagNo = skuInfo.PackagNo,
+
+ IsDel = "0",
+ CreateUser = 0,
+ CreateTime = comTime
+ };
+
+ //娣诲姞搴撳瓨鏄庣粏
+ sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity();
+ }
+ #endregion
+
+ // 鏇存敼绠辨敮鍏崇郴琛�
+ decimal factQty = 0.00m;//鎵樼洏鎬绘暟閲�
+
+
+ #region 搴撳瓨
+ var dataStock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == skuInfo.SkuNo && m.LotNo == lotNo);
+ if (dataStock != null)
+ {
+ dataStock.Qty += factQty;
+ Db.Updateable(dataStock).ExecuteCommand();
+ }
+ else
+ {
+ var stock = new DataStock()
+ {
+ SkuNo = skuInfo.SkuNo,
+ SkuName = skuInfo.SkuName,
+ Standard = skuInfo.Standard,
+ LotNo = lotNo,
+ LotText = "",
+ Qty = qty,
+ LockQty = 0,
+ FrozenQty = 0,
+ IsSampling = "0",
+ IsDel = "0",
+ CreateUser = userId,
+ CreateTime = comTime
+ };
+ Db.Insertable(stock).ExecuteCommand();
+ }
+ #endregion
+
+ // 鏇存敼鎵樼洏浣跨敤鐘舵��
+ var sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{palletNo}';";
+ ////娣诲姞鎵樼洏璁板綍琛ㄦ暟鎹�
+ //sqlStr += $"insert into LogPalletTrack values('{palletNo}','{boxNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);";
+ Db.Ado.ExecuteCommand(sqlStr);
+ new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "杞﹂棿鍏ュ簱", skuNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{palletNo}鐨勫叆搴撲俊鎭�", userId);
+
+ //鎻愪氦浜嬪姟
+ Db.CommitTran();
+
+ }
+ catch (Exception e)
+ {
+ Db.RollbackTran();
+ throw new Exception(e.Message);
+ }
+
+ }
+
#endregion
// 鑾峰彇鍗曟嵁鍒楄〃
public List<ArrivalNoticeDto> GetArrivalNotices(ArrivalNoticeVm model)
--
Gitblit v1.8.0