From cfdbd0eadeb5dbe4ff8872bb67f43ae8f323a799 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期一, 13 十月 2025 09:35:13 +0800
Subject: [PATCH] 优化入库单导入功能
---
Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs | 319 +++++++++++++++++++++++++++++++++-------------------
1 files changed, 203 insertions(+), 116 deletions(-)
diff --git a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
index 87d19a9..cadc2e7 100644
--- a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
@@ -275,7 +275,7 @@
try
{
- if (model.Origin == "褰曞叆")
+ if (model.Origin == "褰曞叆" || model.Origin == "瀵煎叆")
{
model.ASNNo = new Common().GetMaxNo("ASN");
}
@@ -290,6 +290,7 @@
throw new Exception("鍗曟嵁绫诲瀷涓嶅彲涓虹┖!");
}
}
+
lock (AsnLock)
{
@@ -422,12 +423,16 @@
{
throw new Exception("涓嶅厤妫�鐗╂枡杩囨湡鏃ユ湡杞崲澶辫触");
}
- lot1 = lot12.ToString();
- lot2 = lot22.ToString();
+ lot1 = lot12.ToString("yyyy-MM-dd");
+ lot2 = lot22.ToString("yyyy-MM-dd");
}
if (string.IsNullOrWhiteSpace(detailModel.PackagNo))
{
- throw new Exception("鍖呰涓嶈兘涓虹┖");
+ detailModel.PackagNo = sku.PackagNo;
+ if (string.IsNullOrWhiteSpace(detailModel.PackagNo))
+ {
+ throw new Exception("鍖呰涓嶈兘涓虹┖");
+ }
}
// 璁$畻鍑烘�婚噾棰�
detailModel.Money = detailModel.Price * detailModel.Qty;
@@ -436,7 +441,7 @@
ASNNo = model.ASNNo,
SkuNo = detailModel.SkuNo,
SkuName = detailModel.SkuName,
- Standard = detailModel.Standard,
+ Standard = sku.Standard,
LotNo = detailModel.LotNo == null ? "" : detailModel.LotNo.Trim(),
LotText = detailModel.LotText,
Qty = (decimal)detailModel.Qty,
@@ -493,6 +498,64 @@
return "-2:娣诲姞澶辫触鏁版嵁鍥炴粴!";
}
}
+ }
+ catch (Exception ex)
+ {
+ throw new Exception(ex.Message);
+ }
+ }
+
+ //瀵煎叆鍏ュ簱鍗曟嵁
+ public string ImportArrivalNotice(ArrivalNoticeVms models)
+ {
+ string strMessage = "";
+ try
+ {
+ if (models.ListArrivalNotice.Count <= 0)
+ {
+ strMessage = "-1:鏂囦欢鍐呮棤鏁版嵁璇锋牳瀹�!";
+ }
+ var num = 0;
+ int CreateUser = Convert.ToInt32(models.CreateUser);
+ List<string> noticeList = new List<string>();
+ foreach (ArrivalNoticeVm model in models.ListArrivalNotice)
+ {
+ try
+ {
+ model.CreateUser = models.CreateUser;
+ model.Origin = "瀵煎叆";
+ var msg = AddArrivalNotice(model);
+ strMessage += msg;
+ if (msg == "")
+ {
+ num += 1;
+ var hasBoxItem = noticeList.Exists(x => x == model.ASNNo);
+ if (!hasBoxItem)
+ {
+ noticeList.Add(model.ASNNo);
+ }
+ }
+ }
+ catch(Exception ex)
+ {
+ throw new Exception($"鐗╂枡缂栫爜锛歿model.AsnDetail[0].SkuNo},鐗╂枡鍚嶇О锛歿model.AsnDetail[0].SkuName}锛屽鍏ュけ璐ワ細"+ex.Message);
+ // ignored
+ }
+ }
+ if (num > 0)
+ {
+ new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鍗曟嵁", $"鍏卞鍏ヤ簡{noticeList.Count}鏉″崟鎹�", "瀵煎叆", $"鍏卞鍏ヤ簡{noticeList.Count}鏉″崟鎹�", CreateUser);
+ }
+ if (strMessage.Contains("-1") && num > 0)
+ {
+ return "閮ㄥ垎瀵煎叆鎴愬姛" + strMessage;
+ }
+ if (num > 0)
+ {
+ return "瀵煎叆鎴愬姛" + strMessage;
+ }
+
+ return strMessage;
}
catch (Exception ex)
{
@@ -777,10 +840,10 @@
return "-1:鍏ュ簱鍗曠姸鎬佸凡鍙樻洿锛屼笉鍙垹闄�!";
}
- if (asnModel.Origin != "褰曞叆" && asnModel.Origin != "閲囪喘鍗�")
- {
- return "-1:涓婃父绯荤粺涓嬪彂鐨勫崟鎹紝涓嶅彲鍒犻櫎;";
- }
+ //if (asnModel.Origin != "褰曞叆" && asnModel.Origin != "閲囪喘鍗�")
+ //{
+ // return "-1:涓婃父绯荤粺涓嬪彂鐨勫崟鎹紝涓嶅彲鍒犻櫎;";
+ //}
// 鍒犻櫎鎬诲崟
var editDateTime = DateTime.Now;
@@ -961,108 +1024,108 @@
return "-1:鍏冲崟澶辫触锛�";
}
#region 閲囪喘璁″垝锛岃嫢鏄噰璐鍗曟牴鎹噰璐鍒掑崟鑷姩鐢熸垚鍏ュ簱鍗曚俊鎭�
- if (notice.Type == "1" && !string.IsNullOrEmpty(notice.OrderCode))
- {
- // 鑾峰彇閲囪喘鎬诲崟淇℃伅
- var planOrd = Db.Queryable<BllProcurePlanNotice>().First(it => it.OrderCode == notice.OrderCode && it.IsDel == "0");
- //鍏ュ簱鍗曟槑缁�
- var noticeDetailList = Db.Queryable<BllArrivalNoticeDetail>()
- .Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo).ToList();
- foreach (var item in noticeDetailList)
- {
- //閲囪喘鍗曟槑缁�
- var planDetail = Db.Queryable<BllProcurePlanNoticeDetail>()
- .First(it => it.ParentId == planOrd.Id && it.SkuNo == item.SkuNo && it.IsDel == "0");
- planDetail.CompleteQty += item.CompleteQty;
- if (planDetail.CompleteQty >= planDetail.Qty)
- {
- planDetail.Status = "2";
- planDetail.CompleteTime = comTime;
- }
- else
- {
- planDetail.Status = "1";
- }
- Db.Updateable(planDetail).ExecuteCommand();
- }
- // 缁存姢閲囪喘鎬诲崟淇℃伅
- var planDetailNum = Db.Queryable<BllProcurePlanNoticeDetail>().Count(m => m.IsDel == "0" && m.ParentId == planOrd.Id && m.Status != "2");
- if (planDetailNum == 0)
- {
- planOrd.Status = "2";
- planOrd.CompleteTime = comTime;
- Db.Updateable(planOrd).ExecuteCommand();
- }
- else
- {
- if (planOrd.Status == "0")
- {
- planOrd.Status = "1";
- Db.Updateable(planOrd).ExecuteCommand();
- }
- }
- //閲囪喘鍗曟槑缁�
- var planDetailList = Db.Queryable<BllProcurePlanNoticeDetail>()
- .Where(it => it.ParentId == planOrd.Id && it.IsDel == "0" && it.CompleteQty < it.Qty).ToList();
- foreach (var item in planDetailList)
- {
- //鍒ゆ柇鏈夋棤姝e湪鎵ц鐨�
- var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(it => it.OrderDetailCode == item.OrderDetailCode && it.IsDel == "0" && it.Status == "0");
- if (noticeDetail != null)
- {
- continue;
- }
- // 鑾峰彇鐗╂枡璇︾粏淇℃伅
- var skuModel = Db.Queryable<SysMaterials>().First(it => it.SkuNo == item.SkuNo && it.IsDel == "0");
- if (skuModel == null)
- {
- continue;
- }
- // 楠岃瘉鍖呰淇℃伅鏄惁瀛樺湪
- var packagModel = Db.Queryable<SysPackag>().First(it => it.PackagNo == item.PackagNo && it.IsDel == "0");
- if (packagModel == null)
- {
- continue;
- }
- // 鍏ュ簱鎬昏〃淇℃伅
- string asnNo = new Common().GetMaxNo("ASN");
- var asnModel1 = new BllArrivalNotice()
- {
- ASNNo = asnNo,
- Status = "0",//鎵ц鐘舵�侊紝0锛氱瓑寰呮墽琛�
- Type = "1",//鍗曟嵁绫诲瀷锛�1锛氶噰璐叆搴�
- Origin = "閲囪喘鍗�",
- CustomerNo = item.CustomerNo,
- CustomerName = item.CustomerName,
- OrderCode = planOrd.OrderCode,
- CreateUser = 0
- };
- // 鎻掑叆鍏ュ簱鎬昏〃淇℃伅
- Db.Insertable(asnModel1).ExecuteCommand();
- //鍏ュ簱鍗曟槑缁�
- var arrDetailModel = new BllArrivalNoticeDetail()
- {
- ASNNo = asnNo,
- SkuNo = skuModel.SkuNo,
- SkuName = skuModel.SkuName,
- Standard = skuModel.Standard,
- LotNo = "",
- LotText = "",
- Qty = 0,
- FactQty = 0,
- CompleteQty = 0,
- PackagNo = packagModel.PackagNo,
- SupplierLot = "",
- Status = "0",
- IsSampling = "0",
- InspectStatus = "0",
- OrderDetailCode = item.OrderDetailCode,
- CreateUser = 0
- };
- // 鎻掑叆鍏ュ簱鎬昏〃淇℃伅
- Db.Insertable(arrDetailModel).ExecuteCommand();
- }
- }
+ //if (notice.Type == "1" && !string.IsNullOrEmpty(notice.OrderCode))
+ //{
+ // // 鑾峰彇閲囪喘鎬诲崟淇℃伅
+ // var planOrd = Db.Queryable<BllProcurePlanNotice>().First(it => it.OrderCode == notice.OrderCode && it.IsDel == "0");
+ // //鍏ュ簱鍗曟槑缁�
+ // var noticeDetailList = Db.Queryable<BllArrivalNoticeDetail>()
+ // .Where(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo).ToList();
+ // foreach (var item in noticeDetailList)
+ // {
+ // //閲囪喘鍗曟槑缁�
+ // var planDetail = Db.Queryable<BllProcurePlanNoticeDetail>()
+ // .First(it => it.ParentId == planOrd.Id && it.SkuNo == item.SkuNo && it.IsDel == "0");
+ // planDetail.CompleteQty += item.CompleteQty;
+ // if (planDetail.CompleteQty >= planDetail.Qty)
+ // {
+ // planDetail.Status = "2";
+ // planDetail.CompleteTime = comTime;
+ // }
+ // else
+ // {
+ // planDetail.Status = "1";
+ // }
+ // Db.Updateable(planDetail).ExecuteCommand();
+ // }
+ // // 缁存姢閲囪喘鎬诲崟淇℃伅
+ // var planDetailNum = Db.Queryable<BllProcurePlanNoticeDetail>().Count(m => m.IsDel == "0" && m.ParentId == planOrd.Id && m.Status != "2");
+ // if (planDetailNum == 0)
+ // {
+ // planOrd.Status = "2";
+ // planOrd.CompleteTime = comTime;
+ // Db.Updateable(planOrd).ExecuteCommand();
+ // }
+ // else
+ // {
+ // if (planOrd.Status == "0")
+ // {
+ // planOrd.Status = "1";
+ // Db.Updateable(planOrd).ExecuteCommand();
+ // }
+ // }
+ // //閲囪喘鍗曟槑缁�
+ // var planDetailList = Db.Queryable<BllProcurePlanNoticeDetail>()
+ // .Where(it => it.ParentId == planOrd.Id && it.IsDel == "0" && it.CompleteQty < it.Qty).ToList();
+ // foreach (var item in planDetailList)
+ // {
+ // //鍒ゆ柇鏈夋棤姝e湪鎵ц鐨�
+ // var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(it => it.OrderDetailCode == item.OrderDetailCode && it.IsDel == "0" && it.Status == "0");
+ // if (noticeDetail != null)
+ // {
+ // continue;
+ // }
+ // // 鑾峰彇鐗╂枡璇︾粏淇℃伅
+ // var skuModel = Db.Queryable<SysMaterials>().First(it => it.SkuNo == item.SkuNo && it.IsDel == "0");
+ // if (skuModel == null)
+ // {
+ // continue;
+ // }
+ // // 楠岃瘉鍖呰淇℃伅鏄惁瀛樺湪
+ // var packagModel = Db.Queryable<SysPackag>().First(it => it.PackagNo == item.PackagNo && it.IsDel == "0");
+ // if (packagModel == null)
+ // {
+ // continue;
+ // }
+ // // 鍏ュ簱鎬昏〃淇℃伅
+ // string asnNo = new Common().GetMaxNo("ASN");
+ // var asnModel1 = new BllArrivalNotice()
+ // {
+ // ASNNo = asnNo,
+ // Status = "0",//鎵ц鐘舵�侊紝0锛氱瓑寰呮墽琛�
+ // Type = "1",//鍗曟嵁绫诲瀷锛�1锛氶噰璐叆搴�
+ // Origin = "閲囪喘鍗�",
+ // CustomerNo = item.CustomerNo,
+ // CustomerName = item.CustomerName,
+ // OrderCode = planOrd.OrderCode,
+ // CreateUser = 0
+ // };
+ // // 鎻掑叆鍏ュ簱鎬昏〃淇℃伅
+ // Db.Insertable(asnModel1).ExecuteCommand();
+ // //鍏ュ簱鍗曟槑缁�
+ // var arrDetailModel = new BllArrivalNoticeDetail()
+ // {
+ // ASNNo = asnNo,
+ // SkuNo = skuModel.SkuNo,
+ // SkuName = skuModel.SkuName,
+ // Standard = skuModel.Standard,
+ // LotNo = "",
+ // LotText = "",
+ // Qty = 0,
+ // FactQty = 0,
+ // CompleteQty = 0,
+ // PackagNo = packagModel.PackagNo,
+ // SupplierLot = "",
+ // Status = "0",
+ // IsSampling = "0",
+ // InspectStatus = "0",
+ // OrderDetailCode = item.OrderDetailCode,
+ // CreateUser = 0
+ // };
+ // // 鎻掑叆鍏ュ簱鎬昏〃淇℃伅
+ // Db.Insertable(arrDetailModel).ExecuteCommand();
+ // }
+ //}
#endregion
Db.Ado.CommitTran();
@@ -1258,9 +1321,16 @@
resultModel.Message = "鍏ュ簱鍗曟槑缁嗕笉鍙负绌�!";
return resultModel;
}
+ var asnModel = Db.Queryable<BllArrivalNotice>().First(w => w.IsDel == "0" && w.OrderCode == model.orderNo);
+ if (asnModel != null)
+ {
+ resultModel.Message = $"{model.orderNo}璇ュ崟鍙峰凡瀛樺湪鍏ュ簱鍗�!";
+ return resultModel;
+ }
+
// 鍏ュ簱鎬昏〃淇℃伅
string asnNo = new Common().GetMaxNo("ASN");
- var asnModel = new BllArrivalNotice()
+ asnModel = new BllArrivalNotice()
{
ASNNo = asnNo,
Status = "0",//绛夊緟鎵ц
@@ -1287,9 +1357,9 @@
resultModel.Message = "搴旀敹鐗╂枡鏁伴噺搴斿ぇ浜�0!";
return resultModel;
}
- if (string.IsNullOrEmpty(asnDetailModel.lotNo.ToString()))
+ if (string.IsNullOrEmpty(asnDetailModel.lotNo) && asnModel.Type != "1")
{
- resultModel.Message = "鎵规鍙蜂笉鍙负绌�!";
+ resultModel.Message = "闈為噰璐叆搴擄紝鎵规鍙蜂笉鍙负绌�!";
return resultModel;
}
@@ -1310,7 +1380,7 @@
SkuNo = asnDetailModel.skuNo.ToString(),
SkuName = skuModel.SkuName,
Standard = skuModel.Standard,
- LotNo = asnDetailModel.lotNo.ToString(),
+ LotNo = asnDetailModel.lotNo,
LotText = "",
Qty = Convert.ToDecimal(asnDetailModel.expectedQty),
FactQty = 0,
@@ -1324,6 +1394,23 @@
InspectStatus = "0",
CreateUser = 0
};
+ detailModel.BoxCodeStr = detailModel.LotNo;
+ if (string.IsNullOrWhiteSpace(detailModel.LotNo))
+ {
+ string toDayTime = DateTime.Now.ToString("yyyyMM");
+ var maxBoxCodeStr = Db.Queryable<BllArrivalNoticeDetail>()
+ .Where(m => m.IsDel == "0" && m.BoxCodeStr.Contains("BK")
+ && m.CreateTime.ToString("yyyyMM") == DateTime.Now.ToString("yyyyMM")).Max(m => m.BoxCodeStr);
+ if (string.IsNullOrWhiteSpace(maxBoxCodeStr))
+ {
+ maxBoxCodeStr = "BK" + toDayTime.Substring(2, 4) + "0001";
+ }
+ else
+ {
+ maxBoxCodeStr = "BK" + (int.Parse(maxBoxCodeStr.Replace("BK", "")) + 1).ToString();
+ }
+ detailModel.BoxCodeStr = maxBoxCodeStr;
+ }
detailModels.Add(detailModel);
}
@@ -1405,7 +1492,7 @@
//绯荤粺瀵规帴鍚庢斁寮�
var jsonData = JsonConvert.SerializeObject(soInfo);
- var response = HttpHelper.DoPost(url, jsonData, "鍏ュ簱鍗曞畬鎴愪笂浼�", "ERP");
+ var response = HttpHelper.DoPost(url, jsonData, "鍏ュ簱鍗曞畬鎴愪笂浼�", "SAP");
var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁
if (obj.Success != 0)
--
Gitblit v1.8.0