From 157abc191c34e57c1b958ae74fc3de6518ca8a30 Mon Sep 17 00:00:00 2001
From: zhaowc <526854230@qq.com>
Date: 星期五, 28 二月 2025 11:06:36 +0800
Subject: [PATCH] 修改客户需求
---
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 2266 ++++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 1,767 insertions(+), 499 deletions(-)
diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index 81e5525..68367c9 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -24,6 +24,12 @@
using WMS.IBLL.IBllSoServer;
using Model.ModelVm;
using System.Runtime.Intrinsics.X86;
+using WMS.Entity.BllAsnEntity;
+using Model.ModelDto;
+using WMS.BLL.BllPdaServer;
+using WMS.IBLL.IPdaServer;
+using System.DirectoryServices.Protocols;
+using Model.ModelDto.SysDto;
namespace WMS.BLL.BllSoServer
{
@@ -41,7 +47,7 @@
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
- public bool ErpAddExportNotice(SoInfo model)
+ public void HttpAddExportNotice(SoInfo model)
{
try
{
@@ -49,11 +55,11 @@
{
throw new Exception("鍗曟嵁绫诲瀷涓嶅彲涓虹┖!");
}
- if (string.IsNullOrEmpty(model.Customer))
- {
- throw new Exception("瀹㈡埛涓嶅彲涓虹┖!");
- }
- if (string.IsNullOrEmpty(model.OrderCode))
+ //if (string.IsNullOrEmpty(model.Customer))
+ //{
+ // throw new Exception("瀹㈡埛涓嶅彲涓虹┖!");
+ //}
+ if (string.IsNullOrEmpty(model.OrderNo))
{
throw new Exception("绯荤粺鍗曞彿涓嶅彲涓虹┖!");
}
@@ -68,10 +74,10 @@
//瀹㈡埛淇℃伅
var customer = Db.Queryable<SysCustomer>().First(m => m.IsDel == "0" && m.CustomerNo == model.Customer);
- if (customer == null)
- {
- throw new Exception("瀹㈡埛涓嶅彲涓虹┖!");
- }
+ //if (customer == null)
+ //{
+ // throw new Exception("瀹㈡埛涓嶅彲涓虹┖!");
+ //}
var logistics = Db.Queryable<SysLogisticsInfo>().First(m => m.IsDel == "0" && m.CarrierName == model.LogisticsNo);
int? logisticsId = null;
if (logistics != null)
@@ -108,47 +114,120 @@
}
//搴撳瓨
List<DataStock> stocks;
+
+ decimal q1 = 0;
+ Dictionary<int, decimal> dic = new Dictionary<int, decimal>();
+
if (!string.IsNullOrWhiteSpace(d.LotNo))
{
stocks = stockList.Where(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo).ToList();
+ if (stocks.Count < 1)
+ {
+ throw new Exception($"鎬诲簱瀛樹腑鏈煡璇㈠埌鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}");
+ }
+ //鍒ゆ柇鏁伴噺
+ var qty = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty;
+ if (d.Qty > qty)
+ {
+ throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻");
+ }
+ if (qty > d.Qty - q1)
+ {
+ dic.Add(stocks.First().Id, d.Qty - q1);
+
+ q1 += d.Qty - q1;
+ }
+ else
+ {
+ q1 += qty;
+ dic.Add(stocks.First().Id, qty);
+ }
+
}
else
{
- stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
- }
- if (stocks.Count < 1)
- {
- throw new Exception($"鎬诲簱瀛樹腑鏈煡璇㈠埌鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}");
+ stocks = stockList.Where(m => m.SkuNo == d.SkuNo && !string.IsNullOrWhiteSpace(m.LotNo)).OrderBy(s => s.LotNo).ToList();
+
+ foreach (var demo in stocks)
+ {
+ if (q1 >= d.Qty)
+ {
+ continue;
+ }
+ var q2 = demo.Qty - demo.LockQty - demo.FrozenQty;
+
+ if (q2 >= d.Qty - q1)
+ {
+ dic.Add(demo.Id, d.Qty - q1);
+
+ q1 += d.Qty - q1;
+ }
+ else
+ {
+ q1 += q2;
+ dic.Add(demo.Id, q2);
+ }
+
+ }
+ if (d.Qty > q1)
+ {
+ stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
+ if (stocks.Count == 0)
+ {
+ throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}搴撳瓨鏁伴噺涓嶈冻");
+ }
+ var q2 = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty;
+ if (q2 >= d.Qty - q1)
+ {
+ dic.Add(stocks.First().Id, d.Qty - q1);
+
+ q1 += d.Qty - q1;
+ }
+ else
+ {
+ q1 += q2;
+ dic.Add(stocks.First().Id, q2);
+ }
+ }
+ if (d.Qty > q1)
+ {
+ throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo} 搴撳瓨鏁伴噺涓嶈冻");
+ }
}
- var item = new BllExportNoticeDetail()
+ foreach (var s in dic)
{
- SONo = billNo,
- SkuNo = sku.SkuNo,
- SkuName = sku.SkuName,
- Standard = sku.Standard,
- LotNo = d.LotNo,
- LotText = "",
- Qty = d.Qty,
- AllotQty = 0,
- FactQty = 0,
- CompleteQty = 0,
- PackagNo = sku.PackagNo,
- Price = sku.Price,
- Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * d.Qty,
- IsBale = "",
- IsBelt = "",
- SupplierLot = stocks.First().SupplierLot,
- IsWave = "0",
- WaveNo = "",
+ var st = stockList.First(a => a.Id == s.Key);
+ var item = new BllExportNoticeDetail()
+ {
+ SONo = billNo,
+ SkuNo = sku.SkuNo,
+ SkuName = sku.SkuName,
+ Standard = sku.Standard,
+ LotNo = st.LotNo,
+ LotText = st.LotText,
+ Qty = s.Value,
+ AllotQty = 0,
+ FactQty = 0,
+ CompleteQty = 0,
+ PackagNo = sku.PackagNo,
+ Price = sku.Price,
+ Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * d.Qty,
+ IsBale = "",
+ IsBelt = "",
+ SupplierLot = stocks.First().SupplierLot,
+ IsWave = "0",
+ WaveNo = "",
+ IsIssueLotNo = string.IsNullOrWhiteSpace(d.LotNo) ? "0" : "1",
- CreateUser = 0,
- };
- list.Add(item);
- stocks.First().LockQty += d.Qty;//閿佸畾鏁伴噺
+ CreateUser = 0,
+ };
+ list.Add(item);
- var i = Db.Updateable(stocks.First()).UpdateColumns(it => new { it.LockQty })
- .ExecuteCommand();
+ st.LockQty += s.Value;//閿佸畾鏁伴噺
+ var i = Db.Updateable(st).UpdateColumns(it => new { it.LockQty })
+ .ExecuteCommand();
+ }
}
var notice = new BllExportNotice()
@@ -156,9 +235,10 @@
SONo = billNo,
Type = model.SoType,
Status = "0",
- Origin = "WMS",
- CustomerNo = model.Customer,
- CustomerName = customer.CustomerName,
+ Origin = model.Origin,
+ OrderCode = model.OrderNo,
+ //CustomerNo = model.Customer,
+ //CustomerName = customer.CustomerName,
LogisticsId = logisticsId,
IsWave = "0",
WaveNo = "",
@@ -172,12 +252,10 @@
if (n <= 0 || m <= 0)
{
- Db.RollbackTran();
- return false;
+ throw new Exception("鍏ュ簱鍗曟垨鏄庣粏娣诲姞淇濆瓨澶辫触");
}
Db.CommitTran();
- return true;
-
+
}
catch (Exception ex)
{
@@ -189,17 +267,28 @@
}
catch (Exception ex)
{
- Db.RollbackTran();
throw new Exception(ex.Message);
}
}
//鍥炰紶鍑哄簱鍗�
- public bool FinishSo(int id, string url, int userId)
+ public bool FinishSo(int id, string url, string userNo, string pwd, int userId)
{
try
{
- var notice = Db.Queryable<BllExportNotice>().First(m => m.Id == id&& m.IsDel == "0");
+ var loginPwd = Md5Tools.CalcMd5(pwd);
+ var date = Db.Queryable<SysUserInfor>().First(m => m.IsDel == "0" && m.UserName == userNo && m.PassWord == loginPwd);
+
+ if (date == null) //璐﹀彿瀵嗙爜鏄惁姝g‘
+ {
+ throw new Exception("璐﹀彿瀵嗙爜涓嶆纭垨娌℃湁姝よ处鍙�");
+ }
+ if (date.Status != "0") //褰撳墠璐﹀彿鏄惁姝e父鍚敤
+ {
+ throw new Exception("褰撳墠璐﹀彿闈炲惎鐢ㄧ姸鎬�");
+ }
+
+ var notice = Db.Queryable<BllExportNotice>().First(m => m.Id == id && m.IsDel == "0");
if (notice == null)
{
throw new Exception("鏈煡璇㈠埌鍗曟嵁淇℃伅");
@@ -213,7 +302,7 @@
{
throw new Exception("鏈煡璇㈠埌鍗曟嵁鏄庣粏淇℃伅");
}
- if (userId == notice.UpdateUser)
+ if (date.Id == notice.UpdateUser)
{
throw new Exception("澶嶆牳澶辫触锛屽鏍镐汉鍛樺拰鍏抽棴璁㈠崟浜哄憳涓嶈兘鐩稿悓锛�");
}
@@ -224,13 +313,13 @@
{
SkuNo = d.SkuNo,
LotNo = d.LotNo,
- Qty = int.Parse(d.CompleteQty.ToString())
+ Qty = (decimal)d.CompleteQty
};
list.Add(item);
}
var soInfo = new SoInfo()
{
- OrderCode = notice.OrderCode,
+ OrderNo = notice.OrderCode,
SoDetails = list
};
#region 閫氳繃鎺ュ彛鍙戦�佽嚦erp
@@ -247,11 +336,11 @@
#endregion
notice.Status = "6";
- notice.UpdateTime = DateTime.Now;
- notice.UpdateUser = userId;
+ notice.CheckTime = DateTime.Now;
+ notice.CheckUser = date.Id;
Db.Updateable(notice).ExecuteCommand();
- new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "澶嶆牳", $"澶嶆牳浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId);
+ new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "澶嶆牳", $"{date.RealName}澶嶆牳浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId);
return true;
}
catch (Exception e)
@@ -290,34 +379,34 @@
.LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id)
.LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id)
.LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id)
- .LeftJoin<SysUserInfor>((a, b, c, d,e) => a.CheckUser == e.Id)
- .Select((a, b, c, d,e) => new ExportNoticeDto()
+ .LeftJoin<SysUserInfor>((a, b, c, d, e) => a.CheckUser == e.Id)
+ .Select((a, b, c, d, e) => new ExportNoticeDto()
{
- Id = a.Id,
- SONo = a.SONo,
- Type = a.Type,
- Status = a.Status,
- Origin = a.Origin,
- CustomerNo = a.CustomerNo,
- CustomerName = a.CustomerName,
- LotNo = a.LotNo,
- LotText = a.LotText,
- SupplierLot = a.SupplierLot,
- LogisticsId = a.LogisticsId,
+ //Id = a.Id,
+ //SONo = a.SONo,
+ //Type = a.Type,
+ //Status = a.Status,
+ //Origin = a.Origin,
+ //CustomerNo = a.CustomerNo,
+ //CustomerName = a.CustomerName,
+ //LotNo = a.LotNo,
+ //LotText = a.LotText,
+ //SupplierLot = a.SupplierLot,
+ //LogisticsId = a.LogisticsId,
LogisticsName = b.CarrierName,
- IsWave = a.IsWave,
- WaveNo = a.WaveNo,
- IsDespatch = a.IsDespatch,
- Demo=a.Demo,
+ //IsWave = a.IsWave,
+ //WaveNo = a.WaveNo,
+ //IsDespatch = a.IsDespatch,
+ //Demo = a.Demo,
CreateUserName = c.RealName,
UpdateUserName = c.RealName,
- CreateTime = a.CreateTime,
- UpdateTime = a.UpdateTime,
+ //CreateTime = a.CreateTime,
+ //UpdateTime = a.UpdateTime,
- CheckUserName=e.RealName,
- CheckTime=a.CheckTime
- })
+ CheckUserName = e.RealName,
+ //CheckTime = a.CheckTime
+ },true)
.OrderByDescending(a => a.CreateTime)
.ToOffsetPage(page, limit, ref total);
count = total;
@@ -330,39 +419,60 @@
}
}
- public List<ExStockInfoDto> GetStockGroupList(string type, string msg)
+ public List<ExStockInfoDto> GetStockGroupList(string type, string ownerNo, string msg)
{
try
{
+ if (string.IsNullOrEmpty(type))
+ {
+ throw new Exception("璇烽�夋嫨鍑哄簱鍗曠被鍨�");
+ }
+ if (type == "6" && string.IsNullOrEmpty(ownerNo))
+ {
+ throw new Exception("浠e偍鍗曟嵁璇烽�夋嫨璐т富");
+ }
var plnList = new List<string>() { "100099" };
var skuList = new List<string>();
var sku = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0" && !plnList.Contains(m.SkuNo)); //鎺掗櫎绌烘墭鐩樼殑鐗╂枡闆嗗悎
string skuType = string.Empty;
+ string inspectStatus = string.Empty;
switch (type)//0锛氬師鏂� 1锛氬寘鏉� 2锛氭垚鍝� 3锛氳�楁潗 4锛氬崐鎴愬搧
{
- case "0"://鎴愬搧鍏ュ簱
+ case "0"://鎴愬搧鍑哄簱
skuType = "(2)";
+ inspectStatus = "1";
break;
case "1"://棰嗘枡鍑哄簱
skuType = "(0,1,3)";
+ inspectStatus = "1";
break;
case "2"://鎶芥鍑哄簱
- skuType = "(2)";
+ skuType = "(0,1,2,3)";
+ inspectStatus = "0,1,2";
break;
case "3"://鐗╂枡鍙栨牱鍑哄簱
- skuType = "(0)";
+ skuType = "(0,1,2,3)";
+ inspectStatus = "0";
break;
case "4"://涓嶅悎鏍煎搧鍑哄簱
- skuType = "(2)";
+ skuType = "(0,1,2,3,4)";
+ inspectStatus = "2";
break;
case "5"://涓棿鍝佸嚭搴�
skuType = "(4)";
+ inspectStatus = "0,1";
break;
case "6"://浠e偍鍑哄簱
- skuType = "(2)";
+ skuType = "(0,1,2,3,4)";
+ inspectStatus = "0,1,2";
+ break;
+ case "8"://瀵勫瓨鍑哄簱
+ skuType = "(0,1,2,3)";
+ inspectStatus = "0,1";
break;
default: //鍏跺畠鍑哄簱
skuType = "(0,1,2,3,4)";
+ inspectStatus = "0,1";
break;
}
skuList = sku.Where(m => skuType.Contains(m.Type)).Select(m => m.SkuNo).ToList();
@@ -370,13 +480,24 @@
{
throw new Exception("鏈煡鍒板搴斿嚭搴撶被鍨嬬殑鐗╂枡");
}
+
+ if (type != "8")
+ {
+ skuList = skuList.Where(m => m != "100088").ToList();
+ }
+ else
+ {
+ skuList = skuList.Where(m => m == "100088").ToList();
+ }
//skuList = sku.Select(m => m.SkuNo).ToList();
var stockRst = new StockServer();
var stockDetailRst = new StockDetailServer();
Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>()
//.And(it => it.WareHouseNo == wareHouseNo)
- .And(it => it.InspectStatus == "1")
+ .AndIF(!string.IsNullOrWhiteSpace(inspectStatus), it => inspectStatus.Contains(it.InspectStatus))
.And(m => skuList.Contains(m.SkuNo))
+ .AndIF(type == "6", m => m.OwnerNo == ownerNo)//浠e偍鍑哄簱闇�瑕佸叧鑱旇揣涓�
+ .AndIF(type != "6", m=> string.IsNullOrWhiteSpace(m.OwnerNo))
.AndIF(!string.IsNullOrWhiteSpace(msg), it => (it.SkuNo.Contains(msg) || it.SkuName.Contains(msg) || it.LotNo.Contains(msg)))
.And(it => (it.Qty - it.LockQty - it.FrozenQty) > 0)
.And(it => (it.Status == "0" || it.Status == "1"))
@@ -405,7 +526,8 @@
SkuName = it.SkuName,
LotNo = it.LotNo,
Standard = it.Standard,
- Qty = type == "4" ? it.Qty : it.Qty - it.LockQty - it.FrozenQty
+ //Qty = type == "4" ? it.Qty : it.Qty - it.LockQty - it.FrozenQty,
+ Qty = it.Qty - it.LockQty - it.FrozenQty,
}).ToList();
@@ -456,7 +578,7 @@
var skuNos = model.Detail.Select(a => a.SkuNo).Distinct().ToList();
//鏍规嵁鐗╂枡鍙疯幏鍙栫墿鏂欎俊鎭�佸簱瀛樻槑缁嗕腑鑾峰彇鎵规鎻忚堪渚涜揣鎵规绛�
var skuList = Db.Queryable<SysMaterials>().Where(a => skuNos.Contains(a.SkuNo) && a.IsDel == "0").ToList();
- var stockList = Db.Queryable<DataStock>().Where(s => skuNos.Contains(s.SkuNo) && (s.Qty-s.FrozenQty-s.LockQty) > 0).ToList();
+ var stockList = Db.Queryable<DataStock>().Where(s => skuNos.Contains(s.SkuNo) && (s.Qty - s.FrozenQty - s.LockQty) > 0).ToList();
//var palletList = contextDb.Queryable<DataStockDetail>().Where(s => skuNos.Contains(s.SkuNo) && (s.Qty - s.FrozenQty - s.LockQty) > 0).ToList();
//瀹㈡埛淇℃伅
var customer = Db.Queryable<SysCustomer>().Where(m => m.IsDel == "0" && m.CustomerNo == model.CustomerNo).ToList();
@@ -479,7 +601,7 @@
//娣诲姞鍑哄簱鍗�
foreach (var d in model.Detail)
{
- if (d.Qty < 1)
+ if (d.Qty <=0)
{
throw new Exception("鍑哄簱鏁伴噺蹇呴』澶т簬0");
}
@@ -490,27 +612,80 @@
}
//搴撳瓨
List<DataStock> stocks;
- //List<DataStockDetail> pallets;
+
+ decimal q1 = 0;
+ Dictionary<int, decimal> dic = new Dictionary<int, decimal>();
if (!string.IsNullOrWhiteSpace(d.LotNo))
{
stocks = stockList.Where(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo).ToList();
- //pallets = palletList.Where(p => p.SkuNo == d.SkuNo && p.LotNo == d.LotNo).ToList();
+ //if (stocks.Count < 1)
+ //{
+ // throw new Exception($"鎬诲簱瀛樹腑鏈煡璇㈠埌鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}");
+ //}
+ ////鍒ゆ柇鏁伴噺
+ //var qty = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty;
+ //if (d.Qty > qty)
+ //{
+ // throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻");
+ //}
+ //if (qty > d.Qty - q1)
+ //{
+ // q1 += d.Qty - q1;
+ // dic.Add(stocks.First().Id, d.Qty - q1);
+ //}
+ //else
+ //{
+ // q1 += qty;
+ // dic.Add(stocks.First().Id, qty);
+ //}
}
else
{
- stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
- //pallets = palletList.Where(p => p.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(p.LotNo)).ToList();
- }
- if (stocks.Count < 1)
- {
- throw new Exception($"鎬诲簱瀛樹腑鏈煡璇㈠埌鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}");
- }
+ //stocks = stockList.Where(m => m.SkuNo == d.SkuNo && !string.IsNullOrWhiteSpace(m.LotNo)).OrderBy(s => s.LotNo).ToList();
- //鍒ゆ柇鏁伴噺
- var qty = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty;
- if (d.Qty > qty)
- {
- throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻");
+ //foreach (var demo in stocks)
+ //{
+ // if (q1 >= d.Qty)
+ // {
+ // continue;
+ // }
+ // var q2 = demo.Qty - demo.LockQty - demo.FrozenQty;
+
+ // if (q2 > d.Qty - q1)
+ // {
+ // q1 += d.Qty - q1;
+ // dic.Add(demo.Id, d.Qty - q1);
+ // }
+ // else
+ // {
+ // q1 += q2;
+ // dic.Add(demo.Id, q2);
+ // }
+
+ //}
+ //if (d.Qty >= q1)
+ //{
+ stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
+ // if (stocks.Count == 0)
+ // {
+ // throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}搴撳瓨鏁伴噺涓嶈冻");
+ // }
+ // var q2 = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty;
+ // if (q2 > d.Qty - q1)
+ // {
+ // q1 += d.Qty - q1;
+ // dic.Add(stocks.First().Id, d.Qty - q1);
+ // }
+ // else
+ // {
+ // q1 += q2;
+ // dic.Add(stocks.First().Id, q2);
+ // }
+ //}
+ //if (d.Qty > q1)
+ //{
+ // throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo} 搴撳瓨鏁伴噺涓嶈冻");
+ //}
}
var item = new BllExportNoticeDetail()
@@ -528,20 +703,29 @@
CompleteQty = 0,
PackagNo = sku.PackagNo,
Price = sku.Price,
- Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price*d.Qty,
+ Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * d.Qty,
IsBale = d.IsBale,
IsBelt = d.IsBelt,
SupplierLot = stocks.First().SupplierLot,
IsWave = "0",
- WaveNo= "",
+ WaveNo = "",
CreateUser = userId,
};
list.Add(item);
- stocks.First().LockQty += d.Qty;//閿佸畾鏁伴噺
+
+ stocks.First().LockQty += d.Qty;//閿佸畾鏁伴噺
var i = Db.Updateable(stocks.First()).UpdateColumns(it => new { it.LockQty })
.ExecuteCommand();
+
+ //foreach (var s in dic)
+ //{
+ // var st = stockList.First(m => m.Id == s.Key);
+ // st.LockQty += s.Value;//閿佸畾鏁伴噺
+ // var i = Db.Updateable(st).UpdateColumns(it => new { it.LockQty })
+ // .ExecuteCommand();
+ //}
}
var notice = new BllExportNotice()
@@ -555,7 +739,7 @@
LogisticsId = model.LogisticsId,
IsWave = "0",
WaveNo = "",
- IsDespatch="0",
+ IsDespatch = "0",
CreateUser = userId,
};
@@ -627,7 +811,7 @@
var stockCount = 0.00m; //st.StockQuantity.Value
if (s != null)
{
- stockCount = s.Qty-s.FrozenQty-s.LockQty+d.Qty;
+ stockCount = s.Qty - s.FrozenQty - s.LockQty + d.Qty;
}
var dm = new SelectStockSkuDto()
@@ -684,161 +868,285 @@
try
{
- //鍒犻櫎鏃�
- foreach (var d in noticeDetail)
+ if (notice.Origin == "WMS")
{
- var mq = model.Detail.Where(o => o.SkuNo == d.SkuNo).ToList();
- if (!string.IsNullOrWhiteSpace(d.LotNo))
+ //鍒犻櫎鏃�
+ foreach (var d in noticeDetail)
{
- mq = mq.Where(o => o.LotNo == d.LotNo).ToList();
- }
- if (mq.Any()) //濡傛灉鏈夎繖涓墿鏂欏強鎵规鍒欒烦杩�
- {
- continue;
- }
- //
- var fl = stockList.Where(s => s.SkuNo == d.SkuNo).ToList();
- DataStock fls;
- if (!string.IsNullOrWhiteSpace(d.LotNo))
- {
- fls = fl.FirstOrDefault(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo);
- }
- else
- {
- fls = fl.FirstOrDefault(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo));
- }
- if (fls == null)
- {
- throw new Exception($"鏈壘鍒扮墿鏂檣d.SkuNo}銆佹壒娆d.LotNo} 鐨勫簱瀛樹俊鎭�");
- }
- fls.LockQty -= d.Qty;
- d.IsDel = "1";
- d.UpdateUser = userId;
- d.UpdateTime = DateTime.Now;
- Db.Updateable(d).ExecuteCommand();
- Db.Updateable(fls).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
- }
-
- //鏇存柊鍑哄簱鍗�
- foreach (var d in model.Detail)
- {
- if (d.Qty < 1)
- {
- throw new Exception("鍑哄簱鏁版嵁蹇呴』澶т簬0");
- }
- var sku = skuList.FirstOrDefault(a => a.SkuNo == d.SkuNo);
- if (sku == null)
- {
- throw new Exception("鍑哄簱鐗╁搧涓虹┖");
- }
- //搴撳瓨
- List<DataStock> stocks;
- List<DataStockDetail> pallet;
- if (!string.IsNullOrWhiteSpace(d.LotNo))
- {
- stocks = stockList.Where(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo).ToList();
- pallet = palletList.Where(p => p.SkuNo == d.SkuNo && p.LotNo == d.LotNo).ToList();
- }
- else
- {
- stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
- pallet = palletList.Where(p => p.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(p.LotNo)).ToList();
- }
-
- if (stocks.Count < 1)
- {
- throw new Exception("鍑哄簱鐗╁搧搴撳瓨涓嶈冻");
- }
- var stock = stocks.First();//鎬诲簱瀛�
- //
- BllExportNoticeDetail old;
- if (string.IsNullOrWhiteSpace(d.LotNo))
- {
- old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(o.LotNo));
- }
- else
- {
- old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && o.LotNo == d.LotNo);
- }
-
- //鏂板姞椤�
- if (old == null)
- {
- //鍒ゆ柇鏁伴噺
- var qty = stock.Qty - stock.LockQty - stock.FrozenQty;
- if (d.Qty > qty)
+ var mq = model.Detail.Where(o => o.SkuNo == d.SkuNo).ToList();
+ if (!string.IsNullOrWhiteSpace(d.LotNo))
{
- throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻");
+ mq = mq.Where(o => o.LotNo == d.LotNo).ToList();
}
-
- var item = new BllExportNoticeDetail()
+ if (mq.Any()) //濡傛灉鏈夎繖涓墿鏂欏強鎵规鍒欒烦杩�
{
- SONo = notice.SONo,
- SkuNo = sku.SkuNo,
- SkuName = sku.SkuName,
- Standard = sku.Standard,
- LotNo = d.LotNo,
- LotText = "",
- Status = "0",
- Qty = d.Qty,
- AllotQty = 0,
- FactQty = 0,
- CompleteQty = 0,
- PackagNo = sku.PackagNo,
- Price = sku.Price,
- Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * qty,
- IsBale = d.IsBale,
- IsBelt = d.IsBelt,
- SupplierLot = stocks.First().SupplierLot,
- IsWave = "0",
- WaveNo = "",
-
- CreateUser = userId,
- };
-
- stock.LockQty += d.Qty;//閿佸畾鏁伴噺
- var m = Db.Insertable<BllExportNoticeDetail>(item).ExecuteCommand();
- var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
- }
- else if (old.Qty != d.Qty || old.IsBale != d.IsBale || old.IsBelt != d.IsBelt)
- {
- if (d.Qty > (stock.Qty-stock.FrozenQty-stock.LockQty) + old.Qty)
- {
- throw new Exception("鐗╁搧搴撳瓨鏁伴噺涓嶈冻");
+ continue;
}
- //澧炲姞
- if (d.Qty > old.Qty)
+ //
+ var fl = stockList.Where(s => s.SkuNo == d.SkuNo).ToList();
+ DataStock fls;
+ if (!string.IsNullOrWhiteSpace(d.LotNo))
{
- stock.LockQty += d.Qty - old.Qty;
+ fls = fl.FirstOrDefault(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo);
}
else
{
- stock.LockQty -= old.Qty - d.Qty;
+ fls = fl.FirstOrDefault(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo));
}
- old.IsBale = d.IsBale;
- old.IsBelt = d.IsBelt;
- old.Qty = d.Qty;
- old.UpdateUser = userId;
- old.UpdateTime = DateTime.Now;
- var m = Db.Updateable(old).UpdateColumns(it => new { it.IsBale, it.IsBelt, it.Qty, it.UpdateUser, it.UpdateTime }).ExecuteCommand();
- var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
+ if (fls == null)
+ {
+ throw new Exception($"鏈壘鍒扮墿鏂檣d.SkuNo}銆佹壒娆d.LotNo} 鐨勫簱瀛樹俊鎭�");
+ }
+ fls.LockQty -= d.Qty;
+ d.IsDel = "1";
+ d.UpdateUser = userId;
+ d.UpdateTime = DateTime.Now;
+ Db.Updateable(d).ExecuteCommand();
+ Db.Updateable(fls).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
+ }
+
+ //鏇存柊鍑哄簱鍗�
+ foreach (var d in model.Detail)
+ {
+ if (d.Qty < 1)
+ {
+ throw new Exception("鍑哄簱鏁版嵁蹇呴』澶т簬0");
+ }
+ var sku = skuList.FirstOrDefault(a => a.SkuNo == d.SkuNo);
+ if (sku == null)
+ {
+ throw new Exception("鍑哄簱鐗╁搧涓虹┖");
+ }
+ //搴撳瓨
+ List<DataStock> stocks;
+ List<DataStockDetail> pallet;
+ if (!string.IsNullOrWhiteSpace(d.LotNo))
+ {
+ stocks = stockList.Where(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo).ToList();
+ pallet = palletList.Where(p => p.SkuNo == d.SkuNo && p.LotNo == d.LotNo).ToList();
+ }
+ else
+ {
+ stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
+ pallet = palletList.Where(p => p.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(p.LotNo)).ToList();
+ }
+
+ if (stocks.Count < 1)
+ {
+ throw new Exception("鍑哄簱鐗╁搧搴撳瓨涓嶈冻");
+ }
+ var stock = stocks.First();//鎬诲簱瀛�
+ //
+ BllExportNoticeDetail old;
+ if (string.IsNullOrWhiteSpace(d.LotNo))
+ {
+ old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(o.LotNo));
+ }
+ else
+ {
+ old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && o.LotNo == d.LotNo);
+ }
+
+ //鏂板姞椤�
+ if (old == null)
+ {
+ //鍒ゆ柇鏁伴噺
+ var qty = stock.Qty - stock.LockQty - stock.FrozenQty;
+ if (d.Qty > qty)
+ {
+ throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻");
+ }
+
+ var item = new BllExportNoticeDetail()
+ {
+ SONo = notice.SONo,
+ SkuNo = sku.SkuNo,
+ SkuName = sku.SkuName,
+ Standard = sku.Standard,
+ LotNo = d.LotNo,
+ LotText = "",
+ Status = "0",
+ Qty = d.Qty,
+ AllotQty = 0,
+ FactQty = 0,
+ CompleteQty = 0,
+ PackagNo = sku.PackagNo,
+ Price = sku.Price,
+ Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * qty,
+ IsBale = d.IsBale,
+ IsBelt = d.IsBelt,
+ SupplierLot = stocks.First().SupplierLot,
+ IsWave = "0",
+ WaveNo = "",
+
+ CreateUser = userId,
+ };
+
+ stock.LockQty += d.Qty;//閿佸畾鏁伴噺
+ var m = Db.Insertable<BllExportNoticeDetail>(item).ExecuteCommand();
+ var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
+ }
+ else if (old.Qty != d.Qty || old.IsBale != d.IsBale || old.IsBelt != d.IsBelt)
+ {
+ if (d.Qty > (stock.Qty - stock.FrozenQty - stock.LockQty) + old.Qty)
+ {
+ throw new Exception("鐗╁搧搴撳瓨鏁伴噺涓嶈冻");
+ }
+ //澧炲姞
+ if (d.Qty > old.Qty)
+ {
+ stock.LockQty += d.Qty - old.Qty;
+ }
+ else
+ {
+ stock.LockQty -= old.Qty - d.Qty;
+ }
+ old.IsBale = d.IsBale;
+ old.IsBelt = d.IsBelt;
+ old.Qty = d.Qty;
+ old.UpdateUser = userId;
+ old.UpdateTime = DateTime.Now;
+ var m = Db.Updateable(old).UpdateColumns(it => new { it.IsBale, it.IsBelt, it.Qty, it.UpdateUser, it.UpdateTime }).ExecuteCommand();
+ var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
+ }
+ }
+
+ //瀹㈡埛淇℃伅
+ var customer = Db.Queryable<SysCustomer>().Where(m => m.IsDel == "0" && m.CustomerNo == model.CustomerNo).ToList().FirstOrDefault();
+ notice.Type = model.Type;
+ notice.CustomerNo = model.CustomerNo;
+ notice.CustomerName = customer == null ? "" : customer.CustomerName;
+ notice.LogisticsId = model.LogisticsId;
+ notice.UpdateUser = userId;
+ notice.UpdateTime = DateTime.Now;
+
+ var n = Db.Updateable(notice).ExecuteCommand();
+ if (n <= 0)
+ {
+ Db.RollbackTran();
+ return false;
}
}
-
- //瀹㈡埛淇℃伅
- var customer = Db.Queryable<SysCustomer>().Where(m => m.IsDel == "0" && m.CustomerNo == model.CustomerNo).ToList().FirstOrDefault();
- notice.Type = model.Type;
- notice.CustomerNo = model.CustomerNo;
- notice.CustomerName = customer == null ? "" : customer.CustomerName;
- notice.LogisticsId = model.LogisticsId;
- notice.UpdateUser = userId;
- notice.UpdateTime = DateTime.Now;
-
- var n = Db.Updateable(notice).ExecuteCommand();
- if (n <= 0)
+ else //erp/mes
{
- Db.RollbackTran();
- return false;
+ //鏇存柊鍑哄簱鍗�
+ foreach (var d in model.Detail)
+ {
+ if (d.Qty < 1)
+ {
+ throw new Exception("鍑哄簱鏁版嵁蹇呴』澶т簬0");
+ }
+ var sku = skuList.FirstOrDefault(a => a.SkuNo == d.SkuNo);
+ if (sku == null)
+ {
+ throw new Exception("鍑哄簱鐗╁搧涓虹┖");
+ }
+ //搴撳瓨
+ List<DataStock> stocks;
+ if (!string.IsNullOrWhiteSpace(d.LotNo))
+ {
+ stocks = stockList.Where(s => s.SkuNo == d.SkuNo && d.LotNo.Contains(s.LotNo)).ToList();
+ }
+ else
+ {
+ stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
+ }
+
+ if (stocks.Count < 1)
+ {
+ throw new Exception("鍑哄簱鐗╁搧搴撳瓨涓嶈冻");
+ }
+ var stock = stocks.First();//鎬诲簱瀛�
+ //
+ BllExportNoticeDetail old;
+ if (string.IsNullOrWhiteSpace(d.LotNo))
+ {
+ old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(o.LotNo));
+ }
+ else
+ {
+ old = noticeDetail.FirstOrDefault(o => o.SkuNo == d.SkuNo && o.LotNo == d.LotNo);
+ }
+
+ //鏂板姞椤�
+ if (old == null)
+ {
+ //鍒ゆ柇鏁伴噺
+ var qty = stock.Qty - stock.LockQty - stock.FrozenQty;
+ if (d.Qty > qty)
+ {
+ throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻");
+ }
+
+ var item = new BllExportNoticeDetail()
+ {
+ SONo = notice.SONo,
+ SkuNo = sku.SkuNo,
+ SkuName = sku.SkuName,
+ Standard = sku.Standard,
+ LotNo = d.LotNo,
+ LotText = "",
+ Status = "0",
+ Qty = d.Qty,
+ AllotQty = 0,
+ FactQty = 0,
+ CompleteQty = 0,
+ PackagNo = sku.PackagNo,
+ Price = sku.Price,
+ Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * qty,
+ IsBale = d.IsBale,
+ IsBelt = d.IsBelt,
+ SupplierLot = stocks.First().SupplierLot,
+ IsWave = "0",
+ WaveNo = "",
+
+ CreateUser = userId,
+ };
+
+ stock.LockQty += d.Qty;//閿佸畾鏁伴噺
+ var m = Db.Insertable<BllExportNoticeDetail>(item).ExecuteCommand();
+ var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
+ }
+ else if (old.Qty != d.Qty || old.IsBale != d.IsBale || old.IsBelt != d.IsBelt)
+ {
+ if (d.Qty > (stock.Qty - stock.FrozenQty - stock.LockQty) + old.Qty)
+ {
+ throw new Exception("鐗╁搧搴撳瓨鏁伴噺涓嶈冻");
+ }
+ //澧炲姞
+ if (d.Qty > old.Qty)
+ {
+ stock.LockQty += d.Qty - old.Qty;
+ }
+ else
+ {
+ stock.LockQty -= old.Qty - d.Qty;
+ }
+ old.IsBale = d.IsBale;
+ old.IsBelt = d.IsBelt;
+ old.Qty = d.Qty;
+ old.UpdateUser = userId;
+ old.UpdateTime = DateTime.Now;
+ var m = Db.Updateable(old).UpdateColumns(it => new { it.IsBale, it.IsBelt, it.Qty, it.UpdateUser, it.UpdateTime }).ExecuteCommand();
+ var i = Db.Updateable(stock).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
+ }
+ }
+
+ //瀹㈡埛淇℃伅
+ var customer = Db.Queryable<SysCustomer>().Where(m => m.IsDel == "0" && m.CustomerNo == model.CustomerNo).ToList().FirstOrDefault();
+ notice.Type = model.Type;
+ notice.CustomerNo = model.CustomerNo;
+ notice.CustomerName = customer == null ? "" : customer.CustomerName;
+ notice.LogisticsId = model.LogisticsId;
+ notice.UpdateUser = userId;
+ notice.UpdateTime = DateTime.Now;
+
+ var n = Db.Updateable(notice).ExecuteCommand();
+ if (n <= 0)
+ {
+ Db.RollbackTran();
+ return false;
+ }
}
//娣诲姞鎿嶄綔鏃ュ織璁板綍
var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "缂栬緫", $"缂栬緫浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId);
@@ -945,9 +1253,9 @@
{
throw new Exception("鏈煡璇㈠埌鍑哄簱鍗曟嵁淇℃伅");
}
- if (notice.Status != "4")
+ if (notice.Status != "4" && notice.Status != "3")
{
- throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︿负鎵ц瀹屾垚鎴栬鍗曞叧闂�");
+ throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︿负姝e湪鎵ц鎴栨墽琛屽畬鎴�");
}
//鎬诲簱瀛樹俊鎭�
var stockList = Db.Queryable<DataStock>().ToList();
@@ -968,64 +1276,67 @@
foreach (var d in noticeDetail)
{
- //鏇存敼搴撳瓨鏄庣粏閿佸畾鏁伴噺
- //var orders = dataContext.WmsExportOrder.Where(o => o.ExportDetailId == d.Id
- // && o.ExportExecuteFlag != "4" && o.ExportExecuteFlag == "3" && o.pickingType == 0).ToList();
- //foreach (var o in orders)
- //{
- // if (o.ExportQuantity > o.PickedNum) //鍒ゆ柇鎷h揣鏄惁宸叉嫞瀹�
- // {
- // var pq = dataContext.WmsStockTray.Where(t => t.StockGoodId == o.ExportGoodsCode && t.StockStockCode == o.ExportStockCode);
-
- // if (string.IsNullOrWhiteSpace(o.ExportLotNo))
- // {
- // pq = pq.Where(t => t.StockLotNo == null || t.StockLotNo == "");
- // }
- // else
- // {
- // pq = pq.Where(t => t.StockLotNo == o.ExportLotNo);
- // }
- // var pallet = pq.FirstOrDefault();
- // //搴撳瓨鎵樼洏淇℃伅閿佸畾鏁伴噺杩樺師涓烘湭閿佸畾
- // if (pq != null)
- // {
- // pallet.LockQuantity -= o.ExportQuantity.Value - o.PickedNum;
- // pallet.StockQuantity += o.ExportQuantity.Value - o.PickedNum;
- // }
- // }
- //}
-
- if (d.Qty != d.CompleteQty)
+ if (notice.Type == "0")//鎴愬搧鍑哄簱
{
- throw new Exception("褰撳墠鍗曟嵁鏄庣粏涓鍒掓暟閲忎笌鎷h揣鏁伴噺涓嶇锛岃鏍稿疄");
- }
- #region 搴撳瓨琛ㄥ噺鍘婚攣瀹氭暟閲忎笌鎬绘暟閲�(PDA鎷h揣鐨勬椂鍊欏凡缁忓噺鍘绘暟閲忎簡)
- /*var sq = stocks.Where(s => s.SkuNo == d.SkuNo);
- if (!string.IsNullOrWhiteSpace(d.LotNo))
- {
- sq = sq.Where(s => s.LotNo == d.LotNo);
- }
- else
- {
- sq = sq.Where(s => string.IsNullOrWhiteSpace(s.LotNo));
- }
- var st = sq.FirstOrDefault();
- if (st != null)
- {
- if (d.CompleteQty <= d.Qty)
+ if (d.Qty != d.CompleteQty)
{
- st.Qty += d.Qty - d.CompleteQty.Value;
+ throw new Exception("褰撳墠鍗曟嵁鏄庣粏涓鍒掓暟閲忎笌鎷h揣鏁伴噺涓嶇锛岃鏍稿疄");
+ }
+ }
+ if (d.Qty < d.CompleteQty)
+ {
+ //鏇存敼搴撳瓨鏄庣粏閿佸畾鏁伴噺
+ var allotList = Db.Queryable<BllExportAllot>().Where(o => o.SODetailNo == d.Id && o.Status == "3" && o.IsDel == "0").ToList();
+ foreach (var o in allotList)
+ {
+ if (o.Qty > o.CompleteQty) //鍒ゆ柇鎷h揣鏄惁宸叉嫞瀹�
+ {
+ var pq = Db.Queryable<DataStockDetail>().Where(t => t.IsDel == "0" && t.Id == o.StockId && t.SkuNo == o.SkuNo);
+
+ if (string.IsNullOrWhiteSpace(o.LotNo))
+ {
+ pq = pq.Where(t => string.IsNullOrWhiteSpace(t.LotNo));
+ }
+ else
+ {
+ pq = pq.Where(t => t.LotNo == o.LotNo);
+ }
+ var pallet = pq.First();
+ //搴撳瓨鎵樼洏淇℃伅閿佸畾鏁伴噺杩樺師涓烘湭閿佸畾
+ if (pq != null)
+ {
+ //pallet.Qty -= o.CompleteQty.Value - o.Qty;
+ pallet.LockQty -= o.Qty - o.CompleteQty.Value;
+ Db.Updateable(pallet).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
+ }
+ }
+ }
+
+
+ #region 搴撳瓨琛ㄥ噺鍘婚攣瀹氭暟閲忎笌鎬绘暟閲�(PDA鎷h揣鐨勬椂鍊欏凡缁忓噺鍘绘暟閲忎簡)
+ var sq = stocks.Where(s => s.SkuNo == d.SkuNo);
+ if (!string.IsNullOrWhiteSpace(d.LotNo))
+ {
+ sq = sq.Where(s => s.LotNo == d.LotNo);
}
else
{
- st.Qty -= d.CompleteQty.Value - d.Qty;
+ sq = sq.Where(s => string.IsNullOrWhiteSpace(s.LotNo));
}
- st.LockQty -= d.Qty;
- st.Qty -= d.Qty;
- //淇敼鎬诲簱瀛樿〃
- Db.Updateable(st).UpdateColumns(it => new { it.Qty, it.LockQty }).ExecuteCommand();
- }*/
- #endregion
+ if (notice.Type == "6")//浠e偍
+ {
+ sq = sq.Where(s => s.OwnerNo == notice.CustomerNo);
+ }
+ var st = sq.FirstOrDefault();
+ if (st != null)
+ {
+ st.LockQty -= d.Qty - d.CompleteQty.Value;
+ //淇敼鎬诲簱瀛樿〃
+ Db.Updateable(st).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
+ }
+ #endregion
+ }
+
}
//娣诲姞鎿嶄綔鏃ュ織璁板綍
var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "鍏冲崟", $"鍏抽棴浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId);
@@ -1118,8 +1429,8 @@
.AndIF(!string.IsNullOrWhiteSpace(skuName), m => m.SkuName.Contains(skuName.Trim()))
.AndIF(!string.IsNullOrWhiteSpace(palletNo), m => m.PalletNo.Contains(palletNo.Trim()))
.AndIF(!string.IsNullOrWhiteSpace(lotNo), m => m.LotNo.Contains(lotNo.Trim()))
- .AndIF(!string.IsNullOrWhiteSpace(inspectMark), m => m.InspectMark==inspectMark)
- .AndIF(!string.IsNullOrWhiteSpace(bitPalletMark), m => m.BitPalletMark== bitPalletMark)
+ .AndIF(!string.IsNullOrWhiteSpace(inspectMark), m => m.InspectMark == inspectMark)
+ .AndIF(!string.IsNullOrWhiteSpace(bitPalletMark), m => m.BitPalletMark == bitPalletMark)
.And(m => !string.IsNullOrWhiteSpace(m.WareHouseNo))
.And(a => a.Status == "0")
.And(a => a.WareHouseNo == "W01")
@@ -1151,7 +1462,7 @@
var outDtoList = new List<OutCommandDto>(); //鍑哄簱鏁版嵁鐨勯泦鍚�
str = "";
var stockDetailList = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == palletNo && m.IsDel == "0").ToList();
-
+
if (stockDetailList.Count == 0)
{
throw new Exception($"鏈湪搴撳唴鏌ヨ鍒拌鎵樼洏淇℃伅");
@@ -1166,7 +1477,7 @@
}
//鍒ゆ柇鎵樼洏搴撳瓨淇℃伅鍒嗙粍鍚庢槸鍚﹀ぇ浜�1鏉�
var detailGroup = stockDetailList.GroupBy(m => new { m.SkuNo, m.PalletNo, m.WareHouseNo, m.LocatNo }).ToList();
- if (detailGroup.Count>1)
+ if (detailGroup.Count > 1)
{
throw new Exception($"鏈湪搴撳唴鏌ヨ鍒拌鎵樼洏淇℃伅");
}
@@ -1249,7 +1560,7 @@
throw new Exception($"褰撳墠鎵樼洏鎵�鍦ㄧ殑鍌ㄤ綅宸叉崯鍧忥紝涓嶈兘鍑哄簱锛岃鏍稿疄");
}
- if (locate.Status !="1")
+ if (locate.Status != "1")
{
throw new Exception($"褰撳墠鎵樼洏鎵�鍦ㄧ殑鍌ㄤ綅鐘舵�佷笉鏄湁鐗╁搧锛屼笉鑳藉嚭搴擄紝璇锋牳瀹�");
}
@@ -1305,10 +1616,10 @@
Db.Updateable(de).ExecuteCommand();
Db.Updateable(stocka).ExecuteCommand();
}
-
+
locate.Status = "3"; //瑕佸嚭搴撶殑鍌ㄤ綅鏀瑰彉鐘舵�� 姝e湪鍑哄簱
Db.Updateable(locate).ExecuteCommand();
-
+
#endregion
@@ -1376,13 +1687,15 @@
#region 涓嬪彂鍑哄簱銆佸嚭搴撳畬鎴愩�侀噸鏂颁笅鍙戜换鍔°�佸彇娑堜换鍔°�佸紓甯稿鐞�
// 涓嬪彂鍑哄簱锛堣皟鐢╟s鎺ュ彛缁欎粬搴撲綅鍦板潃锛�
- public List<OutCommandDto> IssueOutHouse(string soNo, string outMode, int userId, string url, out string str)
+ public List<OutCommandDto> IssueOutHouse(string soNo, string unstackingMode, string outMode, string loadingAddre, int userId, string url, out string str)
{
try
{
#region 闆嗗悎
- var outDtoList = new List<OutCommandDto>(); //鍑哄簱鏁版嵁鐨勯泦鍚�
+ var outDto1 = new List<OutCommandDto>(); //鍏堝嚭搴撴暟鎹殑闆嗗悎锛堟繁搴︿负1鐨勫偍浣嶏級
+ var outDto2 = new List<OutCommandDto>(); //鍚庡嚭搴撴暟鎹殑闆嗗悎锛堟繁搴︿负2鐨勫偍浣嶏級
+ var moveDto = new List<OutCommandDto>(); //瑕佺Щ搴撴暟鎹殑闆嗗悎
//璁板綍閿欒淇℃伅鐨勯泦鍚�
var flagList = new List<int>();//1:褰撳墠瑕佸嚭搴撶殑鍌ㄤ綅姝e湪绉诲嚭銆�2 鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)銆�3鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱銆�4 瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱
@@ -1406,6 +1719,10 @@
var outLpnList = list.Select(m => m.PalletNo).ToList();
//瑕佸嚭搴撶殑鏄庣粏闆嗗悎
var outStockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToList();
+ //鐗╂枡缂栫爜琛�
+ var skuList = Db.Queryable<SysMaterials>().Where(w => w.IsDel == "0");
+ //鍖呰琛�
+ var packagList = Db.Queryable<SysPackag>().Where(w => w.IsDel == "0");
Db.BeginTran();
try
{
@@ -1413,6 +1730,57 @@
//寰幆鍒嗛厤鐨勪俊鎭敓鎴愬嚭搴撲换鍔�
foreach (var item in list)
{
+ var taskNoStr = "";
+ string toLocation = string.Empty;//鐩爣浣嶇疆
+ string unstackingMode2 = unstackingMode;//鎷嗗灈鏂瑰紡锛�0:鏈哄櫒浜烘媶鍨� 1:PDA鎷嗗灈
+ #region 鍒ゆ柇鏄惁闇�瑕佹媶绠�
+ if (notice.Type == "0")//鎴愬搧鍑哄簱
+ {
+ string isChai = "0";//鏄惁闇�瑕佹媶绠憋紝0:鍚� 1:鏄�
+ var skuInfo = skuList.First(w => w.SkuNo == item.SkuNo);
+ if (skuInfo == null)
+ {
+ throw new Exception("鐗╂枡淇℃伅涓嶅瓨鍦紒");
+ }
+ var packagInfo = packagList.First(w => w.PackagNo == skuInfo.PackagNo);
+ if (packagInfo == null)
+ {
+ throw new Exception("鍖呰淇℃伅涓嶅瓨鍦紒");
+ }
+ if (packagInfo.L2Name == "绠�")
+ {
+ if (item.Qty % (decimal)packagInfo.L2Num != 0)//鑳芥暣闄よ鏄庝笉鐢ㄦ媶绠憋紝涓嶈兘鏁撮櫎璇存槑闇�瑕佹媶绠�
+ {
+ isChai = "1";
+ unstackingMode2 = "1";//闇�瑕佹媶绠遍渶璧癙DA鎷嗗灈
+ }
+ }
+ if (isChai == "0")
+ {
+ var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == item.PalletNo && w.BitBoxMark == "1").ToList();
+ if (boxInfo.Count>0)//鎵樼洏涓婃湁闆剁闇�瑕佹媶绠�
+ {
+ isChai = "1";
+ unstackingMode2 = "1";//闇�瑕佹媶绠遍渶璧癙DA鎷嗗灈
+ }
+ }
+
+ if (unstackingMode2 == "0")//鏈哄櫒浜烘媶鍨�
+ {
+ toLocation = "009";//鏈哄櫒浜烘媶鍨涚粺涓�鍙戦�佸埌009宸ヤ綅锛岀敱PLC鑷姩鍒嗛厤鎷嗗灈浣�
+ }
+ else //PDA鎷嗗灈
+ {
+ toLocation = outMode;//鍑哄簱鍙�
+ }
+ }
+ else
+ {
+ unstackingMode2 = "1";//闈炴垚鍝佸嚭搴撹蛋PDA鎷嗗灈
+ toLocation = outMode;//鍑哄簱鍙�
+ }
+ #endregion
+
// 鍌ㄤ綅鍙�
var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo).LocatNo;
@@ -1502,40 +1870,212 @@
if (locate.Status == "1") //鏈夌墿鍝�
{
#region 娣诲姞鍑哄簱浠诲姟
-
- var taskNo = new Common().GetMaxNo("TK");
- var exTask = new LogTask //鍑哄簱浠诲姟
+ if (locate.Depth == "01") //娣卞害涓�1
{
- TaskNo = taskNo,
- Sender = "WMS",
- Receiver = "WCS",
- IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+ var taskNo = new Common().GetMaxNo("TK");
+ var exTask = new LogTask //鍑哄簱浠诲姟
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "WCS",
+ IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
- StartLocat = locate.LocatNo,//璧峰浣嶇疆
- EndLocat = outMode,//鐩爣浣嶇疆
- PalletNo = item.PalletNo,//鎵樼洏鐮�
- IsSend = 1,//鏄惁鍙啀娆′笅鍙�
- IsCancel = 1,//鏄惁鍙彇娑�
- IsFinish = 1,//鏄惁鍙畬鎴�
- Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
- Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
- OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
- Msg = "浠�" + locate.LocatNo + "鍒�" + outMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
- };
- Db.Insertable(exTask).ExecuteCommand();
- logTaskList.Add(exTask);
+ StartLocat = locate.LocatNo,//璧峰浣嶇疆
+ EndLocat = toLocation,//outMode,//鐩爣浣嶇疆
+ PalletNo = item.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ Msg = "浠�" + locate.LocatNo + "鍒�" + toLocation + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+ };
+ Db.Insertable(exTask).ExecuteCommand();
+ logTaskList.Add(exTask);
- outDtoList.Add(new OutCommandDto()
+ outDto1.Add(new OutCommandDto()
+ {
+ PalletNo = item.PalletNo,//鎵樼洏鍙�
+ StartLocate = locate.LocatNo, // 璧峰浣嶇疆
+ StartRoadway = locate.RoadwayNo,//鍏跺疄宸烽亾
+ EndLocate = toLocation,//outMode, // 鐩爣浣嶇疆
+ TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+ TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+ OutMode = "", //鐩爣鍦板潃
+ Order = 1
+ });
+ taskNoStr = exTask.TaskNo;
+ }
+ else if (locate.Depth == "02") //娣卞害涓�2
{
- PalletNo = item.PalletNo,//鎵樼洏鍙�
- StartLocate = locate.LocatNo, // 璧峰浣嶇疆
- StartRoadway = locate.RoadwayNo,//鍏跺疄宸烽亾
- EndLocate = outMode, // 鐩爣浣嶇疆
- TaskNo = exTask.TaskNo, // 浠诲姟鍙�
- TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
- OutMode = "", //鐩爣鍦板潃
- Order = 1
- });
+ //鑾峰彇鍑哄簱娣卞害涓�2鍌ㄤ綅鍓嶉潰鐨勫偍浣嶄俊鎭�
+ var slotBefore = com.GetLocateNoDepth1(locate.WareHouseNo, locate.LocatNo);
+ if (slotBefore.Status == "1") //鍓嶉潰鐨勫偍浣嶆湁璐х墿銆佽繘琛岀Щ搴撴搷浣�
+ {
+ //瑕佸嚭搴撴繁搴︿负2鐨勫偍浣嶅墠闈㈢殑鍌ㄤ綅涓揣鐗╂槸鍚﹁鍑哄簱
+ var isout = outStockDetail.Count(m => m.LocatNo == slotBefore.LocatNo);
+
+ if (isout <= 0) //杩涜绉诲簱
+ {
+ //鍘诲簱瀛樿〃涓壘鍒板偍浣嶅搴旂殑鎵樼洏鐮佹搷浣�
+ var stockNew = Db.Queryable<DataStockDetail>().First(m => m.LocatNo == slotBefore.LocatNo);
+ if (stockNew == null)
+ {
+ var slotChange = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == slotBefore.LocatNo);
+ slotChange.Status = "0";
+ Db.Updateable(slotChange).ExecuteCommand();
+ }
+ else
+ {
+ //鑾峰彇绉诲簱鐨勫簱浣�
+ var newSlot = MoveAddress(slotBefore.LocatNo, slotBefore.RoadwayNo, item.SkuNo);
+ //褰撳墠绉诲簱搴撲綅鐨勫偍浣嶄俊鎭�
+ var locatey = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == newSlot && m.IsDel == "0");
+ if (!string.IsNullOrEmpty(newSlot))
+ {
+ #region 娣诲姞鍑哄簱鏃跺彂鐢熺殑绉诲簱浠诲姟
+
+ var exYkTaskNo = new Common().GetMaxNo("TK");
+ var exYkTask = new LogTask //鍑哄簱鏃朵骇鐢熺Щ搴撲换鍔�
+ {
+ TaskNo = exYkTaskNo,
+ Sender = "WMS",
+ Receiver = "WCS",
+ IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = stockNew.LocatNo,//璧峰浣嶇疆
+ EndLocat = newSlot,//鐩爣浣嶇疆
+ PalletNo = stockNew.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "2",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+
+ Msg = stockNew.LocatNo + " ==>> " + newSlot + "鐨勭Щ搴撲换鍔�",
+ };
+ Db.Insertable(exYkTask).ExecuteCommand();
+
+ moveDto.Add(new OutCommandDto()
+ {
+ StartRoadway = slotBefore.RoadwayNo, //璧峰宸烽亾
+ PalletNo = stockNew.PalletNo,//鎵樼洏鍙�
+ StartLocate = stockNew.LocatNo, // 璧峰浣嶇疆
+ EndLocate = newSlot, // 鐩爣浣嶇疆
+ EndRoadway = locatey.RoadwayNo, // 鐩爣宸烽亾
+ TaskNo = exYkTask.TaskNo, // 浠诲姟鍙�
+ TaskType = "2",// 浠诲姟绫诲瀷 (绉诲簱)
+ OutMode = "", //鐩爣鍦板潃
+ Order = 1,
+ });
+ #endregion
+
+ #region 鏀瑰彉鍌ㄤ綅瑁呭~
+ var slotChange = Db.Queryable<SysStorageLocat>().First(m => m.Id == slotBefore.Id);
+ var slotChange2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == newSlot);
+ slotChange.Status = "5"; //鏀瑰彉鐘舵�侊紙姝e湪绉诲嚭锛�
+ slotChange2.Status = "4"; // 鏀瑰彉鐘舵�侊紙姝e湪绉诲叆锛�
+ Db.Updateable(slotChange).ExecuteCommand();
+ Db.Updateable(slotChange2).ExecuteCommand();
+ #endregion
+ }
+ else
+ {
+ #region 娣诲姞鍑哄簱浠诲姟
+
+ var exYkTaskNo1 = new Common().GetMaxNo("TK");
+ var exYkTask1 = new LogTask //鍑哄簱绉诲簱娌℃湁搴撲綅浜嗚繘琛屽嚭搴撲换鍔�
+ {
+ TaskNo = exYkTaskNo1,
+ Sender = "WMS",
+ Receiver = "WCS",
+ IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = stockNew.LocatNo,//璧峰浣嶇疆
+ EndLocat = toLocation,//鐩爣浣嶇疆
+ PalletNo = stockNew.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ Msg = locate.LocatNo + "鐨勫嚭搴撲换鍔�"
+ };
+ Db.Insertable(exYkTask1).ExecuteCommand();
+
+ outDto1.Add(new OutCommandDto()
+ {
+ StartRoadway = slotBefore.RoadwayNo, //璧峰宸烽亾
+ PalletNo = stockNew.PalletNo,//鎵樼洏鍙�
+ StartLocate = stockNew.LocatNo, // 璧峰浣嶇疆
+ EndLocate = toLocation, // 鐩爣浣嶇疆
+ EndRoadway = "", // 鐩爣宸烽亾
+ TaskNo = exYkTask1.TaskNo, // 浠诲姟鍙�
+ TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+ OutMode = "", //鐩爣鍦板潃
+ Order = 1,
+ });
+ #endregion
+
+ #region MyRegion
+
+ var slotChange = Db.Queryable<SysStorageLocat>().First(m => m.Id == slotBefore.Id);
+ slotChange.Status = "3"; //鏀瑰彉鐘舵�侊紙姝e湪鍑哄簱锛�
+ Db.Updateable(slotChange).ExecuteCommand();
+
+ #endregion
+ }
+ }
+ }
+ }
+ else if (slotBefore.Status == "2" || slotBefore.Status == "4") //鍓嶉潰鍌ㄤ綅鐘舵�佹槸鍏ュ簱涓垨鑰呯Щ鍏ヤ腑
+ {
+ flagList.Add(5);
+ continue;
+ }
+
+ #region 娣诲姞鍑哄簱浠诲姟
+
+ var taskNo1 = new Common().GetMaxNo("TK");
+ var exTask1 = new LogTask //鍑哄簱浠诲姟
+ {
+ TaskNo = taskNo1,
+ Sender = "WMS",
+ Receiver = "WCS",
+ IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = locate.LocatNo,//璧峰浣嶇疆
+ EndLocat = toLocation,//鐩爣浣嶇疆
+ PalletNo = item.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ Msg = locate.LocatNo + "鐨勫嚭搴撲换鍔�"
+ };
+ Db.Insertable(exTask1).ExecuteCommand();
+ logTaskList.Add(exTask1);
+ outDto2.Add(new OutCommandDto()
+ {
+ StartRoadway = locate.RoadwayNo, //璧峰宸烽亾
+ PalletNo = item.PalletNo,//鎵樼洏鍙�
+ StartLocate = locate.LocatNo, // 璧峰浣嶇疆
+ EndLocate = toLocation, // 鐩爣浣嶇疆
+ EndRoadway = locate.RoadwayNo, //鐩爣宸烽亾
+ TaskNo = exTask1.TaskNo, // 浠诲姟鍙�
+ TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+ OutMode = "", //鐩爣鍦板潃
+ Order = 1,
+ });
+ taskNoStr = exTask1.TaskNo;
+ #endregion
+
+ }
#endregion
#region 鏀瑰彉鏁版嵁
@@ -1562,11 +2102,12 @@
locate.Status = "3"; //瑕佸嚭搴撶殑鍌ㄤ綅鏀瑰彉鐘舵�� 姝e湪鍑哄簱
Db.Updateable(locate).ExecuteCommand();
- item.TaskNo = exTask.TaskNo; // 鍑哄簱鍒嗛厤淇℃伅涓洿鏂颁换鍔″彿
+ item.TaskNo = taskNoStr; // 鍑哄簱鍒嗛厤淇℃伅涓洿鏂颁换鍔″彿
item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛�
- item.OutMode = outMode;//鍑哄簱鍙�
+ item.UnstackingMode = unstackingMode2;//鎷嗗灈鏂瑰紡
+ item.OutMode = unstackingMode2 == "1" ? outMode : "";//鍑哄簱鍙�
+ item.LoadingAddre = unstackingMode2 == "0" ? loadingAddre : "";//瑁呰溅鍙�
Db.Updateable(item).ExecuteCommand();
-
#endregion
@@ -1596,10 +2137,10 @@
}
}
}
- var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType =="1"&& m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo==item.PalletNo);
+ var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "1" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo);
if (taskNo == null)
{
- taskNo = logTaskList.First(m => m.PalletNo == item.PalletNo);//褰撳墠鏈夊悓鎵樼洏涓嶅悓鐗╂枡鍑哄簱
+ taskNo = logTaskList.FirstOrDefault(m => m.PalletNo == item.PalletNo);//褰撳墠鏈夊悓鎵樼洏涓嶅悓鐗╂枡鍑哄簱
}
if (taskNo == null)
{
@@ -1607,7 +2148,8 @@
}
item.TaskNo = taskNo.TaskNo;
item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛�
- item.OutMode = taskNo.EndLocat;
+ item.OutMode = unstackingMode2 == "1" ? taskNo.EndLocat : "";//鍑哄簱鍙�
+ item.LoadingAddre = unstackingMode2 == "0" ? taskNo.EndLocat : "";//瑁呰溅鍙�
Db.Updateable(item).ExecuteCommand();
flagList.Add(0);
#endregion
@@ -1617,7 +2159,8 @@
flagList.Add(1);
}
}
-
+ outDto1.AddRange(moveDto);
+ outDto1.AddRange(outDto2);
//娣诲姞鎿嶄綔鏃ュ織璁板綍
var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", soNo, "鍑哄簱", $"鐐瑰嚮鍑哄簱鎸夐挳鍑哄簱鍗曞彿涓猴細{soNo}鐨勫嚭搴撳崟", userId);
Db.CommitTran();
@@ -1643,11 +2186,15 @@
{
str += "3.瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱銆�";
}
- if (outDtoList.Count > 0)
+ if (string.IsNullOrWhiteSpace(str))
+ {
+ str += "鎵樼洏鍙墽琛岋紝鏃犻渶涓嬪彂鍑哄簱浠诲姟";
+ }
+ if (outDto1.Count > 0)
{
// 姝e紡杩愯绋嬪簭鏀惧紑
- var list2 = outDtoList.Select(m => m.TaskNo).ToList();
- var jsonData = JsonConvert.SerializeObject(outDtoList);
+ var list2 = outDto1.Select(m => m.TaskNo).ToList();
+ var jsonData = JsonConvert.SerializeObject(outDto1);
string response = "";
try
@@ -1656,7 +2203,7 @@
response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS");
var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
- ////瑙f瀽杩斿洖鏁版嵁
+ //////瑙f瀽杩斿洖鏁版嵁
var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
if (wcsModel.StatusCode == 0)
{
@@ -1677,7 +2224,7 @@
}
- return outDtoList;
+ return outDto1;
}
catch (Exception e)
{
@@ -1694,16 +2241,24 @@
}
}
- //wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙鍑哄簱鎴愬姛锛�
- public void ExportSuccess(string taskNo, int userId)
+ //wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙鍑哄簱鎴愬姛锛�
+ public void ExportSuccess(string taskNo, int userId,string url)
{
try
{
+ //鍑哄簱浠诲姟鍙锋洿鏀癸紝濡傛灉鐢盤LC鍑哄簱锛屽垯PLC鍥炰紶浠诲姟鍙蜂负锛氫换鍔″彿+瀹為檯鍑哄簱鍙�
+ var TtaskNo = taskNo;
+ var outLine = "";
+ if (taskNo.Length == 18)
+ {
+ TtaskNo = taskNo.Substring(0, taskNo.Length - 3);
+ outLine = taskNo.Substring(taskNo.Length - 3, 3);
+ }
//褰撳墠浠诲姟淇℃伅
- var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0");
+ var task = Db.Queryable<LogTask>().First(m => m.TaskNo == TtaskNo && m.IsDel == "0");
if (task == null)
{
- throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅");
+ throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹TtaskNo}鈥欑殑浠诲姟淇℃伅");
}
if (task.Status == "2")
{
@@ -1730,7 +2285,7 @@
}
foreach (var item in stockDetail)
{
- if (item.SkuNo== "100099")//鍒ゆ柇鏄惁鏄┖鎵樺嚭搴�
+ if (item.SkuNo == "100099")//鍒ゆ柇鏄惁鏄┖鎵樺嚭搴�
{
//鍒ゆ柇鎬诲簱瀛樻槸鍚︿负0锛屽鏋滀负0鍒犻櫎 鍚﹀垯鍑忓幓鏁伴噺
var stock = Db.Queryable<DataStock>().First(m => m.SkuNo == "100099");
@@ -1819,7 +2374,7 @@
Db.Updateable(item).ExecuteCommand();
}
//鍑哄簱娴佹按锛堟洿鏀圭姸鎬侊級
- var allot = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.TaskNo == taskNo || (m.Status == "1" && m.PalletNo == task.PalletNo))).ToList();
+ var allot = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.TaskNo == TtaskNo || (m.Status == "1" && m.PalletNo == task.PalletNo))).ToList();
foreach (var item in allot)
{
@@ -1838,7 +2393,151 @@
if (userId != 0)
{
//娣诲姞鎿嶄綔鏃ュ織璁板綍
- var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鏃ュ織", taskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{taskNo}鐨勪换鍔�", userId);
+ var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鏃ュ織", TtaskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{TtaskNo}鐨勪换鍔�", userId);
+ }
+ if (outLine != "" && outLine != "009" && outLine != "013" && outLine != "018" && outLine != "022")
+ {
+ #region 鍒嗛厤鍑哄簱鐩殑浣�
+ string positionStart = outLine, positionEnd = "", type = "D00";
+ var type1 = Db.Queryable<BllExportNotice>().Where(m => m.SONo == allot.First().SONo && m.IsDel == "0" && m.Status == "3").First();
+ if (type1 == null)
+ {
+ var locateno = Db.Queryable<SysStorageLocat>().Where(m => m.AreaNo == "B13").ToList();
+ type = "D02"; //绌烘墭鐩樺灈鍑哄簱
+ if (outLine == "443")//瑗夸晶鍑哄簱
+ {
+ positionEnd = locateno.First(m => m.Row == 1 && m.Status == "0" && m.Flag == "0").LocatNo;
+ }
+ else if (outLine == "440") //涓滀晶鍑哄簱
+ {
+ positionEnd = locateno.First(m => m.Row == 2 && m.Status == "0" && m.Flag == "0").LocatNo; //涓滀晶鎴块棿搴撲綅
+ }
+ else //1妤肩┖鎵樼洏鍑哄簱涓嶈皟鐢ˋGV
+ {
+ Db.CommitTran();
+ return;
+ }
+
+ }
+ else
+ {
+ if (type1.Type == "1" || (type1.Type == "5" && (positionStart == "440" || positionStart == "443"))) //3妤奸鏂欏嚭搴� /3L涓棿鍝佸嚭搴�
+ {
+ var locateno = Db.Queryable<SysStorageLocat>().Where(m => m.AreaNo == "B11").ToList();
+ if (outLine == "443")//瑗夸晶鍑哄簱
+ {
+
+ positionEnd = locateno.OrderBy(m => m.LocatNo).First(m => m.Row == 1 && m.Status == "0" && m.Flag == "0").LocatNo; //瑗夸晶鎴块棿搴撲綅鍜屽闈㈡埧闂�
+ }
+ else if (outLine == "440") //涓滀晶鍑哄簱
+ {
+ positionEnd = locateno.OrderBy(m => m.LocatNo).First(m => m.Row == 2 && m.Status == "0" && m.Flag == "0").LocatNo; //涓滀晶鎴块棿搴撲綅
+ }
+ }
+ else if (type1.Type == "2" || type1.Type == "3") //鎶芥鍑哄簱 /鍙栨牱鍑哄簱
+ {
+ positionEnd = Db.Queryable<SysStorageLocat>().OrderBy(m=>m.LocatNo).First(m => m.AreaNo == "B04" && m.Status == "0" && m.Flag == "0").LocatNo;
+ }
+ else if (type1.Type == "4")//涓嶅悎鏍煎搧鍑哄簱
+ {
+
+ positionEnd = Db.Queryable<SysStorageLocat>().OrderBy(m => m.LocatNo).First(m => m.AreaNo == "B03" && m.Status == "0" && m.Flag == "0").LocatNo;
+ }
+ else //鍏朵粬鍗曟嵁绫诲瀷閮藉瓨鏀惧彂璐х紦瀛樺尯
+ {
+ positionEnd = Db.Queryable<SysStorageLocat>().OrderBy(m => m.LocatNo).First(m => m.AreaNo == "B02" && m.Status == "0" && m.Flag == "0").LocatNo;
+ }
+ }
+ #endregion
+
+ #region AGV璋冪敤
+ var storageLocatEnd = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == positionEnd && w.Flag == "0" && w.Status == "0");
+ if (storageLocatEnd == null)
+ {
+ throw new Exception("鐢熸垚鐨凙GV浠诲姟鐩殑鍦板潃涓嶆纭�");
+ }
+ List<AgvSchedulingTask> agvTaskList = new List<AgvSchedulingTask>();
+
+ object[] position = new object[2];
+ position[0] = new
+ {
+ positionCode = positionStart,
+ type = "00"
+ };
+ position[1] = new
+ {
+ positionCode = positionEnd,
+ type = "00"
+ };
+
+ AgvSchedulingTask agvTask = new AgvSchedulingTask();
+ Random r = new Random();
+ long ran = DateTime.Now.Ticks;
+ agvTask.ReqCode = ran.ToString();
+ //agvTask.ReqCode = TtaskNo; //agv璇锋眰缂栧彿锛岄渶瑕侀殢鏈虹敓鎴� 锛堟渶澶�32浣嶏級
+ agvTask.TaskCode = TtaskNo; //浠诲姟鍙�
+ agvTask.TaskTyp = type; //鎼繍绫诲瀷
+ agvTask.PositionCodePath = position; //璧峰鍜岀洰鐨勪綅闆嗗悎
+ agvTask.CtnrTyp = "1"; //瀹瑰櫒绫诲瀷锛屽�间负1
+ if (type == "D02")
+ {
+ var palnoNum = Db.Queryable<BllPalletBind>().OrderByDescending(w=>w.Id).First(w => w.IsDel == "0" && w.PalletNo == task.PalletNo);
+ agvTask.CtnrNum = palnoNum.Qty.ToString(); //鍙犳墭浠诲姟闇�瑕佷笅鍙戠┖鎵樼洏鏁伴噺
+ }
+
+ agvTaskList.Add(agvTask);
+
+ string str = "";
+ var list2 = agvTaskList.Select(m => m.TaskCode).ToList();
+ var jsonData = JsonConvert.SerializeObject(agvTaskList);
+ jsonData = jsonData.Substring(1, jsonData.Length - 1);
+ jsonData = jsonData.Substring(0, jsonData.Length - 1);
+ var response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV");
+ var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
+ if (agvModel.Code != "0")
+ {
+ //璁板綍log
+ var logStr = $@".\log\AGV\浠诲姟鍙嶉" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+ jsonData = JsonConvert.SerializeObject(agvModel);
+ LogFile.SaveLogToFile($"AGV浠诲姟鍙嶉鎵ц閫氱煡锛�( {jsonData} ),", logStr);
+ }
+
+ #endregion
+
+ #region 娣诲姞鍑哄簱浠诲姟淇℃伅
+
+ var taskNonew = new Common().GetMaxNo("TK");
+ var exTask = new LogTask //灏忚溅绉诲簱浠诲姟
+ {
+ TaskNo = TtaskNo,
+ Sender = "WMS",
+ Receiver = "AGV",
+ IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = positionStart,//璧峰浣嶇疆
+ EndLocat = positionEnd,//鐩爣浣嶇疆
+ PalletNo = task.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "2",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "3",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ CreateTime = DateTime.Now, //鍒涘缓鏃堕棿
+ CreateUser = userId, //鍒涘缓浜�
+ Msg = "灏忚溅浠�" + positionStart + "鍒�" + positionEnd + "鐨勭Щ搴撲换鍔�", //鍏抽敭淇℃伅
+ //FinishDate = serverTime, //瀹屾垚鏃堕棿
+ };
+ Db.Insertable(exTask).ExecuteCommand();
+
+ #endregion
+
+ #region 鍌ㄤ綅鐘舵�佸彉鏇�
+ //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+ var locat = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == positionEnd);
+ locat.Status = "4"; //4 绉诲叆涓�
+ Db.Updateable(locat).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+ #endregion
}
Db.CommitTran();
}
@@ -1854,8 +2553,88 @@
}
}
+ /// <summary>
+ /// wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙绉诲簱鎴愬姛锛�
+ /// </summary>
+ /// <param name="taskNo">浠诲姟鍙�</param>
+ /// <param name="userId">鎿嶄綔浜�</param>
+ /// <exception cref="Exception"></exception>
+ public void RelocationSuccess(string taskNo, int userId)
+ {
+ try
+ {
+ //褰撳墠浠诲姟淇℃伅
+ var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0");
+ if (task == null)
+ {
+ throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅");
+ }
+ if (task.Status == "2")
+ {
+ throw new Exception("褰撳墠浠诲姟宸插畬鎴�");
+ }
+ Db.BeginTran();
+ //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅
+ var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList();
+ //褰撳墠浠诲姟涓殑鐩爣鍌ㄤ綅淇℃伅
+ //褰撳墠浠诲姟涓殑鍘熷偍浣�
+ var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat);
+ if (locate == null)
+ {
+ throw new Exception($"WMS绯荤粺涓病鏈夎{task.StartLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�");
+ }
+ var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat);
+ if (locate2 == null)
+ {
+ throw new Exception($"WMS绯荤粺涓病鏈夎{task.EndLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�");
+ }
+
+ try
+ {
+ task.Status = "2";//浠诲姟鐘舵��
+ task.IsSend = 0;
+ task.IsCancel = 0;
+ task.IsFinish = 0;
+ task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿
+ Db.Updateable(task).ExecuteCommand();
+
+ #region 淇敼鍌ㄤ綅鐘舵��
+
+ //鍘熷偍浣嶆敼涓虹┖鍌ㄤ綅 0
+ locate.Status = "0";
+ Db.Updateable(locate).ExecuteCommand();
+
+ //鐩爣鍌ㄤ綅鏀逛负鏈夎揣鐗� 1
+ locate2.Status = "1";
+ Db.Updateable(locate2).ExecuteCommand();
+ foreach (var item in stockDetail)
+ {
+ item.WareHouseNo = locate2.WareHouseNo;
+ item.AreaNo = locate2.AreaNo;
+ item.RoadwayNo = locate2.RoadwayNo;
+ item.LocatNo = locate2.LocatNo;
+ }
+ Db.Updateable(stockDetail).ExecuteCommand();
+
+ #endregion
+
+ Db.CommitTran();
+ }
+ catch (Exception ex)
+ {
+ Db.RollbackTran();
+ throw new Exception(ex.Message);
+ }
+ }
+ catch (Exception ex)
+ {
+ throw new Exception("瀹屾垚鍙嶉澶辫触锛�" + ex.Message);
+ }
+ }
+
+
//閲嶆柊涓嬪彂鍑哄簱浠诲姟
- public OutCommandDto AgainSendSoTask(string taskNo, int userId, string url)
+ public OutCommandDto AgainSendSoTask(string taskNo, string Receiver, int userId, string url)
{
try
{
@@ -1906,22 +2685,42 @@
{
//绋嬪簭姝e紡鍙戝竷鍚庢斁寮�
var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
- var response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS");
+ var response = HttpHelper.DoPost(url, jsonData, Receiver == "WCS" ? "涓嬪彂缁橶CS鍑哄簱鍛戒护" : "涓嬪彂缁橝GV鍑哄簱鍛戒护", "WCS");
var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
- ////瑙f瀽杩斿洖鏁版嵁
- var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
- if (wcsModel.StatusCode == 0)
+ if (Receiver == "WCS")
{
- //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
- new TaskServer().EditTaskIssueOk(list, time1, time2);
+ ////瑙f瀽杩斿洖鏁版嵁
+ var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
+ if (wcsModel.StatusCode == 0)
+ {
+ //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
+ new TaskServer().EditTaskIssueOk(list, time1, time2);
+ }
+ if (wcsModel.StatusCode == -1)
+ {
+ new TaskServer().EditTaskIssueNo(list, time1, time2, wcsModel.Msg);
+ throw new Exception($"wcs杩斿洖鐘舵�佸紓甯革細{wcsModel.Msg}");
+ }
}
- if (wcsModel.StatusCode == -1)
+ else if (Receiver == "AGV")
{
- new TaskServer().EditTaskIssueNo(list, time1, time2, wcsModel.Msg);
- throw new Exception($"wcs杩斿洖鐘舵�佸紓甯革細{wcsModel.Msg}");
+ ////瑙f瀽杩斿洖鏁版嵁
+ var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
+ if (agvModel.Code == "0")
+ {
+ //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
+ new TaskServer().EditTaskIssueOk(list, time1, time2);
+
+ }
+ if (agvModel.Code == "1")
+ {
+ new TaskServer().EditTaskIssueNo(list, time1, time2, agvModel.Message);
+ throw new Exception($"agv杩斿洖鐘舵�佸紓甯革細{agvModel.Message}");
+ }
}
+
}
catch (Exception ex)
{
@@ -1949,6 +2748,38 @@
{
throw new Exception("鏈煡璇㈠埌浠诲姟淇℃伅");
}
+ //鑾峰彇瀵瑰簲搴撲綅淇℃伅
+ var startlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat);
+ if (startlocat == null)
+ {
+ throw new Exception("鏈煡璇㈠埌鍌ㄤ綅淇℃伅");
+ }
+ startlocat.Status = "0";//淇敼鍒嗛厤淇℃伅鐘舵��
+ //鑾峰彇鍌ㄤ綅淇℃伅
+ var locat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat);
+ //鑾峰彇绉诲簱浠籨鍔″搴旂洰鏍囧偍浣嶄俊鎭�
+ SysStorageLocat endlocat = new SysStorageLocat();
+ if (task.Type == "2")
+ {
+ endlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.EndLocat);
+ if (endlocat == null)
+ {
+ throw new Exception("鏈煡璇㈠埌鐩爣鍌ㄤ綅淇℃伅");
+ }
+ }
+ if (locat == null)
+ {
+ Db.RollbackTran();
+ throw new Exception("鏈煡璇㈠埌鍌ㄤ綅淇℃伅锛岃鏍稿疄锛�");
+ }
+ locat.Status = "1"; //鏈夌墿鍝�
+ Db.Updateable(locat).ExecuteCommand();
+ if (endlocat != null)
+ {
+ endlocat.Status = "0"; //绌哄偍浣� 0
+ Db.Updateable(endlocat).ExecuteCommand();
+ }
+
//淇敼浠诲姟
task.IsSuccess = 1;
task.IsSend = 0;
@@ -1973,21 +2804,10 @@
noticeDetail.FactQty -= item.Qty; //淇敼鍑哄簱鍗曟槑缁嗙殑涓嬫灦鏁伴噺
Db.Updateable(noticeDetail).ExecuteCommand();
- //鑾峰彇鍌ㄤ綅淇℃伅
- var locat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat);
-
- if (locat == null)
- {
- Db.RollbackTran();
- throw new Exception("鏈煡璇㈠埌鍌ㄤ綅淇℃伅锛岃鏍稿疄锛�");
- }
- locat.Status = "1"; //鏈夌墿鍝�
- Db.Updateable(locat).ExecuteCommand();
-
if (noticeDetail.FactQty == 0)
{
var noticeDetail2 = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo && m.Id != noticeDetail.Id).ToList();
- var num = noticeDetail2.Count(m => m.FactQty>0);
+ var num = noticeDetail2.Count(m => m.FactQty > 0);
//鍒ゆ柇鍑哄簱鍗曠殑鎵�鏈夋槑缁嗘槸鍚﹂兘涓�0锛涘鏋滀负0鍙樻洿鍑哄簱鍗曠姸鎬佷负宸插垎閰�
if (num == 0)
{
@@ -2013,7 +2833,7 @@
//淇敼搴撳瓨鏄庣粏
stockDetail.LockQty -= stockDetail.Qty; //閿佸畾鏁伴噺
stockDetail.Status = "0"; //搴撳瓨鐘舵�� 0锛氬緟鍒嗛厤
-
+
//淇敼搴撳瓨鎬昏〃
datastock.LockQty -= (int)stockDetail.Qty; //閿佸畾鏁伴噺
@@ -2031,13 +2851,13 @@
Db.Updateable(locate).ExecuteCommand();
}
-
+
}
else
{
Db.Updateable(allot).ExecuteCommand();
}
-
+
//娣诲姞鎿嶄綔鏃ュ織璁板綍
var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鏃ュ織", taskNo, "鍙栨秷", $"鐐瑰嚮鍙栨秷鎸夐挳銆佸彇娑堜簡浠诲姟鍙蜂负锛歿taskNo}鐨勪换鍔�", (int)userId);
Db.CommitTran();
@@ -2064,7 +2884,7 @@
try
{
// 鍒ゆ柇褰撳墠浠诲姟鐘舵�� Status 1:姝e湪鎵ц 3:寮傚父缁撴潫
- var taskModel = Db.Queryable<LogTask>().First(m => m.TaskNo == model.TaskNo && m.IsDel == "0" && m.Status == "1");
+ var taskModel = Db.Queryable<LogTask>().First(m => m.TaskNo == model.TaskNo && m.IsDel == "0" && m.Status == "1");
if (taskModel == null)
{
throw new Exception("姝や换鍔′笉瀛樺湪鎴栦换鍔$姸鎬佸凡鍙樻洿!");
@@ -2104,7 +2924,15 @@
// 鍑哄簱鎬昏〃 鐘舵�佹敼涓洪儴鍒嗗垎閰�
var noticeModel = Db.Queryable<BllExportNotice>().First(m => m.SONo == noticeDetailModel.SONo && m.IsDel == "0");
- noticeModel.Status = "1";
+ if (noticeDetailModel.AllotQty<=0)
+ {
+ noticeModel.Status = "0";
+ }
+ else
+ {
+ noticeModel.Status = "1";
+ }
+
Db.Updateable(noticeModel).ExecuteCommand();
// 搴撳瓨鏄庣粏琛� 鐘舵�佷慨鏀逛负寮傚父閿佸畾 閿佸畾鏁伴噺淇敼涓烘墭鐩樹笂鏁伴噺
@@ -2118,7 +2946,7 @@
// 搴撳瓨鎬昏〃 閿佸畾鏁伴噺=褰撳墠閿佸畾鏁伴噺 + (搴撳瓨鏄庣粏鎵樼洏涓婃暟閲�-搴撳瓨鏄庣粏鎵樼洏涓婂凡閿佸畾鐨勬暟閲�)
var stockModel = Db.Queryable<DataStock>().First(m => m.LotNo == stockDetailModel.LotNo && m.SkuNo == stockDetailModel.SkuNo && m.IsDel == "0");
- stockModel.LockQty = stockModel.LockQty + (int)(stockDetailModel.Qty - lockQty);
+ stockModel.LockQty = stockModel.LockQty + (decimal)(stockDetailModel.Qty - lockQty);
Db.Updateable(stockModel).ExecuteCommand();
// 鎷h揣鏄庣粏琛� 鍒犻櫎
@@ -2171,7 +2999,7 @@
}
if (notice.Status != "0" && notice.Status != "1")
{
- throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︿负绛夊緟鎵ц鎴栭儴鍒嗗垎閰嶆垨鏉ユ簮鏄惁鏄疻MS");
+ throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︿负绛夊緟鎵ц鎴栭儴鍒嗗垎閰�;");
}
//鍑哄簱鍗曟槑缁�
var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == soNo && (m.AllotQty - m.Qty) <= 0).ToList();
@@ -2206,70 +3034,90 @@
//鍒ゆ柇鍗曞彿鏄惁鎸囧畾鎵规
if (!string.IsNullOrWhiteSpace(detail.LotNo))
{
- stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo && m.IsDel == "0").ToList();
+ if (detail.LotNo.Contains(";"))
+ {
+ var lotNoList = detail.LotNo.Split(";");
+ var lotNoList2 = new List<string>();
+
+ foreach (var lotNoItem in lotNoList)
+ {
+ lotNoList2.Add(lotNoItem);
+ }
+ stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && lotNoList2.Contains(m.LotNo) && m.IsDel == "0").ToList();
+ }
+ else
+ {
+ stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo && m.IsDel == "0").ToList();
+ }
+
}
else
{
- stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && string.IsNullOrWhiteSpace(m.LotNo) && m.IsDel == "0").ToList();
+ stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.IsDel == "0" && string.IsNullOrWhiteSpace(m.LotNo)).ToList(); //
}
if (stockDetail.Count < 1)
{
throw new Exception("搴撳瓨涓嶈冻,鏃犲彲鍑哄簱搴撳瓨");
}
+ //0:鎴愬搧鍑哄簱銆�1:棰嗘枡鍑哄簱銆�2:鎶芥鍑哄簱銆�3锛氱墿鏂欏彇鏍峰嚭搴撱��4:涓嶅悎鏍煎搧鍑哄簱銆�5:涓棿鍝佸嚭搴撱��6:浠e偍鍑哄簱銆�7:鍏朵粬鍑哄簱銆�8:瀵勫瓨鍑哄簱
+ if (notice.Type == "0" || notice.Type == "1")//鎴愬搧銆佸師杈呮枡鍑哄簱
+ {
+ stockDetail = stockDetail.Where(m => m.InspectStatus == "1").ToList();
+ }
+ else if (notice.Type == "3")//鍙栨牱鍑哄簱
+ {
+ stockDetail = stockDetail.Where(m => m.InspectStatus == "0").ToList();
+ }
+ else if (notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")
+ {
+ stockDetail = stockDetail.Where(m => m.InspectStatus == "0" || m.InspectStatus == "1").ToList();
+ }
+ else if (notice.Type == "4")//涓嶅悎鏍煎嚭搴�
+ {
+ stockDetail = stockDetail.Where(m => m.InspectStatus == "2").ToList();
+ }
- //if (notice.Type == "0" || notice.Type == "1")//鎴愬搧銆佸師杈呮枡鍑哄簱
- //{
- stockDetail = stockDetail.Where(m => m.InspectStatus == "1").ToList();
- //}
- //else if (notice.Type == "2" || notice.Type == "3")//鎴愬搧銆佸師杈呮枡鍑哄簱(涓嶅悎鏍�)
- //{
- // stockDetail = stockDetail.Where(m => m.InspectStatus == "2").ToList();
- //}
- //else if (notice.Type == "4")//鍙栨牱鍑哄簱
- //{
- // stockDetail = stockDetail.Where(m => m.InspectStatus == "0").ToList();
- //}
- //灏嗗簱瀛樻槑缁嗘寜娣卞害杩涜鎺掑簭 娣卞害1鍦ㄥ墠 娣卞害2鍦ㄥ悗
- //stockDetail = stockDetail.OrderBy(d => int.Parse(d.LocatNo.Substring(6, 2))).ToList();
#region 鍖呰淇℃伅
var pack = packList.FirstOrDefault(p => p.PackagNo == detail.PackagNo);
- if (pack == null)
- {
- throw new Exception("鏈煡璇㈠埌鐗╂枡鍖呰");
- }
var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺
var bNum = 0;//绠辩墿鍝佹暟閲�
- if (pack.L5Num.HasValue)
+ if (pack != null)
{
- pNum = Convert.ToInt32(pack.L5Num);
- bNum = Convert.ToInt32(pack.L4Num);
+ //throw new Exception("鏈煡璇㈠埌鐗╂枡鍖呰");
+ if (pack.L5Num.HasValue)
+ {
+ pNum = Convert.ToInt32(pack.L5Num);
+ bNum = Convert.ToInt32(pack.L4Num);
+ }
+ else if (pack.L4Num.HasValue)
+ {
+ pNum = Convert.ToInt32(pack.L4Num);
+ bNum = Convert.ToInt32(pack.L3Num);
+ }
+ else if (pack.L3Num.HasValue)
+ {
+ pNum = Convert.ToInt32(pack.L3Num);
+ bNum = Convert.ToInt32(pack.L2Num);
+ }
+ else if (pack.L2Num.HasValue)
+ {
+ pNum = Convert.ToInt32(pack.L2Num);
+ bNum = Convert.ToInt32(pack.L1Num);
+ }
+ else if (pack.L1Num.HasValue)
+ {
+ pNum = Convert.ToInt32(pack.L1Num);
+ bNum = Convert.ToInt32(pack.L1Num);
+ }
}
- else if (pack.L4Num.HasValue)
- {
- pNum = Convert.ToInt32(pack.L4Num);
- bNum = Convert.ToInt32(pack.L3Num);
- }
- else if (pack.L3Num.HasValue)
- {
- pNum = Convert.ToInt32(pack.L3Num);
- bNum = Convert.ToInt32(pack.L2Num);
- }
- else if (pack.L2Num.HasValue)
- {
- pNum = Convert.ToInt32(pack.L2Num);
- bNum = Convert.ToInt32(pack.L1Num);
- }
- else if (pack.L1Num.HasValue)
- {
- pNum = Convert.ToInt32(pack.L1Num);
- bNum = Convert.ToInt32(pack.L1Num);
- }
- if (pNum == 0)
- {
- throw new Exception("鏈煡璇㈠埌鐗╂枡鍖呰鎵樼鍏崇郴淇℃伅");
- }
+
+
+ //if (pNum == 0)
+ //{
+ // throw new Exception("鏈煡璇㈠埌鐗╂枡鍖呰鎵樼鍏崇郴淇℃伅");
+ //}
#endregion
//鍙栧悎閫傚簱瀛樺晢鍝�
Dictionary<int, decimal> stockQtyDic = new Dictionary<int, decimal>();//鎵樺嚭搴撶墿鍝佹暟
@@ -2323,6 +3171,22 @@
}
var sd = Db.Updateable(s).UpdateColumns(it => new { it.LockQty, it.Status }).ExecuteCommand();
+ //if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1锛氶鏂欏嚭搴撱��
+ //{
+ // if (string.IsNullOrWhiteSpace(detail.LotNo))
+ // {
+ // detail.LotNo = s.LotNo;
+
+ // }
+ // else
+ // {
+ // if (!detail.LotNo.Contains(s.LotNo))
+ // {
+ // detail.LotNo += ";" + s.LotNo;
+ // }
+ // }
+ //}
+
}
detail.AllotQty += qty;
detail.UpdateUser = userId;
@@ -2461,6 +3325,15 @@
d.Status = "0";
d.UpdateUser = userId;
d.UpdateTime = DateTime.Now;
+
+ //if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1锛氶鏂欏嚭搴撱��
+ //{
+ // if (d.IsIssueLotNo != "1")
+ // {
+ // d.LotNo = "";
+ // }
+
+ //}
}
notice.Status = "0";
notice.UpdateUser = userId;
@@ -2529,26 +3402,63 @@
{
throw new Exception("鑾峰彇澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗曪紒");
}
- if (detail.Status != "0" && detail.Status != "1" && detail.AllotQty >= detail.Qty)
- {
- throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟鐘舵�佷笉鏄瓑寰呮墽琛屾垨鍒嗛厤涓紒");
- }
- if (detail.AllotQty >= detail.Qty)
- {
- throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴�!");
- }
+
var notice = Db.Queryable<BllExportNotice>().First(a => a.SONo == detail.SONo);
if (notice == null)
{
throw new Exception("鑾峰彇澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗�!");
}
- if (notice.Status == "3" && detail.AllotQty >= detail.Qty || notice.Status == "4" || notice.Status == "5")
+ if (notice.Type != "1" && notice.Type != "2" && notice.Type != "3")
{
- throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟鐘舵�佷笉鍏佽!");
+ if (detail.Status != "0" && detail.Status != "1" && detail.AllotQty >= detail.Qty)
+ {
+ throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟鐘舵�佷笉鏄瓑寰呮墽琛屾垨鍒嗛厤涓紒");
+ }
+ if (detail.AllotQty >= detail.Qty)
+ {
+ throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴�!");
+ }
+
+ if (notice.Status == "3" && detail.AllotQty >= detail.Qty || notice.Status == "4" || notice.Status == "5")
+ {
+ throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟鐘舵�佷笉鍏佽!");
+ }
+ }
+ string inspectStatus = string.Empty;
+ switch (notice.Type)//0锛氬師鏂� 1锛氬寘鏉� 2锛氭垚鍝� 3锛氳�楁潗 4锛氬崐鎴愬搧
+ {
+ case "0"://鎴愬搧鍑哄簱
+ inspectStatus = "1";
+ break;
+ case "1"://棰嗘枡鍑哄簱
+ inspectStatus = "1";
+ break;
+ case "2"://鎶芥鍑哄簱
+ inspectStatus = "0,1,2";
+ break;
+ case "3"://鐗╂枡鍙栨牱鍑哄簱
+ inspectStatus = "0";
+ break;
+ case "4"://涓嶅悎鏍煎搧鍑哄簱
+ inspectStatus = "2";
+ break;
+ case "5"://涓棿鍝佸嚭搴�
+ inspectStatus = "1";
+ break;
+ case "6"://浠e偍鍑哄簱
+ inspectStatus = "0,1,2";
+ break;
+ case "8"://瀵勫瓨鍑哄簱
+ inspectStatus = "0,1";
+ break;
+ default: //鍏跺畠鍑哄簱
+ inspectStatus = "0,1";
+ break;
}
#endregion
Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>()
+ .AndIF(!string.IsNullOrWhiteSpace(inspectStatus), m => inspectStatus.Contains(m.InspectStatus))
.AndIF(!string.IsNullOrWhiteSpace(houseNo), m => m.WareHouseNo == houseNo)
.AndIF(!string.IsNullOrWhiteSpace(roadwayNo), m => m.RoadwayNo == roadwayNo)
.AndIF(!string.IsNullOrWhiteSpace(locateNo), m => m.LocatNo == locateNo)
@@ -2557,7 +3467,7 @@
m => m.SkuNo.Contains(msg.Trim())
|| m.SkuName.Contains(msg.Trim())
|| m.LocatNo.Contains(msg.Trim()))
- .And(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo &&(m.Status == "0" || m.Status == "1"))
+ .And(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo && (m.Status == "0" || m.Status == "1"))
.ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏�
var list = Db.Queryable<DataStockDetail>().Where(item).Select(a => new StockDetailDto
@@ -2573,6 +3483,7 @@
LocatNo = a.LocatNo,
RoadwayNo = a.RoadwayNo,
PalletNo = a.PalletNo,
+ Demo = a.Demo,
}).ToList();
return list;
@@ -2595,39 +3506,48 @@
{
throw new Exception("鎿嶄綔澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗曡鎯咃紒");
}
- if (detail.AllotQty >= detail.Qty || (detail.Status != "0" && detail.Status != "1"))
- {
- throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴愶紒");
- }
- var notice = Db.Queryable<BllExportNotice>().First(a => a.IsDel =="0" && a.SONo == detail.SONo);
+ var notice = Db.Queryable<BllExportNotice>().First(a => a.IsDel == "0" && a.SONo == detail.SONo);
if (notice == null)
{
throw new Exception("鎿嶄綔澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗曪紒");
}
- if (notice.Status == "3" && detail.AllotQty >= detail.Qty || notice.Status == "4" || notice.Status == "5")
+ if (notice.Type != "1" && notice.Type != "2" && notice.Type !="3")
{
- throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴愶紒");
+ if (detail.AllotQty >= detail.Qty || (detail.Status != "0" && detail.Status != "1"))
+ {
+ throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴愶紒");
+ }
+
+ if (notice.Status == "3" && detail.AllotQty >= detail.Qty || notice.Status == "4" || notice.Status == "5")
+ {
+ throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴愶紒");
+ }
+
+ //鍗曟嵁鏄庣粏闇�瑕佺殑鍑哄簱鏁伴噺
+ var needQty = detail.Qty - detail.AllotQty;
+ //鍒嗛厤鐨勫嚭搴撴暟閲�
+ var outQty = model.StockList.Select(s => s.Qty).ToList().Sum();
+ if (outQty < needQty)
+ {
+ throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撴暟閲忎笉鑳藉ぇ浜庤鍒掓暟閲忥紒");
+ }
}
+
#endregion
- //鍗曟嵁鏄庣粏闇�瑕佺殑鍑哄簱鏁伴噺
- var needQty = detail.Qty - detail.AllotQty;
- //鍒嗛厤鐨勫嚭搴撴暟閲�
- var outQty = model.StockList.Select(s => s.Qty).ToList().Sum();
- if (outQty != needQty)
- {
- throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撴暟閲忎笌璁″垝鏁伴噺涓嶄竴鑷达紒");
- }
+
var stockIds = model.StockList.Select(a => a.StockId).ToList();
//搴撳瓨鏄庣粏
var stockList = Db.Queryable<DataStockDetail>().Where(a => stockIds.Contains(a.Id)).ToList();
+ //鍒嗛厤淇℃伅
+ var allots = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == detail.Id && m.Status == "0").ToList();
//搴撳瓨鎬昏〃
- //var stockz = Db.Queryable<DataStock>().First(d => d.IsDel == "0" && d.SkuNo == detail.SkuNo && d.LotNo == detail.LotNo);
+ var stockz = Db.Queryable<DataStock>().First(d => d.IsDel == "0" && d.SkuNo == detail.SkuNo && d.LotNo == detail.LotNo);
var allotList = new List<BllExportAllot>();
- var outQtys = 0;
+ decimal outQtys = 0;
foreach (var st in model.StockList)
{
var stock = stockList.First(a => a.Id == st.StockId);
@@ -2635,45 +3555,57 @@
{
throw new Exception("鎿嶄綔澶辫触锛岄儴鍒嗗偍浣嶅簱瀛樺紓甯革紒");
}
- if (st.Qty > (stock.Qty-stock.LockQty-stock.FrozenQty -stock.InspectQty))
+ if (st.Qty > (stock.Qty - stock.LockQty - stock.FrozenQty)) // 杈撳叆鐨勬暟閲� - 鎵樼洏涓婂彲鐢ㄧ殑鏁伴噺锛堟墭鐩樹笂鏁伴噺-閿佸畾鐨勬暟閲�-鍐荤粨鐨勬暟閲忥級
{
throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撴暟閲忚秴鍑哄簱瀛樻暟閲忥紒");
}
- //娣诲姞鍒嗛厤琛ㄤ俊鎭�
- var allot = new BllExportAllot
- {
- SONo = notice.SONo,
- WaveNo = "",
- SODetailNo = detail.Id,
- StockId = st.StockId,
- LotNo = stock.LotNo,
- LotText = stock.LotText,
- SupplierLot = stock.SupplierLot,
- SkuNo = stock.SkuNo,
- SkuName = stock.SkuName,
- Standard = stock.Standard,
- PalletNo = stock.PalletNo,
- IsBale = stock.IsBale,
- IsBelt = stock.IsBelt,
- Qty = st.Qty,
- CompleteQty = 0,
- Status = "0",
- LogisticsId = notice.LogisticsId,
- IsAdvance = "0",
- OutMode = "",//鍑哄簱鍙�
- CreateUser = userId,
- CreateTime = DateTime.Now
- };
- allotList.Add(allot);
+ var bl = allots.FirstOrDefault(m => m.StockId == st.StockId);
+ if (bl == null)
+ {
+ //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+ var allot = new BllExportAllot
+ {
+ SONo = notice.SONo,
+ WaveNo = "",
+ SODetailNo = detail.Id,
+ StockId = st.StockId,
+ LotNo = stock.LotNo,
+ LotText = stock.LotText,
+ SupplierLot = stock.SupplierLot,
+ SkuNo = stock.SkuNo,
+ SkuName = stock.SkuName,
+ Standard = stock.Standard,
+ PalletNo = stock.PalletNo,
+ IsBale = stock.IsBale,
+ IsBelt = stock.IsBelt,
+ Qty = st.Qty,
+ CompleteQty = 0,
+ Status = notice.Status == "4"? "2":"0",
+ LogisticsId = notice.LogisticsId,
+ IsAdvance = "0",
+ OutMode = "",//鍑哄簱鍙�
+
+ CreateUser = userId,
+ CreateTime = DateTime.Now
+ };
+ allotList.Add(allot);
+ }
+ else
+ {
+ bl.Qty += st.Qty;
+ Db.Updateable(bl).ExecuteCommand();
+ }
+
//搴撳瓨鏄庣粏
stock.LockQty += st.Qty;
stock.Status = stock.LockQty == stock.Qty ? "2" : "1";
-
- //搴撳瓨鎬昏〃
- //stockz.LockQty += st.Qty;
- //Db.Updateable(stockz).ExecuteCommand();
-
+ if (detail.AllotQty+ st.Qty > detail.Qty)
+ {
+ //搴撳瓨鎬昏〃
+ stockz.LockQty += (decimal)detail.AllotQty + st.Qty - detail.Qty;
+ Db.Updateable(stockz).ExecuteCommand();
+ }
Db.Updateable(stock).UpdateColumns(it => new { it.LockQty, it.Status }).ExecuteCommand();
outQtys += st.Qty;
@@ -2699,14 +3631,14 @@
foreach (var item in detailList)
{
totalQty += item.Qty;
- totalAllotQty += Convert.ToInt32(item.AllotQty);
+ totalAllotQty += Convert.ToDecimal(item.AllotQty);
}
if (totalAllotQty >= totalQty)
{
notice.Status = "2";//璇佹槑鍒嗛厤鏁伴噺澶т簬绛変簬鍑哄簱鏁伴噺 淇敼涓哄凡鍒嗛厤
}
- else if (totalAllotQty< totalQty && totalAllotQty>0)
+ else if (totalAllotQty < totalQty && totalAllotQty > 0)
{
notice.Status = "1";//璇佹槑鍒嗛厤鏁伴噺灏忎簬绛変簬鍑哄簱鏁伴噺 淇敼涓洪儴鍒嗗垎閰�
}
@@ -2749,7 +3681,7 @@
//鐗╂枡缂栫爜琛�
var skuList = Db.Queryable<SysMaterials>().Where(w => w.IsDel == "0");
//鍖呰琛�
- var packagList= Db.Queryable<SysPackag>().Where(w => w.IsDel == "0");
+ var packagList = Db.Queryable<SysPackag>().Where(w => w.IsDel == "0");
//鍑哄簱鍒嗛厤淇℃伅
var allotList = Db.Queryable<BllExportAllot>().Where(w => w.IsDel == "0" && w.SONo == soNo).ToList();
foreach (var item in allotList)
@@ -2772,6 +3704,12 @@
break;
}
}
+ var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == item.PalletNo && w.BitBoxMark == "1").ToList();
+ if (boxInfo.Count>0)//鎵樼洏涓婃湁闆剁闇�瑕佹媶绠�
+ {
+ result = "1";//闇�瑕佹媶绠�
+ break;
+ }
}
return result;
}
@@ -2780,5 +3718,335 @@
throw new Exception(ex.Message);
}
}
+
+ /// <summary>
+ /// 鑾峰彇绉诲簱鐩爣搴撲綅
+ /// </summary>
+ /// <param name="oldAddress">闇�瑕佺Щ鍔ㄧ殑搴撲綅鍦板潃</param>
+ /// <param name="roadWay">宸烽亾</param>
+ /// <param name="skuNo">鐗╂枡缂栫爜</param>
+ /// <returns>鐩爣搴撲綅鍦板潃 涓�"" 鐩存帴涓嬪彂涓ゆ鍑哄簱鎸囦护</returns>
+ public string MoveAddress(string oldAddress, string roadWay, string skuNo)//01020201 鎺�-鍒�-灞�-娣卞害
+ {
+ string nowAddress = "";
+
+ //鏍规嵁鐗╂枡缂栫爜鑾峰彇瀵瑰簲鍖哄煙
+ var skuCategoryNo = Db.Queryable<SysMaterials>().Where(a => a.IsDel == "0" && a.SkuNo == skuNo).Select(a => a.CategoryNo).First();
+ var category = Db.Queryable<SysMaterialCategory>().First(a => a.IsDel == "0" && a.CategoryNo == skuCategoryNo);
+
+ // 鑾峰彇绉诲簱鐩爣鍌ㄤ綅
+ var row = int.Parse(oldAddress.Substring(0, 2));
+ var lie = int.Parse(oldAddress.Substring(2, 2));
+ var ceng = int.Parse(oldAddress.Substring(4, 2));
+
+ var sqlString = $@"select LocatNo,[Row],[Column],Layer, (ABS(Row-{row}) + ABS([Column]-{lie}) + ABS(Layer-{ceng})) as distNum from SysStorageLocat where Flag = '0' and Status = '0' and Depth = '02' and RoadwayNo = '{roadWay}' and AreaNo in ('{category.AreaNo}') order by distNum;";
+
+ var addressModels = Db.Ado.SqlQuery<AddressCls>(sqlString).ToList();
+ if (addressModels.Count > 0) // 鍒ゆ柇鍚屽贩閬撳唴鎺掔┖搴撲綅
+ {
+ var listLocaete = new List<string>();
+ foreach (var item in addressModels)
+ {
+ // 鐩爣鍐呭簱浣嶅搴旂殑澶栧簱浣�
+ string addressee = item.LocatNo.Substring(0, 6) + "01";
+
+ // 鍒ゆ柇鐩爣搴撲綅鐨勫搴撲綅鏄惁瀛樺湪璐х墿 (姝e父鎯呭喌涓嬫鍦ㄧЩ鍏ユ儏鍐典笉瀛樺湪锛屽洜涓虹Щ搴撳厛绉诲叆閲岄潰锛屽悗绉诲叆澶栭潰)
+ //SlotStatus 0: 绌哄偍浣� 1锛氭湁璐� 2锛氭鍦ㄥ叆搴� 3锛氭鍦ㄥ嚭搴� 4锛氭鍦ㄧЩ鍏� 5锛氭鍦ㄧЩ鍑�
+ sqlString = $"select count(*) from SysStorageLocat where LocatNo = '{addressee}' and Status = '0' and Flag in ('0','1') ; ";
+ var rowNum = Db.Ado.SqlQuery<int>(sqlString).First();
+ if (rowNum == 0)
+ {
+ continue;
+ }
+ else
+ {
+ nowAddress = item.LocatNo;
+ break;
+ }
+ }
+ }
+ if (nowAddress == "")
+ {
+ // 鍒ゆ柇鍚屽贩閬撳鎺掔┖搴撲綅
+ sqlString = $@"select LocatNo,[Row],[Column],Layer, (ABS(Row-{row}) + ABS([Column]-{lie}) + ABS(Layer-{ceng})) as distNum
+ from SysStorageLocat
+ where Flag = '0' and Status = '0' and Depth = '01' and RoadwayNo = '{roadWay}' and AreaNo in '{category}'
+ order by distNum;";
+ var adderModeling = Db.Ado.SqlQuery<AddressCls>(sqlString).ToList();
+ if (adderModeling.Count > 0)
+ {
+ nowAddress = adderModeling[0].LocatNo;
+ }
+ else
+ {
+ // 搴撳唴涓嶅瓨鍦ㄧ┖鍌ㄤ綅
+ nowAddress = "";
+ }
+ }
+
+
+ return nowAddress;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎷嗗灈鎵樼洏鎷嗗灈淇℃伅
+ /// </summary>
+ /// <param name="model">鎷嗗灈鎵樼洏鍙峰拰WCS浠诲姟鍙�</param>
+ /// <returns>鎷嗗灈鎵樼洏淇℃伅</returns>
+ public RequestBoxInfoCheck BoxInfoCheckWcs (BoxInfoCheck model)
+ {
+ try
+ {
+ // 鍒ゆ柇褰撳墠浠诲姟鐘舵�� Status 1:姝e湪鎵ц 3:寮傚父缁撴潫
+ var taskModel = Db.Queryable<LogTask>().First(m => m.TaskNo == model.TaskNo && m.IsDel == "0" );
+ if (taskModel == null)
+ {
+ throw new Exception("姝や换鍔′笉瀛樺湪鎴栦换鍔$姸鎬佸凡鍙樻洿!");
+ }
+ // 楠岃瘉鎵樼洏鍒嗛厤淇℃伅
+ var palletBindModel = Db.Queryable<BllExportAllot>().First(m => m.PalletNo == model.PalletNo && m.TaskNo == model.TaskNo && m.IsDel == "0" && m.Status == "2");
+ if (palletBindModel == null)
+ {
+ throw new Exception("鏈壘鍒板綋鍓嶆墭鐩樺垎閰嶄换鍔′俊鎭�!");
+ }
+ //璁$畻褰撳墠褰撳墠鎵樼洏涓婄鏁板拰鎷嗗灈绠辨暟
+ var storcklist = Db.Queryable<DataStockDetail>().First(m => m.PalletNo == palletBindModel.PalletNo && m.SkuNo == palletBindModel.SkuNo && m.LotNo == palletBindModel.LotNo);
+
+ string level = "1";
+ int qty = 0, qtycount = 0;
+ var packlist = Db.Queryable<SysPackag>().First(m => m.PackagNo == palletBindModel.SkuNo && m.IsDel == "0");
+ if (packlist.L2Name == "绠�")
+ {
+ level = "2";
+ }
+ switch (level)
+ {
+ case "1":
+ qty = (int)(palletBindModel.Qty / packlist.L1Num);
+ qtycount = (int)(storcklist.Qty / packlist.L1Num);
+ break;
+ case "2":
+ qty = (int)(palletBindModel.Qty / packlist.L2Num);
+ qtycount = (int)(storcklist.Qty / packlist.L2Num);
+ break;
+
+ }
+
+ var list = new RequestBoxInfoCheck
+ {
+ PalletNo = model.PalletNo,
+ TaskNo = model.TaskNo,
+ SkuNo = palletBindModel.SkuNo,
+ SkuName = palletBindModel.SkuName,
+ LotNo = palletBindModel.LotNo,
+ OrderNo = palletBindModel.SONo,
+ Standard = palletBindModel.Standard,
+ Qty = qty,//鎷嗗灈绠辨暟
+ QtyCount = qtycount //鎵樼洏涓婄鏁�
+ };
+ return list;
+ }
+ catch (Exception e)
+ {
+
+ throw new Exception(e.Message);
+ }
+ }
+
+ /// <summary>
+ /// 鎷嗗灈鍒嗘嫞涓绘壂绠辩爜鍑哄簱
+ /// </summary>
+ /// <param name="model">绠卞彿</param>
+ /// <returns>鍑哄簱鍒嗘嫞鍙�</returns>
+ public string BoxInfoExportWcs(string boxno)
+ {
+ try
+ {
+ if (string.IsNullOrWhiteSpace(boxno))
+ {
+ throw new Exception("涓绘壂鍒嗘嫞绠辩爜涓虹┖");
+ }
+ //绠辩爜鎵�鍦ㄦ媶鍨涙嫞璐т俊鎭�
+ var boxModel = Db.Queryable<DataBoxInfo>().First(m=>m.BoxNo == boxno);
+ if (boxModel == null)
+ {
+ throw new Exception("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅");
+ }
+ //鍑哄簱鍒嗛厤淇℃伅
+ var allot = Db.Queryable<BllExportAllot>().First(m =>
+ m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.PalletNo == boxModel.PalletNo);
+ if (allot == null)
+ {
+ throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
+ }
+ //鍑哄簱鍗�
+ var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == allot.SONo);
+ if (notice == null)
+ {
+ throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
+ }
+ //鍑哄簱鍗曟槑缁�
+ var noticeDetail = Db.Queryable<BllExportNoticeDetail>()
+ .First(m => m.IsDel == "0" && m.Id == allot.SODetailNo);
+ if (noticeDetail == null)
+ {
+ throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
+ }
+
+ //鍓╀綑鎷h揣鏁伴噺锛堝緟鎷e噺鍘诲凡鎷o級
+ var needQty = allot.Qty - allot.CompleteQty;
+
+ //搴撳瓨鏄庣粏
+ var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.Id == allot.StockId);
+ if (stockDetail == null)
+ {
+ throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�");
+ }
+ //搴撳瓨鎬昏〃
+ var stock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
+ if (stock == null)
+ {
+ throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
+ }
+
+ List<DataBoxInfo> boxInfos;
+ var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxno && m.StockDetailId == stockDetail.Id);
+ if (boxInfo.Count() == 0)
+ {
+ throw new Exception("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
+ }
+ boxInfos = boxInfo.ToList();
+
+ var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == boxModel.PalletNo).ToList();
+ if (boxInfo.Count() == 0)
+ {
+ throw new Exception("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅");
+ }
+ if (boxInfo.Any(m => m.PalletNo != boxModel.PalletNo))
+ {
+ throw new Exception("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
+ }
+ var boxQty = boxInfo.GroupBy(m => m.BoxNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToList();
+ if (boxQty[0] > needQty)
+ {
+ throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
+ }
+ decimal pickQty = 0;//鎷h揣鐨勬暟閲�
+ Db.BeginTran();
+ var comList = new List<BllCompleteDetail>();
+ foreach (var item in boxInfos)
+ {
+ //娣诲姞鎷h揣鏄庣粏
+ var completeDetail = new BllCompleteDetail()
+ {
+ SONo = allot.SONo,
+ SODetailNo = allot.SODetailNo,
+ ExportAllotId = allot.Id,
+ StockId = allot.StockId,
+ BoxNo = item.BoxNo,
+ BoxNo2 = item.BoxNo2,
+ BoxNo3 = item.BoxNo3,
+
+ LotNo = allot.LotNo,
+ LotText = allot.LotText,
+ SupplierLot = allot.SupplierLot,
+ SkuNo = allot.SkuNo,
+ SkuName = allot.SkuName,
+ Standard = allot.Standard,
+ PalletNo = boxModel.PalletNo,
+ CompleteQty = item.Qty,
+
+ };
+ comList.Add(completeDetail);
+
+
+ pickQty += item.Qty;
+ //鍒犻櫎搴撳瓨绠辩爜鏄庣粏
+ Db.Deleteable(item).ExecuteCommand();
+ }
+
+ Db.Insertable(comList).ExecuteCommand();
+ //淇敼鍑哄簱鍒嗛厤淇℃伅
+ allot.CompleteQty += pickQty;
+ allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
+ allot.UpdateTime = DateTime.Now;
+ if (allot.Status == "5")
+ {
+ //鍒ゆ柇璇ユ墭鐩樻槸鍚﹁繕瀛樺湪鐗╂枡 瀛樺湪鏀逛负寰呭洖搴� 寰呭洖搴撳畬鎴愬悗鏀逛负宸插畬鎴�
+ }
+ Db.Updateable(allot).ExecuteCommand();
+
+ //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁�
+ stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
+ stockDetail.Qty -= pickQty;
+ stockDetail.LockQty -= pickQty;
+ if (stockDetail.Qty == stockDetail.LockQty)
+ {
+ stockDetail.Status = "2";
+ }
+ else if (stockDetail.Qty > stockDetail.LockQty && stockDetail.LockQty > 0)
+ {
+ stockDetail.Status = "1";
+ }
+ else
+ {
+ stockDetail.Status = "0";
+ }
+
+ if (stockDetail.Qty <= 0)
+ {
+ Db.Deleteable(stockDetail).ExecuteCommand();
+ }
+ else
+ {
+ Db.Updateable(stockDetail).ExecuteCommand();
+ }
+ stock.Qty -= pickQty;
+ stock.LockQty -= pickQty;
+ if (stock.Qty <= 0)
+ {
+ Db.Deleteable(stock).ExecuteCommand();
+ }
+ else
+ {
+ Db.Updateable(stock).ExecuteCommand();
+ }
+ var num2 = Db.Queryable<DataStockDetail>().Count(m => m.IsDel == "0" && m.PalletNo == boxModel.PalletNo);
+ if (num2 <= 0)
+ {
+ //鏀瑰彉鎵樼洏鐘舵��
+ var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == boxModel.PalletNo && m.IsDel == "0");
+ if (pallet == null)
+ {
+ throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
+ }
+ pallet.Status = "0";
+ Db.Updateable(pallet).ExecuteCommand();
+ }
+ //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
+ noticeDetail.CompleteQty += pickQty;
+ noticeDetail.Status = "2";
+ Db.Updateable(noticeDetail).ExecuteCommand();
+
+ var num = Db.Queryable<BllExportNoticeDetail>()
+ .Count(m => m.IsDel == "0" && m.SONo == allot.SONo && m.CompleteQty < m.Qty);
+ if (num <= 0)
+ {
+ notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
+
+ noticeDetail.Status = "3";
+ Db.Updateable(noticeDetail).ExecuteCommand();
+ }
+ //淇敼鍑哄簱鍗曚俊鎭�
+ Db.Updateable(notice).ExecuteCommand();
+ Db.CommitTran();
+ return allot.LoadingAddre;
+ }
+ catch (Exception e)
+ {
+ Db.RollbackTran();
+ throw new Exception(e.Message);
+ }
+ }
}
}
--
Gitblit v1.8.0