//*調用服務器API(獲取能夠處理的文件) //一、使用JSON通訊協議(調用[待化驗任務API]) String retData = null; { JToken json = JToken.Parse(Global.jsonTemplate); json["actionName"] = "待化驗任務API"; json["action"] = "awaitLaboratory"; json["paramInfo"]["kindId"] = Global.ExeCodeColData;//種類編碼 //json["paramInfo"]["lab_orgdm"] = Global.ExeCodeColData;//設備機構代碼 String jsonStr = JsonConvert.SerializeObject(json); jsonStr = HttpUtility.UrlEncode(jsonStr);//編碼後發送字符串,不然中文會出現亂碼 retData = HttpUtil.HttpPost(Global.ServerCallPath, "json=" + jsonStr);//調用服務器接口 } //判斷是否返回了數據 if (!String.IsNullOrEmpty(retData) && !String.IsNullOrEmpty(retData.Trim())) { //格式化數據 retData = retData.Trim(); //轉換JSON對象 JToken retDataJson = JToken.Parse(retData); ////---模擬數據開始--- //JArray jsonArrTemp = JArray.Parse("[{tmuid:'aaa123',fileName:'aaa123_ypmc_20171117153900.png'},{tmuid:'bbb123',fileName:'bbb123_ypmc_20171117153900.png'}]"); //retDataJson["data"] = jsonArrTemp; //retDataJson["bReturn"] = "true"; //retDataJson["sReturn"] = "獲取數據成功![待化驗任務API(awaitLaboratory)]"; ////---模擬數據結束--- //判斷(調用[待化驗任務API])返回的結果是否成功 if (retDataJson["bReturn"].ToString().ToLower().Trim() == "true") { //二、調用化驗任務API得到任務編號,去匹配文件名,若是沒匹配到,繼續輪詢化驗結果目錄。 //取出有效數據 JToken retDataJson_Data = retDataJson["data"]; foreach (JToken item in retDataJson_Data)//遍歷數組 { //獲取服務器上的數據 String tmuid = item["tmuid"].ToString(); String serFileName = item["fileName"].ToString().Trim();//獲取服務器提供的文件名 bool bStatus = false;//false:默認未找到此任務編號對應的文件 string strStatus = ""; //遍歷本地文件名 foreach (string itemFileName in files) { String localFileName = Path.GetFileName(itemFileName);//本地文件名 //不使用服務端的文件擴展名,將文件擴展名與本地文件同步 serFileName = Path.GetExtension(serFileName) != "" ? serFileName.Replace(Path.GetExtension(serFileName), Path.GetExtension(localFileName)) : serFileName + Path.GetExtension(localFileName); //判斷文件若是不存在,則跳出 if (!File.Exists(itemFileName)) continue; //判斷服務器返回的TMUID,匹配文件名 if (itemFileName.ToLower().IndexOf(tmuid.ToLower()) > 0) { //*調用服務器API(上傳文件) //三、若是匹配成功後上傳pdf文件,同時修改文件名(任務id+樣品名稱+時間),(調用[接收解析API])得到返回結果,若是成功提示成功而且把文件移動到成功文件夾,若是失敗提示失敗,把文件移動到失敗文件夾 String retData_UpLoadFile = null; { JToken json = JToken.Parse(Global.jsonTemplate); json["actionName"] = "接收解析API(上傳文件API)"; json["action"] = "labUpLoadFile"; json["paramInfo"]["kindId"] = Global.ExeCodeColData;//種類編碼 json["paramInfo"]["taskId"] = tmuid;//任務編碼 json["paramInfo"]["localFileName"] = localFileName;//本地文件名 json["paramInfo"]["serFileName"] = serFileName;//服務端傳來的文件名 json["paramInfo"]["suffix"] = Path.GetExtension(serFileName).Replace(".", "");//本地文件擴展名 //json["paramInfo"]["lab_orgdm"] = Global.ExeCodeColData;//設備機構代碼 String jsonStr = JsonConvert.SerializeObject(json); jsonStr = HttpUtility.UrlEncode(jsonStr);//編碼後發送字符串,不然中文會出現亂碼 retData_UpLoadFile = HttpUtil.UploadRequest(Global.ServerCallPath + "?json=" + jsonStr, itemFileName);//調用服務器接口(上傳文件到服務器) } //判斷是否返回了數據 if (!String.IsNullOrEmpty(retData_UpLoadFile) && !String.IsNullOrEmpty(retData_UpLoadFile.Trim())) { //格式化數據 retData_UpLoadFile = retData_UpLoadFile.Trim(); //轉換JSON對象 JToken retData_UpLoadFileJson = JToken.Parse(retData_UpLoadFile); //*4.保存成功和失敗文件的目錄要天天建立當天的文件夾 string srcDirFile = itemFileName;//源目錄文件 string destDirFileSucceed = Global.PollingDirPathSucceed + "\\" + time_rq + "\\" + serFileName;//目的目錄文件(成功) string destDirFileFailure = Global.PollingDirPathFailure + "\\" + time_rq + "\\" + serFileName;//目的目錄文件(失敗) //判斷(調用[接收解析API(labUpLoadFile)])返回結果是否成功 if (retData_UpLoadFileJson["bReturn"].ToString().ToLower().Trim() == "true") { //調用成功:把文件移動到成功文件夾,同時修改文件名(任務id+樣品名稱+時間) //移動文件(自動建立目錄) if (FileUtil.moveFile(srcDirFile, destDirFileSucceed, true)) { //打印日誌(移動文件成功) strStatus = time + " - " + "成功" + " - " + localFileName + " to " + serFileName + " - " + retData_UpLoadFileJson["sReturn"].ToString(); //LogManager.WriteLog(LogFile.Trace, "函數timerMain_Tick:" + strStatus); } else { //打印日誌(移動文件失敗) strStatus = time + " - " + "失敗" + " - " + localFileName + " to " + serFileName + " - 移動文件失敗!"; //LogManager.WriteLog(LogFile.Trace, "函數timerMain_Tick:" + strStatus); } } else { //調用失敗:把文件移動到失敗文件夾 //調用[接收解析API(labUpLoadFile)]API失敗 //打印日誌 strStatus = time + " - " + "失敗" + " - " + localFileName + " to " + serFileName + " - " + retData_UpLoadFileJson["sReturn"].ToString(); //移動文件(自動建立目錄) if (!FileUtil.moveFile(srcDirFile, destDirFileFailure, true)) { //移動文件失敗 strStatus += " - 移動文件失敗!"; } //LogManager.WriteLog(LogFile.Trace, "函數timerMain_Tick:" + strStatus); } } else { //調用[接收解析API(labUpLoadFile)]API失敗 //打印日誌 strStatus = time + " - " + "失敗" + " - " + localFileName + " to " + serFileName + " - 調用[接收解析API(labUpLoadFile)]API失敗!返回的數據爲空!!"; //LogManager.WriteLog(LogFile.Trace, "函數timerMain_Tick:" + strStatus ); } //找到此任務編號對應的文件(賦值成功標識) LogManager.WriteLog(LogFile.Trace, "函數timerMain_Tick:" + strStatus); bStatus = true; break; } } //判斷是否找到此任務編號對應的文件 if (!bStatus) { strStatus = time + " - " + "失敗" + " - 未找到此任務編號對應的文件:" + tmuid + " to " + serFileName; LogManager.WriteLog(LogFile.Trace, "函數timerMain_Tick:" + strStatus); } //加入列表 listFiles.Items.Insert(0, strStatus); } } else { //調用[待化驗任務API(awaitLaboratory)]API失敗 LogManager.WriteLog(LogFile.Trace, "函數timerMain_Tick:" + retDataJson["sReturn"].ToString()); } } else { //調用[待化驗任務API(awaitLaboratory)]API失敗 LogManager.WriteLog(LogFile.Trace, "函數timerMain_Tick:調用[待化驗任務API(awaitLaboratory)]API失敗!返回的數據爲空!!"); }