| | |
| | | /// <param name="forkliftNo">车号</param> |
| | | /// <param name="extData">重量</param> |
| | | /// <param name="Ext1">高度</param> |
| | | internal static void OperateReq(WCSTask TN_Task, int state, string forkliftNo, string extData,string Ext1) |
| | | internal static void OperateReq(WCSTask TN_Task, int state, string forkliftNo, string extData) |
| | | { |
| | | if (state == 1002)//信号 |
| | | { |
| | | LogHelper.Info($"称重分配入库终点货位高度重量{extData},高度{Ext1}"); |
| | | |
| | | } |
| | | else if (state == 2000)//信号 |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | TN_Task.S_EQ_TASK_CODE = extData;//高度 |
| | | db.Updateable<WCSTask>(TN_Task).UpdateColumns(a => new { a.S_EQ_TASK_CODE }).ExecuteCommand(); |
| | | db.CommitTran(); |
| | | if (!string.IsNullOrEmpty(TN_Task.S_STATE_PRE) && !string.IsNullOrEmpty(TN_Task.S_EQ_TASK_CODE)) |
| | | { |
| | | weight(TN_Task); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | else if (state == 2001)//信号 |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | TN_Task.S_STATE_PRE = extData;//高度 |
| | | db.Updateable<WCSTask>(TN_Task).UpdateColumns(a => new { a.S_STATE_PRE }).ExecuteCommand(); |
| | | db.CommitTran(); |
| | | if (!string.IsNullOrEmpty(TN_Task.S_STATE_PRE) && !string.IsNullOrEmpty(TN_Task.S_EQ_TASK_CODE)) |
| | | { |
| | | weight(TN_Task); |
| | | } |
| | | |
| | | } |
| | | |
| | | if (state == 1103) |
| | | { |
| | | //大铁框叉走以后通知,我们要通知输送线 |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | internal static void weight(WCSTask TN_Task) |
| | | { |
| | | |
| | | |
| | | if (!string.IsNullOrEmpty(TN_Task.S_STATE_PRE) && !string.IsNullOrEmpty(TN_Task.S_EQ_TASK_CODE)) |
| | | { |
| | | string extData = TN_Task.S_STATE_PRE; |
| | | string Ext1 = TN_Task.S_EQ_TASK_CODE; |
| | | LogHelper.Info($"称重分配入库终点货位高度重量{extData},高度{Ext1},容器{TN_Task.S_CNTR_CODE}"); |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var WMStask= db.Queryable<WMSTask>().Where(s=>s.S_CODE==TN_Task.S_OP_CODE).First(); |
| | | if (WMStask==null) |
| | |
| | | if (TN_Task.S_CNTR_CODE.Substring(0, 2) == "TP")//托盘 |
| | | { |
| | | var endlist = locklist |
| | | .Where(it => it.N_CURRENT_NUM < it.N_CAPACITY && it.N_LAYER < 3 && it.S_AREA_CODE == "HJQ") |
| | | .Where(it => it.N_CURRENT_NUM < it.N_CAPACITY && it.N_LAYER < 3 && it.N_LOCK_STATE ==0 && it.S_AREA_CODE == "HJQ") |
| | | .OrderBy(it => it.N_COL) |
| | | .PartitionBy(it => it.N_ROW) |
| | | .PartitionBy(it => it.N_LAYER) |
| | |
| | | { |
| | | LogHelper.Info($"重量{decimal.Parse(extData)}"); |
| | | //大于800kg |
| | | if (decimal.Parse(extData) > 800) |
| | | if (decimal.Parse(extData) > 1) |
| | | { |
| | | LogHelper.Info($"高度{decimal.Parse(Ext1)}"); |
| | | LogHelper.Info($"高度{Ext1}"); |
| | | //高度大于1050mm 只放在第一层 |
| | | if (decimal.Parse(Ext1) <= 1050) |
| | | if (decimal.Parse(Ext1) <=3) |
| | | { |
| | | var lockinfo = locklist.Where(it => it.N_LOCK_STATE != 0 && it.N_LOCK_STATE != 0 && it.N_ROW == item.N_ROW |
| | | && it.N_LAYER == 1).First(); |
| | |
| | | result = item; |
| | | break; |
| | | } |
| | | else { |
| | | else |
| | | { |
| | | LogHelper.Info($"货位{lockinfo.S_CODE} 有锁 当排层不可使用"); |
| | | throw new Exception($"货位{lockinfo.S_CODE} 有锁 当排层不可使用"); |
| | | //throw new Exception($"货位{lockinfo.S_CODE} 有锁 当排层不可使用"); |
| | | } |
| | | } |
| | | else |
| | |
| | | else//不超重 即 不超过800kg |
| | | { |
| | | //高度<450mm 2-9层 |
| | | if (decimal.Parse(Ext1) < 450) |
| | | if (decimal.Parse(Ext1) < 2) |
| | | { |
| | | LogHelper.Info($"高度<450mm 2-9层"); |
| | | var lockinfo = locklist.Where(it => it.N_LOCK_STATE != 0 && it.N_ROW == item.N_ROW |
| | | && it.N_LAYER == 2).First(); |
| | | if (lockinfo == null) |
| | |
| | | |
| | | break; |
| | | } |
| | | else { |
| | | else |
| | | { |
| | | LogHelper.Info($"货位{lockinfo.S_CODE} 有锁 当排层不可使用"); |
| | | throw new Exception($"货位{lockinfo.S_CODE} 有锁 当排层不可使用"); |
| | | //throw new Exception($"货位{lockinfo.S_CODE} 有锁 当排层不可使用"); |
| | | } |
| | | } |
| | | else if (decimal.Parse(Ext1) >= 450 && decimal.Parse(Ext1) < 1050) |
| | | else if (decimal.Parse(Ext1) >= 2 && decimal.Parse(Ext1) < 4) |
| | | { |
| | | var lockinfo = locklist.Where(it => it.N_LOCK_STATE != 0 && it.N_ROW == item.N_ROW |
| | | && it.N_LAYER >= 1 && it.N_LAYER <= 2).First(); |
| | |
| | | else |
| | | { |
| | | LogHelper.Info($"货位{lockinfo.S_CODE} 有锁 当排层不可使用"); |
| | | throw new Exception($"货位{lockinfo.S_CODE} 有锁 当排层不可使用"); |
| | | //throw new Exception($"货位{lockinfo.S_CODE} 有锁 当排层不可使用"); |
| | | } |
| | | } |
| | | else |
| | |
| | | { //容器为料箱 则放到3-9层 |
| | | |
| | | var endlist = locklist |
| | | .Where(it => it.N_CURRENT_NUM < it.N_CAPACITY && it.N_LAYER >=3&&it.S_AREA_CODE== "HJQ") |
| | | .Where(it => it.N_CURRENT_NUM < it.N_CAPACITY && it.N_LAYER >= 3 && it.N_LOCK_STATE == 0 && it.S_AREA_CODE == "HJQ") |
| | | .OrderBy(it => it.N_COL) |
| | | .PartitionBy(it => it.N_ROW) |
| | | .PartitionBy(it => it.N_LAYER) |
| | |
| | | { |
| | | LogHelper.Info($"重量{decimal.Parse(extData)}"); |
| | | //大于800kg |
| | | if (decimal.Parse(extData) > 800) |
| | | if (decimal.Parse(extData) > 1) |
| | | { |
| | | LogHelper.Info($"料箱重量超过800kg"); |
| | | throw new Exception($"料箱重量超过800kg"); |
| | | } |
| | | else |
| | | { |
| | | if (decimal.Parse(Ext1) < 1050) |
| | | if (decimal.Parse(Ext1) < 4) |
| | | { |
| | | var lockinfo = locklist.Where(it => it.N_LOCK_STATE != 0 && it.N_LOCK_STATE != 0 && it.S_AREA_CODE == item.S_AREA_CODE && it.N_ROW == item.N_ROW |
| | | && it.N_LAYER >= 3 && it.N_LAYER <= 9).First(); |
| | |
| | | |
| | | break; |
| | | } |
| | | else { |
| | | else |
| | | { |
| | | LogHelper.Info($"货位{lockinfo.S_CODE} 有锁 当排层不可使用"); |
| | | throw new Exception($"货位{lockinfo.S_CODE} 有锁 当排层不可使用"); |
| | | } |
| | |
| | | WMStask.S_END_WH = result.S_WH_CODE; |
| | | |
| | | db.Updateable<WMSTask>(WMStask).UpdateColumns(a => new { a.S_END_LOC, a.S_END_AREA, a.S_END_WH }).ExecuteCommand(); |
| | | var S_AGV_SITE = ""; |
| | | if (TN_Task.N_ERR==1)//前移车 |
| | | { |
| | | //前移车 |
| | | S_AGV_SITE = LocationHelper.GetAgvSite(TN_Task.S_END_LOC); |
| | | } |
| | | else //堆垛车 |
| | | { |
| | | |
| | | //请求卸货, |
| | | //堆垛车 |
| | | S_AGV_SITE = db.Queryable<TN_Location_Ext>().Where(a => a.S_LOC_CODE == TN_Task.S_END_LOC).First()?.S_AGV_SITE; |
| | | } |
| | | var dic = new Dictionary<string, string>(); |
| | | dic.Add("No", TN_Task.S_CODE); |
| | | dic.Add("ParamNo", "2"); |
| | | dic.Add("Param1", TN_Task.S_END_LOC); |
| | | |
| | | dic.Add("ParamNo", "3"); |
| | | dic.Add("Param1", S_AGV_SITE); |
| | | //dic.Add("Pri", TN_Task.N_PRIORITY.ToString()); |
| | | //dic.Add("No", TN_Task.S_CODE.Trim()); |
| | | //dic.Add("From", TN_Task.S_START_LOC); |
| | | //dic.Add("To", TN_Task.S_END_LOC); |
| | | //dic.Add("Func", "0"); |
| | | //dic.Add("Data", "512"); |
| | | //dic.Add("FRow", "0"); |
| | | |
| | | var res = NDC.ChangeOrder(dic); |
| | | LogHelper.Info($"修改终点货位"+ JsonConvert.SerializeObject(res)); |
| | |
| | | var ss= NDC.ChangeOrder(dics); |
| | | LogHelper.Info($"小车前往新库位" + JsonConvert.SerializeObject(ss)); |
| | | LocationHelper.BindingLoc(TN_Task.S_END_LOC, TN_Task.S_CNTR_CODE.Split(',').ToList()); |
| | | LocationHelper.LockLoc(TN_Task.S_END_LOC,1); |
| | | } |
| | | db.CommitTran(); |
| | | } |
| | |
| | | db.RollbackTran(); |
| | | throw; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | if (state == 1103) |
| | | { |
| | | //大铁框叉走以后通知,我们要通知输送线 |
| | | } |
| | | } |
| | | |
| | | |
| | | internal static void UpdateAgvNo(WCSTask mst, string forkliftNo) |
| | | { |
| | |
| | | dic1.Add("Func", "0"); |
| | | if (mst.S_TYPE.Contains("入库")) |
| | | { |
| | | dic1.Add("Data", "0x200"); |
| | | dic1.Add("Data", "512"); |
| | | } |
| | | else |
| | | { |