ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs
@@ -112,6 +112,12 @@ Inbound = 510, /// <summary> /// äºæ¥¼ç«ç¹æåå ¥åº /// </summary> [Description("äºæ¥¼ç«ç¹æåå ¥åº")] Inbound2ndFloor = 515, /// <summary> /// çç¹å ¥åº /// </summary> [Description("çç¹å ¥åº")] ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -87,7 +87,7 @@ /// 请æ±åæå ¥åºå··é /// </summary> /// <returns></returns> WebResponseContent AssignYLRoadwayNo(string palletCode); WebResponseContent AssignYLRoadwayNo(string palletCode, int wide = 0, int thickness = 0, int weight = 0); /// <summary> /// 请æ±å ¥åºä»»å¡ /// </summary> ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs
@@ -511,7 +511,7 @@ /// <summary> /// è·åæ¡æ¶æ¾æä¿¡å· /// </summary> public W_TrussCartonDB GetCartonPut(string StationCode) private W_TrussCartonDB GetCartonPut(string StationCode) { switch (StationCode) { @@ -534,7 +534,7 @@ /// <summary> /// è·åæ¡æ¶è¯·æ±ä¿¡å· /// </summary> public W_TrussCartonDB GetCartonRequest(string StationCode) private W_TrussCartonDB GetCartonRequest(string StationCode) { switch (StationCode) { @@ -558,7 +558,7 @@ /// <summary> /// è·åæ¡æ¶è¿å ¥ä¿¡å· /// </summary> public R_TrussCartonDB GetCarton(string StationCode) private R_TrussCartonDB GetCarton(string StationCode) { switch (StationCode) { ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -18,6 +18,7 @@ using Newtonsoft.Json; using SqlSugar; using System.Diagnostics.CodeAnalysis; using System.Net.Http.Headers; using WIDESEA_DTO.Agv; using WIDESEAWCS_Common; using WIDESEAWCS_Common.APIEnum; @@ -266,12 +267,24 @@ { //æåå ¥åº List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == item.TaskType && x.StartPosi=="AGV" && x.ChildPosiDeviceCode==item.RoadWay); router = routers.FirstOrDefault(); if (routers.Count == 1) if (routers.Count==0) { router = _routerRepository.QueryFirst(x => x.InOutType == item.TaskType && x.StartPosi == "AGV"); if (router==null) return WebResponseContent.Instance.Error($"æªæ¾å°è·¯ç±é 置信æ¯"); task.NextAddress = router.NextPosi; task.DeviceCode = router.ChildPosi; } else { router = routers.FirstOrDefault(); if (routers.Count == 1) { task.NextAddress = router.NextPosi; task.DeviceCode = router.ChildPosi; } } } tasks.Add(task); } @@ -432,7 +445,7 @@ /// 请æ±åæå ¥åºå··é /// </summary> /// <returns></returns> public WebResponseContent AssignYLRoadwayNo(string palletCode) public WebResponseContent AssignYLRoadwayNo(string palletCode, int wide = 0, int thickness = 0, int weight = 0) { WebResponseContent content = new WebResponseContent(); try @@ -442,7 +455,7 @@ { return WebResponseContent.Instance.Error($"æªæ¾å°WMSApiå°å"); } string responseStr = HttpHelper.Get($"{address}/api/Task/AssignYLRoadwayNo?palletCode={palletCode}"); string responseStr = HttpHelper.Get($"{address}/api/Task/AssignYLRoadwayNo?palletCode={palletCode}&wide={wide}&thickness={thickness}&weight={weight}"); WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr); if (responseContent != null && responseContent.Status && responseContent.Data != null) { ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/ÔÁÏ¿â/ConveyorLineJob_YL1ndFloor.cs
@@ -119,7 +119,7 @@ { if (string.IsNullOrEmpty(task.Roadway) && string.IsNullOrEmpty(task.NextAddress)) { WebResponseContent content = _taskService.AssignYLRoadwayNo(task.PalletCode); WebResponseContent content = _taskService.AssignYLRoadwayNo(task.PalletCode,weight: conveyorLineInfoRead.WR_Weight, thickness: conveyorLineInfoRead.WR_Height, wide: conveyorLineInfoRead.WR_Width); if (!content.Status) { WriteError(item.StationCode, $"请æ±å ¥åºå¤±è´¥ï¼{content.Message}"); ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/ÔÁÏ¿â/StackerCraneJob_YLSC2.cs
@@ -61,7 +61,7 @@ } //commonStackerCrane.CheckStackerCraneTaskCompleted();//鲿¢ä»»å¡å®æäºä»¶çæµè¶ æ¶ï¼åæå¨è§¦å䏿¬¡ //è·åå½åå åæºç¶æ if (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.WorkCompleted) if (commonStackerCrane.CurrentTaskNum > 0 && (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.WorkCompleted || commonStackerCrane.Communicator.Read<short>("DB1000.40.0") == 3)) { StackerCraneTaskCompletedEventArgs e = new StackerCraneTaskCompletedEventArgs(commonStackerCrane.CurrentTaskNum); CommonStackerCrane_StackerCraneTaskCompletedEventHandler(commonStackerCrane, e); ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/ÔÁÏ¿â/StackerCraneJob_YLSC3.cs
@@ -66,7 +66,7 @@ commonStackerCrane.CheckStackerCraneTaskCompleted();//鲿¢ä»»å¡å®æäºä»¶çæµè¶ æ¶ï¼åæå¨è§¦å䏿¬¡ //è·åå½åå åæºç¶æ if (commonStackerCrane.CurrentTaskNum>0 && commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.WorkCompleted) if (commonStackerCrane.CurrentTaskNum>0 && (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.WorkCompleted || commonStackerCrane.Communicator.Read<short>("DB1000.40.0") == 3)) { StackerCraneTaskCompletedEventArgs e = new StackerCraneTaskCompletedEventArgs(commonStackerCrane.CurrentTaskNum); CommonStackerCrane_StackerCraneTaskCompletedEventHandler(commonStackerCrane, e); @@ -362,8 +362,8 @@ CommonConveyorLine client = (CommonConveyorLine)device; if (client.GetValue<ConveyorLineDBName, short>(ConveyorLineDBName.InteractiveSignal, stationManger.StationCode) != 99)//åºåºç«å°æªè¢«å ç¨ { task.NextAddress = stationManger.StackerCraneStationCode; _taskRepository.UpdateData(task); //task.NextAddress = stationManger.StackerCraneStationCode; //_taskRepository.UpdateData(task); return task; } else @@ -398,6 +398,10 @@ YLStackerCraneTaskCommand stackerCraneTaskCommand = new YLStackerCraneTaskCommand(); stackerCraneTaskCommand.PalletType = Convert.ToInt16(task.PalletType); if (task.TaskLength>=1200 && task.TaskLength<1630) { stackerCraneTaskCommand.PalletType = 3; } stackerCraneTaskCommand.TaskNum = task.TaskNum; stackerCraneTaskCommand.WorkType = 5; if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)//夿æ¯å¦æ¯å ¥åºä»»å¡ ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/AGV_CPExtend.cs
@@ -183,7 +183,7 @@ agvTaskSend.Variables.Add(pointDetail2); agvTaskSend.Variables.Add(complete); } if (task.TaskType==TaskTypeEnum.OutCarton.ObjToInt()) if (stationMangerStart.AGVStationCode.StartsWith("PNT_2")|| stationMangerEnd.AGVStationCode.StartsWith("PNT_2")) { agvTaskSend.AgvGroupCode = "GAOc"; } ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/ConveyorLineJob_CPA.cs
@@ -70,7 +70,7 @@ OtherDevice device = (OtherDevice)value; List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).ToList(); //è·åæåè®®çè¾é线 List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(); List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x=>x.StationDeviceCode==device.DeviceCode); foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode))) { DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); @@ -80,38 +80,26 @@ R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress); if (conveyorLineInfoRead != null && conveyorLineInfoRead.Command == 2 && conveyorLineInfoRead.TaskNo > 0 && item.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt()) //äºæ¥¼çº¿ä½å ¥åºç«å°->å åæº { //è·åå ¥åºç«å°æ¯å¦åå¨å ¥åºä»»å¡ Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.TaskNo && x.NextAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode); if (task != null) { Dt_StationManger stationManger = stationMangers.FirstOrDefault(x => x.StationCode == task.SourceAddress); if (stationManger != null) //åé è´§ä½ string? local = _taskService.RequestAssignLocation(task.TaskNum, task.Roadway); //åé è´§ä½ if (!string.IsNullOrEmpty(local)) { string? local = ""; switch (stationManger.AGVStationCode.ObjToInt() % 2) { case 1: local = task.Roadway + "-001-062-001-01"; break; case 0: local = task.Roadway + "-002-062-001-01"; break; default: WriteError(item.StationName, $"æªæ¾å°å¯åé å··é{task.TaskNum}"); break; } //åé è´§ä½ if (!string.IsNullOrEmpty(local)) { task.CurrentAddress = item.StackerCraneStationCode; task.TargetAddress = local; task.NextAddress = local; task.DeviceCode = item.StackerCraneCode; _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute); WriteInfo(item.StationName, $"ä»»å¡å·:{task.TaskNum}è¿è¡å åæºå ¥åº"); } task.CurrentAddress = item.StackerCraneStationCode; task.TargetAddress = local; task.NextAddress = local; task.DeviceCode = item.StackerCraneCode; _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute); WriteInfo(item.StationName, $"ä»»å¡å·:{task.TaskNum}è¿è¡å åæºå ¥åº"); } } else { WriteError(item.StationName, $"æªæ¾å°{item.StationCode}çä»»å¡{conveyorLineInfoRead.TaskNo}"); } } else if (conveyorLineInfoRead != null && conveyorLineInfoRead.Command == 4 && conveyorLineInfoRead.TaskNo <= 0 && item.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt()) //äºæ¥¼çº¿ä½åºåºç«å° { ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/ConveyorLineJob_CPB.cs
@@ -70,7 +70,7 @@ { OtherDevice device = (OtherDevice)value; List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).Distinct().ToList(); List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(); List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode); foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode))) { DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); @@ -144,7 +144,11 @@ } } } else if (conveyorLineInfoRead != null && conveyorLineInfoRead.Command == 2 && conveyorLineInfoRead.TaskNo > 0) } else if (item.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt() && deviceProRead != null) {//å ¥åºRGVæ¥é©³ä½äº¤äº R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress); if (conveyorLineInfoRead != null && conveyorLineInfoRead.Command == 2 && conveyorLineInfoRead.TaskNo > 0) { Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.TaskNo && x.NextAddress == item.StationCode && _taskService.TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode); if (task != null) @@ -166,6 +170,45 @@ } } } else if (item.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt() && deviceProRead != null && deviceProWrite != null) { R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress); //æå䏿¥¼å ¥åºå£åå ¥å¯¹åºå ¥åºç«å°å°å if (conveyorLineInfoRead != null && conveyorLineInfoRead.Command == 4 && !string.IsNullOrEmpty(conveyorLineInfoRead.PalletCode)) { Dt_Task task = _taskRepository.QueryFirst(x => x.PalletCode == conveyorLineInfoRead.PalletCode && x.CurrentAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.AGV_Finish.ObjToInt() && x.DeviceCode == device.DeviceCode); if (task != null) { //åé å··é åå ¥æçæ°æ® List<Dt_Router> routers = _routerService.QueryNextRoutes(item.StationCode, task.Roadway, task.TaskType); Dt_Router? router = routers.FirstOrDefault(); if (routers == null || routers.Count == 0 || router == null) { WriteError(item.StationName, $"æªæ¾å°å¯¹åºè·¯ç±ä¿¡æ¯,设å¤ç¼å·:{item.StationCode},ä»»å¡å·:{task.TaskNum}"); continue; } if (routers.Count > 1) { WriteError(item.StationName, $"è·¯ç±ä¿¡æ¯é ç½®é误,设å¤ç¼å·:{item.StationCode},ä»»å¡å·:{task.TaskNum}"); continue; } //åå ¥å ¥åºçº¿ä½å°å device.SetValue(W_ConveyorLineCPDB.W_TargetAddress, router.NextPosi, item.StationCode); device.SetValue(W_ConveyorLineCPDB.W_TaskNo, task.TaskNum, item.StationCode); device.SetValue(W_ConveyorLineCPDB.W_Command, 1, item.StationCode); //æ´æ°ä»»å¡ä¿¡æ¯ task.CurrentAddress = item.StationCode; task.NextAddress = router.NextPosi; task.DeviceCode = router.ChildPosiDeviceCode; _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing); WriteInfo(item.StationName, $"ä»»å¡å·{conveyorLineInfoRead.TaskNo}ä¸ä¸æ¥"); } else { WriteError(item.StationName, $"æªæ¾å°è®¾å¤åç¼å·{item.StationCode}çå议信æ¯"); } } } else if (item.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt() && deviceProRead != null) {//å ¥åºRGVæ¥é©³ä½äº¤äº R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress); ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/StackerCraneJob_CP.cs
@@ -23,6 +23,7 @@ using SqlSugar.Extensions; using WIDESEAWCS_Tasks.ConveyorLineJob; using WIDESEAWCS_QuartzJob.Repository; using WIDESEAWCS_QuartzJob.StackerCrane; namespace WIDESEAWCS_Tasks { @@ -57,8 +58,13 @@ { commonStackerCrane.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//订é ä»»å¡å®æäºä»¶ } commonStackerCrane.CheckStackerCraneTaskCompleted();//鲿¢ä»»å¡å®æäºä»¶çæµè¶ æ¶ï¼åæå¨è§¦å䏿¬¡ if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal && commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Standby) //commonStackerCrane.CheckStackerCraneTaskCompleted();//鲿¢ä»»å¡å®æäºä»¶çæµè¶ æ¶ï¼åæå¨è§¦å䏿¬¡ if (commonStackerCrane.CurrentTaskNum > 0 && (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.WorkCompleted || commonStackerCrane.Communicator.Read<short>("DB1000.40.0") == 3)) { StackerCraneTaskCompletedEventArgs e = new StackerCraneTaskCompletedEventArgs(commonStackerCrane.CurrentTaskNum); CommonStackerCrane_StackerCraneTaskCompletedEventHandler(commonStackerCrane, e); } else if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal && commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Standby) { short stackerError = commonStackerCrane.Communicator.Read<short>("DB1000.54.0"); if (stackerError == 0) ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs
@@ -128,7 +128,7 @@ Dt_LocationInfo locationInfo = new Dt_LocationInfo(); foreach (var item in locationInfosMedium) { if (item.Layer == 7 || item.Layer == 8) if (LayerLimit && (item.Layer == 7 || item.Layer == 8)) { locationInfo = item; break; ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Common/CommonEnum/StationAreaEnum.cs
@@ -109,6 +109,11 @@ /// äºæ¥¼é¾å /// </summary> [Description("äºæ¥¼é¾å")] äºæ¥¼é¾å = 17 äºæ¥¼é¾å = 17, /// <summary> /// äºæ¥¼æååºç¼ååº /// </summary> [Description("äºæ¥¼æååºç¼ååº")] äºæ¥¼æååºç¼ååº = 18 } } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs
@@ -106,6 +106,12 @@ Inbound = 510, /// <summary> /// äºæ¥¼ç«ç¹æåå ¥åº /// </summary> [Description("äºæ¥¼ç«ç¹æåå ¥åº")] Inbound2ndFloor = 515, /// <summary> /// çç¹å ¥åº /// </summary> [Description("çç¹å ¥åº")] ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs
@@ -89,7 +89,7 @@ /// åé åæå··é /// </summary> /// <returns></returns> string AssignYLRoadwayNo(string palletCode); string AssignYLRoadwayNo(string palletCode, int wide = 0, int thickness = 0, int weight = 0); /// <summary> ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_Model/Models/TaskInfo/Dt_Task.cs
@@ -184,7 +184,7 @@ public string WorkCentreCode { get; set; } /// <summary> /// ç©æç¼å· /// MES计åId /// </summary> [ImporterHeader(Name = "MES计åId")] [ExporterHeader(DisplayName = "MES计åId")] ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs
@@ -405,98 +405,200 @@ } if (orderType>0) //æ°å纸å·å¹³å°å ¥åº { //è·å主å Dt_InboundOrder inboundOrder = BaseDal.Db.Queryable<Dt_InboundOrder>().Where(x=>x.OrderType==orderType).Includes(x=>x.Details).Where(x=>x.Details.Any(v=>v.BarCode==palletCode)).First(); if (inboundOrder==null) InOrderTypeEnum inOrderTypeEnum = (InOrderTypeEnum)orderType; if (inOrderTypeEnum== InOrderTypeEnum.PurchaseIn) { throw new Exception($"æªæ¾å°æ¡ç {palletCode}å ¥åºåæ®ä¿¡æ¯"); } Dt_InboundOrderDetail inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x=>x.BarCode == palletCode); if (inboundOrderDetail==null) { throw new Exception($"æªæ¾å°å ¥åºåå·ä¸º{inboundOrder.UpperOrderNo}æ¡ç {palletCode}åæ®ä¿¡æ¯"); } if (inboundOrderDetail.MaterialWide < 690) { return content.Error("æ°åç©æå¹ å®½éå¶ä¸º690-2700mm"); } if (inboundOrderDetail.MaterialThick<=0) { return content.Error("ç©æç´å¾éè¦å¤§äº0"); } if (inboundOrderDetail.OrderDetailStatus != InOrderStatusEnum.æªå¼å§.ObjToInt()) { throw new Exception($"æ¡ç {palletCode}ä¿¡æ¯å·²å ¥åºæå ¥åºä¸"); } Dt_YLInboundCache? yLInboundCache = _inboundRepository.YLInboundCacheRepository.QueryData(x => x.InvOrg == MaterielInvOrgEnum.æ°å.ToString()).FirstOrDefault(); if (yLInboundCache == null) { throw new Exception("æªæ¾å°åææ¡ç ç¼åä¿¡æ¯"); } int Id = yLInboundCache.Id; if (yLInboundCache.BarCode == palletCode) { throw new Exception($"æ¡ç {palletCode}å·²æ«ç "); } else if (yLInboundCache.BarCode != palletCode && yLInboundCache.BindStatus == WhetherEnum.True.ObjToInt()) { yLInboundCache = _mapper.Map<Dt_YLInboundCache>(inboundOrderDetail); yLInboundCache.Id = Id; //è·å主å Dt_PurchaseOrder inboundOrder = BaseDal.Db.Queryable<Dt_PurchaseOrder>().Includes(x => x.Details).Where(x => x.Details.Any(v => v.BarCode == palletCode)).First(); //è·åç©æ Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == inboundOrderDetail.MaterialCode); //çæåºåç»çä¿¡æ¯ Dt_StockInfo stockInfo = new Dt_StockInfo() if (inboundOrder == null) { MaterielInvOrgId = materielInfo.MaterielInvOrgId, PalletCode = inboundOrderDetail.BarCode, RfidCode = "", LocationCode = "", PalletType = 1, WarehouseId = materielInfo.WarehouseId, StockAttribute = materielInfo.MaterielSourceType, StockStatus = StockStatusEmun.ç»çæå.ObjToInt(), MaterielSpec = materielInfo.MaterielSpec, Unit = materielInfo.MaterielUnit, MaterielThickness = inboundOrderDetail.MaterialThick, MaterielWide = inboundOrderDetail.MaterialWide, MaterielWeight = inboundOrderDetail.MaterialWeight, MaterielCode = materielInfo.MaterielCode, MaterielName = materielInfo.MaterielName, BatchNo=inboundOrderDetail.MaterialLot, StockLength = inboundOrderDetail.OrderQuantity }; if (inboundOrderDetail.MaterialWide > 1200) { stockInfo.PalletType = 2; throw new Exception($"æªæ¾å°æ¡ç {palletCode}éè´å ¥åºåæ®ä¿¡æ¯"); } inboundOrderDetail.OrderDetailStatus = InOrderStatusEnum.å ¥åºä¸.ObjToInt(); _unitOfWorkManage.BeginTran(); _inboundRepository.YLInboundCacheRepository.UpdateData(yLInboundCache); //æ°å¢ç»çä¿¡æ¯ _stockRepository.StockInfoRepository.AddData(stockInfo); if (inboundOrder.InboundOrderStatus == InOrderStatusEnum.æªå¼å§.ObjToInt()) Dt_PurchaseOrderDetail inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x => x.BarCode == palletCode); if (inboundOrderDetail == null) { inboundOrder.InboundOrderStatus = InOrderStatusEnum.å ¥åºä¸.ObjToInt(); _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder); throw new Exception($"æªæ¾å°å ¥åºåå·ä¸º{inboundOrder.PurchaseOrderNo}æ¡ç {palletCode}åæ®ä¿¡æ¯"); } _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetail); //å¯å¨çº¿ä½ WebResponseContent webResponse = YLPurchasePush(); if (!webResponse.Status) if (inboundOrderDetail.PurchaseDetailWide < 690) { throw new Exception(webResponse.Message); return content.Error("æ°åç©æå¹ å®½éå¶ä¸º690-2700mm"); } _unitOfWorkManage.CommitTran(); Dt_StockInfo stockInfoAdd = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == stockInfo.PalletCode); //è®°å½åºååå¨ _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfoAdd, 0, stockInfoAdd.StockLength, StockChangeTypeEnum.MaterielGroup); return content.OK("æå", yLInboundCache); if (inboundOrderDetail.PurchaseDetailThickness <= 0) { return content.Error("ç©æç´å¾éè¦å¤§äº0"); } if (inboundOrderDetail.PurchaseDetailStatus != InOrderStatusEnum.æªå¼å§.ObjToInt()) { throw new Exception($"æ¡ç {palletCode}ä¿¡æ¯å·²å ¥åºæå ¥åºä¸"); } Dt_YLInboundCache? yLInboundCache = _inboundRepository.YLInboundCacheRepository.QueryData(x => x.InvOrg == MaterielInvOrgEnum.æ°å.ToString()).FirstOrDefault(); if (yLInboundCache == null) { throw new Exception("æªæ¾å°åææ¡ç ç¼åä¿¡æ¯"); } int Id = yLInboundCache.Id; if (yLInboundCache.BarCode == palletCode) { throw new Exception($"æ¡ç {palletCode}å·²æ«ç "); } else if (yLInboundCache.BarCode != palletCode && yLInboundCache.BindStatus == WhetherEnum.True.ObjToInt()) { yLInboundCache = _mapper.Map<Dt_YLInboundCache>(inboundOrderDetail); yLInboundCache.Id = Id; //è·åç©æ Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == inboundOrderDetail.MaterialCode); //çæåºåç»çä¿¡æ¯ Dt_StockInfo stockInfo = new Dt_StockInfo() { MaterielInvOrgId = materielInfo.MaterielInvOrgId, PalletCode = inboundOrderDetail.BarCode, RfidCode = "", LocationCode = "", PalletType = 1, WarehouseId = materielInfo.WarehouseId, StockAttribute = materielInfo.MaterielSourceType, StockStatus = StockStatusEmun.ç»çæå.ObjToInt(), MaterielSpec = materielInfo.MaterielSpec, Unit = materielInfo.MaterielUnit, MaterielThickness = inboundOrderDetail.PurchaseDetailThickness, MaterielWide = inboundOrderDetail.PurchaseDetailWide, MaterielWeight = inboundOrderDetail.PurchaseDetailWeight, MaterielCode = materielInfo.MaterielCode, MaterielName = materielInfo.MaterielName, BatchNo = inboundOrderDetail.MaterialLot, StockLength = inboundOrderDetail.PurchaseDetailQuantity }; if (inboundOrderDetail.PurchaseDetailWide > 1200) { stockInfo.PalletType = 2; } inboundOrderDetail.PurchaseDetailStatus = InOrderStatusEnum.å ¥åºä¸.ObjToInt(); _unitOfWorkManage.BeginTran(); _inboundRepository.YLInboundCacheRepository.UpdateData(yLInboundCache); //æ°å¢ç»çä¿¡æ¯ _stockRepository.StockInfoRepository.AddData(stockInfo); if (inboundOrder.PurchaseOrderStatus == InOrderStatusEnum.æªå¼å§.ObjToInt()) { inboundOrder.PurchaseOrderStatus = InOrderStatusEnum.å ¥åºä¸.ObjToInt(); _inboundRepository.PurchaseOrderRepository.UpdateData(inboundOrder); } _inboundRepository.PurchaseOrderDetailRepository.UpdateData(inboundOrderDetail); //å¯å¨çº¿ä½ WebResponseContent webResponse = YLPurchasePush(); if (!webResponse.Status) { throw new Exception(webResponse.Message); } _unitOfWorkManage.CommitTran(); Dt_StockInfo stockInfoAdd = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == stockInfo.PalletCode); //è®°å½åºååå¨ _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfoAdd, 0, stockInfoAdd.StockLength, StockChangeTypeEnum.MaterielGroup); return content.OK("æå", yLInboundCache); } else { throw new Exception($"ä¸å·æ¡ç {yLInboundCache.BarCode}è¿æªè¿è¡ç»å®"); } } else { throw new Exception($"ä¸å·æ¡ç {yLInboundCache.BarCode}è¿æªè¿è¡ç»å®"); //è·å主å Dt_InboundOrder inboundOrder = BaseDal.Db.Queryable<Dt_InboundOrder>().Where(x => x.OrderType == orderType).Includes(x => x.Details).Where(x => x.Details.Any(v => v.BarCode == palletCode)).First(); if (inboundOrder == null) { throw new Exception($"æªæ¾å°æ¡ç {palletCode}å ¥åºåæ®ä¿¡æ¯"); } Dt_InboundOrderDetail inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x => x.BarCode == palletCode); if (inboundOrderDetail == null) { throw new Exception($"æªæ¾å°å ¥åºåå·ä¸º{inboundOrder.UpperOrderNo}æ¡ç {palletCode}åæ®ä¿¡æ¯"); } if (inboundOrderDetail.MaterialWide < 690) { return content.Error("æ°åç©æå¹ å®½éå¶ä¸º690-2700mm"); } if (inboundOrderDetail.MaterialThick <= 0) { return content.Error("ç©æç´å¾éè¦å¤§äº0"); } if (inboundOrderDetail.OrderDetailStatus != InOrderStatusEnum.æªå¼å§.ObjToInt()) { throw new Exception($"æ¡ç {palletCode}ä¿¡æ¯å·²å ¥åºæå ¥åºä¸"); } Dt_YLInboundCache? yLInboundCache = _inboundRepository.YLInboundCacheRepository.QueryData(x => x.InvOrg == MaterielInvOrgEnum.æ°å.ToString()).FirstOrDefault(); if (yLInboundCache == null) { throw new Exception("æªæ¾å°åææ¡ç ç¼åä¿¡æ¯"); } int Id = yLInboundCache.Id; if (yLInboundCache.BarCode == palletCode) { throw new Exception($"æ¡ç {palletCode}å·²æ«ç "); } else if (yLInboundCache.BarCode != palletCode && yLInboundCache.BindStatus == WhetherEnum.True.ObjToInt()) { yLInboundCache = _mapper.Map<Dt_YLInboundCache>(inboundOrderDetail); yLInboundCache.Id = Id; //è·åç©æ Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == inboundOrderDetail.MaterialCode); //çæåºåç»çä¿¡æ¯ Dt_StockInfo stockInfo = new Dt_StockInfo() { MaterielInvOrgId = materielInfo.MaterielInvOrgId, PalletCode = inboundOrderDetail.BarCode, RfidCode = "", LocationCode = "", PalletType = 1, WarehouseId = materielInfo.WarehouseId, StockAttribute = materielInfo.MaterielSourceType, StockStatus = StockStatusEmun.ç»çæå.ObjToInt(), MaterielSpec = materielInfo.MaterielSpec, Unit = materielInfo.MaterielUnit, MaterielThickness = inboundOrderDetail.MaterialThick, MaterielWide = inboundOrderDetail.MaterialWide, MaterielWeight = inboundOrderDetail.MaterialWeight, MaterielCode = materielInfo.MaterielCode, MaterielName = materielInfo.MaterielName, BatchNo = inboundOrderDetail.MaterialLot, StockLength = inboundOrderDetail.OrderQuantity }; if (inboundOrderDetail.MaterialWide > 1200) { stockInfo.PalletType = 2; } inboundOrderDetail.OrderDetailStatus = InOrderStatusEnum.å ¥åºä¸.ObjToInt(); _unitOfWorkManage.BeginTran(); _inboundRepository.YLInboundCacheRepository.UpdateData(yLInboundCache); //æ°å¢ç»çä¿¡æ¯ _stockRepository.StockInfoRepository.AddData(stockInfo); if (inboundOrder.InboundOrderStatus == InOrderStatusEnum.æªå¼å§.ObjToInt()) { inboundOrder.InboundOrderStatus = InOrderStatusEnum.å ¥åºä¸.ObjToInt(); _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder); } _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetail); //å¯å¨çº¿ä½ WebResponseContent webResponse = YLPurchasePush(); if (!webResponse.Status) { throw new Exception(webResponse.Message); } _unitOfWorkManage.CommitTran(); Dt_StockInfo stockInfoAdd = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == stockInfo.PalletCode); //è®°å½åºååå¨ _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfoAdd, 0, stockInfoAdd.StockLength, StockChangeTypeEnum.MaterielGroup); return content.OK("æå", yLInboundCache); } else { throw new Exception($"ä¸å·æ¡ç {yLInboundCache.BarCode}è¿æªè¿è¡ç»å®"); } } } else //èå纸å·å¹³å°å ¥åº { @@ -686,7 +788,7 @@ /// <param name="palletCode">æ¡ç å·</param> /// <returns></returns> /// <exception cref="Exception"></exception> public string AssignYLRoadwayNo(string palletCode) public string AssignYLRoadwayNo(string palletCode, int wide = 0, int thickness = 0, int weight = 0) { try { @@ -704,10 +806,19 @@ string roadwayNo = ""; bool isReturn=false; if (stockInfo.MaterielInvOrgId==MaterielInvOrgEnum.æ°å.ObjToInt()) { if (wide>0 && thickness>0 && weight>0) { stockInfo.CheckThickness = thickness; stockInfo.CheckWeight = weight; stockInfo.CheckWide = wide; isReturn = true; } //éå¶ç´å¾ if (stockInfo.CheckThickness >= 300 && stockInfo.CheckThickness <= 1300 && stockInfo.MaterielWide >= 690 && stockInfo.MaterielWide <= 2700) if (stockInfo.CheckThickness >= 300 && stockInfo.CheckThickness <= 1300 && stockInfo.MaterielWide >= 690 && stockInfo.MaterielWide <= 2500) { //è·ååé List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.RoadwayNo.Contains("YLDual") && (stockInfo.PalletType == LocationTypeEnum.MediumPallet.ObjToInt() ? x.LocationType == LocationTypeEnum.MediumPallet.ObjToInt(): x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt())).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).OrderBy(x => x.RoadwayNo).ToList(); @@ -720,17 +831,33 @@ //éå¶ if (stockInfo.CheckThickness >= 800 && stockInfo.CheckThickness <= 1500 && stockInfo.MaterielWide >= 700 && stockInfo.MaterielWide <= 2500) { bool LayerLimit = false; if (stockInfo.CheckThickness > 1300) bool LayerLimit = stockInfo.CheckThickness > 1300; bool RoadwayLimit = stockInfo.MaterielWide > 2200; var query = Db.Queryable<Dt_LocationInfo>() .Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == (int)LocationStatusEnum.Free && x.EnableStatus == (int)EnableStatusEnum.Normal && x.RoadwayNo.Contains("YL")) .Select(x => new { x.RoadwayNo, x.Columns }); // æ ¹æ®æ¡ä»¶è¿æ»¤ if (LayerLimit) { LayerLimit = true; query = query.Where(x => x.Columns >= 56 && !x.RoadwayNo.Contains("YLDual")); } //è·ååé List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.RoadwayNo.Contains("YL") && !x.RoadwayNo.Contains("YLDual") && (LayerLimit ? x.Columns>=56 : x.Columns<=55)).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).OrderBy(x => x.RoadwayNo).ToList(); if (stockInfo.MaterielWide > 2200) if (RoadwayLimit) { locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.RoadwayNo == "SC02_YL" && (LayerLimit ? x.Columns >= 56 : x.Columns <= 55)).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).OrderBy(x => x.RoadwayNo).ToList(); query = query.Where(x => !x.RoadwayNo.Contains("SC01_YL")); } List<LocationCount> locationCounts = query .GroupBy(x => x.RoadwayNo) .Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }) .OrderBy(x => x.RoadwayNo) .ToList(); roadwayNo = HandleRoadway(locationCounts, warehouse); } @@ -742,7 +869,12 @@ roadwayNo = HandleRoadway(locationCounts, warehouse); } } if (isReturn && !string.IsNullOrEmpty(roadwayNo)) { _stockRepository.StockInfoRepository.UpdateData(stockInfo); } return !string.IsNullOrEmpty(roadwayNo) ? (roadwayNo) : throw new Exception("æªæ¾å°å¯åé å··é"); } catch (Exception ex) @@ -1264,6 +1396,10 @@ Quantity = inboundOrderDetail.OrderQuantity, PalletType = 1 }; if (agvstation.StationArea==StationAreaEnum.äºæ¥¼æååºç¼ååº.ToString()) { newTask.TaskType = TaskTypeEnum.Inbound2ndFloor.ObjToInt(); } inboundOrderDetail.OrderDetailStatus = InOrderStatusEnum.å ¥åºä¸.ObjToInt(); _unitOfWorkManage.BeginTran(); if (inboundOrder.InboundOrderStatus == InOrderStatusEnum.æªå¼å§.ObjToInt()) ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs
@@ -164,6 +164,7 @@ return content.Error($"è´§ä½ç¶æä¸æ£ç¡®"); } Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == task.PalletCode); int wareId=stockInfo.WarehouseId; if (stockInfo != null && stockInfo.StockStatus == StockStatusEmun.åºåºéå®.ObjToInt()) { task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); @@ -207,7 +208,7 @@ } } } _basicService.LocationInfoService.UpdateLocationStatus(locationInfoStart, stockInfo.PalletType, LocationStatusEnum.Free, stockInfo.WarehouseId); _basicService.LocationInfoService.UpdateLocationStatus(locationInfoStart, stockInfo.PalletType, LocationStatusEnum.Free, wareId); BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.äººå·¥å®æ : OperateTypeEnum.èªå¨å®æ); _unitOfWorkManage.CommitTran(); } @@ -242,7 +243,7 @@ DispatchPlanMaterialId=item.OrderDetailId, UnitCode=item.Unit, GradeCode="001", MainQuantity=item.AssignQuantity, MainQuantity=item.OriginalQuantity, AssistUnitCode=item.AssistUnit, LocationCode= address, LotNumber=item.BatchNo, ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs
@@ -201,9 +201,9 @@ /// <param name="palletCode"></param> /// <returns></returns> [HttpPost, HttpGet, Route("AssignYLRoadwayNo"), AllowAnonymous] public WebResponseContent AssignYLRoadwayNo(string palletCode) public WebResponseContent AssignYLRoadwayNo(string palletCode,int wide = 0, int thickness = 0, int weight = 0) { string roadWay= Service.AssignYLRoadwayNo(palletCode); string roadWay= Service.AssignYLRoadwayNo(palletCode, wide, thickness, wide); if (string.IsNullOrEmpty(roadWay)) { return WebResponseContent.Instance.Error("æªæ¾å°å¯åé å··é"); ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Filter/CustomProfile.cs
@@ -83,6 +83,8 @@ CreateMap<InboundDetailItem, Dt_InboundOrderDetail>().ForMember(x => x.OrderQuantity, b => b.MapFrom(b => b.MaterialQty)).ForMember(x => x.OrderDetailStatus, b => b.MapFrom(b => InOrderStatusEnum.æªå¼å§.ObjToInt())).ForMember(x => x.MaterialThick, b => b.MapFrom(b => b.Thickness)).ForMember(x => x.MaterialWide, b => b.MapFrom(b => b.Wide)).ForMember(x => x.MaterialWeight, b => b.MapFrom(b => b.Weight)).ForMember(x => x.OrderQuantity, b => b.MapFrom(b => b.MaterialQty)); //åæéç¼åéè´è½¬æ¢ CreateMap<Dt_InboundOrderDetail, Dt_YLInboundCache>().ForMember(x => x.Id, b => b.MapFrom(b => 0)).ForMember(x => x.BindStatus, b => b.MapFrom(b => WhetherEnum.False.ObjToInt())).ForMember(x => x.RfidCode, b => b.MapFrom(b => "")).ForMember(x => x.MaterialNo, b => b.MapFrom(b => b.MaterialCode)).ForMember(x => x.InvOrg, b => b.MapFrom(b => MaterielInvOrgEnum.æ°å.ToString())); //äºæç¼åéè´è½¬æ¢ CreateMap<Dt_PurchaseOrderDetail, Dt_YLInboundCache>().ForMember(x => x.Id, b => b.MapFrom(b => 0)).ForMember(x => x.BindStatus, b => b.MapFrom(b => WhetherEnum.False.ObjToInt())).ForMember(x => x.RfidCode, b => b.MapFrom(b => "")).ForMember(x => x.MaterialNo, b => b.MapFrom(b => b.MaterialCode)).ForMember(x => x.InvOrg, b => b.MapFrom(b => MaterielInvOrgEnum.æ°å.ToString())).ForMember(x => x.MaterialWide, b => b.MapFrom(b => b.PurchaseDetailWide)).ForMember(x => x.MaterialThick, b => b.MapFrom(b => b.PurchaseDetailThickness)).ForMember(x => x.ProcurementLength, b => b.MapFrom(b => b.PurchaseDetailQuantity)).ForMember(x => x.DeliveryQty, b => b.MapFrom(b => b.PurchaseDetailWeight)); //åæéåºåºè¯¦æ èååºåºçº¿ä½ç¼åè½¬æ¢ CreateMap<Dt_OutStockLockInfo, Dt_OutLineView>().ForMember(x => x.Id, b => b.MapFrom(b => 0)); } ÏîÄ¿´úÂë/ÁúÀûµÃPDA/common/config.js
@@ -1,6 +1,6 @@ let config = { baseUrl: 'http://192.168.35.3:9283', //baseUrl: 'http://127.0.0.1:9293', //baseUrl: 'http://192.168.35.3:9283', baseUrl: 'http://127.0.0.1:9293', urls: [ 'http://192.168.35.3:9283', 'http://192.168.35.3:9283' ÏîÄ¿×ÊÁÏ/½Ó¿ÚÐÒé/WMSÎĵµ20251119.docxBinary files differ
ÏîÄ¿×ÊÁÏ/½Ó¿ÚÐÒé/WMSÎĵµ20251216.docxBinary files differ
ÏîÄ¿×ÊÁÏ/½Ó¿ÚÐÒé/²©Ë¹Í¨ÀûÍØ½Ó¿Ú.V2.xlsxBinary files differ