已添加20个文件
已重命名1个文件
已修改48个文件
| | |
| | | |
| | | public const string TZPassZZ = "TZPassZZ"; |
| | | |
| | | public const string HZPassTZ = "HZPassTZ"; |
| | | |
| | | public const string Queue = "Queue"; |
| | | |
| | | public const string RequestInboundRoadWayNo = "RequestInboundRoadWayNo"; |
| | |
| | | /// <summary> |
| | | /// 忣å
¥åº |
| | | /// </summary> |
| | | [Description("忣å
¥åº")] |
| | | InPick = 202, |
| | | //[Description("忣å
¥åº")] |
| | | //InPick = 202, |
| | | |
| | | /// <summary> |
| | | /// è´¨æ£å
¥åº |
| | | /// </summary> |
| | | [Description("è´¨æ£å
¥åº")] |
| | | InQuality = 203, |
| | | //[Description("è´¨æ£å
¥åº")] |
| | | //InQuality = 203, |
| | | |
| | | /// <summary> |
| | | /// 空æçå
¥åº |
| | |
| | | /// <summary> |
| | | /// NGå
¥åº |
| | | /// </summary> |
| | | [Description("NGå
¥åº")] |
| | | InNG = 205, |
| | | //[Description("NGå
¥åº")] |
| | | //InNG = 205, |
| | | |
| | | /// <summary> |
| | | /// 车轮å
¥åº |
| | | /// </summary> |
| | | [Description("车轮å
¥åº")] |
| | | InWheels = 206, |
| | | //[Description("车轮å
¥åº")] |
| | | //InWheels = 206, |
| | | |
| | | /// <summary> |
| | | /// å¶å¨çå
¥åº |
| | | /// </summary> |
| | | [Description("å¶å¨çå
¥åº")] |
| | | InBrake = 207, |
| | | //[Description("å¶å¨çå
¥åº")] |
| | | //InBrake = 207, |
| | | } |
| | | |
| | | public enum TaskOutboundTypeEnum |
| | |
| | | /// <summary> |
| | | /// 忣åºåº |
| | | /// </summary> |
| | | [Description("忣åºåº")] |
| | | OutPick = 102, |
| | | //[Description("忣åºåº")] |
| | | //OutPick = 102, |
| | | |
| | | /// <summary> |
| | | /// è´¨æ£åºåº |
| | | /// </summary> |
| | | [Description("è´¨æ£åºåº")] |
| | | OutQuality = 103, |
| | | //[Description("è´¨æ£åºåº")] |
| | | //OutQuality = 103, |
| | | |
| | | /// <summary> |
| | | /// 空æçåºåº |
| | |
| | | /// <summary> |
| | | /// NGåºåº |
| | | /// </summary> |
| | | [Description("NGåºåº")] |
| | | OutNG = 105, |
| | | //[Description("NGåºåº")] |
| | | //OutNG = 105, |
| | | |
| | | /// <summary> |
| | | /// ç´æ¥åºåº |
| | |
| | | /// <summary> |
| | | /// 车轮åºåº |
| | | /// </summary> |
| | | [Description("车轮åºåº")] |
| | | OutWheels = 107, |
| | | //[Description("车轮åºåº")] |
| | | //OutWheels = 107, |
| | | |
| | | /// <summary> |
| | | /// å¶å¨çåºåº |
| | | /// </summary> |
| | | [Description("å¶å¨çåºåº")] |
| | | OutBrake = 108, |
| | | //[Description("å¶å¨çåºåº")] |
| | | //OutBrake = 108, |
| | | } |
| | | |
| | | public enum TaskRelocationTypeEnum |
| | |
| | | public string PalletCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å··éå· |
| | | /// å··é设å¤å· |
| | | /// </summary> |
| | | public string RoadWay { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å··éå· |
| | | /// </summary> |
| | | public string RoadwayNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»»å¡ç±»å |
| | | /// </summary> |
| | | public int TaskType { get; set; } |
| | |
| | | public int CarType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å··éå· |
| | | ///</summary> |
| | | [SugarColumn(ColumnName = "RoadwayNo", ColumnDescription = "å··éå·")] |
| | | public string RoadwayNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å¤ æ³¨:PVIç |
| | | /// é»è®¤å¼: |
| | | ///</summary> |
| | |
| | | public string PalletCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å··éæº |
| | | /// </summary> |
| | | [ImporterHeader(Name = "å··éæº")] |
| | | [ExporterHeader(DisplayName = "å··éæº")] |
| | | [SugarColumn(IsNullable = false, Length = 10, ColumnDescription = "å··éæº")] |
| | | public string Roadway { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å··éå· |
| | | /// </summary> |
| | | [ImporterHeader(Name = "å··éå·")] |
| | | [ExporterHeader(DisplayName = "å··éå·")] |
| | | [SugarColumn(IsNullable = false, Length = 10, ColumnDescription = "å··éå·")] |
| | | public string Roadway { get; set; } |
| | | public string RoadwayNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»»å¡ç±»å |
| | |
| | | "ConnectionStringsEncryption": false, |
| | | "MainDB": "DB_WIDESEA", //å½å项ç®ç主åºï¼æå¯¹åºçè¿æ¥å符串çEnabledå¿
须为true |
| | | //è¿æ¥å符串 |
| | | //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=", |
| | | //"ConnectionString": "Data Source=127.0.0.1;Initial Catalog=WIDESEA_WCS2F08;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=True", |
| | | //"ConnectionString": "Data Source=192.168.20.251;Initial Catalog=WIDESEA_WCSDB;User ID=sa;Password=123456@gy;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | |
| | | "ConnectionString": "Data Source=.;Initial Catalog=LP_WIDESEAWCS;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | |
| | | //"ConnectionString": "Data Source=.;Initial Catalog=ZCLDY_WIDESEAWCS;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //"ConnectionString": "Data Source=.\\LIULEI;Initial Catalog=MX_LDY_WCS;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //"ConnectionString": "Data Source=127.0.0.1;Initial Catalog=WIDESEA_WCS2F08;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=True", |
| | | //"ConnectionString": "Data Source=192.168.20.251;Initial Catalog=WIDESEA_WCSDB;User ID=sa;Password=123456@gy;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //"ConnectionString": "Data Source=192.168.5.251;Initial Catalog=WIDESEAWCS_TEST;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | |
| | | "ConnectionString": "Data Source=.\\LIULEI;Initial Catalog=LP_WIDESEAWCS;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //"ConnectionString": "Data Source=172.21.1.139;Initial Catalog=WIDESEA_WCSDB;User ID=sa;Password=Admin123;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //è·¨å |
| | | "Cors": { |
| | |
| | | |
| | | |
| | | // æ£æ¥å½åæçæ¯å¦åå¨ä»»å¡ |
| | | private async Task<bool> HasTask(string PVI) |
| | | private async Task<bool> HasTask(string palletCode) |
| | | { |
| | | var hasTask = await BaseDal.QueryFirstAsync(x => x.PVI == PVI); |
| | | var hasTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode); |
| | | return hasTask != null; |
| | | } |
| | | |
| | |
| | | StaticVariable.isLineRun = false; |
| | | |
| | | // æ£æ¥å½åæçæ¯å¦åå¨ä»»å¡ |
| | | if (await HasTask(palletCode)) |
| | | { |
| | | return content.Error("å½åæçåå¨ä»»å¡"); |
| | | } |
| | | //if (await HasTask(palletCode)) |
| | | //{ |
| | | // return content.Error("å½åæçåå¨ä»»å¡"); |
| | | //} |
| | | |
| | | //PVI = "J26000456TF12"; // 模æPVI请æ±ä»»å¡ |
| | | |
| | |
| | | using Newtonsoft.Json; |
| | | using SqlSugar; |
| | | using System.Diagnostics.CodeAnalysis; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_BasicInfoRepository; |
| | | using WIDESEAWCS_BasicInfoService; |
| | | using WIDESEAWCS_Common; |
| | |
| | | using WIDESEAWCS_ITaskInfoRepository; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob.DeviceBase; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_QuartzJob.Models; |
| | | using WIDESEAWCS_QuartzJob.Repository; |
| | | using WIDESEAWCS_QuartzJob.Service; |
| | | using WIDESEAWCS_QuartzJob.DTO; |
| | | |
| | | namespace WIDESEAWCS_TaskInfoService |
| | | { |
| | |
| | | task.CarType = item.CarType; |
| | | task.PVI = item.PVI; |
| | | task.NextAddress = item.NextAddress; |
| | | task.RoadwayNo = item.RoadwayNo; |
| | | |
| | | // 夿任å¡ç±»åæ¯å¦ä¸ºåºåºä»»å¡ |
| | | if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) |
| | |
| | | |
| | | if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting) |
| | | { |
| | | if(task.NextAddress == task.TargetAddress) |
| | | if (task.NextAddress == task.TargetAddress) |
| | | { |
| | | task.ModifyDate = DateTime.Now; |
| | | task.Modifier = "System"; |
| | |
| | | task.TaskState = nextStatus; |
| | | Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task); |
| | | task_Hty.TaskId = 0; |
| | | //task_Hty.CarType = task.CarType; |
| | | task_Hty.CarType = task.CarType; |
| | | task_Hty.PVI = task.PVI; |
| | | task_Hty.RoadwayNo = task.RoadwayNo; |
| | | BaseDal.DeleteData(task); |
| | | _taskHtyRepository.AddData(task_Hty); |
| | | |
| | | } |
| | | else |
| | | { |
| | |
| | | |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å åæºåºåºå®æ"); |
| | | } |
| | | |
| | | |
| | | //æä¸èèå¤ä¸ªåºåºå£ |
| | | } |
| | | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting) |
| | |
| | | |
| | | Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task); |
| | | task_Hty.TaskId = 0; |
| | | |
| | | BaseDal.DeleteData(task); |
| | | _taskHtyRepository.AddData(task_Hty); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å åæºå
¥åºå®æ"); |
| | |
| | | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) |
| | | { |
| | | task.TaskState = (int)TaskStatusGroup.Completed; |
| | | |
| | | Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task); |
| | | task_Hty.TaskId = 0; |
| | | |
| | | BaseDal.DeleteData(task); |
| | | _taskHtyRepository.AddData(task_Hty); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"å åæºç§»åºå®æ"); |
| | |
| | | |
| | | if (station.stationModel == "1") //ç´éæ¨¡å¼ |
| | | { |
| | | //todo BDC02è¿ç¹ çæ¶ç»å® |
| | | var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); |
| | | var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; |
| | | var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.HZPassTZ)?.ConfigValue; |
| | | if (wmsBase == null || requestTask == null) |
| | | { |
| | | throw new InvalidOperationException("WMS IP æªé
ç½®"); |
| | | } |
| | | var wmsIpAddrss = wmsBase + requestTask; |
| | | |
| | | var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = palletcode, Roadways = station.Roadway, area = station.stationArea, Position = station.stationChildCode, PVI = pvi }.ToJsonString()); |
| | | WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); |
| | | if (!content.Status) |
| | | { |
| | | throw new Exception(content.Message); |
| | | } |
| | | conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.Spare6, 2, station.stationChildCode); |
| | | conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.AllowRelease, 1, station.stationChildCode); |
| | | } |
| | |
| | | _taskService.UpdateTaskStatusToNext(task); |
| | | } |
| | | } |
| | | //else |
| | | //{ |
| | | // conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.AllowRelease, 12, station.stationChildCode); |
| | | //} |
| | | } |
| | | } |
| | | //var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); |
| | | //var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; |
| | | //var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestInboundRoadWayNo)?.ConfigValue; |
| | | //if (wmsBase == null || requestTask == null) |
| | | //{ |
| | | // throw new InvalidOperationException("WMS IP æªé
ç½®"); |
| | | //} |
| | | //var wmsIpAddrss = wmsBase + requestTask; |
| | | |
| | | //var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = palletcode, Roadways = station.Roadway, area = station.stationArea, Position = station.stationChildCode, PVI = pvi }.ToJsonString()); |
| | | //WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); |
| | | //if (!content.Status) |
| | | //{ |
| | | // return; |
| | | //} |
| | | |
| | | ////çæ¶æåæº ç´é人æ¶è£
-2 å
¥åº-3 |
| | | //conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.Spare6, 3, station.stationChildCode); |
| | | //conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.Spare5, 5, station.stationChildCode); |
| | | //conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.AllowRelease, 1, station.stationChildCode); |
| | | } |
| | | |
| | | //DeviceProtocolDetailDTO? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == station.stationChildCode && x.ProtocalDetailValue == request.ToString()); |
| | | |
| | | //if (deviceProtocolDetails != null) |
| | | //{ |
| | | // MethodInfo? method = GetType().GetMethod(deviceProtocolDetails.ProtocolDetailType); |
| | | // if (method != null) |
| | | // { |
| | | // method.Invoke(this, new object[] { conveyorLine, conveyorLine, station }); |
| | | // } |
| | | //} |
| | | |
| | | //ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(station.stationChildCode); |
| | | //command.PVI.Replace("/0", "").Replace("\"\\u0010\\u000f", ""); |
| | | //command.CarColor.Replace("/0", ""); |
| | | //command.CarType.Replace("/0", ""); |
| | | //command.CarCate.Replace("/0", ""); |
| | | //command.CatSkyWindow.Replace("/0", ""); |
| | | |
| | | //DeviceProtocolDetailDTO? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == station.stationChildCode && x.ProtocalDetailValue == command.Request.ToString()); |
| | | |
| | | ////x.DeviceProParamName == nameof(ConveyorLineTaskCommand.ConveyorLineSingal) |
| | | //if (deviceProtocolDetails != null) |
| | | //{ |
| | | // MethodInfo? method = GetType().GetMethod(deviceProtocolDetails.ProtocolDetailType); |
| | | // if (method != null) |
| | | // { |
| | | // method.Invoke(this, new object[] { conveyorLine, command, station }); |
| | | // } |
| | | //} |
| | | #region è°ç¨äºä»¶æ»çº¿éç¥å端 |
| | | |
| | | //var tokenInfos = _cacheService.Get<List<UserInfo>>("Cache_UserToken"); |
| | |
| | | } |
| | | } |
| | | |
| | | if (station.stationType == 1) //å
¥åºå£ |
| | | if (station.stationType == 1 ) //å
¥åºå£ |
| | | { |
| | | var requestInbound = conveyorLine.GetValue<ConveyorLineDBName, bool>(ConveyorLineDBName.EntApply, station.stationChildCode); |
| | | if (requestInbound) |
| | |
| | | } |
| | | } |
| | | |
| | | if (station.stationType == 3) |
| | | if (station.stationType == 3) //RB043ç²¾æç¹ |
| | | { |
| | | var requestFolw = conveyorLine.GetValue<ConveyorLineDBName, bool>(ConveyorLineDBName.EntApply, station.stationChildCode); |
| | | if (requestFolw) |
| | |
| | | //var pvi = conveyorLine.GetValue<ConveyorLineDBName, string>(ConveyorLineDBName.PVI, station.stationChildCode); |
| | | |
| | | WebResponseContent response = _taskService.RequestRoadWayTask(palletcode.ToString(), palletcode.ToString(), station).Result; |
| | | if (!response.Status) |
| | | if (response.Status) |
| | | { |
| | | var task = _taskService.QueryBarCodeConveyorLineTask(palletcode.ToString(), station.stationChildCode); |
| | | if (task != null) |
| | | { |
| | | var stationInfo = _stationManagerRepository.QueryFirst(x => x.stationChildCode == task.NextAddress); |
| | | conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.Spare6, Convert.ToInt16(stationInfo.stationTCLocation), station.stationChildCode); |
| | | Thread.Sleep(200); |
| | | //conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.Spare5, 3, station.stationChildCode); |
| | | conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.AllowRelease, 1, station.stationChildCode); |
| | | |
| | | _taskService.UpdateTaskStatusToNext(task); |
| | | } |
| | | } |
| | | conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.AllowRelease, 1, station.stationChildCode); |
| | | //else |
| | | //{ |
| | | // conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.AllowRelease, 1, station.stationChildCode); |
| | | //} |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | if (station.stationType == 6) //ç©ºæ»æ©å
¥åºå£ |
| | | { |
| | | var requestInbound = conveyorLine.GetValue<ConveyorLineDBName, bool>(ConveyorLineDBName.EntApply, station.stationChildCode); |
| | | if (requestInbound) |
| | | { |
| | | var palletcode = conveyorLine.GetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.SkidNo, station.stationChildCode); |
| | | //var pvi = conveyorLine.GetValue<ConveyorLineDBName, string>(ConveyorLineDBName.PVI, station.stationChildCode); |
| | | |
| | | //_taskService.QueryBarCodeConveyorLineTask(); |
| | | var task = _taskService.QueryExecutingTaskByBarcode(palletcode.ToString(), station.stationChildCode); |
| | | if (task != null) |
| | | { |
| | | _taskService.UpdateTaskStatusToNext(task); |
| | | conveyorLine.SetValue<ConveyorLineDBName, Int16>(ConveyorLineDBName.AllowRelease, 1, station.stationChildCode); |
| | | } |
| | | else |
| | | { |
| | | continue; |
| | | //妿¾ä¸å°å¯¹åºå
¥åºä»»å¡ï¼åæ ¹æ®æç PVIç³è¯·å
¥åº |
| | | //WebResponseContent response = _taskService.RequestTask(palletcode.ToString(), pvi, station).Result; |
| | | //if (!response.Status) |
| | | //{ |
| | | // continue; |
| | | //} |
| | | } |
| | | } |
| | | } |
| | | |
| | | #region æ ¹æ®åè®®è¯»åæ¹æ¡ |
| | | //DeviceProtocolDetailDTO? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == station.stationChildCode && x.ProtocalDetailValue == request.ToString()); |
| | | |
| | |
| | | if (flag && value != null && value is STK commonStackerCrane) |
| | | { |
| | | List<string> childCodes = commonStackerCrane.DeviceProDTOs.GroupBy(d => d.DeviceChildCode).Select(g => g.Key).ToList(); |
| | | childCodes = new List<string> { "SC01", "SC03", "SC05", "SC07" }; //æµè¯ä½¿ç¨ |
| | | Parallel.For(0, childCodes.Count, (i, state) => |
| | | { |
| | | //ConsoleHelper.WriteColorLine($"ã{childCodes[i]}ãæ¶é´ã{DateTime.Now}ããã{Thread.CurrentThread.ManagedThreadId}ã", ConsoleColor.Magenta); |
| | |
| | | |
| | | Thread.Sleep(500); |
| | | WebResponseContent responseContent = SendStackerTask(commonStackerCrane, task, childCodes[i]); |
| | | if(responseContent.Status) |
| | | if (responseContent.Status) |
| | | { |
| | | _taskService.UpdateTaskStatusToNext(task.TaskNum); |
| | | } |
| | |
| | | { |
| | | //return task; |
| | | |
| | | var stationList = _stationManagerRepository.QueryData(x => x.stationType == 2 && x.Roadway == task.Roadway); |
| | | //var stationList = _stationManagerRepository.QueryData(x => x.stationType == 2 && x.Roadway == task.Roadway); |
| | | |
| | | //foreach (var item in stationList) |
| | | //{ |
| | |
| | | { |
| | | return responseContent.Error(ex.Message); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | |
| | | Dt_Task task = null; |
| | | if (station.stationChildCode == "TC05") |
| | | { |
| | | //var executeTaks = _taskRepository.QueryData(x => (x.Roadway == "SC02" || x.Roadway == "SC04") && x.TaskState <= (int)TaskOutStatusEnum.SC_OutFinish).OrderBy(x => x.CreateDate).FirstOrDefault(); |
| | | //var executeTaks = _taskRepository.QueryData(x => (x.Roadway == "SC02" || x.Roadway == "SC04") && x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting).OrderBy(x => x.CreateDate).FirstOrDefault(); |
| | | |
| | | var leftTask = _taskRepository.QueryData(x => (x.Roadway == "SC02" || x.Roadway == "SC04") && x.TaskState <= (int)TaskOutStatusEnum.SC_OutFinish).OrderBy(x => x.CreateDate).FirstOrDefault(); |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | let extension = { |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | | gridHeader: '', |
| | | gridBody: '', |
| | | gridFooter: '', |
| | | //æ°å»ºãç¼è¾å¼¹åºæ¡æ©å±ç»ä»¶ |
| | | modelHeader: '', |
| | | modelBody: '', |
| | | modelFooter: '' |
| | | }, |
| | | tableAction: '', //æå®æå¼ 表çæé(è¿éå¡«å表å,é»è®¤ä¸ç¨å¡«å) |
| | | buttons: { view: [], box: [], detail: [] }, //æ©å±çæé® |
| | | methods: { |
| | | //ä¸é¢è¿äºæ¹æ³å¯ä»¥ä¿çä¹å¯ä»¥å é¤ |
| | | onInit() { //æ¡æ¶åå§åé
ç½®åï¼ |
| | | //示ä¾ï¼å¨æé®çæå颿·»å ä¸ä¸ªæé® |
| | | // this.buttons.unshift({ //ä¹å¯ä»¥ç¨pushæè
spliceæ¹æ³æ¥ä¿®æ¹buttonsæ°ç» |
| | | // name: 'æé®', //æé®åç§° |
| | | // icon: 'el-icon-document', //æé®å¾æ vue2çæ¬è§iviewææ¡£iconï¼vue3çæ¬è§element uiææ¡£icon(注æä¸æ¯element pulsææ¡£) |
| | | // type: 'primary', //æé®æ ·å¼vue2çæ¬è§iviewææ¡£buttonï¼vue3çæ¬è§element uiææ¡£button |
| | | // onClick: function () { |
| | | // this.$Message.success('ç¹å»äºæé®'); |
| | | // } |
| | | // }); |
| | | |
| | | //示ä¾ï¼è®¾ç½®ä¿®æ¹æ°å»ºãç¼è¾å¼¹åºæ¡å段æ ç¾çé¿åº¦ |
| | | this.boxOptions.labelWidth = 150; |
| | | }, |
| | | onInited() { |
| | | //æ¡æ¶åå§åé
ç½®å |
| | | //妿è¦é
ç½®æç»è¡¨,卿¤æ¹æ³æä½ |
| | | //this.detailOptions.columns.forEach(column=>{ }); |
| | | }, |
| | | searchBefore(param) { |
| | | //ç颿¥è¯¢å,å¯ä»¥ç»param.wheresæ·»å æ¥è¯¢åæ° |
| | | //è¿åfalseï¼åä¸ä¼æ§è¡æ¥è¯¢ |
| | | return true; |
| | | }, |
| | | searchAfter(result) { |
| | | //æ¥è¯¢åï¼resultè¿åçæ¥è¯¢æ°æ®,å¯ä»¥å¨æ¾ç¤ºå°è¡¨æ ¼åå¤çè¡¨æ ¼çå¼ |
| | | return true; |
| | | }, |
| | | addBefore(formData) { |
| | | //æ°å»ºä¿ååformData为对象ï¼å
æ¬æç»è¡¨ï¼å¯ä»¥ç»ç»è¡¨å设置å¼ï¼èªå·±è¾åºçformDataçå¼ |
| | | return true; |
| | | }, |
| | | updateBefore(formData) { |
| | | //ç¼è¾ä¿ååformData为对象ï¼å
æ¬æç»è¡¨ãå é¤è¡çId |
| | | return true; |
| | | }, |
| | | rowClick({ row, column, event }) { |
| | | //æ¥è¯¢çé¢ç¹å»è¡äºä»¶ |
| | | // this.$refs.table.$refs.table.toggleRowSelection(row); //åå»è¡æ¶éä¸å½åè¡; |
| | | }, |
| | | modelOpenAfter(row) { |
| | | //ç¹å»ç¼è¾ãæ°å»ºæé®å¼¹åºæ¡åï¼å¯ä»¥å¨æ¤å¤åé»è¾ï¼å¦ï¼ä»åå°è·åæ°æ® |
| | | //(1)夿æ¯ç¼è¾è¿æ¯æ°å»ºæä½ï¼ this.currentAction=='Add'; |
| | | //(2)ç»å¼¹åºæ¡è®¾ç½®é»è®¤å¼ |
| | | //(3)this.editFormFields.åæ®µ='xxx'; |
| | | //妿éè¦ç»ä¸ææ¡è®¾ç½®é»è®¤å¼ï¼è¯·éåthis.editFormOptionsæ¾å°å段é
置对åºdata屿§çkeyå¼ |
| | | //ç䏿就æè¾åºçï¼console.log(this.editFormOptions) |
| | | } |
| | | } |
| | | }; |
| | | export default extension; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | let extension = { |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | | gridHeader: '', |
| | | gridBody: '', |
| | | gridFooter: '', |
| | | //æ°å»ºãç¼è¾å¼¹åºæ¡æ©å±ç»ä»¶ |
| | | modelHeader: '', |
| | | modelBody: '', |
| | | modelFooter: '' |
| | | }, |
| | | tableAction: '', //æå®æå¼ 表çæé(è¿éå¡«å表å,é»è®¤ä¸ç¨å¡«å) |
| | | buttons: { view: [], box: [], detail: [] }, //æ©å±çæé® |
| | | methods: { |
| | | //ä¸é¢è¿äºæ¹æ³å¯ä»¥ä¿çä¹å¯ä»¥å é¤ |
| | | onInit() { |
| | | //æ¡æ¶åå§åé
ç½®åï¼ |
| | | //设置æ¥è¯¢çé¢å¼¹åºæ¡çlabel宽度 |
| | | this.boxOptions.labelWidth = 50; |
| | | |
| | | }, |
| | | onInited() { |
| | | //æ¡æ¶åå§åé
ç½®å |
| | | //妿è¦é
ç½®æç»è¡¨,卿¤æ¹æ³æä½ |
| | | //this.detailOptions.columns.forEach(column=>{ }); |
| | | }, |
| | | searchBefore(param) { |
| | | //ç颿¥è¯¢å,å¯ä»¥ç»param.wheresæ·»å æ¥è¯¢åæ° |
| | | //è¿åfalseï¼åä¸ä¼æ§è¡æ¥è¯¢ |
| | | return true; |
| | | }, |
| | | searchAfter(result) { |
| | | //æ¥è¯¢åï¼resultè¿åçæ¥è¯¢æ°æ®,å¯ä»¥å¨æ¾ç¤ºå°è¡¨æ ¼åå¤çè¡¨æ ¼çå¼ |
| | | return true; |
| | | }, |
| | | addBefore(formData) { |
| | | //æ°å»ºä¿ååformData为对象ï¼å
æ¬æç»è¡¨ï¼å¯ä»¥ç»ç»è¡¨å设置å¼ï¼èªå·±è¾åºçformDataçå¼ |
| | | return true; |
| | | }, |
| | | updateBefore(formData) { |
| | | //ç¼è¾ä¿ååformData为对象ï¼å
æ¬æç»è¡¨ãå é¤è¡çId |
| | | return true; |
| | | }, |
| | | addrow() { |
| | | return true; |
| | | }, |
| | | rowClick({ row, column, event }) { |
| | | //æ¥è¯¢çé¢ç¹å»è¡äºä»¶ |
| | | //this.$refs.table.$refs.table.toggleRowSelection(row); //åå»è¡æ¶éä¸å½åè¡; |
| | | }, |
| | | modelOpenAfter(row) { |
| | | //ç¹å»ç¼è¾ãæ°å»ºæé®å¼¹åºæ¡åï¼å¯ä»¥å¨æ¤å¤åé»è¾ï¼å¦ï¼ä»åå°è·åæ°æ® |
| | | //(1)夿æ¯ç¼è¾è¿æ¯æ°å»ºæä½ï¼ this.currentAction=='Add'; |
| | | //(2)ç»å¼¹åºæ¡è®¾ç½®é»è®¤å¼ |
| | | //(3)this.editFormFields.åæ®µ='xxx'; |
| | | //妿éè¦ç»ä¸ææ¡è®¾ç½®é»è®¤å¼ï¼è¯·éåthis.editFormOptionsæ¾å°å段é
置对åºdata屿§çkeyå¼ |
| | | //ç䏿就æè¾åºçï¼console.log(this.editFormOptions) |
| | | } |
| | | } |
| | | }; |
| | | export default extension; |
| | |
| | | } |
| | | } |
| | | |
| | | let confirmTask=this.buttons.find(x=>x.value=='confirmTask'); |
| | | if(confirmTask){ |
| | | confirmTask.onClick=function(){ |
| | | let row = this.$refs.table.getSelected() //è·åéä¸çè¡ |
| | | if (row <= 0) { |
| | | //å¦ææ²¡æéä¸è¡ |
| | | this.$Message.error('è¯·éæ©ä¸è¡æ°æ®') |
| | | return |
| | | } |
| | | let taskNum = row[0].taskNum |
| | | this.http.get(`/api/Task/confirmTask?taskNum=${taskNum}`, {}, "æ£å¨ç¡®è®¤å®æä»»å¡").then((res) => { |
| | | //示ä¾ï¼è°ç¨åå°æ¥å£ |
| | | if (res.status) { |
| | | this.$Message.success('确认任å¡å®æ'); |
| | | this.refresh(); |
| | | } else { |
| | | this.$Message.error(res.message) //é误æç¤º |
| | | this.refresh(); |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | // let confirmTask=this.buttons.find(x=>x.value=='confirmTask'); |
| | | // if(confirmTask){ |
| | | // confirmTask.onClick=function(){ |
| | | // let row = this.$refs.table.getSelected() //è·åéä¸çè¡ |
| | | // if (row <= 0) { |
| | | // //å¦ææ²¡æéä¸è¡ |
| | | // this.$Message.error('è¯·éæ©ä¸è¡æ°æ®') |
| | | // return |
| | | // } |
| | | // let taskNum = row[0].taskNum |
| | | // this.http.get(`/api/Task/confirmTask?taskNum=${taskNum}`, {}, "æ£å¨ç¡®è®¤å®æä»»å¡").then((res) => { |
| | | // //示ä¾ï¼è°ç¨åå°æ¥å£ |
| | | // if (res.status) { |
| | | // this.$Message.success('确认任å¡å®æ'); |
| | | // this.refresh(); |
| | | // } else { |
| | | // this.$Message.error(res.message) //é误æç¤º |
| | | // this.refresh(); |
| | | // } |
| | | // }) |
| | | // } |
| | | // } |
| | | //示ä¾ï¼å¨æé®çæå颿·»å ä¸ä¸ªæé® |
| | | // this.buttons.unshift({ |
| | | // //ä¹å¯ä»¥ç¨pushæè
spliceæ¹æ³æ¥ä¿®æ¹buttonsæ°ç» |
| | |
| | | } |
| | | }, |
| | | { |
| | | path: '/Eliteselection', |
| | | name: 'Eliteselection', |
| | | component: () => import('@/views/widesea_wms/stock/Eliteselection.vue'), |
| | | meta: { |
| | | keepAlive: false |
| | | } |
| | | }, |
| | | { |
| | | path: '/Dt_PaintingOrderInfo', |
| | | name: 'Dt_PaintingOrderInfo', |
| | | component: () => import('@/views/widesea_wms/OrderInfo/Dt_PaintingOrderInfo.vue'), |
| | |
| | | path: '/VV_MesLockInfo', |
| | | name: 'VV_MesLockInfo', |
| | | component: () => import('@/views/widesea_wms/stock/VV_MesLockInfo.vue'), |
| | | // meta: { |
| | | // keepAlive: true |
| | | // } |
| | | meta: { |
| | | keepAlive: false |
| | | } |
| | | },{ |
| | | path: '/Dt_StockQuantityChangeRecord', |
| | | name: 'Dt_StockQuantityChangeRecord', |
| | | component: () => import('@/views/widesea_wms/stock/Dt_StockQuantityChangeRecord.vue'), |
| | | meta: { |
| | | keepAlive: false |
| | | } |
| | | },{ |
| | | path: '/Dt_PassPointRecord', |
| | | name: 'Dt_PassPointRecord', |
| | | component: () => import('@/views/widesea_wms/basicinfo/Dt_PassPointRecord.vue'), |
| | | meta: { |
| | | keepAlive: false |
| | | } |
| | | }, |
| | | ] |
| | | export default tables |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <!-- |
| | | *Authorï¼jxx |
| | | *Contactï¼283591387@qq.com |
| | | *代ç ç±æ¡æ¶çæ,任使´æ¹é½å¯è½å¯¼è´è¢«ä»£ç çæå¨è¦ç |
| | | *ä¸å¡è¯·å¨@/extension/widesea_wms/basicinfo/PointStackerRelation.jsæ¤å¤ç¼å |
| | | --> |
| | | <template> |
| | | <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields" |
| | | :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions" |
| | | :table="table" :extend="extend"> |
| | | </view-grid> |
| | | </template> |
| | | <script> |
| | | import extend from "@/extension/widesea_wms/basicinfo/Dt_PassPointRecord.js"; |
| | | import { ref, defineComponent } from "vue"; |
| | | export default defineComponent({ |
| | | setup() { |
| | | const table = ref({ |
| | | key: 'PointID', |
| | | footer: "Foots", |
| | | cnName: 'MESè¿ç¹è®°å½', |
| | | name: 'Dt_PassPointRecord', |
| | | url: "/Dt_PassPointRecord/", |
| | | sortName: "Id" |
| | | }); |
| | | const editFormFields = ref({ |
| | | |
| | | }); |
| | | const editFormOptions = ref([ |
| | | |
| | | ]); |
| | | const searchFormFields = ref({}); |
| | | const searchFormOptions = ref([ |
| | | [ |
| | | { "title": "ç«å°ç¼å·", "field": "pointCode", type: "text" }, |
| | | { "title": "å åæºç¼å·", "field": "stackerCode", type: "text" }, |
| | | ], |
| | | [ |
| | | { "title": "å
³ç³»çæ¹å", "field": "direction", type: "text" }, |
| | | { "title": "å
³ç³»çåºå", "field": "area", type: "text" }, |
| | | ] |
| | | ]); |
| | | const columns = ref([{ field: 'id', title: '主é®', type: 'int', sort: true, hidden: true, width: 110, readonly: true, require: true, align: 'left' }, |
| | | { field: 'palletCode', title: 'æ»æ©å·', type: 'string', sort: true, width: 110, require: true, align: 'left', sort: true }, |
| | | { field: 'position', title: 'è¿ç¹', type: 'string', sort: true, width: 110, align: 'left' }, |
| | | { field: 'pvi', title: 'PVI', type: 'string', sort: true, width: 110, align: 'left' }, |
| | | { field: 'passPointTime', title: 'è¿ç¹æ¶é´', type: 'int', sort: true, width: 110, align: 'left' }, |
| | | { field: 'lineCode', title: 'è¡å·', type: 'int', sort: true, width: 110, align: 'left' }, |
| | | { field: 'content', title: '请æ±åæ°', type: 'int', sort: true, width: 250, align: 'left' }, |
| | | { field: 'creater', title: 'å建人', type: 'string', sort: true, width: 110, align: 'left' }, |
| | | { field: 'createDate', title: 'å建æ¶é´', type: 'datetime', sort: true, width: 150, align: 'left', sort: true }, |
| | | { field: 'modifier', title: 'ä¿®æ¹äºº', type: 'string', sort: true, width: 100, hidden: true, align: 'left' }, |
| | | { field: 'modifyDate', title: 'ä¿®æ¹æ¶é´', type: 'datetime', sort: true, width: 150, hidden: true, align: 'left', sort: true },]) |
| | | const detail = ref({ |
| | | cnName: "#detailCnName", |
| | | table: "#detailTable", |
| | | columns: [], |
| | | sortName: "", |
| | | key: "" |
| | | }); |
| | | return { |
| | | table, |
| | | extend, |
| | | editFormFields, |
| | | editFormOptions, |
| | | searchFormFields, |
| | | searchFormOptions, |
| | | columns, |
| | | detail, |
| | | }; |
| | | }, |
| | | }); |
| | | </script> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <!-- |
| | | *Authorï¼jxx |
| | | *Contactï¼283591387@qq.com |
| | | *代ç ç±æ¡æ¶çæ,任使´æ¹é½å¯è½å¯¼è´è¢«ä»£ç çæå¨è¦ç |
| | | *ä¸å¡è¯·å¨@/extension/widesea_wms/invoices/Dt_InboundOrder.jsæ¤å¤ç¼å |
| | | --> |
| | | <template> |
| | | <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields" |
| | | :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions" |
| | | :table="table" :extend="extend"> |
| | | </view-grid> |
| | | </template> |
| | | <script> |
| | | import extend from "@/extension/widesea_wms/stock/Dt_StockQuantityChangeRecord.js"; |
| | | import { ref, defineComponent } from "vue"; |
| | | export default defineComponent({ |
| | | setup() { |
| | | const table = ref({ |
| | | key: 'id', |
| | | footer: "Foots", |
| | | cnName: 'åºååå¨è®°å½', |
| | | name: 'StockQuantityChangeRecord', |
| | | url: "/StockQuantityChangeRecord/", |
| | | sortName: "id" |
| | | }); |
| | | const editFormFields = ref({ |
| | | }); |
| | | const editFormOptions = ref([ |
| | | ]); |
| | | const searchFormFields = ref({ |
| | | |
| | | }); |
| | | const searchFormOptions = ref([ |
| | | [ |
| | | { "title": "æ»æ©å·", "field": "palletCode", type: "text" }, |
| | | { "title": "åºä½å·", "field": "locationCode", type: "text" }, |
| | | { "title": "åå¨ç±»å", "field": "changeType", type: "select", dataKey: "ChangeType", data: [] }, |
| | | { "title": "ä»»å¡å·", "field": "taskNum", type: "text" }, |
| | | ], |
| | | [ |
| | | { "title": "PVI", "field": "pvi", type: "string" }, |
| | | { "title": "车身ID", "field": "carBodyID", type: "int" }, |
| | | { "title": "å··éå·", "field": "roadwayNo", type: "int" }, |
| | | { "title": "åºåID", "field": "stockId", type: "int" }, |
| | | ], |
| | | [ |
| | | { "title": "ç½è½¦èº«ç©æå·", "field": "biwMaterialCode", type: "int" }, |
| | | { "title": "车身类å", "field": "carType", type: "select", dataKey: "BodyType", data: [] }, |
| | | { "title": "å·¥åç±»å", "field": "workOrderType", type: "select", dataKey: "OrderType", data: [] }, |
| | | { "title": "车å", "field": "vehicleCharacteristic", type: "string" }, |
| | | ], |
| | | [ |
| | | |
| | | { "title": "å½©è½¦èº«ç©æå·", "field": "pbMaterial", type: "string" }, |
| | | { "title": "车身é¢è²", "field": "carBodyCharacteristic", type: "string" }, |
| | | { "title": "天çªç¹å¾", "field": "skylightCharacteristic", type: "string" }, |
| | | ] |
| | | ]); |
| | | const columns = ref([ |
| | | { field: 'id', title: '主é®ID', type: 'int', width: 110, readonly: true, hidden: true, require: true, align: 'left' }, |
| | | { field: 'stockId', title: 'åºåID', type: 'string', width: 90, align: 'left' }, |
| | | { field: 'taskNum', title: 'ä»»å¡å·', type: 'string', width: 60, align: 'left' }, |
| | | { field: 'changeType', title: 'åå¨ç±»å', type: 'int', width: 90, align: 'left', bind: { key: "ChangeType", data: [] } }, |
| | | { field: 'palletCode', title: 'æ»æ©å·', type: 'string', width: 75, align: 'left' }, |
| | | { field: 'locationCode', title: 'åºä½å·', type: 'int', width: 120, align: 'left' }, |
| | | { field: 'roadwayNo', title: 'å··éå·', type: 'string', width: 60, align: 'left' }, |
| | | { field: 'pvi', title: 'PVIç ', type: 'string', width: 120, align: 'left' }, |
| | | { field: 'carBodyID', title: '车身ID', type: 'int', width: 90, align: 'left' }, |
| | | { field: 'vehicleCharacteristic', title: '车å', type: 'string', width: 75, align: 'left' }, |
| | | { field: 'carType', title: '车身类å', type: 'int', width: 80, align: 'left', bind: { key: "BodyType", data: [] } }, |
| | | { field: 'workOrderType', title: 'å·¥åç±»å', type: 'string', width: 100, align: 'left', bind: { key: "OrderType", data: [] } }, |
| | | { field: 'skylightCharacteristic', title: '天çªç¹å¾', type: 'string', width: 75, align: 'left' }, |
| | | { field: 'carBodyCharacteristic', title: '车身é¢è²', type: 'string', width: 75, align: 'left' }, |
| | | { field: 'biwMaterialCode', title: 'ç½è½¦èº«ç©æå·', type: 'string', width: 120, align: 'left' }, |
| | | { field: 'pbMaterial', title: 'å½©è½¦èº«ç©æå·', type: 'string', width: 120, align: 'left' }, |
| | | { field: 'biwInPassTime', title: 'çè£
ä¸çº¿æ¶é´', type: 'datetime', width: 130, align: 'left' }, |
| | | { field: 'createDate', title: 'å建æ¶é´', type: 'datetime', sort: true, width: 100, align: 'left' }, |
| | | ]); |
| | | |
| | | const detail = ref({ |
| | | cnName: "#detailCnName", |
| | | table: "#detailTable", |
| | | columns: [], |
| | | sortName: "", |
| | | key: "" |
| | | }); |
| | | return { |
| | | table, |
| | | extend, |
| | | editFormFields, |
| | | editFormOptions, |
| | | searchFormFields, |
| | | searchFormOptions, |
| | | columns, |
| | | detail, |
| | | }; |
| | | }, |
| | | }); |
| | | </script> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="container"> |
| | | <div class="header"> |
| | | <div class="title">ç²¾ææ¾ç¤º</div> |
| | | <div class="legend-section"> |
| | | <div class="legend-item"> |
| | | <div class="legend-label">èæç²¾æ</div> |
| | | <span class="color-box color-green"></span> |
| | | </div> |
| | | <div class="legend-item"> |
| | | <div class="legend-label">èæç²¾ææ ä»»å¡</div> |
| | | <span class="color-box color-lightgreen"></span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="content-wrapper"> |
| | | <div class="content"> |
| | | <div v-if="displayItems.length === 0" class="no-data"> |
| | | <div class="no-data-text">ææ æ°æ®</div> |
| | | </div> |
| | | <div v-for="(item, index) in displayItems" :key="index" class="box"> |
| | | <div class="box-content color-green" v-if="item.lockStatue == 1" @click="mouseClick(item.pvi)"> |
| | | <div class="text-line">{{ item.pvi }}</div> |
| | | <div class="text-line">{{ item.vehicleCharacteristic }}</div> |
| | | <div class="text-line">{{ item.carBodyCharacteristic }}</div> |
| | | </div> |
| | | <div class="box-content color-lightgreen" v-else-if="item.lockStatue == 0" |
| | | @click="mouseClick(item.pvi)"> |
| | | <div class="text-line">{{ item.pvi }}</div> |
| | | <div class="text-line">{{ item.vehicleCharacteristic }}</div> |
| | | <div class="text-line">{{ item.carBodyCharacteristic }}</div> |
| | | </div> |
| | | <div class="box-content color-font" v-else-if="item.lockStatue != 1 || item.lockStatue != 0" |
| | | @click="mouseClick(item.pvi)"> |
| | | <div class="text-line">{{ item.pvi }}</div> |
| | | <div class="text-line">{{ item.vehicleCharacteristic }}</div> |
| | | <div class="text-line">{{ item.carBodyCharacteristic }}</div> |
| | | </div> |
| | | <div class="box-index">{{ index + 1 }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <el-dialog v-model="dialogVisible" title="è½¦èº«ä¿¡æ¯æ¥ç" :before-close="handleClose"> |
| | | <div v-if="stockInfos.message" class="no-data-message">{{ stockInfos.message }}</div> |
| | | <el-form v-else ref="$form" :model="stockInfos" label-position="left" label-width="120px" size="medium"> |
| | | <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> |
| | | <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="åºä½ç¼å·ï¼"> |
| | | <j-el-description :value="stockInfos.locationCode" type="primary" ellipsis></j-el-description> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="PVI:"> |
| | | <j-el-description :value="stockInfos.pvi" type="primary" ellipsis></j-el-description> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20" type="flex" justify="start" align="top" tag="div"> |
| | | <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="车å:"> |
| | | <j-el-description :value="stockInfos.vehicleCharacteristic" type="primary" |
| | | ellipsis></j-el-description> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="车身类å"> |
| | | <j-el-description :value="getcarType(stockInfos.carType)" type="primary" |
| | | ellipsis></j-el-description> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20" type="flex" justify="start" align="top" tag="div" style="margin-bottom: 10px;"> |
| | | <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="å·¥åç±»å:"> |
| | | <j-el-description :value="getOrderType(stockInfos.workOrderType)" type="primary" |
| | | ellipsis></j-el-description> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="天çªç¹å¾:"> |
| | | <j-el-description :value="stockInfos.skylightCharacteristic" type="primary" |
| | | ellipsis></j-el-description> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20" type="flex" justify="start" align="top" tag="div" style="margin-bottom: 10px;"> |
| | | <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="车身é¢è²:"> |
| | | <j-el-description :value="stockInfos.carBodyCharacteristic" type="primary" |
| | | ellipsis></j-el-description> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="ç½è½¦èº«ç©æå·:"> |
| | | <j-el-description :value="stockInfos.biwMaterialCode" type="primary" ellipsis></j-el-description> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20" type="flex" justify="start" align="top" tag="div" style="margin-bottom: 10px;"> |
| | | <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="å½©è½¦èº«ç©æå·:"> |
| | | <j-el-description :value="stockInfos.pbMaterial" type="primary" ellipsis></j-el-description> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> |
| | | <el-form-item label="çè£
ä¸çº¿æ¶é´:"> |
| | | <j-el-description :value="stockInfos.biwInPassTime" type="primary" ellipsis></j-el-description> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-divider /> |
| | | </el-form> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">åæ¶</el-button> |
| | | <el-button type="primary" @click="dialogVisible = false"> |
| | | 确认 |
| | | </el-button> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import JElDescription from "./JElDescription"; |
| | | export default { |
| | | data() { |
| | | return { |
| | | mesLockInfos: [], |
| | | timer: null, |
| | | dialogVisible: false, |
| | | stockInfos: { |
| | | |
| | | }, |
| | | } |
| | | }, |
| | | computed: { |
| | | displayItems() { |
| | | return this.mesLockInfos.slice(0, 50) |
| | | } |
| | | }, |
| | | methods: { |
| | | GetViewData() { |
| | | this.http.post('/api/VV_MesLockInfo/GetMesLockInfo', '', 'æ¥è¯¢ä¸').then((x) => { |
| | | this.mesLockInfos = x.data |
| | | }) |
| | | }, |
| | | mouseClick(pvi) { |
| | | this.http.post('/api/VV_MesLockInfo/GetStockInfo?PVI=' + pvi, '', 'æ¥è¯¢ä¸').then((x) => { |
| | | if (x.data === null) { |
| | | this.stockInfos = { message: 'æ åºåæ°æ®' }; |
| | | } else { |
| | | this.stockInfos = x.data; |
| | | } |
| | | this.dialogVisible = true; |
| | | }) |
| | | }, |
| | | getcarType(carType) { |
| | | if (carType == 1) return 'ç½è½¦èº«' |
| | | if (carType == 2) return '彩车身' |
| | | if (carType == 3) return 'ç©ºæ»æ©' |
| | | }, |
| | | getOrderType(OrderType) { |
| | | if (OrderType == 1) return 'å½å
éå®è½¦' |
| | | if (OrderType == 2) return 'å½é
éå®è½¦' |
| | | if (OrderType == 3) return 'å±è½¦' |
| | | if (OrderType == 4) return 'ä¼ä¸ç¨è½¦' |
| | | if (OrderType == 6) return 'è¯å¶è½¦' |
| | | if (OrderType == 7) return 'SKD/CKD车' |
| | | if (OrderType == 8) return 'ç¹æ®é
置车' |
| | | if (OrderType == 11) return 'éªè¯è®¢å' |
| | | }, |
| | | startTimer() { |
| | | // æ¸
é¤å¯è½åå¨çæ§å®æ¶å¨ |
| | | if (this.timer) { |
| | | clearInterval(this.timer) |
| | | } |
| | | // 设置æ°ç宿¶å¨ï¼æ¯30ç§å·æ°ä¸æ¬¡ |
| | | this.timer = setInterval(() => { |
| | | this.GetViewData() |
| | | }, 30000) |
| | | }, |
| | | stopTimer() { |
| | | if (this.timer) { |
| | | clearInterval(this.timer) |
| | | this.timer = null |
| | | } |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.GetViewData() |
| | | this.startTimer() |
| | | }, |
| | | beforeUnmount() { |
| | | this.stopTimer() |
| | | }, |
| | | components: { JElDescription } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .header { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 16px 24px; |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | border-bottom: none; |
| | | box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); |
| | | } |
| | | |
| | | .title { |
| | | font-size: 24px; |
| | | font-weight: 700; |
| | | color: #ffffff; |
| | | margin-left: 0; |
| | | text-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); |
| | | letter-spacing: 0.5px; |
| | | } |
| | | |
| | | .legend-section { |
| | | display: flex; |
| | | gap: 24px; |
| | | align-items: center; |
| | | } |
| | | |
| | | .legend-item { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 8px; |
| | | padding: 6px 12px; |
| | | background-color: rgba(255, 255, 255, 0.2); |
| | | border-radius: 20px; |
| | | backdrop-filter: blur(10px); |
| | | } |
| | | |
| | | .legend-label { |
| | | font-size: 15px; |
| | | color: #ffffff; |
| | | font-weight: 500; |
| | | letter-spacing: 0.3px; |
| | | } |
| | | |
| | | .color-box { |
| | | display: inline-block; |
| | | width: 18px; |
| | | height: 18px; |
| | | border-radius: 4px; |
| | | border: 2px solid rgba(255, 255, 255, 0.3); |
| | | box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); |
| | | } |
| | | |
| | | .color-green { |
| | | background-color: #167C07; |
| | | } |
| | | |
| | | .color-lightgreen { |
| | | background-color: #9dc88d; |
| | | } |
| | | |
| | | .color-font { |
| | | background-color: #6ec0f0; |
| | | } |
| | | |
| | | .box-content.color-green { |
| | | background-color: #167C07; |
| | | border-radius: 8px; |
| | | padding: 12px; |
| | | margin: -12px; |
| | | margin-bottom: -12px; |
| | | height: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .box-content.color-lightgreen { |
| | | background-color: #9dc88d; |
| | | border-radius: 8px; |
| | | padding: 12px; |
| | | margin: -12px; |
| | | margin-bottom: -12px; |
| | | height: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .box-content.color-font { |
| | | background-color: #6ec0f0; |
| | | border-radius: 8px; |
| | | padding: 12px; |
| | | margin: -12px; |
| | | margin-bottom: -12px; |
| | | height: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .content-wrapper { |
| | | padding: 24px; |
| | | height: calc(100vh - 72px); |
| | | overflow-y: auto; |
| | | background: linear-gradient(180deg, #f8f9fa 0%, #e9ecef 100%); |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .content { |
| | | display: grid; |
| | | grid-template-columns: repeat(10, 1fr); |
| | | gap: 12px; |
| | | width: 100%; |
| | | } |
| | | |
| | | .box { |
| | | width: 100%; |
| | | height: 100%; |
| | | border: none; |
| | | border-radius: 8px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | padding: 12px; |
| | | font-size: 13px; |
| | | font-weight: 500; |
| | | color: #333; |
| | | cursor: pointer; |
| | | background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%); |
| | | transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); |
| | | box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); |
| | | position: relative; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .box-content { |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-around; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .text-line { |
| | | line-height: 1.6; |
| | | text-align: center; |
| | | white-space: nowrap; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | color: #ffffff; |
| | | font-weight: 600; |
| | | font-size: 13px; |
| | | letter-spacing: 0.3px; |
| | | } |
| | | |
| | | .box-index { |
| | | text-align: center; |
| | | margin-top: 8px; |
| | | font-size: 16px; |
| | | color: #756767; |
| | | font-weight: 800; |
| | | padding-top: 8px; |
| | | border-top: 1px solid rgba(255, 255, 255, 0.2); |
| | | letter-spacing: 0.5px; |
| | | } |
| | | |
| | | .color-box { |
| | | display: inline-block; |
| | | width: 20px; |
| | | height: 20px; |
| | | margin-right: 15px; |
| | | border-radius: 3px; |
| | | } |
| | | |
| | | /* æ æ°æ®æç¤ºæ ·å¼ */ |
| | | .no-data-message { |
| | | text-align: center; |
| | | padding: 40px 20px; |
| | | font-size: 16px; |
| | | color: #909399; |
| | | background-color: #f4f4f5; |
| | | border-radius: 4px; |
| | | } |
| | | |
| | | /* 页颿 æ°æ®æç¤ºæ ·å¼ */ |
| | | .no-data { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | width: 100%; |
| | | height: 100%; |
| | | min-height: 300px; |
| | | position: absolute; |
| | | top: 50%; |
| | | left: 50%; |
| | | transform: translate(-50%, -50%); |
| | | } |
| | | |
| | | .no-data-icon { |
| | | font-size: 80px; |
| | | margin-bottom: 20px; |
| | | opacity: 0.6; |
| | | } |
| | | |
| | | .no-data-text { |
| | | font-size: 18px; |
| | | color: #909399; |
| | | font-weight: 500; |
| | | } |
| | | </style> |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="j-description wordwrap" :class="class__" :style="style__">{{value}}</div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: "j-el-description", |
| | | inject: { |
| | | elForm: { |
| | | default: '' |
| | | }, |
| | | elFormItem: { |
| | | default: '' |
| | | } |
| | | }, |
| | | |
| | | props: { |
| | | value: [String, Number], // å
容 |
| | | type: { // ä¸»é¢ |
| | | type: String, |
| | | validator(value) { |
| | | return ['primary', 'success', 'info', 'warning', 'danger'].indexOf(value) !== -1; |
| | | } |
| | | }, |
| | | size: { // 尺寸 |
| | | type: String, |
| | | validator(value) { |
| | | return ['medium', 'small', 'mini'].indexOf(value) !== -1; |
| | | } |
| | | }, |
| | | height: [String, Number], // éå¶é«åº¦ |
| | | ellipsis: Boolean, // çç¥å· |
| | | }, |
| | | |
| | | computed: { |
| | | elFormItemSize__() { |
| | | return (this.elFormItem || {}).elFormItemSize; |
| | | }, |
| | | size__() { |
| | | return this.size || this.elFormItemSize__ || (this.$ELEMENT || {}).size; |
| | | }, |
| | | class__() { |
| | | let _class = []; |
| | | if (this.type) { |
| | | _class.push(this.type); |
| | | } |
| | | if (this.size__) { |
| | | _class.push(this.size__); |
| | | } |
| | | if (this.height) { |
| | | _class.push('scroll'); |
| | | } |
| | | if (this.ellipsis) { |
| | | _class.push('ellipsis'); |
| | | } |
| | | return _class; |
| | | }, |
| | | style__() { |
| | | let _style = {}; |
| | | if (!this.ellipsis && this.height) { |
| | | if (isNaN(this.height)) { |
| | | _style.height = this.height; |
| | | } else { |
| | | _style.height = this.height + 'px'; |
| | | } |
| | | } |
| | | return _style; |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .j-description { |
| | | min-height: 40px; |
| | | line-height: 40px; |
| | | padding: 0 50%; |
| | | } |
| | | |
| | | /*大å°*/ |
| | | .j-description.medium { |
| | | min-height: 36px; |
| | | line-height: 36px; |
| | | } |
| | | |
| | | .j-description.small { |
| | | min-height: 32px; |
| | | line-height: 32px; |
| | | } |
| | | |
| | | .j-description.mini { |
| | | min-height: 28px; |
| | | line-height: 28px; |
| | | } |
| | | |
| | | /*æ»å¨*/ |
| | | .j-description.scroll { |
| | | overflow-x: hidden; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .j-description.scroll::-webkit-scrollbar { |
| | | width: 9px; |
| | | height: 9px; |
| | | background: #F3F3F3; |
| | | } |
| | | |
| | | .j-description.scroll::-webkit-scrollbar-thumb { |
| | | border: 1px solid #ffffff; |
| | | border-radius: 6px; |
| | | background: #c9c9c9; |
| | | } |
| | | |
| | | .j-description.scroll::-webkit-scrollbar-thumb:hover { |
| | | background: #b5b5b5; |
| | | } |
| | | |
| | | /*æ¢è¡*/ |
| | | .j-description.wordwrap { |
| | | table-layout: fixed; |
| | | word-break: break-all; |
| | | word-wrap: break-word; |
| | | } |
| | | |
| | | /*çç¥å·*/ |
| | | .j-description.ellipsis { |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | /*主é¢*/ |
| | | .j-description.primary { |
| | | background-color: #ecf5ff; |
| | | border: 1px solid #d9ecff; |
| | | color: #409eff; |
| | | } |
| | | |
| | | .j-description.success { |
| | | background-color: #f0f9eb; |
| | | border-color: #e1f3d8; |
| | | color: #67c23a; |
| | | } |
| | | |
| | | .j-description.info { |
| | | background-color: #f4f4f5; |
| | | border-color: #e9e9eb; |
| | | color: #909399; |
| | | } |
| | | |
| | | .j-description.warning { |
| | | background-color: #fdf6ec; |
| | | border-color: #faecd8; |
| | | color: #e6a23c; |
| | | } |
| | | |
| | | .j-description.danger { |
| | | background-color: #fef0f0; |
| | | border-color: #fde2e2; |
| | | color: #f56c6c; |
| | | } |
| | | </style> |
| | |
| | | <div class="content-wrapper"> |
| | | <!-- æ§å¶é¢æ¿åºå --> |
| | | <div class="control-panel"> |
| | | <div class="form-group"> |
| | | <!-- <div class="form-group"> |
| | | <label>åºåï¼</label> |
| | | <el-select size="mini" filterable v-model="Area.areaCode" placeholder="è¯·éæ©" class="full-width"> |
| | | <el-option v-for="item in slectData" :value="item.areaCode" :label="item.areaName" |
| | | :key="item.areaName"></el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> --> |
| | | |
| | | <!-- <div class="form-group"> |
| | | <label>æï¼</label> |
| | |
| | | </el-select> |
| | | </div> --> |
| | | |
| | | <el-button type="success" class="refresh-btn" @click="GetViewData"> |
| | | å·æ° |
| | | </el-button> |
| | | <el-button type="success" class="refresh-btn" @click="GetViewData"> å·æ° </el-button> |
| | | |
| | | <div class="legend-section"> |
| | | <h4>说æ</h4> |
| | |
| | | </div> |
| | | </div> |
| | | <!-- æ¬æµ®æç¤ºæ¡ --> |
| | | <div v-if="showTooltipFlag" class="location-tooltip" :style="{ |
| | | left: tooltipPosition.x + 'px', |
| | | top: tooltipPosition.y + 'px', |
| | | }"> |
| | | <div v-if="currentLocation"> |
| | | <p><strong>è´§ä½å·:</strong>{{ currentLocation.locationCode }}</p> |
| | | <!-- <p> |
| | | <strong>è´§ä½æåå±:</strong> {{ currentLocation.row }}æ{{ |
| | | currentLocation.layer |
| | | }}å{{ currentLocation.layer }}å± |
| | | </p> --> |
| | | <p><strong>ç¶æ:</strong> {{ getStatusText(currentLocation) }}</p> |
| | | <p> |
| | | <strong>ç¦ç¨:</strong> |
| | | {{ currentLocation.location_lock == 2 ? "æ¯" : "å¦" }} |
| | | </p> |
| | | <!-- <p v-if="currentLocation.location_state > 0"> |
| | | <strong>ç©æç¼ç :</strong> |
| | | {{ currentLocation.material_code || "æ " }} |
| | | </p> |
| | | <p v-if="currentLocation.location_state > 0"> |
| | | <strong>æ°é:</strong> {{ currentLocation.quantity || "æ " }} |
| | | </p> --> |
| | | <transition name="tooltip-fade"> |
| | | <div v-if="showTooltipFlag" class="location-tooltip" :style="{ |
| | | left: tooltipPosition.x + 'px', |
| | | top: tooltipPosition.y + 'px' |
| | | }"> |
| | | <div v-if="currentLocation" class="tooltip-content"> |
| | | <div class="tooltip-header"> |
| | | <h4>{{ currentLocation.locationCode }}</h4> |
| | | <span class="status-badge" :class="getStatusClass(currentLocation)"> |
| | | {{ getStatusText(currentLocation) }} |
| | | </span> |
| | | </div> |
| | | <div class="tooltip-body"> |
| | | <div class="info-section"> |
| | | <h5>åºæ¬ä¿¡æ¯</h5> |
| | | <div class="info-row"> |
| | | <span class="label">è´§ä½å·:</span> |
| | | <span class="value">{{ currentLocation.locationCode }}</span> |
| | | </div> |
| | | <div class="info-row"> |
| | | <span class="label">ç¶æ:</span> |
| | | <span class="value status-highlight" :class="getStatusClass(currentLocation)"> |
| | | {{ getStatusText(currentLocation) }} |
| | | </span> |
| | | </div> |
| | | <div class="info-row"> |
| | | <span class="label">ç¦ç¨:</span> |
| | | <span class="value" :class="{ 'disabled': currentLocation.location_lock == 2 }"> |
| | | {{ currentLocation.location_lock == 2 ? 'æ¯' : 'å¦' }} |
| | | </span> |
| | | </div> |
| | | </div> |
| | | <div v-if="currentLocation.stockInfo != null" class="info-section"> |
| | | <h5>åºåä¿¡æ¯</h5> |
| | | <div class="info-row"> |
| | | <span class="label">PVI:</span> |
| | | <span class="value">{{ currentLocation.stockInfo.pvi }}</span> |
| | | </div> |
| | | <div class="info-row"> |
| | | <span class="label">æ»æ©å·:</span> |
| | | <span class="value">{{ currentLocation.stockInfo.palletCode }}</span> |
| | | </div> |
| | | <div class="info-row"> |
| | | <span class="label">å··éå·:</span> |
| | | <span class="value">{{ currentLocation.stockInfo.roadwayNo }}</span> |
| | | </div> |
| | | <div class="info-row"> |
| | | <span class="label">车å:</span> |
| | | <span class="value">{{ currentLocation.stockInfo.vehicleCharacteristic }}</span> |
| | | </div> |
| | | <div class="info-row"> |
| | | <span class="label">å·¥åç±»å:</span> |
| | | <span class="value">{{ currentLocation.stockInfo.workOrderType }}</span> |
| | | </div> |
| | | <div class="info-row"> |
| | | <span class="label">车身é¢è²:</span> |
| | | <span class="value">{{ currentLocation.stockInfo.carBodyCharacteristic }}</span> |
| | | </div> |
| | | <div class="info-row"> |
| | | <span class="label">车身类å:</span> |
| | | <span class="value">{{ getcarType(currentLocation.stockInfo.carType) }}</span> |
| | | </div> |
| | | <div class="info-row"> |
| | | <span class="label">å½©è½¦èº«ç©æå·:</span> |
| | | <span class="value">{{ currentLocation.stockInfo.pbMaterial }}</span> |
| | | </div> |
| | | <div class="info-row"> |
| | | <span class="label">ç½è½¦èº«ç©æå·:</span> |
| | | <span class="value">{{ currentLocation.stockInfo.biwMaterialCode }}</span> |
| | | </div> |
| | | <div class="info-row"> |
| | | <span class="label">çè£
ä¸çº¿æ¶é´:</span> |
| | | <span class="value">{{ currentLocation.stockInfo.biwInPassTime }}</span> |
| | | </div> |
| | | <div class="info-row"> |
| | | <span class="label">天çªç¹å¾:</span> |
| | | <span class="value">{{ currentLocation.stockInfo.skylightCharacteristic }}</span> |
| | | </div> |
| | | <div class="info-row"> |
| | | <span class="label">æå¨éå®:</span> |
| | | <span class="value">{{ getlockOrder(currentLocation.stockInfo.lockOrder) }}</span> |
| | | </div> |
| | | <div class="info-row"> |
| | | <span class="label">éå®ç¶æ:</span> |
| | | <span class="value">{{ getstockStatus(currentLocation.stockInfo.stockStatus) }}</span> |
| | | </div> |
| | | <div class="info-row"> |
| | | <span class="label">ä»»å¡ç¶æ:</span> |
| | | <span class="value">{{ gettaskStatus(currentLocation.stockInfo.taskStatus) }}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </transition> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { ElButton } from "element-plus"; |
| | | import { ElButton } from 'element-plus' |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | slectData: [], |
| | | scList: [], |
| | | Area: { areaName: "", areaCode: "" }, |
| | | mian_height: "", |
| | | Area: { areaName: '', areaCode: '' }, |
| | | mian_height: '', |
| | | infoMsg: [ |
| | | { bgcolor: "lightgreen", msg: "空货ä½", state: 0 }, |
| | | { bgcolor: "orange", msg: "æè´§", state: 2 }, |
| | | { bgcolor: "#2BB3D5", msg: "éå®", state: 1 }, |
| | | { bgcolor: "#ccc", msg: "ç¦ç¨", state: 9 }, |
| | | // { bgcolor: "red", msg: "ç¦ç¨", state: 3 }, |
| | | { bgcolor: "blue", msg: "åºåº", state: "3" }, |
| | | { bgcolor: "pink", msg: "å
¥åº", state: "4" }, |
| | | { bgcolor: 'lightgreen', msg: '空货ä½', state: 0 }, |
| | | { bgcolor: 'orange', msg: 'æè´§', state: 2 }, |
| | | { bgcolor: '#2BB3D5', msg: 'éå®', state: 1 }, |
| | | { bgcolor: '#ccc', msg: 'ç¦ç¨', state: 9 }, |
| | | { bgcolor: 'blue', msg: 'åºåº', state: '3' }, |
| | | { bgcolor: 'pink', msg: 'å
¥åº', state: '4' } |
| | | ], |
| | | locationData: [], |
| | | showTooltipFlag: false, |
| | | currentLocation: null, |
| | | tooltipPosition: { x: 0, y: 0 }, |
| | | }; |
| | | tooltipPosition: { x: 20, y: 20 } |
| | | } |
| | | }, |
| | | computed: { |
| | | GetBgColor(col) { |
| | | return (col) => { |
| | | var bgColor =''; |
| | | var bgColor = '' |
| | | //ä¼å
æ¾ç¤ºç¦ç¨ç¶æ |
| | | if (col.location_lock == 2) { |
| | | this.infoMsg.forEach((el) => { |
| | | if (el.state == col.location_lock) { |
| | | bgColor = "#ccc"; |
| | | bgColor = '#ccc' |
| | | } |
| | | }); |
| | | } |
| | | else { |
| | | }) |
| | | } else { |
| | | this.infoMsg.forEach((el) => { |
| | | if (el.state == col.location_state) { |
| | | bgColor = el.bgcolor; |
| | | if (el.state == col.location_state) { |
| | | bgColor = el.bgcolor |
| | | } |
| | | }); |
| | | }) |
| | | } |
| | | return bgColor; |
| | | }; |
| | | }, |
| | | return bgColor |
| | | } |
| | | } |
| | | }, |
| | | watch: { |
| | | //忢åºåº |
| | | "Area.areaCode"(newValue, oldValue) { |
| | | this.scList = []; |
| | | 'Area.areaCode'(newValue, oldValue) { |
| | | this.scList = [] |
| | | this.slectData.forEach((e) => { |
| | | if (e.areaCode == newValue) { |
| | | this.Area.areaCode = e.areaCode[0]; |
| | | this.Area.areaCode = e.areaCode[0] |
| | | //this.scList = e.tunnel; |
| | | } |
| | | }); |
| | | this.GetViewData(); |
| | | }, |
| | | }) |
| | | this.GetViewData() |
| | | } |
| | | }, |
| | | methods: { |
| | | GetViewData() { |
| | | var _this = this; |
| | | this.http |
| | | .post("/api/LocationInfo/GetLocationStatu", _this.Area, "æ¥è¯¢ä¸") |
| | | .then((x) => { |
| | | _this.locationData = x; |
| | | console.log("å端è¿å:", x); |
| | | }); |
| | | var _this = this |
| | | this.http.post('/api/LocationInfo/GetLocationStatu', _this.Area, 'æ¥è¯¢ä¸').then((x) => { |
| | | _this.locationData = x |
| | | console.log('å端è¿å:', x) |
| | | }) |
| | | }, |
| | | // 忢æ |
| | | SCChange() { |
| | | this.GetViewData(); |
| | | this.GetViewData() |
| | | }, |
| | | showTooltip(location, event) { |
| | | this.currentLocation = location; |
| | | this.showTooltipFlag = true; |
| | | this.currentLocation = location |
| | | this.showTooltipFlag = true |
| | | |
| | | // 设置æç¤ºæ¡ä½ç½®ï¼ç¨å¾®åç§»é¿å
鮿¡é¼ æ |
| | | this.tooltipPosition = { |
| | | x: event.clientX + 10, |
| | | y: event.clientY + 10, |
| | | }; |
| | | // è·åæç¤ºæ¡çé¢ä¼°å®½åº¦ |
| | | const tooltipWidth = 300 |
| | | const tooltipHeight = 400 |
| | | const offsetX = 15 |
| | | const offsetY = 15 |
| | | |
| | | // è®¡ç®æç¤ºæ¡ä½ç½®ï¼ä¼å
æ¾ç¤ºå¨é¼ æ 䏿¹ |
| | | let x = event.clientX + offsetX |
| | | let y = event.clientY - tooltipHeight - offsetY |
| | | |
| | | // 妿䏿¹ç©ºé´ä¸è¶³ï¼åæ¾ç¤ºå¨ä¸æ¹ |
| | | if (y < 10) { |
| | | y = event.clientY + offsetY |
| | | } |
| | | |
| | | // æ£æ¥å³ä¾§è¾¹ç |
| | | if (x + tooltipWidth > window.innerWidth) { |
| | | x = event.clientX - tooltipWidth - offsetX |
| | | } |
| | | |
| | | // ç¡®ä¿ä¸ä¼è¶
åºå·¦è¾¹çåä¸è¾¹ç |
| | | x = Math.max(10, x) |
| | | y = Math.max(10, y) |
| | | |
| | | this.tooltipPosition = { x, y } |
| | | }, |
| | | |
| | | hideTooltip() { |
| | | this.showTooltipFlag = false; |
| | | this.currentLocation = null; |
| | | this.showTooltipFlag = false |
| | | this.currentLocation = null |
| | | }, |
| | | |
| | | getStatusText(location) { |
| | | // if (location.location_lock === 3) return "ç¦ç¨"; |
| | | if (location.location_state === '0') return "空货ä½"; |
| | | if (location.location_state === '1') return "éå®"; |
| | | if (location.location_state === '3') return "æè´§éå®"; |
| | | if (location.location_state === '4') return "空é²éå®"; |
| | | if (location.location_state === '2') return "æè´§"; |
| | | if (location.location_state === '0') return '空货ä½' |
| | | if (location.location_state === '1') return 'éå®' |
| | | if (location.location_state === '3') return 'æè´§éå®' |
| | | if (location.location_state === '4') return '空é²éå®' |
| | | if (location.location_state === '2') return 'æè´§' |
| | | // if (location.location_state > 0 && location.location_state < 100) |
| | | // return "éå®"; |
| | | return "å
¶ä»"; |
| | | return 'å
¶ä»' |
| | | }, |
| | | getStatusClass(location) { |
| | | if (location.location_state === '0') return 'status-empty' |
| | | if (location.location_state === '1') return 'status-locked' |
| | | if (location.location_state === '3') return 'status-locked-with-stock' |
| | | if (location.location_state === '4') return 'status-locked-empty' |
| | | if (location.location_state === '2') return 'status-with-stock' |
| | | return 'status-other' |
| | | }, |
| | | getcarType(carType) { |
| | | if (carType == 1) return 'ç½è½¦èº«' |
| | | if (carType == 2) return '彩车身' |
| | | if (carType == 3) return 'ç©ºæ»æ©' |
| | | }, |
| | | getlockOrder(lockOrder) { |
| | | if (lockOrder == 1) return 'å·²é车' |
| | | if (lockOrder == 0) return 'æªæå¨' |
| | | }, |
| | | getstockStatus(stockStatus) { |
| | | if (stockStatus == 1) return 'å·²éå®' |
| | | if (stockStatus == 0) return 'æªéå®' |
| | | }, |
| | | gettaskStatus(taskStatus) { |
| | | if (taskStatus == 1) return 'ä»»å¡ä¸' |
| | | if (taskStatus == 0) return 'æ ä»»å¡' |
| | | } |
| | | }, |
| | | mounted() { |
| | | var mainHeight = document.getElementById("vol-main"); |
| | | this.mian_height = mainHeight.offsetHeight - 40 + "px"; |
| | | var _this = this; |
| | | var mainHeight = document.getElementById('vol-main') |
| | | this.mian_height = mainHeight.offsetHeight - 40 + 'px' |
| | | var _this = this |
| | | //å è½½ä¸æé项 |
| | | this.http.get("/api/dt_AreaInfo/GetAreaInfo", {}, "æ¥è¯¢ä¸").then((x) => { |
| | | console.log(x); |
| | | _this.slectData = x; |
| | | this.http.get('/api/dt_AreaInfo/GetAreaInfo', {}, 'æ¥è¯¢ä¸').then((x) => { |
| | | console.log(x) |
| | | _this.slectData = x |
| | | //å 载第ä¸ä¸ªåºåï¼ç¬¬ä¸æ |
| | | _this.Area.areaCode = _this.slectData[0].areaCode; |
| | | _this.Area.areaCode = _this.slectData[0].areaCode |
| | | //_this.scList = _this.slectData[0].tunnel; |
| | | }); |
| | | }) |
| | | }, |
| | | components: { ElButton }, |
| | | }; |
| | | components: { ElButton } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | |
| | | position: fixed; |
| | | z-index: 9999; |
| | | background-color: white; |
| | | border: 1px solid #ddd; |
| | | border-radius: 4px; |
| | | padding: 10px; |
| | | box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); |
| | | border: 1px solid #e4e7ed; |
| | | border-radius: 8px; |
| | | box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); |
| | | pointer-events: none; |
| | | max-width: 250px; |
| | | max-width: 320px; |
| | | min-width: 280px; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .location-tooltip p { |
| | | margin: 5px 0; |
| | | .tooltip-content { |
| | | display: flex; |
| | | flex-direction: column; |
| | | } |
| | | |
| | | .tooltip-header { |
| | | padding: 12px 16px; |
| | | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | | color: white; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | } |
| | | |
| | | .tooltip-header h4 { |
| | | margin: 0; |
| | | font-size: 15px; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .status-badge { |
| | | padding: 4px 10px; |
| | | border-radius: 12px; |
| | | font-size: 12px; |
| | | font-weight: 500; |
| | | background-color: rgba(255, 255, 255, 0.2); |
| | | backdrop-filter: blur(4px); |
| | | } |
| | | |
| | | .status-empty { |
| | | background-color: rgba(144, 238, 144, 0.9); |
| | | } |
| | | |
| | | .status-locked { |
| | | background-color: rgba(43, 179, 213, 0.9); |
| | | } |
| | | |
| | | .status-locked-with-stock { |
| | | background-color: rgba(255, 165, 0, 0.9); |
| | | } |
| | | |
| | | .status-locked-empty { |
| | | background-color: rgba(255, 182, 193, 0.9); |
| | | } |
| | | |
| | | .status-with-stock { |
| | | background-color: rgba(255, 99, 71, 0.9); |
| | | } |
| | | |
| | | .status-other { |
| | | background-color: rgba(153, 153, 153, 0.9); |
| | | } |
| | | |
| | | .tooltip-body { |
| | | padding: 16px; |
| | | } |
| | | |
| | | .info-section { |
| | | margin-bottom: 16px; |
| | | } |
| | | |
| | | .info-section:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | |
| | | .info-section h5 { |
| | | margin: 0 0 10px 0; |
| | | font-size: 13px; |
| | | line-height: 1.4; |
| | | color: #909399; |
| | | text-transform: uppercase; |
| | | letter-spacing: 0.5px; |
| | | padding-bottom: 6px; |
| | | border-bottom: 1px solid #ebeef5; |
| | | } |
| | | |
| | | .location-tooltip strong { |
| | | display: inline-block; |
| | | width: 70px; |
| | | color: #666; |
| | | .info-row { |
| | | display: flex; |
| | | margin-bottom: 8px; |
| | | align-items: center; |
| | | } |
| | | </style> |
| | | |
| | | .info-row:last-child { |
| | | margin-bottom: 0; |
| | | } |
| | | |
| | | .info-row .label { |
| | | flex-shrink: 0; |
| | | width: 100px; |
| | | color: #606266; |
| | | font-size: 13px; |
| | | } |
| | | |
| | | .info-row .value { |
| | | flex: 1; |
| | | color: #303133; |
| | | font-size: 13px; |
| | | word-break: break-all; |
| | | } |
| | | |
| | | .info-row .value.disabled { |
| | | color: #f56c6c; |
| | | font-weight: 500; |
| | | background-color: #fef0f0; |
| | | padding: 2px 8px; |
| | | border-radius: 4px; |
| | | } |
| | | |
| | | .info-row .value.status-highlight { |
| | | font-weight: 600; |
| | | padding: 2px 8px; |
| | | border-radius: 4px; |
| | | } |
| | | |
| | | .status-highlight.status-empty { |
| | | color: #67c23a; |
| | | background-color: #f0f9ff; |
| | | } |
| | | |
| | | .status-highlight.status-locked { |
| | | color: #409eff; |
| | | background-color: #ecf5ff; |
| | | } |
| | | |
| | | .status-highlight.status-locked-with-stock { |
| | | color: #e6a23c; |
| | | background-color: #fdf6ec; |
| | | } |
| | | |
| | | .status-highlight.status-locked-empty { |
| | | color: #f56c6c; |
| | | background-color: #fef0f0; |
| | | } |
| | | |
| | | .status-highlight.status-with-stock { |
| | | color: #67c23a; |
| | | background-color: #f0f9ff; |
| | | } |
| | | |
| | | .status-highlight.status-other { |
| | | color: #909399; |
| | | background-color: #f4f4f5; |
| | | } |
| | | |
| | | /* æ·»å è¿æ¸¡å¨ç» */ |
| | | .tooltip-fade-enter-active, |
| | | .tooltip-fade-leave-active { |
| | | transition: opacity 0.2s, transform 0.2s; |
| | | } |
| | | |
| | | .tooltip-fade-enter-from, |
| | | .tooltip-fade-leave-to { |
| | | opacity: 0; |
| | | transform: translateY(5px); |
| | | } |
| | | </style> |
| | |
| | | { field: 'roadway', title: 'å··é', type: 'string', width: 110, align: 'left' }, |
| | | { field: 'taskType', title: 'ä»»å¡ç±»å', type: 'int', width: 110, align: 'left', bind: { key: "TaskType", data: [] } }, |
| | | { field: 'taskState', title: 'ä»»å¡ç¶æ', type: 'int', width: 150, align: 'left', bind: { key: "TaskStatus", data: [] } }, |
| | | { field: 'carType', title: '车å', type: 'int', width: 150, align: 'left'}, |
| | | { field: 'carType', title: '车身类å', type: 'int', width: 150, align: 'left'}, |
| | | { field: 'sourceAddress', title: 'èµ·å§ä½ç½®', type: 'string', width: 110, align: 'left' }, |
| | | { field: 'targetAddress', title: 'ç®æ ä½ç½®', type: 'string', width: 110, align: 'left' }, |
| | | { field: 'grade', title: 'ä¼å
级', type: 'int', width: 60, align: 'left' }, |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace WIDESEA_Core.Enums |
| | | { |
| | | public enum StockChangeType |
| | | { |
| | | /// <summary> |
| | | /// å
¥åº |
| | | /// </summary> |
| | | [Description("å
¥åº")] |
| | | Inbound, |
| | | |
| | | /// <summary> |
| | | /// åºåº |
| | | /// </summary> |
| | | [Description("åºåº")] |
| | | Outbound, |
| | | |
| | | /// <summary> |
| | | /// æå¨è°æ´ |
| | | /// </summary> |
| | | [Description("æå¨è°æ´")] |
| | | ManualAdjust, |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace WIDESEA_DTO.Basic |
| | | { |
| | | public class MesLockDTO |
| | | { |
| | | public string pvi { get; set; } |
| | | public string vehicleCharacteristic { get; set; } |
| | | public string carBodyCharacteristic { get; set; } |
| | | public int lockStatue { get; set; } |
| | | } |
| | | } |
| ÎļþÃû´Ó ÏîÄ¿´úÂë/WMS/WMSServer/WIDESEA_Common/LocationAreaView/LocationView.cs ÐÞ¸Ä |
| | |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_Common |
| | | namespace WIDESEA_DTO.Location |
| | | { |
| | | public class LocationLayer |
| | | { |
| | | public int index { get; set; } |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// |
| | |
| | | /// éå®ç¶æ |
| | | /// </summary> |
| | | public string location_lock { get; set; } |
| | | |
| | | public VV_StockInfo stockInfo { get; set; } |
| | | } |
| | | |
| | | } |
| | |
| | | public string PalletCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å··éå· |
| | | /// å··éæº |
| | | /// </summary> |
| | | public string RoadWay { get; set; } |
| | | |
| | |
| | | /// </summary> |
| | | public int Grade { get; set; } |
| | | |
| | | /// <summary> |
| | | /// PVIç |
| | | /// </summary> |
| | | public string pvi { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 车身类å |
| | | /// </summary> |
| | | public int CarType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å··éå· |
| | | /// </summary> |
| | | public string RoadwayNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// (ä¸ä¸ä½ç½®)å
¥åºå£ |
| | | /// </summary> |
| | | public string NextAddress { get; set; } |
| | | } |
| | | } |
| | |
| | | WebResponseContent RequstCarBodyInfo(RequestTaskDto json); |
| | | |
| | | /// <summary> |
| | | /// æ¶æ»æåæºå
¥åºè¯·æ± |
| | | /// çæ¶/æ¶æ»æåæºå
¥åºè¯·æ± |
| | | /// </summary> |
| | | /// <param name="json"></param> |
| | | /// <returns></returns> |
| | | WebResponseContent RequestInboundRoadWayNo(RequestTaskDto json); |
| | | |
| | | /// <summary> |
| | | /// ç©ºæ»æ©å
¥åº |
| | | /// </summary> |
| | | /// <param name="json"></param> |
| | | /// <returns></returns> |
| | | WebResponseContent RequestEmptyInboundRoadWayNo(RequestTaskDto json); |
| | | |
| | | /// <summary> |
| | | /// æ¶è£
ç´éæ»è£
|
| | |
| | | WebResponseContent TZPassZZ(RequestTaskDto json); |
| | | |
| | | /// <summary> |
| | | /// çè£
è£
ç´éæ¶è£
|
| | | /// </summary> |
| | | /// <param name="json"></param> |
| | | /// <returns></returns> |
| | | WebResponseContent HZPassTZ(RequestTaskDto json); |
| | | |
| | | /// <summary> |
| | | /// æ¶æ»ç²¾æç¹ |
| | | /// </summary> |
| | | /// <param name="json"></param> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IRecordRepository |
| | | { |
| | | public interface IDt_PassPointRecordRepository : IRepository<Dt_PassPointRecord> |
| | | { |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IStorageBasicRepository |
| | | { |
| | | public interface IStockQuantityChangeRecordRepository : IRepository<Dt_StockQuantityChangeRecord> |
| | | { |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_DTO; |
| | | using WIDESEA_IRecordRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IRecordService |
| | | { |
| | | public interface IDt_PassPointRecordService : IService<Dt_PassPointRecord> |
| | | { |
| | | void AddPassPointRecord(PassPointInfo info, RequestTaskDto request); |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_IRecordRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_IStorageBasicService |
| | | { |
| | | public interface IStockQuantityChangeRecordService : IService<Dt_StockQuantityChangeRecord> |
| | | { |
| | | |
| | | void AddStockChangeRecord(VV_StockInfo stockInfo, StockChangeType changeType, int taskNum); |
| | | } |
| | | } |
| | |
| | | |
| | | public interface IVV_MesLockInfoService : IService<VV_MesLockInfo> |
| | | { |
| | | WebResponseContent GetMesLockInfo(); |
| | | |
| | | WebResponseContent GetStockInfo(string PVI); |
| | | } |
| | |
| | | WebResponseContent stockLock(object[] keys); |
| | | |
| | | WebResponseContent stockUnLock(object[] keys); |
| | | |
| | | } |
| | |
| | | public string? Roadway { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å¤ æ³¨:å··éå· |
| | | /// é»è®¤å¼: |
| | | ///</summary> |
| | | [SugarColumn(ColumnName = "RoadwayNo", ColumnDescription = "å··éå·")] |
| | | public string RoadwayNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å¤ æ³¨:ä»»å¡ç±»åï¼100 åºåº;çç¹åºåº 101; 102 忣åºåº;103 è´¨æ£åºåº;200 å
¥åº;çç¹å
¥åº 201;忣å
¥åº 202;è´¨æ£å
¥åº 203;ç§»åº 300;åºå
ç§»åº 301;åºå¤ç§»åº 302 ï¼ |
| | | /// é»è®¤å¼: |
| | | ///</summary> |
| | |
| | | public string? ErrorMessage { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 车å |
| | | /// 车身类å 1-ç½ 2-彩 3-空æ¬ç» |
| | | ///</summary> |
| | | [SugarColumn(ColumnName = "CarType", ColumnDescription = "车å")] |
| | | public int CarType { get; set; } |
| | |
| | | [ExporterHeader(DisplayName = "夿³¨")] |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "夿³¨")] |
| | | public string Remark { get; set; } |
| | | |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using Magicodes.ExporterAndImporter.Core; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.DB.Models; |
| | | |
| | | namespace WIDESEA_Model.Models |
| | | { |
| | | [SugarTable(nameof(Dt_PassPointRecord), "MESè¿ç¹è®°å½")] |
| | | public class Dt_PassPointRecord : BaseEntity |
| | | { |
| | | /// <summary> |
| | | /// ä¸»é® |
| | | /// </summary> |
| | | [ImporterHeader(Name = "主é®")] |
| | | [ExporterHeader(DisplayName = "主é®")] |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主é®")] |
| | | public int Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// PVIç |
| | | /// </summary> |
| | | [ImporterHeader(Name = "PVIç ")] |
| | | [ExporterHeader(DisplayName = "PVIç ")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "PVIç ")] |
| | | public string PVI { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ»æ©å· |
| | | /// </summary> |
| | | [ImporterHeader(Name = "æ»æ©å·")] |
| | | [ExporterHeader(DisplayName = "æ»æ©å·")] |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "æ»æ©å·")] |
| | | public string PalletCode { get; set; } |
| | | |
| | | [ImporterHeader(Name = "ç¹ä½")] |
| | | [ExporterHeader(DisplayName = "ç¹ä½")] |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "ç¹ä½")] |
| | | public string Position { get; set; } |
| | | |
| | | [ImporterHeader(Name = "线å·")] |
| | | [ExporterHeader(DisplayName = "线å·")] |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "线å·")] |
| | | public string lineCode { get; set; } |
| | | |
| | | [ImporterHeader(Name = "线å·")] |
| | | [ExporterHeader(DisplayName = "线å·")] |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "线å·")] |
| | | public string Content { get; set; } |
| | | |
| | | [ImporterHeader(Name = "è¿ç¹æ¶é´")] |
| | | [ExporterHeader(DisplayName = "è¿ç¹æ¶é´")] |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "è¿ç¹æ¶é´")] |
| | | public DateTime PassPointTime { get; set; } |
| | | |
| | | |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "夿³¨")] |
| | | public string Remark { get; set; } |
| | | |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "å¤ç¨")] |
| | | public string Spare1 { get; set; } |
| | | |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "å¤ç¨")] |
| | | public string Spare2 { get; set; } |
| | | |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "å¤ç¨")] |
| | | public string Spare3 { get; set; } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using Magicodes.ExporterAndImporter.Core; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.DB.Models; |
| | | |
| | | namespace WIDESEA_Model.Models |
| | | { |
| | | [SugarTable(nameof(Dt_StockQuantityChangeRecord), "åºååå¨ä¿¡æ¯è®°å½")] |
| | | public class Dt_StockQuantityChangeRecord : BaseEntity |
| | | { |
| | | /// <summary> |
| | | /// ä¸»é® |
| | | /// </summary> |
| | | [ImporterHeader(Name = "主é®")] |
| | | [ExporterHeader(DisplayName = "主é®")] |
| | | [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主é®")] |
| | | public int Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æå±å··é |
| | | /// </summary> |
| | | [ImporterHeader(Name = "æå±å··é")] |
| | | [ExporterHeader(DisplayName = "æå±å··é")] |
| | | [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "æå±å··é")] |
| | | public string RoadwayNo { get; set; } |
| | | |
| | | /// <summary> |
| | | /// è´§ä½ç¼å· |
| | | /// </summary> |
| | | [ImporterHeader(Name = "è´§ä½ç¼å·")] |
| | | [ExporterHeader(DisplayName = "è´§ä½ç¼å·")] |
| | | [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "è´§ä½ç¼å·")] |
| | | public string LocationCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 车身ID |
| | | /// </summary> |
| | | [ImporterHeader(Name = "车身ID")] |
| | | [ExporterHeader(DisplayName = "车身ID")] |
| | | [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "车身ID")] |
| | | public int carBodyID { get; set; } |
| | | /// <summary> |
| | | /// PVIç |
| | | /// </summary> |
| | | [ImporterHeader(Name = "PVIç ")] |
| | | [ExporterHeader(DisplayName = "PVIç ")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "PVIç ")] |
| | | public string PVI { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ»æ©å· |
| | | /// </summary> |
| | | [ImporterHeader(Name = "æ»æ©å·")] |
| | | [ExporterHeader(DisplayName = "æ»æ©å·")] |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "æ»æ©å·")] |
| | | public string PalletCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 车å |
| | | /// </summary> |
| | | [ImporterHeader(Name = "车å")] |
| | | [ExporterHeader(DisplayName = "车å")] |
| | | [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "车å")] |
| | | public string vehicleCharacteristic { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 车身类å 1-ç½ 2-彩 3-ç©ºæ»æ© |
| | | /// </summary> |
| | | [ImporterHeader(Name = "车身类å")] |
| | | [ExporterHeader(DisplayName = "车身类å")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "车身类å")] |
| | | public int CarType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 订åç±»å |
| | | /// </summary> |
| | | [ImporterHeader(Name = "订åç±»å")] |
| | | [ExporterHeader(DisplayName = "订åç±»å")] |
| | | [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "订åç±»å")] |
| | | public string workOrderType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 天çªç¹å¾ |
| | | /// </summary> |
| | | [ImporterHeader(Name = "天çªç¹å¾")] |
| | | [ExporterHeader(DisplayName = "天çªç¹å¾")] |
| | | [SugarColumn(IsNullable = true, Length = 40, ColumnDescription = "天çªç¹å¾")] |
| | | public string skylightCharacteristic { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 车身é¢è² |
| | | /// </summary> |
| | | [ImporterHeader(Name = "车身é¢è²")] |
| | | [ExporterHeader(DisplayName = "车身é¢è²")] |
| | | [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "车身é¢è²")] |
| | | public string carBodyCharacteristic { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ç½è½¦èº«ç©æå· |
| | | /// </summary> |
| | | [ImporterHeader(Name = "ç½è½¦èº«ç©æå·")] |
| | | [ExporterHeader(DisplayName = "ç½è½¦èº«ç©æå·")] |
| | | [SugarColumn(IsNullable = true, Length = 40, ColumnDescription = "ç½è½¦èº«ç©æå·")] |
| | | public string biwMaterialCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å½©è½¦èº«ç©æå· |
| | | /// </summary> |
| | | [ImporterHeader(Name = "å½©è½¦èº«ç©æå·")] |
| | | [ExporterHeader(DisplayName = "å½©è½¦èº«ç©æå·")] |
| | | [SugarColumn(IsNullable = true, Length = 40, ColumnDescription = "å½©è½¦èº«ç©æå·")] |
| | | public string pbMaterial { get; set; } |
| | | |
| | | /// <summary> |
| | | /// çè£
ä¸çº¿æ¶é´ |
| | | /// </summary> |
| | | [ImporterHeader(Name = "çè£
ä¸çº¿æ¶é´")] |
| | | [ExporterHeader(DisplayName = "çè£
ä¸çº¿æ¶é´")] |
| | | [SugarColumn(IsNullable = true, Length = 40, ColumnDescription = "çè£
ä¸çº¿æ¶é´")] |
| | | public DateTime? biwInPassTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿çç¶æ |
| | | /// </summary> |
| | | [ImporterHeader(Name = "ä¿çç¶æ")] |
| | | [ExporterHeader(DisplayName = "ä¿çç¶æ")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "ä¿çç¶æ")] |
| | | public int StayStatus { get; set; } |
| | | |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "åºåId")] |
| | | public int StockId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä»»å¡å· |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "ä»»å¡å·")] |
| | | public int? TaskNum { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åæ´ç±»å |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = false, ColumnDescription = "åå¨ç±»åï¼åºåºãå
¥åºãæå¨è°æ´...ï¼")] |
| | | public int ChangeType { get; set; } |
| | | |
| | | |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "夿³¨")] |
| | | public string Remark { get; set; } |
| | | |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "å¤ç¨")] |
| | | public string Spare1 { get; set; } |
| | | |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "å¤ç¨")] |
| | | public string Spare2 { get; set; } |
| | | |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "å¤ç¨")] |
| | | public string Spare3 { get; set; } |
| | | } |
| | | } |
| | |
| | | [ExporterHeader(DisplayName = "车身ID")] |
| | | [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "车身ID")] |
| | | public int carBodyID { get; set; } |
| | | |
| | | /// <summary> |
| | | /// PVIç |
| | | /// </summary> |
| | |
| | | public string PVI { get; set; } |
| | | |
| | | /// <summary> |
| | | /// RFID |
| | | /// </summary> |
| | | [ImporterHeader(Name = "RFID")] |
| | | [ExporterHeader(DisplayName = "RFID")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "RFID")] |
| | | public string RFID { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ»æ©å· |
| | | /// </summary> |
| | | [ImporterHeader(Name = "æ»æ©å·")] |
| | |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "宿æ¹å¼")] |
| | | public int FinishType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æºID |
| | | /// </summary> |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "宿æ¹å¼")] |
| | | public int sourceID { get; set; } |
| | | } |
| | | } |
| | |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_IBusinessesRepository; |
| | | using WIDESEA_IRecordRepository; |
| | | using WIDESEA_IRecordService; |
| | | using WIDESEA_IServices; |
| | | using WIDESEA_IStorageBasicRepository; |
| | | using WIDESEA_IStorageOutOrderRepository; |
| | |
| | | private readonly IDt_PaintingOrderInfoRepository _paintingOrderInfoRepository; |
| | | private readonly IVV_StockInfoRepository _VVStockInfoRepository; |
| | | private readonly IDt_MESLockInfoRepository _MESLockInfoRepository; |
| | | private readonly IDt_PassPointRecordRepository _passPointRecordRepository; |
| | | private readonly IDt_PassPointRecordService _passPointRecordService; |
| | | |
| | | public MESService(ILocationInfoRepository locationRepository, IDt_TaskRepository taskRepository, ISys_ConfigService configService, IDt_StationManagerRepository stationManagerRepository, IDt_AreaInfoRepository dt_AreaInfoRepository, IDt_PalletInfoRepository palletInfoRepository, IDt_PalletStockInfoRepository palletStockInfoRepository, IDt_OutOrderRepository OutOrderRepository, IUnitOfWorkManage unitOfWorkManage, IDt_CarBodyInfoRepository carBodyRepository, IDt_AssemblyOrderInfoRepository assemblyOrderInfoRepository, IDt_PaintingOrderInfoRepository paintingOrderInfoRepository, IVV_StockInfoRepository VVStockInfoRepository, IDt_MESLockInfoRepository mESLockInfoRepository) |
| | | public MESService(ILocationInfoRepository locationRepository, IDt_TaskRepository taskRepository, ISys_ConfigService configService, IDt_StationManagerRepository stationManagerRepository, IDt_AreaInfoRepository dt_AreaInfoRepository, IDt_PalletInfoRepository palletInfoRepository, IDt_PalletStockInfoRepository palletStockInfoRepository, IDt_OutOrderRepository OutOrderRepository, IUnitOfWorkManage unitOfWorkManage, IDt_CarBodyInfoRepository carBodyRepository, IDt_AssemblyOrderInfoRepository assemblyOrderInfoRepository, IDt_PaintingOrderInfoRepository paintingOrderInfoRepository, IVV_StockInfoRepository VVStockInfoRepository, IDt_MESLockInfoRepository mESLockInfoRepository,IDt_PassPointRecordRepository passPointRecordRepository, IDt_PassPointRecordService passPointRecordService) |
| | | { |
| | | _locationRepository = locationRepository; |
| | | _taskRepository = taskRepository; |
| | |
| | | _paintingOrderInfoRepository = paintingOrderInfoRepository; |
| | | _VVStockInfoRepository = VVStockInfoRepository; |
| | | _MESLockInfoRepository = mESLockInfoRepository; |
| | | _passPointRecordRepository = passPointRecordRepository; |
| | | _passPointRecordService = passPointRecordService; |
| | | } |
| | | |
| | | |
| | |
| | | using WIDESEA_Core.Const; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_DTO; |
| | | using WIDESEA_Model.Models; |
| | | using WIDESEA_RecordService; |
| | | using WIDESEA_StorageBasicRepository; |
| | | |
| | | namespace WIDESEA_StoragIntegrationServices |
| | |
| | | pass_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") |
| | | }; |
| | | |
| | | //è®°å½è¯·æ±MESè¿ç¹ä¿¡æ¯ |
| | | _passPointRecordService.AddPassPointRecord(passPoint, json); |
| | | |
| | | var MESrespon = HttpHelper.PostAsync(wmsIpAddress, passPoint.ToJson(), contentType, headers).Result; |
| | | |
| | | MesResponse responseContent = JsonConvert.DeserializeObject<MesResponse>(MESrespon.ToString()); |
| | |
| | | } |
| | | |
| | | LogFactory.GetLog("车身è¿ç¹").Info(true, $"\r\r--------------------------------------"); |
| | | LogFactory.GetLog("车身è¿ç¹").Info(true, $"å·¥ä½å·:{json.Position},RFID:{json.PVI},ååºä¿¡æ¯:{responseContent.ToJson}"); |
| | | LogFactory.GetLog("车身è¿ç¹").Info(true, $"å·¥ä½å·:{json.Position},RFID:{json.PVI},ååºä¿¡æ¯:{MESrespon}"); |
| | | |
| | | return content.OK(); |
| | | } |
| | |
| | | |
| | | var carBodyInfo = _carBodyRepository.QueryFirst(x => x.RFID == rfid); |
| | | |
| | | //if (carBodyInfo == null) throw new Exception($"æªæ¾å°PVI{rfid}çè½¦èº«æ°æ®"); |
| | | if (carBodyInfo == null) throw new Exception($"æªæ¾å°PVI{rfid}çè½¦èº«æ°æ®"); |
| | | |
| | | BindWorkOrder bindOrder = new BindWorkOrder() |
| | | { |
| | |
| | | BindWorkOrderRespon characterRespon = JsonConvert.DeserializeObject<BindWorkOrderRespon>(webResponse.Data.ToJson()); |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | | if (stationInfo.stationChildCode == "EL01RB") //æ¶è£
ç²¾æç¹ |
| | | if (stationInfo.stationChildCode == "EL01RB") //çè£
-æ¶è£
æåæº |
| | | { |
| | | var paintingOrderInfo = _paintingOrderInfoRepository.QueryFirst(x => x.workOrderNo == characterRespon.workOrderNo); |
| | | |
| | |
| | | carBodyInfo.carBodyCharacteristic = paintingOrderInfo.carBodyCharacteristic; |
| | | _carBodyRepository.UpdateData(carBodyInfo); |
| | | } |
| | | else if (stationInfo.stationChildCode == "EL01RB01") //æ»è£
ç²¾æç¹ |
| | | else if (stationInfo.stationChildCode == "EL01RB01") //æ¶è£
ç²¾æç¹ |
| | | { |
| | | var assemblyOrderInfo = _assemblyOrderInfoRepository.QueryFirst(x => x.workOrderNo == characterRespon.workOrderNo); |
| | | |
| | |
| | | |
| | | IssuedCharacterRespon characterRespon = JsonConvert.DeserializeObject<IssuedCharacterRespon>(webResponse.Data.ToJson()); |
| | | |
| | | //_carBodyRepository.QueryFirst(x => x.PalletCode == palletCode); |
| | | |
| | | Dt_CarBodyInfo CarBody = new Dt_CarBodyInfo() |
| | | { |
| | | biwInPassTime = Convert.ToDateTime(characterRespon.biwInPassTime), |
| | |
| | | |
| | | LogFactory.GetLog("请æ±çè£
ç¹å¾ä¿¡æ¯").Info(true, $"\r\r--------------------------------------"); |
| | | LogFactory.GetLog("请æ±çè£
ç¹å¾ä¿¡æ¯").Info(true, $"å·¥ä½å·:{stationNo},RFID:{rfidPrint},ååºä¿¡æ¯:{webResponse.ToJson()}"); |
| | | |
| | | |
| | | return content.OK("è·åçè£
ç½è½¦èº«ä¿¡æ¯æå"); |
| | | } |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | |
| | | |
| | | |
| | | LogFactory.GetLog("éè½¦ä¸æ¥").Info(true, $"\r\r--------------------------------------"); |
| | | LogFactory.GetLog("éè½¦ä¸æ¥").Info(true, jsondata.ToJsonString()); |
| | |
| | | { |
| | | // carinfo = _palletStockInfoRepository.QueryFirst(x => x.PVI == item.pvi && x.pbMaterial == item.pbMaterial); |
| | | //carbodyinfo = _carBodyRepository.QueryFirst(x => x.pbMaterial == item.pbMaterial && x.PVI == item.pvi); |
| | | OutStock = _VVStockInfoRepository.QueryFirst(x => x.PVI == item.pvi && x.pbMaterial == item.pbMaterial && x.StockStatus == 0 && x.LockOrder == 0 && x.StayStatus == 0); |
| | | OutStock = _VVStockInfoRepository.QueryFirst(x => x.PVI == item.pvi /*&& x.pbMaterial == item.pbMaterial*/ && x.StockStatus == 0 && x.LockOrder == 0 && x.StayStatus == 0); |
| | | if (OutStock == null) |
| | | { |
| | | throw new Exception($"æªæ¾å°æå®PVI车身信æ¯{item.pvi}"); |
| | |
| | | //{ |
| | | stockInfo.StockStatus = 0; |
| | | stockInfo.LockOrder = 1; |
| | | carBody.BodyStatus = 1; |
| | | //carBody.BodyStatus = 1; |
| | | assemblyOrderInfo.pvi = carBody.PVI; |
| | | carBody.assemblyWorrkNo = item.workOrderNo; |
| | | |
| | | _MESLockInfoRepository.AddData(mESLockInfo); |
| | | _assemblyOrderInfoRepository.UpdateData(assemblyOrderInfo); |
| | | //_taskRepository.AddData(task); |
| | | _palletStockInfoRepository.UpdateData(stockInfo); |
| | | //_carBodyRepository.UpdateData(carbodyinfo); |
| | | _carBodyRepository.UpdateData(carBody); |
| | | _unitOfWorkManage.CommitTran(); |
| | | //} |
| | | |
| | |
| | | //if (carInfo != null) throw new Exception($"æ¶è£
ç´éæ»è£
失败:PVI{json.Rfid}å·²åå¨ã"); |
| | | |
| | | var station = _stationManagerRepository.QueryFirst(x => x.stationChildCode == json.Position); |
| | | if (station == null) throw new Exception("ç«å°æªæ¾å°"); |
| | | if (station == null) throw new Exception($"{json.Position}å·¥ä½ç«å°æªæ¾å°"); |
| | | |
| | | WebResponseContent webResponse = _mesService.bindWorkOrder(json.Position, json.PVI); |
| | | if (!webResponse.Status) throw new Exception($"çæ¶ç»å®å¤±è´¥ï¼{webResponse.msg}"); |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | throw new Exception($"çè£
æåæºå¼å¸¸:{ex.Message}"); |
| | | //content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | |
| | | using WIDESEA_DTO; |
| | | using WIDESEA_Model.Models; |
| | | using WIDESEA_Repository; |
| | | using WIDESEA_StorageBasicRepository; |
| | | using WIDESEAWCS_BasicInfoRepository; |
| | | using WIDESEAWCS_Model.Models; |
| | | |
| | |
| | | WebResponseContent response = new WebResponseContent(); |
| | | try |
| | | { |
| | | |
| | | //å¦ä»»å¡å·²åå¨å è¿åæ¤ä»»å¡ |
| | | var checkTask = _taskRepository.QueryFirst(x => x.PalletCode == json.PalletCode && x.PVI == json.PVI); |
| | | if (checkTask != null) |
| | | { |
| | | return response.OK("ç³è¯·å
¥åºæå", data: checkTask); |
| | | } |
| | | |
| | | var carInfo = _carBodyInfoRepository.QueryFirst(x => x.RFID == json.PVI && x.PalletCode == json.PalletCode); |
| | | |
| | | if (carInfo == null) throw new Exception("æªç¥ç©ºæ¬ä¿¡æ¯,æ æ³å
¥åº"); |
| | | //{ |
| | | // Dt_CarBodyInfo _CarBodyInfo = new Dt_CarBodyInfo //æµè¯ |
| | | // { |
| | | // PVI = "J25000660", |
| | | // RFID = json.PVI, |
| | | // BodyStatus = 0, |
| | | // CarType = 1, |
| | | // }; |
| | | //} |
| | | if (carInfo == null) |
| | | { |
| | | Dt_CarBodyInfo dt_CarBodyInfo = new Dt_CarBodyInfo |
| | | { |
| | | PalletCode = json.PalletCode, |
| | | CarType = 3, |
| | | PVI = json.PalletCode, |
| | | RFID = json.PalletCode, |
| | | BodyStatus = 0 |
| | | }; |
| | | _carBodyInfoRepository.AddData(dt_CarBodyInfo); |
| | | |
| | | carInfo = _carBodyInfoRepository.QueryFirst(x => x.RFID == json.PVI && x.PalletCode == json.PalletCode); |
| | | } |
| | | |
| | | var maxGroup = _locationRepository.QueryData(x => x.LocationType == 3 && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == (int)EnableEnum.Enable) |
| | | .GroupBy(x => x.RoadwayNo) |
| | |
| | | TaskNum = _taskRepository.GetTaskNo().Result, |
| | | Creater = "Systeam", |
| | | PVI = json.PVI, |
| | | |
| | | CarType = carInfo.CarType |
| | | }; |
| | | _unitOfWorkManage.BeginTran(); |
| | | |
| | | _taskRepository.AddData(newtask); |
| | | //location.LocationStatus = (int)LocationEnum.InStockDisable; |
| | | //_locationRepository.UpdateData(location); |
| | | _unitOfWorkManage.CommitTran(); |
| | | |
| | | response.OK("空æ¬ç³è¯·å
¥åºæå", data: newtask); |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | response.Error($"请æ±å··éå·å¤±è´¥:{ex.Message}"); |
| | | response.Error($"空æ¬è¯·æ±å··éå·å¤±è´¥:{ex.Message}"); |
| | | } |
| | | return response; |
| | | } |
| | |
| | | WebResponseContent response = new WebResponseContent(); |
| | | try |
| | | { |
| | | //å¦ä»»å¡å·²åå¨å è¿åæ¤ä»»å¡ |
| | | var checkTask = _taskRepository.QueryFirst(x => x.PalletCode == json.PalletCode && x.PVI == json.PVI); |
| | | if (checkTask != null) |
| | | { |
| | | return response.OK("ç³è¯·å
¥åºæå", data: checkTask); |
| | | } |
| | | |
| | | //å±è½MES |
| | | if (json.Position == "EL01RB") |
| | | { |
| | |
| | | roadWays = _roadWayRepository.QueryData(x => x.WirteCar == 2); |
| | | } |
| | | |
| | | //var locations = _locationRepository.QueryData(x => (x.LocationType == carInfo.CarType || x.LocationType == 3) && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == (int)EnableEnum.Enable); |
| | | |
| | | var maxGroup = _locationRepository.QueryData(x => (x.LocationType == carInfo.CarType || x.LocationType == 3) && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == (int)EnableEnum.Enable) |
| | | .GroupBy(x => x.RoadwayNo) |
| | | .OrderByDescending(g => g.Count()) // æ ¹æ®æ¯ä¸ªç»çå
ç´ æ°éæåº |
| | | .ToList(); // ååºæ°éæå¤çç» |
| | | |
| | | if (maxGroup.Count == 0) return response.Error(12, "æ å¯ç¨åºä½"); |
| | | |
| | | Dictionary<string, int> result = new Dictionary<string, int>(); |
| | | foreach (var item in maxGroup) |
| | | { |
| | | var number = _taskRepository.QueryData(x => x.TargetAddress == item.Key).Count(); |
| | | var number = _taskRepository.QueryData(x => x.RoadwayNo == item.Key && x.CarType == carInfo.CarType && (x.TaskType == (int)TaskInboundTypeEnum.Inbound || x.TaskType == (int)TaskInboundTypeEnum.InTray)).Count(); |
| | | if (item.Count() - number <= 0) |
| | | { |
| | | continue; |
| | |
| | | |
| | | if (stationList.Count > 1) |
| | | { |
| | | var task = _taskRepository.QueryData(x => x.Roadway == stationList.FirstOrDefault().Roadway).OrderByDescending(x => x.CreateDate).FirstOrDefault(); |
| | | var task = _taskRepository.QueryData(x => x.Roadway == stationList.FirstOrDefault().Roadway && x.TaskType == (int)TaskInboundTypeEnum.Inbound).OrderByDescending(x => x.CreateDate).FirstOrDefault(); |
| | | if (task != null) station = stationList.Where(x => x.stationChildCode != task.NextAddress && x.stationChildCode != task.CurrentAddress).FirstOrDefault(); |
| | | else station = stationList.FirstOrDefault(); |
| | | } |
| | |
| | | TaskNum = _taskRepository.GetTaskNo().Result, |
| | | Creater = "Systeam", |
| | | PVI = json.PVI, |
| | | CarType = carInfo.CarType |
| | | CarType = carInfo.CarType, |
| | | RoadwayNo = station.RoadwayNo |
| | | }; |
| | | _unitOfWorkManage.BeginTran(); |
| | | |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | throw new Exception($"æ¶è£
æåæºå¼å¸¸:{ex.Message}"); |
| | | //content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_IRecordRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_RecordRepository |
| | | { |
| | | public class Dt_PassPointRecordRepository : RepositoryBase<Dt_PassPointRecord>, IDt_PassPointRecordRepository |
| | | { |
| | | public Dt_PassPointRecordRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) |
| | | { |
| | | } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_IRecordRepository; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_StorageBasicRepository |
| | | { |
| | | public class StockQuantityChangeRecordRepository : RepositoryBase<Dt_StockQuantityChangeRecord>, IStockQuantityChangeRecordRepository |
| | | { |
| | | public StockQuantityChangeRecordRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) |
| | | { |
| | | } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using AutoMapper; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_DTO; |
| | | using WIDESEA_IRecordRepository; |
| | | using WIDESEA_IRecordService; |
| | | using WIDESEA_Model.Models; |
| | | using WIDESEA_RecordRepository; |
| | | |
| | | namespace WIDESEA_RecordService |
| | | { |
| | | public partial class Dt_PassPointRecordService : ServiceBase<Dt_PassPointRecord, IDt_PassPointRecordRepository>, IDt_PassPointRecordService |
| | | { |
| | | private readonly IMapper _mapper; |
| | | public Dt_PassPointRecordService(IDt_PassPointRecordRepository BaseDal, IMapper mapper) : base(BaseDal) |
| | | { |
| | | _mapper = mapper; |
| | | } |
| | | |
| | | public void AddPassPointRecord(PassPointInfo info, RequestTaskDto json) |
| | | { |
| | | try |
| | | { |
| | | Dt_PassPointRecord record = new Dt_PassPointRecord() |
| | | { |
| | | Content = info.Serialize(), |
| | | Position = json.Position, |
| | | PalletCode = json.PalletCode, |
| | | PVI = json.PVI, |
| | | lineCode = info.line_code, |
| | | PassPointTime = DateTime.Now |
| | | }; |
| | | BaseDal.AddData(record); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.HttpContextUser; |
| | | using WIDESEA_DTO; |
| | | using WIDESEA_DTO.Location; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_StorageBasicService; |
| | |
| | | private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository; |
| | | private readonly IMapper _mapper; |
| | | private readonly IDt_PalletStockInfoRepository _palletStockInfoRepository; |
| | | private readonly IVV_StockInfoRepository _stockrepository; |
| | | |
| | | public LocationInfoService(ILocationInfoRepository BaseDal, |
| | | IUnitOfWorkManage unitOfWorkManage, |
| | |
| | | IStockInfoDetailRepository stockInfoDetailRepository, |
| | | IMapper mapper, |
| | | IDt_TaskService taskService, |
| | | IDt_PalletStockInfoRepository palletStockInfoRepository) : base(BaseDal) |
| | | IDt_PalletStockInfoRepository palletStockInfoRepository, |
| | | IVV_StockInfoRepository stockrepository) : base(BaseDal) |
| | | { |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | _taskRepository = taskRepository; |
| | |
| | | _mapper = mapper; |
| | | _taskService = taskService; |
| | | _palletStockInfoRepository = palletStockInfoRepository; |
| | | _stockrepository = stockrepository; |
| | | } |
| | | |
| | | |
| | |
| | | { |
| | | var data = BaseDal.QueryData(x => x.AreaId == Convert.ToInt32(area.areaCode)); |
| | | |
| | | List<VV_StockInfo> stockInfos = _stockrepository.QueryData(x => true); |
| | | |
| | | List<LocationLayer> layers = new List<LocationLayer>(); |
| | | foreach (var layer in data.GroupBy(t => t.Layer)) |
| | | { |
| | |
| | | var cols = new List<LocationCol>(); |
| | | foreach (var data_col in data_row) |
| | | { |
| | | var stock = stockInfos.FirstOrDefault(x => x.LocationCode == data_col.LocationCode); |
| | | |
| | | cols.Add(new LocationCol() |
| | | { |
| | | //å |
| | |
| | | locationCode = data_col.LocationCode, |
| | | location_state = data_col.LocationStatus.ToString(), |
| | | location_lock = data_col.EnalbeStatus.ToString(), |
| | | stockInfo = stock |
| | | }); |
| | | } |
| | | cols = cols.OrderBy(t => t.index).ToList(); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using AutoMapper; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_IRecordRepository; |
| | | using WIDESEA_IRecordService; |
| | | using WIDESEA_Model.Models; |
| | | |
| | | namespace WIDESEA_StorageBasicService |
| | | { |
| | | public partial class StockQuantityChangeRecordService : ServiceBase<Dt_StockQuantityChangeRecord, IStockQuantityChangeRecordRepository>, IStockQuantityChangeRecordService |
| | | { |
| | | private readonly IMapper _mapper; |
| | | public StockQuantityChangeRecordService(IStockQuantityChangeRecordRepository BaseDal, IMapper mapper) : base(BaseDal) |
| | | { |
| | | _mapper = mapper; |
| | | } |
| | | |
| | | public void AddStockChangeRecord(VV_StockInfo stockInfo, StockChangeType changeType,int taskNum) |
| | | { |
| | | try |
| | | { |
| | | Dt_StockQuantityChangeRecord stockQuantityChangeRecords = new Dt_StockQuantityChangeRecord(); |
| | | stockQuantityChangeRecords = _mapper.Map<Dt_StockQuantityChangeRecord>(stockInfo); |
| | | stockQuantityChangeRecords.TaskNum = taskNum; |
| | | stockQuantityChangeRecords.ChangeType = Convert.ToInt32(changeType); |
| | | BaseDal.AddData(stockQuantityChangeRecords); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | using System.Drawing.Printing; |
| | | using System.Linq.Expressions; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_DTO.Basic; |
| | | |
| | | namespace WIDESEA_StorageBasicService; |
| | | |
| | | public class VV_MesLockInfoService : ServiceBase<VV_MesLockInfo, IVV_MesLockInfoRepository>, IVV_MesLockInfoService |
| | | { |
| | | public VV_MesLockInfoService(IVV_MesLockInfoRepository BaseDal) : base(BaseDal) |
| | | private readonly IVV_StockInfoRepository _stockInfoRepository; |
| | | public VV_MesLockInfoService(IVV_MesLockInfoRepository BaseDal, IVV_StockInfoRepository stockInfoRepository) : base(BaseDal) |
| | | { |
| | | _stockInfoRepository = stockInfoRepository; |
| | | } |
| | | |
| | | public WebResponseContent GetMesLockInfo() |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | List<VV_MesLockInfo> mesLockInfos = BaseDal.QueryData(x => x.LockStatue == 1 || x.LockStatue == 0).OrderBy(x => x.sequenceNo).ToList(); |
| | | List<VV_StockInfo> stockInfos = _stockInfoRepository.QueryData(x => x.CarType == 2).OrderBy(x => x.CreateDate).Take(50).ToList(); |
| | | List<MesLockDTO> mesLockDTOs = new List<MesLockDTO>(); |
| | | mesLockInfos.ForEach(x => |
| | | { |
| | | mesLockDTOs.Add(new MesLockDTO |
| | | { |
| | | lockStatue = x.LockStatue, |
| | | pvi = x.PVI, |
| | | vehicleCharacteristic = x.vehicleCharacteristic, |
| | | carBodyCharacteristic = x.carBodyCharacteristic |
| | | }); |
| | | }); |
| | | stockInfos.ForEach(x => |
| | | { |
| | | mesLockDTOs.Add(new MesLockDTO |
| | | { |
| | | lockStatue = 2, |
| | | pvi = x.PVI, |
| | | vehicleCharacteristic = x.vehicleCharacteristic, |
| | | carBodyCharacteristic = x.carBodyCharacteristic |
| | | }); |
| | | }); |
| | | |
| | | return content.OK(data: mesLockDTOs); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent GetStockInfo(string PVI) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | VV_StockInfo stockInfos = _stockInfoRepository.QueryFirst(x => x.PVI == PVI); |
| | | |
| | | return content.OK(data: stockInfos); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | } |
| | |
| | | using System.Drawing.Printing; |
| | | using System.Linq.Expressions; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_IRecordService; |
| | | |
| | | namespace WIDESEA_StorageBasicService; |
| | | |
| | | public class VV_StockInfoService : ServiceBase<VV_StockInfo, IVV_StockInfoRepository>, IVV_StockInfoService |
| | | { |
| | | private readonly IDt_PalletStockInfoRepository _repository; |
| | | public VV_StockInfoService(IVV_StockInfoRepository BaseDal, IDt_PalletStockInfoRepository repository) : base(BaseDal) |
| | | private readonly IStockQuantityChangeRecordService _stockQuantityChangeRecord; |
| | | public VV_StockInfoService(IVV_StockInfoRepository BaseDal, IDt_PalletStockInfoRepository repository, IStockQuantityChangeRecordService stockQuantityChangeRecord) : base(BaseDal) |
| | | { |
| | | _repository = repository; |
| | | _stockQuantityChangeRecord = stockQuantityChangeRecord; |
| | | } |
| | | |
| | | public WebResponseContent stockLock(object[] keys) |
| | |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.Const; |
| | | using WIDESEA_DTO; |
| | | using WIDESEA_DTO.WMS; |
| | | using WIDESEA_IServices; |
| | | using WIDESEAWCS_BasicInfoRepository; |
| | |
| | | CreateDate = DateTime.Now, |
| | | TaskId = 0, |
| | | CarType = stock.CarType, |
| | | RoadwayNo = stock.RoadwayNo, |
| | | }; |
| | | |
| | | // å建任å¡ä¼ è¾ç¨çDTO对象 |
| | |
| | | AssemblyName = "WIDESEA_StorageTaskServices", |
| | | ClassName = "WhiteCarAutoOutJob", |
| | | CreateTime = DateTime.Now, |
| | | IntervalSecond = 15, |
| | | IntervalSecond = 60, |
| | | IsDeleted = false, |
| | | IsStart = false, |
| | | JobGroup = "AutoTask", |
| | |
| | | CreateDate = DateTime.Now, |
| | | TaskId = 0, |
| | | CarType = stock.CarType, |
| | | RoadwayNo = stock.RoadwayNo |
| | | }; |
| | | |
| | | // å建任å¡ä¼ è¾ç¨çDTO对象 |
| | |
| | | private readonly IDt_BDCConfigurationService _bdcConfigurationService; |
| | | private readonly IDt_RoadWayRepository _roadWayRepository; |
| | | private readonly IDt_RoadWayInfoRepository _roadWayInfoRepository; |
| | | private readonly IDt_CarBodyInfo_htyRepository _carBodyInfo_HtyRepository; |
| | | |
| | | public Dt_TaskService(IDt_TaskRepository BaseDal, |
| | | IUnitOfWorkManage unitOfWorkManage, |
| | |
| | | ITaskExecuteDetailRepository taskExecuteDetailRepository, |
| | | ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository, |
| | | IDt_StationManagerRepository stationManagerRepository, |
| | | ISys_ConfigService configService, IDt_PalletStockInfoRepository palletStockInfoRepository, IDt_PalletStockInfo_htyRepository palletStockInfo_HtyRepository, IDt_CarBodyInfoRepository carBodyRepository, IDt_BDCConfigurationRepository bdcConfigurationRepository, IDt_BDCConfigurationService bDCConfigurationService, IDt_RoadWayRepository roadWayRepository, IDt_RoadWayInfoRepository roadWayInfoRepository) : base(BaseDal) |
| | | ISys_ConfigService configService, IDt_PalletStockInfoRepository palletStockInfoRepository, IDt_PalletStockInfo_htyRepository palletStockInfo_HtyRepository, IDt_CarBodyInfoRepository carBodyRepository, IDt_BDCConfigurationRepository bdcConfigurationRepository, IDt_BDCConfigurationService bDCConfigurationService, IDt_RoadWayRepository roadWayRepository, IDt_RoadWayInfoRepository roadWayInfoRepository, IDt_CarBodyInfo_htyRepository carBodyInfo_HtyRepository) : base(BaseDal) |
| | | |
| | | { |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | |
| | | _bdcConfigurationService = bDCConfigurationService; |
| | | _roadWayRepository = roadWayRepository; |
| | | _roadWayInfoRepository = roadWayInfoRepository; |
| | | _carBodyInfo_HtyRepository = carBodyInfo_HtyRepository; |
| | | } |
| | | |
| | | #region å¤é¨æ¥å£æ¹æ³ |
| | |
| | | stockInfo_Hty.FinishTime = DateTime.Now; |
| | | stockInfo_Hty.OperateType = (int)OperateTypeEnum.èªå¨å®æ; |
| | | |
| | | var boxinfo = _carBodyRepository.QueryFirst(x => x.PalletCode == task.PalletCode); |
| | | |
| | | var carInfo = _carBodyRepository.QueryFirst(x => x.PalletCode == task.PalletCode); |
| | | carInfo.BodyStatus = 2; |
| | | // äºå¡å¤ç |
| | | await _unitOfWorkManage.UseTranAsync(async () => |
| | | { |
| | | var isLocationUpdate = await _locationRepository.UpdateDataAsync(loc); //æ´æ°åºä½ |
| | | var isPalletHty = await _palletStockInfo_HtyRepository.AddDataAsync(stockInfo_Hty); //æ·»å åå²åºåè®°å½ |
| | | var isTaskUpdated = await BaseDal.DeleteDataByIdAsync(task.TaskId); //å é¤ä»»å¡ |
| | | //await BaseDal.UpdateDataAsync(task); //åæ¶å é¤ä»»å¡ï¼æ¹ä¸ºå®æç¶æï¼å¹¶WMSçé¢ç±äººå·¥ç¡®è®¤å®æ |
| | | var isTaskAdd = await _task_HtyRepository.AddDataAsync(taskHty) > 0; //å å
¥åå²ä»»å¡ |
| | | var isDelete = await _palletStockInfoRepository.DeleteDataAsync(stock); //å é¤åºå |
| | | //await DeleteStockInfoDetailsAsync(stock.StockInfoDetails); //å é¤åºåæç» |
| | | //if (boxinfo != null) |
| | | //{ |
| | | // var isDeleteBoxing = await _boxingInfoRepository.Db.DeleteNav<DtBoxingInfo>(x => x.Id == boxinfo.Id) |
| | | // .Include(x => x.BoxingInfoDetails) |
| | | // .ExecuteCommandAsync(); //å é¤ç»ç |
| | | //} |
| | | |
| | | if (task.CarType != 2)//é彩车身åºåºå æ¸
é¤ç»çæ°æ® |
| | | { |
| | | //å é¤ç»ç |
| | | Dt_CarBodyInfo_hty carInfo_Hty = carInfo.Adapt<Dt_CarBodyInfo_hty>(); |
| | | carInfo_Hty.FinishTime = DateTime.Now; |
| | | carInfo_Hty.FinishType = (int)OperateTypeEnum.èªå¨å®æ; |
| | | carInfo_Hty.sourceID = carInfo.Id; |
| | | await _carBodyInfo_HtyRepository.AddDataAsync(carInfo_Hty); |
| | | await _carBodyRepository.DeleteDataAsync(carInfo); |
| | | } |
| | | }); |
| | | |
| | | return content.OK("ä»»å¡å®ææå", task.Remark); |
| | |
| | | return await CompleteInboundTaskAsync(task); |
| | | |
| | | case (int)TaskOutboundTypeEnum.Outbound: |
| | | case (int)TaskOutboundTypeEnum.OutTray: |
| | | LogFactory.GetLog("ä»»å¡å®æ").InfoFormat(true, "åºåºä»»å¡", ""); |
| | | return await CompleteStackTaskAsync(task); |
| | | default: |
| | |
| | | try |
| | | { |
| | | string palletCode = saveModel.MainData["palletCode"].ToString(); |
| | | string station = saveModel.MainData["station"].ToString(); |
| | | //string station = saveModel.MainData["station"].ToString(); |
| | | |
| | | var barcode = JsonConvert.DeserializeObject<List<string>>(saveModel.MainData["palletCode"].ToString()); |
| | | |
| | |
| | | return content.Error("æªæ¥è¯¢å°å¯¹åºçåºåä¿¡æ¯"); |
| | | } |
| | | |
| | | if (stockInfo.StockStatus != 0) return content.Error($"æå®å¤±è´¥ï¼æç{item}å½åç¶æä¸å
许æå®åºåº"); |
| | | if (stockInfo.StockStatus != 0) return content.Error($"æå®å¤±è´¥ï¼åºåæ»æ©{item}å·²éå®ä¸å
许æå®åºåº"); |
| | | |
| | | stockInfo.StockStatus = 1; |
| | | |
| | |
| | | //} |
| | | //var stationInfo = stationInfos.FirstOrDefault(); |
| | | |
| | | |
| | | |
| | | // å建并添å ä»»å¡å°æ°æ®åº |
| | | task = new Dt_Task |
| | | { |
| | | Grade = 1, |
| | | Roadway = Outstation.Roadway, |
| | | TargetAddress = "RB043", |
| | | TargetAddress = carBody.CarType == 2 ? "RB043" : Outstation.stationChildCode, |
| | | Dispatchertime = DateTime.Now, |
| | | NextAddress = Outstation.stationChildCode, |
| | | OrderNo = null, |
| | | PalletCode = carBody.PalletCode, |
| | | PVI = carBody.PVI, |
| | | PVI = carBody.RFID, |
| | | SourceAddress = stockInfo.LocationCode, |
| | | CurrentAddress = stockInfo.LocationCode, |
| | | TaskState = (int)TaskOutStatusEnum.OutNew, |
| | |
| | | Creater = "System", |
| | | CreateDate = DateTime.Now, |
| | | TaskId = 0, |
| | | CarType = carBody.CarType, |
| | | RoadwayNo = stockInfo.RoadwayNo |
| | | }; |
| | | |
| | | // å建任å¡ä¼ è¾ç¨çDTO对象 |
| | |
| | | { |
| | | throw new InvalidOperationException("WMS IP æªé
ç½®"); |
| | | } |
| | | |
| | | |
| | | var tasks = new List<WMSTaskDTO>() { taskDTO }; |
| | | // åéä»»å¡è¯·æ±å°WMS |
| | |
| | | } |
| | | #endregion æå®ä»»å¡åºåº |
| | | |
| | | |
| | | /// <summary> |
| | | /// å建任å¡DTO |
| | | /// </summary> |
| | |
| | | Id = 0, |
| | | TaskType = task.TaskType, |
| | | pvi = task.PVI, |
| | | NextAddress = task.NextAddress |
| | | NextAddress = task.NextAddress, |
| | | CarType = task.CarType |
| | | |
| | | }; |
| | | } |
| | |
| | | { |
| | | // å建WebResponseContent对象 |
| | | var content = new WebResponseContent(); |
| | | |
| | | var carInfo = _carBodyRepository.QueryFirst(x => x.PalletCode == task.PalletCode ); |
| | | var carInfo = _carBodyRepository.QueryFirst(x => x.PalletCode == task.PalletCode); |
| | | var stationInfo = _stationManagerRepository.QueryFirst(x => x.stationChildCode == input.Position); |
| | | // è·ååºä½; |
| | | var location = RequestLocation(stationInfo.RoadwayNo, carInfo.CarType); |
| | |
| | | DtLocationInfo locationinfo = new DtLocationInfo(); |
| | | if (carType == 1 || carType == 3) |
| | | { |
| | | locationinfo = dtLocationInfos.Where(x => x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1).OrderBy(x => x.Layer).ThenBy(x => x.Column).ThenBy(x => x.Row).FirstOrDefault(); |
| | | locationinfo = dtLocationInfos.Where(x => x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1).OrderBy(x => x.Column).ThenBy(x => x.Layer).ThenBy(x => x.Row).FirstOrDefault(); |
| | | } |
| | | else if (carType == 2) |
| | | { |
| | | locationinfo = dtLocationInfos.Where(x => x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1).OrderBy(x => x.Layer).ThenByDescending(x => x.Column).ThenBy(x => x.Row).FirstOrDefault(); |
| | | locationinfo = dtLocationInfos.Where(x => x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1).OrderByDescending(x => x.Column).ThenBy(x => x.Layer).ThenBy(x => x.Row).FirstOrDefault(); |
| | | } |
| | | //else if (carType == 3) |
| | | //{ |
| | | // locationinfo = dtLocationInfos.Where(x => x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1).OrderBy(x => x.Column).ThenBy(x => x.Row).ThenBy(x => x.Layer).FirstOrDefault(); |
| | | //} |
| | | |
| | | return locationinfo; |
| | | } |
| | | |
| | |
| | | .editorconfig = .editorconfig |
| | | EndProjectSection |
| | | EndProject |
| | | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEA_StoragIntegrationServices", "WIDESEA_StoragIntegrationServices\WIDESEA_StoragIntegrationServices.csproj", "{55326F38-372A-4606-B7FB-8C01BBAEC4FC}" |
| | | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_StoragIntegrationServices", "WIDESEA_StoragIntegrationServices\WIDESEA_StoragIntegrationServices.csproj", "{55326F38-372A-4606-B7FB-8C01BBAEC4FC}" |
| | | EndProject |
| | | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEA_IStoragIntegrationServices", "WIDESEA_IStoragIntegrationServices\WIDESEA_IStoragIntegrationServices.csproj", "{94D572FA-810E-4897-B673-AF988FD4019E}" |
| | | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IStoragIntegrationServices", "WIDESEA_IStoragIntegrationServices\WIDESEA_IStoragIntegrationServices.csproj", "{94D572FA-810E-4897-B673-AF988FD4019E}" |
| | | EndProject |
| | | Global |
| | | GlobalSection(SolutionConfigurationPlatforms) = preSolution |
| | |
| | | {986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1} = {A73C1AFF-FF92-4825-B607-2E908077EBA4} |
| | | {4BDE58B2-5B2E-480B-932F-D63C2A7D557C} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED} |
| | | {9912BD12-4CF7-4A91-8203-47C9C125004C} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED} |
| | | {9BA96018-EF8A-4D84-8E72-DA697FA5EAF8} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED} |
| | | {55326F38-372A-4606-B7FB-8C01BBAEC4FC} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED} |
| | | {94D572FA-810E-4897-B673-AF988FD4019E} = {A73C1AFF-FF92-4825-B607-2E908077EBA4} |
| | | EndGlobalSection |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using WIDESEA_BusinessServices; |
| | | using WIDESEA_Core.BaseController; |
| | | using WIDESEA_IBusinessServices; |
| | | using WIDESEA_IRecordService; |
| | | using WIDESEA_Model.Models; |
| | | using WIDESEAWCS_BasicInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | |
| | | namespace WIDESEA_WMSServer.Controllers |
| | | { |
| | | [Route("api/Dt_PassPointRecord")] |
| | | [ApiController] |
| | | public class Dt_PassPointRecordController : ApiBaseController<IDt_PassPointRecordService, Dt_PassPointRecord> |
| | | { |
| | | private readonly IHttpContextAccessor _httpContextAccessor; |
| | | public Dt_PassPointRecordController(IDt_PassPointRecordService service, IHttpContextAccessor httpContextAccessor) : base(service) |
| | | { |
| | | _httpContextAccessor = httpContextAccessor; |
| | | } |
| | | |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using WIDESEA_BusinessServices; |
| | | using WIDESEA_Core.BaseController; |
| | | using WIDESEA_IBusinessServices; |
| | | using WIDESEA_IRecordService; |
| | | using WIDESEA_Model.Models; |
| | | using WIDESEAWCS_BasicInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | |
| | | namespace WIDESEA_WMSServer.Controllers |
| | | { |
| | | [Route("api/StockQuantityChangeRecord")] |
| | | [ApiController] |
| | | public class Dt_StockQuantityChangeRecordController : ApiBaseController<IStockQuantityChangeRecordService, Dt_PassPointRecord> |
| | | { |
| | | private readonly IHttpContextAccessor _httpContextAccessor; |
| | | public Dt_StockQuantityChangeRecordController(IStockQuantityChangeRecordService service, IHttpContextAccessor httpContextAccessor) : base(service) |
| | | { |
| | | _httpContextAccessor = httpContextAccessor; |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | { |
| | | |
| | | } |
| | | |
| | | [HttpGet,HttpPost,Route("GetMesLockInfo"),AllowAnonymous] |
| | | public WebResponseContent GetMesLockInfo() |
| | | { |
| | | return Service.GetMesLockInfo(); |
| | | } |
| | | |
| | | [HttpGet, HttpPost, Route("GetStockInfo"), AllowAnonymous] |
| | | public WebResponseContent GetStockInfo(string PVI) |
| | | { |
| | | return Service.GetStockInfo(PVI); |
| | | } |
| | | } |
| | |
| | | { |
| | | return Service.stockUnLock(keys); |
| | | } |
| | | |
| | | } |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 请æ±å
¥åºå··é |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost, Route("RequestEmptyInboundRoadWayNo"), AllowAnonymous] |
| | | public WebResponseContent RequestEmptyInboundRoadWayNo([FromBody] RequestTaskDto input) |
| | | { |
| | | return _WCSService.RequestEmptyInboundRoadWayNo(input); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¶è£
ç´éæ»è£
(ä¸´æ¶æ¹æ¡) |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// çè£
ç´éæ¶è£
(ä¸´æ¶æ¹æ¡) |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost, Route("HZPassTZ"), AllowAnonymous] |
| | | public WebResponseContent HZPassTZ([FromBody] RequestTaskDto input) |
| | | { |
| | | return _WCSService.HZPassTZ(input); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ»è£
ç²¾æç¹ |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | |
| | | CreateMap<RegistrationDTO, Sys_CompanyRegistration>(); |
| | | CreateMap<Dt_OutOrderAndStock, Dt_OutOrderAndStock_Hty>(); |
| | | CreateMap<Dt_Task, Dt_Task_Hty>(); |
| | | CreateMap<VV_StockInfo, Dt_StockQuantityChangeRecord>() |
| | | .ForMember(a => a.StockId, b => b.MapFrom(b => b.Id)); |
| | | } |
| | | } |
| | | } |
| | |
| | | global using WIDESEA_Model.Models.System; |
| | | global using WIDESEA_Core.Authorization; |
| | | global using WIDESEA_Core.Utilities; |
| | | global using WIDESEA_Model; |
| | | //global using WIDESEA_StorageBasicServices; |
| | | global using WIDESEA_Model; |