| | |
| | | using SqlSugar; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; |
| | | using WIDESEA_DTO.MES; |
| | | using WIDESEA_External.Model; |
| | | using System.Text.Json; |
| | | using System.Text.RegularExpressions; |
| | | |
| | | namespace WIDESEA_TaskInfoService |
| | | { |
| | |
| | | { |
| | | return content.Error($"é¢æè®¡å{nameof(MESAutoIssueDTO.OutDetailId)}{autoIssueDTO.OutDetailId}ä¸åå¨"); |
| | | } |
| | | if (outMESOrder.OutMESOrderStatus==OutOrderStatusEnum.å
³é.ObjToInt()) |
| | | if (outMESOrder.OutMESOrderStatus==OutOrderStatusEnum.åºåºå®æ.ObjToInt()) |
| | | { |
| | | return content.Error($"é¢æè®¡å{nameof(MESAutoIssueDTO.OutDetailId)}{outMESOrder.ProductOrderNo}å·¥åå·²å
³é"); |
| | | return content.Error($"é¢æè®¡å{nameof(MESAutoIssueDTO.OutDetailId)}{outMESOrder.ProductOrderNo}å·¥åå·²åºåºå®æ"); |
| | | } |
| | | //è·åå¨è½¬ä½ç½®ç¼å· |
| | | Dt_AGVStationInfo? stationInfo = _basicRepository.AGVStationInfoRepository.QueryFirst(x=>x.MESPointCode==autoIssueDTO.PointCode); |
| | |
| | | { |
| | | return content.Error($"é¢æè®¡åå¨è½¬ä½{nameof(MESAutoIssueDTO.PointCode)}{autoIssueDTO.PointCode}åå¨ç©ºæ"); |
| | | } |
| | | //Dt_Task? task = BaseDal.QueryData(x => x.OrderNo == outMESOrder.OutMESOrderNo && x.TaskStatus == TaskStatusEnum.CallPending.ObjToInt()).OrderByDescending(x => x.Grade).ThenBy(x => x.TaskNum).FirstOrDefault(); |
| | | ////è·åä»»å¡ |
| | | //if (task == null) |
| | | //{ |
| | | // return content.Error($"æªæ¾å°é¢æè®¡åç¼å·{outMESOrder.ProductOrderNo}å¯é
éä»»å¡"); |
| | | //} |
| | | //task.TaskStatus = TaskStatusEnum.New.ObjToInt(); |
| | | //task.TargetAddress = stationInfo.AGVStationCode; |
| | | //PushTasksToWCS(new List<Dt_Task> { task }); |
| | | Dt_Task? task = BaseDal.QueryData(x => x.OrderNo == outMESOrder.OutMESOrderNo && x.TaskStatus == TaskStatusEnum.CallPending.ObjToInt()).OrderByDescending(x => x.Grade).ThenBy(x => x.TaskNum).FirstOrDefault(); |
| | | //è·åä»»å¡ |
| | | if (task == null) |
| | | { |
| | | return content.Error($"æªæ¾å°é¢æè®¡åç¼å·{outMESOrder.ProductOrderNo}å¯é
éä»»å¡"); |
| | | } |
| | | //è·åä»»å¡åºåºè¯¦æ
|
| | | Dt_OutStockLockInfo outStockLockInfo = _outboundRepository.OutStockLockInfoRepository.QueryFirst(x => x.TaskNum == task.TaskNum); |
| | | //è°ç¨MESé
éåºåæä»¤ |
| | | PlanDistributionInfo planDistribution = new PlanDistributionInfo() |
| | | { |
| | | DispatchPlanMaterialId = autoIssueDTO.OutDetailId, |
| | | InvItemCode = task.MaterielCode, |
| | | Quantity = outStockLockInfo.AssignQuantity, |
| | | SendOutTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), |
| | | ArrivalTime = DateTime.Now.AddMinutes(10).ToString("yyyy-MM-dd hh:mm:ss") |
| | | }; |
| | | MESDispatchModel dispatchModel= new MESDispatchModel() |
| | | { |
| | | PRO_DispachPlanDistributionInfos=new List<PlanDistributionInfo> (){ planDistribution } |
| | | }; |
| | | _unitOfWorkManage.BeginTran(); |
| | | task.TaskStatus = TaskStatusEnum.New.ObjToInt(); |
| | | task.TargetAddress = stationInfo.AGVStationCode; |
| | | BaseDal.UpdateData(task); |
| | | MESResponse mESResponse = _invokeMESService.MESDispatchUp(dispatchModel).DeserializeObject<MESResponse>() ?? throw new Exception("æªè·åå°è¿åä¿¡æ¯"); |
| | | if (!mESResponse.Result) |
| | | { |
| | | throw new Exception($"MESé
éåºåæ¥å£è°ç¨æ¥é,MESè¿åä¿¡æ¯{DecodeUnicode(mESResponse.Msg)}"); |
| | | } |
| | | PushTasksToWCS(new List<Dt_Task> { task }); |
| | | _unitOfWorkManage.CommitTran(); |
| | | return content.OK("嫿æå"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | //å°Unicodeè§£ææä¸æ |
| | | public static string DecodeUnicode(string input) |
| | | { |
| | | return Regex.Replace(input, @"\\u([0-9a-fA-F]{4})", match => { |
| | | return ((char)Convert.ToInt32(match.Groups[1].Value, 16)).ToString(); |
| | | }); |
| | | } |
| | | |
| | | public WebResponseContent ReceiveManualIssue(MESManualIssueDTO manualIssueDTO) |
| | |
| | | { |
| | | return content.Error($"é¢æè®¡åå¨è½¬ä½{nameof(MESAutoIssueDTO.PointCode)}{manualIssueDTO.PointCode}ä¸åå¨"); |
| | | } |
| | | //Dt_Task? task = BaseDal.QueryData(x => x.OrderNo == outMESOrder.OutMESOrderNo && x.TaskStatus == TaskStatusEnum.CallPending.ObjToInt()).OrderByDescending(x => x.Grade).ThenBy(x => x.TaskNum).FirstOrDefault(); |
| | | ////è·åä»»å¡ |
| | | //if (task == null) |
| | | //{ |
| | | // return content.Error($"æªæ¾å°é¢æè®¡åç¼å·{outMESOrder.ProductOrderNo}å¯é
éä»»å¡"); |
| | | //} |
| | | //task.TaskStatus = TaskStatusEnum.New.ObjToInt(); |
| | | //task.TargetAddress = stationInfo.AGVStationCode; |
| | | //PushTasksToWCS(new List<Dt_Task> { task }); |
| | | Dt_Task? task = BaseDal.QueryData(x => x.OrderNo == outMESOrder.OutMESOrderNo && x.TaskStatus == TaskStatusEnum.CallPending.ObjToInt()).OrderByDescending(x => x.Grade).ThenBy(x => x.TaskNum).FirstOrDefault(); |
| | | //è·åä»»å¡ |
| | | if (task == null) |
| | | { |
| | | return content.Error($"æªæ¾å°é¢æè®¡åç¼å·{outMESOrder.ProductOrderNo}å¯é
éä»»å¡"); |
| | | } |
| | | //è·åä»»å¡åºåºè¯¦æ
|
| | | Dt_OutStockLockInfo outStockLockInfo = _outboundRepository.OutStockLockInfoRepository.QueryFirst(x => x.TaskNum == task.TaskNum); |
| | | //è°ç¨MESé
éåºåæä»¤ |
| | | PlanDistributionInfo planDistribution = new PlanDistributionInfo() |
| | | { |
| | | DispatchPlanMaterialId = manualIssueDTO.OutDetailId, |
| | | InvItemCode = task.MaterielCode, |
| | | Quantity = outStockLockInfo.AssignQuantity, |
| | | SendOutTime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), |
| | | ArrivalTime = DateTime.Now.AddMinutes(10).ToString("yyyy-MM-dd hh:mm:ss") |
| | | }; |
| | | MESDispatchModel dispatchModel = new MESDispatchModel() |
| | | { |
| | | PRO_DispachPlanDistributionInfos = new List<PlanDistributionInfo>() { planDistribution } |
| | | }; |
| | | _unitOfWorkManage.BeginTran(); |
| | | task.TaskStatus = TaskStatusEnum.New.ObjToInt(); |
| | | task.TargetAddress = stationInfo.AGVStationCode; |
| | | BaseDal.UpdateData(task); |
| | | MESResponse mESResponse = _invokeMESService.MESDispatchUp(dispatchModel).DeserializeObject<MESResponse>() ?? throw new Exception("æªè·åå°è¿åä¿¡æ¯"); |
| | | if (!mESResponse.Result) |
| | | { |
| | | throw new Exception($"MESé
éåºåæ¥å£è°ç¨æ¥é,MESè¿åä¿¡æ¯{DecodeUnicode(mESResponse.Msg)}"); |
| | | } |
| | | PushTasksToWCS(new List<Dt_Task> { task }); |
| | | _unitOfWorkManage.CommitTran(); |
| | | return content.OK("嫿æå"); |
| | | } |
| | | catch (Exception ex) |