protected void btnSave_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(ddlCanTransferEmp.SelectedValue)) { ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "alert('请选择需要转移到的员工!');", true); return; } try { if (Convert.ToDecimal(txtProportion.Text.Trim()) > 100) { ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "alert('比例不能超过100%!');", true); return; } if (Convert.ToDecimal(txtAmount.Text.Trim()) > Convert.ToDecimal(hidAmount.Value)) { ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "alert('不能超过原始金额!');", true); return; } } catch (Exception ex0) { ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "alert('数值不正确!');", true); return; } // 声明变量 EmployeeAccountBLL eaBll = new EmployeeAccountBLL(); // 任务ID string prjID = Request.QueryString["prjID"].ToString(); // 当前分部领导 empId string parentEmployeeID = Convert.ToString(Request.QueryString["parentEmployeeID"]); // 需要转移对象的 empId string employeeID = ddlCanTransferEmp.SelectedValue; // 移动目录 Employee empParent = empBll.GetModel(parentEmployeeID); string parentEmpNo = empParent.EMPLOYEENO; Employee empToTransfer = empBll.GetModel(employeeID); string transferToEmpNo = empToTransfer.EMPLOYEENO; FileCategoryBLL fcBll = new FileCategoryBLL(); int errCode = 0; string returnFolderName = string.Empty; string taskRootFolder = string.Empty; string taskFolderWithoutEmpNo = string.Empty; fcBll.GetFilePathByProjectId(prjID, string.Empty, string.Empty, false, out returnFolderName, out taskRootFolder, out taskFolderWithoutEmpNo, out errCode); string sourceDirectory = string.Format(taskFolderWithoutEmpNo, parentEmpNo); string destinctDirectory = string.Format(taskFolderWithoutEmpNo, transferToEmpNo); try { Directory.Move(sourceDirectory, destinctDirectory); } catch (Exception ex) { LogHelper.WriteLine("|" + sourceDirectory + "|" + destinctDirectory); LogHelper.WriteLine(ex.Message + ex.StackTrace); ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "alert('目录移动失败!');", true); return; } // 更新部门领导账户,按照配置比例计算出金额后累加到分部领导账户 decimal proportion = 0; ProjectProportion projectProportion = new ProjectProportionBLL().GetModelList(" projectId = '" + prjID + "'").FirstOrDefault(); if (projectProportion != null) { proportion = projectProportion.PROPORTION ?? 0m; } else { EmployeeProportion empProportion = new EmployeeProportionBLL().GetModelList(" AND employeeId = '" + parentEmployeeID + "'").FirstOrDefault(); proportion = empProportion.PROPORTION ?? 0m; } decimal amountToLeader = Convert.ToDecimal(Request.QueryString["amount"]); EmployeeAccount empAcctParent = new EmployeeAccount(); empAcctParent = eaBll.GetModelList(" employeeId = '" + parentEmployeeID + "'").FirstOrDefault(); empAcctParent.AMOUNT += (amountToLeader * proportion); empAcctParent.LASTUPDATEDATE = DateTime.Now; eaBll.Update(empAcctParent); // 添加一条交易记录 TransactionDetails transactionDetails = new TransactionDetails(); transactionDetails.ID = Guid.NewGuid().ToString(); transactionDetails.TRANSACTIONAMOUNT = amountToLeader * proportion; transactionDetails.TRANSACTIONDESCRIPTION = "分部领导提成"; transactionDetails.TRANSACTIONPROPORTION = proportion; transactionDetails.TRANSACTIONTYPE = 6; transactionDetails.TRANSACTIONDATE = DateTime.Now; transactionDetails.PLANDATE = DateTimeHelper.GetFirstDateOfCurrentMonth(); transactionDetails.EMPLOYEEID = parentEmployeeID; transactionDetails.PROJECTID = prjID; transactionDetails.ISDELETED = false; tdBll.Add(transactionDetails); //// 转移到的员工 先计入一条状态为已删除的数据,后续待任务完成时再调整:需要待任务完成后,再计入账户 transactionDetails = new TransactionDetails(); transactionDetails.ID = Guid.NewGuid().ToString(); transactionDetails.TRANSACTIONAMOUNT = Convert.ToDecimal(txtAmount.Text.Trim()); transactionDetails.TRANSACTIONDESCRIPTION = "项目提成(暂存)"; transactionDetails.TRANSACTIONTYPE = 7; transactionDetails.TRANSACTIONDATE = DateTime.Now; transactionDetails.PLANDATE = DateTimeHelper.GetFirstDateOfCurrentMonth(); transactionDetails.EMPLOYEEID = employeeID; transactionDetails.PROJECTID = prjID; transactionDetails.ISDELETED = true; tdBll.Add(transactionDetails); //EmployeeAccount empAcctTransferTo = new EmployeeAccount(); //empAcctTransferTo = eaBll.GetModelList(" employeeID = '" + employeeID + "'").FirstOrDefault(); //empAcctTransferTo.AMOUNT += Convert.ToDecimal(txtAmount.Text.Trim()); //empAcctTransferTo.LASTUPDATEDATE = DateTime.Now; //eaBll.Update(empAcctTransferTo); // 更新任务完成人 ProjectSharing ps = new ProjectSharing(); ps = psBll.GetModelList(" projectId = '" + prjID + "' AND FInishedperson = '" + parentEmployeeID + "'").FirstOrDefault(); ps.FINISHEDPERSON = employeeID; if (psBll.Update(ps)) { ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "alert('转移成功!');window.top.location.href='/employeeHome.aspx';", true); return; } ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "alert('更新完成人失败!');window.top.location.href='/employeeHome.aspx';", true); return; }
/// <summary> /// 添加员工 /// </summary> private void AddEmployee() { string employeeNO = txtEmployeeNo.Text.Trim(); //员工编号 try { //判断编号是否已经使用 bool isExist = eBll.IsExist(employeeNO); if (isExist) { ExecuteScript("AlertDialog('员工编号已存在!', null);"); return; } string name = txtName.Text.Trim(); //员工姓名 int gender = 0; //员工性别 if (rdbFemale.Checked) { gender = 1; } //出生日期 string birthdate = txtBirthDate.Text.Trim(); Employee emp = new Employee(); emp.ID = Guid.NewGuid().ToString(); emp.EMPLOYEENO = employeeNO; //密码加密 emp.PASSWORD = AES.Encrypt("666666", "0512000000000512"); //姓名 emp.NAME = name == null ? null : name; //性别 emp.SEX = gender == 0; if (!string.IsNullOrEmpty(birthdate)) { emp.BIRTHDATE = Convert.ToDateTime(birthdate); } //手机号码 emp.MOBILEPHONE = txtMobilePhone.Text.Trim(); //转正日期 emp.TOREGULARDATE = Convert.ToDateTime(txtToRegularDate.Text.Trim()); //员工类型,0:总经办,1:客服,2:造价员 decimal userType = 0; //总经办 if (rdbGMO.Checked) { userType = 0; } //客服 else if (rdbCustomerService.Checked) { userType = 1; } //造价员 else if (rdbEmployee.Checked) { userType = 2; } // 其他用户类型 else if (rdbOtherUserType.Checked) { if (!string.IsNullOrEmpty(txtUserType.Text.Trim())) { userType = Convert.ToDecimal(txtUserType.Text.Trim()); } } emp.TYPE = userType; emp.ISBRANCHLEADER = rblIsBranchLeader.SelectedValue == "1"; emp.ISEXTERNAL = rblIsExternal.SelectedValue == "1"; //启用状态 emp.AVAILABLE = 1; bool flag = eBll.Add(emp); //本系统添加成功 if (flag) { if (rblAddRole.SelectedValue == "1") { // 添加角色 EmployeeRole empRole = new EmployeeRole(); empRole.ID = Guid.NewGuid().ToString(); empRole.EMPLOYEEID = emp.ID; // 1 客服 if (emp.TYPE == 1) { empRole.ROLEID = "fea3a06f-6d97-45d3-93f7-b145c158eb27"; } // 2 工程师 else if (emp.TYPE == 2) { empRole.ROLEID = "2B43010866666af2b73d78c35288d565"; } if (!string.IsNullOrEmpty(empRole.ROLEID)) { new EmployeeRoleBLL().Add(empRole); } } // 创建员工编号同名目录 string rootPath = Convert.ToString(ConfigurationManager.AppSettings["employeePath"]); string employeeFolder = Path.Combine(rootPath, emp.EMPLOYEENO); if (!Directory.Exists(employeeFolder)) { Directory.CreateDirectory(employeeFolder); } // 2018-05-19 添加 // 添加员工的任务分成配置 EmployeeProportionBLL epBll = new EmployeeProportionBLL(); EmployeeProportion empProportion = new EmployeeProportion(); empProportion.ID = Guid.NewGuid().ToString(); empProportion.EMPLOYEEID = emp.ID; empProportion.PROPORTION = 0.3m; empProportion.PARENTEMPLOYEEID = null; empProportion.ISBRANCHLEADER = emp.ISBRANCHLEADER; epBll.Add(empProportion); // 任务分成配置结束 // 2018-05-20 添加 // 添加员工的默认账户 EmployeeAccount empAcct = new EmployeeAccount(); empAcct.ID = Guid.NewGuid().ToString(); empAcct.EMPLOYEEID = emp.ID; empAcct.AMOUNT = 0m; empAcct.PAIDAMOUNT = 0m; empAcct.SURPLUSAMOUNT = 0m; empAcct.OTHERSAMOUNT = 0m; empAcct.CREATEDATE = DateTime.Now; empAcct.LASTUPDATEDATE = DateTime.Now; EmployeeAccountBLL empAcctBll = new EmployeeAccountBLL(); empAcctBll.Add(empAcct); // 员工账户结束 #region 调用钉钉接口,添加员工到钉钉 //如果选择了钉钉同步创建 if (Request.Form["sync"] == "rdbSync") { string accessTokenResult = DingTalkHelper.GetAccessToken(); JObject jObj = JObject.Parse(accessTokenResult); string errcode = jObj["errcode"].ToString(); string accessToken = string.Empty; if (errcode == "0") { accessToken = jObj["access_token"].ToString(); string postUrl = string.Format("https://oapi.dingtalk.com/user/create?access_token={0}", accessToken); //岗位 string position = string.Empty; //钉钉系统中对应的部门ID string departmentid = string.Empty; ////总经办 //if (rdbGMO.Checked) //{ // position = rdbGMO.Text; // departmentid = "37037510"; //} ////客服 //else if (rdbCustomerService.Checked) //{ // position = rdbCustomerService.Text; // departmentid = "36958636"; //} ////造价员 //else if (rdbEmployee.Checked) //{ // position = rdbEmployee.Text; // departmentid = "36961466"; //} departmentid = "110817907"; //\"orderInDepts\":\"{1:10}\", \"remark\":\"\", \"tel\":\"010-12333\", \"workPlace\":\"\", \"isHide\":false, \"isSenior\":false string param = "{\"name\":\"" + emp.NAME + "\", \"department\":[" + departmentid + "], \"position\":\"" + position + "\", \"mobile\":\"" + emp.MOBILEPHONE + "\", \"email\":\"" + emp.EMAIL + "\", \"jobnumber\":\"" + emp.EMPLOYEENO + "\",}"; object userCreateResult = WebServiceHelper.Post(postUrl, param); JObject jCreateResult = JObject.Parse(userCreateResult.ToString()); //返回码 errcode = jCreateResult["errcode"].ToString(); //返回消息 string errmsg = jCreateResult["errmsg"].ToString(); //返回码为0,成功 if (errcode == "0") { string dingTalkUserId = jCreateResult["userid"].ToString(); emp.DINGTALKUSERID = dingTalkUserId; try { //关联钉钉UserId bool uptFlag = eBll.Update(emp); //关联成功 if (uptFlag) { //弹出提示并刷新当前页面 ExecuteScript("alert('添加成功!');window.location.href='/Pages/Admin/EmployeeAdd?UserId=" + emp.ID + "'"); } else { ExecuteScript("AlertDialog('关联钉钉UserId失败!', null);"); } } //本地OA更新钉钉UserId失败 catch (Exception ex) { LogHelper.WriteLine("自动关联钉钉UserId失败。" + ex.Message + ex.StackTrace); ExecuteScript("AlertDialog('操作失败!', null)"); } } else { LogHelper.WriteLine("用户在OA系统创建成功,但在钉钉系统创建失败,原因:" + errmsg); //ExecuteScript("AlertDialog('OA系统已成功创建用户,但该用户在钉钉系统中创建失败,请人工在钉钉系统中添加。<br />钉钉系统中添加成功后,需要将其系统中的UserId填写并关联到本系统中。', null)"); ExecuteScript("alert('OA系统已成功创建用户,但该用户在钉钉系统中创建失败,请人工在钉钉系统中添加。钉钉系统中添加成功后,需要将其系统中的UserId填写并关联到本系统中。');window.location.href='EmployeeAdd?UserId=" + emp.ID + "';"); } } else { ExecuteScript("AlertDialog('用户已在本系统中成功创建,但获取钉钉token失败,并未在钉钉系统中成功添加用户,请人工添加!', null)"); } } else { ExecuteScript("alert('本系统添加成功但尚未关联钉钉UserId,请尽快关联!');window.location.href='/Pages/Admin/EmployeeAdd?UserId=" + emp.ID + "';"); } #endregion } //添加失败 else { ExecuteScript("AlertDialog('添加失败!', null)"); } } catch (Exception ex) { string exMsg = ex.Message; LogHelper.WriteLine(string.Format("员工添加出错。" + exMsg + ex.StackTrace)); //写入文本日志 string script = string.Format("AlertDialog('服务器错误,请联系管理员!<p>{0}</p>'), null", exMsg); ExecuteScript(script); } }