| | |
| | | |
| | | } |
| | | |
| | | //自动 拆分 |
| | | public static TaskResponse autoSmallMaterial(smallMaterial model) { |
| | | var db = new SqlHelper<Location>().GetInstance(); |
| | | |
| | | /// <summary> |
| | | /// 小件 |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | internal static TaskResponse smallMaterial(smallMaterial model) |
| | | { |
| | | try |
| | | { |
| | | var startLoc = new Location(); |
| | | var endLoc = new Location(); |
| | | string Message = null; |
| | | |
| | | if (model.taskType=="自动") |
| | | //拆分成两条任务,一条是料架到指定的缓存区,二是料架上的托盘到指定的工位(小米wcs传)一对多 |
| | | var startFrame = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == model.parameters[0].src).First(); |
| | | |
| | | var startLoc = db.Queryable<Location>().Where(a => a.S_CODE == startFrame.S_FRAME_CODE).First(); |
| | | if (startLoc == null || startLoc.N_LOCK_STATE != 0) |
| | | { |
| | | |
| | | autoSmallMaterial(model); |
| | | |
| | | |
| | | return new TaskResponse |
| | | { |
| | | header = new ResponseHead { code = 0, desc = $"{model.parameters[0].src}库位已被锁定!" } |
| | | }; |
| | | } |
| | | else if (model.taskType == "人工") |
| | | var endReservoirs = Settings.ReservoirAreas.Where(s => s.areaName == model.routeType).FirstOrDefault(); |
| | | var endLoc = TaskProcess.InWorkTransport(endReservoirs.areaCode); |
| | | if (endLoc != null) |
| | | { |
| | | artificialSmallMaterial(model); |
| | | //创建到缓存区任务 |
| | | var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First(); |
| | | //创建任务 |
| | | LogHelper.Info($"创建任务 起点:{startLoc.S_CODE}终点:{endLoc.S_CODE}", model.ts_name); |
| | | var res = TaskProcess.CreateTransportHj(startLoc.S_CODE, endLoc.S_CODE, model.ts_name, locCntrRel.S_FRAME_CODE, 1, 1); |
| | | if (!res) |
| | | { |
| | | return new TaskResponse |
| | | { |
| | | header = new ResponseHead { code = 0, desc = "自动上线任务创建失败" } |
| | | }; |
| | | } |
| | | } |
| | | //料架上的托盘到指定的工位 |
| | | foreach (var parameter in model.parameters) |
| | | { |
| | | var startLocHj = db.Queryable<Location>().Where(a => a.S_CODE == parameter.src).First(); |
| | | if (startLocHj == null || startLocHj.N_LOCK_STATE != 0) |
| | | { |
| | | Message = Message==null? $"{model.parameters[0].src}库位已被锁定!": Message+ $"{model.parameters[0].src}库位已被锁定!"; |
| | | } |
| | | else |
| | | { |
| | | //货架上的货判断一下货架有没有锁 |
| | | var startFrameParent = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == parameter.src).First(); |
| | | if (startFrameParent != null) |
| | | { |
| | | var startLocParent = db.Queryable<Location>().Where(a => a.S_CODE == startFrameParent.S_FRAME_CODE).First(); |
| | | if (startLocParent == null || startLocParent.N_LOCK_STATE != 0) |
| | | { |
| | | return new TaskResponse |
| | | { |
| | | header = new ResponseHead { code = 0, desc = $"{startFrameParent.S_FRAME_CODE}货架已被锁定!" } |
| | | }; |
| | | } |
| | | } |
| | | var endLocHj = db.Queryable<Location>().Where(a => a.S_CODE == parameter.dst).First(); |
| | | if (endLocHj == null || endLocHj.N_LOCK_STATE != 0 || endLocHj.C_ENABLE != "Y") |
| | | { |
| | | //应该绕路 |
| | | |
| | | Message = Message == null ? $"{parameter.dst}库位已被锁定!" : Message + $"{parameter.dst}库位已被锁定!"; |
| | | } |
| | | else |
| | | { |
| | | //货架上的货判断一下货架有没有锁 |
| | | var endFrameParent = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == parameter.dst).First(); |
| | | if (endFrameParent != null) |
| | | { |
| | | var endLocParent = db.Queryable<Location>().Where(a => a.S_CODE == endFrameParent.S_FRAME_CODE).First(); |
| | | if (endLocParent == null || endLocParent.N_LOCK_STATE != 0) |
| | | { |
| | | return new TaskResponse |
| | | { |
| | | header = new ResponseHead { code = 0, desc = $"{endFrameParent.S_FRAME_CODE}货架已被锁定!" } |
| | | }; |
| | | } |
| | | } |
| | | //创建到缓存区任务 |
| | | var locCntrRel1 = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLocHj.S_CODE).First(); |
| | | //创建任务 |
| | | LogHelper.Info($"创建任务 起点:{startLocHj.S_CODE}终点:{endLocHj.S_CODE}", model.ts_name); |
| | | var res = TaskProcess.CreateTransport(startLocHj.S_CODE, endLocHj.S_CODE, model.ts_name, locCntrRel1.S_CNTR_CODE, 1, 1); |
| | | if (!res) |
| | | { |
| | | return new TaskResponse |
| | | { |
| | | header = new ResponseHead { code = 0, desc = "自动上线任务2创建失败" } |
| | | }; |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | var result = new TaskResponse(); |
| | | if (Message != null) |
| | | { |
| | |
| | | }; |
| | | } |
| | | return result; |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine("bigMaterial:" + ex.Message + ex.StackTrace); |
| | | LogHelper.Error("bigMaterial:" + ex.Message, ex); |
| | | throw; |
| | | } |
| | | |
| | | } |
| | | //自动 拆分 |
| | | private static string autoSmallMaterial(smallMaterial model) { |
| | | var db = new SqlHelper<Location>().GetInstance(); |
| | | |
| | | string Message = null; |
| | | |
| | | //拆分成两条任务,一条是料架到指定的缓存区,料架上的托盘到指定的工位(小米wcs传)一对多 |
| | | var startFrame = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == model.parameters[0].src).First(); |
| | | |
| | | var startLoc = db.Queryable<Location>().Where(a => a.S_CODE == startFrame.S_FRAME_CODE).First(); |
| | | if (startLoc == null || startLoc.N_LOCK_STATE != 0) |
| | | { |
| | | Message = $"{model.parameters[0].src}库位已被锁定!"; |
| | | } |
| | | var endReservoirs = Settings.ReservoirAreas.Where(s => s.areaName == model.routeType).FirstOrDefault(); |
| | | var endLoc = TaskProcess.InWorkTransport(endReservoirs.areaCode); |
| | | if (endLoc != null) |
| | | { |
| | | //创建到缓存区任务 |
| | | var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First(); |
| | | //创建任务 |
| | | LogHelper.Info($"创建任务 起点:{startLoc.S_CODE}终点:{endLoc.S_CODE}", model.ts_name); |
| | | var res = TaskProcess.CreateTransportHj(startLoc.S_CODE, endLoc.S_CODE, model.ts_name, locCntrRel.S_FRAME_CODE, 1, 1); |
| | | if (!res) |
| | | { |
| | | return Message="自动上线任务创建失败"; |
| | | } |
| | | } |
| | | //料架上的托盘到指定的工位 |
| | | foreach (var parameter in model.parameters) |
| | | { |
| | | var startLocHj = db.Queryable<Location>().Where(a => a.S_CODE == parameter.src).First(); |
| | | if (startLocHj == null || startLocHj.N_LOCK_STATE != 0) |
| | | { |
| | | Message = $"{model.parameters[0].src}库位已被锁定!"; |
| | | } |
| | | //货架上的货判断一下货架有没有锁 |
| | | var startFrameParent = db.Queryable<LocFrameRel>().Where(a => a.S_LOC_CODE == parameter.src).First(); |
| | | if (startFrameParent != null) |
| | | { |
| | | var startLocParent = db.Queryable<Location>().Where(a => a.S_CODE == startFrameParent.S_FRAME_CODE).First(); |
| | | if (startLocParent == null || startLocParent.N_LOCK_STATE != 0) |
| | | { |
| | | Message = $"{startFrameParent.S_FRAME_CODE}库位已被锁定!"; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | return Message; |
| | | //switch (model.ts_name) |
| | | //{ |
| | | // case "p2p": |
| | | // startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.src).First(); |
| | | // if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y") |
| | | // { |
| | | // Message = $"{model.parameter.src}库位已被锁定!"; |
| | | // } |
| | | |
| | | // endLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.dst).First(); |
| | | // if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y") |
| | | // { |
| | | // Message = $"{model.parameter.dst}库位已被锁定!"; |
| | | // } |
| | | |
| | | // break; |
| | | // case "p2a": |
| | | // startLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.src).First(); |
| | | // if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y") |
| | | // { |
| | | // Message = $"{model.parameter.src}库位已被锁定!"; |
| | | // } |
| | | // endLoc = InWorkTransport(model.parameter.dst); |
| | | // if (endLoc == null) |
| | | // { |
| | | // Message = $"{model.parameter.dst}库区没有可入货位!"; |
| | | // } |
| | | // break; |
| | | // case "a2p": |
| | | // startLoc = OutWorkTransport(model.parameter.src); |
| | | // if (startLoc == null) |
| | | // { |
| | | // Message = $"{model.parameter.dst}库区没有可出货位!"; |
| | | // } |
| | | |
| | | // endLoc = db.Queryable<Location>().Where(a => a.S_CODE == model.parameter.dst).First(); |
| | | // if (startLoc == null || startLoc.N_LOCK_STATE != 0 || startLoc.C_ENABLE != "Y") |
| | | // { |
| | | // Message = $"{model.parameter.dst}库位已被锁定!"; |
| | | // } |
| | | // break; |
| | | //} |
| | | |
| | | //var locCntrRel = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoc.S_CODE).First(); |
| | | ////创建任务 |
| | | //LogHelper.Info($"创建任务 起点:{startLoc.S_CODE}终点:{endLoc.S_CODE}", model.ts_name); |
| | | //var res = TaskProcess.CreateTransport(startLoc.S_CODE, endLoc.S_CODE, model.ts_name, locCntrRel.S_CNTR_CODE, 1, 1); |
| | | //if (!res) |
| | | //{ |
| | | // return new TaskResponse |
| | | // { |
| | | // header = new ResponseHead { code = 1, desc = Message } |
| | | // }; |
| | | |
| | | //} |
| | | } |
| | | //人工 不拆分 |
| | | private static void artificialSmallMaterial(smallMaterial model) |
| | | public static void artificialSmallMaterial(smallMaterial model) |
| | | { |
| | | var db = new SqlHelper<Location>().GetInstance(); |
| | | |