From b88cbdbc97735732fe6406fbe5aa3228eaa1b551 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期一, 20 十月 2025 13:13:44 +0800
Subject: [PATCH] 修改包装管理,包装可输入小数
---
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs | 2218 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 1,938 insertions(+), 280 deletions(-)
diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
index 5270e8a..0a3894e 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -21,6 +21,16 @@
using Model.ModelDto.DataDto;
using System.Xml.Schema;
using ZXing.OneD;
+using System.Threading.Tasks;
+using System.Security.Policy;
+using Newtonsoft.Json;
+using Utility.Tools;
+using Model.ModelDto.SysDto;
+using Model.ModelVm.SysVm;
+using System.Security.Cryptography.X509Certificates;
+using AutoMapper.Configuration.Annotations;
+using Utility;
+using System.Diagnostics.Metrics;
namespace WMS.BLL.BllPdaServer
{
@@ -69,14 +79,15 @@
else
{
//浠庣墿鏂欏悕绉�-鎵规涓彇鍑烘壒娆�
- int indexOfDash = model.LotNo.IndexOf("-");
+ int indexOfDash = model.LotNo.IndexOf("=>");
if (indexOfDash != -1)
{
- model.LotNo = model.LotNo.Substring(indexOfDash + 1);
+ model.LotNo = model.LotNo.Substring(indexOfDash + 2);
}
else
{
- throw new Exception("鐗╂枡-鎵规涓嶅彲涓虹┖!");
+ model.LotNo = "";
+ //throw new Exception("鐗╂枡-鎵规涓嶅彲涓虹┖!");
}
}
@@ -101,17 +112,25 @@
throw new Exception("鏈煡璇㈠埌鎵樼洏淇℃伅锛岃鏍稿疄锛�");
}
//楠岃瘉鍏ュ簱鍗曟槑缁嗘槸鍚﹀瓨鍦�
- var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo && m.LotNo.Contains(model.LotNo));
+ var detail = new BllArrivalNoticeDetail();
+ if (string.IsNullOrEmpty(model.LotNo))
+ {
+ detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo);
+ }
+ else
+ {
+ detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo && m.LotNo.Contains(model.LotNo));
+ }
if (detail == null)
{
throw new Exception("褰撳墠鐗╂枡鍙婃壒娆′笌鍗曟嵁鏃犲叧鑱旓紝璇锋牳瀹�!");
}
//鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱澶�
- var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo);
- if (stockDetail != null && !string.IsNullOrEmpty(stockDetail.WareHouseNo))
- {
- throw new Exception("璇ユ墭鐩樺凡鏈夊偍浣嶄俊鎭紝涓嶅彲缁勬墭锛岃鏍稿疄锛�");
- }
+ //var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo);
+ //if (stockDetail != null && !string.IsNullOrEmpty(stockDetail.WareHouseNo))
+ //{
+ // throw new Exception("璇ユ墭鐩樺凡鏈夊偍浣嶄俊鎭紝涓嶅彲缁勬墭锛岃鏍稿疄锛�");
+ //}
#endregion
@@ -123,44 +142,20 @@
#region 鍖呰
var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo);
- var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == detail.PackagNo);
-
- var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺
- var bNum = 0;//绠辩爜鐗╁搧鏁伴噺
-
+ if (sku == null)
+ {
+ throw new Exception("褰撳墠鐗╂枡淇℃伅涓嶅瓨鍦紝璇锋牳瀹�!");
+ }
+ var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == sku.PackagNo);
if (pack == null)
{
- throw new Exception("鑾峰彇鐗╂枡鍖呰淇℃伅澶辫触锛岃鏍稿疄!");
+ throw new Exception("褰撳墠鐗╂枡鍖呰淇℃伅涓嶅瓨鍦紝璇锋牳瀹�!");
}
- if (pack.L5Num.HasValue)
- {
- pNum = (int)pack.L5Num;
- bNum = (int)pack.L4Num;
- }
- else if (pack.L4Num.HasValue)
- {
- pNum = (int)pack.L4Num;
- bNum = (int)pack.L3Num;
- }
- else if (pack.L3Num.HasValue)
- {
- pNum = (int)pack.L3Num;
- bNum = (int)pack.L2Num;
- }
- else if (pack.L2Num.HasValue)
- {
- pNum = (int)pack.L2Num;
- bNum = (int)pack.L1Num;
- }
- else if (pack.L1Num.HasValue)
- {
- pNum = (int)pack.L1Num;
- bNum = (int)pack.L1Num;
- }
- if (pNum == 0 || bNum == 0)
- {
- throw new Exception($"缁戝畾澶辫触锛寋detail.SkuNo}鐗╁搧鍖呰鏈壘鍒帮紒");
- }
+ var pNum = 0m;//鎵樼洏鐗╁搧鏁伴噺
+ var bNum = 0m;//绠辩爜鐗╁搧鏁伴噺
+
+ //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺
+ new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum);
#endregion
@@ -209,9 +204,9 @@
//缁戝畾绠辨�绘暟閲�
//model.SkuQty = boxInfoList.Sum(s => s.Qty);
//鍜岄�夋嫨鐨勬壒娆″悓鎵规鐨勭鐮佷俊鎭�
- var sameBoxInfoList = boxInfoList.Where(w => w.LotNo == model.LotNo && w.Status == "0").ToList();
+ var sameBoxInfoList = boxInfoList.Where(w => (w.LotNo ?? "") == model.LotNo && w.Status == "0").ToList();
//鍜岄�夋嫨鐨勬壒娆′笉鍚屾壒娆$殑绠辩爜淇℃伅锛堟嫾绠辨壒娆★級
- var notBoxInfoList = boxInfoList.Where(w => w.LotNo != model.LotNo).ToList();
+ var notBoxInfoList = boxInfoList.Where(w => (w.LotNo ?? "") != model.LotNo).ToList();
#endregion
if (sameBoxInfoList.Count <= 0)
@@ -277,13 +272,13 @@
}
// 鍒ゆ柇搴撳瓨鏄庣粏鏄惁宸叉湁姝ゆ墭鐩樹俊鎭�
- var sd1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.ASNDetailNo == bind.ASNDetailNo && m.PalletNo == model.PalletNo);
+ var sd1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo && m.LotNo == detail.LotNo && m.SkuNo == detail.SkuNo);// && m.ASNDetailNo == bind.ASNDetailNo
var sdId1 = 0;
if (sd1 != null)
{
sdId1 = sd1.Id;
// 搴撳瓨宸插瓨鍦� 鏇存柊鏁版嵁
- sd1.Qty = bind.Qty;
+ sd1.Qty += bind.Qty;
sd1.CompleteTime = comTime;
sd1.UpdateUser = userId;
sd1.UpdateTime = comTime;
@@ -291,7 +286,7 @@
Db.Updateable(sd1).ExecuteCommand();
}
else
- {
+ {
// 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁
sd1 = new DataStockDetail()
{
@@ -322,7 +317,7 @@
InspectMark = bind.InspectMark,
InspectStatus = sku.IsInspect,
BitPalletMark = bind.BitPalletMark,
- PackagNo = detail.PackagNo, //liudl 鐢眘ku鐨勫寘瑁呯紪鍙峰彉涓哄叆搴撳崟鏄庣粏鐨勫寘瑁呯紪鐮�
+ PackagNo = sku.PackagNo,
IsBale = bind.IsBale,
IsBelt = bind.IsBelt,
@@ -330,6 +325,22 @@
CreateUser = 0,
CreateTime = comTime
};
+ if (!string.IsNullOrEmpty(detail.Lot1))
+ {
+ sd1.ProductionTime = Convert.ToDateTime(detail.Lot1);//鐢熶骇鏃ユ湡
+ }
+ if (!string.IsNullOrEmpty(detail.Lot2))
+ {
+ sd1.ExpirationTime = Convert.ToDateTime(detail.Lot2);//鍒版湡鏃ユ湡
+ }
+ var palletData = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == sd1.PalletNo && !string.IsNullOrEmpty(w.LocatNo));
+ if (palletData != null)
+ {
+ sd1.WareHouseNo = palletData.WareHouseNo;
+ sd1.RoadwayNo = palletData.RoadwayNo;
+ sd1.AreaNo = palletData.AreaNo;
+ sd1.LocatNo = palletData.LocatNo;
+ }
//缁存姢搴撳瓨鏄庣粏璐т富/渚涘簲鍟嗕俊鎭� //0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱
if (notice.Type == "0" || notice.Type == "2" || notice.Type == "4" || notice.Type == "6" || notice.Type == "7")
@@ -381,7 +392,7 @@
continue;
}
//绠卞唴鐗╂枡鎵规涓庡崟鎹槑缁嗕笉绗﹀悎
- if (box.SkuNo != detail.SkuNo || box.LotNo != model.LotNo)
+ if (box.SkuNo != detail.SkuNo || (box.LotNo ?? "") != model.LotNo)
{
throw new Exception($"-1:{box.BoxNo}绠卞唴鐗╂枡鍙婃壒娆′笌鍗曟嵁涓嶄竴鑷达紝璇锋牳瀹�!");
}
@@ -489,6 +500,10 @@
}
detail.UpdateUser = userId;
detail.UpdateTime = comTime;
+ if (notice.Type == "4" || notice.Type == "8")
+ {
+ detail.InspectStatus = "1";//杞﹂棿閫�鏂欓粯璁ゆ楠屽悎鏍�
+ }
//鏇存柊鍏ュ簱鍗曟槑缁�
Db.Updateable(detail).ExecuteCommand();
@@ -509,7 +524,10 @@
#endregion
#region 搴撳瓨鏄庣粏
- sd1.Qty = bind.Qty;
+ if (sd1.Qty <= 0)
+ {
+ sd1.Qty = bind.Qty;
+ }
//鏇存敼搴撳瓨鏄庣粏鏁伴噺
Db.Updateable(sd1).Where(m => m.Id == sdId1).ExecuteCommand();
#endregion
@@ -554,7 +572,7 @@
#endregion
#region 璐ㄦ璇烽獙
- if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1")
+ if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1" && sku.IsControlled != "1")
{
var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot);
if (qualityRequest == null)
@@ -1070,7 +1088,7 @@
#endregion
#region 璐ㄦ璇烽獙
- if ((arrNotice.Type == "1" || arrNotice.Type == "4" || arrNotice.Type == "5") && sku.IsInspect != "1")
+ if ((arrNotice.Type == "1" || arrNotice.Type == "4" || arrNotice.Type == "5") && sku.IsInspect != "1" && sku.IsControlled != "1")
{
var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot);
if (qualityRequest == null)
@@ -1123,6 +1141,7 @@
{
try
{
+ Db.BeginTran();
#region 鍒ゆ柇
//0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欏叆搴� 8锛氱敓浜ч��鏂欏叆搴�
@@ -1158,14 +1177,15 @@
else
{
//浠庣墿鏂欏悕绉�-鎵规涓彇鍑烘壒娆�
- int indexOfDash = model.LotNo.IndexOf("-");
+ int indexOfDash = model.LotNo.IndexOf("=>");
if (indexOfDash != -1)
{
- model.LotNo = model.LotNo.Substring(indexOfDash + 1);
+ model.LotNo = model.LotNo.Substring(indexOfDash + 2);
}
else
{
- throw new Exception("鐗╂枡鎵规涓嶅彲涓虹┖!");
+ model.LotNo = "";
+ //throw new Exception("鐗╂枡鎵规涓嶅彲涓虹┖!");
}
}
@@ -1176,65 +1196,50 @@
throw new Exception("鏈煡璇㈠埌鎵樼洏淇℃伅锛岃鏍稿疄锛�");
}
// 楠岃瘉鍏ュ簱鍗曟槑缁嗘槸鍚﹀瓨鍦�
- var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo && m.LotNo.Contains(model.LotNo));
+ var detail = new BllArrivalNoticeDetail();
+ if (string.IsNullOrEmpty(model.LotNo))
+ {
+ detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo);
+ }
+ else
+ {
+ detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo && m.LotNo.Contains(model.LotNo));
+ }
if (detail == null)
{
throw new Exception("褰撳墠鐗╂枡鍙婃壒娆′笌鍗曟嵁鏃犲叧鑱旓紝璇锋牳瀹�!");
}
//鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱澶�
var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo);
- if (stockDetail != null && !string.IsNullOrEmpty(stockDetail.WareHouseNo))
+ if (stockDetail != null && !string.IsNullOrEmpty(stockDetail.WareHouseNo) && stockDetail.WareHouseNo != "W04")
{
throw new Exception("璇ユ墭鐩樺凡鏈夊偍浣嶄俊鎭紝璇锋牳瀹烇紒");
}
- if (stockDetail != null && (stockDetail.SkuNo != detail.SkuNo || stockDetail.LotNo != model.LotNo))
- {
- throw new Exception("璇ユ墭鐩樺湪搴撳瓨宸叉湁鍏跺畠鐗╂枡鎵规淇℃伅锛岃鏍稿疄锛�");
- }
+ //if (stockDetail != null && (stockDetail.SkuNo != detail.SkuNo || stockDetail.LotNo != model.LotNo))
+ //{
+ // throw new Exception("璇ユ墭鐩樺湪搴撳瓨宸叉湁鍏跺畠鐗╂枡鎵规淇℃伅锛岃鏍稿疄锛�");
+ //}
#endregion
#region 鍖呰
var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo);
- var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == detail.PackagNo); // liudl 鐢盨ku鍖呰缂栧彿鍙樻洿涓哄叆搴撳崟鏄庣粏鍖呰缂栧彿
-
- var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺
- var bNum = 0;//绠辩爜鐗╁搧鏁伴噺
-
+ if (sku == null)
+ {
+ throw new Exception("鏈煡璇㈠埌璇ョ墿鏂欎俊鎭紝璇锋牳瀹烇紒");
+ }
+ var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == sku.PackagNo);
if (pack == null)
{
- throw new Exception("鑾峰彇鐗╂枡鍖呰澶辫触锛岃鏍稿疄!");
+ throw new Exception("鏈煡璇㈠埌璇ョ墿鏂欏寘瑁呬俊鎭紝璇锋牳瀹烇紒");
}
- if (pack.L5Num.HasValue)
- {
- pNum = (int)pack.L5Num;
- bNum = (int)pack.L4Num;
- }
- else if (pack.L4Num.HasValue)
- {
- pNum = (int)pack.L4Num;
- bNum = (int)pack.L3Num;
- }
- else if (pack.L3Num.HasValue)
- {
- pNum = (int)pack.L3Num;
- bNum = (int)pack.L2Num;
- }
- else if (pack.L2Num.HasValue)
- {
- pNum = (int)pack.L2Num;
- bNum = (int)pack.L1Num;
- }
- else if (pack.L1Num.HasValue)
- {
- pNum = (int)pack.L1Num;
- bNum = (int)pack.L1Num;
- }
- if (pNum == 0 || bNum == 0)
- {
- throw new Exception($"缁戝畾澶辫触锛寋detail.SkuNo}鐗╁搧鍖呰鏈壘鍒帮紒");
- }
+
+ var pNum = 0m;//鎵樼洏鐗╁搧鏁伴噺
+ var bNum = 0m;//绠辩爜鐗╁搧鏁伴噺
+ //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺
+ new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum);
+
#endregion
@@ -1330,16 +1335,31 @@
{
tags = "1";
}
-
+ //楠岃瘉搴撳瓨鎵樼洏鏄惁鏈夎创鏍囩墿鏂�
+ var skuStr = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0" && m.IsPasteCode == "1").Select(m => m.SkuNo).ToList();
+ var sdHave = Db.Queryable<DataStockDetail>().Count(m => m.IsDel == "0" && m.PalletNo == model.PalletNo && skuStr.Contains(m.SkuNo));
+ if (sdHave>0)
+ {
+ throw new Exception("褰撳墠鎵樼洏鍚湁璐存爣鐗╂枡淇℃伅锛屼笉鑳界粍鎵�");
+ }
// 鍒ゆ柇搴撳瓨鏄庣粏鏄惁宸叉湁姝ゆ墭鐩樹俊鎭�
- var sd1 = Db.Queryable<DataStockDetail>()
- .First(m => m.IsDel == "0" && m.ASNDetailNo == bind.ASNDetailNo && m.PalletNo == model.PalletNo && m.LotNo == bind.LotNo);
+ var sd1 = new DataStockDetail();
+ if (!string.IsNullOrEmpty(bind.LotNo))
+ {
+ sd1 = Db.Queryable<DataStockDetail>()
+ .First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo && m.SkuNo == detail.SkuNo && m.LotNo == bind.LotNo);//&& m.ASNDetailNo == bind.ASNDetailNo
+ }
+ else
+ {
+ sd1 = Db.Queryable<DataStockDetail>()
+ .First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo && m.SkuNo == detail.SkuNo);// && m.ASNDetailNo == bind.ASNDetailNo
+ }
var sdId1 = 0;
if (sd1 != null)
{
sdId1 = sd1.Id;
// 搴撳瓨宸插瓨鍦� 鏇存柊鏁版嵁
- sd1.Qty = bind.Qty;
+ sd1.Qty += bind.Qty;
sd1.CompleteTime = comTime;
sd1.UpdateUser = userId;
sd1.UpdateTime = comTime;
@@ -1384,7 +1404,7 @@
InspectMark = bind.InspectMark,
InspectStatus = inspectStatusStr,
BitPalletMark = bind.BitPalletMark,
- PackagNo = detail.PackagNo, //liudl 鐢眘ku鐨勫寘瑁呯紪鍙峰彉涓哄叆搴撳崟鏄庣粏鐨勫寘瑁呯紪鐮�
+ PackagNo = sku.PackagNo, //liudl 鐢眘ku鐨勫寘瑁呯紪鍙峰彉涓哄叆搴撳崟鏄庣粏鐨勫寘瑁呯紪鐮�
IsBale = bind.IsBale,
IsBelt = bind.IsBelt,
@@ -1392,6 +1412,13 @@
CreateUser = 0,
CreateTime = comTime
};
+ if (stockDetail != null)
+ {
+ sd1.WareHouseNo = stockDetail.WareHouseNo;
+ sd1.AreaNo = stockDetail.AreaNo;
+ sd1.RoadwayNo = stockDetail.RoadwayNo;
+ sd1.LocatNo = stockDetail.LocatNo;
+ }
//缁存姢搴撳瓨鏄庣粏璐т富/渚涘簲鍟嗕俊鎭� //0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱
if (notice.Type == "0" || notice.Type == "2" || notice.Type == "4" || notice.Type == "6" || notice.Type == "7")
@@ -1425,8 +1452,6 @@
sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity();
}
#endregion
-
-
#region 鏇存敼缁勬墭淇℃伅
@@ -1497,10 +1522,12 @@
Db.Updateable(notice).ExecuteCommand();
#endregion
- #region 搴撳瓨鏄庣粏
+ #region 鏇存敼搴撳瓨鏄庣粏鏁伴噺
+
sd1.Qty = bind.Qty;
//鏇存敼搴撳瓨鏄庣粏鏁伴噺
Db.Updateable(sd1).Where(m => m.Id == sdId1).ExecuteCommand();
+
#endregion
#region 搴撳瓨
@@ -1544,7 +1571,7 @@
#endregion
#region 璐ㄦ璇烽獙
- if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1")
+ if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1" && sku.IsControlled != "1")
{
var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot);
if (qualityRequest == null)
@@ -1574,9 +1601,12 @@
sqlStr += $"insert into LogPalletTrack values('{model.PalletNo}','{model.AsnNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);";
Db.Ado.ExecuteCommand(sqlStr);
new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "鎵樼洏缁戝畾", model.AsnNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{model.PalletNo}鐨勭粍鐩樹俊鎭�", userId);
+
+ Db.CommitTran();
}
catch (Exception e)
{
+ Db.RollbackTran();
throw new Exception(e.Message);
}
}
@@ -1589,13 +1619,11 @@
{
try
{
- var item = Expressionable.Create<BllArrivalNoticeDetail>()
- .AndIF(true, it => it.IsDel == "0")
- .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏�
-
- var modelList = Db.Queryable<BllArrivalNoticeDetail>().Where(item)
- .LeftJoin<BllArrivalNotice>((tb1, tb2) => tb1.ASNNo == tb2.ASNNo && tb2.IsDel == "0" && (tb1.Status == "0" || tb1.Status == "1"))
- .LeftJoin<SysMaterials>((tb1, tb2, tb3) => tb1.SkuNo == tb3.SkuNo && tb3.IsDel == "0" && tb3.IsPasteCode == "1")
+
+ var modelList = Db.Queryable<BllArrivalNoticeDetail>()
+ .LeftJoin<BllArrivalNotice>((tb1, tb2) => tb1.ASNNo == tb2.ASNNo )
+ .LeftJoin<SysMaterials>((tb1, tb2, tb3) => tb1.SkuNo == tb3.SkuNo )
+ .Where((tb1, tb2, tb3) => tb1.IsDel == "0" && tb2.IsDel == "0" && (tb2.Status == "0" || tb2.Status == "1") && tb3.IsDel == "0" && tb3.IsPasteCode == "1")
.Select((tb1, tb2, tb3) => tb1.ASNNo).Distinct().ToList();
return modelList;
@@ -1613,13 +1641,11 @@
{
try
{
- var item = Expressionable.Create<BllArrivalNoticeDetail>()
- .AndIF(true, it => it.IsDel == "0")
- .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏�
- var modelList = Db.Queryable<BllArrivalNoticeDetail>().Where(item)
- .LeftJoin<BllArrivalNotice>((tb1, tb2) => tb1.ASNNo == tb2.ASNNo && tb2.IsDel == "0" && (tb2.Status == "0" || tb2.Status == "1"))
- .LeftJoin<SysMaterials>((tb1, tb2, tb3) => tb1.SkuNo == tb3.SkuNo && tb3.IsDel == "0" && tb3.IsPasteCode == "0")
+ var modelList = Db.Queryable<BllArrivalNoticeDetail>()
+ .LeftJoin<BllArrivalNotice>((tb1, tb2) => tb1.ASNNo == tb2.ASNNo )
+ .LeftJoin<SysMaterials>((tb1, tb2, tb3) => tb1.SkuNo == tb3.SkuNo )
+ .Where((tb1, tb2, tb3) => tb1.IsDel == "0" && tb2.IsDel == "0" && (tb2.Status == "0" || tb2.Status == "1") && tb3.IsDel == "0" && tb3.IsPasteCode == "0")
.Select((tb1, tb2, tb3) => tb1.ASNNo).Distinct().ToList();
return modelList;
@@ -1775,7 +1801,7 @@
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
- public List<BoxInfoDto> GetBindBoxInfos(BoxInfoVm model)
+ public List<BoxInfoDto> GetBindBoxInfos(BoxInfoVm model,string url)
{
try
{
@@ -1783,27 +1809,307 @@
{
throw new Exception("璇锋壂鎻忓绠辨潯鐮�!");
}
- string sqlString = $@"SELECT
- ASNNo,
- BoxNo,
- SkuNo,
- SkuName,
- LotNo,
- BitBoxMark,
- SUM(Qty) as Qty
- FROM BllBoxInfo
- WHERE IsDel = '0'
- AND Status='0'
- AND BoxNo = '{model.BoxNo}'
- GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
- var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
-
- if (models.Count == 0)
+ if (string.IsNullOrWhiteSpace(model.ASNNo))
{
- throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!");
+ throw new Exception("璇烽�夋嫨鍏ュ簱鍗曞彿!");
}
+ var noticeList = Db.Queryable<BllArrivalNotice>().Where(m => m.IsDel == "0" && m.ASNNo == model.ASNNo).ToList();
+ if (noticeList.Count != 1)
+ {
+ throw new Exception("鍏ュ簱鍗曞彿閲嶅!");
+ }
+ var notice = noticeList.First();
+ if (notice.Type == "0") //鎴愬搧鍏ュ簱
+ {
+ string sqlString = $@"SELECT
+ ASNNo,
+ BoxNo,
+ SkuNo,
+ SkuName,
+ LotNo,
+ BitBoxMark,
+ SUM(Qty) as Qty
+ FROM BllBoxInfo
+ WHERE IsDel = '0'
+ AND Status='0'
+ AND BoxNo = '{model.BoxNo}'
+ GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+ var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
- return models;
+ if (models.Count != 0)
+ {
+ return models;
+ }
+ else
+ {
+ var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo).ToList();
+
+ if (boxInfo.Count == 0)
+ {
+ models = GetFMBindBoxInfos(model.BoxNo, url);
+ return models;
+ }
+ else
+ {
+ if (boxInfo.Count(m => m.Status != "0") > 0)
+ {
+ throw new Exception("绠辩爜淇℃伅鐘舵�佷笉鏄瓑寰呮墽琛�");
+ }
+ return models;
+ }
+
+
+
+ }
+ }
+ else if (notice.Type == "1" || notice.Type == "4" || notice.Type == "8") //閲囪喘鍏ュ簱
+ {
+ string sqlString = $@"SELECT
+ ASNNo,
+ BoxNo,
+ SkuNo,
+ SkuName,
+ LotNo,
+ BitBoxMark,
+ SUM(Qty) as Qty
+ FROM BllBoxInfo
+ WHERE IsDel = '0'
+ AND Status='0'
+ AND BoxNo = '{model.BoxNo}'
+ GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+ var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
+
+ if (models.Count != 0)
+ {
+ return models;
+ }
+ else
+ {
+ throw new Exception("娌℃湁鏌ヨ鍒扮鐮佷俊鎭�");
+ }
+ }
+ else if (notice.Type == "3") //閫�璐у叆搴�
+ {
+ string sqlString = $@"SELECT
+ ASNNo,
+ BoxNo,
+ SkuNo,
+ SkuName,
+ LotNo,
+ BitBoxMark,
+ SUM(Qty) as Qty
+ FROM BllBoxInfo
+ WHERE IsDel = '0'
+ AND Status='0'
+ AND BoxNo = '{model.BoxNo}'
+ GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+ var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
+
+ if (models.Count != 0)
+ {
+ return models;
+ }
+ else
+ {
+ sqlString = $@"SELECT
+ ASNNo,
+ BoxNo,
+ SkuNo,
+ SkuName,
+ LotNo,
+ BitBoxMark,
+ SUM(Qty) as Qty
+ FROM BllBoxInfo
+ WHERE IsDel = '0'
+ AND Status='0'
+ AND BoxNo2 = '{model.BoxNo}'
+ GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+ models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
+ if (models.Count != 0)
+ {
+ return models;
+ }
+ else
+ {
+ sqlString = $@"SELECT
+ ASNNo,
+ BoxNo,
+ SkuNo,
+ SkuName,
+ LotNo,
+ BitBoxMark,
+ SUM(Qty) as Qty
+ FROM BllBoxInfo
+ WHERE IsDel = '0'
+ AND Status='0'
+ AND BoxNo3 = '{model.BoxNo}'
+ GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+ models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
+ if (models.Count != 0)
+ {
+ return models;
+ }
+ }
+ }
+
+ #region 鑾峰彇鏈�鍚庝竴娆″嚭搴撴嫞璐т腑鐨勭鐮佷俊鎭�
+
+ var comBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo).GroupBy(m => m.ExportAllotId).Select(m => m.ExportAllotId).ToList();
+ if (comBox.Count == 0)
+ {
+ comBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo2 == model.BoxNo).GroupBy(m => m.ExportAllotId).Select(m => m.ExportAllotId).ToList();
+ if (comBox.Count == 0)
+ {
+ comBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo3 == model.BoxNo).GroupBy(m => m.ExportAllotId).Select(m => m.ExportAllotId).ToList();
+ }
+ }
+ var i = 0;//寰幆娆℃暟
+ DateTime time = DateTime.Now;
+ var allotId = 0;
+ foreach (var item in comBox)
+ {
+ var comBoxList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == item).OrderByDescending(m => m.CreateTime).First();
+ if (i == 0)
+ {
+ time = comBoxList.CreateTime;
+ allotId = comBoxList.ExportAllotId;
+ }
+ else if (comBoxList.CreateTime > time)
+ {
+ time = comBoxList.CreateTime;
+ allotId = comBoxList.ExportAllotId;
+ }
+ i++;
+ }
+ if (allotId != 0)
+ {
+ var addComBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allotId).ToList();
+ var addComList = addComBox.GroupBy(m => m.BoxNo).ToList();
+ var sku = Db.Queryable<SysMaterials>().First(m => m.SkuNo == addComBox.First().SkuNo);
+ var pNum = 0m;
+ var bNum = 0m;
+ new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum);
+ var boxList = new List<BllBoxInfo>();
+ foreach (var com in addComList)
+ {
+ //绠卞唴鎬绘暟鍜�
+ var qtySum = addComBox.Where(m => m.BoxNo == com.Key).Sum(m => m.CompleteQty);
+ var bitBox = "1";
+ if (qtySum == bNum)
+ {
+ bitBox = "0";
+ }
+ foreach (var item in com)
+ {
+ if (item.BoxNo != model.BoxNo)
+ {
+ if (item.BoxNo2 != model.BoxNo)
+ {
+ if (item.BoxNo3 != model.BoxNo)
+ {
+ continue;
+ }
+ }
+ }
+ var boxInfo = new BllBoxInfo()
+ {
+ BoxNo = item.BoxNo,
+ BoxNo2 = item.BoxNo2,
+ BoxNo3 = item.BoxNo3,
+ SkuNo = item.SkuNo,
+ SkuName = item.SkuName,
+ LotNo = item.LotNo,
+ LotText = item.LotText,
+ Qty = (decimal)item.CompleteQty,
+ FullQty = bNum,
+ //ProductionTime = ,
+ //ExpirationTime = ,
+ InspectMark = "0",
+ InspectStatus = "0",
+ BitBoxMark = bitBox,
+ Origin = "WMS",
+ Status = "0",
+ CreateUser = 0
+ };
+ boxList.Add(boxInfo);
+ }
+
+ }
+ Db.Insertable(boxList).ExecuteCommand();
+
+ string sqlString2 = $@"SELECT
+ ASNNo,
+ BoxNo,
+ SkuNo,
+ SkuName,
+ LotNo,
+ BitBoxMark,
+ SUM(Qty) as Qty
+ FROM BllBoxInfo
+ WHERE IsDel = '0'
+ AND Status='0'
+ AND BoxNo = '{model.BoxNo}'
+ GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+ var models2 = Db.Ado.SqlQuery<BoxInfoDto>(sqlString2);
+
+ if (models2.Count != 0)
+ {
+ return models2;
+ }
+ else
+ {
+ sqlString2 = $@"SELECT
+ ASNNo,
+ BoxNo,
+ SkuNo,
+ SkuName,
+ LotNo,
+ BitBoxMark,
+ SUM(Qty) as Qty
+ FROM BllBoxInfo
+ WHERE IsDel = '0'
+ AND Status='0'
+ AND BoxNo2 = '{model.BoxNo}'
+ GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+ models2 = Db.Ado.SqlQuery<BoxInfoDto>(sqlString2);
+ if (models2.Count != 0)
+ {
+ return models2;
+ }
+ else
+ {
+ sqlString2 = $@"SELECT
+ ASNNo,
+ BoxNo,
+ SkuNo,
+ SkuName,
+ LotNo,
+ BitBoxMark,
+ SUM(Qty) as Qty
+ FROM BllBoxInfo
+ WHERE IsDel = '0'
+ AND Status='0'
+ AND BoxNo3 = '{model.BoxNo}'
+ GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+ models2 = Db.Ado.SqlQuery<BoxInfoDto>(sqlString2);
+ if (models2.Count != 0)
+ {
+ return models2;
+ }
+ }
+ }
+
+
+ }
+
+ throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!");
+ #endregion
+
+ }
+ else
+ {
+ throw new Exception("鍗曟嵁绫诲瀷閿欒");
+ }
}
catch (Exception ex)
{
@@ -1816,21 +2122,83 @@
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
- public List<BoxInfoDto> GetFMBindBoxInfos(string boxno)
+ /*public List<BoxInfoDto> GetFMBindBoxInfos(string boxno,string url)
{
try
{
#region 绠辩爜璇锋眰鎺ュ彛锛屾寮忕郴缁熸斁寮�
- /*var jsonData = JsonConvert.SerializeObject(boxno);
+ var data = new
+ {
+ BoxCode = boxno
+ };
+ var jsonData = JsonConvert.SerializeObject(data);
var response = HttpHelper.DoPost(url, jsonData, "绠辩爜淇℃伅璇锋眰", "FM");
- var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁
- if (obj.Success != 0)
+ var obj = JsonConvert.DeserializeObject<FumaGetBoxModel>(response);//瑙f瀽杩斿洖鏁版嵁
+ if (obj.Success != "0")
{
throw new Exception("璇锋眰澶辫触" + obj.Message);
- }*/
+ }
#endregion
+ var sku = Db.Queryable<SysMaterials>().First(m => m.SkuNo == obj.Product.SkuNo);
+ var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺
+ var bNum = 0;//绠辩爜鐗╁搧鏁伴噺
+ if (sku == null)
+ {
+ throw new Exception($"鏈煡璇㈠埌鐗╂枡{obj.Product.SkuNo}淇℃伅");
+ }
+ new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum);
+ if (pNum == 0 || bNum == 0)
+ {
+ throw new Exception($"{sku.SkuNo}鐗╁搧鍖呰鏈壘鍒帮紒");
+ }
+
+ var boxList = new List<BllBoxInfo>();
+ var comTime = DateTime.Now;
+ //娣诲姞绠辩爜淇℃伅
+ foreach (var box in obj.Product.BoxInfoList)
+ {
+ foreach (var box2 in box.BoxInfo2List)
+ {
+ foreach (var box3 in box2.BoxInfo3List)
+ {
+ var boxInfo = new BllBoxInfo()
+ {
+ BoxNo = box.BoxNo,
+ BoxNo2 = box2.BoxNo2,
+ BoxNo3 = box3.BoxNo3,
+ Qty = box3.Qty,
+ BitBoxMark = box.BitBoxMark,
+
+ ASNNo = "",
+ //ASNDetailNo = noticeDetail.Id,
+ OrderCode = "",//notice.OrderCode
+ //BindNo = bindId,
+ //PalletNo = model.PallNo,
+ FullQty = bNum,
+ Status = "2",
+ SkuNo = sku.SkuNo,
+ SkuName = sku.SkuName,
+ LotNo = obj.Product.LotNo,
+ LotText = obj.Product.LotText,
+ ProductionTime = DateTime.Parse(obj.Product.ProductionTime),
+ ExpirationTime = DateTime.Parse(obj.Product.ExpirationTime),
+ //CompleteTime = "",
+ InspectMark = "0",
+ InspectStatus = "0",
+ Origin = "璧嬬爜",
+ CreateTime = comTime,
+ CreateUser = 0
+ };
+ boxList.Add(boxInfo);
+ }
+
+ }
+ }
+ Db.Fastest<BllBoxInfo>().BulkCopy(boxList);
+
+
string sqlString = $@"SELECT
ASNNo,
BoxNo,
@@ -1857,17 +2225,883 @@
{
throw ex;
}
+ }*/
+
+ public List<BoxInfoDto> GetFMBindBoxInfos(string boxno, string url)
+ {
+ try
+ {
+ #region 绠辩爜璇锋眰鎺ュ彛锛屾寮忕郴缁熸斁寮�
+ var data = new
+ {
+ BoxNo = boxno
+ };
+ var jsonData = JsonConvert.SerializeObject(data);
+
+ var response = HttpHelper.DoPost(url, jsonData, "绠辩爜淇℃伅璇锋眰", "FM");
+
+ var obj = JsonConvert.DeserializeObject<FuMaPostModel>(response);//瑙f瀽杩斿洖鏁版嵁
+ if (obj.Success != true)
+ {
+ throw new Exception("璇锋眰澶辫触" + obj.Message);
+ }
+ #endregion
+
+ if (string.IsNullOrEmpty(obj.Data.SkuNo))
+ {
+ //娴嬭瘯鐢紝鍙戝竷姝e紡鍓嶅垹闄ゆ娈典唬鐮�
+ //obj.Data.SkuNo = "50004632";
+ throw new Exception($"鐗╂枡缂栫爜涓嶈兘涓虹┖");
+ }
+
+ //鏌ユ壘鐗╂枡淇℃伅
+ var sku = Db.Queryable<SysMaterials>().First(m => m.SkuNo == obj.Data.SkuNo);
+ if (sku == null)
+ {
+ throw new Exception($"鏈煡璇㈠埌鐗╂枡{obj.Data.SkuNo}淇℃伅");
+ }
+
+ var pNum = 0m;//鎵樼洏鐗╁搧鏁伴噺
+ var bNum = 0m;//绠辩爜鐗╁搧鏁伴噺
+ //鑾峰彇鍖呰淇℃伅
+ new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum);
+ if (pNum == 0 || bNum == 0)
+ {
+ throw new Exception($"{sku.SkuNo}鐗╁搧鍖呰鏈壘鍒帮紒");
+ }
+
+ var boxList = new List<BllBoxInfo>();
+ var comTime = DateTime.Now;
+ //娣诲姞绠辩爜淇℃伅
+ foreach (var box in obj.Data.DetailList)
+ {
+ foreach (var box2 in box.DetailList2)
+ {
+ var boxInfo = new BllBoxInfo()
+ {
+ BoxNo = obj.Data.BoxNo,
+ BoxNo2 = box.BoxNo2,
+ BoxNo3 = box2.BoxNo3,
+ Qty = obj.Data.Qty,
+ BitBoxMark = obj.Data.BitBoxMark,
+
+ ASNNo = "",
+ //ASNDetailNo = noticeDetail.Id,
+ OrderCode = "",//notice.OrderCode
+ //BindNo = bindId,
+ //PalletNo = model.PallNo,
+ FullQty = bNum,
+ Status = "0",
+ SkuNo = sku.SkuNo,
+ SkuName = sku.SkuName,
+ LotNo = box2.LotNo,
+ LotText = obj.Data.LotNoBoxNum,
+ ProductionTime = DateTime.Parse(box2.ProductionTime),
+ ExpirationTime = DateTime.Parse(box2.ExpirationTime),
+ //CompleteTime = "",
+ InspectMark = "0",
+ InspectStatus = "0",
+ Origin = "璧嬬爜",
+ CreateTime = comTime,
+ CreateUser = 0
+ };
+ boxList.Add(boxInfo);
+ };
+ }
+ try
+ {
+ //寮�鍚簨鍔�
+ Db.BeginTran();
+
+ Db.Fastest<BllBoxInfo>().BulkCopy(boxList);
+
+ //鎻愪氦浜嬪姟
+ Db.CommitTran();
+ }
+ catch (Exception ex)
+ {
+ //鍥炴粴浜嬪姟
+ Db.RollbackTran();
+ throw new Exception("鎻掑叆绠辩爜澶辫触锛�" + ex.Message);
+ }
+
+ string sqlString = $@"SELECT
+ ASNNo,
+ BoxNo,
+ SkuNo,
+ SkuName,
+ LotNo,
+ BitBoxMark,
+ SUM(Qty) as Qty
+ FROM BllBoxInfo
+ WHERE IsDel = '0'
+ AND Status='0'
+ AND BoxNo = '{boxno}'
+ GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+
+ var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
+
+ if (models.Count == 0)
+ {
+ throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!");
+ }
+ return models;
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
}
+ /// <summary>
+ /// 楠岃瘉鎵樼洏鏄惁瀛樺湪
+ /// </summary>
+ /// <param name="palletNo">鎵樼洏鍙�</param>
+ /// <returns>"":鍙娇鐢� -1:涓嶅彲浣跨敤锛堝師鍥�)</returns>
+ public string IsEnablePalletNo(string palletNo)
+ {
+ string sqlMsg = "";
+ string sqlString = string.Empty;
+ try
+ {
+ sqlString = $"select * from SysPallets where PalletNo = '{palletNo}' and isdel = '0';";
+ var models = Db.Ado.SqlQuery<PalletBindVm>(sqlString);
+
+ if (models.Count > 1)
+ {
+ sqlMsg = "-1:瀛樺湪閲嶅鎵樼洏鍙�,璇锋鏌�!";
+ return sqlMsg;
+ }
+ if (models.Count > 0)
+ {
+ if (models[0].Status == "1")
+ {
+ var detail = Db.Queryable<DataStockDetail>().First(m=>m.PalletNo == palletNo );
+
+ if (detail!= null && !string.IsNullOrWhiteSpace(detail.LocatNo))
+ {
+ var pingAreaStr = Db.Queryable<SysStorageArea>().Where(m => m.IsDel == "0" && m.WareHouseNo == "W04" && m.AreaNo != "B06" && m.AreaNo != "B07").Select(m => m.AreaNo).ToList();
+ var pingLocateInfo = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == detail.LocatNo && pingAreaStr.Contains(m.AreaNo) && m.IsDel == "0");
+ if (pingLocateInfo == null)
+ {
+ sqlMsg = "-1:鎵樼洏浣跨敤涓紝姝ゆ墭鐩樺簲鍦ㄥ簱鍐呰鏍稿疄!";
+ }
+ }
+ }
+ }
+ else
+ {
+ sqlMsg = "-1:鎵樼洏鍙蜂笉瀛樺湪!";
+ }
+
+ return sqlMsg;
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+
+ /// <summary>
+ /// 鏍规嵁鍗曟嵁鑾峰彇鏍囩鏁伴噺
+ /// </summary>
+ /// <param name="asnNo">鍏ュ簱鍗�</param>
+ /// <param name="asnDetailId">鍏ュ簱鍗曟槑缁嗗彿</param>
+ /// <returns></returns>
+ public BoxListInfoDto GetBoxCountByAsn(string asnNo,int? asnDetailId)
+ {
+ try
+ {
+
+ var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == asnDetailId);
+ if (detail == null)
+ {
+ throw new Exception("娌℃湁鏌ヨ鍒板崟鎹槑缁嗕俊鎭�");
+ }
+ var data = new BoxListInfoDto()
+ {
+ SkuNo = detail.SkuNo,
+ SkuName = detail.SkuName,
+ LotNo = detail.LotNo,
+
+ };
+ //鑾峰彇鐘舵�佹槸鏈粍鎵樼殑鏍囩淇℃伅
+ var models = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId && m.Status == "0")
+ .GroupBy(m=> new { m.ProductionTime,m.ExpirationTime })
+ .Select(m=>new { m.ProductionTime ,m.ExpirationTime}).OrderBy(m=>m.ProductionTime).ToList();//&& m.Status == "0"
+ foreach (var item in models)
+ {
+ var boxNoList = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.Status == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId && m.ProductionTime == item.ProductionTime).Select(m => m.BoxNo).ToList();
+ if (boxNoList.Count > 0)
+ {
+ data.BoxNoList = boxNoList;
+ data.Date1 = item.ProductionTime == null ? "" : Convert.ToDateTime(item.ProductionTime).ToString("yyyy-MM-dd");
+ data.Date2 = item.ExpirationTime == null ? "" : Convert.ToDateTime(item.ExpirationTime).ToString("yyyy-MM-dd");
+
+ break;
+ }
+ }
+ return data;
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+
+ /// <summary>
+ /// 淇濆瓨鎸囧畾鐨勫偍浣�
+ /// </summary>
+ /// <param name="palletNo"></param>
+ /// <param name="locateNo"></param>
+ /// <param name="userId"></param>
+ /// <exception cref="Exception"></exception>
+ public void SaveAppointLocate(string palletNo, string locateNo, int userId)
+ {
+ try
+ {
+ //鎵樼洏搴撳瓨淇℃伅
+ var stockDetailList = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).ToList();
+ if (stockDetailList.Count(m=> string.IsNullOrWhiteSpace(m.LocatNo)) > 0)
+ {
+ throw new Exception("鎵樼洏娌℃湁鍦ㄥ钩搴撳偍浣嶄笂");
+ }
+ //鍒ゆ柇鎵樼洏鐨勫偍浣嶆槸鍚︽槸骞冲簱
+ var stockDetail = stockDetailList.First();
+ var oldLocate = stockDetail.LocatNo;
+ var pingAreaStr = Db.Queryable<SysStorageArea>().Where(m => m.IsDel == "0" && m.WareHouseNo == "W04" && m.AreaNo != "B06" && m.AreaNo != "B07").Select(m => m.AreaNo).ToList();
+ var pingLocateInfo = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == oldLocate && pingAreaStr.Contains(m.AreaNo) && m.IsDel == "0");
+ if (pingLocateInfo == null)
+ {
+ throw new Exception("褰撳墠鎵樼洏鎵�鍦ㄧ殑鍌ㄤ綅娌℃湁鍦ㄧ郴缁熶腑鎵惧埌淇℃伅");
+ }
+
+ var skuList = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0").ToList();
+ //楠岃瘉鐗╂枡鏄惁鏈夋垚鍝�
+ foreach (var item in stockDetailList)
+ {
+ var skuItem = skuList.First(m => m.SkuNo == item.SkuNo);
+ if (skuItem.Type == "2")
+ {
+ throw new Exception("鎴愬搧鐗╂枡璇峰叆鎴愬搧搴�");
+ }
+ }
+ //鍌ㄤ綅
+ var locate = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.LocatNo == locateNo);
+ if (locate == null)
+ {
+ throw new Exception("鏈煡璇㈠埌鍌ㄤ綅鐨勪俊鎭�");
+ }
+ if (locate.WareHouseNo != "W02")
+ {
+ throw new Exception("鍙兘鎸囧畾绔嬪簱鐨勫偍浣�");
+ }
+ if (locate.Status != "0" || locate.Flag != "0")
+ {
+ throw new Exception("璇ュ偍浣嶇姸鎬佷笉鏄┖鍌ㄤ綅鎴栨爣蹇椾笉鏄甯哥殑");
+ }
+
+
+ Db.BeginTran();
+ try
+ {
+ var time = DateTime.Now;
+ //鍒ゆ柇褰撳墠鎵樼洏鏄惁瀛樺湪缁戝畾淇℃伅
+ var task = Db.Queryable<LogTask>().First(m=> m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1") && m.OrderType == "0" && m.Type == "0");
+
+ var upShelf = Db.Queryable<BllPalletUpShelf>().First(m => m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1"));
+ if (task != null)
+ {
+ if (task.Status == "1")
+ {
+ throw new Exception("鎵樼洏姝e湪鎵ц浠诲姟锛屼笉鍙寚瀹氬偍浣�");
+ }
+ if (task.Status == "0")
+ {
+ if (upShelf != null)
+ {
+ if (upShelf.Status == "1")
+ {
+ throw new Exception("鎵樼洏姝e湪鎵ц涓婃灦浠诲姟锛屼笉鍙寚瀹氬偍浣�");
+ }
+ if (upShelf.Status == "0")
+ {
+ if (locate.LocatNo == task.EndLocat)
+ {
+ throw new Exception("宸叉寚瀹氬偍浣嶏紝鏃犻渶閲嶅鎸囧畾");
+ }
+ //閲嶆柊鎸囧畾鍌ㄤ綅
+ task.EndLocat = locate.LocatNo;
+ task.EndRoadway = locate.RoadwayNo;
+ upShelf.LocatNo = locate.LocatNo;
+ upShelf.RoadwayNo = locate.RoadwayNo;
+ Db.Updateable(task).ExecuteCommand();
+ Db.Updateable(upShelf).ExecuteCommand();
+ new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "鎸囧畾鍌ㄤ綅", palletNo, "缂栬緫", $"鎸囧畾浜嗗偍浣嶏細{locate.LocatNo}銆佹墭鐩樼爜锛歿palletNo}鐨勪俊鎭�", userId);
+ Db.CommitTran();
+ return;
+ }
+ }
+ else
+ {
+ throw new Exception("鏌ヨ鍑轰换鍔′絾娌℃湁涓婃灦璁板綍锛屼俊鎭敊璇�");
+ }
+ }
+ }
+
+ // 娣诲姞鍏ュ簱鏃ュ織璁板綍
+ var taskNo = new Common().GetMaxNo("TK");
+ var addTask = new LogTask //鍏ュ簱浠诲姟
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "WCS",
+ IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+ SendDate = DateTime.Now, //鍙戦�佹椂闂�
+ //BackDate = DateTime.Now, //杩斿洖鏃堕棿
+ StartRoadway = "", // 璧峰宸烽亾
+ StartLocat = oldLocate,//璧峰浣嶇疆
+ EndLocat = locate.LocatNo,//鐩爣浣嶇疆
+ EndRoadway = locate.RoadwayNo, // 鐩爣宸烽亾
+ PalletNo = palletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ OrderType = "0",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ Msg = $"{oldLocate}鍒�=>>{locate.LocatNo}鐨勫叆搴撲换鍔�", //鍏抽敭淇℃伅
+
+ };
+ Db.Insertable(addTask).ExecuteCommand();
+
+ //娣诲姞鎵樼洏涓婃灦璁板綍
+ var upShelfAdd = new BllPalletUpShelf()
+ {
+ TaskNo = addTask.TaskNo,
+ TraceNo = "",
+ PalletNo = palletNo,
+ SkuNo = stockDetail.SkuNo,
+ SkuName = stockDetail.SkuName,
+ LotNo = stockDetail.LotNo,
+ Status = "0",
+
+ WareHouseNo = locate.WareHouseNo,
+ RoadwayNo = locate.RoadwayNo,
+ AreaNo = locate.AreaNo,
+ LocatNo = locate.LocatNo,
+
+ CreateUser = 0,
+ };
+ Db.Insertable(upShelfAdd).ExecuteCommand();
+
+ locate.Status = "2";
+
+ Db.Updateable(locate).ExecuteCommand();
+
+ new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "鎸囧畾鍌ㄤ綅", palletNo, "缂栬緫", $"鎸囧畾浜嗗偍浣嶏細{locate.LocatNo}銆佹墭鐩樼爜锛歿palletNo}鐨勪俊鎭�", userId);
+ Db.CommitTran();
+ }
+ catch (Exception e)
+ {
+ Db.RollbackTran();
+ throw new Exception(e.Message);
+ }
+
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ }
+
+ /// <summary>
+ /// 鏍规嵁绠辩爜鑾峰彇鏍囩绠辩爜淇℃伅锛堣溅闂村叆搴�-鑾峰彇WMS鐢熸垚鐨勭淇℃伅锛�
+ /// </summary>
+ /// <param name="model"></param>
+ /// <returns></returns>
+ public List<BoxInfoDto> GetWmsBoxInfos(string boxNo)
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(boxNo))
+ {
+ throw new Exception("璇锋壂鎻忓绠辨潯鐮�!");
+ }
+
+ string sqlString = $@"SELECT BoxNo, SkuNo, SkuName, LotNo, BitBoxMark, SUM(Qty) as Qty FROM BllBoxInfo
+ WHERE IsDel = '0' and Status='0' and BoxNo = '{boxNo}'
+ GROUP BY BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+ var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
+
+ if (models.Count != 0)
+ {
+ return models;
+ }
+ else
+ {
+ throw new Exception("娌℃湁鏌ヨ鍒扮鐮佷俊鎭�");
+ }
+
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+
+ // 杞﹂棿缁戝畾鎵樼洏-璐存爣
+ public void ChejianIn(string palletNo,string boxNo,decimal qty,string areaNo,int userId)
+ {
+ try
+ {
+ #region MyRegion
+
+ if (string.IsNullOrWhiteSpace(palletNo))
+ {
+ throw new Exception("鎵樼洏鍙蜂笉鑳戒负绌�");
+ }
+ if (string.IsNullOrWhiteSpace(boxNo))
+ {
+ throw new Exception("绠卞彿涓嶈兘涓虹┖");
+ }
+ if (qty<=0)
+ {
+ throw new Exception("鏁伴噺涓嶈兘灏忕瓑0");
+ }
+ var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo).ToList();
+ if (boxInfo.Count == 0)
+ {
+ throw new Exception("鏈煡璇㈠埌褰撳墠绠卞彿淇℃伅");
+ }
+ var boxInfoOne = boxInfo.First();
+ var pall = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNo);
+ if (pall == null)
+ {
+ throw new Exception("鏈煡璇㈠埌褰撳墠鎵樼洏淇℃伅");
+ }
+ #endregion
+
+ //寮�鍚簨鍔�
+ Db.BeginTran();
+ //褰撳墠鏃堕棿
+ var comTime = DateTime.Now;
+
+ #region 鍖呰
+
+ var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == boxInfoOne.SkuNo);
+ var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == sku.PackagNo);
+
+ var pNum = 0m;//鎵樼洏鐗╁搧鏁伴噺
+ var bNum = 0m;//绠辩爜鐗╁搧鏁伴噺
+
+ //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺
+ new Common().GetPackQtyInfo(pack.PackagNo, ref pNum, ref bNum);
+
+ #endregion
+
+ var msgStr = $"绠卞彿涓簕boxNo}";
+ var boxInfoList = new List<BllBoxInfo>();
+
+
+ boxInfoList.AddRange(boxInfo);
+
+ #region 搴撳瓨鏄庣粏
+
+ var area = Db.Queryable<SysStorageArea>().First(m => m.IsDel == "0" && m.AreaNo == areaNo);
+ if (area == null)
+ {
+ throw new Exception("鍏ュ簱鍖哄煙涓嶈兘涓虹┖");
+ }
+
+ var tags = "0";
+
+ // 鍒ゆ柇搴撳瓨鏄庣粏鏄惁宸叉湁姝ゆ墭鐩樹俊鎭�
+ var sd1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.SkuNo== boxInfoOne.SkuNo && m.LotNo == boxInfoOne.LotNo && m.PalletNo == palletNo);
+ var sdId1 = 0;
+ if (sd1 != null)
+ {
+ if (sd1.AreaNo!= areaNo)
+ {
+ throw new Exception("閫夋嫨鐨勫尯鍩熶笌搴撳瓨涓嶅悓");
+ }
+ sdId1 = sd1.Id;
+ // 搴撳瓨宸插瓨鍦� 鏇存柊鏁版嵁
+ sd1.Qty += qty;
+ sd1.CompleteTime = comTime;
+ sd1.UpdateUser = userId;
+ sd1.UpdateTime = comTime;
+
+ Db.Updateable(sd1).ExecuteCommand();
+ }
+ else
+ {
+ var sd2 = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == palletNo && m.IsDel == "0" && !string.IsNullOrWhiteSpace(m.AreaNo));
+ if (sd2.Count(m=>m.AreaNo!= areaNo) > 0)
+ {
+ throw new Exception("褰撳墠鎵樼洏浣嶇疆涓庨�夋嫨鐨勪笉鍚岋紝璇锋牳瀹�");
+ }
+ // 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁
+ sd1 = new DataStockDetail()
+ {
+ ASNNo = "",
+ LotNo = boxInfoOne.LotNo,
+ LotText = boxInfoOne.LotText,
+ SupplierLot = boxInfoOne.SupplierLot,
+ SkuNo = sku.SkuNo,
+ SkuName = sku.SkuName,
+ Standard = sku.Standard,
+ Qty = qty,
+ LockQty = 0,
+ FrozenQty = 0,
+ InspectQty = 0,
+ WareHouseNo = area.WareHouseNo,//鎵�灞炰粨搴�
+ RoadwayNo = "",//鎵�灞炲贩閬�
+ AreaNo = area.AreaNo,//鎵�灞炲尯鍩�
+ LocatNo = "",//鍌ㄤ綅鍦板潃
+ PalletNo = palletNo,
+ PalletTags = tags,
+ CompleteTime = comTime,
+ ProductionTime = boxInfoOne.ProductionTime,
+ ExpirationTime = boxInfoOne.ExpirationTime,
+ Status = "0",
+ InspectMark = boxInfoOne.InspectMark,
+ InspectStatus = "1",//sku.IsInspect,//浠庤溅闂村叆搴撶殑璐ㄦ鐘舵�侀粯璁ゅ悎鏍�
+ BitPalletMark = "1",
+ PackagNo = sku.PackagNo,
+
+ IsDel = "0",
+ CreateUser = 0,
+ CreateTime = comTime
+ };
+
+ //娣诲姞搴撳瓨鏄庣粏
+ sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity();
+ }
+ #endregion
+
+ // 鏇存敼绠辨敮鍏崇郴琛�
+ decimal factQty = 0.00m;//鎵樼洏鎬绘暟閲�
+
+
+ //鏍囩缁勬墭
+ var boxGroup = boxInfo.GroupBy(m => m.BoxNo).ToList();
+ foreach (var g in boxGroup)
+ {
+ decimal boxFullQty = 0;//绠卞唴鎬绘暟閲�
+ foreach (var box in g)
+ {
+ if (box.BindNo != null && box.BindNo != 0)
+ {
+ continue;
+ }
+
+
+ box.PalletNo = palletNo;
+ box.Status = "2";
+
+ box.CompleteTime = comTime;
+ box.UpdateTime = comTime;
+ box.UpdateUser = userId;
+
+ //box.Qty = box.Qty;
+ //box.BitBoxMark = box.Qty == box.FullQty ? "0" : "1";
+
+ factQty += box.Qty;
+ boxFullQty += box.Qty;
+
+ #region 搴撳瓨绠辩爜鏄庣粏
+ var box2 = new DataBoxInfo()
+ {
+ StockDetailId = sdId1,
+ BoxNo = box.BoxNo,
+ BoxNo2 = box.BoxNo2,
+ BoxNo3 = box.BoxNo3,
+ PalletNo = box.PalletNo,
+ PalletNo2 = box.PalletNo2,
+ PalletNo3 = box.PalletNo3,
+ Qty = box.Qty,
+ FullQty = box.FullQty,
+ Status = "2",//0锛氭湭缁勬墭 1锛氬凡缁勬墭 2锛氬凡鍏ュ簱 3锛氬凡鍑哄簱 4:宸插垎閰� 5锛氬凡鎷h揣
+ LotNo = box.LotNo,
+ LotText = box.LotText,
+ SkuNo = box.SkuNo,
+ SkuName = box.SkuName,
+ Standard = sku.Standard,
+ ProductionTime = box.ProductionTime,
+ SupplierLot = box.SupplierLot,
+ InspectStatus = sku.IsInspect,
+ InspectMark = box.InspectMark,
+ BitBoxMark = box.BitBoxMark,
+ ExpirationTime = box.ExpirationTime,
+
+ CreateUser = 0,
+ CreateTime = comTime
+ };
+ //娣诲姞搴撳瓨绠辩爜鏄庣粏
+ Db.Insertable(box2).ExecuteCommand();
+ #endregion
+
+ #region 鎻掑叆杞﹂棿鍑哄叆搴撹褰曡〃
+ //鎻掑叆鍏ュ簱鏃ュ織
+ var _log = new LogWorkShop
+ {
+ Type = "0",//绫诲瀷锛�0锛氬叆搴� 1锛氬嚭搴�
+ PalletNo = palletNo,
+ BoxNo=box.BoxNo,
+ LotNo=box.LotNo,
+ SkuNo=box.SkuNo,
+ SkuName=box.SkuName,
+ Qty=box.Qty
+ };
+ //娣诲姞搴撳瓨绠辩爜鏄庣粏
+ Db.Insertable(_log).ExecuteCommand();
+ #endregion
+ }
+ if (boxFullQty > bNum)
+ {
+ throw new Exception($"缁戝畾澶辫触锛寋g.Key}绠辩爜缁戝畾鏁伴噺澶т簬璇ョ墿鍝佸寘瑁呮暟閲忥紒");
+ }
+ }
+ //鏇存敼绠辨敮鍏崇郴琛ㄤ俊鎭�
+ Db.Updateable(boxInfoList).ExecuteCommand();
+
+ #region 搴撳瓨
+ var dataStock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == boxInfoOne.LotNo);
+ if (dataStock != null)
+ {
+ dataStock.Qty += factQty;
+ Db.Updateable(dataStock).ExecuteCommand();
+ }
+ else
+ {
+ var stock = new DataStock()
+ {
+ SkuNo = sku.SkuNo,
+ SkuName = sku.SkuName,
+ Standard = sku.Standard,
+ LotNo = boxInfoOne.LotNo,
+ LotText = boxInfoOne.LotText,
+ Qty = qty,
+ LockQty = 0,
+ FrozenQty = 0,
+ IsSampling = "0",
+ IsDel = "0",
+ CreateUser = userId,
+ CreateTime = comTime
+ };
+ Db.Insertable(stock).ExecuteCommand();
+ }
+ #endregion
+
+
+ // 鏇存敼鎵樼洏浣跨敤鐘舵��
+ var sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{palletNo}';";
+ ////娣诲姞鎵樼洏璁板綍琛ㄦ暟鎹�
+ //sqlStr += $"insert into LogPalletTrack values('{palletNo}','{boxNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);";
+ Db.Ado.ExecuteCommand(sqlStr);
+ new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "杞﹂棿鍏ュ簱", boxNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{palletNo}銆亄msgStr}鐨勫叆搴撲俊鎭�", userId);
+
+ //鎻愪氦浜嬪姟
+ Db.CommitTran();
+
+ }
+ catch (Exception e)
+ {
+ Db.RollbackTran();
+ throw new Exception(e.Message);
+ }
+ }
+
+ /// <summary>
+ /// 杞﹂棿缁戝畾鎵樼洏 涓嶈创鏍囩墿鏂�
+ /// </summary>
+ /// <param name="model"></param>
+ /// <param name="userId"></param>
+ /// <exception cref="Exception"></exception>
+ public void ChejianQtyIn(string palletNo, string skuNo, string lotNo, decimal qty, string areaNo, int userId)
+ {
+ try
+ {
+ #region MyRegion
+
+ if (string.IsNullOrWhiteSpace(palletNo))
+ {
+ throw new Exception("鎵樼洏鍙蜂笉鑳戒负绌�");
+ }
+ if (string.IsNullOrWhiteSpace(skuNo))
+ {
+ throw new Exception("鐗╂枡涓嶈兘涓虹┖");
+ }
+ if (qty <= 0)
+ {
+ throw new Exception("鏁伴噺涓嶈兘灏忕瓑0");
+ }
+ var skuInfo = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == skuNo);
+ if (skuInfo == null)
+ {
+ throw new Exception("鏈煡璇㈠埌鐗╂枡淇℃伅");
+ }
+ var pall = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNo);
+ if (pall == null)
+ {
+ throw new Exception("鏈煡璇㈠埌褰撳墠鎵樼洏淇℃伅");
+ }
+ #endregion
+
+ //寮�鍚簨鍔�
+ Db.BeginTran();
+ //褰撳墠鏃堕棿
+ var comTime = DateTime.Now;
+
+ #region 鍖呰
+
+ var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == skuInfo.PackagNo);
+
+ var pNum = 0m;//鎵樼洏鐗╁搧鏁伴噺
+ var bNum = 0m;//绠辩爜鐗╁搧鏁伴噺
+
+ //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺
+ new Common().GetPackQtyInfo(pack.PackagNo, ref pNum, ref bNum);
+
+ #endregion
+
+ #region 搴撳瓨鏄庣粏
+
+ var area = Db.Queryable<SysStorageArea>().First(m => m.IsDel == "0" && m.AreaNo == areaNo);
+ if (area == null)
+ {
+ throw new Exception("鍏ュ簱鍖哄煙涓嶈兘涓虹┖");
+ }
+
+ var tags = "0";
+
+ // 鍒ゆ柇搴撳瓨鏄庣粏鏄惁宸叉湁姝ゆ墭鐩樹俊鎭�
+ var sd1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.SkuNo == skuNo && m.LotNo == lotNo && m.PalletNo == palletNo);
+ var sdId1 = 0;
+ if (sd1 != null)
+ {
+ if (sd1.AreaNo != areaNo)
+ {
+ throw new Exception("閫夋嫨鐨勫尯鍩熶笌搴撳瓨涓嶅悓");
+ }
+ sdId1 = sd1.Id;
+ // 搴撳瓨宸插瓨鍦� 鏇存柊鏁版嵁
+ sd1.Qty += qty;
+ sd1.CompleteTime = comTime;
+ sd1.UpdateUser = userId;
+ sd1.UpdateTime = comTime;
+ if (sd1.Qty >= pNum)
+ {
+ sd1.BitPalletMark = "0";
+ }
+ Db.Updateable(sd1).ExecuteCommand();
+ }
+ else
+ {
+ // 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁
+ sd1 = new DataStockDetail()
+ {
+ LotNo = lotNo,
+ SupplierLot = "",
+ SkuNo = skuInfo.SkuNo,
+ SkuName = skuInfo.SkuName,
+ Standard = skuInfo.Standard,
+ Qty = qty,
+ LockQty = 0,
+ FrozenQty = 0,
+ InspectQty = 0,
+ WareHouseNo = area.WareHouseNo,//鎵�灞炰粨搴�
+ RoadwayNo = "",//鎵�灞炲贩閬�
+ AreaNo = area.AreaNo,//鎵�灞炲尯鍩�
+ LocatNo = "",//鍌ㄤ綅鍦板潃
+ PalletNo = palletNo,
+ PalletTags = tags,
+ CompleteTime = comTime,
+ //ProductionTime = boxInfoOne.ProductionTime,
+ //ExpirationTime = boxInfoOne.ExpirationTime,
+ Status = "0",
+ InspectMark = "0",
+ InspectStatus = "1",
+ BitPalletMark = qty >= pNum ?"0" :"1",
+ PackagNo = skuInfo.PackagNo,
+
+ IsDel = "0",
+ CreateUser = 0,
+ CreateTime = comTime
+ };
+
+ //娣诲姞搴撳瓨鏄庣粏
+ sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity();
+ }
+ #endregion
+
+ // 鏇存敼绠辨敮鍏崇郴琛�
+ decimal factQty = 0.00m;//鎵樼洏鎬绘暟閲�
+
+ #region 搴撳瓨
+ var dataStock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == skuInfo.SkuNo && m.LotNo == lotNo);
+ if (dataStock != null)
+ {
+ dataStock.Qty += factQty;
+ Db.Updateable(dataStock).ExecuteCommand();
+ }
+ else
+ {
+ var stock = new DataStock()
+ {
+ SkuNo = skuInfo.SkuNo,
+ SkuName = skuInfo.SkuName,
+ Standard = skuInfo.Standard,
+ LotNo = lotNo,
+ LotText = "",
+ Qty = qty,
+ LockQty = 0,
+ FrozenQty = 0,
+ IsSampling = "0",
+ IsDel = "0",
+ CreateUser = userId,
+ CreateTime = comTime
+ };
+ Db.Insertable(stock).ExecuteCommand();
+ }
+ #endregion
+
+ #region
+ //鎻掑叆鍏ュ簱鏃ュ織
+ var _log = new LogWorkShop
+ {
+ Type = "0",//绫诲瀷锛�0锛氬叆搴� 1锛氬嚭搴�
+ PalletNo = palletNo,
+ BoxNo = "",
+ LotNo = lotNo,
+ SkuNo = sd1.SkuNo,
+ SkuName = sd1.SkuName,
+ Qty = qty
+ };
+ //娣诲姞搴撳瓨绠辩爜鏄庣粏
+ Db.Insertable(_log).ExecuteCommand();
+ #endregion
+ // 鏇存敼鎵樼洏浣跨敤鐘舵��
+ var sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{palletNo}';";
+ ////娣诲姞鎵樼洏璁板綍琛ㄦ暟鎹�
+ //sqlStr += $"insert into LogPalletTrack values('{palletNo}','{boxNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);";
+ Db.Ado.ExecuteCommand(sqlStr);
+ new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "杞﹂棿鍏ュ簱", skuNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{palletNo}鐨勫叆搴撲俊鎭�", userId);
+
+ //鎻愪氦浜嬪姟
+ Db.CommitTran();
+
+ }
+ catch (Exception e)
+ {
+ Db.RollbackTran();
+ throw new Exception(e.Message);
+ }
+
+ }
#endregion
-
-
-
-
-
-
-
// 鑾峰彇鍗曟嵁鍒楄〃
public List<ArrivalNoticeDto> GetArrivalNotices(ArrivalNoticeVm model)
{
@@ -1896,53 +3130,6 @@
var modelList = Db.Ado.SqlQuery<BllArrivalNotice>(sqlString);
return modelList;
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
-
-
-
-
- /// <summary>
- /// 楠岃瘉鎵樼洏鏄惁瀛樺湪
- /// </summary>
- /// <param name="palletNo">鎵樼洏鍙�</param>
- /// <returns>"":鍙娇鐢� -1:涓嶅彲浣跨敤锛堝師鍥�)</returns>
- public string IsEnablePalletNo(string palletNo)
- {
- string sqlMsg = "";
- string sqlString = string.Empty;
- try
- {
- sqlString = $"select * from SysPallets where PalletNo = '{palletNo}' and isdel = '0';";
- var models = Db.Ado.SqlQuery<PalletBindVm>(sqlString);
-
- if (models.Count > 1)
- {
- sqlMsg = "-1:瀛樺湪閲嶅鎵樼洏鍙�,璇锋鏌�!";
- return sqlMsg;
- }
- if (models.Count > 0)
- {
- if (models[0].Status == "1")
- {
- sqlString = $"select count(id) from DataStockDetail where PalletNo = '{palletNo}' and isnull(LocatNo,'') != '' and isdel = '0';";
- int rowNum = Db.Ado.GetInt(sqlString);
- if (rowNum > 0)
- {
- sqlMsg = "-1:鎵樼洏浣跨敤涓紝姝ゆ墭鐩樺簲鍦ㄥ簱鍐呰鏍稿疄!";
- }
- }
- }
- else
- {
- sqlMsg = "-1:鎵樼洏鍙蜂笉瀛樺湪!";
- }
-
- return sqlMsg;
}
catch (Exception ex)
{
@@ -2118,8 +3305,8 @@
}
//鑾峰彇鎵樼洏淇℃伅
var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == "100099");
- var pNum = 0;
- var bNum = 0;
+ var pNum = 0m;
+ var bNum = 0m;
new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum);
@@ -2151,35 +3338,35 @@
};
var id = Db.Insertable(modelpb).ExecuteReturnIdentity();
- var modelbb = new BllBoxInfo
- {
- ASNNo = "",
- ASNDetailNo = null,
- BindNo = id,
- PalletNo = model.PalletNo,
- PalletNo2 = model.PalletNo2,
- PalletNo3 = model.PalletNo3,
- Status = "2",
- CompleteTime = DateTime.Now,
- Qty = (int)model.Qty,
- FullQty = pNum,
- SkuNo = sku.SkuNo,
- SkuName = sku.PackagNo,
- LotNo = "",
- LotText = "",
- SupplierLot = "",
- InspectStatus = sku.IsInspect,
- Origin = "PDA",
- BoxNo = "",
- BoxNo2 = "",
- BoxNo3 = "",
- InspectMark = "",
- BitBoxMark = "0",
+ //var modelbb = new BllBoxInfo
+ //{
+ // ASNNo = "",
+ // ASNDetailNo = null,
+ // BindNo = id,
+ // PalletNo = model.PalletNo,
+ // PalletNo2 = model.PalletNo2,
+ // PalletNo3 = model.PalletNo3,
+ // Status = "2",
+ // CompleteTime = DateTime.Now,
+ // Qty = (int)model.Qty,
+ // FullQty = pNum,
+ // SkuNo = sku.SkuNo,
+ // SkuName = sku.SkuName,
+ // LotNo = "",
+ // LotText = "",
+ // SupplierLot = "",
+ // InspectStatus = sku.IsInspect,
+ // Origin = "PDA",
+ // BoxNo = "",
+ // BoxNo2 = "",
+ // BoxNo3 = "",
+ // InspectMark = "",
+ // BitBoxMark = "0",
- CreateUser = (int)model.CreateUser,
- CreateTime = datetime
- };
- Db.Insertable(modelbb).ExecuteCommand();
+ // CreateUser = (int)model.CreateUser,
+ // CreateTime = datetime
+ //};
+ //Db.Insertable(modelbb).ExecuteCommand();
//娣诲姞搴撳瓨
@@ -2227,35 +3414,35 @@
#region 搴撳瓨绠辩爜鏄庣粏
- var box2 = new DataBoxInfo()
- {
- StockDetailId = sdId1,
- BindNo = modelpb.Id,
- BoxNo = modelbb.BoxNo,
- BoxNo2 = modelbb.BoxNo2,
- BoxNo3 = modelbb.BoxNo3,
- PalletNo = modelbb.PalletNo,
- PalletNo2 = modelbb.PalletNo2,
- PalletNo3 = modelbb.PalletNo3,
- Qty = modelbb.Qty,
- FullQty = modelbb.FullQty,
- Status = "2",
- LotNo = modelbb.LotNo,
- LotText = modelbb.LotText,
- SkuNo = modelbb.SkuNo,
- SkuName = modelbb.SkuName,
- Standard = sku.Standard,
- ProductionTime = modelbb.ProductionTime,
- SupplierLot = modelbb.SupplierLot,
- InspectStatus = sku.IsInspect,
- InspectMark = modelbb.InspectMark,
- BitBoxMark = modelbb.BitBoxMark,
- ExpirationTime = modelbb.ExpirationTime,
+ //var box2 = new DataBoxInfo()
+ //{
+ // StockDetailId = sdId1,
+ // BindNo = modelpb.Id,
+ // BoxNo = modelbb.BoxNo,
+ // BoxNo2 = modelbb.BoxNo2,
+ // BoxNo3 = modelbb.BoxNo3,
+ // PalletNo = modelbb.PalletNo,
+ // PalletNo2 = modelbb.PalletNo2,
+ // PalletNo3 = modelbb.PalletNo3,
+ // Qty = modelbb.Qty,
+ // FullQty = modelbb.FullQty,
+ // Status = "2",
+ // LotNo = modelbb.LotNo,
+ // LotText = modelbb.LotText,
+ // SkuNo = modelbb.SkuNo,
+ // SkuName = modelbb.SkuName,
+ // Standard = sku.Standard,
+ // ProductionTime = modelbb.ProductionTime,
+ // SupplierLot = modelbb.SupplierLot,
+ // InspectStatus = sku.IsInspect,
+ // InspectMark = modelbb.InspectMark,
+ // BitBoxMark = modelbb.BitBoxMark,
+ // ExpirationTime = modelbb.ExpirationTime,
- CreateUser = 0,
- CreateTime = datetime
- };
- Db.Insertable(box2).ExecuteCommand();
+ // CreateUser = 0,
+ // CreateTime = datetime
+ //};
+ //Db.Insertable(box2).ExecuteCommand();
#endregion
#region 搴撳瓨
@@ -3297,10 +4484,18 @@
try
{
string strMsg = "";
- var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == locatNo && w.Status == "0" && w.WareHouseNo == "W02");
+ var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == locatNo && w.WareHouseNo == "W04");
if (storageLocat == null)
{
- throw new Exception("-1:鍦扮爜(鍌ㄤ綅淇℃伅)涓嶅瓨鍦ㄦ垨闈炵┖闂茬姸鎬侊紝璇锋牳鏌�!");
+ throw new Exception("-1:鍦扮爜(鍌ㄤ綅淇℃伅)涓嶅瓨鍦紝璇锋牳鏌�!");
+ }
+ if (storageLocat.Status != "0")
+ {
+ var detailInfo = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.LocatNo == storageLocat.LocatNo);
+ if (detailInfo != null)
+ {
+ throw new Exception("-1:鍦扮爜(鍌ㄤ綅淇℃伅)闈炵┖闂诧紝璇锋牳鏌�!");
+ }
}
return strMsg;
@@ -5005,7 +6200,7 @@
#endregion
#region 璐ㄦ璇烽獙
- if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1")
+ if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1" && sku.IsControlled != "1")
{
var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot);
if (qualityRequest == null)
@@ -5084,9 +6279,12 @@
{
foreach (var item in stockDetail)
{
- if (!string.IsNullOrEmpty(item.WareHouseNo))
+ if (!string.IsNullOrEmpty(item.WareHouseNo) && !string.IsNullOrEmpty(item.AreaNo))
{
- throw new Exception("璇ユ墭鐩樻湭鍦ㄥ簱澶栵紝璇锋牳鏌�!");
+ if (item.AreaNo != "B06" && item.AreaNo != "B07" && item.AreaNo != "B09")
+ {
+ throw new Exception("璇ユ墭鐩樻湭鍦ㄥ簱澶栵紝璇锋牳鏌�!");
+ }
}
}
iscount = 1; //鍥炴祦鍏ュ簱
@@ -5094,10 +6292,18 @@
#endregion
#region 鍦扮爜淇℃伅(鍌ㄤ綅淇℃伅)
- var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.LocatNo && w.Status == "0");
+ var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.LocatNo);
if (storageLocat == null)
{
- throw new Exception("鍌ㄤ綅淇℃伅涓嶅瓨鍦ㄦ垨闈炵┖闂茬姸鎬侊紝璇锋牳鏌�!");
+ throw new Exception("鍌ㄤ綅淇℃伅涓嶅瓨锛岃鏍告煡!");
+ }
+ if (storageLocat.Status != "0")
+ {
+ var detailInfo=Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.LocatNo == storageLocat.LocatNo);
+ if (detailInfo != null)
+ {
+ throw new Exception("鍌ㄤ綅涓嶆槸绌洪棽鐘舵�侊紝璇锋牳鏌�!");
+ }
}
#endregion
@@ -5434,7 +6640,7 @@
//淇敼搴撳瓨鏄庣粏淇℃伅
foreach (var item in stockDetail)
{
- item.Status = "0"; // 鐘舵�佹洿鏀逛负寰呭垎閰�
+ //item.Status = "0"; // 鐘舵�佹洿鏀逛负寰呭垎閰�
item.WareHouseNo = storageLocat.WareHouseNo; // 鎵�灞炰粨搴�
item.RoadwayNo = storageLocat.RoadwayNo; // 鎵�灞炲贩閬�
item.AreaNo = storageLocat.AreaNo; // 鎵�灞炲尯鍩�
@@ -5444,16 +6650,7 @@
//淇敼搴撳瓨鏄庣粏淇℃伅
Db.Updateable(item).ExecuteCommand();
}
- //鑾峰彇鎷h揣淇℃伅
- var alotr = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.PalletNo == model.PalletNo && a.Status == "4");
- if (alotr != null)
- {
- alotr.Status = "5"; //5 宸插畬鎴�
- alotr.UpdateUser = model.CreateUser; //淇敼浜�
- alotr.UpdateTime = serverTime; //淇敼鏃堕棿
- //淇敼鎷h揣淇℃伅
- Db.Updateable(alotr).ExecuteCommand();
- }
+
#region 浠诲姟鍙婄粍鎵樹俊鎭�
//鍒涘缓浠诲姟淇℃伅
var taskNo = new Common().GetMaxNo("TK");
@@ -5466,14 +6663,14 @@
SendDate = DateTime.Now, //鍙戦�佹椂闂�
BackDate = DateTime.Now, //杩斿洖鏃堕棿
StartLocat = "",//璧峰浣嶇疆
- EndLocat = "骞冲簱",//鐩爣浣嶇疆
+ EndLocat = model.LocatNo,//鐩爣浣嶇疆
PalletNo = model.PalletNo,//鎵樼洏鐮�
IsSend = 0,//鏄惁鍙啀娆′笅鍙�
IsCancel = 0,//鏄惁鍙彇娑�
IsFinish = 0,//鏄惁鍙畬鎴�
Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
Status = "2",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
- OrderType = "3",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
+ OrderType = "0",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗�
Msg = "骞冲簱鐨勫叆搴撲换鍔�",
};
Db.Insertable(exTask).ExecuteCommand();
@@ -5498,15 +6695,15 @@
var upShelf = new BllPalletUpShelf()
{
TaskNo = exTask.TaskNo,
- TraceNo = bindInfo.ASNNo,
- PalletNo = bindInfo.PalletNo,
+ TraceNo = bindInfo== null? "": bindInfo.ASNNo,
+ PalletNo = model.PalletNo,
SkuNo = palletupinfo.SkuNo,
SkuName = palletupinfo.SkuName,
LotNo = palletupinfo.LotNo,
Status = "2",
LocatNo = model.LocatNo,
- WareHouseNo = bindInfo.WareHouseNo,
- RoadwayNo = bindInfo.RoadwayNo,
+ WareHouseNo = storageLocat.WareHouseNo,
+ RoadwayNo = storageLocat.RoadwayNo,
AreaNo = storageLocat.AreaNo,
CreateUser = 0,
@@ -5526,6 +6723,113 @@
}
catch (Exception ex)
{
+ Db.RollbackTran();
+ throw ex;
+ }
+ }
+ #endregion
+
+ #region 浠撳簱鏀惰揣
+ /// <summary>
+ /// 浠撳簱纭鏀惰揣
+ /// </summary>
+ /// <param name="model"></param>
+ public void ConfirmTakeOf(string palletNo,int userId)
+ {
+ try
+ {
+ #region 楠岃瘉淇℃伅
+ if (string.IsNullOrEmpty(palletNo))
+ {
+ throw new Exception("鎵樼洏鏉$爜涓嶈兘涓虹┖!");
+ }
+
+ //鑾峰彇鎵樼洏淇℃伅
+ var pallet = Db.Queryable<SysPallets>().First(w => w.IsDel == "0" && w.PalletNo == palletNo);
+ //楠岃瘉鎵樼洏淇℃伅鏄惁涓虹┖
+ if (pallet == null)
+ {
+ throw new Exception("鎵樼洏淇℃伅涓嶅瓨鍦紝璇锋鏌�!");
+ }
+ if (pallet.Status == "0")
+ {
+ throw new Exception("鎵樼洏鏈娇鐢紝璇锋鏌�!");
+ }
+ #endregion
+
+ //鑾峰彇搴撳瓨鏄庣粏淇℃伅
+ var stockDetailList = Db.Queryable<DataStockDetail>().Where(s => s.IsDel == "0" && s.PalletNo == palletNo).ToList();
+ //楠岃瘉搴撳瓨鏄庣粏淇℃伅鏄惁瀛樺湪
+ if (stockDetailList.Count<=0)
+ {
+ throw new Exception("搴撳瓨鏄庣粏涓嶅瓨鍦紝璇锋鏌ュ簱瀛樹俊鎭�!");
+ }
+ //寮�鍚簨鍔�
+ Db.BeginTran();
+
+ foreach (var item in stockDetailList)
+ {
+ //if (item.AreaNo != "B06" && item.AreaNo != "B07" && item.AreaNo != "B09")
+ //{
+ // throw new Exception("璇ユ墭鐩橀潪绾胯竟鍥炲簱鎵樼洏!");
+ //}
+ //搴撳瓨鎬昏〃
+ var stock = Db.Queryable<DataStock>().First(w => w.IsDel == "0" && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo);
+ if (stock == null)
+ {
+ throw new Exception($"鏈煡璇㈠埌璇ユ墭鐩樹笂鐗╂枡缂栫爜涓�:{item.SkuNo}鐨勫簱瀛樹俊鎭�!");
+ }
+
+ var boxInfoList = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == palletNo && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo).ToList();
+ if (boxInfoList.Count > 0)
+ {
+ foreach (var box in boxInfoList)
+ {
+ var bllBox = Db.Queryable<BllBoxInfo>().First(w => w.IsDel == "0" && w.Status != "0" && w.BoxNo == box.BoxNo);
+ if (bllBox != null)
+ {
+ bllBox.Status = "0";
+ bllBox.ASNDetailNo = null;
+ bllBox.BindNo = null;
+ bllBox.PalletNo = "";
+ //鏇存柊绠辨敮鏄庣粏琛�
+ Db.Updateable(bllBox).ExecuteCommand();
+ }
+ }
+ //鍒犻櫎搴撳瓨绠辩爜淇℃伅
+ Db.Deleteable(boxInfoList).ExecuteCommand();
+ }
+
+ //鍒犻櫎鎴栦慨鏀瑰簱瀛�
+ stock.Qty -= (decimal)item.Qty;
+ if (stock.Qty <= 0)
+ {
+ Db.Deleteable(stock).ExecuteCommand();
+ }
+ else
+ {
+ Db.Updateable(stock).ExecuteCommand();
+ }
+ //鍒犻櫎搴撳瓨鏄庣粏
+ Db.Deleteable(item).ExecuteCommand();
+
+ //鍒ゆ柇鎵樼洏涓婅繕鏈夋病鏈夊叾浠栫墿鏂�
+ var palletData = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && w.Id != item.Id);
+ if (palletData == null)
+ {
+ pallet.Status = "0";
+ Db.Updateable(pallet).ExecuteCommand();
+ }
+ }
+
+ new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "浠撳簱鏀惰揣", palletNo, "瀹屾垚", $"鍦≒DA涓婂畬鎴愭墭鐩樼爜涓猴細{palletNo}鐨勪粨搴撴敹璐ф搷浣�", userId);
+
+ //鎻愪氦浜嬪姟
+ Db.CommitTran();
+ }
+ catch (Exception ex)
+ {
+ //鍥炴粴浜嬪姟
Db.RollbackTran();
throw ex;
}
@@ -5856,5 +7160,359 @@
#endregion
+ #region 绾胯竟鏍囩
+ /// <summary>
+ /// 鏍规嵁鐗╂枡缂栫爜銆佸悕绉拌幏鍙栫墿鏂欎俊鎭�
+ /// </summary>
+ /// <param name="model">缂栫爜 鍚嶇О</param>
+ /// <returns>鐗╂枡璇︾粏淇℃伅</returns>
+ public MaterialsDto GetSkuInfo(GetMaterialsVm model)
+ {
+ try
+ {
+ if (string.IsNullOrEmpty(model.SkuNo) && string.IsNullOrEmpty(model.SkuName))
+ {
+ throw new Exception("璇疯緭鍏ョ墿鏂欑紪鐮佹垨鐗╂枡鍚嶇О!");
+ }
+
+ var skuModels = Db.Queryable<SysMaterials>().Where(m => (m.SkuNo == model.SkuNo || m.SkuName == model.SkuName) && m.IsDel == "0").Select< MaterialsDto>().ToList();
+ if (skuModels.Count <= 0)
+ {
+ throw new Exception("鐗╂枡涓嶅瓨鍦紒");
+ }
+
+ return skuModels.First();
+ }
+ catch (Exception ex)
+ {
+ throw ex;
+ }
+ }
+
+ /// <summary>
+ /// 鐢熸垚鏉$爜鏍囩
+ /// </summary>
+ /// <param name="model"></param>
+ /// <returns></returns>
+ /// <exception cref="Exception"></exception>
+ public List<BllBoxInfo> AddLabels(LabelsVm model)
+ {
+ try
+ {
+ if (decimal.TryParse(model.SkuNum, out decimal skuQty))
+ {
+ if (skuQty <= 0)
+ {
+ throw new Exception("绠卞唴鏁伴噺涓嶈兘灏忎簬绛変簬0");
+ }
+ }
+ else
+ {
+ throw new Exception("绠卞唴鏁伴噺璇疯緭鍏ユ暟瀛楋紒");
+ }
+
+ // 楠岃瘉鐗╂枡淇℃伅鏄惁瀛樺湪
+ var skuModels = Db.Queryable<SysMaterials>().Where(m => (m.SkuNo == model.SkuNo || m.SkuName == model.SkuName) && m.IsDel == "0").Select<MaterialsDto>().ToList();
+ if (skuModels.Count <= 0)
+ {
+ throw new Exception("鐗╂枡涓嶅瓨鍦紒");
+ }
+
+
+ #region
+ var skuModel = skuModels.First();
+ var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == skuModel.PackagNo);
+ if (pack == null)
+ {
+ throw new Exception("鏈煡璇㈠埌褰撳墠鐗╂枡鐨勫寘瑁呬俊鎭�");
+ }
+
+ var packStr = "";
+ if (!string.IsNullOrWhiteSpace(pack.L1Name))
+ {
+ packStr += pack.L1Num + "/" + pack.L1Name;
+ }
+ if (!string.IsNullOrWhiteSpace(pack.L2Name))
+ {
+ packStr += "-" + pack.L2Num + "/" + pack.L2Name;
+ }
+ if (!string.IsNullOrWhiteSpace(pack.L3Name))
+ {
+ packStr += "-" + pack.L3Num + "/" + pack.L3Name;
+ }
+ if (!string.IsNullOrWhiteSpace(pack.L4Name))
+ {
+ packStr += "-" + pack.L4Num + "/" + pack.L4Name;
+ }
+ if (!string.IsNullOrWhiteSpace(pack.L5Name))
+ {
+ packStr += "-" + pack.L5Num + "/" + pack.L5Name;
+ }
+ #endregion
+
+ #region 鍖呰鏌ヨ
+
+ var bNum = 0;//绠辩墿鍝佹暟閲�
+ var zNum = 0;//鏀墿鍝佹暟閲�
+ var packLevel = 0;
+
+ if (pack.L2Num.HasValue)
+ {
+ if (pack.L2Name != "鎵�")
+ {
+ packLevel = 1;//JC34椤圭洰鍙湁涓�绾ф爣绛�
+ bNum = Convert.ToInt32(pack.L2Num);
+ }
+ }
+ if (pack.L1Num.HasValue)
+ {
+ if (packLevel == 0)
+ {
+ packLevel = 1;
+ bNum = Convert.ToInt32(pack.L1Num);
+ }
+ zNum = Convert.ToInt32(pack.L1Num);
+ }
+
+ if (packLevel < 1)//鍖呰绛夌骇灏忎簬1锛屾寜鐓�1绾ф爣绛炬墦鍗�
+ {
+ throw new Exception("鍖呰淇℃伅鏈夎锛屽皬浜庝竴绾�");
+ }
+
+ if (skuQty > bNum * 5)
+ {
+ throw new Exception("绠卞唴鏁伴噺澶т簬鍖呰5鍊嶏紝涓嶅彲鎵撳嵃");
+ }
+ #endregion
+ var modelList = new List<BllBoxInfo>();
+ var label = Db.Queryable<BllBoxInfo>().Where(m => m.LotNo == model.LotNo && m.SkuNo == model.SkuNo && m.IsDel == "0").ToList();
+
+ Db.BeginTran();
+ if (packLevel == 1)
+ {
+ #region 涓�绾у寘瑁�
+ int labelNum = 1;
+ labelNum = int.Parse(Math.Ceiling(skuQty / bNum).ToString());//鏍囩鏁伴噺
+
+
+ #region 鑾峰彇/鐢熸垚鎵规鍙�
+ string maxLotNoStr = ""; //鎵规鍙�
+ string maxBoxCode = ""; //绠辩爜鍙�
+
+ maxLotNoStr = model.LotNo;
+ maxBoxCode = label.Where(m => m.LotNo == maxLotNoStr).Max(a => a.BoxNo);
+ #endregion
+
+ for (int i = 1; i <= labelNum; i++)
+ {
+ decimal boxQty = 0;
+ if (i == labelNum)
+ {
+ // 鏈�鍚庝竴涓潯鐮�
+ var s = bNum * (i - 1);
+ if (bNum > skuQty - s)
+ {
+ boxQty = skuQty - s;// 鏁伴噺
+ }
+ else
+ {
+ boxQty = bNum;// 鏁伴噺
+ }
+ }
+ else
+ {
+ boxQty = bNum; // 鏁伴噺
+ }
+
+ //鑾峰彇绠辩爜
+ if (string.IsNullOrWhiteSpace(maxBoxCode))
+ {
+ var str = "B" + maxLotNoStr + "000001"; //鎵瑰彿+ 娴佹按 B 230201 0001 000001
+ maxBoxCode = str;
+ }
+ else
+ {
+ maxBoxCode = maxBoxCode.Substring(0, maxBoxCode.Length - 6) + (int.Parse(maxBoxCode.Substring(maxBoxCode.Length - 6, 6)) + 1).ToString().PadLeft(6, '0');
+ }
+
+ // 灏嗘潯鐮佷繚瀛樺埌鍘熸枡鏉$爜琛�
+ var labelModel = new BllBoxInfo()
+ {
+ BoxNo = maxBoxCode,
+ Qty = boxQty,
+ FullQty = bNum,
+ Status = "0",
+ SkuNo = model.SkuNo,
+ SkuName = model.SkuName,
+ LotNo = maxLotNoStr,
+ Standard = skuModel.Standard,
+ PackageStandard = packStr,
+ InspectMark = "0",
+ BitBoxMark = bNum > boxQty ? "1" : "0",
+ InspectStatus = "0",
+
+ ProductionTime = DateTime.Parse(model.TimeFrom),
+ StoreTime = DateTime.Parse(model.TimeEnd),
+ ExpirationTime = DateTime.Parse(model.TimeEnd),
+
+ Origin = "WMS鐢熸垚",
+ CreateUser = (int)model.userId,
+ CreateTime = DateTime.Now,
+ };
+
+ Db.Insertable(labelModel).ExecuteCommand();
+ modelList.Add(labelModel);
+ }
+
+ #endregion
+ }
+ else //(packLevel == 2)
+ {
+ #region 浜岀骇鍖呰
+
+ if (skuQty > bNum * 5)
+ {
+ throw new Exception("绠卞唴鏁伴噺澶т簬鍖呰5鍊嶏紝涓嶅彲鎵撳嵃");
+ }
+
+ var qty2 = skuQty;
+ int labelNum2 = 1; //鐢熶骇绠辨潯鐮佹暟閲�
+
+ labelNum2 = int.Parse(Math.Ceiling(qty2 / bNum).ToString());
+
+ var ss = bNum / zNum; //姣忕鏀爣绛炬暟閲�
+ var labelNumZ2 = Math.Ceiling((decimal)ss);
+
+ #region 鑾峰彇/鐢熸垚鎵规鍙�
+
+ string maxCodestr2 = ""; //鎵规
+ string maxboxcode2 = ""; //绠辩爜
+ string maxboxcode3 = ""; //鏀爜
+
+ maxCodestr2 = model.LotNo;
+ maxboxcode2 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo);
+ maxboxcode3 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo3);//鏀彿
+ #endregion
+
+ for (int i = 1; i <= labelNum2; i++)//绠辩爜鏍囩
+ {
+ //绠卞唴鏁伴噺
+ decimal boxQty = 0;
+ if (i == labelNum2)
+ {
+ // 鏈�鍚庝竴涓潯鐮�
+ var s = bNum * (i - 1);
+ if (bNum > qty2 - s)
+ {
+ boxQty = qty2 - s;// 鏁伴噺
+ }
+ else
+ {
+ boxQty = bNum;// 鏁伴噺
+ }
+ }
+ else
+ {
+ boxQty = bNum; // 鏁伴噺
+ }
+
+ //鑾峰彇绠辩爜
+ if (string.IsNullOrWhiteSpace(maxboxcode2))
+ {
+ maxboxcode2 = "B" + maxCodestr2 + "000001"; // 绠卞彿 鎵瑰彿+绗嚑绠�
+ }
+ else
+ {
+ maxboxcode2 = maxboxcode2.Substring(0, 11) + (int.Parse(maxboxcode2.Substring(11, 6)) + 1).ToString().PadLeft(6, '0');
+ }
+ //鑾峰彇绠卞唴鏀爣绛炬暟閲�
+ if (i == labelNum2)
+ {
+ var isGo2 = false;
+ var sl = 0;
+ for (int j = 1; j <= labelNumZ2; j++)
+ {
+ if (isGo2)
+ {
+ break;
+ }
+ var s = bNum * (i - 1);
+ var s2 = zNum * (j - 1);
+ if (zNum >= qty2 - s - s2)
+ {
+ isGo2 = true;
+ }
+ sl++;
+ }
+ labelNumZ2 = sl;
+ }
+
+ for (int j = 1; j <= labelNumZ2; j++)//鏈�灏忓崟浣嶆爣绛�
+ {
+
+ decimal d = zNum;
+ if (i == labelNum2)
+ {
+ var s = bNum * (i - 1);
+ var s2 = zNum * (j - 1);
+ if (zNum >= qty2 - s - s2)
+ {
+ d = qty2 - s - s2; // 鏁伴噺
+ }
+ }
+
+ if (string.IsNullOrWhiteSpace(maxboxcode3))
+ {
+ maxboxcode3 = "Z" + maxCodestr2 + "0001"; // 鏀彿 鎵瑰彿+绗嚑绠�
+ }
+ else
+ {
+ maxboxcode3 = maxboxcode3.Substring(0, 11) + (int.Parse(maxboxcode3.Substring(11, 4)) + 1).ToString().PadLeft(4, '0');
+ }
+
+ // 灏嗘潯鐮佷繚瀛樺埌鍘熸枡鏉$爜琛�
+ var labelModel = new BllBoxInfo()
+ {
+ BoxNo = maxboxcode2,
+ BoxNo3 = maxboxcode3,
+ Qty = d,
+ FullQty = bNum,
+ Status = "0",
+ SkuNo = model.SkuNo,
+ SkuName = skuModel.SkuName,
+ LotNo = maxCodestr2,
+ Standard = skuModel.Standard,
+ PackageStandard = packStr,
+ InspectMark = "0",
+ BitBoxMark = bNum > boxQty ? "1" : "0",
+ InspectStatus = "0",
+
+ ProductionTime = DateTime.Parse(model.TimeFrom),
+ StoreTime = DateTime.Parse(model.TimeEnd),
+ ExpirationTime = DateTime.Parse(model.TimeEnd),
+
+ Origin = "WMS鐢熸垚",
+ CreateUser = (int)model.userId,
+ CreateTime = DateTime.Now,
+ };
+
+ Db.Insertable(labelModel).ExecuteCommand();
+ modelList.Add(labelModel);
+ }
+ }
+ #endregion
+ }
+ Db.CommitTran();
+
+ return modelList;
+ }
+ catch (Exception ex)
+ {
+ Db.RollbackTran();
+ throw new Exception(ex.Message);
+ }
+ }
+ #endregion
+
}
}
--
Gitblit v1.8.0