You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1695 lines
70 KiB

  1. using Dapper;
  2. using Learun.DataBase.Repository;
  3. using Learun.Util;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data;
  7. using System.Linq;
  8. using System.Text;
  9. using Learun.Application.Base.AuthorizeModule;
  10. using Learun.Application.Organization;
  11. using System.Reflection;
  12. using Learun.Application.Base.SystemModule;
  13. using Learun.Application.TwoDevelopment.LogisticsManagement;
  14. using Learun.Cache.Base;
  15. using Learun.Cache.Factory;
  16. using System.IO;
  17. using System.Security.Policy;
  18. using System.Data.SqlClient;
  19. namespace Learun.Application.TwoDevelopment.EducationalAdministration
  20. {
  21. /// <summary>
  22. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  23. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  24. /// 创 建:超级管理员
  25. /// 日 期:2019-02-21 16:53
  26. /// 描 述:学生学籍
  27. /// </summary>
  28. public class StuInfoBasicService : RepositoryFactory
  29. {
  30. #region 获取数据
  31. /// <summary>
  32. /// 获取页面显示列表数据
  33. /// <summary>
  34. /// <param name="queryJson">查询参数</param>
  35. /// <returns></returns>
  36. public IEnumerable<StuInfoBasicEntity> GetPageList(Pagination pagination, string queryJson)
  37. {
  38. try
  39. {
  40. var strSql = new StringBuilder();
  41. strSql.Append("SELECT t.* ");
  42. strSql.Append(" FROM StuInfoBasic t ");
  43. strSql.Append(" WHERE 1=1 ");
  44. var queryParam = queryJson.ToJObject();
  45. // 虚拟参数
  46. var dp = new DynamicParameters(new { });
  47. if (!queryParam["StuNo"].IsEmpty())
  48. {
  49. dp.Add("StuNo", "%" + queryParam["StuNo"].ToString() + "%", DbType.String);
  50. strSql.Append(" AND t.StuNo Like @StuNo ");
  51. }
  52. if (!queryParam["StuName"].IsEmpty())
  53. {
  54. dp.Add("StuName", "%" + queryParam["StuName"].ToString() + "%", DbType.String);
  55. strSql.Append(" AND t.StuName Like @StuName ");
  56. }
  57. if (!queryParam["DeptNo"].IsEmpty())
  58. {
  59. dp.Add("DeptNo", "" + queryParam["DeptNo"].ToString() + "", DbType.String);
  60. strSql.Append(" AND t.DeptNo=@DeptNo ");
  61. }
  62. if (!queryParam["MajorNo"].IsEmpty())
  63. {
  64. dp.Add("MajorNo", "" + queryParam["MajorNo"].ToString() + "", DbType.String);
  65. strSql.Append(" AND t.MajorNo=@MajorNo ");
  66. }
  67. if (!queryParam["ClassNo"].IsEmpty())
  68. {
  69. dp.Add("ClassNo", "" + queryParam["ClassNo"].ToString() + "", DbType.String);
  70. strSql.Append(" AND t.ClassNo=@ClassNo ");
  71. }
  72. if (!queryParam["Grade"].IsEmpty())
  73. {
  74. dp.Add("Grade", "" + queryParam["Grade"].ToString() + "", DbType.String);
  75. strSql.Append(" AND t.Grade=@Grade ");
  76. }
  77. if (!queryParam["GenderNo"].IsEmpty())
  78. {
  79. dp.Add("GenderNo", "" + queryParam["GenderNo"].ToString() + "", DbType.String);
  80. strSql.Append(" AND t.GenderNo=@GenderNo ");
  81. }
  82. if (!queryParam["IdentityCardNo"].IsEmpty())
  83. {
  84. dp.Add("IdentityCardNo", "%" + queryParam["IdentityCardNo"].ToString() + "%", DbType.String);
  85. strSql.Append(" AND t.IdentityCardNo Like @IdentityCardNo ");
  86. }
  87. if (!queryParam["NationalityNo"].IsEmpty())
  88. {
  89. dp.Add("NationalityNo", "" + queryParam["NationalityNo"].ToString() + "", DbType.String);
  90. strSql.Append(" AND t.NationalityNo = @NationalityNo ");
  91. }
  92. if (!queryParam["FinishSchoolMark"].IsEmpty())
  93. {
  94. dp.Add("FinishSchoolMark", "" + queryParam["FinishSchoolMark"].ToString() + "", DbType.String);
  95. if (queryParam["FinishSchoolMark"].ToString() == "0")
  96. {
  97. strSql.Append(" AND (t.FinishSchoolMark is null or t.FinishSchoolMark='0') ");
  98. }
  99. else
  100. {
  101. strSql.Append(" AND t.FinishSchoolMark=@FinishSchoolMark ");
  102. }
  103. }
  104. if (!queryParam["Remark"].IsEmpty())
  105. {
  106. dp.Add("Remark", "%" + queryParam["Remark"].ToString() + "%", DbType.String);
  107. strSql.Append(" AND t.Remark Like @Remark ");
  108. }
  109. if (!queryParam["CheckMark"].IsEmpty())
  110. {
  111. dp.Add("CheckMark", "" + queryParam["CheckMark"].ToString() + "", DbType.String);
  112. if (queryParam["CheckMark"].ToString() == "1")
  113. {
  114. strSql.Append(" AND t.CheckMark=@CheckMark ");
  115. }
  116. else
  117. {
  118. strSql.Append(" AND (t.CheckMark is null or t.CheckMark='0') ");
  119. }
  120. }
  121. if (!queryParam["StuCode"].IsEmpty())
  122. {
  123. dp.Add("StuCode", "%" + queryParam["StuCode"].ToString() + "%", DbType.String);
  124. strSql.Append(" AND t.StuCode Like @StuCode ");
  125. }
  126. if (!queryParam["PartyFaceNo"].IsEmpty())
  127. {
  128. dp.Add("PartyFaceNo", "" + queryParam["PartyFaceNo"].ToString() + "", DbType.String);
  129. strSql.Append(" AND t.PartyFaceNo = @PartyFaceNo ");
  130. }
  131. if (!queryParam["EduSystem"].IsEmpty())
  132. {
  133. dp.Add("EduSystem", "" + queryParam["EduSystem"].ToString() + "", DbType.String);
  134. strSql.Append(" AND t.EduSystem = @EduSystem ");
  135. }
  136. if (!queryParam["HealthStatus"].IsEmpty())
  137. {
  138. dp.Add("HealthStatus", "" + queryParam["HealthStatus"].ToString() + "", DbType.String);
  139. strSql.Append(" AND t.HealthStatus = @HealthStatus ");
  140. }
  141. if (!queryParam["StudyModality"].IsEmpty())
  142. {
  143. dp.Add("StudyModality", "" + queryParam["StudyModality"].ToString() + "", DbType.String);
  144. strSql.Append(" AND t.StudyModality = @StudyModality ");
  145. }
  146. if (!queryParam["Photo"].IsEmpty())
  147. {
  148. dp.Add("Photo", "" + queryParam["Photo"].ToString() + "", DbType.String);
  149. if (queryParam["Photo"].ToString() == "1")
  150. {
  151. strSql.Append(" AND t.Photo is not null ");
  152. }
  153. else
  154. {
  155. strSql.Append(" AND t.Photo is null ");
  156. }
  157. }
  158. #region 学籍异动专项查询条件 与其他无关
  159. if (!queryParam["Mustsql"].IsEmpty())
  160. {
  161. strSql.Append(" AND stuno not in(select stuno from StuTransferInfo where F_EnabledMark =0) ");
  162. }
  163. //查询去除 退学,休学,开除,死亡,失踪,注销,自动退学
  164. if (!queryParam["RestAgainSql"].IsEmpty())
  165. {
  166. strSql.Append(" AND stuno not in(select stuno from StuTransferInfo where anomaloustype = '02,05,06,10,11,12,13,14' and F_EnabledMark =0 )");
  167. }
  168. if (!queryParam["RolloffSql"].IsEmpty())//转出
  169. {
  170. strSql.Append(" AND stuno not in(select stuno from StuTransferInfo where anomaloustype = '02')");
  171. }
  172. #endregion
  173. return this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(strSql.ToString(), dp, pagination);
  174. }
  175. catch (Exception ex)
  176. {
  177. if (ex is ExceptionEx)
  178. {
  179. throw;
  180. }
  181. else
  182. {
  183. throw ExceptionEx.ThrowServiceException(ex);
  184. }
  185. }
  186. }
  187. internal List<string> GetSaveClassStudents(string account)
  188. {
  189. try
  190. {
  191. var classNO = this.BaseRepository("CollegeMIS").FindEntity<StuInfoBasicEntity>(a => a.StuNo == account).ClassNo;
  192. return this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(a => a.ClassNo == classNO).Select(a => a.StuNo).ToList();
  193. }
  194. catch (Exception ex)
  195. {
  196. if (ex is ExceptionEx)
  197. {
  198. throw;
  199. }
  200. else
  201. {
  202. throw ExceptionEx.ThrowServiceException(ex);
  203. }
  204. }
  205. }
  206. internal bool GetAny()
  207. {
  208. try
  209. {
  210. return this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>().ToList().Count > 0 ? true : false;
  211. }
  212. catch (Exception ex)
  213. {
  214. if (ex is ExceptionEx)
  215. {
  216. throw;
  217. }
  218. else
  219. {
  220. throw ExceptionEx.ThrowServiceException(ex);
  221. }
  222. }
  223. }
  224. internal StuInfoBasicEntity GetStuInfoBasicEntityByStuNo(string enCode)
  225. {
  226. try
  227. {
  228. var data = this.BaseRepository("CollegeMIS").FindEntity<StuInfoBasicEntity>(a => a.StuNo == enCode);
  229. if (data != null && (data.Photo != null && data.Photo != ""))
  230. {
  231. var url = this.BaseRepository().FindEntity<AnnexesFileEntity>(a => a.F_FolderId == data.Photo)?.F_FilePath;
  232. if (!string.IsNullOrEmpty(url))
  233. {
  234. url = "/" + url.Substring(url.IndexOf("Resource"));
  235. data.Photo = url;
  236. }
  237. }
  238. return data;
  239. }
  240. catch (Exception ex)
  241. {
  242. if (ex is ExceptionEx)
  243. {
  244. throw;
  245. }
  246. else
  247. {
  248. throw ExceptionEx.ThrowServiceException(ex);
  249. }
  250. }
  251. }
  252. public StuInfoBasicEntity GetStuInfoBasicEntityByStuName(string name)
  253. {
  254. try
  255. {
  256. return this.BaseRepository("CollegeMIS").FindEntity<StuInfoBasicEntity>(a => a.StuName == name);
  257. }
  258. catch (Exception ex)
  259. {
  260. if (ex is ExceptionEx)
  261. {
  262. throw;
  263. }
  264. else
  265. {
  266. throw ExceptionEx.ThrowServiceException(ex);
  267. }
  268. }
  269. }
  270. public StuInfoBasicEntity GetStuInfoBasicEntityByStuNoOrStuName(string stuno, string stuname)
  271. {
  272. try
  273. {
  274. string sql = "select * from StuInfoBasic where 1=1";
  275. if (!string.IsNullOrEmpty(stuno))
  276. {
  277. sql += $" and stuno='{stuno}'";
  278. }
  279. if (!string.IsNullOrEmpty(stuname))
  280. {
  281. sql += $" and stuname='{stuname}'";
  282. }
  283. return this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(sql).FirstOrDefault();
  284. }
  285. catch (Exception ex)
  286. {
  287. if (ex is ExceptionEx)
  288. {
  289. throw;
  290. }
  291. else
  292. {
  293. throw ExceptionEx.ThrowServiceException(ex);
  294. }
  295. }
  296. }
  297. /// <summary>
  298. /// 获取StuInfoBasic表实体数据
  299. /// <param name="keyValue">主键</param>
  300. /// <summary>
  301. /// <returns></returns>
  302. public StuInfoBasicEntity GetStuInfoBasicEntity(string keyValue)
  303. {
  304. try
  305. {
  306. return this.BaseRepository("CollegeMIS").FindEntity<StuInfoBasicEntity>(keyValue);
  307. }
  308. catch (Exception ex)
  309. {
  310. if (ex is ExceptionEx)
  311. {
  312. throw;
  313. }
  314. else
  315. {
  316. throw ExceptionEx.ThrowServiceException(ex);
  317. }
  318. }
  319. }
  320. /// <summary>
  321. /// 获取准许毕业的学生的专业
  322. /// <summary>
  323. /// <returns></returns>
  324. public List<CdMajorEntity> GetMajorInfoWithGraduation()
  325. {
  326. try
  327. {
  328. var stuInfo = this.BaseRepository("CollegeMIS")
  329. .FindList<StuInfoBasicEntity>(a => a.FinishSchoolMark == "1").ToList();
  330. var majorNoList = stuInfo.GroupBy(a => a.MajorNo).Select(a => a.Key).ToList();
  331. var majorList = this.BaseRepository("CollegeMIS")
  332. .FindList<CdMajorEntity>(a => majorNoList.Contains(a.MajorNo)).ToList();
  333. return majorList;
  334. }
  335. catch (Exception ex)
  336. {
  337. if (ex is ExceptionEx)
  338. {
  339. throw;
  340. }
  341. else
  342. {
  343. throw ExceptionEx.ThrowServiceException(ex);
  344. }
  345. }
  346. }
  347. /// <summary>
  348. /// 获取StuInfoBasic表实体数据
  349. /// <param name="keyValue">主键</param>
  350. /// <summary>
  351. /// <returns></returns>
  352. public void CreateGraduateNoByMajor(string CityCode, string SchoolCode, string MajorList)
  353. {
  354. try
  355. {
  356. var year = DateTime.Now.Year.ToString().Substring(2, 2);
  357. var firstStr = year + CityCode + SchoolCode;
  358. //获取最大的序号
  359. var DiplomaNoList = this.BaseRepository("CollegeMIS")
  360. .FindList<StuInfoBasicEntity>(a => a.DiplomaNo.Contains(firstStr)).Select(a => a.DiplomaNo.Substring(a.DiplomaNo.Length - 4, 4).ToInt()).ToList();
  361. var orderNo = 1;
  362. if (DiplomaNoList.Count() > 0)
  363. {
  364. var MaxDiplomaNo = DiplomaNoList.Max(a => a);
  365. orderNo = MaxDiplomaNo + 1;
  366. }
  367. var ListMajorNo = MajorList.Split(',').ToList();
  368. foreach (var MajorNo in ListMajorNo)
  369. {
  370. var stuList = this.BaseRepository("CollegeMIS")
  371. .FindList<StuInfoBasicEntity>(a => a.MajorNo == MajorNo)
  372. .Where(a => a.DiplomaNo == null || a.DiplomaNo == "");
  373. if (stuList.Count() > 0)
  374. {
  375. foreach (var stuInfo in stuList)
  376. {
  377. stuInfo.DiplomaNo = firstStr + orderNo.ToString().PadLeft(4, '0');
  378. this.BaseRepository("CollegeMIS").Update(stuInfo);
  379. orderNo++;
  380. }
  381. }
  382. }
  383. }
  384. catch (Exception ex)
  385. {
  386. if (ex is ExceptionEx)
  387. {
  388. throw;
  389. }
  390. else
  391. {
  392. throw ExceptionEx.ThrowServiceException(ex);
  393. }
  394. }
  395. }
  396. /// <summary>
  397. /// 获取StuInfoBasic表实体数据
  398. /// <param name="keyValue">主键</param>
  399. /// <summary>
  400. /// <returns></returns>
  401. public void DoCreateGraduateNo()
  402. {
  403. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  404. try
  405. {
  406. //年份
  407. var year = DateTime.Now.Year.ToString().Substring(2, 2);
  408. //学校编码十位
  409. var schoolCode = "3642000004";
  410. //顺序号四位
  411. var numberCode = 1;
  412. //获取最大的序号
  413. var DiplomaNoList = this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(x => x.DiplomaNo.Contains(year + schoolCode)).Select(x => x.DiplomaNo).ToList();
  414. if (DiplomaNoList.Any())
  415. {
  416. numberCode = DiplomaNoList.Max(x => x).Substring(12, 4).ToInt() + 1;
  417. }
  418. //获取所有要毕业的学生按年级查询出来,再按学号进行由小到大排序,
  419. var stuList = this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(x => (x.FinishSchoolMark == "1" || x.FinishSchoolMark == "2") && (x.DiplomaNo == null || x.DiplomaNo == "")).OrderBy(x => x.Grade).ThenBy(x => x.StuNo);
  420. foreach (var item in stuList)
  421. {
  422. item.DiplomaNo = year + schoolCode + numberCode.ToString().PadLeft(4, '0');
  423. db.Update(item);
  424. numberCode++;
  425. }
  426. db.Commit();
  427. }
  428. catch (Exception ex)
  429. {
  430. db.Rollback();
  431. if (ex is ExceptionEx)
  432. {
  433. throw;
  434. }
  435. else
  436. {
  437. throw ExceptionEx.ThrowServiceException(ex);
  438. }
  439. }
  440. }
  441. /// <summary>
  442. /// 获取StuInfoBasic表实体数据
  443. /// <param name="keyValue">主键</param>
  444. /// <summary>
  445. /// <returns></returns>
  446. public StuInfoBasicEntity GetStuNoByAccount(string keyValue)
  447. {
  448. try
  449. {
  450. return this.BaseRepository("CollegeMIS").FindEntity<StuInfoBasicEntity>(a => a.StuNo == keyValue);
  451. }
  452. catch (Exception ex)
  453. {
  454. if (ex is ExceptionEx)
  455. {
  456. throw;
  457. }
  458. else
  459. {
  460. throw ExceptionEx.ThrowServiceException(ex);
  461. }
  462. }
  463. }
  464. /// <summary>
  465. /// 获取树形数据
  466. /// </summary>
  467. /// <returns></returns>
  468. public DataTable GetSqlTree()
  469. {
  470. try
  471. {
  472. var ClassDiredctorNo = LoginUserInfo.Get().account;
  473. string sql = " SELECT * FROM dbo.ClassInfo where CheckMark=1 ";
  474. if (ClassDiredctorNo.ToUpper() != "SYSTEM" && !LoginUserInfo.Get().roleIds.Contains("818c298e-ea1d-41d5-be4a-f06b092a420f"))
  475. {
  476. sql += $" and ClassDiredctorNo='{ClassDiredctorNo}' or ClassTutorNo='{ClassDiredctorNo}'";
  477. }
  478. return this.BaseRepository("CollegeMIS").FindTable(sql);
  479. }
  480. catch (Exception ex)
  481. {
  482. if (ex is ExceptionEx)
  483. {
  484. throw;
  485. }
  486. else
  487. {
  488. throw ExceptionEx.ThrowServiceException(ex);
  489. }
  490. }
  491. }
  492. #endregion
  493. #region 提交数据
  494. /// <summary>
  495. /// 审核全部
  496. /// </summary>
  497. public void CheckAll()
  498. {
  499. try
  500. {
  501. this.BaseRepository("CollegeMIS").ExecuteBySql("update StuInfoBasic set CheckMark=1");
  502. }
  503. catch (Exception ex)
  504. {
  505. if (ex is ExceptionEx)
  506. {
  507. throw;
  508. }
  509. else
  510. {
  511. throw ExceptionEx.ThrowServiceException(ex);
  512. }
  513. }
  514. }
  515. /// <summary>
  516. /// 准许毕业操作
  517. /// </summary>
  518. public void AllowGraduate(string stuNo, string status)
  519. {
  520. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  521. try
  522. {
  523. var list = stuNo.Split(',').ToList().Select(a => "'" + a + "'");
  524. var stulist = string.Join(",", list);
  525. if (status == "1")//准许毕业
  526. {
  527. //判断离校手续是否全办完,若满足则修改毕业状态为已毕业和毕业时间,若不满足则修改毕业状态为准许毕业;
  528. foreach (var item in stuNo.Split(','))
  529. {
  530. var itementity = db.FindEntity<StuInfoBasicEntity>(x => x.StuNo == item);
  531. if (itementity.ReturnBooksStatus == "1" && itementity.EmployAgreeStatus == "1" && itementity.FeeSettleStatus == "1" && itementity.CheckOutStatus == "1" && itementity.CardDeregistrateStatus == "1" && itementity.DiplomaReceiveStatus == "1" && itementity.FileTransferStatus == "1")
  532. {
  533. db.ExecuteBySql($"UPDATE dbo.StuInfoBasic SET FinishSchoolMark ='2',FinishSchoolDate='" + DateTime.Now + "' WHERE StuNo='" + item + "' ");
  534. }
  535. else
  536. {
  537. db.ExecuteBySql($"UPDATE dbo.StuInfoBasic SET FinishSchoolMark ='{status}',FinishSchoolDate=null WHERE StuNo='" + item + "' ");
  538. }
  539. }
  540. }
  541. else//不准毕业
  542. {
  543. //毕业状态修改为不准毕业,毕业时间为空;
  544. db.ExecuteBySql($"UPDATE dbo.StuInfoBasic SET FinishSchoolMark ='{status}',FinishSchoolDate=null WHERE StuNo in({stulist})");
  545. }
  546. db.Commit();
  547. }
  548. catch (Exception ex)
  549. {
  550. db.Rollback();
  551. if (ex is ExceptionEx)
  552. {
  553. throw;
  554. }
  555. else
  556. {
  557. throw ExceptionEx.ThrowServiceException(ex);
  558. }
  559. }
  560. }
  561. public void SynPhoto()
  562. {
  563. try
  564. {
  565. var stuList = this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>().ToList();
  566. var url = Config.GetValue("AnnexesFile");
  567. var loginUserInfo = LoginUserInfo.Get();
  568. foreach (var stuInfo in stuList)
  569. {
  570. if (!string.IsNullOrEmpty(stuInfo.IdentityCardNo))
  571. {
  572. //判断要上传的照片在本地服务器中是否存在
  573. var photoPath = $"{url}/UserPhoto/{stuInfo.IdentityCardNo}.jpg";
  574. if (System.IO.File.Exists(photoPath))
  575. {
  576. //文件大小
  577. FileInfo fileInfo = new FileInfo(photoPath);
  578. var size = fileInfo.Length;
  579. //学籍表中照片字段不为空
  580. if (!string.IsNullOrEmpty(stuInfo.Photo))
  581. {
  582. var annex = this.BaseRepository().FindEntity<AnnexesFileEntity>(a => a.F_FolderId == stuInfo.Photo);
  583. if (annex == null)
  584. {
  585. var annexEntity = new AnnexesFileEntity()
  586. {
  587. F_Id = Guid.NewGuid().ToString(),
  588. F_FolderId = stuInfo.Photo,
  589. F_FileName = stuInfo.IdentityCardNo + ".jpg",
  590. F_FilePath = photoPath,
  591. F_FileSize = size.ToString(),
  592. F_FileExtensions = ".jpg",
  593. F_FileType = "jpg",
  594. F_CreateUserId = loginUserInfo.userId,
  595. F_CreateUserName = loginUserInfo.realName
  596. };
  597. annexEntity.Create();
  598. this.BaseRepository().Insert(annexEntity);
  599. }
  600. else
  601. {
  602. annex.F_FileName = stuInfo.IdentityCardNo + ".jpg";
  603. annex.F_FilePath = photoPath;
  604. annex.F_FileSize = size.ToString();
  605. annex.F_FileExtensions = ".jpg";
  606. annex.F_FileType = "jpg";
  607. annex.F_CreateDate = DateTime.Now;
  608. annex.F_CreateUserId = loginUserInfo.userId;
  609. annex.F_CreateUserName = loginUserInfo.realName;
  610. this.BaseRepository().Update(annex);
  611. }
  612. }
  613. else
  614. {
  615. //学籍表
  616. stuInfo.Photo = Guid.NewGuid().ToString();
  617. //附件表
  618. var annexEntity = new AnnexesFileEntity()
  619. {
  620. F_Id = Guid.NewGuid().ToString(),
  621. F_FolderId = stuInfo.Photo,
  622. F_FileName = stuInfo.IdentityCardNo + ".jpg",
  623. F_FilePath = photoPath,
  624. F_FileSize = size.ToString(),
  625. F_FileExtensions = ".jpg",
  626. F_FileType = "jpg",
  627. F_CreateUserId = loginUserInfo.userId,
  628. F_CreateUserName = loginUserInfo.realName
  629. };
  630. annexEntity.Create();
  631. this.BaseRepository("CollegeMIS").Update(stuInfo);
  632. this.BaseRepository().Insert(annexEntity);
  633. }
  634. }
  635. }
  636. }
  637. }
  638. catch (Exception ex)
  639. {
  640. if (ex is ExceptionEx)
  641. {
  642. throw;
  643. }
  644. else
  645. {
  646. throw ExceptionEx.ThrowServiceException(ex);
  647. }
  648. }
  649. }
  650. /// <summary>
  651. /// 删除实体数据
  652. /// <param name="keyValue">主键</param>
  653. /// <summary>
  654. /// <returns></returns>
  655. public void DeleteEntity(string keyValue)
  656. {
  657. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  658. try
  659. {
  660. //单个删除
  661. //this.BaseRepository("CollegeMIS").Delete<StuInfoBasicEntity>(t => t.StuId == keyValue);
  662. //多个删除
  663. var keyValueArr = keyValue.Split(',');
  664. foreach (var item in keyValueArr)
  665. {
  666. db.Delete<StuInfoBasicEntity>(t => t.StuId == item);
  667. }
  668. db.Commit();
  669. }
  670. catch (Exception ex)
  671. {
  672. db.Rollback();
  673. if (ex is ExceptionEx)
  674. {
  675. throw;
  676. }
  677. else
  678. {
  679. throw ExceptionEx.ThrowServiceException(ex);
  680. }
  681. }
  682. }
  683. /// <summary>
  684. /// 领取毕业证
  685. /// <param name="keyValue">主键</param>
  686. /// <summary>
  687. /// <returns></returns>
  688. public void GetCard(string keyValue, string status, StuInfoBasicEntity entity)
  689. {
  690. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  691. try
  692. {
  693. if (status == "1")//领取
  694. {
  695. var now = DateTime.Now;
  696. var keyValueArr = keyValue.Split(',');
  697. foreach (var item in keyValueArr)
  698. {
  699. var sql = $"UPDATE StuInfoBasic SET DiplomaReceiveStatus='{status}',DiplomaReceiveDate='{now}',DiplomaReceiveSign='{entity.DiplomaReceiveSign}',DiplomaReceiveIdcard='{entity.DiplomaReceiveIdcard}',DiplomaReceiveRemark='{entity.DiplomaReceiveRemark}' WHERE StuId='{item}'";
  700. db.ExecuteBySql(sql);
  701. //判断离校手续是否全办完 且 毕业状态为准许毕业,若同时满足则修改毕业状态为已毕业和毕业时间;
  702. var sql2 = $"update StuInfoBasic set FinishSchoolMark='2',FinishSchoolDate='{now}' where StuId='{item}' and FinishSchoolMark='1' and ReturnBooksStatus='1' and EmployAgreeStatus='1' and FeeSettleStatus='1' and CheckOutStatus='1' and CardDeregistrateStatus='1' and FileTransferStatus='1' and TissueStatus='1' ";
  703. db.ExecuteBySql(sql2);
  704. }
  705. }
  706. else
  707. {
  708. var keyValueArr = keyValue.Split(',');
  709. foreach (var item in keyValueArr)
  710. {
  711. var sql = $"UPDATE StuInfoBasic SET DiplomaReceiveStatus='{status}',DiplomaReceiveDate=null,DiplomaReceiveSign=null,DiplomaReceiveIdcard=null,DiplomaReceiveRemark=null WHERE StuId='{item}'";
  712. db.ExecuteBySql(sql);
  713. //判断毕业状态是否为已毕业,若是,则毕业状态修改为准许毕业,毕业时间为空;
  714. var sql2 = $"UPDATE StuInfoBasic SET FinishSchoolMark='1',FinishSchoolDate=null WHERE StuId='{item}' and FinishSchoolMark='2' ";
  715. db.ExecuteBySql(sql2);
  716. }
  717. }
  718. db.Commit();
  719. }
  720. catch (Exception ex)
  721. {
  722. db.Rollback();
  723. if (ex is ExceptionEx)
  724. {
  725. throw;
  726. }
  727. else
  728. {
  729. throw ExceptionEx.ThrowServiceException(ex);
  730. }
  731. }
  732. }
  733. /// <summary>
  734. /// 图书资料归还
  735. /// <param name="keyValue">主键</param>
  736. /// <summary>
  737. /// <returns></returns>
  738. public void IsReturnBooks(string keyValue, string status)
  739. {
  740. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  741. try
  742. {
  743. if (status == "1")//归还
  744. {
  745. var now = DateTime.Now;
  746. var keyValueArr = keyValue.Split(',');
  747. foreach (var item in keyValueArr)
  748. {
  749. var sql = $"UPDATE StuInfoBasic SET ReturnBooksStatus='{status}',ReturnBooksDate='{now}' WHERE StuId='{item}'";
  750. db.ExecuteBySql(sql);
  751. //判断离校手续是否全办完 且 毕业状态为准许毕业,若同时满足则修改毕业状态为已毕业和毕业时间;
  752. var sql2 = $"update StuInfoBasic set FinishSchoolMark='2',FinishSchoolDate='{now}' where StuId='{item}' and FinishSchoolMark='1' and EmployAgreeStatus='1' and FeeSettleStatus='1' and CheckOutStatus='1' and CardDeregistrateStatus='1' and DiplomaReceiveStatus='1' and FileTransferStatus='1' and TissueStatus='1' ";
  753. db.ExecuteBySql(sql2);
  754. }
  755. }
  756. else
  757. {
  758. var keyValueArr = keyValue.Split(',');
  759. foreach (var item in keyValueArr)
  760. {
  761. var sql = $"UPDATE StuInfoBasic SET ReturnBooksStatus='{status}',ReturnBooksDate=null WHERE StuId='{item}'";
  762. db.ExecuteBySql(sql);
  763. //判断毕业状态是否为已毕业,若是,则毕业状态修改为准许毕业,毕业时间为空;
  764. var sql2 = $"UPDATE StuInfoBasic SET FinishSchoolMark='1',FinishSchoolDate=null WHERE StuId='{item}' and FinishSchoolMark='2' ";
  765. db.ExecuteBySql(sql2);
  766. }
  767. }
  768. db.Commit();
  769. }
  770. catch (Exception ex)
  771. {
  772. db.Rollback();
  773. if (ex is ExceptionEx)
  774. {
  775. throw;
  776. }
  777. else
  778. {
  779. throw ExceptionEx.ThrowServiceException(ex);
  780. }
  781. }
  782. }
  783. /// <summary>
  784. /// 就业协议备案
  785. /// <param name="keyValue">主键</param>
  786. /// <summary>
  787. /// <returns></returns>
  788. public void IsEmployAgree(string keyValue, string status)
  789. {
  790. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  791. try
  792. {
  793. if (status == "1")//备案
  794. {
  795. var now = DateTime.Now;
  796. var keyValueArr = keyValue.Split(',');
  797. foreach (var item in keyValueArr)
  798. {
  799. var sql = $"UPDATE StuInfoBasic SET EmployAgreeStatus='{status}',EmployAgreeDate='{now}' WHERE StuId='{item}'";
  800. db.ExecuteBySql(sql);
  801. //判断离校手续是否全办完 且 毕业状态为准许毕业,若同时满足则修改毕业状态为已毕业和毕业时间;
  802. var sql2 = $"update StuInfoBasic set FinishSchoolMark='2',FinishSchoolDate='{now}' where StuId='{item}' and FinishSchoolMark='1' and ReturnBooksStatus='1' and FeeSettleStatus='1' and CheckOutStatus='1' and CardDeregistrateStatus='1' and DiplomaReceiveStatus='1' and FileTransferStatus='1' and TissueStatus='1' ";
  803. db.ExecuteBySql(sql2);
  804. }
  805. }
  806. else
  807. {
  808. var keyValueArr = keyValue.Split(',');
  809. foreach (var item in keyValueArr)
  810. {
  811. var sql = $"UPDATE StuInfoBasic SET EmployAgreeStatus='{status}',EmployAgreeDate=null WHERE StuId='{item}'";
  812. db.ExecuteBySql(sql);
  813. //判断毕业状态是否为已毕业,若是,则毕业状态修改为准许毕业,毕业时间为空;
  814. var sql2 = $"UPDATE StuInfoBasic SET FinishSchoolMark='1',FinishSchoolDate=null WHERE StuId='{item}' and FinishSchoolMark='2' ";
  815. db.ExecuteBySql(sql2);
  816. }
  817. }
  818. db.Commit();
  819. }
  820. catch (Exception ex)
  821. {
  822. db.Rollback();
  823. if (ex is ExceptionEx)
  824. {
  825. throw;
  826. }
  827. else
  828. {
  829. throw ExceptionEx.ThrowServiceException(ex);
  830. }
  831. }
  832. }
  833. /// <summary>
  834. /// 学杂费结算
  835. /// <param name="keyValue">主键</param>
  836. /// <summary>
  837. /// <returns></returns>
  838. public void IsFeeSettle(string keyValue, string status)
  839. {
  840. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  841. try
  842. {
  843. if (status == "1")//结算
  844. {
  845. var now = DateTime.Now;
  846. var keyValueArr = keyValue.Split(',');
  847. foreach (var item in keyValueArr)
  848. {
  849. var sql = $"UPDATE StuInfoBasic SET FeeSettleStatus='{status}',FeeSettleDate='{now}' WHERE StuId='{item}'";
  850. db.ExecuteBySql(sql);
  851. //判断离校手续是否全办完 且 毕业状态为准许毕业,若同时满足则修改毕业状态为已毕业和毕业时间;
  852. var sql2 = $"update StuInfoBasic set FinishSchoolMark='2',FinishSchoolDate='{now}' where StuId='{item}' and FinishSchoolMark='1' and ReturnBooksStatus='1' and EmployAgreeStatus='1' and CheckOutStatus='1' and CardDeregistrateStatus='1' and DiplomaReceiveStatus='1' and FileTransferStatus='1' and TissueStatus='1' ";
  853. db.ExecuteBySql(sql2);
  854. }
  855. }
  856. else
  857. {
  858. var keyValueArr = keyValue.Split(',');
  859. foreach (var item in keyValueArr)
  860. {
  861. var sql = $"UPDATE StuInfoBasic SET FeeSettleStatus='{status}',FeeSettleDate=null WHERE StuId='{item}'";
  862. db.ExecuteBySql(sql);
  863. //判断毕业状态是否为已毕业,若是,则毕业状态修改为准许毕业,毕业时间为空;
  864. var sql2 = $"UPDATE StuInfoBasic SET FinishSchoolMark='1',FinishSchoolDate=null WHERE StuId='{item}' and FinishSchoolMark='2' ";
  865. db.ExecuteBySql(sql2);
  866. }
  867. }
  868. db.Commit();
  869. }
  870. catch (Exception ex)
  871. {
  872. db.Rollback();
  873. if (ex is ExceptionEx)
  874. {
  875. throw;
  876. }
  877. else
  878. {
  879. throw ExceptionEx.ThrowServiceException(ex);
  880. }
  881. }
  882. }
  883. /// <summary>
  884. /// 办理退住手续
  885. /// <param name="keyValue">主键</param>
  886. /// <summary>
  887. /// <returns></returns>
  888. public void IsCheckOut(string keyValue, string status)
  889. {
  890. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  891. try
  892. {
  893. if (status == "1")//办理
  894. {
  895. var now = DateTime.Now;
  896. var keyValueArr = keyValue.Split(',');
  897. foreach (var item in keyValueArr)
  898. {
  899. var sql = $"UPDATE StuInfoBasic SET CheckOutStatus='{status}',CheckOutDate='{now}' WHERE StuId='{item}'";
  900. db.ExecuteBySql(sql);
  901. //判断离校手续是否全办完 且 毕业状态为准许毕业,若同时满足则修改毕业状态为已毕业和毕业时间;
  902. var sql2 = $"update StuInfoBasic set FinishSchoolMark='2',FinishSchoolDate='{now}' where StuId='{item}' and FinishSchoolMark='1' and ReturnBooksStatus='1' and EmployAgreeStatus='1' and FeeSettleStatus='1' and CardDeregistrateStatus='1' and DiplomaReceiveStatus='1' and FileTransferStatus='1' and TissueStatus='1' ";
  903. db.ExecuteBySql(sql2);
  904. }
  905. }
  906. else
  907. {
  908. var keyValueArr = keyValue.Split(',');
  909. foreach (var item in keyValueArr)
  910. {
  911. var sql = $"UPDATE StuInfoBasic SET CheckOutStatus='{status}',CheckOutDate=null WHERE StuId='{item}'";
  912. db.ExecuteBySql(sql);
  913. //判断毕业状态是否为已毕业,若是,则毕业状态修改为准许毕业,毕业时间为空;
  914. var sql2 = $"UPDATE StuInfoBasic SET FinishSchoolMark='1',FinishSchoolDate=null WHERE StuId='{item}' and FinishSchoolMark='2' ";
  915. db.ExecuteBySql(sql2);
  916. }
  917. }
  918. db.Commit();
  919. }
  920. catch (Exception ex)
  921. {
  922. db.Rollback();
  923. if (ex is ExceptionEx)
  924. {
  925. throw;
  926. }
  927. else
  928. {
  929. throw ExceptionEx.ThrowServiceException(ex);
  930. }
  931. }
  932. }
  933. /// <summary>
  934. /// 校园卡注销
  935. /// <param name="keyValue">主键</param>
  936. /// <summary>
  937. /// <returns></returns>
  938. public void IsCardDeregistrate(string keyValue, string status)
  939. {
  940. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  941. try
  942. {
  943. if (status == "1")//注销
  944. {
  945. var now = DateTime.Now;
  946. var keyValueArr = keyValue.Split(',');
  947. foreach (var item in keyValueArr)
  948. {
  949. var sql = $"UPDATE StuInfoBasic SET CardDeregistrateStatus='{status}',CardDeregistrateDate='{now}' WHERE StuId='{item}'";
  950. db.ExecuteBySql(sql);
  951. //判断离校手续是否全办完 且 毕业状态为准许毕业,若同时满足则修改毕业状态为已毕业和毕业时间;
  952. var sql2 = $"update StuInfoBasic set FinishSchoolMark='2',FinishSchoolDate='{now}' where StuId='{item}' and FinishSchoolMark='1' and ReturnBooksStatus='1' and EmployAgreeStatus='1' and FeeSettleStatus='1' and CheckOutStatus='1' and DiplomaReceiveStatus='1' and FileTransferStatus='1' and TissueStatus='1' ";
  953. db.ExecuteBySql(sql2);
  954. }
  955. }
  956. else
  957. {
  958. var keyValueArr = keyValue.Split(',');
  959. foreach (var item in keyValueArr)
  960. {
  961. var sql = $"UPDATE StuInfoBasic SET CardDeregistrateStatus='{status}',CardDeregistrateDate=null WHERE StuId='{item}'";
  962. db.ExecuteBySql(sql);
  963. //判断毕业状态是否为已毕业,若是,则毕业状态修改为准许毕业,毕业时间为空;
  964. var sql2 = $"UPDATE StuInfoBasic SET FinishSchoolMark='1',FinishSchoolDate=null WHERE StuId='{item}' and FinishSchoolMark='2' ";
  965. db.ExecuteBySql(sql2);
  966. }
  967. }
  968. db.Commit();
  969. }
  970. catch (Exception ex)
  971. {
  972. db.Rollback();
  973. if (ex is ExceptionEx)
  974. {
  975. throw;
  976. }
  977. else
  978. {
  979. throw ExceptionEx.ThrowServiceException(ex);
  980. }
  981. }
  982. }
  983. /// <summary>
  984. /// 档案与组织关系转出
  985. /// <param name="keyValue">主键</param>
  986. /// <summary>
  987. /// <returns></returns>
  988. public void IsFileTransfer(string keyValue, string status, string fort)
  989. {
  990. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  991. try
  992. {
  993. if (status == "1")//转出
  994. {
  995. var now = DateTime.Now;
  996. var keyValueArr = keyValue.Split(',');
  997. foreach (var item in keyValueArr)
  998. {
  999. if (fort == "0")
  1000. {
  1001. //档案
  1002. var sql = $"UPDATE StuInfoBasic SET FileTransferStatus='{status}',FileTransferDate='{now}' WHERE StuId='{item}'";
  1003. db.ExecuteBySql(sql);
  1004. //判断离校手续是否全办完 且 毕业状态为准许毕业,若同时满足则修改毕业状态为已毕业和毕业时间;
  1005. var sql2 = $"update StuInfoBasic set FinishSchoolMark='2',FinishSchoolDate='{now}' where StuId='{item}' and FinishSchoolMark='1' and ReturnBooksStatus='1' and EmployAgreeStatus='1' and FeeSettleStatus='1' and CheckOutStatus='1' and CardDeregistrateStatus='1' and DiplomaReceiveStatus='1' and TissueStatus='1'";
  1006. db.ExecuteBySql(sql2);
  1007. }
  1008. else
  1009. {
  1010. //组织
  1011. var sql1 = $"UPDATE StuInfoBasic SET TissueStatus='{status}',TissueDate='{now}' WHERE StuId='{item}'";
  1012. db.ExecuteBySql(sql1);
  1013. //判断离校手续是否全办完 且 毕业状态为准许毕业,若同时满足则修改毕业状态为已毕业和毕业时间;
  1014. var sql2 = $"update StuInfoBasic set FinishSchoolMark='2',FinishSchoolDate='{now}' where StuId='{item}' and FinishSchoolMark='1' and ReturnBooksStatus='1' and EmployAgreeStatus='1' and FeeSettleStatus='1' and CheckOutStatus='1' and CardDeregistrateStatus='1' and DiplomaReceiveStatus='1' and FileTransferStatus= '1'";
  1015. db.ExecuteBySql(sql2);
  1016. }
  1017. ////判断离校手续是否全办完 且 毕业状态为准许毕业,若同时满足则修改毕业状态为已毕业和毕业时间;
  1018. //var sql2 = $"update StuInfoBasic set FinishSchoolMark='2',FinishSchoolDate='{now}' where StuId='{item}' and FinishSchoolMark='1' and ReturnBooksStatus='1' and EmployAgreeStatus='1' and FeeSettleStatus='1' and CheckOutStatus='1' and CardDeregistrateStatus='1' and DiplomaReceiveStatus='1' ";
  1019. //db.ExecuteBySql(sql2);
  1020. }
  1021. }
  1022. else
  1023. {
  1024. var keyValueArr = keyValue.Split(',');
  1025. foreach (var item in keyValueArr)
  1026. {
  1027. if (fort == "0")
  1028. {
  1029. var sql = $"UPDATE StuInfoBasic SET FileTransferStatus='{status}',FileTransferDate=null WHERE StuId='{item}'";
  1030. db.ExecuteBySql(sql);
  1031. }
  1032. else
  1033. {
  1034. var sql1 = $"UPDATE StuInfoBasic SET TissueStatus='{status}',TissueDate=null WHERE StuId='{item}'";
  1035. db.ExecuteBySql(sql1);
  1036. }
  1037. //判断毕业状态是否为已毕业,若是,则毕业状态修改为准许毕业,毕业时间为空;
  1038. var sql2 = $"UPDATE StuInfoBasic SET FinishSchoolMark='1',FinishSchoolDate=null WHERE StuId='{item}' and FinishSchoolMark='2' ";
  1039. db.ExecuteBySql(sql2);
  1040. }
  1041. }
  1042. db.Commit();
  1043. }
  1044. catch (Exception ex)
  1045. {
  1046. db.Rollback();
  1047. if (ex is ExceptionEx)
  1048. {
  1049. throw;
  1050. }
  1051. else
  1052. {
  1053. throw ExceptionEx.ThrowServiceException(ex);
  1054. }
  1055. }
  1056. }
  1057. /// <summary>
  1058. /// 毕业生归档
  1059. /// <summary>
  1060. /// <returns></returns>
  1061. public void StuStore()
  1062. {
  1063. /*
  1064. 1.毕业生归档必须在6-8月份进行; <br>
  1065. 2.归档后的学生信息如:操行、奖惩、成绩、毕业证书等只有通过毕业生信息管理才能查询或打印;<br>
  1066. 3.毕业学生的账户将自动取消;<br>
  1067. 4.学生所占的床位也将自动退掉;<br>
  1068. 5.学生所在的班级置为已毕业班级;<br>
  1069. 6.归档操作后不可撤消,请谨慎操作!
  1070. */
  1071. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  1072. var adb = this.BaseRepository().BeginTrans();
  1073. try
  1074. {
  1075. //归档前提为毕业标志为2(已毕业)的学生
  1076. var stuInfos = db.FindList<StuInfoBasicEntity>(a => a.FinishSchoolMark == "2");
  1077. foreach (var item in stuInfos)
  1078. {
  1079. //var StuInfoType = typeof(StuInfoBasicEntity);
  1080. //var PropertyInfoStuInfo = StuInfoType.GetProperties();
  1081. //var GraduateEntity = new StuInfoGraduateEntity();
  1082. //var typegraduate = typeof(StuInfoGraduateEntity);
  1083. //var PropertyInfoGraduate = typegraduate.GetProperties();
  1084. //foreach (var itemStuInfo in PropertyInfoStuInfo)
  1085. //{
  1086. // var objStuInfoType = itemStuInfo.GetValue(StuInfoType);
  1087. // foreach (var itemGraduate in PropertyInfoGraduate)
  1088. // {
  1089. // if (itemGraduate.Name == itemStuInfo.Name)
  1090. // {
  1091. // itemGraduate.SetValue(GraduateEntity, objStuInfoType, null);
  1092. // }
  1093. // }
  1094. //}
  1095. var accountInfo = adb.FindEntity<UserEntity>(a => a.F_Account == item.StuNo);
  1096. if (accountInfo != null)
  1097. {
  1098. //删除账户
  1099. adb.Delete(accountInfo);
  1100. }
  1101. //清空宿舍信息
  1102. var dormitory = db.FindEntity<Acc_DormitoryBuildEntity>(a => a.StudentID == item.StuNo);
  1103. if (dormitory != null)
  1104. {
  1105. dormitory.StudentID = "";
  1106. dormitory.StuName = "";
  1107. db.Update(dormitory);
  1108. //宿舍上一级房间,入住人数-1
  1109. var room = db.FindEntity<Acc_DormitoryBuildEntity>(x => x.ID == dormitory.ParentID);
  1110. if (room != null)
  1111. {
  1112. if (room.CheckInStu.HasValue && room.CheckInStu.Value > 0)
  1113. {
  1114. room.CheckInStu--;
  1115. db.Update(room);
  1116. }
  1117. }
  1118. }
  1119. //班级置为已毕业班级
  1120. var classInfo = db.FindEntity<ClassInfoEntity>(x => x.ClassNo == item.ClassNo);
  1121. if (classInfo != null && classInfo.ClassStatus != "1")
  1122. {
  1123. classInfo.ClassStatus = "1";
  1124. db.Update(classInfo);
  1125. }
  1126. //删除学籍表信息
  1127. db.Delete(item);
  1128. //增加学生毕业表信息
  1129. var addSql = $"insert into StuInfoGraduate select * from StuInfoBasic where StuId='{item.StuId}'";
  1130. db.ExecuteBySql(addSql);
  1131. //db.Insert(GraduateEntity);
  1132. }
  1133. db.Commit();
  1134. adb.Commit();
  1135. }
  1136. catch (Exception ex)
  1137. {
  1138. db.Rollback();
  1139. adb.Rollback();
  1140. if (ex is ExceptionEx)
  1141. {
  1142. throw;
  1143. }
  1144. else
  1145. {
  1146. throw ExceptionEx.ThrowServiceException(ex);
  1147. }
  1148. }
  1149. }
  1150. /// <summary>
  1151. /// 保存实体数据(新增、修改)
  1152. /// <param name="keyValue">主键</param>
  1153. /// <summary>
  1154. /// <returns></returns>
  1155. public void SaveEntity(string keyValue, StuInfoBasicEntity entity)
  1156. {
  1157. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  1158. try
  1159. {
  1160. UserIBLL userIBLL = new UserBLL();
  1161. var loginUser = LoginUserInfo.Get();
  1162. if (!string.IsNullOrEmpty(keyValue))
  1163. {
  1164. entity.Modify(keyValue);
  1165. // wx 根据要求去除
  1166. #region 编辑加入学籍异动信息
  1167. // var oldEntity = this.BaseRepository("CollegeMIS").FindEntity<StuInfoBasicEntity>(keyValue);
  1168. // List<StuInfoBasic_ChangeLogEntity> list = new List<StuInfoBasic_ChangeLogEntity>();
  1169. // var tableInfos = this.BaseRepository("CollegeMIS").FindTable(@"SELECT t.[name] AS 表名,c.[name] AS 字段名,cast(ep.[value]
  1170. //as varchar(100)) AS [字段说明]
  1171. //FROM sys.tables AS t
  1172. //INNER JOIN sys.columns
  1173. //AS c ON t.object_id = c.object_id
  1174. // LEFT JOIN sys.extended_properties AS ep
  1175. //ON ep.major_id = c.object_id AND ep.minor_id = c.column_id WHERE ep.class =1
  1176. //AND t.name='StuInfoBasic'");
  1177. // PropertyInfo[] properties = oldEntity.GetType().GetProperties();
  1178. // foreach (System.Reflection.PropertyInfo item in properties)
  1179. // {
  1180. // string name = item.Name;
  1181. // object oldValue = item.GetValue(oldEntity);
  1182. // object newValue = item.GetValue(entity);
  1183. // if (oldValue == null || newValue == null)
  1184. // {
  1185. // continue;
  1186. // }
  1187. // if (!oldValue.Equals(newValue))
  1188. // {
  1189. // var columnName = "";
  1190. // foreach (DataRow rows in tableInfos.Rows)
  1191. // {
  1192. // if (rows["字段名"].ToString() == item.Name)
  1193. // {
  1194. // columnName = rows["字段说明"].ToString();
  1195. // }
  1196. // }
  1197. // var changeEntity = new StuInfoBasic_ChangeLogEntity
  1198. // {
  1199. // StuID = keyValue,
  1200. // BeforeChange = oldValue.ToString(),
  1201. // AfterChange = newValue.ToString(),
  1202. // FieldName = columnName,
  1203. // UpdateBy = loginUser.userId,
  1204. // UpdateTime = DateTime.Now,
  1205. // StuChangeType = "09",
  1206. // StuChangeRemark = "点击学籍信息管理-修改按钮进行操作"
  1207. // };
  1208. // changeEntity.Create();
  1209. // list.Add(changeEntity);
  1210. // }
  1211. // }
  1212. // if (list.Count > 0)
  1213. // {
  1214. // db.Insert(list);
  1215. // }
  1216. #endregion
  1217. var annexesFileEntity = this.BaseRepository().FindEntity<AnnexesFileEntity>(a => a.F_FolderId == entity.Photo);
  1218. var url = "";
  1219. if (annexesFileEntity != null)
  1220. {
  1221. url = annexesFileEntity.F_FilePath;
  1222. url = "/" + url.Substring(url.IndexOf("Resource"), url.Length - url.IndexOf("Resource"));
  1223. }
  1224. var baseUser = userIBLL.GetEntityByAccount(entity.StuNo);
  1225. if (baseUser != null)
  1226. {
  1227. baseUser.F_HeadIcon = url;
  1228. userIBLL.SaveEntity(baseUser.F_UserId, baseUser);
  1229. }
  1230. db.Update(entity);
  1231. }
  1232. else
  1233. {
  1234. entity.Create();
  1235. // wx 根据要求去除
  1236. #region 学籍异动日志表
  1237. //if (entity.IsTran == "0")//转入/进
  1238. //{
  1239. // //学籍异动日志表
  1240. // var changeEntity = new StuInfoBasic_ChangeLogEntity
  1241. // {
  1242. // StuID = entity.StuId,
  1243. // BeforeChange = null,
  1244. // AfterChange = entity.StuId,
  1245. // FieldName = "学籍表主键",
  1246. // UpdateBy = loginUser.userId,
  1247. // UpdateTime = DateTime.Now,
  1248. // StuChangeType = "04",
  1249. // StuChangeRemark = "点击学籍信息管理-异动转入按钮进行操作"
  1250. // };
  1251. // changeEntity.Create();
  1252. // db.Insert(changeEntity);
  1253. //}
  1254. #endregion
  1255. db.Insert(entity);
  1256. }
  1257. db.Commit();
  1258. }
  1259. catch (Exception ex)
  1260. {
  1261. db.Rollback();
  1262. if (ex is ExceptionEx)
  1263. {
  1264. throw;
  1265. }
  1266. else
  1267. {
  1268. throw ExceptionEx.ThrowServiceException(ex);
  1269. }
  1270. }
  1271. }
  1272. #region 缓存定义
  1273. private ICache cache = CacheFactory.CaChe();
  1274. private string cacheKey = "Learun_adms_excelError_"; // +公司主键
  1275. #endregion
  1276. /// <summary>
  1277. /// 学生学籍信息修改
  1278. /// </summary>
  1279. /// <param name="dt"></param>
  1280. public string StuInfoBasicImport(DataTable dt, string fileId)
  1281. {
  1282. try
  1283. {
  1284. int snum = 0;
  1285. int fnum = 0;
  1286. if (dt.Rows.Count > 0)
  1287. {
  1288. DataTable failDt = new DataTable();
  1289. dt.Columns.Add("导入错误", typeof(string));
  1290. foreach (DataColumn dc in dt.Columns)
  1291. {
  1292. failDt.Columns.Add(dc.ColumnName, dc.DataType);
  1293. }
  1294. IEnumerable<StuInfoBasicEntity> stuInfoBasicEntities = this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>("select * from StuInfoBasic");
  1295. //修改学生list
  1296. List<StuInfoBasicEntity> insertedorderlist = new List<StuInfoBasicEntity>();
  1297. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  1298. // 循环遍历导入
  1299. foreach (DataRow dr in dt.Rows)
  1300. {
  1301. try
  1302. {
  1303. //检测是否有空值
  1304. if (dr[0].ToString() == "" || dr[1].ToString() == "" || dr[2].ToString() == "" || dr[3].ToString() == "")
  1305. {
  1306. throw (new Exception("行内数据有空值,不能为空!"));
  1307. }
  1308. if (stuInfoBasicEntities.Count(m => m.IdentityCardNo.ToUpper() == dr[0].ToString().ToUpper()) == 0)
  1309. {
  1310. throw (new Exception("【身份证号】不存在,请核对!"));
  1311. }
  1312. //写入要导入的数据
  1313. StuInfoBasicEntity stuUpdateList = new StuInfoBasicEntity();
  1314. stuUpdateList.StuId = stuInfoBasicEntities.FirstOrDefault(s => s.IdentityCardNo.ToUpper() == dr[0].ToString().ToUpper())?.StuId.ToString();
  1315. stuUpdateList.StuCode = dr[1].ToString();
  1316. stuUpdateList.MailAddress = dr[2].ToString();
  1317. stuUpdateList.mobile = dr[3].ToString();
  1318. insertedorderlist.Add(stuUpdateList);
  1319. snum++;
  1320. }
  1321. catch (Exception ex)
  1322. {
  1323. fnum++;
  1324. dr["导入错误"] = ex.Message;
  1325. failDt.Rows.Add(dr.ItemArray);
  1326. }
  1327. }
  1328. //执行导入
  1329. db.Update(insertedorderlist);
  1330. db.Commit();
  1331. if (failDt.Rows.Count > 0)
  1332. {
  1333. string errordt = failDt.ToJson();
  1334. cache.Write<string>(cacheKey + fileId, errordt, CacheId.excel);
  1335. }
  1336. }
  1337. return snum + "|" + fnum;
  1338. }
  1339. catch (Exception ex)
  1340. {
  1341. if (ex is ExceptionEx)
  1342. {
  1343. throw;
  1344. }
  1345. else
  1346. {
  1347. throw ExceptionEx.ThrowServiceException(ex);
  1348. }
  1349. }
  1350. }
  1351. #endregion
  1352. public class TableInfo
  1353. {
  1354. public string TableName { get; set; }
  1355. public string ColumnName { get; set; }
  1356. public string ColumnDescription { get; set; }
  1357. }
  1358. public class StuInfoStatisticsModel
  1359. {
  1360. /// <summary>
  1361. /// 民族
  1362. /// </summary>
  1363. public string NationalityNo { get; set; }
  1364. /// <summary>
  1365. /// 性别
  1366. /// </summary>
  1367. public string GenderNo { get; set; }
  1368. /// <summary>
  1369. /// 专业
  1370. /// </summary>
  1371. public string MajorNo { get; set; }
  1372. /// <summary>
  1373. /// 生源地(省)
  1374. /// </summary>
  1375. public string F_ProvinceId { get; set; }
  1376. }
  1377. public void GenerateAccout()
  1378. {
  1379. UserRelationIBLL userRelationIBLL = new UserRelationBLL();
  1380. UserIBLL userIBLL = new UserBLL();
  1381. try
  1382. {
  1383. var stuInfoBasicEntities = BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(m => m.CheckMark != "0");
  1384. var alluserlist = userIBLL.GetAllList().Where(m => m.F_Description == "学生");
  1385. var roleId = Config.GetValue("GenerateStudentsRoleId");
  1386. var defaultpwd = Config.GetValue("defaultpwd");
  1387. //读取默认密码配置中已启用的密码
  1388. var Sys_DefaultPwdConfigEntity = this.BaseRepository().FindEntity<Sys_DefaultPwdConfigEntity>(x => x.IsEnabled == true);
  1389. if (Sys_DefaultPwdConfigEntity != null)
  1390. {
  1391. defaultpwd = Sys_DefaultPwdConfigEntity.Pwd;
  1392. }
  1393. var studentList = new List<UserEntity>();
  1394. foreach (var tEntity in stuInfoBasicEntities)
  1395. {
  1396. if (alluserlist.Count(m => m.F_Account == tEntity.StuNo) > 0)
  1397. {
  1398. continue;
  1399. }
  1400. var annexesFileEntity = this.BaseRepository().FindEntity<AnnexesFileEntity>(a => a.F_FolderId == tEntity.Photo);
  1401. var url = "";
  1402. if (annexesFileEntity != null)
  1403. {
  1404. url = annexesFileEntity.F_FilePath;
  1405. url = "/" + url.Substring(url.IndexOf("Resource"));
  1406. }
  1407. UserEntity userbase = new UserEntity();
  1408. userbase.F_Account = tEntity.StuNo;
  1409. userbase.F_RealName = tEntity.StuName;
  1410. userbase.F_EnCode = tEntity.StuNo;
  1411. userbase.F_Password = Md5Helper.Encrypt(defaultpwd, 32).ToLower();
  1412. userbase.F_HeadIcon = string.IsNullOrEmpty(url) ? Config.GetValue("defaultheadimg") : url;
  1413. userbase.F_Gender = tEntity.GenderNo.HasValue ? Convert.ToInt32(tEntity.GenderNo.Value) : 1;
  1414. userbase.F_DeleteMark = 0;
  1415. userbase.F_EnabledMark = 1;
  1416. userbase.F_Mobile = tEntity.mobile;
  1417. userbase.F_Description = "学生";
  1418. userbase.F_CompanyId = tEntity.F_SchoolId;
  1419. userbase.F_DepartmentId = tEntity.DeptNo;
  1420. userbase.F_IdentityCardNo = tEntity.IdentityCardNo;
  1421. userIBLL.SaveEntity(null, userbase);
  1422. studentList.Add(userbase);
  1423. }
  1424. if (studentList.Any())
  1425. {
  1426. string s = studentList.Select(m => m.F_UserId).Aggregate((current, userEntity) => current + "," + userEntity);
  1427. userRelationIBLL.SaveEntityList2(roleId, 1, s);
  1428. }
  1429. }
  1430. catch (Exception ex)
  1431. {
  1432. if (ex is ExceptionEx)
  1433. {
  1434. throw;
  1435. }
  1436. else
  1437. {
  1438. throw ExceptionEx.ThrowServiceException(ex);
  1439. }
  1440. }
  1441. }
  1442. public void UpdateAccount()
  1443. {
  1444. try
  1445. {
  1446. UserIBLL userIBLL = new UserBLL();
  1447. var teacherList = this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>();
  1448. var baseTeacherList = userIBLL.GetAllList().Where(m => m.F_Description == "学生");
  1449. foreach (var baseTeacher in baseTeacherList)
  1450. {
  1451. var num = 0;
  1452. var teacher = teacherList.FirstOrDefault(a => a.StuNo == baseTeacher.F_Account);
  1453. if (teacher != null)
  1454. {
  1455. if (baseTeacher.F_RealName != teacher.StuName)
  1456. {
  1457. baseTeacher.F_RealName = teacher.StuName;
  1458. num++;
  1459. }
  1460. if (baseTeacher.F_Gender != Convert.ToInt32(teacher.GenderNo))
  1461. {
  1462. baseTeacher.F_Gender = Convert.ToInt32(teacher.GenderNo);
  1463. num++;
  1464. }
  1465. if (baseTeacher.F_Mobile != teacher.mobile)
  1466. {
  1467. baseTeacher.F_Mobile = teacher.mobile;
  1468. num++;
  1469. }
  1470. if (baseTeacher.F_CompanyId != teacher.F_SchoolId)
  1471. {
  1472. baseTeacher.F_CompanyId = teacher.F_SchoolId;
  1473. num++;
  1474. }
  1475. if (baseTeacher.F_DepartmentId != teacher.DeptNo)
  1476. {
  1477. baseTeacher.F_DepartmentId = teacher.DeptNo;
  1478. num++;
  1479. }
  1480. if (baseTeacher.F_IdentityCardNo != teacher.IdentityCardNo)
  1481. {
  1482. baseTeacher.F_IdentityCardNo = teacher.IdentityCardNo;
  1483. num++;
  1484. }
  1485. if (num > 0)
  1486. {
  1487. userIBLL.UpdateEntity(baseTeacher);
  1488. }
  1489. }
  1490. }
  1491. }
  1492. catch (Exception ex)
  1493. {
  1494. if (ex is ExceptionEx)
  1495. {
  1496. throw;
  1497. }
  1498. else
  1499. {
  1500. throw ExceptionEx.ThrowServiceException(ex);
  1501. }
  1502. }
  1503. }
  1504. public void UpdateState(string keyValue, string state)
  1505. {
  1506. var db = this.BaseRepository().BeginTrans();
  1507. try
  1508. {
  1509. var keyValueArr = keyValue.Split(',');
  1510. foreach (var item in keyValueArr)
  1511. {
  1512. var StuNo = this.BaseRepository("CollegeMIS").FindEntity<StuInfoBasicEntity>(item).StuNo;
  1513. if (!StuNo.IsEmpty())
  1514. {
  1515. if (state == "1")
  1516. {
  1517. db.ExecuteBySql("update LR_Base_User set F_EnabledMark=1 where F_EnCode='" + StuNo + "'");
  1518. }
  1519. else
  1520. {
  1521. db.ExecuteBySql("update LR_Base_User set F_EnabledMark=0 where F_EnCode='" + StuNo + "'");
  1522. }
  1523. }
  1524. }
  1525. db.Commit();
  1526. }
  1527. catch (Exception ex)
  1528. {
  1529. db.Rollback();
  1530. if (ex is ExceptionEx)
  1531. {
  1532. throw;
  1533. }
  1534. else
  1535. {
  1536. throw ExceptionEx.ThrowServiceException(ex);
  1537. }
  1538. }
  1539. }
  1540. public IEnumerable<StuInfoBasicEntity> GetAllList()
  1541. {
  1542. try
  1543. {
  1544. return this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(m => m.CheckMark == "1");
  1545. }
  1546. catch (Exception ex)
  1547. {
  1548. if (ex is ExceptionEx)
  1549. {
  1550. throw;
  1551. }
  1552. else
  1553. {
  1554. throw ExceptionEx.ThrowServiceException(ex);
  1555. }
  1556. }
  1557. }
  1558. public IEnumerable<StuInfoStatisticsModel> GetAllStatistics()
  1559. {
  1560. return this.BaseRepository("CollegeMIS").FindList<StuInfoStatisticsModel>("select F_ProvinceId,NationalityNo,GenderNo,MajorNo FROM StuInfoBasic");
  1561. }
  1562. /// <summary>
  1563. /// 班级不看学籍异动
  1564. /// </summary>
  1565. /// <param name="ChangeType"></param>
  1566. /// <returns></returns>
  1567. public IEnumerable<StuInfoBasicEntity> GetAllList(string ChangeType)
  1568. {
  1569. try
  1570. {
  1571. StringBuilder sb = new StringBuilder();
  1572. sb.Append(@"select * from StuInfoBasic
  1573. where stuNo not in (select Stuno from StuInfoBasicChange where StuChangeType in ('02', '05', '06'))");
  1574. return this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(sb.ToString());
  1575. }
  1576. catch (Exception ex)
  1577. {
  1578. if (ex is ExceptionEx)
  1579. {
  1580. throw;
  1581. }
  1582. else
  1583. {
  1584. throw ExceptionEx.ThrowServiceException(ex);
  1585. }
  1586. }
  1587. }
  1588. public IEnumerable<StuInfoBasicEntity> GetStuInfoByClassNo(string classNo)
  1589. {
  1590. try
  1591. {
  1592. return this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(m => m.CheckMark == "1" && m.ClassNo == classNo);
  1593. }
  1594. catch (Exception ex)
  1595. {
  1596. if (ex is ExceptionEx)
  1597. {
  1598. throw;
  1599. }
  1600. else
  1601. {
  1602. throw ExceptionEx.ThrowServiceException(ex);
  1603. }
  1604. }
  1605. }
  1606. }
  1607. }