From d07f25c163706ac46a83bd2c63db1e3c52715222 Mon Sep 17 00:00:00 2001
From: zhaowc <526854230@qq.com>
Date: 星期四, 27 三月 2025 15:54:25 +0800
Subject: [PATCH] 解决问题
---
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 747 +++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 619 insertions(+), 128 deletions(-)
diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index e02d6f0..802e285 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
{
@@ -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)
@@ -127,8 +133,9 @@
}
if (qty > d.Qty - q1)
{
- q1 += d.Qty - q1;
dic.Add(stocks.First().Id, d.Qty - q1);
+
+ q1 += d.Qty - q1;
}
else
{
@@ -149,10 +156,11 @@
}
var q2 = demo.Qty - demo.LockQty - demo.FrozenQty;
- if (q2 > d.Qty - q1)
+ if (q2 >= d.Qty - q1)
{
- q1 += d.Qty - q1;
dic.Add(demo.Id, d.Qty - q1);
+
+ q1 += d.Qty - q1;
}
else
{
@@ -161,7 +169,7 @@
}
}
- if (d.Qty >= q1)
+ if (d.Qty > q1)
{
stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
if (stocks.Count == 0)
@@ -169,10 +177,11 @@
throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}搴撳瓨鏁伴噺涓嶈冻");
}
var q2 = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty;
- if (q2 > d.Qty - q1)
+ if (q2 >= d.Qty - q1)
{
- q1 += d.Qty - q1;
dic.Add(stocks.First().Id, d.Qty - q1);
+
+ q1 += d.Qty - q1;
}
else
{
@@ -227,8 +236,9 @@
Type = model.SoType,
Status = "0",
Origin = model.Origin,
- CustomerNo = model.Customer,
- CustomerName = customer.CustomerName,
+ OrderCode = model.OrderNo,
+ //CustomerNo = model.Customer,
+ //CustomerName = customer.CustomerName,
LogisticsId = logisticsId,
IsWave = "0",
WaveNo = "",
@@ -262,10 +272,22 @@
}
//鍥炰紶鍑哄簱鍗�
- public bool FinishSo(int id, string url, int userId)
+ public bool FinishSo(int id, string url, string userNo, string pwd, int userId)
{
try
{
+ 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)
{
@@ -280,7 +302,7 @@
{
throw new Exception("鏈煡璇㈠埌鍗曟嵁鏄庣粏淇℃伅");
}
- if (userId == notice.UpdateUser)
+ if (date.Id == notice.UpdateUser)
{
throw new Exception("澶嶆牳澶辫触锛屽鏍镐汉鍛樺拰鍏抽棴璁㈠崟浜哄憳涓嶈兘鐩稿悓锛�");
}
@@ -297,7 +319,7 @@
}
var soInfo = new SoInfo()
{
- OrderCode = notice.OrderCode,
+ OrderNo = notice.OrderCode,
SoDetails = list
};
#region 閫氳繃鎺ュ彛鍙戦�佽嚦erp
@@ -315,10 +337,10 @@
notice.Status = "6";
notice.CheckTime = DateTime.Now;
- notice.CheckUser = userId;
+ 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)
@@ -433,7 +455,7 @@
inspectStatus = "0";
break;
case "4"://涓嶅悎鏍煎搧鍑哄簱
- skuType = "(0,1,2,3)";
+ skuType = "(0,1,2,3,4)";
inspectStatus = "2";
break;
case "5"://涓棿鍝佸嚭搴�
@@ -441,8 +463,8 @@
inspectStatus = "0,1";
break;
case "6"://浠e偍鍑哄簱
- skuType = "(0,1,2,3)";
- inspectStatus = "0,1";
+ skuType = "(0,1,2,3,4)";
+ inspectStatus = "0,1,2";
break;
case "8"://瀵勫瓨鍑哄簱
skuType = "(0,1,2,3)";
@@ -475,7 +497,7 @@
.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 == "2", m=> string.IsNullOrWhiteSpace(m.OwnerNo))
+ .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"))
@@ -579,7 +601,7 @@
//娣诲姞鍑哄簱鍗�
foreach (var d in model.Detail)
{
- if (d.Qty < 1)
+ if (d.Qty <=0)
{
throw new Exception("鍑哄簱鏁伴噺蹇呴』澶т簬0");
}
@@ -1231,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();
@@ -1254,64 +1276,66 @@
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揣鏁伴噺涓嶇锛岃鏍稿疄");
+ }
+ }
+
+ //鏇存敼搴撳瓨鏄庣粏閿佸畾鏁伴噺
+ 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);
@@ -1682,8 +1706,8 @@
{
throw new Exception($"鏈壘鍒皗soNo}鍑哄簱鍗曚俊鎭�");
}
- //鎵�鏈夎鍑哄簱鐨勫嚭搴撳垎閰嶄俊鎭�(鏈笅鍙戠殑淇℃伅鍜屽緟鎷h揣鐨勪俊鎭�)
- var list = Db.Queryable<BllExportAllot>().Where(a => a.IsDel == "0" && a.SONo == soNo && a.Status == "0").ToList();
+ //鎵�鏈夎鍑哄簱鐨勫嚭搴撳垎閰嶄俊鎭�(鏈笅鍙戠殑淇℃伅鍜屽緟鎷h揣鐨勪俊鎭拰閮ㄥ垎鎷h揣鍚庡洖娴佸叆搴撶殑鎵樼洏)
+ var list = Db.Queryable<BllExportAllot>().Where(a => a.IsDel == "0" && a.SONo == soNo && (a.Status == "0" || a.Status == "3")).ToList();
if (list.Count == 0) //鍒ゆ柇鏄惁鏈夐渶瑕佷笅鍙戠殑鍑哄簱娴佹按
{
throw new Exception("褰撳墠鍑哄簱鍗曟嵁鏃犻渶瑕佷笅鍙戠殑鎵樼洏");
@@ -1733,7 +1757,7 @@
if (isChai == "0")
{
var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == item.PalletNo && w.BitBoxMark == "1").ToList();
- if (boxInfo != null)//鎵樼洏涓婃湁闆剁闇�瑕佹媶绠�
+ if (boxInfo.Count>0)//鎵樼洏涓婃湁闆剁闇�瑕佹媶绠�
{
isChai = "1";
unstackingMode2 = "1";//闇�瑕佹媶绠遍渶璧癙DA鎷嗗灈
@@ -1742,7 +1766,7 @@
if (unstackingMode2 == "0")//鏈哄櫒浜烘媶鍨�
{
- toLocation = loadingAddre;//瑁呰溅鍙�
+ toLocation = "009";//鏈哄櫒浜烘媶鍨涚粺涓�鍙戦�佸埌009宸ヤ綅锛岀敱PLC鑷姩鍒嗛厤鎷嗗灈浣�
}
else //PDA鎷嗗灈
{
@@ -2216,16 +2240,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")
{
@@ -2341,7 +2373,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)
{
@@ -2360,7 +2392,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 == 3 && 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 == "B01"|| m.AreaNo == "B02"||m.AreaNo == "B04") && 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();
}
@@ -2381,7 +2557,7 @@
/// </summary>
/// <param name="taskNo">浠诲姟鍙�</param>
/// <param name="userId">鎿嶄綔浜�</param>
- /// <exception cref="Exception"></exception>
+ /// <exception cref="Exception"></exception>
public void RelocationSuccess(string taskNo, int userId)
{
try
@@ -2492,8 +2668,9 @@
StartLocate = locateNo, // 璧峰浣嶇疆
StartRoadway = locate.RoadwayNo,
EndLocate = task.EndLocat, // 鐩爣浣嶇疆
+ EndRoadway = task.EndRoadway,
TaskNo = task.TaskNo, // 浠诲姟鍙�
- TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+ TaskType = task.Type,// 浠诲姟绫诲瀷 (鍑哄簱)
OutMode = "", //鐩爣鍦板潃
Order = 1
}; //鍑哄簱鏁版嵁
@@ -2747,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();
// 搴撳瓨鏄庣粏琛� 鐘舵�佷慨鏀逛负寮傚父閿佸畾 閿佸畾鏁伴噺淇敼涓烘墭鐩樹笂鏁伴噺
@@ -2761,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揣鏄庣粏琛� 鍒犻櫎
@@ -3217,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)
@@ -3284,29 +3506,36 @@
{
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);
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();
@@ -3315,7 +3544,7 @@
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>();
decimal outQtys = 0;
@@ -3352,7 +3581,7 @@
IsBelt = stock.IsBelt,
Qty = st.Qty,
CompleteQty = 0,
- Status = "0",
+ Status = notice.Status == "4"? "2":"0",
LogisticsId = notice.LogisticsId,
IsAdvance = "0",
OutMode = "",//鍑哄簱鍙�
@@ -3371,11 +3600,12 @@
//搴撳瓨鏄庣粏
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;
@@ -3401,7 +3631,7 @@
foreach (var item in detailList)
{
totalQty += item.Qty;
- totalAllotQty += Convert.ToInt32(item.AllotQty);
+ totalAllotQty += Convert.ToDecimal(item.AllotQty);
}
if (totalAllotQty >= totalQty)
@@ -3475,7 +3705,7 @@
}
}
var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == item.PalletNo && w.BitBoxMark == "1").ToList();
- if (boxInfo != null)//鎵樼洏涓婃湁闆剁闇�瑕佹媶绠�
+ if (boxInfo.Count>0)//鎵樼洏涓婃湁闆剁闇�瑕佹媶绠�
{
result = "1";//闇�瑕佹媶绠�
break;
@@ -3557,5 +3787,266 @@
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