From 42ef25fe7032eea68b02bd8dd7692a37d1d184da Mon Sep 17 00:00:00 2001
From: hwh <332078369@qq.com>
Date: 星期二, 16 七月 2024 16:57:22 +0800
Subject: [PATCH] 盘点出库方法调整;分页返回值修改
---
Wms/WMS.BLL/BllCheckServer/WarehouseOutsidePalletsServer.cs | 310 +++++++++++++++++++++++----------------------------
1 files changed, 138 insertions(+), 172 deletions(-)
diff --git a/Wms/WMS.BLL/BllCheckServer/WarehouseOutsidePalletsServer.cs b/Wms/WMS.BLL/BllCheckServer/WarehouseOutsidePalletsServer.cs
index 69e2368..9e2a432 100644
--- a/Wms/WMS.BLL/BllCheckServer/WarehouseOutsidePalletsServer.cs
+++ b/Wms/WMS.BLL/BllCheckServer/WarehouseOutsidePalletsServer.cs
@@ -4,6 +4,8 @@
using System;
using System.Collections.Generic;
using System.Text;
+using System.Threading.Tasks;
+using Utility;
using WMS.BLL.LogServer;
using WMS.DAL;
using WMS.Entity.BllAsnEntity;
@@ -18,8 +20,10 @@
public class WarehouseOutsidePalletsServer : DbHelper<DataStockDetail>, IWarehouseOutsidePalletsServer
{
private static readonly SqlSugarScope Db = DataContext.Db;
- public WarehouseOutsidePalletsServer() : base(Db)
+ private readonly UserManager _userManager;
+ public WarehouseOutsidePalletsServer(UserManager userManager) : base(Db)
{
+ _userManager = userManager;
}
/// <summary>
@@ -30,196 +34,158 @@
/// <param name="lotNo">鎵规</param>
/// <param name="palletNo">鎵樼洏鍙�</param>
/// <returns></returns>
- public List<MateDataStockDto> GetPalletsOutside(string skuNo, string skuName, string lotNo, string palletNo, int page, int limit, out int count)
+ public async Task<List<MateDataStockDto>> GetPalletsOutside(string skuNo, string skuName, string lotNo, string palletNo, int page, int limit, RefAsync<int> count)
{
- string sqlCount = "SELECT DISTINCT COUNT(DataStockDetail.ID) " +
- "FROM DataStockDetail " +
- "where IsDel = 0 and isnull(LocatNo,'') = '' and isnull(WareHouseNo,'') = '' ";
-
- string str = "select Id,LotNo,LotText,SupplierLot,SkuNo,SkuName,Standard,Qty,LockQty,FrozenQty,PalletNo," +
- "Status,InspectMark,BitPalletMark,InspectStatus " +
- "from DataStockDetail " +
- "where IsDel = 0 and isnull(LocatNo,'') = '' and isnull(WareHouseNo,'') = ''";
- //鍒ゆ柇鐗╂枡鍙锋槸鍚︿负绌�
- if (!string.IsNullOrEmpty(skuNo))
- {
- str += $" and SkuNo like '%{skuNo}%'";
- }
- //鍒ゆ柇鐗╂枡鍚嶇О鏄惁涓虹┖
- if (!string.IsNullOrEmpty(skuName))
- {
- str += $" and SkuName like '%{skuName}%'";
- }
- //鍒ゆ柇鎵规鏄惁涓虹┖
- if (!string.IsNullOrEmpty(lotNo))
- {
- str += $" and LotNo like '%{lotNo}%'";
- }
- //鍒ゆ柇鎵樼洏鍙锋槸鍚︿负绌�
- if (!string.IsNullOrEmpty(palletNo))
- {
- str += $" and PalletNo like '%{palletNo}%'";
- }
- //鎺掑簭
- str += " order by LotNo,SkuNo,PalletNo";
- if (page == 0)
- {
- page = 1;
- }
- str += $" offset {((page - 1) * limit)} rows fetch next {limit} rows only;";
- List<MateDataStockDto> mateDataStockDtos = Db.Ado.SqlQuery<MateDataStockDto>(str);
- var com = new Common();
- count = com.GetRowCount(sqlCount);
- return mateDataStockDtos;
+ var list = await Db.Queryable<DataStockDetail>()
+ .Where(a => a.IsDel == "0" && SqlFunc.IsNullOrEmpty(a.LocatNo) && SqlFunc.IsNullOrEmpty(a.WareHouseNo))
+ .WhereIF(!string.IsNullOrEmpty(skuNo), a => a.SkuNo.Contains(skuNo))
+ .WhereIF(!string.IsNullOrEmpty(skuName), a => a.SkuName.Contains(skuName))
+ .WhereIF(!string.IsNullOrEmpty(lotNo), a => a.LotNo.Contains(lotNo))
+ .WhereIF(!string.IsNullOrEmpty(palletNo), a => a.PalletNo.Contains(palletNo))
+ .OrderBy(a => new { a.LotNo, a.SkuNo, a.PalletNo })
+ .Select<MateDataStockDto>()
+ .ToPageListAsync(page, limit, count);
+ return list;
}
//淇濆瓨鎸囧畾鐨勫偍浣�
- public void SaveAppointSlot(int stockDetailId, int locateId, int userId)
+ public async Task SaveAppointSlot(int stockDetailId, int locateId)
{
+ //搴撳瓨鏄庣粏淇℃伅
+ var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.Id == stockDetailId);
+ if (stockDetail == null)
+ {
+ throw Oops.Bah("鏈煡璇㈠埌搴撳瓨搴撳鎵樼洏鐨勪俊鎭�");
+ }
+ if (!string.IsNullOrWhiteSpace(stockDetail.LocatNo))
+ {
+ throw Oops.Bah("璇ユ墭鐩樺凡鍦ㄥ偍浣嶄笂锛屼笉鑳芥寚瀹氬偍浣嶏紝璇锋牳瀹烇紒");
+ }
+ //鍌ㄤ綅
+ var locate = await Db.Queryable<SysStorageLocat>().FirstAsync(m => m.IsDel == "0" && m.Id == locateId);
+ if (locate == null)
+ {
+ throw Oops.Bah("鏈煡璇㈠埌鍌ㄤ綅鐨勪俊鎭�");
+ }
+ if (locate.Status != "0" || locate.Flag != "0")
+ {
+ throw Oops.Bah("璇ュ偍浣嶇姸鎬佷笉鏄┖鍌ㄤ綅鎴栨爣蹇椾笉鏄甯哥殑");
+ }
+
+ var logTask = await Db.Queryable<LogTask>().FirstAsync(m => m.IsDel == "0" && m.Type == "0" && m.PalletNo == stockDetail.PalletNo && m.Status == "1");
+ if (logTask != null)
+ {
+ throw Oops.Bah("褰撳墠鎵樼洏宸叉湁姝e湪鎵ц鐨勪换鍔★紝璇锋牳瀹炴煡鐪�");
+ }
+
+
+ //鑻ユ槸娣卞害1鐨� 鍒欏垽鏂繁搴�2鏄惁涓虹┖鍌ㄤ綅
+ if (locate.Depth == "01")
+ {
+ var locateDepth = await Db.Queryable<SysStorageLocat>().FirstAsync(a => a.IsDel == "0" && a.Row == locate.Row && a.Column == locate.Column && a.Layer == locate.Layer && a.Depth == "02");
+ if (locateDepth != null)
+ {
+ if (locateDepth.Status != "1")
+ {
+ throw Oops.Bah("璇ュ偍浣嶆繁搴�2涓嶆槸鏈夌墿鍝侊紝涓嶅彲缁戝畾");
+ }
+ }
+ }
+ //鍒ゆ柇鏄惁涓烘繁搴�2鐨� 鑻ヤ负娣卞害2 鍒欒幏鍙栨繁搴�1鍌ㄤ綅 鍒ゆ柇鏄惁涓虹┖鍌ㄤ綅
+ if (locate.Depth == "02")
+ {
+ var locateDepth = await Db.Queryable<SysStorageLocat>().FirstAsync(a => a.IsDel == "0" && a.Row == locate.Row && a.Column == locate.Column && a.Layer == locate.Layer && a.Depth == "01");
+ if (locateDepth.Status != "0" || locateDepth.Flag == "2")
+ {
+ throw Oops.Bah("璇ュ偍浣嶆繁搴�1涓嶆槸绌哄偍浣嶆垨鏍囧織涓嶆槸姝e父鐨�");
+ }
+ }
+
+ // 鑾峰彇姝ゆ墭鐩樼殑浠诲姟鍙�
+ var taskModel = await Db.Queryable<LogTask>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == stockDetail.PalletNo && m.IsSuccess == 0 && m.Status == "0");
+
+ Db.BeginTran();
try
{
-
- //搴撳瓨鏄庣粏淇℃伅
- var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.Id == stockDetailId);
- if (stockDetail == null)
+ var time = DateTime.Now;
+ var taskNo = string.Empty;
+ if (taskModel == null) // 涔嬪墠鏈寚瀹氭墭鐩�
{
- throw new Exception("鏈煡璇㈠埌搴撳瓨搴撳鎵樼洏鐨勪俊鎭�");
- }
- if (!string.IsNullOrWhiteSpace(stockDetail.LocatNo))
- {
- throw new Exception("璇ユ墭鐩樺凡鍦ㄥ偍浣嶄笂锛屼笉鑳芥寚瀹氬偍浣嶏紝璇锋牳瀹烇紒");
- }
- //鍌ㄤ綅
- var locate = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.Id == locateId);
- if (locate == null)
- {
- throw new Exception("鏈煡璇㈠埌鍌ㄤ綅鐨勪俊鎭�");
- }
- if (locate.Status != "0" || locate.Flag != "0")
- {
- throw new Exception("璇ュ偍浣嶇姸鎬佷笉鏄┖鍌ㄤ綅鎴栨爣蹇椾笉鏄甯哥殑");
- }
-
- var logTask = Db.Queryable<LogTask>().First(m => m.IsDel == "0" && m.Type == "0" && m.PalletNo == stockDetail.PalletNo && m.Status == "1");
- if (logTask != null)
- {
- throw new Exception("褰撳墠鎵樼洏宸叉湁姝e湪鎵ц鐨勪换鍔★紝璇锋牳瀹炴煡鐪�");
- }
-
-
- //鑻ユ槸娣卞害1鐨� 鍒欏垽鏂繁搴�2鏄惁涓虹┖鍌ㄤ綅
- if (locate.Depth == "01")
- {
- var locateDepth = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.Row == locate.Row && a.Column == locate.Column && a.Layer == locate.Layer && a.Depth == "02");
- if (locateDepth != null)
+ // 娣诲姞鍏ュ簱鏃ュ織璁板綍
+ taskNo = new Common().GetMaxNo("TK");
+ var task = new LogTask //鍏ュ簱浠诲姟
{
- if (locateDepth.Status != "1")
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "WCS",
+ IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+ SendDate = time, //鍙戦�佹椂闂�
+ BackDate = time, //杩斿洖鏃堕棿
+ StartRoadway = "", // 璧峰宸烽亾
+ StartLocat = "",//璧峰浣嶇疆
+ EndLocat = locate.LocatNo,//鐩爣浣嶇疆
+ EndRoadway = locate.RoadwayNo, // 鐩爣宸烽亾
+ PalletNo = stockDetail.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 = "鍏ュ簱鍙e埌=>>" + locate.LocatNo + "鍌ㄤ綅鐨勫叆搴撲换鍔�", //鍏抽敭淇℃伅
+
+ };
+ await Db.Insertable(task).ExecuteCommandAsync();
+
+ locate.Status = "2";
+ await Db.Updateable(locate).ExecuteCommandAsync();
+ }
+ else // 宸叉寚瀹氳繃鎵樼洏闇�鍙樻洿
+ {
+ // 鑾峰彇涓婃鎸囧畾鐨勫偍浣嶅湴鍧�
+ var locateOld = await Db.Queryable<SysStorageLocat>().FirstAsync(m => m.IsDel == "0" && m.LocatNo == taskModel.EndLocat);
+ if (locateOld != null)
+ {
+ if (locateOld.LocatNo == locate.LocatNo) // 鍒ゆ柇褰撳墠鎸囧畾鐨勫湴鍧�鍜屼笂娆$殑鏄惁涓�鑷达紝鑻ヤ竴鑷翠笉鍋氭洿鏀�
{
- throw new Exception("璇ュ偍浣嶆繁搴�2涓嶆槸鏈夌墿鍝侊紝涓嶅彲缁戝畾");
+ throw new Exception("宸叉寚瀹氱浉鍚屽偍浣嶅湴鍧�");
+ }
+ else // 鑻ヤ笉涓�鑷� 閲婃斁涓婃鎸囧畾鐨勫偍浣嶅湴鍧�
+ {
+ locateOld.Status = "0";
+ await Db.Updateable(locateOld).ExecuteCommandAsync();
}
}
+ locate.Status = "2";
+ await Db.Updateable(locate).ExecuteCommandAsync();
+ // 鏇存柊浠诲姟鍙锋寚瀹氬湴鍧�淇℃伅
+ taskModel.EndLocat = locate.LocatNo;//鐩爣鍌ㄤ綅
+ taskModel.EndRoadway = locate.RoadwayNo;//鐩爣宸烽亾
+ await Db.Updateable(taskModel).ExecuteCommandAsync();
+
+ taskNo = taskModel.TaskNo;
}
- //鍒ゆ柇鏄惁涓烘繁搴�2鐨� 鑻ヤ负娣卞害2 鍒欒幏鍙栨繁搴�1鍌ㄤ綅 鍒ゆ柇鏄惁涓虹┖鍌ㄤ綅
- if (locate.Depth == "02")
+ // 鏇存柊缁勭洏琛ㄥ贩閬撳湴鍧�鍜屽偍浣嶅湴鍧�
+ var bindModel = await Db.Queryable<BllPalletBind>().FirstAsync(m => m.IsDel == "0"
+ && m.PalletNo == stockDetail.PalletNo && m.ASNDetailNo == stockDetail.ASNDetailNo && m.ASNNo == stockDetail.ASNNo);
+ if (string.IsNullOrWhiteSpace(bindModel.TaskNo) || bindModel.TaskNo == taskNo)
{
- var locateDepth = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.Row == locate.Row && a.Column == locate.Column && a.Layer == locate.Layer && a.Depth == "01");
- if (locateDepth.Status != "0" || locateDepth.Flag == "2")
- {
- throw new Exception("璇ュ偍浣嶆繁搴�1涓嶆槸绌哄偍浣嶆垨鏍囧織涓嶆槸姝e父鐨�");
- }
+ bindModel.TaskNo = taskNo;
+ bindModel.WareHouseNo = locate.WareHouseNo;
+ bindModel.RoadwayNo = locate.RoadwayNo;
+ bindModel.LocatNo = locate.LocatNo;
+ await Db.Updateable(bindModel).ExecuteCommandAsync();
}
-
- // 鑾峰彇姝ゆ墭鐩樼殑浠诲姟鍙�
- var taskModel = Db.Queryable<LogTask>().First(m=>m.IsDel=="0" && m.PalletNo == stockDetail.PalletNo && m.IsSuccess ==0 && m.Status =="0");
-
- Db.BeginTran();
- try
- {
- var time = DateTime.Now;
- var taskNo = string.Empty;
- if (taskModel == null) // 涔嬪墠鏈寚瀹氭墭鐩�
- {
- // 娣诲姞鍏ュ簱鏃ュ織璁板綍
- taskNo = new Common().GetMaxNo("TK");
- var task = new LogTask //鍏ュ簱浠诲姟
- {
- TaskNo = taskNo,
- Sender = "WMS",
- Receiver = "WCS",
- IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
- SendDate = time, //鍙戦�佹椂闂�
- BackDate = time, //杩斿洖鏃堕棿
- StartRoadway = "", // 璧峰宸烽亾
- StartLocat = "",//璧峰浣嶇疆
- EndLocat = locate.LocatNo,//鐩爣浣嶇疆
- EndRoadway = locate.RoadwayNo, // 鐩爣宸烽亾
- PalletNo = stockDetail.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 = "鍏ュ簱鍙e埌=>>" + locate.LocatNo + "鍌ㄤ綅鐨勫叆搴撲换鍔�", //鍏抽敭淇℃伅
-
- };
- Db.Insertable(task).ExecuteCommand();
-
- locate.Status = "2";
- Db.Updateable(locate).ExecuteCommand();
- }
- else // 宸叉寚瀹氳繃鎵樼洏闇�鍙樻洿
- {
- // 鑾峰彇涓婃鎸囧畾鐨勫偍浣嶅湴鍧�
- var locateOld = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.LocatNo == taskModel.EndLocat);
- if (locateOld != null)
- {
- if (locateOld.LocatNo == locate.LocatNo) // 鍒ゆ柇褰撳墠鎸囧畾鐨勫湴鍧�鍜屼笂娆$殑鏄惁涓�鑷达紝鑻ヤ竴鑷翠笉鍋氭洿鏀�
- {
- throw new Exception("宸叉寚瀹氱浉鍚屽偍浣嶅湴鍧�");
- }
- else // 鑻ヤ笉涓�鑷� 閲婃斁涓婃鎸囧畾鐨勫偍浣嶅湴鍧�
- {
- locateOld.Status = "0";
- Db.Updateable(locateOld).ExecuteCommand();
- }
- }
- locate.Status = "2";
- Db.Updateable(locate).ExecuteCommand();
- // 鏇存柊浠诲姟鍙锋寚瀹氬湴鍧�淇℃伅
- taskModel.EndLocat = locate.LocatNo;//鐩爣鍌ㄤ綅
- taskModel.EndRoadway = locate.RoadwayNo;//鐩爣宸烽亾
- Db.Updateable(taskModel).ExecuteCommand();
-
- taskNo = taskModel.TaskNo;
- }
- // 鏇存柊缁勭洏琛ㄥ贩閬撳湴鍧�鍜屽偍浣嶅湴鍧�
- var bindModel = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0"
- && m.PalletNo == stockDetail.PalletNo && m.ASNDetailNo == stockDetail.ASNDetailNo && m.ASNNo == stockDetail.ASNNo);
- if (string.IsNullOrWhiteSpace(bindModel.TaskNo) || bindModel.TaskNo == taskNo)
- {
- bindModel.TaskNo = taskNo;
- bindModel.WareHouseNo = locate.WareHouseNo;
- bindModel.RoadwayNo = locate.RoadwayNo;
- bindModel.LocatNo = locate.LocatNo;
- Db.Updateable(bindModel).ExecuteCommand();
- }
- // 鎻掑叆鎿嶄綔鏃ュ織
- new OperationASNServer().AddLogOperationAsn("搴撳唴浣滀笟", "搴撳鎵樼洏", stockDetail.PalletNo, "缂栬緫",
- $"鎸囧畾浜嗗偍浣嶏細{locate.LocatNo}銆佸崟鎹彿锛歿stockDetail.ASNNo}銆佹墭鐩樼爜锛歿stockDetail.PalletNo}鐨勪俊鎭�", userId);
- //鎻愪氦浜嬪姟
- Db.CommitTran();
- }
- catch (Exception e)
- {
- Db.RollbackTran();
- throw new Exception(e.Message);
- }
-
+ // 鎻掑叆鎿嶄綔鏃ュ織
+ new OperationASNServer().AddLogOperationAsn("搴撳唴浣滀笟", "搴撳鎵樼洏", stockDetail.PalletNo, "缂栬緫",
+ $"鎸囧畾浜嗗偍浣嶏細{locate.LocatNo}銆佸崟鎹彿锛歿stockDetail.ASNNo}銆佹墭鐩樼爜锛歿stockDetail.PalletNo}鐨勪俊鎭�", _userManager.UserId);
+ //鎻愪氦浜嬪姟
+ Db.CommitTran();
}
catch (Exception e)
{
+ Db.RollbackTran();
throw new Exception(e.Message);
}
}
--
Gitblit v1.8.0