From 887103a2ad70fef2669384859d532d9b74159cf1 Mon Sep 17 00:00:00 2001
From: test <15284381150@163.com>
Date: 星期四, 24 七月 2025 17:00:13 +0800
Subject: [PATCH] 修改库存统计导出,修改入库作业
---
Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs | 325 +++++++++++++---------------
Wms/Wms/Controllers/StatisticalController.cs | 11
Wms/WMS.IBLL/IDataServer/IStockServer.cs | 4
Wms/WMS.BLL/DataServer/StockServer.cs | 305 +++++++++++----------------
4 files changed, 287 insertions(+), 358 deletions(-)
diff --git a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
index 46d5205..87d19a9 100644
--- a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
@@ -500,38 +500,35 @@
}
}
- //缂栬緫鍏ュ簱鍗曟嵁
+ /// <summary>
+ /// 缂栬緫鍏ュ簱鍗曟嵁
+ /// </summary>
+ /// <param name="model"></param>
+ /// <returns></returns>
public string EditArrivalNotice(ArrivalNoticeVm model)
{
string strMessage = "";
- string sqlString = string.Empty;
- string sqlDetailStr = string.Empty;
try
{
lock (AsnLock)
{
- //鍒ゆ柇鏄惁涓洪噰璐叆搴撳崟鎹垨杞﹂棿浣欐枡閫�鍥炲叆搴�
+ // 鍒ゆ柇鍗曟嵁绫诲瀷鍙婃壒娆¤鍒欒鏄�
// 0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 2锛氫腑闂村搧鍏ュ簱 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欓��鍥炲叆搴� 5锛氬叾瀹冨叆搴� 6锛氫唬鍌ㄥ叆搴� 7锛氬瘎瀛樺叆搴� 8 鐢熶骇閫�鏂欏叆搴�
- //0銆�2銆�3銆�4 鎵规涓嶈兘涓虹┖
- //1銆佹坊鍔犲繀椤讳负绌恒�佺紪杈戜笉鍙负绌猴紝涓嶈兘鏇存敼
- //5銆�6 鎵规鍙负绌哄彲涓嶄负绌�
- //7 蹇呴』涓虹┖
- var TypeLot = " 5, 6, 7"; //鎵规涓虹敓鎴愭壒娆″崟鎹被鍨�
-
+ var TypeLot = " 5, 6, 7"; // 鎵规涓虹敓鎴愭壒娆″崟鎹被鍨�
+
+ // 楠岃瘉鍗曟嵁瀛樺湪鎬у拰鐘舵��
var asnInfo = Db.Queryable<BllArrivalNotice>().First(m => m.ASNNo == model.ASNNo && m.IsDel == "0");
- if (asnInfo == null)
+ if (asnInfo == null)
{
- strMessage = "-1:鍗曞彿涓嶅瓨鍦紝鎴栧凡鍒犻櫎!;";
- return strMessage;
+ return "-1:鍗曞彿涓嶅瓨鍦紝鎴栧凡鍒犻櫎!;";
}
if (asnInfo.Status != "0")
{
- strMessage = "-1:鍗曟嵁鐘舵�佸彉鏇达紝涓嶅彲缂栬緫;";
- return strMessage;
+ return "-1:鍗曟嵁鐘舵�佸彉鏇达紝涓嶅彲缂栬緫;";
}
var dateTime = DateTime.Now;
- // 缂栬緫鎬诲崟
+ // 鏇存柊涓诲崟鎹俊鎭�
asnInfo.CustomerNo = model.CustomerNo;
asnInfo.CustomerName = model.CustomerName;
asnInfo.LotNo = model.LotNo;
@@ -540,142 +537,131 @@
asnInfo.UpdateUser = model.CreateUser;
var detailModels = model.AsnDetail;
- sqlDetailStr += $"SELECT * FROM BllArrivalNoticeDetail WHERE ASNNo = '{model.ASNNo}' and isDel = '0';";
- //var dbDetailModels = DataContext.Db.Ado.SqlQuery<BllArrivalNoticeDetail>(sqlDetailStr);
- var dbDetailModels = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.ASNNo == model.ASNNo && m.IsDel == "0").ToList();
+ var dbDetailModels = Db.Queryable<BllArrivalNoticeDetail>()
+ .Where(m => m.ASNNo == model.ASNNo && m.IsDel == "0").ToList();
- sqlDetailStr = string.Empty;
// 澶勭悊宸插垹闄ょ殑鏄庣粏
- foreach (BllArrivalNoticeDetail dbDetailModel in dbDetailModels)
+ foreach (var dbDetail in dbDetailModels)
{
- if (detailModels.Count(it => it.Id == dbDetailModel.Id) == 0)
+ if (!detailModels.Any(it => it.Id == dbDetail.Id))
{
- dbDetailModel.IsDel = "1";
- dbDetailModel.UpdateTime = dateTime;
- dbDetailModel.UpdateUser = model.CreateUser;
+ dbDetail.IsDel = "1";
+ dbDetail.UpdateTime = dateTime;
+ dbDetail.UpdateUser = model.CreateUser;
}
}
- // 澶勭悊淇敼鍜屾坊鍔犵殑鏄庣粏
+ // 澶勭悊淇敼鍜屾柊澧炵殑鏄庣粏
string toDayTime = dateTime.ToString("yyyymmdd");
List<BllArrivalNoticeDetail> addDetails = new List<BllArrivalNoticeDetail>();
List<BllArrivalNoticeDetail> editDetails = new List<BllArrivalNoticeDetail>();
- var maxLotNo = "";
- foreach (ArrivalNoticeDetailVm detailModel in detailModels)
+
+ foreach (var detailModel in detailModels)
{
+ // 鍩虹楠岃瘉
if (string.IsNullOrEmpty(detailModel.SkuNo))
- {
- strMessage = "-1:鐗╂枡缂栫爜涓嶅彲涓虹┖;";
- return strMessage;
- }
+ return "-1:鐗╂枡缂栫爜涓嶅彲涓虹┖;";
+
if (string.IsNullOrEmpty(detailModel.SkuName))
- {
- strMessage = "-1:鐗╂枡鍚嶇О涓嶅彲涓虹┖;";
- return strMessage;
- }
+ return "-1:鐗╂枡鍚嶇О涓嶅彲涓虹┖;";
+
if (detailModel.Qty == null || detailModel.Qty <= 0)
- {
- strMessage = "-1:鏁伴噺蹇呴』澶т簬0;";
- return strMessage;
- }
-
- //if (model.Type == "0" || model.Type == "2" || model.Type == "3" || model.Type == "4")
- //{
- // if (string.IsNullOrWhiteSpace(detailModel.LotNo))
- // {
- // throw new Exception("褰撳墠鍗曟嵁绫诲瀷鎵规涓嶅彲涓虹┖!");
- // }
- //}
+ return "-1:鏁伴噺蹇呴』澶т簬0;";
- if (TypeLot.Contains(model.Type))
+ // 鍏抽敭閫昏緫锛氳幏鍙栫墿鏂欑殑鍙楁帶鐘舵��
+ // 1. 鏍规嵁鐗╂枡缂栫爜鏌ヨ鐗╂枡淇℃伅 FirstOrDefault
+ var material = Db.Queryable<SysMaterials>()
+ .First(m => m.SkuNo == detailModel.SkuNo && m.IsDel == "0");
+ if (material == null)
+ return $"-1:鐗╂枡缂栫爜{detailModel.SkuNo}涓嶅瓨鍦ㄦ垨宸插垹闄�;";
+
+ // 2. 灏嗗瓧绗︿覆绫诲瀷鐨処sControlled杞崲涓篵ool锛堟牴鎹疄闄呭彇鍊艰鍒欒皟鏁达級
+ // 姣斿锛�"1"琛ㄧず鍙楁帶锛�"0"琛ㄧず涓嶅彈鎺э紱鎴�"True"/"False"锛涙垨"鏄�"/"鍚�"
+ bool isControlled;
+ if (!bool.TryParse(material.IsControlled, out isControlled))
{
- if (string.IsNullOrWhiteSpace(detailModel.Lot1))
- {
- throw new Exception("鐢熶骇鏃ユ湡涓嶅彲涓虹┖!");
- }
+ // 澶勭悊闈炴爣鍑嗘牸寮忥紙濡�"1"/"0"锛�
+ isControlled = material.IsControlled == "1" ||
+ string.Equals(material.IsControlled, "鏄�", StringComparison.OrdinalIgnoreCase);
+ }
+
+ // 3. 鏍规嵁鍙楁帶鐘舵�侀獙璇佹棩鏈�
+ if (isControlled)
+ {
+ // 鍙楁帶鐘舵�侊細鐢熶骇鏃ユ湡蹇呭~
+ if (string.IsNullOrWhiteSpace(detailModel.Lot1))
+ return $"-1:鐗╂枡{detailModel.SkuNo}涓哄彈鎺х墿鏂欙紝鐢熶骇鏃ユ湡涓嶅彲涓虹┖;";
+
+ // 鍙楁帶鐘舵�侊細杩囨湡鏃ユ湡蹇呭~
if (string.IsNullOrWhiteSpace(detailModel.Lot2))
- {
+ return $"-1:鐗╂枡{detailModel.SkuNo}涓哄彈鎺х墿鏂欙紝杩囨湡鏃ユ湡涓嶅彲涓虹┖;";
+
+ // 楠岃瘉鏃ユ湡鏍煎紡鏈夋晥鎬�
+ if (!DateTime.TryParse(detailModel.Lot1, out DateTime productionDate))
+ return $"-1:鐗╂枡{detailModel.SkuNo}鐨勭敓浜ф棩鏈熸牸寮忛敊璇紝璇蜂娇鐢ㄦ湁鏁堟棩鏈熸牸寮�;";
+
+ if (!DateTime.TryParse(detailModel.Lot2, out DateTime expiryDate))
+ return $"-1:鐗╂枡{detailModel.SkuNo}鐨勮繃鏈熸棩鏈熸牸寮忛敊璇紝璇蜂娇鐢ㄦ湁鏁堟棩鏈熸牸寮�;";
+
+ // 楠岃瘉杩囨湡鏃ユ湡涓嶈兘鏃╀簬鐢熶骇鏃ユ湡
+ if (expiryDate <= productionDate)
+ return $"-1:鐗╂枡{detailModel.SkuNo}鐨勮繃鏈熸棩鏈熶笉鑳芥棭浜庣敓浜ф棩鏈�;";
+ }
+ // 涓嶅彈鎺х姸鎬侊細鏃ユ湡闈炲繀濉紝鏃犻渶楠岃瘉
+
+ // 鍘熸湁鎵规鐩稿叧楠岃瘉锛堜繚鐣欙級
+ if (TypeLot.Contains(model.Type))
+ {
+ if (string.IsNullOrWhiteSpace(detailModel.Lot1))
+ throw new Exception("鐢熶骇鏃ユ湡涓嶅彲涓虹┖!");
+
+ if (string.IsNullOrWhiteSpace(detailModel.Lot2))
throw new Exception("杩囨湡鏃ユ湡涓嶅彲涓虹┖!");
- }
}
- // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ綋鍓嶆槑缁�
- var com = dbDetailModels.Where(m => m.SkuNo == detailModel.SkuNo
- && m.LotNo == detailModel.LotNo && m.Id != detailModel.Id && m.IsDel == "0").Count();
- if (com > 0)
+ // 楠岃瘉鐗╂枡鍜屾壒娆″彿鏄惁閲嶅
+ if (dbDetailModels.Any(m => m.SkuNo == detailModel.SkuNo
+ && m.LotNo == detailModel.LotNo
+ && m.Id != detailModel.Id
+ && m.IsDel == "0"))
{
- strMessage = "-1:鐗╂枡鍜屾壒娆″彿閲嶅;";
- return strMessage;
+ return "-1:鐗╂枡鍜屾壒娆″彿閲嶅;";
}
- if (detailModel.Price == null)
- {
- detailModel.Price = 0;
- }
- //鐢熸垚鑷湁鎵规
+ // 澶勭悊浠锋牸榛樿鍊�
+ detailModel.Price ??= 0;
+
+ // 鐢熸垚绠辩爜锛堣嚜鏈夋壒娆¢�昏緫锛�
if (detailModel.Id == 0 || detailModel.Id == null || string.IsNullOrWhiteSpace(detailModel.LotNo))
{
- //var notice = Db.Queryable<BllArrivalNotice>().Where(m => m.IsDel == "0" && TypeLot.Contains(m.Type)).Select(m => m.ASNNo).ToList();
- //if (string.IsNullOrWhiteSpace(maxLotNo))
- //{
- // maxLotNo = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && !string.IsNullOrWhiteSpace(m.LotNo) && notice.Contains(m.ASNNo)).Max(m => m.LotNo);
- //}
- //if (string.IsNullOrWhiteSpace(maxLotNo))
- //{
- // maxLotNo = toDayTime.Substring(2, 6) + "0001";
- //}
- //else
- //{
- // var lotStr = maxLotNo.Substring(0, 6);
- // var timeStr = toDayTime.Substring(2, 6);
- // if (lotStr == timeStr)
- // {
- // maxLotNo = toDayTime.Substring(2, 6) + (int.Parse(maxLotNo.Substring(6, 4)) + 1).ToString().PadLeft(4, '0');
- // }
- // else
- // {
- // maxLotNo = timeStr + "0001";
- // }
- //}
- //detailModel.LotNo = maxLotNo;
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;
+ .Where(m => m.IsDel == "0" && m.BoxCodeStr.Contains("BK")
+ && m.CreateTime.ToString("yyyyMM") == DateTime.Now.ToString("yyyyMM"))
+ .Max(m => m.BoxCodeStr);
+
+ detailModel.BoxCodeStr = string.IsNullOrWhiteSpace(maxBoxCodeStr)
+ ? "BK" + toDayTime.Substring(2, 4) + "0001"
+ : "BK" + (int.Parse(maxBoxCodeStr.Replace("BK", "")) + 1).ToString();
}
+ // 澶勭悊鏂板鏄庣粏
if (detailModel.Id == 0 || detailModel.Id == null)
{
- //if (model.Type == "1")
- //{
- // strMessage = "-1:閲囪喘鍏ュ簱涓嶅彲鏇存敼鏄庣粏锛屽彧鍙紪杈戞暟閲�;";
- // return strMessage;
- //}
- // 璁$畻鍑烘�婚噾棰�
detailModel.Money = detailModel.Price * detailModel.Qty;
-
- BllArrivalNoticeDetail addModel = new BllArrivalNoticeDetail()
+ addDetails.Add(new BllArrivalNoticeDetail
{
ASNNo = model.ASNNo,
SkuNo = detailModel.SkuNo,
SkuName = detailModel.SkuName,
Standard = detailModel.Standard,
- LotNo = detailModel.LotNo == null ? "" : detailModel.LotNo.Trim(),
+ LotNo = detailModel.LotNo?.Trim() ?? "",
LotText = detailModel.LotText,
Qty = (decimal)detailModel.Qty,
PackagNo = detailModel.PackagNo,
Price = detailModel.Price,
Money = detailModel.Money,
- FactQty = 0, // 宸茬粍鏁伴噺
- CompleteQty = 0, // 瀹屾垚鏁伴噺
+ FactQty = 0,
+ CompleteQty = 0,
IsBale = detailModel.IsBale,
IsBelt = detailModel.IsBelt,
SupplierLot = detailModel.SupplierLot,
@@ -690,89 +676,81 @@
UDF3 = detailModel.UDF3,
UDF4 = detailModel.UDF4,
UDF5 = detailModel.UDF5,
- CreateUser=(int)model.CreateUser
- };
- addDetails.Add(addModel);
+ CreateUser = (int)model.CreateUser
+ });
}
+ // 澶勭悊缂栬緫鏄庣粏
else
{
- //鍒ゆ柇鏄惁鏇存敼
- int rowNum = dbDetailModels
- .Count(it => it.Id == detailModel.Id
- && it.Qty == detailModel.Qty
- && it.LotNo == detailModel.LotNo
- && it.LotText == detailModel.LotText
- && it.SupplierLot == detailModel.SupplierLot
- && it.IsBale == detailModel.IsBale
- && it.IsBelt == detailModel.IsBelt
- && it.Lot1 == detailModel.Lot1 // 鐢熶骇鏃ユ湡
- && it.Lot2 == detailModel.Lot2 // 杩囨湡鏃ユ湡
- && it.BoxCodeStr == detailModel.BoxCodeStr
- && it.UDF1 == detailModel.UDF1
- && it.UDF2 == detailModel.UDF2
- && it.UDF3 == detailModel.UDF3
- && it.UDF4 == detailModel.UDF4
- && it.UDF5 == detailModel.UDF5);
- if (rowNum > 0)
+ // 妫�鏌ユ槸鍚︽湁瀹為檯淇敼
+ var existingDetail = dbDetailModels.First(m => m.Id == detailModel.Id);
+ if (existingDetail.Qty == detailModel.Qty
+ && existingDetail.LotNo == detailModel.LotNo
+ && existingDetail.LotText == detailModel.LotText
+ && existingDetail.SupplierLot == detailModel.SupplierLot
+ && existingDetail.IsBale == detailModel.IsBale
+ && existingDetail.IsBelt == detailModel.IsBelt
+ && existingDetail.Lot1 == detailModel.Lot1
+ && existingDetail.Lot2 == detailModel.Lot2
+ && existingDetail.BoxCodeStr == detailModel.BoxCodeStr
+ && existingDetail.UDF1 == detailModel.UDF1
+ && existingDetail.UDF2 == detailModel.UDF2
+ && existingDetail.UDF3 == detailModel.UDF3
+ && existingDetail.UDF4 == detailModel.UDF4
+ && existingDetail.UDF5 == detailModel.UDF5)
{
continue;
}
- var dbDetail = dbDetailModels.First(m => m.Id == detailModel.Id);
- if (TypeLot.Contains(model.Type))
+ // 鎵规涓嶅彲鏇存敼楠岃瘉
+ if (TypeLot.Contains(model.Type)
+ && !string.IsNullOrWhiteSpace(existingDetail.LotNo)
+ && existingDetail.LotNo != detailModel.LotNo)
{
- if (!string.IsNullOrWhiteSpace(dbDetail.LotNo))
- {
- if (dbDetail.LotNo != detailModel.LotNo)
- {
- strMessage = "-1:褰撳墠鍗曟嵁绫诲瀷涓嶅彲鏇存敼鎵规;";
- continue;
- }
- }
-
+ return "-1:褰撳墠鍗曟嵁绫诲瀷涓嶅彲鏇存敼鎵规;";
}
- // 璁$畻鍑烘�婚噾棰�
- detailModel.Money = detailModel.Price * detailModel.Qty;
- dbDetail.Qty = (decimal)detailModel.Qty;
- dbDetail.LotNo = detailModel.LotNo == null ? "" : detailModel.LotNo.Trim();
- dbDetail.Money = detailModel.Money;
- dbDetail.LotText = detailModel.LotText;
- dbDetail.SupplierLot = detailModel.SupplierLot;
- dbDetail.IsBale = detailModel.IsBale;
- dbDetail.Lot1 = detailModel.Lot1;
- dbDetail.Lot2 = detailModel.Lot2;
- dbDetail.BoxCodeStr = detailModel.BoxCodeStr;
- dbDetail.UDF1 = detailModel.UDF1;
- dbDetail.UDF2 = detailModel.UDF2;
- dbDetail.UDF3 = detailModel.UDF3;
- dbDetail.UDF4 = detailModel.UDF4;
- dbDetail.UDF5 = detailModel.UDF5;
- dbDetail.UpdateTime = dateTime;
- dbDetail.UpdateUser = model.CreateUser;
+ // 鏇存柊鏄庣粏淇℃伅
+ existingDetail.Qty = (decimal)detailModel.Qty;
+ existingDetail.LotNo = detailModel.LotNo?.Trim() ?? "";
+ existingDetail.Money = detailModel.Price * detailModel.Qty;
+ existingDetail.LotText = detailModel.LotText;
+ existingDetail.SupplierLot = detailModel.SupplierLot;
+ existingDetail.IsBale = detailModel.IsBale;
+ existingDetail.Lot1 = detailModel.Lot1;
+ existingDetail.Lot2 = detailModel.Lot2;
+ existingDetail.BoxCodeStr = detailModel.BoxCodeStr;
+ existingDetail.UDF1 = detailModel.UDF1;
+ existingDetail.UDF2 = detailModel.UDF2;
+ existingDetail.UDF3 = detailModel.UDF3;
+ existingDetail.UDF4 = detailModel.UDF4;
+ existingDetail.UDF5 = detailModel.UDF5;
+ existingDetail.UpdateTime = dateTime;
+ existingDetail.UpdateUser = model.CreateUser;
- editDetails.Add(dbDetail);
+ editDetails.Add(existingDetail);
}
}
+ // 浜嬪姟澶勭悊
Db.Ado.BeginTran();
Db.Updateable(dbDetailModels).ExecuteCommand();
int rowCount = Db.Updateable(asnInfo).ExecuteCommand();
- var rowDetailCount = 1;
- if (addDetails.Count > 0)
- {
- rowDetailCount = Db.Insertable(addDetails).ExecuteCommand();
- }
- if (editDetails.Count > 0)
- {
- rowDetailCount += Db.Updateable(editDetails).ExecuteCommand();
- }
+ int rowDetailCount = 1;
- Db.Ado.CommitTran();
+ if (addDetails.Any())
+ rowDetailCount = Db.Insertable(addDetails).ExecuteCommand();
+
+ if (editDetails.Any())
+ rowDetailCount += Db.Updateable(editDetails).ExecuteCommand();
+
if (rowCount > 0 && rowDetailCount > 0)
{
- new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鍗曟嵁", model.ASNNo, "缂栬緫", $"缂栬緫浜嗗崟鎹彿涓簕model.ASNNo}鐨勫崟鎹俊鎭�", Convert.ToInt32(model.CreateUser));
+ Db.Ado.CommitTran();
+ new OperationASNServer().AddLogOperationAsn(
+ "鍏ュ簱浣滀笟", "鍏ュ簱鍗曟嵁", model.ASNNo, "缂栬緫",
+ $"缂栬緫浜嗗崟鎹彿涓簕model.ASNNo}鐨勫崟鎹俊鎭�", Convert.ToInt32(model.CreateUser));
return strMessage;
}
else
@@ -787,6 +765,7 @@
throw ex;
}
}
+
//鍒犻櫎鍏ュ簱鍗�
public string DelArrivalNotice(ArrivalNoticeVm model)
{
diff --git a/Wms/WMS.BLL/DataServer/StockServer.cs b/Wms/WMS.BLL/DataServer/StockServer.cs
index 4574a47..28c62a6 100644
--- a/Wms/WMS.BLL/DataServer/StockServer.cs
+++ b/Wms/WMS.BLL/DataServer/StockServer.cs
@@ -866,75 +866,37 @@
/// </summary>
/// <param name="skuNo">鐗╂枡缂栫爜</param>
/// <param name="skuName">鐗╂枡鍚嶇О</param>
+ /// <param name="InspectStatus">璐ㄦ鐘舵��</param>
/// <returns></returns>
- public List<MateDataStockDto> GetDataStockListDaoChu(string skuNo, string skuName)
+ public List<MateDataStockDto> GetDataStockListDaoChu(string skuNo, string skuName, string InspectStatus)
{
- string str = "select stock.SkuNo,stock.SkuName,stock.Standard,stock.Qty,stock.LockQty,stock.FrozenQty,(mate.Weight * stock.Qty) WeightSum from DataStock stock left join SysMaterials mate on stock.SkuNo = mate.SkuNo Where stock.IsDel = @isdel";
- //鍒ゆ柇鐗╂枡缂栫爜鏄惁涓虹┖
- if (!string.IsNullOrEmpty(skuNo))
- {
- str += " and stock.SkuNo like @skuno";
- }
- //鍒ゆ柇鐗╂枡鍚嶇О鏄惁涓虹┖
- if (!string.IsNullOrEmpty(skuName))
- {
- str += " and stock.SkuName like @skuname";
- }
- //鎺掑簭
- str += " order by stock.SkuNo";
- List<MateDataStockDto> StockList = Db.Ado.SqlQuery<MateDataStockDto>(str, new
- {
- isdel = "0", //鏄惁鍒犻櫎
- skuno = "%" + skuNo + "%", //鐗╂枡缂栫爜
- skuname = "%" + skuName + "%" //鐗╂枡鍚嶇О
- });
-
- //搴撳瓨鎬婚噺
- List<MateDataStockDto> StockListDto = new List<MateDataStockDto>();
-
- foreach (var item in StockList)
- {
- //鍒ゆ柇搴撳瓨鎬婚噺鏄惁鎷ユ湁鐗╂枡
- if (StockListDto.Count > 0)
+ // 鑾峰彇鍏ュ簱鍗曟槑缁嗕俊鎭� GetDataStockListDaoChu
+ var asnList = Db.Queryable<DataStockDetail>()
+ .Where(m => m.IsDel == "0")
+ .WhereIF(!string.IsNullOrEmpty(skuNo), a => a.SkuNo.Contains(skuNo)).Distinct()
+ .WhereIF(!string.IsNullOrEmpty(skuName), a => a.SkuName.Contains(skuName)).Distinct()
+ .WhereIF(!string.IsNullOrEmpty(InspectStatus), a => a.InspectStatus == InspectStatus)
+ .Select(a => new MateDataStockDto()
{
- int i = 0;
- //foreach寰幆搴撳瓨鎬婚噺
- foreach (var dto in StockListDto)
- {
- //鍒ゆ柇鐗╂枡鏄惁鐩稿悓
- if (dto.SkuNo == item.SkuNo)
- {
- dto.Qty = Convert.ToInt32(dto.Qty) + Convert.ToInt32(item.Qty);
- dto.FrozenQty = Convert.ToInt32(dto.FrozenQty) + Convert.ToInt32(item.FrozenQty);
- dto.LockQty = Convert.ToInt32(dto.LockQty) + Convert.ToInt32(item.LockQty);
- dto.ResidueQty = (Convert.ToInt32(dto.ResidueQty) + Convert.ToInt32(item.ResidueQty)).ToString();
- break;
- }
- i += 1;
- //鍒ゆ柇宸叉湁鐩稿悓鐗╂枡
- if (i == StockListDto.Count)
- {
- StockListDto.Add(item);
- break;
- }
- }
- }
- else
- {
- StockListDto.Add(item);
- continue;
- }
- }
- foreach (var item in StockListDto)
- {
- //鐗╂枡缂栫爜锛屽姞涓婂崟寮曞彿鏄槻姝㈠鍑哄埌excel鑷姩鎶婂墠闈㈢殑0缁欏幓鎺�
- if (!string.IsNullOrEmpty(item.SkuNo) && item.SkuNo.Substring(0, 1) == "0")
- {
- item.SkuNo = $"'{item.SkuNo}";
- }
- }
+ SkuNo = a.SkuNo,//鐗╂枡缂栫爜
+ SkuName = a.SkuName,//鐗╂枡鍚嶇О
+ Standard = a.Standard,//鐗╂枡瑙勬牸
+ LotNo = a.LotNo,//鎵规鍙�
+ OwnerNo = a.OwnerNo,//璐т富缂栧彿
+ OwnerName = a.OwnerName,//璐т富鍚嶇О
+ Status = ((a.Status == "0") ? "寰呭垎閰�" : ((a.Status == "1") ? "閮ㄥ垎鍒嗛厤" : ((a.Status == "2") ? "鐩樼偣閿佸畾" : ((a.Status == "3") ? "绉诲簱閿佸畾" : "寮傚父閿佸畾")))),//搴撳瓨鐘舵��
+ InspectStatus = ((a.InspectStatus == "0") ? "寰呰川妫�" : (a.InspectStatus == "1" ? "妫�楠屽悎鏍�" : "涓嶅悎鏍�")),//璐ㄦ鐘舵��
+ Qty = SqlFunc.AggregateSum(Convert.ToInt32((a.Qty))),//搴撳瓨鏁伴噺
+ LockQty = SqlFunc.AggregateSum(Convert.ToInt32(a.LockQty)),//閿佸畾鏁伴噺
+ FrozenQty = SqlFunc.AggregateSum(Convert.ToInt32(a.FrozenQty)),//鍐荤粨鏁伴噺
+ InspectQty = SqlFunc.AggregateSum(Convert.ToInt32(a.InspectQty))//鍙娊妫�鏁伴噺
+ })
+ .Distinct()
+ .GroupBy(a => new { a.SkuNo, a.SkuName, a.Standard, a.LotNo, a.Status, a.InspectStatus, a.OwnerNo, a.OwnerName, a.Qty, a.LockQty, a.FrozenQty, a.InspectQty })
+ .ToList();
- return StockListDto;
+ Console.WriteLine("缁撴灉锛�" + asnList);
+ return asnList;
}
/// <summary>
@@ -944,127 +906,114 @@
/// <param name="skuName">鐗╂枡鍚嶇О</param>
/// <param name="lotNo">鎵规</param>
/// <param name="locatNo">鍌ㄤ綅鍦板潃</param>
- /// <param name="palletNo">鎵樼洏鏉$爜</param>
/// <param name="status">搴撳瓨鐘舵��</param>
/// <param name="inspectStatus">璐ㄦ鐘舵��</param>
+ /// <param name="ownerNo">璐х墿缂栧彿</param>
+ /// <param name="ownerName">璐х墿鍚嶇О</param>
/// <param name="startTime">寮�濮嬫椂闂�</param>
/// <param name="endTime">缁撴潫鏃堕棿</param>
/// <returns></returns>
- public List<StockDetailDto> GetInventoryList1DaoChu(string skuNo, string skuName, string lotNo, string locatNo,
- string palletNo, string status, string inspectStatus, string startTime, string endTime)
+ public List<StockDetailDto> GetDataStockList1DaoChu(string skuNo, string skuName, string lotNo, string locatNo, string status, string inspectStatus, string ownerNo, string ownerName, string startTime, string endTime)
{
- string str = "select detail.*,house.WareHouseName as WareHouseName,roadway.RoadwayName as RoadwayName from DataStockDetail detail left join SysStorageRoadway roadway on detail.RoadwayNo = roadway.RoadwayNo left join SysWareHouse house on detail.WareHouseNo = house.WareHouseNo Where detail.IsDel = @isdel";
- //鍒ゆ柇鐗╂枡缂栫爜鏄惁涓虹┖
- if (!string.IsNullOrEmpty(skuNo))
- {
- str += " and detail.SkuNo = @skuno";
- }
- //鍒ゆ柇鐗╂枡鍚嶇О鏄惁涓虹┖
- if (!string.IsNullOrEmpty(skuName))
- {
- str += " and detail.SkuName = @skuname";
- }
- //鍒ゆ柇鎵规鏄惁涓虹┖
- if (!string.IsNullOrEmpty(lotNo))
- {
- str += " and detail.LotNo = @lotno";
- }
- //鍒ゆ柇鍌ㄤ綅鍦板潃鏄惁涓虹┖
- if (!string.IsNullOrEmpty(locatNo))
- {
- str += " and detail.LocatNo = @locatno";
- }
- //鍒ゆ柇鎵樼洏鏉$爜鏄惁涓虹┖
- if (!string.IsNullOrEmpty(palletNo))
- {
- str += " and detail.PalletNo = @palletno";
- }
- //鍒ゆ柇搴撳瓨鐘舵�佹槸鍚︿负绌�
- if (!string.IsNullOrEmpty(status))
- {
- str += " and detail.Status = @status";
- }
- //鍒ゆ柇璐ㄦ鐘舵�佹槸鍚︿负绌�
- if (!string.IsNullOrEmpty(inspectStatus))
- {
- str += " and detail.InspectStatus = @inspectstatus";
- }
- if (!string.IsNullOrEmpty(startTime))
- {
- str += $" and detail.CompleteTime >= '{startTime}'";
- }
- if (!string.IsNullOrEmpty(endTime))
- {
- endTime = Convert.ToDateTime(endTime).AddDays(1).ToString();
- str += $" and detail.CompleteTime < '{endTime}'";
- }
- //鎺掑簭
- str += " order by detail.SkuNo,detail.PalletNo,detail.LotNo";
- List<StockDetailDto> stockDetailsList = Db.Ado.SqlQuery<StockDetailDto>(str, new
- {
- isdel = "0", //鏄惁鍒犻櫎
- skuno = skuNo, //鐗╂枡缂栫爜
- skuname = skuName, //鐗╂枡鍚嶇О
- lotno = lotNo, //鎵规
- locatno = locatNo, //鍌ㄤ綅鍦板潃
- palletno = palletNo, //鎵樼洏鏉$爜
- status = status, //搴撳瓨鐘舵��
- inspectstatus = inspectStatus //璐ㄦ鐘舵��
- });
- foreach (var item in stockDetailsList)
- {
- //鍌ㄤ綅鍦板潃锛屽姞涓婂崟寮曞彿鏄槻姝㈠鍑哄埌excel鑷姩鎶婂墠闈㈢殑0缁欏幓鎺�
- if (!string.IsNullOrEmpty(item.LocatNo) && item.LocatNo.Substring(0, 1) == "0")
+ // 鑾峰彇鏄庣粏淇℃伅
+ var asnList = Db.Queryable<DataStockDetail, DataStock>
+ ((tb1, tb2) => new JoinQueryInfos(
+ JoinType.Left, tb1.Id == tb2.Id
+ ))
+ .Where((tb1, tb2) => tb1.IsDel == "0" && tb2.IsDel == "0")
+ .WhereIF(!string.IsNullOrWhiteSpace(startTime), tb1 => tb1.CreateTime >= Convert.ToDateTime(startTime))
+ .WhereIF(!string.IsNullOrWhiteSpace(endTime), tb1 => tb1.CreateTime <= Convert.ToDateTime(endTime).AddDays(1))
+ .WhereIF(!string.IsNullOrEmpty(skuNo), (tb1, tb2) => tb2.SkuNo.Contains(skuNo))
+ .WhereIF(!string.IsNullOrEmpty(skuName), (tb1, tb2) => tb2.SkuName.Contains(skuName))
+ .WhereIF(!string.IsNullOrEmpty(ownerNo), (tb1, tb2) => tb2.OwnerNo.Contains(ownerNo))
+ .WhereIF(!string.IsNullOrEmpty(ownerName), (tb1, tb2) => tb2.OwnerName.Contains(ownerName))
+ .WhereIF(!string.IsNullOrEmpty(lotNo), (tb1, tb2) => tb2.LotNo.Contains(lotNo))
+ .WhereIF(!string.IsNullOrEmpty(status), (tb1, tb2) => tb1.Status.Contains(status))
+ .WhereIF(!string.IsNullOrEmpty(inspectStatus), (tb1, tb2) => tb1.InspectStatus.Contains(inspectStatus))
+ //.GroupBy((tb1,tb2) => new { tb2.LotNo, tb2.SkuNo, tb2.SkuName })
+ .Select((tb1, tb2) => new StockDetailDto()
{
- item.LocatNo = $"'{item.LocatNo}";
- }
- //鐗╂枡缂栫爜
- if (!string.IsNullOrEmpty(item.SkuNo) && item.SkuNo.Substring(0, 1) == "0")
- {
- item.SkuNo = $"'{item.SkuNo}";
- }
- //搴撳瓨鐘舵��
- switch (item.Status)
- {
- case "0":
- item.Status = "寰呭垎閰�";
- break;
- case "1":
- item.Status = "閮ㄥ垎鍒嗛厤";
- break;
- case "2":
- item.Status = "宸插垎閰�";
- break;
- case "3":
- item.Status = "鐩樼偣閿佸畾";
- break;
- case "4":
- item.Status = "绉诲簱閿佸畾";
- break;
- default:
- break;
- }
- //璐ㄦ鐘舵��
- switch (item.InspectStatus)
- {
- case "0":
- item.InspectStatus = "寰呮楠�";
- break;
- case "1":
- item.InspectStatus = "妫�楠屽悎鏍�";
- break;
- case "2":
- item.InspectStatus = "涓嶅悎鏍�";
- break;
- case "4":
- item.InspectStatus = "鏀剧疆鏈�";
- break;
- default:
- break;
- }
+ Status = tb1.Status,
+ InspectStatus = tb1.InspectStatus,
+ LotNo = tb1.LotNo,
+ SkuNo = tb2.SkuNo,
+ SkuName = tb2.SkuName,
+ OwnerNo = tb2.OwnerNo,
+ OwnerName = tb2.OwnerName,
+ CompleteTime = tb2.CreateTime,
+ });
- }
- return stockDetailsList;
+ // 鑾峰彇鍑哄簱鍗曟槑缁嗕俊鎭�
+ var soList = Db.Queryable<DataStockDetail, DataStock>
+ (((tb1, tb2) => new JoinQueryInfos(
+ JoinType.Left, tb1.Id == tb2.Id
+ )))
+ .Where((tb1, tb2) => tb1.IsDel == "0" && tb2.IsDel == "0")
+ .WhereIF(!string.IsNullOrWhiteSpace(startTime), tb1 => tb1.CreateTime >= Convert.ToDateTime(startTime))
+ .WhereIF(!string.IsNullOrWhiteSpace(endTime), tb1 => tb1.CreateTime <= Convert.ToDateTime(endTime).AddDays(1))
+ .WhereIF(!string.IsNullOrEmpty(skuNo), (tb1, tb2) => tb2.SkuNo.Contains(skuNo))
+ .WhereIF(!string.IsNullOrEmpty(skuName), (tb1, tb2) => tb2.SkuName.Contains(skuName))
+ .WhereIF(!string.IsNullOrEmpty(ownerNo), (tb1, tb2) => tb2.OwnerNo.Contains(ownerNo))
+ .WhereIF(!string.IsNullOrEmpty(ownerName), (tb1, tb2) => tb2.OwnerName.Contains(ownerName))
+ .WhereIF(!string.IsNullOrEmpty(lotNo), (tb1, tb2) => tb2.LotNo.Contains(lotNo))
+ .WhereIF(!string.IsNullOrEmpty(status), (tb1, tb2) => tb1.Status.Contains(status))
+ .WhereIF(!string.IsNullOrEmpty(inspectStatus), (tb1, tb2) => tb1.InspectStatus.Contains(inspectStatus))
+ //.GroupBy(a => new { a.LotNo, a.SkuNo, a.SkuName })
+ .Select((tb1, tb2) => new StockDetailDto()
+ {
+ Status = tb1.Status,
+ InspectStatus = tb1.InspectStatus,
+ LotNo = tb1.LotNo,
+ SkuNo = tb2.SkuNo,
+ SkuName = tb2.SkuName,
+ OwnerNo = tb2.OwnerNo,
+ OwnerName = tb2.OwnerName,
+ CompleteTime = tb2.CreateTime,
+ });
+
+ // 鑾峰彇鍙栨牱鎷h揣淇℃伅
+ var samplingList = Db.Queryable<DataStockDetail, DataStock>
+ (((tb1, tb2) => new JoinQueryInfos(
+ JoinType.Left, tb1.Id == tb2.Id
+ )))
+ .Where((tb1, tb2) => tb1.IsDel == "0" && tb2.IsDel == "0")
+ .WhereIF(!string.IsNullOrWhiteSpace(startTime), tb1 => tb1.CreateTime >= Convert.ToDateTime(startTime))
+ .WhereIF(!string.IsNullOrWhiteSpace(endTime), tb1 => tb1.CreateTime <= Convert.ToDateTime(endTime).AddDays(1))
+ .WhereIF(!string.IsNullOrEmpty(skuNo), (tb1, tb2) => tb2.SkuNo.Contains(skuNo))
+ .WhereIF(!string.IsNullOrEmpty(skuName), (tb1, tb2) => tb2.SkuName.Contains(skuName))
+ .WhereIF(!string.IsNullOrEmpty(ownerNo), (tb1, tb2) => tb2.OwnerNo.Contains(ownerNo))
+ .WhereIF(!string.IsNullOrEmpty(ownerName), (tb1, tb2) => tb2.OwnerName.Contains(ownerName))
+ .WhereIF(!string.IsNullOrEmpty(lotNo), (tb1, tb2) => tb2.LotNo.Contains(lotNo))
+ .WhereIF(!string.IsNullOrEmpty(status), (tb1, tb2) => tb1.Status.Contains(status))
+ .WhereIF(!string.IsNullOrEmpty(inspectStatus), (tb1, tb2) => tb1.InspectStatus.Contains(inspectStatus))
+ //.GroupBy(a => new { a.LotNo, a.SkuNo, a.SkuName })
+ .Select((tb1, tb2) => new StockDetailDto()
+ {
+ Status = tb1.Status,
+ InspectStatus = tb1.InspectStatus,
+ LotNo = tb1.LotNo,
+ SkuNo = tb2.SkuNo,
+ SkuName = tb2.SkuName,
+ OwnerNo = tb2.OwnerNo,
+ OwnerName = tb2.OwnerName,
+ CompleteTime = tb2.CreateTime,
+ });
+
+ // 鍚堝苟闆嗗悎
+ var dataList = Db.UnionAll(asnList, soList, samplingList)
+ .Select(a => new StockDetailDto()
+ {
+ Status = a.Status,
+ InspectStatus = a.InspectStatus,
+ LotNo = a.LotNo,
+ SkuNo = a.SkuNo,
+ SkuName = a.SkuName,
+ OwnerNo = a.OwnerNo,
+ OwnerName = a.OwnerName,
+ CompleteTime = a.CompleteTime,
+ }).ToList();
+
+ return dataList;
}
#endregion
}
diff --git a/Wms/WMS.IBLL/IDataServer/IStockServer.cs b/Wms/WMS.IBLL/IDataServer/IStockServer.cs
index 8d3d2e0..0b7fb63 100644
--- a/Wms/WMS.IBLL/IDataServer/IStockServer.cs
+++ b/Wms/WMS.IBLL/IDataServer/IStockServer.cs
@@ -112,7 +112,7 @@
/// <param name="skuNo">鐗╂枡缂栫爜</param>
/// <param name="skuName">鐗╂枡鍚嶇О</param>
/// <returns></returns>
- List<MateDataStockDto> GetDataStockListDaoChu(string skuNo, string skuName);
+ List<MateDataStockDto> GetDataStockListDaoChu(string skuNo, string skuName, string InspectStatus);
/// <summary>
/// 瀵煎嚭搴撳瓨鏄庣粏
@@ -127,7 +127,7 @@
/// <param name="startTime">寮�濮嬫椂闂�</param>
/// <param name="endTime">缁撴潫鏃堕棿</param>
/// <returns></returns>
- List<StockDetailDto> GetInventoryList1DaoChu(string skuNo, string skuName, string lotNo, string locatNo, string palletNo, string status, string inspectStatus, string startTime, string endTime);
+ List<StockDetailDto> GetDataStockList1DaoChu(string skuNo, string skuName, string lotNo, string locatNo, string status, string inspectStatus, string ownerNo, string ownerName, string startTime, string endTime);
#endregion
}
}
diff --git a/Wms/Wms/Controllers/StatisticalController.cs b/Wms/Wms/Controllers/StatisticalController.cs
index 5d8ea60..83c294e 100644
--- a/Wms/Wms/Controllers/StatisticalController.cs
+++ b/Wms/Wms/Controllers/StatisticalController.cs
@@ -329,11 +329,12 @@
/// </summary>
/// <param name="skuNo"></param>
/// <param name="skuName"></param>
+ /// <param name="InspectStatus">璐ㄦ鐘舵��</param>
/// <returns></returns>
[HttpGet]
- public IActionResult GetInventoryListDaoChu(string skuNo, string skuName)
+ public IActionResult GetInventoryListDaoChu(string skuNo, string skuName, string InspectStatus)
{
- List<MateDataStockDto> StockList = _stock.GetDataStockListDaoChu(skuNo, skuName);
+ List<MateDataStockDto> StockList = _stock.GetDataStockListDaoChu(skuNo, skuName, InspectStatus);
return Ok(new
{
data = StockList,
@@ -341,7 +342,7 @@
msg = "瀵煎嚭搴撳瓨鎬婚噺鎴愬姛"
});
}
- /// <summary>
+ /// <summary>GetDataStockListDaoChu
/// 瀵煎嚭搴撳瓨鏄庣粏
/// </summary>
/// <param name="skuNo">鐗╂枡缂栫爜</param>
@@ -353,9 +354,9 @@
/// <param name="inspectStatus">璐ㄦ鐘舵��</param>
/// <returns></returns>
[HttpGet]
- public IActionResult GetInventoryList1DaoChu(string skuNo, string skuName, string lotNo, string locatNo, string palletNo, string status, string inspectStatus, string startTime, string endTime)
+ public IActionResult GetDataStockList1DaoChu(string skuNo, string skuName, string lotNo, string locatNo, string status, string inspectStatus, string ownerNo, string ownerName, string startTime, string endTime)
{
- List<StockDetailDto> stockDetailsList = _stock.GetInventoryList1DaoChu(skuNo, skuName, lotNo, locatNo, palletNo, status, inspectStatus, startTime, endTime);
+ List<StockDetailDto> stockDetailsList = _stock.GetDataStockList1DaoChu(skuNo, skuName, lotNo, locatNo, status, inspectStatus, ownerNo, ownerName, startTime, endTime);
return Ok(new
{
data = stockDetailsList,
--
Gitblit v1.8.0