Zhang-Hong-Lin
2025-03-07 ee94d6b5b5719159370c5e0055957d2dffb3f815
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/GZJ/GZJJob.cs
@@ -96,84 +96,150 @@
                        var storagemode = _storagemodeRepository.QueryFirst(v => v.Id == 1);
                        if (OHTJob.oHTReadData.R_RGVMode && OHTJob.oHTReadData.R_DK_isready)//RGV上料模式,且东跨架子有上料信号
                        {
                            var station = _dt_stationInfoRepository.QueryFirst(v => v.msg == "东跨架子");
                            task.SourceAddress = station.Row + "-" + station.Column + "-1";
                            task.TargetAddress = _locationInfoService.GetInLocation(storagemode.storagemode).LocationCode;
                            task.Grade = 1;
                            task.Remark = (int)MateTypeEnum.ZiChan;
                            var oldhtytask = _dt_taskRepositiry.QueryFirst(v => v.SourceAddress == task.SourceAddress);
                            if (oldhtytask !=null)
                            {
                                task.TargetAddress = _locationInfoService.GetInLocation(storagemode.storagemode).LocationCode;
                                task.Grade = 1;
                                task.Remark = (int)MateTypeEnum.ZiChan;
                                //查找相邻的库位
                                Dt_LocationInfo Towlocation = new Dt_LocationInfo();
                                var Onelocation = _LocationInfoRepository.QueryFirst(v => v.LocationCode == task.TargetAddress);
                                if (Onelocation.Depth == 1)
                                {
                                    Towlocation = _LocationInfoRepository.QueryFirst(v => v.Row == Onelocation.Row && v.Column == Onelocation.Column && v.Depth == 2);
                                }
                                else
                                {
                                    Towlocation = _LocationInfoRepository.QueryFirst(v => v.Row == Onelocation.Row && v.Column == Onelocation.Column && v.Depth == 1);
                                }
                                task.NextAddress = Towlocation.LocationCode;
                                task.Roadway = "TC01";
                                task.TaskType = (int)TaskInboundTypeEnum.Inbound;
                                task.TaskState = (int)TaskInStatusEnum.InNew;
                                task.PalletCode = "text";
                                task.CurrentAddress = "text";
                                task.WMSId = 3;
                                _dt_taskRepositiry.AddData(task);
                            }
                        }
                        else if (OHTJob.oHTReadData.R_RGVMode && OHTJob.oHTReadData.R_XK_isready)//RGV上料模式,且西跨架子有上料信号
                        if (OHTJob.oHTReadData.R_RGVMode && OHTJob.oHTReadData.R_XK_isready)//RGV上料模式,且西跨架子有上料信号
                        {
                            var station = _dt_stationInfoRepository.QueryFirst(v => v.msg == "西跨架子");
                            task.SourceAddress = station.Row + "-" + station.Column + "-1";
                            task.TargetAddress = _locationInfoService.GetInLocation(storagemode.storagemode).LocationCode;
                            var DKstation = _dt_stationInfoRepository.QueryFirst(v => v.msg == "东跨架子");
                            string address = DKstation.Row + "-" + DKstation.Column + "-1";
                            var oldtask = _dt_taskRepositiry.QueryFirst(v => v.SourceAddress == address);
                            if (oldtask != null && oldtask.TaskState == (int)TaskInStatusEnum.InNew)
                            var oldhtytask = _dt_taskRepositiry.QueryFirst(v => v.SourceAddress == task.SourceAddress);
                            if (oldhtytask!=null)
                            {
                                task.Grade = 2;
                                task.TargetAddress = _locationInfoService.GetInLocation(storagemode.storagemode).LocationCode;
                                var DKstation = _dt_stationInfoRepository.QueryFirst(v => v.msg == "东跨架子");
                                string address = DKstation.Row + "-" + DKstation.Column + "-1";
                                var oldtask = _dt_taskRepositiry.QueryFirst(v => v.SourceAddress == address);
                                if (oldtask != null && oldtask.TaskState == (int)TaskInStatusEnum.InNew)
                                {
                                    task.Grade = 2;
                                }
                                else
                                {
                                    task.Grade = 1;
                                }
                                task.Remark = (int)MateTypeEnum.ZiChan;
                                //查找相邻的库位
                                Dt_LocationInfo Towlocation = new Dt_LocationInfo();
                                var Onelocation = _LocationInfoRepository.QueryFirst(v => v.LocationCode == task.TargetAddress);
                                if (Onelocation.Depth == 1)
                                {
                                    Towlocation = _LocationInfoRepository.QueryFirst(v => v.Row == Onelocation.Row && v.Column == Onelocation.Column && v.Depth == 2);
                                }
                                else
                                {
                                    Towlocation = _LocationInfoRepository.QueryFirst(v => v.Row == Onelocation.Row && v.Column == Onelocation.Column && v.Depth == 1);
                                }
                                task.NextAddress = Towlocation.LocationCode;
                                task.Roadway = "TC01";
                                task.TaskType = (int)TaskInboundTypeEnum.Inbound;
                                task.TaskState = (int)TaskInStatusEnum.InNew;
                                task.PalletCode = "text";
                                task.CurrentAddress = "text";
                                task.WMSId = 3;
                                _dt_taskRepositiry.AddData(task);
                            }
                            else
                            {
                                task.Grade = 1;
                            }
                            task.Remark = (int)MateTypeEnum.ZiChan;
                        }
                        else if (OHTJob.oHTReadData.R_CCMode && OHTJob.oHTReadData.R_XK_isready)//人工叉车上料模式,且西跨架子有上料信号
                        if (OHTJob.oHTReadData.R_CCMode && OHTJob.oHTReadData.R_XK_isready)//人工叉车上料模式,且西跨架子有上料信号
                        {
                            var station = _dt_stationInfoRepository.QueryFirst(v => v.msg == "西跨架子");
                            task.SourceAddress = station.Row + "-" + station.Column + "-1";
                            task.TargetAddress = _locationInfoService.GetInLocation(storagemode.storagemode).LocationCode;
                            task.Grade = 1;
                            task.Remark = (int)MateTypeEnum.WaiGou;
                            var oldhtytask = _dt_taskRepositiry.QueryFirst(v => v.SourceAddress == task.SourceAddress);
                            if (oldhtytask!=null)
                            {
                                task.TargetAddress = _locationInfoService.GetInLocation(storagemode.storagemode).LocationCode;
                                task.Grade = 1;
                                task.Remark = (int)MateTypeEnum.WaiGou;
                                //查找相邻的库位
                                Dt_LocationInfo Towlocation = new Dt_LocationInfo();
                                var Onelocation = _LocationInfoRepository.QueryFirst(v => v.LocationCode == task.TargetAddress);
                                if (Onelocation.Depth == 1)
                                {
                                    Towlocation = _LocationInfoRepository.QueryFirst(v => v.Row == Onelocation.Row && v.Column == Onelocation.Column && v.Depth == 2);
                                }
                                else
                                {
                                    Towlocation = _LocationInfoRepository.QueryFirst(v => v.Row == Onelocation.Row && v.Column == Onelocation.Column && v.Depth == 1);
                                }
                                task.NextAddress = Towlocation.LocationCode;
                                task.Roadway = "TC01";
                                task.TaskType = (int)TaskInboundTypeEnum.Inbound;
                                task.TaskState = (int)TaskInStatusEnum.InNew;
                                task.PalletCode = "text";
                                task.CurrentAddress = "text";
                                task.WMSId = 3;
                                _dt_taskRepositiry.AddData(task);
                            }
                        }
                        else if (OHTJob.oHTReadData.R_CCMode && OHTJob.oHTReadData.R_DK_isready)//人工叉车上料模式,且东跨架子有上料信号
                        if (OHTJob.oHTReadData.R_CCMode && OHTJob.oHTReadData.R_DK_isready)//人工叉车上料模式,且东跨架子有上料信号
                        {
                            var station = _dt_stationInfoRepository.QueryFirst(v => v.msg == "东跨架子");
                            task.SourceAddress = station.Row + "-" + station.Column + "-1";
                            task.TargetAddress = _locationInfoService.GetInLocation(storagemode.storagemode).LocationCode;
                            var XKstation = _dt_stationInfoRepository.QueryFirst(v => v.msg == "西跨架子");
                            string address = XKstation.Row + "-" + XKstation.Column + "-1";
                            var oldtask = _dt_taskRepositiry.QueryFirst(v => v.SourceAddress == address);
                            if (oldtask != null && oldtask.TaskState == (int)TaskInStatusEnum.InNew)
                            var oldhtytask = _dt_taskRepositiry.QueryFirst(v => v.SourceAddress == task.SourceAddress);
                            if (true)
                            {
                                task.Grade = 2;
                                task.TargetAddress = _locationInfoService.GetInLocation(storagemode.storagemode).LocationCode;
                                var XKstation = _dt_stationInfoRepository.QueryFirst(v => v.msg == "西跨架子");
                                string address = XKstation.Row + "-" + XKstation.Column + "-1";
                                var oldtask = _dt_taskRepositiry.QueryFirst(v => v.SourceAddress == address);
                                if (oldtask != null && oldtask.TaskState == (int)TaskInStatusEnum.InNew)
                                {
                                    task.Grade = 2;
                                }
                                else
                                {
                                    task.Grade = 1;
                                }
                                task.Remark = (int)MateTypeEnum.WaiGou;
                                //查找相邻的库位
                                Dt_LocationInfo Towlocation = new Dt_LocationInfo();
                                var Onelocation = _LocationInfoRepository.QueryFirst(v => v.LocationCode == task.TargetAddress);
                                if (Onelocation.Depth == 1)
                                {
                                    Towlocation = _LocationInfoRepository.QueryFirst(v => v.Row == Onelocation.Row && v.Column == Onelocation.Column && v.Depth == 2);
                                }
                                else
                                {
                                    Towlocation = _LocationInfoRepository.QueryFirst(v => v.Row == Onelocation.Row && v.Column == Onelocation.Column && v.Depth == 1);
                                }
                                task.NextAddress = Towlocation.LocationCode;
                                task.Roadway = "TC01";
                                task.TaskType = (int)TaskInboundTypeEnum.Inbound;
                                task.TaskState = (int)TaskInStatusEnum.InNew;
                                task.PalletCode = "text";
                                task.CurrentAddress = "text";
                                task.WMSId = 3;
                                _dt_taskRepositiry.AddData(task);
                            }
                            else
                            {
                                task.Grade = 1;
                            }
                            task.Remark = (int)MateTypeEnum.WaiGou;
                        }
                        else
                        {
                            throw new Exception($"规整机当前信号不满足入库任务生成条件");
                        }
                        //查找相邻的库位
                        Dt_LocationInfo Towlocation = new Dt_LocationInfo();
                        var Onelocation = _LocationInfoRepository.QueryFirst(v => v.LocationCode == task.TargetAddress);
                        if (Onelocation.Depth == 1)
                        {
                            Towlocation = _LocationInfoRepository.QueryFirst(v => v.Row == Onelocation.Row && v.Column == Onelocation.Column && v.Depth == 2);
                        }
                        else
                        {
                            Towlocation = _LocationInfoRepository.QueryFirst(v => v.Row == Onelocation.Row && v.Column == Onelocation.Column && v.Depth == 1);
                        }
                        task.NextAddress = Towlocation.LocationCode;
                        task.Roadway = "TC01";
                        task.TaskType = (int)TaskInboundTypeEnum.Inbound;
                        task.TaskState = (int)TaskInStatusEnum.InNew;
                        task.PalletCode = "text";
                        task.CurrentAddress = "text";
                        task.WMSId = 3;
                        var oldhtytask = _dt_taskRepositiry.QueryFirst(v => v.SourceAddress == task.SourceAddress);
                        if (oldhtytask == null)
                        {
                            _dt_taskRepositiry.AddData(task);
                        }
                    }
                    else if(Inisout.InOut == 2)
                    {
@@ -220,8 +286,6 @@
                            _dt_taskRepositiry.AddData(outtask);
                        }
                    }
                    //ceshi
                    #endregion
                }
                catch (Exception ex)
