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/Partial/Dt_TaskService.cs | 399 +++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 303 insertions(+), 96 deletions(-)
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
index 58269a9..93021c6 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Partial/Dt_TaskService.cs
@@ -2,6 +2,8 @@
using Mapster;
using Masuit.Tools;
using Masuit.Tools.Models;
+using System.Diagnostics;
+using WIDESEA_DTO;
using WIDESEA_DTO.MOM;
using WIDESEA_DTO.WMS;
using WIDESEA_IStorageBasicRepository;
@@ -10,13 +12,14 @@
using WIDESEA_StorageBasicRepository;
using WIDESEA_StorageTaskRepository;
using WIDESEA_StoragIntegrationServices;
+using WIDESEAWCS_Model.Models;
namespace WIDESEA_StorageOutTaskServices;
public partial class Dt_TaskService : ServiceBase<Dt_Task, IDt_TaskRepository>, IDt_TaskService
{
- //#region 鍑哄簱浠诲姟瀹屾垚
+ #region 鍑哄簱浠诲姟瀹屾垚
//public async Task<WebResponseContent> CompleteStackTaskAsync(Dt_Task task, DtStockInfo stock)
@@ -145,7 +148,7 @@
// }
//}
- //#endregion 鍑哄簱浠诲姟瀹屾垚
+ #endregion 鍑哄簱浠诲姟瀹屾垚
#region 绉诲簱浠诲姟瀹屾垚
@@ -374,7 +377,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,
@@ -384,6 +387,201 @@
}
// 鍒涘缓涓�涓猅rayCellsStatusDto瀵硅薄锛屽苟璧嬪��
+ //TrayCellsStatusDto trayCells = new TrayCellsStatusDto()
+ //{
+ // Software = "WMS",
+ // TrayBarcode = input.PalletCode,
+ // //EquipmentCode = "EQ_CWJZ01"
+ // EquipmentCode = input.EquiCodeMOM
+ //};
+
+ //// 璋冪敤GetTrayCellStatusAsync鏂规硶锛岃幏鍙栨暣鐩樼數鑺�
+ //content = await GetTrayCellStatusAsync(trayCells);
+ //// 濡傛灉鐘舵�佷负false锛屽垯杩斿洖content
+ //if (!content.Status) return content;
+
+ //// 娣诲姞缁勭洏淇℃伅
+ //// 灏哻ontent.Data杞崲涓篟esultTrayCellsStatus瀵硅薄
+ //var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
+ //if (result.SerialNos.Count <= 0)
+ // return content.Error(result.MOMMessage);
+
+ //Console.WriteLine(result);
+ //// TODO 鑾峰彇鏈湴鏂欐灞炴�т笌鏁寸洏鐢佃姱灞炴�ц幏鍙栫殑鍊艰繘琛屽姣旓紝濡傛灉涓�鑷村垯缁х画锛屽惁鍒欒繑鍥為敊璇俊鎭�
+ ////var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty));
+ ////if (productions.Count <= 0)
+ //// return content.Error("鏂欐灞炴�т笉瀛樺湪");
+
+ //// 璋冪敤CreateBoxingInfo鏂规硶锛屽垱寤虹粍鐩樹俊鎭�
+
+ //var boxing = await CreateBoxingInfo(result, input.PalletCode);
+ //if (boxing == null) return content.Error("缁勭洏澶辫触");
+
+ //// 璋冪敤GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹鸿矾绾�
+ //ProcessApplyDto process = await GetProcessApplyAsync(input, result);
+
+ //// 濡傛灉process涓簄ull锛屽垯杩斿洖content
+ //if (process == null) return content;
+
+ //// 璋冪敤_processApplyService.GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹虹敵璇�
+ //content = await _processApplyService.GetProcessApplyAsync(process);
+
+ //// 濡傛灉鐘舵�佷负false锛屽垯杩斿洖null
+ //if (!content.Status) return content.Error("宸ヨ壓鐢宠澶辫触");
+
+ ////// 璋冪敤GetProcessResponseAsync鏂规硶锛岃幏鍙栧伐鑹哄搷搴�
+ ////var processResponse = await GetProcessResponseAsync(process, input.Position);
+ // 璋冪敤CreateNewTask鏂规硶锛屽垱寤烘柊浠诲姟
+ content = await CreateNewTask(input);
+ //if (content.Status)
+ //{
+ // var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing);
+ //}
+ }
+ catch (Exception err)
+ {
+ // 濡傛灉鍙戠敓寮傚父锛屽垯璋冪敤content.Error鏂规硶锛岃褰曢敊璇俊鎭紝骞惰緭鍑洪敊璇俊鎭�
+ content.Error(err.Message);
+ Console.WriteLine(err.Message);
+ }
+ // 杩斿洖content
+ return content;
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input">璇锋眰鍙傛暟</param>
+ /// <param name="flag">瀹炴绌烘鏍囪瘑</param>
+ /// <returns></returns>
+ private async Task<WebResponseContent> CreateNewTask(RequestTaskDto input)
+ {
+ WebResponseContent content = new WebResponseContent();
+
+ //DtLocationInfo locationInfo = await RequestLocation(input);
+
+ //if (locationInfo == null) throw new Exception("搴撲綅宸叉弧");
+
+ var stationinfo = _stationManagerRepository.QueryFirst(x => x.stationChildCode == input.Position);
+
+ if (stationinfo == null) throw new Exception("鏈煡绔欏彴");
+
+
+ var task = await CreateNewTaskByStation(input, stationinfo);
+
+ // 鍒涘缓鏂颁换鍔″疄渚�
+ //var task = new Dt_Task
+ //{
+ // CurrentAddress = input.Position,
+ // Grade = 1,
+ // Roadway = input.Roadways,
+ // TargetAddress = locationInfo.LocationCode,
+ // Dispatchertime = DateTime.Now,
+ // MaterialNo = "",
+ // NextAddress = input.Roadways,
+ // OrderNo = null,
+ // PalletCode = input.PalletCode,
+ // SourceAddress = stationinfo.stationLocation,
+ // TaskState = (int)TaskInStatusEnum.Line_InFinish,
+ // TaskType = (int)TaskInboundTypeEnum.Inbound,
+ // TaskNum = await BaseDal.GetTaskNo(),
+ // Creater = "Systeam"
+ //};
+
+ // 灏濊瘯娣诲姞鏂颁换鍔�
+ var taskId = await BaseDal.AddDataAsync(task);
+ bool isResult = taskId > 0;
+ if (isResult)
+ {
+ // 鍒涘缓WMS浠诲姟
+ WMSTaskDTO taskDTO = new WMSTaskDTO()
+ {
+ TaskNum = task.TaskNum.Value,
+ Grade = 1,
+ PalletCode = task.PalletCode,
+ RoadWay = task.Roadway,
+ SourceAddress = task.SourceAddress,
+ TargetAddress = task.TargetAddress,
+ TaskState = task.TaskState.Value,
+ Id = 0,
+ TaskType = task.TaskType,
+ };
+ content.OK(data: taskDTO);
+ }
+ else
+ content.Error("娣诲姞浠诲姟澶辫触");
+ return content;
+ }
+
+ /// <summary>
+ /// 鏍规嵁璇锋眰鍙傛暟鍜岀珯鍙� 鍋氫笉鍚屼换鍔″鐞�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <param name="stationManager"></param>
+ /// <returns></returns>
+ /// <exception cref="Exception"></exception>
+ private async Task<Dt_Task> CreateNewTaskByStation(RequestTaskDto input, Dt_StationManager stationManager)
+ {
+ Dt_Task task = null;
+ switch (stationManager.stationType)
+ {
+ case 6:
+ case 1:
+ task = await CreateInTaskAsync(input, stationManager); break;
+ //case 2:
+ //case 3: //寮傚父鎺掑嚭缁橶CS澶勭悊
+ //case 4:
+ case 5:
+ task = await CreateInToOutTaskAsync(input, stationManager); break;
+
+ default:
+ throw new Exception("浣嶇疆绔欏彴绫诲瀷");
+ }
+ return task;
+ }
+
+ #region 鐩存帴鍑哄簱浠诲姟
+ private async Task<Dt_Task> CreateInToOutTaskAsync(RequestTaskDto input, Dt_StationManager stationManager)
+ {
+ if (stationManager.stationType != 5) throw new Exception("閿欒鐨勮皟鍙�");
+
+ var targetStation = _stationManagerRepository.QueryFirst(x => x.stationPLC == stationManager.stationPLC && x.Roadway == stationManager.Roadway && x.stationType == 2);
+
+ var task = new Dt_Task
+ {
+ CurrentAddress = input.Position,
+ Grade = 1,
+ Roadway = input.Roadways,
+ TargetAddress = targetStation.stationLocation,
+ Dispatchertime = DateTime.Now,
+ MaterialNo = "",
+ NextAddress = input.Roadways,
+ OrderNo = null,
+ PalletCode = input.PalletCode,
+ SourceAddress = stationManager.stationLocation,
+ TaskState = (int)TaskInStatusEnum.Line_InFinish,
+ TaskType = (int)TaskOutboundTypeEnum.InToOut,
+ TaskNum = await BaseDal.GetTaskNo(),
+ Creater = "Systeam"
+ };
+
+ return task;
+ }
+ #endregion
+
+
+ #region 鍏ュ簱浠诲姟
+ private async Task<Dt_Task> CreateInTaskAsync(RequestTaskDto input, Dt_StationManager stationManager)
+ {
+ if (stationManager.stationType != 1 && stationManager.stationType != 6) throw new Exception("閿欒鐨勮皟鍙�");
+
+ DtLocationInfo locationInfo = await RequestLocation(input);
+
+ if (locationInfo == null) throw new Exception("搴撲綅宸叉弧");
+
+ if (stationManager.stationType == 1)
+ {
+ // 鍒涘缓涓�涓猅rayCellsStatusDto瀵硅薄锛屽苟璧嬪��
TrayCellsStatusDto trayCells = new TrayCellsStatusDto()
{
Software = "WMS",
@@ -392,62 +590,105 @@
EquipmentCode = input.EquiCodeMOM
};
- // 璋冪敤GetTrayCellStatusAsync鏂规硶锛岃幏鍙栨暣鐩樼數鑺�
- content = await GetTrayCellStatusAsync(trayCells);
- // 濡傛灉鐘舵�佷负false锛屽垯杩斿洖content
- if (!content.Status) return content;
+ //// 璋冪敤GetTrayCellStatusAsync鏂规硶锛岃幏鍙栨暣鐩樼數鑺�
+ //content = await GetTrayCellStatusAsync(trayCells);
+ //// 濡傛灉鐘舵�佷负false锛屽垯杩斿洖content
+ //if (!content.Status) return content;
- // 娣诲姞缁勭洏淇℃伅
- // 灏哻ontent.Data杞崲涓篟esultTrayCellsStatus瀵硅薄
- var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
- if (result.SerialNos.Count <= 0)
- return content.Error(result.MOMMessage);
+ //// 娣诲姞缁勭洏淇℃伅
+ //// 灏哻ontent.Data杞崲涓篟esultTrayCellsStatus瀵硅薄
+ //var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString());
+ //if (result.SerialNos.Count <= 0)
+ // return content.Error(result.MOMMessage);
- Console.WriteLine(result);
- // TODO 鑾峰彇鏈湴鏂欐灞炴�т笌鏁寸洏鐢佃姱灞炴�ц幏鍙栫殑鍊艰繘琛屽姣旓紝濡傛灉涓�鑷村垯缁х画锛屽惁鍒欒繑鍥為敊璇俊鎭�
- //var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty));
- //if (productions.Count <= 0)
- // return content.Error("鏂欐灞炴�т笉瀛樺湪");
+ //Console.WriteLine(result);
+ //// TODO 鑾峰彇鏈湴鏂欐灞炴�т笌鏁寸洏鐢佃姱灞炴�ц幏鍙栫殑鍊艰繘琛屽姣旓紝濡傛灉涓�鑷村垯缁х画锛屽惁鍒欒繑鍥為敊璇俊鎭�
+ ////var productions = await _productionRepository.QueryDataAsync(x => result.TrayBarcodePropertys.Select(x => x.TrayBarcodeProperty).ToList().Contains(x.TrayBarcodeProperty));
+ ////if (productions.Count <= 0)
+ //// return content.Error("鏂欐灞炴�т笉瀛樺湪");
- // 璋冪敤CreateBoxingInfo鏂规硶锛屽垱寤虹粍鐩樹俊鎭�
+ //// 璋冪敤CreateBoxingInfo鏂规硶锛屽垱寤虹粍鐩樹俊鎭�
- var boxing = await CreateBoxingInfo(result, input.PalletCode);
- if (boxing == null) return content.Error("缁勭洏澶辫触");
+ //var boxing = await CreateBoxingInfo(result, input.PalletCode);
+ //if (boxing == null) return content.Error("缁勭洏澶辫触");
- // 璋冪敤GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹鸿矾绾�
- ProcessApplyDto process = await GetProcessApplyAsync(input, result);
+ //// 璋冪敤GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹鸿矾绾�
+ //ProcessApplyDto process = await GetProcessApplyAsync(input, result);
- // 濡傛灉process涓簄ull锛屽垯杩斿洖content
- if (process == null) return content;
+ //// 濡傛灉process涓簄ull锛屽垯杩斿洖content
+ //if (process == null) return content;
- // 璋冪敤_processApplyService.GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹虹敵璇�
- content = await _processApplyService.GetProcessApplyAsync(process);
+ //// 璋冪敤_processApplyService.GetProcessApplyAsync鏂规硶锛岃幏鍙栧伐鑹虹敵璇�
+ //content = await _processApplyService.GetProcessApplyAsync(process);
- // 濡傛灉鐘舵�佷负false锛屽垯杩斿洖null
- if (!content.Status) return content.Error("宸ヨ壓鐢宠澶辫触");
+ //// 濡傛灉鐘舵�佷负false锛屽垯杩斿洖null
+ //if (!content.Status) return content.Error("宸ヨ壓鐢宠澶辫触");
- //// 璋冪敤GetProcessResponseAsync鏂规硶锛岃幏鍙栧伐鑹哄搷搴�
- //var processResponse = await GetProcessResponseAsync(process, input.Position);
+ ////// 璋冪敤GetProcessResponseAsync鏂规硶锛岃幏鍙栧伐鑹哄搷搴�
+ ////var processResponse = await GetProcessResponseAsync(process, input.Position);
+ }
- List<string> strings = input.Position == "1088" ? new List<string>() { "CHSC01" } : new List<string>() { "JZSC01" };
- // 璋冪敤CreateNewTask鏂规硶锛屽垱寤烘柊浠诲姟
- content = await CreateNewTask(input, strings);
- if (content.Status)
+ var task = new Dt_Task
+ {
+ CurrentAddress = input.Position,
+ Grade = 1,
+ Roadway = input.Roadways,
+ TargetAddress = locationInfo.LocationCode,
+ Dispatchertime = DateTime.Now,
+ MaterialNo = "",
+ NextAddress = input.Roadways,
+ OrderNo = null,
+ PalletCode = input.PalletCode,
+ SourceAddress = stationManager.stationLocation,
+ TaskState = (int)TaskInStatusEnum.Line_InFinish,
+ TaskType = stationManager.stationType == 1 ? (int)TaskInboundTypeEnum.Inbound : (int)TaskInboundTypeEnum.InTray,
+ TaskNum = await BaseDal.GetTaskNo(),
+ Creater = "Systeam"
+ };
+
+ locationInfo.LocationStatus = (int)LocationEnum.FreeDisable;
+ await UpdateLocationAsync(locationInfo);
+
+ return task;
+ }
+ #endregion
+
+ #region 搴撲綅鍒嗛厤
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="requestTask">璇锋眰鍙傛暟</param>
+ /// <returns></returns>
+ private async Task<DtLocationInfo> RequestLocation(RequestTaskDto requestTask)
+ {
+ #region 鑾峰彇璐т綅
+ try
+ {
+ List<DtLocationInfo> locations;
+ if (requestTask.Roadways.Contains("FR"))
{
- var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing);
+ locations = await _locationRepository.QueryDataAsync(x => x.LocationStatus == (int)LocationEnum.Free && x.RoadwayNo == requestTask.Roadways && x.EnalbeStatus == 1 && x.LocationType == 2 && x.Remark == "1");
}
+ else
+ {
+ locations = await _locationRepository.QueryDataAsync(x => x.LocationStatus == (int)LocationEnum.Free && x.RoadwayNo == requestTask.Roadways && x.EnalbeStatus == 1 && x.LocationType == 1);
+ }
+
+ if (locations == null)
+ {
+ return null;
+ }
+
+ return locations.OrderBy(x => x.Layer).ThenBy(x => x.Column).ThenBy(x => x.Row).FirstOrDefault();
}
catch (Exception err)
{
- // 濡傛灉鍙戠敓寮傚父锛屽垯璋冪敤content.Error鏂规硶锛岃褰曢敊璇俊鎭紝骞惰緭鍑洪敊璇俊鎭�
- content.Error(err.Message);
- Console.WriteLine(err.Message);
+ Console.WriteLine(err.Message.ToString());
+ return null;
}
-
- // 杩斿洖content
- return content;
- }
-
+ #endregion 鑾峰彇璐т綅
+ }
+ #endregion
// 鑾峰彇宸ヨ壓鐢宠
private async Task<ProcessApplyDto> GetProcessApplyAsync(RequestTaskDto input, ResultTrayCellsStatus content)
@@ -457,7 +698,7 @@
{
EquipmentCode = input.EquiCodeMOM,
Software = "WMS",
- //WipOrderNo = result.BindCode,
+ //WipOrderNo = result.BindCode,"
SerialNos = content.SerialNos.Select(item => new SerialNos
{
SerialNo = item.SerialNo
@@ -467,59 +708,25 @@
#endregion 璇锋眰浠诲姟鍏ュ簱
+ public async Task<WebResponseContent> CompleteInToOutTaskAsync(Dt_Task task)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ //娣诲姞鍘嗗彶
+ var taskHty = CreateHistoricalTask(task);
+ //鍒犻櫎浠诲姟
+ BaseDal.DeleteData(task);
-
- #region 浠诲姟鐘舵�佹洿鏀�
-
- /// <summary>
- /// 鏇存柊浠诲姟鐘舵��&鍑哄簱瑙g洏
- /// </summary>
- /// <param name="taskNum"></param>
- /// <param name="taskState"></param>
- /// <returns></returns>
- //public async Task<WebResponseContent> UpdateTaskStatus(int taskNum, int taskState)
- //{
- // WebResponseContent content = new WebResponseContent();
- // try
- // {
- // var task = await BaseDal.QueryFirstAsync(x => x.TaskNum == taskNum);
- // if (task == null)
- // return content.Error("鏈壘鍒颁换鍔�");
-
- // if (taskState == (int)TaskOutStatusEnum.Line_OutFinish || taskState == (int)TaskOutStatusEnum.SC_OutFinish)
- // {
- // var taskHty = CreateHistoricalTask(task);
- // await _unitOfWorkManage.UseTranAsync(async () =>
- // {
- // var asb = await BaseDal.DeleteDataByIdAsync(task.TaskId);
- // var asbHty = await _task_HtyRepository.AddDataAsync(taskHty) > 0;
- // if (asb && asbHty)
- // content.OK();
- // else
- // throw new Exception();
- // });
- // content.OK();
- // }
- // else
- // {
- // task.TaskState = taskState;
- // var asb = await BaseDal.UpdateDataAsync(task);
- // if (asb)
- // content.OK();
- // else
- // content.Error();
- // }
- // }
- // catch (Exception ex)
- // {
- // content.Error(ex.Message);
- // }
- // return content;
- //}
-
- #endregion
-
- //private WebResponseContent CheckInTask()
+ return content.OK();
+ }
+ catch (Exception ex)
+ {
+ return content.Error (ex.Message);
+ }
+
+ return content;
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3