| | |
| | | //空托回库任务创建 |
| | | 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 |
| | |
| | | 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)) |
| | |
| | | } |
| | | } |
| | | } |
| | | 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) |
| | | { |
| | | //根据起点获取托盘和托盘物料绑定关系 |
| | |
| | | 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); |
| | | } |
| | |
| | | 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 |
| | |
| | | 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)) |
| | |
| | | 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); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | } |