From 74ce2ccbae367b804028fbac431f22865f84427a Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期三, 11 六月 2025 13:55:36 +0800
Subject: [PATCH] 添加空托入库申请接口
---
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs | 370 +++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 358 insertions(+), 12 deletions(-)
diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
index d2c75d7..8779332 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -25,6 +25,10 @@
using System.Security.Policy;
using Newtonsoft.Json;
using Utility.Tools;
+using Model.ModelDto.SysDto;
+using Model.ModelVm.SysVm;
+using System.Security.Cryptography.X509Certificates;
+using AutoMapper.Configuration.Annotations;
namespace WMS.BLL.BllPdaServer
{
@@ -2868,13 +2872,6 @@
}
#endregion
-
-
-
-
-
-
-
// 鑾峰彇鍗曟嵁鍒楄〃
public List<ArrivalNoticeDto> GetArrivalNotices(ArrivalNoticeVm model)
{
@@ -2909,11 +2906,6 @@
throw ex;
}
}
-
-
-
-
-
// 鏍规嵁绠辩爜鎴栨墭鐩樺彿鑾峰彇绠辨敮淇℃伅 liudl
public List<BoxInfoDto> GetBoxInfos(BoxInfoVm model)
@@ -6812,5 +6804,359 @@
#endregion
+ #region 绾胯竟鏍囩
+ /// <summary>
+ /// 鏍规嵁鐗╂枡缂栫爜銆佸悕绉拌幏鍙栫墿鏂欎俊鎭�
+ /// </summary>
+ /// <param name="model">缂栫爜 鍚嶇О</param>
+ /// <returns>鐗╂枡璇︾粏淇℃伅</returns>
+ public MaterialsDto GetSkuInfo(GetMaterialsVm model)
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(model.SkuNo) && string.IsNullOrEmpty(model.SkuName))
+ {
+ throw new Exception("璇疯緭鍏ョ墿鏂欑紪鐮佹垨鐗╂枡鍚嶇О!");
+ }
+
+ var skuModels = Db.Queryable<SysMaterials>().Where(m => (m.SkuNo == model.SkuNo || m.SkuName == model.SkuName) && m.IsDel == "0").Select< MaterialsDto>().ToList();
+ if (skuModels.Count <= 0)
+ {
+ throw new Exception("鐗╂枡涓嶅瓨鍦紒");
+ }
+
+ return skuModels.First();
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+
+ /// <summary>
+ /// 鐢熸垚鏉$爜鏍囩
+ /// </summary>
+ /// <param name="model"></param>
+ /// <returns></returns>
+ /// <exception cref="Exception"></exception>
+ public List<BllBoxInfo> AddLabels(LabelsVm model)
+ {
+ try
+ {
+ if (decimal.TryParse(model.SkuNum, out decimal skuQty))
+ {
+ if (skuQty <= 0)
+ {
+ throw new Exception("绠卞唴鏁伴噺涓嶈兘灏忎簬绛変簬0");
+ }
+ }
+ else
+ {
+ throw new Exception("绠卞唴鏁伴噺璇疯緭鍏ユ暟瀛楋紒");
+ }
+
+ // 楠岃瘉鐗╂枡淇℃伅鏄惁瀛樺湪
+ var skuModels = Db.Queryable<SysMaterials>().Where(m => (m.SkuNo == model.SkuNo || m.SkuName == model.SkuName) && m.IsDel == "0").Select<MaterialsDto>().ToList();
+ if (skuModels.Count <= 0)
+ {
+ throw new Exception("鐗╂枡涓嶅瓨鍦紒");
+ }
+
+
+ #region
+ var skuModel = skuModels.First();
+ var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == skuModel.PackagNo);
+ if (pack == null)
+ {
+ throw new Exception("鏈煡璇㈠埌褰撳墠鐗╂枡鐨勫寘瑁呬俊鎭�");
+ }
+
+ var packStr = "";
+ if (!string.IsNullOrWhiteSpace(pack.L1Name))
+ {
+ packStr += pack.L1Num + "/" + pack.L1Name;
+ }
+ if (!string.IsNullOrWhiteSpace(pack.L2Name))
+ {
+ packStr += "-" + pack.L2Num + "/" + pack.L2Name;
+ }
+ if (!string.IsNullOrWhiteSpace(pack.L3Name))
+ {
+ packStr += "-" + pack.L3Num + "/" + pack.L3Name;
+ }
+ if (!string.IsNullOrWhiteSpace(pack.L4Name))
+ {
+ packStr += "-" + pack.L4Num + "/" + pack.L4Name;
+ }
+ if (!string.IsNullOrWhiteSpace(pack.L5Name))
+ {
+ packStr += "-" + pack.L5Num + "/" + pack.L5Name;
+ }
+ #endregion
+
+ #region 鍖呰鏌ヨ
+
+ var bNum = 0;//绠辩墿鍝佹暟閲�
+ var zNum = 0;//鏀墿鍝佹暟閲�
+ var packLevel = 0;
+
+ if (pack.L2Num.HasValue)
+ {
+ if (pack.L2Name != "鎵�")
+ {
+ packLevel = 1;//JC34椤圭洰鍙湁涓�绾ф爣绛�
+ bNum = Convert.ToInt32(pack.L2Num);
+ }
+ }
+ if (pack.L1Num.HasValue)
+ {
+ if (packLevel == 0)
+ {
+ packLevel = 1;
+ bNum = Convert.ToInt32(pack.L1Num);
+ }
+ zNum = Convert.ToInt32(pack.L1Num);
+ }
+
+ if (packLevel < 1)//鍖呰绛夌骇灏忎簬1锛屾寜鐓�1绾ф爣绛炬墦鍗�
+ {
+ throw new Exception("鍖呰淇℃伅鏈夎锛屽皬浜庝竴绾�");
+ }
+
+ if (skuQty > bNum * 5)
+ {
+ throw new Exception("绠卞唴鏁伴噺澶т簬鍖呰5鍊嶏紝涓嶅彲鎵撳嵃");
+ }
+ #endregion
+ var modelList = new List<BllBoxInfo>();
+ var label = Db.Queryable<BllBoxInfo>().Where(m => m.LotNo == model.LotNo && m.SkuNo == model.SkuNo && m.IsDel == "0").ToList();
+
+ Db.BeginTran();
+ if (packLevel == 1)
+ {
+ #region 涓�绾у寘瑁�
+ int labelNum = 1;
+ labelNum = int.Parse(Math.Ceiling(skuQty / bNum).ToString());//鏍囩鏁伴噺
+
+
+ #region 鑾峰彇/鐢熸垚鎵规鍙�
+ string maxLotNoStr = ""; //鎵规鍙�
+ string maxBoxCode = ""; //绠辩爜鍙�
+
+ maxLotNoStr = model.LotNo;
+ maxBoxCode = label.Where(m => m.LotNo == maxLotNoStr).Max(a => a.BoxNo);
+ #endregion
+
+ for (int i = 1; i <= labelNum; i++)
+ {
+ decimal boxQty = 0;
+ if (i == labelNum)
+ {
+ // 鏈�鍚庝竴涓潯鐮�
+ var s = bNum * (i - 1);
+ if (bNum > skuQty - s)
+ {
+ boxQty = skuQty - s;// 鏁伴噺
+ }
+ else
+ {
+ boxQty = bNum;// 鏁伴噺
+ }
+ }
+ else
+ {
+ boxQty = bNum; // 鏁伴噺
+ }
+
+ //鑾峰彇绠辩爜
+ if (string.IsNullOrWhiteSpace(maxBoxCode))
+ {
+ var str = "B" + maxLotNoStr + "000001"; //鎵瑰彿+ 娴佹按 B 230201 0001 000001
+ maxBoxCode = str;
+ }
+ else
+ {
+ maxBoxCode = maxBoxCode.Substring(0, maxBoxCode.Length - 6) + (int.Parse(maxBoxCode.Substring(maxBoxCode.Length - 6, 6)) + 1).ToString().PadLeft(6, '0');
+ }
+
+ // 灏嗘潯鐮佷繚瀛樺埌鍘熸枡鏉$爜琛�
+ var labelModel = new BllBoxInfo()
+ {
+ BoxNo = maxBoxCode,
+ Qty = boxQty,
+ FullQty = bNum,
+ Status = "0",
+ SkuNo = model.SkuNo,
+ SkuName = model.SkuName,
+ LotNo = maxLotNoStr,
+ Standard = skuModel.Standard,
+ PackageStandard = packStr,
+ InspectMark = "0",
+ BitBoxMark = bNum > boxQty ? "1" : "0",
+ InspectStatus = "0",
+
+ ProductionTime = DateTime.Parse(model.TimeFrom),
+ StoreTime = DateTime.Parse(model.TimeEnd),
+ ExpirationTime = DateTime.Parse(model.TimeEnd),
+
+ Origin = "WMS鐢熸垚",
+ CreateUser = (int)model.userId,
+ CreateTime = DateTime.Now,
+ };
+
+ Db.Insertable(labelModel).ExecuteCommand();
+ modelList.Add(labelModel);
+ }
+
+ #endregion
+ }
+ else //(packLevel == 2)
+ {
+ #region 浜岀骇鍖呰
+
+ if (skuQty > bNum * 5)
+ {
+ throw new Exception("绠卞唴鏁伴噺澶т簬鍖呰5鍊嶏紝涓嶅彲鎵撳嵃");
+ }
+
+ var qty2 = skuQty;
+ int labelNum2 = 1; //鐢熶骇绠辨潯鐮佹暟閲�
+
+ labelNum2 = int.Parse(Math.Ceiling(qty2 / bNum).ToString());
+
+ var ss = bNum / zNum; //姣忕鏀爣绛炬暟閲�
+ var labelNumZ2 = Math.Ceiling((decimal)ss);
+
+ #region 鑾峰彇/鐢熸垚鎵规鍙�
+
+ string maxCodestr2 = ""; //鎵规
+ string maxboxcode2 = ""; //绠辩爜
+ string maxboxcode3 = ""; //鏀爜
+
+ maxCodestr2 = model.LotNo;
+ maxboxcode2 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo);
+ maxboxcode3 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo3);//鏀彿
+ #endregion
+
+ for (int i = 1; i <= labelNum2; i++)//绠辩爜鏍囩
+ {
+ //绠卞唴鏁伴噺
+ decimal boxQty = 0;
+ if (i == labelNum2)
+ {
+ // 鏈�鍚庝竴涓潯鐮�
+ var s = bNum * (i - 1);
+ if (bNum > qty2 - s)
+ {
+ boxQty = qty2 - s;// 鏁伴噺
+ }
+ else
+ {
+ boxQty = bNum;// 鏁伴噺
+ }
+ }
+ else
+ {
+ boxQty = bNum; // 鏁伴噺
+ }
+
+ //鑾峰彇绠辩爜
+ if (string.IsNullOrWhiteSpace(maxboxcode2))
+ {
+ maxboxcode2 = "B" + maxCodestr2 + "000001"; // 绠卞彿 鎵瑰彿+绗嚑绠�
+ }
+ else
+ {
+ maxboxcode2 = maxboxcode2.Substring(0, 11) + (int.Parse(maxboxcode2.Substring(11, 6)) + 1).ToString().PadLeft(6, '0');
+ }
+ //鑾峰彇绠卞唴鏀爣绛炬暟閲�
+ if (i == labelNum2)
+ {
+ var isGo2 = false;
+ var sl = 0;
+ for (int j = 1; j <= labelNumZ2; j++)
+ {
+ if (isGo2)
+ {
+ break;
+ }
+ var s = bNum * (i - 1);
+ var s2 = zNum * (j - 1);
+ if (zNum >= qty2 - s - s2)
+ {
+ isGo2 = true;
+ }
+ sl++;
+ }
+ labelNumZ2 = sl;
+ }
+
+ for (int j = 1; j <= labelNumZ2; j++)//鏈�灏忓崟浣嶆爣绛�
+ {
+
+ decimal d = zNum;
+ if (i == labelNum2)
+ {
+ var s = bNum * (i - 1);
+ var s2 = zNum * (j - 1);
+ if (zNum >= qty2 - s - s2)
+ {
+ d = qty2 - s - s2; // 鏁伴噺
+ }
+ }
+
+ if (string.IsNullOrWhiteSpace(maxboxcode3))
+ {
+ maxboxcode3 = "Z" + maxCodestr2 + "0001"; // 鏀彿 鎵瑰彿+绗嚑绠�
+ }
+ else
+ {
+ maxboxcode3 = maxboxcode3.Substring(0, 11) + (int.Parse(maxboxcode3.Substring(11, 4)) + 1).ToString().PadLeft(4, '0');
+ }
+
+ // 灏嗘潯鐮佷繚瀛樺埌鍘熸枡鏉$爜琛�
+ var labelModel = new BllBoxInfo()
+ {
+ BoxNo = maxboxcode2,
+ BoxNo3 = maxboxcode3,
+ Qty = d,
+ FullQty = bNum,
+ Status = "0",
+ SkuNo = model.SkuNo,
+ SkuName = skuModel.SkuName,
+ LotNo = maxCodestr2,
+ Standard = skuModel.Standard,
+ PackageStandard = packStr,
+ InspectMark = "0",
+ BitBoxMark = bNum > boxQty ? "1" : "0",
+ InspectStatus = "0",
+
+ ProductionTime = DateTime.Parse(model.TimeFrom),
+ StoreTime = DateTime.Parse(model.TimeEnd),
+ ExpirationTime = DateTime.Parse(model.TimeEnd),
+
+ Origin = "WMS鐢熸垚",
+ CreateUser = (int)model.userId,
+ CreateTime = DateTime.Now,
+ };
+
+ Db.Insertable(labelModel).ExecuteCommand();
+ modelList.Add(labelModel);
+ }
+ }
+ #endregion
+ }
+ Db.CommitTran();
+
+ return modelList;
+ }
+ catch (Exception ex)
+ {
+ Db.RollbackTran();
+ throw new Exception(ex.Message);
+ }
+ }
+ #endregion
+
}
}
--
Gitblit v1.8.0