wangxinhui
2024-11-06 8f392cc88b0768b74efca3b68785cf5aa1c38e70
wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/Z_BCK_Task.cs
@@ -3,6 +3,7 @@
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using WIDESEA_Common;
using WIDESEA_Common.DBHelper;
using WIDESEA_Common.LoctionEnum;
@@ -27,192 +28,51 @@
        {
            if (Interlocked.Exchange(ref _readZBCKSignalsoZ, 1) == 0)
            {
                try
                Task.Run(() =>
                {
                    FreeDB freeDB = new FreeDB();
                    VOLContext Context = new VOLContext();
                    Ibase_ware_locationRepository locRepository = new base_ware_locationRepository(Context);
                    Ibase_routing_tableRepository routingRepository = new base_routing_tableRepository(Context);
                    Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context);
                    //34出口,供给辊分上料口
                    var location_34 = freeDB.Select<base_ware_location>().Where(t => t.upper_code == "ZJ-BCHCJ32" && t.task == 2 && t.status == 1).First();
                    //34空架立即补料
                    if (location_34 != null)
                    try
                    {
                        if (location_34.location_state == LoctionStateEnum.LocationState_Empty.ToString() && location_34.tpgd == 0)
                        FreeDB freeDB = new FreeDB();
                        VOLContext Context = new VOLContext();
                        Ibase_ware_locationRepository locRepository = new base_ware_locationRepository(Context);
                        Ibase_routing_tableRepository routingRepository = new base_routing_tableRepository(Context);
                        Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context);
                        //34出口,供给辊分上料口
                        var location_34 = freeDB.Select<base_ware_location>().Where(t => t.upper_code == "ZJ-BCHCJ32" && t.task == 2 && t.status == 1).First();
                        //34空架立即补料
                        dt_agvtask dt_Agvtask34 = agvRepository.FindFirst(x => x.agv_toaddress == "ZJ-BCHCJ32");
                        if (dt_Agvtask34 != null && location_34.task == 2)
                        {
                            var location_34_cp = freeDB.Select<base_ware_location>().Where(t => t.location_state == "LocationState_Stored" && t.logic_row.ToString() == "TBXL-BCK" && t.logic_col == 1/*正常料*/  && t.status == 1 && t.upper_code.Contains("ZJ-BCHCJ") && t.status == 1 && t.light_color != "SB" && t.task == 2).OrderBy(t => t.update_time).First();
                            //dt_agvtask task_34 = agvRepository.Find(t => t.agv_fromaddress == "FJ-BCHCJ34" || t.agv_toaddress == "FJ-BCHCJ34").FirstOrDefault();
                            if (location_34_cp != null)//找到合适货位,生成补料搬运任务
                            location_34.update_time = DateTime.Now;
                            location_34.task = 1;
                            location_34.logic_col = 1;
                            var entrys = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
                            if (entrys != null)
                            {
                                //34货位补料任务
                                dt_agvtask agvtask = new dt_agvtask();
                                agvtask.agv_id = Guid.NewGuid();
                                agvtask.agv_tasknum = "KH-" + IdenxManager.GetTaskNo();
                                agvtask.agv_fromaddress = location_34_cp.upper_code;
                                agvtask.agv_toaddress = location_34.upper_code;
                                agvtask.agv_code = "正极AGV调度";
                                agvtask.agv_remark = "正极箔材库搬运(34补料)";
                                agvtask.agv_taskstate = AGVTaskStateEnum.Create.ToString();
                                agvtask.agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString();
                                agvtask.agv_worktype = 1;//工作类型
                                agvtask.agv_materielid = "";
                                agvtask.agv_qty = 1;
                                agvtask.agv_createtime = DateTime.Now;
                                agvtask.agv_grade = 0;//任务优先级
                                agvtask.agv_userid = "WCS";
                                agvtask.agv_barcode = "";
                                //锁定首尾货位
                                location_34_cp.task = 1;
                                location_34_cp.update_time = DateTime.Now;
                                var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
                                if (entry != null)
                                {
                                    entry.State = EntityState.Detached;
                                }
                             int begin=   locRepository.Update(location_34_cp, d => new { d.update_time, d.task }, true);
                                location_34.task = 1;
                                location_34.logic_col = 1;
                                location_34.update_time = DateTime.Now;
                                var entrys = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
                                if (entrys != null)
                                {
                                    entrys.State = EntityState.Detached;
                                }
                              int end= locRepository.Update(location_34, d => new { d.update_time, d.task, d.logic_col }, true);
                                if (begin == 1 && end == 1)
                                {
                                    agvRepository.Add(agvtask, true);
                                    WriteDBLog.Info($"箔材库任务生成").Write($"生成任务:{agvtask.agv_tasknum}", $"箔材库任务生成");
                                    WriteDBLog.Info($"箔材库任务生成").Write($"起点货位【{location_34_cp.upper_code}】状态:托盘光电检测:{location_34_cp.tpgd},状态:{location_34_cp.location_state},更新时间:{location_34_cp.wireless_time}", $"箔材库任务生成");
                                    WriteDBLog.Info($"箔材库任务生成").Write($"终点货位【{location_34.upper_code}】状态:托盘光电检测:{location_34.tpgd},状态:{location_34.location_state},更新时间:{location_34.wireless_time}", $"箔材库任务生成");
                                    WriteDBLog.Info($"箔材库任务生成").Write($"----------------任务生成成功  {DateTime.Now} -------------- {Environment.NewLine}", $"箔材库任务生成");
                                }
                                entrys.State = EntityState.Detached;
                            }
                            int end = locRepository.Update(location_34, true);
                        }
                    }
                    //36出口,供给涂布上料口
                    var location_36 = freeDB.Select<base_ware_location>().Where(t => t.upper_code == "ZJ-BCHCJ34" && t.task == 2 && t.status == 1 ).First();
                    //36空架立即补料
                    if (location_36 != null)
                    {
                        if (location_36.location_state == LoctionStateEnum.LocationState_Empty.ToString() && location_36.tpgd == 0)
                        if (location_34 != null && dt_Agvtask34 == null)
                        {
                            var location_36_cp = freeDB.Select<base_ware_location>().Where(t => t.location_state == "LocationState_Stored" && t.logic_row.ToString() == "TSJXL-BCK" && t.logic_col == 1 && t.status == 1 && t.upper_code.Contains("ZJ-BCHCJ") && t.light_color != "SB" && t.task == 2).OrderBy(t => t.update_time).First();
                            //dt_agvtask task_36 = agvRepository.Find(t => t.agv_fromaddress == "FJ-BCHCJ36" || t.agv_toaddress == "FJ-BCHCJ36").FirstOrDefault();
                            if (location_36_cp != null)//找到合适货位,生成补料搬运任务
                            if (location_34.location_state == LoctionStateEnum.LocationState_Empty.ToString() && location_34.tpgd == 0)
                            {
                                var location_34_cp = freeDB.Select<base_ware_location>().Where(t => t.location_state == "LocationState_Stored" && t.logic_row.ToString() == "TBXL-BCK" && t.logic_col == 1/*正常料*/  && t.status == 1 && t.upper_code.Contains("ZJ-BCHCJ") && t.status == 1 && t.light_color != "SB" && t.task == 2).OrderBy(t => t.update_time).First();
                                //36货位补料任务
                                dt_agvtask agvtask = new dt_agvtask();
                                agvtask.agv_id = Guid.NewGuid();
                                agvtask.agv_tasknum = "KH-" + IdenxManager.GetTaskNo();
                                agvtask.agv_fromaddress = location_36_cp.upper_code;
                                agvtask.agv_toaddress = location_36.upper_code;
                                agvtask.agv_code = "正极AGV调度";
                                agvtask.agv_remark = "正极箔材库搬运(36补料)";
                                agvtask.agv_taskstate = AGVTaskStateEnum.Create.ToString();
                                agvtask.agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString();
                                agvtask.agv_worktype = 1;//工作类型
                                agvtask.agv_materielid = "";
                                agvtask.agv_qty = 1;
                                agvtask.agv_createtime = DateTime.Now;
                                agvtask.agv_grade = 0;//任务优先级
                                agvtask.agv_userid = "WCS";
                                agvtask.agv_barcode = "";
                                //锁定首尾货位
                                location_36_cp.update_time = DateTime.Now;
                                location_36_cp.task = 1;
                                //dt_agvtask task_34 = agvRepository.Find(t => t.agv_fromaddress == "FJ-BCHCJ34" || t.agv_toaddress == "FJ-BCHCJ34").FirstOrDefault();
                                var entrys = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
                                if (entrys != null)
                                if (location_34_cp != null)//找到合适货位,生成补料搬运任务
                                {
                                    entrys.State = EntityState.Detached;
                                }
                              int begin=  locRepository.Update(location_36_cp, d => new { d.update_time, d.task }, true);
                                location_36.update_time = DateTime.Now;
                                location_36.task = 1;
                                location_36.logic_col = 1;
                                var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
                                if (entry != null)
                                {
                                    entry.State = EntityState.Detached;
                                }
                             int end=   locRepository.Update(location_36, d => new { d.update_time, d.task, d.logic_col }, true);
                                if (begin == 1 && end == 1)
                                {
                                    agvRepository.Add(agvtask, true);
                                    WriteDBLog.Info($"箔材库任务生成").Write($"生成任务:{agvtask.agv_tasknum}", $"箔材库任务生成");
                                    WriteDBLog.Info($"箔材库任务生成").Write($"起点货位【{location_36_cp.upper_code}】状态:托盘光电检测:{location_36_cp.tpgd},状态:{location_36_cp.location_state},更新时间:{location_36_cp.wireless_time}", $"箔材库任务生成");
                                    WriteDBLog.Info($"箔材库任务生成").Write($"终点货位【{location_36.upper_code}】状态:托盘光电检测:{location_36.tpgd},状态:{location_36.location_state},更新时间:{location_36.wireless_time}", $"箔材库任务生成");
                                    WriteDBLog.Info($"箔材库任务生成").Write($"----------------任务生成成功  {DateTime.Now} -------------- {Environment.NewLine}", $"箔材库任务生成");
                                }
                            }
                        }
                    }
                    //35入口,供涂布下料
                    var location_35 = freeDB.Select<base_ware_location>().Where(t => t.upper_code == "ZJ-BCHCJ33" && t.location_state == "LocationState_Stored" && t.status == 1 && t.task == 2).First();
                    //35有料立即搬走
                    if (location_35 != null)
                    {
                        if (location_35.location_state == LocationStateEnum.LocationState_Stored.ToString() && location_35.tpgd == 1 && (location_35.logic_row == "TBXL-BCK" || location_35.logic_col == 1))
                        {
                            int index = 0;
                            int b = 7;
                            DateTime time = DateTime.Now;
                            Double STAMP = 0;
                            do
                            {
                                DateTime time2 = DateTime.Now;
                                STAMP = (time2 - time).TotalSeconds;
                                base_ware_location ware_Location = locRepository.FindFirst(d => d.upper_code == location_35.upper_code
                    && d.location_state == LocationStateEnum.LocationState_Stored.ToString() && d.status == 1 && location_35.tpgd == 1 && (location_35.logic_row == "TBXL-BCK" || location_35.logic_col == 1) && d.task == 2);
                                if (ware_Location == null)
                                {
                                    index = 3;
                                    break;
                                }
                            } while (STAMP < b);
                            if (index != 3)
                            {
                                var location_35_cp = freeDB.Select<base_ware_location>().Where(t => t.location_state == "LocationState_Empty" && t.upper_code.Contains("ZJ-BCHCJ") && t.status == 1 && t.light_color != "SB" && t.task == 2).OrderBy(d => Int32.Parse(d.light_color)).First();
                                //dt_agvtask task_35 = agvRepository.Find(t => t.agv_fromaddress == "FJ-BCHCJ35" || t.agv_toaddress == "FJ-BCHCJ35").FirstOrDefault();
                                if (location_35_cp != null)//找到合适货位,生成搬运任务
                                {
                                    //35货位补料任务
                                    //34货位补料任务
                                    dt_agvtask agvtask = new dt_agvtask();
                                    agvtask.agv_id = Guid.NewGuid();
                                    agvtask.agv_tasknum = "KH-" + IdenxManager.GetTaskNo();
                                    agvtask.agv_fromaddress = location_35.upper_code;
                                    agvtask.agv_toaddress = location_35_cp.upper_code;
                                    agvtask.agv_fromaddress = location_34_cp.upper_code;
                                    agvtask.agv_toaddress = location_34.upper_code;
                                    agvtask.agv_code = "正极AGV调度";
                                    agvtask.agv_remark = "正极箔材库搬运(35)";
                                    agvtask.agv_remark = "正极箔材库搬运(34补料)";
                                    agvtask.agv_taskstate = AGVTaskStateEnum.Create.ToString();
                                    agvtask.agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString();
                                    agvtask.agv_worktype = 1;//工作类型
@@ -224,80 +84,78 @@
                                    agvtask.agv_barcode = "";
                                    //锁定首尾货位
                                    location_35_cp.task = 1;
                                    location_35_cp.update_time = DateTime.Now;
                                    //location_35_cp.logic_row = "TBXL-BCK";
                                    location_34_cp.task = 1;
                                    location_34_cp.update_time = DateTime.Now;
                                    var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
                                    if (entry != null)
                                    {
                                        entry.State = EntityState.Detached;
                                    }
                                   int end= locRepository.Update(location_35_cp, d => new { d.update_time, d.task }, true);
                                    int begin = locRepository.Update(location_34_cp, d => new { d.update_time, d.task }, true);
                                    location_35.update_time = DateTime.Now;
                                    location_35.task = 1;
                                    location_34.task = 1;
                                    location_34.logic_col = 1;
                                    location_34.update_time = DateTime.Now;
                                    var entrys = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
                                    if (entrys != null)
                                    {
                                        entrys.State = EntityState.Detached;
                                    }
                                 int begin=  locRepository.Update(location_35, d => new { d.update_time, d.task }, true);
                                    int end = locRepository.Update(location_34, d => new { d.update_time, d.task, d.logic_col }, true);
                                    if (begin == 1 && end == 1)
                                    {
                                        agvRepository.Add(agvtask, true);
                                        WriteDBLog.Info($"箔材库任务生成").Write($"生成任务:{agvtask.agv_tasknum}", $"箔材库任务生成");
                                        //WriteDBLog.Info($"箔材库任务生成").Write($"生成任务:{agvtask.agv_tasknum}", $"箔材库任务生成");
                                        WriteDBLog.Info($"箔材库任务生成").Write($"起点货位【{location_35.upper_code}】状态:托盘光电检测:{location_35.tpgd},状态:{location_35.location_state},更新时间:{location_35.wireless_time}", $"箔材库任务生成");
                                        //WriteDBLog.Info($"箔材库任务生成").Write($"起点货位【{location_34_cp.upper_code}】状态:托盘光电检测:{location_34_cp.tpgd},状态:{location_34_cp.location_state},更新时间:{location_34_cp.wireless_time}", $"箔材库任务生成");
                                        WriteDBLog.Info($"箔材库任务生成").Write($"终点货位【{location_35_cp.upper_code}】状态:托盘光电检测:{location_35_cp.tpgd},状态:{location_35_cp.location_state},更新时间:{location_35_cp.wireless_time}", $"箔材库任务生成");
                                        //WriteDBLog.Info($"箔材库任务生成").Write($"终点货位【{location_34.upper_code}】状态:托盘光电检测:{location_34.tpgd},状态:{location_34.location_state},更新时间:{location_34.wireless_time}", $"箔材库任务生成");
                                        WriteDBLog.Info($"箔材库任务生成").Write($"----------------任务生成成功  {DateTime.Now} -------------- {Environment.NewLine}", $"箔材库任务生成");
                                        //WriteDBLog.Info($"箔材库任务生成").Write($"----------------任务生成成功  {DateTime.Now} -------------- {Environment.NewLine}", $"箔材库任务生成");
                                    }
                                }
                            }
                        }
                    }
                    //37入口,供提升机下料
                    var location_37 = freeDB.Select<base_ware_location>().Where(t => t.upper_code == "ZJ-BCHCJ35" && t.location_state == "LocationState_Stored" && t.status == 1 && t.task == 2).First();
                    //37有料立即搬走
                    if (location_37 != null)
                    {
                        if (location_37.location_state == LocationStateEnum.LocationState_Stored.ToString() && location_37.tpgd == 1 && (location_37.logic_row == "TSJXL-BCK" || location_37.logic_col == 1))
                        //36出口,供给涂布上料口
                        var location_36 = freeDB.Select<base_ware_location>().Where(t => t.upper_code == "ZJ-BCHCJ34" && t.task == 2 && t.status == 1).First();
                        //36空架立即补料
                        dt_agvtask dt_Agvtask36 = agvRepository.FindFirst(x => x.agv_toaddress == "ZJ-BCHCJ34");
                        if (dt_Agvtask36 != null && location_36.task == 2)
                        {
                            int index = 0;
                            int b = 7;
                            DateTime time = DateTime.Now;
                            Double STAMP = 0;
                            do
                            location_36.update_time = DateTime.Now;
                            location_36.task = 1;
                            location_36.logic_col = 1;
                            var entrys = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
                            if (entrys != null)
                            {
                                DateTime time2 = DateTime.Now;
                                STAMP = (time2 - time).TotalSeconds;
                                base_ware_location ware_Location = locRepository.FindFirst(d => d.upper_code == location_37.upper_code
                    && d.location_state == LocationStateEnum.LocationState_Stored.ToString() && location_37.tpgd == 1 && d.status == 1 && (location_37.logic_row == "TSJXL-BCK" || location_37.logic_col == 1) && d.task == 2);
                                if (ware_Location == null)
                                {
                                    index = 3;
                                    break;
                                }
                                entrys.State = EntityState.Detached;
                            }
                            int end = locRepository.Update(location_36, true);
                        }
                        if (location_36 != null && dt_Agvtask36==null)
                        {
                            if (location_36.location_state == LoctionStateEnum.LocationState_Empty.ToString() && location_36.tpgd == 0)
                            {
                                var location_36_cp = freeDB.Select<base_ware_location>().Where(t => t.location_state == "LocationState_Stored" && t.logic_row.ToString() == "TSJXL-BCK" && t.logic_col == 1 && t.status == 1 && t.upper_code.Contains("ZJ-BCHCJ") && t.light_color != "SB" && t.task == 2).OrderBy(t => t.update_time).First();
                            } while (STAMP < b);
                            if (index != 3)
                            {
                                var location_37_cp = freeDB.Select<base_ware_location>().Where(t => t.location_state == "LocationState_Empty" && t.upper_code.Contains("ZJ-BCHCJ") && t.status == 1 && t.light_color != "SB" && t.task == 2).OrderBy(d => Int32.Parse(d.light_color)).First();
                                //dt_agvtask task_37 = agvRepository.Find(t => t.agv_fromaddress == "FJ-BCHCJ37" || t.agv_toaddress == "FJ-BCHCJ37").FirstOrDefault();
                                if (location_37_cp != null)//找到合适货位,生成搬运任务
                                //dt_agvtask task_36 = agvRepository.Find(t => t.agv_fromaddress == "FJ-BCHCJ36" || t.agv_toaddress == "FJ-BCHCJ36").FirstOrDefault();
                                if (location_36_cp != null)//找到合适货位,生成补料搬运任务
                                {
                                    //36货位补料任务
                                    dt_agvtask agvtask = new dt_agvtask();
                                    agvtask.agv_id = Guid.NewGuid();
                                    agvtask.agv_tasknum = "KH-" + IdenxManager.GetTaskNo();
                                    agvtask.agv_fromaddress = location_37.upper_code;
                                    agvtask.agv_toaddress = location_37_cp.upper_code;
                                    agvtask.agv_fromaddress = location_36_cp.upper_code;
                                    agvtask.agv_toaddress = location_36.upper_code;
                                    agvtask.agv_code = "正极AGV调度";
                                    agvtask.agv_remark = "正极箔材库搬运(37)";
                                    agvtask.agv_remark = "正极箔材库搬运(36补料)";
                                    agvtask.agv_taskstate = AGVTaskStateEnum.Create.ToString();
                                    agvtask.agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString();
                                    agvtask.agv_worktype = 1;//工作类型
@@ -309,56 +167,227 @@
                                    agvtask.agv_barcode = "";
                                    //锁定首尾货位
                                    location_37_cp.task = 1;
                                    location_37_cp.update_time = DateTime.Now;
                                    //location_37_cp.logic_row = "TSJXL-BCK";
                                    var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
                                    if (entry != null)
                                    {
                                        entry.State = EntityState.Detached;
                                    }
                                  int end=  locRepository.Update(location_37_cp, d => new { d.task, d.update_time }, true);
                                    location_36_cp.update_time = DateTime.Now;
                                    location_36_cp.task = 1;
                                    location_37.task = 1;
                                    location_37.update_time = DateTime.Now;
                                    var entrys = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
                                    if (entrys != null)
                                    {
                                        entrys.State = EntityState.Detached;
                                    }
                                  int begin=  locRepository.Update(location_37, d => new { d.task, d.update_time }, true);
                                    int begin = locRepository.Update(location_36_cp, d => new { d.update_time, d.task }, true);
                                    location_36.update_time = DateTime.Now;
                                    location_36.task = 1;
                                    location_36.logic_col = 1;
                                    var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
                                    if (entry != null)
                                    {
                                        entry.State = EntityState.Detached;
                                    }
                                    int end = locRepository.Update(location_36, d => new { d.update_time, d.task, d.logic_col }, true);
                                    if (begin == 1 && end == 1)
                                    {
                                        agvRepository.Add(agvtask, true);
                                        WriteDBLog.Info($"箔材库任务生成").Write($"生成任务:{agvtask.agv_tasknum}", $"箔材库任务生成");
                                        //WriteDBLog.Info($"箔材库任务生成").Write($"生成任务:{agvtask.agv_tasknum}", $"箔材库任务生成");
                                        WriteDBLog.Info($"箔材库任务生成").Write($"起点货位【{location_37.upper_code}】状态:托盘光电检测:{location_37.tpgd},状态:{location_37.location_state},更新时间:{location_37.wireless_time}", $"箔材库任务生成");
                                        //WriteDBLog.Info($"箔材库任务生成").Write($"起点货位【{location_36_cp.upper_code}】状态:托盘光电检测:{location_36_cp.tpgd},状态:{location_36_cp.location_state},更新时间:{location_36_cp.wireless_time}", $"箔材库任务生成");
                                        WriteDBLog.Info($"箔材库任务生成").Write($"终点货位【{location_37_cp.upper_code}】状态:托盘光电检测:{location_37_cp.tpgd},状态:{location_37_cp.location_state},更新时间:{location_37_cp.wireless_time}", $"箔材库任务生成");
                                        //WriteDBLog.Info($"箔材库任务生成").Write($"终点货位【{location_36.upper_code}】状态:托盘光电检测:{location_36.tpgd},状态:{location_36.location_state},更新时间:{location_36.wireless_time}", $"箔材库任务生成");
                                        WriteDBLog.Info($"箔材库任务生成").Write($"----------------任务生成成功  {DateTime.Now} -------------- {Environment.NewLine}", $"箔材库任务生成");
                                        //WriteDBLog.Info($"箔材库任务生成").Write($"----------------任务生成成功  {DateTime.Now} -------------- {Environment.NewLine}", $"箔材库任务生成");
                                    }
                                }
                            }
                        }
                        //35入口,供涂布下料
                        var location_35 = freeDB.Select<base_ware_location>().Where(t => t.upper_code == "ZJ-BCHCJ33" && t.location_state == "LocationState_Stored" && t.status == 1 && t.task == 2).First();
                        //35有料立即搬走
                        if (location_35 != null)
                        {
                            if (location_35.location_state == LocationStateEnum.LocationState_Stored.ToString() && location_35.tpgd == 1 && (location_35.logic_row == "TBXL-BCK" || location_35.logic_col == 1))
                            {
                                int index = 0;
                                int b = 7;
                                DateTime time = DateTime.Now;
                                Double STAMP = 0;
                                do
                                {
                                    DateTime time2 = DateTime.Now;
                                    STAMP = (time2 - time).TotalSeconds;
                                    base_ware_location ware_Location = locRepository.FindFirst(d => d.upper_code == location_35.upper_code
                        && d.location_state == LocationStateEnum.LocationState_Stored.ToString() && d.status == 1 && location_35.tpgd == 1 && (location_35.logic_row == "TBXL-BCK" || location_35.logic_col == 1) && d.task == 2);
                                    if (ware_Location == null)
                                    {
                                        index = 3;
                                        break;
                                    }
                                } while (STAMP < b);
                                if (index != 3)
                                {
                                    var location_35_cp = freeDB.Select<base_ware_location>().Where(t => t.location_state == "LocationState_Empty" && t.upper_code.Contains("ZJ-BCHCJ") && t.status == 1 && t.light_color != "SB" && t.task == 2).OrderBy(d => Int32.Parse(d.light_color)).First();
                                    //dt_agvtask task_35 = agvRepository.Find(t => t.agv_fromaddress == "FJ-BCHCJ35" || t.agv_toaddress == "FJ-BCHCJ35").FirstOrDefault();
                                    if (location_35_cp != null)//找到合适货位,生成搬运任务
                                    {
                                        //35货位补料任务
                                        dt_agvtask agvtask = new dt_agvtask();
                                        agvtask.agv_id = Guid.NewGuid();
                                        agvtask.agv_tasknum = "KH-" + IdenxManager.GetTaskNo();
                                        agvtask.agv_fromaddress = location_35.upper_code;
                                        agvtask.agv_toaddress = location_35_cp.upper_code;
                                        agvtask.agv_code = "正极AGV调度";
                                        agvtask.agv_remark = "正极箔材库搬运(35)";
                                        agvtask.agv_taskstate = AGVTaskStateEnum.Create.ToString();
                                        agvtask.agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString();
                                        agvtask.agv_worktype = 1;//工作类型
                                        agvtask.agv_materielid = "";
                                        agvtask.agv_qty = 1;
                                        agvtask.agv_createtime = DateTime.Now;
                                        agvtask.agv_grade = 0;//任务优先级
                                        agvtask.agv_userid = "WCS";
                                        agvtask.agv_barcode = "";
                                        //锁定首尾货位
                                        location_35_cp.task = 1;
                                        location_35_cp.update_time = DateTime.Now;
                                        //location_35_cp.logic_row = "TBXL-BCK";
                                        var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
                                        if (entry != null)
                                        {
                                            entry.State = EntityState.Detached;
                                        }
                                        int end = locRepository.Update(location_35_cp, d => new { d.update_time, d.task }, true);
                                        location_35.update_time = DateTime.Now;
                                        location_35.task = 1;
                                        var entrys = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
                                        if (entrys != null)
                                        {
                                            entrys.State = EntityState.Detached;
                                        }
                                        int begin = locRepository.Update(location_35, d => new { d.update_time, d.task }, true);
                                        if (begin == 1 && end == 1)
                                        {
                                            agvRepository.Add(agvtask, true);
                                            //WriteDBLog.Info($"箔材库任务生成").Write($"生成任务:{agvtask.agv_tasknum}", $"箔材库任务生成");
                                            //WriteDBLog.Info($"箔材库任务生成").Write($"起点货位【{location_35.upper_code}】状态:托盘光电检测:{location_35.tpgd},状态:{location_35.location_state},更新时间:{location_35.wireless_time}", $"箔材库任务生成");
                                            //WriteDBLog.Info($"箔材库任务生成").Write($"终点货位【{location_35_cp.upper_code}】状态:托盘光电检测:{location_35_cp.tpgd},状态:{location_35_cp.location_state},更新时间:{location_35_cp.wireless_time}", $"箔材库任务生成");
                                            //WriteDBLog.Info($"箔材库任务生成").Write($"----------------任务生成成功  {DateTime.Now} -------------- {Environment.NewLine}", $"箔材库任务生成");
                                        }
                                    }
                                }
                            }
                        }
                        //37入口,供提升机下料
                        var location_37 = freeDB.Select<base_ware_location>().Where(t => t.upper_code == "ZJ-BCHCJ35" && t.location_state == "LocationState_Stored" && t.status == 1 && t.task == 2).First();
                        //37有料立即搬走
                        if (location_37 != null)
                        {
                            if (location_37.location_state == LocationStateEnum.LocationState_Stored.ToString() && location_37.tpgd == 1 && (location_37.logic_row == "TSJXL-BCK" || location_37.logic_col == 1))
                            {
                                int index = 0;
                                int b = 7;
                                DateTime time = DateTime.Now;
                                Double STAMP = 0;
                                do
                                {
                                    DateTime time2 = DateTime.Now;
                                    STAMP = (time2 - time).TotalSeconds;
                                    base_ware_location ware_Location = locRepository.FindFirst(d => d.upper_code == location_37.upper_code
                        && d.location_state == LocationStateEnum.LocationState_Stored.ToString() && location_37.tpgd == 1 && d.status == 1 && (location_37.logic_row == "TSJXL-BCK" || location_37.logic_col == 1) && d.task == 2);
                                    if (ware_Location == null)
                                    {
                                        index = 3;
                                        break;
                                    }
                                } while (STAMP < b);
                                if (index != 3)
                                {
                                    var location_37_cp = freeDB.Select<base_ware_location>().Where(t => t.location_state == "LocationState_Empty" && t.upper_code.Contains("ZJ-BCHCJ") && t.status == 1 && t.light_color != "SB" && t.task == 2).OrderBy(d => Int32.Parse(d.light_color)).First();
                                    //dt_agvtask task_37 = agvRepository.Find(t => t.agv_fromaddress == "FJ-BCHCJ37" || t.agv_toaddress == "FJ-BCHCJ37").FirstOrDefault();
                                    if (location_37_cp != null)//找到合适货位,生成搬运任务
                                    {
                                        //36货位补料任务
                                        dt_agvtask agvtask = new dt_agvtask();
                                        agvtask.agv_id = Guid.NewGuid();
                                        agvtask.agv_tasknum = "KH-" + IdenxManager.GetTaskNo();
                                        agvtask.agv_fromaddress = location_37.upper_code;
                                        agvtask.agv_toaddress = location_37_cp.upper_code;
                                        agvtask.agv_code = "正极AGV调度";
                                        agvtask.agv_remark = "正极箔材库搬运(37)";
                                        agvtask.agv_taskstate = AGVTaskStateEnum.Create.ToString();
                                        agvtask.agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString();
                                        agvtask.agv_worktype = 1;//工作类型
                                        agvtask.agv_materielid = "";
                                        agvtask.agv_qty = 1;
                                        agvtask.agv_createtime = DateTime.Now;
                                        agvtask.agv_grade = 0;//任务优先级
                                        agvtask.agv_userid = "WCS";
                                        agvtask.agv_barcode = "";
                                        //锁定首尾货位
                                        location_37_cp.task = 1;
                                        location_37_cp.update_time = DateTime.Now;
                                        //location_37_cp.logic_row = "TSJXL-BCK";
                                        var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
                                        if (entry != null)
                                        {
                                            entry.State = EntityState.Detached;
                                        }
                                        int end = locRepository.Update(location_37_cp, d => new { d.task, d.update_time }, true);
                                        location_37.task = 1;
                                        location_37.update_time = DateTime.Now;
                                        var entrys = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
                                        if (entrys != null)
                                        {
                                            entrys.State = EntityState.Detached;
                                        }
                                        int begin = locRepository.Update(location_37, d => new { d.task, d.update_time }, true);
                                        if (begin == 1 && end == 1)
                                        {
                                            agvRepository.Add(agvtask, true);
                                            //WriteDBLog.Info($"箔材库任务生成").Write($"生成任务:{agvtask.agv_tasknum}", $"箔材库任务生成");
                                            //WriteDBLog.Info($"箔材库任务生成").Write($"起点货位【{location_37.upper_code}】状态:托盘光电检测:{location_37.tpgd},状态:{location_37.location_state},更新时间:{location_37.wireless_time}", $"箔材库任务生成");
                                            //WriteDBLog.Info($"箔材库任务生成").Write($"终点货位【{location_37_cp.upper_code}】状态:托盘光电检测:{location_37_cp.tpgd},状态:{location_37_cp.location_state},更新时间:{location_37_cp.wireless_time}", $"箔材库任务生成");
                                            //WriteDBLog.Info($"箔材库任务生成").Write($"----------------任务生成成功  {DateTime.Now} -------------- {Environment.NewLine}", $"箔材库任务生成");
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    catch (Exception ex)
                    {
                        WriteLog.GetLog().Write($"箔材库任务生成:{DateTime.Now} --------------{ex}", $"箔材库任务生成");
                    }
                    finally
                    {
                    throw new Exception(ex.Message);
                }
                finally
                {
                    Interlocked.Exchange(ref _readZBCKSignalsoZ, 0);
                }
                        Interlocked.Exchange(ref _readZBCKSignalsoZ, 0);
                    }
                });
            }
        }