From b2d25faa69ee7e9f24b6ac98d3b4dcbddada70bc Mon Sep 17 00:00:00 2001
From: yuyou_x <2336760928@qq.com>
Date: 星期四, 14 三月 2024 13:37:15 +0800
Subject: [PATCH] 修改pda托盘绑定同一物料多批次 无法具体选中批次问题。
---
Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs | 403 ++++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 322 insertions(+), 81 deletions(-)
diff --git a/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
index e01b252..13d05b0 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
@@ -6,11 +6,13 @@
using Model.ModelDto.PdaDto;
using SqlSugar;
using WMS.BLL.LogServer;
+using WMS.DAL;
using WMS.Entity.BllAsnEntity;
using WMS.Entity.BllCheckEntity;
using WMS.Entity.BllSoEntity;
using WMS.Entity.Context;
using WMS.Entity.DataEntity;
+using WMS.Entity.LogEntity;
using WMS.Entity.SysEntity;
using WMS.IBLL.IPdaServer;
@@ -83,7 +85,7 @@
}
//鑾峰彇瑕佺洏鐐圭殑绠辩爜淇℃伅锛堢洏鐐硅褰曚腑鏁版嵁锛�
- public List<StockCheckLogDto> GetStockCheckLogList(string crNo, string crDetail, string palletNo, string boxNo)
+ public List<StockCheckLogDto> GetStockCheckLogList(string crNo, string crDetail, string palletNo, string boxNo, string isContinue)
{
try
{
@@ -102,6 +104,18 @@
var detail = crDetail.Split("-");
var sku = detail[0];
+ //鍒ゆ柇鏄惁涓烘棤鐮佺墿鏂�
+ var skuinfo = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == sku);
+ //鍒ゆ柇鏄惁瀛樺湪鐗╂枡娑堟伅
+ if (skuinfo == null)
+ {
+ throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�");
+ }
+ int isQtySku = 0;
+ if (skuinfo.Type == "4" && isContinue == "1")
+ {
+ isQtySku = 1;
+ }
var lotNo = detail[1];
var list = Db.Queryable<BllStockCheckLog>().Where(m => m.IsDel == "0" && m.CRNo == crNo);
//var deList= Db.Queryable<BllStockCheckDetail>().Where(m => m.IsDel == "0" && m.SkuNo == sku && m.LotNo == lotNo && m.PalletNo == palletNo);
@@ -109,25 +123,47 @@
//{
// throw new Exception("鏈煡璇㈠埌鎵樼洏涓婄殑鐩樼偣鐗╂枡鎵规淇℃伅");
//}
-
list = list.Where(m => m.SkuNo == sku && m.LotNo == lotNo && m.PalletNo == palletNo);
if (!string.IsNullOrWhiteSpace(boxNo))
{
list = list.Where(m => m.BoxNo == boxNo);
}
-
- var data = list.Select(m => new StockCheckLogDto()
+ List<StockCheckLogDto> data = new List<StockCheckLogDto>();
+ //鍒ゆ柇鏄惁涓烘棤鐮佺墿鏂�
+ if (isQtySku == 1)
{
- BoxNo = m.BoxNo,
- BoxNo3 = m.BoxNo3,
- SkuNo = m.SkuNo,
- SkuName = m.SkuName,
- LotNo = m.LotNo,
- Qty = m.Qty,
- CheckResult = m.CheckResult,
+ //鑾峰彇搴撳瓨淇℃伅
+ var stockDetail = Db.Queryable<DataStockDetail>().First(a => a.IsDel == "0" && a.Status == "3" && a.SkuNo == sku && a.PalletNo == palletNo);
- }).ToList();
+ var model = new StockCheckLogDto()
+ {
+ PalletNo = palletNo,
+ SkuNo = sku,
+ Qty = (int?)stockDetail.Qty,
+ CheckResult = 4,
+ };
+
+ data.Add(model);
+
+ }
+ else
+ {
+ data = list.Select(m => new StockCheckLogDto()
+ {
+ BoxNo = m.BoxNo,
+ BoxNo3 = m.BoxNo3,
+ SkuNo = m.SkuNo,
+ SkuName = m.SkuName,
+ LotNo = m.LotNo,
+ Qty = m.Qty,
+ CheckResult = m.CheckResult,
+
+ }).ToList();
+
+ }
+
return data;
+
}
catch (Exception e)
{
@@ -135,7 +171,7 @@
}
}
- public void CrSetCheck(string crNo, string crDetail, string palletNo, string boxNo, string boxNo3, string result, int? qty, int userId)
+ public void CrSetCheck(string crNo, string crDetail, string palletNo, string boxNo, string boxNo3, string result, int? qty, string isContinue, int userId)
{
try
{
@@ -165,8 +201,8 @@
//鐩樼偣璁板綍
var checkLog = Db.Queryable<BllStockCheckLog>().Where(m =>
m.IsDel == "0" && m.CRNo == crNo && m.PalletNo == palletNo && m.SkuNo == sku && m.LotNo == lotNo && m.CheckResult == null);
-
var time = DateTime.Now;
+ //姝e父
if (result == "0")
{
if (!string.IsNullOrWhiteSpace(boxNo))
@@ -178,7 +214,7 @@
checkLog = checkLog.Where(m => m.BoxNo3 == boxNo3);
}
- if (checkLog.Count() == 0)
+ if (checkLog.Count() == 0 && isContinue == "0")
{
throw new Exception("鏈煡璇㈠埌鏈洏鐐圭殑绠辨敮淇℃伅");
}
@@ -189,7 +225,7 @@
{
if (l.CheckResult != null)
{
- continue;
+ continue;
}
l.RealQty = l.Qty;
l.CheckResult = 0;
@@ -204,6 +240,7 @@
checkDetail.RealQty = 0;
}
checkDetail.RealQty += num;
+ checkDetail.CheckResult = 0;
//if (checkDetail.CheckResult == null || checkDetail.CheckResult == 0)
//{
// checkDetail.CheckResult = 0;
@@ -211,6 +248,7 @@
Db.Updateable(checkDetail).ExecuteCommand();
Db.Updateable(list).ExecuteCommand();
}
+ //鐩樹簭
else if (result == "1")
{
if (!string.IsNullOrWhiteSpace(boxNo))
@@ -222,10 +260,20 @@
checkLog = checkLog.Where(m => m.BoxNo3 == boxNo3);
}
- if (checkLog.Count() == 0)
+ if (checkLog.Count() == 0 && isContinue == "0")
{
throw new Exception("鏈煡璇㈠埌绠辨敮淇℃伅");
}
+
+ //
+ if (isContinue == "1")
+ {
+ if (qty == null || qty <= 0)
+ {
+ throw new Exception("鏁伴噺鐩樼偣鏃躲�佺洏浜忔暟閲忎笉鑳戒负绌轰笖闇�澶т簬0");
+ }
+ }
+
var list = checkLog.ToList();
var num = 0;
@@ -242,64 +290,111 @@
checkDetail.RealQty = 0;
}
checkDetail.RealQty += num;
- //checkDetail.CheckResult = 1;
+ if (isContinue == "1")
+ {
+ checkDetail.RealQty = qty;
+ }
+ checkDetail.CheckResult = 1;
+ var checkInfo = Db.Queryable<BllStockCheckLog>().First(m =>
+ m.IsDel == "0" && m.CRNo == crNo && m.PalletNo == palletNo && m.SkuNo == sku && m.LotNo == lotNo);
+ checkInfo.RealQty = qty;
+ checkInfo.CheckResult = 1;
+
+ checkInfo.CheckUserId = userId;
+ checkInfo.CheckDate = time;
+
+ checkInfo.UpdateUser = userId;
+ checkInfo.UpdateTime = time;
+ Db.Updateable(checkInfo).ExecuteCommand();
Db.Updateable(checkDetail).ExecuteCommand();
Db.Updateable(list).ExecuteCommand();
}
+ //鐩樼泩
else if (result == "2")
{
- if (string.IsNullOrWhiteSpace(boxNo) || string.IsNullOrWhiteSpace(boxNo3))
+ if (isContinue == "0")
{
- throw new Exception("鐩樼泩鏃剁鐮佷笌鏀爜涓嶈兘涓虹┖");
+ if (string.IsNullOrWhiteSpace(boxNo) || string.IsNullOrWhiteSpace(boxNo3))
+ {
+ throw new Exception("鐩樼泩鏃剁鐮佷笌鏀爜涓嶈兘涓虹┖");
+ }
}
-
if (qty == null || qty <= 0)
{
throw new Exception("鐩樼泩鏃舵暟閲忎笉鑳戒负绌轰笖闇�澶т簬0");
}
-
- var count = Db.Queryable<DataBoxInfo>()
- .Count(m => m.IsDel == "0" && m.BoxNo == boxNo && m.BoxNo3 == boxNo3);
- var count2 = Db.Queryable<BllStockCheckLog>()
- .Count(m => m.IsDel == "0" && m.BoxNo == boxNo && m.BoxNo3 == boxNo3);
- if (count > 0 || count2 > 0)
+ if (isContinue == "0")
{
- throw new Exception("褰撳墠搴撳瓨涓凡瀛樺湪璇ョ鏀俊鎭�");
+ var count = Db.Queryable<DataBoxInfo>()
+ .Count(m => m.IsDel == "0" && m.BoxNo == boxNo && m.BoxNo3 == boxNo3);
+ var count2 = Db.Queryable<BllStockCheckLog>()
+ .Count(m => m.IsDel == "0" && m.BoxNo == boxNo && m.BoxNo3 == boxNo3);
+ if (count > 0 || count2 > 0)
+ {
+ throw new Exception("褰撳墠搴撳瓨涓凡瀛樺湪璇ョ鏀俊鎭�");
+ }
}
- var crLog = new BllStockCheckLog()
+ BllStockCheckLog crLog = new BllStockCheckLog();
+ if (isContinue == "0")
{
- CRNo = crNo,
- PalletNo = palletNo,
- BoxNo = boxNo,
- BoxNo2 = null,
- BoxNo3 = boxNo3,
- Qty = qty,
- SkuNo = checkDetail.SkuNo,
- SkuName = checkDetail.SkuName,
- Standard = checkDetail.Standard,
- LotNo = checkDetail.LotNo,
- LotText = checkDetail.LotText,
- SupplierLot = checkDetail.SupplierLot,
+ crLog = new BllStockCheckLog()
+ {
+ CRNo = crNo,
+ PalletNo = palletNo,
+ BoxNo = boxNo,
+ BoxNo2 = null,
+ BoxNo3 = boxNo3,
+ Qty = qty,
+ SkuNo = checkDetail.SkuNo,
+ SkuName = checkDetail.SkuName,
+ Standard = checkDetail.Standard,
+ LotNo = checkDetail.LotNo,
+ LotText = checkDetail.LotText,
+ SupplierLot = checkDetail.SupplierLot,
- RealQty = qty,
- CheckResult = 2,
- CheckDate = time,
- CheckUserId = userId,
+ RealQty = qty,
+ CheckResult = 2,
+ CheckDate = time,
+ CheckUserId = userId,
- CreateUser = userId,
- CreateTime = time
- };
- if (checkDetail.RealQty == null)
+ CreateUser = userId,
+ CreateTime = time
+ };
+ }
+ else
+ {
+ var checkInfo = Db.Queryable<BllStockCheckLog>().First(m =>
+ m.IsDel == "0" && m.CRNo == crNo && m.PalletNo == palletNo && m.SkuNo == sku && m.LotNo == lotNo);
+ checkInfo.RealQty = qty;
+ checkInfo.CheckResult = 2;
+
+ checkInfo.CheckUserId = userId;
+ checkInfo.CheckDate = time;
+
+ checkInfo.UpdateUser = userId;
+ checkInfo.UpdateTime = time;
+ Db.Updateable(checkInfo).ExecuteCommand();
+ }
+
+ if (checkDetail.RealQty == null && isContinue == "0")
{
checkDetail.RealQty = 0;
}
checkDetail.RealQty += qty;
- //checkDetail.CheckResult = 1;
+ if (isContinue == "1")
+ {
+ checkDetail.RealQty = qty;
+ }
+ checkDetail.CheckResult = 2;
Db.Updateable(checkDetail).ExecuteCommand();
- Db.Insertable(crLog).ExecuteCommand();
+ if (isContinue == "0")
+ {
+ Db.Insertable(crLog).ExecuteCommand();
+ }
}
else
{
+ Db.RollbackTran();
throw new Exception("鐩樼偣缁撴灉涓嶇锛岃鏍稿疄锛�");
}
var checkLogNum = Db.Queryable<BllStockCheckLog>().Where(m => m.IsDel == "0" && m.CRNo == crNo && m.PalletNo == palletNo && m.SkuNo == sku && m.LotNo == lotNo);
@@ -352,7 +447,7 @@
{
str += " and PalletNo like @palletno";
}
-
+
//鎺掑簭
str += " order by LotNo,LocatNo,PalletNo";
List<DataStockDetail> stockList = Db.Ado.SqlQuery<DataStockDetail>(str, new
@@ -377,7 +472,7 @@
{
throw new Exception("鎵樼洏鍙蜂笉鑳戒负绌�");
}
- var detail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).Select(m=>m.Id).ToList();
+ var detail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).Select(m => m.Id).ToList();
var info = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && detail.Contains(m.StockDetailId))
.GroupBy(m => m.BoxNo).Select(a => new PdaPalletNoCheckDto
{
@@ -386,7 +481,7 @@
}).ToList();
return info;
}
- catch(Exception e)
+ catch (Exception e)
{
throw new Exception(e.Message);
}
@@ -401,9 +496,9 @@
{
throw new Exception("绠辩爜涓嶈兘涓虹┖");
}
-
+
var info = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo)
- .GroupBy(m => new{m.BoxNo,m.SkuNo,m.SkuName,m.LotNo}).Select(a => new PdaPalletNoCheckDto
+ .GroupBy(m => new { m.BoxNo, m.SkuNo, m.SkuName, m.LotNo }).Select(a => new PdaPalletNoCheckDto
{
BoxNo = a.BoxNo,
SkuNo = a.SkuNo,
@@ -411,7 +506,7 @@
LotNo = a.LotNo,
Qty = SqlFunc.AggregateSum(a.Qty)
}).ToList();
- if (info.Count>1)
+ if (info.Count > 1)
{
throw new Exception("褰撳墠绠辩爜鏌ヨ鍑哄鏉$墿鏂欐垨鎵规淇℃伅锛岃鏍稿疄");
}
@@ -425,7 +520,7 @@
}
//瑙g粦鍘熸墭鐩樼粦瀹氭柊鎵樼洏
- public void SaveUnbind(string palletNo,string boxNo,string palletNoNew,int userId)
+ public void SaveUnbind(string palletNo, string boxNo, string palletNoNew, int userId)
{
try
{
@@ -450,7 +545,7 @@
throw new Exception("鍘熸墭鐩樹笂鏈煡鍒扮鏀槑缁嗭紝璇锋牳瀹�");
}
//搴撳瓨鏄庣粏id
- var infoIds = infos.GroupBy(m => m.StockDetailId).Select(a =>a.StockDetailId).ToList();
+ var infoIds = infos.GroupBy(m => m.StockDetailId).Select(a => a.StockDetailId).ToList();
if (infoIds.Count == 0)
{
throw new Exception("鏈煡璇㈠埌褰撳墠绠辩爜淇℃伅锛岃鏍稿疄");
@@ -485,7 +580,7 @@
}
}
}
- }
+ }
#endregion
}
if (!newPalletHaveGoods)//鏂版墭鐩樹笂娌℃湁鐗╁搧
@@ -520,7 +615,7 @@
}
var stockDetail2 = stockDetailList.FirstOrDefault(w => w.SkuNo == stockDetail1.SkuNo && w.LotNo == stockDetail1.LotNo);
- var stId = 0;
+ var stId = 0;
if (stockDetail2 == null) //娣诲姞-鏂版墭鐩樹笂娌℃湁鍚岀墿鏂欏悓鎵规鐗╁搧
{
//鏂版墭鐩樻坊鍔犲簱瀛樻槑缁�
@@ -787,12 +882,41 @@
{
throw new Exception("璇烽�夋嫨鐩爣鍖哄煙鎴栧叆搴撳彛锛�");
}
+ if (!string.IsNullOrEmpty(areaNo) && !string.IsNullOrEmpty(ruku))
+ {
+ throw new Exception("鐩爣鍖哄煙鍜屽叆搴撳彛涓嶈兘鍚屾椂閫夋嫨锛�");
+ }
try
{
+ string EndLocat = string.Empty;//鐩爣浣嶇疆
+
+ var log = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && (w.Status == "0" || w.Status == "1"));
+ if (log != null)
+ {
+ throw new Exception("璇ユ墭鐩樺凡鏈夊皬杞︾瓑寰呮墽琛屾垨姝e湪鎵ц鐨勪换鍔�!");
+ }
var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo);
if (stockDetail == null)
{
- throw new Exception("鎵樼洏搴撳瓨淇℃伅涓嶅瓨鍦�,璇锋鏌�!");
+ throw new Exception("鎵樼洏涓婄墿鏂欏簱瀛樻槑缁嗕俊鎭笉瀛樺湪,璇锋鏌�!");
+ }
+ if (!string.IsNullOrEmpty(areaNo))
+ {
+ var storageArea = Db.Queryable<SysStorageArea>().First(w => w.IsDel == "0" && w.AreaNo == areaNo);
+ if (storageArea == null)
+ {
+ throw new Exception("鎵�閫夊尯鍩熶俊鎭笉瀛樺湪,璇锋鏌�!");
+ }
+ EndLocat = GetLocat(areaNo, stockDetail.SkuNo, stockDetail.LotNo,palletNo);
+ }
+ else
+ {
+ EndLocat = ruku;
+ }
+ var stock = Db.Queryable<DataStock>().First(w => w.IsDel == "0" && w.SkuNo == stockDetail.SkuNo && w.LotNo == stockDetail.LotNo);
+ if (stock == null)
+ {
+ throw new Exception("鎵樼洏涓婄墿鏂欏簱瀛樹俊鎭笉瀛樺湪,璇锋鏌�!");
}
if (string.IsNullOrEmpty(stockDetail.LocatNo))
{
@@ -809,23 +933,50 @@
}
//寮�鍚簨鍔�
Db.BeginTran();
+
+ //娣诲姞鍑哄簱浠诲姟
+ var taskNo = new Common().GetMaxNo("TK");
+ var exTask = new LogTask
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "AGV",
+ IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = stockDetail.LocatNo,//璧峰浣嶇疆
+ EndLocat = EndLocat,//鐩爣浣嶇疆
+ PalletNo = palletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "2",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "3",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+
+ CreateTime = DateTime.Now
+ };
+ Db.Insertable(exTask).ExecuteCommand();
+
//淇敼搴撳瓨鏄庣粏淇℃伅
- stockDetail.WareHouseNo = "";
- stockDetail.RoadwayNo = "";
- stockDetail.AreaNo = "";
- stockDetail.LocatNo = "";
-
+ stockDetail.Status = "4";//绉诲簱閿佸畾
+ stockDetail.LockQty = stockDetail.Qty;//閿佸畾搴撳瓨鏁伴噺
Db.Updateable(stockDetail).ExecuteCommand();
- //淇敼鍌ㄤ綅鍦板潃鐘舵��
- storageLocat.Status = "0";//绌哄偍浣�
+ //淇敼搴撳瓨淇℃伅
+ stock.LockQty += (decimal)stockDetail.Qty;
+ Db.Updateable(stock).ExecuteCommand();
+ //淇敼鍌ㄤ綅鍦板潃鐘舵��
+ storageLocat.Status = "5";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑
Db.Updateable(storageLocat).ExecuteCommand();
+
+ //娣诲姞鎿嶄綔鏃ュ織璁板綍
+ var k = new OperationCrServer().AddLogOperationCr("PDA妯″潡", "AGV杞繍", palletNo, "绉诲簱", $"PDA鍛煎彨灏忚溅瀵规墭鐩樺彿锛歿palletNo}鍙戣捣杞繍", userId);
+ //鎻愪氦浜嬪姟
+ Db.CommitTran();
#region 鍛煎彨灏忚溅浠g爜
#endregion
- //鎻愪氦浜嬪姟
- Db.CommitTran();
}
catch (Exception ex)
{
@@ -856,6 +1007,12 @@
}
try
{
+ var log = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && (w.Status == "0" || w.Status == "1"));
+ if (log != null)
+ {
+ throw new Exception("璇ユ墭鐩樺凡鏈夊皬杞︾瓑寰呮墽琛屾垨姝e湪鎵ц鐨勪换鍔�!");
+ }
+
var notice = Db.Queryable<BllExportNotice>().First(w => w.IsDel == "0" && w.SONo == soNo);
if (notice == null)
{
@@ -869,7 +1026,12 @@
var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo);
if (stockDetail == null)
{
- throw new Exception("鎵樼洏搴撳瓨淇℃伅涓嶅瓨鍦�,璇锋鏌�!");
+ throw new Exception("鎵樼洏涓婄墿鏂欏簱瀛樹俊鎭笉瀛樺湪,璇锋鏌�!");
+ }
+ var stock = Db.Queryable<DataStock>().First(w => w.IsDel == "0" && w.SkuNo == stockDetail.SkuNo && w.LotNo == stockDetail.LotNo);
+ if (stock == null)
+ {
+ throw new Exception("鎵樼洏涓婄墿鏂欏簱瀛樹俊鎭笉瀛樺湪,璇锋鏌�!");
}
if (string.IsNullOrEmpty(stockDetail.LocatNo))
{
@@ -884,25 +1046,59 @@
{
throw new Exception("鍌ㄤ綅淇℃伅涓嶅瓨鍦�,璇锋鏌�!");
}
+ var storageArea = Db.Queryable<SysStorageArea>().First(w => w.IsDel == "0" && w.AreaNo == areaNo);
+ if (storageArea == null)
+ {
+ throw new Exception("鎵�閫夊尯鍩熶俊鎭笉瀛樺湪,璇锋鏌�!");
+ }
+ string EndLocat = string.Empty;//鐩爣浣嶇疆
+ EndLocat= GetLocat(areaNo, stockDetail.SkuNo, stockDetail.LotNo,palletNo);
//寮�鍚簨鍔�
Db.BeginTran();
+
+ //娣诲姞鍑哄簱浠诲姟
+ var taskNo = new Common().GetMaxNo("TK");
+ var exTask = new LogTask
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "AGV",
+ IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+ StartLocat = stockDetail.LocatNo,//璧峰浣嶇疆
+ EndLocat = EndLocat,//鐩爣浣嶇疆
+ PalletNo = palletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "2",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "3",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+
+ CreateTime = DateTime.Now
+ };
+ Db.Insertable(exTask).ExecuteCommand();
+
//淇敼搴撳瓨鏄庣粏淇℃伅
- stockDetail.WareHouseNo = "";
- stockDetail.RoadwayNo = "";
- stockDetail.AreaNo = "";
- stockDetail.LocatNo = "";
-
+ stockDetail.Status = "4";//绉诲簱閿佸畾
+ stockDetail.LockQty = stockDetail.Qty;//閿佸畾搴撳瓨鏁伴噺
Db.Updateable(stockDetail).ExecuteCommand();
- //淇敼鍌ㄤ綅鍦板潃鐘舵��
- storageLocat.Status = "0";//绌哄偍浣�
+ //淇敼搴撳瓨淇℃伅
+ stock.LockQty += (decimal)stockDetail.Qty;
+ Db.Updateable(stock).ExecuteCommand();
+ //淇敼鍌ㄤ綅鍦板潃鐘舵��
+ storageLocat.Status = "5";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑
Db.Updateable(storageLocat).ExecuteCommand();
+
+ //娣诲姞鎿嶄綔鏃ュ織璁板綍
+ var k = new OperationCrServer().AddLogOperationCr("PDA妯″潡", "AGV杞繍", palletNo, "绉诲簱", $"PDA鍛煎彨灏忚溅瀵规墭鐩樺彿锛歿palletNo}鍙戣捣杞繍", userId);
+ //鎻愪氦浜嬪姟
+ Db.CommitTran();
#region 鍛煎彨灏忚溅浠g爜
#endregion
- //鎻愪氦浜嬪姟
- Db.CommitTran();
}
catch (Exception ex)
{
@@ -910,6 +1106,51 @@
throw new Exception(ex.Message);
}
}
+ /// <summary>
+ /// 鏍规嵁鍖哄煙鍒嗛厤鍌ㄤ綅
+ /// </summary>
+ /// <param name="areaNo"></param>
+ /// <param name="skuNo"></param>
+ /// <param name="lotNo"></param>
+ /// <returns></returns>
+ private string GetLocat(string areaNo,string skuNo,string lotNo,string palletNo)
+ {
+ try
+ {
+ string endLocat = string.Empty;//鐩爣鍌ㄤ綅
+ //褰撶劧鍖哄煙鎵�鏈夊偍浣嶄俊鎭�
+ var storageLocatList = Db.Queryable<SysStorageLocat>().Where(w => w.WareHouseNo == "W02" && w.AreaNo == areaNo).ToList();
+ //鍚屽尯鍩熷悓鎵规鐗╂枡鐨勫偍浣嶄俊鎭�
+ List<string> locatList = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.SkuNo == skuNo && w.LotNo == lotNo && w.WareHouseNo == "W02" && w.AreaNo == areaNo && w.PalletNo != palletNo)
+ .OrderByDescending(o=>o.LocatNo).Select(s=>s.LocatNo).Distinct().ToList();
+ foreach (var item in locatList)
+ {
+ var locatInfo = storageLocatList.Where(w => w.LocatNo == item).First();
+
+ var locatInfo2 = storageLocatList.Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0" && w.LocatNo != locatInfo.LocatNo && w.Row == locatInfo.Row)
+ .OrderByDescending(o => o.Column).First();
+ if (locatInfo2 != null)
+ {
+ endLocat = locatInfo2.LocatNo;
+ }
+ }
+ if (string.IsNullOrEmpty(endLocat))
+ {
+ var locatInfo3 = storageLocatList.Where(w => w.IsDel == "0" && w.Flag == "0" && w.Status == "0")
+ .OrderByDescending(m => new { m.Layer, m.Column, m.Row }).First();
+
+ if (locatInfo3 != null)
+ {
+ endLocat = locatInfo3.LocatNo;
+ }
+ }
+ return endLocat;
+ }
+ catch (Exception ex)
+ {
+ throw new Exception(ex.Message);
+ }
+ }
#endregion
}
--
Gitblit v1.8.0