Code Management/WCS/WIDESEAWCS_Client/src/views/Login.vue
@@ -95,9 +95,9 @@ const loading = ref(false); const codeImgSrc = ref(''); const userInfo = reactive({ userName: '', password: '', verificationCode: '', userName: 'admin', password: '123456', verificationCode: '1234', UUID: undefined }); Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskEnumHelper.cs
@@ -22,7 +22,7 @@ { return TaskTypeGroup.OutbondGroup; } else if (!int.TryParse(Enum.Parse<TaskInStatusEnum>(taskType.ToString()).ToString(), out result)) else if (!int.TryParse(Enum.Parse<TaskInboundTypeEnum>(taskType.ToString()).ToString(), out result)) { return TaskTypeGroup.InboundGroup; } Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs
@@ -71,6 +71,12 @@ /// </summary> [Description("空æçåºåº")] OutTray = 104, /// <summary> /// 空æçåºåº /// </summary> [Description("空æçåºåº")] OutNG = 105, } public enum TaskRelocationTypeEnum Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -73,6 +73,23 @@ /// <returns></returns> Dt_Task QueryConveyorLineTask(string deviceNo, string currentAddress); /// <summary> /// æ ¹æ®è®¾å¤ç¼å·ãå½åå°åæ¥è¯¢è¾éçº¿æªæ§è¡çä»»å¡ /// </summary> /// <param name="deviceNo">设å¤ç¼å·</param> /// <param name="currentAddress">å½åå°å</param> /// <returns></returns> Dt_Task QueryNextConveyorLineTask(string deviceNo, string currentAddress); /// <summary> /// æ ¹æ®æçå·ãå½åå°åæ¥è¯¢è¾éçº¿æªæ§è¡çä»»å¡ /// </summary> /// <param name="Barcode">æçå·</param> /// <param name="currentAddress">å½åå°å</param> /// <returns></returns> Dt_Task QueryBarCodeConveyorLineTask(string Barcode, string currentAddress); /// <summary> /// æ ¹æ®ä»»å¡å·ãä¸ä¸å°åæ¥è¯¢è¾é线æ§è¡ä¸çä»»å¡ /// </summary> Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/ProcessParameters/Platform.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,94 @@ using Magicodes.ExporterAndImporter.Core; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Core.DB.Models; namespace WIDESEAWCS_Model.Models { [SugarTable("Dt_Platform", "设å¤å·¥èºåæ°")] public class Platform : BaseEntity { /// <summary> /// 主é®ID /// </summary> [ImporterHeader(Name = "主é®")] [ExporterHeader(DisplayName = "主é®")] [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主é®")] public int Id { get; set; } /// <summary> /// ç«å°ç¼å·ï¼å¯ä¸æ è¯æ¯ä¸ªç«å°çç¼å· /// </summary> [ImporterHeader(Name = "ç«å°ç¼å·ï¼å¯ä¸æ è¯æ¯ä¸ªç«å°çç¼å·")] [ExporterHeader(DisplayName = "ç«å°ç¼å·ï¼å¯ä¸æ è¯æ¯ä¸ªç«å°çç¼å·")] [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "ç«å°ç¼å·ï¼å¯ä¸æ è¯æ¯ä¸ªç«å°çç¼å·")] public string PlatCode { get; set; } /// <summary> /// ç«å°åç§°ï¼ç«å°çåç§°ææè¿° /// </summary> [ImporterHeader(Name = "ç«å°åç§°")] [ExporterHeader(DisplayName = "ç«å°åç§°")] [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "ç«å°åç§°")] public string PlatformName { get; set; } /// <summary> /// 对åºå åæº /// </summary> [ImporterHeader(Name = "对åºå åæº")] [ExporterHeader(DisplayName = "对åºå åæº")] [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "对åºå åæº")] public string Stacker { get; set; } /// <summary> /// æ§è¡æ¹æ³ /// </summary> [ImporterHeader(Name = "æ§è¡æ¹æ³")] [ExporterHeader(DisplayName = "æ§è¡æ¹æ³")] [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "æ§è¡æ¹æ³")] public string ExecutionMethod { get; set; } /// <summary> /// ç«å°ç±»åï¼ç«å°çç±»å /// </summary> [ImporterHeader(Name = "ç«å°ç±»å")] [ExporterHeader(DisplayName = "ç«å°ç±»å")] [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "ç«å°ç±»å")] public string PlatformType { get; set; } /// <summary> /// 对åºPLCç¼å·ï¼ä¸ç«å°å¯¹åºçPLCçç¼å· /// </summary> [ImporterHeader(Name = "对åºPLCç¼å·")] [ExporterHeader(DisplayName = "对åºPLCç¼å·")] [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "对åºPLCç¼å·")] public string PLCCode { get; set; } /// <summary> /// ç«å°ä½ç½® /// </summary> [ImporterHeader(Name = "ç«å°ä½ç½®")] [ExporterHeader(DisplayName = "ç«å°ä½ç½®")] [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "ç«å°ä½ç½®")] public string Location { get; set; } /// <summary> /// ç«å°å®¹é /// </summary> [ImporterHeader(Name = "ç«å°å®¹é")] [ExporterHeader(DisplayName = "ç«å°å®¹é")] [SugarColumn(IsNullable = true, ColumnDescription = "ç«å°å®¹é")] public int Capacity { get; set; } /// <summary> /// ç«å°ç¶æï¼é»è®¤ä¸º'Active' /// </summary> [ImporterHeader(Name = "ç«å°ç¶æ")] [ExporterHeader(DisplayName = "ç«å°ç¶æ")] [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "ç«å°ç¶æ")] public string Status { get; set; } = "Active"; } } Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/IPlatFormRepository.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,5 @@ namespace WIDESEAWCS_IProcessRepository; public interface IPlatFormRepository : IRepository<Platform> { } Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessRepository/PlatFormRepository.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,8 @@ namespace WIDESEAWCS_ProcessRepository; public class PlatFormRepository : RepositoryBase<Platform>, IPlatFormRepository { public PlatFormRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) { } } Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine.cs
@@ -224,7 +224,7 @@ if (devicePro == null) { throw new Exception("æªæ¾å°å议信æ¯"); throw new Exception("æªæ¾å°å议信æ¯:" + deviceChildCode); } else { @@ -247,7 +247,7 @@ if (devicePro == null) { throw new Exception("æªæ¾å°å议信æ¯"); throw new Exception("æªæ¾å°å议信æ¯:" + deviceChildCode); } else { Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -192,6 +192,28 @@ } /// <summary> /// æ ¹æ®è®¾å¤ç¼å·ãå½åå°åæ¥è¯¢è¾éçº¿æªæ§è¡çä»»å¡ /// </summary> /// <param name="deviceNo">设å¤ç¼å·</param> /// <param name="currentAddress">å½åå°å</param> /// <returns></returns> public Dt_Task QueryNextConveyorLineTask(string deviceNo, string currentAddress) { return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.NextAddress == currentAddress, TaskOrderBy); } /// <summary> /// æ ¹æ®æçå·ãå½åå°åæ¥è¯¢è¾éçº¿æªæ§è¡çä»»å¡ /// </summary> /// <param name="Barcode">æçå·</param> /// <param name="currentAddress">å½åå°å</param> /// <returns></returns> public Dt_Task QueryBarCodeConveyorLineTask(string Barcode, string currentAddress) { return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.CurrentAddress == currentAddress && x.PalletCode == Barcode, TaskOrderBy); } /// <summary> /// æ ¹æ®ä»»å¡å·ãä¸ä¸å°åæ¥è¯¢è¾é线æ§è¡ä¸çä»»å¡ /// </summary> /// <param name="taskNum">ä»»å¡å·</param> @@ -397,10 +419,20 @@ if (task.TaskState == (int)TaskInStatusEnum.Line_InFinish) { Random random = new Random(); task.CurrentAddress = task.NextAddress; task.NextAddress = $"{random.Next(1, 1).ToString().PadLeft(3, '0')}-{random.Next(1, 1).ToString().PadLeft(3, '0')}-{random.Next(1, 1).ToString().PadLeft(3, '0')}"; task.TargetAddress = task.NextAddress; if (task.Roadway.Contains("CH")) { Random random = new Random(); task.CurrentAddress = task.NextAddress; task.NextAddress = $"{random.Next(1, 1).ToString().PadLeft(3, '0')}-{random.Next(0, 0).ToString().PadLeft(3, '0')}-{random.Next(1, 1).ToString().PadLeft(3, '0')}"; task.TargetAddress = task.NextAddress; } else { Random random = new Random(); task.CurrentAddress = task.NextAddress; task.NextAddress = "002-020-001"; task.TargetAddress = task.NextAddress; } #region ç宿°æ® // TODO: è°ç¨æ¥å£è·åä¸ä¸ä¸ªå°å @@ -524,7 +556,7 @@ } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting) { //todo //todo 忥å°WMS int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>(); task.TaskState = nextStatus; task.ModifyDate = DateTime.Now; Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -20,13 +20,16 @@ using AutoMapper; using HslCommunication; using Newtonsoft.Json; using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; using Quartz; using SqlSugar; using System.Reflection; using System.Threading.Tasks; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_DTO.TaskInfo; using WIDESEAWCS_IProcessRepository; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; @@ -39,24 +42,23 @@ namespace WIDESEAWCS_Tasks { [DisallowConcurrentExecution] public class CommonConveyorLineJob : JobBase, IJob public partial class CommonConveyorLineJob : JobBase, IJob { private readonly List<string> _deviceCodes1 = new List<string>() { "1063", "1061", "1060" }; private readonly List<string> _deviceCodes2 = new List<string>() { "1067", "1069", "1068" }; private readonly string[] HCTrayCode = { "1012", "1013" }; private readonly ITaskService _taskService; public readonly ITaskService _taskService; private readonly ITaskRepository _taskRepository; private readonly ITaskExecuteDetailService _taskExecuteDetailService; private readonly IRouterService _routerService; private readonly IPlatFormRepository _platFormRepository; private readonly IMapper _mapper; public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository) public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository, IPlatFormRepository platFormRepository) { _taskService = taskService; _taskExecuteDetailService = taskExecuteDetailService; _routerService = routerService; _mapper = mapper; _taskRepository = taskRepository; _platFormRepository = platFormRepository; } public Task Execute(IJobExecutionContext context) @@ -108,35 +110,49 @@ } } } Platform platform = _platFormRepository.QueryFirst(x => x.PLCCode == conveyorLine.DeviceCode && x.PlatCode == childDeviceCode && x.Status == "Active"); if (platform != null) { if (command.InteractiveSignal != 2) { MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod); if (method != null) { command.InteractiveSignal = commandWrite.WriteInteractiveSignal; int count = string.IsNullOrEmpty(platform.Location) ? 0 + 1 : platform.Location.Split(',').Count() + 1; method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count }); } } else { if (!string.IsNullOrEmpty(platform.Location)) { var strings = platform.Location.Split(',').ToList(); foreach (var ite in strings) { int index = strings.FindIndex(p => p == ite); ConveyorLineTaskCommand command1 = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(ite); if (command1.InteractiveSignal != 2) { MethodInfo? method = GetType().GetMethod(platform.ExecutionMethod); if (method != null) { command.InteractiveSignal = commandWrite.WriteInteractiveSignal; int count = strings.Count - index; method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count }); } } } } } } } //}); //tasks.Add(task); Task.WaitAll(tasks.ToArray()); } //for (int i = 0; i < _deviceCodes1.Count; i++) //{ // ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(_deviceCodes1[i]); // if (command.InteractiveSignal != 2) // { // EmptyTrayReturn(conveyorLine, command, _deviceCodes1[_deviceCodes1.Count - 1], i); // } //} //for (int i = 0; i < _deviceCodes2.Count; i++) //{ // ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(_deviceCodes2[i]); // if (command.InteractiveSignal != 2) // { // EmptyTrayReturn(conveyorLine, command, _deviceCodes2[_deviceCodes1.Count - 1], i); // } //} foreach (var item in HCTrayCode) { ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(item); if (command.InteractiveSignal != 2) { ChuanhuaOutbound(conveyorLine, command, HCTrayCode[0], 0); } } Task.WaitAll(tasks.ToArray()); } } catch (Exception ex) @@ -148,6 +164,7 @@ //WriteDebug("CommonConveyorLineJob", "test"); //Console.Out.WriteLine(DateTime.Now); } return Task.CompletedTask; } @@ -160,204 +177,139 @@ /// <param name="ProtocalDetailValue">线ä½å½åbool读ååç§»å°å</param> public void RequestInbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) { var taskNew = _taskService.QueryCraneConveyorLineTask(command.Barcode.ObjToInt(), childDeviceCode); var Taskout = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); if (Taskout != null) // è·åä¸ä¸ä¸ªä»»å¡ var task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode); //var taskOut = _taskService.QueryNextConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); //return; // å¤çåºåºä»»å¡ HandleTaskOut(conveyorLine, command, childDeviceCode, ProtocalDetailValue, task); // å¦ææ²¡æåºåºä»»å¡ï¼å¤çæ°ä»»å¡ if (task == null) { // 空æçä»»å¡ if (Taskout.TaskType == (int)TaskOutboundTypeEnum.OutTray) { if (Taskout.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) { ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(Taskout); taskCommand.InteractiveSignal = command.InteractiveSignal; if (command.Barcode == "") { taskCommand.TargetAddress = 1092; } conveyorLine.SendCommand(taskCommand, childDeviceCode); ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); _taskService.UpdateTaskStatusToNext(Taskout); } else if (Taskout.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) { if (command.Barcode == "") { ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(Taskout); taskCommand.InteractiveSignal = command.InteractiveSignal; taskCommand.TargetAddress = 1092; conveyorLine.SendCommand(taskCommand, childDeviceCode); ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); _taskService.UpdateTaskStatusToNext(Taskout); } } } else if (Taskout.TaskType == (int)TaskOutboundTypeEnum.Outbound) { if (Taskout.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting) { ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(Taskout); taskCommand.InteractiveSignal = command.InteractiveSignal; if (command.Barcode == "") { //todo 没ææç¡®å¼å¸¸å£ï¼éå°ç®æ å··éçNGå£ //taskCommand.TargetAddress = 1092; } conveyorLine.SendCommand(taskCommand, childDeviceCode); ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); _taskService.UpdateTaskStatusToNext(Taskout); } else if (Taskout.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) { if (command.Barcode == "") { ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(Taskout); taskCommand.InteractiveSignal = command.InteractiveSignal; // todo éå°ç®æ å··éçNGå£ taskCommand.TargetAddress = 1092; conveyorLine.SendCommand(taskCommand, childDeviceCode); ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); _taskService.UpdateTaskStatusToNext(Taskout); } else { // todo è°ç¨WMSä»»å¡å®ææ¥å£ var x = new { taskNum = Taskout.TaskNum }; var result = HttpHelper.GetAsync("http:127.0.0.1:8098/api/Task/CompleteTaskAsync", x.ToJsonString()).Result; WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); if (content.Status) { ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); _taskService.UpdateTaskStatusToNext(Taskout); } } } } HandleNewTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue); } if (taskNew == null) { if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status) { Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); if (task != null) { ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task); taskCommand.InteractiveSignal = command.InteractiveSignal; conveyorLine.SendCommand(taskCommand, childDeviceCode); ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); #region èçæ¬ _taskService.UpdateTaskStatusToNext(task); } } } } //var taskNew = _taskService.QueryCraneConveyorLineTask(command.Barcode.ObjToInt(), childDeviceCode); //var Taskout = _taskService.QueryNextConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); //if (Taskout != null) //{ // // 空æçä»»å¡ // if (Taskout.TaskType == (int)TaskOutboundTypeEnum.OutTray) // { // ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(Taskout); // taskCommand.InteractiveSignal = command.InteractiveSignal; // if (command.Barcode == "") // { // var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == Taskout.TargetAddress).Capacity; // taskCommand.TargetAddress = NGAddress; // } // conveyorLine.SendCommand(taskCommand, childDeviceCode); // /// <summary> /// 空æçåæµ /// </summary> /// <param name="conveyorLine">è¾é线å®ä¾å¯¹è±¡</param> /// <param name="command">读åç请æ±ä¿¡æ¯</param> /// <param name="childDeviceCode">å设å¤ç¼å·</param> /// <param name="index">读åç第ä¸ä¸ªä½ç½®</param> public void EmptyTrayReturn(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index) { var tasks = _taskRepository.QueryData(x => (x.TaskState == (int)TaskOutStatusEnum.OutNew || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) && x.TaskType == (int)TaskOutboundTypeEnum.OutTray); if (tasks.Count <= index) { WMSTaskDTO taskDTO = new WMSTaskDTO() { TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), Grade = 1, PalletCode = DateTime.Now.ToString("yyyyMMddHHmmss"), RoadWay = "CHSC01", SourceAddress = "001-001-001", TargetAddress = childDeviceCode, TaskState = (int)TaskOutStatusEnum.OutNew, Id = 0, TaskType = (int)TaskOutboundTypeEnum.OutTray }; // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); #region ç宿°æ® // _taskService.UpdateTaskStatusToNext(Taskout); // } // else if (Taskout.TaskType == (int)TaskOutboundTypeEnum.Outbound) // { // ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(Taskout); // taskCommand.InteractiveSignal = command.InteractiveSignal; // if (Taskout.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) // { // if (command.Barcode == "") // { // var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == Taskout.TargetAddress).Capacity; // taskCommand.TargetAddress = NGAddress; // } // conveyorLine.SendCommand(taskCommand, childDeviceCode); // TODO: è°ç¨æ¥å£è·åä¸ä¸ä¸ªå°å //RequestTaskDto request = new RequestTaskDto() //{ // Position = sourceAddress, // PalletCode = palletCode, //}; // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); //// åé请æ±å¹¶çå¾ ååº //var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", request.ToJsonString()).Result; // _taskService.UpdateTaskStatusToNext(Taskout); // } // else if (Taskout.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) // { // if (command.Barcode == "") // { // var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == Taskout.TargetAddress).Capacity; // taskCommand.TargetAddress = NGAddress; //// ååºååååºå 容 //WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); // conveyorLine.SendCommand(taskCommand, childDeviceCode); //// æ£æ¥ç¶æå¹¶è¿å ////if (!content.Status) //// return content; // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); // _taskService.UpdateTaskStatusToNext(Taskout); // } // else // { // // todo è°ç¨WMSä»»å¡å®ææ¥å£ // var x = new { taskNum = Taskout.TaskNum }; // var result = HttpHelper.GetAsync("http:127.0.0.1:8098/api/Task/CompleteTaskAsync", x.ToJsonString()).Result; // WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); // if (content.Status) // { // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); // _taskService.UpdateTaskStatusToNext(Taskout); // } // } // } // } //} //if (taskNew == null) //{ // // åæ->éå空æçåæµ // if (conveyorLine.DeviceCode == "1003" && childDeviceCode == "1016") // { // //TODO è°ç¨WMSå建åæ->éå空æçåæµ // WMSTaskDTO taskDTO = new WMSTaskDTO() // { // TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), // Grade = 1, // PalletCode = command.Barcode, // RoadWay = "CHSC01", // SourceAddress = childDeviceCode, // TargetAddress = "CHSC01", // TaskState = (int)TaskInStatusEnum.InNew, // Id = 0, // TaskType = (int)TaskInboundTypeEnum.InTray, // }; // WebResponseContent content = CreateAndSendTask(taskDTO); // if (content.Status) // { // Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); // if (task != null) // { // ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task); // taskCommand.InteractiveSignal = command.InteractiveSignal; // conveyorLine.SendCommand(taskCommand, childDeviceCode); //// ååºåå任塿°æ® //WMSTaskDTO task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); #endregion // _taskService.UpdateTaskStatusToNext(task); // } // } // } // else // { // if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status) // { // Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); // if (task != null) // { // ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task); // taskCommand.InteractiveSignal = command.InteractiveSignal; // conveyorLine.SendCommand(taskCommand, childDeviceCode); var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); if (content.Status) { Console.WriteLine("空æçå¼å«æå"); } } } // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); /// <summary> /// éååºåº /// </summary> /// <param name="conveyorLine">è¾é线å®ä¾å¯¹è±¡</param> /// <param name="command">读åç请æ±ä¿¡æ¯</param> /// <param name="childDeviceCode">å设å¤ç¼å·</param> /// <param name="index">线ä½å½åbool读ååç§»å°å</param> public void ChuanhuaOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index) { var tasks = _taskRepository.QueryData(x => (x.TaskState == (int)TaskOutStatusEnum.OutNew || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) && x.TaskType == (int)TaskOutboundTypeEnum.Outbound); if (tasks.Count <= index) { WMSTaskDTO taskDTO = new WMSTaskDTO() { TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), Grade = 1, PalletCode = DateTime.Now.ToString("MMddHHmmss"), RoadWay = "CHSC01", SourceAddress = "001-001-001", TargetAddress = childDeviceCode, TaskState = (int)TaskOutStatusEnum.OutNew, Id = 0, TaskType = (int)TaskOutboundTypeEnum.Outbound, }; // _taskService.UpdateTaskStatusToNext(task); // } // } // } //} var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); if (content.Status) { Console.WriteLine("åºåºå¼å«æå"); } } else { Dt_Task task = tasks[index]; if (task != null) { ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task); taskCommand.InteractiveSignal = command.InteractiveSignal; conveyorLine.SendCommand(taskCommand, childDeviceCode); } } #endregion } /// <summary> @@ -397,6 +349,7 @@ //conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode); WebResponseContent content = _taskService.UpdateTaskStatusToNext(task); Console.Out.WriteLine(content.Serialize()); } } @@ -407,7 +360,8 @@ /// <param name="conveyorLine">è¾é线å®ä¾å¯¹è±¡</param> /// <param name="command">读åç请æ±ä¿¡æ¯</param> /// <param name="childDeviceCode">å设å¤ç¼å·</param> public void RequestOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode) /// <param name="ProtocalDetailValue">线ä½å½åbool读ååç§»å°å</param> public void RequestOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) { Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); if (task != null) @@ -416,6 +370,7 @@ taskCommand.InteractiveSignal = command.InteractiveSignal; conveyorLine.SendCommand(taskCommand, childDeviceCode); ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); _taskService.UpdateTaskStatusToNext(task); } } @@ -447,14 +402,99 @@ /// <param name="conveyorLine">è¾é线å®ä¾å¯¹è±¡</param> /// <param name="command">读åç请æ±ä¿¡æ¯</param> /// <param name="childDeviceCode">å设å¤ç¼å·</param> public void ConveyorLineOutFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode) public void ConveyorLineOutFinish(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) { Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); if (task != null) { conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode); ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task); taskCommand.InteractiveSignal = command.InteractiveSignal; if (task.PalletCode != command.Barcode) { var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == task.TargetAddress).Capacity; taskCommand.TargetAddress = NGAddress; conveyorLine.SendCommand(taskCommand, childDeviceCode); } else { taskCommand.TargetAddress = 0; } // TODOè°ç¨ä»»å¡å®ææ§è¡ä»»å¡å®æ ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); WebResponseContent content = _taskService.UpdateTaskStatusToNext(task); Console.Out.WriteLine(content.Serialize()); } } /// <summary> /// å建任å¡å¹¶åéè¯·æ± /// </summary> private WebResponseContent CreateAndSendTask(WMSTaskDTO taskDTO) { var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); if (content.Status) { Console.WriteLine($"{taskDTO.TaskType}å¼å«æå"); } return content; } /// <summary> /// éå空æçåºåº /// </summary> /// <param name="conveyorLine">è¾é线å®ä¾å¯¹è±¡</param> /// <param name="command">读åç请æ±ä¿¡æ¯</param> /// <param name="childDeviceCode">å设å¤ç¼å·</param> /// <param name="index">线ä½å½åbool读ååç§»å°å</param> public void EmptyTrayReturn(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index) { CheckAndCreateTask((int)TaskOutboundTypeEnum.OutTray, childDeviceCode, index, "CHSC01", "001-001-001"); } /// é置空æçåºåº /// </summary> /// <param name="conveyorLine">è¾é线å®ä¾å¯¹è±¡</param> /// <param name="command">读åç请æ±ä¿¡æ¯</param> /// <param name="childDeviceCode">å设å¤ç¼å·</param> /// <param name="index">线ä½å½åbool读ååç§»å°å</param> public void EmptyTrayOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index) { CheckAndCreateTask((int)TaskOutboundTypeEnum.OutTray, childDeviceCode, index, "JZSC01", "002-020-001"); } /// <summary> /// éååºåº(å®ç) /// </summary> /// <param name="conveyorLine">è¾é线å®ä¾å¯¹è±¡</param> /// <param name="command">读åç请æ±ä¿¡æ¯</param> /// <param name="childDeviceCode">å设å¤ç¼å·</param> /// <param name="index">线ä½å½åbool读ååç§»å°å</param> public void ChuanhuaOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index) { CheckAndCreateTask((int)TaskOutboundTypeEnum.Outbound, childDeviceCode, index, "CHSC01", "001-001-001"); } /// <summary> /// æ£æ¥ä»»å¡å¹¶å建æ°ä»»å¡ /// </summary> private void CheckAndCreateTask(int taskType, string childDeviceCode, int index, string roadWay, string sourceAddress) { var tasks = _taskRepository.QueryData(x => x.TaskType == taskType && x.TargetAddress == childDeviceCode); if (tasks.Count < index) { var taskDTO = new WMSTaskDTO() { TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), Grade = 1, PalletCode = DateTime.Now.ToString("yyyyMMddHHmmss"), RoadWay = roadWay, SourceAddress = sourceAddress, TargetAddress = childDeviceCode, TaskState = (int)TaskOutStatusEnum.OutNew, Id = 0, TaskType = taskType }; CreateAndSendTask(taskDTO); } } Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,183 @@ using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_Core; using WIDESEAWCS_DTO.TaskInfo; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob; using WIDESEAWCS_Tasks.ConveyorLineJob; using HslCommunication; using OfficeOpenXml.ConditionalFormatting; namespace WIDESEAWCS_Tasks { partial class CommonConveyorLineJob { /// <summary> /// å¤çåºåºä»»å¡ /// </summary> private void HandleTaskOut(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue, Dt_Task taskOut) { // å¦ææ²¡æä»»å¡ï¼ç´æ¥è¿å if (taskOut == null) return; // æ å°ä»»å¡å½ä»¤ var taskCommand = MapTaskCommand(taskOut, command); // æ ¹æ®ä¸åçä»»å¡ç±»ååç¶ææ§è¡ä¸åçé»è¾ bool isOutTray = taskOut.TaskType == (int)TaskOutboundTypeEnum.OutTray; bool isOutboundAndOutFinish = taskOut.TaskType == (int)TaskOutboundTypeEnum.Outbound && taskOut.TaskState == (int)TaskOutStatusEnum.SC_OutFinish; bool isOutboundAndLineOutExecuting = taskOut.TaskType == (int)TaskOutboundTypeEnum.Outbound && taskOut.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting; if (isOutTray || isOutboundAndOutFinish || isOutboundAndLineOutExecuting) { // åéå½ä»¤å°è¾é线 conveyorLine.SendCommand(taskCommand, childDeviceCode); // æ è®°åé宿 ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); // æ´æ°ä»»å¡ç¶æ _taskService.UpdateTaskStatusToNext(taskOut); } else if (taskOut.TaskType == (int)TaskOutboundTypeEnum.Outbound && taskOut.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) { // 宿WMSä»»å¡ CompleteWmsTask(taskOut, command, conveyorLine, childDeviceCode, ProtocalDetailValue); } } /// <summary> /// å¤çæ°ä»»å¡ /// </summary> private void HandleNewTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) { // ç¹å®æ¡ä»¶ä¸å建并åé空æçå ¥åºä»»å¡ if (conveyorLine.DeviceCode == "1003" && childDeviceCode == "1016") { CreateAndSendEmptyTrayTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue); } else if (conveyorLine.DeviceCode == "1001" && childDeviceCode == "1088") { // 请æ±WMSä»»å¡ RequestWmsTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue); } else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1073") || (conveyorLine.DeviceCode == "1003" && childDeviceCode == "1002")) { //TODO åéç´æ¥å»NGå£ä»»å¡ } } /// <summary> /// æ å°ä»»å¡å½ä»¤ /// </summary> private ConveyorLineTaskCommand MapTaskCommand(Dt_Task task, ConveyorLineTaskCommand command) { // 使ç¨mapperæ å°ä»»å¡å½ä»¤ var comm = _mapper.Map<ConveyorLineTaskCommand>(task); comm.InteractiveSignal = command.InteractiveSignal; return comm; } /// <summary> /// 宿WMSä»»å¡ /// </summary> private void CompleteWmsTask(Dt_Task taskOut, ConveyorLineTaskCommand command, CommonConveyorLine conveyorLine, string childDeviceCode, int ProtocalDetailValue) { // å¦ææ²¡ææ¡ç ä¿¡æ¯ï¼åè®¾ç½®ç®æ å°å为NGå°å if (command.Barcode == "NoRead") { var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == taskOut.TargetAddress).Capacity; taskOut.TargetAddress = NGAddress.ToString(); } // TODOè°ç¨WMSä»»å¡å®ææ¥å£ var result = HttpHelper.GetAsync("http://127.0.0.1:8098/api/Task/CompleteTaskAsync", new { taskNum = taskOut.TaskNum }.ToJsonString()).Result; WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); if (content.Status) { // æ è®°åé宿 ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); // æ´æ°ä»»å¡ç¶æ _taskService.UpdateTaskStatusToNext(taskOut); } } /// <summary> /// å建并åé空æçä»»å¡ /// </summary> private void CreateAndSendEmptyTrayTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) { if (command.Barcode != "NoRead") { // å建空æçä»»å¡DTO WMSTaskDTO taskDTO = CreateEmptyTrayTaskDto(command.Barcode, childDeviceCode); // å建并åéä»»å¡ WebResponseContent content = CreateAndSendTask(taskDTO); if (content.Status) { // æ¥è¯¢ä»»å¡ Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); if (task != null) { // æ å°ä»»å¡å½ä»¤ ConveyorLineTaskCommand taskCommand = MapTaskCommand(task, command); // åéå½ä»¤å°è¾é线 conveyorLine.SendCommand(taskCommand, childDeviceCode); // æ è®°åé宿 ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); // æ´æ°ä»»å¡ç¶æ _taskService.UpdateTaskStatusToNext(task); } } } } /// <summary> /// å建空æçä»»å¡DTO /// </summary> private WMSTaskDTO CreateEmptyTrayTaskDto(string barcode, string childDeviceCode) { // å建并è¿å空æçä»»å¡DTO return new WMSTaskDTO { TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")), Grade = 1, PalletCode = barcode, RoadWay = "CHSC01", SourceAddress = childDeviceCode, TargetAddress = "CHSC01", TaskState = (int)TaskInStatusEnum.InNew, Id = 0, TaskType = (int)TaskInboundTypeEnum.InTray, }; } /// <summary> /// 请æ±WMSä»»å¡ /// </summary> private void RequestWmsTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) { // 请æ±WMSä»»å¡ if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status) { // æ¥è¯¢ä»»å¡ Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); if (task != null) { // æ å°ä»»å¡å½ä»¤ ConveyorLineTaskCommand taskCommand = MapTaskCommand(task, command); // åéå½ä»¤å°è¾é线 conveyorLine.SendCommand(taskCommand, childDeviceCode); // æ è®°åé宿 ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); // æ´æ°ä»»å¡ç¶æ _taskService.UpdateTaskStatusToNext(task); } } } } } Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -157,6 +157,10 @@ task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); } } else if (task == null) { task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); } return task; } @@ -177,7 +181,7 @@ CommonConveyorLine conveyorLine = (CommonConveyorLine)device; //if (conveyorLine.IsOccupied(router.ChildPosi))//åºåºç«å°æªè¢«å ç¨ //{ return task; return task; //} } else Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/Dt_EquipmentProcess.cs
@@ -2,6 +2,7 @@ using SqlSugar; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -59,4 +60,71 @@ [SugarColumn(IsNullable = false, Length = int.MaxValue, ColumnDescription = "å·¥èºåæ°å¼")] public string ProcessValue { get; set; } } /// <summary> /// 表示工èºè·¯çº¿ä¸è®¾å¤åæ°ä¿¡æ¯ç模åã /// </summary> public class EquipmentParameterInfo { /// <summary> /// åæ°ç¼ç ã /// </summary> [Required(ErrorMessage = "åæ°ç¼ç æ¯å¿ 填项ã")] [StringLength(50, ErrorMessage = "åæ°ç¼ç é¿åº¦ä¸è½è¶ è¿50个å符ã")] public string ParameterCode { get; set; } /// <summary> /// åæ°ç±»åã /// </summary> [Required(ErrorMessage = "åæ°ç±»åæ¯å¿ å¡«é¡¹ã")] [StringLength(50, ErrorMessage = "åæ°ç±»åé¿åº¦ä¸è½è¶ è¿50个å符ã")] public string ParameterType { get; set; } /// <summary> /// æ¨èå¼ã /// </summary> [StringLength(50, ErrorMessage = "æ¨èå¼é¿åº¦ä¸è½è¶ è¿50个å符ã")] public string TargetValue { get; set; } /// <summary> /// åä½ã /// </summary> public string UOMCode { get; set; } /// <summary> /// æ§å¶ä¸éå¼ã /// </summary> [StringLength(50, ErrorMessage = "æ§å¶ä¸éå¼é¿åº¦ä¸è½è¶ è¿50个å符ã")] public string UpperControlLimit { get; set; } /// <summary> /// æ§å¶ä¸éå¼ã /// </summary> [StringLength(50, ErrorMessage = "æ§å¶ä¸éå¼é¿åº¦ä¸è½è¶ è¿50个å符ã")] public string LowerControlLimit { get; set; } /// <summary> /// è§æ ¼ä¸éå¼ã /// </summary> [StringLength(50, ErrorMessage = "è§æ ¼ä¸éå¼é¿åº¦ä¸è½è¶ è¿50个å符ã")] public string UpperSpecificationsLimit { get; set; } /// <summary> /// è§æ ¼ä¸éå¼ã /// </summary> [StringLength(50, ErrorMessage = "è§æ ¼ä¸éå¼é¿åº¦ä¸è½è¶ è¿50个å符ã")] public string LowerSpecificationsLimit { get; set; } /// <summary> /// åæ°æè¿°ã /// </summary> public string Description { get; set; } /// <summary> /// å·¥èºè·¯çº¿ä¸å½å设å¤åæ°ä¿¡æ¯æ¯å¦å¯ç¨ã /// TRUE 表示å¯ç¨ï¼FALSE 表示ä¸å¯ç¨ã /// </summary> [Required(ErrorMessage = "设å¤åæ°ä¿¡æ¯æ¯å¦å¯ç¨æ¯å¿ 填项ã")] public string EquipmentAvailabilityFlag { get; set; } } } Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/MOM/ResponeAgingInputDto.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,26 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WIDESEA_DTO.MOM { public class ResponeAgingInputDto : BasicResult { /// <summary> /// ææ¡å±æ§ï¼ç¨äºæ è¯ææ¡çå¯ä¸å±æ§ã /// </summary> public string TrayBarcodeProperty { get; set; } /// <summary> /// å·¥åç¼ç æäº§ååå·ï¼ç¨äºå ³èå ·ä½çç产任å¡ã /// </summary> public string BindCode { get; set; } /// <summary> /// å ³èå·¥åºè¿åæ¶é´ï¼è®°å½æ³¨æ¶²æéç½®æ¶é¿ã /// </summary> public string LinedProcessFeedbackTime { get; set; } } } Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStoragIntegrationServices/MOM/AgingInOrOutInput/IAgingInOrOutInputService.cs
@@ -10,12 +10,12 @@ /// </summary> /// <param name="input">å ¥åºæ°æ®</param> /// <returns></returns> Task<dynamic> GetOCVInputAsync(AgingInputDto input); Task<WebResponseContent> GetOCVInputAsync(AgingInputDto input); /// <summary> /// éç½®\éååºåºï¼æ´æçï¼ /// </summary> /// <param name="input">åºåºæ°æ®</param> /// <returns></returns> Task<dynamic> GetOCVOutputAsync(AgingOutputDto input); Task<WebResponseContent> GetOCVOutputAsync(AgingOutputDto input); } Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfoDetail.cs
@@ -20,7 +20,7 @@ public int BoxingInfoId { get; set; } /// <summary> /// ç©æç¼ç /// ç©æç¼ç ç»å®ä»£ç /// </summary> [Required] [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "ç©æç¼å·")] @@ -34,7 +34,7 @@ public string MaterielName { get; set; } /// <summary> /// åæ®ç¼å· /// åæ®ç¼å· / éé /// </summary> [Required] [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "åæ®ç¼å·")] @@ -48,7 +48,7 @@ public string BatchNo { get; set; } /// <summary> /// åºåå· /// åºåå·(çµè¯) /// </summary> [Required] [SugarColumn(IsNullable = false, Length = 100, ColumnDescription = "åºåå·")] @@ -68,14 +68,14 @@ public decimal OutboundQuantity { get; set; } /// <summary> /// ç»çç¶æ /// ç»çç¶æ çµè¯ç¶æ /// </summary> [Required] [SugarColumn(IsNullable = false, ColumnDescription = "ç»çç¶æ")] public int Status { get; set; } /// <summary> /// 夿³¨ /// 夿³¨ // ææ¡å±æ§Json /// </summary> [SugarColumn(IsNullable = true, ColumnDescription = "夿³¨")] public string Remark { get; set; } Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfo.cs
@@ -36,11 +36,18 @@ public bool IsFull { get; set; } /// <summary> /// 夿³¨ /// 夿³¨ (éå¶) /// </summary> [SugarColumn(IsNullable = true, ColumnDescription = "夿³¨")] public string Remark { get; set; } /// <summary> /// åºåç¼ç /// </summary> [SugarColumn(IsNullable = true, ColumnDescription = "åºåç¼ç ")] public string AreaCode { get; set; } /// <summary> /// åºåæç» /// </summary> Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs
@@ -1,7 +1,9 @@ using LogLibrary.Log; using Masuit.Tools; using WIDESEA_Common; using WIDESEA_Core; using WIDESEA_DTO; using WIDESEA_DTO.MOM; using WIDESEA_IStoragIntegrationServices; namespace WIDESEA_StoragIntegrationServices; @@ -15,8 +17,9 @@ /// </summary> /// <param name="input">å ¥åºæ°æ®</param> /// <returns></returns> public async Task<dynamic> GetOCVInputAsync(AgingInputDto input) public async Task<WebResponseContent> GetOCVInputAsync(AgingInputDto input) { WebResponseContent content = new WebResponseContent(); try { input.SessionId = Guid.NewGuid().ToString(); @@ -26,10 +29,7 @@ input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); var inputJson = input.ToDictionary(); var x = await HttpsClient.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/AgingInput", inputJson); if (x != null) { } content.OK(data: x); LogFactory.GetLog("éç½®éåå ¥åºï¼æ´æçï¼").Info(true, $"\r\r--------------------------------------"); LogFactory.GetLog("éç½®éåå ¥åºï¼æ´æçï¼").Info(true, x); @@ -40,7 +40,7 @@ LogFactory.GetLog("éç½®éåå ¥åºï¼æ´æçï¼").Error(true, $"\r\r--------------------------------------"); LogFactory.GetLog("éç½®éåå ¥åºï¼æ´æçï¼").Error(true, err.StackTrace); } return Task.FromResult<dynamic>(null); return content; } /// <summary> @@ -48,8 +48,9 @@ /// </summary> /// <param name="input">åºåºæ°æ®</param> /// <returns></returns> public async Task<dynamic> GetOCVOutputAsync(AgingOutputDto input) public async Task<WebResponseContent> GetOCVOutputAsync(AgingOutputDto input) { WebResponseContent content = new WebResponseContent(); try { input.SessionId = Guid.NewGuid().ToString(); @@ -61,13 +62,15 @@ var x = await HttpsClient.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/AgingOutput", inputJson); LogFactory.GetLog("éç½®éååºåºï¼æ´æçï¼").Info(true, $"\r\r--------------------------------------"); LogFactory.GetLog("éç½®éååºåºï¼æ´æçï¼").Info(true, x); content.OK(); } catch (Exception err) { Console.WriteLine(err.Message.ToString()); LogFactory.GetLog("éç½®/éååºåºï¼æ´æçï¼").Error(true, $"\r\r--------------------------------------"); LogFactory.GetLog("éç½®/éååºåºï¼æ´æç)").Error(true, err.StackTrace); content.Error(err.Message); } return Task.FromResult<dynamic>(null); return content; } } Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/CellState/CellStateService.cs
@@ -94,34 +94,36 @@ input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); var inputJson = input.ToDictionary(); var x = await HttpsClient.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/TrayCellsStatus", inputJson); if (x != null) { ResultTrayCellsStatus result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(x); DtBoxingInfo boxingInfo = new DtBoxingInfo() { IsFull = true, PalletCode = result.TrayBarcode, }; var details = new List<DtBoxingInfoDetail>(); foreach (var item in result.SerialNos) { DtBoxingInfoDetail detail = new DtBoxingInfoDetail() { SerialNumber = item.SerialNo, OrderNo = item.PositionNo.ToString(), Status = item.SerialNoStatus, Remark = result.TrayBarcodePropertys.ToJsonString(), MaterielCode = result.BindCode, }; details.Add(detail); } boxingInfo.BoxingInfoDetails = details; var abc = await _boxingInfoService.AddBoxingInfoAsync(boxingInfo); if (abc.Status) content.OK("ç»çæå", result); else content.Error("ç»ç失败"); } //if (x != null) //{ // // ååºååResultTrayCellsStatus对象 // ResultTrayCellsStatus result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(x); // // å建DtBoxingInfo对象 // DtBoxingInfo boxingInfo = new DtBoxingInfo // { // IsFull = true, // PalletCode = result.TrayBarcode, // }; // // 使ç¨LINQå建DtBoxingInfoDetail对象å表 // var details = result.SerialNos.Select(item => new DtBoxingInfoDetail // { // SerialNumber = item.SerialNo, // OrderNo = item.PositionNo.ToString(), // Status = item.SerialNoStatus, // Remark = result.TrayBarcodePropertys.ToJsonString(), // MaterielCode = result.BindCode, // }).ToList(); // // èµå¼DtBoxingInfoDetails // boxingInfo.BoxingInfoDetails = details; // var abc = await _boxingInfoService.AddBoxingInfoAsync(boxingInfo); // if (abc.Status) // content.OK("ç»çæå", result); // else // content.Error("ç»ç失败"); //} LogFactory.GetLog("æ´ççµè¯å±æ§è·å").Info(true, $"\r\r--------------------------------------"); LogFactory.GetLog("æ´ççµè¯å±æ§è·å").Info(true, x); } Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -1,8 +1,11 @@ using Mapster; using Masuit.Tools; using WIDESEA_DTO.MOM; using WIDESEA_DTO.WMS; using WIDESEA_IStorageBasicRepository; using WIDESEA_IStoragIntegrationServices; using WIDESEA_StorageBasicRepository; using WIDESEA_StoragIntegrationServices; namespace WIDESEA_StorageOutTaskServices; @@ -12,6 +15,7 @@ private readonly IUnitOfWorkManage _unitOfWorkManage; private readonly IDt_OutOrderRepository _outOrderRepository; private readonly IStockInfoRepository _stockInfoRepository; private readonly IStockInfoDetailRepository _stockInfoDetailRepository; private readonly IDt_Task_HtyRepository _task_HtyRepository; private readonly IDt_OutOrderAndStockRepository _outOrderAndStockRepository; private readonly IDt_OutOrderAndStock_HtyRepository _outOrderAndStock_HtyRepository; @@ -22,10 +26,11 @@ private readonly IPointStackerRelationRepository _pointStackerRelationRepository; private readonly ITaskExecuteDetailRepository _taskExecuteDetailRepository; private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository; private readonly IBoxingInfoRepository _boxingInfoRepository; private readonly ICellStateService _cellStateService; private readonly IProcessApplyService _processApplyService; private readonly IDt_AreaInfoRepository _areaInfoRepository; private readonly IBoxingInfoRepository _boxingInfoRepository; //ç»ç private readonly ICellStateService _cellStateService; //çµè¯å±æ§ private readonly IProcessApplyService _processApplyService; //å·¥èºè·¯çº¿ private readonly IDt_AreaInfoRepository _areaInfoRepository; //åºå private readonly IAgingInOrOutInputService _agingInOrOutInputService; //éç½®\éå public Dt_TaskService(IDt_TaskRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, @@ -44,7 +49,9 @@ IBoxingInfoRepository boxingInfoRepository, ICellStateService cellStateService, IProcessApplyService processApplyService, IDt_AreaInfoRepository areaInfoRepository) : base(BaseDal) IDt_AreaInfoRepository areaInfoRepository, IAgingInOrOutInputService agingInOrOutInputService, IStockInfoDetailRepository stockInfoDetailRepository) : base(BaseDal) { _unitOfWorkManage = unitOfWorkManage; _outOrderRepository = outOrderRepository; @@ -63,14 +70,16 @@ _cellStateService = cellStateService; _processApplyService = processApplyService; _areaInfoRepository = areaInfoRepository; _agingInOrOutInputService = agingInOrOutInputService; _stockInfoDetailRepository = stockInfoDetailRepository; } #region å¤é¨æ¥å£æ¹æ³ #region å åæºåºåºä»»å¡å®æ #region åºåºä»»å¡å®æ /// <summary> /// å åæºåºåºä»»å¡å®æ /// åºåºä»»å¡å®æ /// </summary> /// <param name="saveModel">任塿°æ®åé</param> /// <returns>è¿åç»æé</returns> @@ -79,17 +88,48 @@ WebResponseContent content = new WebResponseContent(); try { // æ´æ°åºåç¶æ // 设置åºä½ç¶æä¸ºç©ºé² stock.LocationInfo.LocationStatus = LocationEnum.Free.ObjToInt(); // 设置åºåç¶æä¸ºåºåº stock.StockInfoDetails.ForEach(x => if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound) { x.Status = 2; }); var process = await SqlSugarHelper.Db.Queryable<Dt_EquipmentProcess>() .FirstAsync(x => x.EquipmentName == task.Roadway); EquipmentParameterInfo info = JsonConvert.DeserializeObject<EquipmentParameterInfo>(process.ProcessValue); AgingOutputDto agingOutputDto = new AgingOutputDto() { OpFlag = 1, EquipmentCode = stock.LocationInfo.RoadwayNo, TrayBarcode = stock.PalletCode, SerialNos = stock.StockInfoDetails.Select(x => new SerialNoOutDto() { SlotNo = x.OrderNo.ToInt32(), SerialNo = x.SerialNumber, SerialNoResult = true, ParameterInfo = new List<ParameterInfo>() { new ParameterInfo() { LowerLomit =info.LowerControlLimit, UpperLimit = info.UpperControlLimit, ParameterResult = info.EquipmentAvailabilityFlag, ParameterCode = info.ParameterCode, ParameterDesc = info.Description, TargetValue = info.TargetValue, Value = info.TargetValue, DefectCode = info.UOMCode } } }).ToList() }; } // æ´æ°åºåç¶æ var loation = _locationRepository.QueryFirst(x => x.LocationCode == task.SourceAddress); var detail = _stockInfoDetailRepository.QueryData(x => x.StockId == stock.Id); // 设置åºä½ç¶æä¸ºç©ºé² loation.LocationStatus = LocationEnum.Free.ObjToInt(); // æ´æ°ä»»å¡ç¶æ task.TaskState = TaskOutStatusEnum.SC_OutFinish.ObjToInt(); task.TaskState = TaskOutStatusEnum.OutFinish.ObjToInt(); task.CurrentAddress = task.NextAddress; task.NextAddress = task.TargetAddress; @@ -98,13 +138,15 @@ // äºå¡å¤ç // å¼å§äºå¡ _unitOfWorkManage.BeginTran(); // æ´æ°åºåä¿¡æ¯ var isStockUpdated = _stockInfoRepository.UpdateData(stock); // æ´æ°ä»»å¡ä¿¡æ¯ var isTaskUpdated = await Update(task); // å é¤åºåä¿¡æ¯ var isStockUpdated = _stockInfoRepository.DeleteDataById(stock.Id); // å é¤åºåä¿¡æ¯ var isStockDetailUpdated = _stockInfoDetailRepository.DeleteDataByIds(detail.Select(x => (object)x.Id).ToArray()); // å é¤ä»»å¡ä¿¡æ¯ var isTaskUpdated = BaseDal.DeleteDataById(task.TaskId); // 妿åºåä¿¡æ¯åä»»å¡ä¿¡æ¯é½æ´æ°æå if (isStockUpdated && isTaskUpdated) if (isStockUpdated && isTaskUpdated && isStockDetailUpdated) { // è®°å½æ¥å¿ LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "å åæºåºåºå®æ", $"äºå¡å¤ç宿ï¼åºåç¶ææ´æ°ï¼{isStockUpdated}ï¼ä»»å¡ç¶ææ´æ°:{isTaskUpdated}"); @@ -179,28 +221,66 @@ try { var boxing = await _boxingInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode); var locationInf = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress); var boxDetail = boxing.BoxingInfoDetails.Adapt<List<DtStockInfoDetail>>(); // å建åºåå®ä¾æ¨¡å DtStockInfo stock = new DtStockInfo() { PalletCode = task.PalletCode, LocationCode = task.TargetAddress, CreateDate = DateTime.Now, Creater = "system", IsFull = boxing.IsFull, StockInfoDetails = boxDetail, LocationInfo = new DtLocationInfo() }; locationInf.LocationStatus = (int)LocationEnum.InStock; // å建åå²ä»»å¡å®ä¾æ¨¡å var taskHty = CreateHistoricalTask(task); // ä¿®æ¹è´§ä½ä¿¡æ¯ä¸ºæè´§ var locationInf = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress); locationInf.LocationStatus = (int)LocationEnum.InStock; // å建åºåå®ä¾æ¨¡å DtStockInfo stock; if (boxing == null) { // 空æç LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "å ¥åºä»»å¡å®æ", $"è´§ä½å°åï¼{task.TargetAddress},ä¿®æ¹åè´§ä½æ°æ®ï¼{locationInf}"); 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); @@ -249,10 +329,15 @@ LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "å ¥åºä»»å¡", ""); return await CompleteInboundTaskAsync(task); } else if (task.TaskType == (int)TaskInboundTypeEnum.InTray) { LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "空æçå ¥åº", ""); return await CompleteInboundTaskAsync(task); } else { LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "åºåä¸åå¨ä¹ä¸æ¯å ¥åºä»»å¡", ""); return content.Error("åºåä¸åå¨"); LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "ä»»å¡ç¶æå¼å¸¸", ""); return content.Error("ä»»å¡ç¶æå¼å¸¸"); } } LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "éªè¯åºåæ¯å¦åå¨", JsonConvert.SerializeObject(stock)); @@ -260,15 +345,20 @@ if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound) { LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "åºåºä»»å¡", ""); if (task.TaskState == TaskOutStatusEnum.SC_OutExecuting.ObjToInt()) if (task.TaskState == TaskOutStatusEnum.Line_OutFinish.ObjToInt()) { LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "å åæºåºåºå®æ", ""); return await CompleteStackTaskAsync(task, stock); } else else if (task.TaskState == TaskOutStatusEnum.SC_OutExecuting.ObjToInt()) { LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "åºåä¸åå¨ä¹ä¸æ¯å ¥åºä»»å¡", ""); return content.Error("åºåä¸åå¨"); } else { LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "ä»»å¡ç¶æå¼å¸¸", ""); return content.Error("ä»»å¡ç¶æå¼å¸¸"); } } else if (task.TaskType == (int)TaskTypeEnum.RelocationIn) @@ -310,8 +400,14 @@ // å¦æç¶æä¸ºfalseï¼åè¿åcontent if (!content.Status) return content; // è°ç¨GetProcessApplyAsyncæ¹æ³ï¼è·åå·¥èºç³è¯· ProcessApplyDto process = await GetProcessApplyAsync(content); // æ·»å ç»çä¿¡æ¯ // å°content.Data转æ¢ä¸ºResultTrayCellsStatus对象 var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.ToString()); var boxing = await CreateBoxingInfo(result, input.PalletCode); // è°ç¨GetProcessApplyAsyncæ¹æ³ï¼è·åå·¥èºè·¯çº¿ ProcessApplyDto process = await GetProcessApplyAsync(result); // 妿process为nullï¼åè¿åcontent if (process == null) return content; @@ -322,6 +418,10 @@ var task = await BaseDal.QueryFirstAsync(x => x.PalletCode == input.PalletCode); // 妿taskä¸ä¸ºnullï¼åè°ç¨UpdateExistingTaskæ¹æ³ï¼æ´æ°ä»»å¡ï¼å¦åè°ç¨CreateNewTaskæ¹æ³ï¼å建æ°ä»»å¡ content = task != null ? await UpdateExistingTask(input, task) : await CreateNewTask(processResponse, input); if (content.Status) { var isBox = await _boxingInfoRepository.AddDataNavAsync(boxing); } } catch (Exception err) { @@ -341,19 +441,32 @@ return await _cellStateService.GetTrayCellStatusAsync(trayCells); } // è·åå·¥èºç³è¯· private async Task<ProcessApplyDto> GetProcessApplyAsync(WebResponseContent content) // è·åç»çä¿¡æ¯ private async Task<DtBoxingInfo> CreateBoxingInfo(ResultTrayCellsStatus result, string palletCode) { // å¦æç¶æä¸ºfalseï¼åè¿ånull if (!content.Status) return null; return new DtBoxingInfo { PalletCode = palletCode, IsFull = true, BoxingInfoDetails = result.SerialNos.Select(serialNoObj => new DtBoxingInfoDetail { SerialNumber = serialNoObj.SerialNo, OrderNo = serialNoObj.PositionNo.ToString(), Status = serialNoObj.SerialNoStatus, MaterielCode = result.BindCode, Remark = result.TrayBarcodePropertys.ToJsonString(), }).ToList() }; } // å°content.Data转æ¢ä¸ºResultTrayCellsStatus对象 var result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(content.Data.ToString()); // è·åå·¥èºç³è¯· private async Task<ProcessApplyDto> GetProcessApplyAsync(ResultTrayCellsStatus content) { // å建ä¸ä¸ªProcessApplyDto对象ï¼å¹¶èµå¼ return new ProcessApplyDto() { WipOrderNo = result.BindCode, SerialNos = result.SerialNos.Select(item => new SerialNos //WipOrderNo = result.BindCode, SerialNos = content.SerialNos.Select(item => new SerialNos { SerialNo = item.SerialNo }).ToList() @@ -381,6 +494,12 @@ .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>(); } @@ -397,7 +516,7 @@ { var area = _areaInfoRepository.QueryFirst(x => x.AreaCode == "CH"); var stockInfo = _stockInfoRepository.QueryData(x => x.Remark == area.AreaCode && x.StockInfoDetails.Any(z => z.MaterielCode == "空æç")).OrderBy(x => x.CreateDate).FirstOrDefault(); var stockInfo = _stockInfoRepository.QueryData(x => x.LocationInfo.AreaId == area.AreaID && x.StockInfoDetails.Any(z => z.MaterielCode == "空æç")).OrderBy(x => x.CreateDate).FirstOrDefault(); // å建æ°ä»»å¡å®ä¾ var task = new Dt_Task { @@ -444,6 +563,65 @@ } #endregion 请æ±ç©ºæç #region éå请æ±åºåº // éå请æ±åºåº public async Task<WebResponseContent> OutTrayByCh(string position) { WebResponseContent content = new WebResponseContent(); try { var area = _areaInfoRepository.QueryFirst(x => x.AreaName == "éååº"); // æ¥è¯¢åºåä¿¡æ¯ var stockInfo = _stockInfoRepository.QueryData(x => x.AreaCode == area.AreaCode && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).OrderBy(x => x.CreateDate).FirstOrDefault(); // å建æ°ä»»å¡å®ä¾ var task = new Dt_Task() { Grade = 1, Roadway = stockInfo.LocationInfo.RoadwayNo, TargetAddress = position, Dispatchertime = DateTime.Now, MaterialNo = "", NextAddress = position, OrderNo = null, PalletCode = stockInfo.PalletCode, SourceAddress = stockInfo.LocationCode, TaskState = (int)TaskOutStatusEnum.OutNew, TaskType = (int)TaskOutboundTypeEnum.OutTray, TaskNum = await BaseDal.GetTaskNo(), Creater = "Systeam" }; var taskId = await BaseDal.AddDataAsync(task); bool isResult = taskId > 0; if (isResult) { WMSTaskDTO taskDTO = new WMSTaskDTO() { TaskNum = task.TaskNum.Value, Grade = 1, PalletCode = DateTime.Now.ToString("MMddHHmmss"), RoadWay = task.Roadway, SourceAddress = stockInfo.LocationCode, TargetAddress = task.Roadway, TaskState = (int)TaskOutStatusEnum.OutNew, Id = 0, TaskType = (int)TaskOutboundTypeEnum.OutTray }; stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable; _locationRepository.UpdateData(stockInfo.LocationInfo); content.OK(data: taskDTO); } } catch (Exception ex) { throw; } return content; } #endregion éå请æ±åºåº #endregion å¤é¨æ¥å£æ¹æ³ @@ -745,15 +923,6 @@ DtLocationInfo location = new DtLocationInfo(); int beforeStatus = 0; // æ ¹æ®ä»»å¡ç±»å夿æ¯åºåºä»»å¡è¿æ¯å ¥åºä»»å¡ //if (input.Type == (int)TaskTypeEnum.Outbound) //{ // // å¤çåºåºä»»å¡ // toAddress = await GetRoadWayAsync(areaId, task.Roadway, input.Direction, input.Area, input.Type); // taskState = (int)TaskOutStatusEnum.SC_OutFinish; //} //else //{ // å¤çå ¥åºä»»å¡ location = await GetLocationDistributeAsync(task.Roadway); toAddress = location.LocationCode; @@ -762,10 +931,8 @@ // æ´æ°è´§ä½ä¿¡æ¯ location.LocationStatus = (int)LocationEnum.Lock; //} // æ´æ°ä»»å¡ä¿¡æ¯ //task.SourceAddress = input.Position; task.CurrentAddress = input.Position; task.TargetAddress = toAddress; task.NextAddress = toAddress; @@ -843,6 +1010,7 @@ TaskNum = await BaseDal.GetTaskNo(), Creater = "Systeam" }; // å°è¯æ·»å æ°ä»»å¡ var taskId = await BaseDal.AddDataAsync(task); bool isResult = taskId > 0; @@ -852,6 +1020,7 @@ isResult = await _taskExecuteDetailRepository.AddDetailAsync(task, false, TaskDescription.GetTaskUpdateDescription(input.PalletCode, input.Position, ToAddress, TaskInStatusEnum.InNew.GetIntegralRuleTypeEnumDesc())); if (isResult) { // å建WMSä»»å¡ WMSTaskDTO taskDTO = new WMSTaskDTO() { TaskNum = 0, Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Integration/AgingInOrOutController.cs
@@ -19,7 +19,7 @@ /// <returns></returns> // POST: api/AgingInOrOut/OCVInput [HttpPost("OCVInput")] public Task<dynamic> GetOCVInputAsync([FromBody] AgingInputDto input) public Task<WebResponseContent> GetOCVInputAsync([FromBody] AgingInputDto input) { return _agingInOrOutInputService.GetOCVInputAsync(input); } @@ -31,7 +31,7 @@ /// <returns></returns> // POST: api/AgingInOrOut/OCVOutput [HttpPost("OCVOutput")] public Task<dynamic> GetOCVOutputAsync([FromBody] AgingOutputDto input) public Task<WebResponseContent> GetOCVOutputAsync([FromBody] AgingOutputDto input) { return _agingInOrOutInputService.GetOCVOutputAsync(input); }