PersonServer.cs 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842
  1. using QWPlatform.IService;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using QWPlatform.DataIntface;
  7. using QWPlatform.SystemLibrary;
  8. using PMS.BusinessModels.ProManager;
  9. using System.Data;
  10. using PMS.EntityModels.PersonManager;
  11. using QWPlatform.IService.ServiceInterface;
  12. using PMS.BusinessModels.Person;
  13. using System.Security.Cryptography;
  14. using PMS.EntityModels.SysManager;
  15. using QWPlatform.SystemLibrary.LogManager;
  16. using PMS.BusinessModels.Account;
  17. namespace PMS.DBService.PersonManager
  18. {
  19. public class PersonService : DataServiceBase
  20. {
  21. protected override void DBFctory(string conName)
  22. {
  23. base.DBFctory(conName);
  24. }
  25. #region 修改系统账户和系统角色关系表的操作
  26. public int Update_Account(PersonBusinessModel model, string role)
  27. {
  28. try
  29. {
  30. int x = 0;
  31. //根据人员ID获取账户信息
  32. DataTable dt = GetSysAccountInfo(model.ID);
  33. var XTID = dt.Rows[0]["ID"];
  34. var Pwd = dt.Rows[0]["密码"].ToString();
  35. string Account = dt.Rows[0]["账户"].ToString();
  36. if (Pwd != model.password1)
  37. {
  38. Pwd = QWPlatform.SystemLibrary.Utils.Strings.MD5(model.password1);//密码加密
  39. }
  40. if (Account == model.account)
  41. {
  42. //修改系统账户表
  43. x = UpdateBuilder.Update("系统账户")
  44. .Column("密码", Pwd)
  45. .Column("邮箱", model.email)
  46. .Column("姓名", model.name.Trim())
  47. .Where("ID", XTID)
  48. .Execute();
  49. }
  50. else
  51. {
  52. //保存信息前先判断输入的账号是否已经使用
  53. dt = SelectBuilder.From("系统账户").Columns("*").Where("账户", model.account).Select();
  54. if (dt.Rows.Count > 0)
  55. {
  56. return -1;
  57. }
  58. else
  59. {
  60. //修改系统账户表
  61. x = UpdateBuilder.Update("系统账户")
  62. .Column("密码", Pwd)
  63. .Column("邮箱", model.email)
  64. .Column("姓名", model.name.Trim())
  65. .Column("账户", model.account)
  66. .Column("公司ID", model.channel)
  67. .Where("ID", XTID)
  68. .Execute();
  69. UpdateBuilder.Update("人员信息").Where("ID", model.ID).Column("姓名", model.name.Trim()).Column("联系电话", model.contactPhone).Execute();
  70. }
  71. }
  72. if (x == 1)
  73. {
  74. //先清空账户角色
  75. DeleteBulider.Delete("系统角色关系").Where("账户ID", XTID).Execute();
  76. //修改账户和角色的关系
  77. string[] para = role.ToString().Split(',');
  78. foreach (var row in para)
  79. {
  80. string sql = "select 系统角色关系_ID.nextval from dual";
  81. dt = SqlBuilder.SqlText(sql).Select();
  82. int JSID = int.Parse(dt.Rows[0]["nextval"].ToString());
  83. x = InsertBuilder.Insert("系统角色关系")
  84. .Column("ID",JSID)
  85. .Column("账户ID", XTID)
  86. .Column("角色ID", row)
  87. .Execute();
  88. x = 2;
  89. }
  90. }
  91. return x;
  92. }
  93. catch (Exception ex)
  94. {
  95. Logger.Instance.Error("调用Update_Account时发生异常错误", ex);
  96. return 0;
  97. }
  98. }
  99. #endregion
  100. public DataTable GetPersonByChannel(string id = "")
  101. {
  102. var exe = this.ProcedureBuilder
  103. .Procedure("b_平台管理_权限管理.p_获取项目相关人员信息")
  104. .Paramter("In_项目Id", DBNull.Value)
  105. .Paramter("In_渠道Id", id)
  106. .ParamterOut("Resultlist", true);
  107. exe.Execute();
  108. var dt = exe.ParameterValue<DataTable>("Resultlist");
  109. return dt;
  110. }
  111. public DataTable GetPersonByJob(string Nature = "", string job = "")
  112. {
  113. var execute = this.ProcedureBuilder
  114. .Procedure("B_基础管理_机构人员.p_人员信息条件_Select")
  115. .Paramter("性质_In", Nature)
  116. .Paramter("职务_In", job)
  117. .ParamterOut("Resultlist", true);
  118. execute.Execute();
  119. var dt = execute.ParameterValue<DataTable>("Resultlist");
  120. return dt;
  121. }
  122. #region 删除人员
  123. public int Delete_Person(string id)
  124. {
  125. try
  126. {
  127. //修改人员信息的是否删除字段
  128. int r = UpdateBuilder.Update("人员信息").Column("是否删除", -1).Column("联系电话",DBNull.Value).Where("ID", id).Execute();
  129. if (r == 1)
  130. {
  131. //先判断该人员是否拥有账户
  132. DataTable dt = SelectBuilder.From("系统账户").Where("人员ID", id).Columns("ID").Select();
  133. if (dt.Rows.Count > 0)
  134. {
  135. //清空账号相关信息
  136. string AccountID= SelectBuilder.From("系统账户").Columns("ID").Where("人员ID", id).Select().Rows[0]["ID"].ToString();
  137. DeleteBulider.Delete("系统账户权限").Where("账户ID", AccountID).Execute();
  138. DeleteBulider.Delete("系统角色关系").Where("账户ID", AccountID).Execute();
  139. DeleteBulider.Delete("系统账户").Where("ID", AccountID).Execute();
  140. }
  141. return 1;
  142. }
  143. return 0;
  144. }
  145. catch (Exception ex)
  146. {
  147. Logger.Instance.Error("调用Delete_Person时发生异常错误", ex);
  148. return 0;
  149. }
  150. }
  151. #endregion
  152. #region 批量删除
  153. public int Delete_Batch(string id)
  154. {
  155. try
  156. {
  157. var exe = this.ProcedureBuilder
  158. .Procedure("B_基础管理_机构人员.p_人员信息条件_BatchDelete")
  159. .Paramter("人员ID_In", id)
  160. .ParamterOut("Resultlist", DbType.Double, 0);
  161. exe.Execute();
  162. var count = exe.ParameterValue<Decimal>("Resultlist");
  163. return int.Parse(count.ToString());
  164. }
  165. catch (Exception ex)
  166. {
  167. Logger.Instance.Error("调用Delete_Batch时发生异常错误", ex);
  168. return 0;
  169. }
  170. }
  171. #endregion
  172. #region 批量创建账户
  173. /// <summary>
  174. /// 传人员ID字符串进行批量创建账户
  175. /// </summary>
  176. /// <param name="id"></param>
  177. /// <returns></returns>
  178. public int Add_Account_Batch(string id)
  179. {
  180. var exe = this.ProcedureBuilder
  181. .Procedure("B_基础管理_机构人员.p_人员信息条件_BatchAdd")
  182. .Paramter("人员ID_In", id)
  183. .ParamterOut("Resultlist", DbType.Double, 0);
  184. exe.Execute();
  185. var count = exe.ParameterValue<Decimal>("Resultlist");
  186. return int.Parse(count.ToString());
  187. }
  188. //添加数据权限
  189. public bool addAccountAuthod(int AccountId, string PersonId)
  190. {
  191. var result = false;
  192. //获取人员相关信息
  193. var dt = this.SelectBuilder.Columns("性质,渠道ID,项目ID").From("人员信息").Where("ID", PersonId).Select();
  194. var PersonProperty = dt.Rows[0].GetValueByName<int>("性质");
  195. var ChannelId = dt.Rows[0].GetValueByName<string>("渠道ID");
  196. var Project = dt.Rows[0].GetValueByName<string>("项目ID");
  197. ///如果为总部,分配全部渠道
  198. if (ChannelId == "4A9B2065-65AB-4411-B528-968D26737EAE")
  199. {
  200. //获取所有渠道
  201. var AllChannelId = this.SelectBuilder.Columns("ID").From("渠道信息").Where("状态=1").Select();
  202. var results = 0;
  203. foreach (DataRow dr in AllChannelId.Rows)
  204. {
  205. var Channels = dr.GetValueByName<string>("ID");
  206. //获取渠道下所有项目
  207. var sql = @"select Wm_Concat(t.ID) AS 项目信息 from 项目信息 t where t.渠道ID=:id and t.启用=1";
  208. var Projects = this.SqlBuilder.SqlText(sql).Parameters("id", Channels).Select<string>();
  209. var model = new AccountDataModel(this.DataFactoryObject)
  210. {
  211. GSID = Channels,
  212. ZHID = AccountId,
  213. XMID = Projects
  214. };
  215. results += model.Insert();
  216. }
  217. return results > 0;
  218. }
  219. //其他人员性质
  220. if (PersonProperty == 1 || PersonProperty == 2 || PersonProperty == 5)
  221. {
  222. //获取渠道下所有项目
  223. var sql = @"select Wm_Concat(t.ID) AS 项目信息 from 项目信息 t where t.渠道ID=:id and t.启用=1";
  224. var ProjectAll = this.SqlBuilder.SqlText(sql).Parameters("id", ChannelId).Select<string>();
  225. var model = new AccountDataModel(this.DataFactoryObject)
  226. {
  227. GSID = ChannelId,
  228. ZHID = AccountId,
  229. XMID = ProjectAll
  230. };
  231. result = model.Insert() > 0;
  232. }
  233. ///如果为医院管理员
  234. else if (PersonProperty == 4)
  235. {
  236. var modelf = new AccountDataModel(this.DataFactoryObject)
  237. {
  238. GSID = ChannelId,
  239. ZHID = AccountId,
  240. XMID = Project
  241. };
  242. result = modelf.Insert() > 0;
  243. }
  244. //如果为客户
  245. else
  246. {
  247. result = true;
  248. }
  249. return result;
  250. }
  251. #endregion
  252. #region 修改人员
  253. public int SaveUpdatePerson(PersonBusinessModel model)
  254. {
  255. using (var tran = this.DBTransaction.BeginTrans())
  256. {
  257. try
  258. {
  259. int x = 0;
  260. string Befor_Phone = SelectBuilder.From("人员信息").Columns("联系电话").Where("ID", model.ID).Select().Rows[0]["联系电话"].ToString();
  261. DataTable dt = SelectBuilder.From("系统账户").Columns("ID").Where("账户", model.contactPhone).Select();
  262. //判断修改后的手机号是否已经被当做账户使用
  263. if (Befor_Phone != model.contactPhone && dt.Rows.Count > 0)
  264. {
  265. return -1;
  266. }
  267. x = UpdateBuilder.Update("人员信息")
  268. .Where("ID", model.ID)
  269. .Column("姓名", model.name.Trim())
  270. .Column("简码", model.simple)
  271. .Column("性别", model.sex)
  272. .Column("出生日期", model.birthDate)
  273. .Column("职务", model.job)
  274. .Column("状态", 1)
  275. .Column("入职时间", model.entryDate)
  276. .Column("说明", model.explain)
  277. .Column("联系电话", model.contactPhone)
  278. .Column("QQ", model.qq)
  279. .Column("微信", model.weChat)
  280. .Column("电子邮箱", model.email)
  281. .Column("性质", model.nature)
  282. .Column("渠道ID", model.channel)
  283. .Column("项目ID", model.project)
  284. .Column("站点ID", model.station)
  285. .Execute(tran);
  286. if (x == 1)
  287. {
  288. int r = SelectBuilder.From("系统账户").Columns("ID").Where("人员ID", model.ID).Select().Rows.Count;
  289. if (r > 0)
  290. {
  291. x = UpdateBuilder.Update("系统账户").Where("人员ID", model.ID).Column("账户", model.contactPhone).Column("姓名", model.name.Trim()).Execute(tran);
  292. }
  293. }
  294. tran.CommitTrans();
  295. return x;
  296. }
  297. catch (Exception ex)
  298. {
  299. tran.Rollback();
  300. Logger.Instance.Error("调用SaveUpdatePerson时发生异常错误", ex);
  301. return 0;
  302. }
  303. }
  304. }
  305. public int ChangeActive(string id)
  306. {
  307. SqlBuilder.SqlText("update 人员信息 z set z.状态=decode(z.状态,1,2,1) where z.id=:ryid").Parameters("ryid", id).Execute();
  308. return SqlBuilder.SqlText("update 系统账户 z set z.状态=decode(z.状态,1,0,1) where z.人员ID=:ryid").Parameters("ryid", id).Execute();
  309. }
  310. /// <summary>
  311. /// 批量修改
  312. /// </summary>
  313. /// <param name="model"></param>
  314. /// <param name="rYID"></param>
  315. /// <returns></returns>
  316. public int Batch_Save(PersonBusinessModel model, string RYID)
  317. {
  318. return UpdateBuilder.Update("人员信息")
  319. .Where("ID", RYID)
  320. .Column("性别", model.sex)
  321. .Column("出生日期", model.birthDate)
  322. .Column("入职时间", model.entryDate)
  323. .Column("性质", model.nature)
  324. .Column("职务", model.job)
  325. .Column("说明", model.explain)
  326. .Column("项目ID", model.project)
  327. .Column("站点ID", model.station)
  328. .Execute();
  329. }
  330. #endregion
  331. #region 添加人员
  332. public int SaveAddPerson(PersonBusinessModel model)
  333. {
  334. try
  335. {
  336. int r = 0;
  337. var RYID = Guid.NewGuid().ToString(); //人员信息ID
  338. DataTable dt = SelectBuilder.From("人员信息").Columns("*").Where("联系电话", model.contactPhone).Select();
  339. if (dt.Rows.Count != 0)
  340. {
  341. return -1;
  342. }
  343. if(model.entryDate.ToString()== "0001/1/1 0:00:00")
  344. {
  345. model.entryDate = DataBaseBuilder.GetDateTime;
  346. }
  347. if (model.birthDate.ToString() == "0001/1/1 0:00:00")
  348. {
  349. model.birthDate = DataBaseBuilder.GetDateTime;
  350. }
  351. //添加人员信息
  352. r = InsertBuilder.Insert("人员信息")
  353. .Column("ID", RYID)
  354. .Column("姓名", model.name.Trim())
  355. .Column("简码", model.simple)
  356. .Column("性别", model.sex)
  357. .Column("出生日期", model.birthDate)
  358. .Column("职务", model.job)
  359. .Column("状态", 1)
  360. .Column("联系电话", model.contactPhone)
  361. .Column("QQ", model.qq)
  362. .Column("微信", model.weChat)
  363. .Column("电子邮箱", model.email)
  364. .Column("入职时间", model.entryDate)
  365. .Column("说明", model.explain)
  366. .Column("性质", model.nature)
  367. .Column("渠道ID", model.channel)
  368. .Column("项目ID", model.project)
  369. .Column("站点ID", model.station)
  370. .Column("添加时间", this.DataBaseBuilder.GetDateTime)
  371. .Execute();
  372. return r;
  373. }
  374. catch (Exception ex)
  375. {
  376. Logger.Instance.Error("调用SaveAddPerson时发生异常错误", ex);
  377. return 0;
  378. }
  379. }
  380. #endregion
  381. #region 信息查询
  382. /// <summary>
  383. /// 通过产品Code获取项目机构树
  384. /// </summary>
  385. /// <param name="project"></param>
  386. /// <param name="Code"></param>
  387. /// <returns></returns>
  388. public DataTable GetProjectTreeByCode(string project, string Code)
  389. {
  390. var exe = this.ProcedureBuilder
  391. .Procedure("p_基础管理_渠道项目机构.p_项目机构树信息_SelectByCode")
  392. .Paramter("权限项目ID_In", project)
  393. .Paramter("产品编码_In", Code)
  394. .ParamterOut("Resultlist", true);
  395. exe.Execute();
  396. var dt = exe.ParameterValue<DataTable>("Resultlist");
  397. return dt;
  398. }
  399. public DataTable GetProjectCobo(string ChannelID, string project)
  400. {
  401. var exe = this.ProcedureBuilder
  402. .Procedure("p_基础管理_渠道项目机构.p_项目信息Cobo_SelectByQX")
  403. .Paramter("渠道ID_In", ChannelID)
  404. .Paramter("权限项目ID_In", project)
  405. .ParamterOut("Resultlist", true);
  406. exe.Execute();
  407. var dt = exe.ParameterValue<DataTable>("Resultlist");
  408. return dt;
  409. }
  410. public DataTable GetAllProject(string project)
  411. {
  412. var exe = this.ProcedureBuilder
  413. .Procedure("p_基础管理_渠道项目机构.p_所有项目信息Cobo_SelectByQX")
  414. .Paramter("权限项目ID_In", project)
  415. .ParamterOut("Resultlist", true);
  416. exe.Execute();
  417. var dt = exe.ParameterValue<DataTable>("Resultlist");
  418. return dt;
  419. //var sql = @"Select ID, 名称
  420. // From 项目信息
  421. // where 启用=1 and ID in ( "+ project+" )";
  422. //return this.SqlBuilder.SqlText(sql).Select();
  423. }
  424. /// <summary>
  425. /// 根据登录人获取渠道
  426. /// </summary>
  427. /// <param name="model"></param>
  428. /// <returns></returns>
  429. public DataTable GetAll_Channel(string channelID)
  430. {
  431. string QueryString = null;
  432. var exe = this.ProcedureBuilder
  433. .Procedure("B_基础管理_机构人员.p_渠道信息_Select_All")
  434. .Paramter("渠道权限ID_In", channelID)
  435. .Paramter("查询条件_In", QueryString)
  436. .ParamterOut("Resultlist", true);
  437. exe.Execute();
  438. var dt = exe.ParameterValue<DataTable>("Resultlist");
  439. return dt;
  440. }
  441. /// <summary>
  442. /// 根据渠道ID获取人员信息
  443. /// </summary>
  444. /// <param name="id"></param>
  445. /// <param name="page"></param>
  446. /// <param name="rows"></param>
  447. /// <returns></returns>
  448. public string GetAll_PersonInfo(string id, int page, int rows, string query, string nature, string project)
  449. {
  450. var exe = this.ProcedureBuilder
  451. .Procedure("B_基础管理_机构人员.p_人员信息_Select")
  452. .Paramter("查询条件_In", query)
  453. .Paramter("人员性质_In", nature)
  454. .Paramter("项目ID_In", project)
  455. .Paramter("渠道ID_In", id)
  456. .Paramter("开始行_In", page)
  457. .Paramter("结束行_In", rows)
  458. .ParamterOut("total", DbType.Double, 0)
  459. .ParamterOut("Resultlist", true);
  460. exe.Execute();
  461. var dt = exe.ParameterValue<DataTable>("Resultlist");
  462. var total = exe.ParameterValue<decimal>("total");
  463. return dt.ToEasyUIGridJson(int.Parse(total.ToString()));
  464. }
  465. /// 获取角色
  466. /// </summary>
  467. /// <returns></returns>
  468. public DataTable GetRole(int personproperty)
  469. {
  470. string sql;
  471. if (personproperty == 1)
  472. {
  473. sql = "select * from 系统角色 where 公开=1 and 启用=1";
  474. }
  475. else
  476. {
  477. sql = "select * from 系统角色 where 公开=1 and 启用=1 and (id=1 or id=2 or id=3 or id=4 or id=5)";
  478. }
  479. return SqlBuilder.SqlText(sql).Select();
  480. }
  481. /// <summary>
  482. /// 获取项目
  483. /// </summary>
  484. /// <returns></returns>
  485. public DataTable GetProject(string ChannelID, string query, string project)
  486. {
  487. var exe = this.ProcedureBuilder
  488. .Procedure("p_基础管理_渠道项目机构.p_项目信息_SelectByQX")
  489. .Paramter("渠道ID_In", ChannelID)
  490. .Paramter("权限项目ID_In", project)//取消项目授权
  491. .Paramter("查询条件_In", query)
  492. .ParamterOut("Resultlist", true);
  493. exe.Execute();
  494. var dt = exe.ParameterValue<DataTable>("Resultlist");
  495. return dt;
  496. }
  497. /// <summary>
  498. /// 获取项目机构树
  499. /// </summary>
  500. /// <param name="ChannelID"></param>
  501. /// <param name="project"></param>
  502. /// <returns></returns>
  503. public DataTable GetProjectTree(string project)
  504. {
  505. var exe = this.ProcedureBuilder
  506. .Procedure("p_基础管理_渠道项目机构.p_项目机构树信息_SelectByQX")
  507. .Paramter("权限项目ID_In", project)
  508. .ParamterOut("Resultlist", true);
  509. exe.Execute();
  510. var dt = exe.ParameterValue<DataTable>("Resultlist");
  511. return dt;
  512. }
  513. /// <summary>
  514. /// 获取职务
  515. /// </summary>
  516. /// <returns></returns>
  517. public DataTable GetJob(UserInfo user)
  518. {
  519. if (user.PersonProperty == 1)
  520. {
  521. //本部人员
  522. string sql = "select 代码 as ID, 显示名 from 基础编码 where 分类ID='56411293-988F-42CA-8B84-5A34DD37C7E6' and 启用=1";
  523. return SqlBuilder.SqlText(sql).Select();
  524. }
  525. else
  526. {
  527. //渠道人员
  528. string sql = "select 代码 as ID, 显示名 from 基础编码 where 分类ID='56411293-988F-42CA-8B84-5A34DD37C7E6' and 启用=1 and (代码 =5 or 代码=3 or 代码=4 or 代码=8 or 代码=9)";
  529. return SqlBuilder.SqlText(sql).Select();
  530. }
  531. }
  532. /// <summary>
  533. /// 获取机构
  534. /// </summary>
  535. /// <returns></returns>
  536. public DataTable GetStation(string ProjectID)
  537. {
  538. string sql = "select * from 站点信息 where 项目ID=:ProjectID";
  539. return SqlBuilder.SqlText(sql).Parameters("ProjectID", ProjectID).Select();
  540. }
  541. /// <summary>
  542. /// 获取项目
  543. /// </summary>
  544. /// <returns></returns>
  545. public DataTable GetCurrentProject(string id)
  546. {
  547. string sql = "select * from 项目信息 where ID=:id";
  548. return SqlBuilder.SqlText(sql).Parameters("id", id).Select();
  549. }
  550. /// <summary>
  551. /// 根据人员ID获取渠道ID
  552. /// </summary>
  553. /// <param name="id"></param>
  554. /// <returns></returns>
  555. public DataTable GetChannelID(string id)
  556. {
  557. return SelectBuilder.From("人员信息").Columns("*").Where("ID", id).Select();
  558. }
  559. /// <summary>
  560. /// 根据账户ID获取系统账户的角色信息
  561. /// </summary>
  562. /// <returns></returns>
  563. public DataTable GetRoleInfo(string id)
  564. {
  565. //获取系统账户的ID
  566. DataTable dz = GetSysAccountInfo(id);
  567. if (dz.Rows.Count == 0)
  568. {
  569. return null;
  570. }
  571. var ID = dz.Rows[0]["ID"];
  572. //获取系统账户关系的角色ID
  573. string sql = "select * from 系统角色关系 where 账户ID=:ID";
  574. DataTable dt = SqlBuilder.SqlText(sql).Parameters("ID", ID).Select();
  575. return dt;
  576. }
  577. /// <summary>
  578. /// 获取性别
  579. /// </summary>
  580. /// <returns></returns>
  581. public DataTable GetSex()
  582. {
  583. string sql = "select 代码 as ID, 显示名 from 基础编码 where 分类ID='7985483F-7DA1-4BA7-AC97-52EB905B6092' and 启用=1";
  584. return SqlBuilder.SqlText(sql).Select();
  585. }
  586. /// <summary>
  587. /// 获取性质
  588. /// </summary>
  589. /// <returns></returns>
  590. public DataTable GetXZ(int PersonProperty)
  591. {
  592. if (PersonProperty == 1)
  593. {
  594. string sql = "select 代码 as ID, 显示名 from 基础编码 where 分类ID='D3EDEA7A-7F07-4DD3-9A6B-34DB16A6E982' and 启用=1";
  595. return SqlBuilder.SqlText(sql).Select();
  596. }
  597. else
  598. {
  599. string sql = "select 代码 as ID, 显示名 from 基础编码 where 分类ID='D3EDEA7A-7F07-4DD3-9A6B-34DB16A6E982' and 启用=1 and 代码!=1";
  600. return SqlBuilder.SqlText(sql).Select();
  601. }
  602. }
  603. /// <summary>
  604. /// 根据人员ID获取系统账户的信息
  605. /// </summary>
  606. /// <returns></returns>
  607. public DataTable GetSysAccountInfo(string id)
  608. {
  609. string sql = "select * from 系统账户 where 人员ID=:id";
  610. DataTable dt = SqlBuilder.SqlText(sql).Parameters("id", id).Select();
  611. return dt;
  612. }
  613. /// <summary>
  614. /// 根据人员ID获取人员信息表数据
  615. /// </summary>
  616. /// <param name="id"></param>
  617. /// <returns></returns>
  618. public DataTable GetInfoByID(string id)
  619. {
  620. string sql = "select * from 人员信息 where ID=:id";
  621. DataTable dt = SqlBuilder.SqlText(sql).Parameters("id", id).Select();
  622. return dt;
  623. }
  624. #endregion
  625. #region 生成单个账号
  626. //判断是否有账号
  627. public int CheckAccount(string id)
  628. {
  629. return SelectBuilder.From("系统账户").Columns("*").Where("人员ID", id).Select().Rows.Count;
  630. }
  631. //创建
  632. public int Add_Account(PersonBusinessModel model, string role)
  633. {
  634. using (var tran = this.DBTransaction.BeginTrans())
  635. {
  636. try
  637. {
  638. int r = 0;
  639. //判断该人员是否已经拥有账户
  640. if (GetSysAccountInfo(model.ID).Rows.Count > 0)
  641. {
  642. return -2;
  643. }
  644. //保存信息前先判断输入的账号是否已经使用
  645. DataTable dt = SelectBuilder.From("系统账户").Columns("*").Where("账户", model.contactPhone).Select();
  646. if (dt.Rows.Count != 0)
  647. {
  648. return -1;
  649. }
  650. //取序列
  651. string sql = "select 系统账户_ID.nextval from dual";
  652. dt = SqlBuilder.SqlText(sql).Select();
  653. int XTID = int.Parse(dt.Rows[0]["nextval"].ToString());
  654. var PWD = QWPlatform.SystemLibrary.Utils.Strings.MD5(model.password1);
  655. r = InsertBuilder.Insert("系统账户")
  656. .Column("ID", XTID)
  657. .Column("密码", PWD)
  658. .Column("邮箱", model.email)
  659. .Column("姓名", model.name)
  660. .Column("状态", 1)
  661. .Column("账户", model.contactPhone)
  662. .Column("类型", 0)
  663. .Column("公司ID", model.channel)
  664. .Column("人员ID", model.ID)
  665. .Execute(tran);
  666. tran.CommitTrans();
  667. //判断添加到系统账户的操作是否成功
  668. if (r == 1)
  669. {
  670. //如果创建账号时该人员没有电话则将该账号设为联系电话
  671. if (SelectBuilder.From("人员信息").Columns("联系电话").Where("ID", model.ID).Select().Rows[0]["联系电话"].ToString().Length == 0)
  672. {
  673. UpdateBuilder.Update("人员信息").Column("联系电话", model.contactPhone).Where("ID", model.ID).Execute();
  674. }
  675. string[] para = role.ToString().Split(',');
  676. foreach (var row in para)
  677. {
  678. //取序列
  679. sql = "select 系统角色关系_ID.nextval from dual";
  680. dt = SqlBuilder.SqlText(sql).Select();
  681. int JSID = int.Parse(dt.Rows[0]["nextval"].ToString());
  682. InsertBuilder.Insert("系统角色关系")
  683. .Column("ID", JSID)
  684. .Column("账户ID", XTID)
  685. .Column("角色ID", row)
  686. .Execute();
  687. }
  688. //添加数据权限
  689. addAccountAuthod(XTID, model.ID);
  690. r = 1;
  691. }
  692. return r;
  693. }
  694. catch (Exception ex)
  695. {
  696. tran.Rollback();
  697. Logger.Instance.Error("调用Add_Account时发生异常错误", ex);
  698. return 0;
  699. }
  700. }
  701. }
  702. //创建人员时勾选自动生成账户
  703. public int AutoAccount(PersonBusinessModel model)
  704. {
  705. using (var tran = this.DBTransaction.BeginTrans())
  706. {
  707. try
  708. {
  709. int r = 0;
  710. var RYID = Guid.NewGuid().ToString(); //人员信息ID
  711. DataTable dt = SelectBuilder.From("人员信息").Columns("*").Where("联系电话", model.contactPhone).Select();
  712. if (dt.Rows.Count != 0)
  713. {
  714. return -2;
  715. }
  716. //添加人员信息
  717. r = InsertBuilder.Insert("人员信息")
  718. .Column("ID", RYID)
  719. .Column("姓名", model.name.Trim())
  720. .Column("简码", model.simple)
  721. .Column("性别", model.sex)
  722. .Column("出生日期", model.birthDate)
  723. .Column("职务", model.job)
  724. .Column("状态", 1)
  725. .Column("联系电话", model.contactPhone)
  726. .Column("QQ", model.qq)
  727. .Column("微信", model.weChat)
  728. .Column("电子邮箱", model.email)
  729. .Column("入职时间", model.entryDate)
  730. .Column("说明", model.explain)
  731. .Column("性质", model.nature)
  732. .Column("渠道ID", model.channel)
  733. .Column("项目ID", model.project)
  734. .Column("站点ID", model.station)
  735. .Column("添加时间", this.DataBaseBuilder.GetDateTime)
  736. .Execute(tran);
  737. if (r == 1)
  738. {
  739. //保存信息前先判断输入的账号是否已经使用
  740. dt = SelectBuilder.From("系统账户").Columns("*").Where("账户", model.contactPhone).Select();
  741. if (dt.Rows.Count != 0)
  742. {
  743. return -1;
  744. }
  745. //取序列,创建账户
  746. string sql = "select 系统账户_ID.nextval from dual";
  747. dt = SqlBuilder.SqlText(sql).Select();
  748. int XTID = int.Parse(dt.Rows[0]["nextval"].ToString());
  749. r = InsertBuilder.Insert("系统账户")
  750. .Column("ID", XTID)
  751. .Column("密码", "202CB962AC59075B964B07152D234B70")
  752. .Column("邮箱", model.email)
  753. .Column("姓名", model.name.Trim())
  754. .Column("状态", 1)
  755. .Column("账户", model.contactPhone)
  756. .Column("类型", 0)
  757. .Column("公司ID", model.channel)
  758. .Column("人员ID", RYID)
  759. .Execute(tran);
  760. tran.CommitTrans();
  761. //判断添加到系统账户的操作是否成功
  762. if (r == 1)
  763. {
  764. //去序列
  765. sql = "select 系统角色关系_ID.nextval from dual";
  766. dt = SqlBuilder.SqlText(sql).Select();
  767. int JSID = int.Parse(dt.Rows[0]["nextval"].ToString());
  768. InsertBuilder.Insert("系统角色关系")
  769. .Column("ID", JSID)
  770. .Column("账户ID", XTID)
  771. .Column("角色ID", 1)
  772. .Execute();
  773. //添加数据权限
  774. addAccountAuthod(XTID, RYID);
  775. }
  776. }
  777. return r;
  778. }
  779. catch (Exception ex)
  780. {
  781. tran.Rollback();
  782. Logger.Instance.Error("调用AutoAccount时发生异常错误", ex);
  783. return 0;
  784. }
  785. }
  786. }
  787. #endregion
  788. }
  789. }