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>
![(远航通)查询页面后台 远航物流单号查询官网](http://img.aihuau.com/images/31101031/31045836t0128ef1a6507d5e9f8.jpg)
/// <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);
}
}
}