打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
(远航通)查询页面后台
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Aero.Form.UI.WebControl;
using Aero.SOAServices.Entity;
using Aero.WorkFlow.Entity;
//using Aero.WorkFlow.Contract;
using Aero.View.Models;
using Aero.Form.Core.Common;
using Aero.SOAServices.BLL;
using Aero.SOAService.Contract;
using Aero.View.Common;
using Aero.Framework.DomainModel.Entity;
using System.Text;

namespace Aero.View.Controllers
{
    public class GHPQController : ControllerBase
    {
        public ActionResult Index(string viewname, bool partial = false)
        {
            foreach (var key in Request.QueryString.AllKeys)
            {
                ViewData[key] = Server.UrlDecode(Request.QueryString[key]);
            }
            if (partial)
            {
                return PartialView(viewname);
            }
            return View(viewname);
        }

        /// <summary>
        /// 加载数据请求处理逻辑
        /// 根据服务名称: BehaviorName 附加服务参数 BehaviorParameter 获取数据源
        /// 服务参数的格式: {参数名}@{参数值} 对象数组
        /// 针对Grid数据源特殊处理
        /// </summary>
        /// <param name="settings"></param>
        /// <param name="behaviorname"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        [HttpPost]
        public ActionResult LoadForGrid(GridSettings settings, string behaviorname, string beparameters)
        {
            SOABehavior behavior = SoaServiceHelper.GetBehaviorByName(behaviorname);
            List<DataPack> instanceList = SoaServiceHelper.GetInstancesByBehaviorWithParasForGrid(behavior, behaviorname, beparameters, settings.Page, settings.Rows, settings.Sort, settings.Order);
            SOAModel metaObj = null;

            string jsonData = string.Empty;
            if (behavior != null && behavior.ValueModel != null)
            {
                //如果是基本类型引用DataTypeID,如果是Model则引用ModelPropertyID
                metaObj = behavior.ValueModel;
            }
            if (metaObj == null || metaObj.Properties.Count == 0 || instanceList == null)
            {
                return Content("{ \"rows\": [],\"total\": 0 }");
            }

            #region 按照EasyUI DATAGRID客户端端数据绑定格式来封装
            jsonData = Common.JsonFunc.SerializeForGrid(metaObj, instanceList);
            #endregion

            return Content(jsonData);
        }

        /// <summary>
        /// 加载数据请求处理逻辑
        /// 根据服务名称: BehaviorName 附加服务参数 BehaviorParameter 获取数据源
        /// 服务参数的格式: {参数名}@{参数值} 对象数组
        /// </summary>
        /// <param name="behaviorname"></param>
        /// <param name="beparameters"></param>
        /// <returns></returns>
        [HttpPost]
        public ActionResult Load(string behaviorname, string beparameters)
        {
            SOABehavior behavior = SoaServiceHelper.GetBehaviorByName(behaviorname);
            List<DataPack> instanceList = SoaServiceHelper.GetInstancesByBehaviorWithParas(behavior, behaviorname, beparameters);
            SOAModel metaObj = null;

            string jsonData = string.Empty;
            if (behavior != null && behavior.ValueModel != null)
            {
                metaObj = behavior.ValueModel;
            }
            else
            {
                return Content("{}");
            }
            if (metaObj == null || metaObj.Properties.Count == 0 || instanceList == null)
            {
                return Content("{}");
            }
            if (behavior.ValueIsArray)
            {
                if (instanceList != null && instanceList.Count > 0)
                {
                    jsonData = Common.JsonFunc.Serialize(metaObj, instanceList);
                }
                else
                {
                    return Content("{}");
                }
            }
            else if (instanceList.Count > 0)
            {
                if (instanceList != null && instanceList.Count > 0)
                {
                    jsonData = Common.JsonFunc.Serialize(metaObj, instanceList[0]);
                }
            }
            else
            {
                return Content("{}");
            }
            return Content(jsonData);
        }

