/// <summary>
        /// 删除数据根据Id
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public JsonResult DeleteProjectManageById(string id)
        {
            var retModel = new JsonReturnModel();

            try
            {
                var result = ProjectManageDA.DeleteProjectManageById(inn, id);
                if (result.isError())
                {
                    retModel.AddError("errorMessage", result.getErrorString());
                }
            }
            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));
        }
        //上传审核人信息
        public JsonResult UploadExpenseAuditFile()
        {
            var retModel = new JsonReturnModel();

            try
            {
                if (Request.Files == null || Request.Files.Count == 0)
                {
                    retModel.AddError("errorMessage", Common.GetLanguageValueByParam("请选择您要上传的附件!", "PRCommon", "PRItemType", Userinfo.language));
                    return(Json(retModel, JsonRequestBehavior.AllowGet));
                }

                HttpPostedFileBase prfile   = Request.Files[0];
                string             fileName = prfile.FileName.Substring(prfile.FileName.LastIndexOf("\\") + 1, prfile.FileName.Length - (prfile.FileName.LastIndexOf("\\")) - 1);

                if (!fileName.ToLower().Contains(".xls") && !fileName.ToLower().Contains(".xlsx"))
                {
                    retModel.AddError("errorMessage", "只能上传Excel文件!");
                    return(Json(retModel, JsonRequestBehavior.AllowGet));
                }
                string filePath = ConfigurationManager.AppSettings["UploadPath"] + fileName;
                prfile.SaveAs(filePath);


                //获取数据库审核人信息
                List <USER> allUser = UserBll.GetAllUserInfo();
                List <B_EXPENSEAUDITCONFIGURATION> list = new List <B_EXPENSEAUDITCONFIGURATION>();

                using (FileStream fs = new FileStream(filePath, FileMode.Open))
                {
                    IWorkbook workbook = null;

                    if (fileName.ToLower().Contains(".xlsx"))
                    {
                        workbook = new XSSFWorkbook(fs);
                    }
                    else
                    {
                        workbook = new HSSFWorkbook(fs);
                    }
                    ISheet sheet  = workbook.GetSheetAt(0);
                    int    rowNum = sheet.PhysicalNumberOfRows;

                    for (int i = 0; i < rowNum; i++)
                    {
                        IRow row = sheet.GetRow(i);
                        if (i != 0)
                        {
                            B_EXPENSEAUDITCONFIGURATION model = new B_EXPENSEAUDITCONFIGURATION();
                            model.B_ROLENAME = row.GetCell(0) != null?row.GetCell(0).ToString().Trim() : "";

                            model.B_TYPE = row.GetCell(1) != null?row.GetCell(1).ToString().Trim() : "";

                            model.B_COMPANYCODE = row.GetCell(2) != null?row.GetCell(2).ToString().Trim() : "";

                            model.B_PROJECTNAME = row.GetCell(3) != null?row.GetCell(3).ToString().Trim() : "";

                            model.B_COSTCENTERS = row.GetCell(4) != null?row.GetCell(4).ToString().Trim() : "";

                            model.B_HANDLEPERSONS = row.GetCell(5) != null?row.GetCell(5).ToString().Trim() : "";

                            if (model.B_TYPE == "非项目")
                            {
                                model.B_TYPE = "Non Project";
                            }
                            else if (model.B_TYPE == "项目")
                            {
                                model.B_TYPE = "Project";
                            }
                            else
                            {
                                retModel.AddError("errorMessage", i + 1 + "行2列输入的项目类型错误!");
                                return(Json(retModel, JsonRequestBehavior.AllowGet));
                            }

                            //判断输入的处理人是否存在
                            if (!string.IsNullOrEmpty(model.B_HANDLEPERSONS))
                            {
                                var name = allUser.Where(x => x.LOGIN_NAME.ToUpper() == model.B_HANDLEPERSONS.ToUpper()).FirstOrDefault();
                                model.B_HANDLEPERSONS.Split(';').Where(x => x != "").Distinct().ToList();
                                if (name == null)
                                {
                                    retModel.AddError("errorMessage", i + 1 + "行6列上传的人员在系统中不存在!");
                                    return(Json(retModel, JsonRequestBehavior.AllowGet));
                                }
                                else
                                {
                                    model.B_HANDLEPERSONS = name.FIRST_NAME;
                                }
                            }

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

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

                                        var obj = list.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)).FirstOrDefault();
                                        if (obj != null)
                                        {
                                            string errorStr = i + 1 + "行角色名称:" + 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", i + 1 + "行当为项目时必须选择项目名称!");
                                    return(Json(retModel, JsonRequestBehavior.AllowGet));
                                }

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

                                var obj = list.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).FirstOrDefault();
                                if (obj != null)
                                {
                                    string errorStr = i + 1 + "行角色名称:" + model.B_ROLENAME + "、项目类型:" + (model.B_TYPE == "Project" ? "项目" : "非项目") + "、公司代码:" + model.B_COMPANYCODE + "、项目名称:" + model.B_PROJECTNAME + ",导入时重复!";
                                    retModel.AddError("errorMessage", errorStr);
                                    return(Json(retModel, JsonRequestBehavior.AllowGet));
                                }
                            }
                            list.Add(model);
                        }
                    }
                    list = list.Distinct().ToList();

                    //把数据添加到数据库中
                    if (list != null && list.Count > 0)
                    {
                        //删除审核人配置表数据
                        var result = ExpenseAuditConfigurationBll.DeleteExpenseAuditConfiguration(inn);
                        if (result.isError())
                        {
                            retModel.AddError("errorMessage", "上传发生错误!");
                            return(Json(retModel, JsonRequestBehavior.AllowGet));
                        }

                        for (int i = 0; i < list.Count; i++)
                        {
                            var item     = list[i];
                            var ExpAudit = inn.newItem("B_EXPENSEAUDITCONFIGURATION", "add");
                            ExpAudit.setProperty("b_rolename", item.B_ROLENAME);
                            ExpAudit.setProperty("b_type", item.B_TYPE);
                            if (item.B_TYPE == "Non Project")
                            {
                                ExpAudit.setProperty("b_projectname", "");
                                ExpAudit.setProperty("b_costcenters", item.B_COSTCENTERS);
                            }
                            else
                            {
                                ExpAudit.setProperty("b_projectname", item.B_PROJECTNAME);
                                ExpAudit.setProperty("b_costcenters", "");
                            }
                            ExpAudit.setProperty("b_companycode", item.B_COMPANYCODE);
                            string companyName = CompanyInfoBll.GetCompanyNameByCode(inn, item.B_COMPANYCODE);
                            string value       = item.B_COMPANYCODE + " (" + companyName + ")";
                            ExpAudit.setProperty("b_companycode", item.B_COMPANYCODE = value);
                            ExpAudit.setProperty("b_handlepersons", item.B_HANDLEPERSONS);
                            var resultAdd = ExpAudit.apply();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                retModel.AddError("errorMessage", ex.Message);
            }
            return(Json(retModel, JsonRequestBehavior.AllowGet));
        }
        //调用相关接口,发起会计制证
        public static List <ApiExpenseReimbursementEntity> SendExpenseAccountantCreation(Innovator inn, string id)
        {
            List <ApiExpenseReimbursementEntity> datas = new List <ApiExpenseReimbursementEntity>();

            using (InnovatorSolutionsEntities db = new InnovatorSolutionsEntities())
            {
                datas = (from g in db.B_REIMBURSEMENTITEM
                         join t in db.R_REIMBURSEMENTITEM on g.id equals t.RELATED_ID
                         join y in db.B_EXPENSEREIMBURSEMENT on t.SOURCE_ID equals y.id
                         join u in db.WORKFLOW on y.id equals u.SOURCE_ID
                         join i in db.WORKFLOW_PROCESS on u.RELATED_ID equals i.ID
                         where y.id == id
                         select new ApiExpenseReimbursementEntity
                {
                    BUKRS = y.B_COMPANYCODE,
                    XBLNR = y.B_RECORDNO,
                    closed_date = i.CLOSED_DATE,
                    NUMPG = y.B_ATTACHMENTSQUANTITY,
                    PROTYP = y.B_TYPE,
                    DMBTR = g.B_CNYSUBTOTAL,
                    KOSTL = y.B_COSTCENTER,
                    SGTXT = g.B_CATEGORYNUMBER,
                    AUFNR = g.B_PROJECTNAME,
                    POSID = g.B_BUDGETNUMBER,
                    b_TaxRate = g.B_TAXRATE,
                    b_Tax = g.B_TAX,
                    b_TaxFreeAmount = g.B_TAXFREEAMOUNT,
                    b_StaffNo = y.B_STAFFNO
                }).ToList();
            }

            if (datas != null && datas.Count > 0)
            {
                foreach (var entity in datas)
                {
                    if (!string.IsNullOrEmpty(entity.BUKRS))
                    {
                        entity.BUKRS = entity.BUKRS.Substring(0, entity.BUKRS.IndexOf('('));
                    }

                    if (entity.closed_date != null)
                    {
                        entity.BLDAT = entity.closed_date.GetValueOrDefault().ToString("yyyyMMdd");
                        entity.BUDAT = entity.closed_date.GetValueOrDefault().ToString("yyyyMMdd");
                    }
                    else
                    {
                        entity.BLDAT = DateTime.Now.ToString("yyyyMMdd");
                        entity.BUDAT = DateTime.Now.ToString("yyyyMMdd");
                    }

                    if (entity.PROTYP == "Project")
                    {
                        entity.PROTYP = "P";
                    }
                    else
                    {
                        entity.PROTYP = "E";
                    }

                    //根据费用名称获取 科目编号
                    var categoryItem = ExpenseCategoryBll.GetExpenseCategoryByName(inn, entity.SGTXT);
                    if (!categoryItem.isError())
                    {
                        //科目代码
                        string hkont = categoryItem.getItemByIndex(0).getProperty("b_corresponsubject");
                        entity.HKONT = hkont;
                    }

                    //根据项目名称获取项目编号
                    var b_ProjectItem = ProjectManageDA.GetProjectManageByName(inn, entity.AUFNR);
                    if (!b_ProjectItem.isError())
                    {
                        string b_projectrecordno = b_ProjectItem.getItemByIndex(0).getProperty("b_projectrecordno");
                        entity.AUFNR = b_projectrecordno;
                    }
                }
            }
            return(datas);
        }
        /// <summary>
        /// 上传项目信息
        /// </summary>
        /// <returns></returns>
        public JsonResult UploadProjectManageFile()
        {
            var retModel = new JsonReturnModel();

            try
            {
                if (Request.Files == null || Request.Files.Count == 0)
                {
                    retModel.AddError("errorMessage", Common.GetLanguageValueByParam("请选择您要上传的附件!", "PRCommon", "PRItemType", Userinfo.language));
                    return(Json(retModel, JsonRequestBehavior.AllowGet));
                }
                HttpPostedFileBase prfile   = Request.Files[0];
                string             fileName = prfile.FileName.Substring(prfile.FileName.LastIndexOf("\\") + 1, prfile.FileName.Length - (prfile.FileName.LastIndexOf("\\")) - 1);

                if (!fileName.ToLower().Contains(".xls") && !fileName.ToLower().Contains(".xlsx"))
                {
                    retModel.AddError("errorMessage", "只能上传Excel文件!");
                    return(Json(retModel, JsonRequestBehavior.AllowGet));
                }
                //保存上传文件到指定目录
                string filePath = ConfigurationManager.AppSettings["UploadPath"] + fileName;
                prfile.SaveAs(filePath);

                //获取数据库 所有用户信息
                List <USER>            allUser    = UserBll.GetAllUserInfo();
                List <B_PROJECTMANAGE> allProject = ProjectManageBll.GetAllProjectInfo();
                List <B_PROJECTMANAGE> list       = new List <B_PROJECTMANAGE>();

                using (FileStream fs = new FileStream(filePath, FileMode.Open))
                {
                    IWorkbook workbook = null;

                    if (fileName.ToLower().Contains(".xlsx"))
                    {
                        workbook = new XSSFWorkbook(fs);
                    }
                    else
                    {
                        workbook = new HSSFWorkbook(fs);
                    }
                    ISheet sheet = workbook.GetSheetAt(0);

                    int rowNum = sheet.PhysicalNumberOfRows;

                    //获取整个项目信息
                    List <B_ORGANIZATIONALSTRUCTURE> dataList = OrganizationalStructureBll.GetOrganizationalStructureList();

                    for (int i = 0; i < rowNum; i++)
                    {
                        IRow row = sheet.GetRow(i);
                        if (i != 0)
                        {
                            B_PROJECTMANAGE model = new B_PROJECTMANAGE();
                            model.B_PROJECTRECORDNO = row.GetCell(0) != null?row.GetCell(0).ToString().Trim() : "";

                            model.B_PROJECTNAME = row.GetCell(1) != null?row.GetCell(1).ToString().Trim() : "";

                            model.B_PMTORPATLEADER = row.GetCell(2) != null?row.GetCell(2).ToString().Trim() : "";

                            model.B_PROJECTMANAGER = row.GetCell(3) != null?row.GetCell(3).ToString().Trim() : "";

                            model.B_PROJECTDIRECTOR = row.GetCell(4) != null?row.GetCell(4).ToString().Trim() : "";

                            model.B_PROJECTVP = row.GetCell(5) != null?row.GetCell(5).ToString().Trim() : "";

                            model.B_ISINUSE = row.GetCell(6) != null?row.GetCell(6).ToString().Trim() : "";

                            //判断输入的项目编号是否存在
                            if (ProjectManageDA.isExistProjectRecordNo(inn, model.B_PROJECTRECORDNO, model.id))
                            {
                                retModel.AddError("errorMessage", i + 1 + "行1列输入的项目编号已经存在!");
                                return(Json(retModel, JsonRequestBehavior.AllowGet));
                            }

                            //验证输入的项目名称是否已经存在
                            if (ProjectManageDA.GetProjectManageByName(inn, model.B_PROJECTNAME, model.id))
                            {
                                retModel.AddError("errorMessage", i + 1 + "行2列输入的项目名称已经存在!");
                                return(Json(retModel, JsonRequestBehavior.AllowGet));
                            }

                            //判断的PMT/PAT Leader是否存在
                            if (!string.IsNullOrEmpty(model.B_PMTORPATLEADER))
                            {
                                var Leader = allUser.Where(x => x.LOGIN_NAME.ToUpper() == model.B_PMTORPATLEADER.ToUpper()).FirstOrDefault();
                                if (Leader == null)
                                {
                                    retModel.AddError("errorMessage", i + 1 + "行3列上传的PMT/PAT经理不存在!");
                                    return(Json(retModel, JsonRequestBehavior.AllowGet));
                                }
                                else
                                {
                                    model.B_PMTORPATLEADER = Leader.FIRST_NAME;
                                    var itemLeader = IdentityDA.GetIdentityByKeyedName(inn, model.B_PMTORPATLEADER);
                                    model.B_PMTORPATLEADERID = itemLeader.getProperty("id");
                                }
                            }

                            //判断项目经理是否存在
                            if (!string.IsNullOrEmpty(model.B_PROJECTMANAGER))
                            {
                                var Leader = allUser.Where(x => x.LOGIN_NAME.ToUpper() == model.B_PROJECTMANAGER.ToUpper()).FirstOrDefault();
                                if (Leader == null)
                                {
                                    retModel.AddError("errorMessage", i + 1 + "行4列上传的项目经理不存在!");
                                    return(Json(retModel, JsonRequestBehavior.AllowGet));
                                }
                                else
                                {
                                    model.B_PROJECTMANAGER = Leader.FIRST_NAME;
                                    var itemManager = IdentityDA.GetIdentityByKeyedName(inn, model.B_PROJECTMANAGER);
                                    model.B_PROJECTMANAGERID = itemManager.getProperty("id");
                                }
                            }

                            //判断上传的总监是否存在
                            if (!string.IsNullOrEmpty(model.B_PROJECTDIRECTOR))
                            {
                                var Leader = allUser.Where(x => x.LOGIN_NAME.ToUpper() == model.B_PROJECTDIRECTOR.ToUpper()).FirstOrDefault();
                                if (Leader == null)
                                {
                                    retModel.AddError("errorMessage", i + 1 + "行5列上传的总监不存在!");
                                    return(Json(retModel, JsonRequestBehavior.AllowGet));
                                }
                                else
                                {
                                    model.B_PROJECTDIRECTOR = Leader.FIRST_NAME;
                                    var itemDirector = IdentityDA.GetIdentityByKeyedName(inn, model.B_PROJECTDIRECTOR);
                                    model.B_PROJECTDIRECTORID = itemDirector.getProperty("id");
                                }
                            }

                            //判断上传的VP是否存在
                            if (!string.IsNullOrEmpty(model.B_PROJECTVP))
                            {
                                var Leader = allUser.Where(x => x.LOGIN_NAME.ToUpper() == model.B_PROJECTVP.ToUpper()).FirstOrDefault();
                                if (Leader == null)
                                {
                                    retModel.AddError("errorMessage", i + 1 + "行6列上传的VP不存在!");
                                    return(Json(retModel, JsonRequestBehavior.AllowGet));
                                }
                                else
                                {
                                    model.B_PROJECTVP = Leader.FIRST_NAME;
                                }
                            }
                            list.Add(model);
                        }
                    }

                    list = list.Distinct().ToList();

                    //把数据添加到数据库中
                    if (list != null && list.Count > 0)
                    {
                        for (int i = 0; i < list.Count; i++)
                        {
                            var             item          = list[i];
                            B_PROJECTMANAGE ProManagerObj = allProject.Where(x => item.B_PROJECTRECORDNO.ToUpper() == item.B_PROJECTNAME.ToUpper()).First();
                            var             promanager    = inn.newItem("b_ProjectManage", "add");
                            promanager.setProperty("b_projectrecordno", item.B_PROJECTRECORDNO);
                            promanager.setProperty("b_projectname", item.B_PROJECTNAME);
                            promanager.setProperty("b_pmtorpatleaderid", item.B_PMTORPATLEADERID);
                            promanager.setProperty("b_pmtorpatleader", item.B_PMTORPATLEADER);
                            promanager.setProperty("b_projectmanagerid", item.B_PROJECTMANAGERID);
                            promanager.setProperty("b_projectmanager", item.B_PROJECTMANAGER);
                            promanager.setProperty("b_projectdirectorid", item.B_PROJECTDIRECTORID);
                            promanager.setProperty("b_projectdirector", item.B_PROJECTDIRECTOR);
                            promanager.setProperty("b_projectvp", item.B_PROJECTVP);
                            promanager.setProperty("b_isinuse", item.B_ISINUSE);
                            var result = promanager.apply();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                retModel.AddError("errorMessage", ex.Message);
            }
            return(Json(retModel, JsonRequestBehavior.AllowGet));
        }
        /// <summary>
        /// 保存数据
        /// </summary>
        /// <returns></returns>
        public JsonResult SaveProjectManage(ProjectManageModel model)
        {
            var retModel = new JsonReturnModel();

            try
            {
                //判断输入的项目编号是否存在
                if (ProjectManageDA.isExistProjectRecordNo(inn, model.b_ProjectRecordNo, model.id))
                {
                    retModel.AddError("errorMessage", "输入的项目编号已经存在!");
                    return(Json(retModel, JsonRequestBehavior.AllowGet));
                }


                //验证输入的项目名称是否已经存在
                if (ProjectManageDA.GetProjectManageByName(inn, model.b_ProjectName, model.id))
                {
                    retModel.AddError("errorMessage", "输入的项目名称已经存在!");
                    return(Json(retModel, JsonRequestBehavior.AllowGet));
                }


                //验证输入的PMT/PAT Leader 是否存在
                var itemLeader = IdentityDA.GetIdentityByKeyedName(inn, model.b_PmtOrPatLeader);
                if (itemLeader.isError())
                {
                    retModel.AddError("errorMessage", "输入的PMT/PAT Leader不存在!");
                    return(Json(retModel, JsonRequestBehavior.AllowGet));
                }
                model.b_PmtOrPatLeaderId = itemLeader.getProperty("id");


                //验证输入的项目经理是否存在
                var projectManager = IdentityDA.GetIdentityByKeyedName(inn, model.b_ProjectManager);
                if (projectManager.isError())
                {
                    retModel.AddError("errorMessage", "输入的项目经理不存在!");
                    return(Json(retModel, JsonRequestBehavior.AllowGet));
                }
                model.b_ProjectManagerId = projectManager.getProperty("id");



                //验证输入的项目总监 是否存在
                var itemDirector = IdentityDA.GetIdentityByKeyedName(inn, model.b_ProjectDirector);
                if (itemDirector.isError())
                {
                    retModel.AddError("errorMessage", "输入的项目总监不存在!");
                    return(Json(retModel, JsonRequestBehavior.AllowGet));
                }
                model.b_ProjectDirectorId = itemDirector.getProperty("id");

                //验证输入的项目VP 是否存在
                var itemProjectVp = IdentityDA.GetIdentityByKeyedName(inn, model.b_ProjectVP);
                if (itemProjectVp.isError())
                {
                    retModel.AddError("errorMessage", "输入的项目VP不存在!");
                    return(Json(retModel, JsonRequestBehavior.AllowGet));
                }

                Item item = null;
                if (string.IsNullOrEmpty(model.id))
                {
                    item = inn.newItem("B_PROJECTMANAGE", "add");
                }
                else
                {
                    item = inn.newItem("B_PROJECTMANAGE", "edit");
                    item.setAttribute("id", model.id);
                }
                item.setProperty("b_projectrecordno", model.b_ProjectRecordNo);
                item.setProperty("b_projectname", model.b_ProjectName);
                item.setProperty("b_pmtorpatleader", model.b_PmtOrPatLeader);
                item.setProperty("b_projectdirector", model.b_ProjectDirector);
                item.setProperty("b_projectdirectorid", model.b_ProjectDirectorId);
                item.setProperty("b_pmtorpatleaderid", model.b_PmtOrPatLeaderId);
                item.setProperty("b_projectmanagerid", model.b_ProjectManagerId);
                item.setProperty("b_projectmanager", model.b_ProjectManager);
                item.setProperty("b_isinuse", model.b_IsInUse);
                item.setProperty("b_projectvp", model.b_ProjectVP);
                item.setProperty("b_sort", model.b_Sort.ToString());
                item.setProperty("b_applicablecompany", model.b_ApplicableCompany);
                var result = item.apply();
                if (result.isError())
                {
                    retModel.AddError("errorMessage", result.getErrorString());
                }
            }
            catch (Exception ex)
            {
                retModel.AddError("errorMessage", ex.Message);
            }
            return(Json(retModel, JsonRequestBehavior.AllowGet));
        }