From deb1079692d620377c5cdee9ed02b59223a2206f Mon Sep 17 00:00:00 2001
From: 陈勇 <chenyong@hnkhzn.com>
Date: 星期二, 19 十一月 2024 10:21:05 +0800
Subject: [PATCH] 合并
---
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs | 179 +++++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 148 insertions(+), 31 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 2236c93..7143a2d 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,6 +1,7 @@
锘縰sing log4net.Core;
using Mapster;
using Masuit.Tools;
+using Masuit.Tools.Models;
using WIDESEA_DTO.MOM;
using WIDESEA_DTO.WMS;
using WIDESEA_IStorageBasicRepository;
@@ -124,6 +125,7 @@
private AgingOutputDto MapToAgingOutputDto(DtStockInfo stock, ResponseEqptRunDto info)
{
+ // TODO Value鍊兼牴鎹甅OM涓嬪彂鐨勯潤缃椂闂村埌褰撳墠鏃堕棿鐨勫垎閽熸暟
return new AgingOutputDto
{
OpFlag = 1,
@@ -135,16 +137,16 @@
SlotNo = x.OrderNo.ToInt32(),
SerialNo = x.SerialNumber,
SerialNoResult = true,
- ParameterInfo = info.ParameterInfo.Select(x => new ParameterInfo()
+ ParameterInfo = info.ParameterInfo.Select(y => new ParameterInfo()
{
- LowerLomit = x.LowerControlLimit,
- UpperLimit = x.UpperControlLimit,
- ParameterResult = x.EquipmentAvailabilityFlag,
- ParameterCode = x.ParameterCode,
- ParameterDesc = x.Description,
- TargetValue = x.TargetValue,
- Value = (DateTime.Now - stock.CreateDate).TotalMinutes.ToString(),
- DefectCode = x.UOMCode
+ LowerLomit = y.LowerControlLimit,
+ UpperLimit = y.UpperControlLimit,
+ ParameterResult = y.EquipmentAvailabilityFlag,
+ ParameterCode = y.ParameterCode,
+ ParameterDesc = y.Description,
+ TargetValue = y.TargetValue,
+ Value = (DateTime.Parse(stock.LinedProcessFeedbackTime, null, System.Globalization.DateTimeStyles.RoundtripKind).ToLocalTime() - stock.CreateDate).TotalMinutes.ToString(),
+ DefectCode = y.UOMCode
}).ToList()
}).ToList()
};
@@ -252,6 +254,91 @@
/// </summary>
/// <param name="task">浠诲姟鏁版嵁鍚堥泦</param>
/// <returns>杩斿洖缁撴灉闆�</returns>
+ //public async Task<WebResponseContent> CompleteInboundTaskAsync(Dt_Task task)
+ //{
+ // WebResponseContent content = new WebResponseContent();
+ // try
+ // {
+ // var boxing = await _boxingInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode);
+ // var locationInf = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress);
+
+ // locationInf.LocationStatus = (int)LocationEnum.InStock;
+
+ // // 鍒涘缓鍘嗗彶浠诲姟瀹炰緥妯″瀷
+ // var taskHty = CreateHistoricalTask(task);
+
+ // // 鍒涘缓搴撳瓨瀹炰緥妯″瀷
+ // DtStockInfo stock;
+ // if (boxing == null)
+ // {
+ // // 绌烘墭鐩�
+
+ // stock = new DtStockInfo()
+ // {
+ // PalletCode = task.PalletCode,
+ // LocationCode = task.TargetAddress,
+ // CreateDate = DateTime.Now,
+ // Creater = "system",
+ // IsFull = boxing.IsFull,
+ // StockInfoDetails = new List<DtStockInfoDetail>()
+ // {
+ // new DtStockInfoDetail()
+ // {
+ // MaterielCode = "绌烘墭鐩�",
+ // Id = 0,
+ // }
+ // }
+ // };
+ // }
+ // else
+ // {
+ // // 瀹炵洏
+ // var boxDetail = boxing.BoxingInfoDetails.Adapt<List<DtStockInfoDetail>>();
+ // // 鍒涘缓搴撳瓨瀹炰緥妯″瀷
+ // stock = new DtStockInfo()
+ // {
+ // PalletCode = task.PalletCode,
+ // LocationCode = task.TargetAddress,
+ // CreateDate = DateTime.Now,
+ // Creater = "system",
+ // IsFull = boxing.IsFull,
+ // StockInfoDetails = boxDetail,
+ // };
+
+ // AgingInputDto agingInputDto = new AgingInputDto()
+ // {
+ // SerialNos = boxing.BoxingInfoDetails
+ // .Select(item => new SerialNoInDto { SerialNo = item.SerialNumber, PositionNo = item.OrderNo })
+ // .ToList(),
+ // TrayBarcode = task.PalletCode,
+ // OpFlag = 1
+ // };
+ // var result = await _agingInOrOutInputService.GetOCVInputAsync(agingInputDto);
+ // stock.Remark = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString()).LinedProcessFeedbackTime;
+
+ // LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟瀹屾垚", $"璐т綅鍦板潃锛歿task.TargetAddress},淇敼鍚庤揣浣嶆暟鎹細{locationInf}");
+
+ // }
+
+ // // 鎵ц鏁版嵁搴撲簨鍔�
+ // bool isResult = await ExecuteTransaction(stock, taskHty, locationInf, task.TaskId);
+ // if (isResult)
+ // content.OK("鍏ュ簱浠诲姟瀹屾垚鎴愬姛");
+ // else
+ // content.Error("鍏ュ簱浠诲姟瀹屾垚澶辫触");
+ // }
+ // catch (Exception err)
+ // {
+ // Console.WriteLine(err.Message.ToString());
+ // }
+ // return content;
+ //}
+
+ /// <summary>
+ /// 瀹屾垚鍏ュ簱浠诲姟
+ /// </summary>
+ /// <param name="task">浠诲姟鏁版嵁鍚堥泦</param>
+ /// <returns>杩斿洖缁撴灉闆�</returns>
public async Task<WebResponseContent> CompleteInboundTaskAsync(Dt_Task task)
{
// 鍒濆鍖栧搷搴斿唴瀹�
@@ -310,6 +397,7 @@
{
MaterielCode = "绌烘墭鐩�",
Id = 0,
+ Status = (int)StockStateEmun.宸插叆搴�
}
}
};
@@ -321,6 +409,7 @@
private DtStockInfo CreateFullPalletStock(Dt_Task task, DtLocationInfo locationInf, DtBoxingInfo boxing)
{
var boxDetail = boxing.BoxingInfoDetails.Adapt<List<DtStockInfoDetail>>();
+ boxDetail.ForEach(x => { x.Status = (int)StockStateEmun.宸插叆搴�; });
var stock = new DtStockInfo()
{
PalletCode = task.PalletCode,
@@ -345,7 +434,8 @@
};
var result = _agingInOrOutInputService.GetOCVInputAsync(agingInputDto).Result;
var respone = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString());
- stock.Remark = respone.LinedProcessFeedbackTime;
+ stock.LinedProcessFeedbackTime = respone.LinedProcessFeedbackTime;
+ stock.SpecialParameterDuration = respone.SpecialParameterDuration;
// 璁板綍鏃ュ織
LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟瀹屾垚", $"璐т綅鍦板潃锛歿task.TargetAddress},淇敼鍚庤揣浣嶆暟鎹細{locationInf}");
@@ -442,6 +532,7 @@
{
Software = "WMS",
TrayBarcode = input.PalletCode,
+ //EquipmentCode = "EQ_CWJZ01"
EquipmentCode = "ECH001-B"
};
@@ -457,9 +548,9 @@
return content.Error(result.MOMMessage);
// TODO 鑾峰彇鏈湴鏂欐灞炴�т笌鏁寸洏鐢佃姱灞炴�ц幏鍙栫殑鍊艰繘琛屽姣旓紝濡傛灉涓�鑷村垯缁х画锛屽惁鍒欒繑鍥為敊璇俊鎭�
- var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty));
- if (productions.Count <= 0)
- return content.Error("鏂欐灞炴�т笉瀛樺湪");
+ //var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty));
+ //if (productions.Count <= 0)
+ // return content.Error("鏂欐灞炴�т笉瀛樺湪");
// 璋冪敤CreateBoxingInfo鏂规硶锛屽垱寤虹粍鐩樹俊鎭�
@@ -483,7 +574,7 @@
List<string> strings = input.Position == "1088" ? new List<string>() { "CHSC01" } : new List<string>() { "JZSC01" };
// 璋冪敤CreateNewTask鏂规硶锛屽垱寤烘柊浠诲姟
- content = await CreateNewTask(input, strings);
+ content = await CreateNewTask(input, strings);
if (content.Status)
{
var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing);
@@ -555,7 +646,11 @@
return content.OK(data: task);
}
- return await CreateNewTask(input, null, 1);
+ // 鑾峰彇鐩爣鍦板潃
+ List<string> strings = input.Position == "1016" ? new List<string>() { "CHSC01" } : new List<string>() { "JZSC01" };
+
+ return await CreateNewTask(input, strings, 1);
+ //return await CreateNewTask(input, null, 1);
}
catch (Exception)
{
@@ -656,12 +751,20 @@
{
// 鏍规嵁鎵樼洏绫诲瀷鏌ヨ搴撳瓨淇℃伅
DtStockInfo stockInfo = tag == (int)TaskOutboundTypeEnum.Outbound
- ? QueryStockInfoForRealTray(areaCode, roadways)
- : QueryStockInfoForEmptyTray(areaCode, roadways);
+ ? QueryStockInfoForRealTrayAsync(areaCode, roadways).Result
+ : QueryStockInfoForEmptyTrayAsync(areaCode, roadways).Result;
if (stockInfo == null)
{
return content.Error("搴撳瓨淇℃伅涓嶅瓨鍦�");
+ }
+
+ // 鏂板閲嶅浠诲姟鏍¢獙
+ var hasTask = BaseDal.QueryFirst(x => x.PalletCode == stockInfo.PalletCode);
+ if (hasTask != null)
+ {
+ WMSTaskDTO taskDTO1 = CreateTaskDTO(hasTask);
+ return content.OK("宸插瓨鍦ㄧ┖鐩樺嚭搴撲换鍔�", data: taskDTO1);
}
// 鍒涘缓鏂颁换鍔″疄渚�
@@ -696,25 +799,38 @@
/// <summary>
/// 鏌ヨ瀹炵洏搴撳瓨淇℃伅
/// </summary>
- private DtStockInfo QueryStockInfoForRealTray(string areaCode, List<string> roadways)
+ private async Task<DtStockInfo> QueryStockInfoForRealTrayAsync(string areaCode, List<string> roadways)
{
- return _stockInfoRepository.Db.Queryable<DtStockInfo>().Where(x => x.AreaCode == areaCode && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo))
- .Includes(x => x.LocationInfo)
- .Includes(x => x.StockInfoDetails)
- .OrderBy(x => x.CreateDate)
- .First();
+ // TODO鏃堕棿鏍规嵁MOM绯荤粺閰嶇疆鐨勫嚭搴撴椂闂存潵鑾峰彇,鏆傛椂涓嶇煡閬揗OM杩斿洖鐨勬椂闂存槸浠�涔堟墍浠ヨ繖閲屾祴璇曟椂鍊欏湪鏀�
+ //return _stockInfoRepository.QueryFirstNavAsync(x => x.AreaCode == areaCode && Convert.ToDateTime(x.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(x.SpecialParameterDuration)) < DateTime.Now
+ // && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo) && x.StockInfoDetails.Any(x => x.Status == (int)StockStateEmun.宸插叆搴�) && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).Result;
+
+ var result = await _stockInfoRepository.Db.Queryable<DtStockInfo>().Where(x =>
+ x.AreaCode == areaCode &&
+ Convert.ToDateTime(x.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(x.SpecialParameterDuration)) < DateTime.Now)
+ .Includes(x => x.LocationInfo)
+ .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo))
+ .Includes(x => x.StockInfoDetails)
+ .Where(x => x.StockInfoDetails.Any(detail => detail.Status == (int)StockStateEmun.宸插叆搴�))
+ .OrderBy(x => x.CreateDate)
+ .FirstAsync();
+ return result;
}
/// <summary>
/// 鏌ヨ绌虹洏搴撳瓨淇℃伅
/// </summary>
- private DtStockInfo QueryStockInfoForEmptyTray(string areaCode, List<string> roadways)
+ private async Task<DtStockInfo> QueryStockInfoForEmptyTrayAsync(string areaCode, List<string> roadways)
{
- return _stockInfoRepository.Db.Queryable<DtStockInfo>().Where(x => x.AreaCode == areaCode && x.StockInfoDetails.Any(z => z.MaterielCode == "绌烘墭鐩�") && roadways.Contains(x.LocationInfo.RoadwayNo))
- .Includes(x => x.LocationInfo)
- .Includes(x => x.StockInfoDetails)
- .OrderBy(x => x.CreateDate)
- .First();
+ //return _stockInfoRepository.QueryFirstNavAsync(x => x.StockInfoDetails.Any(x => x.MaterielCode == "绌烘墭鐩�") && roadways.Contains(x.LocationInfo.RoadwayNo) && x.StockInfoDetails.Any(x => x.Status == (int)StockStateEmun.宸插叆搴�) && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).Result;
+ var result = await _stockInfoRepository.Db.Queryable<DtStockInfo>()
+ .Includes(x => x.LocationInfo)
+ .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo))
+ .Includes(x => x.StockInfoDetails)
+ .Where(x => x.StockInfoDetails.Any(detail => detail.Status == (int)StockStateEmun.宸插叆搴� && detail.MaterielCode == "绌烘墭鐩�"))
+ .OrderBy(x => x.CreateDate)
+ .FirstAsync();
+ return result;
}
/// <summary>
@@ -1208,7 +1324,8 @@
WebResponseContent content = new WebResponseContent();
// 鑾峰彇鐩爣鍦板潃
- string ToAddress = await GetRoadWayAsync(process);
+ //string ToAddress = await GetRoadWayAsync(process);
+ string ToAddress = await GetRoadWayAsync(input, process);
// 鍒涘缓鏂颁换鍔″疄渚�
var task = new Dt_Task
@@ -1298,7 +1415,7 @@
/// <param name="Direction">鏂瑰悜</param>
/// <param name="area">鍏崇郴鍖哄煙</param>
/// <returns></returns>
- public async Task<string> GetRoadWayAsync(List<string> process)
+ public async Task<string> GetRoadWayAsync(RequestTaskDto input, List<string> process)
{
var minGroup = _locationRepository.QueryData(x => process.Contains(x.RoadwayNo) && x.LocationStatus == (int)LocationEnum.Free)
.GroupBy(x => x.RoadwayNo)
--
Gitblit v1.9.3