        /// <summary>
        /// 提交数据请求处理逻辑
        /// 提交时指定服务名称,具体的数据是以json格式封装
        /// </summary>
        /// <param name="behaviorname"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        [HttpPost]
        public JsonResult Submit(string behaviorname, string modelid, string data)
        {
            try
            {
                #region 初始化
                CallBehavior callBehavior = new CallBehavior();
                callBehavior.BehaviorName = behaviorname;
                IService soaService = new Aero.SOAServices.Service();
                #endregion

                #region 获取SOAModel
                SOABehavior behavior = SoaServiceHelper.GetBehaviorByName(behaviorname);
                SOAModel metaObj = null;

                string jsonData = string.Empty;
                if (!(string.IsNullOrEmpty(modelid)))
                {
                    metaObj = SoaServiceHelper.GetSoaModelByID(modelid);
                }
                #endregion

                //JsonObject dynamicObj = (JsonObject)SimpleJson.DeserializeObject(data);

                if (SimpleJson.DeserializeObject(data) is JsonArray)
                {
                    Variable param = new Variable() { ID = Common.JsonFunc.GetGuidString(), DataTypeID = modelid, IsArray = true };
                    JsonArray array = (JsonArray)SimpleJson.DeserializeObject(data);
                    foreach (JsonObject item in array)
                    {
                        DataPack instance = Common.JsonFunc.Deserialize(metaObj, item);
                        if (instance == null)
                        {
                            //提交数据JSON格式解析错误
                            return Json(new FeedbackModel { Result = false });
                        }
                        param.Values.Add(instance);

                    }
                    callBehavior.InputParameter.Add(param);
                }
                else
                {
                    //string newData = ChangeData(data);
                    DataPack instance = Common.JsonFunc.Deserialize(metaObj, data);
                    if (instance == null)
                    {
                        //提交数据JSON格式解析错误
                        return Json(new FeedbackModel { Result = false });
                    }
                    Variable param = new Variable() { ID = Common.JsonFunc.GetGuidString(), DataTypeID = modelid, IsArray = false };

                    param.Values.Add(instance);
                    callBehavior.InputParameter.Add(param);
                }
                soaService.CallBehavioer(callBehavior);
            }
            catch
            {
                return Json(new FeedbackModel { Result = false });
            }
            return Json(new FeedbackModel { Result = true });
        }

        [HttpPost]
        public JsonResult Save(string behaviorname, string modelName, string data)
        {
            try
            {
                #region 初始化
                CallBehavior callBehavior = new CallBehavior();
                callBehavior.BehaviorName = behaviorname;
                IService soaService = new Aero.SOAServices.Service();
                #endregion

                #region 获取SOAModel
                SOABehavior behavior = SoaServiceHelper.GetBehaviorByName(behaviorname);
                SOAModel metaObj = null;

                string jsonData = string.Empty;
                if (!(string.IsNullOrEmpty(modelName)))
                {
                    metaObj = SoaServiceHelper.GetModelByName(modelName);
                }
                #endregion


                if (SimpleJson.DeserializeObject(data) is JsonArray)
                {
                    Variable param = new Variable() { ID = Common.JsonFunc.GetGuidString(), DataTypeID = metaObj.ID, IsArray = true };
                    JsonArray array = (JsonArray)SimpleJson.DeserializeObject(data);
                    foreach (JsonObject item in array)
                    {
                        DataPack instance = Common.JsonFunc.Deserialize(metaObj, item);
                        if (instance == null)
                        {
                            //提交数据JSON格式解析错误
                            return Json(new FeedbackModel { Result = false });
                        }
                        param.Values.Add(instance);

                    }
                    callBehavior.InputParameter.Add(param);
                }
                else
                {
                    DataPack instance = Common.JsonFunc.Deserialize(metaObj, data);
                    if (instance == null)
                    {
                        //提交数据JSON格式解析错误
                        return Json(new FeedbackModel { Result = false });
                    }
                    Variable param = new Variable() { ID = Common.JsonFunc.GetGuidString(), DataTypeID = metaObj.ID, IsArray = false };
                    param.Values.Add(instance);
                    callBehavior.InputParameter.Add(param);
                }
                soaService.CallBehavioer(callBehavior);
            }
            catch
            {
                return Json(new FeedbackModel { Result = false });
            }
            return Json(new FeedbackModel { Result = true });
        }



