From 32e054f4769fbd20cd9608b4a1b397be1ec8bb33 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期日, 21 九月 2025 11:05:03 +0800
Subject: [PATCH] 开发PDA成品拣货功能
---
Pda/View/SoSetting/productOutCode.html | 63 ++++-
Wms/Model/ModelDto/PdaDto/PdaSoDto.cs | 1
Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs | 5
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 1
Wms/Wms/Controllers/PdaSoController.cs | 10
Wms/Model/ModelVm/PdaVm/PdaSoVm.cs | 7
Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs | 507 ++++++++++++++++++++++++++++++++++++++++++++-
Wms/WMS.IBLL/IPdaServer/IPdaSoServer.cs | 11 +
HTML/views/SOSetting/ExportNotice.html | 1
9 files changed, 572 insertions(+), 34 deletions(-)
diff --git a/HTML/views/SOSetting/ExportNotice.html b/HTML/views/SOSetting/ExportNotice.html
index 778fcfb..4256c93 100644
--- a/HTML/views/SOSetting/ExportNotice.html
+++ b/HTML/views/SOSetting/ExportNotice.html
@@ -490,6 +490,7 @@
{ field: 'SONo', title: '鍑哄簱鍗曞彿', align: 'center', fixed: 'left', width: 165, "disabled": true },
{ field: 'Type', title: '鍗曟嵁绫诲瀷', align: 'center', templet: '#templetType' , width: 120,},
{ field: 'Status', title: '鎵ц鐘舵��', align: 'center', templet: '#templetStatus', width: 90, },
+ { field: 'OrderCode', title: '涓嬪彂鍗曞彿', align: 'center', width: 180 },
{ field: 'LogisticsName', title: '鎵胯繍鍟�', align: 'center', width: 120, },
{ field: 'CustomerName', title: '瀹㈡埛鍚嶇О', align: 'center', width: 120, },
{ field: 'WareHouseName', title: '浠撳簱', align: 'center', width: 90, },
diff --git a/Pda/View/SoSetting/productOutCode.html b/Pda/View/SoSetting/productOutCode.html
index 6f6bbee..8f41278 100644
--- a/Pda/View/SoSetting/productOutCode.html
+++ b/Pda/View/SoSetting/productOutCode.html
@@ -197,7 +197,7 @@
<tr>
<td colspan="3">
<div class="layui-form-item">
- <label class="layui-form-label" style="width: 17%;">SAP鍗曞彿锛�</label>
+ <label class="layui-form-label" style="width: 17%;">涓嬪彂鍗曞彿锛�</label>
<div class="layui-input-block" style="width: 83%;margin-left:17%;">
<input id="OrderCode" type="text" lay-verify="" disabled placeholder=""
class="layui-input">
@@ -374,6 +374,7 @@
$("#palletNo").focus();//鍏夋爣榛樿閫変腑
function clear1() {
+ $("#OrderCode").val("");//涓嬪彂鍗曞彿
$('#outModel').val("");//鍑哄簱鍙�
$('#standard').val("");//瑙勬牸
@@ -407,11 +408,31 @@
form.on('switch(IsZhengTuo)', function (obj) {
if (obj.elem.checked) {
+ var boxNum=0;
+ var param = {
+ "PalletNo": $("#palletNo").val()
+ }
+ synData(IP + "/PdaSo/CheckBoxForPick", param, 'get', function (res) {
+ if (res.code == 0) { //鎴愬姛
+ boxNum=res.data
+ $('#scanQty').val(boxNum);
+
+ } else { //涓嶆垚鍔�
+ layer.msg(res.msg, {
+ icon: 2,
+ time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+ }, function () { });
+ return;
+ }
+ });
$('#BoxDIv').attr("style", "display:none")
isContinue = "1";
+ refreshTable();
+ boxes = [];
} else {
$('#BoxDIv').attr("style", "display:block")
isContinue = "0";
+ $('#scanQty').val(0);
}
$('#boxNo').val("");
});
@@ -619,6 +640,7 @@
console.log(res.data);
$("#planQty").val(res.data.PlanQty)
$("#finishQty").val(res.data.FinishQty)
+ $("#OrderCode").val(res.data.OrderCode)
} else { //涓嶆垚鍔�
layer.msg(res.msg, {
icon: 2,
@@ -686,10 +708,10 @@
canPickBox = true
} else { //涓嶆垚鍔�
- layer.msg("鏃犳暟鎹�", {
- icon: 2,
- time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
- }, function () { });
+ // layer.msg("鏃犳暟鎹�", {
+ // icon: 2,
+ // time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+ // }, function () { });
// $("#boxNum").val(0)
}
}
@@ -714,20 +736,19 @@
time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
}); return;
}
- if (isContinue == "0") {
- if ($('#boxNo').val() == "") {
- layer.msg("璇疯緭鍏ョ鐮�", {
+ if($("#planQty").val()!=$("#scanQty").val()){
+ layer.msg("宸叉壂鏁伴噺鍜岃鍒掓暟閲忎笉涓�鑷达紒", {
+ icon: 2,
+ time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
+ }); return;
+ }
+ if (isContinue == "0") {
+ if (boxes == null || boxes.length<=0) {
+ layer.msg("璇锋壂鎻忔爣绛剧爜", {
icon: 2,
time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
}); return;
- }
- if ($('#boxQty').val() == "") {
- layer.msg("绠卞唴鏁伴噺涓虹┖锛屼笉鑳芥嫞璐�", {
- icon: 2,
- time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
- });
- return;
- }
+ }
}
if (canPickBox == false) {
@@ -745,13 +766,17 @@
//纭鎷h揣
function reqPickScatter() {
+ var boxList=[];
+ for(var i=0;i<boxes.length;i++){
+ boxList.push(boxes[i].BoxNo)
+ }
var param = {
"SoNo": $("#bar").val(),
"SoDetailId": $("#skuLotNo").val(),
"PalletNo": $('#palletNo').val(),
- "BoxNo": $('#boxNo').val()
+ "BoxNoList": boxList
}
- sendData(IP + "/PdaSo/SoSetPick", param, 'post', function (res) {
+ sendData(IP + "/PdaSo/SoSetPickCode", param, 'post', function (res) {
//console.log(res);
if (res.code == 0) { //鎴愬姛
@@ -763,6 +788,8 @@
$("#boxNo").val('');
updateQtyList();
getBar();
+ refreshTable();
+ boxes = [];
});
} else { //涓嶆垚鍔�
layer.msg(res.msg, {
diff --git a/Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs b/Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs
index 3cc96d0..2bc1498 100644
--- a/Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs
+++ b/Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs
@@ -66,7 +66,10 @@
/// Desc:鎵胯繍鍟嗙墿娴�
/// </summary>
public string LogisticsName { get; set; }
-
+ /// <summary>
+ /// 涓婃父绯荤粺鍗曞彿
+ /// </summary>
+ public string OrderCode { get; set; }
/// <summary>
/// 鏀惰揣鍦板潃
diff --git a/Wms/Model/ModelDto/PdaDto/PdaSoDto.cs b/Wms/Model/ModelDto/PdaDto/PdaSoDto.cs
index 00dab95..c5300b1 100644
--- a/Wms/Model/ModelDto/PdaDto/PdaSoDto.cs
+++ b/Wms/Model/ModelDto/PdaDto/PdaSoDto.cs
@@ -13,6 +13,7 @@
public decimal? PickQty { get; set; } // 鎵樼洏寰呮嫞鏁伴噺--
public decimal? PickedQty { get; set; } // 鎵樼洏宸叉嫞鏁伴噺
public string SkuNo { get; set; } // 鐗╂枡缂栧彿
+ public string OrderCode { get; set; } //涓婃父绯荤粺鍗曞彿
}
public class BoxInfo
{
diff --git a/Wms/Model/ModelVm/PdaVm/PdaSoVm.cs b/Wms/Model/ModelVm/PdaVm/PdaSoVm.cs
index 18f1ee8..5706974 100644
--- a/Wms/Model/ModelVm/PdaVm/PdaSoVm.cs
+++ b/Wms/Model/ModelVm/PdaVm/PdaSoVm.cs
@@ -42,7 +42,7 @@
/// 鍑哄簱鍗曟槑缁咺d
/// </summary>
public string SoDetailId { get; set; }
-
+
/// <summary>
/// 鏄惁鏁寸 0鏁寸 1鏁g洅
/// </summary>
@@ -59,6 +59,11 @@
public string BoxNo { get; set; }
/// <summary>
+ /// 绠辩爜闆嗗悎
+ /// </summary>
+ public List<string> BoxNoList{ get; set; }
+
+ /// <summary>
/// 鐩掔爜
/// </summary>
public string BoxNo2 { get; set; }
diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
index 79fec1e..a559ce4 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -1852,8 +1852,9 @@
var allotList = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "1" && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync();
return allotList;
}
+ var noticeList = Db.Queryable<BllExportNotice>().Where(w => w.IsDel == "0" && (w.Status == "3" || w.Status == "4")).Select(s => s.SONo).ToList();
//鑾峰彇鐘舵�佷负寰呮嫞璐ф垨鑰呴儴鍒嗘嫞璐х殑鍑哄簱鍗�
- var allotList2 = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3" || m.Status == "5") && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync();
+ var allotList2 = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3" || m.Status == "5") && m.PalletNo == palletNo && noticeList.Contains(m.SONo)).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync();
//var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList();
//鑾峰彇鍑哄簱鍗曟嵁涓嶄负寰呮嫞璐� 鎵ц瀹屾瘯 璁㈠崟鍏抽棴 绛夊緟鎵ц鐨勫崟鎹�
@@ -1964,7 +1965,7 @@
{
OutModel = data.OutMode,
Standard = data.Standard,
- PickQty = data.Qty,
+ PickQty = data.Qty - data.CompleteQty,
PickedQty = data.CompleteQty
};
return data2;
@@ -1978,10 +1979,16 @@
{
throw Oops.Bah("鏈煡璇㈠埌鍑哄簱鍗曠殑鏄庣粏");
}
+ var notice = await Db.Queryable<BllExportNotice>().FirstAsync(m => m.SONo == detail.SONo && m.IsDel == "0");
+ if (notice == null)
+ {
+ throw Oops.Bah("鏈煡璇㈠埌鍑哄簱鍗曚俊鎭�");
+ }
var data = new OutPdaInfo()
{
PlanQty = detail.Qty,
- FinishQty = detail.CompleteQty
+ FinishQty = detail.CompleteQty,
+ OrderCode = notice.OrderCode,
};
return data;
}
@@ -2112,23 +2119,26 @@
}
if (string.IsNullOrEmpty(boxNo))
{
- throw new Exception("鏍囩鏉$爜涓嶅彲涓虹┖!");
+ var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == palletNo).ToList();
+ boxNum = boxInfo.Sum(s => s.Qty);
}
- var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.BoxNo == boxNo && w.PalletNo == palletNo).ToList();
- if (boxInfo.Count <= 0)
+ else
{
- boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.BoxNo2 == boxNo && w.PalletNo == palletNo).ToList();
+ var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.BoxNo == boxNo && w.PalletNo == palletNo).ToList();
if (boxInfo.Count <= 0)
{
- boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.BoxNo3 == boxNo && w.PalletNo == palletNo).ToList();
+ boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.BoxNo2 == boxNo && w.PalletNo == palletNo).ToList();
+ if (boxInfo.Count <= 0)
+ {
+ boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.BoxNo3 == boxNo && w.PalletNo == palletNo).ToList();
+ }
}
+ if (boxInfo == null || boxInfo.Count <= 0)
+ {
+ throw new Exception("鏍囩鏉$爜鏈湪璇ユ墭鐩樺唴!");
+ }
+ boxNum = boxInfo.Sum(s => s.Qty);
}
- if (boxInfo == null || boxInfo.Count <= 0)
- {
- throw new Exception("鏍囩鏉$爜鏈湪璇ユ墭鐩樺唴!");
- }
- boxNum = boxInfo.Sum(s => s.Qty);
-
return boxNum;
}
catch (Exception ex)
@@ -3156,6 +3166,475 @@
throw new Exception(e.Message);
}
}
+ /// <summary>
+ /// 鎴愬搧鍑哄簱pda鎷h揣-JC34
+ /// </summary>
+ /// <param name="soNo"></param>
+ /// <param name="soDetailId"></param>
+ /// <param name="palletNo"></param>
+ /// <param name="boxNoList"></param>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ /// <exception cref="Exception"></exception>
+ public async Task SoSetPickCode34(string soNo, string soDetailId, string palletNo, List<string> boxNoList, int userId)
+ {
+ try
+ {
+ #region 鍒ゆ柇
+
+ if (string.IsNullOrWhiteSpace(soNo))
+ {
+ throw Oops.Bah("鍑哄簱鍗曟嵁涓嶈兘涓虹┖");
+ }
+ if (string.IsNullOrWhiteSpace(soDetailId))
+ {
+ throw Oops.Bah("鍑哄簱鐗╂枡-鎵规涓嶈兘涓虹┖");
+ }
+ if (string.IsNullOrWhiteSpace(palletNo))
+ {
+ throw Oops.Bah("鎵樼洏鐮佷笉鑳戒负绌�");
+ }
+ //寮�鍚簨鍔�
+ Db.BeginTran();
+
+ //鍑哄簱鍗�
+ var notice = await Db.Queryable<BllExportNotice>().FirstAsync(m => m.IsDel == "0" && m.SONo == soNo);
+ if (notice == null)
+ {
+ throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
+ }
+ if (notice.Status != "3")
+ {
+ throw Oops.Bah("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
+ }
+ //鍑哄簱鍗曟槑缁�
+ var noticeDetail = await Db.Queryable<BllExportNoticeDetail>()
+ .FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
+ if (noticeDetail == null)
+ {
+ throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
+ }
+ //鍑哄簱鍒嗛厤淇℃伅
+ var allot = await Db.Queryable<BllExportAllot>().FirstAsync(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 Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
+ }
+ //鍓╀綑鎷h揣鏁伴噺锛堝緟鎷e噺鍘诲凡鎷o級
+ var needQty = allot.Qty - allot.CompleteQty;
+
+ //搴撳瓨鏄庣粏
+ var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.Id == allot.StockId);
+ if (stockDetail == null)
+ {
+ throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�");
+ }
+ //搴撳瓨鎬昏〃
+ var stock = await Db.Queryable<DataStock>().FirstAsync(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
+ if (stock == null)
+ {
+ throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
+ }
+ #endregion
+
+ if (boxNoList == null || boxNoList.Count <= 0)//鏁存墭鎷h揣
+ {
+ List<DataBoxInfo> boxInfos;
+ var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo && m.SkuNo == stockDetail.SkuNo && m.LotNo == stockDetail.LotNo);//鎵惧埌鎵樼洏涓婃墍鏈夌鐮�
+ boxInfos = await boxInfo.ToListAsync();
+ if (boxInfo.Count() <= 0)
+ {
+ throw Oops.Bah("璇ユ墭鐩樹笂娌℃湁鍙嫞璐х殑绠卞瓙");
+ }
+ var boxQty = await boxInfo.GroupBy(m => m.PalletNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToListAsync();
+ if (boxQty[0] > needQty)
+ {
+ throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
+ }
+ decimal pickQty = 0;//鎷h揣鐨勬暟閲�
+ var comDetailList = await Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToListAsync();
+ var comList = new List<BllCompleteDetail>();
+ foreach (var item in boxInfos)
+ {
+ if (comDetailList.Any(m => m.BoxNo3 == item.BoxNo3) && item.BoxNo3 != null)
+ {
+ throw Oops.Bah($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
+ }
+ if (item.SkuNo != allot.SkuNo || item.LotNo != allot.LotNo)
+ {
+ throw Oops.Bah("褰撳墠鎵樼洏涓婃湁鍏朵粬涓嶅悓鐗╂枡鎵规锛屾嫞璐уけ璐�");
+ }
+ //娣诲姞鎷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);
+
+ //鍒犻櫎搴撳瓨绠辩爜鏄庣粏
+ await Db.Deleteable(item).ExecuteCommandAsync();
+ pickQty += item.Qty;
+ }
+ //娣诲姞鎷h揣鏄庣粏
+ await Db.Insertable(comList).ExecuteCommandAsync();
+ //淇敼鍑哄簱鍒嗛厤淇℃伅
+ allot.CompleteQty += pickQty;
+ allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3";
+ allot.UpdateTime = DateTime.Now;
+ await Db.Updateable(allot).ExecuteCommandAsync();
+ //鍒犻櫎搴撳瓨鏄庣粏
+ await Db.Deleteable(stockDetail).ExecuteCommandAsync();
+ //鍒犻櫎鎴栦慨鏀瑰簱瀛�
+ stock.Qty -= pickQty;
+ stock.LockQty -= pickQty;
+ if (stock.LockQty < 0)
+ {
+ stock.LockQty = 0;
+ }
+ if (stock.Qty <= 0)
+ {
+ await Db.Deleteable(stock).ExecuteCommandAsync();
+ }
+ else
+ {
+ await Db.Updateable(stock).ExecuteCommandAsync();
+ }
+ //鍒ゆ柇鎵樼洏涓婅繕鏈夋病鏈夊叾浠栫墿鏂�
+ var palletData = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && w.Id != stockDetail.Id);
+ if (palletData == null)
+ {
+ //鏀瑰彉鎵樼洏鐘舵�佷负锛氭湭浣跨敤
+ var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0");
+ if (pallet == null)
+ {
+ throw Oops.Bah("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
+ }
+ pallet.Status = "0";
+ await Db.Updateable(pallet).ExecuteCommandAsync();
+ }
+
+ //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
+ noticeDetail.CompleteQty += pickQty;
+ await Db.Updateable(noticeDetail).ExecuteCommandAsync();
+
+ var num = await Db.Queryable<BllExportNoticeDetail>()
+ .CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
+ if (num <= 0)
+ {
+ notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
+ //淇敼鍑哄簱鍗曚俊鎭�
+ await Db.Updateable(notice).ExecuteCommandAsync();
+ if (notice.IsWave == "1")
+ {
+ var waveNum = await Db.Queryable<BllExportNotice>().CountAsync(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo && m.Status != "4");
+ if (waveNum == 0)
+ {
+ var wave = await Db.Queryable<BllWaveMage>().FirstAsync(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo);
+ if (wave != null)
+ {
+ wave.Status = "4";
+ wave.UpdateUser = userId;
+ wave.UpdateTime = DateTime.Now;
+ await Db.Updateable(wave).ExecuteCommandAsync();
+ }
+ }
+ }
+ }
+
+ }
+ else
+ {
+ foreach (var boxNo in boxNoList)
+ {
+ var biaoShi = "0";//0锛氭暣绠辨嫞璐с��1锛氭暣鐩掓嫞璐с�� 2锛氭暎鏀嫞璐�
+ List<DataBoxInfo> boxInfos;
+ var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo);
+ if (await boxInfo.CountAsync() == 0)
+ {
+ biaoShi = "1";
+ boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo2 == boxNo);
+ if (await boxInfo.CountAsync() == 0)
+ {
+ biaoShi = "2";
+ boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo3 == boxNo);
+ if (await boxInfo.CountAsync() == 0)
+ {
+ throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
+ }
+ }
+ }
+ boxInfos = await boxInfo.ToListAsync();
+
+ if (boxInfos[0].SkuNo != allot.SkuNo || boxInfos[0].LotNo != allot.LotNo)
+ {
+ throw Oops.Bah("绠辩爜鐗╂枡鎵规鍜岄�夋嫨鐗╂枡鎵规涓嶄竴鑷达紒");
+ }
+
+ var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToList();
+ if (biaoShi == "2") //鏁f敮鎷h揣
+ {
+ boxInfos = boxInfos.Where(m => m.BoxNo3 == boxNo).ToList();
+
+ if (boxInfos.Count() == 0)
+ {
+ throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
+ }
+ if (boxInfos.Count() > 1)
+ {
+ throw Oops.Bah("璇ヨ拷婧敮鐮佺殑淇℃伅澶т簬1鏉★紝淇℃伅閿欒锛岃鏍稿疄锛�");
+ }
+
+ if (boxInfos.Any(m => m.PalletNo != palletNo))
+ {
+ throw Oops.Bah("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
+ }
+ var boxQty = boxInfos.First().Qty;
+ //if (boxQty > needQty)
+ //{
+ // throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
+ //}
+
+ foreach (var item in boxInfos)
+ {
+ if (comDetailList.Any(m => m.BoxNo3 == item.BoxNo3))
+ {
+ throw Oops.Bah($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
+ }
+ }
+ }
+ else if (biaoShi == "1")//鏁寸洅鎷h揣
+ {
+ if (boxInfo.Count() == 0)
+ {
+ throw Oops.Bah("鏈煡璇㈠埌璇ョ洅鐮佺殑淇℃伅");
+ }
+ if (boxInfo.Any(m => m.PalletNo != palletNo))
+ {
+ throw Oops.Bah("璇ユ墭鐩樹笌鐩掔爜娌℃湁缁戝畾鍏崇郴");
+ }
+ var boxQty = await boxInfo.GroupBy(m => m.BoxNo2).Select(m => SqlFunc.AggregateSum(m.Qty)).ToListAsync();
+ //if (boxQty[0] > needQty)
+ //{
+ // throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
+ //}
+
+ foreach (var item in boxInfos)
+ {
+ if (comDetailList.Any(m => m.BoxNo3 == item.BoxNo3))
+ {
+ throw Oops.Bah($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
+ }
+ }
+ }
+ else //鏁寸鎷h揣
+ {
+ if (boxInfo.Count() == 0)
+ {
+ throw Oops.Bah("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅");
+ }
+ if (boxInfo.Any(m => m.PalletNo != palletNo))
+ {
+ throw Oops.Bah("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
+ }
+ var boxQty = await boxInfo.GroupBy(m => m.BoxNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToListAsync();
+ //if (boxQty[0] > needQty)
+ //{
+ // throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
+ //}
+
+ foreach (var item in boxInfos)
+ {
+ if (comDetailList.Any(m => m.BoxNo == item.BoxNo))
+ {
+ throw Oops.Bah($"褰撳墠{item.BoxNo}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
+ }
+ }
+ }
+ decimal pickQty = 0;//鎷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 = item.Qty,
+
+ CreateUser = userId
+ };
+ comList.Add(completeDetail);
+
+ if (biaoShi != "3")
+ {
+ //鍒犻櫎搴撳瓨绠辩爜鏄庣粏
+ await Db.Deleteable(item).ExecuteCommandAsync();
+
+ pickQty += item.Qty;
+ }
+ }
+ //鏀瑰彉搴撳唴绠辩爜鏄惁闆剁淇℃伅
+ if (biaoShi == "1" || biaoShi == "2")
+ {
+ var boxSurplusList = new List<DataBoxInfo>();
+ if (biaoShi == "1")
+ {
+ boxSurplusList = boxInfo.Where(m => m.BoxNo2 != boxNo).ToList();
+ }
+ else
+ {
+ boxSurplusList = boxInfo.Where(m => m.BoxNo3 != boxNo).ToList();
+ }
+ foreach (var item in boxSurplusList)
+ {
+ item.BitBoxMark = "1";
+ await Db.Updateable(item).ExecuteCommandAsync();
+ }
+ }
+
+ await Db.Insertable(comList).ExecuteCommandAsync();
+ //淇敼鍑哄簱鍒嗛厤淇℃伅
+ allot.CompleteQty += pickQty;
+ allot.Status = allot.Qty <= allot.CompleteQty ? "5" : "3";
+ allot.UpdateTime = DateTime.Now;
+ if (allot.Status == "5")
+ {
+ //鍒ゆ柇璇ユ墭鐩樻槸鍚﹁繕瀛樺湪鐗╂枡 瀛樺湪鏀逛负寰呭洖搴� 寰呭洖搴撳畬鎴愬悗鏀逛负宸插畬鎴�
+ }
+ await Db.Updateable(allot).ExecuteCommandAsync();
+
+ //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁�
+ stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
+ stockDetail.Qty -= pickQty;
+ stockDetail.LockQty -= pickQty;
+ if (stockDetail.LockQty < 0)
+ {
+ stockDetail.LockQty = 0;
+ }
+ 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)
+ {
+ await Db.Deleteable(stockDetail).ExecuteCommandAsync();
+ }
+ else
+ {
+ await Db.Updateable(stockDetail).ExecuteCommandAsync();
+ }
+ stock.Qty -= pickQty;
+ stock.LockQty -= pickQty;
+ if (stock.LockQty < 0)
+ {
+ stock.LockQty = 0;
+ }
+ if (stock.Qty <= 0)
+ {
+ await Db.Deleteable(stock).ExecuteCommandAsync();
+ }
+ else
+ {
+ await Db.Updateable(stock).ExecuteCommandAsync();
+ }
+ var num2 = await Db.Queryable<DataStockDetail>().CountAsync(m => m.IsDel == "0" && m.PalletNo == palletNo);
+ if (num2 <= 0)
+ {
+ //鏀瑰彉鎵樼洏鐘舵��
+ var pallet = await Db.Queryable<SysPallets>().FirstAsync(m => m.PalletNo == palletNo && m.IsDel == "0");
+ if (pallet == null)
+ {
+ throw Oops.Bah("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
+ }
+ pallet.Status = "0";
+ await Db.Updateable(pallet).ExecuteCommandAsync();
+ }
+ //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
+ noticeDetail.CompleteQty += pickQty;
+ await Db.Updateable(noticeDetail).ExecuteCommandAsync();
+
+ var num = await Db.Queryable<BllExportNoticeDetail>()
+ .CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
+ if (num <= 0)
+ {
+ notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
+ //淇敼鍑哄簱鍗曚俊鎭�
+ await Db.Updateable(notice).ExecuteCommandAsync();
+ if (notice.IsWave == "1")
+ {
+ var waveNum = await Db.Queryable<BllExportNotice>()
+ .CountAsync(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo && m.Status != "4");
+ if (waveNum == 0)
+ {
+ var wave = await Db.Queryable<BllWaveMage>().FirstAsync(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo);
+ if (wave != null)
+ {
+ wave.Status = "4";
+ wave.UpdateUser = userId;
+ wave.UpdateTime = DateTime.Now;
+ await Db.Updateable(wave).ExecuteCommandAsync();
+ }
+ }
+ }
+ }
+ }
+ }
+ //娣诲姞鎿嶄綔鏃ュ織璁板綍
+ var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鎷h揣鍑哄簱", soNo, "鎷h揣", $"鍦≒DA涓婂鍑哄簱鍗曞彿涓猴細{soNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId);
+ Db.CommitTran();
+ }
+ //catch (AppFriendlyException e)
+ //{
+ // Db.RollbackTran();
+ //}
+ catch (Exception e)
+ {
+ Db.RollbackTran();
+ throw new Exception(e.Message);
+ }
+ }
//鍑哄簱pda鎷h揣
public async Task SoSetQtyPick(string soNo, string soDetailId, string palletNo, string PickQty, int userId)
{
diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index 706d873..6b66674 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -948,6 +948,7 @@
WaveNo = a.WaveNo,
IsDespatch = a.IsDespatch,
Demo = a.Demo,
+ OrderCode = a.OrderCode,
CreateUserName = c.RealName,
UpdateUserName = c.RealName,
diff --git a/Wms/WMS.IBLL/IPdaServer/IPdaSoServer.cs b/Wms/WMS.IBLL/IPdaServer/IPdaSoServer.cs
index c4f6de7..c1eba45 100644
--- a/Wms/WMS.IBLL/IPdaServer/IPdaSoServer.cs
+++ b/Wms/WMS.IBLL/IPdaServer/IPdaSoServer.cs
@@ -161,6 +161,17 @@
/// <returns></returns>
/// <exception cref="Exception"></exception>
Task SoSetPick34(string soNo, string soDetailId, string palletNo, string boxNo, string pickQty1, int userId);
+ /// <summary>
+ /// 鎴愬搧鍑哄簱pda鎷h揣-JC34
+ /// </summary>
+ /// <param name="soNo"></param>
+ /// <param name="soDetailId"></param>
+ /// <param name="palletNo"></param>
+ /// <param name="boxNoList"></param>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ /// <exception cref="Exception"></exception>
+ Task SoSetPickCode34(string soNo, string soDetailId, string palletNo, List<string> boxNoList, int userId);
/// <summary>
/// 鍑哄簱pda鎷h揣
diff --git a/Wms/Wms/Controllers/PdaSoController.cs b/Wms/Wms/Controllers/PdaSoController.cs
index 7842726..61eb828 100644
--- a/Wms/Wms/Controllers/PdaSoController.cs
+++ b/Wms/Wms/Controllers/PdaSoController.cs
@@ -184,6 +184,16 @@
//await _pdaSoSvc.SoSetPick(model.SoNo, model.SoDetailId, model.PalletNo, model.BoxNo, model.BoxNo3, model.PickQty, _userManager.UserId);
await _pdaSoSvc.SoSetPick34(model.SoNo, model.SoDetailId, model.PalletNo, model.BoxNo, model.PickQty, _userManager.UserId);
}
+ /// <summary>
+ /// 鎴愬搧鍑哄簱pda鎷h揣-JC34
+ /// </summary>
+ /// <param name="model"></param>
+ /// <returns></returns>
+ [HttpPost]
+ public async Task SoSetPickCode(PdaSoVm model)
+ {
+ await _pdaSoSvc.SoSetPickCode34(model.SoNo, model.SoDetailId, model.PalletNo, model.BoxNoList, _userManager.UserId);
+ }
/// <summary>
/// 鍑哄簱pda鎷h揣
--
Gitblit v1.8.0