From 1293aeec722e06dc11b657455941abbc1c274090 Mon Sep 17 00:00:00 2001
From: zhaowc <526854230@qq.com>
Date: 星期日, 16 二月 2025 11:23:46 +0800
Subject: [PATCH] 修改与小车接口
---
Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs | 2703 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 2,489 insertions(+), 214 deletions(-)
diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
index 43a9406..52a0b07 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -18,6 +18,8 @@
using WMS.BLL.LogServer;
using WMS.DAL;
using WMS.Entity.LogEntity;
+using Model.ModelDto.SysDto;
+using Model.ModelDto.BllSoDto;
namespace WMS.BLL.BllPdaServer
{
@@ -66,6 +68,11 @@
if (string.IsNullOrWhiteSpace(palletNo))//鍒ゆ柇鎵樼洏鏄惁涓虹┖
{
throw new Exception("鎵樼洏鐮佷负绌猴紝璇疯緭鍏ユ墭鐩樼爜");
+ }
+ var palletInfo = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo);
+ if (!string.IsNullOrEmpty(palletInfo.WareHouseNo) && type != "1")
+ {
+ throw new Exception("璇ユ墭鐩樿繕鏈嚭搴�");
}
if (type == "1")//骞冲簱鍑哄簱鑾峰彇鍗曟嵁
{
@@ -242,7 +249,19 @@
{
foreach (var demo in list)
{
- var com = comInfo.FirstOrDefault(m => m.IsDel == "0" && m.BoxNo3 == demo.BoxNo);
+ //if (!string.IsNullOrWhiteSpace(boxNo3))
+ //{
+ // var com = comInfo.FirstOrDefault(m => m.IsDel == "0" && m.BoxNo3 == demo.BoxNo);
+ //}
+ //else if (!string.IsNullOrWhiteSpace(boxNo))
+ //{
+ // if (expr)
+ // {
+
+ // }
+
+ //}
+ var com = comInfo.FirstOrDefault(m => m.IsDel == "0" && m.BoxNo3 != null && m.BoxNo3 == demo.BoxNo);
if (com != null)
{
demo.PickedQty = com.CompleteQty;
@@ -296,24 +315,30 @@
{
throw new Exception($"{palletNo}鎵樼洏涓婂瓨鍦ㄧ鐮佷俊鎭紝鏃犳硶鍦ㄦ暟閲忔嫞璐ц繘琛屾搷浣滐紒");
}
- //鍑哄簱鍗曟槑缁�
- var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(a => a.Id == int.Parse(soDetailId) && a.IsDel == "0");
- if (noticeDetail == null)
+
+ BllExportAllot allot = null;
+ if (!string.IsNullOrWhiteSpace(soDetailId))
{
- throw new Exception($"鏈煡璇㈠埌瀵瑰簲鍑哄簱鍗曟槑缁嗕俊鎭紝璇锋牳瀹烇紒");
+ //鍑哄簱鍗曟槑缁�
+ var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(a => a.Id == int.Parse(soDetailId) && a.IsDel == "0");
+ if (noticeDetail == null)
+ {
+ throw new Exception($"鏈煡璇㈠埌瀵瑰簲鍑哄簱鍗曟槑缁嗕俊鎭紝璇锋牳瀹烇紒");
+ }
+ //鍑哄簱鍗曟�诲崟
+ var notice = Db.Queryable<BllExportNotice>().First(a => a.IsDel == "0" && a.SONo == noticeDetail.SONo);
+ if (notice == null)
+ {
+ throw new Exception($"鏈煡璇㈠埌瀵瑰簲鍑哄簱鍗曟�诲崟淇℃伅锛岃鏍稿疄锛�");
+ }
+ //鍒嗛厤淇℃伅
+ allot = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.SONo == notice.SONo && a.SODetailNo == noticeDetail.Id && a.PalletNo == palletNo && (a.Status == "2" || a.Status == "3"));
+ if (allot == null)
+ {
+ throw new Exception($"鏈煡璇㈠埌瀵瑰簲鍒嗛厤淇℃伅锛岃鏍稿疄锛�");
+ }
}
- //鍑哄簱鍗曟�诲崟
- var notice = Db.Queryable<BllExportNotice>().First(a => a.IsDel == "0" && a.SONo == noticeDetail.SONo);
- if (notice == null)
- {
- throw new Exception($"鏈煡璇㈠埌瀵瑰簲鍑哄簱鍗曟�诲崟淇℃伅锛岃鏍稿疄锛�");
- }
- //鍒嗛厤淇℃伅
- var allot = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.SONo == notice.SONo && a.SODetailNo == noticeDetail.Id && a.PalletNo == palletNo && (a.Status == "2" || a.Status == "3"));
- if (allot == null)
- {
- throw new Exception($"鏈煡璇㈠埌瀵瑰簲鍒嗛厤淇℃伅锛岃鏍稿疄锛�");
- }
+
//搴撳瓨鏄庣粏
var detail = Db.Queryable<DataStockDetail>().First(a => a.IsDel == "0" && a.PalletNo == palletNo);
if (detail == null)
@@ -329,8 +354,8 @@
{
SkuNo = detail.SkuNo,
BoxNo = detail.SkuNo,
- Qty = (int)allot.Qty,
- PickedQty = (int)allot.CompleteQty,
+ Qty = allot == null ? (int)(detail.Qty - detail.LockQty) : (int)allot.Qty,
+ PickedQty = allot == null ? 0 : (int)allot.CompleteQty,
};
pdaInfo.Add(info);
@@ -363,7 +388,7 @@
{
throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�");
}
- if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)
+ if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty1) && decimal.Parse(pickQty1) > 0)
{
throw new Exception("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�");
}
@@ -374,9 +399,21 @@
{
throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
}
- if (notice.Status != "3")
+ var type1 = new List<string>() { "0", "4" }; //鎷h揣涓嶅彲澶氬嚭 鎴愬搧鍑哄簱銆佷笉鍚堟牸鍝佸嚭搴�
+ var type2 = new List<string>() { "1", "2", "3", "5", "6", "7", "8" };//鎷h揣鍙鍑� 棰嗘枡鍑哄簱銆佹娊妫�鍑哄簱銆佺墿鏂欏彇鏍峰嚭搴撱�佷腑闂村搧鍑哄簱銆佷唬鍌ㄥ嚭搴撱�佸叾浠栧嚭搴撱�佸瘎瀛樺嚭搴�
+ if (type1.Contains(notice.Type))
{
- throw new Exception("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
+ if (notice.Status != "3")
+ {
+ throw new Exception("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
+ }
+ }
+ if (type2.Contains(notice.Type))
+ {
+ if (notice.Status != "3" && notice.Status != "4")
+ {
+ throw new Exception("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛屾垨鎵ц瀹屾垚锛屼笉鑳芥嫞璐�");
+ }
}
//鍑哄簱鍗曟槑缁�
var noticeDetail = Db.Queryable<BllExportNoticeDetail>()
@@ -424,12 +461,12 @@
{
throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
}
- var pickQty = 0;//鎷h揣鐨勬暟閲�
+ decimal pickQty = 0;//鎷h揣鐨勬暟閲�
var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToList();
var comList = new List<BllCompleteDetail>();
foreach (var item in boxInfos)
{
- if (comDetailList.Any(m => m.BoxNo3 == item.BoxNo3))
+ if (comDetailList.Any(m => m.BoxNo3 == item.BoxNo3) && item.BoxNo3 != null)
{
throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
}
@@ -495,6 +532,7 @@
Db.Updateable(pallet).ExecuteCommand();
//淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
noticeDetail.CompleteQty += pickQty;
+ noticeDetail.Status = "2";
Db.Updateable(noticeDetail).ExecuteCommand();
var num = Db.Queryable<BllExportNoticeDetail>()
@@ -502,7 +540,10 @@
if (num <= 0)
{
notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
+ noticeDetail.Status = "3";
+ Db.Updateable(noticeDetail).ExecuteCommand();
}
+
//淇敼鍑哄簱鍗曚俊鎭�
Db.Updateable(notice).ExecuteCommand();
}
@@ -510,7 +551,7 @@
{
var biaoShi = "0";//0锛氭暣绠辨嫞璐с��1锛氭暎鏀嫞璐с��2锛氭暟閲忔嫞璐�
List<DataBoxInfo> boxInfos;
- var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo);
+ var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo && m.StockDetailId == stockDetail.Id);
if (boxInfo.Count() == 0)
{
throw new Exception("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
@@ -551,18 +592,18 @@
biaoShi = "1";
}
- else if (!string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)//鏁伴噺鎷h揣
+ else if (!string.IsNullOrEmpty(pickQty1) && decimal.Parse(pickQty1) > 0)//鏁伴噺鎷h揣
{
if (boxInfo.Count() > 1)
{
throw new Exception("璇ョ鐮佸唴瀛樺湪鏀爜涓嶈兘杩涜鏁伴噺鎷h揣");
}
- int boxQty = boxInfo.First().Qty;
- if (Convert.ToInt32(pickQty1) > boxQty)
+ decimal boxQty = boxInfo.First().Qty;
+ if (Convert.ToDecimal(pickQty1) > boxQty)
{
throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
}
- if (Convert.ToInt32(pickQty1) > needQty)
+ if (Convert.ToDecimal(pickQty1) > needQty)
{
throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
}
@@ -593,8 +634,8 @@
}
}
}
- var pickQty = 0;//鎷h揣鐨勬暟閲�
-
+ decimal pickQty = 0;//鎷h揣鐨勬暟閲�
+
var comList = new List<BllCompleteDetail>();
foreach (var item in boxInfos)
{
@@ -616,7 +657,7 @@
SkuName = allot.SkuName,
Standard = allot.Standard,
PalletNo = palletNo,
- CompleteQty = biaoShi == "2" ? int.Parse(pickQty1) : item.Qty,
+ CompleteQty = biaoShi == "2" ? decimal.Parse(pickQty1) : item.Qty,
CreateUser = userId
};
@@ -624,24 +665,28 @@
if (biaoShi != "2")
{
+ pickQty += item.Qty;
//鍒犻櫎搴撳瓨绠辩爜鏄庣粏
- Db.Deleteable(item).ExecuteCommand();
+ Db.Deleteable(item).ExecuteCommand();
}
else//鏁伴噺鎷h揣
{
- if (int.Parse(pickQty1) == item.Qty)
+ if (decimal.Parse(pickQty1) == item.Qty)
{
+ pickQty += item.Qty;
//鍒犻櫎搴撳瓨绠辩爜鏄庣粏
Db.Deleteable(item).ExecuteCommand();
+
}
else
{
- item.Qty -= int.Parse(pickQty1);
+ pickQty += decimal.Parse(pickQty1);
+ item.Qty -= decimal.Parse(pickQty1);
item.BitBoxMark = "1";//闆剁鏍囪瘑
Db.Updateable(item).ExecuteCommand();
}
}
- pickQty += item.Qty;
+
}
//鏀瑰彉搴撳唴绠辩爜鏄惁闆剁淇℃伅
if (biaoShi == "1")
@@ -714,6 +759,7 @@
}
//淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
noticeDetail.CompleteQty += pickQty;
+ noticeDetail.Status = "2";
Db.Updateable(noticeDetail).ExecuteCommand();
var num = Db.Queryable<BllExportNoticeDetail>()
@@ -721,6 +767,9 @@
if (num <= 0)
{
notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
+
+ noticeDetail.Status = "3";
+ Db.Updateable(noticeDetail).ExecuteCommand();
}
//淇敼鍑哄簱鍗曚俊鎭�
Db.Updateable(notice).ExecuteCommand();
@@ -784,7 +833,7 @@
}
//鍓╀綑鎷h揣鏁伴噺锛堝緟鎷e噺鍘诲凡鎷o級
var needQty = allot.Qty - allot.CompleteQty;
- if (int.Parse(PickQty) > needQty)
+ if (decimal.Parse(PickQty) > needQty)
{
throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鎵樺唴鍓╀綑寰呮嫞鏁伴噺");
}
@@ -814,6 +863,7 @@
var comList = new List<BllCompleteDetail>();
//鍒ゆ柇鏄惁瀛樺湪鎷h揣鏄庣粏
+ isComplete = 0;// 鎵�鏈夋棤绠辩爜鎴栦竴绾х鐮佹嫞璐ф椂锛屾嫞璐ф槑缁嗗簲閲嶆柊鎻掑叆鏁版嵁(浣撶幇澶氭鎷h揣娴佺▼璁板綍)
if (isComplete == 0)
{
//娣诲姞鎷h揣鏄庣粏
@@ -846,17 +896,15 @@
}
else if (isComplete == 1)
{
- complete.CompleteQty += int.Parse(PickQty);
+ complete.CompleteQty += decimal.Parse(PickQty);
complete.UpdateUser = userId;
complete.UpdateTime = Db.GetDate();
Db.Updateable(complete).ExecuteCommand();
}
-
-
//淇敼鍑哄簱鍒嗛厤淇℃伅
- allot.CompleteQty += int.Parse(PickQty);
+ allot.CompleteQty += decimal.Parse(PickQty);
allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
allot.UpdateTime = DateTime.Now;
Db.Updateable(allot).ExecuteCommand();
@@ -865,8 +913,8 @@
//鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁�
stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
- stockDetail.Qty -= int.Parse(PickQty);
- stockDetail.LockQty -= int.Parse(PickQty);
+ stockDetail.Qty -= decimal.Parse(PickQty);
+ stockDetail.LockQty -= decimal.Parse(PickQty);
if (stockDetail.Qty == stockDetail.LockQty)
{
stockDetail.Status = "2";
@@ -889,8 +937,8 @@
Db.Updateable(stockDetail).ExecuteCommand();
}
//鍒犻櫎鎴栦慨鏀瑰簱瀛�
- stock.Qty -= int.Parse(PickQty);
- stock.LockQty -= int.Parse(PickQty);
+ stock.Qty -= decimal.Parse(PickQty);
+ stock.LockQty -= decimal.Parse(PickQty);
if (stock.Qty <= 0)
{
Db.Deleteable(stock).ExecuteCommand();
@@ -913,9 +961,10 @@
pallet.Status = "0";
Db.Updateable(pallet).ExecuteCommand();
}
-
+
//淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
noticeDetail.CompleteQty += int.Parse(PickQty);
+ noticeDetail.Status = "2";
Db.Updateable(noticeDetail).ExecuteCommand();
var num = Db.Queryable<BllExportNoticeDetail>()
@@ -923,6 +972,8 @@
if (num <= 0)
{
notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
+ noticeDetail.Status = "3";
+ Db.Updateable(noticeDetail).ExecuteCommand();
}
//淇敼鍑哄簱鍗曚俊鎭�
Db.Updateable(notice).ExecuteCommand();
@@ -951,7 +1002,9 @@
try
{
string strMsg = "";
- var outDtoList = new List<OutCommandDto>(); //鍑哄簱鏁版嵁鐨勯泦鍚�
+ var outDto1 = new List<OutCommandDto>(); //鍏堝嚭搴撴暟鎹殑闆嗗悎锛堟繁搴︿负1鐨勫偍浣嶏級
+ var outDto2 = new List<OutCommandDto>(); //鍚庡嚭搴撴暟鎹殑闆嗗悎锛堟繁搴︿负2鐨勫偍浣嶏級
+ var moveDto = new List<OutCommandDto>(); //瑕佺Щ搴撴暟鎹殑闆嗗悎
//鑾峰彇褰撳墠鏃堕棿
DateTime serverTime = Db.GetDate();
//鑾峰彇搴撳瓨鏄庣粏鏄惁灏忎簬绛変簬璇ュ灈鏁�
@@ -975,132 +1028,656 @@
return strMsg;
}
- int i = 0;
-
+ var com = new Common();
Db.BeginTran();
//閬嶅巻搴撳瓨淇℃伅
foreach (var s in stockDetail)
{
+ //if (outDto1.Contains(m=>m.PalletNo == s.PalletNo) >0)
+ //{
+ // continue;
+ //}
//鑾峰彇鍌ㄤ綅淇℃伅
var locat = Db.Queryable<SysStorageLocat>().First(l => l.LocatNo == s.LocatNo && l.IsDel == "0" && l.WareHouseNo == "W01");
-
- if (locat != null)
+ if(locat == null)
{
- if (locat.Status != "1")
- {
- continue;
- }
- //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
- locat.Status = "3"; //3 鍑哄簱涓�
- locat.UpdateTime = serverTime; //淇敼鏃堕棿
- locat.UpdateUser = userId; //淇敼浜�
- //淇敼鍌ㄤ綅淇℃伅
- Db.Updateable(locat).ExecuteCommand();
+ continue;
}
-
- //澧炲姞搴撳瓨閿佸畾鏁伴噺
- //stock.AllotQty +=
- stock.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
- stock.UpdateTime = serverTime; //淇敼鏃堕棿
- stock.UpdateUser = userId; //淇敼浜�
- //淇敼搴撳瓨鎬昏〃淇℃伅
- Db.Updateable(stock).ExecuteCommand();
-
- //澧炲姞搴撳瓨鏄庣粏閿佸畾鏁伴噺
- //s.AllotQty +=
- s.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
- s.UpdateTime = serverTime; //淇敼鏃堕棿
- s.UpdateUser = userId; //淇敼浜�
- s.Status = "2"; //2 宸插垎閰�
- //淇敼搴撳瓨鏄庣粏淇℃伅
- Db.Updateable(s).ExecuteCommand();
-
- #region 鍒嗛厤
-
- //娣诲姞鍒嗛厤琛ㄤ俊鎭�
- var allot = new BllExportAllot
+
+ ////鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+ //locat.Status = "3"; //3 鍑哄簱涓�
+ //locat.UpdateTime = serverTime; //淇敼鏃堕棿
+ //locat.UpdateUser = userId; //淇敼浜�
+ ////淇敼鍌ㄤ綅淇℃伅
+ //Db.Updateable(locat).ExecuteCommand();
+
+ if (locat.Status == "1")
{
- SONo = "",
- WaveNo = "",
- SODetailNo = 0,
- StockId = s.Id,
- LotNo = "",
- LotText = "",
- SupplierLot = "",
- SkuNo = s.SkuNo,
- SkuName = s.SkuName,
- Standard = s.Standard,
- PalletNo = s.PalletNo,
- IsBale = "0", //鏄惁瑁瑰寘
- IsBelt = "0", //鏄惁鎵撳甫
+ if (locat.Depth == "01") //娣卞害涓�1
+ {
+ #region 鏀瑰彉搴撳瓨
- //BoxexQty = s.Qty,
- Qty = (int)s.Qty,
- CompleteQty = 0,
- Status = "1",
- LogisticsId = 0,
- IsAdvance = "0",
- OutMode = model.OutMode,//鍑哄簱鍙�
+ //澧炲姞搴撳瓨閿佸畾鏁伴噺
+ stock.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+ stock.UpdateTime = serverTime; //淇敼鏃堕棿
+ stock.UpdateUser = userId; //淇敼浜�
+ Db.Updateable(stock).ExecuteCommand();//淇敼搴撳瓨鎬昏〃淇℃伅
- CreateUser = userId,
- CreateTime = DateTime.Now
- };
- Db.Insertable(allot).ExecuteCommand();
+ //澧炲姞搴撳瓨鏄庣粏閿佸畾鏁伴噺
+ s.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+ s.UpdateTime = serverTime; //淇敼鏃堕棿
+ s.UpdateUser = userId; //淇敼浜�
+ s.Status = "2"; //2 宸插垎閰�
+ Db.Updateable(s).ExecuteCommand();//淇敼搴撳瓨鏄庣粏淇℃伅
- #endregion
+ #endregion
- #region 娣诲姞鍑哄簱浠诲姟淇℃伅
+ #region 鍒嗛厤
- var taskNo = new Common().GetMaxNo("TK");
- var exTask = new LogTask //鍑哄簱浠诲姟
+ //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+ var allot = new BllExportAllot
+ {
+ SONo = "",
+ WaveNo = "",
+ SODetailNo = 0,
+ StockId = s.Id,
+ LotNo = "",
+ LotText = "",
+ SupplierLot = "",
+ SkuNo = s.SkuNo,
+ SkuName = s.SkuName,
+ Standard = s.Standard,
+ PalletNo = s.PalletNo,
+ IsBale = "0", //鏄惁瑁瑰寘
+ IsBelt = "0", //鏄惁鎵撳甫
+
+ //BoxexQty = s.Qty,
+ Qty = (int)s.Qty,
+ CompleteQty = 0,
+ Status = "1",
+ LogisticsId = 0,
+ IsAdvance = "0",
+ OutMode = model.OutMode,//鍑哄簱鍙�
+
+ CreateUser = userId,
+ CreateTime = DateTime.Now
+ };
+ Db.Insertable(allot).ExecuteCommand();
+
+ #endregion
+
+ #region 娣诲姞鍑哄簱浠诲姟淇℃伅
+
+ var taskNo = new Common().GetMaxNo("TK");
+ var exTask = new LogTask //鍑哄簱浠诲姟
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "PDA",
+ IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = locat == null ? "" : s.LocatNo,//璧峰浣嶇疆
+ EndLocat = model.OutMode,//鐩爣浣嶇疆
+ PalletNo = s.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ CreateTime = serverTime, //鍒涘缓鏃堕棿
+ CreateUser = userId, //鍒涘缓浜�
+ Msg = "Pda绌烘墭浠�" + locat == null ? "" : s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+ //FinishDate = serverTime, //瀹屾垚鏃堕棿
+ };
+ outDto1.Add(new OutCommandDto()
+ {
+ PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+ StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+ StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+ EndLocate = model.OutMode, // 鐩爣浣嶇疆
+ TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+ TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+ OutMode = model.OutMode, //鐩爣鍦板潃
+ Order = 1
+ });
+ Db.Insertable(exTask).ExecuteCommand();
+
+ #endregion
+
+ #region 鍌ㄤ綅鐘舵�佸彉鏇�
+ //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+ locat.Status = "3"; //3 鍑哄簱涓�
+ Db.Updateable(locat).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+ #endregion
+ }
+ else if (locat.Depth == "02") //娣卞害涓�2
+ {
+ //鑾峰彇鍑哄簱娣卞害涓�2鍌ㄤ綅鍓嶉潰鐨勫偍浣嶄俊鎭�
+ var sql2 = $@"select * from SysStorageLocat where WareHouseNo = '{locat.WareHouseNo}' and row = {locat.Row} and [Column] = {locat.Column} and Layer = {locat.Layer} and Depth = '01'; ";
+ var slotBefore = Db.Ado.SqlQuery<SysStorageLocat>(sql2).First();
+ if (slotBefore == null)
+ {
+ #region 鏀瑰彉搴撳瓨
+
+ //澧炲姞搴撳瓨閿佸畾鏁伴噺
+ stock.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+ stock.UpdateTime = serverTime; //淇敼鏃堕棿
+ stock.UpdateUser = userId; //淇敼浜�
+ Db.Updateable(stock).ExecuteCommand();//淇敼搴撳瓨鎬昏〃淇℃伅
+
+ //澧炲姞搴撳瓨鏄庣粏閿佸畾鏁伴噺
+ s.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+ s.UpdateTime = serverTime; //淇敼鏃堕棿
+ s.UpdateUser = userId; //淇敼浜�
+ s.Status = "2"; //2 宸插垎閰�
+ Db.Updateable(s).ExecuteCommand();//淇敼搴撳瓨鏄庣粏淇℃伅
+
+ #endregion
+
+ #region 鍒嗛厤
+
+ //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+ var allot = new BllExportAllot
+ {
+ SONo = "",
+ WaveNo = "",
+ SODetailNo = 0,
+ StockId = s.Id,
+ LotNo = "",
+ LotText = "",
+ SupplierLot = "",
+ SkuNo = s.SkuNo,
+ SkuName = s.SkuName,
+ Standard = s.Standard,
+ PalletNo = s.PalletNo,
+ IsBale = "0", //鏄惁瑁瑰寘
+ IsBelt = "0", //鏄惁鎵撳甫
+
+ //BoxexQty = s.Qty,
+ Qty = (int)s.Qty,
+ CompleteQty = 0,
+ Status = "1",
+ LogisticsId = 0,
+ IsAdvance = "0",
+ OutMode = model.OutMode,//鍑哄簱鍙�
+
+ CreateUser = userId,
+ CreateTime = DateTime.Now
+ };
+ Db.Insertable(allot).ExecuteCommand();
+
+ #endregion
+
+ #region 娣诲姞鍑哄簱浠诲姟淇℃伅
+
+ var taskNo = new Common().GetMaxNo("TK");
+ var exTask = new LogTask //鍑哄簱浠诲姟
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "PDA",
+ IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = locat == null ? "" : s.LocatNo,//璧峰浣嶇疆
+ EndLocat = model.OutMode,//鐩爣浣嶇疆
+ PalletNo = s.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ CreateTime = serverTime, //鍒涘缓鏃堕棿
+ CreateUser = userId, //鍒涘缓浜�
+ Msg = "Pda绌烘墭浠�" + locat == null ? "" : s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+ //FinishDate = serverTime, //瀹屾垚鏃堕棿
+ };
+ outDto1.Add(new OutCommandDto()
+ {
+ PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+ StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+ StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+ EndLocate = model.OutMode, // 鐩爣浣嶇疆
+ TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+ TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+ OutMode = model.OutMode, //鐩爣鍦板潃
+ Order = 1
+ });
+ Db.Insertable(exTask).ExecuteCommand();
+
+ #endregion
+
+ #region 鍌ㄤ綅鐘舵�佸彉鏇�
+ //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+ locat.Status = "3"; //3 鍑哄簱涓�
+ Db.Updateable(locat).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+ #endregion
+ }
+ else
+ {
+ //鍒ゆ柇鍌ㄤ綅鐘舵��
+ if (slotBefore.Status == "0")
+ {
+ #region 鏀瑰彉搴撳瓨
+
+ //澧炲姞搴撳瓨閿佸畾鏁伴噺
+ stock.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+ stock.UpdateTime = serverTime; //淇敼鏃堕棿
+ stock.UpdateUser = userId; //淇敼浜�
+ Db.Updateable(stock).ExecuteCommand();//淇敼搴撳瓨鎬昏〃淇℃伅
+
+ //澧炲姞搴撳瓨鏄庣粏閿佸畾鏁伴噺
+ s.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+ s.UpdateTime = serverTime; //淇敼鏃堕棿
+ s.UpdateUser = userId; //淇敼浜�
+ s.Status = "2"; //2 宸插垎閰�
+ Db.Updateable(s).ExecuteCommand();//淇敼搴撳瓨鏄庣粏淇℃伅
+
+ #endregion
+
+ #region 鍒嗛厤
+
+ //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+ var allot = new BllExportAllot
+ {
+ SONo = "",
+ WaveNo = "",
+ SODetailNo = 0,
+ StockId = s.Id,
+ LotNo = "",
+ LotText = "",
+ SupplierLot = "",
+ SkuNo = s.SkuNo,
+ SkuName = s.SkuName,
+ Standard = s.Standard,
+ PalletNo = s.PalletNo,
+ IsBale = "0", //鏄惁瑁瑰寘
+ IsBelt = "0", //鏄惁鎵撳甫
+
+ //BoxexQty = s.Qty,
+ Qty = (int)s.Qty,
+ CompleteQty = 0,
+ Status = "1",
+ LogisticsId = 0,
+ IsAdvance = "0",
+ OutMode = model.OutMode,//鍑哄簱鍙�
+
+ CreateUser = userId,
+ CreateTime = DateTime.Now
+ };
+ Db.Insertable(allot).ExecuteCommand();
+
+ #endregion
+
+ #region 娣诲姞鍑哄簱浠诲姟淇℃伅
+
+ var taskNo = new Common().GetMaxNo("TK");
+ var exTask = new LogTask //鍑哄簱浠诲姟
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "PDA",
+ IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = locat == null ? "" : s.LocatNo,//璧峰浣嶇疆
+ EndLocat = model.OutMode,//鐩爣浣嶇疆
+ PalletNo = s.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ CreateTime = serverTime, //鍒涘缓鏃堕棿
+ CreateUser = userId, //鍒涘缓浜�
+ Msg = "Pda绌烘墭浠�" + locat == null ? "" : s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+ //FinishDate = serverTime, //瀹屾垚鏃堕棿
+ };
+ outDto1.Add(new OutCommandDto()
+ {
+ PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+ StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+ StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+ EndLocate = model.OutMode, // 鐩爣浣嶇疆
+ TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+ TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+ OutMode = model.OutMode, //鐩爣鍦板潃
+ Order = 1
+ });
+ Db.Insertable(exTask).ExecuteCommand();
+
+ #endregion
+
+ #region 鍌ㄤ綅鐘舵�佸彉鏇�
+ //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+ locat.Status = "3"; //3 鍑哄簱涓�
+ Db.Updateable(locat).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+ #endregion
+ }
+ else if(slotBefore.Status == "1")
+ {
+ //鍒ゆ柇鎵樼洏涓婄墿鏂�
+ var pallSku = Db.Queryable<DataStockDetail>().First(m=>m.SkuNo == "100099" && m.LocatNo == slotBefore.LocatNo);
+ if (pallSku == null) //绉诲簱
+ {
+ #region 鍒嗛厤
+
+ ////娣诲姞鍒嗛厤琛ㄤ俊鎭�
+ //var allot = new BllExportAllot
+ //{
+ // SONo = "",
+ // WaveNo = "",
+ // SODetailNo = 0,
+ // StockId = s.Id,
+ // LotNo = "",
+ // LotText = "",
+ // SupplierLot = "",
+ // SkuNo = s.SkuNo,
+ // SkuName = s.SkuName,
+ // Standard = s.Standard,
+ // PalletNo = s.PalletNo,
+ // IsBale = "0", //鏄惁瑁瑰寘
+ // IsBelt = "0", //鏄惁鎵撳甫
+
+ // //BoxexQty = s.Qty,
+ // Qty = (int)s.Qty,
+ // CompleteQty = 0,
+ // Status = "1",
+ // LogisticsId = 0,
+ // IsAdvance = "0",
+ // OutMode = model.OutMode,//鍑哄簱鍙�
+
+ // CreateUser = userId,
+ // CreateTime = DateTime.Now
+ //};
+ //Db.Insertable(allot).ExecuteCommand();
+
+ #endregion
+
+ #region 娣诲姞绉诲簱浠诲姟淇℃伅
+ var stkModel = Db.Queryable<DataStockDetail>().First(m => m.LocatNo == slotBefore.LocatNo);
+ string PalletNo = "LN000000"; // 榛樿婕旂ず鎵樼洏
+ string SkuNo = "";
+ if (stkModel != null)
+ {
+ PalletNo = stkModel.PalletNo;
+ SkuNo = stkModel.SkuNo;
+ }
+ //鑾峰彇绉诲簱鐨勫簱浣�
+ var newSlot = MoveAddress(slotBefore.LocatNo, slotBefore.RoadwayNo, SkuNo, slotBefore.AreaNo);
+ if (string.IsNullOrWhiteSpace(newSlot))
+ {
+ continue;
+ }
+ var taskNo = new Common().GetMaxNo("TK");
+ var exTask = new LogTask //鍑哄簱浠诲姟
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "PDA",
+ IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = slotBefore.LocatNo,//璧峰浣嶇疆
+ EndLocat = newSlot,//鐩爣浣嶇疆
+ PalletNo = PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "2",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ CreateTime = serverTime, //鍒涘缓鏃堕棿
+ CreateUser = userId, //鍒涘缓浜�
+ Msg = "Pda绌烘墭浠�" + locat == null ? "" : slotBefore.LocatNo + "鍒�" + newSlot + "鐨勭Щ搴撲换鍔�", //鍏抽敭淇℃伅
+ //FinishDate = serverTime, //瀹屾垚鏃堕棿
+ };
+ moveDto.Add(new OutCommandDto()
+ {
+ PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+ StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+ StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+ EndLocate = exTask.EndLocat, // 鐩爣浣嶇疆
+ TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+ TaskType = "2",// 浠诲姟绫诲瀷 (绉诲簱)
+ OutMode = "", //鐩爣鍦板潃
+ Order = 1
+ });
+ Db.Insertable(exTask).ExecuteCommand();
+
+ #endregion
+
+ #region 鍌ㄤ綅鐘舵�佸彉鏇�
+ //鏇存敼鍌ㄤ綅鐘舵�佷负绉诲嚭涓�
+ slotBefore.Status = "5"; //5 绉诲嚭涓�
+ Db.Updateable(slotBefore).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+ var newSlot2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == newSlot && m.IsDel == "0");
+ if (newSlot2!= null)
+ {
+ newSlot2.Status = "4";//绉诲叆涓�
+ Db.Updateable(newSlot2).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+ }
+ #endregion
+ }
+ else //鍑哄簱
+ {
+ #region 鏀瑰彉搴撳瓨
+
+ //澧炲姞搴撳瓨閿佸畾鏁伴噺
+ stock.LockQty += (int)pallSku.Qty; //閿佸畾鏁伴噺
+ stock.UpdateTime = serverTime; //淇敼鏃堕棿
+ stock.UpdateUser = userId; //淇敼浜�
+ Db.Updateable(stock).ExecuteCommand();//淇敼搴撳瓨鎬昏〃淇℃伅
+
+ //澧炲姞搴撳瓨鏄庣粏閿佸畾鏁伴噺
+ pallSku.LockQty += (int)pallSku.Qty; //閿佸畾鏁伴噺
+ pallSku.UpdateTime = serverTime; //淇敼鏃堕棿
+ pallSku.UpdateUser = userId; //淇敼浜�
+ pallSku.Status = "2"; //2 宸插垎閰�
+ Db.Updateable(pallSku).ExecuteCommand();//淇敼搴撳瓨鏄庣粏淇℃伅
+
+ #endregion
+
+ #region 鍒嗛厤
+
+ //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+ var allot = new BllExportAllot
+ {
+ SONo = "",
+ WaveNo = "",
+ SODetailNo = 0,
+ StockId = pallSku.Id,
+ LotNo = "",
+ LotText = "",
+ SupplierLot = "",
+ SkuNo = pallSku.SkuNo,
+ SkuName = pallSku.SkuName,
+ Standard = pallSku.Standard,
+ PalletNo = pallSku.PalletNo,
+ IsBale = "0", //鏄惁瑁瑰寘
+ IsBelt = "0", //鏄惁鎵撳甫
+
+ //BoxexQty = s.Qty,
+ Qty = (int)pallSku.Qty,
+ CompleteQty = 0,
+ Status = "1",
+ LogisticsId = 0,
+ IsAdvance = "0",
+ OutMode = model.OutMode,//鍑哄簱鍙�
+
+ CreateUser = userId,
+ CreateTime = DateTime.Now
+ };
+ Db.Insertable(allot).ExecuteCommand();
+
+ #endregion
+
+ #region 娣诲姞鍑哄簱浠诲姟淇℃伅
+
+ var taskNo = new Common().GetMaxNo("TK");
+ var exTask = new LogTask //鍑哄簱浠诲姟
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "PDA",
+ IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = locat == null ? "" : pallSku.LocatNo,//璧峰浣嶇疆
+ EndLocat = model.OutMode,//鐩爣浣嶇疆
+ PalletNo = pallSku.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ CreateTime = serverTime, //鍒涘缓鏃堕棿
+ CreateUser = userId, //鍒涘缓浜�
+ Msg = "Pda绌烘墭浠�" + locat == null ? "" : pallSku.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+ //FinishDate = serverTime, //瀹屾垚鏃堕棿
+ };
+ outDto2.Add(new OutCommandDto()
+ {
+ PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+ StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+ StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+ EndLocate = model.OutMode, // 鐩爣浣嶇疆
+ TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+ TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+ OutMode = model.OutMode, //鐩爣鍦板潃
+ Order = 1
+ });
+ Db.Insertable(exTask).ExecuteCommand();
+
+ #endregion
+ #region 鍌ㄤ綅鐘舵�佸彉鏇�
+ //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+ slotBefore.Status = "3"; //3 鍑哄簱涓�
+ Db.Updateable(slotBefore).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+ #endregion
+ }
+ if (int.Parse(model.Num) == outDto1.Count + outDto2.Count)
+ {
+ break;//闇�姹傚灈鏁板凡杈惧埌 鍙互鍑哄簱浜�
+ }
+ else
+ {
+ #region 鏀瑰彉搴撳瓨
+
+ //澧炲姞搴撳瓨閿佸畾鏁伴噺
+ stock.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+ stock.UpdateTime = serverTime; //淇敼鏃堕棿
+ stock.UpdateUser = userId; //淇敼浜�
+ Db.Updateable(stock).ExecuteCommand();//淇敼搴撳瓨鎬昏〃淇℃伅
+
+ //澧炲姞搴撳瓨鏄庣粏閿佸畾鏁伴噺
+ s.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+ s.UpdateTime = serverTime; //淇敼鏃堕棿
+ s.UpdateUser = userId; //淇敼浜�
+ s.Status = "2"; //2 宸插垎閰�
+ Db.Updateable(s).ExecuteCommand();//淇敼搴撳瓨鏄庣粏淇℃伅
+
+ #endregion
+
+ #region 鍒嗛厤
+
+ //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+ var allot = new BllExportAllot
+ {
+ SONo = "",
+ WaveNo = "",
+ SODetailNo = 0,
+ StockId = s.Id,
+ LotNo = "",
+ LotText = "",
+ SupplierLot = "",
+ SkuNo = s.SkuNo,
+ SkuName = s.SkuName,
+ Standard = s.Standard,
+ PalletNo = s.PalletNo,
+ IsBale = "0", //鏄惁瑁瑰寘
+ IsBelt = "0", //鏄惁鎵撳甫
+
+ //BoxexQty = s.Qty,
+ Qty = (int)s.Qty,
+ CompleteQty = 0,
+ Status = "1",
+ LogisticsId = 0,
+ IsAdvance = "0",
+ OutMode = model.OutMode,//鍑哄簱鍙�
+
+ CreateUser = userId,
+ CreateTime = DateTime.Now
+ };
+ Db.Insertable(allot).ExecuteCommand();
+
+ #endregion
+
+ #region 娣诲姞鍑哄簱浠诲姟淇℃伅
+
+ var taskNo = new Common().GetMaxNo("TK");
+ var exTask = new LogTask //鍑哄簱浠诲姟
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "PDA",
+ IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = locat == null ? "" : s.LocatNo,//璧峰浣嶇疆
+ EndLocat = model.OutMode,//鐩爣浣嶇疆
+ PalletNo = s.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ CreateTime = serverTime, //鍒涘缓鏃堕棿
+ CreateUser = userId, //鍒涘缓浜�
+ Msg = "Pda绌烘墭浠�" + locat == null ? "" : s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+ //FinishDate = serverTime, //瀹屾垚鏃堕棿
+ };
+ outDto2.Add(new OutCommandDto()
+ {
+ PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+ StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+ StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+ EndLocate = model.OutMode, // 鐩爣浣嶇疆
+ TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+ TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+ OutMode = model.OutMode, //鐩爣鍦板潃
+ Order = 1
+ });
+ Db.Insertable(exTask).ExecuteCommand();
+
+ #endregion
+ #region 鍌ㄤ綅鐘舵�佸彉鏇�
+
+ //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+ locat.Status = "3"; //3 鍑哄簱涓�
+ Db.Updateable(locat).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+ #endregion
+ }
+ }
+ }
+
+ }
+
+ }
+
+ if (int.Parse(model.Num) == outDto1.Count+ outDto2.Count)
{
- TaskNo = taskNo,
- Sender = "WMS",
- Receiver = "PDA",
- IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
-
- StartLocat = locat == null ? "闆剁搴�" : s.LocatNo,//璧峰浣嶇疆
- EndLocat = model.OutMode,//鐩爣浣嶇疆
- PalletNo = s.PalletNo,//鎵樼洏鐮�
- IsSend = 1,//鏄惁鍙啀娆′笅鍙�
- IsCancel = 1,//鏄惁鍙彇娑�
- IsFinish = 1,//鏄惁鍙畬鎴�
- Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
- Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
- OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
- CreateTime = serverTime, //鍒涘缓鏃堕棿
- CreateUser = userId, //鍒涘缓浜�
- Msg = "Pda绌烘墭浠�" + locat == null ? "闆剁搴�" : s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
- //FinishDate = serverTime, //瀹屾垚鏃堕棿
- };
- outDtoList.Add(new OutCommandDto()
- {
- PalletNo = exTask.PalletNo,//鎵樼洏鍙�
- StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
- StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
- EndLocate = "", // 鐩爣浣嶇疆
- TaskNo = exTask.TaskNo, // 浠诲姟鍙�
- TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
- OutMode = model.OutMode, //鐩爣鍦板潃
- Order = 1
- });
- Db.Insertable(exTask).ExecuteCommand();
-
- #endregion
- i += 1;
- if (i == int.Parse(model.Num))
- {
- //闇�姹傚灈鏁板凡杈惧埌 鍙互鍑哄簱浜�
- break;
+ break;//闇�姹傚灈鏁板凡杈惧埌 鍙互鍑哄簱浜�
}
}
-
- if (outDtoList.Count > 0)
+ outDto1.AddRange(moveDto);
+ outDto1.AddRange(outDto2);
+ 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
@@ -1131,7 +1708,7 @@
}
//娣诲姞鎿嶄綔鏃ュ織璁板綍
- var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "绌烘墭鍑哄簱", i + "", "涓嬪彂", $"鐢≒DA涓嬪彂浜� {i} 涓┖鎵樺灈", userId);
+ var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "绌烘墭鍑哄簱", int.Parse(model.Num) + "", "涓嬪彂", $"鐢≒DA涓嬪彂浜� {int.Parse(model.Num)} 涓┖鎵樺灈", userId);
Db.CommitTran();
return "";
@@ -1143,6 +1720,768 @@
throw new Exception(e.Message);
}
+ }
+
+ /// <summary>
+ /// WCS鐢宠绌烘墭鍑哄簱
+ /// </summary>
+ /// <param name="model"> </param>
+ /// <param name="userId"> </param>
+ /// <param name="url"> </param>
+ /// <returns></returns>
+ /// <exception cref="Exception"></exception>
+ public List<OutCommandDto> IssuePlnOutHouseWcs(OutModePalletVm model, int userId)
+ {
+ try
+ {
+ string strMsg = "";
+ var outDto1 = new List<OutCommandDto>(); //鍏堝嚭搴撴暟鎹殑闆嗗悎锛堟繁搴︿负1鐨勫偍浣嶏級
+ var outDto2 = new List<OutCommandDto>(); //鍚庡嚭搴撴暟鎹殑闆嗗悎锛堟繁搴︿负2鐨勫偍浣嶏級
+ var moveDto = new List<OutCommandDto>(); //瑕佺Щ搴撴暟鎹殑闆嗗悎
+ //鑾峰彇褰撳墠鏃堕棿
+ DateTime serverTime = Db.GetDate();
+ //鑾峰彇搴撳瓨鏄庣粏鏄惁灏忎簬绛変簬璇ュ灈鏁�
+ string str = "select * from DataStockDetail where IsDel = '0' and SkuNo = '100099' and Status = '0' ";
+ var stockDetail = Db.Ado.SqlQuery<DataStockDetail>(str);
+ if (stockDetail.Count > 0)
+ {
+ //鍒ゆ柇鏄惁澶т簬闇�瑕佸灈鏁�
+ if (stockDetail.Count < int.Parse(model.Num))
+ {
+ throw new Exception("闇�瑕佸灈鏁板ぇ浜庡簱瀛樺灈鏁帮紝璇烽噸鏂拌緭鍏�!");
+ }
+ }
+ //鑾峰彇搴撳瓨鎬昏〃淇℃伅
+ var stock = Db.Queryable<DataStock>().First(s => s.IsDel == "0" && s.SkuNo == "100099");
+ //楠岃瘉搴撳瓨鎬昏〃鏄惁涓虹┖
+ if (stock == null)
+ {
+ throw new Exception("搴撳瓨淇℃伅涓嶅瓨鍦紝璇锋牳鏌�!");
+ }
+
+ var com = new Common();
+ Db.BeginTran();
+
+ //閬嶅巻搴撳瓨淇℃伅
+ foreach (var s in stockDetail)
+ {
+ //if (outDto1.Contains(m=>m.PalletNo == s.PalletNo) >0)
+ //{
+ // continue;
+ //}
+ //鑾峰彇鍌ㄤ綅淇℃伅
+ var locat = Db.Queryable<SysStorageLocat>().First(l => l.LocatNo == s.LocatNo && l.IsDel == "0" && l.WareHouseNo == "W01");
+ if (locat == null)
+ {
+ continue;
+ }
+
+ ////鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+ //locat.Status = "3"; // 1 鏈夌墿鍝�
+ //locat.UpdateTime = serverTime; //淇敼鏃堕棿
+ //locat.UpdateUser = userId; //淇敼浜�
+ ////淇敼鍌ㄤ綅淇℃伅
+ //Db.Updateable(locat).ExecuteCommand();
+
+ if (locat.Status == "1")
+ {
+ if (locat.Depth == "01") //娣卞害涓�1
+ {
+ #region 鏀瑰彉搴撳瓨
+
+ //澧炲姞搴撳瓨閿佸畾鏁伴噺
+ stock.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+ stock.UpdateTime = serverTime; //淇敼鏃堕棿
+ stock.UpdateUser = 0; //淇敼浜�
+ Db.Updateable(stock).ExecuteCommand();//淇敼搴撳瓨鎬昏〃淇℃伅
+
+ //澧炲姞搴撳瓨鏄庣粏閿佸畾鏁伴噺
+ s.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+ s.UpdateTime = serverTime; //淇敼鏃堕棿
+ s.UpdateUser = userId; //淇敼浜�
+ s.Status = "2"; //2 宸插垎閰�
+ Db.Updateable(s).ExecuteCommand();//淇敼搴撳瓨鏄庣粏淇℃伅
+
+ #endregion
+
+ #region 鍒嗛厤
+
+ //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+ var allot = new BllExportAllot
+ {
+ SONo = "",
+ WaveNo = "",
+ SODetailNo = 0,
+ StockId = s.Id,
+ LotNo = "",
+ LotText = "",
+ SupplierLot = "",
+ SkuNo = s.SkuNo,
+ SkuName = s.SkuName,
+ Standard = s.Standard,
+ PalletNo = s.PalletNo,
+ IsBale = "0", //鏄惁瑁瑰寘
+ IsBelt = "0", //鏄惁鎵撳甫
+
+ //BoxexQty = s.Qty,
+ Qty = (int)s.Qty,
+ CompleteQty = 0,
+ Status = "1",
+ LogisticsId = 0,
+ IsAdvance = "0",
+ OutMode = model.OutMode,//鍑哄簱鍙�
+
+ CreateUser = userId,
+ CreateTime = DateTime.Now
+ };
+ Db.Insertable(allot).ExecuteCommand();
+
+ #endregion
+
+ #region 娣诲姞鍑哄簱浠诲姟淇℃伅
+
+ var taskNo = new Common().GetMaxNo("TK");
+ var exTask = new LogTask //鍑哄簱浠诲姟
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "WCS",
+ IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = locat == null ? "" : s.LocatNo,//璧峰浣嶇疆
+ EndLocat = model.OutMode,//鐩爣浣嶇疆
+ PalletNo = s.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ CreateTime = serverTime, //鍒涘缓鏃堕棿
+ CreateUser = userId, //鍒涘缓浜�
+ Msg = "WCS绌烘墭浠�" + locat == null ? "" : s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+ //FinishDate = serverTime, //瀹屾垚鏃堕棿
+ };
+ outDto1.Add(new OutCommandDto()
+ {
+ PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+ StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+ StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+ EndLocate = model.OutMode, // 鐩爣浣嶇疆
+ TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+ TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+ OutMode = model.OutMode, //鐩爣鍦板潃
+ Order = 1
+ });
+ Db.Insertable(exTask).ExecuteCommand();
+
+ #endregion
+
+ #region 鍌ㄤ綅鐘舵�佸彉鏇�
+ //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+ locat.Status = "3"; //3 鍑哄簱涓�
+ Db.Updateable(locat).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+ #endregion
+ }
+ else if (locat.Depth == "02") //娣卞害涓�2
+ {
+ //鑾峰彇鍑哄簱娣卞害涓�2鍌ㄤ綅鍓嶉潰鐨勫偍浣嶄俊鎭�
+ var sql2 = $@"select * from SysStorageLocat where WareHouseNo = '{locat.WareHouseNo}' and row = {locat.Row} and [Column] = {locat.Column} and Layer = {locat.Layer} and Depth = '01'; ";
+ var slotBefore = Db.Ado.SqlQuery<SysStorageLocat>(sql2).First();
+ if (slotBefore == null)
+ {
+ #region 鏀瑰彉搴撳瓨
+
+ //澧炲姞搴撳瓨閿佸畾鏁伴噺
+ stock.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+ stock.UpdateTime = serverTime; //淇敼鏃堕棿
+ //stock.UpdateUser = userId; //淇敼浜�
+ Db.Updateable(stock).ExecuteCommand();//淇敼搴撳瓨鎬昏〃淇℃伅
+
+ //澧炲姞搴撳瓨鏄庣粏閿佸畾鏁伴噺
+ s.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+ s.UpdateTime = serverTime; //淇敼鏃堕棿
+ s.UpdateUser = userId; //淇敼浜�
+ s.Status = "2"; //2 宸插垎閰�
+ Db.Updateable(s).ExecuteCommand();//淇敼搴撳瓨鏄庣粏淇℃伅
+
+ #endregion
+
+ #region 鍒嗛厤
+
+ //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+ var allot = new BllExportAllot
+ {
+ SONo = "",
+ WaveNo = "",
+ SODetailNo = 0,
+ StockId = s.Id,
+ LotNo = "",
+ LotText = "",
+ SupplierLot = "",
+ SkuNo = s.SkuNo,
+ SkuName = s.SkuName,
+ Standard = s.Standard,
+ PalletNo = s.PalletNo,
+ IsBale = "0", //鏄惁瑁瑰寘
+ IsBelt = "0", //鏄惁鎵撳甫
+
+ //BoxexQty = s.Qty,
+ Qty = (int)s.Qty,
+ CompleteQty = 0,
+ Status = "1",
+ LogisticsId = 0,
+ IsAdvance = "0",
+ OutMode = model.OutMode,//鍑哄簱鍙�
+
+ CreateUser = userId,
+ CreateTime = DateTime.Now
+ };
+ Db.Insertable(allot).ExecuteCommand();
+
+ #endregion
+
+ #region 娣诲姞鍑哄簱浠诲姟淇℃伅
+
+ var taskNo = new Common().GetMaxNo("TK");
+ var exTask = new LogTask //鍑哄簱浠诲姟
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "WCS",
+ IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = locat == null ? "" : s.LocatNo,//璧峰浣嶇疆
+ EndLocat = model.OutMode,//鐩爣浣嶇疆
+ PalletNo = s.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ CreateTime = serverTime, //鍒涘缓鏃堕棿
+ CreateUser = userId, //鍒涘缓浜�
+ Msg = "WCS绌烘墭浠�" + locat == null ? "" : s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+ //FinishDate = serverTime, //瀹屾垚鏃堕棿
+ };
+ outDto1.Add(new OutCommandDto()
+ {
+ PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+ StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+ StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+ EndLocate = model.OutMode, // 鐩爣浣嶇疆
+ TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+ TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+ OutMode = model.OutMode, //鐩爣鍦板潃
+ Order = 1
+ });
+ Db.Insertable(exTask).ExecuteCommand();
+
+ #endregion
+
+ #region 鍌ㄤ綅鐘舵�佸彉鏇�
+ //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+ locat.Status = "3"; //3 鍑哄簱涓�
+ Db.Updateable(locat).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+ #endregion
+ }
+ else
+ {
+ //鍒ゆ柇鍌ㄤ綅鐘舵��
+ if (slotBefore.Status == "0")
+ {
+ #region 鏀瑰彉搴撳瓨
+
+ //澧炲姞搴撳瓨閿佸畾鏁伴噺
+ stock.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+ stock.UpdateTime = serverTime; //淇敼鏃堕棿
+ //stock.UpdateUser = userId; //淇敼浜�
+ Db.Updateable(stock).ExecuteCommand();//淇敼搴撳瓨鎬昏〃淇℃伅
+
+ //澧炲姞搴撳瓨鏄庣粏閿佸畾鏁伴噺
+ s.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+ s.UpdateTime = serverTime; //淇敼鏃堕棿
+ s.UpdateUser = userId; //淇敼浜�
+ s.Status = "2"; //2 宸插垎閰�
+ Db.Updateable(s).ExecuteCommand();//淇敼搴撳瓨鏄庣粏淇℃伅
+
+ #endregion
+
+ #region 鍒嗛厤
+
+ //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+ var allot = new BllExportAllot
+ {
+ SONo = "",
+ WaveNo = "",
+ SODetailNo = 0,
+ StockId = s.Id,
+ LotNo = "",
+ LotText = "",
+ SupplierLot = "",
+ SkuNo = s.SkuNo,
+ SkuName = s.SkuName,
+ Standard = s.Standard,
+ PalletNo = s.PalletNo,
+ IsBale = "0", //鏄惁瑁瑰寘
+ IsBelt = "0", //鏄惁鎵撳甫
+
+ //BoxexQty = s.Qty,
+ Qty = (int)s.Qty,
+ CompleteQty = 0,
+ Status = "1",
+ LogisticsId = 0,
+ IsAdvance = "0",
+ OutMode = model.OutMode,//鍑哄簱鍙�
+
+ CreateUser = userId,
+ CreateTime = DateTime.Now
+ };
+ Db.Insertable(allot).ExecuteCommand();
+
+ #endregion
+
+ #region 娣诲姞鍑哄簱浠诲姟淇℃伅
+
+ var taskNo = new Common().GetMaxNo("TK");
+ var exTask = new LogTask //鍑哄簱浠诲姟
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "WCS",
+ IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = locat == null ? "" : s.LocatNo,//璧峰浣嶇疆
+ EndLocat = model.OutMode,//鐩爣浣嶇疆
+ PalletNo = s.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ CreateTime = serverTime, //鍒涘缓鏃堕棿
+ CreateUser = userId, //鍒涘缓浜�
+ Msg = "WCS绌烘墭浠�" + locat == null ? "" : s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+ //FinishDate = serverTime, //瀹屾垚鏃堕棿
+ };
+ outDto1.Add(new OutCommandDto()
+ {
+ PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+ StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+ StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+ EndLocate = model.OutMode, // 鐩爣浣嶇疆
+ TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+ TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+ OutMode = model.OutMode, //鐩爣鍦板潃
+ Order = 1
+ });
+ Db.Insertable(exTask).ExecuteCommand();
+
+ #endregion
+
+ #region 鍌ㄤ綅鐘舵�佸彉鏇�
+ //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+ locat.Status = "3"; //3 鍑哄簱涓�
+ Db.Updateable(locat).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+ #endregion
+ }
+ else if (slotBefore.Status == "1")
+ {
+ //鍒ゆ柇鎵樼洏涓婄墿鏂�
+ var pallSku = Db.Queryable<DataStockDetail>().First(m => m.SkuNo == "100099" && m.LocatNo == slotBefore.LocatNo);
+ if (pallSku == null) //绉诲簱
+ {
+ #region 鍒嗛厤
+
+ //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+ var allot = new BllExportAllot
+ {
+ SONo = "",
+ WaveNo = "",
+ SODetailNo = 0,
+ StockId = s.Id,
+ LotNo = "",
+ LotText = "",
+ SupplierLot = "",
+ SkuNo = s.SkuNo,
+ SkuName = s.SkuName,
+ Standard = s.Standard,
+ PalletNo = s.PalletNo,
+ IsBale = "0", //鏄惁瑁瑰寘
+ IsBelt = "0", //鏄惁鎵撳甫
+
+ //BoxexQty = s.Qty,
+ Qty = (int)s.Qty,
+ CompleteQty = 0,
+ Status = "1",
+ LogisticsId = 0,
+ IsAdvance = "0",
+ OutMode = model.OutMode,//鍑哄簱鍙�
+
+ CreateUser = userId,
+ CreateTime = DateTime.Now
+ };
+ Db.Insertable(allot).ExecuteCommand();
+
+ #endregion
+
+ #region 娣诲姞绉诲簱浠诲姟淇℃伅
+ var stkModel = Db.Queryable<DataStockDetail>().First(m=>m.LocatNo == slotBefore.LocatNo);
+ string PalletNo = "LN000000"; // 榛樿婕旂ず鎵樼洏
+ string SkuNo = "";
+ if (stkModel != null)
+ {
+ PalletNo = stkModel.PalletNo;
+ SkuNo= stkModel.SkuNo;
+ }
+ //鑾峰彇绉诲簱鐨勫簱浣�
+ var newSlot = MoveAddress(slotBefore.LocatNo, slotBefore.RoadwayNo, SkuNo, slotBefore.AreaNo);
+
+ var taskNo = new Common().GetMaxNo("TK");
+ var exTask = new LogTask // 绉诲簱浠诲姟
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "WCS",
+ IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = slotBefore.LocatNo,//璧峰浣嶇疆
+ EndLocat = newSlot,//鐩爣浣嶇疆
+ PalletNo = PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "2",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ CreateTime = serverTime, //鍒涘缓鏃堕棿
+ CreateUser = userId, //鍒涘缓浜�
+ Msg = "WCS绌烘墭浠�" + locat == null ? "" : s.LocatNo + "鍒�" + newSlot + "鐨勭Щ搴撲换鍔�", //鍏抽敭淇℃伅
+ //FinishDate = serverTime, //瀹屾垚鏃堕棿
+ };
+ moveDto.Add(new OutCommandDto()
+ {
+ PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+ StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+ StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+ EndLocate = exTask.EndLocat, // 鐩爣浣嶇疆
+ TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+ TaskType = "2",// 浠诲姟绫诲瀷 (鍑哄簱)
+ OutMode = "", //鐩爣鍦板潃
+ Order = 1
+ });
+ Db.Insertable(exTask).ExecuteCommand();
+
+ #endregion
+
+ #region 鍌ㄤ綅鐘舵�佸彉鏇�
+ //鏇存敼鍌ㄤ綅鐘舵�佷负绉诲嚭涓�
+ slotBefore.Status = "5"; //5 绉诲嚭涓�
+ Db.Updateable(slotBefore).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+ #endregion
+ }
+ else //鍑哄簱
+ {
+ #region 鏀瑰彉搴撳瓨
+
+ //澧炲姞搴撳瓨閿佸畾鏁伴噺
+ stock.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+ stock.UpdateTime = serverTime; //淇敼鏃堕棿
+ //stock.UpdateUser = userId; //淇敼浜�
+ Db.Updateable(stock).ExecuteCommand();//淇敼搴撳瓨鎬昏〃淇℃伅
+
+ //澧炲姞搴撳瓨鏄庣粏閿佸畾鏁伴噺
+ s.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+ s.UpdateTime = serverTime; //淇敼鏃堕棿
+ s.UpdateUser = userId; //淇敼浜�
+ s.Status = "2"; //2 宸插垎閰�
+ Db.Updateable(s).ExecuteCommand();//淇敼搴撳瓨鏄庣粏淇℃伅
+
+ #endregion
+
+ #region 鍒嗛厤
+
+ //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+ var allot = new BllExportAllot
+ {
+ SONo = "",
+ WaveNo = "",
+ SODetailNo = 0,
+ StockId = s.Id,
+ LotNo = "",
+ LotText = "",
+ SupplierLot = "",
+ SkuNo = s.SkuNo,
+ SkuName = s.SkuName,
+ Standard = s.Standard,
+ PalletNo = s.PalletNo,
+ IsBale = "0", //鏄惁瑁瑰寘
+ IsBelt = "0", //鏄惁鎵撳甫
+
+ //BoxexQty = s.Qty,
+ Qty = (int)s.Qty,
+ CompleteQty = 0,
+ Status = "1",
+ LogisticsId = 0,
+ IsAdvance = "0",
+ OutMode = model.OutMode,//鍑哄簱鍙�
+
+ CreateUser = userId,
+ CreateTime = DateTime.Now
+ };
+ Db.Insertable(allot).ExecuteCommand();
+
+ #endregion
+
+ #region 娣诲姞鍑哄簱浠诲姟淇℃伅
+
+ var taskNo = new Common().GetMaxNo("TK");
+ var exTask = new LogTask //鍑哄簱浠诲姟
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "WCS",
+ IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = locat == null ? "" : s.LocatNo,//璧峰浣嶇疆
+ EndLocat = model.OutMode,//鐩爣浣嶇疆
+ PalletNo = s.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ CreateTime = serverTime, //鍒涘缓鏃堕棿
+ CreateUser = userId, //鍒涘缓浜�
+ Msg = "WCS绌烘墭浠�" + locat == null ? "" : s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+ //FinishDate = serverTime, //瀹屾垚鏃堕棿
+ };
+ outDto2.Add(new OutCommandDto()
+ {
+ PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+ StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+ StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+ EndLocate = model.OutMode, // 鐩爣浣嶇疆
+ TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+ TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+ OutMode = model.OutMode, //鐩爣鍦板潃
+ Order = 1
+ });
+ Db.Insertable(exTask).ExecuteCommand();
+
+ #endregion
+ #region 鍌ㄤ綅鐘舵�佸彉鏇�
+ //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+ slotBefore.Status = "3"; //3 鍑哄簱涓�
+ Db.Updateable(slotBefore).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+ #endregion
+ }
+ if (int.Parse(model.Num) == outDto1.Count + outDto2.Count)
+ {
+ break;//闇�姹傚灈鏁板凡杈惧埌 鍙互鍑哄簱浜�
+ }
+ else
+ {
+ #region 鏀瑰彉搴撳瓨
+
+ //澧炲姞搴撳瓨閿佸畾鏁伴噺
+ stock.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+ stock.UpdateTime = serverTime; //淇敼鏃堕棿
+ //stock.UpdateUser = userId; //淇敼浜�
+ Db.Updateable(stock).ExecuteCommand();//淇敼搴撳瓨鎬昏〃淇℃伅
+
+ //澧炲姞搴撳瓨鏄庣粏閿佸畾鏁伴噺
+ s.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+ s.UpdateTime = serverTime; //淇敼鏃堕棿
+ s.UpdateUser = userId; //淇敼浜�
+ s.Status = "2"; //2 宸插垎閰�
+ Db.Updateable(s).ExecuteCommand();//淇敼搴撳瓨鏄庣粏淇℃伅
+
+ #endregion
+
+ #region 鍒嗛厤
+
+ //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+ var allot = new BllExportAllot
+ {
+ SONo = "",
+ WaveNo = "",
+ SODetailNo = 0,
+ StockId = s.Id,
+ LotNo = "",
+ LotText = "",
+ SupplierLot = "",
+ SkuNo = s.SkuNo,
+ SkuName = s.SkuName,
+ Standard = s.Standard,
+ PalletNo = s.PalletNo,
+ IsBale = "0", //鏄惁瑁瑰寘
+ IsBelt = "0", //鏄惁鎵撳甫
+
+ //BoxexQty = s.Qty,
+ Qty = (int)s.Qty,
+ CompleteQty = 0,
+ Status = "1",
+ LogisticsId = 0,
+ IsAdvance = "0",
+ OutMode = model.OutMode,//鍑哄簱鍙�
+
+ CreateUser = userId,
+ CreateTime = DateTime.Now
+ };
+ Db.Insertable(allot).ExecuteCommand();
+
+ #endregion
+
+ #region 娣诲姞鍑哄簱浠诲姟淇℃伅
+
+ var taskNo = new Common().GetMaxNo("TK");
+ var exTask = new LogTask //鍑哄簱浠诲姟
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "WCS",
+ IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = locat == null ? "" : s.LocatNo,//璧峰浣嶇疆
+ EndLocat = model.OutMode,//鐩爣浣嶇疆
+ PalletNo = s.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ CreateTime = serverTime, //鍒涘缓鏃堕棿
+ CreateUser = userId, //鍒涘缓浜�
+ Msg = "WCS绌烘墭浠�" + locat == null ? "" : s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+ //FinishDate = serverTime, //瀹屾垚鏃堕棿
+ };
+ outDto2.Add(new OutCommandDto()
+ {
+ PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+ StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+ StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+ EndLocate = model.OutMode, // 鐩爣浣嶇疆
+ TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+ TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+ OutMode = model.OutMode, //鐩爣鍦板潃
+ Order = 1
+ });
+ Db.Insertable(exTask).ExecuteCommand();
+
+ #endregion
+ #region 鍌ㄤ綅鐘舵�佸彉鏇�
+
+ //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+ locat.Status = "3"; //3 鍑哄簱涓�
+ Db.Updateable(locat).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+ #endregion
+ }
+ }
+ }
+ }
+ }
+ if (int.Parse(model.Num) == outDto1.Count + outDto2.Count)
+ {
+ break;//闇�姹傚灈鏁板凡杈惧埌 鍙互鍑哄簱浜�
+ }
+ }
+ outDto1.AddRange(moveDto);
+ outDto1.AddRange(outDto2);
+ if (outDto1.Count <= 0)
+ {
+ throw new Exception("鏆傛棤鍑哄簱浠诲姟锛岃鏍告煡!");
+ }
+
+ //娣诲姞鎿嶄綔鏃ュ織璁板綍
+ var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "绌烘墭鍑哄簱", int.Parse(model.Num) + "", "涓嬪彂", $"WCS涓嬪彂浜� {int.Parse(model.Num)} 涓┖鎵樺灈", userId);
+ Db.CommitTran();
+
+ return outDto1;
+ }
+ catch (Exception e)
+ {
+ Db.RollbackTran();
+ throw new Exception(e.Message);
+ }
+ }
+
+
+ public string MoveAddress(string oldAddress, string roadWay, string skuNo,string areaNo="")//01020201 鎺�-鍒�-灞�-娣卞害
+ {
+ string nowAddress = "";
+
+ var category = new SysMaterialCategory();
+ if (!string.IsNullOrEmpty(skuNo))
+ {
+ //鏍规嵁鐗╂枡缂栫爜鑾峰彇瀵瑰簲鍖哄煙
+ var skuCategoryNo = Db.Queryable<SysMaterials>().Where(a => a.IsDel == "0" && a.SkuNo == skuNo).Select(a => a.CategoryNo).First();
+ category = Db.Queryable<SysMaterialCategory>().First(a => a.IsDel == "0" && a.CategoryNo == skuCategoryNo);
+
+ areaNo = category.AreaNo;
+ }
+ else
+ {
+ //todo 寰呴獙璇�
+ category = Db.Queryable<SysMaterialCategory>().First(a => a.IsDel == "0" && a.AreaNo == areaNo);
+ }
+
+ // 鑾峰彇绉诲簱鐩爣鍌ㄤ綅
+ 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 ('{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;
}
//鑾峰彇骞冲簱鎵樼洏淇℃伅
@@ -1206,7 +2545,21 @@
if (result.WareHouseNo != "W02")//W02锛氶浂绠卞簱
{
- throw new Exception("璇ユ墭鐩樻湭鍦ㄩ浂绠卞簱锛岃妫�鏌�!");
+ throw new Exception("璇ユ墭鐩樻湭鍦ㄥ钩搴撳唴锛岃妫�鏌�!");
+ }
+
+ #endregion
+
+ #region 楠岃瘉鍌ㄤ綅鐘舵�佹槸鍚︽甯�
+
+ var locat = Db.Queryable<SysStorageLocat>().First(a=>a.IsDel == "0" && a.LocatNo == result.LocatNo);
+ if (locat == null)
+ {
+ throw new Exception("鏈幏鍙栧埌瀵瑰簲鍌ㄤ綅淇℃伅锛岃妫�鏌�!");
+ }
+ if (locat.Status != "3")
+ {
+ throw new Exception("褰撳墠鍌ㄤ綅涓嶆槸鍑哄簱涓紝璇锋鏌�!");
}
#endregion
@@ -1262,6 +2615,10 @@
item.AreaNo = "";//鎵�灞炲尯鍩熸洿鏀癸紙鏀逛负绌猴級
Db.Updateable(item).ExecuteCommand();
}
+ //鍙樻洿鍌ㄤ綅鐘舵��
+ locat.Status = "0";//鍌ㄤ綅鏇存敼锛堟敼涓虹┖鍌ㄤ綅锛�
+ Db.Updateable(locat).ExecuteCommand();
+
//鍑哄簱娴佹按锛堟洿鏀圭姸鎬侊級
var allot = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "1" && m.PalletNo == palletNo && m.SONo == soNo).ToList();
@@ -1308,25 +2665,25 @@
{
var type = "";
var detail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNo);
- if (detail== null)
+ if (detail == null)
{
throw new Exception("褰撳墠鎵樼洏鏈湪搴撳瓨涓�");
}
//鎬庝箞鍒ゆ柇褰撳墠鎵樼洏鏄簱澶栬鍙栨牱鐨勬墭鐩橈紝姝e父鍑哄簱鍓╀綑鎵樼洏鐩墠杩欑鎯呭喌涔熻兘鎷h揣鍟婏紝涔熸病鏈夊垎閰嶄俊鎭�
var allot = Db.Queryable<BllExportAllot>().First(m =>
m.IsDel == "0" && m.PalletNo == palletNo && m.Status != "5" && m.Status != "6");
- if (allot!=null)
+ if (allot != null)
{
var soNo = Db.Queryable<BllExportNotice>()
.First(m => m.IsDel == "0" && m.SONo == allot.SONo);
if (soNo == null)
{
throw new Exception("鏈壘鍒版墭鐩樹笂鍑哄簱鍗曟嵁淇℃伅");
- }
+ }
if (soNo.Type != "3")
{
throw new Exception("璇ユ墭鐩樹笉鏄彇鏍锋墭鐩�");
- }
+ }
type = "0";//搴撳唴鍙栨牱
}
else
@@ -1369,7 +2726,7 @@
}
//鍙栨牱鍑哄簱鎷h揣(鏍囩)
- public void SampleSoSetPick(string soType,string soNo, string soDetailId, string palletNo, string boxNo, string boxNo3, string pickQty1, string asnNo, int userId)
+ public void SampleSoSetPick(string soType, string soNo, string soDetailId, string palletNo, string boxNo, string boxNo3, string pickQty1, string asnNo, int userId)
{
Db.BeginTran();
try
@@ -1378,7 +2735,7 @@
{
throw new Exception("鍙栨牱鏍囪瘑涓嶈兘涓虹┖");
}
-
+
//soType: 0搴撳唴鍙栨牱锛屾湁鍑哄簱鍗曞強鍒嗛厤淇℃伅锛� 1搴撳墠鍙栨牱锛屽弽鍚戞坊鍔犲嚭搴撳崟鍙婂垎閰嶄俊鎭�
if (soType == "1")
{
@@ -1388,12 +2745,12 @@
if (string.IsNullOrWhiteSpace(asnNo))
{
throw new Exception("鍏ュ簱鍗曚笉鑳戒负绌�");
- }
+ }
if (string.IsNullOrWhiteSpace(palletNo))
{
throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�");
}
- if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)
+ if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty1) && decimal.Parse(pickQty1) > 0)
{
throw new Exception("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�");
}
@@ -1413,7 +2770,7 @@
throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑搴撳瓨鏄庣粏淇℃伅锛�");
}
- var sku = Db.Queryable<SysMaterials>().First(m=>m.IsDel == "0" && m.SkuNo == stockDetail.SkuNo);
+ var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == stockDetail.SkuNo);
if (sku == null)
{
throw new Exception("鏈煡璇㈠埌褰撳墠鎵樼洏涓婄殑鐗╂枡淇℃伅");
@@ -1428,7 +2785,7 @@
//鍑哄簱鍗�
var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.AsnSampleNo == asnNo);
//鍒涘缓鍑哄簱鍗�
- if (notice == null || notice.Status == "6")
+ if (notice == null || notice.Status == "6")
{
var billNo = "";
var bl = true;
@@ -1440,7 +2797,7 @@
bl = Db.Queryable<BllExportNotice>().Any(m => m.SONo == no);
} while (bl);
-
+
var addNotice = new BllExportNotice()
{
SONo = billNo,
@@ -1452,7 +2809,7 @@
WaveNo = "",
IsDespatch = "0",
CompleteTime = DateTime.Now,
- CreateUser = userId,
+ CreateUser = userId,
};
var n = Db.Insertable(addNotice).ExecuteReturnEntity();
@@ -1486,7 +2843,7 @@
IsIssueLotNo = "0",
Status = "3",
CreateUser = userId,
-
+
};
var m = Db.Insertable(addNoticeDetail).ExecuteReturnEntity();
noticeDetail = m;
@@ -1509,8 +2866,8 @@
SkuName = sku.SkuName,
Standard = sku.Standard,
PalletNo = palletNo,
- IsBale = "0" , //鏄惁瑁瑰寘
- IsBelt = "0" , //鏄惁鎵撳甫
+ IsBale = "0", //鏄惁瑁瑰寘
+ IsBelt = "0", //鏄惁鎵撳甫
Qty = 0,
CompleteQty = 0,
@@ -1527,7 +2884,7 @@
var fp = Db.Insertable(addAllot).ExecuteReturnEntity();
allot2 = fp;
}
-
+
#endregion
@@ -1568,13 +2925,13 @@
}
biaoShi = "1";
}
- else if (!string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)//鏁伴噺鎷h揣
+ else if (!string.IsNullOrEmpty(pickQty1) && decimal.Parse(pickQty1) > 0)//鏁伴噺鎷h揣
{
if (boxInfo.Count() > 1)
{
throw new Exception("璇ョ鐮佸唴瀛樺湪鏀爜涓嶈兘杩涜鏁伴噺鎷h揣");
}
- int boxQty = boxInfo.First().Qty;
+ decimal boxQty = boxInfo.First().Qty;
if (Convert.ToInt32(pickQty1) > boxQty)
{
throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
@@ -1600,8 +2957,8 @@
}
}
}
- var pickQty = 0;//鎷h揣鐨勬暟閲�
-
+ decimal pickQty = 0;//鎷h揣鐨勬暟閲�
+
var comList = new List<BllCompleteDetail>();
foreach (var item in boxInfos)
{
@@ -1627,7 +2984,7 @@
SkuName = allot2.SkuName,
Standard = allot2.Standard,
PalletNo = palletNo,
- CompleteQty = biaoShi == "2" ? int.Parse(pickQty1) : item.Qty,
+ CompleteQty = biaoShi == "2" ? decimal.Parse(pickQty1) : item.Qty,
InspectMark = "1",
CreateUser = userId
@@ -1641,22 +2998,22 @@
}
else//鏁伴噺鎷h揣
{
- if (int.Parse(pickQty1) == item.Qty)
+ if (decimal.Parse(pickQty1) == item.Qty)
{
//鍒犻櫎搴撳瓨绠辩爜鏄庣粏
Db.Deleteable(item).ExecuteCommand();
}
else
{
- item.Qty -= int.Parse(pickQty1);
+ item.Qty -= decimal.Parse(pickQty1);
item.BitBoxMark = "1";//闆剁鏍囪瘑
item.InspectMark = "1";//鎶芥绠辨爣璇�
Db.Updateable(item).ExecuteCommand();
}
}
- pickQty += biaoShi == "2" ? int.Parse(pickQty1) : item.Qty;
+ pickQty += biaoShi == "2" ? decimal.Parse(pickQty1) : item.Qty;
}
-
+
//鏀瑰彉搴撳唴绠辩爜鏄惁闆剁淇℃伅
if (biaoShi == "1")
@@ -1673,13 +3030,13 @@
Db.Insertable(comList).ExecuteCommand();
//淇敼鍑哄簱鍒嗛厤淇℃伅
allot2.Qty += pickQty;
- allot2.CompleteQty += pickQty;
+ allot2.CompleteQty += pickQty;
Db.Updateable(allot2).ExecuteCommand();
//鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁�
stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
stockDetail.Qty -= pickQty;
-
+
if (stockDetail.Qty <= 0)
{
Db.Deleteable(stockDetail).ExecuteCommand();
@@ -1718,7 +3075,7 @@
Db.Updateable(noticeDetail).ExecuteCommand();
}
- else if(soType == "0")
+ else if (soType == "0")
{
#region 鍒ゆ柇
@@ -1734,7 +3091,7 @@
{
throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�");
}
- if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)
+ if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty1) && decimal.Parse(pickQty1) > 0)
{
throw new Exception("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�");
}
@@ -1822,18 +3179,18 @@
}
biaoShi = "1";
}
- else if (!string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)//鏁伴噺鎷h揣
+ else if (!string.IsNullOrEmpty(pickQty1) && decimal.Parse(pickQty1) > 0)//鏁伴噺鎷h揣
{
if (boxInfo.Count() > 1)
{
throw new Exception("璇ョ鐮佸唴瀛樺湪鏀爜涓嶈兘杩涜鏁伴噺鎷h揣");
}
- int boxQty = boxInfo.First().Qty;
- if (Convert.ToInt32(pickQty1) > boxQty)
+ decimal boxQty = boxInfo.First().Qty;
+ if (Convert.ToDecimal(pickQty1) > boxQty)
{
throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
}
- if (Convert.ToInt32(pickQty1) > needQty)
+ if (Convert.ToDecimal(pickQty1) > needQty)
{
throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
}
@@ -1863,8 +3220,8 @@
}
}
}
- var pickQty = 0;//鎷h揣鐨勬暟閲�
-
+ decimal pickQty = 0;//鎷h揣鐨勬暟閲�
+
var comList = new List<BllCompleteDetail>();
foreach (var item in boxInfos)
{
@@ -1890,7 +3247,7 @@
SkuName = allot.SkuName,
Standard = allot.Standard,
PalletNo = palletNo,
- CompleteQty = biaoShi == "2" ? int.Parse(pickQty1) : item.Qty,
+ CompleteQty = biaoShi == "2" ? decimal.Parse(pickQty1) : item.Qty,
CreateUser = userId
};
@@ -1898,24 +3255,27 @@
if (biaoShi != "2")
{
+ pickQty += item.Qty;
//鍒犻櫎搴撳瓨绠辩爜鏄庣粏
Db.Deleteable(item).ExecuteCommand();
}
else//鏁伴噺鎷h揣
{
- if (int.Parse(pickQty1) == item.Qty)
+ if (decimal.Parse(pickQty1) == item.Qty)
{
+ pickQty += item.Qty;
//鍒犻櫎搴撳瓨绠辩爜鏄庣粏
Db.Deleteable(item).ExecuteCommand();
}
else
{
- item.Qty -= int.Parse(pickQty1);
+ pickQty += decimal.Parse(pickQty1);
+ item.Qty -= decimal.Parse(pickQty1);
item.BitBoxMark = "1";//闆剁鏍囪瘑
Db.Updateable(item).ExecuteCommand();
}
}
- pickQty += item.Qty;
+
}
//鏀瑰彉搴撳唴绠辩爜鏄惁闆剁淇℃伅
if (biaoShi == "1")
@@ -2009,6 +3369,7 @@
throw new Exception(e.Message);
}
}
+
//鍙栨牱鍑哄簱鎷h揣(鏃犳爣绛�)
public void SampleSoSetQtyPick(string soType, string soNo, string soDetailId, string palletNo, string PickQty, string asnNo, int userId)
@@ -2193,7 +3554,7 @@
SkuName = allot2.SkuName,
Standard = allot2.Standard,
PalletNo = palletNo,
- CompleteQty = int.Parse(PickQty) ,
+ CompleteQty = decimal.Parse(PickQty),
InspectMark = "1",
CreateUser = userId
@@ -2205,7 +3566,7 @@
}
else if (isComplete == 1)
{
- complete.CompleteQty += int.Parse(PickQty);
+ complete.CompleteQty += decimal.Parse(PickQty);
complete.UpdateUser = userId;
complete.UpdateTime = Db.GetDate();
@@ -2215,8 +3576,8 @@
//淇敼鍑哄簱鍒嗛厤淇℃伅
- allot2.Qty += int.Parse(PickQty);
- allot2.CompleteQty += int.Parse(PickQty);
+ allot2.Qty += decimal.Parse(PickQty);
+ allot2.CompleteQty += decimal.Parse(PickQty);
Db.Updateable(allot2).ExecuteCommand();
int isDel = 0;
@@ -2224,8 +3585,8 @@
//鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁�
stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
stockDetail.InspectMark = "1";//淇敼涓烘娊妫�鎵樻爣璇�
- stockDetail.Qty -= int.Parse(PickQty);
- if (stockDetail.Qty == stockDetail.LockQty&& stockDetail.Qty != 0)
+ stockDetail.Qty -= decimal.Parse(PickQty);
+ if (stockDetail.Qty == stockDetail.LockQty && stockDetail.Qty != 0)
{
stockDetail.Status = "2";
}
@@ -2272,13 +3633,13 @@
}
//淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
- noticeDetail.Qty += int.Parse(PickQty);
- noticeDetail.AllotQty += int.Parse(PickQty);
- noticeDetail.FactQty += int.Parse(PickQty);
- noticeDetail.CompleteQty += int.Parse(PickQty);
+ noticeDetail.Qty += decimal.Parse(PickQty);
+ noticeDetail.AllotQty += decimal.Parse(PickQty);
+ noticeDetail.FactQty += decimal.Parse(PickQty);
+ noticeDetail.CompleteQty += decimal.Parse(PickQty);
noticeDetail.Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * noticeDetail.Qty;
Db.Updateable(noticeDetail).ExecuteCommand();
-
+
}
else if (soType == "0")
{
@@ -2324,7 +3685,7 @@
}
//鍓╀綑鎷h揣鏁伴噺锛堝緟鎷e噺鍘诲凡鎷o級
var needQty = allot.Qty - allot.CompleteQty;
- if (int.Parse(PickQty) > needQty)
+ if (decimal.Parse(PickQty) > needQty)
{
throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鎵樺唴鍓╀綑寰呮嫞鏁伴噺");
}
@@ -2374,7 +3735,7 @@
SkuName = allot.SkuName,
Standard = allot.Standard,
PalletNo = palletNo,
- CompleteQty = int.Parse(PickQty),
+ CompleteQty = decimal.Parse(PickQty),
CreateUser = userId,
CreateTime = Db.GetDate(),
@@ -2386,7 +3747,7 @@
}
else if (isComplete == 1)
{
- complete.CompleteQty += int.Parse(PickQty);
+ complete.CompleteQty += decimal.Parse(PickQty);
complete.UpdateUser = userId;
complete.UpdateTime = Db.GetDate();
@@ -2396,7 +3757,7 @@
//淇敼鍑哄簱鍒嗛厤淇℃伅
- allot.CompleteQty += int.Parse(PickQty);
+ allot.CompleteQty += decimal.Parse(PickQty);
allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
allot.UpdateTime = DateTime.Now;
@@ -2406,8 +3767,8 @@
//鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁�
stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
- stockDetail.Qty -= int.Parse(PickQty);
- stockDetail.LockQty -= int.Parse(PickQty);
+ stockDetail.Qty -= decimal.Parse(PickQty);
+ stockDetail.LockQty -= decimal.Parse(PickQty);
if (stockDetail.Qty == stockDetail.LockQty)
{
stockDetail.Status = "2";
@@ -2430,8 +3791,8 @@
Db.Updateable(stockDetail).ExecuteCommand();
}
//鍒犻櫎鎴栦慨鏀瑰簱瀛�
- stock.Qty -= int.Parse(PickQty);
- stock.LockQty -= int.Parse(PickQty);
+ stock.Qty -= decimal.Parse(PickQty);
+ stock.LockQty -= decimal.Parse(PickQty);
if (stock.Qty <= 0)
{
Db.Deleteable(stock).ExecuteCommand();
@@ -2456,7 +3817,7 @@
}
//淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
- noticeDetail.CompleteQty += int.Parse(PickQty);
+ noticeDetail.CompleteQty += decimal.Parse(PickQty);
Db.Updateable(noticeDetail).ExecuteCommand();
var num = Db.Queryable<BllExportNoticeDetail>()
@@ -2480,5 +3841,919 @@
throw new Exception(e.Message);
}
}
+
+ #region 鎷h揣鎷兼墭
+ /// <summary>
+ /// 鎷兼墭鍑哄簱pda鎷h揣-鏍囩
+ /// </summary>
+ /// <param name="soNo"></param>
+ /// <param name="soDetailId"></param>
+ /// <param name="palletNo"></param>
+ /// <param name="boxNo"></param>
+ /// <param name="boxNo3"></param>
+ /// <param name="pickQty1"></param>
+ /// <param name="palletNoNew"></param>
+ /// <param name="userId"></param>
+ public void SoSetPinPick(string soNo, string soDetailId, string palletNo, string boxNo, string boxNo3, string pickQty1, string palletNoNew, int userId)
+ {
+ Db.BeginTran();
+ try
+ {
+ var nowDate = DateTime.Now;//褰撳墠鏃堕棿
+ #region 鍒ゆ柇
+
+ if (string.IsNullOrWhiteSpace(soNo))
+ {
+ throw new Exception("鍑哄簱鍗曟嵁涓嶈兘涓虹┖");
+ }
+ if (string.IsNullOrWhiteSpace(soDetailId))
+ {
+ throw new Exception("鍑哄簱鐗╂枡-鎵规涓嶈兘涓虹┖");
+ }
+ if (string.IsNullOrWhiteSpace(palletNo))
+ {
+ throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�");
+ }
+ if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty1) && decimal.Parse(pickQty1) > 0)
+ {
+ throw new Exception("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�");
+ }
+ if (string.IsNullOrWhiteSpace(palletNoNew))
+ {
+ throw new Exception("鏂版墭鐩樼爜涓嶈兘涓虹┖");
+ }
+ if (palletNo == palletNoNew)//鍘熸墭鐩樹笌鏂版墭鐩樹竴鑷�
+ {
+ if (!string.IsNullOrEmpty(boxNo))
+ {
+ throw new Exception("鍘熸墭鐩樹笌鏂版墭鐩樹竴鑷达紝璇烽�夋嫨鏁存墭鍑哄簱");
+ }
+ }
+
+ //鍑哄簱鍗�
+ var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == soNo);
+ if (notice == null)
+ {
+ throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
+ }
+ if (notice.Type != "1" && notice.Type != "2" && notice.Type != "3")
+ {
+ if (notice.Status != "3")
+ {
+ throw new Exception("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
+ }
+ }
+
+ //鍑哄簱鍗曟槑缁�
+ var noticeDetail = Db.Queryable<BllExportNoticeDetail>()
+ .First(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
+ if (noticeDetail == null)
+ {
+ throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
+ }
+ //鍑哄簱鍒嗛厤淇℃伅
+ var allot = Db.Queryable<BllExportAllot>().First(m =>
+ m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo &&
+ m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
+ if (allot == 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("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
+ }
+
+ #endregion
+
+ #region 鎷兼墭淇℃伅
+ var sdId = 0;
+ bool isNew = false;
+ var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew);
+ if (pinStockDetail != null)
+ {
+ if (palletNo != palletNoNew)//闈炴暣鎵樻嫞璐�
+ {
+ if (pinStockDetail.SONo != notice.SONo)
+ {
+ throw new Exception("鎷兼墭鎵樼洏涓婂彧鑳芥斁鍚屼竴涓嚭搴撳崟涓嬬殑鐗╂枡锛�");
+ }
+ if (pinStockDetail.SkuName != stockDetail.SkuName || pinStockDetail.LotNo != stockDetail.LotNo)
+ {
+ isNew = true;
+ }
+ }
+ sdId = pinStockDetail.Id;
+ }
+ else
+ {
+ isNew = true;
+
+ var newPalletInfo = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0");
+ if (newPalletInfo == null)
+ {
+ throw new Exception("鏂版墭鐩樹俊鎭笉瀛樺湪鎴栧凡琚娇鐢紒");
+ }
+ //淇敼鏂版墭鐩樼姸鎬�
+ newPalletInfo.Status = "1";
+ Db.Updateable(newPalletInfo).ExecuteCommand();
+ }
+ var sd = new DataStockDetail();
+ if (isNew)
+ {
+ sd.LotNo = stockDetail.LotNo;
+ sd.LotText = stockDetail.LotText;
+ sd.SupplierLot = stockDetail.SupplierLot;
+ sd.SkuNo = stockDetail.SkuNo;
+ sd.SkuName = stockDetail.SkuName;
+ sd.Standard = stockDetail.Standard;
+
+ sd.FrozenQty = 0;
+ sd.InspectQty = 0;
+ sd.ASNNo = "";
+ sd.ASNDetailNo = null;
+ sd.SONo = soNo;//鍑哄簱鍗曞彿
+ sd.WareHouseNo = "";
+ sd.RoadwayNo = "";
+ sd.AreaNo = "";
+ sd.LocatNo = "";
+ sd.PalletNo = palletNoNew;
+ sd.PalletNo2 = "";
+ sd.PalletNo3 = "";
+ //PalletType = item.PalletType,
+ sd.CompleteTime = nowDate;
+ sd.ProductionTime = stockDetail.ProductionTime;
+ sd.ExpirationTime = stockDetail.ExpirationTime;
+ sd.Status = "2";//鐘舵�侊紝宸插垎閰�
+ sd.InspectMark = stockDetail.InspectMark;
+ sd.InspectStatus = stockDetail.InspectStatus;
+ sd.BitPalletMark = "0";
+ sd.PackagNo = noticeDetail.PackagNo;
+ sd.IsBale = stockDetail.IsBale;
+ sd.IsBelt = stockDetail.IsBelt;
+ sd.Demo = stockDetail.Demo;
+ sd.OwnerName = stockDetail.OwnerName;
+ sd.OwnerNo = stockDetail.OwnerNo;
+ sd.SupplierName = stockDetail.SupplierName;
+ sd.SupplierNo = stockDetail.SupplierNo;
+
+ sd.IsDel = "0";
+ sd.CreateUser = userId;
+ sd.CreateTime = nowDate;
+
+ //鏂板鎷兼墭搴撳瓨鏄庣粏淇℃伅
+ sdId = Db.Insertable(sd).ExecuteReturnIdentity();
+ }
+ #endregion
+
+ decimal pickQty = 0;//鎷h揣鐨勬暟閲�
+ if (string.IsNullOrWhiteSpace(boxNo))//鏁存墭鎷h揣
+ {
+ List<DataBoxInfo> boxInfos;
+ var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo);//鎵惧埌鎵樼洏涓婃墍鏈夌鐮�
+ boxInfos = boxInfo.ToList();
+ if (boxInfo.Count() <= 0)
+ {
+ throw new Exception("璇ユ墭鐩樹笂娌℃湁鍙嫞璐х殑绠卞瓙");
+ }
+ var boxQty = boxInfo.GroupBy(m => m.PalletNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToList();
+ if (boxQty[0] > needQty)
+ {
+ throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
+ }
+
+ var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToList();
+ var comList = new List<BllCompleteDetail>();
+ foreach (var item in boxInfos)
+ {
+ if (comDetailList.Any(m => m.BoxNo3 == item.BoxNo3))
+ {
+ throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
+ }
+ if (item.SkuNo != allot.SkuNo || item.LotNo != allot.LotNo)
+ {
+ throw new Exception("褰撳墠鎵樼洏涓婃湁鍏朵粬涓嶅悓鐗╂枡鎵规锛屾嫞璐уけ璐�");
+ }
+ //娣诲姞鎷h揣鏄庣粏
+ var completeDetail = new BllCompleteDetail()
+ {
+ SONo = soNo,
+ SODetailNo = int.Parse(soDetailId),
+ 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 = palletNo,
+ CompleteQty = item.Qty,
+
+ CreateUser = userId
+ };
+ comList.Add(completeDetail);
+
+ if (palletNo != palletNoNew)
+ {
+ item.StockDetailId = sdId;
+ item.BindNo = null;//鎵樼洏缁戝畾鍙�
+ item.PalletNo = palletNoNew;
+ }
+ item.Status = "5";//绠辨敮鐘舵�侊紝0锛氭湭缁勬墭 1锛氬凡缁勬墭 2锛氬凡鍏ュ簱 3锛氬凡鍑哄簱 4:宸插垎閰� 5锛氬凡鎷h揣
+ //淇敼搴撳瓨绠辩爜鏄庣粏
+ Db.Updateable(item).ExecuteCommand();
+
+ pickQty += item.Qty;
+ }
+ //娣诲姞鎷h揣鏄庣粏
+ Db.Insertable(comList).ExecuteCommand();
+ //淇敼鍑哄簱鍒嗛厤淇℃伅
+ allot.CompleteQty += pickQty;
+ allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
+ allot.UpdateTime = DateTime.Now;
+ Db.Updateable(allot).ExecuteCommand();
+
+ if (palletNo != palletNoNew)
+ {
+ //鍒犻櫎鍘熸墭鐩樺簱瀛樻槑缁�
+ Db.Deleteable(stockDetail).ExecuteCommand();
+
+ //鏀瑰彉鍘熸墭鐩樼姸鎬佷负锛氭湭浣跨敤
+ var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0");
+ if (pallet == null)
+ {
+ throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
+ }
+ pallet.Status = "0";
+ Db.Updateable(pallet).ExecuteCommand();
+ }
+ else
+ {
+ stockDetail.SONo = soNo;
+ Db.Updateable(stockDetail).ExecuteCommand();
+ }
+
+ //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
+ noticeDetail.CompleteQty += pickQty;
+ noticeDetail.Status = "2";
+ Db.Updateable(noticeDetail).ExecuteCommand();
+
+ var num = Db.Queryable<BllExportNoticeDetail>()
+ .Count(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
+ if (num <= 0)
+ {
+ notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
+ noticeDetail.Status = "3";
+ Db.Updateable(noticeDetail).ExecuteCommand();
+ }
+ //淇敼鍑哄簱鍗曚俊鎭�
+ Db.Updateable(notice).ExecuteCommand();
+ }
+ else
+ {
+ var biaoShi = "0";//0锛氭暣绠辨嫞璐с��1锛氭暎鏀嫞璐с��2锛氭暟閲忔嫞璐�
+ 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 == palletNo).ToList();
+ if (!string.IsNullOrWhiteSpace(boxNo3)) //鏁f敮鎷h揣
+ {
+ boxInfos = boxInfos.Where(m => m.BoxNo3 == boxNo3).ToList();
+
+ if (boxInfos.Count() == 0)
+ {
+ throw new Exception("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
+ }
+ if (boxInfos.Count() > 1)
+ {
+ throw new Exception("璇ヨ拷婧敮鐮佺殑淇℃伅澶т簬1鏉★紝淇℃伅閿欒锛岃鏍稿疄锛�");
+ }
+
+ if (boxInfos.Any(m => m.PalletNo != palletNo))
+ {
+ throw new Exception("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
+ }
+ var boxQty = boxInfos.First().Qty;
+ if (boxQty > needQty)
+ {
+ throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
+ }
+
+ foreach (var item in boxInfos)
+ {
+ if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3))
+ {
+ throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
+ }
+ }
+
+ biaoShi = "1";
+ }
+ else if (!string.IsNullOrEmpty(pickQty1) && decimal.Parse(pickQty1) > 0)//鏁伴噺鎷h揣
+ {
+ if (boxInfo.Count() > 1)
+ {
+ throw new Exception("璇ョ鐮佸唴瀛樺湪鏀爜涓嶈兘杩涜鏁伴噺鎷h揣");
+ }
+ decimal boxQty = boxInfo.First().Qty;
+ if (decimal.Parse(pickQty1) > boxQty)
+ {
+ throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
+ }
+ if (decimal.Parse(pickQty1) > needQty)
+ {
+ throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
+ }
+
+ biaoShi = "2";
+ }
+ else //鏁寸鎷h揣
+ {
+ if (boxInfo.Count() == 0)
+ {
+ throw new Exception("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅");
+ }
+ if (boxInfo.Any(m => m.PalletNo != 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揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
+ }
+
+ foreach (var item in boxInfos)
+ {
+ if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo == item.BoxNo))
+ {
+ throw new Exception($"褰撳墠{item.BoxNo}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
+ }
+ }
+ }
+
+ var comList = new List<BllCompleteDetail>();
+ foreach (var item in boxInfos)
+ {
+ //娣诲姞鎷h揣鏄庣粏
+ var completeDetail = new BllCompleteDetail()
+ {
+ SONo = soNo,
+ SODetailNo = int.Parse(soDetailId),
+ 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 = palletNo,
+ CompleteQty = biaoShi == "2" ? decimal.Parse(pickQty1) : item.Qty,
+
+ CreateUser = userId
+ };
+ comList.Add(completeDetail);
+
+ if (biaoShi == "0")//鏁寸鎷h揣
+ {
+ //淇敼搴撳瓨绠辩爜鏄庣粏
+ item.StockDetailId = sdId;
+ item.BindNo = null;//鎵樼洏缁戝畾鍙�
+ item.PalletNo = palletNoNew;
+ item.Status = "5";//绠辨敮鐘舵�侊紝0锛氭湭缁勬墭 1锛氬凡缁勬墭 2锛氬凡鍏ュ簱 3锛氬凡鍑哄簱 4:宸插垎閰� 5锛氬凡鎷h揣
+ Db.Updateable(item).ExecuteCommand();
+
+ pickQty += item.Qty;
+ }
+ else if (biaoShi == "1")//鏁f敮鎷h揣
+ {
+ //淇敼搴撳瓨绠辩爜鏄庣粏
+ item.StockDetailId = sdId;
+ item.BindNo = null;//鎵樼洏缁戝畾鍙�
+ item.PalletNo = palletNoNew;
+ item.BoxNo = item.BoxNo3;//灏嗘敮鐮佽祴缁欑鐮�
+ item.BitBoxMark = "1";//闆剁鏍囪
+ item.Status = "5";//绠辨敮鐘舵�侊紝0锛氭湭缁勬墭 1锛氬凡缁勬墭 2锛氬凡鍏ュ簱 3锛氬凡鍑哄簱 4:宸插垎閰� 5锛氬凡鎷h揣
+ Db.Updateable(item).ExecuteCommand();
+
+ pickQty += item.Qty;
+ }
+ else//鏁伴噺鎷h揣
+ {
+ var boxInfo2 = Db.Queryable<DataBoxInfo>().First(m => m.IsDel == "0" && m.BoxNo == boxNo && m.StockDetailId == sdId);
+
+ if (decimal.Parse(pickQty1) == item.Qty)
+ {
+ //淇敼搴撳瓨绠辩爜鏄庣粏
+ item.StockDetailId = sdId;
+ item.BindNo = null;//鎵樼洏缁戝畾鍙�
+ item.PalletNo = palletNoNew;
+ item.Status = "5";//绠辨敮鐘舵�侊紝0锛氭湭缁勬墭 1锛氬凡缁勬墭 2锛氬凡鍏ュ簱 3锛氬凡鍑哄簱 4:宸插垎閰� 5锛氬凡鎷h揣
+ Db.Updateable(item).ExecuteCommand();
+ }
+ else
+ {
+ if (boxInfo2 == null)
+ {
+ var dataBoxInfo = new DataBoxInfo()
+ {
+ StockDetailId = sdId,
+ BindNo = item.BindNo,
+ BoxNo = item.BoxNo,
+ BoxNo2 = item.BoxNo2,
+ BoxNo3 = item.BoxNo3,
+ PalletNo = item.PalletNo,
+ PalletNo2 = item.PalletNo2,
+ PalletNo3 = item.PalletNo3,
+ Qty = decimal.Parse(pickQty1),
+ FullQty = item.FullQty,
+ Status = "5",
+ LotNo = item.LotNo,
+ LotText = item.LotText,
+ SkuNo = item.SkuNo,
+ SkuName = item.SkuName,
+ Standard = item.Standard,
+ ProductionTime = item.ProductionTime,
+ SupplierLot = item.SupplierLot,
+ InspectMark = item.InspectMark,
+ BitBoxMark = "1",
+ InspectStatus = item.InspectStatus,
+ InspectTime = item.InspectTime,
+ };
+
+ Db.Insertable(dataBoxInfo).ExecuteCommand();
+ }
+ else
+ {
+ boxInfo2.Qty += decimal.Parse(pickQty1);
+ item.BitBoxMark = boxInfo2.Qty>= boxInfo2.FullQty? "0":"1" ;//闆剁鏍囪瘑
+ Db.Updateable(boxInfo2).ExecuteCommand();
+ }
+ item.Qty -= decimal.Parse(pickQty1);
+ item.BitBoxMark = "1";//闆剁鏍囪瘑
+ if (item.Qty<=0)
+ {
+ Db.Deleteable(item).ExecuteCommand();
+ }
+ else
+ {
+ Db.Updateable(item).ExecuteCommand();
+ }
+
+ }
+
+ pickQty += decimal.Parse(pickQty1);
+ }
+ }
+ //鏀瑰彉搴撳唴绠辩爜鏄惁闆剁淇℃伅
+ if (biaoShi == "1")
+ {
+ var boxSurplusList = boxInfo.Where(m => m.BoxNo3 != boxNo3).ToList();
+ foreach (var item in boxSurplusList)
+ {
+ item.BitBoxMark = "1";
+ Db.Updateable(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();
+ }
+ var num2 = Db.Queryable<DataStockDetail>().Count(m => m.IsDel == "0" && m.PalletNo == palletNo);
+ if (num2 <= 0)
+ {
+ //鏀瑰彉鎵樼洏鐘舵��
+ var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == 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 == soNo && m.CompleteQty < m.Qty);
+ if (num <= 0)
+ {
+ notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
+ noticeDetail.Status = "3";
+ Db.Updateable(noticeDetail).ExecuteCommand();
+ }
+
+ //淇敼鍑哄簱鍗曚俊鎭�
+ Db.Updateable(notice).ExecuteCommand();
+ }
+
+ if (isNew)
+ {
+ var sd2 = Db.Queryable<DataStockDetail>().First(m=>m.Id == sdId);
+ sd2.Qty = pickQty;
+ sd2.LockQty = pickQty;
+
+ Db.Updateable(sd2).ExecuteCommand();
+ }
+ else
+ {
+ if (palletNo != palletNoNew)
+ {
+ //淇敼鎷兼墭鎵樼洏搴撳瓨鏄庣粏
+ pinStockDetail.Qty += pickQty;
+ pinStockDetail.LockQty += pickQty;
+ Db.Updateable(pinStockDetail).ExecuteCommand();
+ }
+ }
+
+ //娣诲姞鎿嶄綔鏃ュ織璁板綍
+ var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鎷h揣鎷兼墭", soNo, "鎷h揣", $"鍦≒DA涓婂鍑哄簱鍗曞彿涓猴細{soNo}鐨勫師鎵樼洏鐮佷负锛歿palletNo}锛屾柊鎵樼洏鐮佷负锛歿palletNoNew}鐨勬嫞璐ф嫾鎵樻搷浣�", userId);
+ Db.CommitTran();
+ }
+ catch (Exception e)
+ {
+ Db.RollbackTran();
+ throw new Exception(e.Message);
+ }
+ }
+ /// <summary>
+ /// 鎷兼墭鍑哄簱pda鎷h揣-鏁伴噺
+ /// </summary>
+ /// <param name="soNo"></param>
+ /// <param name="soDetailId"></param>
+ /// <param name="palletNo"></param>
+ /// <param name="PickQty"></param>
+ /// <param name="palletNoNew"></param>
+ /// <param name="userId"></param>
+ public void SoSetQtyPinPick(string soNo, string soDetailId, string palletNo, string PickQty, string palletNoNew, int userId)
+ {
+ Db.BeginTran();
+ try
+ {
+ var nowDate = DateTime.Now;//褰撳墠鏃堕棿
+ #region 鍒ゆ柇
+
+ if (string.IsNullOrWhiteSpace(soNo))
+ {
+ throw new Exception("鍑哄簱鍗曟嵁涓嶈兘涓虹┖");
+ }
+ //if (string.IsNullOrWhiteSpace(soDetailId))
+ //{
+ // throw new Exception("鍑哄簱鐗╂枡-鎵规涓嶈兘涓虹┖");
+ //}
+ if (string.IsNullOrWhiteSpace(palletNo))
+ {
+ throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�");
+ }
+ if (string.IsNullOrWhiteSpace(palletNoNew))
+ {
+ throw new Exception("鏂版墭鐩樼爜涓嶈兘涓虹┖");
+ }
+
+ //鍑哄簱鍗�
+ var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == soNo);
+ if (notice == null)
+ {
+ throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
+ }
+ if (notice.Status != "3")
+ {
+ throw new Exception("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
+ }
+ //鍑哄簱鍗曟槑缁�
+ var noticeDetail = Db.Queryable<BllExportNoticeDetail>()
+ .First(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
+ if (noticeDetail == null)
+ {
+ throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
+ }
+ //鍑哄簱鍒嗛厤淇℃伅
+ var allot = Db.Queryable<BllExportAllot>().First(m =>
+ m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo &&
+ m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
+ if (allot == null)
+ {
+ throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
+ }
+ //鍓╀綑鎷h揣鏁伴噺锛堝緟鎷e噺鍘诲凡鎷o級
+ var needQty = allot.Qty - allot.CompleteQty;
+ if (decimal.Parse(PickQty) > needQty)
+ {
+ throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鎵樺唴鍓╀綑寰呮嫞鏁伴噺");
+ }
+
+ //搴撳瓨鏄庣粏
+ 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("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
+ }
+ if (palletNo == palletNoNew)//鍘熸墭鐩樹笌鏂版墭鐩樹竴鑷�
+ {
+ if (decimal.Parse(PickQty) != stockDetail.Qty)
+ {
+ throw new Exception("鍘熸墭鐩樹笌鏂版墭鐩樹竴鑷达紝闇�瑕佹妸鎵樼洏涓婃墍鏈夋暟閲忔嫞璐�");
+ }
+ }
+ #endregion
+
+ #region 鎷兼墭淇℃伅
+ bool isNew = false;
+ var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew);
+ if (pinStockDetail != null)
+ {
+ if (palletNo != palletNoNew)//闈炴暣鎵樻嫞璐�
+ {
+ if (pinStockDetail.SONo != notice.SONo)
+ {
+ throw new Exception("鎷兼墭鎵樼洏涓婂彧鑳芥斁鍚屼竴涓嚭搴撳崟涓嬬殑鐗╂枡锛�");
+ }
+ if (pinStockDetail.SkuName != stockDetail.SkuName || pinStockDetail.LotNo != stockDetail.LotNo)
+ {
+ isNew = true;
+ }
+ }
+ }
+ else
+ {
+ isNew = true;
+
+ var newPalletInfo = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0");
+ if (newPalletInfo == null)
+ {
+ throw new Exception("鏂版墭鐩樹俊鎭笉瀛樺湪鎴栧凡琚娇鐢紒");
+ }
+ //淇敼鏂版墭鐩樼姸鎬�
+ newPalletInfo.Status = "1";
+ Db.Updateable(newPalletInfo).ExecuteCommand();
+ }
+
+ if (isNew)
+ {
+ var sd = new DataStockDetail();
+
+ sd.LotNo = stockDetail.LotNo;
+ sd.LotText = stockDetail.LotText;
+ sd.SupplierLot = stockDetail.SupplierLot;
+ sd.SkuNo = stockDetail.SkuNo;
+ sd.SkuName = stockDetail.SkuName;
+ sd.Standard = stockDetail.Standard;
+
+ sd.Qty = decimal.Parse(PickQty);
+ sd.LockQty = decimal.Parse(PickQty);
+
+ sd.FrozenQty = 0;
+ sd.InspectQty = 0;
+ sd.ASNNo = "";
+ sd.ASNDetailNo = null;
+ sd.SONo = soNo;//鍑哄簱鍗曞彿
+ sd.WareHouseNo = "";
+ sd.RoadwayNo = "";
+ sd.AreaNo = "";
+ sd.LocatNo = "";
+ sd.PalletNo = palletNoNew;
+ sd.PalletNo2 = "";
+ sd.PalletNo3 = "";
+ //PalletType = item.PalletType,
+ sd.CompleteTime = nowDate;
+ sd.ProductionTime = stockDetail.ProductionTime;
+ sd.ExpirationTime = stockDetail.ExpirationTime;
+ sd.Status = "2";//鐘舵�侊紝宸插垎閰�
+ sd.InspectMark = stockDetail.InspectMark;
+ sd.InspectStatus = stockDetail.InspectStatus;
+ sd.BitPalletMark = "0";
+ sd.PackagNo = noticeDetail.PackagNo;
+ sd.IsBale = stockDetail.IsBale;
+ sd.IsBelt = stockDetail.IsBelt;
+ sd.Demo = stockDetail.Demo;
+ sd.OwnerName = stockDetail.OwnerName;
+ sd.OwnerNo = stockDetail.OwnerNo;
+ sd.SupplierName = stockDetail.SupplierName;
+ sd.SupplierNo = stockDetail.SupplierNo;
+
+ sd.IsDel = "0";
+ sd.CreateUser = userId;
+ sd.CreateTime = nowDate;
+
+ //鏂板鎷兼墭搴撳瓨鏄庣粏淇℃伅
+ Db.Insertable(sd).ExecuteReturnIdentity();
+ }
+ else
+ {
+ if (palletNo != palletNoNew)
+ {
+ //淇敼鎷兼墭鎵樼洏搴撳瓨鏄庣粏
+ pinStockDetail.Qty += decimal.Parse(PickQty);
+ pinStockDetail.LockQty += decimal.Parse(PickQty);
+ Db.Updateable(pinStockDetail).ExecuteCommand();
+ }
+ else
+ {
+ pinStockDetail.SONo = soNo;
+ Db.Updateable(pinStockDetail).ExecuteCommand();
+ }
+ }
+ #endregion
+
+ //鑾峰彇褰撳墠鎵樼洏鎷h揣鏄庣粏
+ var complete = Db.Queryable<BllCompleteDetail>().First(a => a.IsDel == "0" && a.PalletNo == palletNo && a.SONo == notice.SONo && a.SODetailNo == noticeDetail.Id && a.ExportAllotId == allot.Id && a.StockId == stockDetail.Id);
+
+ //鍒よ鏄惁瀛樺湪鎷h揣鏄庣粏
+ int isComplete = 0;
+ if (complete != null)
+ {
+ isComplete = 1;
+ }
+
+ var comList = new List<BllCompleteDetail>();
+ //鍒ゆ柇鏄惁瀛樺湪鎷h揣鏄庣粏
+ isComplete = 0;//鎵�鏈夋棤绠辩爜鎴栦竴绾х鐮佹嫞璐ф椂锛屾嫞璐ф槑缁嗗簲閲嶆柊鎻掑叆鏁版嵁(浣撶幇澶氭鎷h揣娴佺▼璁板綍)
+ if (isComplete == 0)
+ {
+ //娣诲姞鎷h揣鏄庣粏
+ var completeDetail = new BllCompleteDetail()
+ {
+ SONo = soNo,
+ SODetailNo = int.Parse(soDetailId),
+ ExportAllotId = allot.Id,
+ StockId = allot.StockId,
+ BoxNo = "",
+ BoxNo2 = "",
+ BoxNo3 = "",
+
+ LotNo = allot.LotNo,
+ LotText = allot.LotText,
+ SupplierLot = allot.SupplierLot,
+ SkuNo = allot.SkuNo,
+ SkuName = allot.SkuName,
+ Standard = allot.Standard,
+ PalletNo = palletNo,
+ CompleteQty = decimal.Parse(PickQty),
+
+ CreateUser = userId,
+ CreateTime = Db.GetDate(),
+ };
+ comList.Add(completeDetail);
+
+ //娣诲姞鎷h揣鏄庣粏
+ Db.Insertable(comList).ExecuteCommand();
+ }
+ else if (isComplete == 1)
+ {
+ complete.CompleteQty += decimal.Parse(PickQty);
+ complete.UpdateUser = userId;
+ complete.UpdateTime = Db.GetDate();
+
+ Db.Updateable(complete).ExecuteCommand();
+ }
+
+ //淇敼鍑哄簱鍒嗛厤淇℃伅
+ allot.CompleteQty += decimal.Parse(PickQty);
+ allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
+ allot.UpdateTime = DateTime.Now;
+ Db.Updateable(allot).ExecuteCommand();
+
+ int isDel = 0;
+
+ if (palletNo != palletNoNew)
+ {
+ //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁�
+ stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
+ stockDetail.Qty -= decimal.Parse(PickQty);
+ stockDetail.LockQty -= decimal.Parse(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
+ {
+ isDel = 1;
+ Db.Updateable(stockDetail).ExecuteCommand();
+ }
+ }
+ else
+ {
+ isDel = 1;
+ }
+ //鍒ゆ柇鎵樼洏涓婄墿鏂欐槸鍚︽嫞璐у畬姣�
+ if (isDel == 0)
+ {
+ //鏀瑰彉鎵樼洏鐘舵�佷负锛氭湭浣跨敤
+ var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0");
+ if (pallet == null)
+ {
+ throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
+ }
+
+ pallet.Status = "0";
+ Db.Updateable(pallet).ExecuteCommand();
+ }
+
+ //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
+ noticeDetail.CompleteQty += decimal.Parse(PickQty);
+ noticeDetail.Status = "2";
+ Db.Updateable(noticeDetail).ExecuteCommand();
+
+ var num = Db.Queryable<BllExportNoticeDetail>()
+ .Count(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
+ if (num <= 0)
+ {
+ notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
+ noticeDetail.Status = "3";
+ Db.Updateable(noticeDetail).ExecuteCommand();
+ }
+ //淇敼鍑哄簱鍗曚俊鎭�
+ Db.Updateable(notice).ExecuteCommand();
+
+ //娣诲姞鎿嶄綔鏃ュ織璁板綍
+ var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鎷h揣鎷兼墭", soNo, "鎷h揣", $"鍦≒DA涓婂鍑哄簱鍗曞彿涓猴細{soNo}鐨勬墭鐩樼爜涓猴細{palletNo}锛屾柊鎵樼洏鐮佷负锛歿palletNoNew}鐨勬嫞璐ф搷浣�", userId);
+ Db.CommitTran();
+ }
+ catch (Exception e)
+ {
+ Db.RollbackTran();
+ throw new Exception(e.Message);
+ }
+ }
+ #endregion
}
}
--
Gitblit v1.8.0