using Dapper;
using Learun.DataBase.Repository;
using Learun.Util;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using Learun.Application.Base.AuthorizeModule;
using Learun.Application.Organization;
using System.Reflection;
using Learun.Application.Base.SystemModule;
using Learun.Application.TwoDevelopment.LogisticsManagement;
using Learun.Cache.Base;
using Learun.Cache.Factory;
namespace Learun.Application.TwoDevelopment.EducationalAdministration
{
///
/// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
/// Copyright (c) 2013-2018 北京泉江科技有限公司
/// 创 建:超级管理员
/// 日 期:2019-02-21 16:53
/// 描 述:学生学籍
///
public class StuInfoBasicService : RepositoryFactory
{
private DataItemIBLL dataItemIBLL = new DataItemBLL();
#region 获取数据
///
/// 获取页面显示列表数据
///
/// 查询参数
///
public IEnumerable GetPageList(Pagination pagination, string queryJson)
{
try
{
var strSql = new StringBuilder();
strSql.Append("SELECT t.* ");
strSql.Append(" FROM StuInfoBasic t ");
strSql.Append(" WHERE 1=1 ");
var queryParam = queryJson.ToJObject();
// 虚拟参数
var dp = new DynamicParameters(new { });
if (!queryParam["Crowning"].IsEmpty())
{
dp.Add("Crowning", queryParam["Crowning"].ToString(), DbType.String);
strSql.Append(" AND t.Crowning = @Crowning ");
}
if (!queryParam["StuNo"].IsEmpty())
{
dp.Add("StuNo", queryParam["StuNo"].ToString(), DbType.String);
strSql.Append(" AND t.StuNo = @StuNo ");
}
if (!queryParam["StuName"].IsEmpty())
{
dp.Add("StuName", "%" + queryParam["StuName"].ToString() + "%", DbType.String);
strSql.Append(" AND t.StuName Like @StuName ");
}
if (!queryParam["DeptNo"].IsEmpty())
{
dp.Add("DeptNo", "" + queryParam["DeptNo"].ToString() + "", DbType.String);
strSql.Append(" AND t.DeptNo=@DeptNo ");
}
if (!queryParam["MajorNo"].IsEmpty())
{
dp.Add("MajorNo", "" + queryParam["MajorNo"].ToString() + "", DbType.String);
strSql.Append(" AND t.MajorNo=@MajorNo ");
}
if (!queryParam["ClassNo"].IsEmpty())
{
dp.Add("ClassNo", "" + queryParam["ClassNo"].ToString() + "", DbType.String);
strSql.Append(" AND t.ClassNo=@ClassNo ");
}
if (!queryParam["Grade"].IsEmpty())
{
dp.Add("Grade", "" + queryParam["Grade"].ToString() + "", DbType.String);
strSql.Append(" AND t.Grade=@Grade ");
}
if (!queryParam["IdentityCardNo"].IsEmpty())
{
dp.Add("IdentityCardNo", "%" + queryParam["IdentityCardNo"].ToString() + "%", DbType.String);
strSql.Append(" AND t.IdentityCardNo like @IdentityCardNo ");
}
if (!queryParam["GenderNo"].IsEmpty())
{
dp.Add("GenderNo", "" + queryParam["GenderNo"].ToString() + "", DbType.String);
strSql.Append(" AND t.GenderNo=@GenderNo ");
}
if (!queryParam["NationalityNo"].IsEmpty())
{
dp.Add("NationalityNo", "" + queryParam["NationalityNo"].ToString() + "", DbType.String);
strSql.Append(" AND t.NationalityNo=@NationalityNo ");
}
if (!queryParam["PieceCultivateWay"].IsEmpty())
{
dp.Add("PieceCultivateWay", "" + queryParam["PieceCultivateWay"].ToString() + "", DbType.String);
strSql.Append(" AND t.PieceCultivateWay=@PieceCultivateWay ");
}
if (!queryParam["F_ProvinceId"].IsEmpty())
{
dp.Add("F_ProvinceId", "" + queryParam["F_ProvinceId"].ToString() + "", DbType.String);
strSql.Append(" AND t.F_ProvinceId=@F_ProvinceId ");
}
if (!queryParam["F_CityId"].IsEmpty())
{
dp.Add("F_CityId", "" + queryParam["F_CityId"].ToString() + "", DbType.String);
strSql.Append(" AND t.F_CityId=@F_CityId ");
}
if (!queryParam["F_CountyId"].IsEmpty())
{
dp.Add("F_CountyId", "" + queryParam["F_CountyId"].ToString() + "", DbType.String);
strSql.Append(" AND t.F_CountyId=@F_CountyId ");
}
if (!queryParam["FinishSchoolMark"].IsEmpty())
{
dp.Add("FinishSchoolMark", "" + queryParam["FinishSchoolMark"].ToString() + "", DbType.String);
if (queryParam["FinishSchoolMark"].ToString() == "0")
{
strSql.Append(" AND (t.FinishSchoolMark is null or t.FinishSchoolMark='0') ");
}
else
{
strSql.Append(" AND t.FinishSchoolMark=@FinishSchoolMark ");
}
}
if (!queryParam["Remark"].IsEmpty())
{
dp.Add("Remark", "%" + queryParam["Remark"].ToString() + "%", DbType.String);
strSql.Append(" AND t.Remark Like @Remark ");
}
//旧
//if (!queryParam["AbmormityMoveMark"].IsEmpty())
//{
// strSql.Append(" AND t.stuno not in(select stuno from StuInfoBasicChange where StuChangeType in('04','05','06') and checkstatus=1) ");
//}
//2023-6-2教务反馈的需求 教师工作管理-我的班级,改为退学、转校的学生不显示。
if (!queryParam["MyClass"].IsEmpty())
{
strSql.Append(" AND t.stuno not in(select stuno from StuInfoBasicChange where StuChangeType in('04','06') and checkstatus=1) ");
}
return this.BaseRepository("CollegeMIS").FindList(strSql.ToString(), dp, pagination);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 获取页面显示列表数据
///
/// 查询参数
///
public IEnumerable GetPageListOfSoonGraduate(Pagination pagination, string queryJson)
{
try
{
var strSql = new StringBuilder();
strSql.Append("SELECT t.* ");
strSql.Append(" FROM StuInfoBasic t ");
strSql.Append(" WHERE 1=1 ");
//显示大三学生
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) ");
var queryParam = queryJson.ToJObject();
// 虚拟参数
var dp = new DynamicParameters(new { });
if (!queryParam["StuNo"].IsEmpty())
{
dp.Add("StuNo", queryParam["StuNo"].ToString(), DbType.String);
strSql.Append(" AND t.StuNo = @StuNo ");
}
if (!queryParam["StuName"].IsEmpty())
{
dp.Add("StuName", "%" + queryParam["StuName"].ToString() + "%", DbType.String);
strSql.Append(" AND t.StuName Like @StuName ");
}
if (!queryParam["DeptNo"].IsEmpty())
{
dp.Add("DeptNo", "" + queryParam["DeptNo"].ToString() + "", DbType.String);
strSql.Append(" AND t.DeptNo=@DeptNo ");
}
if (!queryParam["MajorNo"].IsEmpty())
{
dp.Add("MajorNo", "" + queryParam["MajorNo"].ToString() + "", DbType.String);
strSql.Append(" AND t.MajorNo=@MajorNo ");
}
if (!queryParam["ClassNo"].IsEmpty())
{
dp.Add("ClassNo", "" + queryParam["ClassNo"].ToString() + "", DbType.String);
strSql.Append(" AND t.ClassNo=@ClassNo ");
}
if (!queryParam["Grade"].IsEmpty())
{
dp.Add("Grade", "" + queryParam["Grade"].ToString() + "", DbType.String);
strSql.Append(" AND t.Grade=@Grade ");
}
if (!queryParam["FinishSchoolMark"].IsEmpty())
{
dp.Add("FinishSchoolMark", "" + queryParam["FinishSchoolMark"].ToString() + "", DbType.String);
if (queryParam["FinishSchoolMark"].ToString() == "0")
{
strSql.Append(" AND (t.FinishSchoolMark is null or t.FinishSchoolMark='0') ");
}
else
{
strSql.Append(" AND t.FinishSchoolMark=@FinishSchoolMark ");
}
}
if (!queryParam["Remark"].IsEmpty())
{
dp.Add("Remark", "%" + queryParam["Remark"].ToString() + "%", DbType.String);
strSql.Append(" AND t.Remark Like @Remark ");
}
//旧
//if (!queryParam["AbmormityMoveMark"].IsEmpty())
//{
// strSql.Append(" AND t.stuno not in(select stuno from StuInfoBasicChange where StuChangeType in('04','05','06') and checkstatus=1) ");
//}
return this.BaseRepository("CollegeMIS").FindList(strSql.ToString(), dp, pagination);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 获取不分页列表
///
/// 查询参数
///
public IEnumerable GetList(string queryJson)
{
try
{
var strSql = new StringBuilder();
strSql.Append("SELECT t.* ");
strSql.Append(" FROM StuInfoBasic t ");
strSql.Append(" WHERE 1=1 ");
var queryParam = queryJson.ToJObject();
// 虚拟参数
var dp = new DynamicParameters(new { });
if (!queryParam["keyword"].IsEmpty())
{
dp.Add("keyword", "%" + queryParam["keyword"].ToString() + "%", DbType.String);
strSql.Append(" AND (t.StuNo like @keyword or t.StuName Like @keyword)");
}
if (!queryParam["ClassNo"].IsEmpty())
{
dp.Add("ClassNo", queryParam["ClassNo"].ToString(), DbType.String);
strSql.Append(" AND t.ClassNo=@ClassNo ");
}
return this.BaseRepository("CollegeMIS").FindList(strSql.ToString(), dp);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
internal List GetSaveClassStudents(string account)
{
try
{
var classNO = this.BaseRepository("CollegeMIS").FindEntity(a => a.StuNo == account).ClassNo;
return this.BaseRepository("CollegeMIS").FindList(a => a.ClassNo == classNO).Select(a => a.StuNo).ToList();
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
internal bool GetAny()
{
try
{
return this.BaseRepository("CollegeMIS").FindList().ToList().Count > 0 ? true : false;
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
internal StuInfoBasicEntity GetStuInfoBasicEntityByStuNo(string enCode)
{
try
{
var data = this.BaseRepository("CollegeMIS").FindEntity(a => a.StuNo == enCode);
//if (data != null && (data.Photo != null && data.Photo != ""))
//{
// var url = this.BaseRepository().FindEntity(a => a.F_FolderId == data.Photo)?.F_FilePath;
// if (!string.IsNullOrEmpty(url))
// {
// url = "/" + url.Substring(url.IndexOf("Resource"));
// data.Photo = url;
// }
//}
return data;
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
public string GetPhotoByStuNo(string enCode)
{
try
{
var data = this.BaseRepository("CollegeMIS").FindEntity(a => a.StuNo == enCode);
if (data != null)
{
return data.Photo;
}
return "";
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
public StuInfoBasicEntity GetStuInfoBasicEntityByStuName(string name)
{
try
{
return this.BaseRepository("CollegeMIS").FindEntity(a => a.StuName == name);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 获取StuInfoBasic表实体数据
/// 主键
///
///
public StuInfoBasicEntity GetStuInfoBasicEntity(string keyValue)
{
try
{
return this.BaseRepository("CollegeMIS").FindEntity(keyValue);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 获取准许毕业的学生的专业
///
///
public List GetMajorInfoWithGraduation()
{
try
{
var stuInfo = this.BaseRepository("CollegeMIS")
.FindList(a => a.FinishSchoolMark == "1").ToList();
var majorNoList = stuInfo.GroupBy(a => a.MajorNo).Select(a => a.Key).ToList();
var majorList = this.BaseRepository("CollegeMIS")
.FindList(a => majorNoList.Contains(a.MajorNo)).ToList();
return majorList;
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 获取StuInfoBasic表实体数据
/// 主键
///
///
public void CreateGraduateNoByMajor(string CityCode, string SchoolCode, string MajorList)
{
try
{
var year = DateTime.Now.Year.ToString().Substring(2, 2);
var firstStr = year + CityCode + SchoolCode;
//获取最大的序号
var DiplomaNoList = this.BaseRepository("CollegeMIS")
.FindList(a => a.DiplomaNo.Contains(firstStr)).Select(a => a.DiplomaNo.Substring(a.DiplomaNo.Length - 4, 4).ToInt()).ToList();
var orderNo = 1;
if (DiplomaNoList.Count() > 0)
{
var MaxDiplomaNo = DiplomaNoList.Max(a => a);
orderNo = MaxDiplomaNo + 1;
}
var ListMajorNo = MajorList.Split(',').ToList();
foreach (var MajorNo in ListMajorNo)
{
var stuList = this.BaseRepository("CollegeMIS")
.FindList(a => a.MajorNo == MajorNo)
.Where(a => a.DiplomaNo == null || a.DiplomaNo == "");
if (stuList.Count() > 0)
{
foreach (var stuInfo in stuList)
{
stuInfo.DiplomaNo = firstStr + orderNo.ToString().PadLeft(4, '0');
this.BaseRepository("CollegeMIS").Update(stuInfo);
orderNo++;
}
}
}
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 获取StuInfoBasic表实体数据
/// 主键
///
///
public StuInfoBasicEntity GetStuNoByAccount(string keyValue)
{
try
{
return this.BaseRepository("CollegeMIS").FindEntity(a => a.StuNo == keyValue);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 获取树形数据
///
///
public DataTable GetSqlTree()
{
try
{
var ClassDiredctorNo = LoginUserInfo.Get().account;
return this.BaseRepository("CollegeMIS").FindTable($" SELECT * FROM dbo.ClassInfo where ClassDiredctorNo='{ClassDiredctorNo}' or ClassTutorNo='{ClassDiredctorNo}'");
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
public StuInfoBasicEntity GetStuInfoBasicEntityByIdCard(string idcard)
{
try
{
return this.BaseRepository("CollegeMIS").FindEntity(a => a.IdentityCardNo == idcard);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
#endregion
#region 提交数据
///
/// 审核全部
///
public void CheckAll()
{
try
{
this.BaseRepository("CollegeMIS").ExecuteBySql("update StuInfoBasic set CheckMark=1");
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 准许毕业操作
///
public void AllowGraduate(string stuNo, string status)
{
try
{
var list = stuNo.Split(',').ToList().Select(a => "'" + a + "'");
var stulist = string.Join(",", list);
this.BaseRepository("CollegeMIS").ExecuteBySql($"UPDATE dbo.StuInfoBasic SET FinishSchoolMark ='{status}' WHERE StuNo in({stulist})");
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
public void SynPhoto()
{
//var logpath = @"D:\新版数字化校园\Publish\log\0913.txt";
try
{
var stuList = this.BaseRepository("CollegeMIS").FindList(x => x.Grade == "21")
.ToList();
var url = AppDomain.CurrentDomain.BaseDirectory;
//System.IO.File.AppendAllText(logpath, "同步照片\r\n");
var num = 0;
foreach (var stuInfo in stuList)
{
var F_FileName = stuInfo.ksh + ".jpg";
var F_FilePath = $"{url}/Resource/UserPhoto/KSZP/{F_FileName}";
//判断文件是否存在
if (System.IO.File.Exists(F_FilePath))
{
//照片不为空
if (!string.IsNullOrEmpty(stuInfo.Photo))
{
var annex = this.BaseRepository()
.FindEntity(a => a.F_FolderId == stuInfo.Photo);
if (annex == null)
{
var annexEntity = new AnnexesFileEntity()
{
F_Id = Guid.NewGuid().ToString(),
F_FileName = F_FileName,
F_FilePath = F_FilePath,
F_FolderId = stuInfo.Photo
};
this.BaseRepository().Insert(annexEntity);
}
else
{
annex.F_FileName = F_FileName;
annex.F_FilePath = F_FilePath;
this.BaseRepository().Update(annex);
}
}
else
{
stuInfo.Photo = Guid.NewGuid().ToString();
var annexEntity = new AnnexesFileEntity()
{
F_Id = Guid.NewGuid().ToString(),
F_FileName = F_FileName,
F_FilePath = F_FilePath,
F_FolderId = stuInfo.Photo
};
annexEntity.Create();
this.BaseRepository("CollegeMIS").Update(stuInfo);
this.BaseRepository().Insert(annexEntity);
}
//num++;
}
else
{
//System.IO.File.AppendAllText(logpath, F_FilePath + "学生:" + stuInfo.StuName + "文件不存在" + "\r\n");
}
}
//System.IO.File.AppendAllText(logpath, "同步照片:" + num + "个学生\r\n");
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 删除实体数据
/// 主键
///
///
public void DeleteEntity(string keyValue)
{
var db = this.BaseRepository("CollegeMIS").BeginTrans();
try
{
//单个删除
//this.BaseRepository("CollegeMIS").Delete(t => t.StuId == keyValue);
//多个删除
var keyValueArr = keyValue.Split(',');
foreach (var item in keyValueArr)
{
db.Delete(t => t.StuId == item);
}
db.Commit();
}
catch (Exception ex)
{
db.Rollback();
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 领取毕业证
/// 主键
///
///
public void GetCard(string keyValue)
{
var db = this.BaseRepository("CollegeMIS").BeginTrans();
try
{
var keyValueArr = keyValue.Split(',');
foreach (var item in keyValueArr)
{
var sql = $"UPDATE dbo.StuInfoBasic SET FinishSchoolMark='2',FinishSchoolDate=GETDATE() WHERE StuId='{item}'";
db.ExecuteBySql(sql);
}
db.Commit();
}
catch (Exception ex)
{
db.Rollback();
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 毕业生归档
///
///
public void StuStore()
{
var db = this.BaseRepository("CollegeMIS").BeginTrans();
var adb = this.BaseRepository().BeginTrans();
try
{
//归档前提为已经领取毕业证的学生
var stuInfos = db
.FindList(a => a.FinishSchoolMark == "2");
foreach (var item in stuInfos)
{
var StuInfoType = typeof(StuInfoBasicEntity);
var PropertyInfoStuInfo = StuInfoType.GetProperties();
var GraduateEntity = new StuInfoGraduateEntity();
var typegraduate = typeof(StuInfoGraduateEntity);
var PropertyInfoGraduate = typegraduate.GetProperties();
foreach (var itemStuInfo in PropertyInfoStuInfo)
{
var objStuInfoType = itemStuInfo.GetValue(StuInfoType);
foreach (var itemGraduate in PropertyInfoGraduate)
{
if (itemGraduate.Name == itemStuInfo.Name)
{
itemGraduate.SetValue(GraduateEntity, objStuInfoType, null);
}
}
}
var accountInfo = adb.FindEntity(a => a.F_Account == item.StuNo);
if (accountInfo != null)
{
//删除账户
adb.Delete(accountInfo);
}
//清空宿舍信息
var dormitory = db
.FindEntity(a => a.StudentID == item.StuId);
if (dormitory != null)
{
dormitory.StudentID = "";
dormitory.StuName = "";
db.Update(dormitory);
}
db.Delete(item);
db.Insert(GraduateEntity);
}
}
catch (Exception ex)
{
db.Rollback();
adb.Rollback();
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 保存实体数据(新增、修改)
/// 主键
///
///
public void SaveEntity(string keyValue, StuInfoBasicEntity entity)
{
try
{
UserIBLL userIBLL = new UserBLL();
if (!string.IsNullOrEmpty(keyValue))
{
entity.Modify(keyValue);
var oldEntity = this.BaseRepository("CollegeMIS").FindEntity(keyValue);
List list = new List();
var loginUser = LoginUserInfo.Get();
var tableInfos = this.BaseRepository("CollegeMIS").FindTable(@"SELECT t.[name] AS 表名,c.[name] AS 字段名,cast(ep.[value]
as varchar(100)) AS [字段说明]
FROM sys.tables AS t
INNER JOIN sys.columns
AS c ON t.object_id = c.object_id
LEFT JOIN sys.extended_properties AS ep
ON ep.major_id = c.object_id AND ep.minor_id = c.column_id WHERE ep.class =1
AND t.name='StuInfoBasic'");
PropertyInfo[] properties = oldEntity.GetType().GetProperties();
foreach (System.Reflection.PropertyInfo item in properties)
{
string name = item.Name;
object oldValue = item.GetValue(oldEntity);
object newValue = item.GetValue(entity);
if (oldValue == null || newValue == null)
{
continue;
}
if (!oldValue.Equals(newValue))
{
var columnName = "";
foreach (DataRow rows in tableInfos.Rows)
{
if (rows["字段名"].ToString() == item.Name)
{
columnName = rows["字段说明"].ToString();
}
}
var changeEntity = new StuInfoBasic_ChangeLogEntity
{
StuID = keyValue,
BeforeChange = oldValue.ToString(),
AfterChange = newValue.ToString(),
FieldName = columnName,
UpdateBy = loginUser.userId,
UpdateTime = DateTime.Now
};
changeEntity.Create();
list.Add(changeEntity);
}
}
if (list.Count > 0)
{
this.BaseRepository("CollegeMIS").Insert(list);
}
var annexesFileEntity = this.BaseRepository().FindEntity(a => a.F_FolderId == entity.Photo);
var url = "";
if (annexesFileEntity != null)
{
url = annexesFileEntity.F_FilePath;
url = "/" + url.Substring(url.IndexOf("Resource"), url.Length - url.IndexOf("Resource"));
}
var baseUser = userIBLL.GetEntityByAccount(entity.StuNo);
if (baseUser != null)
{
baseUser.F_HeadIcon = url;
userIBLL.SaveEntity(baseUser.F_UserId, baseUser);
}
this.BaseRepository("CollegeMIS").Update(entity);
}
else
{
entity.Create();
this.BaseRepository("CollegeMIS").Insert(entity);
}
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
#endregion
public class TableInfo
{
public string TableName { get; set; }
public string ColumnName { get; set; }
public string ColumnDescription { get; set; }
}
public void GenerateAccout()
{
UserRelationIBLL userRelationIBLL = new UserRelationBLL();
UserIBLL userIBLL = new UserBLL();
try
{
var stuInfoBasicEntities = BaseRepository("CollegeMIS").FindList(m => m.CheckMark != "0");
var alluserlist = userIBLL.GetAllList().Where(m => m.F_Description == "学生");
var roleId = Config.GetValue("GenerateStudentsRoleId");
var defaultpwd = Config.GetValue("defaultpwd");
//读取默认密码配置中已启用的密码
var Sys_DefaultPwdConfigEntity = this.BaseRepository().FindEntity(x => x.IsEnabled == true);
if (Sys_DefaultPwdConfigEntity != null)
{
defaultpwd = Sys_DefaultPwdConfigEntity.Pwd;
}
var studentList = new List();
foreach (var tEntity in stuInfoBasicEntities)
{
if (alluserlist.Count(m => m.F_Account == tEntity.StuNo) > 0)
{
continue;
}
var annexesFileEntity = this.BaseRepository().FindEntity(a => a.F_FolderId == tEntity.Photo);
var url = "";
if (annexesFileEntity != null)
{
url = annexesFileEntity.F_FilePath;
url = "/" + url.Substring(url.IndexOf("Resource"));
}
UserEntity userbase = new UserEntity();
userbase.F_Account = tEntity.StuNo;
userbase.F_RealName = tEntity.StuName;
userbase.F_EnCode = tEntity.StuNo;
userbase.F_Password = Md5Helper.Encrypt(defaultpwd, 32).ToLower();
userbase.F_HeadIcon = string.IsNullOrEmpty(url) ? Config.GetValue("defaultheadimg") : url;
userbase.F_Gender = tEntity.GenderNo.HasValue ? Convert.ToInt32(tEntity.GenderNo.Value) : 1;
userbase.F_DeleteMark = 0;
userbase.F_EnabledMark = 1;
userbase.F_Mobile = tEntity.mobile;
userbase.F_Description = "学生";
userbase.F_CompanyId = tEntity.F_SchoolId;
userbase.F_DepartmentId = tEntity.DeptNo;
userbase.F_IdentityCardNo = tEntity.IdentityCardNo;
userIBLL.SaveEntity(null, userbase);
studentList.Add(userbase);
}
if (studentList.Any())
{
string s = studentList.Select(m => m.F_UserId).Aggregate((current, userEntity) => current + "," + userEntity);
userRelationIBLL.SaveEntityList2(roleId, 1, s);
}
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
public void UpdateAccount()
{
try
{
UserIBLL userIBLL = new UserBLL();
var teacherList = this.BaseRepository("CollegeMIS").FindList();
var baseTeacherList = userIBLL.GetAllList().Where(m => m.F_Description == "学生");
foreach (var baseTeacher in baseTeacherList)
{
var num = 0;
var teacher = teacherList.FirstOrDefault(a => a.StuNo == baseTeacher.F_Account);
if (teacher != null)
{
if (baseTeacher.F_RealName != teacher.StuName)
{
baseTeacher.F_RealName = teacher.StuName;
num++;
}
if (baseTeacher.F_Gender != Convert.ToInt32(teacher.GenderNo))
{
baseTeacher.F_Gender = Convert.ToInt32(teacher.GenderNo);
num++;
}
if (baseTeacher.F_Mobile != teacher.mobile)
{
baseTeacher.F_Mobile = teacher.mobile;
num++;
}
if (baseTeacher.F_CompanyId != teacher.F_SchoolId)
{
baseTeacher.F_CompanyId = teacher.F_SchoolId;
num++;
}
if (baseTeacher.F_DepartmentId != teacher.DeptNo)
{
baseTeacher.F_DepartmentId = teacher.DeptNo;
num++;
}
if (baseTeacher.F_IdentityCardNo != teacher.IdentityCardNo)
{
baseTeacher.F_IdentityCardNo = teacher.IdentityCardNo;
num++;
}
if (num > 0)
{
userIBLL.UpdateEntity(baseTeacher);
}
}
}
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
public IEnumerable GetAllList()
{
try
{
return this.BaseRepository("CollegeMIS").FindList(m => m.CheckMark == "1");
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
public IEnumerable GetStuInfoByClassNo(string classNo)
{
try
{
return this.BaseRepository("CollegeMIS").FindList(m => m.CheckMark == "1" && m.ClassNo == classNo);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
public void SyncDept()
{
try
{
var data = this.BaseRepository("CollegeMIS").FindList().ToList();
var majorList = this.BaseRepository("CollegeMIS").FindList().ToList();
foreach (var item in data)
{
var deptNo = majorList.FirstOrDefault(a => a.MajorNo == item.MajorNo)?.DeptNo;
item.DeptNo = deptNo;
this.BaseRepository("CollegeMIS").Update(item);
}
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
public void SyncMajor()
{
try
{
var data = this.BaseRepository("CollegeMIS").FindList().ToList();
var classList = this.BaseRepository("CollegeMIS").FindList().ToList();
foreach (var item in data)
{
var majorNo = classList.FirstOrDefault(a => a.ClassNo == item.ClassNo)?.MajorNo;
item.MajorNo = majorNo;
this.BaseRepository("CollegeMIS").Update(item);
}
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
#region 缓存定义
private ICache cache = CacheFactory.CaChe();
private string cacheKey = "Learun_adms_excelError_"; // +公司主键
#endregion
///
/// 批量更新学生数据
///
///
public (int snum, int fnum) StuInfoBasicUpdateImport(DataTable dt, string fileId, string classno)
{
var db = this.BaseRepository("CollegeMIS");
try
{
db.BeginTrans();
int snum = 0;
int fnum = 0;
//failDt用于保存失败数据
DataTable failDt = new DataTable();
if (dt.Rows.Count > 0)
{
foreach (DataColumn dc in dt.Columns)
{
failDt.Columns.Add(dc.ColumnName, dc.DataType);
}
failDt.Columns.Add("导入错误", typeof(string));
dt.Columns.Add("导入错误", typeof(string));
//数据字典
var detailList = this.BaseRepository().FindList(@"SELECT t.*,t2.F_ItemCode FROM LR_Base_DataItemDetail t
INNER JOIN LR_Base_DataItem t2 ON t.F_ItemId = t2.F_ItemId
WHERE t.F_DeleteMark = 0");
//当前班级学生信息
IEnumerable stuInfoBasicEntities = db.FindList($"select * from StuInfoBasic where classno='{classno}'");
//修改学生list
List insertedorderlist = new List();
//省市县
var provinceList = db.FindList();
var cityList = db.FindList();
var areaList = db.FindList();
// 循环遍历导入
foreach (DataRow dr in dt.Rows)
{
try
{
//检测是否是空行
if (!string.IsNullOrEmpty(dr["学号"].ToString()))
{
//检测是否有空值
if (string.IsNullOrEmpty(dr["姓名"].ToString()))
{
dr["导入错误"] = "【姓名】不能为空!";
failDt.Rows.Add(dr.ItemArray);
continue;
}
//判断学生是否在当前选中班级
var stuInfoBasic = stuInfoBasicEntities.FirstOrDefault(s => s.StuNo == dr["学号"].ToString().Trim());
if (stuInfoBasic == null)
{
dr["导入错误"] = "班级:" + classno + "中未找到该学生!";
failDt.Rows.Add(dr.ItemArray);
continue;
}
#region 验证数据格式和数据字典等
var sex = dr["性别"].ToString().Trim();
if (sex != "男" && sex != "女")
{
dr["导入错误"] = "【性别】请填写男或女!";
failDt.Rows.Add(dr.ItemArray);
continue;
}
//判断日期是否是日期格式
var birthday = dr["出生日期"].ToString().Trim();
if (!string.IsNullOrEmpty(birthday) && !IsDate(birthday))
{
dr["导入错误"] = "【出生日期】格式不正确!";
failDt.Rows.Add(dr.ItemArray);
continue;
}
var NationalityNo = dr["民族"].ToString().Trim();
var Nationality = detailList.FirstOrDefault(x => x.F_ItemCode == "National" && x.F_ItemName == NationalityNo);
if (!string.IsNullOrEmpty(NationalityNo) && Nationality == null)
{
dr["导入错误"] = "【民族】数据字典找不到对应的数据!";
failDt.Rows.Add(dr.ItemArray);
continue;
}
var PartyFaceNo = dr["政治面貌"].ToString().Trim();
var PartyFace = detailList.FirstOrDefault(x => x.F_ItemCode == "BCdPartyFace" && x.F_ItemName == PartyFaceNo);
if (!string.IsNullOrEmpty(PartyFaceNo) && PartyFace == null)
{
dr["导入错误"] = "【政治面貌】数据字典找不到对应的数据!";
failDt.Rows.Add(dr.ItemArray);
continue;
}
var EduSystem = dr["学制"].ToString().Trim();
var EduSystemEntity = detailList.FirstOrDefault(x => x.F_ItemCode == "EduSystem" && x.F_ItemName == EduSystem);
if (!string.IsNullOrEmpty(EduSystem) && EduSystemEntity == null)
{
dr["导入错误"] = "【学制】数据字典找不到对应的数据!";
failDt.Rows.Add(dr.ItemArray);
continue;
}
//判断日期是否是日期格式
var registerDate = string.IsNullOrEmpty(dr["报到日期"].ToString().Trim()) ? "" : dr["报到日期"].ToString().Trim();
if (!string.IsNullOrEmpty(registerDate) && !IsDate(registerDate))
{
dr["导入错误"] = "【报到日期】格式不正确!";
failDt.Rows.Add(dr.ItemArray);
continue;
}
var entranceDate = string.IsNullOrEmpty(dr["入学年月"].ToString().Trim()) ? "" : dr["入学年月"].ToString().Trim();
if (!string.IsNullOrEmpty(entranceDate) && !IsDate(entranceDate))
{
dr["导入错误"] = "【入学年月】格式不正确!";
failDt.Rows.Add(dr.ItemArray);
continue;
}
var residenceNo = dr["户口分类"].ToString().Trim();
var residence = detailList.FirstOrDefault(x => x.F_ItemCode == "ResidenceNo" && x.F_ItemName == residenceNo);
if (!string.IsNullOrEmpty(residenceNo) && residence == null)
{
dr["导入错误"] = "【户口分类】数据字典找不到对应的数据!";
failDt.Rows.Add(dr.ItemArray);
continue;
}
//籍贯省市县
var privioce = dr["籍贯(省)"].ToString().Trim();
var city = dr["籍贯(市)"].ToString().Trim();
var area = dr["籍贯(县)"].ToString().Trim();
var provinceEntity = provinceList.FirstOrDefault(x => x.PNAME == privioce);
var cityEntity = cityList.FirstOrDefault(x => x.CNAME == city);
var areaEntity = areaList.FirstOrDefault(x => x.ANAME == area);
if (!string.IsNullOrEmpty(privioce) && provinceEntity == null)
{
dr["导入错误"] = "【籍贯(省)】数据源找不到对应的数据!";
failDt.Rows.Add(dr.ItemArray);
continue;
}
if (!string.IsNullOrEmpty(city) && cityEntity == null)
{
dr["导入错误"] = "【籍贯(市)】数据源找不到对应的数据!";
failDt.Rows.Add(dr.ItemArray);
continue;
}
if (!string.IsNullOrEmpty(area) && areaEntity == null)
{
dr["导入错误"] = "【籍贯(县)】数据源找不到对应的数据!";
failDt.Rows.Add(dr.ItemArray);
continue;
}
var depositBank = dr["开户银行"].ToString().Trim();
var depositBankItem = detailList.FirstOrDefault(x => x.F_ItemCode == "DepositBank" && x.F_ItemName == depositBank);
if (!string.IsNullOrEmpty(depositBank) && depositBankItem == null)
{
dr["导入错误"] = "【开户银行】数据字典找不到对应的数据!";
failDt.Rows.Add(dr.ItemArray);
continue;
}
//是否单亲
bool? single = null;
if (!string.IsNullOrEmpty(dr["是否单亲"].ToString().Trim()))
{
if (dr["是否单亲"].ToString().Trim() == "是")
{
single = true;
}
else if (dr["是否单亲"].ToString().Trim() == "否")
{
single = false;
}
}
var FamilyOriginNo = dr["家庭出身"].ToString().Trim();
var FamilyOrigin = detailList.FirstOrDefault(x => x.F_ItemCode == "BCdFamilyOrigin" && x.F_ItemName == FamilyOriginNo);
if (!string.IsNullOrEmpty(FamilyOriginNo) && FamilyOrigin == null)
{
dr["导入错误"] = "【家庭出身】数据字典找不到对应的数据!";
failDt.Rows.Add(dr.ItemArray);
continue;
}
var OverseasChineseNo = dr["港澳台侨"].ToString().Trim();
var OverseasChinese = detailList.FirstOrDefault(x => x.F_ItemCode == "BCdOverseasChinese" && x.F_ItemName == OverseasChineseNo);
if (!string.IsNullOrEmpty(OverseasChineseNo) && OverseasChinese == null)
{
dr["导入错误"] = "【港澳台侨】数据字典找不到对应的数据!";
failDt.Rows.Add(dr.ItemArray);
continue;
}
var GraduateNo = dr["本专科"].ToString().Trim();
var Graduate = detailList.FirstOrDefault(x => x.F_ItemCode == "CollegeType" && x.F_ItemName == GraduateNo);
if (!string.IsNullOrEmpty(GraduateNo) && Graduate == null)
{
dr["导入错误"] = "【本专科】数据字典找不到对应的数据!";
failDt.Rows.Add(dr.ItemArray);
continue;
}
var GraduateYear = string.IsNullOrEmpty(dr["毕业时间"].ToString().Trim()) ? "" : dr["毕业时间"].ToString().Trim();
if (!string.IsNullOrEmpty(GraduateYear) && !IsDate(GraduateYear))
{
dr["导入错误"] = "【毕业时间】格式不正确!";
failDt.Rows.Add(dr.ItemArray);
continue;
}
#endregion
//写入要导入的数据
if (!string.IsNullOrEmpty(dr["学籍号"].ToString().Trim()))
{
stuInfoBasic.StuCode = dr["学籍号"].ToString().Trim();
}
if (!string.IsNullOrEmpty(dr["通知书号"].ToString().Trim()))
{
stuInfoBasic.NoticeNo = dr["通知书号"].ToString().Trim();
}
if (!string.IsNullOrEmpty(dr["考生号"].ToString().Trim()))
stuInfoBasic.ksh = dr["考生号"].ToString().Trim();
stuInfoBasic.GenderNo = dr["性别"].ToString().Trim() == "女" ? false : true;
if (!string.IsNullOrEmpty(birthday))
{
stuInfoBasic.Birthday = Convert.ToDateTime(birthday);
}
if (!string.IsNullOrEmpty(dr["身份证号"].ToString().Trim()))
stuInfoBasic.IdentityCardNo = dr["身份证号"].ToString().Trim();
stuInfoBasic.NationalityNo = Nationality?.F_ItemValue;
stuInfoBasic.PartyFaceNo = PartyFace?.F_ItemValue;
stuInfoBasic.EduSystem = EduSystemEntity?.F_ItemValue;
if (!string.IsNullOrEmpty(registerDate))
{
stuInfoBasic.RegisterDate = Convert.ToDateTime(registerDate);
}
if (!string.IsNullOrEmpty(entranceDate))
{
stuInfoBasic.EntranceDate = Convert.ToDateTime(entranceDate);
}
if (!string.IsNullOrEmpty(dr["通讯地址"].ToString().Trim()))
stuInfoBasic.MailAddress = dr["通讯地址"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["联系电话"].ToString().Trim()))
stuInfoBasic.mobile = dr["联系电话"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["户口所在地"].ToString().Trim()))
stuInfoBasic.FatherUnit = dr["户口所在地"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["档案所在地"].ToString().Trim()))
stuInfoBasic.MatherUnit = dr["档案所在地"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["户籍所在地"].ToString().Trim()))
stuInfoBasic.Domicile = dr["户籍所在地"].ToString().Trim();
stuInfoBasic.ResidenceNo = residence?.F_ItemValue;
stuInfoBasic.F_ProvinceId = provinceEntity?.PCODE;
stuInfoBasic.F_CityId = cityEntity?.CCODE;
stuInfoBasic.F_CountyId = areaEntity?.ACODE;
stuInfoBasic.DepositBank = depositBankItem?.F_ItemValue;
if (!string.IsNullOrEmpty(dr["开户卡账号"].ToString().Trim()))
stuInfoBasic.BankCard = dr["开户卡账号"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["开户银行位置"].ToString().Trim()))
stuInfoBasic.BankLocation = dr["开户银行位置"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["邮政编码"].ToString().Trim()))
stuInfoBasic.PostalCode = dr["邮政编码"].ToString().Trim();
stuInfoBasic.IsSingle = single;
if (!string.IsNullOrEmpty(dr["父亲姓名"].ToString().Trim()))
stuInfoBasic.FatherName = dr["父亲姓名"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["父亲身份证号"].ToString().Trim()))
stuInfoBasic.OneIdCardNo = dr["父亲身份证号"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["父亲电话"].ToString().Trim()))
stuInfoBasic.FatherPhone = dr["父亲电话"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["父亲户籍地址"].ToString().Trim()))
stuInfoBasic.OneDomicile = dr["父亲户籍地址"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["父亲现住址"].ToString().Trim()))
stuInfoBasic.OneAddress = dr["父亲现住址"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["母亲姓名"].ToString().Trim()))
stuInfoBasic.MatherName = dr["母亲姓名"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["母亲身份证号"].ToString().Trim()))
stuInfoBasic.TwoIdCardNo = dr["母亲身份证号"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["母亲电话"].ToString().Trim()))
stuInfoBasic.MatherPhone = dr["母亲电话"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["母亲户籍地址"].ToString().Trim()))
stuInfoBasic.TwoDomicile = dr["母亲户籍地址"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["母亲现住址"].ToString().Trim()))
stuInfoBasic.TwoAddress = dr["母亲现住址"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["监护人姓名"].ToString().Trim()))
stuInfoBasic.GuardianName = dr["监护人姓名"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["监护人身份证号"].ToString().Trim()))
stuInfoBasic.GuardianIdCardNo = dr["监护人身份证号"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["监护人电话"].ToString().Trim()))
stuInfoBasic.GuardianPhone = dr["监护人电话"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["监护人户籍地址"].ToString().Trim()))
stuInfoBasic.GuardianDomicile = dr["监护人户籍地址"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["监护人现住址"].ToString().Trim()))
stuInfoBasic.GuardianAddress = dr["监护人现住址"].ToString().Trim();
stuInfoBasic.FamilyOriginNo = FamilyOrigin?.F_ItemValue;
stuInfoBasic.OverseasChineseNo = OverseasChinese?.F_ItemValue;
stuInfoBasic.GraduateNo = Graduate?.F_ItemValue;
if (!string.IsNullOrEmpty(dr["毕业证号"].ToString().Trim()))
stuInfoBasic.DiplomaNo = dr["毕业证号"].ToString().Trim();
stuInfoBasic.GraduateYear = GraduateYear;
if (!string.IsNullOrEmpty(dr["毕业证书备注"].ToString().Trim()))
stuInfoBasic.DiplomaRemark = dr["毕业证书备注"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["校内地址"].ToString().Trim()))
stuInfoBasic.InSchoolAddress = dr["校内地址"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["校内电话"].ToString().Trim()))
stuInfoBasic.InSchoolTelephone = dr["校内电话"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["QQ"].ToString().Trim()))
stuInfoBasic.QQ = dr["QQ"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["特长"].ToString().Trim()))
stuInfoBasic.GoodAt = dr["特长"].ToString().Trim();
if (!string.IsNullOrEmpty(dr["备注"].ToString().Trim()))
stuInfoBasic.Remark = dr["备注"].ToString().Trim();
insertedorderlist.Add(stuInfoBasic);
snum++;
}
}
catch (Exception ex)
{
fnum++;
dr["导入错误"] = ex.Message;
failDt.Rows.Add(dr.ItemArray);
}
}
//更新
db.Update(insertedorderlist);
db.Commit();
if (failDt.Rows.Count > 0)
{
string errordt = failDt.ToJson();
cache.Write(cacheKey + fileId, errordt, CacheId.excel);
}
}
return (snum, failDt.Rows.Count);
}
catch (Exception ex)
{
db.Rollback();
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 判断是否是日期格式
///
///
///
private bool IsDate(string strDate)
{
try
{
DateTime.Parse(strDate);
return true;
}
catch
{
return false;
}
}
}
}