| | |
| | | using HH.WCS.Mobox3.NFLZ.util; |
| | | using HH.WCS.Mobox3.NFLZ.wms; |
| | | using Newtonsoft.Json; |
| | | using Newtonsoft.Json.Linq; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Security.Cryptography; |
| | | using System.Xml.Linq; |
| | | using static HH.WCS.Mobox3.NFLZ.api.OtherModel; |
| | | using static HH.WCS.Mobox3.NFLZ.dispatch.NDC; |
| | | using static HH.WCS.Mobox3.NFLZ.dispatch.NDCApi; |
| | | using static HH.WCS.Mobox3.NFLZ.wms.WMSHelper.AddChangeModel; |
| | | |
| | | namespace HH.WCS.Mobox3.NFLZ.process |
| | |
| | | if (mst.S_TYPE.Contains("空托上线")) |
| | | { |
| | | LogHelper.Info($"{mst.S_TYPE}卸货完成,写入信号"); |
| | | //根据起点判断是A口还是B口 |
| | | var locCode = mst.S_END_LOC; |
| | | var devInfo = Settings.deviceInfos.Where(a => a.TN_Location.Contains(locCode)).FirstOrDefault(); |
| | | if (devInfo != null) |
| | | if(state == 6) |
| | | { |
| | | var signal = devInfo.TN_Location[0] == mst.S_END_LOC ? "3F 00 10 0D 0A" : "3F 00 20 0D 0A"; |
| | | if (PlcHelper.SendHex(devInfo.address, signal)) LogHelper.Info($"{mst.S_TYPE}任务卸货完成,写入信号:{signal},ip:{devInfo.address}"); |
| | | //根据起点判断是A口还是B口 |
| | | var locCode = mst.S_END_LOC; |
| | | var devInfo = Settings.deviceInfos.Where(a => a.TN_Location.Contains(locCode)).FirstOrDefault(); |
| | | if (devInfo != null) |
| | | { |
| | | var signal = devInfo.TN_Location[0] == mst.S_END_LOC ? "3F 00 10 0D 0A" : "3F 00 20 0D 0A"; |
| | | if (PlcHelper.SendHex(devInfo.address, signal)) LogHelper.Info($"{mst.S_TYPE}任务卸货完成,写入信号:{signal},ip:{devInfo.address}"); |
| | | } |
| | | else LogHelper.Info($"设备未找到,货位号:{mst.S_END_LOC}"); |
| | | } |
| | | else LogHelper.Info($"设备未找到,货位号:{mst.S_END_LOC}"); |
| | | } |
| | | if (mst.S_TYPE.Contains("满托上线")) |
| | | { |
| | |
| | | var devInfo = Settings.deviceInfos.Where(a => a.TN_Location.Contains(locCode)).FirstOrDefault(); |
| | | if (devInfo != null) |
| | | { |
| | | var signal = "3F 00 12 22 00 0D 0A"; |
| | | var signal = "3F 00 12 21 0D 0A"; |
| | | if (state == 1102) signal = "3F 00 10 20 0D 0A"; |
| | | if (PlcHelper.SendHex(devInfo.address, signal)) LogHelper.Info($"{mst.S_TYPE}任务取货完成,写入信号:{signal},ip:{devInfo.address}"); |
| | | } |
| | |
| | | if (mst.S_TYPE.Contains("满托下线")) |
| | | { |
| | | LogHelper.Info($"{mst.S_TYPE}取货完成,写入信号"); |
| | | //根据起点判断是A口还是B口 |
| | | var locCode = mst.S_START_LOC; |
| | | var devInfo = Settings.deviceInfos.Where(a => a.TN_Location.Contains(locCode)).FirstOrDefault(); |
| | | if (devInfo != null) |
| | | if(state == 4) |
| | | { |
| | | var signal = devInfo.TN_Location[0] == mst.S_START_LOC ? "3F 00 10 0D 0A" : "3F 00 20 0D 0A"; |
| | | if (PlcHelper.SendHex(devInfo.address, signal)) LogHelper.Info($"{mst.S_TYPE}任务取货完成,写入信号:{signal},ip:{devInfo.address}"); |
| | | //根据起点判断是A口还是B口 |
| | | var locCode = mst.S_START_LOC; |
| | | var devInfo = Settings.deviceInfos.Where(a => a.TN_Location.Contains(locCode)).FirstOrDefault(); |
| | | if (devInfo != null) |
| | | { |
| | | var signal = devInfo.TN_Location[0] == mst.S_START_LOC ? "3F 00 10 0D 0A" : "3F 00 20 0D 0A"; |
| | | if (PlcHelper.SendHex(devInfo.address, signal)) LogHelper.Info($"{mst.S_TYPE}任务取货完成,写入信号:{signal},ip:{devInfo.address}"); |
| | | } |
| | | else LogHelper.Info($"设备未找到,货位号:{mst.S_START_LOC}"); |
| | | } |
| | | else LogHelper.Info($"设备未找到,货位号:{mst.S_START_LOC}"); |
| | | } |
| | | } |
| | | |
| | |
| | | if (state == 6)//卸货完成 |
| | | { |
| | | claimGoodsTime(mst, state); |
| | | writeSignal(mst); |
| | | CacheBitUpdate(mst, false); |
| | | } |
| | | if (state == 7) |
| | |
| | | string startArea = ""; |
| | | LinZhiBCPWorkOrder bcpW = null; |
| | | bcpW = db.Queryable<LinZhiBCPWorkOrder>().Where(a => a.S_WorkNo == mst.S_WORK_NO && a.S_WorkState == "执行中").First(); |
| | | |
| | | LogHelper.Info($"满托任务生成处理,工单:{JsonConvert.SerializeObject(bcpW)}"); |
| | | if (mst.S_TYPE.Contains("瓶盖")) |
| | | { |
| | | //瓶盖无即产即用和非即产即用 |
| | |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"瓶胚翻斗机非即产满框 查找"); |
| | | string areaName = bcpW.S_PLineNo.Split('-')[1].Substring(0, 1) + "号瓶胚翻斗机非即产满框"; |
| | | startArea = Settings.areaInfos.Where(a => a.areaName == areaName && a.enable == 1).FirstOrDefault().areaCode; |
| | | startLoca = DeviceProcess.getFDSXArea(db, bcpW, startArea); |
| | |
| | | var cntrInfo = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == startLoca.S_CODE).First(); |
| | | if (cntrInfo != null) |
| | | { |
| | | WMSHelper.CreateOpTask(startLoca.S_CODE, mst.S_START_LOC, "出库", taskType, cntrInfo.S_CNTR_CODE); |
| | | WMSHelper.CreateOpTask(startLoca.S_CODE, mst.S_START_LOC, "出库", taskType, cntrInfo.S_CNTR_CODE,"","",bcpW.S_WorkNo); |
| | | } |
| | | else LogHelper.Info($"未绑定托盘,货位号:{startLoca.S_CODE}"); |
| | | } |
| | |
| | | TsNo = 1; |
| | | // 坯盖任务下发参数获取 |
| | | // 获取起终点的AGV站点 |
| | | Extend1 = db.Queryable<Location>().Where(a => a.S_CODE == mst.S_START_LOC && a.N_LAYER == mst.N_START_LAYER).First().S_AGV_SITE; |
| | | Extend2 = db.Queryable<Location>().Where(a => a.S_CODE == mst.S_END_LOC && a.N_LAYER == mst.N_END_LAYER).First().S_AGV_SITE; |
| | | Extend1 = db.Queryable<Location>().Where(a => a.S_CODE == mst.S_START_LOC).First().S_AGV_SITE; |
| | | Extend2 = db.Queryable<Location>().Where(a => a.S_CODE == mst.S_END_LOC).First().S_AGV_SITE; |
| | | if (mst.N_START_LAYER > 1) |
| | | { |
| | | Extend1 = db.Queryable<LocationExt>().Where(a => a.S_LOC_CODE == mst.S_START_LOC && a.N_LAYER == mst.N_START_LAYER).First().S_AGV_SITE; |
| | | } |
| | | if (mst.N_END_LAYER > 1) |
| | | { |
| | | Extend2 = db.Queryable<LocationExt>().Where(a => a.S_LOC_CODE == mst.S_START_LOC && a.N_LAYER == mst.N_END_LAYER).First().S_AGV_SITE; |
| | | } |
| | | Extend3 = "0"; |
| | | // 获取 任务参数4 DATA 数据 |
| | | string startLayerValue = Convert.ToString(startLayer, 16).ToUpper(); |
| | |
| | | Console.WriteLine($"[SendTask]:TaskNo={mst.S_CODE.Trim()},start={Extend1},end={Extend2}"); |
| | | LogHelper.Info($"[SendTask]:TaskNo={mst.S_CODE.Trim()},start={Extend1},end={Extend2}"); |
| | | bool action = true; |
| | | var dic = new Dictionary<string, string>(); |
| | | //var dic1 = new Dictionary<string, string>(); |
| | | //dic.Add("Pri", mst.N_PRIORITY.ToString()); |
| | | //dic.Add("No", mst.S_CODE.Trim()); |
| | | dic.Add("From", Extend1); |
| | | dic.Add("To", Extend2); |
| | | dic.Add("Func", Extend3); |
| | | dic.Add("Data", Extend4); |
| | | |
| | | //var dic = new Dictionary<string, string>(); |
| | | ////var dic1 = new Dictionary<string, string>(); |
| | | ////dic.Add("Pri", mst.N_PRIORITY.ToString()); |
| | | ////dic.Add("No", mst.S_CODE.Trim()); |
| | | //dic.Add("From", Extend1); |
| | | //dic.Add("To", Extend2); |
| | | //dic.Add("Func", Extend3); |
| | | //dic.Add("Data", Extend4); |
| | | // |
| | | //if (ConveryTaskList.Contains(taskType) || taskType.Contains("移库")) |
| | | //{ |
| | | // dic.Add("ItemHeight", Extend5); |
| | | // dic.Add("CntrType", Extend6); |
| | | // dic.Add("FromCol", Extend7); |
| | | // dic.Add("ToCol", Extend8); |
| | | // if (taskType.Contains("移库") || taskType.Contains("成品下线") || taskType.Contains("零头下线")) |
| | | // { |
| | | // LogHelper.Info($"移库:Extend5:{Extend5},Extend6:{Extend6},Extend7:{Extend7},Extend8:{Extend8},"); |
| | | // if (Extend5 == "" || Extend6 == "" || Extend7 == "" || Extend8 == "") |
| | | // { |
| | | // action = false; |
| | | // } |
| | | // } |
| | | //} |
| | | var dic = new List<param> |
| | | { |
| | | new param() { name = "From", value = Extend1 }, |
| | | new param() { name = "To", value = Extend2 }, |
| | | new param() { name = "Func", value = Extend3 }, |
| | | new param() { name = "Data", value = Extend4 } |
| | | }; |
| | | if (ConveryTaskList.Contains(taskType) || taskType.Contains("移库")) |
| | | { |
| | | dic.Add("ItemHeight", Extend5); |
| | | dic.Add("CntrType", Extend6); |
| | | dic.Add("FromCol", Extend7); |
| | | dic.Add("ToCol", Extend8); |
| | | dic.Add(new param(){name = "ItemHeight", value = Extend5}); |
| | | dic.Add(new param(){name = "CntrType", value = Extend6}); |
| | | dic.Add(new param(){name = "FromCol", value = Extend7}); |
| | | dic.Add(new param(){name = "ToCol", value = Extend8}); |
| | | if (taskType.Contains("移库") || taskType.Contains("成品下线") || taskType.Contains("零头下线")) |
| | | { |
| | | LogHelper.Info($"移库:Extend5:{Extend5},Extend6:{Extend6},Extend7:{Extend7},Extend8:{Extend8},"); |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (action) |
| | | { |
| | | var res = new AGVResult(); |
| | | res = NDC.AddNewOrderNew(TsNo,mst.N_PRIORITY,mst.S_CODE, dic); |
| | | var res = new AgvApiResult(); |
| | | //res = NDC.AddNewOrderNew(TsNo,mst.N_PRIORITY,mst.S_CODE, dic); |
| | | res = NDCApi.AddOrderNew(TsNo, mst.N_PRIORITY, mst.S_CODE,dic); |
| | | |
| | | if (res != null && (res.Res.ErrCode == 0 || res.Res.ErrCode == 50009)) |
| | | if (res != null && (res.err_code == 0 || res.err_code == 50009)) |
| | | { |
| | | mst.N_B_STATE = 1; |
| | | WCSHelper.UpdateStatus(mst, "已推送"); |
| | |
| | | } |
| | | if (result == null) |
| | | { |
| | | result = TaskProcess.BCPInOrOut(db, true, "瓶胚即产满框缓存区", itemCode); |
| | | result = TaskProcess.BCPInOrOut(db, true, "瓶胚即产满框缓存", itemCode); |
| | | } |
| | | if(result == null) |
| | | { |