From 885092869d8a27a0b77d6e55d3dd3f00f29e8002 Mon Sep 17 00:00:00 2001
From: yangpeixing <yangpeixing@hnkhzn.com>
Date: 星期四, 04 十二月 2025 15:45:48 +0800
Subject: [PATCH] 1
---
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs | 165 ++++++++++++++++++++++++++++++------------------------
1 files changed, 91 insertions(+), 74 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs"
index e9f8f4b..7d5d27d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs"
@@ -17,6 +17,7 @@
using System.Reflection;
using System.Reflection.Metadata;
using System.Security.Policy;
+using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using WIDESEA_Cache;
@@ -95,6 +96,26 @@
_wareAreaInfoRepository = wareAreaInfoRepository;
_inventoryRecordRepository = inventoryRecordRepository;
}
+ #region 鍒濆鍖栨彁鍗囨満
+ public async Task<WebResponseContent> InitializationElevator()
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ var address = GetWCSIPAddress("WCSIPAddress","InitializationElevator");
+ if (address != null)
+ {
+ await HttpHelper.PostAsync(address, "");
+ return content.OK("鎴愬姛");
+ }
+ return content.Error("澶辫触");
+ }
+ catch (Exception ex)
+ {
+ return content.Error(ex.Message);
+ }
+ }
+ #endregion
#region 澶栭儴鎺ュ彛鏂规硶
@@ -363,64 +384,6 @@
}
#endregion 鍏ュ簱浠诲姟瀹屾垚
- #region AGV鎼繍浠诲姟瀹屾垚
- public async Task<WebResponseContent> CompleteCarryTaskAsync(Dt_Task task,DtStockInfo stockInfo)
- {
- WebResponseContent content = new WebResponseContent();
- try
- {
- var Sourcelocation = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.SourceAddress);
- var Targetlocation = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress);
-
- //UpdateLocationStatus(Sourcelocation, LocationEnum.Free);
- //UpdateLocationStatus(Targetlocation, LocationEnum.InStock);
-
- task.TaskState = (int)TaskAGVCarryStatusEnum.CarryFinish;
- var taskHty = task.Adapt<Dt_Task_Hty>();
- taskHty.FinishTime = DateTime.Now;
- taskHty.OperateType = App.User.UserName != null ? (int)OperateTypeEnum.浜哄伐瀹屾垚 : (int)OperateTypeEnum.鑷姩瀹屾垚;
- taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System";
- await _unitOfWorkManage.UseTranAsync(async () =>
- {
- await DeleteTaskAsync(task.TaskId);
- await AddTaskHtyAsync(taskHty);
- });
- }
- catch (Exception ex)
- {
- return content.Error(ex.Message);
- }
- return content;
- }
-
- #endregion
-
- #region AGV璺ㄦゼ灞備换鍔″畬鎴�
- public async Task<WebResponseContent> CompleteAcrossFloorTaskAsync(Dt_Task task, DtStockInfo stockInfo)
- {
- WebResponseContent content = new WebResponseContent();
- try
- {
- task.TaskState = (int)TaskAcrossFloorStatusEnum.CarryFinish;
- var taskHty = task.Adapt<Dt_Task_Hty>();
- taskHty.FinishTime = DateTime.Now;
- taskHty.OperateType = App.User.UserName != null ? (int)OperateTypeEnum.浜哄伐瀹屾垚 : (int)OperateTypeEnum.鑷姩瀹屾垚;
- taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System";
- await _unitOfWorkManage.UseTranAsync(async () =>
- {
- await DeleteTaskAsync(task.TaskId);
- await AddTaskHtyAsync(taskHty);
- });
- }
- catch (Exception ex)
- {
- return content.Error(ex.Message);
- }
- return content;
- }
-
- #endregion
-
#region 浠诲姟瀹屾垚
/// <summary>
@@ -522,14 +485,14 @@
return content.Error("鎵樼洏淇℃伅涓嶅瓨鍦紝璇风‘璁ゆ墭鐩樺凡缁勭洏鎴愬姛");
}
- foreach (var item in boxingInfo.BoxingInfoDetails)
- {
- var ERPStock = SqlSugarHelper.DBERP.Queryable<鐢ㄥ弸鍗虫椂搴撳瓨_ST>().Where(x => x.瀛樺偍鍦扮偣鍚嶇О == item.Warehouse && x.鏂欏彿 == item.MaterielCode && x.鍝佸悕 == item.MaterielName && x.搴撳瓨鏁伴噺 >= item.Quantity).ToList().FirstOrDefault();
- if (ERPStock == null)
- {
- return content.Error($"缁勭洏鏁版嵁鏈湪ERP搴撳瓨鏁版嵁涓紝璇蜂汉宸ョ‘璁ゆ暟鎹槸鍚︽纭�");
- }
- }
+ //foreach (var item in boxingInfo.BoxingInfoDetails)
+ //{
+ // var ERPStock = SqlSugarHelper.DBERP.Queryable<鐢ㄥ弸鍗虫椂搴撳瓨_ST>().Where(x => x.瀛樺偍鍦扮偣鍚嶇О == item.Warehouse && x.鏂欏彿 == item.MaterielCode && x.鍝佸悕 == item.MaterielName && x.搴撳瓨鏁伴噺 >= item.Quantity).ToList().FirstOrDefault();
+ // if (ERPStock == null)
+ // {
+ // return content.Error($"缁勭洏鏁版嵁鏈湪ERP搴撳瓨鏁版嵁涓紝璇蜂汉宸ョ‘璁ゆ暟鎹槸鍚︽纭�");
+ // }
+ //}
var StartAddress = await _locationRepository.QueryFirstAsync(x => x.LocationCode == taskDto.Position);
if (StartAddress == null)
@@ -566,6 +529,7 @@
case 4:
case 5:
case 6:
+ case 7:
taskNew = InboundAGVCacheArea(taskDto, StartAddress, area);
break;
default:
@@ -577,6 +541,12 @@
await _unitOfWorkManage.UseTranAsync(async () =>
{
+ if (taskDto.AreaId == 3 || taskDto.AreaId == 7)
+ {
+ var result2 = UpdateLocationStatus(taskNew.TargetAddress, LocationEnum.Lock, taskNew.TaskNum.Value, (int)StatusChangeTypeEnum.AutomaticInbound);
+ await _locationStatusChangeRecordRepository.AddDataAsync(result2.Item1);
+ await _locationRepository.UpdateDataAsync(result2.Item2);
+ }
await _locationStatusChangeRecordRepository.AddDataAsync(result.Item1);
await _locationRepository.UpdateDataAsync(result.Item2);
BaseDal.AddData(taskNew);
@@ -672,7 +642,7 @@
/// </summary>
/// <param name="palletCode"></param>
/// <returns></returns>
- public async Task<WebResponseContent> OutBoundTaskAsync(string palletCode,string remark)
+ public async Task<WebResponseContent> OutBoundTaskAsync(string palletCode,string remark,int doubleTray)
{
WebResponseContent content = new WebResponseContent();
try
@@ -699,7 +669,7 @@
return content.Error("璇ユ墭鐩樺簱瀛樺凡鍦ㄥ嚭搴撶紦瀛樺尯");
}
- Dt_Task taskNew = await RequestOutboundTaskAsync(new RequestTaskDto { PalletCode = palletCode, AreaId = 2, Position = stcok.LocationCode, TaskType = (int)TaskOutboundTypeEnum.Outbound });
+ Dt_Task taskNew = await RequestOutboundTaskAsync(new RequestTaskDto { PalletCode = palletCode, AreaId = 2, Position = stcok.LocationCode, TaskType = (int)TaskOutboundTypeEnum.Outbound, DoubleTray= doubleTray });
List<Dt_InventoryRecord> records = new List<Dt_InventoryRecord>();
stcok.StockInfoDetails.ForEach(x =>
{
@@ -715,7 +685,7 @@
});
var taskDto = CreateListTaskDTO(taskNew);
- var result = GetlcoationState(taskNew, StatusChangeTypeEnum.AutomaticOutbound);
+ var result = GetlcoationState(taskNew, StatusChangeTypeEnum.AutomaticOutbound, location);
await _unitOfWorkManage.UseTranAsync(async () =>
{
await BaseDal.AddDataAsync(taskNew);
@@ -732,6 +702,12 @@
}
}
+
+ /// <summary>
+ /// 鍏朵粬鍑哄簱
+ /// </summary>
+ /// <param name="details"></param>
+ /// <returns></returns>
public async Task<WebResponseContent> OtherOutBoundTaskAsync(List<DtStockInfoDetail> details)
{
@@ -784,7 +760,7 @@
stock.StockInfoDetails = details;
var taskDto = CreateListTaskDTO(taskNew);
- var result = GetlcoationState(taskNew, StatusChangeTypeEnum.AutomaticOutbound);
+ var result = GetlcoationState(taskNew, StatusChangeTypeEnum.AutomaticOutbound, stock.LocationInfo);
await _unitOfWorkManage.UseTranAsync(async () =>
{
await BaseDal.AddDataAsync(taskNew);
@@ -867,7 +843,7 @@
stock.StockInfoDetails = details;
var taskDto = CreateListTaskDTO(taskNew);
- var result = GetlcoationState(taskNew, StatusChangeTypeEnum.AutomaticOutbound);
+ var result = GetlcoationState(taskNew, StatusChangeTypeEnum.AutomaticOutbound, stock.LocationInfo);
await _unitOfWorkManage.UseTranAsync(async () =>
{
await BaseDal.AddDataAsync(taskNew);
@@ -884,13 +860,20 @@
}
}
- public (List<DtLocationStatusChangeRecord>,List<DtLocationInfo>) GetlcoationState(Dt_Task task, StatusChangeTypeEnum StatusChangeTypeEnum)
+ public (List<DtLocationStatusChangeRecord>,List<DtLocationInfo>) GetlcoationState(Dt_Task task, StatusChangeTypeEnum StatusChangeTypeEnum, DtLocationInfo location)
{
List<DtLocationStatusChangeRecord> locationStatusChangeRecords = new List<DtLocationStatusChangeRecord>();
List<DtLocationInfo> locations = new List<DtLocationInfo>();
var result = UpdateLocationStatus(task.SourceAddress, LocationEnum.InStockDisable, task.TaskNum.Value, (int)StatusChangeTypeEnum);
locationStatusChangeRecords.AddRange(result.Item1);
locations.AddRange(result.Item2);
+
+ if(location.AreaId ==3|| location.AreaId == 7)
+ {
+ var result2 = UpdateLocationStatus(task.TargetAddress, LocationEnum.Lock, task.TaskNum.Value, (int)StatusChangeTypeEnum);
+ locationStatusChangeRecords.AddRange(result2.Item1);
+ locations.AddRange(result2.Item2);
+ }
return (locationStatusChangeRecords,locations);
}
@@ -938,6 +921,7 @@
case 4:
case 5:
case 6:
+ case 7:
return OutboundAGVCacheArea(taskDto, StartAddress, area);
default:
throw new Exception("璇烽�夋嫨姝g‘鐨勫尯鍩熶俊鎭�");
@@ -1149,6 +1133,7 @@
Remark = StartAddress.AreaId.ToString(),
AGVTaskNum = GenerateUniqueId(),
Floor = StartAddress.Floor,
+ DoubleTray = taskDto.DoubleTray,
};
}
@@ -1295,6 +1280,7 @@
switch (location.AreaId)
{
case 2:
+ case 7:
locationInfos = _locationRepository.QueryData(x => x.Row == location.Row && x.Column > location.Column && x.Remark == location.Remark && x.AreaId == location.AreaId);
break;
case 5:
@@ -1430,6 +1416,7 @@
case 4:
case 5:
case 6:
+ case 7:
locationInfo = await GetAGVEmptyCacheLocation(areaInfo.AreaID, location);
break;
default:
@@ -2035,6 +2022,32 @@
return (changeRecordDto, locations);
}
+ public (DtLocationStatusChangeRecord, DtLocationInfo) UpdateEndLocationStatus(string locationCode, LocationEnum locationStatus, int taskNum, StatusChangeTypeEnum StatusChangeType)
+ {
+ var location = _locationRepository.QueryFirst(x => x.LocationCode == locationCode);
+
+ if (location != null && (location.AreaId == 3 || location.AreaId == 7))
+ {
+ int Beforelocation = location.LocationStatus;
+
+ location.LocationStatus = (int)locationStatus;
+
+ DtLocationStatusChangeRecord dtLocationStatusChangeRecord = new DtLocationStatusChangeRecord()
+ {
+ ChangeType = (int)StatusChangeType,
+ LocationCode = locationCode,
+ LocationId = location.Id,
+ Creater = "System",
+ TaskNum = taskNum,
+ AfterStatus = location.LocationStatus,
+ BeforeStatus = Beforelocation,
+ };
+
+ return (dtLocationStatusChangeRecord, location);
+ }
+ return (null, null);
+ }
+
public (DtLocationStatusChangeRecord, DtLocationInfo) UpdateLocationStatus(string locationCode, LocationEnum locationStatus, int taskNum, StatusChangeTypeEnum StatusChangeType)
{
var location = _locationRepository.QueryFirst(x => x.LocationCode == locationCode);
@@ -2071,7 +2084,7 @@
}
}
}
- else if (location.AreaId == 2)
+ else if (location.AreaId == 2 || location.AreaId == 7)
{
var locationLateral = _locationRepository.QueryData(x => x.Row == location.Row && x.Column > location.Column && x.Remark == location.Remark);
if (locationLateral.Count > 0)
@@ -2109,6 +2122,7 @@
TaskType = task.TaskType,
Floor =task.Floor,
AGVTaskNum = task.AGVTaskNum,
+ DoubleTray = task.DoubleTray,
} };
}
@@ -2128,6 +2142,7 @@
AGVTaskNum = task.AGVTaskNum,
Remark = task.Remark,
Floor = task.Floor,
+ DoubleTray = task.DoubleTray,
};
}
private List<WMSTaskDTO> CreateTaskDTO(List<Dt_Task> task)
@@ -2149,6 +2164,7 @@
AGVTaskNum = item.AGVTaskNum,
Remark = item.Remark,
Floor = item.Floor,
+ DoubleTray = item.DoubleTray,
});
}
@@ -2445,6 +2461,7 @@
switch (AreaId)
{
case 2:
+ case 7:
return await FromShallowToDeep(AreaId, loc);
case 3:
return await AGVLIKU(AreaId);
@@ -2576,7 +2593,7 @@
}
}
- else if (location.AreaId == 2)
+ else if (location.AreaId == 2 || location.AreaId == 7)
{
var locationLateral = _locationRepository.QueryData(x => x.Row == location.Row && x.Column > location.Column && x.Remark == location.Remark);
--
Gitblit v1.9.3