@@ -308,6 +372,41 @@
                    _unitOfWorkManage.RollbackTran();
                    _ErrormsginfoService.UpdateErrorMsg(ex.Message, 3);
                }
                try
                {
                    #region ç”Ÿæˆå¤©è½¦ç§»åŠ¨ä»»åŠ¡
                    if (!OHTJob.oHTReadData.R_ZXJ_isWork || !OHTJob.oHTReadData.R_HC_isReady)
                    {
                        throw new Exception($"整形机投入使用信号为false或者行车可准备取板为false");
                    }
                    //查询当前需要出库的批次号,以及出库物料类型
                    var batch = _batchInfoRepository.QueryFirst(v => v.Id == 1);
                    //查询库存物料库存信息
                    var stocks = _StockInfoRepository.QueryData(v => v.Remark == batch.materType && v.BatchNo == batch.OutBatch && v.StockStatus == 0)
                        .OrderBy(v => v.CreateDate).ToList();
                    //开始创建任务
                    Dt_Task outtask = new Dt_Task();
                    outtask.Roadway = "TC01";
                    outtask.TaskType = (int)TaskMoveEnum.Mowe;
                    outtask.TaskState = (int)TaskMoveStatusEnum.OutNewMove;
                    outtask.SourceAddress = "text";
                    outtask.TargetAddress = stocks[0].LocationCode;
                    outtask.NextAddress = "text";
                    outtask.Grade = 1;
                    outtask.WMSId = 3;
                    outtask.Remark = batch.materType;
                    outtask.PalletCode = "text";
                    outtask.CurrentAddress = "text";
                    _dt_taskRepositiry.AddData(outtask);
                    #endregion
                }
                catch (Exception ex)
                {
                    _ErrormsginfoService.UpdateErrorMsg(ex.Message, 4);
                }
            }
            return Task.CompletedTask;
        }