using Dapper;
using Learun.DataBase.Repository;
using Learun.Util;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace Learun.Application.TwoDevelopment.EducationalAdministration
{
///
/// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
/// Copyright (c) 2013-2018 北京泉江科技有限公司
/// 创 建:超级管理员
/// 日 期:2019-05-14 09:49
/// 描 述:选修课排课
///
public class ArrangeLessonTermOfElectiveService : RepositoryFactory
{
private static readonly HttpClient Client;
static ArrangeLessonTermOfElectiveService()
{
Client = new HttpClient();
}
#region 获取数据
///
/// 获取页面显示列表数据
///
/// 查询参数
///
public IEnumerable GetPageList(Pagination pagination, string queryJson)
{
try
{
var strSql = new StringBuilder();
strSql.Append("SELECT ");
strSql.Append(@"
t.Id,
t.PaiKeId,
t.LessonDate,
t.AcademicYearNo,
t.Semester,
t.LessonNo,
t.LessonName,
t.LessonSortNo,
t.LessonSection,
t.LessonTime,
t.StudyScore,
t.EmpNo,
t.EmpName,
t.ClassRoomNo,
t.ClassRoomName,
t.CheckMark
");
strSql.Append(" FROM ArrangeLessonTermOfElective t ");
strSql.Append(" WHERE 1=1 ");
var queryParam = queryJson.ToJObject();
// 虚拟参数
var dp = new DynamicParameters(new { });
return this.BaseRepository("CollegeMIS").FindList(strSql.ToString(), dp, pagination);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 获取ArrangeLessonTermOfElective表实体数据
/// 主键
///
///
public ArrangeLessonTermOfElectiveEntity GetArrangeLessonTermOfElectiveEntity(string keyValue)
{
try
{
return this.BaseRepository("CollegeMIS").FindEntity(keyValue);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
#endregion
#region 提交数据
///
/// 删除实体数据
/// 主键
///
///
public void DeleteEntity(string keyValue)
{
try
{
this.BaseRepository("CollegeMIS").Delete(t => t.Id == keyValue);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 保存实体数据(新增、修改)
/// 主键
///
///
public void SaveEntity(string keyValue, ArrangeLessonTermOfElectiveEntity entity)
{
try
{
if (!string.IsNullOrEmpty(keyValue))
{
entity.Modify(keyValue);
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
#region 扩展数据
///
/// 按条件同步选修排课系统数据
///
///
public async Task AsyncArrangeLessonOfElectiveDataByCondition(ArrangeLessonTermOfElectiveEntity entity)
{
bool result = false;
try
{
HttpContent httpContent = new StringContent("{\"school\":\"" + entity.F_SchoolId + "\",\"year\":\"" + entity.AcademicYearNo + "\",\"number\":\"" + entity.Semester + "\"}");
httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
string apiData = await Client.PostAsync(Config.GetValue("ArrangeLessonOfElectiveAPI"), httpContent).Result.Content.ReadAsStringAsync();
if (!string.IsNullOrEmpty(apiData))
{
var data = JsonConvert.DeserializeObject(apiData);
if (!data.success)
{
return result;
}
var dataList = data.entity.list;
if (dataList.Any())
{
//ArrangeLessonTermOfElective数据处理
var insertDataList = new List();
var lessonData = (await BaseRepository("CollegeMIS").FindListAsync()).ToList();
var oldArrangeLessonTermOfElectiveDataList = BaseRepository("CollegeMIS")
.FindList(m => m.F_SchoolId == entity.F_SchoolId
&& m.AcademicYearNo == entity.AcademicYearNo && m.Semester == entity.Semester).ToList();
foreach (var item in dataList)
{
if (!string.IsNullOrEmpty(item.paike.timeText))
{
foreach (var lessontime in item.paike.timeText.TrimEnd(',').Split(','))
{
string tmplessontime = "";
if (item.paike.section == "1")
{
tmplessontime = "10:00-10:40";
}
if (item.paike.section == "2")
{
tmplessontime = "10:50-11:30";
}
if (item.paike.section == "3")
{
tmplessontime = "12:00-12:40";
}
if (item.paike.section == "4")
{
tmplessontime = "12:50-13:30";
}
if (item.paike.section == "5")
{
tmplessontime = "16:00-16:40";
}
if (item.paike.section == "6")
{
tmplessontime = "16:50-17:30";
}
if (item.paike.section == "7")
{
tmplessontime = "18:00-18:40";
}
if (item.paike.section == "8")
{
tmplessontime = "18:50-19:30";
}
if (item.paike.section == "9")
{
tmplessontime = "20:20-21:00";
}
if (item.paike.section == "10")
{
tmplessontime = "21:10-21:50";
}
var insertData = new ArrangeLessonTermOfElectiveEntity
{
Id = Guid.NewGuid().ToString(),
PaiKeId = item.paike.id,
LessonDate = DateTime.Parse(lessontime),
AcademicYearNo = item.paike.year,
Semester = item.paike.number,
LessonNo = item.paike.curriculunNumber,
LessonName = item.paike.curriculunName,
LessonSortNo = "2",
LessonTime = tmplessontime,
LessonSection = item.paike.week + item.paike.section,
StudyScore = lessonData.FirstOrDefault(x => x.LessonNo == item.paike.curriculunNumber)?.StudyScore,
EmpNo = item.paike.teacherNumber,
EmpName = item.paike.teacherName,
ClassRoomNo = item.paike.classRoomNumber,
ClassRoomName = item.paike.classRoomName,
F_SchoolId = entity.F_SchoolId,
CheckMark = "1"
};
if (oldArrangeLessonTermOfElectiveDataList.Count(m => m.AcademicYearNo == insertData.AcademicYearNo
&& m.Semester == insertData.Semester && m.LessonNo == insertData.LessonNo
&& m.LessonSection == insertData.LessonSection && m.EmpNo == insertData.EmpNo
&& m.ClassRoomNo == insertData.ClassRoomNo) == 0)
{
insertDataList.Add(insertData);
}
}
}
}
var insertResult = await BaseRepository("CollegeMIS").InsertAsync(insertDataList);
//OpenLessonPlanOfElective数据处理
var strAcademicYear = entity.AcademicYearNo;
var strSemester = entity.Semester;
var schoolId = entity.F_SchoolId;
var ArrangeLessonTermOfElectiveData = (await BaseRepository("CollegeMIS").FindListAsync(@"select * from ArrangeLessonTermOfElective where AcademicYearNo='" + strAcademicYear + "' and Semester='" + strSemester + "' and F_SchoolId='" + schoolId + "'")).ToList();
var arrangeLessonTermData = (await BaseRepository("CollegeMIS").FindListAsync(@"select PaiKeId,AcademicYearNo,Semester,LessonNo,LessonName,LessonSection,EmpNo,EmpName,ClassRoomNo,ClassRoomName,F_SchoolId from ArrangeLessonTermOfElective where AcademicYearNo='" + strAcademicYear + "' and Semester='" + strSemester + "' and F_SchoolId='" + schoolId + "' group by PaiKeId, AcademicYearNo, Semester, LessonNo, LessonName, LessonSection, EmpNo, EmpName, ClassRoomNo, ClassRoomName,F_SchoolId ")).ToList();
var OpenLessonPlanOfElectiveData = (await BaseRepository("CollegeMIS").FindListAsync(@"select * from OpenLessonPlanOfElective where AcademicYearNo='" + strAcademicYear + "' and Semester='" + strSemester + "' and F_SchoolId='" + schoolId + "'")).ToList();
var insertOpenLessonPlanOfElectiveDataList = new List();
if (arrangeLessonTermData.Any())
{
foreach (var item in arrangeLessonTermData)
{
var insertOpenLessonPlanOfElectiveData = new OpenLessonPlanOfElectiveEntity()
{
Id = item.PaiKeId,
MakeDate = DateTime.Now,
AcademicYearNo = item.AcademicYearNo,
Semester = item.Semester,
LessonNo = item.LessonNo,
PartCode = "",
LessonName = item.LessonName,
LessonSortNo = lessonData.FirstOrDefault(x => x.LessonNo == item.LessonNo)?.LessonSortNo,
LessonSortDetailNo = lessonData.FirstOrDefault(x => x.LessonNo == item.LessonNo)?.LessonSortDetailNo,
LessonSection = item.LessonSection,
LessonTime = ArrangeLessonTermOfElectiveData.FirstOrDefault(x => x.PaiKeId == item.PaiKeId)?.LessonTime,
StudyScore = lessonData.FirstOrDefault(x => x.LessonNo == item.LessonNo)?.StudyScore,
StartWeek = 1,
EndWeek = ArrangeLessonTermOfElectiveData.Count(x => x.PaiKeId == item.PaiKeId),
StartDate = ArrangeLessonTermOfElectiveData.Where(x => x.PaiKeId == item.PaiKeId).OrderBy(x => x.LessonDate).FirstOrDefault()?.LessonDate,
EndDate = ArrangeLessonTermOfElectiveData.Where(x => x.PaiKeId == item.PaiKeId).OrderBy(x => x.LessonDate).LastOrDefault()?.LessonDate,
CheckStyleNo = "1",
ScoreRecordStyleNo = "1",
EmpNo = item.EmpNo,
EmpName = item.EmpName,
ClassRoomNo = item.ClassRoomNo,
ClassRoomName = item.ClassRoomName,
CheckMark = "1",
StuNumMax = 0,
StuNum = 0,
F_SchoolId = item.F_SchoolId
};
//非空判断
if (OpenLessonPlanOfElectiveData.Count(x =>
x.AcademicYearNo == insertOpenLessonPlanOfElectiveData.AcademicYearNo &&
x.Semester == insertOpenLessonPlanOfElectiveData.Semester &&
x.LessonNo == insertOpenLessonPlanOfElectiveData.LessonNo &&
x.LessonSortNo == insertOpenLessonPlanOfElectiveData.LessonSortNo &&
x.LessonSection == insertOpenLessonPlanOfElectiveData.LessonSection &&
x.EmpNo == insertOpenLessonPlanOfElectiveData.EmpNo &&
x.ClassRoomNo == insertOpenLessonPlanOfElectiveData.ClassRoomNo &&
x.F_SchoolId == insertOpenLessonPlanOfElectiveData.F_SchoolId) == 0 && insertOpenLessonPlanOfElectiveDataList.Count(x =>
x.AcademicYearNo == insertOpenLessonPlanOfElectiveData.AcademicYearNo &&
x.Semester == insertOpenLessonPlanOfElectiveData.Semester &&
x.LessonNo == insertOpenLessonPlanOfElectiveData.LessonNo &&
x.LessonSortNo == insertOpenLessonPlanOfElectiveData.LessonSortNo &&
x.LessonSection == insertOpenLessonPlanOfElectiveData.LessonSection &&
x.EmpNo == insertOpenLessonPlanOfElectiveData.EmpNo &&
x.ClassRoomNo == insertOpenLessonPlanOfElectiveData.ClassRoomNo &&
x.F_SchoolId == insertOpenLessonPlanOfElectiveData.F_SchoolId) == 0)
{
if (BaseRepository("CollegeMIS").FindEntity(m => m.Id == insertOpenLessonPlanOfElectiveData.Id) == null
&& BaseRepository("CollegeMIS").FindEntity(m => m.Id == insertOpenLessonPlanOfElectiveData.Id) == null)
{
insertOpenLessonPlanOfElectiveDataList.Add(insertOpenLessonPlanOfElectiveData);
}
}
}
await BaseRepository("CollegeMIS").InsertAsync(insertOpenLessonPlanOfElectiveDataList);
}
if (insertResult > 0)
{
result = true;
}
}
}
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
return result;
}
///
/// 按条件清空选修排课数据
///
///
public async Task AsyncModifyArrangeLessonOfElectiveDataByCondition(ArrangeLessonTermOfElectiveEntity entity)
{
var db = BaseRepository("CollegeMIS");
bool result = false;
try
{
db.BeginTrans();
HttpContent httpContent = new StringContent("{\"school\":\"" + entity.F_SchoolId + "\",\"year\":\"" + entity.AcademicYearNo + "\",\"number\":\"" + entity.Semester + "\"}");
httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
string apiData = await Client.PostAsync(Config.GetValue("ModifyArrangeLessonOfElectiveAPI"), httpContent).Result.Content.ReadAsStringAsync();
if (!string.IsNullOrEmpty(apiData))
{
var data = JsonConvert.DeserializeObject(apiData);
if (data.success)
{
var strAcademicYear = entity.AcademicYearNo;
var strSemester = entity.Semester;
var schoolId = entity.F_SchoolId;
await db.ExecuteAsyncBySql(
$"delete from ElectiveMajor where OLPOEId in(select id from OpenLessonPlanOfElective where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' and F_SchoolId='{schoolId}' ) or OLPOEId in (select id from OpenLessonPlanOfElectiveDel where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' and F_SchoolId='{schoolId}' ) ");
var executeResult = await db.ExecuteAsyncBySql(
$"delete from ArrangeLessonTermOfElective where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' and F_SchoolId='{schoolId}'");
await db.ExecuteAsyncBySql(
$"delete from OpenLessonPlanOfElective where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' and F_SchoolId='{schoolId}'");
await db.ExecuteAsyncBySql(
$"delete from ElectiveMergeItem where emid in (select emid from ElectiveMerge where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' and F_SchoolId='{schoolId}')");
await db.ExecuteAsyncBySql(
$"delete from ElectiveMerge where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' and F_SchoolId='{schoolId}'");
await db.ExecuteAsyncBySql(
$"delete from OpenLessonPlanOfElectiveDel where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' and F_SchoolId='{schoolId}'");
await db.ExecuteAsyncBySql(
$"delete from StuSelectLessonListOfElective where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' and F_SchoolId='{schoolId}'");
if (executeResult > 0)
{
result = true;
}
db.Commit();
}
}
}
catch (Exception ex)
{
db.Rollback();
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
return result;
}
///
/// 同步当前学期选修排课系统数据
///
///
public async Task AsyncArrangeLessonOfElectiveData()
{
bool result = false;
try
{
var apiData = await Client.GetStringAsync(Config.GetValue("ArrangeLessonOfElectiveAPI"));
if (!string.IsNullOrEmpty(apiData))
{
var data = JsonConvert.DeserializeObject(apiData);
if (!data.success)
{
return result;
}
var dataList = data.entity.list;
if (dataList.Any())
{
//ArrangeLessonTermOfElective数据处理
var insertDataList = new List();
var lessonData = (await BaseRepository("CollegeMIS").FindListAsync()).ToList();
foreach (var item in dataList)
{
var insertData = new ArrangeLessonTermOfElectiveEntity
{
Id = Guid.NewGuid().ToString(),
PaiKeId = item.paike.id,
LessonDate = DateTime.Parse(item.times),
AcademicYearNo = item.schoolYear,
Semester = item.paike.semester,
LessonNo = item.paike.curriculunId,
LessonName = item.paike.curriculunName,
LessonSortNo = lessonData.FirstOrDefault(m => m.LessonNo == item.paike.curriculunId)?.LessonSortNo,
LessonTime = item.paike.curriculunTime,
LessonSection = item.paike.week + item.paike.section,
StudyScore = lessonData.FirstOrDefault(x => x.LessonNo == item.paike.curriculunId)?.StudyScore,
EmpNo = item.paike.teacherId,
EmpName = item.paike.teacherName,
ClassRoomNo = item.paike.classRoomId,
ClassRoomName = item.paike.classRoomName,
CheckMark = "1"
};
insertDataList.Add(insertData);
}
var insertResult = await BaseRepository("CollegeMIS").InsertAsync(insertDataList);
//OpenLessonPlanOfElective数据处理
var strAcademicYear = insertDataList.First().AcademicYearNo;
var strSemester = insertDataList.First().Semester;
var ArrangeLessonTermOfElectiveData = (await BaseRepository("CollegeMIS").FindListAsync(@"select * from ArrangeLessonTermOfElective where AcademicYearNo='" + strAcademicYear + "' and Semester='" + strSemester + "'")).ToList();
var arrangeLessonTermData = (await BaseRepository("CollegeMIS").FindListAsync(@"select PaiKeId,AcademicYearNo,Semester,LessonNo,LessonName,LessonSection,EmpNo,EmpName,ClassRoomNo,ClassRoomName from ArrangeLessonTermOfElective where AcademicYearNo='" + strAcademicYear + "' and Semester='" + strSemester + "' group by PaiKeId, AcademicYearNo, Semester, LessonNo, LessonName, LessonSection, EmpNo, EmpName, ClassRoomNo, ClassRoomName")).ToList();
var OpenLessonPlanOfElectiveData = (await BaseRepository("CollegeMIS").FindListAsync(@"select * from OpenLessonPlanOfElective where AcademicYearNo='" + strAcademicYear + "' and Semester='" + strSemester + "'")).ToList();
var insertOpenLessonPlanOfElectiveDataList = new List();
if (arrangeLessonTermData.Any())
{
foreach (var item in arrangeLessonTermData)
{
var insertOpenLessonPlanOfElectiveData = new OpenLessonPlanOfElectiveEntity()
{
Id = item.PaiKeId,
MakeDate = DateTime.Now,
AcademicYearNo = item.AcademicYearNo,
Semester = item.Semester,
LessonNo = item.LessonNo,
PartCode = "",
LessonName = item.LessonName,
LessonSortNo = lessonData.FirstOrDefault(x => x.LessonNo == item.LessonNo)?.LessonSortNo,
LessonSortDetailNo = lessonData.FirstOrDefault(x => x.LessonNo == item.LessonNo)?.LessonSortDetailNo,
LessonSection = item.LessonSection,
LessonTime = ArrangeLessonTermOfElectiveData.FirstOrDefault(x => x.PaiKeId == item.PaiKeId)?.LessonTime,
StudyScore = lessonData.FirstOrDefault(x => x.LessonNo == item.LessonNo)?.StudyScore,
StartWeek = 1,
EndWeek = ArrangeLessonTermOfElectiveData.Count(x => x.PaiKeId == item.PaiKeId),
StartDate = ArrangeLessonTermOfElectiveData.Where(x => x.PaiKeId == item.PaiKeId).OrderBy(x => x.LessonDate).FirstOrDefault()?.LessonDate,
EndDate = ArrangeLessonTermOfElectiveData.Where(x => x.PaiKeId == item.PaiKeId).OrderBy(x => x.LessonDate).LastOrDefault()?.LessonDate,
CheckStyleNo = "1",
ScoreRecordStyleNo = "1",
EmpNo = item.EmpNo,
EmpName = item.EmpName,
ClassRoomNo = item.ClassRoomNo,
ClassRoomName = item.ClassRoomName,
CheckMark = "1",
StuNumMax = 0,
StuNum = 0
};
//非空判断
if (OpenLessonPlanOfElectiveData.Count(x =>
x.AcademicYearNo == insertOpenLessonPlanOfElectiveData.AcademicYearNo &&
x.Semester == insertOpenLessonPlanOfElectiveData.Semester &&
x.LessonNo == insertOpenLessonPlanOfElectiveData.LessonNo &&
x.LessonSortNo == insertOpenLessonPlanOfElectiveData.LessonSortNo &&
x.LessonSection == insertOpenLessonPlanOfElectiveData.LessonSection &&
x.EmpNo == insertOpenLessonPlanOfElectiveData.EmpNo &&
x.ClassRoomNo == insertOpenLessonPlanOfElectiveData.ClassRoomNo) == 0 && insertOpenLessonPlanOfElectiveDataList.Count(x =>
x.AcademicYearNo == insertOpenLessonPlanOfElectiveData.AcademicYearNo &&
x.Semester == insertOpenLessonPlanOfElectiveData.Semester &&
x.LessonNo == insertOpenLessonPlanOfElectiveData.LessonNo &&
x.LessonSortNo == insertOpenLessonPlanOfElectiveData.LessonSortNo &&
x.LessonSection == insertOpenLessonPlanOfElectiveData.LessonSection &&
x.EmpNo == insertOpenLessonPlanOfElectiveData.EmpNo &&
x.ClassRoomNo == insertOpenLessonPlanOfElectiveData.ClassRoomNo) == 0)
{
insertOpenLessonPlanOfElectiveDataList.Add(insertOpenLessonPlanOfElectiveData);
}
}
await BaseRepository("CollegeMIS").InsertAsync(insertOpenLessonPlanOfElectiveDataList);
}
if (insertResult > 0)
{
result = true;
}
}
}
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
return result;
}
///
/// 清空当前学期选修排课数据
///
///
public async Task AsyncModifyArrangeLessonOfElectiveData()
{
var db = BaseRepository("CollegeMIS");
bool result = false;
try
{
db.BeginTrans();
var apiData = await Client.GetStringAsync(Config.GetValue("ModifyArrangeLessonOfElectiveAPI"));
if (!string.IsNullOrEmpty(apiData))
{
var data = JsonConvert.DeserializeObject(apiData);
if (data.success)
{
var semesterAndYear = Common.GetSemesterAndYear();
var strAcademicYear = semesterAndYear.AcademicYearShort;
var strSemester = semesterAndYear.Semester;
await db.ExecuteAsyncBySql(
$"delete from ElectiveMajor where OLPOEId in(select id from OpenLessonPlanOfElective where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}') or OLPOEId in (select id from OpenLessonPlanOfElectiveDel where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}') ");
var executeResult = await db.ExecuteAsyncBySql(
$"delete from ArrangeLessonTermOfElective where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' ");
await db.ExecuteAsyncBySql(
$"delete from OpenLessonPlanOfElective where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' ");
await db.ExecuteAsyncBySql(
$"delete from ElectiveMergeItem where emid in (select emid from ElectiveMerge where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}') ");
await db.ExecuteAsyncBySql(
$"delete from ElectiveMerge where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' ");
await db.ExecuteAsyncBySql(
$"delete from OpenLessonPlanOfElectiveDel where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' ");
await db.ExecuteAsyncBySql(
$"delete from StuSelectLessonListOfElective where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' ");
if (executeResult > 0)
{
result = true;
}
db.Commit();
}
}
}
catch (Exception ex)
{
db.Rollback();
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
return result;
}
///
/// 选修课课程表
///
/// 账号
/// 用户类型 学生 教师
/// 查询开始时间
/// 查询截止时间
///
public IEnumerable GetTimeTable(string userAccount, string userType, string startDate, string endDate)
{
var semesterAndYear = Common.GetSemesterAndYear(startDate);
var strAcademicYear = semesterAndYear.AcademicYearShort;
var strSemester = semesterAndYear.Semester;
string sql;
if (userType == "学生")
{
//sql = @"select a.LessonDate,a.AcademicYearNo as AcademicYear,a.Semester,a.LessonNo,a.LessonName+'[选修]' as LessonName,a.LessonSection as LessonTime,a.EmpNo,a.EmpName,a.ClassRoomName as ClassroomName,a.ClassRoomNo,a.LessonSortNo,b.OLPEId
// from StuSelectLessonListOfElective b
// left join ArrangeLessonTermOfElective a on b.OLPEId=a.PaiKeId
// where b.StuNo=@userAccount and b.Status=2
// and b.AcademicYearNo=@strAcademicYear and b.Semester=@strSemester
// and a.AcademicYearNo=@strAcademicYear and a.Semester=@strSemester
// and a.LessonDate >= @startDate and a.LessonDate <=@endDate
// and a.CheckMark='1'";
sql = @" select e.EnName,a.LessonDate,a.AcademicYearNo as AcademicYear,a.Semester,a.LessonNo,e.LessonName,a.LessonSection as LessonTime,a.EmpNo,emp.EmpName,cr.ClassroomName,a.ClassRoomNo,a.LessonSortNo,ccc.olpoeid as OLPEId
from
(select olpoeid from ElectiveMergeItem
where emid in (select emid from ElectiveMergeItem aa left
join StuSelectLessonListOfElective bb on aa.olpoeid = bb.olpeid
where bb.StuNo = @userAccount and bb.Status = 2
and bb.AcademicYearNo = @strAcademicYear and bb.Semester = @strSemester
)) as ccc
left join
ArrangeLessonTermOfElective a on ccc.olpoeid = a.PaiKeId
left join LessonInfo e on a.LessonNo=e.LessonNo
left join EmpInfo emp on a.EmpNo=emp.EmpNo
left join ClassroomInfo cr on a.ClassRoomNo=cr.ClassroomNo
where
a.AcademicYearNo = @strAcademicYear and a.Semester = @strSemester
and a.LessonDate >= @startDate and a.LessonDate <=@endDate
and a.CheckMark = '1'
union
select e.EnName,a.LessonDate,a.AcademicYearNo as AcademicYear,a.Semester,a.LessonNo,e.LessonName,a.LessonSection as LessonTime,a.EmpNo,emp.EmpName,cr.ClassroomName,a.ClassRoomNo,a.LessonSortNo,b.OLPEId
from StuSelectLessonListOfElective b
left join ArrangeLessonTermOfElective a on b.OLPEId=a.PaiKeId
left join LessonInfo e on a.LessonNo=e.LessonNo
left join EmpInfo emp on a.EmpNo=emp.EmpNo
left join ClassroomInfo cr on a.ClassRoomNo=cr.ClassroomNo
where b.StuNo=@userAccount and b.Status=2
and b.AcademicYearNo=@strAcademicYear and b.Semester=@strSemester
and a.AcademicYearNo=@strAcademicYear and a.Semester=@strSemester
and a.LessonDate >= @startDate and a.LessonDate <=@endDate
and a.CheckMark='1'
";
}
else
{
sql = @"select e.EnName,a.LessonDate,a.AcademicYearNo as AcademicYear,a.Semester,a.LessonNo,e.LessonName,a.LessonSection as LessonTime,a.EmpNo,emp.EmpName,cr.ClassroomName,a.ClassRoomNo,a.LessonSortNo
from ArrangeLessonTermOfElective a
left join LessonInfo e on a.LessonNo=e.LessonNo
left join EmpInfo emp on a.EmpNo=emp.EmpNo
left join ClassroomInfo cr on a.ClassRoomNo=cr.ClassroomNo
where a.EmpNo=@userAccount
and a.AcademicYearNo=@strAcademicYear and a.Semester=@strSemester
and a.LessonDate >= @startDate and a.LessonDate <=@endDate
and a.CheckMark='1'";
}
try
{
var result = BaseRepository("CollegeMIS").FindList(sql, new { userAccount, startDate, endDate, strAcademicYear, strSemester });
return result;
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 选修课课程表【教务】
///
/// 查询开始时间
/// 查询截止时间
/// 班级编号
/// 教师编号
///
public IEnumerable GetTimeTableInEducation(string startDate, string endDate, string classNo, string empNo, string schoolId)
{
var semesterAndYear = Common.GetSemesterAndYear(startDate);
var strAcademicYear = semesterAndYear.AcademicYearShort;
var strSemester = semesterAndYear.Semester;
string sql = @"select e.EnName,a.F_SchoolId,a.LessonDate,a.AcademicYearNo as AcademicYear,a.Semester,a.LessonNo,e.LessonName,a.LessonSection as LessonTime,a.EmpNo,emp.EmpName,cr.ClassroomName,a.ClassRoomNo,a.LessonSortNo
from ArrangeLessonTermOfElective a
left join LessonInfo e on a.LessonNo=e.LessonNo
left join EmpInfo emp on a.EmpNo=emp.EmpNo
left join ClassroomInfo cr on a.ClassRoomNo=cr.ClassroomNo
where a.AcademicYearNo=@strAcademicYear and a.Semester=@strSemester
and a.LessonDate>=@startDate and a.LessonDate<=@endDate
and a.CheckMark=1";
try
{
var result = BaseRepository("CollegeMIS").FindList(sql, new { startDate, endDate, strAcademicYear, strSemester });
if (!string.IsNullOrEmpty(classNo))
{
result = result.Where(x => x.TeachClassNo == classNo);
}
if (!string.IsNullOrEmpty(empNo))
{
result = result.Where(x => x.EmpNo == empNo);
}
if (!string.IsNullOrEmpty(schoolId))
{
result = result.Where(x => x.F_SchoolId == schoolId);
}
return result;
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 获取相关课程考勤的学生信息--选修课
///
///
///
///
///
///
///
///
///
///
public IEnumerable AttendanceStudents(Pagination pagination, string queryJson)
{
try
{
var queryParam = queryJson.ToJObject();
var strSql = new StringBuilder();
strSql.Append("SELECT ");
strSql.Append(@"
a.[StuNo]
,a.[DeptNo]
,a.[MajorNo]
,a.[ClassNo]
,a.[StuName]
,a.[GenderNo]
,a.[AcademicYearNo]
,a.[Semester]
,a.[LessonNo]
,a.[LessonName]
,a.[LessonSortNo]
,a.[Grade]
,a.[EmpNo],a.Id as StuSelectLessonListOfElectiveId,b.ID as StuAttendanceNo,b.AttendOrNo,b.Sort,b.AttenCondition,b.AttenScore
");
strSql.Append(" FROM StuSelectLessonListOfElective a left join StuAttendance b on a.AcademicYearNo=b.AcademicYearNo and a.StuNo=b.StuNo and a.Semester=b.Semester and a.EmpNo=b.EmpNo and a.LessonNo=b.LessonNo and a.ClassRoomNo=b.ClassRoomNo and a.LessonSection=b.LessonTime ");
strSql.Append($" and b.LessonDate='{queryParam["lessonDate"]}'");
strSql.Append(" WHERE 1=1 ");
strSql.Append($"and a.AcademicYearNo='{ queryParam["year"]}' and a.Semester='{queryParam["semester"]}' and a.Status=2 and a.EmpNo='{queryParam["empno"]}' and a.LessonNo='{queryParam["lessonNo"]}' and a.ClassRoomNo='{queryParam["classRoomNo"]}' and a.LessonSection like '%{queryParam["lessonTime"]}%'");
return this.BaseRepository("CollegeMIS").FindList(strSql.ToString(), pagination);
}
catch (Exception ex)
{
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
}
///
/// 考试系统中获取学生成绩数据
///
///
public async Task AsyncStuScoreData()
{
bool result = false;
var db = this.BaseRepository("CollegeMIS").BeginTrans();
try
{
var values = new List>();
values.Add(new KeyValuePair("scoolYear", "18-19"));
values.Add(new KeyValuePair("term ", "2"));
var content = new FormUrlEncodedContent(values);
var response = await Client.PostAsync("http://192.168.2.125:8088/app/stuScore", content);
response.EnsureSuccessStatusCode();
var responseString = await response.Content.ReadAsStringAsync();
if (!string.IsNullOrEmpty(responseString))
{
var data = JsonConvert.DeserializeObject(responseString);
if (data.success)
{
var dataList = data.entity.stuScoreList;
if (dataList.Any())
{
foreach (var item in dataList)
{
if (item.lessonno.IndexOf(',') == -1)//单课程
{
//todo:测试是否能找到对应的成绩记录
var aa = this.BaseRepository("CollegeMIS").FindObject("select * from StuScore where where StuNo='" + item.stuno + "' and AcademicYearNo='" + item.scoolYear + "' and Semester='" + item.term + "' and LessonNo='" + item.lessonno + "' and TeachClassNo='" + item.teachclassno + "' and LessonSortNo='1' and CheckMark='0' ");
this.BaseRepository("CollegeMIS").ExecuteBySql("update StuScore set TermEndScore='" + Convert.ToDecimal(item.termendscore) + "' where StuNo='" + item.stuno + "' and AcademicYearNo='" + item.scoolYear + "' and Semester='" + item.term + "' and LessonNo='" + item.lessonno + "' and TeachClassNo='" + item.teachclassno + "' and LessonSortNo='1' and CheckMark='0' ");
}
else//多课程
{
var lessonnoList = item.lessonno.Split(',');
foreach (var lessonnoItem in lessonnoList)
{
this.BaseRepository("CollegeMIS").ExecuteBySql("update StuScore set TermEndScore='" + Convert.ToDecimal(item.termendscore) + "' where StuNo='" + item.stuno + "' and AcademicYearNo='" + item.scoolYear + "' and Semester='" + item.term + "' and LessonNo='" + lessonnoItem + "' and TeachClassNo='" + item.teachclassno + "' and LessonSortNo='1' and CheckMark='0' ");
}
}
}
db.Commit();
result = true;
}
}
}
}
catch (Exception ex)
{
db.Rollback();
if (ex is ExceptionEx)
{
throw;
}
else
{
throw ExceptionEx.ThrowServiceException(ex);
}
}
return result;
}
#endregion
#region 学生成绩数据
public class StuScoreList
{
public string id { get; set; }
public string examname { get; set; }
public string stuno { get; set; }
public string stuname { get; set; }
public string classno { get; set; }
public string classname { get; set; }
public string teachclassno { get; set; }
public string termendscore { get; set; }
public string examtime { get; set; }
public string lessonno { get; set; }
public string lessonname { get; set; }
public string scoolYear { get; set; }
public string term { get; set; }
}
public class StuScoreEntity
{
///
/// true
///
public string opflag { get; set; }
///
/// 1000
///
public string opCode { get; set; }
///
/// OK!
///
public string message { get; set; }
///
/// List
///
public List stuScoreList { get; set; }
}
public class StuScoreRoot
{
///
/// 操作成功
///
public string message { get; set; }
///
/// Success
///
public bool success { get; set; }
///
/// Entity
///
public StuScoreEntity entity { get; set; }
}
#endregion
}
}