From 8ab19ae17dc98d3c79f87ca54aa4cdc75d174b12 Mon Sep 17 00:00:00 2001 From: cjs <2216046164@qq.com> Date: 星期三, 18 六月 2025 17:10:30 +0800 Subject: [PATCH] 111 --- ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/WMSHelper.cs | 83 ++++----------- ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/EnentListen.cs | 1 ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs | 121 +++++++++++------------ ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/ProcessHelper.cs | 4 ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/MESHelper.cs | 49 --------- 5 files changed, 85 insertions(+), 173 deletions(-) diff --git a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/EnentListen.cs b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/EnentListen.cs index 6cc5262..07db68e 100644 --- a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/EnentListen.cs +++ b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/EnentListen.cs @@ -344,7 +344,6 @@ { if (CheckStartFree(plc.location)) { - //PLCControl.CheckPackingLineFullTwo(plc); PLCControl.CheckPackingLineFullThree(plc); } } diff --git a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/MESHelper.cs b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/MESHelper.cs index 0e5f1a7..8f97c50 100644 --- a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/MESHelper.cs +++ b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/MESHelper.cs @@ -214,55 +214,6 @@ return result; } - - /// <summary> - /// 鎵撳寘涓嬬嚎鍙e埌鎴愬搧璐ф灦鍙b�鈥旂洿鎺ユ煡璇笅绾垮彛閫氶亾鍐呮暟鎹紙鍥涢挻杞﹂棿锛�- /// </summary> - /// <param name="timeStamp">鏃堕棿鎴�/param> - /// <returns></returns> - internal static TimeCuoInfoComTwo TimeCuoTwo(int[] result) - { - //鏃堕棿鎴�鍦板潃璇婚厤缃枃浠�- string FCWeightTotal = GetTrayCode(result.Skip(96).Take(2).ToArray());//鎬诲绉伴噸閲�- string timeCuo = GetTrayCode(result.Skip(98).Take(2).ToArray());//鏃堕棿鎴�- var timeCuoInfo = MongoDBSingleton.Instance.FindOne<TimeCuoInfoComTwo>(Query.EQ("TimeCuo", timeCuo), "TimeCuoInfoComTwo"); - if(timeCuoInfo == null) - { - MongoDBSingleton.Instance.Insert<TimeCuoInfoComTwo>(new TimeCuoInfoComTwo() { TimeCuo = timeCuo,FCWeightTotal = FCWeightTotal }); - } - - var infoPack = MongoDBSingleton.Instance.FindOne<TimeCuoInfoComTwo>(Query.And(Query.EQ("TimeCuo", timeCuo)), "TimeCuoInfoComTwo"); - if(infoPack != null) - { - for (int i = 1; i <= 4; i++) - { - string empCode = RemoveNull(GetTrayCode(result.Skip((i - 1) * 24).Take(5).ToArray()));//鍛樺伐缂栫爜 - string trayCode = RemoveNull(GetTrayCode(result.Skip((i - 1) * 24 + 5).Take(3).ToArray()));//鎵樼洏鐮�- string machineCode = RemoveNull(GetTrayCode(result.Skip((i - 1) * 24 + 8).Take(1).ToArray()));//鍖呰鏈哄彿 - int needWeight = Convert.ToInt32(Completion(result[((i - 1) * 24 + 9)]) + Completion(result[((i - 1) * 24 + 10)]), 2);//浜у搧闇�眰閲嶉噺 - int oneWeight = Convert.ToInt32(Completion(result[((i - 1) * 24 + 11)]) + Completion(result[((i - 1) * 24 + 12)]), 2);//鍗曟墭姣涢噸 - int readWeight = Convert.ToInt32(Completion(result[((i - 1) * 24 + 13)]) + Completion(result[((i - 1) * 24 + 14)]), 2);//鍗曟墭鍑�噸 - int fcWeight = Convert.ToInt32(Completion(result[((i - 1) * 24 + 15)]) + Completion(result[((i - 1) * 24 + 16)]), 2);//鍗曟墭澶嶇О閲嶉噺 - int trayType = Convert.ToInt32(Completion(result[((i - 1) * 24 + 17)]), 2);//鎵樼洏绫诲瀷 - int addState = Convert.ToInt32(Completion(result[((i - 1) * 24 + 18)]), 2);//鍙犲寘灞傛暟 - int bagNumber = Convert.ToInt32(Completion(result[((i - 1) * 24 + 19)]), 2);//琚嬪彿 - int productTime = Convert.ToInt32(Completion(result[(i - 1) * 24 + 20]) + Completion(result[(i - 1) * 24 + 21]), 2);//鐢熶骇鏃ユ湡 - string timeCuoTwo = Convert.ToInt32(Completion(result[(i - 1) * 24 + 22]) + Completion(result[(i - 1) * 24 + 23]), 2).ToString(); //鏃堕棿鎴�- - UpdateBuilder updateBuilder = Update.Set("employeeId" + i.ToString(), empCode).Set("trayCode" + i.ToString(), trayCode).Set("packingMachineNumber" + i.ToString(), machineCode).Set("needWeight" + i.ToString(), needWeight) - .Set("oneWeight" + i.ToString(), oneWeight).Set("realWeight" + i.ToString(), readWeight).Set("FCWeight" + i.ToString(), fcWeight).Set("trayType" + i.ToString(), trayType) - .Set("isFold" + i.ToString(), addState).Set("bagNumber" + i.ToString(), bagNumber).Set("productData" + i.ToString(), productTime).Set("timeCuo" + i.ToString(), timeCuoTwo); - MongoDBSingleton.Instance.Update<TimeCuoInfoComTwo>(Query.EQ("TimeCuo", timeCuo), updateBuilder, UpdateFlags.None); - } - //浜у搧鎵规鍙� 浜у搧鍨嬪彿 鐗╂枡鍚嶇О 璁¢噺鍗曚綅鍧囧彲鍦╡rp琛ㄤ腑鏍规嵁鐗╂枡缂栫爜鑾峰彇 - - string materialCode = RemoveNull(GetTrayCode(result.Skip(130).Take(15).ToArray()).Trim().ToString()); - UpdateBuilder update = Update.Set("materialCode", materialCode); - MongoDBSingleton.Instance.Update<TimeCuoInfoComTwo>(Query.EQ("TimeCuo", timeCuo), update, UpdateFlags.None); - } - - return MongoDBSingleton.Instance.FindOne<TimeCuoInfoComTwo>(Query.EQ("TimeCuo", timeCuo), "TimeCuoInfoComTwo"); - } public static string TransUTF8(string text) { diff --git a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs index afa5106..d541128 100644 --- a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs +++ b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/PLCControl.cs @@ -2026,62 +2026,6 @@ } } } - - /// <summary> - /// 3妤兼墦鍖呮満涓嬬嚎锛屽垽鏂墦鍖呮満鏄惁鐢辩敓鎴愭墦鍖呬笅绾跨殑浠诲姟锛堝洓閽磋溅闂达級 - /// </summary> - /// <param name="plc"></param> - internal static void CheckPackingLineFullTwo(Settings.PlcInfo plc) - { - //璇籶lc淇″彿锛岀湅鏈夋病鏈変笅绾胯姹傦紝鍒ゆ柇鏄惁宸茬粡鏈変换鍔�- //娌℃湁浠诲姟锛岀户缁璸lc锛屽寘瑁呬笅绾跨殑鐗╂枡淇″彿 - //妫�煡鎵撳寘鏈洪�閬�鏄惁鏈夊嚭鏂欎换鍔′俊鍙凤紝濡傛灉鏈夌敓鎴愬彇鏂欎换鍔°� - if (CheckStartFree(plc.location)) - { - try - { - var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel - { - dataNum = 1, - addr = plc.readAddr + 1, - host = plc.ip, - port = plc.port - }); - if (result != null && result.errCode == 0) - { - if (result.result[0] == 1) - { - //鑾峰彇MODBUS閫氶亾閲岄潰瀛樻斁鐨勬椂闂存埑 - var resultTime = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel - { - addr = plc.readAddr + 10, - host = plc.ip, - port = plc.port, - dataNum = 170 - }); - if (resultTime.errCode == 0) - { - string wmstaskno = ""; - TimeCuoInfoComTwo timecuo = TimeCuoTwo(resultTime.result); - if (timecuo != null) - { - string timeStamp = timecuo.TimeCuo; - //string employeeId = timecuo.employeeId1; - //// ERP鍙樻洿-璋冪敤ERP鎺ュ彛浼犺緭鐩稿叧鏁版嵁 - //WMSHelper.WMSIn(plc.location, "time", ref wmstaskno, ref timeStamp, timeStamp, employeeId,true); - } - else CMMLog.Info($"鏃堕棿鎴虫帴鍙h繑鍥炲�涓虹┖锛�); - } - else CMMLog.Info($"MODBUS鏃堕棿鎴虫暟鎹繑鍥炲�閿欒锛氳繑鍥炲�瑙f瀽锛歿JsonConvert.SerializeObject(result)}"); - } - } - } - catch (Exception ex) - { - CMMLog.Error(ex.Message); - } - } - } #endregion #region 鎵撳寘鏈哄嚭鍙ODBUS浜や簰锛堝紑濮嬪彇鏂欙紝鍙栨枡瀹屾垚锛�@@ -2090,9 +2034,9 @@ /// 璁惧鍏佽鍑烘枡 1 PLC鍐欙紝AMS璇�1-璁惧璇锋眰鍑烘枡锛�-鍏佽杩涘叆锛�-纭璐х墿鍙栬蛋锛岄�鍑虹墿鏂欙紱 ///鎵撳寘绾夸笅绾库�鈥斿皬杞﹀紑濮嬪彇璐�- internal static void PackingLineUnload1012(string ip, string taskNo) + internal static void PackingLineUnload1012(string ip, string taskNo, int port) { - var plc = Settings.GetPlcInfo().Where(a => a.deviceType == "4").FirstOrDefault(); + var plc = Settings.GetPlcInfo().Where(a => a.ip == ip && a.port == port).FirstOrDefault(); if (plc != null) { try @@ -2141,11 +2085,11 @@ /// </summary> /// <param name="ip"></param> /// <param name="taskNo"></param> - internal static void PackingLineComplete4(string ip, string taskNo) + internal static void PackingLineComplete4(string ip, string taskNo, int port) { //鍙栬揣瀹屾垚鍚庨渶瑕佽鍙栬澶囨椂闂存埑閲岄潰鐨勬暟鎹紝骞跺皢鍏舵殏瀛樿嚦涓棿琛ㄧ瓑鍒板叆搴撲换鍔″畬鎴愪紶杈撶粰WMS - var plc = Settings.GetPlcInfo().Where(a => a.deviceType == "4").FirstOrDefault(); + var plc = Settings.GetPlcInfo().Where(a => a.ip == ip && a.port == port).FirstOrDefault(); if (plc != null) { try @@ -4200,6 +4144,7 @@ internal static void CheckPackingLineFullThree(Settings.PlcInfo plc) { + string trayCode = ""; var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel { dataNum = 25, @@ -4212,7 +4157,7 @@ if (result.result[0] == 1) { //鑾峰彇鐗╂枡淇℃伅 鏍规嵁鎵樼洏鐮佸尯鍒�- string trayCode = RemoveNull(GetTrayCode(result.result.Skip(6).Take(3).ToArray()));//鎵樼洏鐮�+ trayCode = RemoveNull(GetTrayCode(result.result.Skip(6).Take(3).ToArray()));//鎵樼洏鐮� var infoPack = MongoDBSingleton.Instance.FindOne<TimeCuoInfoComTwo>(Query.And(Query.EQ("trayCode", trayCode)), "TimeCuoInfoComTwo"); @@ -4244,11 +4189,63 @@ }); string materialCode = RemoveNull(GetTrayCode(result.result.Skip(0).Take(15).ToArray()).Trim().ToString()); - UpdateBuilder update = Update.Set("materialCode", materialCode); + UpdateBuilder update = Update.Set("materialCode", materialCode).Set("createTime",DateTime.Now); MongoDBSingleton.Instance.Update<TimeCuoInfoComTwo>(Query.EQ("trayCode", trayCode), update, UpdateFlags.None); + + var writeRes = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel + { + host = plc.ip, + addr = plc.writeAddr, + data = 1, + port = plc.port + }); + CMMLog.Debug($"鍐欏叆璁惧{plc.location}閫氶亾{plc.writeAddr}閲岄潰鏁版嵁涓�."); } } } + + var xxPlc = Settings.GetPlcInfo().Where(a => a.deviceType == "27" && a.enable == 1).FirstOrDefault(); + if(xxPlc != null) + { + result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel + { + dataNum = 1, + addr = plc.readAddr + 1, + host = plc.ip, + port = plc.port + }); + if(result != null && result.errCode == 0) + { + if (result.result[0] == 1) + { + var resultTime = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel + { + dataNum = 2, + addr = plc.readAddr + 8, + host = plc.ip, + port = plc.port + }); + if (resultTime.errCode == 0) + { + string timeCuoData = (resultTime.result[0] * 65536 + resultTime.result[1]).ToString(); + TimeCuoInfoComTwo time = null; + var timeTwo = MongoDBSingleton.Instance.Find<TimeCuoInfoComTwo>(Query.EQ("trayCode", trayCode), "TimeCuoInfoComTwo"); + if(timeTwo.Count > 0) + { + time = timeTwo.OrderBy(a => a.createTime).FirstOrDefault(); + MongoDBSingleton.Instance.Update<TimeCuoInfoComTwo>(Query.EQ("_id", time._id),Update.Set("TimeCuo", timeCuoData)); + } + string wmstaskno = ""; + WMSHelper.WMSIn(plc.location, "time", ref wmstaskno, ref timeCuoData, timeCuoData, time.employeeId, true); + } + } + } + } + else + { + CMMLog.Info("涓嬬嚎鍙h澶囨湭閰嶇疆"); + } + } #endregion } diff --git a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/ProcessHelper.cs b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/ProcessHelper.cs index 06d31b3..7a1afca 100644 --- a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/ProcessHelper.cs +++ b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/ProcessHelper.cs @@ -301,7 +301,7 @@ //if (mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋�) PLCControl.SecondWeightInCache1012(plc.deviceType, mst.CN_S_TASK_NO);//浜屾湡锛氱洿鎺ユ敼鍙傛暟 if (mst.CN_S_BUSS_TYPE == "3妤肩紦瀛樻灦鍏ュ彔鎵�) TSHelper.GoToAGV(mst.CN_S_TASK_NO, 10, 1); if (mst.CN_S_BUSS_TYPE == "3妤煎彔鐩樹笅绾�) PLCControl.StackingReqUnload(plc.deviceType, mst.CN_S_TASK_NO); - if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾�) PLCControl.PackingLineUnload1012(plc.ip, mst.CN_S_TASK_NO); + if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾�) PLCControl.PackingLineUnload1012(plc.ip, mst.CN_S_TASK_NO,plc.port); if (mst.CN_S_BUSS_TYPE == "鍥涢挻杈呮潗鍏ュ簱") PLCControl.productInWare(mst.CN_S_START_BIT, mst.CN_S_TASK_NO, true); } if (code == 4) @@ -310,7 +310,7 @@ if (mst.CN_S_BUSS_TYPE.Contains("3妤煎寘瑁呭彇鏂�)) PLCControl.PickUpFullDoorComplete(plc.ip, mst.CN_S_TASK_NO); if (mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋� || mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋禢G") PLCControl.SecondWeightInCache4(plc.deviceType, mst.CN_S_TASK_NO); if (mst.CN_S_BUSS_TYPE == "3妤煎彔鐩樹笅绾�) PLCControl.StackingComplete(plc.deviceType, mst.CN_S_TASK_NO); - if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾�) PLCControl.PackingLineComplete4(plc.ip, mst.CN_S_SOURCE_NO); + if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾�) PLCControl.PackingLineComplete4(plc.ip, mst.CN_S_SOURCE_NO,plc.port); if (mst.CN_S_BUSS_TYPE != "3妤煎寘瑁呭彇鏂�) WMSHelper.ExecuteState(mst.CN_S_SOURCE_NO, 4); if (mst.CN_S_BUSS_TYPE == "鍥涢挻杈呮潗鍏ュ簱") PLCControl.productInWare(mst.CN_S_START_BIT, mst.CN_S_TASK_NO, false); } diff --git a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/WMSHelper.cs b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/WMSHelper.cs index 9754fb4..6a3d933 100644 --- a/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/WMSHelper.cs +++ b/ams/Hanhe.iWCS.TaizhouGEMTwoProtocol/WMSHelper.cs @@ -423,30 +423,30 @@ } else { - //var time = MongoDBSingleton.Instance.FindOne<TimeCuoInfoComTwo>(Query.EQ("timeStamp", timeStamp), "TimeCuoInfoCom"); - //CMMLog.Info($"WMSIn-{startBit}:{ItemCode}锛氭煡璇㈡潯浠讹細timeStamp={timeStamp},璇诲嚭 TimeCuoInfoComTwo 琛ㄦ暟鎹负锛歿JsonConvert.SerializeObject(time)}"); - //var erpItemTableInfo = MongoDBSingleton.Instance.FindOne<ERPItemTable>(Query.EQ("item_code", time.materialCode), "ERPItemTable"); - //CMMLog.Info($"WMSIn-{startBit}:鏌ヨ鏉′欢锛歩tem_code={time.materialCode},璇诲嚭 ERPItemTable 琛ㄦ暟鎹负锛歿JsonConvert.SerializeObject(erpItemTableInfo)}"); - //if (ItemCode == "time" && time != null && erpItemTableInfo != null) - //{ - // CMMLog.Info($"WMSIn-{startBit}:time鑾峰彇鏃堕棿鎴虫暟鎹负锛歿time.TimeCuo}锛�); - // model.data.Add(new ItemData() - // { - // itemCode = time.productModel, - // lotNo = time.lotNo, - // machineNo = time.packingMachineNumber1.ToString(), - // packageCode = time.bagNumber1.ToString(), - // foldingbag = time.isFold1.ToString(), - // timeStamp = int.Parse(time.TimeCuo), - // realWeight = time.realWeight1, - // - // Jm_Item_Code = time.materialCode, - // Jm_Item_Name = time.materialName, - // Jm_Item_Model = time.productModel, - // Jm_Item_Unit = time.measurementUnit, - // Jm_Item_Staff = employee_id - // }); - //} + var time = MongoDBSingleton.Instance.FindOne<TimeCuoInfoComTwo>(Query.EQ("timeStamp", timeStamp), "TimeCuoInfoCom"); + CMMLog.Info($"WMSIn-{startBit}:{ItemCode}锛氭煡璇㈡潯浠讹細timeStamp={timeStamp},璇诲嚭 TimeCuoInfoComTwo 琛ㄦ暟鎹负锛歿JsonConvert.SerializeObject(time)}"); + var erpItemTableInfo = MongoDBSingleton.Instance.FindOne<ERPItemTable>(Query.EQ("item_code", time.materialCode), "ERPItemTable"); + CMMLog.Info($"WMSIn-{startBit}:鏌ヨ鏉′欢锛歩tem_code={time.materialCode},璇诲嚭 ERPItemTable 琛ㄦ暟鎹负锛歿JsonConvert.SerializeObject(erpItemTableInfo)}"); + if (ItemCode == "time" && time != null && erpItemTableInfo != null) + { + CMMLog.Info($"WMSIn-{startBit}:time鑾峰彇鏃堕棿鎴虫暟鎹负锛歿time.TimeCuo}锛�); + model.data.Add(new ItemData() + { + itemCode = erpItemTableInfo.item_code, + lotNo = erpItemTableInfo.item_spec, + machineNo = time.packingMachineNumber.ToString(), + packageCode = time.bagNumber.ToString(), + foldingbag = time.isFold.ToString(), + timeStamp = int.Parse(time.TimeCuo), + realWeight = time.realWeight, + + Jm_Item_Code = erpItemTableInfo.item_code, + Jm_Item_Name = erpItemTableInfo.item_name, + Jm_Item_Model = erpItemTableInfo.item_spec, + Jm_Item_Unit = erpItemTableInfo.item_uom, + Jm_Item_Staff = employee_id + }); + } } } else @@ -632,41 +632,6 @@ //totalCount = time.totalCount, }); } - } - else - { - //var time = MongoDBSingleton.Instance.FindOne<TimeCuoInfoComTwo>(Query.EQ("timeStamp", timeStamp), "TimeCuoInfoCom"); - //CMMLog.Info($"WMSInTwo-{startBit}:{ItemCode}锛氭煡璇㈡潯浠讹細timeStamp={timeStamp},璇诲嚭 TimeCuoInfoComTwo 琛ㄦ暟鎹负锛歿JsonConvert.SerializeObject(time)}"); - //if (ItemCode == "time" && time != null) - //{ - // CMMLog.Info($"WMSInTwo-{startBit}:time鑾峰彇鏃堕棿鎴虫暟鎹负锛歿time.TimeCuo}锛�); - // model.data.Add(new ItemData() - // { - // //1妤兼媶鐩樻満璋僕MS鑾峰彇鍏ュ簱缁堢偣锛屼紶杈撴椂闂存埑鏁版嵁锛堟殏瀹氾級 - // //isFold = time.isFold, - // //packingMachineNumber = time.packingMachineNumber, - // itemCode = time.productModel, - // lotNo = time.lotNo, - // machineNo = time.packingMachineNumber1.ToString(), - // packageCode = time.bagNumber1.ToString(), - // //palletLayers = time.bagNumber1.ToString(), - // foldingbag = time.isFold1.ToString(), - // //totalWeight = time.totalWeight, - // timeStamp = int.Parse(time.TimeCuo), - // //productType = time.productModel, - // //bagNumber = time.bagNumber, - // //needWeight = time.needWeight, - // realWeight = time.realWeight1, - // //batchNumber = time.batchNumber, - // //totalCount = time.totalCount, - // - // Jm_Item_Code = time.materialCode, - // Jm_Item_Name = time.materialName, - // Jm_Item_Model = time.productModel, - // Jm_Item_Unit = time.measurementUnit, - // Jm_Item_Staff = employee_id - // }); - //} } } -- Gitblit v1.9.1