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.
 
 
 
 
 
 

1455 lines
63 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. namespace Learun.Application.TwoDevelopment.EducationalAdministration
  17. {
  18. /// <summary>
  19. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  20. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  21. /// 创 建:超级管理员
  22. /// 日 期:2019-02-21 16:53
  23. /// 描 述:学生学籍
  24. /// </summary>
  25. public class StuInfoBasicService : RepositoryFactory
  26. {
  27. private DataItemIBLL dataItemIBLL = new DataItemBLL();
  28. #region 获取数据
  29. /// <summary>
  30. /// 获取页面显示列表数据
  31. /// <summary>
  32. /// <param name="queryJson">查询参数</param>
  33. /// <returns></returns>
  34. public IEnumerable<StuInfoBasicEntity> GetPageList(Pagination pagination, string queryJson)
  35. {
  36. try
  37. {
  38. var strSql = new StringBuilder();
  39. strSql.Append("SELECT t.* ");
  40. strSql.Append(" FROM StuInfoBasic t ");
  41. strSql.Append(" WHERE 1=1 ");
  42. var queryParam = queryJson.ToJObject();
  43. // 虚拟参数
  44. var dp = new DynamicParameters(new { });
  45. if (!queryParam["StuNo"].IsEmpty())
  46. {
  47. dp.Add("StuNo", queryParam["StuNo"].ToString(), DbType.String);
  48. strSql.Append(" AND t.StuNo = @StuNo ");
  49. }
  50. if (!queryParam["StuName"].IsEmpty())
  51. {
  52. dp.Add("StuName", "%" + queryParam["StuName"].ToString() + "%", DbType.String);
  53. strSql.Append(" AND t.StuName Like @StuName ");
  54. }
  55. if (!queryParam["DeptNo"].IsEmpty())
  56. {
  57. dp.Add("DeptNo", "" + queryParam["DeptNo"].ToString() + "", DbType.String);
  58. strSql.Append(" AND t.DeptNo=@DeptNo ");
  59. }
  60. if (!queryParam["MajorNo"].IsEmpty())
  61. {
  62. dp.Add("MajorNo", "" + queryParam["MajorNo"].ToString() + "", DbType.String);
  63. strSql.Append(" AND t.MajorNo=@MajorNo ");
  64. }
  65. if (!queryParam["ClassNo"].IsEmpty())
  66. {
  67. dp.Add("ClassNo", "" + queryParam["ClassNo"].ToString() + "", DbType.String);
  68. strSql.Append(" AND t.ClassNo=@ClassNo ");
  69. }
  70. if (!queryParam["Grade"].IsEmpty())
  71. {
  72. dp.Add("Grade", "" + queryParam["Grade"].ToString() + "", DbType.String);
  73. strSql.Append(" AND t.Grade=@Grade ");
  74. }
  75. if (!queryParam["FinishSchoolMark"].IsEmpty())
  76. {
  77. dp.Add("FinishSchoolMark", "" + queryParam["FinishSchoolMark"].ToString() + "", DbType.String);
  78. if (queryParam["FinishSchoolMark"].ToString() == "0")
  79. {
  80. strSql.Append(" AND (t.FinishSchoolMark is null or t.FinishSchoolMark='0') ");
  81. }
  82. else
  83. {
  84. strSql.Append(" AND t.FinishSchoolMark=@FinishSchoolMark ");
  85. }
  86. }
  87. if (!queryParam["Remark"].IsEmpty())
  88. {
  89. dp.Add("Remark", "%" + queryParam["Remark"].ToString() + "%", DbType.String);
  90. strSql.Append(" AND t.Remark Like @Remark ");
  91. }
  92. //旧
  93. //if (!queryParam["AbmormityMoveMark"].IsEmpty())
  94. //{
  95. // strSql.Append(" AND t.stuno not in(select stuno from StuInfoBasicChange where StuChangeType in('04','05','06') and checkstatus=1) ");
  96. //}
  97. return this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(strSql.ToString(), dp, pagination);
  98. }
  99. catch (Exception ex)
  100. {
  101. if (ex is ExceptionEx)
  102. {
  103. throw;
  104. }
  105. else
  106. {
  107. throw ExceptionEx.ThrowServiceException(ex);
  108. }
  109. }
  110. }
  111. /// <summary>
  112. /// 获取页面显示列表数据
  113. /// <summary>
  114. /// <param name="queryJson">查询参数</param>
  115. /// <returns></returns>
  116. public IEnumerable<StuInfoBasicEntity> GetPageListOfSoonGraduate(Pagination pagination, string queryJson)
  117. {
  118. try
  119. {
  120. var strSql = new StringBuilder();
  121. strSql.Append("SELECT t.* ");
  122. strSql.Append(" FROM StuInfoBasic t ");
  123. strSql.Append(" WHERE 1=1 ");
  124. //显示大三学生
  125. strSql.Append(" and t.Grade=(case when datepart(month,getdate())>=9 then (substring(convert(nvarchar,datepart(year,getdate())),3,2)-2) else (substring(convert(nvarchar,datepart(year,getdate())),3,2)-3) end) ");
  126. var queryParam = queryJson.ToJObject();
  127. // 虚拟参数
  128. var dp = new DynamicParameters(new { });
  129. if (!queryParam["StuNo"].IsEmpty())
  130. {
  131. dp.Add("StuNo", queryParam["StuNo"].ToString(), DbType.String);
  132. strSql.Append(" AND t.StuNo = @StuNo ");
  133. }
  134. if (!queryParam["StuName"].IsEmpty())
  135. {
  136. dp.Add("StuName", "%" + queryParam["StuName"].ToString() + "%", DbType.String);
  137. strSql.Append(" AND t.StuName Like @StuName ");
  138. }
  139. if (!queryParam["DeptNo"].IsEmpty())
  140. {
  141. dp.Add("DeptNo", "" + queryParam["DeptNo"].ToString() + "", DbType.String);
  142. strSql.Append(" AND t.DeptNo=@DeptNo ");
  143. }
  144. if (!queryParam["MajorNo"].IsEmpty())
  145. {
  146. dp.Add("MajorNo", "" + queryParam["MajorNo"].ToString() + "", DbType.String);
  147. strSql.Append(" AND t.MajorNo=@MajorNo ");
  148. }
  149. if (!queryParam["ClassNo"].IsEmpty())
  150. {
  151. dp.Add("ClassNo", "" + queryParam["ClassNo"].ToString() + "", DbType.String);
  152. strSql.Append(" AND t.ClassNo=@ClassNo ");
  153. }
  154. if (!queryParam["Grade"].IsEmpty())
  155. {
  156. dp.Add("Grade", "" + queryParam["Grade"].ToString() + "", DbType.String);
  157. strSql.Append(" AND t.Grade=@Grade ");
  158. }
  159. if (!queryParam["FinishSchoolMark"].IsEmpty())
  160. {
  161. dp.Add("FinishSchoolMark", "" + queryParam["FinishSchoolMark"].ToString() + "", DbType.String);
  162. if (queryParam["FinishSchoolMark"].ToString() == "0")
  163. {
  164. strSql.Append(" AND (t.FinishSchoolMark is null or t.FinishSchoolMark='0') ");
  165. }
  166. else
  167. {
  168. strSql.Append(" AND t.FinishSchoolMark=@FinishSchoolMark ");
  169. }
  170. }
  171. if (!queryParam["Remark"].IsEmpty())
  172. {
  173. dp.Add("Remark", "%" + queryParam["Remark"].ToString() + "%", DbType.String);
  174. strSql.Append(" AND t.Remark Like @Remark ");
  175. }
  176. //旧
  177. //if (!queryParam["AbmormityMoveMark"].IsEmpty())
  178. //{
  179. // strSql.Append(" AND t.stuno not in(select stuno from StuInfoBasicChange where StuChangeType in('04','05','06') and checkstatus=1) ");
  180. //}
  181. return this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(strSql.ToString(), dp, pagination);
  182. }
  183. catch (Exception ex)
  184. {
  185. if (ex is ExceptionEx)
  186. {
  187. throw;
  188. }
  189. else
  190. {
  191. throw ExceptionEx.ThrowServiceException(ex);
  192. }
  193. }
  194. }
  195. internal List<string> GetSaveClassStudents(string account)
  196. {
  197. try
  198. {
  199. var classNO = this.BaseRepository("CollegeMIS").FindEntity<StuInfoBasicEntity>(a => a.StuNo == account).ClassNo;
  200. return this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(a => a.ClassNo == classNO).Select(a => a.StuNo).ToList();
  201. }
  202. catch (Exception ex)
  203. {
  204. if (ex is ExceptionEx)
  205. {
  206. throw;
  207. }
  208. else
  209. {
  210. throw ExceptionEx.ThrowServiceException(ex);
  211. }
  212. }
  213. }
  214. internal bool GetAny()
  215. {
  216. try
  217. {
  218. return this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>().ToList().Count > 0 ? true : false;
  219. }
  220. catch (Exception ex)
  221. {
  222. if (ex is ExceptionEx)
  223. {
  224. throw;
  225. }
  226. else
  227. {
  228. throw ExceptionEx.ThrowServiceException(ex);
  229. }
  230. }
  231. }
  232. internal StuInfoBasicEntity GetStuInfoBasicEntityByStuNo(string enCode)
  233. {
  234. try
  235. {
  236. var data = this.BaseRepository("CollegeMIS").FindEntity<StuInfoBasicEntity>(a => a.StuNo == enCode);
  237. if (data != null && (data.Photo != null && data.Photo != ""))
  238. {
  239. var url = this.BaseRepository().FindEntity<AnnexesFileEntity>(a => a.F_FolderId == data.Photo)?.F_FilePath;
  240. if (!string.IsNullOrEmpty(url))
  241. {
  242. url = "/" + url.Substring(url.IndexOf("Resource"));
  243. data.Photo = url;
  244. }
  245. }
  246. return data;
  247. }
  248. catch (Exception ex)
  249. {
  250. if (ex is ExceptionEx)
  251. {
  252. throw;
  253. }
  254. else
  255. {
  256. throw ExceptionEx.ThrowServiceException(ex);
  257. }
  258. }
  259. }
  260. public string GetPhotoByStuNo(string enCode)
  261. {
  262. try
  263. {
  264. var data = this.BaseRepository("CollegeMIS").FindEntity<StuInfoBasicEntity>(a => a.StuNo == enCode);
  265. if (data != null)
  266. {
  267. return data.Photo;
  268. }
  269. return "";
  270. }
  271. catch (Exception ex)
  272. {
  273. if (ex is ExceptionEx)
  274. {
  275. throw;
  276. }
  277. else
  278. {
  279. throw ExceptionEx.ThrowServiceException(ex);
  280. }
  281. }
  282. }
  283. public StuInfoBasicEntity GetStuInfoBasicEntityByStuName(string name)
  284. {
  285. try
  286. {
  287. return this.BaseRepository("CollegeMIS").FindEntity<StuInfoBasicEntity>(a => a.StuName == name);
  288. }
  289. catch (Exception ex)
  290. {
  291. if (ex is ExceptionEx)
  292. {
  293. throw;
  294. }
  295. else
  296. {
  297. throw ExceptionEx.ThrowServiceException(ex);
  298. }
  299. }
  300. }
  301. /// <summary>
  302. /// 获取StuInfoBasic表实体数据
  303. /// <param name="keyValue">主键</param>
  304. /// <summary>
  305. /// <returns></returns>
  306. public StuInfoBasicEntity GetStuInfoBasicEntity(string keyValue)
  307. {
  308. try
  309. {
  310. return this.BaseRepository("CollegeMIS").FindEntity<StuInfoBasicEntity>(keyValue);
  311. }
  312. catch (Exception ex)
  313. {
  314. if (ex is ExceptionEx)
  315. {
  316. throw;
  317. }
  318. else
  319. {
  320. throw ExceptionEx.ThrowServiceException(ex);
  321. }
  322. }
  323. }
  324. /// <summary>
  325. /// 获取准许毕业的学生的专业
  326. /// <summary>
  327. /// <returns></returns>
  328. public List<CdMajorEntity> GetMajorInfoWithGraduation()
  329. {
  330. try
  331. {
  332. var stuInfo = this.BaseRepository("CollegeMIS")
  333. .FindList<StuInfoBasicEntity>(a => a.FinishSchoolMark == "1").ToList();
  334. var majorNoList = stuInfo.GroupBy(a => a.MajorNo).Select(a => a.Key).ToList();
  335. var majorList = this.BaseRepository("CollegeMIS")
  336. .FindList<CdMajorEntity>(a => majorNoList.Contains(a.MajorNo)).ToList();
  337. return majorList;
  338. }
  339. catch (Exception ex)
  340. {
  341. if (ex is ExceptionEx)
  342. {
  343. throw;
  344. }
  345. else
  346. {
  347. throw ExceptionEx.ThrowServiceException(ex);
  348. }
  349. }
  350. }
  351. /// <summary>
  352. /// 获取StuInfoBasic表实体数据
  353. /// <param name="keyValue">主键</param>
  354. /// <summary>
  355. /// <returns></returns>
  356. public void CreateGraduateNoByMajor(string CityCode, string SchoolCode, string MajorList)
  357. {
  358. try
  359. {
  360. var year = DateTime.Now.Year.ToString().Substring(2, 2);
  361. var firstStr = year + CityCode + SchoolCode;
  362. //获取最大的序号
  363. var DiplomaNoList = this.BaseRepository("CollegeMIS")
  364. .FindList<StuInfoBasicEntity>(a => a.DiplomaNo.Contains(firstStr)).Select(a => a.DiplomaNo.Substring(a.DiplomaNo.Length - 4, 4).ToInt()).ToList();
  365. var orderNo = 1;
  366. if (DiplomaNoList.Count() > 0)
  367. {
  368. var MaxDiplomaNo = DiplomaNoList.Max(a => a);
  369. orderNo = MaxDiplomaNo + 1;
  370. }
  371. var ListMajorNo = MajorList.Split(',').ToList();
  372. foreach (var MajorNo in ListMajorNo)
  373. {
  374. var stuList = this.BaseRepository("CollegeMIS")
  375. .FindList<StuInfoBasicEntity>(a => a.MajorNo == MajorNo)
  376. .Where(a => a.DiplomaNo == null || a.DiplomaNo == "");
  377. if (stuList.Count() > 0)
  378. {
  379. foreach (var stuInfo in stuList)
  380. {
  381. stuInfo.DiplomaNo = firstStr + orderNo.ToString().PadLeft(4, '0');
  382. this.BaseRepository("CollegeMIS").Update(stuInfo);
  383. orderNo++;
  384. }
  385. }
  386. }
  387. }
  388. catch (Exception ex)
  389. {
  390. if (ex is ExceptionEx)
  391. {
  392. throw;
  393. }
  394. else
  395. {
  396. throw ExceptionEx.ThrowServiceException(ex);
  397. }
  398. }
  399. }
  400. /// <summary>
  401. /// 获取StuInfoBasic表实体数据
  402. /// <param name="keyValue">主键</param>
  403. /// <summary>
  404. /// <returns></returns>
  405. public StuInfoBasicEntity GetStuNoByAccount(string keyValue)
  406. {
  407. try
  408. {
  409. return this.BaseRepository("CollegeMIS").FindEntity<StuInfoBasicEntity>(a => a.StuNo == keyValue);
  410. }
  411. catch (Exception ex)
  412. {
  413. if (ex is ExceptionEx)
  414. {
  415. throw;
  416. }
  417. else
  418. {
  419. throw ExceptionEx.ThrowServiceException(ex);
  420. }
  421. }
  422. }
  423. /// <summary>
  424. /// 获取树形数据
  425. /// </summary>
  426. /// <returns></returns>
  427. public DataTable GetSqlTree()
  428. {
  429. try
  430. {
  431. var ClassDiredctorNo = LoginUserInfo.Get().account;
  432. return this.BaseRepository("CollegeMIS").FindTable($" SELECT * FROM dbo.ClassInfo where ClassDiredctorNo='{ClassDiredctorNo}' or ClassTutorNo='{ClassDiredctorNo}'");
  433. }
  434. catch (Exception ex)
  435. {
  436. if (ex is ExceptionEx)
  437. {
  438. throw;
  439. }
  440. else
  441. {
  442. throw ExceptionEx.ThrowServiceException(ex);
  443. }
  444. }
  445. }
  446. public StuInfoBasicEntity GetStuInfoBasicEntityByIdCard(string idcard)
  447. {
  448. try
  449. {
  450. return this.BaseRepository("CollegeMIS").FindEntity<StuInfoBasicEntity>(a => a.IdentityCardNo == idcard);
  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. #endregion
  465. #region 提交数据
  466. /// <summary>
  467. /// 审核全部
  468. /// </summary>
  469. public void CheckAll()
  470. {
  471. try
  472. {
  473. this.BaseRepository("CollegeMIS").ExecuteBySql("update StuInfoBasic set CheckMark=1");
  474. }
  475. catch (Exception ex)
  476. {
  477. if (ex is ExceptionEx)
  478. {
  479. throw;
  480. }
  481. else
  482. {
  483. throw ExceptionEx.ThrowServiceException(ex);
  484. }
  485. }
  486. }
  487. /// <summary>
  488. /// 准许毕业操作
  489. /// </summary>
  490. public void AllowGraduate(string stuNo, string status)
  491. {
  492. try
  493. {
  494. var list = stuNo.Split(',').ToList().Select(a => "'" + a + "'");
  495. var stulist = string.Join(",", list);
  496. this.BaseRepository("CollegeMIS").ExecuteBySql($"UPDATE dbo.StuInfoBasic SET FinishSchoolMark ='{status}' WHERE StuNo in({stulist})");
  497. }
  498. catch (Exception ex)
  499. {
  500. if (ex is ExceptionEx)
  501. {
  502. throw;
  503. }
  504. else
  505. {
  506. throw ExceptionEx.ThrowServiceException(ex);
  507. }
  508. }
  509. }
  510. public void SynPhoto()
  511. {
  512. //var logpath = @"D:\新版数字化校园\Publish\log\0913.txt";
  513. try
  514. {
  515. var stuList = this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(x => x.Grade == "21")
  516. .ToList();
  517. var url = AppDomain.CurrentDomain.BaseDirectory;
  518. //System.IO.File.AppendAllText(logpath, "同步照片\r\n");
  519. var num = 0;
  520. foreach (var stuInfo in stuList)
  521. {
  522. var F_FileName = stuInfo.ksh + ".jpg";
  523. var F_FilePath = $"{url}/Resource/UserPhoto/KSZP/{F_FileName}";
  524. //判断文件是否存在
  525. if (System.IO.File.Exists(F_FilePath))
  526. {
  527. //照片不为空
  528. if (!string.IsNullOrEmpty(stuInfo.Photo))
  529. {
  530. var annex = this.BaseRepository()
  531. .FindEntity<AnnexesFileEntity>(a => a.F_FolderId == stuInfo.Photo);
  532. if (annex == null)
  533. {
  534. var annexEntity = new AnnexesFileEntity()
  535. {
  536. F_Id = Guid.NewGuid().ToString(),
  537. F_FileName = F_FileName,
  538. F_FilePath = F_FilePath,
  539. F_FolderId = stuInfo.Photo
  540. };
  541. this.BaseRepository().Insert(annexEntity);
  542. }
  543. else
  544. {
  545. annex.F_FileName = F_FileName;
  546. annex.F_FilePath = F_FilePath;
  547. this.BaseRepository().Update(annex);
  548. }
  549. }
  550. else
  551. {
  552. stuInfo.Photo = Guid.NewGuid().ToString();
  553. var annexEntity = new AnnexesFileEntity()
  554. {
  555. F_Id = Guid.NewGuid().ToString(),
  556. F_FileName = F_FileName,
  557. F_FilePath = F_FilePath,
  558. F_FolderId = stuInfo.Photo
  559. };
  560. annexEntity.Create();
  561. this.BaseRepository("CollegeMIS").Update(stuInfo);
  562. this.BaseRepository().Insert(annexEntity);
  563. }
  564. //num++;
  565. }
  566. else
  567. {
  568. //System.IO.File.AppendAllText(logpath, F_FilePath + "学生:" + stuInfo.StuName + "文件不存在" + "\r\n");
  569. }
  570. }
  571. //System.IO.File.AppendAllText(logpath, "同步照片:" + num + "个学生\r\n");
  572. }
  573. catch (Exception ex)
  574. {
  575. if (ex is ExceptionEx)
  576. {
  577. throw;
  578. }
  579. else
  580. {
  581. throw ExceptionEx.ThrowServiceException(ex);
  582. }
  583. }
  584. }
  585. /// <summary>
  586. /// 删除实体数据
  587. /// <param name="keyValue">主键</param>
  588. /// <summary>
  589. /// <returns></returns>
  590. public void DeleteEntity(string keyValue)
  591. {
  592. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  593. try
  594. {
  595. //单个删除
  596. //this.BaseRepository("CollegeMIS").Delete<StuInfoBasicEntity>(t => t.StuId == keyValue);
  597. //多个删除
  598. var keyValueArr = keyValue.Split(',');
  599. foreach (var item in keyValueArr)
  600. {
  601. db.Delete<StuInfoBasicEntity>(t => t.StuId == item);
  602. }
  603. db.Commit();
  604. }
  605. catch (Exception ex)
  606. {
  607. db.Rollback();
  608. if (ex is ExceptionEx)
  609. {
  610. throw;
  611. }
  612. else
  613. {
  614. throw ExceptionEx.ThrowServiceException(ex);
  615. }
  616. }
  617. }
  618. /// <summary>
  619. /// 领取毕业证
  620. /// <param name="keyValue">主键</param>
  621. /// <summary>
  622. /// <returns></returns>
  623. public void GetCard(string keyValue)
  624. {
  625. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  626. try
  627. {
  628. var keyValueArr = keyValue.Split(',');
  629. foreach (var item in keyValueArr)
  630. {
  631. var sql = $"UPDATE dbo.StuInfoBasic SET FinishSchoolMark='2',FinishSchoolDate=GETDATE() WHERE StuId='{item}'";
  632. db.ExecuteBySql(sql);
  633. }
  634. db.Commit();
  635. }
  636. catch (Exception ex)
  637. {
  638. db.Rollback();
  639. if (ex is ExceptionEx)
  640. {
  641. throw;
  642. }
  643. else
  644. {
  645. throw ExceptionEx.ThrowServiceException(ex);
  646. }
  647. }
  648. }
  649. /// <summary>
  650. /// 毕业生归档
  651. /// <summary>
  652. /// <returns></returns>
  653. public void StuStore()
  654. {
  655. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  656. var adb = this.BaseRepository().BeginTrans();
  657. try
  658. {
  659. //归档前提为已经领取毕业证的学生
  660. var stuInfos = db
  661. .FindList<StuInfoBasicEntity>(a => a.FinishSchoolMark == "2");
  662. foreach (var item in stuInfos)
  663. {
  664. var StuInfoType = typeof(StuInfoBasicEntity);
  665. var PropertyInfoStuInfo = StuInfoType.GetProperties();
  666. var GraduateEntity = new StuInfoGraduateEntity();
  667. var typegraduate = typeof(StuInfoGraduateEntity);
  668. var PropertyInfoGraduate = typegraduate.GetProperties();
  669. foreach (var itemStuInfo in PropertyInfoStuInfo)
  670. {
  671. var objStuInfoType = itemStuInfo.GetValue(StuInfoType);
  672. foreach (var itemGraduate in PropertyInfoGraduate)
  673. {
  674. if (itemGraduate.Name == itemStuInfo.Name)
  675. {
  676. itemGraduate.SetValue(GraduateEntity, objStuInfoType, null);
  677. }
  678. }
  679. }
  680. var accountInfo = adb.FindEntity<UserEntity>(a => a.F_Account == item.StuNo);
  681. if (accountInfo != null)
  682. {
  683. //删除账户
  684. adb.Delete(accountInfo);
  685. }
  686. //清空宿舍信息
  687. var dormitory = db
  688. .FindEntity<Acc_DormitoryBuildEntity>(a => a.StudentID == item.StuId);
  689. if (dormitory != null)
  690. {
  691. dormitory.StudentID = "";
  692. dormitory.StuName = "";
  693. db.Update(dormitory);
  694. }
  695. db.Delete(item);
  696. db.Insert(GraduateEntity);
  697. }
  698. }
  699. catch (Exception ex)
  700. {
  701. db.Rollback();
  702. adb.Rollback();
  703. if (ex is ExceptionEx)
  704. {
  705. throw;
  706. }
  707. else
  708. {
  709. throw ExceptionEx.ThrowServiceException(ex);
  710. }
  711. }
  712. }
  713. /// <summary>
  714. /// 保存实体数据(新增、修改)
  715. /// <param name="keyValue">主键</param>
  716. /// <summary>
  717. /// <returns></returns>
  718. public void SaveEntity(string keyValue, StuInfoBasicEntity entity)
  719. {
  720. try
  721. {
  722. UserIBLL userIBLL = new UserBLL();
  723. if (!string.IsNullOrEmpty(keyValue))
  724. {
  725. entity.Modify(keyValue);
  726. var oldEntity = this.BaseRepository("CollegeMIS").FindEntity<StuInfoBasicEntity>(keyValue);
  727. List<StuInfoBasic_ChangeLogEntity> list = new List<StuInfoBasic_ChangeLogEntity>();
  728. var loginUser = LoginUserInfo.Get();
  729. var tableInfos = this.BaseRepository("CollegeMIS").FindTable(@"SELECT t.[name] AS 表名,c.[name] AS 字段名,cast(ep.[value]
  730. as varchar(100)) AS [字段说明]
  731. FROM sys.tables AS t
  732. INNER JOIN sys.columns
  733. AS c ON t.object_id = c.object_id
  734. LEFT JOIN sys.extended_properties AS ep
  735. ON ep.major_id = c.object_id AND ep.minor_id = c.column_id WHERE ep.class =1
  736. AND t.name='StuInfoBasic'");
  737. PropertyInfo[] properties = oldEntity.GetType().GetProperties();
  738. foreach (System.Reflection.PropertyInfo item in properties)
  739. {
  740. string name = item.Name;
  741. object oldValue = item.GetValue(oldEntity);
  742. object newValue = item.GetValue(entity);
  743. if (oldValue == null || newValue == null)
  744. {
  745. continue;
  746. }
  747. if (!oldValue.Equals(newValue))
  748. {
  749. var columnName = "";
  750. foreach (DataRow rows in tableInfos.Rows)
  751. {
  752. if (rows["字段名"].ToString() == item.Name)
  753. {
  754. columnName = rows["字段说明"].ToString();
  755. }
  756. }
  757. var changeEntity = new StuInfoBasic_ChangeLogEntity
  758. {
  759. StuID = keyValue,
  760. BeforeChange = oldValue.ToString(),
  761. AfterChange = newValue.ToString(),
  762. FieldName = columnName,
  763. UpdateBy = loginUser.userId,
  764. UpdateTime = DateTime.Now
  765. };
  766. changeEntity.Create();
  767. list.Add(changeEntity);
  768. }
  769. }
  770. if (list.Count > 0)
  771. {
  772. this.BaseRepository("CollegeMIS").Insert(list);
  773. }
  774. var annexesFileEntity = this.BaseRepository().FindEntity<AnnexesFileEntity>(a => a.F_FolderId == entity.Photo);
  775. var url = "";
  776. if (annexesFileEntity != null)
  777. {
  778. url = annexesFileEntity.F_FilePath;
  779. url = "/" + url.Substring(url.IndexOf("Resource"), url.Length - url.IndexOf("Resource"));
  780. }
  781. var baseUser = userIBLL.GetEntityByAccount(entity.StuNo);
  782. if (baseUser != null)
  783. {
  784. baseUser.F_HeadIcon = url;
  785. userIBLL.SaveEntity(baseUser.F_UserId, baseUser);
  786. }
  787. this.BaseRepository("CollegeMIS").Update(entity);
  788. }
  789. else
  790. {
  791. entity.Create();
  792. this.BaseRepository("CollegeMIS").Insert(entity);
  793. }
  794. }
  795. catch (Exception ex)
  796. {
  797. if (ex is ExceptionEx)
  798. {
  799. throw;
  800. }
  801. else
  802. {
  803. throw ExceptionEx.ThrowServiceException(ex);
  804. }
  805. }
  806. }
  807. #endregion
  808. public class TableInfo
  809. {
  810. public string TableName { get; set; }
  811. public string ColumnName { get; set; }
  812. public string ColumnDescription { get; set; }
  813. }
  814. public void GenerateAccout()
  815. {
  816. UserRelationIBLL userRelationIBLL = new UserRelationBLL();
  817. UserIBLL userIBLL = new UserBLL();
  818. try
  819. {
  820. var stuInfoBasicEntities = BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(m => m.CheckMark != "0");
  821. var alluserlist = userIBLL.GetAllList().Where(m => m.F_Description == "学生");
  822. var roleId = Config.GetValue("GenerateStudentsRoleId");
  823. var defaultpwd = Config.GetValue("defaultpwd");
  824. //读取默认密码配置中已启用的密码
  825. var Sys_DefaultPwdConfigEntity = this.BaseRepository().FindEntity<Sys_DefaultPwdConfigEntity>(x => x.IsEnabled == true);
  826. if (Sys_DefaultPwdConfigEntity != null)
  827. {
  828. defaultpwd = Sys_DefaultPwdConfigEntity.Pwd;
  829. }
  830. var studentList = new List<UserEntity>();
  831. foreach (var tEntity in stuInfoBasicEntities)
  832. {
  833. if (alluserlist.Count(m => m.F_Account == tEntity.StuNo) > 0)
  834. {
  835. continue;
  836. }
  837. var annexesFileEntity = this.BaseRepository().FindEntity<AnnexesFileEntity>(a => a.F_FolderId == tEntity.Photo);
  838. var url = "";
  839. if (annexesFileEntity != null)
  840. {
  841. url = annexesFileEntity.F_FilePath;
  842. url = "/" + url.Substring(url.IndexOf("Resource"));
  843. }
  844. UserEntity userbase = new UserEntity();
  845. userbase.F_Account = tEntity.StuNo;
  846. userbase.F_RealName = tEntity.StuName;
  847. userbase.F_EnCode = tEntity.StuNo;
  848. userbase.F_Password = Md5Helper.Encrypt(defaultpwd, 32).ToLower();
  849. userbase.F_HeadIcon = string.IsNullOrEmpty(url) ? Config.GetValue("defaultheadimg") : url;
  850. userbase.F_Gender = tEntity.GenderNo.HasValue ? Convert.ToInt32(tEntity.GenderNo.Value) : 1;
  851. userbase.F_DeleteMark = 0;
  852. userbase.F_EnabledMark = 1;
  853. userbase.F_Mobile = tEntity.mobile;
  854. userbase.F_Description = "学生";
  855. userbase.F_CompanyId = tEntity.F_SchoolId;
  856. userbase.F_DepartmentId = tEntity.DeptNo;
  857. userbase.F_IdentityCardNo = tEntity.IdentityCardNo;
  858. userIBLL.SaveEntity(null, userbase);
  859. studentList.Add(userbase);
  860. }
  861. if (studentList.Any())
  862. {
  863. string s = studentList.Select(m => m.F_UserId).Aggregate((current, userEntity) => current + "," + userEntity);
  864. userRelationIBLL.SaveEntityList2(roleId, 1, s);
  865. }
  866. }
  867. catch (Exception ex)
  868. {
  869. if (ex is ExceptionEx)
  870. {
  871. throw;
  872. }
  873. else
  874. {
  875. throw ExceptionEx.ThrowServiceException(ex);
  876. }
  877. }
  878. }
  879. public void UpdateAccount()
  880. {
  881. try
  882. {
  883. UserIBLL userIBLL = new UserBLL();
  884. var teacherList = this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>();
  885. var baseTeacherList = userIBLL.GetAllList().Where(m => m.F_Description == "学生");
  886. foreach (var baseTeacher in baseTeacherList)
  887. {
  888. var num = 0;
  889. var teacher = teacherList.FirstOrDefault(a => a.StuNo == baseTeacher.F_Account);
  890. if (teacher != null)
  891. {
  892. if (baseTeacher.F_RealName != teacher.StuName)
  893. {
  894. baseTeacher.F_RealName = teacher.StuName;
  895. num++;
  896. }
  897. if (baseTeacher.F_Gender != Convert.ToInt32(teacher.GenderNo))
  898. {
  899. baseTeacher.F_Gender = Convert.ToInt32(teacher.GenderNo);
  900. num++;
  901. }
  902. if (baseTeacher.F_Mobile != teacher.mobile)
  903. {
  904. baseTeacher.F_Mobile = teacher.mobile;
  905. num++;
  906. }
  907. if (baseTeacher.F_CompanyId != teacher.F_SchoolId)
  908. {
  909. baseTeacher.F_CompanyId = teacher.F_SchoolId;
  910. num++;
  911. }
  912. if (baseTeacher.F_DepartmentId != teacher.DeptNo)
  913. {
  914. baseTeacher.F_DepartmentId = teacher.DeptNo;
  915. num++;
  916. }
  917. if (baseTeacher.F_IdentityCardNo != teacher.IdentityCardNo)
  918. {
  919. baseTeacher.F_IdentityCardNo = teacher.IdentityCardNo;
  920. num++;
  921. }
  922. if (num > 0)
  923. {
  924. userIBLL.UpdateEntity(baseTeacher);
  925. }
  926. }
  927. }
  928. }
  929. catch (Exception ex)
  930. {
  931. if (ex is ExceptionEx)
  932. {
  933. throw;
  934. }
  935. else
  936. {
  937. throw ExceptionEx.ThrowServiceException(ex);
  938. }
  939. }
  940. }
  941. public IEnumerable<StuInfoBasicEntity> GetAllList()
  942. {
  943. try
  944. {
  945. return this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(m => m.CheckMark == "1");
  946. }
  947. catch (Exception ex)
  948. {
  949. if (ex is ExceptionEx)
  950. {
  951. throw;
  952. }
  953. else
  954. {
  955. throw ExceptionEx.ThrowServiceException(ex);
  956. }
  957. }
  958. }
  959. public IEnumerable<StuInfoBasicEntity> GetStuInfoByClassNo(string classNo)
  960. {
  961. try
  962. {
  963. return this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(m => m.CheckMark == "1" && m.ClassNo == classNo);
  964. }
  965. catch (Exception ex)
  966. {
  967. if (ex is ExceptionEx)
  968. {
  969. throw;
  970. }
  971. else
  972. {
  973. throw ExceptionEx.ThrowServiceException(ex);
  974. }
  975. }
  976. }
  977. public void SyncDept()
  978. {
  979. try
  980. {
  981. var data = this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>().ToList();
  982. var majorList = this.BaseRepository("CollegeMIS").FindList<CdMajorEntity>().ToList();
  983. foreach (var item in data)
  984. {
  985. var deptNo = majorList.FirstOrDefault(a => a.MajorNo == item.MajorNo)?.DeptNo;
  986. item.DeptNo = deptNo;
  987. this.BaseRepository("CollegeMIS").Update(item);
  988. }
  989. }
  990. catch (Exception ex)
  991. {
  992. if (ex is ExceptionEx)
  993. {
  994. throw;
  995. }
  996. else
  997. {
  998. throw ExceptionEx.ThrowServiceException(ex);
  999. }
  1000. }
  1001. }
  1002. public void SyncMajor()
  1003. {
  1004. try
  1005. {
  1006. var data = this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>().ToList();
  1007. var classList = this.BaseRepository("CollegeMIS").FindList<ClassInfoEntity>().ToList();
  1008. foreach (var item in data)
  1009. {
  1010. var majorNo = classList.FirstOrDefault(a => a.ClassNo == item.ClassNo)?.MajorNo;
  1011. item.MajorNo = majorNo;
  1012. this.BaseRepository("CollegeMIS").Update(item);
  1013. }
  1014. }
  1015. catch (Exception ex)
  1016. {
  1017. if (ex is ExceptionEx)
  1018. {
  1019. throw;
  1020. }
  1021. else
  1022. {
  1023. throw ExceptionEx.ThrowServiceException(ex);
  1024. }
  1025. }
  1026. }
  1027. #region 缓存定义
  1028. private ICache cache = CacheFactory.CaChe();
  1029. private string cacheKey = "Learun_adms_excelError_"; // +公司主键
  1030. #endregion
  1031. /// <summary>
  1032. /// 批量更新学生数据
  1033. /// </summary>
  1034. /// <param name="dt"></param>
  1035. public (int snum, int fnum) StuInfoBasicUpdateImport(DataTable dt, string fileId, string classno)
  1036. {
  1037. var db = this.BaseRepository("CollegeMIS");
  1038. try
  1039. {
  1040. db.BeginTrans();
  1041. int snum = 0;
  1042. int fnum = 0;
  1043. //failDt用于保存失败数据
  1044. DataTable failDt = new DataTable();
  1045. if (dt.Rows.Count > 0)
  1046. {
  1047. foreach (DataColumn dc in dt.Columns)
  1048. {
  1049. failDt.Columns.Add(dc.ColumnName, dc.DataType);
  1050. }
  1051. failDt.Columns.Add("导入错误", typeof(string));
  1052. dt.Columns.Add("导入错误", typeof(string));
  1053. //数据字典
  1054. var detailList = this.BaseRepository().FindList<DataItemDetailEntity>(@"SELECT t.*,t2.F_ItemCode FROM LR_Base_DataItemDetail t
  1055. INNER JOIN LR_Base_DataItem t2 ON t.F_ItemId = t2.F_ItemId
  1056. WHERE t.F_DeleteMark = 0");
  1057. //当前班级学生信息
  1058. IEnumerable<StuInfoBasicEntity> stuInfoBasicEntities = db.FindList<StuInfoBasicEntity>($"select * from StuInfoBasic where classno='{classno}'");
  1059. //修改学生list
  1060. List<StuInfoBasicEntity> insertedorderlist = new List<StuInfoBasicEntity>();
  1061. //省市县
  1062. var provinceList = db.FindList<DIC_PROVINCEEntity>();
  1063. var cityList = db.FindList<DIC_CITYEntity>();
  1064. var areaList = db.FindList<DIC_AREAEntity>();
  1065. // 循环遍历导入
  1066. foreach (DataRow dr in dt.Rows)
  1067. {
  1068. try
  1069. {
  1070. //检测是否是空行
  1071. if (!string.IsNullOrEmpty(dr["学号"].ToString()))
  1072. {
  1073. //检测是否有空值
  1074. if (string.IsNullOrEmpty(dr["姓名"].ToString()))
  1075. {
  1076. dr["导入错误"] = "【姓名】不能为空!";
  1077. failDt.Rows.Add(dr.ItemArray);
  1078. continue;
  1079. }
  1080. //判断学生是否在当前选中班级
  1081. var stuInfoBasic = stuInfoBasicEntities.FirstOrDefault(s => s.StuNo == dr["学号"].ToString().Trim() && s.StuName == dr["姓名"].ToString().Trim());
  1082. if (stuInfoBasic == null)
  1083. {
  1084. dr["导入错误"] = "班级:" + classno + "中未找到该学生!";
  1085. failDt.Rows.Add(dr.ItemArray);
  1086. continue;
  1087. }
  1088. #region 验证数据格式和数据字典等
  1089. var sex = dr["性别"].ToString().Trim();
  1090. if (sex != "男" && sex != "女")
  1091. {
  1092. dr["导入错误"] = "【性别】请填写男或女!";
  1093. failDt.Rows.Add(dr.ItemArray);
  1094. continue;
  1095. }
  1096. //判断日期是否是日期格式
  1097. var birthday = dr["出生日期"].ToString().Trim();
  1098. if (!string.IsNullOrEmpty(birthday) && !IsDate(birthday))
  1099. {
  1100. dr["导入错误"] = "【出生日期】格式不正确!";
  1101. failDt.Rows.Add(dr.ItemArray);
  1102. continue;
  1103. }
  1104. var NationalityNo = dr["民族"].ToString().Trim();
  1105. var Nationality = detailList.FirstOrDefault(x => x.F_ItemCode == "National" && x.F_ItemName == NationalityNo);
  1106. if (!string.IsNullOrEmpty(NationalityNo) && Nationality == null)
  1107. {
  1108. dr["导入错误"] = "【民族】数据字典找不到对应的数据!";
  1109. failDt.Rows.Add(dr.ItemArray);
  1110. continue;
  1111. }
  1112. var PartyFaceNo = dr["政治面貌"].ToString().Trim();
  1113. var PartyFace = detailList.FirstOrDefault(x => x.F_ItemCode == "BCdPartyFace" && x.F_ItemName == PartyFaceNo);
  1114. if (!string.IsNullOrEmpty(PartyFaceNo) && PartyFace == null)
  1115. {
  1116. dr["导入错误"] = "【政治面貌】数据字典找不到对应的数据!";
  1117. failDt.Rows.Add(dr.ItemArray);
  1118. continue;
  1119. }
  1120. var EduSystem = dr["学制"].ToString().Trim();
  1121. var EduSystemEntity = detailList.FirstOrDefault(x => x.F_ItemCode == "EduSystem" && x.F_ItemName == EduSystem);
  1122. if (!string.IsNullOrEmpty(EduSystem) && EduSystemEntity == null)
  1123. {
  1124. dr["导入错误"] = "【学制】数据字典找不到对应的数据!";
  1125. failDt.Rows.Add(dr.ItemArray);
  1126. continue;
  1127. }
  1128. //判断日期是否是日期格式
  1129. var registerDate = string.IsNullOrEmpty(dr["报到日期"].ToString().Trim()) ? "" : dr["报到日期"].ToString().Trim();
  1130. if (!string.IsNullOrEmpty(registerDate) && !IsDate(registerDate))
  1131. {
  1132. dr["导入错误"] = "【报到日期】格式不正确!";
  1133. failDt.Rows.Add(dr.ItemArray);
  1134. continue;
  1135. }
  1136. var entranceDate = string.IsNullOrEmpty(dr["入学年月"].ToString().Trim()) ? "" : dr["入学年月"].ToString().Trim();
  1137. if (!string.IsNullOrEmpty(entranceDate) && !IsDate(entranceDate))
  1138. {
  1139. dr["导入错误"] = "【入学年月】格式不正确!";
  1140. failDt.Rows.Add(dr.ItemArray);
  1141. continue;
  1142. }
  1143. var residenceNo = dr["户口分类"].ToString().Trim();
  1144. var residence = detailList.FirstOrDefault(x => x.F_ItemCode == "ResidenceNo" && x.F_ItemName == residenceNo);
  1145. if (!string.IsNullOrEmpty(residenceNo) && residence == null)
  1146. {
  1147. dr["导入错误"] = "【户口分类】数据字典找不到对应的数据!";
  1148. failDt.Rows.Add(dr.ItemArray);
  1149. continue;
  1150. }
  1151. //籍贯省市县
  1152. var privioce = dr["籍贯(省)"].ToString().Trim();
  1153. var city = dr["籍贯(市)"].ToString().Trim();
  1154. var area = dr["籍贯(县)"].ToString().Trim();
  1155. var provinceEntity = provinceList.FirstOrDefault(x => x.PNAME == privioce);
  1156. var cityEntity = cityList.FirstOrDefault(x => x.CNAME == city);
  1157. var areaEntity = areaList.FirstOrDefault(x => x.ANAME == area);
  1158. if (!string.IsNullOrEmpty(privioce) && provinceEntity == null)
  1159. {
  1160. dr["导入错误"] = "【籍贯(省)】数据源找不到对应的数据!";
  1161. failDt.Rows.Add(dr.ItemArray);
  1162. continue;
  1163. }
  1164. if (!string.IsNullOrEmpty(city) && cityEntity == null)
  1165. {
  1166. dr["导入错误"] = "【籍贯(市)】数据源找不到对应的数据!";
  1167. failDt.Rows.Add(dr.ItemArray);
  1168. continue;
  1169. }
  1170. if (!string.IsNullOrEmpty(area) && areaEntity == null)
  1171. {
  1172. dr["导入错误"] = "【籍贯(县)】数据源找不到对应的数据!";
  1173. failDt.Rows.Add(dr.ItemArray);
  1174. continue;
  1175. }
  1176. var depositBank = dr["开户银行"].ToString().Trim();
  1177. var depositBankItem = detailList.FirstOrDefault(x => x.F_ItemCode == "DepositBank" && x.F_ItemName == depositBank);
  1178. if (!string.IsNullOrEmpty(depositBank) && depositBankItem == null)
  1179. {
  1180. dr["导入错误"] = "【开户银行】数据字典找不到对应的数据!";
  1181. failDt.Rows.Add(dr.ItemArray);
  1182. continue;
  1183. }
  1184. //是否单亲
  1185. bool? single = null;
  1186. if (!string.IsNullOrEmpty(dr["是否单亲"].ToString().Trim()))
  1187. {
  1188. if (dr["是否单亲"].ToString().Trim() == "是")
  1189. {
  1190. single = true;
  1191. }
  1192. else if (dr["是否单亲"].ToString().Trim() == "否")
  1193. {
  1194. single = false;
  1195. }
  1196. }
  1197. var FamilyOriginNo = dr["家庭出身"].ToString().Trim();
  1198. var FamilyOrigin = detailList.FirstOrDefault(x => x.F_ItemCode == "BCdFamilyOrigin" && x.F_ItemName == FamilyOriginNo);
  1199. if (!string.IsNullOrEmpty(FamilyOriginNo) && FamilyOrigin == null)
  1200. {
  1201. dr["导入错误"] = "【家庭出身】数据字典找不到对应的数据!";
  1202. failDt.Rows.Add(dr.ItemArray);
  1203. continue;
  1204. }
  1205. var OverseasChineseNo = dr["港澳台侨"].ToString().Trim();
  1206. var OverseasChinese = detailList.FirstOrDefault(x => x.F_ItemCode == "BCdOverseasChinese" && x.F_ItemName == OverseasChineseNo);
  1207. if (!string.IsNullOrEmpty(OverseasChineseNo) && OverseasChinese == null)
  1208. {
  1209. dr["导入错误"] = "【港澳台侨】数据字典找不到对应的数据!";
  1210. failDt.Rows.Add(dr.ItemArray);
  1211. continue;
  1212. }
  1213. var GraduateNo = dr["本专科"].ToString().Trim();
  1214. var Graduate = detailList.FirstOrDefault(x => x.F_ItemCode == "CollegeType" && x.F_ItemName == GraduateNo);
  1215. if (!string.IsNullOrEmpty(GraduateNo) && Graduate == null)
  1216. {
  1217. dr["导入错误"] = "【本专科】数据字典找不到对应的数据!";
  1218. failDt.Rows.Add(dr.ItemArray);
  1219. continue;
  1220. }
  1221. var GraduateYear = string.IsNullOrEmpty(dr["毕业时间"].ToString().Trim()) ? "" : dr["毕业时间"].ToString().Trim();
  1222. if (!string.IsNullOrEmpty(GraduateYear) && !IsDate(GraduateYear))
  1223. {
  1224. dr["导入错误"] = "【毕业时间】格式不正确!";
  1225. failDt.Rows.Add(dr.ItemArray);
  1226. continue;
  1227. }
  1228. #endregion
  1229. //写入要导入的数据
  1230. if (!string.IsNullOrEmpty(dr["学籍号"].ToString().Trim()))
  1231. {
  1232. stuInfoBasic.StuCode = dr["学籍号"].ToString().Trim();
  1233. }
  1234. if (!string.IsNullOrEmpty(dr["通知书号"].ToString().Trim()))
  1235. {
  1236. stuInfoBasic.NoticeNo = dr["通知书号"].ToString().Trim();
  1237. }
  1238. if (!string.IsNullOrEmpty(dr["考生号"].ToString().Trim()))
  1239. stuInfoBasic.ksh = dr["考生号"].ToString().Trim();
  1240. stuInfoBasic.GenderNo = dr["性别"].ToString().Trim() == "女" ? false : true;
  1241. if (!string.IsNullOrEmpty(birthday))
  1242. {
  1243. stuInfoBasic.Birthday = Convert.ToDateTime(birthday);
  1244. }
  1245. if (!string.IsNullOrEmpty(dr["身份证号"].ToString().Trim()))
  1246. stuInfoBasic.IdentityCardNo = dr["身份证号"].ToString().Trim();
  1247. stuInfoBasic.NationalityNo = Nationality?.F_ItemValue;
  1248. stuInfoBasic.PartyFaceNo = PartyFace?.F_ItemValue;
  1249. stuInfoBasic.EduSystem = EduSystemEntity?.F_ItemValue;
  1250. if (!string.IsNullOrEmpty(registerDate))
  1251. {
  1252. stuInfoBasic.RegisterDate = Convert.ToDateTime(registerDate);
  1253. }
  1254. if (!string.IsNullOrEmpty(entranceDate))
  1255. {
  1256. stuInfoBasic.EntranceDate = Convert.ToDateTime(entranceDate);
  1257. }
  1258. if (!string.IsNullOrEmpty(dr["通讯地址"].ToString().Trim()))
  1259. stuInfoBasic.MailAddress = dr["通讯地址"].ToString().Trim();
  1260. if (!string.IsNullOrEmpty(dr["联系电话"].ToString().Trim()))
  1261. stuInfoBasic.mobile = dr["联系电话"].ToString().Trim();
  1262. if (!string.IsNullOrEmpty(dr["户口所在地"].ToString().Trim()))
  1263. stuInfoBasic.FatherUnit = dr["户口所在地"].ToString().Trim();
  1264. if (!string.IsNullOrEmpty(dr["档案所在地"].ToString().Trim()))
  1265. stuInfoBasic.MatherUnit = dr["档案所在地"].ToString().Trim();
  1266. if (!string.IsNullOrEmpty(dr["户籍所在地"].ToString().Trim()))
  1267. stuInfoBasic.Domicile = dr["户籍所在地"].ToString().Trim();
  1268. stuInfoBasic.ResidenceNo = residence?.F_ItemValue;
  1269. stuInfoBasic.F_ProvinceId = provinceEntity?.PCODE;
  1270. stuInfoBasic.F_CityId = cityEntity?.CCODE;
  1271. stuInfoBasic.F_CountyId = areaEntity?.ACODE;
  1272. stuInfoBasic.DepositBank = depositBankItem?.F_ItemValue;
  1273. if (!string.IsNullOrEmpty(dr["开户卡账号"].ToString().Trim()))
  1274. stuInfoBasic.BankCard = dr["开户卡账号"].ToString().Trim();
  1275. if (!string.IsNullOrEmpty(dr["开户银行位置"].ToString().Trim()))
  1276. stuInfoBasic.BankLocation = dr["开户银行位置"].ToString().Trim();
  1277. if (!string.IsNullOrEmpty(dr["邮政编码"].ToString().Trim()))
  1278. stuInfoBasic.PostalCode = dr["邮政编码"].ToString().Trim();
  1279. stuInfoBasic.IsSingle = single;
  1280. if (!string.IsNullOrEmpty(dr["父亲姓名"].ToString().Trim()))
  1281. stuInfoBasic.FatherName = dr["父亲姓名"].ToString().Trim();
  1282. if (!string.IsNullOrEmpty(dr["父亲身份证号"].ToString().Trim()))
  1283. stuInfoBasic.OneIdCardNo = dr["父亲身份证号"].ToString().Trim();
  1284. if (!string.IsNullOrEmpty(dr["父亲电话"].ToString().Trim()))
  1285. stuInfoBasic.FatherPhone = dr["父亲电话"].ToString().Trim();
  1286. if (!string.IsNullOrEmpty(dr["父亲户籍地址"].ToString().Trim()))
  1287. stuInfoBasic.OneDomicile = dr["父亲户籍地址"].ToString().Trim();
  1288. if (!string.IsNullOrEmpty(dr["父亲现住址"].ToString().Trim()))
  1289. stuInfoBasic.OneAddress = dr["父亲现住址"].ToString().Trim();
  1290. if (!string.IsNullOrEmpty(dr["母亲姓名"].ToString().Trim()))
  1291. stuInfoBasic.MatherName = dr["母亲姓名"].ToString().Trim();
  1292. if (!string.IsNullOrEmpty(dr["母亲身份证号"].ToString().Trim()))
  1293. stuInfoBasic.TwoIdCardNo = dr["母亲身份证号"].ToString().Trim();
  1294. if (!string.IsNullOrEmpty(dr["母亲电话"].ToString().Trim()))
  1295. stuInfoBasic.MatherPhone = dr["母亲电话"].ToString().Trim();
  1296. if (!string.IsNullOrEmpty(dr["母亲户籍地址"].ToString().Trim()))
  1297. stuInfoBasic.TwoDomicile = dr["母亲户籍地址"].ToString().Trim();
  1298. if (!string.IsNullOrEmpty(dr["母亲现住址"].ToString().Trim()))
  1299. stuInfoBasic.TwoAddress = dr["母亲现住址"].ToString().Trim();
  1300. if (!string.IsNullOrEmpty(dr["监护人姓名"].ToString().Trim()))
  1301. stuInfoBasic.GuardianName = dr["监护人姓名"].ToString().Trim();
  1302. if (!string.IsNullOrEmpty(dr["监护人身份证号"].ToString().Trim()))
  1303. stuInfoBasic.GuardianIdCardNo = dr["监护人身份证号"].ToString().Trim();
  1304. if (!string.IsNullOrEmpty(dr["监护人电话"].ToString().Trim()))
  1305. stuInfoBasic.GuardianPhone = dr["监护人电话"].ToString().Trim();
  1306. if (!string.IsNullOrEmpty(dr["监护人户籍地址"].ToString().Trim()))
  1307. stuInfoBasic.GuardianDomicile = dr["监护人户籍地址"].ToString().Trim();
  1308. if (!string.IsNullOrEmpty(dr["监护人现住址"].ToString().Trim()))
  1309. stuInfoBasic.GuardianAddress = dr["监护人现住址"].ToString().Trim();
  1310. stuInfoBasic.FamilyOriginNo = FamilyOrigin?.F_ItemValue;
  1311. stuInfoBasic.OverseasChineseNo = OverseasChinese?.F_ItemValue;
  1312. stuInfoBasic.GraduateNo = Graduate?.F_ItemValue;
  1313. if (!string.IsNullOrEmpty(dr["毕业证号"].ToString().Trim()))
  1314. stuInfoBasic.DiplomaNo = dr["毕业证号"].ToString().Trim();
  1315. stuInfoBasic.GraduateYear = GraduateYear;
  1316. if (!string.IsNullOrEmpty(dr["毕业证书备注"].ToString().Trim()))
  1317. stuInfoBasic.DiplomaRemark = dr["毕业证书备注"].ToString().Trim();
  1318. if (!string.IsNullOrEmpty(dr["校内地址"].ToString().Trim()))
  1319. stuInfoBasic.InSchoolAddress = dr["校内地址"].ToString().Trim();
  1320. if (!string.IsNullOrEmpty(dr["校内电话"].ToString().Trim()))
  1321. stuInfoBasic.InSchoolTelephone = dr["校内电话"].ToString().Trim();
  1322. if (!string.IsNullOrEmpty(dr["QQ"].ToString().Trim()))
  1323. stuInfoBasic.QQ = dr["QQ"].ToString().Trim();
  1324. if (!string.IsNullOrEmpty(dr["特长"].ToString().Trim()))
  1325. stuInfoBasic.GoodAt = dr["特长"].ToString().Trim();
  1326. if (!string.IsNullOrEmpty(dr["备注"].ToString().Trim()))
  1327. stuInfoBasic.Remark = dr["备注"].ToString().Trim();
  1328. insertedorderlist.Add(stuInfoBasic);
  1329. snum++;
  1330. }
  1331. }
  1332. catch (Exception ex)
  1333. {
  1334. fnum++;
  1335. dr["导入错误"] = ex.Message;
  1336. failDt.Rows.Add(dr.ItemArray);
  1337. }
  1338. }
  1339. //更新
  1340. db.Update(insertedorderlist);
  1341. db.Commit();
  1342. if (failDt.Rows.Count > 0)
  1343. {
  1344. string errordt = failDt.ToJson();
  1345. cache.Write<string>(cacheKey + fileId, errordt, CacheId.excel);
  1346. }
  1347. }
  1348. return (snum, failDt.Rows.Count);
  1349. }
  1350. catch (Exception ex)
  1351. {
  1352. db.Rollback();
  1353. if (ex is ExceptionEx)
  1354. {
  1355. throw;
  1356. }
  1357. else
  1358. {
  1359. throw ExceptionEx.ThrowServiceException(ex);
  1360. }
  1361. }
  1362. }
  1363. /// <summary>
  1364. /// 判断是否是日期格式
  1365. /// </summary>
  1366. /// <param name="strDate"></param>
  1367. /// <returns></returns>
  1368. private bool IsDate(string strDate)
  1369. {
  1370. try
  1371. {
  1372. DateTime.Parse(strDate);
  1373. return true;
  1374. }
  1375. catch
  1376. {
  1377. return false;
  1378. }
  1379. }
  1380. }
  1381. }