@@ -142,13 +142,15 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
/// <summary> | |||
/// 根据专业获得班级 | |||
/// <param name="marjoNo">专业码</param> | |||
/// <param name="nj">年级关键字</param> | |||
/// </summary> | |||
/// <returns></returns> | |||
[HttpGet] | |||
[AjaxOnly] | |||
public ActionResult GetClassByMajorNo(string majorNo) | |||
public ActionResult GetClassByMajorNo(string majorNo, string nj="") | |||
{ | |||
var data = classInfoIBLL.GetClassByMajorNo(majorNo); | |||
if (string.IsNullOrWhiteSpace(nj)) nj = string.Empty; | |||
var data = classInfoIBLL.GetClassByMajorNo(majorNo, nj); | |||
return Success(data); | |||
} | |||
/// <summary> | |||
@@ -458,16 +458,31 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
public ActionResult GetCard(string keyValue, string status, string strEntity) | |||
{ | |||
if (status == "1")//领取 | |||
try | |||
{ | |||
StuInfoBasicEntity entity = strEntity.ToObject<StuInfoBasicEntity>(); | |||
stuInfoBasicIBLL.GetCard(keyValue, status, entity); | |||
if (status == "1")//领取 | |||
{ | |||
StuInfoBasicEntity entity = strEntity.ToObject<StuInfoBasicEntity>(); | |||
stuInfoBasicIBLL.GetCard(keyValue, status, entity); | |||
} | |||
else//取消领取 | |||
{ | |||
stuInfoBasicIBLL.GetCard(keyValue, status, new StuInfoBasicEntity()); | |||
} | |||
return Success("操作成功"); | |||
} | |||
else//取消领取 | |||
catch (Exception ex) | |||
{ | |||
stuInfoBasicIBLL.GetCard(keyValue, status, new StuInfoBasicEntity()); | |||
if (ex is ArgumentException) | |||
{ | |||
return Fail(ex.Message); | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowServiceException(ex); | |||
} | |||
} | |||
return Success("操作成功"); | |||
} | |||
/// <summary> | |||
@@ -719,8 +734,22 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
[AjaxOnly] | |||
public ActionResult AllowGraduate(string stuNo, string status) | |||
{ | |||
stuInfoBasicIBLL.AllowGraduate(stuNo, status); | |||
return Success("操作成功!"); | |||
try | |||
{ | |||
stuInfoBasicIBLL.AllowGraduate(stuNo, status); | |||
return Success("操作成功!"); | |||
} | |||
catch (Exception e) | |||
{ | |||
if (e is ArgumentException) | |||
{ | |||
return Fail(e.Message); | |||
} | |||
else | |||
{ | |||
throw; | |||
} | |||
} | |||
} | |||
@@ -1,4 +1,5 @@ | |||
using Hangfire; | |||
using Learun.Application.Base.SystemModule; | |||
using Learun.Application.Organization; | |||
using Learun.Application.TwoDevelopment.EducationalAdministration; | |||
using Learun.Util; | |||
@@ -25,6 +26,9 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
private StuInfoBasicIBLL stuInfoBasicIBLL = new StuInfoBasicBLL(); | |||
private CdMajorIBLL cdMajorIBLL = new CdMajorBLL(); | |||
private UserIBLL userIBLL = new UserBLL(); | |||
private AnnexesFileIBLL annexesFileIBLL = new AnnexesFileBLL(); | |||
private StuScoreNotPassIBLL stuScoreNotPassIBLL = new StuScoreNotPassBLL(); | |||
private StuScoreNotPassTwoIBLL stuScoreNotPassTwoIBLL = new StuScoreNotPassTwoBLL(); | |||
#region 视图功能 | |||
@@ -192,6 +196,16 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
{ | |||
return View(); | |||
} | |||
/// <summary> | |||
/// 成绩录入导入 | |||
/// <summary> | |||
/// <returns></returns> | |||
[HttpGet] | |||
public ActionResult InputScoreIndexInTeacherImport() | |||
{ | |||
return View(); | |||
} | |||
#endregion | |||
#region 获取数据 | |||
@@ -205,7 +219,15 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
public ActionResult GetList(string queryJson) | |||
{ | |||
var data = stuScoreIBLL.GetList(queryJson).OrderBy(a => a.StuNo); | |||
return Success(data); | |||
var jsonData = new | |||
{ | |||
rows = data, | |||
total = 1, | |||
page = 1, | |||
records = data.Count() | |||
}; | |||
return Success(jsonData); | |||
//return Success(data); | |||
} | |||
[HttpGet] | |||
[AjaxOnly] | |||
@@ -1072,6 +1094,106 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
return Success("操作成功"); | |||
} | |||
#endregion | |||
#region 成绩录入--导入 | |||
/// <summary> | |||
/// 成绩导入---下载导入模板 | |||
/// </summary> | |||
/// <param name="fileName"></param> | |||
/// <param name="columnJson">表头</param> | |||
/// <param name="dataJson">列表数据</param> | |||
[HttpPost, ValidateInput(false)] | |||
public void ExportExcel(string fileName, string columnJson, string dataJson) | |||
{ | |||
//设置导出格式 | |||
ExcelConfig excelconfig = new ExcelConfig(); | |||
//excelconfig.Title = Server.UrlDecode(fileName); | |||
excelconfig.TitleFont = "微软雅黑"; | |||
excelconfig.TitlePoint = 15; | |||
excelconfig.FileName = Server.UrlDecode(fileName) + ".xls"; | |||
excelconfig.IsAllSizeColumn = true; | |||
excelconfig.ColumnEntity = new List<ColumnModel>(); | |||
//表头 | |||
List<jfGridModel> columnList = columnJson.ToList<jfGridModel>(); | |||
//行数据 | |||
DataTable rowData = dataJson.ToTable(); | |||
////写入Excel表头 | |||
//Dictionary<string, string> exportFieldMap = new Dictionary<string, string>(); | |||
//if (!string.IsNullOrEmpty(exportField)) | |||
//{ | |||
// string[] exportFields = exportField.Split(','); | |||
// foreach (var field in exportFields) | |||
// { | |||
// if (!exportFieldMap.ContainsKey(field)) | |||
// { | |||
// exportFieldMap.Add(field, "1"); | |||
// } | |||
// } | |||
//} | |||
foreach (jfGridModel columnModel in columnList) | |||
{ | |||
//if (exportFieldMap.ContainsKey(columnModel.name) || string.IsNullOrEmpty(exportField)) | |||
//{ | |||
excelconfig.ColumnEntity.Add(new ColumnModel() | |||
{ | |||
Column = columnModel.name, | |||
ExcelColumn = columnModel.label, | |||
Alignment = columnModel.align, | |||
}); | |||
// } | |||
} | |||
ExcelHelper.ExcelDownload(rowData, excelconfig); | |||
} | |||
/// <summary> | |||
/// 成绩导入 | |||
/// </summary> | |||
/// <param name="type">1必修;2选修;3补考成绩;4二次补考成绩</param> | |||
/// <param name="fileGuid"></param> | |||
/// <param name="chunks"></param> | |||
/// <param name="queryJson"></param> | |||
/// <returns></returns> | |||
[HttpPost] | |||
[ValidateAntiForgeryToken] | |||
public ActionResult ExecuteImportExcel(int type, string fileGuid, int chunks, string queryJson) | |||
{ | |||
string path = annexesFileIBLL.SaveAnnexes(fileGuid, fileGuid, chunks, LoginUserInfo.Get()); | |||
if (!string.IsNullOrEmpty(path)) | |||
{ | |||
DataTable dt = ExcelHelper.ExcelImport(path); | |||
(DataTable failDt, int snum, int fnum) res; | |||
if (type == 1 || type == 2) | |||
{ | |||
//必修选修 | |||
res = stuScoreIBLL.ExecuteImportExcel(type, dt, fileGuid, queryJson); | |||
} | |||
else if (type == 3) | |||
{ | |||
//补考 | |||
res = stuScoreNotPassIBLL.ExecuteImportExcelForNotPass(dt, fileGuid, queryJson); | |||
} | |||
else | |||
{ | |||
//二次补考 | |||
res = stuScoreNotPassTwoIBLL.ExecuteImportExcelForNotPassTwo(dt, fileGuid, queryJson); | |||
} | |||
var data = new | |||
{ | |||
Success = res.snum, | |||
Fail = res.failDt.Rows.Count | |||
}; | |||
return Success(data); | |||
} | |||
else | |||
{ | |||
return Fail("导入数据失败!"); | |||
} | |||
} | |||
#endregion | |||
} | |||
} |
@@ -4,6 +4,7 @@ using Learun.Application.TwoDevelopment.EducationalAdministration; | |||
using System.Web.Mvc; | |||
using System.Collections.Generic; | |||
using System; | |||
using System.Linq; | |||
namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
{ | |||
@@ -156,6 +157,14 @@ namespace Learun.Application.Web.Areas.EducationalAdministration.Controllers | |||
{ | |||
TextbookInOutEntity entity = strEntity.ToObject<TextbookInOutEntity>(); | |||
List<TextBookOutEntity> textBookOutList = strTextBookOutList.ToObject<List<TextBookOutEntity>>(); | |||
if (!textBookOutList.Any()) | |||
{ | |||
return Fail("请添加出库单!"); | |||
} | |||
if (entity.FinallyNum < textBookOutList.Select(x => x.Variate).Sum())//当前库存<出库单数量之和 | |||
{ | |||
return Fail("当前库存小于出库单总数量!"); | |||
} | |||
textBookOutIBLL.SaveEntity(keyValue, entity, textBookOutList); | |||
if (keyValue != null) | |||
{ | |||
@@ -93,7 +93,21 @@ var bootstrap = function ($, learun) { | |||
value: 'value', | |||
text: 'text' | |||
}); | |||
$('#DeptNo').lrDataSourceSelect({ code: 'CdDeptInfo', value: 'deptno', text: 'deptname' }); | |||
//$('#DeptNo').lrDataSourceSelect({ code: 'CdDeptInfo', value: 'deptno', text: 'deptname' }); | |||
$('#DeptNo').lrDataSourceSelect({ | |||
code: 'CdDeptInfo', value: 'deptno', text: 'deptname', select: function (val) { | |||
var deptno = ""; | |||
if (val) { | |||
deptno = val.deptno; | |||
} | |||
$('#MajorNo').lrselectRefresh({ | |||
url: top.$.rootUrl + '/EducationalAdministration/CdMajor/GetListByDeptNo?DeptNo=' + deptno, | |||
text: "MajorName", | |||
value: "MajorNo" | |||
}) | |||
} | |||
}); | |||
$('#MajorNo').lrDataSourceSelect({ code: 'CdMajorInfo', value: 'majorno', text: 'majorname' }); | |||
$('#LessonNo').lrselect({ | |||
placeholder: "请选择课程", | |||
@@ -30,14 +30,22 @@ var bootstrap = function ($, learun) { | |||
if (val) { | |||
majorNo = val.MajorNo; | |||
} | |||
var nj = $('#Grade').val(); | |||
$('#ClassNo').lrselectRefresh({ | |||
url: top.$.rootUrl + '/EducationalAdministration/ClassInfo/GetClassByMajorNo?majorNo=' + majorNo, | |||
url: top.$.rootUrl + '/EducationalAdministration/ClassInfo/GetClassByMajorNo?majorNo=' + majorNo + '&nj=' + nj, | |||
text: "ClassName", | |||
value: "ClassNo" | |||
}) | |||
} | |||
}); | |||
$('#ClassNo').lrDataSourceSelect({ code: 'bjsj', value: 'classno', text: 'classname' }); | |||
//$('#ClassNo').lrDataSourceSelect({ code: 'bjsj', value: 'classno', text: 'classname' }); | |||
$('#ClassNo').lrselect({ | |||
allowSearch: true, | |||
url: top.$.rootUrl + '/LR_SystemModule/DataSource/GetDataTable?code=bjsj', | |||
param: { strWhere: "1=1 AND CheckMark=1 order by classname asc" }, | |||
value: "classno", | |||
text: "classname" | |||
}); | |||
$('#FinishSchoolMark').lrselect({ | |||
data: [{ text: "已毕业", value: "2" }, { text: "准许毕业", value: "1" }, { text: "待准许", value: "0" }], | |||
text: "text", | |||
@@ -70,7 +78,7 @@ var bootstrap = function ($, learun) { | |||
} | |||
}); | |||
}) | |||
}, | |||
// 初始化列表 | |||
initGird: function () { | |||
@@ -157,7 +165,7 @@ var bootstrap = function ($, learun) { | |||
mainId: 'StuId', | |||
isPage: true, | |||
isMultiselect: false, | |||
}); | |||
page.search(); | |||
}, | |||
@@ -30,14 +30,22 @@ var bootstrap = function ($, learun) { | |||
if (val) { | |||
majorNo = val.MajorNo; | |||
} | |||
var nj = $('#Grade').val(); | |||
$('#ClassNo').lrselectRefresh({ | |||
url: top.$.rootUrl + '/EducationalAdministration/ClassInfo/GetClassByMajorNo?majorNo=' + majorNo, | |||
url: top.$.rootUrl + '/EducationalAdministration/ClassInfo/GetClassByMajorNo?majorNo=' + majorNo + '&nj=' + nj, | |||
text: "ClassName", | |||
value: "ClassNo" | |||
}) | |||
} | |||
}); | |||
$('#ClassNo').lrDataSourceSelect({ code: 'bjsj', value: 'classno', text: 'classname' }); | |||
//$('#ClassNo').lrDataSourceSelect({ code: 'bjsj', value: 'classno', text: 'classname' }); | |||
$('#ClassNo').lrselect({ | |||
allowSearch: true, | |||
url: top.$.rootUrl + '/LR_SystemModule/DataSource/GetDataTable?code=bjsj', | |||
param: { strWhere: "1=1 AND CheckMark=1 order by classname asc" }, | |||
value: "classno", | |||
text: "classname" | |||
}); | |||
$('#FinishSchoolMark').lrselect({ | |||
data: [{ text: "已毕业", value: "2" }, { text: "准许毕业", value: "1" }, { text: "待准许", value: "0" }], | |||
text: "text", | |||
@@ -193,7 +201,7 @@ var bootstrap = function ($, learun) { | |||
mainId: 'StuId', | |||
isPage: true, | |||
isMultiselect: true, | |||
rows: 100, | |||
}); | |||
page.search(); | |||
}, | |||
@@ -28,14 +28,14 @@ | |||
<div class="lr-form-item-title">专业</div> | |||
<div id="MajorNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">班级</div> | |||
<div id="ClassNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">年级</div> | |||
<div id="Grade"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">班级</div> | |||
<div id="ClassNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">准许毕业</div> | |||
<div id="FinishSchoolMark"></div> | |||
@@ -28,14 +28,14 @@ | |||
<div class="lr-form-item-title">专业</div> | |||
<div id="MajorNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">班级</div> | |||
<div id="ClassNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">年级</div> | |||
<div id="Grade"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">班级</div> | |||
<div id="ClassNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">准许毕业</div> | |||
<div id="FinishSchoolMark"></div> | |||
@@ -28,14 +28,14 @@ | |||
<div class="lr-form-item-title">专业</div> | |||
<div id="MajorNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">班级</div> | |||
<div id="ClassNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">年级</div> | |||
<div id="Grade"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">班级</div> | |||
<div id="ClassNo"></div> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
@@ -145,21 +145,31 @@ var bootstrap = function ($, learun) { | |||
// } | |||
//}); | |||
if (keyValue.split(',').length > 1) { | |||
return learun.alert.warning("只能选择一条记录进行操作!"); | |||
} | |||
if (DiplomaReceiveStatus == "1") { | |||
return learun.alert.warning("当前记录毕业证已领取!"); | |||
//return learun.alert.warning("只能选择一条记录进行操作!"); | |||
var postData = { | |||
status: "1" | |||
}; | |||
$.lrSaveForm(top.$.rootUrl + '/EducationalAdministration/StuInfoBasic/GetCard?keyValue=' + keyValue, postData, function (res) { | |||
if (res.code == 200) { | |||
refreshGirdData(); | |||
} | |||
}); | |||
} | |||
learun.layerForm({ | |||
id: 'form', | |||
title: '毕业证领取', | |||
url: top.$.rootUrl + '/EducationalAdministration/StuInfoBasic/GraduateDiplomaReceiveForm?keyValue=' + keyValue, | |||
width: 600, | |||
height: 400, | |||
callBack: function (id) { | |||
return top[id].acceptClick(refreshGirdData); | |||
else { | |||
if (DiplomaReceiveStatus == "1") { | |||
return learun.alert.warning("当前记录毕业证已领取!"); | |||
} | |||
}); | |||
learun.layerForm({ | |||
id: 'form', | |||
title: '毕业证领取', | |||
url: top.$.rootUrl + '/EducationalAdministration/StuInfoBasic/GraduateDiplomaReceiveForm?keyValue=' + keyValue, | |||
width: 600, | |||
height: 400, | |||
callBack: function (id) { | |||
return top[id].acceptClick(refreshGirdData); | |||
} | |||
}); | |||
} | |||
} | |||
}) | |||
//取消毕业证领取 | |||
@@ -28,14 +28,14 @@ | |||
<div class="lr-form-item-title">专业</div> | |||
<div id="MajorNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">班级</div> | |||
<div id="ClassNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">年级</div> | |||
<div id="Grade"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">班级</div> | |||
<div id="ClassNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">准许毕业</div> | |||
<div id="FinishSchoolMark"></div> | |||
@@ -28,14 +28,14 @@ | |||
<div class="lr-form-item-title">专业</div> | |||
<div id="MajorNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">班级</div> | |||
<div id="ClassNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">年级</div> | |||
<div id="Grade"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">班级</div> | |||
<div id="ClassNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">准许毕业</div> | |||
<div id="FinishSchoolMark"></div> | |||
@@ -28,14 +28,14 @@ | |||
<div class="lr-form-item-title">专业</div> | |||
<div id="MajorNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">班级</div> | |||
<div id="ClassNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">年级</div> | |||
<div id="Grade"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">班级</div> | |||
<div id="ClassNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">准许毕业</div> | |||
<div id="FinishSchoolMark"></div> | |||
@@ -28,14 +28,14 @@ | |||
<div class="lr-form-item-title">专业</div> | |||
<div id="MajorNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">班级</div> | |||
<div id="ClassNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">年级</div> | |||
<div id="Grade"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">班级</div> | |||
<div id="ClassNo"></div> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">准许毕业</div> | |||
<div id="FinishSchoolMark"></div> | |||
@@ -89,6 +89,7 @@ | |||
<a id="lr_check" class="btn btn-default"><i class="fa fa-lock"> 提交教务处</i></a> | |||
<a id="lr_uncheck" class="btn btn-default"><i class="fa fa-lock"> 去审核成绩</i></a> | |||
<a id="lr_setScale" class="btn btn-default"><i class="fa fa-edit"> 设置成绩比例</i></a> | |||
<a id="lr_importScore" class="btn btn-default"><i class="fa fa-edit"> 导入</i></a> | |||
</div> | |||
</div> | |||
@@ -15,6 +15,9 @@ var headData; //常规列头 | |||
var headDataEdit; //可编辑列头 | |||
var headDataNoEdit; //不可编辑列头 | |||
var headDataFinally; //最终列头 | |||
var rowJson; | |||
var columnJson; | |||
var queryJson; | |||
var bootstrap = function ($, learun) { | |||
"use strict"; | |||
var page = { | |||
@@ -442,6 +445,63 @@ var bootstrap = function ($, learun) { | |||
learun.postFormSilence(top.$.rootUrl + '/EducationalAdministration/StuScore/AddMinutes', { queryJson: JSON.stringify(query), minutes: newMinutes }, function (res) { }); | |||
} | |||
}); | |||
//导入 | |||
$("#lr_importScore").on("click", function () { | |||
var query = judgeSelect(); | |||
if (query) { | |||
//判断成绩比例是否合理 | |||
var OrdinaryScoreScale = $('#OrdinaryScoreScale').html(); | |||
var TermInScoreScale = $('#TermInScoreScale').html(); | |||
var TermEndScoreScale = $('#TermEndScoreScale').html(); | |||
var OtherScoreScale = $('#OtherScoreScale').html(); | |||
var totalScale = Number(OrdinaryScoreScale) + Number(TermInScoreScale) + Number(TermEndScoreScale) + Number(OtherScoreScale); | |||
if (totalScale !== 100) { | |||
learun.alert.warning("成绩比例设置不合理!"); | |||
return false; | |||
} else { | |||
//判断是否已审核;判断是否被其他教师占用 | |||
$.lrSetForm(top.$.rootUrl + '/EducationalAdministration/StuScore/GetEntityByJson?queryJson=' + JSON.stringify(query), function (data) { | |||
if (data != null) { | |||
if (data.CheckMark == 1) { | |||
learun.alert.warning("学生成绩已审核!"); | |||
return false; | |||
} | |||
if (data.IsEditable == 0) { | |||
if (data.EditUserId == learun.clientdata.get(['userinfo']).account) { | |||
modifyDate = data.ModifyDate; | |||
} else { | |||
learun.alert.warning("当前班级成绩由账号为" + data.EditUserId + "的教师在使用!"); | |||
return false; | |||
} | |||
} | |||
rowJson = $('#gridtable').jfGridGet('showData'); | |||
columnJson = $('#gridtable').jfGridGet('settingInfo').headData; | |||
//条件 | |||
var $content = $('body').find('.lr-layout-tool-left'); | |||
queryJson = $content.lrGetFormData(); | |||
learun.layerForm({ | |||
id: 'indexImport', | |||
title: "导入学生成绩", | |||
url: top.$.rootUrl + '/EducationalAdministration/StuScore/InputScoreIndexInTeacherImport?type=1', | |||
width: 600, | |||
height: 400, | |||
maxmin: true, | |||
btn: null, | |||
end: function () { | |||
refreshGirdData2(); | |||
} | |||
}); | |||
} else { | |||
learun.alert.warning("学生成绩不存在!"); | |||
return false; | |||
} | |||
}); | |||
} | |||
} | |||
}); | |||
}, | |||
bindSelect: function () { | |||
//校区 | |||
@@ -503,7 +563,7 @@ var bootstrap = function ($, learun) { | |||
url: top.$.rootUrl + '/EducationalAdministration/StuScore/GetList', | |||
headData: headDataFinally, | |||
mainId: 'ScoreId', | |||
isPage: false, | |||
isPage: true, | |||
sidx: 'StuNo', | |||
sord: 'asc' | |||
}); | |||
@@ -89,6 +89,7 @@ | |||
<a id="lr_check" class="btn btn-default"><i class="fa fa-lock"> 提交教务处</i></a> | |||
<a id="lr_uncheck" class="btn btn-default"><i class="fa fa-lock"> 去审核成绩</i></a> | |||
<a id="lr_setScale" class="btn btn-default"><i class="fa fa-edit"> 设置成绩比例</i></a> | |||
<a id="lr_importScore" class="btn btn-default"><i class="fa fa-edit"> 导入</i></a> | |||
</div> | |||
</div> | |||
@@ -15,6 +15,9 @@ var headData; //常规列头 | |||
var headDataEdit; //可编辑列头 | |||
var headDataNoEdit; //不可编辑列头 | |||
var headDataFinally; //最终列头 | |||
var rowJson; | |||
var columnJson; | |||
var queryJson; | |||
var bootstrap = function ($, learun) { | |||
"use strict"; | |||
var page = { | |||
@@ -442,6 +445,63 @@ var bootstrap = function ($, learun) { | |||
learun.postFormSilence(top.$.rootUrl + '/EducationalAdministration/StuScore/AddMinutes', { queryJson: JSON.stringify(query), minutes: newMinutes }, function (res) { }); | |||
} | |||
}); | |||
//导入 | |||
$("#lr_importScore").on("click", function () { | |||
var query = judgeSelect(); | |||
if (query) { | |||
//判断成绩比例是否合理 | |||
var OrdinaryScoreScale = $('#OrdinaryScoreScale').html(); | |||
var TermInScoreScale = $('#TermInScoreScale').html(); | |||
var TermEndScoreScale = $('#TermEndScoreScale').html(); | |||
var OtherScoreScale = $('#OtherScoreScale').html(); | |||
var totalScale = Number(OrdinaryScoreScale) + Number(TermInScoreScale) + Number(TermEndScoreScale) + Number(OtherScoreScale); | |||
if (totalScale !== 100) { | |||
learun.alert.warning("成绩比例设置不合理!"); | |||
return false; | |||
} else { | |||
//判断是否已审核;判断是否被其他教师占用 | |||
$.lrSetForm(top.$.rootUrl + '/EducationalAdministration/StuScore/GetEntityByJson?queryJson=' + JSON.stringify(query), function (data) { | |||
if (data != null) { | |||
if (data.CheckMark == 1) { | |||
learun.alert.warning("学生成绩已审核!"); | |||
return false; | |||
} | |||
if (data.IsEditable == 0) { | |||
if (data.EditUserId == learun.clientdata.get(['userinfo']).account) { | |||
modifyDate = data.ModifyDate; | |||
} else { | |||
learun.alert.warning("当前班级成绩由账号为" + data.EditUserId + "的教师在使用!"); | |||
return false; | |||
} | |||
} | |||
rowJson = $('#gridtable').jfGridGet('showData'); | |||
columnJson = $('#gridtable').jfGridGet('settingInfo').headData; | |||
//条件 | |||
var $content = $('body').find('.lr-layout-tool-left'); | |||
queryJson = $content.lrGetFormData(); | |||
learun.layerForm({ | |||
id: 'indexImport', | |||
title: "导入学生成绩", | |||
url: top.$.rootUrl + '/EducationalAdministration/StuScore/InputScoreIndexInTeacherImport?type=1', | |||
width: 600, | |||
height: 400, | |||
maxmin: true, | |||
btn: null, | |||
end: function () { | |||
refreshGirdData2(); | |||
} | |||
}); | |||
} else { | |||
learun.alert.warning("学生成绩不存在!"); | |||
return false; | |||
} | |||
}); | |||
} | |||
} | |||
}); | |||
}, | |||
bindSelect: function () { | |||
//校区 | |||
@@ -504,7 +564,7 @@ var bootstrap = function ($, learun) { | |||
url: top.$.rootUrl + '/EducationalAdministration/StuScore/GetList', | |||
headData: headDataFinally, | |||
mainId: 'ScoreId', | |||
isPage: false, | |||
isPage: true, | |||
sidx: 'StuNo', | |||
sord: 'asc' | |||
}); | |||
@@ -0,0 +1,27 @@ | |||
@{ | |||
ViewBag.Title = "Form"; | |||
Layout = "~/Views/Shared/_Form.cshtml"; | |||
} | |||
<link href="~/Content/webuploader/webuploader.css" rel="stylesheet" /> | |||
<script src="~/Content/webuploader/webuploader.nolog.min.js"></script> | |||
@Html.AppendCssFile("/Areas/LR_SystemModule/Views/ExcelImport/ImportForm.css") | |||
@*必修成绩录入导入*@ | |||
<div class="lr-form-layout lr-form-layout-top-bottom"> | |||
<div class="lr-form-layout-header"> | |||
<div id="lr_add_file_btn"><i class="fa fa-cloud-upload"></i><span class="lrlt">上传文件</span></div> | |||
<div class="webuploader-pick" id="lr_down_file_btn"><i class="fa fa-download"></i><span class="lrlt">下载模板</span></div> | |||
</div> | |||
<div class="lr-form-layout-body"> | |||
<div class="lr-form-file-queue-wrap" id="lr_form_file_queue"> | |||
<div class="lr-form-file-queue" id="lr_form_file_queue_list"> | |||
</div> | |||
<div class="lr-form-file-queue-bg"> | |||
<h1><span class="lrlt">试试将电脑里的文件拖拽到此上传</span></h1> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
@Html.AppendJsFile("/Areas/EducationalAdministration/Views/StuScore/InputScoreIndexInTeacherImport.js") |
@@ -0,0 +1,196 @@ | |||
/* | |||
* 描 述:附件上传管理 | |||
*/ | |||
var gridId = request('gridtable'); | |||
var type = request('type');//1:成绩录入;2:选修成绩录入 | |||
var bootstrap = function ($, learun) { | |||
"use strict"; | |||
var fileInfo = {}; | |||
// 触发合并文件碎片 | |||
var mergeFileChunks = function (file) { | |||
var param = {}; | |||
param['type'] = type; | |||
param['__RequestVerificationToken'] = $.lrToken; | |||
param['fileGuid'] = fileInfo[file.id].fileGuid; | |||
param['fileName'] = fileInfo[file.id].name; | |||
param['chunks'] = fileInfo[file.id].chunks; | |||
var queryJson = JSON.stringify(learun.frameTab.currentIframe().queryJson); | |||
param['queryJson'] = queryJson; | |||
learun.httpAsyncPost(top.$.rootUrl + "/EducationalAdministration/StuScore/ExecuteImportExcel", param, function (res) { | |||
var $fileItem = $('#lr_form_file_queue_list').find('#lr_filequeue_' + file.id); | |||
$fileItem.find('.lr-uploader-progress').remove(); | |||
if (res.code == learun.httpCode.success) { | |||
if (res.data.Success != '0') { | |||
learun.alert.success('导入成功' + res.data.Success + '条'); | |||
} | |||
// 文件保存成功后 | |||
$fileItem.append('<div class="lr-msg2"><span>' + res.data.Success + '</span><span>/</span><span style="color:#b94a48;" >' + res.data.Fail + '</span></div>'); | |||
// 如果有失败 | |||
if (res.data.Fail != '0') { | |||
learun.download({ url: top.$.rootUrl + '/LR_SystemModule/ExcelImport/DownImportErrorFile', param: { fileId: fileInfo[file.id].fileGuid, fileName: fileInfo[file.id].name, __RequestVerificationToken: $.lrToken }, method: 'POST' }); | |||
} | |||
} | |||
else { | |||
learun.alert.error(res.info); | |||
$fileItem.append('<div class="lr-msg"><i class="fa fa-exclamation-circle"></i></div>'); | |||
} | |||
}); | |||
} | |||
// 触发清楚文件碎片 | |||
var reomveFileChunks = function (file) { | |||
var param = {}; | |||
param['__RequestVerificationToken'] = $.lrToken; | |||
param['fileGuid'] = fileInfo[file.id].fileGuid; | |||
param['chunks'] = fileInfo[file.id].chunks; | |||
learun.httpAsyncPost(top.$.rootUrl + "/LR_SystemModule/Annexes/MergeAnnexesFile", param, function (res) { }); | |||
var $fileItem = $('#lr_form_file_queue_list').find('#lr_filequeue_' + file.id); | |||
$fileItem.find('.lr-uploader-progress').remove(); | |||
$fileItem.append('<div class="lr-msg"><i class="fa fa-exclamation-circle"></i></div>'); | |||
} | |||
// 删除文件 | |||
var DeleteFile = function (fileId) { | |||
var param = {}; | |||
param['__RequestVerificationToken'] = $.lrToken; | |||
param['fileId'] = fileInfo[fileId].fileGuid; | |||
learun.httpAsyncPost(top.$.rootUrl + "/LR_SystemModule/Annexes/DeleteAnnexesFile", param, function (res) { }); | |||
var file = page.uploader.getFile(fileId); | |||
if (!!file) { | |||
page.uploader.removeFile(file); | |||
} | |||
delete fileInfo[fileId]; | |||
var $fileItem = $('#lr_form_file_queue_list').find('#lr_filequeue_' + fileId); | |||
$fileItem.remove(); | |||
if ($('#lr_form_file_queue_list>div').length == 0) { | |||
$('#lr_form_file_queue .lr-form-file-queue-bg').show(); | |||
} | |||
} | |||
var page = { | |||
uploader: null, | |||
init: function () { | |||
if (!WebUploader.Uploader.support()) { | |||
alert('Web Uploader 不支持您的浏览器!如果你使用的是IE浏览器,请尝试升级 flash 播放器'); | |||
throw new Error('WebUploader does not support the browser you are using.'); | |||
} | |||
/*导入模板下载*/ | |||
$('#lr_down_file_btn').on('click', function () { | |||
var columnJson = learun.frameTab.currentIframe().columnJson; | |||
columnJson = JSON.stringify(columnJson.filter(item => item.name !== 'CheckMark')); | |||
var rowJson = JSON.stringify(learun.frameTab.currentIframe().rowJson); | |||
var fileName = "成绩录入数据"; | |||
if (type == '2') { | |||
fileName = "选修成绩录入数据"; | |||
} | |||
else if (type == '3') { | |||
fileName = "补考成绩录入"; | |||
} | |||
else if (type == '4') { | |||
fileName = "二次补考成绩录入"; | |||
} | |||
learun.download({ | |||
method: "POST", | |||
url: '/EducationalAdministration/StuScore/ExportExcel', | |||
param: { | |||
fileName: fileName, | |||
columnJson: columnJson, | |||
dataJson: rowJson, | |||
//exportField: String(exportField) | |||
} | |||
}); | |||
}); | |||
page.uploader = WebUploader.create({ | |||
auto: true, | |||
swf: top.$.rootUrl + '/Content/webuploader/Uploader.swf', | |||
// 文件接收服务端。 | |||
server: top.$.rootUrl + "/LR_SystemModule/Annexes/UploadAnnexesFileChunk", | |||
// 选择文件的按钮。可选。 | |||
// 内部根据当前运行是创建,可能是input元素,也可能是flash. | |||
pick: '#lr_add_file_btn', | |||
dnd: '#lr_form_file_queue', | |||
paste: 'document.body', | |||
disableGlobalDnd: true, | |||
accept: { | |||
extensions: "xls,xlsx" | |||
}, | |||
multiple: false, | |||
// 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传! | |||
resize: false, | |||
// 文件分片上传 | |||
chunked: true, | |||
chunkRetry: 3, | |||
prepareNextFile: true, | |||
chunkSize: '1048576', | |||
// 上传参数 | |||
formData: { | |||
__RequestVerificationToken: $.lrToken | |||
} | |||
}); | |||
page.uploader.on('fileQueued', page.fileQueued); | |||
page.uploader.on('uploadStart', page.uploadStart); | |||
page.uploader.on('uploadBeforeSend', page.uploadBeforeSend); | |||
page.uploader.on('uploadProgress', page.uploadProgress); | |||
page.uploader.on('uploadSuccess', page.uploadSuccess); | |||
page.uploader.on('uploadError', page.uploadError); | |||
page.uploader.on('uploadComplete', page.uploadComplete); | |||
page.uploader.on('error', page.error); | |||
//$('#lr_form_file_queue').mCustomScrollbar({ // 优化滚动条 | |||
// theme: "minimal-dark" | |||
//}); | |||
}, | |||
fileQueued: function (file) {// 文件加载到队列 | |||
fileInfo[file.id] = { name: file.name }; | |||
$('#lr_form_file_queue .lr-form-file-queue-bg').hide(); | |||
// 添加一条文件记录 | |||
var $item = $('<div class="lr-form-file-queue-item" id="lr_filequeue_' + file.id + '" ></div>'); | |||
$item.append('<div class="lr-file-image"><img src="' + top.$.rootUrl + '/Content/images/filetype/' + file.ext + '.png"></div>'); | |||
$item.append('<span class="lr-file-name">' + file.name + '(' + learun.countFileSize(file.size) + ')</span>'); | |||
$('#lr_form_file_queue_list').append($item); | |||
}, | |||
uploadStart: function (file) { | |||
var $fileItem = $('#lr_form_file_queue_list').find('#lr_filequeue_' + file.id); | |||
$fileItem.append('<div class="lr-uploader-progress"><div class="lr-uploader-progress-bar" style="width:0%;"></div></div>'); | |||
}, | |||
uploadBeforeSend: function (object, data, headers) { | |||
data.chunk = data.chunk || 0; | |||
data.chunks = data.chunks || 1; | |||
fileInfo[data.id].fileGuid = fileInfo[data.id].fileGuid || WebUploader.Base.guid(); | |||
data.fileGuid = fileInfo[data.id].fileGuid; | |||
fileInfo[data.id].chunks = data.chunks; | |||
}, | |||
uploadProgress: function (file, percentage) { | |||
var $fileItem = $('#lr_form_file_queue_list').find('#lr_filequeue_' + file.id); | |||
$fileItem.find('.lr-uploader-progress-bar').css('width', (percentage * 100 + '%')); | |||
}, | |||
uploadSuccess: function (file, res) { | |||
if (res.code == 200) {// 上传成功 | |||
mergeFileChunks(file); | |||
} | |||
else {// 上传失败 | |||
reomveFileChunks(file); | |||
} | |||
}, | |||
uploadError: function (file, code) { | |||
reomveFileChunks(file); | |||
}, | |||
uploadComplete: function (file) { | |||
}, | |||
error: function (type) { | |||
switch (type) { | |||
case 'Q_TYPE_DENIED': | |||
learun.alert.error('当前文件类型不允许上传'); | |||
break; | |||
}; | |||
} | |||
}; | |||
page.init(); | |||
} |
@@ -97,8 +97,26 @@ var bootstrap = function ($, learun) { | |||
}) | |||
} | |||
}); | |||
$('#ClassNo').lrDataSourceSelect({ | |||
placeholder: "请选择班级", code: 'bjsj', value: 'classno', text: 'classname', select: function (val) { | |||
//$('#ClassNo').lrDataSourceSelect({ | |||
// placeholder: "请选择班级", code: 'bjsj', value: 'classno', text: 'classname', select: function (val) { | |||
// var classNo = ''; | |||
// if (val) { | |||
// classNo = val.ClassNo; | |||
// } | |||
// $('#StuNo').lrselectRefresh({ | |||
// url: top.$.rootUrl + '/EducationalAdministration/StuInfoBasic/GetStuInfoByClassNo?classNo=' + classNo, | |||
// text: "StuName", | |||
// value: "StuNo" | |||
// }) | |||
// } | |||
//}); | |||
$('#ClassNo').lrselect({ | |||
allowSearch: true, | |||
url: top.$.rootUrl + '/LR_SystemModule/DataSource/GetDataTable?code=bjsj', | |||
param: { strWhere: "1=1 AND CheckMark=1 order by classname asc" }, | |||
value: "classno", | |||
text: "classname", | |||
select: function (val) { | |||
var classNo = ''; | |||
if (val) { | |||
classNo = val.ClassNo; | |||
@@ -110,7 +128,6 @@ var bootstrap = function ($, learun) { | |||
}) | |||
} | |||
}); | |||
$('#StuNo').lrDataSourceSelect({ placeholder: '请选择学生', code: 'StuInfoBasic', value: 'stuno', text: 'stuname' }); | |||
//考试类型 | |||
$('#TableName').lrselect({ | |||
@@ -89,6 +89,7 @@ | |||
<a id="lr_save" class="btn btn-default" style="display:none;"><i class="fa fa-edit"> 提交成绩</i></a> | |||
<a id="lr_check" class="btn btn-default"><i class="fa fa-lock"> 提交教务处</i></a> | |||
<a id="lr_uncheck" class="btn btn-default"><i class="fa fa-lock"> 去审核成绩</i></a> | |||
<a id="lr_importScore" class="btn btn-default"><i class="fa fa-edit"> 导入</i></a> | |||
</div> | |||
</div> | |||
@@ -15,6 +15,9 @@ var headData; //常规列头 | |||
var headDataEdit; //可编辑列头 | |||
var headDataNoEdit; //不可编辑列头 | |||
var headDataFinally; //最终列头 | |||
var rowJson; | |||
var columnJson; | |||
var queryJson; | |||
var bootstrap = function ($, learun) { | |||
"use strict"; | |||
var page = { | |||
@@ -342,6 +345,54 @@ var bootstrap = function ($, learun) { | |||
learun.postFormSilence(top.$.rootUrl + '/EducationalAdministration/StuScoreNotPass/AddMinutes', { queryJson: JSON.stringify(query), minutes: newMinutes }, function (res) { }); | |||
} | |||
}); | |||
//导入 | |||
$("#lr_importScore").on("click", function () { | |||
var query = judgeSelect(); | |||
if (query) { | |||
//判断是否已审核;判断是否被其他教师占用 | |||
$.lrSetForm(top.$.rootUrl + '/EducationalAdministration/StuScoreNotPass/GetEntityByJson?queryJson=' + JSON.stringify(query), function (data) { | |||
if (data != null) { | |||
if (data.CheckMark == 1) { | |||
learun.alert.warning("学生成绩已审核!"); | |||
return false; | |||
} | |||
if (data.IsEditable == 0) { | |||
if (data.EditUserId == learun.clientdata.get(['userinfo']).account) { | |||
modifyDate = data.ModifyDate; | |||
} else { | |||
learun.alert.warning("当前班级成绩由账号为" + data.EditUserId + "的教师在使用!"); | |||
return false; | |||
} | |||
} | |||
rowJson = $('#gridtable').jfGridGet('showData'); | |||
columnJson = $('#gridtable').jfGridGet('settingInfo').headData; | |||
//条件 | |||
var $content = $('body').find('.lr-layout-tool-left'); | |||
queryJson = $content.lrGetFormData(); | |||
learun.layerForm({ | |||
id: 'indexImport', | |||
title: "导入学生成绩", | |||
url: top.$.rootUrl + '/EducationalAdministration/StuScore/InputScoreIndexInTeacherImport?type=3', | |||
width: 600, | |||
height: 400, | |||
maxmin: true, | |||
btn: null, | |||
end: function () { | |||
refreshGirdData2(); | |||
} | |||
}); | |||
} else { | |||
learun.alert.warning("学生成绩不存在!"); | |||
return false; | |||
} | |||
}); | |||
} | |||
}); | |||
}, | |||
bindSelect: function () { | |||
//校区 | |||
@@ -89,6 +89,7 @@ | |||
<a id="lr_save" class="btn btn-default" style="display:none;"><i class="fa fa-edit"> 提交成绩</i></a> | |||
<a id="lr_check" class="btn btn-default"><i class="fa fa-lock"> 提交教务处</i></a> | |||
<a id="lr_uncheck" class="btn btn-default"><i class="fa fa-lock"> 去审核成绩</i></a> | |||
<a id="lr_importScore" class="btn btn-default"><i class="fa fa-edit"> 导入</i></a> | |||
</div> | |||
</div> | |||
@@ -15,6 +15,9 @@ var headData; //常规列头 | |||
var headDataEdit; //可编辑列头 | |||
var headDataNoEdit; //不可编辑列头 | |||
var headDataFinally; //最终列头 | |||
var rowJson; | |||
var columnJson; | |||
var queryJson; | |||
var bootstrap = function ($, learun) { | |||
"use strict"; | |||
var page = { | |||
@@ -342,6 +345,54 @@ var bootstrap = function ($, learun) { | |||
learun.postFormSilence(top.$.rootUrl + '/EducationalAdministration/StuScoreNotPass/AddMinutes', { queryJson: JSON.stringify(query), minutes: newMinutes }, function (res) { }); | |||
} | |||
}); | |||
//导入 | |||
$("#lr_importScore").on("click", function () { | |||
var query = judgeSelect(); | |||
if (query) { | |||
//判断是否已审核;判断是否被其他教师占用 | |||
$.lrSetForm(top.$.rootUrl + '/EducationalAdministration/StuScoreNotPass/GetEntityByJson?queryJson=' + JSON.stringify(query), function (data) { | |||
if (data != null) { | |||
if (data.CheckMark == 1) { | |||
learun.alert.warning("学生成绩已审核!"); | |||
return false; | |||
} | |||
if (data.IsEditable == 0) { | |||
if (data.EditUserId == learun.clientdata.get(['userinfo']).account) { | |||
modifyDate = data.ModifyDate; | |||
} else { | |||
learun.alert.warning("当前班级成绩由账号为" + data.EditUserId + "的教师在使用!"); | |||
return false; | |||
} | |||
} | |||
rowJson = $('#gridtable').jfGridGet('showData'); | |||
columnJson = $('#gridtable').jfGridGet('settingInfo').headData; | |||
//条件 | |||
var $content = $('body').find('.lr-layout-tool-left'); | |||
queryJson = $content.lrGetFormData(); | |||
learun.layerForm({ | |||
id: 'indexImport', | |||
title: "导入学生成绩", | |||
url: top.$.rootUrl + '/EducationalAdministration/StuScore/InputScoreIndexInTeacherImport?type=3', | |||
width: 600, | |||
height: 400, | |||
maxmin: true, | |||
btn: null, | |||
end: function () { | |||
refreshGirdData2(); | |||
} | |||
}); | |||
} else { | |||
learun.alert.warning("学生成绩不存在!"); | |||
return false; | |||
} | |||
}); | |||
} | |||
}); | |||
}, | |||
bindSelect: function () { | |||
//校区 | |||
@@ -91,6 +91,7 @@ | |||
<a id="lr_save" class="btn btn-default" style="display:none;"><i class="fa fa-edit"> 提交成绩</i></a> | |||
<a id="lr_check" class="btn btn-default"><i class="fa fa-lock"> 提交教务处</i></a> | |||
<a id="lr_uncheck" class="btn btn-default"><i class="fa fa-lock"> 去审核成绩</i></a> | |||
<a id="lr_importScore" class="btn btn-default"><i class="fa fa-edit"> 导入</i></a> | |||
</div> | |||
</div> | |||
@@ -15,6 +15,9 @@ var headData; //常规列头 | |||
var headDataEdit; //可编辑列头 | |||
var headDataNoEdit; //不可编辑列头 | |||
var headDataFinally; //最终列头 | |||
var rowJson; | |||
var columnJson; | |||
var queryJson; | |||
var bootstrap = function ($, learun) { | |||
"use strict"; | |||
var page = { | |||
@@ -342,6 +345,53 @@ var bootstrap = function ($, learun) { | |||
learun.postFormSilence(top.$.rootUrl + '/EducationalAdministration/StuScoreNotPassTwo/AddMinutes', { queryJson: JSON.stringify(query), minutes: newMinutes }, function (res) { }); | |||
} | |||
}); | |||
//导入 | |||
$("#lr_importScore").on("click", function () { | |||
var query = judgeSelect(); | |||
if (query) { | |||
//判断是否已审核;判断是否被其他教师占用 | |||
$.lrSetForm(top.$.rootUrl + '/EducationalAdministration/StuScoreNotPassTwo/GetEntityByJson?queryJson=' + JSON.stringify(query), function (data) { | |||
if (data != null) { | |||
if (data.CheckMark == 1) { | |||
learun.alert.warning("学生成绩已审核!"); | |||
return false; | |||
} | |||
if (data.IsEditable == 0) { | |||
if (data.EditUserId == learun.clientdata.get(['userinfo']).account) { | |||
modifyDate = data.ModifyDate; | |||
} else { | |||
learun.alert.warning("当前班级成绩由账号为" + data.EditUserId + "的教师在使用!"); | |||
return false; | |||
} | |||
} | |||
rowJson = $('#gridtable').jfGridGet('showData'); | |||
columnJson = $('#gridtable').jfGridGet('settingInfo').headData; | |||
//条件 | |||
var $content = $('body').find('.lr-layout-tool-left'); | |||
queryJson = $content.lrGetFormData(); | |||
learun.layerForm({ | |||
id: 'indexImport', | |||
title: "导入学生成绩", | |||
url: top.$.rootUrl + '/EducationalAdministration/StuScore/InputScoreIndexInTeacherImport?type=4', | |||
width: 600, | |||
height: 400, | |||
maxmin: true, | |||
btn: null, | |||
end: function () { | |||
refreshGirdData2(); | |||
} | |||
}); | |||
} else { | |||
learun.alert.warning("学生成绩不存在!"); | |||
return false; | |||
} | |||
}); | |||
} | |||
}); | |||
}, | |||
bindSelect: function () { | |||
//校区 | |||
@@ -89,6 +89,7 @@ | |||
<a id="lr_save" class="btn btn-default" style="display:none;"><i class="fa fa-edit"> 提交成绩</i></a> | |||
<a id="lr_check" class="btn btn-default"><i class="fa fa-lock"> 提交教务处</i></a> | |||
<a id="lr_uncheck" class="btn btn-default"><i class="fa fa-lock"> 去审核成绩</i></a> | |||
<a id="lr_importScore" class="btn btn-default"><i class="fa fa-edit"> 导入</i></a> | |||
</div> | |||
</div> | |||
@@ -15,6 +15,9 @@ var headData; //常规列头 | |||
var headDataEdit; //可编辑列头 | |||
var headDataNoEdit; //不可编辑列头 | |||
var headDataFinally; //最终列头 | |||
var rowJson; | |||
var columnJson; | |||
var queryJson; | |||
var bootstrap = function ($, learun) { | |||
"use strict"; | |||
var page = { | |||
@@ -342,6 +345,53 @@ var bootstrap = function ($, learun) { | |||
learun.postFormSilence(top.$.rootUrl + '/EducationalAdministration/StuScoreNotPassTwo/AddMinutes', { queryJson: JSON.stringify(query), minutes: newMinutes }, function (res) { }); | |||
} | |||
}); | |||
//导入 | |||
$("#lr_importScore").on("click", function () { | |||
var query = judgeSelect(); | |||
if (query) { | |||
//判断是否已审核;判断是否被其他教师占用 | |||
$.lrSetForm(top.$.rootUrl + '/EducationalAdministration/StuScoreNotPassTwo/GetEntityByJson?queryJson=' + JSON.stringify(query), function (data) { | |||
if (data != null) { | |||
if (data.CheckMark == 1) { | |||
learun.alert.warning("学生成绩已审核!"); | |||
return false; | |||
} | |||
if (data.IsEditable == 0) { | |||
if (data.EditUserId == learun.clientdata.get(['userinfo']).account) { | |||
modifyDate = data.ModifyDate; | |||
} else { | |||
learun.alert.warning("当前班级成绩由账号为" + data.EditUserId + "的教师在使用!"); | |||
return false; | |||
} | |||
} | |||
rowJson = $('#gridtable').jfGridGet('showData'); | |||
columnJson = $('#gridtable').jfGridGet('settingInfo').headData; | |||
//条件 | |||
var $content = $('body').find('.lr-layout-tool-left'); | |||
queryJson = $content.lrGetFormData(); | |||
learun.layerForm({ | |||
id: 'indexImport', | |||
title: "导入学生成绩", | |||
url: top.$.rootUrl + '/EducationalAdministration/StuScore/InputScoreIndexInTeacherImport?type=4', | |||
width: 600, | |||
height: 400, | |||
maxmin: true, | |||
btn: null, | |||
end: function () { | |||
refreshGirdData2(); | |||
} | |||
}); | |||
} else { | |||
learun.alert.warning("学生成绩不存在!"); | |||
return false; | |||
} | |||
}); | |||
} | |||
}); | |||
}, | |||
bindSelect: function () { | |||
//校区 | |||
@@ -18,6 +18,7 @@ | |||
<div class="lr-form-item-title">姓名</div> | |||
<input id="StuName" type="text" class="form-control" /> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">班级</div> | |||
<div id="ClassNo"></div> | |||
@@ -27,17 +28,17 @@ | |||
<div id="CreateUserId"></div> | |||
</div> | |||
@*<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">审核人</div> | |||
<div id="CheckUserId"></div> | |||
</div>*@ | |||
<div class="lr-form-item-title">审核人</div> | |||
<div id="CheckUserId"></div> | |||
</div>*@ | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">审核状态</div> | |||
<div id="F_EnabledMark"></div> | |||
</div> | |||
@*<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">保留学籍</div> | |||
<div id="StuStatus"></div> | |||
</div>*@ | |||
<div class="lr-form-item-title">保留学籍</div> | |||
<div id="StuStatus"></div> | |||
</div>*@ | |||
</div> | |||
</div> | |||
</div> | |||
@@ -18,6 +18,10 @@ | |||
<div class="lr-form-item-title">姓名</div> | |||
<input id="StuName" type="text" class="form-control" /> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">年级</div> | |||
<input id="Grade" type="text" class="form-control" /> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">原班级</div> | |||
<div id="ClassNo"></div> | |||
@@ -31,9 +35,9 @@ | |||
<div id="CheckUserId"></div> | |||
</div> | |||
@*<div class="col-xs-6 lr-form-item"> | |||
<div class="lr-form-item-title">审核状态</div> | |||
<div id="NationalityNo"></div> | |||
</div>*@ | |||
<div class="lr-form-item-title">审核状态</div> | |||
<div id="NationalityNo"></div> | |||
</div>*@ | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">保留学籍</div> | |||
<div id="StuStatus"></div> | |||
@@ -181,7 +181,7 @@ var bootstrap = function ($, learun) { | |||
validForm = function () { | |||
var datas = $('#TextBookOut').jfGridGet('rowdatas'); | |||
if (datas == null || datas.length == 0) { | |||
learun.alert.warning("申请未包含出库申请!请先添加入库申请!"); | |||
learun.alert.warning("申请未包含出库申请!请先添加出库申请!"); | |||
return false; | |||
} | |||
return true; | |||
@@ -53,7 +53,7 @@ | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">明细操作</div> | |||
<input id="detaildel" type="button" class="btn btn-danger" value="删除入库单" /> | |||
<input id="detaildel" type="button" class="btn btn-danger" value="删除出库单" /> | |||
</div> | |||
<div class="col-xs-12 lr-form-item lr-form-item-grid"> | |||
<div id="TextBookOut"></div> | |||
@@ -14,8 +14,16 @@ | |||
<div id="multiple_condition_query"> | |||
<div class="lr-query-formcontent"> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">关键字查询</div> | |||
<input id="keyword" type="text" class="form-control" placeholder="请输入要查询关键字" /> | |||
<div class="lr-form-item-title">教材名称</div> | |||
<input id="TextBookName" type="text" class="form-control" /> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">教材号</div> | |||
<input id="TextBookNo" type="text" class="form-control" /> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">第一作者</div> | |||
<input id="FirstAuthor" type="text" class="form-control" /> | |||
</div> | |||
</div> | |||
</div> | |||
@@ -15,7 +15,7 @@ var bootstrap = function ($, learun) { | |||
bind: function () { | |||
$('#multiple_condition_query').lrMultipleQuery(function (queryJson) { | |||
page.search(queryJson); | |||
}, 100, 400); | |||
}, 200, 400); | |||
$('#DeptNo').lrDataSourceSelect({ code: 'CdDeptInfo',value: 'deptno',text: 'deptname' }); | |||
$('#MajorNo').lrDataSourceSelect({ code: 'CdMajorInfo',value: 'majorno',text: 'majorname' }); | |||
$('#ClassNo').lrDataSourceSelect({ code: 'bjsj',value: 'classno',text: 'classname' }); | |||
@@ -107,9 +107,31 @@ var bootstrap = function ($, learun) { | |||
{ label: '版次', name: 'Edition', width: 200, align: "left" }, | |||
{ label: '印次', name: 'Impression', width: 200, align: "left" }, | |||
{ label: '创建时间', name: 'CreateTime', width: 200, align: "left" }, | |||
{ label: '创建用户', name: 'CrateUserID', width: 200, align: "left" }, | |||
{ | |||
label: '创建用户', name: 'CrateUserID', width: 200, align: "left", formatterAsync: function (callback, value, row, op, $cell) { | |||
learun.clientdata.getAsync('custmerData', { | |||
url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'BaseUser', | |||
key: value, | |||
keyId: 'f_userid', | |||
callback: function (_data) { | |||
callback(_data['f_realname']); | |||
} | |||
}); | |||
} | |||
}, | |||
{ label: '修改人', name: 'UpTime', width: 200, align: "left" }, | |||
{ label: '修改用户', name: 'UpUserID', width: 200, align: "left" }, | |||
{ | |||
label: '修改用户', name: 'UpUserID', width: 200, align: "left", formatterAsync: function (callback, value, row, op, $cell) { | |||
learun.clientdata.getAsync('custmerData', { | |||
url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'BaseUser', | |||
key: value, | |||
keyId: 'f_userid', | |||
callback: function (_data) { | |||
callback(_data['f_realname']); | |||
} | |||
}); | |||
} | |||
}, | |||
{ label: '当前数量', name: 'FinallyNum', width: 200, align: "left" }, | |||
{ label: '备注', name: 'Remark', width: 200, align: "left" }, | |||
], | |||
@@ -8,10 +8,22 @@ | |||
<div class="lr-layout-tool"> | |||
<div class="lr-layout-tool-left"> | |||
<div class="lr-layout-tool-item"> | |||
<input id="txt_Keyword" type="text" class="form-control" placeholder="请输入要查询关键字" /> | |||
</div> | |||
<div class="lr-layout-tool-item"> | |||
<a id="btn_Search" class="btn btn-primary btn-sm"><i class="fa fa-search"></i> 查询</a> | |||
<div id="multiple_condition_query"> | |||
<div class="lr-query-formcontent"> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">教材名称</div> | |||
<input id="TextBookName" type="text" class="form-control" /> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">教材号</div> | |||
<input id="TextBookNo" type="text" class="form-control" /> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">第一作者</div> | |||
<input id="FirstAuthor" type="text" class="form-control" /> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="lr-layout-tool-right"> | |||
@@ -14,10 +14,9 @@ var bootstrap = function ($, learun) { | |||
}, | |||
bind: function () { | |||
// 查询 | |||
$('#btn_Search').on('click', function () { | |||
var keyword = $('#txt_Keyword').val(); | |||
page.search({ keyword: keyword }); | |||
}); | |||
$('#multiple_condition_query').lrMultipleQuery(function (queryJson) { | |||
page.search(queryJson); | |||
}, 200, 400); | |||
$('#LessonNo').lrDataSourceSelect({ code: 'LessonInfo', value: 'lessonno', text: 'lessonname' }); | |||
// 刷新 | |||
$('#lr_refresh').on('click', function () { | |||
@@ -119,7 +118,18 @@ var bootstrap = function ($, learun) { | |||
{ label: '版次', name: 'Edition', width: 100, align: "left" }, | |||
{ label: '印次', name: 'Impression', width: 100, align: "left" }, | |||
{ label: '创建时间', name: 'CreateTime', width: 200, align: "left" }, | |||
{ label: '创建用户', name: 'CrateUserID', width: 200, align: "left" }, | |||
{ | |||
label: '创建用户', name: 'CrateUserID', width: 200, align: "left", formatterAsync: function (callback, value, row, op, $cell) { | |||
learun.clientdata.getAsync('custmerData', { | |||
url: '/LR_SystemModule/DataSource/GetDataTable?code=' + 'BaseUser', | |||
key: value, | |||
keyId: 'f_userid', | |||
callback: function (_data) { | |||
callback(_data['f_realname']); | |||
} | |||
}); | |||
} | |||
}, | |||
{ label: '当前数量', name: 'FinallyNum', width: 100, align: "left" }, | |||
{ label: '累计入库数量', name: 'RKNum', width: 100, align: "left" }, | |||
{ label: '累计出库数量', name: 'CKNum', width: 100, align: "left" }, | |||
@@ -8,10 +8,22 @@ | |||
<div class="lr-layout-tool"> | |||
<div class="lr-layout-tool-left"> | |||
<div class="lr-layout-tool-item"> | |||
<input id="txt_Keyword" type="text" class="form-control" placeholder="请输入要查询关键字" /> | |||
</div> | |||
<div class="lr-layout-tool-item"> | |||
<a id="btn_Search" class="btn btn-primary btn-sm"><i class="fa fa-search"></i> 查询</a> | |||
<div id="multiple_condition_query"> | |||
<div class="lr-query-formcontent"> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">教材名称</div> | |||
<input id="TextBookName" type="text" class="form-control" /> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">教材号</div> | |||
<input id="TextBookNo" type="text" class="form-control" /> | |||
</div> | |||
<div class="col-xs-12 lr-form-item"> | |||
<div class="lr-form-item-title">第一作者</div> | |||
<input id="FirstAuthor" type="text" class="form-control" /> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="lr-layout-tool-right"> | |||
@@ -14,10 +14,9 @@ var bootstrap = function ($, learun) { | |||
}, | |||
bind: function () { | |||
// 查询 | |||
$('#btn_Search').on('click', function () { | |||
var keyword = $('#txt_Keyword').val(); | |||
page.search({ keyword: keyword }); | |||
}); | |||
$('#multiple_condition_query').lrMultipleQuery(function (queryJson) { | |||
page.search(queryJson); | |||
}, 200, 400); | |||
$('#LessonNo').lrDataSourceSelect({ code: 'LessonInfo', value: 'lessonno', text: 'lessonname' }); | |||
// 刷新 | |||
$('#lr_refresh').on('click', function () { | |||
@@ -31,9 +31,10 @@ | |||
<a id="lr_refresh" class="btn btn-default"><i class="fa fa-refresh"></i></a> | |||
</div> | |||
<div class=" btn-group btn-group-sm" learun-authorize="yes"> | |||
<a id="lr_add" class="btn btn-default"><i class="fa fa-plus"></i> 新增</a> | |||
<a id="lr_edit" class="btn btn-default"><i class="fa fa-pencil-square-o"></i> 编辑</a> | |||
<a id="lr_add" class="btn btn-default"><i class="fa fa-plus"></i> 新增</a> | |||
<a id="lr_edit" class="btn btn-default"><i class="fa fa-pencil-square-o"></i> 编辑</a> | |||
<a id="lr_delete" class="btn btn-default"><i class="fa fa-trash-o"></i> 删除</a> | |||
<a id="lr_print" class="btn btn-default"><i class="fa fa-print"></i> 打印</a> | |||
</div> | |||
</div> | |||
</div> | |||
@@ -64,6 +64,10 @@ var bootstrap = function ($, learun) { | |||
}); | |||
} | |||
}); | |||
// 打印 | |||
$('#lr_print').on('click', function () { | |||
$('#gridtable').jqprintTable(); | |||
}); | |||
}, | |||
// 初始化列表 | |||
initGird: function () { | |||
@@ -35,9 +35,10 @@ | |||
<a id="lr_refresh" class="btn btn-default"><i class="fa fa-refresh"></i></a> | |||
</div> | |||
<div class=" btn-group btn-group-sm" learun-authorize="yes"> | |||
<a id="lr_add" class="btn btn-default"><i class="fa fa-plus"></i> 新增</a> | |||
<a id="lr_edit" class="btn btn-default"><i class="fa fa-pencil-square-o"></i> 编辑</a> | |||
<a id="lr_add" class="btn btn-default"><i class="fa fa-plus"></i> 新增</a> | |||
<a id="lr_edit" class="btn btn-default"><i class="fa fa-pencil-square-o"></i> 编辑</a> | |||
<a id="lr_delete" class="btn btn-default"><i class="fa fa-trash-o"></i> 删除</a> | |||
<a id="lr_print" class="btn btn-default"><i class="fa fa-print"></i> 打印</a> | |||
</div> | |||
</div> | |||
</div> | |||
@@ -66,6 +66,10 @@ var bootstrap = function ($, learun) { | |||
}); | |||
} | |||
}); | |||
// 打印 | |||
$('#lr_print').on('click', function () { | |||
$('#gridtable').jqprintTable(); | |||
}); | |||
// 删除 | |||
$('#lr_delete').on('click', function () { | |||
var keyValue = $('#gridtable').jfGridValue('Id'); | |||
@@ -1378,6 +1378,7 @@ | |||
<Content Include="Areas\EducationalAdministration\Views\StuScoreNotPass\InputScoreIndex.js" /> | |||
<Content Include="Areas\EducationalAdministration\Views\StuScoreNotPass\Monitor.js" /> | |||
<Content Include="Areas\EducationalAdministration\Views\StuScore\AllStuScoreQueryIndex.js" /> | |||
<Content Include="Areas\EducationalAdministration\Views\StuScore\InputScoreIndexInTeacherImport.js" /> | |||
<Content Include="Areas\EducationalAdministration\Views\StuScore\StuScoreQueryIndex.js" /> | |||
<Content Include="Areas\EducationalAdministration\Views\StuScore\InputScoreIndexOfElectiveInTeacher.js" /> | |||
<Content Include="Areas\EducationalAdministration\Views\StuScore\InputScoreIndexOfElective.js" /> | |||
@@ -8126,6 +8127,7 @@ | |||
<Content Include="Areas\LR_NewWorkFlow\Views\NWFProcess\TeachLeaveIndex.cshtml" /> | |||
<Content Include="Areas\PersonnelManagement\Views\DutySchedule\qrCode.cshtml" /> | |||
<Content Include="Areas\PersonnelManagement\Views\ActivitySchedule\qrCode.cshtml" /> | |||
<Content Include="Areas\EducationalAdministration\Views\StuScore\InputScoreIndexInTeacherImport.cshtml" /> | |||
<None Include="Properties\PublishProfiles\CustomProfile.pubxml" /> | |||
<None Include="Properties\PublishProfiles\FolderProfile.pubxml" /> | |||
<Content Include="Views\Login\Default-beifen.cshtml" /> | |||
@@ -38,7 +38,7 @@ namespace Learun.Application.WebApi | |||
public Response GetClassByMajorNo(dynamic _) | |||
{ | |||
string keyValue = this.GetReqData(); | |||
var data = classInfoIBLL.GetClassByMajorNo( keyValue ); | |||
var data = classInfoIBLL.GetClassByMajorNo( keyValue, "" ); | |||
return Success(data); | |||
} | |||
#endregion | |||
@@ -259,11 +259,11 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
} | |||
} | |||
} | |||
public IEnumerable<ClassInfoEntity> GetClassByMajorNo(string MajorNo) | |||
public IEnumerable<ClassInfoEntity> GetClassByMajorNo(string MajorNo, string nj) | |||
{ | |||
try | |||
{ | |||
return classInfoService.GetClassByMajorNo(MajorNo); | |||
return classInfoService.GetClassByMajorNo(MajorNo,nj); | |||
} | |||
catch (Exception ex) | |||
{ | |||
@@ -68,6 +68,6 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
#endregion | |||
IEnumerable<ClassInfoEntity> GetAllClass(); | |||
IEnumerable<ClassInfoEntity> GetClassByMajorNo(string majorNo); | |||
IEnumerable<ClassInfoEntity> GetClassByMajorNo(string majorNo, string nj); | |||
} | |||
} |
@@ -373,11 +373,11 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
} | |||
} | |||
} | |||
public IEnumerable<ClassInfoEntity> GetClassByMajorNo(string MajorNo) | |||
public IEnumerable<ClassInfoEntity> GetClassByMajorNo(string MajorNo, string nj) | |||
{ | |||
try | |||
{ | |||
return this.BaseRepository("CollegeMIS").FindList<ClassInfoEntity>(m => m.CheckMark == true && m.MajorNo == MajorNo); | |||
return this.BaseRepository("CollegeMIS").FindList<ClassInfoEntity>(m => m.CheckMark == true && m.MajorNo == MajorNo && (nj == "" || m.ClassName.StartsWith(nj))).OrderBy(x => x.ClassName); | |||
} | |||
catch (Exception ex) | |||
{ | |||
@@ -471,6 +471,10 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
{ | |||
throw; | |||
} | |||
else if (ex is ArgumentException) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowBusinessException(ex); | |||
@@ -675,6 +679,10 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
{ | |||
throw; | |||
} | |||
else if (ex is ArgumentException) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowBusinessException(ex); | |||
@@ -575,7 +575,11 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
foreach (var item in stuNo.Split(',')) | |||
{ | |||
var itementity = db.FindEntity<StuInfoBasicEntity>(x => x.StuNo == item); | |||
if (itementity.ReturnBooksStatus == "1" && itementity.EmployAgreeStatus == "1" && itementity.FeeSettleStatus == "1" && itementity.CheckOutStatus == "1" && itementity.CardDeregistrateStatus == "1" && itementity.DiplomaReceiveStatus == "1" && itementity.FileTransferStatus == "1") | |||
if (itementity.FinishSchoolMark == "1" || itementity.FinishSchoolMark == "2") | |||
{ | |||
throw new ArgumentException("所选数据中有已操作完成的数据,无需重复操作"); | |||
} | |||
else if (itementity.ReturnBooksStatus == "1" && itementity.EmployAgreeStatus == "1" && itementity.FeeSettleStatus == "1" && itementity.CheckOutStatus == "1" && itementity.CardDeregistrateStatus == "1" && itementity.DiplomaReceiveStatus == "1" && itementity.FileTransferStatus == "1") | |||
{ | |||
db.ExecuteBySql($"UPDATE dbo.StuInfoBasic SET FinishSchoolMark ='2',FinishSchoolDate='" + DateTime.Now + "' WHERE StuNo='" + item + "' "); | |||
} | |||
@@ -600,6 +604,10 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
{ | |||
throw; | |||
} | |||
else if(ex is ArgumentException) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowServiceException(ex); | |||
@@ -746,14 +754,36 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
{ | |||
var now = DateTime.Now; | |||
var keyValueArr = keyValue.Split(','); | |||
foreach (var item in keyValueArr) | |||
if (keyValueArr.Length == 1) | |||
{ | |||
var sql = $"UPDATE StuInfoBasic SET DiplomaReceiveStatus='{status}',DiplomaReceiveDate='{now}',DiplomaReceiveSign='{entity.DiplomaReceiveSign}',DiplomaReceiveIdcard='{entity.DiplomaReceiveIdcard}',DiplomaReceiveRemark='{entity.DiplomaReceiveRemark}' WHERE StuId='{item}'"; | |||
db.ExecuteBySql(sql); | |||
foreach (var item in keyValueArr) | |||
{ | |||
var sql = $"UPDATE StuInfoBasic SET DiplomaReceiveStatus='{status}',DiplomaReceiveDate='{now}',DiplomaReceiveSign='{entity.DiplomaReceiveSign}',DiplomaReceiveIdcard='{entity.DiplomaReceiveIdcard}',DiplomaReceiveRemark='{entity.DiplomaReceiveRemark}' WHERE StuId='{item}'"; | |||
db.ExecuteBySql(sql); | |||
//判断离校手续是否全办完 且 毕业状态为准许毕业,若同时满足则修改毕业状态为已毕业和毕业时间; | |||
var sql2 = $"update StuInfoBasic set FinishSchoolMark='2',FinishSchoolDate='{now}' where StuId='{item}' and FinishSchoolMark='1' and ReturnBooksStatus='1' and EmployAgreeStatus='1' and FeeSettleStatus='1' and CheckOutStatus='1' and CardDeregistrateStatus='1' and FileTransferStatus='1' and TissueStatus='1' "; | |||
db.ExecuteBySql(sql2); | |||
//判断离校手续是否全办完 且 毕业状态为准许毕业,若同时满足则修改毕业状态为已毕业和毕业时间; | |||
var sql2 = $"update StuInfoBasic set FinishSchoolMark='2',FinishSchoolDate='{now}' where StuId='{item}' and FinishSchoolMark='1' and ReturnBooksStatus='1' and EmployAgreeStatus='1' and FeeSettleStatus='1' and CheckOutStatus='1' and CardDeregistrateStatus='1' and FileTransferStatus='1' and TissueStatus='1' "; | |||
db.ExecuteBySql(sql2); | |||
} | |||
} | |||
else | |||
{ | |||
var stuIds = string.Join("','", keyValueArr); | |||
var ls = db.FindList<StuInfoBasicEntity>().Any(x => x.DiplomaReceiveStatus == "1" && keyValueArr.Contains(x.StuId));//($"select * from StuInfoBasic where DiplomaReceiveStatus='1' and StuId in ('{stuIds}')"); | |||
if (ls) | |||
{ | |||
throw new ArgumentException("已领取毕业证的不可重复操作"); | |||
} | |||
else | |||
{ | |||
var sql = $"UPDATE StuInfoBasic SET DiplomaReceiveStatus='{status}',DiplomaReceiveDate='{now}',DiplomaReceiveSign=StuName,DiplomaReceiveIdcard='',DiplomaReceiveRemark='' WHERE StuId in ('{stuIds}')"; | |||
db.ExecuteBySql(sql); | |||
//判断离校手续是否全办完 且 毕业状态为准许毕业,若同时满足则修改毕业状态为已毕业和毕业时间; | |||
var sql2 = $"update StuInfoBasic set FinishSchoolMark='2',FinishSchoolDate='{now}' where StuId in ('{stuIds}') and FinishSchoolMark='1' and ReturnBooksStatus='1' and EmployAgreeStatus='1' and FeeSettleStatus='1' and CheckOutStatus='1' and CardDeregistrateStatus='1' and FileTransferStatus='1' and TissueStatus='1' "; | |||
db.ExecuteBySql(sql2); | |||
} | |||
} | |||
} | |||
else | |||
@@ -780,6 +810,10 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
{ | |||
throw; | |||
} | |||
else if (ex is ArgumentException) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowServiceException(ex); | |||
@@ -1073,6 +1073,33 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
} | |||
} | |||
#endregion | |||
/// <summary> | |||
/// 成绩导入 | |||
/// </summary> | |||
/// <param name="type"></param> | |||
/// <param name="dt"></param> | |||
/// <param name="fileGuid"></param> | |||
/// <param name="queryJson"></param> | |||
/// <returns></returns> | |||
public (DataTable failDt, int snum, int fnum) ExecuteImportExcel(int type, DataTable dt, string fileGuid, string queryJson) | |||
{ | |||
try | |||
{ | |||
return stuScoreService.ExecuteImportExcel(type, dt, fileGuid, queryJson); | |||
} | |||
catch (Exception ex) | |||
{ | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowBusinessException(ex); | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -251,6 +251,7 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
#endregion | |||
(DataTable failDt, int snum, int fnum) ExecuteImportExcel(int type, DataTable dt, string fileGuid, string queryJson); | |||
IEnumerable<WebHelper.YearGrade> GetLessonNoDataFromStuNo(string academicYearNo, string semester, string stuNo); | |||
void UpEmpNos(string xn, string xq, string classNo, string LessonNo, string EmpNo, string HisEmpNo, string Grade); | |||
} | |||
@@ -9,6 +9,8 @@ using System.Net.Http; | |||
using System.Text; | |||
using System.Threading.Tasks; | |||
using Newtonsoft.Json; | |||
using Learun.Cache.Base; | |||
using Learun.Cache.Factory; | |||
namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
{ | |||
@@ -21,6 +23,10 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
/// </summary> | |||
public class StuScoreService : RepositoryFactory | |||
{ | |||
#region 缓存定义 | |||
private ICache cache = CacheFactory.CaChe(); | |||
private string cacheKey = "Learun_adms_excelError_"; | |||
#endregion | |||
#region 构造函数和属性 | |||
private string fieldSql; | |||
@@ -2010,6 +2016,329 @@ and a.Academicyearno='" + academicYearNo + "' and a.Semester='" + semester + "') | |||
} | |||
} | |||
} | |||
/// <summary> | |||
/// 成绩导入--必修课 选修课 | |||
/// </summary> | |||
/// <param name="type">1:必修,2:选修</param> | |||
/// <param name="dt"></param> | |||
/// <param name="fileGuid"></param> | |||
/// <param name="queryJson"></param> | |||
/// <returns></returns> | |||
public (DataTable failDt, int snum, int fnum) ExecuteImportExcel(int type, DataTable dt, string fileGuid, string queryJson) | |||
{ | |||
if (type == 1) | |||
{ | |||
//必修 | |||
return ExecuteImportExcelForRequired(dt, fileGuid, queryJson); | |||
} | |||
else | |||
{ | |||
//选修 | |||
return ExecuteImportExcelForElective(dt, fileGuid, queryJson); | |||
} | |||
} | |||
/// <summary> | |||
/// 导入学生成绩--必修课 | |||
/// </summary> | |||
/// <param name="dt"></param> | |||
/// <returns></returns> | |||
private (DataTable failDt, int snum, int fnum) ExecuteImportExcelForRequired(DataTable dt, string fileGuid, string queryJson) | |||
{ | |||
//成功记录数 | |||
int snum = 0; | |||
//总记录数 | |||
int num = 0; | |||
var db = this.BaseRepository("CollegeMIS"); | |||
var msg = ""; | |||
try | |||
{ | |||
db.BeginTrans(); | |||
// 创建一个datatable容器用于保存导入失败的数据 | |||
DataTable failDt = new DataTable(); | |||
var queryParam = queryJson.ToJObject(); | |||
var F_SchoolId = queryParam["F_SchoolId"].ToString(); | |||
var AcademicYearNo = queryParam["AcademicYearNo"].ToString(); | |||
var Semester = queryParam["Semester"].ToString(); | |||
var LessonNo = queryParam["LessonNo"].ToString(); | |||
var ClassNo = queryParam["ClassNo"].ToString(); | |||
var classInfoList = db.FindList<ClassInfoEntity>(); | |||
var lessonInfoList = db.FindList<LessonInfoEntity>(); | |||
var classInfoEntity = classInfoList.FirstOrDefault(x => x.ClassNo == ClassNo); | |||
var lessonInfoEntity = lessonInfoList.FirstOrDefault(x => x.LessonNo == LessonNo && x.CheckMark == true); | |||
if (classInfoEntity != null) | |||
{ | |||
//获取成绩比例数据 | |||
var stuSelectLessonListEntity = db.FindEntity<StuSelectLessonListEntity>(x => x.F_SchoolId == F_SchoolId && x.AcademicYearNo == AcademicYearNo && x.Semester == Semester && x.OpenLessonDeptNo == classInfoEntity.DeptNo && x.OpenLessonMajorNo == classInfoEntity.MajorNo && x.LessonNo == LessonNo && x.LessonSortNo == "1" && x.ClassNo == ClassNo); | |||
if (stuSelectLessonListEntity != null) | |||
{ | |||
//当前班级学生成绩 | |||
var list = GetList(queryJson).ToList(); | |||
foreach (DataColumn dc in dt.Columns) | |||
{ | |||
failDt.Columns.Add(dc.ColumnName, dc.DataType); | |||
} | |||
failDt.Columns.Add("导入错误", typeof(string)); | |||
dt.Columns.Add("导入错误", typeof(string)); | |||
foreach (DataRow dr in dt.Rows) | |||
{ | |||
try | |||
{ | |||
var stuno = dr["学号"].ToString().Trim(); | |||
var academicYearNo_dr = dr["学年"].ToString().Trim(); | |||
var semester_dr = dr["学期"].ToString().Trim(); | |||
var lessoninfo_dr = dr["课程名称"].ToString().Trim(); | |||
var classinfo_dr = dr["班级"].ToString().Trim(); | |||
//var lessonNo_dr = lessonInfoList.FirstOrDefault(x => x.LessonName == lessoninfo_dr)?.LessonNo; | |||
//var classNo_dr = classInfoList.FirstOrDefault(x => x.ClassName == classinfo_dr)?.ClassNo; | |||
if (!string.IsNullOrEmpty(stuno)) | |||
{ | |||
num++; | |||
if (!academicYearNo_dr.Equals(AcademicYearNo) || !semester_dr.Equals(Semester)) | |||
{ | |||
dr["导入错误"] = "学年学期与查询条件不匹配!"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
if (!classinfo_dr.Equals(classInfoEntity.ClassName)) | |||
{ | |||
dr["导入错误"] = "班级与查询条件班级(" + classInfoEntity.ClassName + ")不匹配!"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
if (!lessoninfo_dr.Equals(lessonInfoEntity.LessonName)) | |||
{ | |||
dr["导入错误"] = "课程与查询条件课程(" + lessonInfoEntity.LessonName + ")不匹配!"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
if (!lessoninfo_dr.Equals(lessonInfoEntity.LessonName) || !classinfo_dr.Equals(classInfoEntity.ClassName)) | |||
{ | |||
dr["导入错误"] = "课程:" + lessonInfoEntity.LessonName + ",班级:" + classInfoEntity.ClassName + "找不到学号为" + stuno + "的学生"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
var item = list.Find(x => x.StuNo == stuno && x.LessonNo == LessonNo && x.ClassNo == ClassNo); | |||
var OrdinaryScore = Convert.ToDecimal(string.IsNullOrEmpty(dr["平时成绩"].ToString().Trim()) ? "0" : dr["平时成绩"].ToString().Trim()); | |||
var TermInScore = Convert.ToDecimal(string.IsNullOrEmpty(dr["期中成绩"].ToString().Trim()) ? "0" : dr["期中成绩"].ToString().Trim()); | |||
var TermEndScore = Convert.ToDecimal(string.IsNullOrEmpty(dr["期末成绩"].ToString().Trim()) ? "0" : dr["期末成绩"].ToString().Trim()); | |||
var OtherScore = Convert.ToDecimal(string.IsNullOrEmpty(dr["其他成绩"].ToString().Trim()) ? "0" : dr["其他成绩"].ToString().Trim()); | |||
if (OrdinaryScore < 0 || TermInScore < 0 || TermEndScore < 0 || OtherScore < 0) | |||
{ | |||
dr["导入错误"] = "成绩必须大于0!"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
var Score = Math.Round(Convert.ToDouble(OrdinaryScore * (stuSelectLessonListEntity.OrdinaryScoreScale / 100) + | |||
TermInScore * (stuSelectLessonListEntity.TermInScoreScale / 100) + | |||
TermEndScore * (stuSelectLessonListEntity.TermEndScoreScale / 100) + | |||
OtherScore * (stuSelectLessonListEntity.OtherScoreScale / 100)), MidpointRounding.AwayFromZero); | |||
var remark = dr["备注"].ToString().Trim(); | |||
db.ExecuteBySql($"update StuScore set OrdinaryScore={OrdinaryScore},TermInScore={TermInScore},TermEndScore={TermEndScore},OtherScore={OtherScore},Score={Score},Remark='{remark}' where ScoreId='{item.ScoreId}' "); | |||
} | |||
else | |||
{ | |||
break; | |||
} | |||
} | |||
catch (Exception e) | |||
{ | |||
dr["导入错误"] = "出现异常:" + e.Message; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
} | |||
db.Commit(); | |||
// 写入缓存如果有未导入的数据 | |||
if (failDt.Rows.Count > 0) | |||
{ | |||
string errordt = failDt.ToJson(); | |||
cache.Write<string>(cacheKey + fileGuid, errordt, CacheId.excel); | |||
} | |||
snum = (num - failDt.Rows.Count) > 0 ? num - failDt.Rows.Count : 0; | |||
} | |||
} | |||
return (failDt, snum, failDt.Rows.Count); | |||
} | |||
catch (Exception ex) | |||
{ | |||
db.Rollback(); | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowServiceException(ex); | |||
} | |||
} | |||
} | |||
/// <summary> | |||
/// 导入学生成绩--选修课 | |||
/// </summary> | |||
/// <param name="dt"></param> | |||
/// <returns></returns> | |||
private (DataTable failDt, int snum, int fnum) ExecuteImportExcelForElective(DataTable dt, string fileGuid, string queryJson) | |||
{ | |||
//成功记录数 | |||
int snum = 0; | |||
//总记录数 | |||
int num = 0; | |||
var db = this.BaseRepository("CollegeMIS"); | |||
var msg = ""; | |||
try | |||
{ | |||
db.BeginTrans(); | |||
//创建一个datatable容器用于保存导入失败的数据 | |||
DataTable failDt = new DataTable(); | |||
var queryParam = queryJson.ToJObject(); | |||
var F_SchoolId = queryParam["F_SchoolId"].ToString(); | |||
var AcademicYearNo = queryParam["AcademicYearNo"].ToString(); | |||
var Semester = queryParam["Semester"].ToString(); | |||
var LessonNo = queryParam["LessonNo"].ToString(); | |||
var LessonSection = queryParam["LessonSection"].ToString(); | |||
var ClassRoomNo = queryParam["ClassRoomNo"].ToString(); | |||
var classRoomList = db.FindList<ClassroomInfoEntity>(); | |||
var lessonInfoList = db.FindList<LessonInfoEntity>(); | |||
var lessonInfoEntity = lessonInfoList.FirstOrDefault(x => x.LessonNo == LessonNo && x.CheckMark == true); | |||
var classRoomEntity = classRoomList.FirstOrDefault(x => x.ClassroomNo == ClassRoomNo); | |||
//成绩比例数据 | |||
var stuSelectLessonListOfElectiveEntity = this.BaseRepository("CollegeMIS").FindEntity<StuSelectLessonListOfElectiveEntity>(x => x.F_SchoolId == F_SchoolId && x.AcademicYearNo == AcademicYearNo && x.Semester == Semester && x.LessonNo == LessonNo && x.LessonSortNo == "2" && x.ClassRoomNo == ClassRoomNo && x.LessonSection == LessonSection); | |||
if (stuSelectLessonListOfElectiveEntity != null) | |||
{ | |||
//查询学生成绩数据 | |||
var list = GetList(queryJson).ToList(); | |||
foreach (DataColumn dc in dt.Columns) | |||
{ | |||
failDt.Columns.Add(dc.ColumnName, dc.DataType); | |||
} | |||
failDt.Columns.Add("导入错误", typeof(string)); | |||
dt.Columns.Add("导入错误", typeof(string)); | |||
foreach (DataRow dr in dt.Rows) | |||
{ | |||
try | |||
{ | |||
var stuno = dr["学号"].ToString().Trim(); | |||
var academicYearNo_dr = dr["学年"].ToString().Trim(); | |||
var semester_dr = dr["学期"].ToString().Trim(); | |||
var lessoninfo_dr = dr["课程名称"].ToString().Trim(); | |||
var classRoominfo_dr = dr["教室名称"].ToString().Trim(); | |||
var lessonSection_dr = dr["节次"].ToString().Trim(); | |||
//var lessonNo_dr = lessonInfoList.FirstOrDefault(x => x.LessonName == lessoninfo_dr)?.LessonNo; | |||
//var classRoomNo_dr = classRoomList.FirstOrDefault(x => x.ClassroomName == classRoominfo_dr)?.ClassroomNo; | |||
if (!string.IsNullOrEmpty(stuno)) | |||
{ | |||
num++; | |||
var item = list.Find(x => x.StuNo == stuno && x.LessonNo == LessonNo && x.ClassRoomNo == ClassRoomNo && x.LessonSection == LessonSection); | |||
if (!academicYearNo_dr.Equals(AcademicYearNo) || !semester_dr.Equals(semester_dr)) | |||
{ | |||
dr["导入错误"] = "学年学期与查询条件不匹配!"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
if (!lessoninfo_dr.Equals(lessonInfoEntity.LessonName)) | |||
{ | |||
dr["导入错误"] = "课程与查询条件课程(" + lessonInfoEntity.LessonName + ")不匹配!"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
if (!classRoominfo_dr.Equals(classRoomEntity.ClassroomName)) | |||
{ | |||
dr["导入错误"] = "教室与查询条件教室(" + classRoomEntity.ClassroomName + ")不匹配!"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
if (!lessonSection_dr.Equals(LessonSection)) | |||
{ | |||
dr["导入错误"] = "节次与查询条件节次(" + LessonSection + ")不匹配!"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
if (item == null) | |||
{ | |||
dr["导入错误"] = "课程:" + lessonInfoEntity.LessonName + "在" + LessonSection + "节次找不到学号为" + stuno + "的学生"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
var OrdinaryScore = Convert.ToDecimal(string.IsNullOrEmpty(dr["平时成绩"].ToString().Trim()) ? "0" : dr["平时成绩"].ToString().Trim()); | |||
var TermInScore = Convert.ToDecimal(string.IsNullOrEmpty(dr["期中成绩"].ToString().Trim()) ? "0" : dr["期中成绩"].ToString().Trim()); | |||
var TermEndScore = Convert.ToDecimal(string.IsNullOrEmpty(dr["期末成绩"].ToString().Trim()) ? "0" : dr["期末成绩"].ToString().Trim()); | |||
var OtherScore = Convert.ToDecimal(string.IsNullOrEmpty(dr["其他成绩"].ToString().Trim()) ? "0" : dr["其他成绩"].ToString().Trim()); | |||
if (OrdinaryScore < 0 || TermInScore < 0 || TermEndScore < 0 || OtherScore < 0) | |||
{ | |||
dr["导入错误"] = "成绩必须大于0!"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
var Score = Math.Round(Convert.ToDouble(OrdinaryScore * (stuSelectLessonListOfElectiveEntity.OrdinaryScoreScale / 100) + | |||
TermInScore * (stuSelectLessonListOfElectiveEntity.TermInScoreScale / 100) + | |||
TermEndScore * (stuSelectLessonListOfElectiveEntity.TermEndScoreScale / 100) + | |||
OtherScore * (stuSelectLessonListOfElectiveEntity.OtherScoreScale / 100)), MidpointRounding.AwayFromZero); | |||
var remark = dr["备注"].ToString().Trim(); | |||
db.ExecuteBySql($"update StuScore set OrdinaryScore={OrdinaryScore},TermInScore={TermInScore},TermEndScore={TermEndScore},OtherScore={OtherScore},Score={Score},Remark='{remark}' where ScoreId='{item.ScoreId}' "); | |||
} | |||
else | |||
{ | |||
break; | |||
} | |||
} | |||
catch (Exception e) | |||
{ | |||
dr["导入错误"] = "出现异常:" + e.Message; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
} | |||
db.Commit(); | |||
// 写入缓存如果有未导入的数据 | |||
if (failDt.Rows.Count > 0) | |||
{ | |||
string errordt = failDt.ToJson(); | |||
cache.Write<string>(cacheKey + fileGuid, errordt, CacheId.excel); | |||
} | |||
snum = (num - failDt.Rows.Count) > 0 ? num - failDt.Rows.Count : 0; | |||
} | |||
return (failDt, snum, failDt.Rows.Count); | |||
} | |||
catch (Exception ex) | |||
{ | |||
db.Rollback(); | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowServiceException(ex); | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -442,5 +442,24 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
} | |||
} | |||
#endregion | |||
public (DataTable failDt, int snum, int fnum) ExecuteImportExcelForNotPass(DataTable dt, string fileGuid, string queryJson) | |||
{ | |||
try | |||
{ | |||
return stuScoreNotPassService.ExecuteImportExcelForNotPass(dt, fileGuid, queryJson); | |||
} | |||
catch (Exception ex) | |||
{ | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowBusinessException(ex); | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -124,5 +124,14 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
void SubmitStuScore(string AcademicYearNo, string Semester, string LessonNo, string TeachClassNo, string EmpNo); | |||
#endregion | |||
/// <summary> | |||
/// 补考成绩导入 | |||
/// </summary> | |||
/// <param name="dt"></param> | |||
/// <param name="fileGuid"></param> | |||
/// <param name="queryJson"></param> | |||
/// <returns></returns> | |||
(DataTable failDt, int snum, int fnum) ExecuteImportExcelForNotPass(DataTable dt, string fileGuid, string queryJson); | |||
} | |||
} |
@@ -1,4 +1,6 @@ | |||
using Dapper; | |||
using Learun.Cache.Base; | |||
using Learun.Cache.Factory; | |||
using Learun.DataBase.Repository; | |||
using Learun.Util; | |||
using System; | |||
@@ -18,6 +20,10 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
/// </summary> | |||
public class StuScoreNotPassService : RepositoryFactory | |||
{ | |||
#region 缓存定义 | |||
private ICache cache = CacheFactory.CaChe(); | |||
private string cacheKey = "Learun_adms_excelError_"; | |||
#endregion | |||
#region 构造函数和属性 | |||
private string fieldSql; | |||
@@ -427,7 +433,7 @@ else CONVERT(varchar,a.Score) end as Score2 "); | |||
select a.* from | |||
StuScore a | |||
left join StuInfoBasic b on b.StuNo=a.StuNo | |||
where a.LessonSortNo='1' and b.AbmormityMoveMark <> '1' | |||
where a.LessonSortNo='1' and (b.AbmormityMoveMark<>'1' or len(b.AbmormityMoveMark)=0 or b.AbmormityMoveMark is null) | |||
and ( (a.Score >= 0 and a.Score<60) or a.Score=(-5) or a.Score=(-10) ) | |||
and a.StuNo not in ( | |||
select StuNo from StuScoreNotPass p where p.AcademicYearNo=a.AcademicYearNo and p.Semester=a.Semester and p.LessonNo=a.LessonNo and p.TeachClassNo=a.TeachClassNo and p.LessonSortNo=a.LessonSortNo and p.OpenLessonDeptNo=a.OpenLessonDeptNo and p.OpenLessonMajorNo=a.OpenLessonMajorNo | |||
@@ -489,7 +495,7 @@ order by bb.ScoreId"; | |||
var strSql = new StringBuilder(); | |||
strSql.Append("select distinct s.LessonNo as value,s.LessonName as text from StuScoreNotPass s "); | |||
strSql.Append(" left join LessonInfo l on s.LessonNo=l.LessonNo left join CdLessonType t on l.LessonTypeId=t.LTId "); | |||
strSql.Append(" where s.LessonSortNo='1' and t.LessonTypeCode='OpenLesson' "); | |||
strSql.Append(" where s.LessonSortNo='1' "); | |||
if (userType == "教师") | |||
{ | |||
strSql.Append(" and s.EmpNo='" + userAccount + "' "); | |||
@@ -766,6 +772,139 @@ order by bb.ScoreId"; | |||
#endregion | |||
/// <summary> | |||
/// 导入学生成绩--补考成绩 | |||
/// </summary> | |||
/// <param name="dt"></param> | |||
/// <returns></returns> | |||
public (DataTable failDt, int snum, int fnum) ExecuteImportExcelForNotPass(DataTable dt, string fileGuid, string queryJson) | |||
{ | |||
//成功记录数 | |||
int snum = 0; | |||
//总记录数 | |||
int num = 0; | |||
var db = this.BaseRepository("CollegeMIS"); | |||
var msg = ""; | |||
try | |||
{ | |||
db.BeginTrans(); | |||
// 创建一个datatable容器用于保存导入失败的数据 | |||
DataTable failDt = new DataTable(); | |||
var queryParam = queryJson.ToJObject(); | |||
var F_SchoolId = queryParam["F_SchoolId"].ToString(); | |||
var AcademicYearNo = queryParam["AcademicYearNo"].ToString(); | |||
var Semester = queryParam["Semester"].ToString(); | |||
var LessonNo = queryParam["LessonNo"].ToString(); | |||
var ClassNo = queryParam["ClassNo"].ToString(); | |||
var classInfoList = db.FindList<ClassInfoEntity>(); | |||
var lessonInfoList = db.FindList<LessonInfoEntity>(); | |||
var classInfoEntity = classInfoList.FirstOrDefault(x => x.ClassNo == ClassNo); | |||
var lessonInfoEntity = lessonInfoList.FirstOrDefault(x => x.LessonNo == LessonNo && x.CheckMark == true); | |||
if (classInfoEntity != null && lessonInfoEntity != null) | |||
{ | |||
//当前班级学生成绩 | |||
var list = GetList(queryJson).ToList(); | |||
foreach (DataColumn dc in dt.Columns) | |||
{ | |||
failDt.Columns.Add(dc.ColumnName, dc.DataType); | |||
} | |||
failDt.Columns.Add("导入错误", typeof(string)); | |||
dt.Columns.Add("导入错误", typeof(string)); | |||
foreach (DataRow dr in dt.Rows) | |||
{ | |||
try | |||
{ | |||
var stuno = dr["学号"].ToString().Trim(); | |||
var academicYearNo_dr = dr["学年"].ToString().Trim(); | |||
var semester_dr = dr["学期"].ToString().Trim(); | |||
var lessoninfo_dr = dr["课程名称"].ToString().Trim(); | |||
var classinfo_dr = dr["班级"].ToString().Trim(); | |||
if (!string.IsNullOrEmpty(stuno)) | |||
{ | |||
num++; | |||
if (!academicYearNo_dr.Equals(AcademicYearNo) || !semester_dr.Equals(Semester)) | |||
{ | |||
dr["导入错误"] = "学年学期与查询条件不符!"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
if (!classinfo_dr.Equals(classInfoEntity.ClassName)) | |||
{ | |||
dr["导入错误"] = "班级与查询条件班级(" + classInfoEntity.ClassName + ")不匹配!"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
if (!lessoninfo_dr.Equals(lessonInfoEntity.LessonName)) | |||
{ | |||
dr["导入错误"] = "课程与查询条件课程(" + lessonInfoEntity.LessonName + ")不匹配!"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
var item = list.Find(x => x.StuNo == stuno && x.LessonNo == LessonNo && x.ClassNo == ClassNo); | |||
if (item == null) | |||
{ | |||
dr["导入错误"] = "课程:" + lessonInfoEntity.LessonName + ",班级:" + classInfoEntity.ClassName + "找不到学号为" + stuno + "的学生"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
var TermEndScore = Convert.ToDecimal(string.IsNullOrEmpty(dr["期末成绩"].ToString().Trim()) ? "0" : dr["期末成绩"].ToString().Trim()); | |||
if (TermEndScore < 0) | |||
{ | |||
dr["导入错误"] = "成绩必须大于0!"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
var Score = Math.Round(TermEndScore, MidpointRounding.AwayFromZero); | |||
var remark = dr["备注"].ToString().Trim(); | |||
db.ExecuteBySql($"update StuScoreNotPass set TermEndScore={TermEndScore},Score={Score},Remark='{remark}' where ScoreId='{item.ScoreId}' "); | |||
} | |||
else | |||
{ | |||
break; | |||
} | |||
} | |||
catch (Exception e) | |||
{ | |||
dr["导入错误"] = "出现异常:" + e.Message; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
} | |||
db.Commit(); | |||
// 写入缓存如果有未导入的数据 | |||
if (failDt.Rows.Count > 0) | |||
{ | |||
string errordt = failDt.ToJson(); | |||
cache.Write<string>(cacheKey + fileGuid, errordt, CacheId.excel); | |||
} | |||
snum = (num - failDt.Rows.Count) > 0 ? num - failDt.Rows.Count : 0; | |||
} | |||
return (failDt, snum, failDt.Rows.Count); | |||
} | |||
catch (Exception ex) | |||
{ | |||
db.Rollback(); | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowServiceException(ex); | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -450,5 +450,24 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
#endregion | |||
public (DataTable failDt, int snum, int fnum) ExecuteImportExcelForNotPassTwo(DataTable dt, string fileGuid, string queryJson) | |||
{ | |||
try | |||
{ | |||
return stuScoreNotPassTwoService.ExecuteImportExcelForNotPassTwo(dt, fileGuid, queryJson); | |||
} | |||
catch (Exception ex) | |||
{ | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowBusinessException(ex); | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -127,5 +127,13 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
#endregion | |||
/// <summary> | |||
/// 补考成绩导入 | |||
/// </summary> | |||
/// <param name="dt"></param> | |||
/// <param name="fileGuid"></param> | |||
/// <param name="queryJson"></param> | |||
/// <returns></returns> | |||
(DataTable failDt, int snum, int fnum) ExecuteImportExcelForNotPassTwo(DataTable dt, string fileGuid, string queryJson); | |||
} | |||
} |
@@ -1,4 +1,6 @@ | |||
using Dapper; | |||
using Learun.Cache.Base; | |||
using Learun.Cache.Factory; | |||
using Learun.DataBase.Repository; | |||
using Learun.Util; | |||
using System; | |||
@@ -18,6 +20,10 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
/// </summary> | |||
public class StuScoreNotPassTwoService : RepositoryFactory | |||
{ | |||
#region 缓存定义 | |||
private ICache cache = CacheFactory.CaChe(); | |||
private string cacheKey = "Learun_adms_excelError_"; | |||
#endregion | |||
#region 获取数据 | |||
/// <summary> | |||
@@ -406,7 +412,7 @@ else CONVERT(varchar,a.Score) end as Score2 "); | |||
select a.* from | |||
StuScoreNotPass a | |||
left join StuInfoBasic b on b.StuNo=a.StuNo | |||
where a.LessonSortNo='1' and b.AbmormityMoveMark <> '1' | |||
where a.LessonSortNo='1' and (b.AbmormityMoveMark<>'1' or len(b.AbmormityMoveMark)=0 or b.AbmormityMoveMark is null) | |||
and ( (a.Score >= 0 and a.Score<60) or a.Score=(-5) or a.Score=(-10) ) | |||
and a.StuNo not in ( | |||
select StuNo from StuScoreNotPassTwo p where p.AcademicYearNo=a.AcademicYearNo and p.Semester=a.Semester and p.LessonNo=a.LessonNo and p.TeachClassNo=a.TeachClassNo and p.LessonSortNo=a.LessonSortNo and p.OpenLessonDeptNo=a.OpenLessonDeptNo and p.OpenLessonMajorNo=a.OpenLessonMajorNo | |||
@@ -465,7 +471,7 @@ order by bb.ScoreId"; | |||
var strSql = new StringBuilder(); | |||
strSql.Append("select distinct s.LessonNo as value,s.LessonName as text from StuScoreNotPassTwo s "); | |||
strSql.Append(" left join LessonInfo l on s.LessonNo=l.LessonNo left join CdLessonType t on l.LessonTypeId=t.LTId "); | |||
strSql.Append(" where s.LessonSortNo='1' and t.LessonTypeCode='OpenLesson' "); | |||
strSql.Append(" where s.LessonSortNo='1' "); | |||
if (userType == "教师") | |||
{ | |||
strSql.Append(" and s.EmpNo='" + userAccount + "' "); | |||
@@ -742,5 +748,140 @@ order by bb.ScoreId"; | |||
#endregion | |||
/// <summary> | |||
/// 导入学生成绩--补考成绩 | |||
/// </summary> | |||
/// <param name="dt"></param> | |||
/// <returns></returns> | |||
public (DataTable failDt, int snum, int fnum) ExecuteImportExcelForNotPassTwo(DataTable dt, string fileGuid, string queryJson) | |||
{ | |||
//成功记录数 | |||
int snum = 0; | |||
//总记录数 | |||
int num = 0; | |||
var db = this.BaseRepository("CollegeMIS"); | |||
var msg = ""; | |||
try | |||
{ | |||
db.BeginTrans(); | |||
// 创建一个datatable容器用于保存导入失败的数据 | |||
DataTable failDt = new DataTable(); | |||
var queryParam = queryJson.ToJObject(); | |||
var F_SchoolId = queryParam["F_SchoolId"].ToString(); | |||
var AcademicYearNo = queryParam["AcademicYearNo"].ToString(); | |||
var Semester = queryParam["Semester"].ToString(); | |||
var LessonNo = queryParam["LessonNo"].ToString(); | |||
var ClassNo = queryParam["ClassNo"].ToString(); | |||
var classInfoList = db.FindList<ClassInfoEntity>(); | |||
var lessonInfoList = db.FindList<LessonInfoEntity>(); | |||
var classInfoEntity = classInfoList.FirstOrDefault(x => x.ClassNo == ClassNo); | |||
var lessonInfoEntity = lessonInfoList.FirstOrDefault(x => x.LessonNo == LessonNo && x.CheckMark == true); | |||
if (classInfoEntity != null && lessonInfoEntity != null) | |||
{ | |||
//当前班级学生成绩 | |||
var list = GetList(queryJson).ToList(); | |||
foreach (DataColumn dc in dt.Columns) | |||
{ | |||
failDt.Columns.Add(dc.ColumnName, dc.DataType); | |||
} | |||
failDt.Columns.Add("导入错误", typeof(string)); | |||
dt.Columns.Add("导入错误", typeof(string)); | |||
foreach (DataRow dr in dt.Rows) | |||
{ | |||
try | |||
{ | |||
var stuno = dr["学号"].ToString().Trim(); | |||
var academicYearNo_dr = dr["学年"].ToString().Trim(); | |||
var semester_dr = dr["学期"].ToString().Trim(); | |||
var lessoninfo_dr = dr["课程名称"].ToString().Trim(); | |||
var classinfo_dr = dr["班级"].ToString().Trim(); | |||
if (!string.IsNullOrEmpty(stuno)) | |||
{ | |||
num++; | |||
if (!academicYearNo_dr.Equals(AcademicYearNo) || !semester_dr.Equals(Semester)) | |||
{ | |||
dr["导入错误"] = "学年学期与查询条件不匹配!"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
if (!classinfo_dr.Equals(classInfoEntity.ClassName)) | |||
{ | |||
dr["导入错误"] = "班级与查询条件班级(" + classInfoEntity.ClassName + ")不匹配!"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
if (!lessoninfo_dr.Equals(lessonInfoEntity.LessonName)) | |||
{ | |||
dr["导入错误"] = "课程与查询条件课程(" + lessonInfoEntity.LessonName + ")不匹配!"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
var item = list.Find(x => x.StuNo == stuno && x.LessonNo == LessonNo && x.ClassNo == ClassNo); | |||
if (item == null) | |||
{ | |||
dr["导入错误"] = "课程:" + lessonInfoEntity.LessonName + ",班级:" + classInfoEntity.ClassName + "找不到学号为" + stuno + "的学生"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
var TermEndScore = Convert.ToDecimal(string.IsNullOrEmpty(dr["期末成绩"].ToString().Trim()) ? "0" : dr["期末成绩"].ToString().Trim()); | |||
if (TermEndScore < 0) | |||
{ | |||
dr["导入错误"] = "成绩必须大于0!"; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
var Score = Math.Round(TermEndScore, MidpointRounding.AwayFromZero); | |||
var remark = dr["备注"].ToString().Trim(); | |||
db.ExecuteBySql($"update StuScoreNotPassTwo set TermEndScore={TermEndScore},Score={Score},Remark='{remark}' where ScoreId='{item.ScoreId}' "); | |||
} | |||
else | |||
{ | |||
break; | |||
} | |||
} | |||
catch (Exception e) | |||
{ | |||
dr["导入错误"] = "出现异常:" + e.Message; | |||
failDt.Rows.Add(dr.ItemArray); | |||
continue; | |||
} | |||
} | |||
db.Commit(); | |||
// 写入缓存如果有未导入的数据 | |||
if (failDt.Rows.Count > 0) | |||
{ | |||
string errordt = failDt.ToJson(); | |||
cache.Write<string>(cacheKey + fileGuid, errordt, CacheId.excel); | |||
} | |||
snum = (num - failDt.Rows.Count) > 0 ? num - failDt.Rows.Count : 0; | |||
} | |||
return (failDt, snum, failDt.Rows.Count); | |||
} | |||
catch (Exception ex) | |||
{ | |||
db.Rollback(); | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowServiceException(ex); | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -111,6 +111,11 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
dp.Add("F_EnabledMark", queryParam["F_EnabledMark"].ToString(), DbType.String); | |||
strSql.Append(" AND t.F_EnabledMark = @F_EnabledMark "); | |||
} | |||
if(!queryParam["Grade"].IsEmpty()) | |||
{ | |||
dp.Add("Grade", queryParam["Grade"].ToString(), DbType.String); | |||
strSql.Append(" AND (Grade=@Grade OR NewGrade=@Grade) "); | |||
} | |||
return this.BaseRepository("CollegeMIS").FindList<StuTransferInfoEntity>(strSql.ToString(), dp, pagination); | |||
} | |||
catch (Exception ex) | |||
@@ -4,6 +4,7 @@ using Learun.Util; | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Data; | |||
using System.Linq; | |||
using System.Text; | |||
namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
@@ -241,9 +242,10 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
var db = this.BaseRepository("CollegeMIS").BeginTrans(); | |||
try | |||
{ | |||
decimal? variate = 0; | |||
if (textbookOutList.Count > 0) | |||
var newtextInOutEntity = db.FindEntity<TextbookInOutEntity>(x => x.BookCode == entity.BookCode); | |||
if (newtextInOutEntity != null) | |||
{ | |||
decimal? variate = 0;//出库单数量之和,临时 | |||
for (int i = 0; i < textbookOutList.Count; i++) | |||
{ | |||
textbookOutList[i].InOutCode = entity.BookCode; | |||
@@ -259,30 +261,14 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
textbookOutList[i].Impression = entity.Impression; | |||
variate += textbookOutList[i].Variate; | |||
} | |||
db.Insert(textbookOutList); | |||
if (variate != 0 && variate > 0) | |||
if (variate > 0 && newtextInOutEntity.FinallyNum >= variate) | |||
{ | |||
var newtextInOutEntity = db.FindEntity<TextbookInOutEntity>(x => x.BookCode == entity.BookCode); | |||
if (newtextInOutEntity != null) | |||
{ | |||
newtextInOutEntity.FinallyNum -= variate; | |||
newtextInOutEntity.CKNum += variate; | |||
if (newtextInOutEntity.FinallyNum > 0 || newtextInOutEntity.FinallyNum == 0) | |||
{ | |||
db.Update(newtextInOutEntity); | |||
} | |||
else | |||
{ | |||
db.Rollback(); | |||
} | |||
} | |||
else | |||
{ | |||
db.Rollback(); | |||
} | |||
//写入出库单 | |||
db.Insert(textbookOutList); | |||
//更新出库 | |||
newtextInOutEntity.FinallyNum -= variate; | |||
newtextInOutEntity.CKNum += variate; | |||
db.Update(newtextInOutEntity); | |||
} | |||
} | |||
db.Commit(); | |||
@@ -85,9 +85,19 @@ namespace Learun.Application.TwoDevelopment.EducationalAdministration | |||
} | |||
if (!queryParam["TextBookName"].IsEmpty()) | |||
{ | |||
strSql.Append(" and TextBookName like @TextBookName "); | |||
strSql.Append(" and t.TextBookName like @TextBookName "); | |||
dp.Add("TextBookName", "%" + queryParam["TextBookName"].ToString() + "%", DbType.String); | |||
} | |||
if (!queryParam["TextBookNo"].IsEmpty()) | |||
{ | |||
strSql.Append(" and t.TextBookNo like @TextBookNo "); | |||
dp.Add("TextBookNo", "%" + queryParam["TextBookNo"].ToString() + "%", DbType.String); | |||
} | |||
if (!queryParam["FirstAuthor"].IsEmpty()) | |||
{ | |||
strSql.Append(" and t.FirstAuthor like @FirstAuthor "); | |||
dp.Add("FirstAuthor", "%" + queryParam["FirstAuthor"].ToString() + "%", DbType.String); | |||
} | |||
return this.BaseRepository("CollegeMIS").FindList<TextbookInOutEntity>(strSql.ToString(), dp, pagination); | |||
} | |||
catch (Exception ex) | |||
@@ -22,10 +22,10 @@ export default { | |||
// ], | |||
"apiHost": [ | |||
// "http://cyzjzx.gnway.cc:31218/"//测试地址接口 | |||
"http://219.139.155.38:8687/"//正式地址接口 | |||
"http://223.75.120.212:8002/"//正式地址接口 | |||
// "http://192.168.10.58:8012/" | |||
], | |||
"webHost":"http://cyzjzx.gnway.cc:30549/",//测试地址 | |||
// "webHost":"http://cyzjzx.gnway.cc:30549/",//测试地址 | |||
"webHost":"http://wxd3f.cyzjzx.com/",//正式地址 | |||
// "webHost":"http://192.168.10.175:8087/", | |||
// 开发环境下自动填充登录账号密码,与接口地址一一对应,只在开发环境下显示 | |||
@@ -1,9 +1,9 @@ | |||
{ | |||
"name" : "智慧校园", | |||
"appid" : "__UNI__3039520", | |||
"appid" : "__UNI__7C24C09", | |||
"description" : "智慧校园移动端", | |||
"versionName" : "2.1.0", | |||
"versionCode" : 20100, | |||
"versionName" : "2.2.0", | |||
"versionCode" : 20200, | |||
"transformPx" : false, | |||
/* 5+App特有相关 */ | |||
"app-plus" : { | |||
@@ -41,8 +41,8 @@ export default { | |||
const success = await this.HTTP_POST( | |||
'learun/adms/user/modifypw', | |||
{ | |||
newpassword: this.md5(newPwd), | |||
oldpassword: this.md5(oldPwd) | |||
newpassword: this.MD5(newPwd), | |||
oldpassword: this.MD5(oldPwd) | |||
}, | |||
'未能成功修改密码' | |||
) | |||