lss
3 天以前 17e3ef45fe0a6b6f8a147b50740834ac734f9317
HH.WCS.Mobox3/HH.WCS.Mobox3.DaYang/core/WMSCore.cs
@@ -51,31 +51,36 @@
                //空托回库任务创建
                list.ForEach(a =>
                {
                    var startLoc = LocationHelper.GetLoc(a.S_START_LOC);
                    var endLoc = LocationHelper.GetLoc(a.S_END_LOC);
                    //空托回库
                    if (a.N_TYPE == 1)
                    {
                        if (!string.IsNullOrEmpty(a.S_END_LOC))
                        {
                            var jbwloc = db.Queryable<Location>().Where(b => b.S_CODE == "XTGKW-1-1").First();
                            var jbwloc = LocationHelper.GetLoc("XTGKW-1-1");
                            if (jbwloc == null)
                            {
                                LogHelper.Info("创建出库任务未找到接驳位货位编码,请假查接驳位置货位");
                            }
                            //创建agv搬运任务
                            var wcsTask1 = new WCSTask
                            {
                                S_OP_CODE = a.S_CODE,
                                S_OP_NAME = "入库",
                                S_CODE = WCSHelper.GenerateTaskNo(),
                                S_TYPE = "空托回库",
                                S_TYPE = "AGV空托回库",
                                S_START_LOC = a.S_START_LOC,
                                S_START_AREA = a.S_START_AREA,
                                N_START_LANE= startLoc.N_ROADWAY,
                                N_END_LANE = endLoc.N_ROADWAY,
                                S_END_LOC = jbwloc.S_CODE,
                                S_END_AREA = jbwloc.S_AREA_CODE,
                                N_SCHEDULE_TYPE = 1,
                                N_CNTR_COUNT = 1,
                                S_CNTR_CODE = a.S_CNTR_CODE,
                                N_PRIORITY=1,
                            };
                            //创建wcs回库任务
                            var wcsTask2 = new WCSTask
@@ -83,15 +88,17 @@
                                S_OP_CODE = a.S_CODE,
                                S_OP_NAME = "入库",
                                S_CODE = WCSHelper.GenerateTaskNo(),
                                S_TYPE = "空托回库",
                                S_TYPE = "WCS空托回库",
                                S_START_LOC = jbwloc.S_CODE,
                                S_START_AREA = jbwloc.S_AREA_CODE,
                                S_END_LOC = a.S_END_LOC,
                                S_END_AREA = a.S_END_AREA,
                                N_START_LANE = startLoc.N_ROADWAY,
                                N_END_LANE = endLoc.N_ROADWAY,
                                N_SCHEDULE_TYPE = 2,
                                N_CNTR_COUNT = 1,
                                S_CNTR_CODE = a.S_CNTR_CODE,
                                N_PRIORITY = 1,
                            };
                            if (WCSHelper.CreateTask(wcsTask1) && WCSHelper.CreateTask(wcsTask2))
@@ -105,14 +112,31 @@
                            }
                        }
                    }
                    else if (a.N_TYPE == 2)
                    else if (a.N_TYPE == 2) //物料出库
                    {
                        #region MyRegion
                        //判断外侧有没有托盘,需不需要移库
                        var StartLoc = db.Queryable<Location>().Where(b => b.S_CODE == a.S_START_LOC).First();
                        if (StartLoc.N_POS == 1)
                        {
                            var OutLoc = db.Queryable<Location>().Where(b => b.S_AREA_CODE == StartLoc.S_AREA_CODE && b.N_LAYER == StartLoc.N_LAYER && b.N_POS == 2 && b.N_CURRENT_NUM == 1 && b.N_LOCK_STATE == 0).First();
                            int row = 0;
                            //判断外侧排
                            switch (StartLoc.N_ROW)
                            {
                                case 1:
                                    row = 2;
                                    break;
                                case 4:
                                    row = 3;
                                    break;
                                case 5:
                                    row = 6;
                                    break;
                                case 8:
                                    row = 7;
                                    break;
                            }
                            var OutLoc = db.Queryable<Location>().Where(b => b.S_AREA_CODE == StartLoc.S_AREA_CODE && b.N_LAYER == StartLoc.N_LAYER && b.N_ROW == row && b.N_CURRENT_NUM == 1 && b.N_LOCK_STATE == 0).First();
                            if (OutLoc != null)
                            {
                                //根据起点获取托盘和托盘物料绑定关系
@@ -136,17 +160,16 @@
                                        S_OP_CODE = a.S_CODE,
                                        S_OP_NAME = "出库",
                                        S_CODE = WCSHelper.GenerateTaskNo(),
                                        S_TYPE = "移库",
                                        S_TYPE = "堆垛机移库",
                                        S_START_LOC = OutLoc.S_CODE,
                                        S_END_LOC = YiKuLoc.S_CODE,
                                        N_SCHEDULE_TYPE = 2,
                                        N_CNTR_COUNT = 1,
                                        S_CNTR_CODE = a.S_CNTR_CODE,
                                        N_PRIORITY = 1,
                                    };
                                    if (WCSHelper.CreateTask(wcsTask))
                                    {
                                        //更新作业状态为执行
                                        LocationHelper.LockLoc(OutLoc.S_CODE, 2);
                                        LocationHelper.LockLoc(YiKuLoc.S_CODE, 1);
                                    }
@@ -173,15 +196,17 @@
                            S_OP_CODE = a.S_CODE,
                            S_OP_NAME = "出库",
                            S_CODE = WCSHelper.GenerateTaskNo(),
                            S_TYPE = "出库",
                            S_TYPE = "WCS出库",
                            S_START_LOC = a.S_START_LOC,
                            S_START_AREA = a.S_START_AREA,
                            S_END_LOC = jbwloc.S_CODE,
                            S_END_AREA = jbwloc.S_AREA_CODE,
                            N_START_LANE = startLoc.N_ROADWAY,
                            N_END_LANE = endLoc.N_ROADWAY,
                            N_SCHEDULE_TYPE = 2,
                            N_CNTR_COUNT = 1,
                            S_CNTR_CODE = a.S_CNTR_CODE,
                            N_PRIORITY = 1,
                        };
                        //创建agv出库任务
                        var wcsTask2 = new WCSTask
@@ -189,15 +214,17 @@
                            S_OP_CODE = a.S_CODE,
                            S_OP_NAME = "出库",
                            S_CODE = WCSHelper.GenerateTaskNo(),
                            S_TYPE = "出库",
                            S_TYPE = "AGV出库",
                            S_START_LOC = jbwloc.S_CODE,
                            S_START_AREA = jbwloc.S_AREA_CODE,
                            S_END_LOC = a.S_END_LOC,
                            S_END_AREA = a.S_END_AREA,
                            N_START_LANE = startLoc.N_ROADWAY,
                            N_END_LANE = endLoc.N_ROADWAY,
                            N_SCHEDULE_TYPE = 1,
                            N_CNTR_COUNT = 1,
                            S_CNTR_CODE = a.S_CNTR_CODE,
                            N_PRIORITY = 1,
                        };
                        if (WCSHelper.CreateTask(wcsTask1) && WCSHelper.CreateTask(wcsTask2))