        [HttpPost]
        public JsonResult SaveModel(string modelid, string data, string pendingtaskid)
        {
            try
            {
                #region 初始化
                CallBehavior callBehavior = new CallBehavior();
                callBehavior.BehaviorName = "SaveWFRelationBusinessModel";
                IService soaService = new Aero.SOAServices.Service();
                #endregion

                #region 获取SOAModel
                SOABehavior behavior = SoaServiceHelper.GetBehaviorByName("SaveWFRelationBusinessModel");
                SOAModel metaObj = null;

                string jsonData = string.Empty;
                if (!(string.IsNullOrEmpty(modelid)))
                {
                    metaObj = SoaServiceHelper.GetSoaModelByID(modelid);
                }
                #endregion

                //JsonObject dynamicObj = (JsonObject)SimpleJson.DeserializeObject(data);

                Variable param0 = new Variable() { ID = Common.JsonFunc.GetGuidString(), DataTypeID = "T02" };
                DataPack d = new DataPack();
                d.DataTypeID = "T02";
                d.SetValue("T02", pendingtaskid);
                param0.Values.Add(d);
                callBehavior.InputParameter.Add(param0);

                if (SimpleJson.DeserializeObject(data) is JsonArray)
                {
                    Variable param = new Variable() { ID = Common.JsonFunc.GetGuidString(), DataTypeID = modelid, IsArray = true };
                    JsonArray array = (JsonArray)SimpleJson.DeserializeObject(data);
                    foreach (JsonObject item in array)
                    {
                        DataPack instance = Common.JsonFunc.Deserialize(metaObj, item);
                        if (instance == null)
                        {
                            //提交数据JSON格式解析错误
                            return Json(new FeedbackModel { Result = false });
                        }
                        param.Values.Add(instance);

                    }
                    callBehavior.InputParameter.Add(param);
                }
                else
                {
                    DataPack instance = Common.JsonFunc.Deserialize(metaObj, data);
                    if (instance == null)
                    {
                        //提交数据JSON格式解析错误
                        return Json(new FeedbackModel { Result = false });
                    }
                    Variable param = new Variable() { ID = Common.JsonFunc.GetGuidString(), DataTypeID = modelid, IsArray = false };
                    param.Values.Add(instance);
                    callBehavior.InputParameter.Add(param);
                }
                soaService.CallBehavioer(callBehavior);
            }
            catch
            {
                return Json(new FeedbackModel { Result = false });
            }
            return Json(new FeedbackModel { Result = true });
        }

        /// <summary>
        /// 启动工作流
        /// </summary>
        /// <param name="workflowCode">流程代码</param>
        /// <param name="bussinessID">业务ID</param>
        /// <param name="data">数据 json格式</param>
        /// <returns></returns>
        [HttpPost]
        public JsonResult StartWorkFlow(string workflowCode, string bussinessID, string data)
        {
            LoginUser user = (LoginUser)Session["userInfo"];
            if (!String.IsNullOrEmpty(workflowCode)
                && !String.IsNullOrEmpty(bussinessID)
                && !String.IsNullOrEmpty(data))
            {
                JsonObject dynamicObj = (JsonObject)SimpleJson.DeserializeObject(data);
                IDictionary<string, string> dict = new Dictionary<string, string>();
                foreach (var d in dynamicObj)
                {
                    dict[d.Key] = (d.Value ?? String.Empty).ToString();
                }
                dict["HandlingID"] = user.UserID;
                dict["HandlingName"] = user.UserName;
                dict["HandlingPosition"] = user.Role;
                bool flag = Common.WorkFlowHelper.InstanceWorkFlow(workflowCode, bussinessID, "", "", dict);
                return Json(new FeedbackModel { Result = flag });
            }
            return Json(new FeedbackModel { Result = false });
        }

