/// <summary>
        /// 根据Id 获取数据对象
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public JsonResult GetExpenseAuditConfigurationById(string id)
        {
            var retModel = new JsonReturnModel();

            try
            {
                var expenseAuditConfiguration        = ExpenseAuditConfigurationBll.GetExpenseAuditConfigurationById(inn, id);
                ExpenseAuditConfigurationModel model = new ExpenseAuditConfigurationModel();
                model.Id              = expenseAuditConfiguration.id;
                model.b_RoleName      = expenseAuditConfiguration.B_ROLENAME;
                model.b_Type          = expenseAuditConfiguration.B_TYPE;
                model.b_CompanyCode   = expenseAuditConfiguration.B_COMPANYCODE;
                model.b_ProjectName   = expenseAuditConfiguration.B_PROJECTNAME;
                model.b_CostCenters   = expenseAuditConfiguration.B_COSTCENTERS;
                model.b_HandlePersons = expenseAuditConfiguration.B_HANDLEPERSONS;
                retModel.data         = model;
            }
            catch (Exception ex)
            {
                retModel.AddError("errorMessage", ex.Message);
            }
            return(Json(retModel, JsonRequestBehavior.AllowGet));
        }
        /// <summary>
        /// 保存报销审核配置
        /// </summary>
        /// <returns></returns>
        public JsonResult SaveBusinessAuditConfiguration(ExpenseAuditConfigurationModel model)
        {
            var retModel = new JsonReturnModel();

            try
            {
                List <B_EXPENSEAUDITCONFIGURATION> datalist = ExpenseAuditConfigurationBll.GetAllExpenseAuditConfiguration();

                if (model.b_Type == "Non Project")
                {
                    if (string.IsNullOrEmpty(model.b_CostCenters))
                    {
                        retModel.AddError("errorMessage", "当为非项目时,必须选择成本中心!");
                        return(Json(retModel, JsonRequestBehavior.AllowGet));
                    }



                    //验证输入的成本中心代码是否正确
                    List <string> list = model.b_CostCenters.Split(',').ToList();
                    if (list != null && list.Count > 0)
                    {
                        foreach (var item in list)
                        {
                            var OrganizationalStructure = OrganizationalStructureBll.GetOrganizationalStructureByCostCenter(item);
                            if (OrganizationalStructure == null)
                            {
                                retModel.AddError("errorMessage", "选择的成本中心代码不存在!");
                                return(Json(retModel, JsonRequestBehavior.AllowGet));
                            }

                            var obj = datalist.Where(x => x.B_ROLENAME == model.b_RoleName && x.B_TYPE == model.b_Type && x.B_COMPANYCODE == model.b_CompanyCode && x.B_COSTCENTERS.Split(',').Contains(item) && x.id != model.Id).FirstOrDefault();
                            if (obj != null)
                            {
                                string errorStr = "角色名称:" + model.b_RoleName + "、项目类型:" + (model.b_Type == "Project" ? "项目" : "非项目") + "、公司代码:" + model.b_CompanyCode + "、成本中心代码:" + item + ",已经存在!";
                                retModel.AddError("errorMessage", errorStr);
                                return(Json(retModel, JsonRequestBehavior.AllowGet));
                            }
                        }
                    }
                }
                else
                {
                    //验证输入的项目名称是否正确
                    if (string.IsNullOrEmpty(model.b_ProjectName))
                    {
                        retModel.AddError("errorMessage", "当为项目时必须选择项目名称!");
                        return(Json(retModel, JsonRequestBehavior.AllowGet));
                    }

                    var projectItem = ProjectManageDA.GetProjectManageByName(inn, model.b_ProjectName);
                    if (projectItem.isError() || projectItem.getItemCount() == 0)
                    {
                        retModel.AddError("errorMessage", "输入的项目名称不存在!");
                        return(Json(retModel, JsonRequestBehavior.AllowGet));
                    }

                    var obj = datalist.Where(x => x.B_ROLENAME == model.b_RoleName && x.B_TYPE == model.b_Type && x.B_COMPANYCODE == model.b_CompanyCode && x.B_PROJECTNAME == model.b_ProjectName && x.id != model.Id).FirstOrDefault();
                    if (obj != null)
                    {
                        string errorStr = "角色名称:" + model.b_RoleName + "、项目类型:" + (model.b_Type == "Project" ? "项目" : "非项目") + "、公司代码:" + model.b_CompanyCode + "、项目名称:" + model.b_ProjectName + ",已经存在!";
                        retModel.AddError("errorMessage", errorStr);
                        return(Json(retModel, JsonRequestBehavior.AllowGet));
                    }
                }

                //判断输入的处理人是否存在
                if (!string.IsNullOrEmpty(model.b_HandlePersons))
                {
                    List <string> users = model.b_HandlePersons.Split(';').Where(x => x != "").Distinct().ToList();
                    foreach (var user in users)
                    {
                        if (!UserDA.ValidUserIsExist(inn, user))
                        {
                            retModel.AddError("errorMessage", "输入的人员在系统中不存在!");
                            return(Json(retModel, JsonRequestBehavior.AllowGet));
                        }
                    }
                    model.b_HandlePersons = "";
                    foreach (var item in users)
                    {
                        model.b_HandlePersons = model.b_HandlePersons + item + ";";
                    }
                }
                Item ExpenseAuditConfiguration;
                if (string.IsNullOrEmpty(model.Id))
                {
                    ExpenseAuditConfiguration = inn.newItem("b_ExpenseAuditConfiguration", "add");
                }
                else
                {
                    ExpenseAuditConfiguration = inn.newItem("b_ExpenseAuditConfiguration", "edit");
                    ExpenseAuditConfiguration.setAttribute("id", model.Id);
                }
                ExpenseAuditConfiguration.setProperty("b_rolename", model.b_RoleName);
                ExpenseAuditConfiguration.setProperty("b_type", model.b_Type);
                ExpenseAuditConfiguration.setProperty("b_companycode", model.b_CompanyCode);
                if (model.b_Type == "Non Project")
                {
                    ExpenseAuditConfiguration.setProperty("b_projectname", "");
                    ExpenseAuditConfiguration.setProperty("b_costcenters", model.b_CostCenters);
                }
                else
                {
                    ExpenseAuditConfiguration.setProperty("b_projectname", model.b_ProjectName);
                    ExpenseAuditConfiguration.setProperty("b_costcenters", "");
                }

                ExpenseAuditConfiguration.setProperty("b_handlepersons", model.b_HandlePersons);
                var result = ExpenseAuditConfiguration.apply();
                if (result.isError())
                {
                    retModel.AddError("errorMessage", result.getErrorString());
                }
            }
            catch (Exception ex)
            {
                retModel.AddError("errorMessage", ex.Message);
            }
            return(Json(retModel, JsonRequestBehavior.AllowGet));
        }