| 项目代码/WCS/WCSServices/WIDESEAWCS_Model/Models/PackInfo/Dt_StationPackInfo.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPH.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目代码/WMS/WMSServices/WIDESEA_WMSServer/appsettings.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| 项目资料/通信协议/二楼环线20250715.xlsx | 补丁 | 查看 | 原始文档 | blame | 历史 |
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Model/Models/PackInfo/Dt_StationPackInfo.cs
@@ -78,6 +78,12 @@ public int ExecutingNum { get; set; } /// <summary> /// æåº /// </summary> [SugarColumn(IsNullable = true, ColumnDescription = "æåº")] public int OrderIndex { get; set; } /// <summary> /// ç å已宿æ°é /// </summary> [SugarColumn(IsNullable = false, ColumnDescription = "ç å已宿æ°é")] ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_TaskInfoService/PackaxisTaskService.cs
@@ -1,4 +1,5 @@ using Newtonsoft.Json; using SqlSugar; using System; using System.Collections.Generic; using System.ComponentModel; @@ -39,6 +40,7 @@ _stationMangerRepository = stationMangerRepository; _unitOfWorkManage = unitOfWorkManage; } private static object lock_reqPackTask = new object(); /// <summary> /// åé ç åä»»å¡ /// </summary> @@ -46,6 +48,8 @@ /// <param name="deviceCode"></param> /// <returns></returns> public WebResponseContent ReqPackTask(string barCode,string deviceCode) { lock (lock_reqPackTask) { WebResponseContent content= new WebResponseContent(); try @@ -92,14 +96,14 @@ { //è·åå½å空çåå¤çç åå·¥ä½ List<string> stations = _stationMangerRepository.QueryData(x => x.StationDeviceCode == "CLC_CP" && x.IsOccupied == StationOccupiedEnum.None.ObjToInt()).Select(x => x.StationCode).ToList(); //è·åç åé 置表æ¥è¯¢æé ç½®çç åå·¥ä½ List<Dt_Packaxis> packaxes = _packaxisRepository.QueryData(x => x.PackType == packinfo.PackType); //è·åç åé 置表æ¥è¯¢å¯åé å¹¶å·²é ç½®çç åå·¥ä½ List<Dt_Packaxis> packaxes = _packaxisRepository.QueryData(x => x.PackType == packinfo.PackType && stations.Contains(x.StationCode)); if (packaxes.Count==0) { return content.Error("æªæ¾å°ç ååæ é ç½®"); return content.Error("æªæ¾å°å¯åé ç åé ç½®"); } List<string> packStations = packaxes.Select(x => x.StationCode).ToList(); Dt_StationPackInfo? packInfoAssign = stationPackInfos.Where(x => x.PackType == 0 && x.AssignNum == 0 && stations.Contains(x.StationCode) && packStations.Contains(x.StationCode)).OrderByDescending(x => x.StationCode).FirstOrDefault(); Dt_StationPackInfo? packInfoAssign = stationPackInfos.Where(x => x.PackType == 0 && x.AssignNum == 0 && packStations.Contains(x.StationCode)).OrderBy(x => x.OrderIndex).FirstOrDefault(); if (packInfoAssign == null) { return content.Error("æªæ¾å°å¯åé åä½"); @@ -144,6 +148,7 @@ content.Error(ex.Message); } return content; } } /// <summary> /// ç åç»æå¹¶ä¸ä¼ ç åå·¥ä½ç åæç»æ°æ® @@ -247,4 +252,10 @@ } } } public class MDCount { public string MDNo { get; set; } public int Count { get; set; } } } ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Tasks/³ÉÆ·²Ö/ConveyorLineJob_CPH.cs
@@ -97,7 +97,7 @@ { shouldRestart = false; Dt_StationManger? RequestIn = stationMangers.FirstOrDefault(x => x.StationDeviceCode == device.DeviceCode && x.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt()); WriteError($"çº¿ç¨ {Thread.CurrentThread.ManagedThreadId}","å¼å§æ§è¡"); WriteInfo($"çº¿ç¨ {Thread.CurrentThread.ManagedThreadId}ååå£","å¼å§æ§è¡"); while (true) { if (RequestIn != null) @@ -111,7 +111,7 @@ if (conveyorLineInfoRead != null && (conveyorLineInfoRead.R_State == 2 || conveyorLineInfoRead.R_State == 3) && conveyorLineInfoRead.R_TaskNo <= 0 && !string.IsNullOrEmpty(conveyorLineInfoRead.R_BoxCode) && conveyorLineInfoRead.R_Request == 1) { //夿æ¯å¦ä»»å¡å·²ç»åå¨ Dt_PackaxisTask packaxisTask = _packaxisTaskRepository.QueryFirst(x => x.BarCode == conveyorLineInfoRead.R_BoxCode.Trim() && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt()); Dt_PackaxisTask packaxisTask = _packaxisTaskRepository.Db.Queryable<Dt_PackaxisTask>().Where(x => x.BarCode == conveyorLineInfoRead.R_BoxCode.Trim() && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt()).First(); if (packaxisTask != null) { //åå ¥æ§è¡æ°æ® @@ -165,7 +165,7 @@ } catch (Exception ex) { WriteError($"çº¿ç¨ {Thread.CurrentThread.ManagedThreadId}", $"å¼å¸¸:{ex.Message}"); WriteInfo($"çº¿ç¨ {Thread.CurrentThread.ManagedThreadId}ååå£", $"å¼å¸¸:{ex.Message}"); Thread.Sleep(1500); shouldRestart = true; } @@ -182,7 +182,7 @@ shouldRestart = false; //è·åææç åå£ List<Dt_StationManger> stationMangersMD = stationMangers.Where(x => x.StationDeviceCode == device.DeviceCode && x.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt()).ToList(); WriteError($"çº¿ç¨ {Thread.CurrentThread.ManagedThreadId}", "å¼å§æ§è¡"); WriteInfo($"çº¿ç¨ {Thread.CurrentThread.ManagedThreadId}ç åå£", "å¼å§æ§è¡"); while (true) { if (stationMangersMD.Count > 0) @@ -230,7 +230,7 @@ } catch (Exception ex) { WriteError($"çº¿ç¨ {Thread.CurrentThread.ManagedThreadId}", $"å¼å¸¸:{ex.Message}"); WriteInfo($"çº¿ç¨ {Thread.CurrentThread.ManagedThreadId}ç åå£", $"å¼å¸¸:{ex.Message}"); Thread.Sleep(1500); shouldRestart = true; } ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs
@@ -195,7 +195,7 @@ return content; } //è·åææçåºåºè¯¦æ 夿æ¯å¦æ»¡è¶³åºåºéå°äº5ä¸ä¸å°äº17å· List<Dt_OutStockLockInfo> outStockLockInfos = _outboundRepository.OutStockLockInfoRepository.QueryData(x=>x.OrderType==OutOrderTypeEnum.OutSGPick.ObjToInt() && x.Status<=OutLockStockStatusEnum.å ³é.ObjToInt()); List<Dt_OutStockLockInfo> outStockLockInfos = _outboundRepository.OutStockLockInfoRepository.QueryData(x=>x.OrderType==OutOrderTypeEnum.OutSGPick.ObjToInt() && x.Status<OutLockStockStatusEnum.å ³é.ObjToInt()); decimal sumAssignQty = outStockLockInfos.Sum(x => x.AssignQuantity); int outCount= outStockLockInfos.Select(x=>x.PalletCode).Distinct().Count(); if (sumAssignQty < AppSettings.Get("OutSGLength").ObjToInt() && outCount < AppSettings.Get("OutSGCount").ObjToInt()) ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs
@@ -367,7 +367,8 @@ BSTStockInfoDTO bSTStockInfoDTO = bSTResponse.Data ?? throw new Exception($"䏿ERPæªè¿å{stockInfoOld.PalletCode}çåºåä¿¡æ¯"); stockInfoOld.IsPick = WhetherEnum.False.ObjToInt(); decimal stockLength = bSTStockInfoDTO.StockMeter; if (weight != bSTStockInfoDTO.Qty && weight < stockInfoOld.InitialWeight) decimal errWeight = Math.Abs(weight - bSTStockInfoDTO.Qty); if (weight != bSTStockInfoDTO.Qty && weight < stockInfoOld.InitialWeight && errWeight <= AppSettings.Get("ErrWeight").ObjToInt()) { Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterialSourceId == stockInfoOld.MaterielId); int gramWeight = (int)(materielInfo.MaterielWeight * 1000); @@ -376,7 +377,7 @@ Paper_code = stockInfoOld.PalletCode, Estimate_weight = bSTStockInfoDTO.Qty, Actual_weight = weight, Error_weight = Math.Abs(weight - bSTStockInfoDTO.Qty), Error_weight = errWeight, Weigh_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), Operator = "LiKu", Width = bSTStockInfoDTO.W, ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs
@@ -947,6 +947,7 @@ public WebResponseContent ReceiveOutBound(List<OutMESOrderDTO> outMESOrderDTOs) { WebResponseContent content = new WebResponseContent(); string ErrorMsg = ""; try { if (outMESOrderDTOs == null || outMESOrderDTOs.Count <= 0) @@ -976,11 +977,11 @@ //è·åææå å·¥ä¸å¿ List<Dt_MakeCenterInfo> makeCenterInfos = _basicRepository.MakeCenterInfoRepository.QueryData(); OutMESOrderDTO? CheckMaterialCode = outMESOrderDTOs.FirstOrDefault(x => !materielInfos.Select(x => x.MaterielCode).Contains(x.MaterialCode)); if (CheckMaterialCode != null) { return content.Error($"ç©æç¼ç {nameof(OutMESOrderDTO.MaterialCode)}:{CheckMaterialCode.MaterialCode}ä¿¡æ¯ä¸åå¨"); } //OutMESOrderDTO? CheckMaterialCode = outMESOrderDTOs.FirstOrDefault(x => !materielInfos.Select(x => x.MaterielCode).Contains(x.MaterialCode)); //if (CheckMaterialCode != null) //{ // return content.Error($"ç©æç¼ç {nameof(OutMESOrderDTO.MaterialCode)}:{CheckMaterialCode.MaterialCode}ä¿¡æ¯ä¸åå¨"); //} OutMESOrderDTO? CheckMakeCenterCode = outMESOrderDTOs.FirstOrDefault(x => !makeCenterInfos.Select(x => x.MakeCode).Contains(x.MakeCode)); if (CheckMakeCenterCode!=null) { @@ -991,17 +992,23 @@ { return content.Error($"é¢æè®¡å{nameof(OutMESOrderDTO.OutDetailId)}:{OldoutMESOrder.OutDetailId}ä¿¡æ¯å·²åå¨"); } List<Dt_OutMESOrder> AddoutMESOrders = outMESOrderDTOs.Select(x => _mapper.Map<Dt_OutMESOrder>(x)).ToList(); foreach (var item in AddoutMESOrders) List<Dt_OutMESOrder> AddoutMESOrders = new List<Dt_OutMESOrder>(); foreach (var item in outMESOrderDTOs) { Dt_MaterielInfo materielInfo = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterialCode); Dt_MakeCenterInfo makeCenterInfo=makeCenterInfos.FirstOrDefault(x => x.MakeCode == item.MakeCode); item.MakeArea = makeCenterInfo.MakeArea; item.WarehouseId = materielInfo.WarehouseId; item.MaterielUnit = materielInfo.MaterielUnit; item.AssistUnitCode = materielInfo.AssistUnitCode; Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterialCode); if (materielInfo==null) { ErrorMsg += $"ç©æç¼ç :{item.MaterialCode}ä¿¡æ¯ä¸åå¨;"; continue; } Dt_MakeCenterInfo makeCenterInfo = makeCenterInfos.FirstOrDefault(x => x.MakeCode == item.MakeCode); Dt_OutMESOrder outMESOrder = _mapper.Map<Dt_OutMESOrder>(item); outMESOrder.MakeArea = makeCenterInfo.MakeArea; outMESOrder.WarehouseId = materielInfo.WarehouseId; outMESOrder.MaterielUnit = materielInfo.MaterielUnit; outMESOrder.AssistUnitCode = materielInfo.AssistUnitCode; AddoutMESOrders.Add(outMESOrder); } _unitOfWorkManage.BeginTran(); //æä½æ°æ®ï¼å¹¶åé éæ±åºå _outboundRepository.OutMESOrderRepository.AddData(AddoutMESOrders); @@ -1090,8 +1097,7 @@ // } //} _unitOfWorkManage.CommitTran(); return content.OK("æ¥æ¶æå"); return content.OK(ErrorMsg.IsNullOrEmpty()? "æ¥æ¶æå" : $"ä¿¡æ¯ï¼{ErrorMsg}"); } catch (Exception ex) { ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/appsettings.json
@@ -33,6 +33,7 @@ "ExpMinutes": 360, "QuartzJobAutoStart": true, "OutSGLength": "50000", "ErrWeight": "60", //误差ééä¸è¶ è¿ "OutSGCount": "17", "PDAVersion": "4", "WebSocketPort": 9296 ÏîÄ¿×ÊÁÏ/ͨÐÅÐÒé/¶þÂ¥»·Ïß20250715.xlsxBinary files differ