zhanghonglin
10 天以前 cfb3f2c7e9cde8cc2eb2a19263d0802c0c5410a3
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Job/ConveyorLineJob.cs
@@ -12,6 +12,7 @@
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core.BaseRepository;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_Core.LogHelper;
using WIDESEAWCS_DTO.MES;
using WIDESEAWCS_DTO.Stock;
using WIDESEAWCS_ITaskInfoService;
@@ -55,6 +56,8 @@
        public Task Execute(IJobExecutionContext context)
        {
            //堆垛机设备状态
            int sc = comm.GETR_TaskStatus();
            //连接设备
            bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
            if (flag && value != null)
@@ -62,29 +65,30 @@
                OtherDevice device = (OtherDevice)value;
                List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).Distinct().ToList();
                List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode);
                //具体设备
                foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode)))
                try
                {
                    i++;
                    //读取信号
                    DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
                    //DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode ).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
                    if (deviceProRead != null)
                    //具体设备
                    foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode)))
                    {
                        ConveyorLineCommand conveyorLineInfoRead = device.Communicator.ReadCustomer<ConveyorLineCommand>(deviceProRead.DeviceProAddress);
                        //空桶入库任务
                        if (item.StationName == "空桶入")
                        i++;
                        //读取信号
                        DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
                        //DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode ).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
                        if (deviceProRead != null)
                        {
                            comm.R_StatusA((short)conveyorLineInfoRead.R_State);
                            comm.R_PickA((short)conveyorLineInfoRead.R_Pick);
                            if (conveyorLineInfoRead.R_Pick == 1 && conveyorLineInfoRead.R_State == 1)
                            ConveyorLineCommand conveyorLineInfoRead = device.Communicator.ReadCustomer<ConveyorLineCommand>(deviceProRead.DeviceProAddress);
                            //空桶入库任务
                            if (item.StationName == "空桶入")
                            {
                                try
                                comm.R_StatusA((short)conveyorLineInfoRead.R_State);
                                comm.R_PickA((short)conveyorLineInfoRead.R_Pick);
                                if (conveyorLineInfoRead.R_Pick == 1 && conveyorLineInfoRead.R_State == 1 && sc == 2)
                                {
                                    //判断任务是否重复
                                    Dt_Task task = _TaskRepository.QueryFirst(x => x.TaskType == (int)TaskTypeEnum.InEmpty);
                                    if (task == null)
                                    {
                                        LogLock.OutLogAOP("输送线任务日志", new string[] { device.DeviceCode, $"{"空桶入库任务生成" + "申请取(放)料:" + conveyorLineInfoRead.R_Pick + "设备状态:" + conveyorLineInfoRead.R_State}" });
                                        //WMS生成任务
                                        string address = AppSettings.Get("WMSApiAddress");
                                        if (!string.IsNullOrEmpty(address))
@@ -93,21 +97,13 @@
                                        }
                                    }
                                }
                                catch (Exception ex)
                                {
                                    //写入日志
                                    WriteInfo(device.DeviceCode, $"{ex.Message}");
                                }
                            }
                        }
                        //满桶入库任务
                        if (item.StationName == "满桶入")
                        {
                            comm.R_StatusC((short)conveyorLineInfoRead.R_State);
                            comm.R_PickC((short)conveyorLineInfoRead.R_Pick);
                            if (conveyorLineInfoRead.R_Pick == 1 && conveyorLineInfoRead.R_State == 1)
                            //满桶入库任务
                            if (item.StationName == "满桶入")
                            {
                                try
                                comm.R_StatusC((short)conveyorLineInfoRead.R_State);
                                comm.R_PickC((short)conveyorLineInfoRead.R_Pick);
                                if (conveyorLineInfoRead.R_Pick == 1 && conveyorLineInfoRead.R_State == 1 && sc == 2)
                                {
                                    //清空物料编号
                                    if (k)
@@ -125,9 +121,10 @@
                                    Stock.MaterialCode4 = conveyorLineInfoRead.R_NumberD;
                                    //判断任务是否重复
                                    Dt_Task task = _TaskRepository.QueryFirst(x => x.TaskType == (int)TaskTypeEnum.Infull);
                                    Dt_Task task = _TaskRepository.QueryFirst(x => x.TaskType == (int)TaskTypeEnum.Infull || x.TaskType == (int)TaskTypeEnum.OutDirect);
                                    if (task == null)
                                    {
                                        LogLock.OutLogAOP("输送线任务日志", new string[] { device.DeviceCode, $"{"满桶入库任务生成" + "申请取(放)料:" + conveyorLineInfoRead.R_Pick + "设备状态:" + conveyorLineInfoRead.R_State + "//" + conveyorLineInfoRead.R_NumberA + "/" + conveyorLineInfoRead.R_NumberB + "/" + conveyorLineInfoRead.R_NumberC + "/" + conveyorLineInfoRead.R_NumberD}" });
                                        Stock.location = item.location;
                                        //WMS生成任务
                                        string address = AppSettings.Get("WMSApiAddress");
@@ -140,46 +137,40 @@
                                            k = true;
                                            //向MES发送报工单
                                            if (Stock.MaterialCode1 != null && !Stock.MaterialCode1.Equals(""))
                                            {
                                                MESReport(Stock.MaterialCode1);
                                            }
                                            if (Stock.MaterialCode2 != null && !Stock.MaterialCode2.Equals(""))
                                            {
                                                MESReport(Stock.MaterialCode2);
                                            }
                                            if (Stock.MaterialCode3 != null && !Stock.MaterialCode3.Equals(""))
                                            {
                                                MESReport(Stock.MaterialCode3);
                                            }
                                            if (Stock.MaterialCode4 != null && !Stock.MaterialCode4.Equals(""))
                                            {
                                                MESReport(Stock.MaterialCode4);
                                            }
                                            //if (Stock.MaterialCode1 != null && !Stock.MaterialCode1.Equals(""))
                                            //{
                                            //    MESReport(Stock.MaterialCode1);
                                            //}
                                            //if (Stock.MaterialCode2 != null && !Stock.MaterialCode2.Equals(""))
                                            //{
                                            //    MESReport(Stock.MaterialCode2);
                                            //}
                                            //if (Stock.MaterialCode3 != null && !Stock.MaterialCode3.Equals(""))
                                            //{
                                            //    MESReport(Stock.MaterialCode3);
                                            //}
                                            //if (Stock.MaterialCode4 != null && !Stock.MaterialCode4.Equals(""))
                                            //{
                                            //    MESReport(Stock.MaterialCode4);
                                            //}
                                        }
                                    }
                                }
                                catch (Exception ex)
                                {
                                    //写入日志
                                    WriteInfo(device.DeviceCode, $"{ex.Message}");
                                }
                            }
                        }
                        //空桶出
                        if (item.StationName == "空桶出")
                        {
                            comm.R_StatusB((short)conveyorLineInfoRead.R_State);
                            comm.R_PickB((short)conveyorLineInfoRead.R_Pick);
                            if (conveyorLineInfoRead.R_Pick == 1 && conveyorLineInfoRead.R_State == 1)
                            //空桶出
                            if (item.StationName == "空桶出")
                            {
                                try
                                comm.R_StatusB((short)conveyorLineInfoRead.R_State);
                                comm.R_PickB((short)conveyorLineInfoRead.R_Pick);
                                if (conveyorLineInfoRead.R_Pick == 1 && conveyorLineInfoRead.R_State == 1 && sc == 2)
                                {
                                    //判断任务是否重复
                                    Dt_Task task = _TaskRepository.QueryFirst(x => x.TaskType == (int)TaskTypeEnum.OutEmpty);
                                    if (task == null)
                                    {
                                        LogLock.OutLogAOP("输送线任务日志", new string[] { device.DeviceCode, $"{"空桶出库任务生成" + "申请取(放)料:" + conveyorLineInfoRead.R_Pick + "设备状态:" + conveyorLineInfoRead.R_State}" });
                                        //WMS生成任务
                                        string address = AppSettings.Get("WMSApiAddress");
                                        if (!string.IsNullOrEmpty(address))
@@ -187,85 +178,91 @@
                                            HttpHelper.Post($"{address}/api/Task/addOutEmptyTask/?location={item.location}", "");
                                        }
                                    }
                                }
                                catch (Exception ex)
                                {
                                    //写入日志
                                    WriteInfo(device.DeviceCode, $"{ex.Message}");
                                }
                            }
                        }
                        //满桶出
                        if (item.StationName == "满桶出")
                        {
                            comm.R_StatusD((short)conveyorLineInfoRead.R_State);
                            comm.R_PickD((short)conveyorLineInfoRead.R_Pick);
                            //告诉WMS可以出库
                            if (conveyorLineInfoRead.R_Pick == 1 && conveyorLineInfoRead.R_State == 1)
                            //满桶出
                            if (item.StationName == "满桶出")
                            {
                                if (m)
                                comm.R_StatusD((short)conveyorLineInfoRead.R_State);
                                comm.R_PickD((short)conveyorLineInfoRead.R_Pick);
                                //告诉WMS可以出库
                                if (conveyorLineInfoRead.R_Pick == 1 && conveyorLineInfoRead.R_State == 1)
                                {
                                    //WMS生成任务
                                    string address = AppSettings.Get("WMSApiAddress");
                                    if (!string.IsNullOrEmpty(address))
                                    if (m)
                                    {
                                        HttpHelper.Post($"{address}/api/Task/WCSSignal/?k=1", "");
                                        //WMS生成任务
                                        string address = AppSettings.Get("WMSApiAddress");
                                        if (!string.IsNullOrEmpty(address))
                                        {
                                            HttpHelper.Post($"{address}/api/Task/WCSSignal/?k=1", "");
                                        }
                                        m = false;
                                        n = true;
                                        //写入日志
                                        LogLock.OutLogAOP("输送线任务日志", new string[] { device.DeviceCode, $"{"满桶出库任务生成" + "申请取(放)料:" + conveyorLineInfoRead.R_Pick + "设备状态:" + conveyorLineInfoRead.R_State}" });
                                    }
                                    m = false;
                                    n = true;
                                }
                            }
                            //告诉WMS不可以出库
                            else
                            {
                                if (n)
                                //告诉WMS不可以出库
                                else
                                {
                                    //WMS生成任务
                                    string address = AppSettings.Get("WMSApiAddress");
                                    if (!string.IsNullOrEmpty(address))
                                    if (n)
                                    {
                                        HttpHelper.Post($"{address}/api/Task/WCSSignal/?k=0", "");
                                        //WMS生成任务
                                        string address = AppSettings.Get("WMSApiAddress");
                                        if (!string.IsNullOrEmpty(address))
                                        {
                                            HttpHelper.Post($"{address}/api/Task/WCSSignal/?k=0", "");
                                        }
                                        n = false;
                                        m = true;
                                        //写入日志
                                        LogLock.OutLogAOP("输送线任务日志", new string[] { device.DeviceCode, $"{"满桶出库任务生成" + "申请取(放)料:" + conveyorLineInfoRead.R_Pick + "设备状态:" + conveyorLineInfoRead.R_State}" });
                                    }
                                    n = false;
                                    m = true;
                                }
                            }
                        }
                    }
                    i = 0;
                }
                i = 0;
                catch (Exception ex)
                {
                    //写入日志
                    WriteInfo(device.DeviceCode, $"{ex.Message}");
                }
            }
            return Task.CompletedTask;
        }
        //MES报工
        public void MESReport(string MaterialCode)
        {
            try
            {
                Reports reports = new Reports();
        //public void MESReport(string MaterialCode)
        //{
        //    try
        //    {
        //        Reports reports = new Reports();
                //查询二维码
                Dt_FillingOrder FillingOrder = _FillingOrderRepository.QueryFirst(x => x.BarCode == MaterialCode);
        //        //查询二维码
        //        Dt_FillingOrder FillingOrder = _FillingOrderRepository.QueryFirst(x => x.BarCode == MaterialCode);
                reports.report.Qty = FillingOrder.BarNum;
                reports.report.DispatchID = FillingOrder.WorkID + "";
                reports.barcodeSN[0].Barcode = FillingOrder.BarCode;
                reports.barcodeSN[0].BatchNum = int.Parse(FillingOrder.batchNum);
                reports.barcodeSN[0].Id = FillingOrder.BarCodeID;
                reports.barcodeSN[0].MaterialId = FillingOrder.ArticleNumID;
                reports.barcodeSN[0].Quantity = (int)FillingOrder.BarNum;
                reports.barcodeSN[0].DispatchId = FillingOrder.WorkID;
        //        reports.report.Qty = FillingOrder.BarNum;
        //        reports.report.DispatchID = FillingOrder.WorkID + "";
        //        reports.barcodeSN[0].Barcode = FillingOrder.BarCode;
        //        reports.barcodeSN[0].BatchNum = int.Parse(FillingOrder.batchNum);
        //        reports.barcodeSN[0].Id = FillingOrder.BarCodeID;
        //        reports.barcodeSN[0].MaterialId = FillingOrder.ArticleNumID;
        //        reports.barcodeSN[0].Quantity = (int)FillingOrder.BarNum;
        //        reports.barcodeSN[0].DispatchId = FillingOrder.WorkID;
                string mes = AppSettings.Get("WMSApiAddress");
                if (!string.IsNullOrEmpty(mes))
                {
                    HttpHelper.Post($"{mes}/Task/SaveReportRaw/", reports.Serialize());
                }
            }
            catch (Exception ex) {
                WriteInfo( "MES报工错误", $"{ex.Message}");
            }
        }
        //        string mes = AppSettings.Get("MSE");
        //        if (!string.IsNullOrEmpty(mes))
        //        {
        //            HttpHelper.Post($"{mes}/Task/SaveReportRaw/", reports.Serialize());
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        WriteInfo("MES报工错误", $"{ex.Message}");
        //    }
        //}
    }
}