feat: 添加堆垛机相关常量类并重构代码使用常量
refactor: 使用常量替换代码中的魔法值
docs: 更新注释以引用新的常量类
fix: 修正堆垛机作业指令枚举的使用
style: 统一代码格式和命名规范
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | namespace WIDESEAWCS_Common.Constants |
| | | { |
| | | /// <summary> |
| | | /// 设å¤å°åå
Œ
±å¸¸é |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// å®ä¹è®¾å¤éä¿¡ä¸ä½¿ç¨çå
Œ
±å¸¸éï¼å¦å°åæ ¼å¼ãä¿¡å·å¼çã |
| | | /// </remarks> |
| | | public class DeviceAddressConst |
| | | { |
| | | /// <summary> |
| | | /// 交äºä¿¡å·å¤ä½å¼ |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// 设å¤å®æä»»å¡åï¼åå
¥æ¤å¼å°äº¤äºä¿¡å·å¯åå¨ä»¥å¤ä½ã |
| | | /// ç¨äºè¾é线ç设å¤çä»»å¡å®æç¡®è®¤ã |
| | | /// </remarks> |
| | | public const int InteractiveSignalReset = 0; |
| | | |
| | | /// <summary> |
| | | /// å°åå符串åé符 |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// å°åæ ¼å¼ä¸º "è¡-å-å±"ï¼ä¾å¦ "1-2-3" 表示第1è¡ã第2åã第3å±ã |
| | | /// </remarks> |
| | | public const char AddressSeparator = '-'; |
| | | |
| | | /// <summary> |
| | | /// å°åå符串åé符ï¼å符串形å¼ï¼ |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// ç¨äºå符串 Split æä½ã |
| | | /// </remarks> |
| | | public const string AddressSeparatorString = "-"; |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | namespace WIDESEAWCS_Common.Constants |
| | | { |
| | | /// <summary> |
| | | /// å åæºå½ä»¤ç±»åæä¸¾ |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// æ ¹æ®å··éç±»åçä¸åï¼å åæºå¯è½ä½¿ç¨ä¸åçå½ä»¤æ ¼å¼ã |
| | | /// </remarks> |
| | | public enum StackerCraneCommandTypeEnum |
| | | { |
| | | /// <summary> |
| | | /// æ åå½ä»¤æ ¼å¼ |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// ç¨äº GWãCW å¼å¤´å··éçå åæºã |
| | | /// </remarks> |
| | | Standard, |
| | | |
| | | /// <summary> |
| | | /// æåå½ä»¤æ ¼å¼ |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// ç¨äº HC å¼å¤´å··éçå åæºã |
| | | /// å
嫿¡ç åæ®µï¼ç¨äºçµæ± 追溯ã |
| | | /// </remarks> |
| | | Formation |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | namespace WIDESEAWCS_Common.Constants |
| | | { |
| | | /// <summary> |
| | | /// å åæºç¸å
³å¸¸é |
| | | /// </summary> |
| | | public class StackerCraneConst |
| | | { |
| | | /// <summary> |
| | | /// 空æçä»»å¡ç±»å |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// å½ä»»å¡ç±»å为空æçåºåº/å
¥åºæ¶ï¼ä½¿ç¨æ¤ç¹æ®ç±»åå¼ä»£æ¿åä»»å¡ç±»åã |
| | | /// ç¨äºä¸ç«å°è·¯ç±é
ç½®å¹é
ã |
| | | /// </remarks> |
| | | public const int EmptyPalletTaskType = 100; |
| | | |
| | | /// <summary> |
| | | /// ç«è¦ç¶ææ£å¸¸ |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// ç«è¦ä¿¡å·ä¸º 0 表示æ£å¸¸ï¼æ ç«ç¾æ¥è¦ã |
| | | /// </remarks> |
| | | public const short FireAlarmNormal = 0; |
| | | |
| | | /// <summary> |
| | | /// å¿è·³åå§å¼ |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// å åæºå½ä»¤ä¸çå¿è·³å段åå§å¼ã |
| | | /// </remarks> |
| | | public const short HeartBeatInitial = 0; |
| | | |
| | | /// <summary> |
| | | /// ä½ä¸ç±»å - å
¥åº |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// æ è¯ä»»å¡ä¸ºå
¥åºä½ä¸ç±»åã |
| | | /// </remarks> |
| | | public const short WorkTypeInbound = 1; |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System.Collections.Generic; |
| | | |
| | | namespace WIDESEAWCS_Common.Constants |
| | | { |
| | | /// <summary> |
| | | /// å åæºå··éåç¼å¸¸é |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// å®ä¹å··éç¼ç çåç¼ä¸å½ä»¤ç±»åçæ å°å
³ç³»ã |
| | | /// </remarks> |
| | | public class StackerCraneRoadwayConst |
| | | { |
| | | /// <summary> |
| | | /// æåå åæºå··éåç¼ |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// 以 HC å¼å¤´çå··éä½¿ç¨æåå åæºå½ä»¤æ ¼å¼ã |
| | | /// </remarks> |
| | | public const string FormationPrefix = "HC"; |
| | | |
| | | /// <summary> |
| | | /// æ åå åæºå··éåç¼ï¼GWï¼ |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// 以 GW å¼å¤´çå··éä½¿ç¨æ åå åæºå½ä»¤æ ¼å¼ã |
| | | /// </remarks> |
| | | public const string StandardPrefixGW = "GW"; |
| | | |
| | | /// <summary> |
| | | /// æ åå åæºå··éåç¼ï¼CWï¼ |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// 以 CW å¼å¤´çå··éä½¿ç¨æ åå åæºå½ä»¤æ ¼å¼ã |
| | | /// </remarks> |
| | | public const string StandardPrefixCW = "CW"; |
| | | |
| | | /// <summary> |
| | | /// å··éåç¼å°å½ä»¤ç±»åçé»è®¤æ å° |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// Key: å··éç¼ç åç¼ |
| | | /// Value: å½ä»¤ç±»ååç§° |
| | | /// </remarks> |
| | | public static readonly Dictionary<string, StackerCraneCommandTypeEnum> DefaultRoadwayCommandMapping = new() |
| | | { |
| | | { FormationPrefix, StackerCraneCommandTypeEnum.Formation }, |
| | | { StandardPrefixGW, StackerCraneCommandTypeEnum.Standard }, |
| | | { StandardPrefixCW, StackerCraneCommandTypeEnum.Standard } |
| | | }; |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | namespace WIDESEAWCS_Common.Constants |
| | | { |
| | | /// <summary> |
| | | /// å åæºä½ä¸æä»¤æä¸¾ |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// æ§å¶å åæºçå¨ä½æä»¤ï¼éè¿ PLC å¯åå¨ä¸å åæºéä¿¡ã |
| | | /// </remarks> |
| | | public enum StackerCraneWorkActionEnum |
| | | { |
| | | /// <summary> |
| | | /// å¼å§æ§è¡ä»»å¡ |
| | | /// </summary> |
| | | StartTask = 1, |
| | | |
| | | /// <summary> |
| | | /// ä»»å¡å®æ/忢 |
| | | /// </summary> |
| | | TaskComplete = 2, |
| | | |
| | | /// <summary> |
| | | /// æ¶é²ä»»å¡å¼å§ |
| | | /// </summary> |
| | | FireAlarmStart = 3 |
| | | } |
| | | } |
| | |
| | | using MapsterMapper; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; |
| | | using Quartz; |
| | | using WIDESEAWCS_Common.Constants; |
| | | using WIDESEAWCS_Communicator; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.Helper; |
| | |
| | | Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); |
| | | if (task != null) |
| | | { |
| | | conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode); |
| | | conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, DeviceAddressConst.InteractiveSignalReset, childDeviceCode); |
| | | WebResponseContent content = _taskService.UpdateTaskStatusToNext(task); |
| | | Console.Out.WriteLine(content.Serialize()); |
| | | } |
| | |
| | | Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); |
| | | if (task != null) |
| | | { |
| | | conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode); |
| | | conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, DeviceAddressConst.InteractiveSignalReset, childDeviceCode); |
| | | WebResponseContent content = _taskService.UpdateTaskStatusToNext(task); |
| | | Console.Out.WriteLine(content.Serialize()); |
| | | } |
| | |
| | | { |
| | | // 妿 WCS_ACK 为 1ï¼å
æ¸
é¤ï¼è¡¨ç¤ºå¤çè¿ä¸ä¸æ¬¡è¯·æ±ï¼ |
| | | if (command.WCS_ACK == 1) |
| | | conveyorLine.SetValue(ConveyorLineDBNameNew.WCS_ACK, 0, childDeviceCode); |
| | | conveyorLine.SetValue(ConveyorLineDBNameNew.WCS_ACK, (short)0, childDeviceCode); |
| | | continue; |
| | | } |
| | | |
| | |
| | | using WIDESEAWCS_QuartzJob.Service; |
| | | using WIDESEAWCS_QuartzJob.StackerCrane; |
| | | using WIDESEAWCS_QuartzJob.StackerCrane.Enum; |
| | | using WIDESEAWCS_Common.Constants; |
| | | using WIDESEAWCS_Tasks.StackerCraneJob; |
| | | |
| | | namespace WIDESEAWCS_Tasks |
| | |
| | | if (sendFlag) |
| | | { |
| | | Task.Delay(1000).Wait(); |
| | | commonStackerCrane.SetValue(StackerCraneDBName.WorkAction, (short)1); |
| | | commonStackerCrane.SetValue(StackerCraneDBName.WorkAction, (short)StackerCraneWorkActionEnum.StartTask); |
| | | // åéæåï¼æ´æ°ç¶æ |
| | | commonStackerCrane.LastTaskType = task.TaskType; |
| | | _taskService.UpdateTaskStatusToNext(task.TaskNum); |
| | |
| | | // æ´æ°ä»»å¡ç¶æä¸ºå®æ |
| | | if (_taskService.StackCraneTaskCompleted(e.TaskNum).Status) |
| | | { |
| | | // æ¸
é¤å åæºçä½ä¸æä»¤ï¼è®¾ç½®ä¸º 2ï¼è¡¨ç¤ºç©ºé²ï¼ |
| | | stackerCrane.SetValue(StackerCraneDBName.WorkAction, 2); |
| | | // æ¸
é¤å åæºçä½ä¸æä»¤ï¼è®¾ç½®ä¸ºç©ºé²ï¼ |
| | | stackerCrane.SetValue(StackerCraneDBName.WorkAction, (short)StackerCraneWorkActionEnum.TaskComplete); |
| | | } |
| | | } |
| | | } |
| | |
| | | using Microsoft.Extensions.Logging; |
| | | using System; |
| | | using System.Diagnostics.CodeAnalysis; |
| | | using WIDESEAWCS_Common.Constants; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Core.LogHelper; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | |
| | | return new StackerCraneTaskCommand |
| | | { |
| | | TaskNum = task.TaskNum, // ä»»å¡å· |
| | | WorkType = 1, // ä½ä¸ç±»å |
| | | //WorkAction = 1 // ä½ä¸æä»¤ï¼å¼å§æ§è¡ |
| | | WorkType = StackerCraneConst.WorkTypeInbound, // ä½ä¸ç±»åï¼å
¥åº |
| | | //WorkAction = StackerCraneWorkActionEnum.StartTask // ä½ä¸æä»¤ï¼å¼å§æ§è¡ |
| | | }; |
| | | } |
| | | |
| | |
| | | { |
| | | Barcode = task.PalletCode, // æçæ¡ç |
| | | TaskNum = task.TaskNum, // ä»»å¡å· |
| | | WorkType = 1, // ä½ä¸ç±»å |
| | | WorkAction = 1, // ä½ä¸æä»¤ï¼å¼å§æ§è¡ |
| | | FireAlarm = 0, // ç«è¦ï¼æ£å¸¸ |
| | | HeartBeat = 0, // å¿è·³ |
| | | WorkType = StackerCraneConst.WorkTypeInbound, // ä½ä¸ç±»åï¼å
¥åº |
| | | WorkAction = (short)StackerCraneWorkActionEnum.StartTask, // ä½ä¸æä»¤ï¼å¼å§æ§è¡ |
| | | FireAlarm = StackerCraneConst.FireAlarmNormal, // ç«è¦ï¼æ£å¸¸ |
| | | HeartBeat = StackerCraneConst.HeartBeatInitial, // å¿è·³ |
| | | FieldName = string.Empty // ä¿çåæ®µ |
| | | }; |
| | | } |
| | |
| | | _logger.LogInformation("BuildInboundCommandï¼æå»ºå
¥åºå½ä»¤ï¼ä»»å¡å·: {TaskNum}", task.TaskNum); |
| | | QuartzLogger.Info($"BuildInboundCommandï¼æå»ºå
¥åºå½ä»¤ï¼ä»»å¡å·: {task.TaskNum}", task.Roadway); |
| | | |
| | | // ç¡®å®ä»»å¡ç±»åï¼ç©ºæçç¨ç¹æ®ç±»å 100ï¼ |
| | | // ç¡®å®ä»»å¡ç±»åï¼ç©ºæçç¨ç¹æ®ç±»åï¼ |
| | | int taskType = 0; |
| | | if (task.TaskType == (int)TaskOutboundTypeEnum.OutEmpty) |
| | | { |
| | | taskType = 100; |
| | | taskType = StackerCraneConst.EmptyPalletTaskType; |
| | | } |
| | | else |
| | | taskType = task.TaskType; |
| | |
| | | int taskType = 0; |
| | | if (task.TaskType == (int)TaskOutboundTypeEnum.OutEmpty) |
| | | { |
| | | taskType = 100; |
| | | taskType = StackerCraneConst.EmptyPalletTaskType; |
| | | } |
| | | else |
| | | taskType = task.TaskType; |
| | |
| | | /// ä½ä¸æä»¤ |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// æ§å¶å åæºçå¨ä½ï¼ |
| | | /// æ§å¶å åæºçå¨ä½ãåè§ <see cref="Constants.StackerCraneWorkActionEnum"/>ï¼ |
| | | /// - 1: å¼å§æ§è¡ä»»å¡ |
| | | /// - 2: ä»»å¡å®æ/忢 |
| | | /// - 3: æ¶é²ä»»å¡å¼å§ |
| | |
| | | using Newtonsoft.Json; |
| | | using System.Diagnostics.CodeAnalysis; |
| | | using WIDESEA_Core; |
| | | using WIDESEAWCS_Common.Constants; |
| | | using WIDESEAWCS_Common.HttpEnum; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | | using WIDESEAWCS_Core; |
| | |
| | | if (task.TaskType == (int)TaskOutboundTypeEnum.OutEmpty) |
| | | { |
| | | // 空æçåºåº |
| | | taskType = 100; |
| | | taskType = StackerCraneConst.EmptyPalletTaskType; |
| | | } |
| | | else |
| | | taskType = task.TaskType; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | namespace WIDESEA_Common.Constants |
| | | { |
| | | /// <summary> |
| | | /// åºåRemarkè·¯ç±æ 记常é |
| | | /// </summary> |
| | | public static class StockRemarkConstants |
| | | { |
| | | /// <summary> |
| | | /// 髿¸©1å·è·¯ç±æ è®° |
| | | /// </summary> |
| | | public const string GW1 = "GW_1"; |
| | | |
| | | /// <summary> |
| | | /// 髿¸©2å·è·¯ç±æ è®° |
| | | /// </summary> |
| | | public const string GW2 = "GW_2"; |
| | | |
| | | /// <summary> |
| | | /// 常温1å·è·¯ç±æ è®° |
| | | /// </summary> |
| | | public const string CW1 = "CW_1"; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// åºåºæ¶æå¸¸éï¼å°æ¶ï¼ |
| | | /// </summary> |
| | | public static class OutboundTimeConstants |
| | | { |
| | | /// <summary> |
| | | /// GW_1馿¾å
¥åºæ¶æï¼16å°æ¶ï¼ |
| | | /// </summary> |
| | | public const int OUTBOUND_HOURS_GW1_FIRST = 16; |
| | | |
| | | /// <summary> |
| | | /// GW_1äºæ¾å
¥åºæ¶æï¼24å°æ¶ï¼ |
| | | /// </summary> |
| | | public const int OUTBOUND_HOURS_GW1_SECOND = 24; |
| | | |
| | | /// <summary> |
| | | /// CW_1åºåºæ¶æï¼12å°æ¶ï¼ |
| | | /// </summary> |
| | | public const int OUTBOUND_HOURS_CW1 = 12; |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | namespace WIDESEA_Common.Constants |
| | | { |
| | | /// <summary> |
| | | /// åºåä¸MESç¸å
³å¸¸é |
| | | /// </summary> |
| | | public static class StockConstants |
| | | { |
| | | /// <summary> |
| | | /// é»è®¤ç©æç¼ç |
| | | /// </summary> |
| | | public const string MATERIAL_CODE = "çµè¯"; |
| | | |
| | | /// <summary> |
| | | /// é»è®¤ç©æåç§° |
| | | /// </summary> |
| | | public const string MATERIAL_NAME = "çµè¯"; |
| | | |
| | | /// <summary> |
| | | /// é»è®¤åä½ |
| | | /// </summary> |
| | | public const string UNIT = "PCS"; |
| | | |
| | | /// <summary> |
| | | /// é»è®¤å建è
|
| | | /// </summary> |
| | | public const string SYSTEM_USER = "system"; |
| | | |
| | | /// <summary> |
| | | /// AGVå建è
|
| | | /// </summary> |
| | | public const string AGV_USER = "AGV"; |
| | | |
| | | /// <summary> |
| | | /// èªå¨ä»»å¡å建è
|
| | | /// </summary> |
| | | public const string SYSTEM_AUTO_USER = "system_auto"; |
| | | |
| | | /// <summary> |
| | | /// é»è®¤è®¢åå· |
| | | /// </summary> |
| | | public const string DEFAULT_ORDER_NO = "111"; |
| | | |
| | | /// <summary> |
| | | /// MES设å¤ç¼ç |
| | | /// </summary> |
| | | public const string MES_EQUIPMENT_CODE = "STK-GROUP-001"; |
| | | |
| | | /// <summary> |
| | | /// MESèµæºç¼ç |
| | | /// </summary> |
| | | public const string MES_RESOURCE_CODE = "STK-GROUP-001"; |
| | | |
| | | /// <summary> |
| | | /// ç»çæä½ç±»åï¼0代表ç»çï¼ |
| | | /// </summary> |
| | | public const int MES_BIND_OPERATION_TYPE = 0; |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | namespace WIDESEA_Common.Constants |
| | | { |
| | | /// <summary> |
| | | /// ä»»å¡å°å常é |
| | | /// </summary> |
| | | public static class TaskAddressConstants |
| | | { |
| | | /// <summary> |
| | | /// é»è®¤/ä¸è½¬å°å |
| | | /// </summary> |
| | | public const string DEFAULT_ADDRESS = "10080"; |
| | | |
| | | /// <summary> |
| | | /// 髿¸©1å·åºåºå°åå表ï¼è½®è¯¢ï¼ |
| | | /// </summary> |
| | | public static readonly string[] GW1_ADDRESSES = { "11001", "11010" }; |
| | | |
| | | /// <summary> |
| | | /// 髿¸©2å·åºåºå°å |
| | | /// </summary> |
| | | public const string GW2_ADDRESS = "CWSC1"; |
| | | |
| | | /// <summary> |
| | | /// 常温1å·åºåºå°å |
| | | /// </summary> |
| | | public const string CW1_ADDRESS = "22001"; |
| | | |
| | | /// <summary> |
| | | /// å容åºåºåºå°å |
| | | /// </summary> |
| | | public const string GRADING_OUTBOUND_ADDRESS = "10081"; |
| | | } |
| | | } |
| | |
| | | using SqlSugar; |
| | | using WIDESEA_Common.Constants; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_DTO.MES; |
| | |
| | | var now = DateTime.Now; |
| | | var details = stock.Details.Select(item => new Dt_StockInfoDetail |
| | | { |
| | | MaterielCode = "çµè¯", |
| | | MaterielName = "çµè¯", |
| | | MaterielCode = StockConstants.MATERIAL_CODE, |
| | | MaterielName = StockConstants.MATERIAL_NAME, |
| | | StockQuantity = item.Quantity, |
| | | Unit = "PCS", |
| | | Creater = "system", |
| | | OrderNo = "111", |
| | | Unit = StockConstants.UNIT, |
| | | Creater = StockConstants.SYSTEM_USER, |
| | | OrderNo = StockConstants.DEFAULT_ORDER_NO, |
| | | ProductionDate = now.ToString(), |
| | | EffectiveDate = now.AddYears(1).ToString(), |
| | | SerialNumber = item.CellBarcode, |
| | |
| | | var bindRequest = new BindContainerRequest |
| | | { |
| | | ContainerCode = stock?.TargetPalletNo, |
| | | EquipmentCode = "STK-GROUP-001", |
| | | ResourceCode = "STK-GROUP-001", |
| | | EquipmentCode = StockConstants.MES_EQUIPMENT_CODE, |
| | | ResourceCode = StockConstants.MES_RESOURCE_CODE, |
| | | LocalTime = now, |
| | | OperationType = 0, // 0代表ç»ç |
| | | OperationType = StockConstants.MES_BIND_OPERATION_TYPE, |
| | | ContainerSfcList = details.Select(d => new ContainerSfcItem |
| | | { |
| | | Sfc = d.SerialNumber, |
| | |
| | | PalletCode = stock.TargetPalletNo, |
| | | WarehouseId = stock.Roadway == "注液ç»çæºæ¢°æ" ? (await _warehouseService.Db.Queryable<Dt_Warehouse>().FirstAsync(w => w.WarehouseCode == "GW1")).WarehouseId : 0, |
| | | StockStatus = StockStatusEmun.ç»çæå.GetHashCode(), |
| | | Creater = "system", |
| | | Creater = StockConstants.SYSTEM_USER, |
| | | Details = details |
| | | }; |
| | | result = StockInfoService.Repository.AddData(entity, x => x.Details); |
| | |
| | | PalletCode = stock.TargetPalletNo, |
| | | WarehouseId = sourceStock.WarehouseId, |
| | | StockStatus = StockStatusEmun.ç»çæå.GetHashCode(), |
| | | Creater = "system", |
| | | Creater = StockConstants.SYSTEM_USER, |
| | | }; |
| | | |
| | | var newId = StockInfoService.Repository.AddData(newStock); |
| | |
| | | // è°ç¨MESè§£ç»æºæççµè¯ |
| | | var unbindRequest = new UnBindContainerRequest |
| | | { |
| | | EquipmentCode = "STK-GROUP-001", |
| | | ResourceCode = "STK-GROUP-001", |
| | | EquipmentCode = StockConstants.MES_EQUIPMENT_CODE, |
| | | ResourceCode = StockConstants.MES_RESOURCE_CODE, |
| | | LocalTime = DateTime.Now, |
| | | ContainCode = stock.SourcePalletNo, |
| | | SfcList = detailEntities.Select(d => d.SerialNumber).ToList() |
| | |
| | | var bindRequest = new BindContainerRequest |
| | | { |
| | | ContainerCode = stock.TargetPalletNo, |
| | | EquipmentCode = "STK-GROUP-001", |
| | | ResourceCode = "STK-GROUP-001", |
| | | EquipmentCode = StockConstants.MES_EQUIPMENT_CODE, |
| | | ResourceCode = StockConstants.MES_RESOURCE_CODE, |
| | | LocalTime = DateTime.Now, |
| | | OperationType = 0, |
| | | OperationType = StockConstants.MES_BIND_OPERATION_TYPE, |
| | | ContainerSfcList = detailEntities.Select(d => new ContainerSfcItem |
| | | { |
| | | Sfc = d.SerialNumber, |
| | |
| | | // è°ç¨MESè§£ç»çµè¯ |
| | | var unbindRequest = new UnBindContainerRequest |
| | | { |
| | | EquipmentCode = "STK-GROUP-001", |
| | | ResourceCode = "STK-GROUP-001", |
| | | EquipmentCode = StockConstants.MES_EQUIPMENT_CODE, |
| | | ResourceCode = StockConstants.MES_RESOURCE_CODE, |
| | | LocalTime = DateTime.Now, |
| | | ContainCode = stock.SourcePalletNo, |
| | | SfcList = detailEntities.Select(d => d.SerialNumber).ToList() |
| | |
| | | using SqlSugar; |
| | | using System.DirectoryServices.Protocols; |
| | | using System.Text.Json; |
| | | using WIDESEA_Common.Constants; |
| | | using WIDESEA_Common.LocationEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Common.TaskEnum; |
| | |
| | | private string DetermineTargetAddress(string roadway, Dictionary<string, List<string>> addressMap) |
| | | { |
| | | if (string.IsNullOrWhiteSpace(roadway)) |
| | | return "10080"; |
| | | return TaskAddressConstants.DEFAULT_ADDRESS; |
| | | |
| | | string? matchedPrefix = null; |
| | | foreach (var kvp in addressMap) |
| | |
| | | } |
| | | |
| | | if (matchedPrefix == null) |
| | | return "10080"; |
| | | return TaskAddressConstants.DEFAULT_ADDRESS; |
| | | |
| | | if (!addressMap.TryGetValue(matchedPrefix, out var addresses) || addresses == null || addresses.Count == 0) |
| | | return "10080"; |
| | | return TaskAddressConstants.DEFAULT_ADDRESS; |
| | | |
| | | if (addresses.Count == 1) |
| | | return addresses[0]; |
| | |
| | | { |
| | | return remark switch |
| | | { |
| | | "GW_1" => _roundRobinService.GetNextAddress("GW_1", new List<string> { "11001", "11010" }), |
| | | "GW_2" => "CWSC1", |
| | | "CW_1" => "22001", |
| | | StockRemarkConstants.GW1 => _roundRobinService.GetNextAddress(StockRemarkConstants.GW1, TaskAddressConstants.GW1_ADDRESSES.ToList()), |
| | | StockRemarkConstants.GW2 => TaskAddressConstants.GW2_ADDRESS, |
| | | StockRemarkConstants.CW1 => TaskAddressConstants.CW1_ADDRESS, |
| | | _ => DetermineTargetAddress(roadway, addressMap) |
| | | }; |
| | | } |
| | |
| | | using SqlSugar; |
| | | using System.DirectoryServices.Protocols; |
| | | using System.Text.Json; |
| | | using WIDESEA_Common.Constants; |
| | | using WIDESEA_Common.LocationEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Common.TaskEnum; |
| | |
| | | PalletType = stock.PalletType, |
| | | SourceAddress = stock.LocationCode, |
| | | CurrentAddress = stock.LocationCode, |
| | | NextAddress = "10080", |
| | | TargetAddress = "10081", |
| | | NextAddress = TaskAddressConstants.DEFAULT_ADDRESS, |
| | | TargetAddress = TaskAddressConstants.GRADING_OUTBOUND_ADDRESS, |
| | | Roadway = stock.LocationDetails.RoadwayNo, |
| | | TaskType = TaskTypeEnum.Outbound.GetHashCode(), |
| | | TaskStatus = TaskStatusEnum.New.GetHashCode(), |
| | |
| | | using SqlSugar; |
| | | using System.DirectoryServices.Protocols; |
| | | using System.Text.Json; |
| | | using WIDESEA_Common.Constants; |
| | | using WIDESEA_Common.LocationEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Common.TaskEnum; |
| | |
| | | { |
| | | if (stockInfo.Remark.IsNullOrEmpty()) |
| | | { |
| | | stockInfo.OutboundDate = now.AddHours(16); |
| | | stockInfo.Remark = "GW_1"; |
| | | stockInfo.OutboundDate = now.AddHours(OutboundTimeConstants.OUTBOUND_HOURS_GW1_FIRST); |
| | | stockInfo.Remark = StockRemarkConstants.GW1; |
| | | } |
| | | else if (stockInfo.Remark == "GW_1") |
| | | else if (stockInfo.Remark == StockRemarkConstants.GW1) |
| | | { |
| | | stockInfo.OutboundDate = now.AddHours(24); |
| | | stockInfo.Remark = "GW_2"; |
| | | stockInfo.OutboundDate = now.AddHours(OutboundTimeConstants.OUTBOUND_HOURS_GW1_SECOND); |
| | | stockInfo.Remark = StockRemarkConstants.GW2; |
| | | } |
| | | else |
| | | { |
| | | stockInfo.OutboundDate = now.AddHours(16); |
| | | stockInfo.OutboundDate = now.AddHours(OutboundTimeConstants.OUTBOUND_HOURS_GW1_FIRST); |
| | | } |
| | | } |
| | | else if (task.Roadway.Contains("CW")) |
| | | { |
| | | if (stockInfo.Remark == "GW_2") |
| | | if (stockInfo.Remark == StockRemarkConstants.GW2) |
| | | { |
| | | stockInfo.OutboundDate = now.AddHours(12); |
| | | stockInfo.Remark = "CW_1"; |
| | | stockInfo.OutboundDate = now.AddHours(OutboundTimeConstants.OUTBOUND_HOURS_CW1); |
| | | stockInfo.Remark = StockRemarkConstants.CW1; |
| | | } |
| | | else |
| | | { |
| | | stockInfo.OutboundDate = now.AddHours(12); |
| | | stockInfo.OutboundDate = now.AddHours(OutboundTimeConstants.OUTBOUND_HOURS_CW1); |
| | | } |
| | | } |
| | | else |