@@ -210,7 +237,37 @@
                            WMSHelper.UpdateTaskState(a);
                        }
                    }
                    else if (a.N_TYPE == 3) //根据作业起点终点生成wcs任务
                    {
                        //创建wcs任务
                        var wcsTask = new WCSTask
                        {
                            S_OP_CODE = a.S_CODE,
                            S_OP_NAME = a.S_TYPE,
                            S_CODE = WCSHelper.GenerateTaskNo(),
                            S_TYPE = a.S_TYPE,
                            S_START_LOC = a.S_START_LOC,
                            S_START_AREA = a.S_START_AREA,
                            S_END_LOC = a.S_END_LOC,
                            S_END_AREA = a.S_END_AREA,
                            N_START_LANE = startLoc.N_ROADWAY,
                            N_END_LANE = endLoc.N_ROADWAY,
                            N_SCHEDULE_TYPE = 2,
                            N_CNTR_COUNT = 1,
                            S_CNTR_CODE = a.S_CNTR_CODE,
                            N_PRIORITY = 1,
                        };
                        if (WCSHelper.CreateTask(wcsTask))
                        {
                            //更新作业状态为执行
                            a.N_B_STATE = 1;
                            a.S_B_STATE = "执行";
                           // LocationHelper.LockLoc(a.S_START_LOC, 2);
                           // LocationHelper.LockLoc(a.S_END_LOC, 1);
                            WMSHelper.UpdateTaskState(a);
                        }
                    }
                });
            }