From f546c6012b27a31a0c70089b6398c9ce935f2ce0 Mon Sep 17 00:00:00 2001
From: 刘磊 <1161824510@qq.com>
Date: 星期六, 23 十一月 2024 14:56:54 +0800
Subject: [PATCH] 1
---
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs | 282 +++++++++++++++++++++++++------------------------------
1 files changed, 129 insertions(+), 153 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 54847d1..fd86725 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
@@ -2,6 +2,8 @@
using Mapster;
using Masuit.Tools;
using Masuit.Tools.Models;
+using System.Linq;
+using System.Threading.Tasks;
using WIDESEA_DTO.MOM;
using WIDESEA_DTO.WMS;
using WIDESEA_IStorageBasicRepository;
@@ -10,10 +12,11 @@
using WIDESEA_StorageBasicRepository;
using WIDESEA_StorageTaskRepository;
using WIDESEA_StoragIntegrationServices;
+using WIDESEAWCS_BasicInfoRepository;
namespace WIDESEA_StorageOutTaskServices;
-public class Dt_TaskService : ServiceBase<Dt_Task, IDt_TaskRepository>, IDt_TaskService
+public partial class Dt_TaskService : ServiceBase<Dt_Task, IDt_TaskRepository>, IDt_TaskService
{
private readonly LogFactory LogFactory = new LogFactory();
private readonly IUnitOfWorkManage _unitOfWorkManage;
@@ -36,6 +39,7 @@
private readonly IDt_AreaInfoRepository _areaInfoRepository; //鍖哄煙
private readonly IAgingInOrOutInputService _agingInOrOutInputService; //闈欑疆\闄堝寲
private readonly IProductionRepository _productionRepository; //鐢熶骇
+ private readonly IDt_StationManagerRepository _stationManagerRepository;
public Dt_TaskService(IDt_TaskRepository BaseDal,
IUnitOfWorkManage unitOfWorkManage,
@@ -57,7 +61,8 @@
IDt_AreaInfoRepository areaInfoRepository,
IAgingInOrOutInputService agingInOrOutInputService,
IStockInfoDetailRepository stockInfoDetailRepository,
- IProductionRepository productionRepository) : base(BaseDal)
+ IProductionRepository productionRepository,
+ IDt_StationManagerRepository stationManagerRepository) : base(BaseDal)
{
_unitOfWorkManage = unitOfWorkManage;
_outOrderRepository = outOrderRepository;
@@ -79,6 +84,7 @@
_agingInOrOutInputService = agingInOrOutInputService;
_stockInfoDetailRepository = stockInfoDetailRepository;
_productionRepository = productionRepository;
+ _stationManagerRepository = stationManagerRepository;
}
#region 澶栭儴鎺ュ彛鏂规硶
@@ -96,10 +102,12 @@
//var process = await SqlSugarHelper.Db.Queryable<Dt_EquipmentProcess>()
// .FirstAsync(x => x.EquipmentName == task.Roadway);
//var info = JsonConvert.DeserializeObject<ResponseEqptRunDto>(process.ProcessValue);
-
- var agingOutputDto = MapToAgingOutputDto(stock);
- content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto);
- ValidateResponse(content);
+ if (!task.Roadway.Contains("FR")) //闈炲垎瀹瑰簱鍖哄潎涓婃姤MOM鍑哄叆绔�
+ {
+ var agingOutputDto = MapToAgingOutputDto(stock);
+ content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto);
+ ValidateResponse(content);
+ }
}
// 鏇存柊搴撳瓨鐘舵�佸拰浠诲姟鐘舵��
@@ -131,6 +139,13 @@
{
throw new Exception("鏈壘鍒板搴旂殑搴撳尯淇℃伅");
}
+
+ var parameterInfo = JsonConvert.DeserializeObject<List<ParameterInfo>>(stock.ParameterInfos).FirstOrDefault(y => y.Description.Contains("鏃堕棿"));
+ if (parameterInfo == null) throw new Exception("");
+
+ var outHours = (DateTime.Now - stock.OutboundTime.Value).TotalHours;
+ var isNG = outHours > parameterInfo.LowerSpecificationsLimit.ToDouble() && outHours < parameterInfo.UpperSpecificationsLimit.ToDouble();
+
return new AgingOutputDto
{
OpFlag = 1,
@@ -142,18 +157,17 @@
SlotNo = x.OrderNo.ToInt32(),
SerialNo = x.SerialNumber,
SerialNoResult = true,
- ParameterInfo = new List<ParameterInfo> { new ParameterInfo() { Value = (DateTime.Now - stock.CreateDate).TotalMinutes.ToString() } }
- //ParameterInfo = info.ParameterInfo.Select(y => new ParameterInfo()
- //{
- // 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()
+ ParameterInfo = new List<ParameterInfoOutput> {
+ new ParameterInfoOutput() {
+ Value = outHours.ToString(),
+ ParameterCode =parameterInfo.ParameterCode,
+ ParameterDesc = parameterInfo.Description,
+ ParameterResult = isNG.ToString(),
+ TargetValue = parameterInfo.TargetValue,
+ LowerLomit = parameterInfo.LowerSpecificationsLimit,
+ UpperLimit = parameterInfo.UpperSpecificationsLimit,
+ }
+ }
}).ToList()
};
}
@@ -266,6 +280,27 @@
WebResponseContent content = new WebResponseContent();
try
{
+ if (task.TaskType == (int)TaskInboundTypeEnum.InNG)
+ {
+ task.TaskState = (int)TaskInStatusEnum.SC_InFinish;
+ // 鍒涘缓鍘嗗彶浠诲姟瀹炰緥妯″瀷
+ var taskHtyNG = CreateHistoricalTask(task);
+
+ // 鎵ц鏁版嵁搴撲簨鍔�
+ await _unitOfWorkManage.UseTranAsync(async () =>
+ {
+
+ // 娣诲姞鍘嗗彶浠诲姟
+ var isTaskHtyAdd = await _task_HtyRepository.AddDataAsync(taskHtyNG) > 0;
+
+ // 鍒犻櫎浠诲姟鏁版嵁
+ var isTaskDelete = await Delete(task.TaskId);
+ if (!isTaskHtyAdd || !isTaskDelete)
+ throw new Exception("娣诲姞澶辫触");
+ });
+ return content.OK("鍏ュ簱浠诲姟瀹屾垚鎴愬姛");
+ }
+
// 鑾峰彇瑁呯淇℃伅鍜岀洰鏍囦綅缃俊鎭�
var boxing = await _boxingInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode);
var locationInf = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress);
@@ -371,6 +406,8 @@
//2024骞�11鏈�16鏃ワ細鏂板瀛楁璁$畻搴斿嚭搴撴椂闂�
stock.OutboundTime = Convert.ToDateTime(respone.LinedProcessFeedbackTime).AddHours(Convert.ToDouble(respone.SpecialParameterDuration));
stock.ProductionLine = respone.ProductionLine;
+ stock.ParameterInfos = respone.ParameterInfos.ToJsonString();
+ stock.StockStatus = 1;
// 璁板綍鏃ュ織
LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟瀹屾垚", $"璐т綅鍦板潃锛歿task.TargetAddress},淇敼鍚庤揣浣嶆暟鎹細{locationInf}");
@@ -402,6 +439,11 @@
return content.Error("浠诲姟涓嶅瓨鍦�");
}
LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "楠岃瘉浠诲姟鏄惁瀛樺湪", JsonConvert.SerializeObject(task));
+
+ if(task.TaskType == (int)TaskOutboundTypeEnum.InToOut)
+ {
+ return await CompleteInToOutTaskAsync(task);
+ }
// 楠岃瘉搴撳瓨鏄惁瀛樺湪
var stock = await _stockInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode);
@@ -463,6 +505,13 @@
}
}
+
+ var stock = await _stockInfoRepository.QueryFirstNavAsync(x => x.PalletCode == input.PalletCode && x.IsFull);
+ if (stock != null)
+ {
+ // TODO璐ㄦ鍥炲簱
+ }
+
var area = await _areaInfoRepository.QueryFirstAsync(x => x.Spare1.Contains(input.Position));
if (area == null)
return content.Error("鏀圭偣浣嶄笉鍦ㄥ尯鍩熷垪琛ㄤ腑瀛樺湪");
@@ -484,8 +533,25 @@
// 娣诲姞缁勭洏淇℃伅
// 灏哻ontent.Data杞崲涓篟esultTrayCellsStatus瀵硅薄
var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
- if (result.SerialNos.Count <= 0)
+ if (!result.Success)
return content.Error(result.MOMMessage);
+
+ // 鑾峰彇寮傚父鐢佃姱
+ var serialNosError = result.SerialNos.Where(x => x.SerialNoStatus != 1).ToList();
+ if (serialNosError.Count > 0)
+ {
+ // TODO 鍒涘缓浠诲姟閫佽嚦NG鎺掑嚭鍙�
+ List<string> NGStation = input.Position == "1088" ? new List<string>() { "1020" } : new List<string>() { "JZSC01" };
+ content = await CreateNewTask(input, NGStation, 2);
+ return content.Error("瀛樺湪寮傚父鐢佃姱");
+ }
+
+ if (result.SerialNos.Count <= 0)
+ {
+ // Todo 绌烘墭鐩樺叆搴撻�昏緫
+ content = await RequestTrayInTaskAsync(input);
+ return content;
+ }
// TODO 鑾峰彇鏈湴鏂欐灞炴�т笌鏁寸洏鐢佃姱灞炴�ц幏鍙栫殑鍊艰繘琛屽姣旓紝濡傛灉涓�鑷村垯缁х画锛屽惁鍒欒繑鍥為敊璇俊鎭�
//var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty));
@@ -596,7 +662,6 @@
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)
{
@@ -642,38 +707,6 @@
SerialNo = item.SerialNo
}).ToList()
};
- }
-
- // 鑾峰彇宸ヨ壓鍝嶅簲
- private async Task<List<Dt_EquipmentProcess>> GetProcessResponseAsync(ProcessApplyDto process, string position)
- {
- // 濡傛灉process涓簄ull锛屽垯杩斿洖null
- if (process == null) return null;
-
- // 璋冪敤_processApplyService.GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹虹敵璇�
- WebResponseContent content = await _processApplyService.GetProcessApplyAsync(process);
- // 濡傛灉鐘舵�佷负false锛屽垯杩斿洖null
- if (!content.Status) return null;
-
- // 灏哻ontent.Data杞崲涓篟esultProcessApply瀵硅薄
- var apply = JsonConvert.DeserializeObject<ResultProcessApply>(content.Data.ToString());
- // 鏍规嵁position鐨勫�硷紝杩斿洖涓嶅悓鐨凞t_EquipmentProcess鍒楄〃
- switch (position)
- {
- case "1088":
- return SqlSugarHelper.Db.Queryable<Dt_EquipmentProcess>()
- .Where(x => x.EquipmentType == "闄堝寲" && x.WipOrderNo == apply.WipOrderNo || x.ProductDesc == apply.ProductNo)
- .ToList();
-
- case "1339":
- case "1406":
- return SqlSugarHelper.Db.Queryable<Dt_EquipmentProcess>()
- .Where(x => x.EquipmentType == "闈欑疆" && x.WipOrderNo == apply.WipOrderNo || x.ProductDesc == apply.ProductNo)
- .ToList();
-
- default:
- return new List<Dt_EquipmentProcess>();
- }
}
#endregion 璇锋眰浠诲姟鍏ュ簱
@@ -1191,80 +1224,6 @@
#region 浠诲姟璇锋眰鏂规硶
- /// <summary>
- /// 鏇存柊鐜版湁浠诲姟
- /// </summary>
- /// <param name="input">璇锋眰妯″瀷</param>
- /// <param name="areaId">鍖哄煙ID</param>
- /// <param name="task">浠诲姟瀹炰緥</param>
- /// <param name="content">鍝嶅簲鍐呭</param>
- /// <returns></returns>
- //private async Task<WebResponseContent> UpdateExistingTask(RequestTaskDto input, Dt_Task task)
- //{
- // // 鍒涘缓WebResponseContent瀵硅薄
- // WebResponseContent content = new WebResponseContent();
- // // 瀹氫箟鍙橀噺
- // string toAddress;
- // int taskState;
- // string original = task.CurrentAddress;
- // DtLocationInfo location = new DtLocationInfo();
- // int beforeStatus = 0;
-
- // // 澶勭悊鍏ュ簱浠诲姟
- // location = await GetLocationDistributeAsync(task.Roadway);
- // toAddress = location.LocationCode;
- // taskState = (int)TaskInStatusEnum.Line_InFinish;
- // beforeStatus = location.LocationStatus;
-
- // // 鏇存柊璐т綅淇℃伅
- // location.LocationStatus = (int)LocationEnum.Lock;
-
- // // 鏇存柊浠诲姟淇℃伅
- // task.CurrentAddress = input.Position;
- // task.TargetAddress = toAddress;
- // task.NextAddress = toAddress;
- // task.TaskState = taskState;
-
- // // 寮�濮嬩簨鍔�
- // _unitOfWorkManage.BeginTran();
- // // 瀹氫箟鍙橀噺
- // bool isUpdateLo = true;
- // bool isUpdateChange = true;
-
- // // 灏濊瘯鏇存柊浠诲姟
- // bool isResult = await BaseDal.UpdateDataAsync(task);
- // bool isTaskDetail = await _taskExecuteDetailRepository.AddDetailAsync(task, false, TaskDescription.GetTaskUpdateDescription(task.PalletCode, original, input.Position, TaskInStatusEnum.Line_InFinish.GetIntegralRuleTypeEnumDesc()));
-
- // // 鍒涘缓LocationChangeRecordDto瀵硅薄
- // LocationChangeRecordDto changeRecordDto = new LocationChangeRecordDto()
- // {
- // // 璁剧疆鍙橀噺
- // AfterStatus = location.LocationStatus,
- // BeforeStatus = beforeStatus,
- // TaskNum = task.TaskNum.Value,
- // LocationId = location.Id,
- // LocationCode = location.LocationCode,
- // ChangeType = (int)StatusChangeTypeEnum.AutomaticStorage,
- // };
- // // 鏇存柊浣嶇疆鐘舵��
- // isUpdateChange = _locationStatusChangeRecordRepository.AddStatusChangeRecord(changeRecordDto);
- // isUpdateLo = await _locationRepository.UpdateDataAsync(location);
-
- // if (isResult && isUpdateLo && isTaskDetail)
- // {
- // // 鎻愪氦浜嬪姟
- // _unitOfWorkManage.CommitTran();
- // content.OK(data: task);
- // }
- // else
- // {
- // // 鍥炴粴浜嬪姟
- // _unitOfWorkManage.RollbackTran();
- // content.Error("鏇存柊浠诲姟澶辫触");
- // }
- // return content;
- //}
-
// 鏇存柊浠诲姟璐т綅
private async Task<WebResponseContent> UpdateExistingTask(RequestTaskDto input, Dt_Task task)
@@ -1280,33 +1239,46 @@
var content = new WebResponseContent();
// 鑾峰彇鐩爣鍦板潃鍜屾洿鏂颁换鍔$姸鎬�
- var location = await GetLocationDistributeAsync(task.Roadway);
- if (location == null)
+ if (task.TaskType == (int)TaskInboundTypeEnum.InNG)
{
- return content.Error("鏃犳硶鑾峰彇璐т綅淇℃伅");
+ // TODO 鏍规嵁宸烽亾鏌ユ壘瀵瑰簲NG鍙o紝鐜板湪榛樿鍘婚潤缃爢鍨涙満鐨勫紓甯稿彛璐т綅鍙�
+ task.CurrentAddress = input.Position;
+ task.TargetAddress = "002-021-000";
+ task.NextAddress = "002-021-000";
+ task.TaskState = (int)TaskInStatusEnum.Line_InFinish;
+ bool isResult = await BaseDal.UpdateDataAsync(task);
+ return content.OK(data: task);
+ }
+ else
+ {
+ var location = await GetLocationDistributeAsync(task.Roadway);
+ if (location == null)
+ {
+ return content.Error("鏃犳硶鑾峰彇璐т綅淇℃伅");
+ }
+
+ string toAddress = location.LocationCode;
+ int taskState = (int)TaskInStatusEnum.Line_InFinish;
+ int beforeStatus = location.LocationStatus;
+ // 鏇存柊璐т綅淇℃伅
+ location.LocationStatus = (int)LocationEnum.Lock;
+
+ // 鏇存柊浠诲姟淇℃伅
+ MapTaskProperties(task, input, toAddress, taskState);
+
+ // 寮�濮嬩簨鍔�
+ var isResult = await UpdateTaskAsync(task, location, beforeStatus);
+ if (!isResult)
+ {
+ _unitOfWorkManage.RollbackTran();
+ return content.Error("鏇存柊浠诲姟澶辫触");
+ }
+
+ // 鎻愪氦浜嬪姟
+ _unitOfWorkManage.CommitTran();
+ return content.OK(data: task);
}
- string toAddress = location.LocationCode;
- int taskState = (int)TaskInStatusEnum.Line_InFinish;
- int beforeStatus = location.LocationStatus;
-
- // 鏇存柊璐т綅淇℃伅
- location.LocationStatus = (int)LocationEnum.Lock;
-
- // 鏇存柊浠诲姟淇℃伅
- MapTaskProperties(task, input, toAddress, taskState);
-
- // 寮�濮嬩簨鍔�
- var isResult = await UpdateTaskAsync(task, location, beforeStatus);
- if (!isResult)
- {
- _unitOfWorkManage.RollbackTran();
- return content.Error("鏇存柊浠诲姟澶辫触");
- }
-
- // 鎻愪氦浜嬪姟
- _unitOfWorkManage.CommitTran();
- return content.OK(data: task);
}
catch (Exception ex)
{
@@ -1360,7 +1332,11 @@
// 鑾峰彇鐩爣鍦板潃
//string ToAddress = await GetRoadWayAsync(process);
- string ToAddress = await GetRoadWayAsync(input, process);
+ string ToAddress = string.Empty;
+ if (flag != 2)
+ ToAddress = await GetRoadWayAsync(input, process);
+ else
+ ToAddress = process[0];
// 鍒涘缓鏂颁换鍔″疄渚�
var task = new Dt_Task
@@ -1376,7 +1352,7 @@
PalletCode = input.PalletCode,
SourceAddress = input.Position,
TaskState = (int)TaskInStatusEnum.InNew,
- TaskType = flag == 0 ? (int)TaskInboundTypeEnum.Inbound : (int)TaskInboundTypeEnum.InTray,
+ TaskType = flag == 0 ? (int)TaskInboundTypeEnum.Inbound : flag == 1 ? (int)TaskInboundTypeEnum.InTray : (int)TaskInboundTypeEnum.InNG,
TaskNum = await BaseDal.GetTaskNo(),
Creater = "Systeam"
};
@@ -1398,7 +1374,7 @@
PalletCode = task.PalletCode,
RoadWay = task.Roadway,
SourceAddress = task.SourceAddress,
- TargetAddress = task.Roadway,
+ TargetAddress = task.TargetAddress,
TaskState = task.TaskState.Value,
Id = 0,
TaskType = task.TaskType,
--
Gitblit v1.9.3