/// <summary> /// Lấy bảng điểm tổng kết học kỳ theo lớp /// </summary> /// <param name="maLop">String: mã lớp</param> /// <param name="maHocKy">String: Mã học kỳ</param> /// <returns>List BangDiemHocKyDTO</returns> public List <BangDiemHocKyDTO> LayList_BangDiem_Lop_HocKy(string maLop, string maHocKy) { var bangDiemHocKy = new List <BangDiemHocKyDTO>(); // Lấy ds học sinh của lớp List <HocSinhDTO> dsHocsinh = _hocSinhDAL.LayList_HocSinh_LopHoc(maLop); MonHoc_HeSoDTO dsHeSoMonHoc = _monHocDAL.LayDTO_HeSoMonHoc(); foreach (HocSinhDTO hocsinh in dsHocsinh) { var bangDiemCaNhan = new BangDiemHocKyDTO { STT = hocsinh.STT, MaHocSinh = hocsinh.MaHocSinh, TenHocSinh = hocsinh.TenHocSinh }; // Tinh điểm tb DataTable tbBangDiem = _bangDiemDAL.LayBangDiem_HocKy_HocSinh(maLop, hocsinh.MaHocSinh, maHocKy); int soMonHoc = tbBangDiem.Rows.Count; int soMonDuDiem = 0; double tongDiem = 0; double tongHeSo = 0; double heso = 0; foreach (DataRow dr in tbBangDiem.Rows) { object dtb; if (dr["DTB"] is DBNull) { dtb = "_"; } else { dtb = dr["DTB"]; } switch (Convert.ToString(dr["MaMonHoc"])) { case "toan": bangDiemCaNhan.Dtoan = dtb; heso = dsHeSoMonHoc.toan; break; case "ly": bangDiemCaNhan.Dly = dtb; heso = dsHeSoMonHoc.ly; break; case "hoa": bangDiemCaNhan.Dhoa = dtb; heso = dsHeSoMonHoc.hoa; break; case "sinh": bangDiemCaNhan.Dsinh = dtb; heso = dsHeSoMonHoc.sinh; break; case "ngvan": bangDiemCaNhan.Dngvan = dtb; heso = dsHeSoMonHoc.nngu; break; case "su": bangDiemCaNhan.Dsu = dtb; heso = dsHeSoMonHoc.su; break; case "dia": bangDiemCaNhan.Ddia = dtb; heso = dsHeSoMonHoc.dia; break; case "nngu": bangDiemCaNhan.Dnngu = dtb; heso = dsHeSoMonHoc.nngu; break; case "tin": bangDiemCaNhan.Dtin = dtb; heso = dsHeSoMonHoc.tin; break; case "tduc": bangDiemCaNhan.Dtduc = dtb; heso = dsHeSoMonHoc.tduc; break; case "gdcd": bangDiemCaNhan.Dgdcd = dtb; heso = dsHeSoMonHoc.gdcd; break; case "qphong": bangDiemCaNhan.Dqphong = dtb; heso = dsHeSoMonHoc.qphong; break; case "cnghe": bangDiemCaNhan.Dcnghe = dtb; heso = dsHeSoMonHoc.cnghe; break; } if (!Convert.ToString(dtb).Equals("_")) { tongDiem += heso * Convert.ToDouble(dtb); tongHeSo += heso; soMonDuDiem++; } } if (soMonDuDiem == soMonHoc) { bangDiemCaNhan.DTB = ObjectUtil.LamTron(tongDiem / tongHeSo, 2); } else { bangDiemCaNhan.DTB = "_"; } bangDiemHocKy.Add(bangDiemCaNhan); } return(bangDiemHocKy); }
public int BatchUpdate(List <Te> entities, Expression <Func <Te, dynamic> > expression = null) { if (entities == null || entities.Count < 1) { return(0); } var updateColumnNames = new List <string>(); string body = expression.Body.ToString(); body = new Regex(@"new <>f__[^\(\)]+\(", RegexOptions.IgnoreCase).Replace(body, ""); if (body.Substring(0, 1) == "(") { body = body.Substring(1); } if (body.Substring(body.Length - 1, 1) == ")") { body = body.Substring(0, body.Length - 1); } var bodies = body.Replace(" ", "").Split(","); foreach (var s in bodies) { var temp = s.Split('='); if (temp.Length == 2) { updateColumnNames.Add(temp[0]); } } string primaryKey = ""; PropertyInfo primaryType = null; var columns = new Dictionary <string, PropertyInfo>(); var properties = typeof(Te).GetProperties(); foreach (var p in properties) { var columnName = p.Name; var filedComment = (FiledComment)p.GetCustomAttribute(typeof(FiledComment)); if (filedComment != null) { if (!string.IsNullOrEmpty(filedComment.ColumnName)) { columnName = filedComment.ColumnName; } if ((filedComment.IsIdentity || filedComment.IsPrimaryKey)) { if (string.IsNullOrEmpty(primaryKey)) { primaryKey = columnName; primaryType = p; } continue; } if (filedComment.UpdateIgnore) { continue; } if (updateColumnNames.Count > 0 && updateColumnNames.Contains(p.Name)) { columns.Add(columnName, p); } } else { if (updateColumnNames.Count > 0 && updateColumnNames.Contains(p.Name)) { columns.Add(columnName, p); } } } var sb = new StringBuilder(); var tableName = ObjectUtil.GetTableName <Te>(false); sb.AppendFormat("update [{0}] set ", tableName); foreach (var key in columns.Keys) { sb.AppendFormat("[{0}].[{1}]=t.[{1}], ", tableName, key, key); } sb.Append("from(").Replace(", from(", " from("); var primaryTypeName = primaryType.Name; foreach (Te item in entities) { sb.AppendFormat("select {0} as [{1}], ", StringUtil.FormatValue(primaryTypeName, primaryType.GetValue(item, null)), primaryKey); foreach (var key in columns.Keys) { var p = columns[key]; var @object = columns[key].GetValue(item, null); if (@object != null && @object is IList) { continue; } string value = StringUtil.FormatValue(p.RealTypeName(), @object); sb.AppendFormat("{0} as [{1}], ", value, key); } sb.Append("union all "); } sb.AppendFormat(")t where [{0}].[{1}]=t.[{1}]", tableName, primaryKey); sb.Replace(", union all ", " union all ").Replace("union all )t", ")t"); return(this.Execute(sb.ToString())); }
private void OnDestroy() { ObjectUtil.UnregisterObserver(this); }
public override int GetHashCode() { return(ObjectUtil.GetHashCode(owner, nameToRestore)); }
protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher) { object obj = ObjectUtil.GetObject(stateItem.State); if (obj == null) { return; } switch (stateItem.ItemName) { case "ReadFinished": try { object o = ObjectUtil.GetObject(stateItem.State); string TaskFinish = o.ToString(); if (TaskFinish.Equals("True") || TaskFinish.Equals("1")) { string BarCode = Util.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(Context.ProcessDispatcher.WriteToService(stateItem.Name, "BarCode"))); if (BarCode.Length <= 0 || BarCode == "?") { return; } bool blnInnver = false; bool blnHasOutTask = false; int Count = bll.GetRowCount("WCS_TASK", string.Format("TaskType='11' and State in (0,3) and PalletCode!='{0}'", BarCode)); if (Count > 0) { WriteToService(stateItem.Name, "WriteFinished", 2); Logger.Error("还有其他入库任务未完成,不能入库!"); return; } Count = bll.GetRowCount("WCS_TASK", string.Format("TaskType='11' and State in (0,3) and PalletCode='{0}'", BarCode)); if (Count == 0) { Count = bll.GetRowCount("WCS_TASK", "TaskType='12' and State=0"); if (Count > 0) { blnHasOutTask = true; } else { if (bll.GetRowCount("WCS_TASK", string.Format("TaskType='14' and State<7 and PalletCode='{0}'", BarCode)) > 0) { blnInnver = true; } } } if (blnHasOutTask) { WriteToService(stateItem.Name, "WriteFinished", 2); Logger.Error("堆垛机正在执行出库任务,不能入库!"); return; } //判断货位表中是否含有该条码的货位. int i = bll.GetRowCount("CMD_CELL", string.Format("CellName='{0}' and IsTurnover=0", BarCode)); if (i == 0 && !blnInnver) { WriteToService(stateItem.Name, "WriteFinished", 4); Logger.Error("条码不正确,不存在货位名称为 " + BarCode + " 的货位!"); return; } if (i > 0) { //判断该货位是否含有货,托盘条码是否重复 int k = bll.GetRowCount("CMD_CELL", string.Format("CellName='{0}' and PalletCode='{1}' and InDate is not Null ", BarCode, BarCode)); if (k == 1 && !blnInnver) { WriteToService(stateItem.Name, "WriteFinished", 3); Logger.Error("条码重复,货位名称为 " + BarCode + " 的货位已经入库!"); return; } } bll.ExecNonQuery("WCS.SpCreateInTaskByPallet", new DataParameter[] { new DataParameter("@PalletCode", BarCode) }); string strValue = ""; //入库时输入冲程数 DataTable dtTask = bll.FillDataTable("WCS.SelectTask", new DataParameter[] { new DataParameter("{0}", string.Format("WCS_Task.TaskType='11' and WCS_Task.State in (0,3) and WCS_Task.PalletCode='{0}'", BarCode)) }); if (dtTask.Rows.Count > 0) { string[] str = new string[3]; str[0] = "1"; while ((strValue = FormDialog.ShowDialog(str, dtTask)) != "") { break; } } WriteToService(stateItem.Name, "WriteFinished", 1); Logger.Info("托盘条码为 " + BarCode + " 开始入库!"); } } catch (Exception ex1) { Logger.Info("CarProcess中ReadFinished出错:" + ex1.Message); } break; case "AlarmCode": object o1 = ObjectUtil.GetObject(stateItem.State); if (o1.ToString() != "0") { Logger.Error(dicCarErr[int.Parse(o1.ToString())]); } break; default: break; } }
/// <summary> /// /// </summary> /// <param name="craneNo"></param> private void CraneIn(int craneNo) { // 判断堆垛机的状态 自动 空闲 try { //判断堆垛机 if (!Check_Crane_Status_IsOk(craneNo)) { return; } //切换入库优先 dCrnStatus[craneNo].io_flag = 0; } catch (Exception e) { //Logger.Debug("Crane out 状态检查错误:" + e.Message.ToString()); return; } string serviceName = "CranePLC" + craneNo; object[] obj = ObjectUtil.GetObjects(Context.ProcessDispatcher.WriteToService(serviceName, "CraneTaskNo")); string plcTaskNo = Util.ConvertStringChar.BytesToString(obj); string CraneNo = "0" + craneNo.ToString(); //获取任务,排序优先等级、任务时间 DataParameter[] parameter = new DataParameter[] { new DataParameter("{0}", string.Format("((WCS_Task.TaskType='11' and WCS_Task.State='1') or (WCS_Task.TaskType='14' and WCS_Task.State='5')) and WCS_Task.CraneNo='{0}' and WCS_TASK.AreaCode='{1}' and WCS_TASK.CellCode!=''", CraneNo, AreaCode)) }; DataTable dt = bll.FillDataTable("WCS.SelectTask", parameter); //出库 if (dt.Rows.Count > 0) { DataRow dr = dt.Rows[0]; string TaskNo = dr["TaskNo"].ToString(); string BillID = dr["BillID"].ToString(); byte taskType = byte.Parse(dt.Rows[0]["TaskType"].ToString().Substring(1, 1)); string fromStation = dt.Rows[0]["FromStation"].ToString(); string toStation = dt.Rows[0]["ToStation"].ToString(); int[] cellAddr = new int[9]; cellAddr[0] = 0; cellAddr[1] = 0; cellAddr[2] = 0; cellAddr[3] = byte.Parse(fromStation.Substring(3, 3)); cellAddr[4] = byte.Parse(fromStation.Substring(6, 3)); cellAddr[5] = byte.Parse(fromStation.Substring(0, 3)); cellAddr[6] = byte.Parse(toStation.Substring(3, 3)); cellAddr[7] = byte.Parse(toStation.Substring(6, 3)); cellAddr[8] = byte.Parse(toStation.Substring(0, 3)); sbyte[] taskNo = new sbyte[10]; Util.ConvertStringChar.stringToBytes(dr["TaskNo"].ToString(), 10).CopyTo(taskNo, 0); WriteToService(serviceName, "TaskAddress", cellAddr); WriteToService(serviceName, "TaskNo", taskNo); if (WriteToService(serviceName, "WriteFinished", 1)) { string State = "3"; if (taskType == 4) { State = "6"; } //更新任务状态为执行中 bll.ExecNonQuery("WCS.UpdateTaskTimeByTaskNo", new DataParameter[] { new DataParameter("@State", State), new DataParameter("@TaskNo", TaskNo) }); bll.ExecNonQuery("WCS.UpdateBillStateByBillID", new DataParameter[] { new DataParameter("@State", 3), new DataParameter("@BillID", BillID) }); } Logger.Info("任务:" + dr["TaskNo"].ToString() + "已下发给" + craneNo + "堆垛机;起始地址:" + fromStation + ",目标地址:" + toStation); } }
void OnDestroy() { ObjectUtil.Destroy(_mesh); _mesh = null; }
private void UpdateGrid(String qualifier) { Repository repository = Global.GetRepository(); Feed <PersistentObject> feed = repository.ExecuteDQL <PersistentObject>("select r_object_id,object_name,subject,title,i_folder_id from " + qualifier, new FeedGetOptions() { Inline = true, Links = true }); List <PersistentObject> items = feed == null ? new List <PersistentObject>() : ObjectUtil.getFeedAsList <PersistentObject>(feed); List <SimpleDocumentProperties> lst = new List <SimpleDocumentProperties>(); foreach (PersistentObject item in items) { SimpleDocumentProperties sdp = new SimpleDocumentProperties(); sdp.Id = item.GetPropertyString("r_object_id"); sdp.Name = item.GetPropertyString("object_name"); sdp.Subject = item.GetPropertyString("subject"); sdp.Title = item.GetPropertyString("title"); String folderId = item.GetRepeatingString("i_folder_id", 0); Folder folder = repository.GetSysObjectById <Folder>(folderId); String folderPath = folder.GetRepeatingString("r_folder_path", 0); sdp.FolderPath = folderPath; lst.Add(sdp); } gridView.DataSource = lst; gridView.DataBind(); }
public void WhenNullThenShouldThrowException() { Assert.ThrowsException <ArgumentNullException>(() => ObjectUtil.DeepClone <Foo>(null)); }
/// <summary> /// /// </summary> /// <param name="craneNo"></param> private void CraneIn(int craneNo) { try { if (!CheckCraneStatus(craneNo, false)) { return; } dicCranStatus[craneNo] = 1; } catch (Exception e) { dicCranStatus[craneNo] = 1; Logger.Error("CraneProcess中CraneIn状态检查错误:" + e.Message.ToString()); return; } try { string Server = ServerName + craneNo.ToString(); int CarItem = 102 + (craneNo - 1) * 4; string TaskNos = ConvertStringChar.BytesToString(ObjectUtil.GetObjects(WriteToService("CarPLC", CarItem.ToString() + "_TaskNo"))).PadLeft(27, ' '); if (TaskNos != "") { string TaskNo = TaskNos.Substring(0, 10).Trim(); DataTable dtTask = bll.FillDataTable("WCS.SelectWCSTask", new DataParameter[] { new DataParameter("{0}", string.Format("TASKID='{0}' AND TASKSTATUS='2' AND ASRSID='{1}'", TaskNo, craneNo)) }); if (dtTask.Rows.Count > 0) { string PalletCode = dtTask.Rows[0]["PALLETID"].ToString(); sbyte[] staskNo = new sbyte[20]; Util.ConvertStringChar.stringToBytes(TaskNo, 12).CopyTo(staskNo, 0); Util.ConvertStringChar.stringToBytes(PalletCode, 8).CopyTo(staskNo, 12); string strDLocation = dtTask.Rows[0]["DLOCATION"].ToString(); int[] Location = new int[6]; Location[0] = 2 * craneNo - 1; Location[1] = 0; Location[2] = 2; Location[3] = int.Parse(strDLocation.Split('-')[0]); Location[4] = int.Parse(strDLocation.Split('-')[1]); int ToRow = int.Parse(strDLocation.Split('-')[2]); if (ToRow > 1) { ToRow += 1; } Location[5] = ToRow; WriteToService(Server, "Address", Location); WriteToService(Server, "WriteTask", staskNo); if (WriteToService(Server, "WriteFinish", true)) { //更新WCSTask状态为3 bll.ExecNonQuery("WCS.UpdateWCSTaskState", new DataParameter[] { new DataParameter("{0}", 3), new DataParameter("{1}", TaskNo) }); Logger.Info("入库任务:" + TaskNo + " 托盘编号:" + PalletCode + " 位:" + strDLocation + " 已下发给第" + craneNo + "堆垛机"); } else { Logger.Error("CraneProcess入库任务:" + TaskNo + " 托盘编号:" + PalletCode + " 无法写入堆垛机" + craneNo); } } } } catch (Exception ex) { Logger.Error("CraneProcess中CraneIn异常:" + ex.Message); return; } }
/// <summary> /// 堆垛机任务完成处理 /// </summary> private void TaskFinishProcess(StateItem Item) { object obj = ObjectUtil.GetObject(Item.State); if (obj == null) { return; } string TaskFinish = obj.ToString(); if (TaskFinish.Equals("False") || TaskFinish.Equals("0")) { return; } int CraneNo = int.Parse(Item.Name.Replace("CranePLC", "")); try { string TaskNo = ConvertStringChar.BytesToString(ObjectUtil.GetObjects(WriteToService(Item.Name, "ReadTaskNo"))); if ((TaskFinish.Equals("True") || TaskFinish.Equals("1")) && TaskNo != "") { DataTable dtTask = bll.FillDataTable("WCS.SelectWCSTask", new DataParameter[] { new DataParameter("{0}", string.Format("TASKID='{0}' and ASRSID='{1}'", TaskNo, CraneNo)) }); if (dtTask.Rows.Count > 0) { DataRow dr = dtTask.Rows[0]; string TaskType = dtTask.Rows[0]["TASKTYPE"].ToString(); string PalletCode = dtTask.Rows[0]["PALLETID"].ToString(); if (TaskType == "IB")//入库 { //更新入库完成 bll.ExecNonQueryTran("WCS.SpTaskFinished", new DataParameter[] { new DataParameter("VTaskNo", TaskNo) }); sbyte[] taskNo = new sbyte[20]; ConvertStringChar.stringToBytes("", 20).CopyTo(taskNo, 0); WriteToService(Item.Name, "GetRequest", false); WriteToService(Item.Name, "PutRequest", false); WriteToService(Item.Name, "ClearTaskNo", taskNo); WriteToService(Item.Name, "TaskFinish", false); Logger.Info("第" + CraneNo + "堆垛机入库任务:" + TaskNo + "托盘编号:" + PalletCode + "任务完成!"); } else if (TaskType == "OB")//出库 { //更新任务状态 bll.ExecNonQuery("WCS.UpdateWCSTaskState", new DataParameter[] { new DataParameter("{0}", 2), new DataParameter("{1}", TaskNo) }); //更新堆垛机PLC sbyte[] taskNo = new sbyte[20]; ConvertStringChar.stringToBytes("", 20).CopyTo(taskNo, 0); WriteToService(Item.Name, "GetRequest", false); WriteToService(Item.Name, "PutRequest", false); WriteToService(Item.Name, "ClearTaskNo", taskNo); WriteToService(Item.Name, "TaskFinish", false); Logger.Info("第" + CraneNo + "堆垛机出库任务:" + TaskNo + "托盘编号:" + PalletCode + "堆垛机任务完成!"); //下载任务到输送线。 int CarItem = 104 + (CraneNo - 1) * 4; sbyte[] staskNo = new sbyte[26]; string[] LedMsgs = dtTask.Rows[0]["LEDNO"].ToString().Split(','); ConvertStringChar.stringToBytes(TaskNo, 10).CopyTo(staskNo, 0); ConvertStringChar.stringToBytes(LedMsgs[0], 8).CopyTo(staskNo, 10); ConvertStringChar.stringToBytes(LedMsgs[1], 8).CopyTo(staskNo, 18); WriteToService("CarPLC", CarItem + "_WriteTaskNo", staskNo); if (WriteToService("CarPLC", CarItem + "_WriteFinished", 1)) { bll.ExecNonQuery("WCS.UpdateWCSTaskState", new DataParameter[] { new DataParameter("{0}", 3), new DataParameter("{1}", TaskNo) }); Logger.Info("出库任务:" + TaskNo + "托盘编号:" + PalletCode + "任务下达" + CarItem + "输送线!"); } } else { //更新入库完成 bll.ExecNonQueryTran("WCS.SpTaskFinished", new DataParameter[] { new DataParameter("VTaskNo", TaskNo) }); sbyte[] taskNo = new sbyte[20]; WriteToService(Item.Name, "GetRequest", false); WriteToService(Item.Name, "PutRequest", false); ConvertStringChar.stringToBytes("", 20).CopyTo(taskNo, 0); WriteToService(Item.Name, "ClearTaskNo", taskNo); WriteToService(Item.Name, "TaskFinish", false); Logger.Info("第" + CraneNo + "堆垛机任务:" + TaskNo + "托盘编号:" + PalletCode + "任务完成!"); } } else { WriteToService(Item.Name, "TaskFinish", false); Logger.Error("CraneProcess第" + CraneNo + "堆垛机任务号:" + TaskNo + "在任务表中没有找到,请查询任务!"); } } else { Logger.Error("CraneProcess第" + CraneNo + "堆垛机任务号为空!"); } } catch (Exception ex) { Logger.Error("CraneProcess 第" + CraneNo + "堆垛机Finish:" + ex.Message); } }
/// <summary> /// /// </summary> /// <param name="craneNo"></param> private void CraneOut(int craneNo) { try { if (!CheckCraneStatus(craneNo, true)) { return; } dicCranStatus[craneNo] = 2; int CarNo = 104 + (craneNo - 1) * 4; string ReadTaskNo = ObjectUtil.GetObject(WriteToService("CarPLC", CarNo.ToString() + "_HasProduct")).ToString(); if (ReadTaskNo == "1" || ReadTaskNo == "True") { return; } } catch (Exception e) { dicCranStatus[craneNo] = 2; Logger.Error("CraneProcess中Craneout 状态检查错误:" + e.Message.ToString()); return; } try { string Server = ServerName + craneNo.ToString(); DataTable dtTask = bll.FillDataTable("WCS.SelectWmsTask", new DataParameter[] { new DataParameter("{0}", string.Format("TASKSTATUS='0' AND TASKTYPE in ('OB','MB') AND ASRSID='{0}'", craneNo)) }); if (dtTask.Rows.Count > 0) { string TaskNo = dtTask.Rows[0]["TASKID"].ToString(); string PalletCode = dtTask.Rows[0]["PALLETID"].ToString(); sbyte[] staskNo = new sbyte[20]; Util.ConvertStringChar.stringToBytes(TaskNo, 12).CopyTo(staskNo, 0); Util.ConvertStringChar.stringToBytes(PalletCode, 8).CopyTo(staskNo, 12); string strSLocation = dtTask.Rows[0]["SLOCATION"].ToString(); string strDLocation = dtTask.Rows[0]["DLOCATION"].ToString(); int[] Location = new int[6]; Location[0] = int.Parse(strSLocation.Split('-')[0]); Location[1] = int.Parse(strSLocation.Split('-')[1]); int fromRow = int.Parse(strSLocation.Split('-')[2]); if (fromRow > 1) { fromRow += 1; } Location[2] = fromRow; int D1 = 0; try { int.TryParse(strDLocation.Split('-')[0], out D1); } catch (Exception etd) { } if (D1 == 0) { Location[3] = 2 * craneNo; Location[4] = 0; Location[5] = 2; } else { Location[3] = int.Parse(strDLocation.Split('-')[0]); Location[4] = int.Parse(strDLocation.Split('-')[1]); int DRow = int.Parse(strDLocation.Split('-')[2]); if (DRow > 1) { DRow += 1; } Location[5] = DRow; } WriteToService(Server, "Address", Location); WriteToService(Server, "WriteTask", staskNo); if (WriteToService(Server, "WriteFinish", true)) { //接收WMS_Task bll.ExecNonQueryTran("WCS.SPReciveWmsTask", new DataParameter[] { new DataParameter("VTASKNO", TaskNo) }); Logger.Info("出库任务:" + TaskNo + " 托盘编号:" + PalletCode + " 位:" + strSLocation + " 已下发给第" + craneNo + "堆垛机"); } else { Logger.Error("CraneProcess出库任务:" + TaskNo + " 托盘编号:" + PalletCode + "无法写入堆垛机" + craneNo); } } } catch (Exception ex) { Logger.Error("CraneProcess中CraneOut异常" + ex.Message.ToString()); return; } }
protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher) { object obj = ObjectUtil.GetObject(stateItem.State); if (obj == null) { return; } BLL.BLLBase bll = new BLL.BLLBase(); string Request = obj.ToString(); if (Request.Equals("True") || Request.Equals("0")) { string AreaCode = BLL.Server.GetAreaCode(); string AisleNo = ""; try { string taskNo = ""; switch (stateItem.ItemName) { case "OutFinish1": taskNo = ObjectUtil.GetObject(WriteToService(stateItem.Name, "ReadTaskNo1")).ToString(); break; case "OutFinish2": taskNo = ObjectUtil.GetObject(WriteToService(stateItem.Name, "ReadTaskNo2")).ToString(); break; } //DataTable dtT = bll.FillDataTable("WCS.SelectTask", new DataParameter("{0}", string.Format("WCS_Task.AreaCode='{0}' and S1.AisleNo='{1}' and WCS_TASK.State=10 and (WCS_TASK.TaskType='12' or WCS_TASK.taskType='14')", AreaCode, AisleNo))); //if (dtT.Rows.Count==0) //{ // return; //} //string taskNo = dtT.Rows[0]["taskNo"].ToString(); if (taskNo.Trim().Length > 0) { DataTable dt = bll.FillDataTable("WCS.SelectReadTaskByTaskNo", new DataParameter[] { new DataParameter("@TaskNo", taskNo) }); if (dt.Rows.Count > 0) { string TaskType = dt.Rows[0]["TaskType"].ToString(); string strState = dt.Rows[0]["State"].ToString(); string StationNo = dt.Rows[0]["StationNo"].ToString(); if (TaskType == "11") { DataParameter[] param; param = new DataParameter[] { new DataParameter("@StationNo", StationNo), new DataParameter("@TaskNo", taskNo) }; bll.ExecNonQuery("WCS.UpdateTaskInStockRequest", param); Logger.Info("任务号:" + taskNo + " 托盘:" + " 开始入库,到达入库口:" + StationNo); } if (TaskType == "12" || TaskType == "15" || TaskType == "14") //出库,托盘出库,盘点 { DataParameter[] param = new DataParameter[] { new DataParameter("@TaskNo", taskNo) }; DataTable dtXml = bll.FillDataTable("WCS.Sp_TaskProcess", param); Logger.Info("出库任务完成,任务号:" + taskNo); string Flag = ""; if (TaskType == "12") { Flag = "BatchOutStock"; } if (dtXml.Rows.Count > 0) { string BillNo = dtXml.Rows[0][0].ToString(); if (BillNo.Trim().Length > 0) { string xml = Util.ConvertObj.ConvertDataTableToXmlOperation(dtXml, Flag); WriteToService("ERP", "ACK", xml); Logger.Info("单号" + dtXml.Rows[0][0].ToString() + "已完成,开始上报ERP系统"); } } //盘点入库 if (TaskType == "14") { int SlideNum = 1; string CellCode = dt.Rows[0]["CellCode"].ToString(); if (CellCode.Length > 0) { if (CellCode.Substring(3, 1) == "1" || CellCode.Substring(3, 1) == "2") { StationNo = "01"; SlideNum = 1; } else if (CellCode.Substring(3, 1) == "3" || CellCode.Substring(3, 1) == "4") { StationNo = "02"; SlideNum = 2; } else if (CellCode.Substring(3, 1) == "5" || CellCode.Substring(3, 1) == "6") { StationNo = "03"; SlideNum = 3; } else { StationNo = "04"; SlideNum = 4; } } else { Logger.Error("盘点任务货位丢失,请核对"); return; } int staskNo = int.Parse(taskNo); if (StationNo == "01") { Context.ProcessDispatcher.WriteToService("TranLine", "TaskNo", staskNo); Context.ProcessDispatcher.WriteToService("TranLine", "SlideNum", SlideNum); Context.ProcessDispatcher.WriteToService("TranLine", "NewTask", 1); Context.ProcessDispatcher.WriteToService("TranLine", "TaskType", 1); } else { Context.ProcessDispatcher.WriteToService("TranLine", "TaskNo1", staskNo); Context.ProcessDispatcher.WriteToService("TranLine", "SlideNum1", SlideNum); Context.ProcessDispatcher.WriteToService("TranLine", "NewTask1", 1); Context.ProcessDispatcher.WriteToService("TranLine", "TaskType1", 1); } bll.ExecNonQuery("WCS.UpdateTaskStateByTaskNo", new DataParameter[] { new DataParameter("@State", 2), new DataParameter("@TaskNo", taskNo) }); } //string strValue = ""; //string[] str = new string[3]; //if (TaskType == "12" || TaskType == "14")//显示拣货信息. //{ // str[0] = "1"; // if (TaskType == "14") // str[0] = "2"; // while ((strValue = FormDialog.ShowDialog(str, dt)) != "") // { // break; // } //} } } } } catch (Exception ex) { Logger.Error("到达出库口,错误讯息:" + ex.Message); } } }
private string GetLedMessage(string LedNo, string ItemNo, StateItem item) { string strMsg = ""; try { string Stock = "外盘:"; if (int.Parse(ItemNo) % 2 == 0) { Stock = "内盘:"; } string PalletCode = ""; string CellCode = " 位:"; string CraneErrorNo = "0"; if (int.Parse(LedNo) % 2 == 0 && int.Parse(ItemNo) % 2 == 0) { int CarNo = int.Parse(LedNo) / 2; CraneErrorNo = ObjectUtil.GetObject(WriteToService("CranePLC" + CarNo, "nAlarmCode")).ToString(); } if (CraneErrorNo != "0") { string ErrMsg = "堆垛机未知错误"; DataRow[] drs = dtCraneError.Select(string.Format("warncode='{0}'", CraneErrorNo)); if (drs.Length > 0) { ErrMsg = drs[0]["WARNDESC"].ToString(); } strMsg = ErrMsg; } else { object [] obj = ObjectUtil.GetObjects(WriteToService(StockPLC, ItemNo + "_TaskNo")); byte[] berr = new byte[1]; berr[0] = byte.Parse(obj[26].ToString()); string sTaskno = Util.ConvertStringChar.BytesToString(obj).PadLeft(27, ' '); string errorNo = Util.ConvertStringChar.BytesToString(berr); if (errorNo != "0" && errorNo.Length != 0) { PalletCode = sTaskno.Substring(10, 8).Trim(); strMsg = Stock + (PalletCode.Length > 0 ? PalletCode : "") + " " + dicStockWarning[errorNo]; if (ItemNo == item.ItemName.Split('_')[0]) { Logger.Error("输送线:" + ItemNo + (PalletCode.Length > 0 ? "托盘编号:" + PalletCode : "") + dicStockWarning[errorNo]); } } else { PalletCode = sTaskno.Substring(10, 8).Trim(); if (PalletCode.Length > 0) { CellCode = " 位:" + sTaskno.Substring(18, 8).Trim(); } strMsg = Stock + PalletCode + CellCode; } } } catch (Exception ex) { Logger.Error("LEDProcess中GetLedMessage异常:" + ex.Message); } return(strMsg); }
protected void fromBase(ELongHotelSurroundingAdapter adapter) { this.hotelFk = adapter.exHotelId; this.name = adapter.Name; this.distances = ObjectUtil.ParseFloat(adapter.Distances, -1); }
/// <summary> /// Lưu hồ sơ học sinh /// </summary> /// <param name="hocsinh">HocSinhDTO</param> /// <param name="MaLop">String: Mã lớp (nếu rỗng thì không phan lớp)</param> /// <returns>Bool</returns> public bool LuuHoSo_HocSinh(HocSinhDTO hocsinh, string MaLop = null) { DateTime ngayAD_QD = _quyDinhBUS.LayNgayApDung_QuyDinh(); int namCanDuoi = _quyDinhBUS.LayNamTuoi_CanDuoi(), namCanTren = _quyDinhBUS.LayNamTuoi_CanTren(); DateTime ngayNhapHoc; // Sửa hồ sơ học sinh if (_hocSinhDAL.KiemTraTonTai_MaHocSinh(hocsinh.MaHocSinh)) { // Nếu hồ sơ có phân lớp và có sửa STT if (MaLop != null && hocsinh.STT != _phanLopBUS.LaySTT_HienTai(hocsinh.MaHocSinh, MaLop) && _phanLopBUS.KiemTra_STT_TonTai(hocsinh.STT, MaLop)) // STT mới này đã tồn tại { ExceptionUtil.Throw("Sửa hồ sơ học sinh không hợp lệ!" + "\nSố thứ tự " + hocsinh.STT + " đã tồn tại trong lớp " + MaLop + "." + "\nBạn có thể sử dụng chức năng \"Tự động sắp xếp số thứ tự\" theo alpha."); return(false); } ngayNhapHoc = _hocSinhDAL.Lay_HoSo(hocsinh.MaHocSinh).NgayNhapHoc; // Nếu ngày nhập học sau ngày áp dụng quy định if (ngayNhapHoc >= ngayAD_QD) { // Kiểm tra độ tuổi theo quy định if (hocsinh.NgaySinh.Year < namCanDuoi || hocsinh.NgaySinh.Year > namCanTren) { ExceptionUtil.Throw("Sửa hồ sơ học sinh không hợp lệ!" + "\nNăm sinh của học sinh phải theo quy định trong khoảng từ năm " + namCanDuoi + " đến năm " + namCanTren); return(false); } } return(_hocSinhDAL.Sua_HoSo(hocsinh, MaLop)); } else // Thêm mới hồ sơ học sinh { ngayNhapHoc = DateTime.Now; // Nếu hồ sơ có phân lớp và kiểm tra STT đã tồn tại hay chưa? if (MaLop != null && _phanLopBUS.KiemTra_STT_TonTai(hocsinh.STT, MaLop)) { ExceptionUtil.Throw("Tiếp nhận học sinh không hợp lệ!" + "\nSố thứ tự " + hocsinh.STT + " đã tồn tại trong lớp." + "\nChương trình sẽ tự động tạo số thứ tự tiếp theo trong bảng điểm" + "\nBạn có thể sử dụng chức năng \"Tự động sắp xếp số thứ tự\" theo alpha."); return(false); } hocsinh.MaHocSinh = ObjectUtil.NextID(_hocSinhDAL.Lay_MaCuoiCung(), "HS", 8); // Nếu ngày nhập học sau ngày áp dụng quy định if (ngayNhapHoc >= ngayAD_QD) { // Kiểm tra độ tuổi theo quy định if (hocsinh.NgaySinh.Year < namCanDuoi || hocsinh.NgaySinh.Year > namCanTren) { ExceptionUtil.Throw("Tiếp nhận học sinh không hợp lệ!" + "\nNăm sinh của học sinh phải theo quy định trong khoảng từ năm " + namCanDuoi + " đến năm " + namCanTren); return(false); } } return(_hocSinhDAL.Them_HoSo(hocsinh, MaLop)); } }
/// <summary> /// /// </summary> /// <param name="craneNo"></param> private void CraneOut(int craneNo) { // 判断堆垛机的状态 自动 空闲 //Logger.Debug("判断堆垛机" + piCrnNo.ToString() + "能否出库"); try { //判断堆垛机 if (!Check_Crane_Status_IsOk(craneNo)) { //Logger.Info("堆垛机状态不符合出库"); return; } //切换入库优先 dCrnStatus[craneNo].io_flag = 1; } catch (Exception e) { Logger.Debug("Crane out 状态检查错误:" + e.Message.ToString()); return; } string serviceName = "CranePLC" + craneNo; string CraneNo = "0" + craneNo.ToString(); //获取任务,排序优先等级、任务时间 DataParameter[] parameter = new DataParameter[] { new DataParameter("{0}", string.Format("WCS_Task.TaskType in ('12','13','14','15') and WCS_Task.State='0' and WCS_Task.CellCode!='' and WCS_Task.CraneNo='{0}' and WCS_TASK.AreaCode='{1}'", CraneNo, AreaCode)) }; DataTable dt = bll.FillDataTable("WCS.SelectOutTask", parameter); //出库 if (dt.Rows.Count > 0) { DataRow dr = dt.Rows[0]; string TaskNo = dr["TaskNo"].ToString(); string BillID = dr["BillID"].ToString(); byte taskType = byte.Parse(dt.Rows[0]["TaskType"].ToString().Substring(1, 1)); string fromStation = dt.Rows[0]["FromStation"].ToString(); string toStation = dt.Rows[0]["ToStation"].ToString(); string stationNo = dt.Rows[0]["StationNo"].ToString(); if (taskType != 3) { string StationLoad = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService(serviceName, "StationLoad" + stationNo)).ToString(); //判断出库站台无货 if (StationLoad.Equals("True") || StationLoad.Equals("1")) { Logger.Info("站台状态不符合堆垛机出库"); return; } } int[] cellAddr = new int[9]; cellAddr[0] = 0; cellAddr[1] = 0; cellAddr[2] = 0; cellAddr[3] = byte.Parse(fromStation.Substring(3, 3)); cellAddr[4] = byte.Parse(fromStation.Substring(6, 3)); cellAddr[5] = byte.Parse(fromStation.Substring(0, 3)); cellAddr[6] = byte.Parse(toStation.Substring(3, 3)); cellAddr[7] = byte.Parse(toStation.Substring(6, 3)); cellAddr[8] = byte.Parse(toStation.Substring(0, 3)); sbyte[] taskNo = new sbyte[10]; Util.ConvertStringChar.stringToBytes(dr["TaskNo"].ToString(), 10).CopyTo(taskNo, 0); WriteToService(serviceName, "TaskAddress", cellAddr); WriteToService(serviceName, "TaskNo", taskNo); if (WriteToService(serviceName, "WriteFinished", 1)) { //更新任务状态为执行中 bll.ExecNonQuery("WCS.UpdateTaskTimeByTaskNo", new DataParameter[] { new DataParameter("@State", 3), new DataParameter("@TaskNo", TaskNo) }); bll.ExecNonQuery("WCS.UpdateBillStateByBillID", new DataParameter[] { new DataParameter("@State", 3), new DataParameter("@BillID", BillID) }); } Logger.Info("任务:" + dr["TaskNo"].ToString() + "已下发给" + craneNo + "堆垛机;起始地址:" + fromStation + ",目标地址:" + toStation); } }
protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher) { //object obj2 = ObjectUtil.GetObject(stateItem.State); //if (obj2 == null) // return; switch (stateItem.ItemName) { case "CraneTaskFinished1": case "CraneTaskFinished2": try { object obj = ObjectUtil.GetObject(stateItem.State); if (obj == null) { return; } string TaskFinish = obj.ToString(); if (TaskFinish.Equals("1")) { int taskIndex = int.Parse(stateItem.ItemName.Substring(stateItem.ItemName.Length - 1, 1)); string TaskNo = Util.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(Context.ProcessDispatcher.WriteToService(stateItem.Name, "CraneTaskNo" + taskIndex))); if (TaskNo.Length == 0) { return; } DataParameter[] param = new DataParameter[] { new DataParameter("{0}", string.Format("TaskNo='{0}'", TaskNo)), new DataParameter("{1}", "TaskNo"), new DataParameter("{2}", 1) }; DataTable dtTask = bll.FillDataTable("WCS.SelectCraneTask", param); if (dtTask.Rows.Count > 0) { string TaskType = dtTask.Rows[0]["TaskType"].ToString(); string CellCode = dtTask.Rows[0]["CellCode"].ToString(); string Msg = "上架"; string strState = "5"; if (TaskType == "12") { Msg = "下架"; strState = "13"; } bll.ExecNonQuery("WCS.UpdateTaskState", new DataParameter[] { new DataParameter("{0}", string.Format("State={0},Crane_FinishDate=getdate()", strState)), new DataParameter("{1}", string.Format("TaskNo='{0}'", TaskNo)) }); Logger.Info("载货提升机" + Msg + "任务完成,任务號:" + TaskNo + " 货位:" + CellCode); } else { Logger.Error("载货提升机任务完成,但WCS中找不到任务號:" + TaskNo); } sbyte[] ClearTaskNo = new sbyte[20]; Util.ConvertStringChar.stringToBytes("", 20).CopyTo(ClearTaskNo, 0); WriteToService(stateItem.Name, "TaskNo" + taskIndex, ClearTaskNo); } } catch (Exception ex1) { Logger.Info("CraneProcess中CraneTaskFinished出錯:" + ex1.Message); } break; case "Run": blRun = (int)stateItem.State == 1; if (blRun) { tmWorkTimer.Start(); Logger.Info("载货提升机联机"); } else { tmWorkTimer.Stop(); Logger.Info("载货提升机脱机"); } break; case "PLCCheck": #region PLC CheckTask try { if (ObjectUtil.GetObject(stateItem.State) == null) { return; } string objCheck = ObjectUtil.GetObject(stateItem.State).ToString(); if (objCheck.Equals("True") || objCheck.Equals("1")) { WriteToService(stateItem.Name, "WriteFinished", 0); } } catch (Exception ex) { Logger.Error("CraneProcess.StateChanged中PLCCheck出現錯誤,內容:" + ex.Message); } #endregion break; case "CraneAlarmCode": if (ObjectUtil.GetObject(stateItem.State) == null) { return; } if (ObjectUtil.GetObject(stateItem.State).ToString() == "0") { return; } string CraneNo = stateItem.Name.Replace("MiniLoad", ""); string strWarningCode = ObjectUtil.GetObject(stateItem.State).ToString(); DataRow[] drs = dtDeviceAlarm.Select(string.Format("AlarmCode='{0}'", strWarningCode)); string strError = ""; if (drs.Length > 0) { strError = drs[0]["AlarmDesc"].ToString(); } else { strError = "未知错误,错误号:" + strWarningCode; } if (strWarningCode == "28" || strWarningCode == "29" || strWarningCode == "35" || strWarningCode == "36") { string k = "1"; if (strWarningCode == "35" || strWarningCode == "36") { k = "2"; } string TaskNo = Util.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(Context.ProcessDispatcher.WriteToService(stateItem.Name, "CraneTaskNo" + k))); bll.ExecNonQuery("WCS.UpdateTaskError", new DataParameter[] { new DataParameter("@AlarmCode", strWarningCode), new DataParameter("@AlarmDesc", strError), new DataParameter("@TaskNo", TaskNo) }); } Logger.Error("载货提升机" + strError); break; default: break; } }
protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher) { //object obj = ObjectUtil.GetObject(stateItem.State); //if (obj == null) // return; switch (stateItem.ItemName) { case "CraneTaskFinished": try { object obj = ObjectUtil.GetObject(stateItem.State); string TaskFinish = obj.ToString(); if (TaskFinish.Equals("True") || TaskFinish.Equals("1")) { string TaskNo = Util.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(Context.ProcessDispatcher.WriteToService(stateItem.Name, "CraneTaskNo"))); if (TaskNo.Length <= 0) { return; } sbyte[] taskNo = new sbyte[10]; object[] objRow = ObjectUtil.GetObjects(Context.ProcessDispatcher.WriteToService("CranePLC1", "CraneAlarmCode")); int Column = int.Parse(objRow[2].ToString()); int Height = int.Parse(objRow[3].ToString()); int Row = int.Parse(objRow[4].ToString()); //更新任务状态 DataParameter[] param = new DataParameter[] { new DataParameter("@TaskNo", TaskNo) }; //bll.ExecNonQueryTran("WCS.Sp_TaskProcess", param); DataTable dtXml = bll.FillDataTable("WCS.Sp_TaskProcess", param); //判断任务号是什么类型,如果是盘点另外处理 param = new DataParameter[] { new DataParameter("{0}", string.Format("WCS_Task.TaskNo='{0}'", TaskNo)) }; DataTable dt = bll.FillDataTable("WCS.SelectTask", param); string Flag = "BatchInStock"; string TaskType = ""; string CellCode = ""; string strState = ""; if (dt.Rows.Count > 0) { TaskType = dt.Rows[0]["TaskType"].ToString(); CellCode = dt.Rows[0]["CellCode"].ToString(); strState = dt.Rows[0]["State"].ToString(); if (TaskType == "12") { Flag = "BatchOutStock"; } else if (TaskType == "14") { Flag = "BatchCheckStock"; } } if (dtXml.Rows.Count > 0) { string BillNo = dtXml.Rows[0][0].ToString(); if (BillNo.Trim().Length > 0) { string xml = Util.ConvertObj.ConvertDataTableToXmlOperation(dtXml, Flag); WriteToService("ERP", "ACK", xml); Logger.Info("单号" + dtXml.Rows[0][0].ToString() + "已完成,开始上报ERP系统"); } } string[] str = new string[3]; str[0] = "6"; string strValue = ""; if (TaskType == "14" && strState == "4") { while ((strValue = FormDialog.ShowDialog(str, dt)) != "") { if (strValue != "1") { //更新货位信息 bll.ExecNonQuery("WCS.UpdateErrCell", new DataParameter[] { new DataParameter("@CellCode", CellCode) }); } bll.ExecNonQuery("WCS.UpdateTaskStateByTaskNo", new DataParameter[] { new DataParameter("@State", 5), new DataParameter("@TaskNo", TaskNo) }); //线程继续。 break; } } //清除堆垛机任务号 if (Column == 1 && Height == 1) { int[] cellAddr = new int[9]; cellAddr[0] = 0; cellAddr[1] = 0; cellAddr[2] = 0; cellAddr[3] = 1; cellAddr[4] = 1; cellAddr[5] = Row * 2 - 1; cellAddr[6] = 1; cellAddr[7] = 2; cellAddr[8] = Row * 2 - 1; Util.ConvertStringChar.stringToBytes("", 10).CopyTo(taskNo, 0); Context.ProcessDispatcher.WriteToService("CranePLC1", "TaskAddress", cellAddr); Context.ProcessDispatcher.WriteToService("CranePLC1", "TaskNo", taskNo); Context.ProcessDispatcher.WriteToService("CranePLC1", "WriteFinished", 2); Logger.Info(stateItem.ItemName + "完成标志,任务号:" + TaskNo); return; } else { Util.ConvertStringChar.stringToBytes("", 10).CopyTo(taskNo, 0); WriteToService(stateItem.Name, "TaskNo", taskNo); Logger.Info(stateItem.ItemName + "完成标志,任务号:" + TaskNo); } } } catch (Exception ex1) { Logger.Info("CraneProcess中CraneTaskFinished出错:" + ex1.Message); } break; case "Run": blRun = (int)stateItem.State == 1; if (blRun) { tmWorkTimer.Start(); Logger.Info("堆垛机联机"); } else { tmWorkTimer.Stop(); Logger.Info("堆垛机脱机"); } break; default: break; } return; }
protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher) { try { object obj = ObjectUtil.GetObject(stateItem.State); if (obj == null) { return; } if (obj.ToString() == "48" || obj.ToString() == "0") { return; } string carNo = stateItem.ItemName.Substring(0, 2); Logger.Info("小车" + carNo + "接到入库确认请求"); string CraneNo = "01"; if (carNo == "02") { CraneNo = "02"; } BLL.BLLBase bll = new BLL.BLLBase(); //判断堆垛机状态是否可用 //查找有无请求状态(state='1')的任务,如没有则认为是空托盘回库 string filter = string.Format("WCS_Task.State='1' and WCS_TASK.TaskType='11' and WCS_TASK.CarNo='{0}'", carNo); DataParameter[] parameter = new DataParameter[] { new DataParameter("{0}", filter) }; DataTable dt = bll.FillDataTable("WCS.SelectTask", parameter); int rows = 0; if (dt.Rows.Count > 0) { rows = bll.ExecNonQuery("WCS.UpdateTaskState", new DataParameter[] { new DataParameter("@State", 2), new DataParameter("@CarNo", carNo) }); WriteToService("CarPLC", carNo + "_CarReply", 49); Logger.Info("小车:" + carNo + "收到入库请求,更新任务状态,影响行数" + rows); } else { //判断有无正在执行的任务,如有不做处理,如没有则产生一笔空盘回库任务 filter = string.Format("WCS_Task.State='3' and WCS_TASK.TaskType='11' and WCS_TASK.CarNo='{0}'", carNo); parameter = new DataParameter[] { new DataParameter("{0}", filter) }; DataTable dting = bll.FillDataTable("WCS.SelectTask", parameter); if (dting.Rows.Count > 0) { WriteToService("CarPLC", carNo + "_CarReply", 50); return; } //有无盘点回库任务 filter = string.Format("WCS_Task.State='4' and WCS_TASK.TaskType='14' and WCS_TASK.CarNo='{0}'", carNo); parameter = new DataParameter[] { new DataParameter("{0}", filter) }; dting = bll.FillDataTable("WCS.SelectTask", parameter); if (dting.Rows.Count > 0) { //盘点任务改变状态为5,堆垛机调度回库 string TaskNo = dting.Rows[0]["TaskNo"].ToString(); bll.ExecNonQuery("WCS.UpdateTaskStateByTaskNo", new DataParameter[] { new DataParameter("@State", 5), new DataParameter("@TaskNo", TaskNo) }); WriteToService("CarPLC", carNo + "_CarReply", 49); return; } //查找锁定货位,且产品是托盘的货位,如有判断为实托盘出库后,托盘回库 string ProductCode = "00" + CraneNo; parameter = new DataParameter[] { new DataParameter("{0}", string.Format("CMD_Cell.ProductCode='{0}' and CMD_Cell.IsActive='1' and CMD_Cell.IsLock='1' and CMD_Cell.ErrorFlag!='1'", ProductCode)), new DataParameter("{1}", carNo) }; dt = bll.FillDataTable("CMD.SelectCellByCar", parameter); if (dt.Rows.Count > 0) { //产生一笔空托盘入库任务 //锁定货位 parameter = new DataParameter[] { new DataParameter("@CarNo", carNo), new DataParameter("@CraneNo", CraneNo), new DataParameter("@CellCode", dt.Rows[0]["CellCode"].ToString()) }; bll.ExecNonQueryTran("WCS.Sp_RequestPalletInTask", parameter); WriteToService("CarPLC", carNo + "_CarReply", 49); Logger.Info("小车:" + carNo + "接到入库请求,产生一笔托盘回库任务"); } } WriteToService("CarPLC", carNo + "_CarReply", 50); } catch (Exception e) { Logger.Error("Dispatching.Process.CarProcess:" + e.Message); } }
protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher) { try { lock (this) { switch (stateItem.ItemName) { case "CarAlarm01": case "CarAlarm02": object obj = ObjectUtil.GetObject(stateItem.State); if (obj == null) { return; } string carNo = stateItem.ItemName.Substring(8, 2); string DeviceNo = stateItem.Name.Substring(5, 2) + carNo; string AlarmCode = obj.ToString(); string AlarmDesc = ""; //更新故障表 DataTable dtDevice = bll.FillDataTable("CMD.SelectDevice", new DataParameter("{0}", string.Format("DeviceNo2='{0}' and WarehouseCode='{1}'", DeviceNo, Program.WarehouseCode))); string WarehouseCode = dtDevice.Rows[0]["WarehouseCode"].ToString(); string AreaCode = dtDevice.Rows[0]["AreaCode"].ToString(); if (AlarmCode != "0") { bll.ExecNonQuery("WCS.InsertDeviceAlarmRecord", new DataParameter[] { new DataParameter("@WareHouseCode", WarehouseCode), new DataParameter("@AreaCode", AreaCode), new DataParameter("@DeviceNo", DeviceNo), new DataParameter("@AlarmCode", AlarmCode) }); DataRow[] drs = dtDeviceAlarm.Select(string.Format("AlarmCode={0}", AlarmCode)); if (drs.Length > 0) { AlarmDesc = drs[0]["AlarmDesc"].ToString(); } else { AlarmDesc = "穿梭车未知错误!"; } //更新任务报警 string TaskNo = Util.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(WriteToService(stateItem.Name, "CarTask" + carNo))); if (TaskNo.Length > 0) { DataParameter[] param = new DataParameter[] { new DataParameter("@TaskNo", TaskNo), new DataParameter("@AlarmCode", obj), new DataParameter("@AlarmDesc", AlarmDesc) }; bll.ExecNonQueryTran("WCS.UpdateTaskDeviceAlarm", param); report.Send2MJWcs(base.Context, 2, TaskNo); //Send2MJWcs(2, TaskNo); } Logger.Error("设备编号" + DeviceNo + "发生报警,代号:" + obj.ToString() + ";描述:" + AlarmDesc); } else { bll.ExecNonQuery("WCS.UpdateDeviceAlarmRecord", new DataParameter[] { new DataParameter("@AreaCode", AreaCode), new DataParameter("@WarehouseCode", WarehouseCode), new DataParameter("@DeviceNo", DeviceNo) }); } DataParameter[] paramb = new DataParameter[] { new DataParameter("@AlarmCode", obj), new DataParameter("@DeviceNo", DeviceNo) }; bll.ExecNonQueryTran("WCS.UpdateDeviceAlarm", paramb); //上报设备状态 report.SendDeviceStatus2(base.Context, stateItem.Name, carNo, AlarmDesc); //SendDeviceStatus(stateItem.Name, AlarmDesc); break; case "ElevatorAlarm": break; default: break; } } } catch (Exception ex) { Logger.Error("ElevatorAlarmProcess StateChanged方法出错,原因:" + ex.Message); } }
private static void BuildDir(string output, string toBuild) { string infosFolder = Path.Combine(output, "infos"); string pkgsFolder = Path.Combine(output, "handlers"); string indexPagePath = Path.Combine(output, "index.html"); string indexData = "<html><head><link rel='stylesheet' href='bootstrap.css'><link rel='stylesheet' href='style.css'></head><body>"; if (Directory.Exists(output)) { Directory.Delete(output, true); } Directory.CreateDirectory(output); Directory.CreateDirectory(infosFolder); Directory.CreateDirectory(pkgsFolder); string sourceCssPath = "..\\..\\MainRepo\\bootstrap.min.css"; string cssPath = Path.Combine(output, "bootstrap.css"); File.Copy(sourceCssPath, cssPath); sourceCssPath = "..\\..\\MainRepo\\style.css"; cssPath = Path.Combine(output, "style.css"); File.Copy(sourceCssPath, cssPath); DirectoryInfo dirSource = new DirectoryInfo(toBuild); DirectoryInfo[] dirs = dirSource.GetDirectories(); List <Infos> infos = new List <Infos>(); for (int i = 0; i < dirs.Length; i++) { DirectoryInfo dir = dirs[i]; if (dir.Name.Contains("239140")) // ignore dying light, unfinished { continue; } // read handler data string handlerPath = Path.Combine(dir.FullName, "info.json"); string handlerData = File.ReadAllText(handlerPath); GameHandlerMetadata metadata = JsonConvert.DeserializeObject <GameHandlerMetadata>(handlerData); if (metadata.GameID.ToLower().StartsWith("debug")) { continue; } string pkgName = PackageManager.GetPackageFileName(metadata) + ".nc"; string destName = Path.Combine(pkgsFolder, pkgName); infos.Add(new Infos() { Metadata = metadata, RootFolder = dir.FullName }); string firstPic = Path.Combine(dir.FullName, "header.jpg"); if (!File.Exists(firstPic)) { // see if steam has a header pic string headerUrl = string.Format("https://steamcdn-a.opskins.media/steam/apps/{0}/header.jpg", metadata.GameID); try { using (WebClient client = new WebClient()) { client.DownloadFile(headerUrl, firstPic); } } catch { } } using (var file = new ZipFile()) { file.AddDirectory(dir.FullName); file.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression; file.Save(destName); } } var newInfos = infos.OrderBy(c => c.Metadata.GameTitle); indexData += "<div id='grid'>"; foreach (Infos info in newInfos) { GameHandlerMetadata metadata = info.Metadata; // write info file GameHandlerBaseMetadata baseMetadata = new GameHandlerBaseMetadata(); ObjectUtil.DeepCopy(metadata, baseMetadata); string metadataSerialized = JsonConvert.SerializeObject(baseMetadata); string infoFolder = Path.Combine(infosFolder, metadata.HandlerID); Directory.CreateDirectory(infoFolder); string infoFile = Path.Combine(infoFolder, "info.json"); File.WriteAllText(infoFile, metadataSerialized); string firstPic = Path.Combine(info.RootFolder, "header.jpg"); if (File.Exists(firstPic)) { string destHeaderScreenshot = Path.Combine(infoFolder, "header.jpg"); Directory.CreateDirectory(Path.GetDirectoryName(destHeaderScreenshot)); File.Copy(firstPic, destHeaderScreenshot); } indexData += "<div>"; string pkgName = PackageManager.GetPackageFileName(metadata); indexData += string.Format("<a href='packages/{0}.nc'>", pkgName); indexData += string.Format("<img src='infos/{0}/header.jpg' /></a> ", metadata.HandlerID); indexData += string.Format("<h3>{0}</h3><h4>{1}</h4><h5><a href='handlers/{2}.nc'>[DOWNLOAD HANDLER v{3}]</a></h5>", metadata.GameTitle, metadata.Title, pkgName, metadata.V); indexData += "<br /> </div>"; } indexData += "</div>"; indexData += "</body></html>"; File.WriteAllText(indexPagePath, indexData); }
public IPageMaker CreateObject(params object[] args) { IPageData pageData = ObjectUtil.ConfirmQueryObject <IPageData>(this, args); return(new RazorModuleTemplatePageMaker(this, pageData)); }
protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher) { switch (stateItem.ItemName) { case "CraneTaskFinished": object obj = ObjectUtil.GetObject(stateItem.State); string TaskFinish = obj.ToString(); if (TaskFinish.Equals("True") || TaskFinish.Equals("1")) { string TaskNo = Util.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(Context.ProcessDispatcher.WriteToService(stateItem.Name, "CraneTaskNo"))); //清除堆垛机任务号 sbyte[] taskNo = new sbyte[10]; Util.ConvertStringChar.stringToBytes("", 10).CopyTo(taskNo, 0); WriteToService(stateItem.Name, "TaskNo", taskNo); //存储过程处理 if (TaskNo != "") { Logger.Info(stateItem.ItemName + "完成标志,任务号:" + TaskNo); //更新任务状态 DataParameter[] param = new DataParameter[] { new DataParameter("@TaskNo", TaskNo) }; bll.ExecNonQueryTran("WCS.Sp_TaskProcess", param); } } break; case "CraneAlarmCode": object obj1 = ObjectUtil.GetObject(stateItem.State); if (obj1 == null) { return; } if (obj1.ToString() != "0") { string strError = ""; DataRow[] drs = dtCraneErr.Select(string.Format("CraneErrCode={0}", obj1.ToString())); if (drs.Length > 0) { strError = drs[0]["CraneErrDesc"].ToString(); } else { strError = "堆垛机未知错误!"; } Logger.Error(strError); } break; case "Run": blRun = (int)stateItem.State == 1; if (blRun) { tmWorkTimer.Start(); Logger.Info("堆垛机联机"); } else { tmWorkTimer.Stop(); Logger.Info("堆垛机脱机"); } break; default: break; } return; }
protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher) { object obj = ObjectUtil.GetObject(stateItem.State); if (obj == null) { return; } if (stateItem.ItemName.IndexOf("nAlarmCode") >= 0) { int CraneNo = int.Parse(stateItem.Name.Replace("CranePLC", "")) * 2; ShowLedMessage(CraneNo.ToString(), stateItem); return; } string ItemNo = stateItem.ItemName.Split('_')[0]; ShowLedMessage(GetLedNo(int.Parse(ItemNo)), stateItem); try { if (stateItem.ItemName.IndexOf("TaskNo") >= 0 && (ItemNo == "102" || ItemNo == "106" || ItemNo == "110" || ItemNo == "114" || ItemNo == "118" || ItemNo == "103" || ItemNo == "107" || ItemNo == "111" || ItemNo == "115" || ItemNo == "119")) { string Tasks = ConvertStringChar.BytesToString(ObjectUtil.GetObjects(stateItem.State)); Tasks = Tasks.PadRight(26, ' '); if (Tasks.Length > 0) { string TaskNo = Tasks.Substring(0, 10); BLL.BLLBase bll = new BLL.BLLBase(); DataTable dtTask = bll.FillDataTable("WCS.SelectWCSTask", new DataParameter[] { new DataParameter("{0}", string.Format("TaskID='{0}'", TaskNo)) }); if (dtTask.Rows.Count > 0) { string PalletCode = dtTask.Rows[0]["PALLETID"].ToString(); switch (ItemNo) { case "102": case "106": case "110": case "114": case "118": //更新WCS_Task入库状态 bll.ExecNonQuery("WCS.UpdateWCSTaskStateByStatus", new DataParameter[] { new DataParameter("{0}", "2"), new DataParameter("{1}", TaskNo), new DataParameter("{2}", 1) }); Logger.Info("入库任务:" + TaskNo + "托盘编号:" + PalletCode + "到达入库端!"); break; case "103": case "107": case "111": case "115": case "119": //更新出库完成 bll.ExecNonQueryTran("WCS.SpTaskFinished", new DataParameter[] { new DataParameter("VTaskNo", TaskNo) }); Logger.Info("出库任务:" + TaskNo + "托盘编号:" + PalletCode + "完成任务!"); break; } } } } } catch (Exception ex) { Logger.Error("LEDProcess中StateChanged出现异常" + ex.Message); } }
/// <summary> /// /// </summary> /// <param name="craneNo"></param> private void CraneIn(int craneNo) { // 判断堆垛机的状态 自动 空闲 try { //判断堆垛机 if (!Check_Crane_Status_IsOk(craneNo)) { return; } //切换入库优先 dCrnStatus[craneNo].io_flag = 0; } catch (Exception e) { //Logger.Debug("Crane out 状态检查错误:" + e.Message.ToString()); return; } string serviceName = "CranePLC" + craneNo; int[] craneInfo = new int[6]; object[] obj = ObjectUtil.GetObjects(WriteToService(serviceName, "CraneInfo")); for (int j = 0; j < obj.Length; j++) { craneInfo[j] = Convert.ToInt16(obj[j]) - 48; } obj = ObjectUtil.GetObjects(Context.ProcessDispatcher.WriteToService(serviceName, "CraneTaskNo")); string plcTaskNo = Util.ConvertStringChar.BytesToString(obj); string CraneNo = "0" + craneNo.ToString(); //获取任务,排序优先等级、任务时间 DataParameter[] parameter = new DataParameter[] { new DataParameter("{0}", string.Format("((WCS_Task.TaskType='11' and WCS_Task.State='2') or (WCS_Task.TaskType='14' and WCS_Task.State='5')) and WCS_Task.CraneNo='{0}'", CraneNo)) }; DataTable dt = bll.FillDataTable("WCS.SelectTask", parameter); //出库 if (dt.Rows.Count > 0) { DataRow dr = dt.Rows[0]; string carNo = dr["CarNo"].ToString(); if (craneInfo[4] != 5) { //判断小车,出库小车必须待机+空载 if (!Check_Car_In_Status_IsOk(carNo)) { return; } } string TaskNo = dr["TaskNo"].ToString(); //如果重入,需要重新下任务需判断堆垛机任务号跟当前要下的任务号是否一致,如不一致不能下达 if (plcTaskNo != "0000000000" && TaskNo != plcTaskNo.Trim()) { return; } string BillID = dr["BillID"].ToString(); byte taskType = byte.Parse(dt.Rows[0]["TaskType"].ToString().Substring(1, 1)); string fromStation = dt.Rows[0]["FromStation"].ToString(); string toStation = dt.Rows[0]["ToStation"].ToString(); //string fromStation = dt.Rows[0]["StationNo"].ToString(); //string toStation = dt.Rows[0]["CellCode"].ToString(); //if (taskType == 2) //{ // fromStation = dt.Rows[0]["CellCode"].ToString(); // toStation = dt.Rows[0]["StationNo"].ToString(); //} //else if (taskType == 3) //{ // fromStation = dt.Rows[0]["CellCode"].ToString(); // toStation = dt.Rows[0]["ToCellCode"].ToString(); //} byte[] cellAddr = new byte[8]; if (craneInfo[4] == 5) { cellAddr[0] = 5; } else { cellAddr[0] = taskType; } cellAddr[1] = 0; //0-不允许伸叉,1-允许伸叉 cellAddr[2] = byte.Parse(fromStation.Substring(0, 3)); cellAddr[3] = byte.Parse(fromStation.Substring(3, 3)); cellAddr[4] = byte.Parse(fromStation.Substring(6, 3)); cellAddr[5] = byte.Parse(toStation.Substring(0, 3)); cellAddr[6] = byte.Parse(toStation.Substring(3, 3)); cellAddr[7] = byte.Parse(toStation.Substring(6, 3)); for (int i = 0; i < cellAddr.Length; i++) { cellAddr[i] += 48; } sbyte[] palletBarcode = new sbyte[8]; Util.ConvertStringChar.stringToBytes(dr["PalletCode"].ToString(), 8).CopyTo(palletBarcode, 0); sbyte[] taskNo = new sbyte[10]; Util.ConvertStringChar.stringToBytes(dr["TaskNo"].ToString(), 10).CopyTo(taskNo, 0); WriteToService(serviceName, "TaskAddress", cellAddr); WriteToService(serviceName, "PalletCode", palletBarcode); WriteToService(serviceName, "TaskNo", taskNo); WriteToService(serviceName, "ProductType", 49); if (WriteToService(serviceName, "WriteFinished", 49)) { string State = "3"; if (taskType == 4) { State = "6"; } //更新任务状态为执行中 bll.ExecNonQuery("WCS.UpdateTaskTimeByTaskNo", new DataParameter[] { new DataParameter("@State", State), new DataParameter("@TaskNo", TaskNo) }); bll.ExecNonQuery("WCS.UpdateBillStateByBillID", new DataParameter[] { new DataParameter("@State", 3), new DataParameter("@BillID", BillID) }); } Logger.Info("任务:" + dr["TaskNo"].ToString() + "已下发给" + craneNo + "堆垛机;起始地址:" + fromStation + ",目标地址:" + toStation); } }
//任务输送到某一位置后,通知更新状态。【入库口任务到位,密集存储道穿过到位】 public override void Execute() { int[] data = null; try { string positionName = string.Empty; int taskID = 0; object state = AutomationContext.Read(memoryServiceName, memoryItemName); object obj = ObjectUtil.GetObjects(state); if (obj is Array) { Array arrayObj = (Array)obj; if (arrayObj.Length == 2) { positionName = arrayObj.GetValue(0).ToString(); taskID = Convert.ToInt32(arrayObj.GetValue(1)); } } if (positionName == string.Empty || positionName == "0" || taskID == 0) { return; } data = new int[] { Convert.ToInt32(positionName), taskID }; using (TransactionScopeManager TM = new TransactionScopeManager(true, IsolationLevel.Serializable)) { positionDal.TransactionScopeManager = TM; taskDal.TransactionScopeManager = TM; int positionID = positionDal.GetPositionIDByPositionName(positionName); int currentPositionID = taskDal.GetCurrentPositionID(taskID); int nextPositionID = taskDal.GetNextPositionID(taskID); int endPositionID = taskDal.GetEndPositionID(taskID); if (positionID != 0 && currentPositionID != endPositionID && positionID == nextPositionID) { positionDal.UpdateHasGoodsToTrue(positionID); taskDal.UpdateTaskPosition(taskID, positionID); taskDal.UpdateTaskPositionStateToArrived(taskID); if (positionID == endPositionID) { string orderType = taskDal.GetOrderType(taskID); if (orderType == "03")//出库单 { if (!AutomationContext.Write(memoryServiceName1, memoryItemName1, new int[] { taskID, positionID })) { AutomationContext.Write(memoryServiceName, memoryItemName, data); Logger.Error(string.Format("{0} 完成[{1}]任务失败!", Name, taskID)); return; } } else if (orderType == "04")//盘点单 { if (!AutomationContext.Write(memoryServiceName1, memoryItemName2, new int[] { taskID, positionID })) { AutomationContext.Write(memoryServiceName, memoryItemName, data); Logger.Error(string.Format("{0} 完成[{1}]任务失败!", Name, taskID)); return; } } else { if (!AutomationContext.Write(memoryServiceName, memoryItemName3, taskID)) { AutomationContext.Write(memoryServiceName, memoryItemName, data); Logger.Error(string.Format("{0} 完成[{1}]任务失败!", Name, taskID)); return; } } } TM.Commit(); } else { Logger.Error(string.Format("{0} 处理[{1}]任务到达失败,到达位置{2}与任务不符!", Name, taskID, positionName)); } } } catch (Exception ex) { if (data != null) { AutomationContext.Write(memoryServiceName, memoryItemName, data); } Logger.Error("TaskArriveDataProcess 出错,原因:" + ex.Message + "/n" + ex.StackTrace); } }
private void OnDestroy() { ObjectUtil.UnregisterObserver(this); _callerEvent?.Dispose(); }
//播放战斗效果 public void PlayFightEffect(ushort wSkillID, int damage, byte byAttackEvent, SceneEntity killerHero) { if (byAttackEvent == (byte)KAttackEvent.aeMiss) { if (Owner.property.isMainHero) { Owner.TipsCmp.CreateTip(new Vector3(0, Owner.heroSetting.TipPos0, 0), "2", "FightFont", "effect_ui_shuzitanchu_putong.res"); } else { Owner.TipsCmp.CreateTip(new Vector3(0, Owner.heroSetting.TipPos0, 0), "1", "FightFont", "effect_ui_shuzitanchu_putong.res"); } return; } else if (byAttackEvent == (byte)KAttackEvent.aeCrit) { Owner.TipsCmp.CreateTip(new Vector3(0, Owner.heroSetting.TipPos0, 0), "+" + damage, "CritFont", "effect_ui_shuzitanchu_baoji2.res"); } else if (Owner.property.isMainHero) { Owner.TipsCmp.CreateTip(new Vector3(0, Owner.heroSetting.TipPos0, 0), "+" + damage, "HurtFont", "effect_ui_shuzitanchu_putong.res", NumTip.OFFSET_TYPE.LEFT); } else { Owner.TipsCmp.CreateTip(new Vector3(0, Owner.heroSetting.TipPos0, 0), "+" + damage, "AttackFont", "effect_ui_shuzitanchu_putong.res"); } KSkillDisplay skillDisplay = KConfigFileManager.GetInstance().GetSkillDisplay(wSkillID, Owner.TabID); if (skillDisplay.OnHitAction.CompareTo("JUMP") == 0) { ActionBeAttactedAndThrowUp action = new ActionBeAttactedAndThrowUp(Owner); action.hitAnim = skillDisplay.OnHitAnim; action.time = skillDisplay.OnHitEffecTime; action.height = skillDisplay.OnHitHeight; Owner.ActiveAction = action; //action } else if (Owner.property.heroObjType == KHeroObjectType.hotMonster && Owner.heroSetting.MonsterGrade == KMonsterGrade.mgQuestBoss) { if (Owner.property.activeAction.TryFinish()) { ActiionBeAttack beAttack = new ActiionBeAttack(Owner); Owner.DispatchEvent(ControllerCommand.SetActiveAction, beAttack); } } else { Owner.DispatchEvent(ControllerCommand.BE_HIT); } Vector3 forward = Vector3.forward; if (null != killerHero) { forward = killerHero.transform.position - Owner.transform.position; forward = new Vector3(forward.x, 0, forward.z); forward.Normalize(); } if (skillDisplay.HitShakeTime > 0 && skillDisplay.HitShakeDelta > 0) { Owner.DispatchEvent(ControllerCommand.HIT_SLOW, skillDisplay.HitShakeTime, skillDisplay.HitShakeDelta); } if (null != skillDisplay && skillDisplay.HitEffect.Length > 0 /*&& skillDisplay.BulletEffect.Length == 0*/) { AssetInfo inf = AssetLoader.GetInstance().Load(URLUtil.GetResourceLibPath() + skillDisplay.HitEffect); if (inf.isDone(false)) { if (skillDisplay.SingleHitFx) { GameObject _hit = null; if (hitFxs.TryGetValue(skillDisplay.HitEffect, out _hit)) { GameObject.Destroy(_hit); } } GameObject hitObject = inf.CloneGameObject(); ObjectUtil.SetTagWithAllChildren(hitObject, CameraLayerManager.GetInstance().GetMissionSignName()); hitObject.transform.parent = Owner.transform.parent; hitObject.transform.position = Owner.transform.position; hitObject.transform.forward = forward; if (skillDisplay.SingleHitFx) { hitFxs[skillDisplay.HitEffect] = hitObject; } KingSoftCommonFunction.SetLayer(hitObject, 11); DestoryObject dos = hitObject.AddComponent <DestoryObject>(); dos.delta = 5; if (skillDisplay.HitBindPoint.Length > 0) { if (skillDisplay.HitBindPoint.CompareTo("Ground") != 0) { Transform t = Owner.GetChildTransform(skillDisplay.HitBindPoint); if (null != t) { hitObject.transform.parent = t; hitObject.transform.localPosition = Vector3.zero; hitObject.transform.localScale = Vector3.one; } } } hitObject.SetActive(true); } } }
public override void Execute() { try { object state = AutomationContext.Read(memoryServiceName, memoryItemName); if (state == null || state.ToString() != "InventoryWholePalletScan") { return; } int taskID = 0, positionID = 0; state = AutomationContext.Read(memoryServiceName1, memoryItemName1); object obj = ObjectUtil.GetObjects(state); if (obj is Array) { Array arrayObj = (Array)obj; if (arrayObj.Length == 2) { taskID = Convert.ToInt32(arrayObj.GetValue(0)); positionID = Convert.ToInt32(arrayObj.GetValue(1)); } } if (taskID == 0 || positionID == 0) { return; } //弹出输入窗,获取数量; state = AutomationContext.Read(memoryServiceName2, memoryItemName2); if (state != null) { UserLookAndFeel.Default.SetSkinStyle(state.ToString()); } InventoryDialog inventoryDialog = new InventoryDialog(taskID); if (inventoryDialog.ShowDialog() == DialogResult.OK) { RestClient rest = new RestClient(); taskID = rest.FinishInventoryTask(taskID, inventoryDialog.RealQuantity); if (taskID > 0) { string positionName = taskDal.GetTaskNextPosition(taskID); if (positionName != string.Empty) { int[] data = new int[] { taskID, Convert.ToInt32(positionName), 1 }; AutomationContext.Write(plcServiceName, O_Whole_Pallet_StockIn_Task_Info, data); Thread.Sleep(sleepTime); obj = AutomationContext.Read(plcServiceName, I_Whole_Pallet_StockIn_Task_Info); obj = ObjectUtil.GetObjects(obj); if (obj is Array) { Array arrayObj = (Array)obj; if (arrayObj.Length == 3 && data[0] == Convert.ToInt32(arrayObj.GetValue(0)) && data[1] == Convert.ToInt32(arrayObj.GetValue(1)) && data[2] == Convert.ToInt32(arrayObj.GetValue(2))) { AutomationContext.Write(plcServiceName, O_Whole_Pallet_StockIn_Task_Info_Complete, 1); AutomationContext.Write(memoryServiceName1, memoryItemName1, 0); positionDal.UpdateHasGoodsToFalse(positionID); } } } } else if (taskID == -1) { positionDal.UpdateHasGoodsToFalse(positionID); AutomationContext.Write(memoryServiceName1, memoryItemName1, 0); } } inventoryDialog = null; GC.Collect(); } catch (Exception ex) { Logger.Error("InventoryWholePalletScanProcess 出错,原因:" + ex.Message + "/n" + ex.StackTrace); } }