        /// <summary>
        /// 处理代办
        /// </summary>
        /// <param name="pendingTaskID">代办ID</param>
        /// <param name="result">处理结果</param>
        /// <param name="data">处理数据 json格式</param>
        /// <returns></returns>
        [HttpPost]
        public ActionResult ProcessPendingTask(string pendingTaskID, string result, string data)
        {
            if (!String.IsNullOrEmpty(pendingTaskID)
                && !String.IsNullOrEmpty(result)
                && !String.IsNullOrEmpty(data))
            {
                JsonObject dynamicObj = (JsonObject)SimpleJson.DeserializeObject(data);
                IDictionary<string, string> dict = new Dictionary<string, string>();
                foreach (var d in dynamicObj)
                {
                    dict[d.Key] = (d.Value ?? String.Empty).ToString();
                }
                dict["HandlingID"] = CurrentUser.UserID;
                dict["HandlingName"] = CurrentUser.UserName;
                dict["HandlingPosition"] = CurrentUser.Role;
                bool flag = Common.WorkFlowHelper.TaskDeal(pendingTaskID, result, dict);
                return Json(new FeedbackModel { Result = flag });
            }
            return Json(new FeedbackModel { Result = false });
        }

        /// <summary>
        /// 获取附件
        /// </summary>
        /// <param name="id">附件ID</param>
        /// <returns></returns>
        public ActionResult GetAttachment(string id)
        {
            SOABehavior behavior = SoaServiceHelper.GetBehaviorByName("GetDownloadUrlByAttachID");
            List<DataPack> instanceList = SoaServiceHelper.GetInstancesByBehaviorWithParas(behavior, "GetDownloadUrlByAttachID", "{\"FID\":\"" + id + "\"}");
            if (instanceList.Count > 0)
            {
                string path = instanceList[0].GetValue("T02");
                if (!String.IsNullOrEmpty(path) && path != "#")
                    return RedirectPermanent(path);
            }
            return HttpNotFound();
        }

        //测试数据
        public JsonResult GetGenderList()
        {
            return Json(new object[]{
               new {text="请选择",value="0"},
               new {text="男",value="true"},
               new {text="女",value="false"}
            });
        }

        //机型数据
        public JsonResult GetAirPlane()
        {
            return Json(new object[]{
               new {text="请选择",value="0"},
               new {text="B737",value="B737"},
               new {text="B747",value="B747"},
               new {text="B777",value="B777"},
               new {text="A319",value="A319"},
               new {text="A321",value="A321"},
               new {text="A330",value="A330"},
               new {text="A340",value="A340"}
            });
        }

        [HttpPost]
        public ActionResult LoadNowYears()
        {
            System.Text.StringBuilder jsonData = new System.Text.StringBuilder();
            jsonData.Append("[");
            int year = DateTime.Now.Year;
            for (int i = year - 7; i <= year + 1; i++)
            {
                if (i == year + 1)
                {
                    jsonData.AppendFormat("&'ID':'{0}','NAME':'{0}'*", i);
                }
                else
                {
                    jsonData.AppendFormat("&'ID':'{0}','NAME':'{0}'*,", i);
                }
            }
            jsonData.Append("]");
            string str = jsonData.ToString().Replace("*", "}").Replace("&", "{").Replace("'", "\"");
            return Content(str);
        }
    }
}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
android客户端从服务器端获取json数据并解析
微信公众平台开发教程(五)自定义菜单(含实例源码)
json和table互相转换
.NET Jquery MsSql实现仿百度输入自动补全
Ext与后台数据库交互
Java 调用svnkit实现svn功能
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服