123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using Newtonsoft.Json.Linq;
- using SqlSugar;
- using WCS.Data;
- using WCS.Data.Models;
- using WCS.Data.Utils;
- using WCS.PLC.Model.Equipment;
- using WCS.WMSWorkflow;
- using static WCS.WMSWorkflow.ApiParam;
- namespace WCS.PLC
- {
- public class BaseWorkflow
- {
- private static int _putTaskStep = 0;
- #region private Method
- public static void MoveTaskToDis(WCS_TASK task)
- {
- TryCachHelper.TryTranExecute((db) =>
- {
- //添加机械手码垛位置条码信息
- var sysset = Current.SysSets.SingleOrDefault(v => v.SET_TYPE == "PalletizingPos" && v.SET_ID == task.TASK_POSIDTO && task.TASK_POSIDFROM != "1390");
- if (sysset != null)
- {
- string time = DateTime.Now.ToString("yyyyMMddhhmmss");
- db.Updateable<WCS_SYSSET>(it => new WCS_SYSSET()
- {
- SET_MEMO = task.TASK_BOXBARCODE,
- SET_EDITUSERNO = "wcs",
- SET_EDITTIME = time
- })
- .Where(it => it.SET_ID == sysset.SET_ID).ExecuteCommand();
- }
- //移动任务到历史列表
- var task_dis = ExtendsUtil.Mapper<WCS_TASK_DIS, WCS_TASK>(task);
- task_dis.TASK_DELETEUSER = "wcs";
- task_dis.TASK_DELETEDATE = db.GetDate();
- if (db.Insertable(task_dis).ExecuteCommand() <= 0)
- {
- throw new Exception(string.Format("任务[{0}]插入历史列表失败", task_dis.TASK_NO));
- }
- var taskdtlSet = db.Queryable<WCS_TASK_DTL>().Where(v => v.PARENTID == task.TASK_NO).ToList();
- foreach (var taskdtl in taskdtlSet)
- {
- var task_dis_dtl = ExtendsUtil.Mapper<WCS_TASK_DIS_DTL, WCS_TASK_DTL>(taskdtl);
- if (db.Insertable(task_dis_dtl).ExecuteCommand() <= 0)
- {
- throw new Exception(string.Format("任务[{0}]明细插入到历史列表失败", task_dis.TASK_NO));
- }
- if (db.Deleteable(taskdtl).ExecuteCommand() <= 0)
- {
- throw new Exception(string.Format("任务[{0}]明细删除失败", task_dis.TASK_NO));
- }
- }
- //删除当前任务
- if (db.Deleteable(task).ExecuteCommand() <= 0)
- {
- throw new Exception(string.Format("任务[{0}]删除失败", task_dis.TASK_NO));
- }
- });
- }
- public static void MoveAgvTaskToDis(Middle_AGVTask task)
- {
- TryCachHelper.TryTranExecute((db) =>
- {
- //移动任务到历史列表
- var task_dis = ExtendsUtil.Mapper<Middle_AGVTask_Dis, Middle_AGVTask>(task);
- task_dis.Task_FinishDate = db.GetDate();
- if (db.Insertable(task_dis).ExecuteCommand() <= 0)
- {
- throw new Exception(string.Format("任务[{0}]插入历史列表失败", task_dis.Task_Id));
- }
- //删除当前任务
- if (db.Deleteable(task).ExecuteCommand() <= 0)
- {
- throw new Exception(string.Format("任务[{0}]删除失败", task_dis.Task_Id));
- }
- });
- }
- #endregion;
- #region public Method
- /// <summary>
- /// 更新任务进程
- /// </summary>
- public static void PutTaskStep()
- {
- if (Interlocked.Exchange(ref _putTaskStep, 1) == 0)
- {
- try
- {
- var tasks =SugarBase.DB.Queryable<WCS_TASK>().Where(v => v.TASK_WKSTATUS >= 1).ToList();
- var agvtasks = Current.AgvTaskSet.Where(v => v.Task_WcsStatus == 106 || v.Task_WcsStatus == 99 || v.Task_WcsStatus == 4).ToList();
- if (tasks.Count == 0 && agvtasks.Count == 0) return;
- var tasks_NoFinish = tasks.Where(v => v.TASK_WKSTATUS < 99 && v.TASK_COMTYPE != 6 && (v.TASK_POSIDTO != "1288") && (v.TASK_POSIDTO != "1293")).ToList();
- if (tasks_NoFinish.Count > 0)
- {
- var PutTaskStepList = Current.WmsInterface.I_WCS_PutTaskStep(tasks_NoFinish);
- foreach (var item in PutTaskStepList)
- {
- var task = tasks.FirstOrDefault(v => v.TASK_WMSNO == item.WMSTaskNum);
- if (!item.ResType)
- {
- string msg = string.Format("任务[{0}]更新进程失败,原因:[{1}]", task.TASK_NO, item.ResMessage);
- LogMessageHelper.RecordLogMessage(msg);
- }
- }
- }
- var tasks_Finish = tasks.Where(v => v.TASK_WKSTATUS >= 99 && (v.TASK_POSIDTO != "1508") && (v.TASK_POSIDTO != "1509")&& (v.TASK_POSIDTO != "1288") && (v.TASK_POSIDTO != "1293")).ToList();
- if (tasks_Finish.Count > 0)
- {
- var PutTaskStepList_finish = Current.WmsInterface.I_WCS_PutTaskStep(tasks_Finish);
- foreach (var item in PutTaskStepList_finish)
- {
- var task = tasks.FirstOrDefault(v => v.TASK_WMSNO == item.WMSTaskNum);
- if (item.ResType)
- {
- if (task.TASK_WKSTATUS >= 99)
- {
- MoveTaskToDis(task);
- }
- }
- else
- {
- string msg = string.Format("任务[{0}]更新进程失败,原因:[{1}]", task.TASK_NO, item.ResMessage);
- LogMessageHelper.RecordLogMessage(msg);
- }
- }
- }
- var task_Finish2 = tasks.FirstOrDefault(v => v.TASK_WKSTATUS >= 99 && v.TASK_POSIDTO == "1508");
- if (task_Finish2 != null)
- {
- var tasks_Finishs = new List<WCS_TASK>();
- tasks_Finishs.Add(task_Finish2);
- var PutTaskStepList_finish = Current.WmsInterface.I_WCS_PutTaskStep(tasks_Finishs);
- foreach (var item in PutTaskStepList_finish)
- {
- var task = tasks.FirstOrDefault(v => v.TASK_WMSNO == item.WMSTaskNum);
- if (item.ResType)
- {
- if (task.TASK_WKSTATUS >= 99)
- {
- if (Current.TaskSet.Any(v => v.TASK_BOXBARCODE == task_Finish2.TASK_BOXBARCODE && v.TASK_COMTYPE == 1))
- {
- MoveTaskToDis(task);
- }
- }
- }
- else
- {
- string msg = string.Format("任务[{0}]更新进程失败,原因:[{1}]", task.TASK_NO, item.ResMessage);
- LogMessageHelper.RecordLogMessage(msg);
- }
- }
- }
- var task_Finish3 = tasks.FirstOrDefault(v => v.TASK_WKSTATUS >= 99 && v.TASK_POSIDTO == "1509");
- if (task_Finish3 != null)
- {
- var tasks_F = new List<WCS_TASK>();
- tasks_F.Add(task_Finish3);
- var PutTaskStepList_finish = Current.WmsInterface.I_WCS_PutTaskStep(tasks_F);
- foreach (var item in PutTaskStepList_finish)
- {
- var task = tasks.FirstOrDefault(v => v.TASK_WMSNO == item.WMSTaskNum);
- if (item.ResType)
- {
- if (task.TASK_WKSTATUS >= 99)
- {
- if (Current.TaskSet.Any(v => v.TASK_BOXBARCODE == task_Finish3.TASK_BOXBARCODE && v.TASK_COMTYPE == 1))
- {
- MoveTaskToDis(task);
- }
- }
- }
- else
- {
- string msg = string.Format("任务[{0}]更新进程失败,原因:[{1}]", task.TASK_NO, item.ResMessage);
- LogMessageHelper.RecordLogMessage(msg);
- }
- }
- }
- var tasks_Exception = tasks.Where(v => v.TASK_WKSTATUS >= 99 && (v.TASK_COMTYPE == 6 || v.TASK_POSIDTO == "1288" || v.TASK_POSIDTO == "1293")).ToList();
- foreach (var item in tasks_Exception)
- {
- MoveTaskToDis(item);
- }
-
- foreach (var item in agvtasks)
- {
- if (item.Task_WcsStatus == 99 || item.Task_WcsStatus == 4)
- {
- //if (item.Task_Type == 3 || (item.Task_Type == 1 && (item.Task_WorkshopNo == "18" || item.Task_WorkshopNo == "4" || item.Task_WorkshopNo == "5")))
- if (item.Task_Type == 3 || (item.Task_Type == 1 && item.Task_WorkshopNo == "18"))
- {
- var wcstask = Current.TaskSet.SingleOrDefault(v => v.TASK_ITEM8 == item.Task_Id.ToString());
- if (wcstask == null || wcstask.TASK_WKSTATUS >= 99)
- {
- if (item.Task_WcsStatus == 99) MoveAgvTaskToDis(item);//任务完成
- continue;
- }
- wcstask.TASK_WKSTATUS = 99;
- wcstask.TASK_EDITUSERNO = "wcs";
- wcstask.TASK_EDITDATETIME = DateTime.Now;
- int updateresult = SugarBase.DB.Updateable(wcstask)
- .UpdateColumns(it => new { it.TASK_WKSTATUS, it.TASK_EDITUSERNO, it.TASK_EDITDATETIME })
- .ExecuteCommand();
- if (updateresult <= 0)
- {
- LogMessageHelper.RecordLogMessage(string.Format("空熟化架呼叫AGV任务[{0}]已完成,完成WCS任务[{1}]失败。", item.Task_Id, wcstask.TASK_NO));
- continue;
- }
- else
- {
- if (item.Task_WcsStatus == 99) MoveAgvTaskToDis(item);//任务完成
- }
- }
- else if (item.Task_Type == 1 || item.Task_Type == 2 || item.Task_Type == 4)
- {
- if (item.Task_WcsStatus == 99) MoveAgvTaskToDis(item);//任务完成
- }
- }
- else if (item.Task_WcsStatus == 106 && item.Task_AgvStatus == 106)
- {
- MoveAgvTaskToDis(item);//任务完成
- }
- }
- }
- catch (Exception ex)
- {
- LogMessageHelper.RecordLogMessage(ex);
- }
- finally
- {
- Interlocked.Exchange(ref _putTaskStep, 0);
- }
- }
- }
- public static WCS_TASK GetInTask(GetInTaskParam param)
- {
- WCS_TASK wcstask = null;
- try
- {
- wcstask = SugarBase.DB.Queryable<WCS_TASK>().First(v => v.TASK_BOXBARCODE == param.ContainerBarCode);
- if (wcstask == null)
- {
- var reply = Current.WmsInterface.I_WCS_GetInTask(param);
- string errormsg = CheckGetInTask(param, reply);
- if (string.IsNullOrWhiteSpace(errormsg))
- {
- //添加wcs任务
- wcstask = new WCS_TASK();
- wcstask.TASK_WMSNO = reply.WMSTaskNum;
- wcstask.TASK_COMTYPE = reply.TaskType;
- wcstask.TASK_SYSTYPE = "WMS";
- wcstask.TASK_POSIDFROM = param.EquipmentNo;//起点地址
- wcstask.TASK_POSIDCUR = param.EquipmentNo;
- wcstask.TASK_POSIDNEXT = param.EquipmentNo;
- wcstask.TASK_POSIDMOVE = "";
- wcstask.TASK_PRIORITY = reply.Priority;
- wcstask.TASK_WKSTATUS = 0;
- wcstask.TASK_WHID = reply.WareHouseName;
- wcstask.TASK_ADDUSERNO = "WMS";
- wcstask.TASK_ADDDATETIME = DateTime.Now;
- wcstask.TASK_EDITUSERNO = "WMS";
- wcstask.TASK_EDITDATETIME = DateTime.Now;
- wcstask.TASK_NOTES = "";
- wcstask.TASK_RGVNO = "";
- wcstask.TASK_BOXBARCODE = param.ContainerBarCode;
- wcstask.TASK_WEIGHT = reply.TASK_WEIGHT;
- wcstask.TASK_STACKINGTYPE = reply.TASK_STACKINGTYPE;
- if (!string.IsNullOrWhiteSpace(reply.Memo1))
- {
- wcstask.TASK_IsWrapFilm = reply.Memo1.Trim() == "1" ? true : false;
- }
- if (string.IsNullOrWhiteSpace(param.Memo1))
- {
- wcstask.TASK_POSIDTO = reply.EndPostion;
- wcstask.TASK_SRMNO = reply.EndPostion;
- wcstask.PalletizingBoxSize = reply.PalletizingBoxSize;
- wcstask.TASK_ORDERTYPE = reply.IsLastBox ? 1 : 0;
- }
- else if (param.Memo1.Trim() == "1")
- {
- string srmno = string.Empty;
- wcstask.TASK_EndTunnelNum = ConveyorHelper.QueryTunnel(wcstask.TASK_WMSNO, reply.TunnelNum, out srmno);
- wcstask.TASK_POSIDTO = srmno;
- wcstask.TASK_SRMNO = srmno;
- }
- else if (param.Memo1.Trim() == "2")
- {
- wcstask.TASK_POSIDTO = reply.EndPostion;
- wcstask.TASK_EndTunnelNum = reply.TunnelNum;
- wcstask.TASK_SRMNO = Current.SysSets.Where(v => v.SET_ID.Contains("Tunnel")).FirstOrDefault(v => v.SET_VALUE == reply.TunnelNum).SET_VALUE;
- }
- else
- {
- throw new Exception(string.Format("托盘[{0}]调用WMS入库接口传递参数Memo1错误.", param.ContainerBarCode));
- }
- if (param.EquipmentNo == "1109" || param.EquipmentNo == "1114" || param.EquipmentNo == "1102" || param.EquipmentNo == "1094")
- {
- wcstask.TASK_MatureType = reply.TASK_MatureType;
- wcstask.TASK_MatureTemperat = reply.TASK_MatureTemperat;
- wcstask.TASK_MatureDate = reply.TASK_MatureDate;
- }
- int id = SugarBase.DB.Insertable(wcstask).ExecuteReturnIdentity();
- if (id <= 0)
- {
- throw new Exception(string.Format("WMS任务[{0}]添加WCS任务失败", reply.WMSTaskNum));
- }
- else
- {
- wcstask.TASK_NO = id;
- }
- }
- else
- {
- LogMessageHelper.RecordLogMessage(errormsg);
- AddLedErrorMsg(param.EquipmentNo, errormsg, 0);
- if (!string.IsNullOrWhiteSpace(param.Memo2))
- {
- //wms任务异常需要生成退回托盘任务
- wcstask = new WCS_TASK()
- {
- TASK_WMSNO = "wcs_" + DateTime.Now.ToString("yyyyMMddhhmmss"),
- TASK_COMTYPE = (int)ComTypeEnum.托盘异常退回,
- TASK_SYSTYPE = "WCS",
- TASK_POSIDFROM = param.EquipmentNo,//起点地址
- TASK_POSIDCUR = param.EquipmentNo,
- TASK_POSIDNEXT = param.EquipmentNo,
- TASK_POSIDMOVE = "",
- TASK_PRIORITY = 1,
- TASK_WKSTATUS = 1,
- TASK_WHID = string.IsNullOrWhiteSpace(reply.WareHouseName) ? Current.WareNameList[0] : reply.WareHouseName,
- TASK_ADDUSERNO = "WCS",
- TASK_ADDDATETIME = DateTime.Now,
- TASK_EDITUSERNO = "WCS",
- TASK_EDITDATETIME = DateTime.Now,
- TASK_NOTES = "",
- TASK_RGVNO = "",
- TASK_BOXBARCODE = param.ContainerBarCode,
- TASK_POSIDTO = param.Memo2.Trim()
- };
- int id = SugarBase.DB.Insertable(wcstask).ExecuteReturnIdentity();
- if (id <= 0)
- {
- throw new Exception(string.Format("WMS任务[{0}]添加WCS任务失败", reply.WMSTaskNum));
- }
- else
- {
- wcstask.TASK_NO = id;
- }
- var task_dtl = new WCS_TASK_DTL()
- {
- ID = Guid.NewGuid().ToString(),
- PARENTID = wcstask.TASK_NO,
- TASKNO = wcstask.TASK_NO,
- POSIDCUR = param.EquipmentNo,
- POSIDNEXT = param.EquipmentNo,
- DESCRIPTION = errormsg,
- EXECUTEDATE = DateTime.Now
- };
- SugarBase.DB.Insertable(task_dtl).ExecuteReturnIdentity();
- }
- }
- }
- }
- catch (Exception ex)
- {
- LogMessageHelper.RecordLogMessage(ex);
- }
- return wcstask;
- }
- public static bool WCS_GetOutTask(GetOutTaskParam param)
- {
- bool result = false;
- WCS_TASK wcstask = null;
- try
- {
- var reply = Current.WmsInterface.I_WCS_GetOutTask(param);
- if (reply.ResType)
- {
- if (!string.IsNullOrWhiteSpace(param.Memo1))
- {
- if(param.Memo1.Trim()=="1")
- {
- var agvtask = Current.AgvTaskSet.FirstOrDefault(v => v.Task_Id.ToString() == param.OutId);
- if (agvtask != null)
- {
- DateTime dt = SugarBase.DB.GetDate();
- int task_id = Convert.ToInt32(param.OutId);
- SugarBase.DB.Updateable<Middle_AGVTask>(it => new Middle_AGVTask()
- {
- Task_WcsStatus = 5,
- Task_UpdateUser = "wcs",
- Task_UpdateDate = dt
- })
- .Where(it => it.Task_Id == task_id).ExecuteCommand();
- }
- result = true;
- return result;
- }
- }
- if (string.IsNullOrWhiteSpace(reply.WMSTaskNum))
- {
- throw new Exception(string.Format("工位[{0}]申请出库任务反馈WMS任务号不能为空。", param.OutEndPostion));
- }
- if (reply.TaskType <= 0)
- {
- throw new Exception(string.Format("工位[{0}]申请出库任务反馈任务类型必须大于零。", param.OutEndPostion));
- }
- if (string.IsNullOrWhiteSpace(reply.OutWareCellNo))
- {
- throw new Exception(string.Format("工位[{0}]申请出库任务反馈出库位置不能为空。", param.OutEndPostion));
- }
- if (string.IsNullOrWhiteSpace(reply.WareHouseName))
- {
- throw new Exception(string.Format("工位[{0}]申请出库任务反馈仓库不能为空。", param.OutEndPostion));
- }
- if (string.IsNullOrWhiteSpace(reply.ContainerBarCode))
- {
- throw new Exception(string.Format("工位[{0}]申请出库任务反馈条码编号不能为空。", param.OutEndPostion));
- }
- if (reply.TaskType == 2 && string.IsNullOrWhiteSpace(reply.TunnelNum))
- {
- throw new Exception(string.Format("工位[{0}]申请出库任务反馈巷道号不能为空。", param.OutEndPostion));
- }
- if (reply.TASK_STACKINGTYPE <= 0 && (param.OutEndPostion == "1251" || param.OutEndPostion == "1261" || param.OutEndPostion == "1226" || param.OutEndPostion == "1234" || param.OutEndPostion == "1257" || param.OutEndPostion == "1252" || param.OutEndPostion == "1231" || param.OutEndPostion == "1258" || param.OutEndPostion == "1278" || param.OutEndPostion == "1283"))
- {
- throw new Exception(string.Format("工位[{0}]申请出库任务[1]垛型存在问题,传递值必须大于零。", param.OutEndPostion, reply.WMSTaskNum));
- }
- if (string.IsNullOrWhiteSpace(reply.PalletizingBoxSize) && Convert.ToInt32(reply.PalletizingBoxSize) <= 0 && (param.OutEndPostion == "1251" || param.OutEndPostion == "1261" || param.OutEndPostion == "1226" || param.OutEndPostion == "1234" || param.OutEndPostion == "1257" || param.OutEndPostion == "1252" || param.OutEndPostion == "1231" || param.OutEndPostion == "1258" || param.OutEndPostion == "1278" || param.OutEndPostion == "1283"))
- {
- throw new Exception(string.Format("工位[{0}]申请出库任务[1]箱子尺寸存在问题,传递值必须大于零。", param.OutEndPostion, reply.WMSTaskNum));
- }
-
- var task = SugarBase.DB.Queryable<WCS_TASK>().First(v => v.TASK_WMSNO == reply.WMSTaskNum);
- if (task == null)
- {
- var agvtask = Current.AgvTaskSet.FirstOrDefault(v => v.Task_Id.ToString() == param.OutId);
- string msg = TryCachHelper.TryTranExecute((db) =>
- {
- if (agvtask != null)
- {
- DateTime dt = db.GetDate();
- int task_id = Convert.ToInt32(param.OutId);
- db.Updateable<Middle_AGVTask>(it => new Middle_AGVTask()
- {
- Task_WcsStatus = 5,
- Task_UpdateUser = "wcs",
- Task_UpdateDate = dt
- })
- .Where(it => it.Task_Id == task_id).ExecuteCommand();
- }
- //添加wcs任务
- wcstask = new WCS_TASK();
- wcstask.TASK_WMSNO = reply.WMSTaskNum;
- wcstask.TASK_COMTYPE = reply.TaskType;
- wcstask.TASK_SYSTYPE = "WMS";
- wcstask.TASK_POSIDFROM = reply.OutWareCellNo;//起点地址
- wcstask.TASK_POSIDCUR = reply.OutWareCellNo;
- wcstask.TASK_POSIDNEXT = reply.OutWareCellNo;
- wcstask.TASK_POSIDMOVE = "";
- wcstask.TASK_PRIORITY = reply.Priority;
- wcstask.TASK_WKSTATUS = 0;
- wcstask.TASK_WHID = reply.WareHouseName;
- wcstask.TASK_ADDUSERNO = "WMS";
- wcstask.TASK_ADDDATETIME = DateTime.Now;
- wcstask.TASK_EDITUSERNO = "WMS";
- wcstask.TASK_EDITDATETIME = DateTime.Now;
- wcstask.TASK_NOTES = "";
- wcstask.TASK_RGVNO = "";
- wcstask.TASK_BOXBARCODE = reply.ContainerBarCode;
- wcstask.TASK_POSIDTO = param.OutEndPostion;
- wcstask.TASK_PRIORITY = reply.Priority;
- wcstask.TASK_ITEM8 = param.OutId;
- wcstask.TASK_ITEM9 = reply.Memo4;
- wcstask.TASK_ITEM10 = reply.Memo5;
- wcstask.PalletizingSonTraySize = reply.PalletizingSonTraySize;
- wcstask.PalletizingBoxSize = reply.PalletizingBoxSize;
- wcstask.SonTrayColorNo = reply.SonTrayColorNo;
- wcstask.TASK_MatureDate = reply.MatureDateLength;
- wcstask.TASK_WEIGHT = reply.TASK_WEIGHT;
- wcstask.TASK_STACKINGTYPE = reply.TASK_STACKINGTYPE;
- if (param.TASK_MatureDate == 12 && wcstask.TASK_MatureDate == 48)
- {
- wcstask.MatureNum = 4;
- }
- else
- {
- wcstask.MatureNum = 1;
- }
- if (wcstask.TASK_BOXBARCODE.Substring(0, 2) == "SH")
- {
- wcstask.TASK_ITEM2 = "2";
- }
- else if (wcstask.TASK_BOXBARCODE.Substring(0, 3) == "TPC")
- {
- wcstask.TASK_ITEM2 = "1";
- }
- else
- {
- wcstask.TASK_ITEM2 = "3";
- }
- if (string.IsNullOrWhiteSpace(reply.TunnelNum))
- {
- //wcstask.TASK_SRMNO = reply.EndPostion;
- }
- else
- {
- wcstask.TASK_FromTunnelNum = reply.TunnelNum;
- wcstask.TASK_SRMNO = Current.SysSets.Where(v => v.SET_ID.Contains("Tunnel")).FirstOrDefault(v => v.SET_VALUE == reply.TunnelNum).SET_TYPE;
- }
- int id = db.Insertable(wcstask).ExecuteReturnIdentity();
- if (id <= 0)
- {
- throw new Exception(string.Format("WMS任务[{0}]添加WCS任务失败", reply.WMSTaskNum));
- }
- });
- if (string.IsNullOrWhiteSpace(msg))
- {
- result = true;
- }
- else
- {
- throw new Exception(string.Format("WMS任务[{0}]添加WCS任务失败,消息[{1}]", reply.WMSTaskNum, msg));
- }
- }
- //var task = SugarBase.DB.Queryable<WCS_TASK>().First(v => v.TASK_WMSNO == reply.WMSTaskNum);
- //if (task == null)
- //{
- // //添加wcs任务
- // wcstask = new WCS_TASK();
- // wcstask.TASK_WMSNO = reply.WMSTaskNum;
- // wcstask.TASK_COMTYPE = reply.TaskType;
- // wcstask.TASK_SYSTYPE = "WMS";
- // wcstask.TASK_POSIDFROM = reply.OutWareCellNo;//起点地址
- // wcstask.TASK_POSIDCUR = reply.OutWareCellNo;
- // wcstask.TASK_POSIDNEXT = reply.OutWareCellNo;
- // wcstask.TASK_POSIDMOVE = "";
- // wcstask.TASK_PRIORITY = reply.Priority;
- // wcstask.TASK_WKSTATUS = 0;
- // wcstask.TASK_WHID = reply.WareHouseName;
- // wcstask.TASK_ADDUSERNO = "WMS";
- // wcstask.TASK_ADDDATETIME = DateTime.Now;
- // wcstask.TASK_EDITUSERNO = "WMS";
- // wcstask.TASK_EDITDATETIME = DateTime.Now;
- // wcstask.TASK_NOTES = "";
- // wcstask.TASK_RGVNO = "";
- // wcstask.TASK_BOXBARCODE = reply.ContainerBarCode;
- // wcstask.TASK_POSIDTO = param.OutEndPostion;
- // wcstask.TASK_PRIORITY = reply.Priority;
- // wcstask.TASK_ITEM8 = param.OutId;
- // wcstask.TASK_ITEM9 = reply.Memo4;
- // wcstask.TASK_ITEM10 = reply.Memo5;
- // if (wcstask.TASK_BOXBARCODE.Substring(0, 2) == "SH")
- // {
- // wcstask.TASK_ITEM2 = "2";
- // }
- // else if (wcstask.TASK_BOXBARCODE.Substring(0, 3) == "TPC")
- // {
- // wcstask.TASK_ITEM2 = "1";
- // }
- // else
- // {
- // wcstask.TASK_ITEM2 = "3";
- // }
- // if (string.IsNullOrWhiteSpace(reply.TunnelNum))
- // {
- // //wcstask.TASK_SRMNO = reply.EndPostion;
- // }
- // else
- // {
- // wcstask.TASK_FromTunnelNum = reply.TunnelNum;
- // wcstask.TASK_SRMNO = Current.SysSets.Where(v => v.SET_ID.Contains("Tunnel")).FirstOrDefault(v => v.SET_VALUE == reply.TunnelNum).SET_TYPE;
- // }
- // int id = SugarBase.DB.Insertable(wcstask).ExecuteReturnIdentity();
- // if (id <= 0)
- // {
- // throw new Exception(string.Format("WMS任务[{0}]添加WCS任务失败", reply.WMSTaskNum));
- // }
- // else
- // {
- // result = true;
- // }
- //}
- }
- else
- {
- var msg = string.Format("目标位置[{0}]获取出库任务失败,原因:[{1}]", param.OutEndPostion, reply.ResMessage);
- throw new Exception(msg);
- }
- }
- catch (Exception ex)
- {
- AddLedErrorMsg(param.OutEndPostion, ex.Message, 0);
- LogMessageHelper.RecordLogMessage(ex);
- }
- return result;
- }
- private static string CheckGetInTask(GetInTaskParam param, GetInTaskReply reply)
- {
- string errorMsg = string.Empty;
- if (reply == null)
- {
- throw new Exception(string.Format("托盘[{0}]调用WMS入库接口,反馈的对象为空。", param.ContainerBarCode));
- }
- if (reply.ResType)
- {
- if (string.IsNullOrWhiteSpace(reply.WMSTaskNum))
- {
- errorMsg = string.Format("托盘[{0}]调用WMS入库接口,反馈的WMS任务号不能为空。", param.ContainerBarCode);
- }
- else if (string.IsNullOrWhiteSpace(reply.EndPostion))
- {
- errorMsg = string.Format("托盘[{0}]调用WMS入库接口,反馈的目标地址不能为空。", param.ContainerBarCode);
- }
- else if (string.IsNullOrWhiteSpace(reply.EndPostion))
- {
- errorMsg = string.Format("托盘[{0}]调用WMS入库接口,反馈的目标地址不能为空。", param.ContainerBarCode);
- }
- else if (string.IsNullOrWhiteSpace(reply.WareHouseName))
- {
- errorMsg = string.Format("托盘[{0}]调用WMS入库接口,反馈的仓库名称不能为空。", param.ContainerBarCode);
- }
- else if (reply.TASK_WEIGHT < 1 && param.EquipmentNo == "1390")
- {
- errorMsg = string.Format("料箱[{0}]调用WMS入库接口,反馈的重量要大于0。", param.ContainerBarCode);
- }
- else if (reply.TASK_STACKINGTYPE < 1 && param.EquipmentNo == "1390")
- {
- errorMsg = string.Format("料箱[{0}]调用WMS入库接口,反馈的垛型要大于0。", param.ContainerBarCode);
- }
- //else if (string.IsNullOrWhiteSpace(reply.Memo1) && param.EquipmentNo == "1200" && param.ContainerBarCode.Contains("TPA"))
- //{
- // errorMsg = string.Format("托盘[{0}]18#调用WMS入库接口,反馈的是否缠膜不能为空。", param.ContainerBarCode);
- //}
- else if (!string.IsNullOrWhiteSpace(param.Memo1))
- {
- if (string.IsNullOrWhiteSpace(reply.TunnelNum) || reply.TunnelNum.Trim() == "0")
- {
- errorMsg = string.Format("托盘[{0}]调用WMS入库接口,没有返回巷道。", param.ContainerBarCode);
- }
- if (param.Memo1.Trim() == "2")
- {
- if (reply.EndPostion.Length < 10)
- {
- errorMsg = string.Format("托盘[{0}]调用WMS入库接口,没有分配货位。", param.ContainerBarCode);
- }
- }
- else if (param.Memo1.Trim() == "1")
- {
- }
- else
- {
- errorMsg = string.Format("托盘[{0}]调用WMS入库接口传递参数Memo1[{1}]错误.", param.ContainerBarCode, param.Memo1);
- }
- }
- }
- else
- {
- if (reply == null)
- {
- errorMsg = string.Format("托盘[{0}]调用WMS入库接口,反馈的对象为空。", param.ContainerBarCode);
- }
- else
- {
- errorMsg = string.Format("位置[{0}]条码[{1}]获取入库任务失败,反馈结果:[{2}]", param.EquipmentNo, param.ContainerBarCode, reply.ResMessage);
- }
- }
- return errorMsg;
- }
- /// <summary>
- /// 获取入库任务
- /// </summary>
- /// <param name="param"></param>
- public static WCS_TASK GetInTask_2(GetInTaskParam param)
- {
- WCS_TASK wcstask = null;
- try
- {
- if(!string.IsNullOrWhiteSpace(param.ContainerBarCode))
- {
- wcstask = SugarBase.DB.Queryable<WCS_TASK>().First(v => v.TASK_BOXBARCODE == param.ContainerBarCode);
- }
- if (wcstask == null)
- {
- var reply = Current.WmsInterface.I_WCS_GetInTask(param);
- if (reply.ResType)
- {
- if (string.IsNullOrWhiteSpace(reply.EndPostion))
- {
- throw new Exception(string.Format("托盘[{0}]调用WMS入库接口返回成功,但是没有返回目标地址。", reply.EndPostion));
- }
- //添加wcs任务
- wcstask = new WCS_TASK();
- wcstask.TASK_WMSNO = reply.WMSTaskNum;
- wcstask.TASK_COMTYPE = reply.TaskType;
- wcstask.TASK_SYSTYPE = "WMS";
- wcstask.TASK_POSIDFROM = param.EquipmentNo;//起点地址
- wcstask.TASK_POSIDCUR = param.EquipmentNo;
- wcstask.TASK_POSIDNEXT = param.EquipmentNo;
- wcstask.TASK_POSIDMOVE = "";
- wcstask.TASK_PRIORITY = reply.Priority;
- wcstask.TASK_WKSTATUS = 0;
- wcstask.TASK_WHID = reply.WareHouseName;
- wcstask.TASK_ADDUSERNO = "WMS";
- wcstask.TASK_ADDDATETIME = DateTime.Now;
- wcstask.TASK_EDITUSERNO = "WMS";
- wcstask.TASK_EDITDATETIME = DateTime.Now;
- wcstask.TASK_NOTES = "";
- wcstask.TASK_RGVNO = "";
- wcstask.TASK_BOXBARCODE = param.ContainerBarCode;
- if (string.IsNullOrWhiteSpace(param.Memo1))
- {
- wcstask.TASK_POSIDTO = reply.EndPostion;
- wcstask.TASK_SRMNO = reply.EndPostion;
- }
- else if (param.Memo1.Trim() == "1")
- {
- if (string.IsNullOrWhiteSpace(reply.TunnelNum) || reply.TunnelNum.Trim() == "0")
- {
- throw new Exception(string.Format("托盘[{0}]申请入库没有分配巷道,生成WCS任务失败。", param.ContainerBarCode));
- }
- else
- {
- string srmno = string.Empty;
- wcstask.TASK_EndTunnelNum = ConveyorHelper.QueryTunnel(wcstask.TASK_WMSNO, param.EquipmentNo, out srmno);
- wcstask.TASK_POSIDTO = wcstask.TASK_EndTunnelNum;
- wcstask.TASK_SRMNO = srmno;
- }
- }
- else if (param.Memo1.Trim() == "2")
- {
- wcstask.TASK_POSIDTO = reply.EndPostion;
- wcstask.TASK_EndTunnelNum = reply.TunnelNum;
- wcstask.TASK_SRMNO = Current.SysSets.Where(v => v.SET_ID.Contains("Tunnel")).FirstOrDefault(v => v.SET_VALUE == reply.TunnelNum).SET_VALUE;
- }
- else
- {
- throw new Exception(string.Format("托盘[{0}]调用WMS入库接口传递参数Memo1错误.", param.ContainerBarCode));
- }
- int id = SugarBase.DB.Insertable(wcstask).ExecuteReturnIdentity();
- if (id <= 0)
- {
- throw new Exception(string.Format("WMS任务[{0}]添加WCS任务失败", reply.WMSTaskNum));
- }
- else
- {
- wcstask.TASK_NO = id;
- }
- }
- else
- {
- string msg = string.Format("位置[{0}]条码[{1}]获取入库任务失败,反馈结果:[{2}]",param.EquipmentNo, param.ContainerBarCode, reply.ResMessage);
- LogMessageHelper.RecordLogMessage(msg);
- }
- }
- }
- catch (Exception ex)
- {
- //ThreadHelper.TaskThread(UploadExcTask, new { EquipmentNo = param.EquipmentNo, Alaram = ex.Message });
- LogMessageHelper.RecordLogMessage(ex);
- }
- return wcstask;
- }
- /// <summary>
- /// 上传设备异常信息
- /// </summary>
- //public static void UploadExcTask(UploadExcTaskParam param)
- //{
- // try
- // {
- // Log4netHelper.Logger_Info.InfoFormat(string.Format("开始:输送线[{0}]报警信息[{1}]上传WMS。", param.EquipmentNo, param.ExcMessage));
- // var reply = Current.WmsInterface.I_WCS_UploadExcTask(param);
- // if (reply.ResType)
- // {
- // Log4netHelper.Logger_Info.InfoFormat(string.Format("成功:输送线[{0}]报警信息[{1}]上传WMS。", param.EquipmentNo, param.ExcMessage));
- // }
- // else
- // {
- // throw new Exception(string.Format("失败:输送线[{0}]报警信息[{1}]上传WMS。原因:[{2}]", param.EquipmentNo, param.ExcMessage, reply.ResMessage));
- // }
- // }
- // catch (Exception ex)
- // {
- // Log4netHelper.Logger_Error.ErrorFormat(ex.ToString());
- // }
- // finally
- // {
- // Log4netHelper.Logger_Info.InfoFormat(string.Format("结束:输送线[{0}]报警信息[{1}]上传WMS。", param.EquipmentNo, param.ExcMessage));
- // }
- //}
- /// <summary>
- /// 添加异常信息
- /// </summary>
- /// <param name="db"></param>
- /// <param name="equipmentNo"></param>
- /// <param name="alaram"></param>
- /// <param name="task_no"></param>
- public static void AddLedErrorMsg(SqlSugarClient db, string equipmentNo, string alaram, int task_no, int alaramCount = 10)
- {
- int wmstask_no = 0;
- var task = db.Queryable<WCS_TASK>().First(v => v.TASK_NO == task_no);
- if (task != null)
- {
- wmstask_no = Convert.ToInt32(task.TASK_WMSNO);
- }
- CommonData.AddLedErrorMsg(db, equipmentNo, alaram, task_no, wmstask_no, alaramCount);
- }
- /// <summary>
- /// 添加异常信息
- /// </summary>
- /// <param name="db"></param>
- /// <param name="equipmentNo"></param>
- /// <param name="alaram"></param>
- /// <param name="task_no"></param>
- public static void AddLedErrorMsg(string equipmentNo, string alaram, int task_no)
- {
- int wmstask_no = 0;
- var task = Current.TaskSet.FirstOrDefault(v => v.TASK_NO == task_no);
- if (task != null)
- {
- wmstask_no = Convert.ToInt32(task.TASK_WMSNO);
- }
- TryCachHelper.TryExecute((db) => {
- CommonData.AddLedErrorMsg(db, equipmentNo, alaram, task_no, wmstask_no);
- });
- }
- private static int _upLoadExcToWMS = 0;
- /// <summary>
- /// 上传设备异常信息
- /// </summary>
- public static void UpLoadExcToWMS()
- {
- if (Interlocked.Exchange(ref _upLoadExcToWMS, 1) == 0)
- {
- string result = TryCachHelper.TryExecute((db) =>
- {
- var ExcMsg = db.Queryable<WCS_LEDALARMSMSG>().First(v => v.LED_ISUPLOADWMSFINISH == false);
- if (ExcMsg != null)
- {
- var param = new UploadExcTaskParam();
- param.OutId = ExcMsg.LED_ID;
- param.EquipmentNo = ExcMsg.LED_CONVYORNO;
- param.WCSTaskNum = ExcMsg.LED_WCSTASK_NO.ToString();
- param.WMSTaskNum = ExcMsg.LED_WMSTASK_NO.ToString();
- param.ExcCode = ExcMsg.LED_ALARMSMSG;
- param.ExcMessage = ExcMsg.LED_ALARMSMSG;
- var reply = Current.WmsInterface.I_WCS_UploadExcTask(param);
- if (reply.ResType)
- {
- //修改上传完成
- db.Updateable<WCS_LEDALARMSMSG>(it => new WCS_LEDALARMSMSG() { LED_ISUPLOADWMSFINISH = true, LED_UPDATETIME = DateTime.Now })
- .Where(it => it.LED_ID == ExcMsg.LED_ID)
- .ExecuteCommand();
- }
- }
- });
- Interlocked.Exchange(ref _upLoadExcToWMS, 0);
- }
-
- }
- private static int _putDevInfoToWMS = 0;
- /// <summary>
- /// 上传设PLC备信息
- /// </summary>
- public static void PutDevInfoToWMS()
- {
- if (Interlocked.Exchange(ref _putDevInfoToWMS, 1) == 0)
- {
- Thread.Sleep(2000);
- string result = TryCachHelper.TryTranExecute((db) =>
- {
- List<PutDevInfoParam> DevList = new List<PutDevInfoParam>();
- //var EquState = db.Queryable<WCS_EQUIPMENTINFO>().Where(v => v.Equ_Type == "srm").ToList();
- var EquState = Current.PlcSet.Where(v => v.PLC_EQUIPMENTTYPE == "srm" && v.PLC_WCSSYSTEM == Current.WcsSystem).ToList();
- foreach (var item in EquState)
- {
- var srmState = item.WCS_EquipmentInfoSet.FirstOrDefault(v => v.Equ_No == item.PLC_NAME);
- var param = new PutDevInfoParam();
- param.STA_EQUIPMENTNO = item.PLC_NAME;
- if (!string.IsNullOrWhiteSpace(srmState.EquSignal_Srm.SrmFault))
- {
- param.STA_ALARMS = string.Format("设备[{0}][{1}]", item.PLC_NAME, srmState.EquSignal_Srm.SrmFault);
- param.STA_ALARMSMSG = string.Format("设备[{0}][{1}]", item.PLC_NAME, srmState.EquSignal_Srm.SrmFault);
- }
- param.STA_DATA = srmState.EquSignal_Srm.ToJson();
- DevList.Add(param);
- }
- var convStatue = Current.PlcSet.Where(v => v.PLC_EQUIPMENTTYPE != "srm" && v.PLC_WCSSYSTEM == Current.WcsSystem).ToList();
- foreach (var item in convStatue)
- {
- foreach (var equinfo in item.WCS_EquipmentInfoSet)
- {
- var param = new PutDevInfoParam();
- if (equinfo.Equ_Type == EquipmentType.conveyor.ToString())
- {
- param.STA_EQUIPMENTNO = equinfo.Equ_No;
- string alarms = equinfo.EquSignal_Conv.ConvFault.ToString();
- if (string.IsNullOrWhiteSpace(alarms) == false && alarms != "0")
- {
- param.STA_ALARMS = string.Format("设备[{0}][{1}]", equinfo.Equ_No, alarms);
- param.STA_ALARMSMSG = string.Format("设备[{0}][{1}]", equinfo.Equ_No, alarms);
- }
- }
- else if (equinfo.Equ_Type == EquipmentType.rgv.ToString())
- {
- param.STA_EQUIPMENTNO = equinfo.Equ_No;
- string alarmagv= equinfo.EquSignal_Rgv.AlarmFault;
- if (string.IsNullOrWhiteSpace(alarmagv) == false && alarmagv != "0")
- {
- param.STA_ALARMS = string.Format("设备[{0}][{1}]", equinfo.Equ_No, alarmagv);
- param.STA_ALARMSMSG = string.Format("设备[{0}][{1}]", equinfo.Equ_No, alarmagv);
- }
- }
- DevList.Add(param);
- }
- }
- var reply = Current.WmsInterface.I_WCS_PutDevInfo(DevList);
- string resMessage = "接口返回Null";
- if (reply != null) resMessage = reply.ResMessage;
- if (reply == null || reply.ResType == false)
- {
- LogMessageHelper.RecordLogMessage(string.Format("上传设备PLC信息失败,原因:[{0}]。", resMessage));
- }
- });
- Interlocked.Exchange(ref _putDevInfoToWMS, 0);
- }
- }
- /// <summary>
- /// 称重上传
- /// </summary>
- /// <param name="param"></param>
- public static bool GetWeight(GetWeightParam param)
- {
- bool result = true;
- try
- {
- var reply = Current.WmsInterface.I_WCS_GetWeight(param);
- if (reply.ResType)
- {
- var task = Current.TaskSet.FirstOrDefault(v => v.TASK_WMSNO == param.WMSTaskNum);
- //修改任务,添加重量
- string resultmsg = TryCachHelper.TryTranExecute((db) =>
- {
- db.Updateable<WCS_TASK>(it => new WCS_TASK()
- {
- TASK_WKSTATUS = 2,
- TASK_GrossWeight = param.Weight,
- TASK_EDITDATETIME = DateTime.Now
- })
- .Where(it => it.TASK_NO == task.TASK_NO).ExecuteCommand();
- string msg = string.Format("称重任务[{0}]已称重,重量[{1}]克。", task.TASK_NO, param.Weight);
- CommonData.AddWCS_TASK_DTL(db, task.TASK_NO, task.TASK_NO, task.TASK_POSIDCUR, task.TASK_POSIDNEXT, msg);
- });
- if (!string.IsNullOrWhiteSpace(resultmsg))
- {
- throw new Exception(resultmsg);
- }
- }
- else
- {
- string error = string.Format("任务[{0}]重量[{1}]上传失败,原因:[{2}]", param.WMSTaskNum, param.Weight, reply.ResMessage);
- throw new Exception(error);
- }
- }
- catch (Exception ex)
- {
- result = false;
- LogMessageHelper.RecordLogMessage(ex.Message, ex);
- }
- return result;
- }
- #region WMS接口调用
- static List<int> AssignSrmTaskNoSet = new List<int>();
- public static void AssignSrm(WCS_TASK task)
- {
- if (AssignSrmTaskNoSet.Contains(task.TASK_NO))
- {
- Log4netHelper.Logger_Info.InfoFormat("任务[{0}]方法[AssignSrm]调用失败,WMS接口[I_WCS_GetTunnelList]调用正在执行中", task.TASK_NO);
- }
- else
- {
- AssignSrmTaskNoSet.Add(task.TASK_NO);
- ConveyorHelper.AssignSrm(task);
- AssignSrmTaskNoSet.Remove(task.TASK_NO);
- }
- }
- static List<int> PreparatoryAssignSrmTaskNoSet = new List<int>();
- public static void PreparatoryAssignSrmTunnel(WCS_TASK task)
- {
- if (PreparatoryAssignSrmTaskNoSet.Contains(task.TASK_NO))
- {
- Log4netHelper.Logger_Info.InfoFormat("任务[{0}]方法[AssignSrm]调用失败,WMS接口[I_WCS_GetTunnelList]调用正在执行中", task.TASK_NO);
- }
- else
- {
- PreparatoryAssignSrmTaskNoSet.Add(task.TASK_NO);
- ConveyorHelper.PreparatoryAssignSrmTunnel(task);
- PreparatoryAssignSrmTaskNoSet.Remove(task.TASK_NO);
- }
- }
- static List<string> TrayList = new List<string>();
- public static WCS_TASK GetWcsInTask(GetInTaskParam param)
- {
- WCS_TASK task = null;
- if (TrayList.Contains(param.ContainerBarCode))
- {
- Log4netHelper.Logger_Info.InfoFormat("托盘[{0}]方法[GetInTask]调用失败,WMS接口[I_WCS_GetInTask]调用正在执行中", param.ContainerBarCode);
- }
- else
- {
- TrayList.Add(param.ContainerBarCode);
- task = GetInTask(param);
- TrayList.Remove(param.ContainerBarCode);
- }
- return task;
- }
- static List<string> AgvTaskNoSet = new List<string>();
- public static void GetOutTask(GetOutTaskParam param)
- {
- if (AgvTaskNoSet.Contains(param.OutId))
- {
- Log4netHelper.Logger_Info.InfoFormat("呼叫位置[{0}]方法[GetOutTask]调用失败,WMS接口[I_WCS_GetOutTask]调用正在执行中", param.OutEndPostion);
- }
- else
- {
- AgvTaskNoSet.Add(param.OutId);
- WCS_GetOutTask(param);
- AgvTaskNoSet.Remove(param.OutId);
- }
- }
- static List<string> GetWeightSet = new List<string>();
- public static void ProInGetWeight(GetWeightParam param)
- {
- if (GetWeightSet.Contains(param.WMSTaskNum))
- {
- Log4netHelper.Logger_Info.InfoFormat("任务[{0}]调用方法[GetWeight]调用失败,WMS接口[I_WCS_GetWeight]调用正在执行中", param.WMSTaskNum);
- }
- else
- {
- GetWeightSet.Add(param.WMSTaskNum);
- GetWeight(param);
- GetWeightSet.Remove(param.WMSTaskNum);
- }
- }
- #endregion;
- private static int _putUpdateUnexecuteTask = 0;
- /// <summary>
- /// 更新未执行任务
- /// </summary>
- public static void UpdateUnexecuteTask()
- {
- if (Interlocked.Exchange(ref _putUpdateUnexecuteTask, 1) == 0)
- {
- Thread.Sleep(90000);
- try
- {
- TryCachHelper.TryExecute((db) =>
- {
- //更新每台堆垛机未执行任务数量
- var srmName = db.Queryable<WCS_PLC>().Where(v => v.PLC_EQUIPMENTTYPE == "srm").ToList();
- foreach (var item in srmName)
- {
- var taskSRMCount = db.Queryable<WCS_TASK>().Where(v => (v.TASK_WKSTATUS == 0 || v.TASK_WKSTATUS == 1 || v.TASK_WKSTATUS == 5) && v.TASK_SRMNO == item.PLC_NAME).ToList();
- //更新未执行任务数量
- db.Updateable<WCS_PLC>(it => new WCS_PLC() { PLC_UNEXECUTETASK = taskSRMCount.Count }).Where(it => it.PLC_NAME == item.PLC_NAME).ExecuteCommand();
- }
- var rgvName = db.Queryable<WCS_PLC>().Where(v => v.PLC_EQUIPMENTTYPE == "rgv").ToList();
- foreach (var item in rgvName)
- {
- var OutInMat = db.Queryable<WCS_RGVOutInInfo>().Where(v => v.RGVOUTIN_RGVNO == item.PLC_NAME && (v.RGVOUTIN_OUTINTYPE == "OnMat" || v.RGVOUTIN_OUTINTYPE == "OnUpMat")).Select(v => v.RGVOUTIN_CONVNO).ToList();
- var taskRGVCount = db.Queryable<WCS_TASK>().Where(v => (OutInMat.Contains(v.TASK_POSIDCUR) && v.TASK_POSIDCUR == v.TASK_POSIDNEXT) || (v.TASK_WKSTATUS == 7 && v.TASK_RGVNO == item.PLC_NAME)).ToList();
- db.Updateable<WCS_PLC>(it => new WCS_PLC() { PLC_UNEXECUTETASK = taskRGVCount.Count }).Where(it => it.PLC_NAME == item.PLC_NAME).ExecuteCommand();
- }
- });
- }
- catch (Exception ex)
- {
- LogMessageHelper.RecordLogMessage(ex);
- }
- finally
- {
- Interlocked.Exchange(ref _putTaskStep, 0);
- }
- }
- }
- #endregion;
- }
- }
|