Пример #1
0
        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);
        }
Пример #2
0
        public object GetJsPath(HttpContext context)
        {
            ExecuteBcfMethodResult result  = new ExecuteBcfMethodResult();
            SystemService          service = new SystemService();

            result.Result = service.GetJsPath();
            return(result);
        }
Пример #3
0
        /// <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));
        }
Пример #4
0
        /// <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));
        }
Пример #5
0
        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);
        }
Пример #6
0
        //加载菜单
        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);
        }
Пример #7
0
        /// <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));
        }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }
Пример #10
0
        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();
        }
Пример #11
0
        /// <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);
        }