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.
 
 
 
 
 
 

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