From 02a4fdd78cef9c7d2a26bfb9aa187179cf0baac3 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期三, 25 二月 2026 17:44:26 +0800
Subject: [PATCH] 1
---
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs | 161 +++++++++++++++++++++++++++++++++++++----------------
1 files changed, 111 insertions(+), 50 deletions(-)
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
index ff4ee7c..bce772b 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -1,4 +1,5 @@
-锘縰sing Mapster;
+锘縰sing AngleSharp.Io;
+using Mapster;
using Masuit.Tools;
using SixLabors.Fonts.Tables.AdvancedTypographic;
using SqlSugar;
@@ -10,6 +11,7 @@
using WIDESEA_DTO.WMS;
using WIDESEA_IServices;
using WIDESEA_IStoragIntegrationServices;
+using WIDESEA_Model.Models;
using WIDESEAWCS_BasicInfoRepository;
using WIDESEAWCS_QuartzJob.Models;
@@ -86,30 +88,30 @@
{
if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
{
- if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
+ //if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
+ //{
+ if (!task.Roadway.Contains("FR") && stock.ProcessCode != "OCVB")
{
- if (!task.Roadway.Contains("FR") && stock.ProcessCode != "OCVB")
+ var agingOutputDto = MapToAgingOutputDto(stock);
+ content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto);
+
+ if (content.Status)
{
- var agingOutputDto = MapToAgingOutputDto(stock);
- content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto);
+ var result = JsonConvert.DeserializeObject<BasicResult>(content.Data.ToString());
- if (content.Status)
+ if (!result.Success && result.MessageCode == "E10001")
{
- var result = JsonConvert.DeserializeObject<BasicResult>(content.Data.ToString());
-
- if (!result.Success && result.MessageCode == "E10001")
- {
- await HandleOutBoundError(stock, task);
- }
- }
- else
- {
- task.Remark = "NG";
- ConsoleHelper.WriteErrorLine("MOM閫氭姤鐐硅姱NG");
- return content.Error("MOM閫氭姤鐐硅姱NG");
+ await HandleOutBoundError(stock, task);
}
}
+ else
+ {
+ task.Remark = "NG";
+ ConsoleHelper.WriteErrorLine("MOM閫氭姤鐐硅姱NG");
+ return content.Error("MOM閫氭姤鐐硅姱NG");
+ }
}
+ //}
}
if (task.Remark == "NG")
@@ -429,8 +431,8 @@
Console.WriteLine(err.Message.ToString());
LogFactory.GetLog("浠诲姟瀹屾垚").Error(true, err);
content.Error(err.Message);
- task.ErrorMessage= err.Message;
- task.TaskState=(int)TaskInStatusEnum.SC_InExecuting;
+ task.ErrorMessage = err.Message;
+ task.TaskState = (int)TaskInStatusEnum.SC_InExecuting;
await BaseDal.Update(task);
}
return content;
@@ -617,12 +619,12 @@
}
LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "楠岃瘉浠诲姟鏄惁瀛樺湪", JsonConvert.SerializeObject(task));
-
+
// 楠岃瘉搴撳瓨鏄惁瀛樺湪
var stock = await _stockInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode);
if (task.TaskType == (int)TaskOutboundTypeEnum.InToOut)
{
- return await CompleteInToOutTaskAsync(task,stock);
+ return await CompleteInToOutTaskAsync(task, stock);
}
// 鏍规嵁浠诲姟绫诲瀷璋冪敤鐩稿簲鐨勫畬鎴愪换鍔℃柟娉�
switch (task.TaskType)
@@ -637,7 +639,7 @@
case (int)TaskOutboundTypeEnum.OutTray:
case (int)TaskOutboundTypeEnum.Outbound:
case (int)TaskOutboundTypeEnum.OutNG:
-
+
LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍑哄簱浠诲姟", "");
return await CompleteStackTaskAsync(task, stock);
@@ -665,16 +667,20 @@
{
// 鏌ヨ浠诲姟
var task = await QueryTaskByPalletCode(input.PalletCode);
- if (task != null)
+ if (task != null && (task.TaskState == (int)TaskInStatusEnum.InNew || task.TaskState == (int)TaskOutStatusEnum.OutNew))
{
return CreateAndReturnWMSTaskDTO(task);
+ }
+ if(task != null && (task.TaskState != (int)TaskInStatusEnum.InNew || task.TaskState != (int)TaskOutStatusEnum.OutNew))
+ {
+ return content.Error($"鎵樼洏{input.PalletCode}瀛樺湪浠诲姟");
}
// 鏌ヨ搴撳瓨淇℃伅锛堣繖閲屽悗缁瀹屽杽璐ㄦ鍥炲簱閫昏緫锛�
var stock = await QueryStockInfo(input.PalletCode);
if (stock != null)
{
- List<string> strings = new List<string>() { "GW","CW","FR"};
+ List<string> strings = new List<string>() { "GW", "CW", "FR" };
if (stock.AreaCode.Contains(strings))
{
return content.Error($"鎵樼洏銆恵stock.PalletCode}銆戝瓨鍦ㄥ簱瀛樹笉鍏佽鍏ュ簱");
@@ -769,6 +775,7 @@
// return await HandleErrorCells(input, area, serialNosError);
//}
#endregion
+
var boxing = CreateBoxingInfo(result, input.PalletCode);
if (boxing == null) return content.Error("缁勭洏澶辫触");
@@ -865,8 +872,8 @@
var configOne = _configService.GetByConfigKey(CateGoryConst.CONFIG_SYS_InStacker, SysConfigConst.CHInboundEmptyProductLineOne);
var configTwo = _configService.GetByConfigKey(CateGoryConst.CONFIG_SYS_InStacker, SysConfigConst.CHInboundEmptyProductLineTwo);
- List<string> productLineconfigOne = configOne.ConfigValue.Split(',').ToList();
- List<string> productLineconfigTwo = configTwo.ConfigValue.Split(',').ToList();
+ List<string> productLineconfigOne = configOne.ConfigValue.Split(',').ToList();
+ List<string> productLineconfigTwo = configTwo.ConfigValue.Split(',').ToList();
if (productLineconfigOne.Count == 0 && productLineconfigTwo.Count() == 0)
{
@@ -885,13 +892,13 @@
{
ConsoleHelper.WriteErrorLine($"鏈壘鍒皗result.ProductionLine}瀵瑰簲閰嶇疆宸烽亾");
return content.Error($"鏈壘鍒皗result.ProductionLine}瀵瑰簲閰嶇疆宸烽亾");
- }
+ }
}
else
{
strings = stationManagers.Roadway.Split(',').ToList();
}
-
+
return await CreateNewTask(input, result.ProductionLine, result.ProcessCode, strings, 1);
}
@@ -910,8 +917,8 @@
// 鑾峰彇缁勭洏淇℃伅
private DtBoxingInfo CreateBoxingInfo(ResultTrayCellsStatus result, string palletCode)
- {
- var boxing=_boxingInfoRepository.QueryFirst(x=>x.PalletCode == palletCode);
+ {
+ var boxing = _boxingInfoRepository.QueryFirst(x => x.PalletCode == palletCode);
if (boxing == null)
{
return new DtBoxingInfo
@@ -930,8 +937,11 @@
}).ToList()
};
}
- else {
- _boxingInfoRepository.DeleteData(boxing);
+ else
+ {
+ _boxingInfoRepository.Db.DeleteNav<DtBoxingInfo>(x => x.Id == boxing.Id)
+ .Include(x => x.BoxingInfoDetails)
+ .ExecuteCommandAsync();
return new DtBoxingInfo
{
PalletCode = palletCode,
@@ -948,7 +958,7 @@
}).ToList()
};
}
-
+
}
// 鑾峰彇宸ヨ壓鐢宠
@@ -1020,6 +1030,8 @@
stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable;
await _locationRepository.UpdateDataAsync(stockInfo.LocationInfo);
}
+ if (position == "1670")
+ LogFactory.GetLog($"OCV{position}璇锋眰{productionLine}浠诲姟").Info(true, $"杩斿洖鍙傛暟{JsonConvert.SerializeObject(taskDTO)}");
// 杩斿洖鎴愬姛鍝嶅簲
return content.OK(data: taskDTO);
@@ -1058,16 +1070,28 @@
var result = new DtStockInfo();
- result = await _stockInfoRepository.Db.Queryable<DtStockInfo>()
+ var stockInfoList = await _stockInfoRepository.Db.Queryable<DtStockInfo>()
.Includes(x => x.LocationInfo)
- .Includes(x => x.StockInfoDetails)
+ //.Includes(x => x.StockInfoDetails)
.Where(x => x.AreaCode == areaCode && x.OutboundTime < DateTime.Now && x.IsFull)
.WhereIF(!productionLine.IsNullOrEmpty(), x => x.ProductionLine == productionLine)
.WhereIF(!devices.IsNullOrEmpty(), x => devices.Contains(x.LocationInfo.RoadwayNo))
.Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable)
- .WhereIF(!materielCodes.IsNullOrEmpty(), x => x.StockInfoDetails.Any(y => materielCodes.Contains(y.MaterielCode)))
+ //.WhereIF(!materielCodes.IsNullOrEmpty(), x => x.StockInfoDetails.Any(y => materielCodes.Contains(y.MaterielCode)))
.OrderBy(x => x.OutboundTime)
- .FirstAsync();
+ .ToListAsync();
+ foreach (var stock in stockInfoList)
+ {
+ var hasMatchingDetail = await _stockInfoRepository.Db.Queryable<DtStockInfoDetail>()
+ .Where(d => d.StockId == stock.Id && materielCodes.Contains(d.MaterielCode))
+ .AnyAsync();
+
+ if (hasMatchingDetail)
+ {
+ result = stock;
+ break;
+ }
+ }
if (result.IsNullOrEmpty())
ConsoleHelper.WriteErrorLine($"{area.AreaName}-{productionLine}鏌ヨ瀹炵洏搴撳瓨淇℃伅澶辫触:鏈壘鍒扮鍚堟潯浠剁殑鏁版嵁");
@@ -1115,21 +1139,43 @@
.Where(x => x.DeviceCode.Contains("CWSC"))
.ToList().Select(x => x.DeviceCode).ToList();
+ //var result = await _stockInfoRepository.Db.Queryable<DtStockInfo>()
+ // .Where(x => areaCodes.Contains(x.AreaCode) && x.OutboundTime < DateTime.Now && x.IsFull == true) // 杩囨护鏉′欢
+ // .WhereIF(!productionLine.IsNullOrEmpty(), x => x.ProductionLine == productionLine)
+ // .Includes(x => x.LocationInfo)
+ // .WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo))
+ // .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && areaId.Contains(x.LocationInfo.AreaId) && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable) // 杩囨护鏉′欢
+ // .Includes(x => x.StockInfoDetails)
+ // .WhereIF(!materielCodes.IsNullOrEmpty(), x => x.StockInfoDetails.Any(y => materielCodes.Contains(y.MaterielCode)))
+ // .OrderBy(x => x.OutboundTime) // 鎺掑簭
+ // .FirstAsync(); // 鑾峰彇绗竴涓厓绱�
+
+ DtStockInfo stockInfo = null;
var result = await _stockInfoRepository.Db.Queryable<DtStockInfo>()
.Where(x => areaCodes.Contains(x.AreaCode) && x.OutboundTime < DateTime.Now && x.IsFull == true) // 杩囨护鏉′欢
.WhereIF(!productionLine.IsNullOrEmpty(), x => x.ProductionLine == productionLine)
.Includes(x => x.LocationInfo)
.WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo))
.Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && areaId.Contains(x.LocationInfo.AreaId) && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable) // 杩囨护鏉′欢
- .Includes(x => x.StockInfoDetails)
- .WhereIF(!materielCodes.IsNullOrEmpty(), x => x.StockInfoDetails.Any(y => materielCodes.Contains(y.MaterielCode)))
.OrderBy(x => x.OutboundTime) // 鎺掑簭
- .FirstAsync(); // 鑾峰彇绗竴涓厓绱�
+ .ToListAsync();
- if (result.IsNullOrEmpty())
+ foreach (var stock in result)
+ {
+ var hasMatchingDetail = await _stockInfoRepository.Db.Queryable<DtStockInfoDetail>()
+ .Where(d => d.StockId == stock.Id && materielCodes.Contains(d.MaterielCode))
+ .AnyAsync();
+
+ if (hasMatchingDetail)
+ {
+ stockInfo = stock;
+ break;
+ }
+ }
+ if (stockInfo.IsNullOrEmpty())
ConsoleHelper.WriteErrorLine($"{JsonConvert.SerializeObject(areaCodes)}-{productionLine}鏌ヨ甯告俯瀹炵洏搴撳瓨淇℃伅澶辫触:鏈壘鍒扮鍚堟潯浠剁殑鏁版嵁");
- return result;
+ return stockInfo;
}
catch (Exception ex)
{
@@ -1158,21 +1204,36 @@
.Where(x => stackers.Contains(x.DeviceCode))
.ToList().Select(x => x.DeviceCode).ToList();
+ DtStockInfo stockInfo = null;
+
var result = await _stockInfoRepository.Db.Queryable<DtStockInfo>()
.Where(x => x.ProductionLine == station.productLine)
.Where(x => x.AreaCode == areaCode && x.IsFull == false)
- .Includes(x => x.StockInfoDetails)
- .Where(x => x.StockInfoDetails.Any(y => y.MaterielCode == "绌烘墭鐩�"))
+ //.Includes(x => x.StockInfoDetails)
+ //.Where(x => x.StockInfoDetails.Any(y => y.MaterielCode == "绌烘墭鐩�"))
.Includes(x => x.LocationInfo)
.WhereIF(!deviceCode.IsNullOrEmpty(), x => deviceCode.Contains(x.LocationInfo.RoadwayNo))
.Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.AreaId == area.AreaID && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable) // 杩囨护鏉′欢
.OrderBy(x => x.CreateDate) // 鎺掑簭
- .FirstAsync(); // 杞崲涓哄垪琛�
+ .ToListAsync();
+
+ foreach (var stock in result)
+ {
+ var hasMatchingDetail = await _stockInfoRepository.Db.Queryable<DtStockInfoDetail>()
+ .Where(d => d.StockId == stock.Id && d.MaterielCode == "绌烘墭鐩�")
+ .AnyAsync();
+
+ if (hasMatchingDetail)
+ {
+ stockInfo = stock;
+ break;
+ }
+ }
if (result.IsNullOrEmpty())
ConsoleHelper.WriteErrorLine($"{area}-{station.productLine}鏌ヨ绌虹洏搴撳瓨淇℃伅澶辫触:鏈壘鍒扮鍚堟潯浠剁殑鏁版嵁");
- return result;
+ return stockInfo;
}
catch (Exception ex)
{
@@ -1314,7 +1375,7 @@
if (stockInfo.AreaCode.Contains("CH"))
{
// 鍒涘缓骞舵坊鍔犱换鍔″埌鏁版嵁搴�
- if(stockInfo.LocationInfo.RoadwayNo=="CHSC1"|| stockInfo.LocationInfo.RoadwayNo == "CHSC2"|| stockInfo.LocationInfo.RoadwayNo == "CHSC3")
+ if (stockInfo.LocationInfo.RoadwayNo == "CHSC1" || stockInfo.LocationInfo.RoadwayNo == "CHSC2" || stockInfo.LocationInfo.RoadwayNo == "CHSC3")
{
task = CreateTask(stockInfo, "1020-1", taskType);
}
@@ -1322,7 +1383,7 @@
{
task = CreateTask(stockInfo, "1049-8", taskType);
}
-
+
}
else
{
@@ -2149,7 +2210,7 @@
ToAddress = await GetRoadWayAsync(process);
else
ToAddress = process[0];
- if(string.IsNullOrEmpty(ToAddress))
+ if (string.IsNullOrEmpty(ToAddress))
{
return content.Error("鏃犳硶鑾峰彇鐩爣鍦板潃");
}
--
Gitblit v1.9.3