| | |
| | | OutCarton = 360, |
| | | |
| | | /// <summary> |
| | | /// äºæ¥¼çº¸ç®±ä¾æ |
| | | /// </summary> |
| | | [Description("纸æ¯çº¸ç便")] |
| | | OutScrapsPaper = 370, |
| | | |
| | | /// <summary> |
| | | /// æ çººå¸æ·èåºåº |
| | | /// </summary> |
| | | [Description("æ çººå¸æ·èåºåº")] |
| | | OutWFBLM = 370, |
| | | OutWFBLM = 380, |
| | | |
| | | /// <summary> |
| | | /// å²ååºåºåº |
| | |
| | | InPick = 530, |
| | | |
| | | /// <summary> |
| | | /// 空æåå ç |
| | | /// </summary> |
| | | [Description("空æåå ç")] |
| | | EmptyPaletteBack = 535, |
| | | |
| | | /// <summary> |
| | | /// æåå
¥åº |
| | | /// </summary> |
| | | [Description("æåå
¥åº")] |
| | |
| | | EmptyProductBack = 630, |
| | | |
| | | /// <summary> |
| | | /// åååæåå
¥åº |
| | | /// </summary> |
| | | [Description("åååæåå
¥åº")] |
| | | PartOffInbound = 680, |
| | | |
| | | /// <summary> |
| | | /// 模ååæåå
¥åº |
| | | /// </summary> |
| | | [Description("模ååæåå
¥åº")] |
| | | DieCutInbound = 685, |
| | | |
| | | /// <summary> |
| | | /// å²ååæåå
¥åº |
| | | /// </summary> |
| | | [Description("å²ååæåå
¥åº")] |
| | | PunchingInbound = 690, |
| | | |
| | | /// <summary> |
| | | /// æ 纺å¸åæåå
¥åº |
| | | /// </summary> |
| | | [Description("æ 纺å¸åæåå
¥åº")] |
| | | WFBYLInbound = 700, |
| | | WFBYLInbound = 695, |
| | | |
| | | /// <summary> |
| | | /// æ çººå¸æ·èåæåå
¥åº |
| | | /// </summary> |
| | | [Description("æ çººå¸æ·èåæåå
¥åº")] |
| | | WFBLMYLInbound = 700, |
| | | |
| | | /// <summary> |
| | | /// çº¸å¼ æ·èåæåå
¥åº |
| | |
| | | { |
| | | public interface IPackaxisTaskService : IService<Dt_PackaxisTask> |
| | | { |
| | | /// <summary> |
| | | /// åé
ç åä»»å¡ |
| | | /// </summary> |
| | | /// <param name="barCode"></param> |
| | | /// <param name="deviceCode"></param> |
| | | /// <returns></returns> |
| | | WebResponseContent ReqPackTask(string barCode, string deviceCode); |
| | | /// <summary> |
| | | /// ç åä»»å¡å®æ |
| | | /// </summary> |
| | | /// <param name="taskNum"></param> |
| | | /// <param name="packaxisTask"></param> |
| | | /// <returns></returns> |
| | | WebResponseContent TaskCompleted(int taskNum=0,Dt_PackaxisTask? packaxisTask=null); |
| | | //ç åç»æå¹¶ä¸ä¼ ç åå·¥ä½ç åæç»æ°æ® |
| | | WebResponseContent BoxingInBound(string stationCode); |
| | | } |
| | | } |
| | |
| | | } |
| | | else |
| | | { |
| | | if (task.TaskType == TaskTypeEnum.PrintYLInbound.ObjToInt() || task.TaskType == TaskTypeEnum.PrintYLBackInbound.ObjToInt() || task.TaskType == TaskTypeEnum.EmptyPaletteBack.ObjToInt()) |
| | | if (task.TaskType == TaskTypeEnum.PrintYLInbound.ObjToInt() || task.TaskType == TaskTypeEnum.PrintYLBackInbound.ObjToInt()) |
| | | { |
| | | var content = TakeFinish(task.CurrentAddress); |
| | | if (!content.Status) |
| | |
| | | _stationMangerRepository = stationMangerRepository; |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | } |
| | | /// <summary> |
| | | /// åé
ç åä»»å¡ |
| | | /// </summary> |
| | | /// <param name="barCode"></param> |
| | | /// <param name="deviceCode"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent ReqPackTask(string barCode,string deviceCode) |
| | | { |
| | | WebResponseContent content= new WebResponseContent(); |
| | |
| | | } |
| | | return content; |
| | | } |
| | | /// <summary> |
| | | /// ç åç»æå¹¶ä¸ä¼ ç åå·¥ä½ç åæç»æ°æ® |
| | | /// </summary> |
| | | /// <param name="stationCode"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent BoxingInBound(string stationCode) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | |
| | | } |
| | | return content; |
| | | } |
| | | /// <summary> |
| | | /// ç åä»»å¡å®æ |
| | | /// </summary> |
| | | /// <param name="taskNum"></param> |
| | | /// <param name="packaxisTask"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent TaskCompleted(int taskNum=0,Dt_PackaxisTask? packaxisTask=null) |
| | | { |
| | | try |
| | | { |
| | | _unitOfWorkManage.BeginTran(); |
| | | |
| | | Dt_PackaxisTask? packaxisTaskFinish = null; |
| | | if (packaxisTask!=null) |
| | | { |
| | |
| | | StationPackId = stationPackInfo.id, |
| | | BoxCode = packaxisTaskFinish.BarCode |
| | | }; |
| | | _unitOfWorkManage.BeginTran(); |
| | | _stationPackInfoRepository.UpdateData(stationPackInfo); |
| | | _stationPackDetailRepository.AddData(stationPackDetail); |
| | | BaseDal.DeleteAndMoveIntoHty(packaxisTaskFinish, App.User?.UserId == 0 ? OperateTypeEnum.èªå¨å®æ : OperateTypeEnum.äººå·¥å®æ); |
| | | _unitOfWorkManage.CommitTran(); |
| | | } |
| | | else |
| | | { |
| | | return WebResponseContent.Instance.Error("æªæ¾å°ä»»å¡"); |
| | | } |
| | | _unitOfWorkManage.CommitTran(); |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | } |
| | | } |
| | | } |
| | | private readonly static object lockerCompleted = new object(); |
| | | /// <summary> |
| | | /// ä»»å¡å®æ |
| | | /// </summary> |
| | |
| | | { |
| | | try |
| | | { |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (task != null) |
| | | lock (lockerCompleted) |
| | | { |
| | | task.TaskState = TaskStatusEnum.Finish.ObjToInt(); |
| | | BaseDal.DeleteAndMoveIntoHty(task, App.User?.UserId == 0 ? OperateTypeEnum.èªå¨å®æ : OperateTypeEnum.äººå·¥å®æ); |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); |
| | | if (task != null) |
| | | { |
| | | task.TaskState = TaskStatusEnum.Finish.ObjToInt(); |
| | | BaseDal.DeleteAndMoveIntoHty(task, App.User?.UserId == 0 ? OperateTypeEnum.èªå¨å®æ : OperateTypeEnum.äººå·¥å®æ); |
| | | } |
| | | string? url = apiInfos.FirstOrDefault(x => x.ApiCode == APIEnum.FeedBackWMSTaskCompleted.ToString())?.ApiAddress; |
| | | if (string.IsNullOrEmpty(url)) |
| | | { |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"æªæ¾å°WMSä»»å¡å®ææ¥å£,è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | UpdateTaskExceptionMessage(taskNum, $"æªæ¾å°WMSä»»å¡å®ææ¥å£,è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | return WebResponseContent.Instance.Error($"{taskNum},æªæ¾å°WMSä»»å¡å®ææ¥å£,è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | } |
| | | string responseStr = HttpHelper.Get(url + "?taskNum=" + taskNum); |
| | | WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(responseStr) ?? WebResponseContent.Instance.Error($"{taskNum},æªæ¥æ¶å°ä»»å¡å®æè¿åå¼"); |
| | | return content; |
| | | } |
| | | string? url = apiInfos.FirstOrDefault(x => x.ApiCode == APIEnum.FeedBackWMSTaskCompleted.ToString())?.ApiAddress; |
| | | if (string.IsNullOrEmpty(url)) |
| | | { |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"æªæ¾å°WMSä»»å¡å®ææ¥å£,è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | UpdateTaskExceptionMessage(taskNum, $"æªæ¾å°WMSä»»å¡å®ææ¥å£,è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | return WebResponseContent.Instance.Error($"{taskNum},æªæ¾å°WMSä»»å¡å®ææ¥å£,è¯·æ£æ¥æ¥å£é
ç½®"); |
| | | } |
| | | string responseStr = HttpHelper.Get(url + "?taskNum=" + taskNum); |
| | | WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(responseStr) ?? WebResponseContent.Instance.Error($"{taskNum},æªæ¥æ¶å°ä»»å¡å®æè¿åå¼"); |
| | | return content; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode); |
| | | Task.Run(() => |
| | | { |
| | | try |
| | | bool shouldRestart = true; |
| | | |
| | | while (shouldRestart) |
| | | { |
| | | Dt_StationManger? RequestIn = stationMangers.FirstOrDefault(x => x.StationDeviceCode == device.DeviceCode && x.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt()); |
| | | while (true) |
| | | try |
| | | { |
| | | if (RequestIn != null) |
| | | shouldRestart = false; |
| | | Dt_StationManger? RequestIn = stationMangers.FirstOrDefault(x => x.StationDeviceCode == device.DeviceCode && x.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt()); |
| | | WriteError($"çº¿ç¨ {Thread.CurrentThread.ManagedThreadId}","å¼å§æ§è¡"); |
| | | while (true) |
| | | { |
| | | DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == RequestIn.StationCode && x.DeviceProParamType == nameof(R_CLineCPHDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == RequestIn.StationCode && x.DeviceProParamType == nameof(W_CLineCPHDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | if (deviceProRead != null && deviceProWrite != null) |
| | | if (RequestIn != null) |
| | | { |
| | | R_CLineCPHInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_CLineCPHInfo>(deviceProRead.DeviceProAddress); |
| | | //ç åç¯çº¿è¯·æ±ä»»å¡ |
| | | if (conveyorLineInfoRead != null && (conveyorLineInfoRead.R_State == 2 || conveyorLineInfoRead.R_State == 3) && conveyorLineInfoRead.R_TaskNo <= 0 && !string.IsNullOrEmpty(conveyorLineInfoRead.R_BoxCode) && conveyorLineInfoRead.R_Request == 1) |
| | | DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == RequestIn.StationCode && x.DeviceProParamType == nameof(R_CLineCPHDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == RequestIn.StationCode && x.DeviceProParamType == nameof(W_CLineCPHDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | if (deviceProRead != null && deviceProWrite != null) |
| | | { |
| | | //夿æ¯å¦ä»»å¡å·²ç»åå¨ |
| | | Dt_PackaxisTask packaxisTask = _packaxisTaskRepository.QueryFirst(x => x.BarCode == conveyorLineInfoRead.R_BoxCode.Trim() && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt()); |
| | | if (packaxisTask != null) |
| | | R_CLineCPHInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_CLineCPHInfo>(deviceProRead.DeviceProAddress); |
| | | //ç åç¯çº¿è¯·æ±ä»»å¡ |
| | | if (conveyorLineInfoRead != null && (conveyorLineInfoRead.R_State == 2 || conveyorLineInfoRead.R_State == 3) && conveyorLineInfoRead.R_TaskNo <= 0 && !string.IsNullOrEmpty(conveyorLineInfoRead.R_BoxCode) && conveyorLineInfoRead.R_Request == 1) |
| | | { |
| | | //åå
¥æ§è¡æ°æ® |
| | | device.SetValue(W_CLineCPHDB.W_TaskNo, packaxisTask.PackTaskNum, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Channel, packaxisTask.NextAddress, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Long, packaxisTask.PackLength, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Wide, packaxisTask.PackWidth, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_High, packaxisTask.PackHeight, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_TMID, packaxisTask.BarCode, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Request, 1, RequestIn.StationCode); |
| | | } |
| | | else |
| | | { |
| | | #region |
| | | WebResponseContent webResponse = _packaxisTaskService.ReqPackTask(conveyorLineInfoRead.R_BoxCode.Trim(), RequestIn.StationDeviceCode); |
| | | if (webResponse.Status) |
| | | //夿æ¯å¦ä»»å¡å·²ç»åå¨ |
| | | Dt_PackaxisTask packaxisTask = _packaxisTaskRepository.QueryFirst(x => x.BarCode == conveyorLineInfoRead.R_BoxCode.Trim() && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt()); |
| | | if (packaxisTask != null) |
| | | { |
| | | Dt_PackaxisTask _PackaxisTask = webResponse.Data as Dt_PackaxisTask; |
| | | //åå
¥æ§è¡æ°æ® |
| | | device.SetValue(W_CLineCPHDB.W_TaskNo, _PackaxisTask.PackTaskNum, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Channel, _PackaxisTask.NextAddress.ObjToInt(), RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Long, _PackaxisTask.PackLength, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Wide, _PackaxisTask.PackWidth, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_High, _PackaxisTask.PackHeight, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_TMID, _PackaxisTask.BarCode, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_TaskNo, packaxisTask.PackTaskNum, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Channel, packaxisTask.NextAddress, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Long, packaxisTask.PackLength, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Wide, packaxisTask.PackWidth, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_High, packaxisTask.PackHeight, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_TMID, packaxisTask.BarCode, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Request, 1, RequestIn.StationCode); |
| | | WebResponseContent content = _taskService.MESBoxCodeNotice(conveyorLineInfoRead.R_BoxCode.Trim()); |
| | | if (content.Status) |
| | | { |
| | | WriteInfo(RequestIn.StationName, content.Message); |
| | | } |
| | | else |
| | | { |
| | | WriteError(RequestIn.StationName, content.Message); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteError(RequestIn.StationName, webResponse.Message); |
| | | #region |
| | | WebResponseContent webResponse = _packaxisTaskService.ReqPackTask(conveyorLineInfoRead.R_BoxCode.Trim(), RequestIn.StationDeviceCode); |
| | | if (webResponse.Status) |
| | | { |
| | | Dt_PackaxisTask _PackaxisTask = webResponse.Data as Dt_PackaxisTask; |
| | | //åå
¥æ§è¡æ°æ® |
| | | device.SetValue(W_CLineCPHDB.W_TaskNo, _PackaxisTask.PackTaskNum, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Channel, _PackaxisTask.NextAddress.ObjToInt(), RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Long, _PackaxisTask.PackLength, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Wide, _PackaxisTask.PackWidth, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_High, _PackaxisTask.PackHeight, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_TMID, _PackaxisTask.BarCode, RequestIn.StationCode); |
| | | device.SetValue(W_CLineCPHDB.W_Request, 1, RequestIn.StationCode); |
| | | WebResponseContent content = _taskService.MESBoxCodeNotice(conveyorLineInfoRead.R_BoxCode.Trim()); |
| | | if (content.Status) |
| | | { |
| | | WriteInfo(RequestIn.StationName, content.Message); |
| | | } |
| | | else |
| | | { |
| | | WriteError(RequestIn.StationName, content.Message); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteError(RequestIn.StationName, webResponse.Message); |
| | | } |
| | | #endregion |
| | | } |
| | | #endregion |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteError(RequestIn.StationName, $"æªæ¾å°è®¾å¤åç¼å·{RequestIn.StationCode}çå议信æ¯"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteError($"çº¿ç¨ {Thread.CurrentThread.ManagedThreadId}", $"å¼å¸¸:{ex.Message}"); |
| | | Thread.Sleep(1500); |
| | | shouldRestart = true; |
| | | } |
| | | } |
| | | }); |
| | | Task.Run(() => |
| | | { |
| | | bool shouldRestart = true; |
| | | |
| | | while (shouldRestart) |
| | | { |
| | | try |
| | | { |
| | | shouldRestart = false; |
| | | //è·åææç åå£ |
| | | List<Dt_StationManger> stationMangersMD = stationMangers.Where(x => x.StationDeviceCode == device.DeviceCode && x.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt()).ToList(); |
| | | WriteError($"çº¿ç¨ {Thread.CurrentThread.ManagedThreadId}", "å¼å§æ§è¡"); |
| | | while (true) |
| | | { |
| | | if (stationMangersMD.Count > 0) |
| | | { |
| | | foreach (var item in stationMangersMD) |
| | | { |
| | | DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_CLineCPHDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | if (deviceProRead != null) |
| | | { |
| | | R_CLineCPHChannelInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_CLineCPHChannelInfo>(deviceProRead.DeviceProAddress); |
| | | //è·åç åå£ä»»å¡æ´æ°ä»»å¡ç¶æ |
| | | if (conveyorLineInfoRead != null && conveyorLineInfoRead.R_State == 5 && conveyorLineInfoRead.R_TaskNo > 0) |
| | | { |
| | | Dt_PackaxisTask packaxisTask = _packaxisTaskRepository.QueryFirst(x => x.PackTaskNum == conveyorLineInfoRead.R_TaskNo && x.NextAddress == item.StationCode && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode == item.StationDeviceCode); |
| | | if (packaxisTask != null) |
| | | { |
| | | Dt_PackaxisTask packaxisTaskOld = _packaxisTaskRepository.QueryFirst(x => x.TaskState == TaskStatusEnum.MD_Executing.ObjToInt() && x.DeviceCode == item.StackerCraneCode); |
| | | if (packaxisTaskOld != null) |
| | | { |
| | | WriteError(item.StationName, $"ç å{item.StackerCraneCode}æ£æ§è¡ä»»å¡{packaxisTaskOld.PackTaskNum},æ æ³ç»§ç»ä¸å"); |
| | | } |
| | | else |
| | | { |
| | | packaxisTask.CurrentAddress = item.StationCode; |
| | | packaxisTask.NextAddress = packaxisTask.TargetAddress; |
| | | packaxisTask.DeviceCode = item.StackerCraneCode; |
| | | packaxisTask.TaskState = TaskStatusEnum.MD_Executing.ObjToInt(); |
| | | _packaxisTaskRepository.UpdateData(packaxisTask); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteError(item.StationName, $"æªæ¾å°ä»»å¡{conveyorLineInfoRead.R_TaskNo}ä¿¡æ¯"); |
| | | } |
| | | Thread.Sleep(2000); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteError(RequestIn.StationName, $"æªæ¾å°è®¾å¤åç¼å·{RequestIn.StationCode}çå议信æ¯"); |
| | | WriteError(nameof(ConveyorLineJob_CPH), $"é误信æ¯ï¼æªæ¾å°ç åå£ä¿¡æ¯"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Thread.Sleep(1000); |
| | | } |
| | | }); |
| | | Task.Run(() => |
| | | { |
| | | try |
| | | { |
| | | //è·åææç åå£ |
| | | List<Dt_StationManger> stationMangersMD = stationMangers.Where(x => x.StationDeviceCode == device.DeviceCode && x.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt()).ToList(); |
| | | while (true) |
| | | catch (Exception ex) |
| | | { |
| | | if (stationMangersMD.Count > 0) |
| | | { |
| | | foreach (var item in stationMangersMD) |
| | | { |
| | | DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_CLineCPHDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); |
| | | if (deviceProRead != null) |
| | | { |
| | | R_CLineCPHChannelInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_CLineCPHChannelInfo>(deviceProRead.DeviceProAddress); |
| | | //è·åç åå£ä»»å¡æ´æ°ä»»å¡ç¶æ |
| | | if (conveyorLineInfoRead != null && conveyorLineInfoRead.R_State == 5 && conveyorLineInfoRead.R_TaskNo > 0) |
| | | { |
| | | Dt_PackaxisTask packaxisTask = _packaxisTaskRepository.QueryFirst(x => x.PackTaskNum == conveyorLineInfoRead.R_TaskNo && x.NextAddress == item.StationCode && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode == item.StationDeviceCode); |
| | | if (packaxisTask != null) |
| | | { |
| | | Dt_PackaxisTask packaxisTaskOld = _packaxisTaskRepository.QueryFirst(x => x.TaskState == TaskStatusEnum.MD_Executing.ObjToInt() && x.DeviceCode == item.StackerCraneCode); |
| | | if (packaxisTaskOld != null) |
| | | { |
| | | WriteError(item.StationName, $"ç å{item.StackerCraneCode}æ£æ§è¡ä»»å¡{packaxisTaskOld.PackTaskNum},æ æ³ç»§ç»ä¸å"); |
| | | } |
| | | else |
| | | { |
| | | packaxisTask.CurrentAddress = item.StationCode; |
| | | packaxisTask.NextAddress = packaxisTask.TargetAddress; |
| | | packaxisTask.DeviceCode = item.StackerCraneCode; |
| | | packaxisTask.TaskState = TaskStatusEnum.MD_Executing.ObjToInt(); |
| | | _packaxisTaskRepository.UpdateData(packaxisTask); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteError(item.StationName, $"æªæ¾å°ä»»å¡{conveyorLineInfoRead.R_TaskNo}ä¿¡æ¯"); |
| | | } |
| | | Thread.Sleep(2000); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteError(nameof(ConveyorLineJob_CPH), $"é误信æ¯ï¼æªæ¾å°ç åå£ä¿¡æ¯"); |
| | | } |
| | | WriteError($"çº¿ç¨ {Thread.CurrentThread.ManagedThreadId}", $"å¼å¸¸:{ex.Message}"); |
| | | Thread.Sleep(1500); |
| | | shouldRestart = true; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Thread.Sleep(1000); |
| | | } |
| | | }); |
| | | |
| | |
| | | { |
| | | foreach (var item in stationMangers) |
| | | { |
| | | |
| | | short Allow = device.GetValue<R_MDDB, short>(R_MDDB.R_MDAllow, item.StackerCraneCode); |
| | | #region 读åå·¥ä½ç¶æ |
| | | short R_MDStatus1 = device.GetValue<R_MDDB, short>(R_MDDB.R_MDStatus1, item.StackerCraneCode); |
| | |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "taskLength", |
| | | title: "ç©æå¹
宽", |
| | | type: "int", |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | ]); |
| | | const detail = ref({ |
| | | cnName: "#detailCnName", |
| | |
| | | width: 100, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "taskLength", |
| | | title: "ç©æå¹
宽", |
| | | type: "int", |
| | | width: 100, |
| | | align: "left", |
| | | } |
| | | ]); |
| | | const detail = ref({ |
| | | cnName: "#detailCnName", |
| | |
| | | /// 2ï¼åºåºå®æ<br/> |
| | | /// 3ï¼æ£é宿<br/> |
| | | /// 99ï¼æ¤é<br/> |
| | | /// 100ï¼å
³é<br/> |
| | | /// </summary> |
| | | public enum OutLockStockStatusEnum |
| | | { |
| | |
| | | OutCarton = 360, |
| | | |
| | | /// <summary> |
| | | /// äºæ¥¼çº¸ç®±ä¾æ |
| | | /// </summary> |
| | | [Description("纸æ¯çº¸ç便")] |
| | | OutScrapsPaper = 370, |
| | | |
| | | /// <summary> |
| | | /// æ çººå¸æ·èåºåº |
| | | /// </summary> |
| | | [Description("æ çººå¸æ·èåºåº")] |
| | | OutWFBLM = 370, |
| | | OutWFBLM = 380, |
| | | |
| | | /// <summary> |
| | | /// å²ååºåºåº |
| | |
| | | /// åååæåå
¥åº |
| | | /// </summary> |
| | | [Description("åååæåå
¥åº")] |
| | | PartOffInbound = 695, |
| | | PartOffInbound = 680, |
| | | |
| | | /// <summary> |
| | | /// 模ååæåå
¥åº |
| | | /// </summary> |
| | | [Description("模ååæåå
¥åº")] |
| | | DieCutInbound = 685, |
| | | |
| | | /// <summary> |
| | | /// å²ååæåå
¥åº |
| | | /// </summary> |
| | | [Description("å²ååæåå
¥åº")] |
| | | PunchingInbound = 690, |
| | | |
| | | /// <summary> |
| | | /// æ 纺å¸åæåå
¥åº |
| | | /// </summary> |
| | | [Description("æ 纺å¸åæåå
¥åº")] |
| | | WFBYLInbound = 700, |
| | | WFBYLInbound = 695, |
| | | |
| | | /// <summary> |
| | | /// æ çººå¸æ·èåæåå
¥åº |
| | | /// </summary> |
| | | [Description("æ çººå¸æ·èåæåå
¥åº")] |
| | | WFBLMYLInbound = 700, |
| | | |
| | | /// <summary> |
| | | /// çº¸å¼ æ·èåæåå
¥åº |
| | | /// </summary> |
| | | [Description("çº¸å¼ æ·èåæåå
¥åº")] |
| | |
| | | /// é¢ç¨åå·¥ |
| | | /// </summary> |
| | | [PropertyValidate("é¢ç¨åå·¥", NotNullAndEmpty = true)] |
| | | public long EmployeeName { get; set; } |
| | | public string EmployeeName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// é¢ç¨æç» |
| | |
| | | PageGridData<ProStockViewDTO> GetPageData(PageDataOptions options); |
| | | |
| | | object GetDetailPage(PageDataOptions pageData); |
| | | WebResponseContent Export(PageDataOptions options); |
| | | } |
| | | } |
| | |
| | | /// </summary> |
| | | List<Dt_StockInfo> GetUseableStocks(string materielCode, decimal width, int warehoseId); |
| | | /// <summary> |
| | | /// è·åèåç¼åå¯ç¨åºå |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | List<Dt_StockInfo> GetUseOldCacheStocks(string materielCode, decimal width); |
| | | /// <summary> |
| | | /// è·åå¯ä½¿ç¨åºå |
| | | /// </summary> |
| | | List<Dt_StockInfo> GetUseableStocks(string materielCode, int warehoseId); |
| | |
| | | List<Dt_MESProInOrderInfo>? mESProInOrderInfos = BaseDal.QueryData(x => x.ProductOrderNo == orderStopDTO.ProductOrderNo && x.MESProInStatus != InOrderStatusEnum.å
³é.ObjToInt()); |
| | | if (mESProInOrderInfos == null || mESProInOrderInfos.Count <= 0) |
| | | { |
| | | return content.Error($"æåæåæåå·¥å{nameof(MESOrderStopDTO.ProductOrderNo)}{orderStopDTO.ProductOrderNo}ä¸å卿已å
³é"); |
| | | return content.Error($"æåå·¥å{nameof(MESOrderStopDTO.ProductOrderNo)}{orderStopDTO.ProductOrderNo}ä¸å卿已å
³é"); |
| | | } |
| | | mESProInOrderInfos.ForEach(x => |
| | | { |
| | |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.CommonEnum; |
| | | using WIDESEA_Common.MaterielEnum; |
| | | using WIDESEA_Common.OrderEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | List<Dt_ReturnBSTOrder> OldreturnBSTOrders = BaseDal.Db.Queryable<Dt_ReturnBSTOrder>().Includes(x => x.Details).ToList(); |
| | | List<Dt_StockInfo> ExiststockInfos = _stockInfoRepository.QueryData(x=>x.WarehouseId==WarehouseEnum.LLDOldCache.ObjToInt()); |
| | | //æ°å¢ |
| | | List<BSTReturnOrderDTO> bSTReturnOrderDTOsAdd = bSTReturnOrderDTOs.Where(x => x.Way == 1).ToList(); |
| | | List<BSTReturnOrderDTOItem>? bSTReturnOrderDTOItemsAdd = null; |
| | | //ä¿®æ¹ |
| | | List<BSTReturnOrderDTO> bSTReturnOrderDTOsUpdate = bSTReturnOrderDTOs.Where(x => x.Way == 2).ToList(); |
| | | //å é¤ |
| | | List<BSTReturnOrderDTO> bSTReturnOrderDTOsDel = bSTReturnOrderDTOs.Where(x => x.Way == 3).ToList(); |
| | | List<BSTReturnOrderDTOItem>? bSTReturnOrderDTOItemsUp = null; |
| | | //è·åææç©æ |
| | | List<Dt_MaterielInfo> materielInfos = _basicRepository.MaterielInfoRepository.QueryData(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt() && x.MaterielInvOrgId == MaterielInvOrgEnum.èå.ObjToInt() && x.MaterialSourceId != 0); |
| | | |
| | | List<Dt_ReturnBSTOrder> returnAddBSTOrders = new List<Dt_ReturnBSTOrder>(); |
| | | List<Dt_ReturnBSTOrder> returnUpdateBSTOrders = new List<Dt_ReturnBSTOrder>(); |
| | | List<Dt_ReturnBSTOrder> returnDeleteBSTOrders = new List<Dt_ReturnBSTOrder>(); |
| | | List<Dt_ReturnBSTOrderDetail> returnBSTOrderDetailsDel = new List<Dt_ReturnBSTOrderDetail>(); |
| | | if (bSTReturnOrderDTOsAdd!=null && bSTReturnOrderDTOsAdd.Count>0) |
| | | { |
| | | bSTReturnOrderDTOItemsAdd = bSTReturnOrderDTOsAdd.SelectMany(x => x.BstPaperWreturnDetails).ToList(); |
| | | } |
| | | if (bSTReturnOrderDTOsUpdate != null && bSTReturnOrderDTOsUpdate.Count > 0) |
| | | { |
| | | bSTReturnOrderDTOItemsUp = bSTReturnOrderDTOsUpdate.SelectMany(x => x.BstPaperWreturnDetails).ToList(); |
| | | } |
| | | List<Dt_StockInfo> stockInfosUpdate = new List<Dt_StockInfo>(); |
| | | //æ°å¢ |
| | | if (bSTReturnOrderDTOsAdd.Count > 0) |
| | | if (bSTReturnOrderDTOItemsAdd!=null && bSTReturnOrderDTOItemsAdd.Count > 0) |
| | | { |
| | | //夿忮 |
| | | Dt_ReturnBSTOrder? ExistAddReturn = OldreturnBSTOrders.FirstOrDefault(x => bSTReturnOrderDTOsAdd.Select(x => x.PaperWreturnId).Contains(x.PaperWreturnId)); |
| | | if (ExistAddReturn != null) |
| | | { |
| | | return content.Error($"éæå{nameof(BSTReturnOrderDTO.PaperWreturnId)}:{ExistAddReturn.PaperWreturnId}å·²åå¨"); |
| | | } |
| | | List<BSTReturnOrderDTOItem> bSTReturnOrderDTOItemsAdd = bSTReturnOrderDTOsAdd.SelectMany(x => x.BstPaperWreturnDetails).ToList(); |
| | | //夿æ¯å¦åå¨ç©æ |
| | | BSTReturnOrderDTOItem? bSTReturnOrderDTOItem = bSTReturnOrderDTOItemsAdd.FirstOrDefault(x => !materielInfos.Select(x => x.MaterialSourceId).Contains(x.MaterialId)); |
| | | if (bSTReturnOrderDTOItem != null) |
| | | { |
| | | return content.Error($"éæ{nameof(bSTReturnOrderDTOItem.Barcode)}:{bSTReturnOrderDTOItem.Barcode}ç©æ{nameof(BSTReturnOrderDTOItem.MaterialId)}:{bSTReturnOrderDTOItem.MaterialId}ä¸åå¨"); |
| | | } |
| | | //éªè¯éææ¡ç æ¯å¦å¨åºåä¸ |
| | | var ExiststockInfo = bSTReturnOrderDTOItemsAdd.FirstOrDefault(x => !ExiststockInfos.Select(x => x.PalletCode).Contains(x.Barcode)); |
| | | if (ExiststockInfo != null) |
| | | foreach (var item in bSTReturnOrderDTOItemsAdd) |
| | | { |
| | | return content.Error($"éææ¡ç {nameof(ExiststockInfo.Barcode)}:{ExiststockInfo.Barcode}ç©ææªå¨èåæååº"); |
| | | } |
| | | //è·å对åºåºåä¿®æ£åºåæ°é |
| | | List<Dt_StockInfo> returnStockinfos = ExiststockInfos.Where(x => bSTReturnOrderDTOItemsAdd.Select(x => x.Barcode).Contains(x.PalletCode)).ToList(); |
| | | foreach (var item in bSTReturnOrderDTOsAdd) |
| | | { |
| | | if (bSTReturnOrderDTOsUpdate.FirstOrDefault(x => x.PaperWreturnId == item.PaperWreturnId) != null) |
| | | //å°ä¸åå¨çåºåè·³è¿ |
| | | Dt_StockInfo? stockReturn = ExiststockInfos.FirstOrDefault(x => x.PalletCode == item.Barcode); |
| | | if (stockReturn == null) |
| | | { |
| | | continue; |
| | | } |
| | | List<Dt_ReturnBSTOrderDetail> bSTOrderDetails = item.BstPaperWreturnDetails.Select(x => _mapper.Map<Dt_ReturnBSTOrderDetail>(x)).ToList(); |
| | | Dt_ReturnBSTOrder returnBSTOrder = _mapper.Map<Dt_ReturnBSTOrder>(item); |
| | | returnBSTOrder.Details = bSTOrderDetails; |
| | | foreach (var detail in bSTOrderDetails) |
| | | if (bSTReturnOrderDTOItemsUp!=null && bSTReturnOrderDTOItemsUp.FirstOrDefault(x => x.Barcode == item.Barcode) != null) |
| | | { |
| | | Dt_StockInfo stockReturn = stockInfosUpdate.FirstOrDefault(x => x.PalletCode == detail.Barcode); |
| | | stockReturn.MaterielId = detail.MaterialId; |
| | | stockReturn.MaterielCode = detail.MaterialNo; |
| | | stockReturn.MaterielWide=detail.MaterialWide; |
| | | stockReturn.MaterielThickness = detail.MaterialThick; |
| | | stockReturn.MaterielWeight = detail.Qty; |
| | | stockReturn.StockLength = detail.ProcurementLength; |
| | | stockReturn.StockStatus = StockStatusEmun.èåéææå.ObjToInt(); |
| | | stockInfosUpdate.Add(stockReturn); |
| | | continue; |
| | | } |
| | | returnAddBSTOrders.Add(returnBSTOrder); |
| | | stockReturn.MaterielId = item.MaterialId; |
| | | stockReturn.MaterielCode = item.MaterialNo; |
| | | stockReturn.MaterielWide = item.W; |
| | | stockReturn.MaterielThickness = item.Thick; |
| | | stockReturn.MaterielWeight = item.Qty; |
| | | stockReturn.StockLength = item.ProcurementLength; |
| | | stockReturn.StockOutLength = 0; |
| | | stockReturn.IsPick = WhetherEnum.False.ObjToInt(); |
| | | stockReturn.IsFull = WhetherEnum.True.ObjToInt(); |
| | | stockReturn.StockStatus = StockStatusEmun.èåéææå.ObjToInt(); |
| | | stockInfosUpdate.Add(stockReturn); |
| | | } |
| | | } |
| | | //æ´æ° |
| | | if (bSTReturnOrderDTOsUpdate.Count > 0) |
| | | if (bSTReturnOrderDTOItemsUp != null && bSTReturnOrderDTOItemsUp.Count > 0) |
| | | { |
| | | //åå¨çéè´å |
| | | List<Dt_ReturnBSTOrder>? ExistreturnBSTOrders = OldreturnBSTOrders.Where(x => bSTReturnOrderDTOsUpdate.Select(x => x.PaperWreturnId).Contains(x.PaperWreturnId)).Distinct().ToList(); |
| | | |
| | | foreach (var item in bSTReturnOrderDTOsUpdate) |
| | | //è·å对åºåºåä¿®æ£åºåæ°é |
| | | List<Dt_StockInfo> returnStockinfos = ExiststockInfos.Where(x => bSTReturnOrderDTOItemsUp.Select(x => x.Barcode).Contains(x.PalletCode)).ToList(); |
| | | foreach (var item in bSTReturnOrderDTOItemsUp) |
| | | { |
| | | Dt_ReturnBSTOrder? returnBSTOrderUpdate = ExistreturnBSTOrders.FirstOrDefault(x => x.PaperWreturnId == item.PaperWreturnId); |
| | | //å¦æè®¢åå·²åå¨åè¿è¡æ´æ¹ |
| | | if (returnBSTOrderUpdate != null) |
| | | Dt_StockInfo? returnUpdate = stockInfosUpdate.FirstOrDefault(x => x.PalletCode == item.Barcode); |
| | | //å¦æä¿®æ¹å·²åå¨ï¼å¨ååºç¡ä¸æ´æ° |
| | | if (returnUpdate != null) |
| | | { |
| | | if (returnBSTOrderUpdate.ReturnOrderStatus != InOrderStatusEnum.æªå¼å§.ObjToInt()) |
| | | { |
| | | return content.Error($"éæ{nameof(returnBSTOrderUpdate.PaperWreturnId)}:{returnBSTOrderUpdate.PaperWreturnId}订åéæå
¥åºä¸ï¼ä¸å¯æ´æ¹"); |
| | | } |
| | | returnBSTOrderDetailsDel.AddRange(returnBSTOrderUpdate.Details); |
| | | |
| | | //æ´æ° |
| | | List<Dt_ReturnBSTOrderDetail> bSTOrderDetails = item.BstPaperWreturnDetails.Select(x => _mapper.Map<Dt_ReturnBSTOrderDetail>(x)).ToList(); |
| | | bSTOrderDetails.ForEach(x => |
| | | { |
| | | x.ReturnBSTOrderId = returnBSTOrderUpdate.Id; |
| | | }); |
| | | returnBSTOrderUpdate.Details = bSTOrderDetails; |
| | | returnBSTOrderUpdate.PaperWreturnId = item.PaperWreturnId; |
| | | returnBSTOrderUpdate.PaperWreturnNo = item.PaperWreturnNo; |
| | | returnBSTOrderUpdate.EmployeeName = item.EmployeeName; |
| | | returnBSTOrderUpdate.WreturnDate = DateTimeOffset.FromUnixTimeMilliseconds(item.WreturnDate).DateTime; |
| | | returnUpdateBSTOrders.Add(returnBSTOrderUpdate); |
| | | returnUpdate.MaterielThickness = item.Thick; |
| | | returnUpdate.MaterielWeight = item.Qty; |
| | | returnUpdate.StockLength = item.ProcurementLength; |
| | | } |
| | | else //妿ä¸åå¨åè¿è¡æ°å¢ |
| | | else |
| | | { |
| | | List<Dt_ReturnBSTOrderDetail> bSTOrderDetails = item.BstPaperWreturnDetails.Select(x => _mapper.Map<Dt_ReturnBSTOrderDetail>(x)).ToList(); |
| | | Dt_ReturnBSTOrder returnBSTOrder = _mapper.Map<Dt_ReturnBSTOrder>(item); |
| | | returnBSTOrder.Details = bSTOrderDetails; |
| | | foreach (var detail in bSTOrderDetails) |
| | | //å°ä¸åå¨çåºåè·³è¿ |
| | | Dt_StockInfo? stockReturn = ExiststockInfos.FirstOrDefault(x => x.PalletCode == item.Barcode); |
| | | if (stockReturn == null) |
| | | { |
| | | Dt_StockInfo stockReturn = stockInfosUpdate.FirstOrDefault(x => x.PalletCode == detail.Barcode); |
| | | stockReturn.MaterielId = detail.MaterialId; |
| | | stockReturn.MaterielCode = detail.MaterialNo; |
| | | stockReturn.MaterielWide = detail.MaterialWide; |
| | | stockReturn.MaterielThickness = detail.MaterialThick; |
| | | stockReturn.MaterielWeight = detail.Qty; |
| | | stockReturn.StockLength = detail.ProcurementLength; |
| | | stockReturn.StockStatus = StockStatusEmun.èåéææå.ObjToInt(); |
| | | stockInfosUpdate.Add(stockReturn); |
| | | continue; |
| | | } |
| | | returnAddBSTOrders.Add(returnBSTOrder); |
| | | stockReturn.MaterielId = item.MaterialId; |
| | | stockReturn.MaterielCode = item.MaterialNo; |
| | | stockReturn.MaterielWide = item.W; |
| | | stockReturn.MaterielThickness = item.Thick; |
| | | stockReturn.MaterielWeight = item.Qty; |
| | | stockReturn.StockLength = item.ProcurementLength; |
| | | stockReturn.StockOutLength = 0; |
| | | stockReturn.IsPick = WhetherEnum.False.ObjToInt(); |
| | | stockReturn.IsFull = WhetherEnum.True.ObjToInt(); |
| | | stockReturn.StockStatus = StockStatusEmun.èåéææå.ObjToInt(); |
| | | stockInfosUpdate.Add(stockReturn); |
| | | } |
| | | } |
| | | |
| | | } |
| | | //å é¤ |
| | | if (bSTReturnOrderDTOsDel.Count > 0) |
| | | { |
| | | |
| | | } |
| | | //æ´æ°æ°æ® |
| | | _unitOfWorkManage.BeginTran(); |
| | | BaseDal.Db.InsertNav(returnAddBSTOrders).Include(x => x.Details).ExecuteCommand(); |
| | | _stockInfoRepository.UpdateData(stockInfosUpdate); |
| | | _returnBSTOrderDetailRepository.DeleteData(returnBSTOrderDetailsDel); |
| | | BaseDal.Db.UpdateNav(returnUpdateBSTOrders).Include(x => x.Details).ExecuteCommand(); |
| | | _unitOfWorkManage.CommitTran(); |
| | | content.OK("æ¥æ¶æå"); |
| | | } |
| | |
| | | /// </summary> |
| | | [ImporterHeader(Name = "ç©ææ°é")] |
| | | [ExporterHeader(DisplayName = "ç©ææ°é")] |
| | | [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "ç©ææ°é")] |
| | | [SugarColumn(IsNullable = true, ColumnDescription = "ç©ææ°é")] |
| | | public decimal Quantity { get; set; } |
| | | } |
| | | } |
| | |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.LocationEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_IBasicRepository; |
| | | using WIDESEA_IBasicService; |
| | | using WIDESEA_IOutboundRepository; |
| | |
| | | foreach (var item in groupDetails) |
| | | { |
| | | decimal needQuantity = item.XqLen; |
| | | //è·åå¯ç¨åºå |
| | | List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseableStocks(item.MaterialNo, item.Width, outBSTOrders.FirstOrDefault().WarehouseId).Where(x=>!outStocks.Select(x=>x.PalletCode).Contains(x.PalletCode)).ToList(); |
| | | //è·åèåç¼åå¯ç¨åºå |
| | | List<Dt_StockInfo> stockInfos = _stockService.StockInfoService.GetUseOldCacheStocks(item.MaterialNo, item.Width) ?? new List<Dt_StockInfo>(); |
| | | //è·åç«åºå¯ç¨åºå |
| | | stockInfos.AddRange(_stockService.StockInfoService.GetUseableStocks(item.MaterialNo, item.Width, outBSTOrders.FirstOrDefault().WarehouseId).Where(x=>!outStocks.Select(x=>x.PalletCode).Contains(x.PalletCode)).ToList()); |
| | | if (!stockInfos.Any()) |
| | | { |
| | | continue; |
| | |
| | | |
| | | } |
| | | |
| | | locationInfos.AddRange(_basicRepository.LocationInfoRepository.GetLocationInfos(outStocks.Select(x => x.LocationCode).ToList())); |
| | | locationInfos.AddRange(_basicRepository.LocationInfoRepository.GetLocationInfos(outStocks.Where(x=>!x.LocationCode.IsNullOrEmpty() && !locationInfos.Select(x=>x.LocationCode).Contains(x.LocationCode)).Select(x => x.LocationCode).ToList())); |
| | | } |
| | | |
| | | return (outStocks, outboundOrderDetails, outStockLockInfos, locationInfos); |
| | |
| | | { |
| | | try |
| | | { |
| | | stockInfos.Where(x => x.LocationCode.IsNullOrEmpty()).ToList().ForEach(x => |
| | | { |
| | | x.StockStatus = StockStatusEmun.åºåºå®æ.ObjToInt(); |
| | | }); |
| | | _stockService.StockInfoService.Repository.UpdateData(stockInfos); |
| | | BaseDal.UpdateData(outboundOrderDetails); |
| | | |
| | |
| | | OrderType=OutOrderTypeEnum.OutSGPick.ObjToInt(), |
| | | MaterielCode = outSGOrderDetail.MaterialNo, |
| | | BatchNo = outSGOrderDetail.BoardFluteNo, //æ¥å«æ¹æ¬¡ |
| | | LocationCode = outStock.LocationCode, |
| | | LocationCode = outStock.LocationCode.IsNullOrEmpty() ? "èåç¼ååº": outStock.LocationCode, |
| | | MaterielName = outStock.MaterielName, |
| | | OrderDetailId = outSGOrderDetail.Id, |
| | | OrderNo = outSGOrder.OrderId, |
| | |
| | | |
| | | return BaseDal.GetStockInfos(materielCode, width, locationCodes); |
| | | } |
| | | /// <summary> |
| | | /// è·åèåç¼åå¯ç¨åºå |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public List<Dt_StockInfo> GetUseOldCacheStocks(string materielCode, decimal width) |
| | | { |
| | | return Db.Queryable<Dt_StockInfo>().Where(x => x.MaterielCode.StartsWith(materielCode) && x.StockStatus == StockStatusEmun.èåéææå.ObjToInt() && x.MaterielWide == width && x.StockOutLength <= 0 && x.StockLength > 0).OrderBy(x => x.CreateDate).ToList(); |
| | | } |
| | | public List<Dt_StockInfo> GetUseableStocks(string materielCode, int warehoseId) |
| | | { |
| | | List<string> locationCodes = _basicRepository.LocationInfoRepository.GetCanOutLocationCodes(warehoseId); |
| | |
| | | return content.Error($"æªæ¾å°æ¡ç {returnMaterial.BarCode}ç©æä¿¡æ¯"); |
| | | } |
| | | //夿 |
| | | if (returnMaterial.Thickness <= 0 && materielInfo.WarehouseId==WarehouseEnum.LLDYL.ObjToInt()) |
| | | if ((returnMaterial.Thickness <= 0 || returnMaterial.Wide <= 0)&& materielInfo.WarehouseId==WarehouseEnum.LLDYL.ObjToInt()) |
| | | { |
| | | return content.Error($"ç©æ{returnMaterial.MaterialCode}æ¡ç {returnMaterial.BarCode}ç´å¾ä¸è½å°äº0"); |
| | | } |
| | | if (returnMaterial.Wide <= 0 && materielInfo.WarehouseId == WarehouseEnum.LLDYL.ObjToInt()) |
| | | { |
| | | return content.Error($"ç©æ{returnMaterial.MaterialCode}æ¡ç {returnMaterial.BarCode}ç´å¾ä¸è½å°äº0"); |
| | | return content.Error($"ç©æ{returnMaterial.MaterialCode}æ¡ç {returnMaterial.BarCode}ç´å¾æå¹
宽ä¸è½å°äº0"); |
| | | } |
| | | Dt_StockInfo? stockInfoOld = stockInfosOld.FirstOrDefault(x => x.PalletCode == returnMaterial.BarCode); |
| | | if (stockInfoOld != null) |
| | |
| | | { |
| | | return content; |
| | | } |
| | | List<int> ints = _outboundRepository.OutSGOrderDetailRepository.QueryData(x=>x.Id>outDetailId).Select(x=>x.Id).ToList(); |
| | | int[] reseponse= new int[ints.Count]; |
| | | for (int i = 0; i < ints.Count; i++) |
| | | //è·åææçåºåºè¯¦æ
夿æ¯å¦æ»¡è¶³åºåºéå°äº5ä¸ä¸å°äº17å· |
| | | 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()) |
| | | { |
| | | reseponse[i] = ints[i]; |
| | | List<int> ints = _outboundRepository.OutSGOrderDetailRepository.QueryData(x => x.Id > outDetailId).Select(x => x.Id).ToList(); |
| | | int[] reseponse = new int[ints.Count]; |
| | | for (int i = 0; i < ints.Count; i++) |
| | | { |
| | | reseponse[i] = ints[i]; |
| | | } |
| | | content.Message = CreateSGOutboundTasks(reseponse).Message; |
| | | } |
| | | content.Message = CreateSGOutboundTasks(reseponse).Message; |
| | | else |
| | | { |
| | | return content.Error($"å½ååºåºéï¼{sumAssignQty},å½ååºåºå·æ°ï¼{outCount},䏿»¡è¶³å°äº5ä¸ä¸å°äº17å·åºåºæ¡ä»¶"); |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | UpdateStock(stockInfoOld, weight, thickness, wide); |
| | | return content.OK($"临æ¶å
¥åº{stockInfoOld.RfidCode}"); |
| | | } |
| | | else if (stockInfoOld != null && stockInfoOld.MaterielInvOrgId == MaterielInvOrgEnum.èå.ObjToInt() && stockInfoOld.StockStatus == StockStatusEmun.åºåºå®æ.ObjToInt() && stockInfoOld.IsPick==WhetherEnum.False.ObjToInt() && stationCode.IsNotEmptyOrNull()) |
| | | else if (stockInfoOld != null && stockInfoOld.MaterielInvOrgId == MaterielInvOrgEnum.èå.ObjToInt() && stockInfoOld.StockStatus == StockStatusEmun.åºåºå®æ.ObjToInt() && stationCode.IsNotEmptyOrNull()) |
| | | { |
| | | decimal oldQty = stockInfoOld.StockLength; |
| | | //è°ç¨æ´æ°éæåºåå䏿¥éé |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | if (thickness < 400) |
| | | { |
| | | throw new Exception($"RFID{stockInfoOld.RfidCode}æ¡ç {stockInfoOld.PalletCode}ç´å¾å°äº400mm"); |
| | | } |
| | | BSTResponse<BSTStockInfoDTO> bSTResponse = _invokeERPService.BSTStockAsync(stockInfoOld.PalletCode).DeserializeObject<BSTResponse<BSTStockInfoDTO>>(); |
| | | if (bSTResponse.Code == 500) |
| | | { |
| | | throw new Exception($"æªæ¾å°æ¡ç {stockInfoOld.PalletCode}䏿ERPåºåä¸åå¨"); |
| | | } |
| | | |
| | | BSTStockInfoDTO bSTStockInfoDTO = bSTResponse.Data ?? throw new Exception($"䏿ERPæªè¿å{stockInfoOld.PalletCode}çåºåä¿¡æ¯"); |
| | | if (stockInfoOld.StockStatus == StockStatusEmun.èåéææå.ObjToInt()) |
| | | { |
| | | stockInfoOld.IsPick = WhetherEnum.False.ObjToInt(); |
| | | } |
| | | stockInfoOld.IsPick = WhetherEnum.False.ObjToInt(); |
| | | decimal stockLength = bSTStockInfoDTO.StockMeter; |
| | | if (weight != bSTStockInfoDTO.Qty && weight < stockInfoOld.InitialWeight) |
| | | { |
| | |
| | | stockInfoOld.StockLength = stockLength; |
| | | stockInfoOld.StockOutLength = 0; |
| | | stockInfoOld.WarehouseId = WarehouseEnum.LLDYL.ObjToInt(); |
| | | if (thickness < 400) |
| | | { |
| | | throw new Exception($"RFID{stockInfoOld.RfidCode}æ¡ç {stockInfoOld.PalletCode}ç´å¾å°äº400mm"); |
| | | } |
| | | content.OK("æå",data:stockInfoOld); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | bool RoadwayType = stockInfo.PalletType == LocationTypeEnum.MediumPallet.ObjToInt(); |
| | | //è·ååé
|
| | | 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(); |
| | | if (RoadwayType) |
| | | { |
| | | foreach (var item in locationCounts) |
| | | { |
| | | if (item.RoadwayNo.Contains("YLDual")) |
| | | { |
| | | int count = Db.Queryable<Dt_LocationInfo>() |
| | | .Where(x => x.WarehouseId == warehouse.WarehouseId |
| | | && x.LocationStatus == (int)LocationStatusEnum.Free |
| | | && x.EnableStatus == (int)EnableStatusEnum.Normal |
| | | && x.LocationType == LocationTypeEnum.MediumPallet.ObjToInt() |
| | | && x.RoadwayNo == item.RoadwayNo).Count(); |
| | | item.Count = count; |
| | | } |
| | | } |
| | | } |
| | | roadwayNo = HandleRoadway(locationCounts, warehouse, ErrorRoadway ? roadways : null); |
| | | } |
| | | } |
| | |
| | | return content.Error("ä¼ å
¥ä¿¡æ¯ä¸ºç©º"); |
| | | } |
| | | //è·åæææåï¼åæåä¿¡æ¯ |
| | | List<Dt_MESProInOrderInfo> proInOrderInfos = _inboundRepository.MESProInOrderInfoRepository.QueryData(); |
| | | List<Dt_MESProInOrderInfo> proInOrderInfosOld = _inboundRepository.MESProInOrderInfoRepository.QueryData(); |
| | | //è·åææç©æä¿¡æ¯ |
| | | List<Dt_MaterielInfo> materielInfos = _basicRepository.MaterielInfoRepository.QueryData(x => x.MaterielInvOrgId == MaterielInvOrgEnum.æ°å.ObjToInt()); |
| | | |
| | |
| | | List<Dt_AGVStationInfo> aGVStationInfos = _basicRepository.AGVStationInfoRepository.QueryData(x => !string.IsNullOrEmpty(x.MESPointCode)); |
| | | |
| | | //夿æ¯å¦åå¨éå¤ |
| | | MESProInDTO? proInDTO = proInDTOs.FirstOrDefault(x => x.IsMantissa == false && proInOrderInfos.Select(x => x.BarCode).Contains(x.BarCode)); |
| | | MESProInDTO? proInDTO = proInDTOs.FirstOrDefault(x => x.IsMantissa == false && proInOrderInfosOld.Select(x => x.BarCode).Contains(x.BarCode)); |
| | | if (proInDTO != null) |
| | | { |
| | | return content.Error($"{proInDTO.ProductOrderNo}ç产工å{proInDTO.BarCode}æ¡ç å·²åå¨"); |
| | | } |
| | | Dt_MESProInOrderInfo? proInOrderInfo = proInOrderInfos.FirstOrDefault(x => x.MESProInStatus == InOrderStatusEnum.å
³é.ObjToInt() && proInDTOs.Select(x => x.ProductOrderNo).Distinct().Contains(x.ProductOrderNo)); |
| | | Dt_MESProInOrderInfo? proInOrderInfo = proInOrderInfosOld.FirstOrDefault(x => x.MESProInStatus == InOrderStatusEnum.å
³é.ObjToInt() && proInDTOs.Select(x => x.ProductOrderNo).Distinct().Contains(x.ProductOrderNo)); |
| | | if (proInOrderInfo != null) |
| | | { |
| | | return content.Error($"{proInOrderInfo.ProductOrderNo}ç产工åå·²å
³é"); |
| | |
| | | foreach (var item in proInDTOs) |
| | | { |
| | | Dt_MaterielInfo materielInfo = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterialCode); |
| | | //夿 |
| | | if ((item.Thickness <= 0 || item.Wide <= 0) && materielInfo.WarehouseId == WarehouseEnum.LLDYL.ObjToInt()) |
| | | { |
| | | return content.Error($"ç©æ{item.MaterialCode}æ¡ç {item.BarCode}ç´å¾æå¹
宽ä¸è½å°äº0"); |
| | | } |
| | | if (materielInfo.MaterielSourceType != MaterielTypeEnum.æå.ObjToInt()) |
| | | { |
| | | Dt_AGVStationInfo? CheckPointCode = aGVStationInfos.FirstOrDefault(x => x.MESPointCode == item?.PointCode); |
| | |
| | | Dt_MESProInOrderInfo AddproInOrderInfo = _mapper.Map<Dt_MESProInOrderInfo>(item); |
| | | AddproInOrderInfo.WarehouseId = materielInfo.WarehouseId; |
| | | AddproInOrderInfo.MESProOrderType = materielInfo.MaterielSourceType; |
| | | //å°äº550å¹
宽åä¸è½æ¬è¿ |
| | | if (item.Wide < 550 && materielInfo.WarehouseId == WarehouseEnum.LLDYL.ObjToInt()) |
| | | { |
| | | AddproInOrderInfo.MESProInStatus=InOrderStatusEnum.å
¥åºå®æ.ObjToInt(); |
| | | } |
| | | AddMESProInOrders.Add(AddproInOrderInfo); |
| | | } |
| | | List<Dt_Task> tasks = new List<Dt_Task>(); |
| | |
| | | PB_INV_PRODUCT_IN= pRODUCT_INItems |
| | | }) ?? throw new Exception("åæåå
¥åºæ¥å£è¯·æ±å¤±è´¥"); |
| | | //çæåæåå
¥åº |
| | | WebResponseContent webResponse = SemiProInbound(AddMESProInOrders.Where(x => x.MESProOrderType == MaterielTypeEnum.åæå.ObjToInt()).ToList()); |
| | | if (!webResponse.Status) |
| | | List<Dt_MESProInOrderInfo> semiProInOrderInfos = mESProInOrderInfos.Where(x => x.MESProInStatus == InOrderStatusEnum.æªå¼å§.ObjToInt()).ToList(); |
| | | if (semiProInOrderInfos.Count>0) |
| | | { |
| | | throw new Exception(webResponse.Message); |
| | | } |
| | | tasks = webResponse.Data as List<Dt_Task>; |
| | | WebResponseContent taskResponse = PushTasksToWCS(tasks); |
| | | if (!taskResponse.Status) |
| | | { |
| | | throw new Exception(taskResponse.Message); |
| | | WebResponseContent webResponse = SemiProInbound(AddMESProInOrders.Where(x => x.MESProOrderType == MaterielTypeEnum.åæå.ObjToInt()).ToList()); |
| | | if (!webResponse.Status) |
| | | { |
| | | throw new Exception(webResponse.Message); |
| | | } |
| | | tasks = webResponse.Data as List<Dt_Task>; |
| | | WebResponseContent taskResponse = PushTasksToWCS(tasks); |
| | | if (!taskResponse.Status) |
| | | { |
| | | throw new Exception(taskResponse.Message); |
| | | } |
| | | } |
| | | } |
| | | if (AddMESProInOrders.Where(x => x.MESProOrderType == MaterielTypeEnum.æå.ObjToInt()).Count() > 0) |
| | | List<Dt_MESProInOrderInfo> proInOrderInfos = AddMESProInOrders.Where(x => x.MESProOrderType == MaterielTypeEnum.æå.ObjToInt()).ToList(); |
| | | if (proInOrderInfos.Count > 0) |
| | | { |
| | | WebResponseContent webResponse = PushPackaxisTaskToWCS(AddMESProInOrders.Where(x => x.MESProOrderType == MaterielTypeEnum.æå.ObjToInt()).ToList()); |
| | | WebResponseContent webResponse = PushPackaxisTaskToWCS(proInOrderInfos); |
| | | if (!webResponse.Status) |
| | | { |
| | | throw new Exception(webResponse.Message); |
| | |
| | | if (result.Item1 != null && result.Item1.Count > 0) |
| | | { |
| | | //è·åä»»å¡ |
| | | tasks = GetTasks(result.Item1, TaskTypeEnum.OldYLOutbound); |
| | | tasks = GetTasks(result.Item1.Where(x=> !x.LocationCode.IsNullOrEmpty()).ToList(), TaskTypeEnum.OldYLOutbound); |
| | | result.Item2.ForEach(x => |
| | | { |
| | | if (result.Item3.FirstOrDefault(t=>t.OrderDetailId==x.Id)!=null) |
| | |
| | | }); |
| | | result.Item3.ForEach(x => |
| | | { |
| | | x.Status = OutLockStockStatusEnum.åºåºä¸.ObjToInt(); |
| | | if (x.LocationCode== "èåç¼ååº") |
| | | { |
| | | x.Status = OutLockStockStatusEnum.åºåºå®æ.ObjToInt(); |
| | | } |
| | | else |
| | | { |
| | | x.Status = OutLockStockStatusEnum.åºåºä¸.ObjToInt(); |
| | | } |
| | | }); |
| | | |
| | | stockInfos = result.Item1; |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | //æ°å¢ |
| | | List<BSTPickInfoDTO> bSTPickInfosAdd = bSTPickInfoDTOs.Where(x => x.Way == 1).ToList(); |
| | | //è·åæ°å¢æç»é¢æ |
| | | List<PaperMattakeDetailItem>? paperMattakeDetailItemsAdd = null; |
| | | //ä¿®æ¹ |
| | | List<BSTPickInfoDTO> bSTPickInfosUp = bSTPickInfoDTOs.Where(x => x.Way == 2).ToList(); |
| | | //è·åæ°å¢æç»é¢æ |
| | | List<PaperMattakeDetailItem>? paperMattakeDetailItemsUp = null; |
| | | if (bSTPickInfosAdd != null && bSTPickInfosAdd.Count > 0) |
| | | { |
| | | paperMattakeDetailItemsAdd = bSTPickInfosAdd.SelectMany(x => x.PaperMattakeDetails).ToList(); |
| | | } |
| | | if (bSTPickInfosUp != null && bSTPickInfosUp.Count > 0) |
| | | { |
| | | paperMattakeDetailItemsUp = bSTPickInfosUp.SelectMany(x => x.PaperMattakeDetails).ToList(); |
| | | } |
| | | //è·åææå¾
颿çåºåºè¯¦æ
|
| | | List<Dt_OutStockLockInfo> outStockLockInfos = _outboundRepository.OutStockLockInfoRepository.QueryData(x => x.OrderType == OutOrderTypeEnum.OutSGPick.ObjToInt() && x.Status==OutLockStockStatusEnum.åºåºå®æ.ObjToInt()); |
| | | #region 颿é»è¾ |
| | | if (paperMattakeDetailItemsAdd != null && paperMattakeDetailItemsAdd.Count > 0) |
| | | { |
| | | foreach (var item in paperMattakeDetailItemsAdd) |
| | | { |
| | | //è·å对åºç |
| | | } |
| | | } |
| | | |
| | | if (paperMattakeDetailItemsUp != null && paperMattakeDetailItemsUp.Count > 0) |
| | | //è·å颿æ¡ç ååºå |
| | | List<string> lockCodes = bSTPickInfoDTOs.SelectMany(x => x.PaperMattakeDetails).Select(x=>x.Barcode).Distinct().ToList(); |
| | | List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.QueryData(x=> lockCodes.Contains(x.PalletCode)); |
| | | //è·åå¾
颿çåºåºè¯¦æ
|
| | | List<Dt_OutStockLockInfo> outStockLockInfos = _outboundRepository.OutStockLockInfoRepository.QueryData(x => x.OrderType == OutOrderTypeEnum.OutSGPick.ObjToInt() && x.Status==OutLockStockStatusEnum.åºåºå®æ.ObjToInt() && lockCodes.Distinct().ToList().Contains(x.PalletCode)); |
| | | //åºåºè¯¦æ
ç¶ææ´æ° |
| | | if (outStockLockInfos.Count > 0) |
| | | { |
| | | foreach (var item in paperMattakeDetailItemsUp) |
| | | outStockLockInfos.ForEach(x => |
| | | { |
| | | |
| | | x.Status = OutLockStockStatusEnum.å
³é.ObjToInt(); |
| | | }); |
| | | } |
| | | List<int> BSTPickDetailsId = outStockLockInfos.Select(x => x.OrderDetailId).Distinct().ToList(); |
| | | //è·åå¯¹åºæç¨ |
| | | List<Dt_OutSGOrder> outSGOrders = BaseDal.Db.Queryable<Dt_OutSGOrder>().Where(x => x.OutSGOrderStatus < OutOrderStatusEnum.åºåºå®æ.ObjToInt()).Includes(x => x.Details) |
| | | .Where(x => x.Details |
| | | .Any(v => |
| | | BSTPickDetailsId.Contains(v.Id)) |
| | | ).OrderBy(x => x.CreateDate).ToList(); |
| | | List<Dt_OutSGOrderDetail> orderDetails = new List<Dt_OutSGOrderDetail>(); |
| | | //å¤çæç¨ |
| | | if (outSGOrders.Count>0) |
| | | { |
| | | orderDetails = outSGOrders.SelectMany(x=>x.Details).Where(x=> BSTPickDetailsId.Contains(x.Id)).ToList(); |
| | | orderDetails.ForEach(x => |
| | | { |
| | | x.OutSGOrderDetailStatus = OutOrderStatusEnum.åºåºå®æ.ObjToInt(); |
| | | }); |
| | | foreach (var item in outSGOrders) |
| | | { |
| | | int overCount = item.Details.Where(x=>x.OutSGOrderDetailStatus==OutLockStockStatusEnum.åºåºå®æ.ObjToInt()).Count(); |
| | | int thisCount = orderDetails.Where(x => x.OutSGOrderId == item.Id).Count(); |
| | | if ((overCount + thisCount) == item.Details.Count) |
| | | { |
| | | item.OutSGOrderStatus = OutOrderStatusEnum.åºåºå®æ.ObjToInt(); |
| | | } |
| | | } |
| | | |
| | | } |
| | | //è·åææå¾
颿çåºå |
| | | #region 颿é»è¾ |
| | | foreach (var item in stockInfos) |
| | | { |
| | | if (item.StockStatus==StockStatusEmun.åºåºå®æ.ObjToInt()) |
| | | { |
| | | item.StockLength = 0; |
| | | item.MaterielWeight = 0; |
| | | item.MaterielThickness = 0; |
| | | item.MaterielWide = 0; |
| | | item.StockOutLength = 0; |
| | | item.IsFull = WhetherEnum.True.ObjToInt(); |
| | | item.IsPick = WhetherEnum.True.ObjToInt(); |
| | | } |
| | | } |
| | | #endregion |
| | | _unitOfWorkManage.BeginTran(); |
| | | _stockRepository.StockInfoRepository.UpdateData(stockInfos); |
| | | _outboundRepository.OutStockLockInfoRepository.UpdateData(outStockLockInfos); |
| | | _outboundRepository.OutSGOrderRepository.UpdateData(outSGOrders); |
| | | _outboundRepository.OutSGOrderDetailRepository.UpdateData(orderDetails); |
| | | _unitOfWorkManage.CommitTran(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | _unitOfWorkManage.BeginTran(); |
| | | //æä½æ°æ®ï¼å¹¶åé
éæ±åºå |
| | | _outboundRepository.OutMESOrderRepository.AddData(AddoutMESOrders); |
| | | List<Dt_OutMESOrder> mESOrders = _outboundRepository.OutMESOrderRepository.QueryData(x => AddoutMESOrders.Select(x => x.OutDetailId).Contains(x.OutDetailId)); |
| | | { |
| | | List<Dt_Task> tasks = new List<Dt_Task>(); |
| | | List<Dt_ProStockInfo>? stockInfos = null; |
| | | List<Dt_OutMESOrder>? Orders = null; |
| | | List<Dt_OutStockLockInfo>? outStockLockInfos = null; |
| | | List<Dt_LocationInfo>? locationInfos = null; |
| | | { |
| | | if (mESOrders.Where(x => x.WarehouseId == WarehouseEnum.LLDFL.ObjToInt()).ToList().Count>0) |
| | | { |
| | | //åé
åºå |
| | | (List<Dt_ProStockInfo>, List<Dt_OutMESOrder>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.OutMESOrderService.AssignProStockOutbound(mESOrders.Where(x => x.WarehouseId == WarehouseEnum.LLDFL.ObjToInt()).ToList()); |
| | | if (result.Item1 != null && result.Item1.Count > 0) |
| | | { |
| | | //åå»ºä»»å¡ |
| | | tasks = GetTasks(result.Item1, result.Item3); |
| | | result.Item3.ForEach(x => |
| | | { |
| | | x.Status = OutLockStockStatusEnum.åºåºä¸.ObjToInt(); |
| | | }); |
| | | stockInfos = result.Item1; |
| | | Orders = result.Item2; |
| | | outStockLockInfos = result.Item3; |
| | | locationInfos = result.Item4; |
| | | } |
| | | } |
| | | } |
| | | if (stockInfos != null && stockInfos.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0 && tasks.Count>0) |
| | | { |
| | | BaseDal.AddData(tasks); |
| | | stockInfos.ForEach(x => |
| | | { |
| | | x.StockStatus = StockStatusEmun.åºåºéå®.ObjToInt(); |
| | | }); |
| | | WebResponseContent contentResponse = _outboundService.OutMESOrderService.LockOutboundStockDataUpdate(stockInfos, Orders, outStockLockInfos, locationInfos, tasks: tasks); |
| | | //List<Dt_OutMESOrder> mESOrders = _outboundRepository.OutMESOrderRepository.QueryData(x => AddoutMESOrders.Select(x => x.OutDetailId).Contains(x.OutDetailId)); |
| | | //{ |
| | | // List<Dt_Task> tasks = new List<Dt_Task>(); |
| | | // List<Dt_ProStockInfo>? stockInfos = null; |
| | | // List<Dt_OutMESOrder>? Orders = null; |
| | | // List<Dt_OutStockLockInfo>? outStockLockInfos = null; |
| | | // List<Dt_LocationInfo>? locationInfos = null; |
| | | // { |
| | | // if (mESOrders.Where(x => x.WarehouseId == WarehouseEnum.LLDFL.ObjToInt()).ToList().Count>0) |
| | | // { |
| | | // //åé
åºå |
| | | // (List<Dt_ProStockInfo>, List<Dt_OutMESOrder>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.OutMESOrderService.AssignProStockOutbound(mESOrders.Where(x => x.WarehouseId == WarehouseEnum.LLDFL.ObjToInt()).ToList()); |
| | | // if (result.Item1 != null && result.Item1.Count > 0) |
| | | // { |
| | | // //åå»ºä»»å¡ |
| | | // tasks = GetTasks(result.Item1, result.Item3); |
| | | // result.Item3.ForEach(x => |
| | | // { |
| | | // x.Status = OutLockStockStatusEnum.åºåºä¸.ObjToInt(); |
| | | // }); |
| | | // stockInfos = result.Item1; |
| | | // Orders = result.Item2; |
| | | // outStockLockInfos = result.Item3; |
| | | // locationInfos = result.Item4; |
| | | // } |
| | | // } |
| | | // } |
| | | // if (stockInfos != null && stockInfos.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0 && tasks.Count>0) |
| | | // { |
| | | // BaseDal.AddData(tasks); |
| | | // stockInfos.ForEach(x => |
| | | // { |
| | | // x.StockStatus = StockStatusEmun.åºåºéå®.ObjToInt(); |
| | | // }); |
| | | // WebResponseContent contentResponse = _outboundService.OutMESOrderService.LockOutboundStockDataUpdate(stockInfos, Orders, outStockLockInfos, locationInfos, tasks: tasks); |
| | | |
| | | if (!contentResponse.Status) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return content.Error(contentResponse.Message); |
| | | } |
| | | } |
| | | } |
| | | { |
| | | List<Dt_Task> tasks = new List<Dt_Task>(); |
| | | List<Dt_StockInfo>? stockInfos = null; |
| | | List<Dt_OutMESOrder>? Orders = null; |
| | | List<Dt_OutStockLockInfo>? outStockLockInfos = null; |
| | | List<Dt_LocationInfo>? locationInfos = null; |
| | | { |
| | | if (mESOrders.Where(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt()).ToList().Count > 0) |
| | | { |
| | | //åé
åºå |
| | | (List<Dt_StockInfo>, List<Dt_OutMESOrder>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.OutMESOrderService.AssignStockOutbound(mESOrders.Where(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt()).ToList()); |
| | | if (result.Item1 != null && result.Item1.Count > 0) |
| | | { |
| | | //åå»ºä»»å¡ |
| | | tasks = GetTasks(result.Item1, result.Item3); |
| | | result.Item3.ForEach(x => |
| | | { |
| | | x.Status = OutLockStockStatusEnum.åºåºä¸.ObjToInt(); |
| | | }); |
| | | stockInfos = result.Item1; |
| | | Orders = result.Item2; |
| | | outStockLockInfos = result.Item3; |
| | | locationInfos = result.Item4; |
| | | } |
| | | } |
| | | } |
| | | if (stockInfos != null && stockInfos.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0 && tasks.Count>0) |
| | | { |
| | | BaseDal.AddData(tasks); |
| | | stockInfos.ForEach(x => |
| | | { |
| | | x.StockStatus = StockStatusEmun.åºåºéå®.ObjToInt(); |
| | | }); |
| | | WebResponseContent contentResponse = _outboundService.OutMESOrderService.LockOutboundStockDataUpdate(stockInfos, Orders, outStockLockInfos, locationInfos, tasks: tasks); |
| | | if (!contentResponse.Status) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return content.Error(contentResponse.Message); |
| | | } |
| | | } |
| | | } |
| | | // if (!contentResponse.Status) |
| | | // { |
| | | // _unitOfWorkManage.RollbackTran(); |
| | | // return content.Error(contentResponse.Message); |
| | | // } |
| | | // } |
| | | //} |
| | | //{ |
| | | // List<Dt_Task> tasks = new List<Dt_Task>(); |
| | | // List<Dt_StockInfo>? stockInfos = null; |
| | | // List<Dt_OutMESOrder>? Orders = null; |
| | | // List<Dt_OutStockLockInfo>? outStockLockInfos = null; |
| | | // List<Dt_LocationInfo>? locationInfos = null; |
| | | // { |
| | | // if (mESOrders.Where(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt()).ToList().Count > 0) |
| | | // { |
| | | // //åé
åºå |
| | | // (List<Dt_StockInfo>, List<Dt_OutMESOrder>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.OutMESOrderService.AssignStockOutbound(mESOrders.Where(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt()).ToList()); |
| | | // if (result.Item1 != null && result.Item1.Count > 0) |
| | | // { |
| | | // //åå»ºä»»å¡ |
| | | // tasks = GetTasks(result.Item1, result.Item3); |
| | | // result.Item3.ForEach(x => |
| | | // { |
| | | // x.Status = OutLockStockStatusEnum.åºåºä¸.ObjToInt(); |
| | | // }); |
| | | // stockInfos = result.Item1; |
| | | // Orders = result.Item2; |
| | | // outStockLockInfos = result.Item3; |
| | | // locationInfos = result.Item4; |
| | | // } |
| | | // } |
| | | // } |
| | | // if (stockInfos != null && stockInfos.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0 && tasks.Count>0) |
| | | // { |
| | | // BaseDal.AddData(tasks); |
| | | // stockInfos.ForEach(x => |
| | | // { |
| | | // x.StockStatus = StockStatusEmun.åºåºéå®.ObjToInt(); |
| | | // }); |
| | | // WebResponseContent contentResponse = _outboundService.OutMESOrderService.LockOutboundStockDataUpdate(stockInfos, Orders, outStockLockInfos, locationInfos, tasks: tasks); |
| | | // if (!contentResponse.Status) |
| | | // { |
| | | // _unitOfWorkManage.RollbackTran(); |
| | | // return content.Error(contentResponse.Message); |
| | | // } |
| | | // } |
| | | //} |
| | | _unitOfWorkManage.CommitTran(); |
| | | |
| | | return content.OK("æ¥æ¶æå"); |
| | |
| | | /// æ¥æ¶åæéé¢æä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("ReceivePicking"), AllowAnonymous] |
| | | [HttpPost, HttpGet, Route("ReceivePicking")] |
| | | public WebResponseContent ReceivePicking([FromBody] List<BSTPickInfoDTO> bSTPickInfoDTOs) |
| | | { |
| | | return _taskService.ReceivePicking(bSTPickInfoDTOs); |
| | |
| | | /// æ¥æ¶åæééæä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost, HttpGet, Route("ReceiveReturnOrder"), AllowAnonymous] |
| | | [HttpPost, HttpGet, Route("ReceiveReturnOrder")] |
| | | public WebResponseContent ReceiveReturnOrder([FromBody] List<BSTReturnOrderDTO> bSTReturnOrderDTOs) |
| | | { |
| | | return _returnBSTOrderService.ReceiveReturnOrder(bSTReturnOrderDTOs); |
| | |
| | | //è¿æ¥å符串 |
| | | //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=", |
| | | //"ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_HUAIAN;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | "ConnectionString": "Data Source=.;Initial Catalog=WIDESEA_WMSLLD;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | "ConnectionString": "Data Source=.;Initial Catalog=WIDESEA_WMSLLD;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //"ConnectionString": "Data Source=192.168.35.3;Initial Catalog=WIDESEA_WMSLLD;User ID=sa;Password=Sa123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //æ§WMSæ°æ®åºè¿æ¥ |
| | | //"TeConnectionString": "Data Source=10.30.4.92;Initial Catalog=TeChuang;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | |
| | | "ApiName": "WIDESEA", |
| | | "ExpMinutes": 360, |
| | | "QuartzJobAutoStart": true, |
| | | "OutSGLength": "50000", |
| | | "OutSGCount": "17", |
| | | "PDAVersion": "4", |
| | | "WebSocketPort": 9296 |
| | | } |