public object fuzzySearchField(HttpContext context) { ExecuteBcfMethodResult result = new ExecuteBcfMethodResult(); string data = context.Request["data"]; MDictionary <string, string> dic = new MDictionary <string, string>(); if (!string.IsNullOrEmpty(data)) { dic = JsonConvert.DeserializeObject <MDictionary <string, string> >(data); } BillService service = new BillService(); string handle = dic["Handle"]; string relSource = dic["RelSource"]; string query = dic["Query"]; string condition = dic["Condition"]; Int16 tableIndex = LibSysUtils.ToInt16(dic["TableIndex"]); string selectSql = dic["SelectSql"]; string selectFields = dic["SelectFields"]; result.Result = service.FuzzySearchField1(handle, relSource, selectFields, query, condition, tableIndex, selectSql); //result.Result = service.FuzzySearchField(handle, relSource, query, condition, tableIndex); return(result); }
public object GetJsPath(HttpContext context) { ExecuteBcfMethodResult result = new ExecuteBcfMethodResult(); SystemService service = new SystemService(); result.Result = service.GetJsPath(); return(result); }
/// <summary> /// 根据当前标准工艺路线的ID返回其本身或复制的数据模型 /// </summary> /// <param name="techRouteId">标准工艺路线的唯一标识</param> /// <param name="materialId">物料的唯一标识</param> /// <param name="isCopy">是否要复制当前标准工艺路线的数据模型,true表示复制,false表示不复制</param> /// <returns>返回当前标准工艺路线本身或复制的组件布局数据模型</returns> public JsonResult GetTechRouteInfoById(string techRouteId, string materialId, bool isCopy) { ExecuteBcfMethodResult result = new ExecuteBcfMethodResult(); LibManagerMessage manageMessage = new LibManagerMessage(); TechRouteModel techRouteModel = CPSModuleConfig.GetTechRouteInfoById(techRouteId, materialId, isCopy, manageMessage); result.Result = techRouteModel; result.Messages = manageMessage.MessageList; return(Json(result, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 获得生产线下所有工作站点的派工单的完成情况 /// </summary> /// <param name="info">CPS产线配置模型数据</param> /// <returns>返回生产线下的工作站点-派工单的信息</returns> public JsonResult GetProduceLineOfStationInfo(CPSProduceControlLineConfig info) { ExecuteBcfMethodResult result = new ExecuteBcfMethodResult(); LibManagerMessage manageMessage = new LibManagerMessage(); List <ProduceModuleInfo> produceControlLineModel = CPSModuleConfig.GetProduceLineOfStationInfo(info, manageMessage); result.Result = produceControlLineModel; result.Messages = manageMessage.MessageList; return(Json(result, JsonRequestBehavior.AllowGet)); }
public object GetRptFields(HttpContext context) { ExecuteBcfMethodResult result = new ExecuteBcfMethodResult(); string data = context.Request["data"]; MDictionary <string, string> dic = new MDictionary <string, string>(); if (!string.IsNullOrEmpty(data)) { dic = JsonConvert.DeserializeObject <MDictionary <string, string> >(data); } BillService service = new BillService(); string progId = dic["Progid"]; result.Result = service.GetRptFields(progId); return(result); }
//加载菜单 public object LoadMenuSetting(HttpContext context) { ExecuteBcfMethodResult result = new ExecuteBcfMethodResult(); string data = context.Request["data"]; MDictionary <string, string> dic = new MDictionary <string, string>(); if (!string.IsNullOrEmpty(data)) { dic = JsonConvert.DeserializeObject <MDictionary <string, string> >(data); } FileTransferService service = new FileTransferService(); string handle = dic["Handle"]; result.Result = service.LoadMenuSetting(handle); return(result); }
/// <summary> ///验证产线配置规则,并保存为CPS产线模型数据和产线配置数据 /// </summary> /// <param name="info">CPS产线配置模型数据</param> /// <returns>返回保存后的CPS产线配置模型数据以及错误信息</returns> public JsonResult SaveProduceControlLine(CPSProduceControlLineConfig info) { ExecuteBcfMethodResult result = new ExecuteBcfMethodResult(); LibManagerMessage manageMessage = new LibManagerMessage(); try { var model = CPSModuleConfig.SaveProduceControlLine(info, manageMessage); result.Result = model; result.Messages = manageMessage.MessageList; } catch (Exception ex) { string message = ex.InnerException == null ? ex.Message : ex.InnerException.Message; manageMessage.AddMessage(LibMessageKind.SysException, string.Format("异常信息:{0}{1}异常堆栈:{2}", message, Environment.NewLine, ex.StackTrace)); result.Messages = manageMessage.MessageList; } return(Json(result, JsonRequestBehavior.AllowGet)); }
public object Login(HttpContext context) { ExecuteBcfMethodResult result = new ExecuteBcfMethodResult(); string data = context.Request["data"]; MDictionary <string, string> dic = new MDictionary <string, string>(); if (!string.IsNullOrEmpty(data)) { dic = JsonConvert.DeserializeObject <MDictionary <string, string> >(data); } string userId = dic["userId"]; string password = dic["password"]; bool quitOther = false; SystemService service = new SystemService(); result.Result = service.Login1(userId, password, quitOther); return(result); }
public object checkFieldValue(HttpContext context) { ExecuteBcfMethodResult result = new ExecuteBcfMethodResult(); string data = context.Request["data"]; MDictionary <string, string> dic = new MDictionary <string, string>(); if (!string.IsNullOrEmpty(data)) { dic = JsonConvert.DeserializeObject <MDictionary <string, string> >(data); } BillService service = new BillService(); string handle = dic["Handle"]; string fields = dic["Fields"]; string relSource = dic["RelSource"]; string curPk = dic["CurPk"]; string condition = dic["Condition"]; Int16 tableIndex = LibSysUtils.ToInt16(dic["TableIndex"]); result.Result = service.CheckFieldValue(handle, fields, relSource, curPk, condition, tableIndex); return(result); }
public void ProcessRequest(HttpContext context) { string action = context.Request["action"].ToLower(); object ret = null; try { switch (action) { case "checkfieldvalue": ret = checkFieldValue(context); break; case "fuzzysearchfield": ret = fuzzySearchField(context); break; case "savemenusetting": ret = SaveMenuSetting(context); break; case "loadmenusetting": ret = LoadMenuSetting(context); break; case "getrptfields": ret = GetRptFields(context); break; case "getjspath": ret = GetJsPath(context); break; case "savebilllistingscheme": ret = SaveBillListingScheme(context); break; case "print": ret = Print(context); break; case "selectqueryfield": ret = SelectQueryField(context); break; case "selectfuncfield": ret = SelectFuncField(context); break; case "uploadfile": ret = UpLoadFile(context); break; case "batchexportalldata": ret = BatchExportAllData(context); break; case "batchexport": ret = BatchExportData(context); break; case "batchimport": ret = BatchImportData(context); break; case "getlist": ret = getList(context); break; case "batchmethod": ret = BatchMethod(context); break; case "method": ret = processRequsetExecuteMethod(context); break; case "login": ret = Login(context); break; case "weixin": ret = GetDiary(context); break; case "update": SystemManager info = new SystemManager(); info.SystemUpgrade1(); break; default: throw new Exception("没有对应的方法"); break; } } catch (Exception ex) { LibLog.WriteLog(ex); ret = new ExecuteBcfMethodResult(ex.Message); } string json = JsonConvert.SerializeObject(ret); context.Response.Write(json); context.Response.End(); }
/// <summary> /// 向多个目标站点发起跨站Bcf方法调用请求。 /// 此方法执行时会阻塞 /// 如果有向多个站点请求执行,会同时(并发线程)向多个站点发起请求,请求完毕后再汇总执行结果返回 /// 如果参数有误会抛出异常 /// </summary> /// <param name="handle">当前用户的标识Handle</param> /// <param name="linkSiteIds">目标站点代码列表</param> /// <param name="callParams">包含SSO令牌信息、请求方法、请求参数等callParams</param> /// <param name="dataAccess">可选参数:数据库访问器。如果调用时使用了数据库事务,需要将开启了事务的数据库访问器传递进来,避免在本方法中查询数据库时因事务锁表而死锁。</param> /// <returns>返回执行结果字典,键值为目标站点Id,值为执行结果</returns> public static Dictionary <string, ExecuteBcfMethodResult> CrossSiteBcfCall(string handle, List <string> linkSiteIds, ExecuteBcfMethodParam callParams, LibDataAccess dataAccess = null) { if (string.IsNullOrEmpty(handle) || linkSiteIds == null || linkSiteIds.Count == 0 || callParams == null) { throw new ArgumentNullException("handle、linkSiteIds、callParams", "检查参数时发现有空参数。"); } LibHandle libHandle = LibHandleCache.Default.GetCurrentHandle(handle) as LibHandle; if (libHandle == null) { throw new Exception("该账户未登录。"); } callParams.IsCrossSiteCall = true; callParams.UserId = libHandle.UserId; callParams.Token = GetToken(libHandle, 30 * 1000, dataAccess); if (string.IsNullOrEmpty(callParams.Token)) { throw new Exception("获取跨站访问令牌信息失败。"); } Dictionary <string, string> urls = GetSiteUrls(linkSiteIds); if (urls == null || urls.Count == 0) { throw new Exception("查找到的站点Url为空。"); } Dictionary <string, ExecuteBcfMethodResult> dicResults = new Dictionary <string, ExecuteBcfMethodResult>(); string errorInfo = string.Empty; List <Task> tasks = new List <Task>(); foreach (string siteId in urls.Keys) { var url = urls[siteId]; if (string.IsNullOrEmpty(url)) { continue; } url = string.Format("{0}/billSvc/invorkBcf", url); var task = Task.Factory.StartNew(() => { try { var sendObj = new { param = callParams };//参数名必须一致 dynamic ret = LibNetUtils.HttpPostCall <dynamic>(url, sendObj, out errorInfo, callParams.TimeoutMillSecs); if (ret != null) { ExecuteBcfMethodResult result = JsonConvert.DeserializeObject <ExecuteBcfMethodResult>((string)ret.ExecuteBcfMethodResult); lock (dicResults) { dicResults.Add(siteId, result); } } else if (string.IsNullOrEmpty(errorInfo) == false) { ExecuteBcfMethodResult result = new ExecuteBcfMethodResult(); result.Messages.Add(new LibMessage() { MessageKind = LibMessageKind.Error, Message = string.Format("执行跨站请求出现异常:{0}", errorInfo) }); lock (dicResults) { dicResults.Add(siteId, result); } } } catch (Exception exp) { LibCommUtils.AddOutput(@"Error\CrossSiteCall", string.Format("CheckSSOLoginState error:{0}\r\nStacktrace:{1}", exp.Message, exp.StackTrace)); ExecuteBcfMethodResult result = new ExecuteBcfMethodResult(); result.Messages.Add(new LibMessage() { MessageKind = LibMessageKind.Error, Message = string.Format("执行跨站请求出现异常:{0}", exp.Message) }); lock (dicResults) { dicResults.Add(siteId, result); } } }); tasks.Add(task); } //循环检查等待所有task都执行完毕 int waitMillSecs = callParams.TimeoutMillSecs + 1000;//多等一秒 int waitCount = 0; //等待超时时间到来,或者全部已经执行完毕 while (waitCount < waitMillSecs) { bool isAllFinished = tasks.All(t => { return(t.IsCompleted); }); if (isAllFinished) { break; } waitCount += 100; Thread.Sleep(100); } return(dicResults); }