추가개발12/29

This commit is contained in:
김한진 2025-12-29 12:52:34 +09:00
parent eb39064d6b
commit 99103851de
17 changed files with 2919 additions and 267 deletions

View File

@ -584,6 +584,11 @@ namespace NP.BO.Controllers
vm.CMPRs = Dao.Get<CMPR>("cm.cmprs", p);
#endregion
#region + / [vm.Datas] Get: cm.cmdatas (cmno, )
vm.Datas = Dao.Get<Data>("cm.cmdatas", vm.CM.cmno);
#endregion
ViewBag.fronturl = GetConfig("fronturl");
return View("cmregeduschedule", vm);
@ -787,6 +792,11 @@ namespace NP.BO.Controllers
ViewBag.Front = GetConfig("fronturl");
return View(vm);
}
/// <summary>
/// 교육환경설정 > 강좌설정 > 시험설정 > 시험등록 > 문제추가
/// </summary>
/// <param name="vm"></param>
/// <returns></returns>
public ActionResult qp(VMCM vm)
{
vm.ComCodes = GetComCodes("ccdiff,cc1,cc2,cc3,cc4,cc5");
@ -811,6 +821,7 @@ namespace NP.BO.Controllers
if (!string.IsNullOrEmpty(vm.stringval9)) { ht.Add("ecount", GetInt(vm.stringval9)); }
if (!string.IsNullOrEmpty(vm.stringval10)) { ht.Add("rrate", GetInt(vm.stringval10)); }
if (!string.IsNullOrEmpty(vm.stringval15)) { ht.Add("instuctorName", vm.stringval15); }
if (!string.IsNullOrEmpty(vm.stringval16)) { ht.Add("scdinstuctor", vm.stringval16); }
vm.Qs = Dao.Get<Question>("cm.questions2", ht);
}
vm.Qs = vm.Qs ?? new List<Question>();
@ -889,6 +900,14 @@ namespace NP.BO.Controllers
public ActionResult cmregexset(VMCM vm) {
var p = new Hashtable();
#region + [vm.CMInnings] Get: cm.cminnings (cmno, isonline, isscd)
p.Clear();
p.Add("cmno", vm.intval);
p.Add("isonline", 0);
p.Add("isscd", 1);
vm.CMInnings = Dao.Get<CMInning>("cm.cminnings", p);
#endregion
#region + [vm.CM] Get: cm.cms (cmno)
p.Clear();
p.Add("cmno", vm.intval);
@ -910,6 +929,10 @@ namespace NP.BO.Controllers
vm.ESTs = Dao.Get<EST>("cm.exlist", p);
#endregion
//교육일정이 존재하는지 조회
var scd = Dao.Get<int>("cm.cminnigscd.exists", new Hashtable() { { "cmno", vm.CM.cmno } });
ViewBag.Scd = scd.FirstOrDefault();
return View("cmregexset", vm);
}

2513
BO/Logs/log.txt.1 Normal file

File diff suppressed because one or more lines are too long

View File

@ -11,7 +11,9 @@
@if (!ViewBag.IsSubAdmin96) {
<li class="@(Model.tabidx == 3 ? "active" : "")"><a href="#" onclick="@(Model.CM.cmno < 1 ? "gotab()":"gotab(3)");" data-toggle="tab">평가설정</a></li>
<li class="@(Model.tabidx == 5 ? "active" : "")"><a href="#" onclick="@(Model.CM.cmno < 1 ? "gotab()":"gotab(5)");" data-toggle="tab">시험설정</a></li>
if (Model.CM.ismaster == 0) {
<li class="@(Model.tabidx == 5 ? "active" : "")"><a href="#" onclick="@(Model.CM.cmno < 1 ? "gotab()":"gotab(5)");" data-toggle="tab">시험설정</a></li>
}
<li class="@(Model.tabidx == 4 ? "active" : "")"><a href="#" onclick="@(Model.CM.cmno < 1 ? "gotab()":"gotab(4)");" data-toggle="tab">메뉴설정</a></li>
}
</ul>

View File

@ -2,6 +2,7 @@
@{
int studyplaceseq = 0;
int tempInt = 0;
int index = 0;
}
<div style="@(Model.CM.cmno < 1 ? "display: none;":"")">
<ul class="pagination pagination-md" style="margin: 0;">
@ -194,7 +195,21 @@
<tr>
<th>교강사</th>
<td>
<table id="tblInstructor" class="tblInstructor" style="width: 100%;border: none !important;border-collapse: collapse !important;"></table>
<table id="tblInstructor" class="tblInstructor" style="width: 100%;border: none !important;border-collapse: collapse !important;">
<tr>
@foreach (var item in Model.Datas.Where(w => w.dtype == 1)) {
index = index + 1;
<td style="border: none !important;">
<input type="checkbox" class="chkInstructor" name="chkInstructor" id="chkInstructor@(index)" value="@item.strval3" />
<label style="margin-right: 8px;" for="chkInstructor@(index)">@item.strval</label>
</td>
if ((index) % 5 == 0) {
@:</tr><tr>
}
}
</tr>
</table>
</td>
</tr>
</table>
@ -224,8 +239,6 @@
$(".troff").show();
$(".idoff").show();
}
finduser(); //일정등록 강사 정보 가지고오기
});
function save() {
@ -456,14 +469,17 @@
$("input:radio[name=istudyplace][value=" + d.studyplace + "]").attr("checked", true);
}
//교강사 체크
if (d.instructors != null) {
var instructors = d.instructors.split(',');
$.each($(".chkInstructor"), function (i, item) {
if (instructors.includes($(item).val())) {
$(item).prop("checked", true);
$.each($(".chkInstructor"), function (i, item) {
if (d.instructors != null) {
let tc = d.instructors.split(',');
for (var i = 0; i < tc.length; i++) {
if ($(this).val() == tc[i]) {
$(this).prop("checked", true);
}
}
});
}
}
});
}
bglayer(); $("#scdbox").slideDown("fast", function () { $("#scdbox").scrollTop(0); });
@ -559,31 +575,6 @@
msg("팝업이 차단되어 있습니다. 차단을 해제해 주세요.");
}
}
}
@*/** 일정등록 시 교강사호출 **/*@
function finduser() {
capp("/acommon/userfind", {
ftype: 1, usertypes: null, asno: null, usernameid: null, asno: null, usertype: null }, "cbfinduser", null, null, true, true);
}
function cbfinduser() {
if (capResult.code == 1000) {
let html = "<tr>";
$.each($(capResult.obj), function (i, r) {
html += "<td style=\"border: none !important;\">";
html += " <input type=\"checkbox\" class=\"chkInstructor\" name=\"chkInstructor\" id=\"chkInstructor" + i + "\" value=\"" + getdb(r.userid).replace(/:/gi, '|').replace(/;/gi, '|') + "\" />";
html += " <label style=\"margin-right: 8px;\" for=\"chkInstructor" + i + "\">" + getdb(r.username).replace(/:/gi, '|').replace(/;/gi, '|') + "</label> ";
html += "</td>";
if ((i + 1) % 5 == 0) {
html += "</tr><tr>";
}
});
html += "</tr>";
$("#tblInstructor").html(html);
}
}
}
</script>
}

View File

@ -9,7 +9,9 @@
<li><a href="javascript:;" onclick="gotab(2);" data-toggle="tab">교육일정</a></li>
}
<li class="active"><a href="javascript:;" data-toggle="tab">평가설정</a></li>
<li><a href="javascript:;" data-toggle="tab" onclick="gotab(5);">시험설정</a></li>
@if (Model.CM.ismaster == 0) {
<li class="@(Model.tabidx == 5 ? "active" : "")"><a href="#" onclick="@(Model.CM.cmno < 1 ? "gotab()":"gotab(5)");" data-toggle="tab">시험설정</a></li>
}
<li><a href="javascript:;" onclick="gotab(4);" data-toggle="tab">메뉴설정</a></li>
</ul>
</div>

View File

@ -19,37 +19,40 @@
<div class="row">
<form id="mform" method="post" enctype="multipart/form-data" class="form-horizontal">
<section class="panel panel-default">
<header class="panel-heading"><strong><i class="fa fa-bars"></i> 기본정보<span class=""></span></strong></header>
<header class="panel-heading"><strong><i class="fa fa-bars"></i> 기본정보 @Model.CMInnings.FirstOrDefault().scdtype<span class=""></span></strong></header>
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 col-md-2 control-label req">평가구분</label>
<div class="col-sm-8 col-md-10">@*@Html.Partial("./Partial/Radio", "0:진행평가;1:최종평가", new ViewDataDictionary { { "special", "stringlist" }, { "name", "CMEX.extype" }, { "checked", Model.CMEX.extype } })*@</div>
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Radio", "1:최종평가", new ViewDataDictionary { { "special", "stringlist" }, { "name", "vm.CMEX.extype" }, { "checked", Model.CMEX.extype } })</div>
</div>
<div class="form-group">
<label class="col-sm-4 col-md-2 control-label req">교육일정 선택</label>
<div class="col-sm-8 col-md-10">
<select class="form-control dev" id="cmisno" name="vm.CMEX.cmisno">
<option>선택</option>
@foreach (var item in Model.CMInningscds.OrderByDescending(c => c.estart)) {
tempInt = Model.CMInningscds2.Where(c => c.cmino == item.cmino && c.cmisno == item.cmisno && c.intv1 == 2).Count();
<option value="@item.cmisno" @(item.cmisno == Model.CMEX.cmisno ? "selected" : "")>[@item.studyplacename] [@item.estart ~ @item.eend]</option>
}
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 col-md-2 control-label req">시험 응시 일시</label>
<div class="col-sm-8 col-md-10 form-inline">
@Html.Partial("./Partial/Date", string.IsNullOrEmpty(Model.stringval18) ? (DateTime?)null : Convert.ToDateTime(Model.stringval18), new ViewDataDictionary { { "name", "vm.stringval18" } })
@Html.TextBoxFor(m => m.stringval19, new { @class = "form-control text-center onlyNum2", @maxlength = "2", @style = "width:50px;", @Name="vm.stringval19" }) 시
@Html.TextBoxFor(m => m.stringval20, new { @class = "form-control text-center onlyNum2", @maxlength ="2", @style = "width:50px;", @Name = "vm.stringval20" }) 분
~
@Html.Partial("./Partial/Date", string.IsNullOrEmpty(Model.stringval21) ? (DateTime?)null : Convert.ToDateTime(Model.stringval21), new ViewDataDictionary { { "name", "vm.stringval21" } })
@Html.TextBoxFor(m => m.stringval22, new { @class = "form-control text-center onlyNum2", @maxlength = "2", @style = "width:50px;", @Name = "vm.stringval22" }) 시
@Html.TextBoxFor(m => m.stringval23, new { @class = "form-control text-center onlyNum2", @maxlength = "2", @style = "width:50px;", @Name = "vm.stringval23" }) 분
</div>
</div>
@if (Model.CMInnings.FirstOrDefault().scdtype == 0) {
<div class="form-group">
<label class="col-sm-4 col-md-2 control-label req">교육일정 선택</label>
<div class="col-sm-8 col-md-10">
<select class="form-control dev" id="cmisno" name="vm.CMEX.cmisno">
<option value="">선택</option>
@foreach (var item in Model.CMInningscds.OrderByDescending(c => c.estart)) {
tempInt = Model.CMInningscds2.Where(c => c.cmino == item.cmino && c.cmisno == item.cmisno && c.intv1 == 2).Count();
<option value="@item.cmisno" data-instructors="@(item.instructors)" @(item.cmisno == Model.CMEX.cmisno ? "selected" : "")>[@item.studyplacename] [@item.estart ~ @item.eend]</option>
}
</select>
</div>
</div>
<div class="line line-dashed line-lg pull-in"></div>
<div class="form-group">
<label class="col-sm-4 col-md-2 control-label req">시험 응시 일시</label>
<div class="col-sm-8 col-md-10 form-inline">
@Html.Partial("./Partial/Date", string.IsNullOrEmpty(Model.stringval18) ? (DateTime?)null : Convert.ToDateTime(Model.stringval18), new ViewDataDictionary { { "name", "vm.stringval18" } })
@Html.TextBoxFor(m => m.stringval19, new { @class = "form-control text-center onlyNum2", @maxlength = "2", @style = "width:50px;", @Name="vm.stringval19" }) 시
@Html.TextBoxFor(m => m.stringval20, new { @class = "form-control text-center onlyNum2", @maxlength ="2", @style = "width:50px;", @Name = "vm.stringval20" }) 분
~
@Html.Partial("./Partial/Date", string.IsNullOrEmpty(Model.stringval21) ? (DateTime?)null : Convert.ToDateTime(Model.stringval21), new ViewDataDictionary { { "name", "vm.stringval21" } })
@Html.TextBoxFor(m => m.stringval22, new { @class = "form-control text-center onlyNum2", @maxlength = "2", @style = "width:50px;", @Name = "vm.stringval22" }) 시
@Html.TextBoxFor(m => m.stringval23, new { @class = "form-control text-center onlyNum2", @maxlength = "2", @style = "width:50px;", @Name = "vm.stringval23" }) 분
</div>
</div>
}
<div class="line line-dashed line-lg pull-in"></div><div class="form-group">
<label class="col-sm-4 col-md-2 control-label req">평가명</label>
<div class="col-sm-8 col-md-10">@Html.TextBoxFor(m => m.CMEX.exname, new { @class = "form-control", @maxlength = "100", @Name = "vm.CMEX.exname" })</div>
@ -64,15 +67,15 @@
</div>
<div class="line line-dashed line-lg pull-in"></div><div class="form-group">
<label class="col-sm-4 col-md-2 control-label req">출석률</label>
<div class="col-sm-8 col-md-10">@Html.TextBoxFor(m => m.CMEX.econdition, new { @class = "form-control disp-init int nocomma text-center", @maxlength = "3", @style = "width: 80px;", @Name = "vm.CMEX.econdition" }) % 이상</div>
<div class="col-sm-8 col-md-10">@Html.TextBoxFor(m => m.CMEX.econdition, new { @Value = (Model.CMEX.econdition == 0 ? 90 : Model.CMEX.econdition), @class = "form-control disp-init int nocomma text-center", @maxlength = "3", @style = "width: 80px;", @Name = "vm.CMEX.econdition" }) % 이상</div>
</div>
<div class="line line-dashed line-lg pull-in"></div><div class="form-group">
<label class="col-sm-4 col-md-2 control-label req">제한시간</label>
<div class="col-sm-8 col-md-10">@Html.TextBoxFor(m => m.CMEX.etime, new { @class = "form-control text-center disp-init int nocomma", @style = "width: 80px;", @Name = "vm.CMEX.etime" })분 * 0분 입력 시 시간제한 없음</div>
<div class="col-sm-8 col-md-10">@Html.TextBoxFor(m => m.CMEX.etime, new { @Value = (Model.CMEX.etime == 0 ? 60 : Model.CMEX.etime), @class = "form-control text-center disp-init int nocomma", @style = "width: 80px;", @Name = "vm.CMEX.etime" })분 * 0분 입력 시 시간제한 없음</div>
</div>
<div class="line line-dashed line-lg pull-in @(Model.examsavable)"></div><div class="form-group @(Model.examsavable)">
<label class="col-sm-4 col-md-2 control-label">문항출력설정</label>
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "special", "FromTo" }, { "name", "vm.CMEX.evtype" }, { "selected", Model.CMEX.evtype }, { "start", 1 }, { "end", 10 }, { "textadd", "개" }, { "df", "0:전체" }, { "disabled", Model.examsavable } }) 출력</div>
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Select", null, new ViewDataDictionary { { "special", "FromTo" }, { "name", "vm.CMEX.evtype" }, { "selected", (Model.CMEX.evtype == 0 ? 10 : Model.CMEX.evtype) }, { "start", 1 }, { "end", 10 }, { "textadd", "개" }, { "df", "0:전체" }, { "disabled", Model.examsavable } }) 출력</div>
</div>
<div class="line line-dashed line-lg pull-in @(Model.examsavable)"></div><div class="form-group @(Model.examsavable)">
<label class="col-sm-4 col-md-2 control-label">출제방식설정</label>
@ -460,11 +463,46 @@
}
});
}
if (check("CMEX_exname", "", "시험명칭을 입력하세요.")) { }
else if ($("#vm_CMEX_eqtype0").prop("checked") && $("#box1 tbody tr").length < 1) { msg("출제할 문제를 추가해주세요."); }
else if ($("#vm_CMEX_eqtype1").prop("checked") && _layerqcount < 1) { msg("출제문항수를 입력해주세요."); }
else if (getDouble(val("CMEX_econdition")) > 100 || getDouble(val("CMEX_econdition")) < 0) { msg("출석률은 0 ~ 100 사이의 값을 입력해주세요."); }
else if (_isvalid && confirm("시험을 " + (getint(val("CMEX_exno")) < 1 ? "등록" : "수정") + "하시겠습니까?")) {
if (check("CMEX_exname", "", "시험명칭을 입력하세요.")) { return; }
@if (Model.CMInnings.FirstOrDefault().scdtype == 0) {
<text>
if ($("#cmisno").val() == "") {
msg("교육일정을 선택해주세요.")
return;
}
if ($("#vm_stringval18").val() == "") {
msg("시험 응시 일시 시작 날짜를 입력해주세요.")
return;
}
if ($("#stringval19").val() == "") {
msg("시험 응시 일시 시작 시간을 입력해주세요.")
return;
}
if ($("#stringval20").val() == "") {
msg("시험 응시 일시 시작 분을 입력해주세요.")
return;
}
if ($("#vm_stringval21").val() == "") {
msg("시험 응시 일시 종료 날짜를 입력해주세요.")
return;
}
if ($("#stringval22").val() == "") {
msg("시험 응시 일시 종료 시간을 입력해주세요.")
return;
}
if ($("#stringval23").val() == "") {
msg("시험 응시 일시 시작 분을 입력해주세요.")
return;
}
</text>
}
if ($("#vm_CMEX_eqtype0").prop("checked") && $("#box1 tbody tr").length < 1) { msg("출제할 문제를 추가해주세요."); return; }
if ($("#vm_CMEX_eqtype1").prop("checked") && _layerqcount < 1) { msg("출제문항수를 입력해주세요."); return; }
if (getDouble(val("CMEX_econdition")) > 100 || getDouble(val("CMEX_econdition")) < 0) { msg("출석률은 0 ~ 100 사이의 값을 입력해주세요."); return; }
if (_isvalid && confirm("시험을 " + (getint(val("CMEX_exno")) < 1 ? "등록" : "수정") + "하시겠습니까?")) {
$("#CMEX_israndq").val($("#chkrq").prop("checked") ? 1 : 0);
$("#CMEX_israndqi").val($("#chkrqi").prop("checked") ? 1 : 0);
var sd = "";
@ -486,7 +524,21 @@
}
var pqlist = "";
function qadd() {
framelayer("/cm/qp?stringval13=R");
var instructors = "";
@if (Model.CMInnings.FirstOrDefault().scdtype == 0) {
<text>
if ($("#cmisno").val() == "") {
msg("교육일정을 선택해주세요.")
return;
}
var selected = $("#cmisno").find("option:selected");
instructors = selected.data("instructors");
</text>
}
framelayer("/cm/qp?stringval13=R&stringval16=" + instructors);
}
function calcplist() {
pqlist = "";
@ -530,6 +582,7 @@
$("#intval").val(capResult.obj);
}
setv("IsSavedForParent", 1);
goparent(val('IsSavedForParent') == '1');
//timesubmit();
}
else if (capResult.obj == -1) {

View File

@ -1,4 +1,10 @@
@model NP.Model.VMCM
@{
int esTsCnt = 0;
if (Model.ESTs != null) {
esTsCnt = Model.ESTs.Count;
}
}
<!-- div[id=container] -->
<div style="@(Model.CM.cmno < 1 ? "display: none;" : "")">
<ul class="pagination pagination-md" style="margin: 0;">
@ -15,6 +21,8 @@
<!-- // div[id=container] -->
<!-- form[id=mform] -->
<form id="mform" method="post" class="form-horizontal">
<input type="hidden" id="hdnScdCnt" value="@ViewBag.Scd" />
<input type="hidden" id="hdnExCnt" value="@esTsCnt" />
<!-- section[class=panel panel-default] -->
<section class="panel panel-default" style="border-top: 1px solid #ddd; margin-top: 5px;">
<div class="panel-body">
@ -79,17 +87,17 @@
<!--<td>@item.estkindname</td>-->
<td class="link"><a href="javascript:;" onclick="add(@item.gubun, @item.exno)">@item.exname</a></td>
<td>
@if(item.cshape == 1) { //오프라인
@(item.estart + "~" + item.eend)
} else { //온라인
@(item.estart)
}
</td>
@if (item.cshape == 1) { //오프라인
@(item.estart + "~" + item.eend)
} else { //온라인
@(item.estart)
}
</td>
<td>
@if (item.testsdate != null && item.testedate != null) {
@(Html.Raw(item.testsdate + " ~ <br/>" + item.testedate))
}
</td>
@if (item.testsdate != null && item.testedate != null) {
@(Html.Raw(item.testsdate + " ~ <br/>" + item.testedate))
}
</td>
<td>
@if (item.rstype == 1) {
@(item.iseq + "회차" + " (" + item.teachername + ")")
@ -254,7 +262,7 @@
$("#isoffabs").attr("disabled", _isonline);
if (capResult.code == 1000) {
msg("평가기준/비율을 저장했습니다.", null, true, null, true);
gotab(3, 500);
gotab(5, 500);
} else {
msgadmin();
}
@ -266,7 +274,19 @@
}
@*/* 평가 추가 함수 */*@
function add(idx, no) {
function add(idx, no)
{
if ($("#hdnScdCnt").val() == 0) {
msg("교육일정 탭에서 교육회차를 먼저 등록해주세요.");
return;
}
var inningcnt = @Model.CMInnings.Count; //온라인대체
if (no == 0 && inningcnt > 0 && parseInt($("#hdnExCnt").val()) > 0) {
msg2("온라인 100%인 교육은 1개의 최종평가만 등록 가능합니다.");
return;
}
if (idx == 0) {
showramemainlayer("/cm/cmregex?cmno=@(Model.CM.cmno)&intval=" + no);
} else if (idx == 1) {
@ -287,7 +307,7 @@
function cbdel() {
if (capResult.code == 1000) {
msg("삭제했습니다.", null, true, null, true);
gotab(3, 500);
gotab(5, 500);
} else {
msg("수강데이터가 생성되어 삭제할 수 없습니다.");
}
@ -301,6 +321,7 @@
function examList() {
if (capResult.code == 1000) {
let html = "";
let num = 0;
$.each($(capResult.obj), function (i, item) {
let cShape = "", rsType = "", testDate = "", estKind = "";
@ -334,9 +355,12 @@
html += " <td>" + rsType + "</td>";
html += " <td>" + estKind +"</td>"
html += " <td><a href=\"javascript:;\" class=\"delete-link\" onclick=\"del(" + item.estkind + ", " + item.exno + ")\">[삭제]</a></td>";
html += "</tr>";
html += "</tr>";
num += i + 1;
});
$("#hdnExCnt").val(num);
$("#tbody1").html(html);
}
}

View File

@ -10,7 +10,9 @@
<li class=""><a href="#" onclick="gotab(2);" data-toggle="tab">교육일정</a></li>
}
<li class=""><a href="#" onclick="gotab(3);" data-toggle="tab">평가설정</a></li>
<li class=""><a href="#" onclick="gotab(5);" data-toggle="tab">시험설정</a></li>
@if (Model.CM.ismaster == 0) {
<li class="@(Model.tabidx == 5 ? "active" : "")"><a href="#" onclick="@(Model.CM.cmno < 1 ? "gotab()":"gotab(5)");" data-toggle="tab">시험설정</a></li>
}
<li class="active"><a href="#" data-toggle="tab">메뉴설정</a></li>
</ul>
</div>

View File

@ -31,7 +31,7 @@
<label class="col-sm-4 col-md-2 control-label">과정</label>
<div class="col-sm-8 col-md-10">@Html.Partial("./Partial/Select", Model.CMs, new ViewDataDictionary { { "special", "reg" }, { "name", "Question.cmno" }, { "selected", Model.Question.cmno }, { "df", ":-과정선택" } })</div>
</div>
<div class="line line-dashed line-lg pull-in"></div>
<div class="form-group">
<label class="col-sm-4 col-md-2 control-label">교강사</label>
<div class="col-sm-8 col-md-10">

View File

@ -386,38 +386,42 @@
<select id="cm.cmdatas" parameterClass="int" resultClass="data">
select a.dtype,a.intval,a.intval2,a.intval3
,a.strval,a.strval2
,a.strval,a.strval2,a.strval3
from(
select 1 dtype
,a.userno intval,b.usertype intval2
,row_number() over (order by b.username desc) intval3
,b.username strval,null strval2
from cmprof a
inner join users b on b.userno=a.userno
where a.cmno=#cmno#
order by b.username desc
select 1 dtype
,a.userno intval,b.usertype intval2
,row_number() over (order by b.username desc) intval3
,b.username strval,null strval2
,b.userid strval3
from cmprof a
inner join users b on b.userno=a.userno
where a.cmno=#cmno#
order by b.username desc
) a
union all
select 2
,b.bkno,0
,row_number() over (order by b.bkno) intval3
,b.bkname,null
,b.bkno,0
,row_number() over (order by b.bkno) intval3
,b.bkname,null
,null strval3
from cmbook a
inner join book b on b.bkno=a.bkno
where a.cmno=#cmno#
union all
select 3 dtype
,b.cmno,a.ispre
,row_number() over (order by b.cmno) intval3
,b.cname,null
,b.cmno,a.ispre
,row_number() over (order by b.cmno) intval3
,b.cname,null
, null strval3
from cmrelay a
inner join cm b on b.cmno=a.rcmno
where a.cmno=#cmno#
union all
select 4
,b.ndno,0
,row_number() over (order by b.ndno) intval3
,b.dname,b.acode
,b.ndno,0
,row_number() over (order by b.ndno) intval3
,b.dname,b.acode
,null strval3
from cmncsd a
inner join ncsd b on b.ndno=a.ndno
where a.cmno=#cmno#
@ -834,6 +838,9 @@
<update id="cm.cmex.savetop" parameterClass="cmex">
UPDATE cmex SET <include refid="sql.up"></include>,exname=#exname#,edesc=#edesc#,econdition=#econdition#,isblur=#isblur#,isusebackup=#isusebackup#
,isseq=#isseq#,isreexamable=#isreexamable#,isresultopen=#isresultopen#,etime=#etime#
,cmisno = #cmisno#
,testsdate = #testsdate#
,testedate = #testedate#
where exno=#exno#
</update>
<select id="cm.cmex.extype1count" parameterClass="hashtable" resultClass="int">
@ -843,8 +850,8 @@
</select>
<insert id="cm.cmex.in" parameterClass="cmex">
INSERT INTO cmex
(cmno,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isreexamable,isresultopen,isdel,<include refid="sql.inc"></include>)
values (#cmno#,#extype#,#exname#,#edesc#,#etime#,#econdition#,#evtype#,#eqtype#,#israndq#,#israndqi#,#qcount#,#isblur#,#tpoint#,#relaylimit#,#isusebackup#,#isseq#,#isreexamable#,#isresultopen#,0,<include refid="sql.inv"></include>)
(cmno,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isreexamable,isresultopen,isdel,cmisno,testsdate,testedate,<include refid="sql.inc"></include>)
values (#cmno#,#extype#,#exname#,#edesc#,#etime#,#econdition#,#evtype#,#eqtype#,#israndq#,#israndqi#,#qcount#,#isblur#,#tpoint#,#relaylimit#,#isusebackup#,#isseq#,#isreexamable#,#isresultopen#,0,#cmisno#,#testsdate#,#testedate#,<include refid="sql.inv"></include>)
<selectKey type="post" property="exno" resultClass="int">SELECT LAST_INSERT_ID()</selectKey>
</insert>
<update id="cm.cmex.up" parameterClass="cmex">
@ -928,14 +935,14 @@
,sum(case when ued.atext is not null then 1 else 0 end) ecount
,case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
,a.instructors
,u.usertype
,u.username AS instructors_name
,a.usertype
,a.instructors_name
from (
select a.*,b.cname
from (
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5, a.cdt,a.udt
,a.ispassspace,a.isignorecase,a.instructors
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
select a.*,b.cname
from (
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5, a.cdt,a.udt
,a.ispassspace,a.isignorecase,a.instructors, u.usertype, u.username as instructors_name
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
,<include refid="sql.prc"></include>
from question a
left outer join comcode cc on cc.ccode = a.qdiff
@ -944,6 +951,7 @@
left outer join comcode cc3 on cc3.ccode = a.cc3
left outer join comcode cc4 on cc4.ccode = a.cc4
left outer join comcode cc5 on cc5.ccode = a.cc5
left outer join users u on u.userid = a.instructors
<dynamic prepend="where">
<isNotNull property="cmno" prepend="and">a.cmno=#cmno#</isNotNull>
<isNotNull property="qdiff" prepend="and">a.qdiff=#qdiff#</isNotNull>
@ -956,7 +964,7 @@
<isNotNull property="isuse" prepend="and">a.isuse=#isuse#</isNotNull>
<isNotNull property="qtextstring" prepend="and">a.qtextstring like concat('%', #searchtext#,'%')</isNotNull>
<isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull>
<isNotNull property="instructors" prepend="and">a.instructors like concat('%', #instructors#, '%')</isNotNull>
<isNotNull property="instructors" prepend="and">u.username like concat('%', #instructors#, '%')</isNotNull>
</dynamic>
) a
left outer join cm b on b.cmno=a.cmno
@ -964,9 +972,8 @@
) a
left outer join cmexq eq on eq.qno=a.qno
left outer join lectexq ued on ued.eqno=eq.eqno
<!--LEFT OUTER JOIN users u ON FIND_IN_SET(u.userid, a.instructors) > 0-->
left outer join users u on u.userid = a.instructors
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.ispassspace,a.isignorecase,a.instructors
<!--LEFT OUTER JOIN users u ON FIND_IN_SET(u.userid, a.instructors) > 0//-->
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.ispassspace,a.isignorecase,a.instructors,a.usertype,a.instructors_name
order by a.RNO
</select>
<select id="cm.questions2" parameterClass="hashtable" resultClass="question">
@ -976,12 +983,12 @@
,sum(case when ued.atext is not null then 1 else 0 end) ecount
,case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
,a.instructors
,u.usertype
,u.username AS instructors_name
,a.usertype
,a.instructors_name
from (
select a.*
from (
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.cdt,a.udt,a.instructors
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.cdt,a.udt,a.instructors,u.usertype,u.username as instructors_name
,b.cname
, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
@ -994,6 +1001,7 @@
left outer join comcode cc3 on cc3.ccode = a.cc3
left outer join comcode cc4 on cc4.ccode = a.cc4
left outer join comcode cc5 on cc5.ccode = a.cc5
left outer join users u on u.userid = a.instructors
<dynamic prepend="where">
<isNotNull property="cmno" prepend="and">a.cmno=#cmno#</isNotNull>
<isNotNull property="qdiff" prepend="and">a.qdiff=#qdiff#</isNotNull>
@ -1009,20 +1017,20 @@
<isEqual property="searchtype" compareValue="qno" prepend="and">a.qno = #searchtext#</isEqual>
</isNotNull>
<isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull>
</dynamic>
<isNotNull property="instuctorName" prepend="and">u.username like concat('%', #instuctorName#, '%')</isNotNull>
<isNotNull property="scdinstuctor" prepend="and">FIND_IN_SET(u.userid, #scdinstuctor#) > 0</isNotNull>
</dynamic>
) a
<include refid="sql.pagedynamic"></include>
) a
left outer join cmexq eq on eq.qno=a.qno
left outer join lectexq ued on ued.eqno=eq.eqno
left outer join users u on u.userid = a.instructors
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt,a.instructors
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt,a.instructors,a.usertype,a.instructors_name
<dynamic prepend="having">
<isNotNull property="qcount" prepend="and">count(ued.examno)=#qcount#</isNotNull>
<isNotNull property="ecount" prepend="and">sum(case when ued.atext is not null then 1 else 0 end)=#ecount#</isNotNull>
<isNotNull property="rrate" prepend="and">case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end=#rrate#</isNotNull>
<isNotNull property="instuctorName" prepend="and">u.username like concat('%', #instuctorName#, '%')</isNotNull>
</dynamic>
order by a.rno
</select>
@ -1458,8 +1466,8 @@
drop temporary table if exists temp_cminning_mapping;
</update>
<insert id="cm.cmcopy.ex0" parameterClass="cmex">
insert into cmex (cmno,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isresultopen,isreexamable,isdel,<include refid="sql.inc"></include>)
select #cmno#,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isresultopen,isreexamable,0,<include refid="sql.inv"></include>
insert into cmex (cmno,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isresultopen,isreexamable,isdel,cmisno,testsdate,testedate,<include refid="sql.inc"></include>)
select #cmno#,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isresultopen,isreexamable,0,cmisno,testsdate,testedate,<include refid="sql.inv"></include>
from cmex a
where a.exno=#orgexno#;
<selectKey type="post" property="exno" resultClass="int">SELECT LAST_INSERT_ID()</selectKey>
@ -1938,13 +1946,14 @@
,a.isselected
<!--,case when a.remainPeople &lt;= 0 then 0 else 1 end isend-->
, 1 isend
,a.instructors
from
(
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth
,(a.quota - (select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status in (1,2) and z.ischanged=0)) remainPeople
,a.studyplace,case when c.scdtype =1 then '온라인' else e.cname end studyplacename
,case when date_format(d.setime,'%Y%m%d') = date_format(a.estart,'%Y%m%d') then 1 else 0 end isselected
,a.comment
,a.comment,a.instructors
from cminningscd a
left outer join cminning c on c.cmino = a.cmino
left outer join cm d on d.cmno = c.cmno
@ -2293,8 +2302,8 @@
,null as iseq,null as teachername
,b.cshape
,c.cmisno
,c.estart
,c.eend
,DATE_FORMAT(c.estart, '%Y-%m-%d') AS estart
,DATE_FORMAT(c.eend, '%Y-%m-%d') AS eend
,c.instructors
from cmex a
left join cm b ON b.cmno = a.cmno
@ -2302,7 +2311,7 @@
where a.cmno=#cmno# and a.isdel=0
<isNotNull property="estart" prepend="and">c.estart &gt;= concat(#estart#, ' 00:00:00')</isNotNull>
<isNotNull property="eend" prepend="and">c.eend &lt;= concat(#eend#, ' 23:59:59')</isNotNull>
<isNotNull property="instructors" prepend="and">c.instructors like concat('%',#instructors#,'%')</isNotNull>
<isNotNull property="instructors" prepend="and">FIND_IN_SET((SELECT userid FROM users WHERE username = #instructors#), c.instructors) > 0</isNotNull>
</select>
<select id="cm.est2" parameterClass="int" resultClass="est">

Binary file not shown.

Binary file not shown.

View File

@ -1104,6 +1104,15 @@ namespace NP.Base.Controllers
//if (vm.CMEX.extype == 1 && Dao.Get<int>("cm.cmex.extype1count", new Hashtable() { { "cmno", vm.CMEX.cmno }, { "exno", vm.CMEX.exno } }).First() > 0) {
// return JsonBack(new JsonRtn() { code = 1, obj = -1 });
//}
//2025-12-24 / KHJ / 시험응시 시작일/종료일 모델 바인딩
if (!string.IsNullOrEmpty(vm.stringval18)) {
vm.CMEX.testsdate = vm.stringval18 + " " + vm.stringval19 + ":" + vm.stringval20;
}
if (!string.IsNullOrEmpty(vm.stringval21)) {
vm.CMEX.testedate = vm.stringval21 + " " + vm.stringval22 + ":" + vm.stringval23;
}
if (vm.CMEX.exno > 0 && ExamSaveValid(vm.CMEX.exno) != "") {
//응시자데이터 존재하므로 일부데이터만 저장
return JsonOK(Dao.Save("cm.cmex.savetop", vm.CMEX), false);
@ -1142,9 +1151,6 @@ namespace NP.Base.Controllers
vm.CMEX.qcount = vm.CMEX.cmexqs.Count();
}
}
//2025-12-24 / KHJ / 시험응시 시작일/종료일 모델 바인딩
vm.CMEX.testsdate = vm.stringval18 + " " + vm.stringval19 + ":" + vm.stringval20;
vm.CMEX.testedate = vm.stringval21 + " " + vm.stringval22 + ":" + vm.stringval23;
return JsonOK(Dao.SaveExam(vm.CMEX), false);
}

View File

@ -386,38 +386,42 @@
<select id="cm.cmdatas" parameterClass="int" resultClass="data">
select a.dtype,a.intval,a.intval2,a.intval3
,a.strval,a.strval2
,a.strval,a.strval2,a.strval3
from(
select 1 dtype
,a.userno intval,b.usertype intval2
,row_number() over (order by b.username desc) intval3
,b.username strval,null strval2
from cmprof a
inner join users b on b.userno=a.userno
where a.cmno=#cmno#
order by b.username desc
select 1 dtype
,a.userno intval,b.usertype intval2
,row_number() over (order by b.username desc) intval3
,b.username strval,null strval2
,b.userid strval3
from cmprof a
inner join users b on b.userno=a.userno
where a.cmno=#cmno#
order by b.username desc
) a
union all
select 2
,b.bkno,0
,row_number() over (order by b.bkno) intval3
,b.bkname,null
,b.bkno,0
,row_number() over (order by b.bkno) intval3
,b.bkname,null
,null strval3
from cmbook a
inner join book b on b.bkno=a.bkno
where a.cmno=#cmno#
union all
select 3 dtype
,b.cmno,a.ispre
,row_number() over (order by b.cmno) intval3
,b.cname,null
,b.cmno,a.ispre
,row_number() over (order by b.cmno) intval3
,b.cname,null
, null strval3
from cmrelay a
inner join cm b on b.cmno=a.rcmno
where a.cmno=#cmno#
union all
select 4
,b.ndno,0
,row_number() over (order by b.ndno) intval3
,b.dname,b.acode
,b.ndno,0
,row_number() over (order by b.ndno) intval3
,b.dname,b.acode
,null strval3
from cmncsd a
inner join ncsd b on b.ndno=a.ndno
where a.cmno=#cmno#
@ -834,6 +838,9 @@
<update id="cm.cmex.savetop" parameterClass="cmex">
UPDATE cmex SET <include refid="sql.up"></include>,exname=#exname#,edesc=#edesc#,econdition=#econdition#,isblur=#isblur#,isusebackup=#isusebackup#
,isseq=#isseq#,isreexamable=#isreexamable#,isresultopen=#isresultopen#,etime=#etime#
,cmisno = #cmisno#
,testsdate = #testsdate#
,testedate = #testedate#
where exno=#exno#
</update>
<select id="cm.cmex.extype1count" parameterClass="hashtable" resultClass="int">
@ -843,8 +850,8 @@
</select>
<insert id="cm.cmex.in" parameterClass="cmex">
INSERT INTO cmex
(cmno,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isreexamable,isresultopen,isdel,<include refid="sql.inc"></include>)
values (#cmno#,#extype#,#exname#,#edesc#,#etime#,#econdition#,#evtype#,#eqtype#,#israndq#,#israndqi#,#qcount#,#isblur#,#tpoint#,#relaylimit#,#isusebackup#,#isseq#,#isreexamable#,#isresultopen#,0,<include refid="sql.inv"></include>)
(cmno,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isreexamable,isresultopen,isdel,cmisno,testsdate,testedate,<include refid="sql.inc"></include>)
values (#cmno#,#extype#,#exname#,#edesc#,#etime#,#econdition#,#evtype#,#eqtype#,#israndq#,#israndqi#,#qcount#,#isblur#,#tpoint#,#relaylimit#,#isusebackup#,#isseq#,#isreexamable#,#isresultopen#,0,#cmisno#,#testsdate#,#testedate#,<include refid="sql.inv"></include>)
<selectKey type="post" property="exno" resultClass="int">SELECT LAST_INSERT_ID()</selectKey>
</insert>
<update id="cm.cmex.up" parameterClass="cmex">
@ -928,14 +935,14 @@
,sum(case when ued.atext is not null then 1 else 0 end) ecount
,case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
,a.instructors
,u.usertype
,u.username AS instructors_name
,a.usertype
,a.instructors_name
from (
select a.*,b.cname
from (
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5, a.cdt,a.udt
,a.ispassspace,a.isignorecase,a.instructors
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
select a.*,b.cname
from (
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5, a.cdt,a.udt
,a.ispassspace,a.isignorecase,a.instructors, u.usertype, u.username as instructors_name
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
,<include refid="sql.prc"></include>
from question a
left outer join comcode cc on cc.ccode = a.qdiff
@ -944,6 +951,7 @@
left outer join comcode cc3 on cc3.ccode = a.cc3
left outer join comcode cc4 on cc4.ccode = a.cc4
left outer join comcode cc5 on cc5.ccode = a.cc5
left outer join users u on u.userid = a.instructors
<dynamic prepend="where">
<isNotNull property="cmno" prepend="and">a.cmno=#cmno#</isNotNull>
<isNotNull property="qdiff" prepend="and">a.qdiff=#qdiff#</isNotNull>
@ -956,7 +964,7 @@
<isNotNull property="isuse" prepend="and">a.isuse=#isuse#</isNotNull>
<isNotNull property="qtextstring" prepend="and">a.qtextstring like concat('%', #searchtext#,'%')</isNotNull>
<isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull>
<isNotNull property="instructors" prepend="and">a.instructors like concat('%', #instructors#, '%')</isNotNull>
<isNotNull property="instructors" prepend="and">u.username like concat('%', #instructors#, '%')</isNotNull>
</dynamic>
) a
left outer join cm b on b.cmno=a.cmno
@ -964,9 +972,8 @@
) a
left outer join cmexq eq on eq.qno=a.qno
left outer join lectexq ued on ued.eqno=eq.eqno
<!--LEFT OUTER JOIN users u ON FIND_IN_SET(u.userid, a.instructors) > 0-->
left outer join users u on u.userid = a.instructors
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.ispassspace,a.isignorecase,a.instructors
<!--LEFT OUTER JOIN users u ON FIND_IN_SET(u.userid, a.instructors) > 0//-->
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.ispassspace,a.isignorecase,a.instructors,a.usertype,a.instructors_name
order by a.RNO
</select>
<select id="cm.questions2" parameterClass="hashtable" resultClass="question">
@ -976,12 +983,12 @@
,sum(case when ued.atext is not null then 1 else 0 end) ecount
,case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
,a.instructors
,u.usertype
,u.username AS instructors_name
,a.usertype
,a.instructors_name
from (
select a.*
from (
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.cdt,a.udt,a.instructors
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.cdt,a.udt,a.instructors,u.usertype,u.username as instructors_name
,b.cname
, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
@ -994,6 +1001,7 @@
left outer join comcode cc3 on cc3.ccode = a.cc3
left outer join comcode cc4 on cc4.ccode = a.cc4
left outer join comcode cc5 on cc5.ccode = a.cc5
left outer join users u on u.userid = a.instructors
<dynamic prepend="where">
<isNotNull property="cmno" prepend="and">a.cmno=#cmno#</isNotNull>
<isNotNull property="qdiff" prepend="and">a.qdiff=#qdiff#</isNotNull>
@ -1009,20 +1017,20 @@
<isEqual property="searchtype" compareValue="qno" prepend="and">a.qno = #searchtext#</isEqual>
</isNotNull>
<isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull>
</dynamic>
<isNotNull property="instuctorName" prepend="and">u.username like concat('%', #instuctorName#, '%')</isNotNull>
<isNotNull property="scdinstuctor" prepend="and">FIND_IN_SET(u.userid, #scdinstuctor#) > 0</isNotNull>
</dynamic>
) a
<include refid="sql.pagedynamic"></include>
) a
left outer join cmexq eq on eq.qno=a.qno
left outer join lectexq ued on ued.eqno=eq.eqno
left outer join users u on u.userid = a.instructors
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt,a.instructors
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt,a.instructors,a.usertype,a.instructors_name
<dynamic prepend="having">
<isNotNull property="qcount" prepend="and">count(ued.examno)=#qcount#</isNotNull>
<isNotNull property="ecount" prepend="and">sum(case when ued.atext is not null then 1 else 0 end)=#ecount#</isNotNull>
<isNotNull property="rrate" prepend="and">case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end=#rrate#</isNotNull>
<isNotNull property="instuctorName" prepend="and">u.username like concat('%', #instuctorName#, '%')</isNotNull>
</dynamic>
order by a.rno
</select>
@ -1458,8 +1466,8 @@
drop temporary table if exists temp_cminning_mapping;
</update>
<insert id="cm.cmcopy.ex0" parameterClass="cmex">
insert into cmex (cmno,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isresultopen,isreexamable,isdel,<include refid="sql.inc"></include>)
select #cmno#,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isresultopen,isreexamable,0,<include refid="sql.inv"></include>
insert into cmex (cmno,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isresultopen,isreexamable,isdel,cmisno,testsdate,testedate,<include refid="sql.inc"></include>)
select #cmno#,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isresultopen,isreexamable,0,cmisno,testsdate,testedate,<include refid="sql.inv"></include>
from cmex a
where a.exno=#orgexno#;
<selectKey type="post" property="exno" resultClass="int">SELECT LAST_INSERT_ID()</selectKey>
@ -1938,13 +1946,14 @@
,a.isselected
<!--,case when a.remainPeople &lt;= 0 then 0 else 1 end isend-->
, 1 isend
,a.instructors
from
(
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth
,(a.quota - (select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status in (1,2) and z.ischanged=0)) remainPeople
,a.studyplace,case when c.scdtype =1 then '온라인' else e.cname end studyplacename
,case when date_format(d.setime,'%Y%m%d') = date_format(a.estart,'%Y%m%d') then 1 else 0 end isselected
,a.comment
,a.comment,a.instructors
from cminningscd a
left outer join cminning c on c.cmino = a.cmino
left outer join cm d on d.cmno = c.cmno
@ -2292,8 +2301,8 @@
,null as iseq,null as teachername
,b.cshape
,c.cmisno
,c.estart
,c.eend
,DATE_FORMAT(c.estart, '%Y-%m-%d') AS estart
,DATE_FORMAT(c.eend, '%Y-%m-%d') AS eend
,c.instructors
from cmex a
left join cm b ON b.cmno = a.cmno
@ -2301,7 +2310,7 @@
where a.cmno=#cmno# and a.isdel=0
<isNotNull property="estart" prepend="and">c.estart &gt;= concat(#estart#, ' 00:00:00')</isNotNull>
<isNotNull property="eend" prepend="and">c.eend &lt;= concat(#eend#, ' 23:59:59')</isNotNull>
<isNotNull property="instructors" prepend="and">c.instructors like concat('%',#instructors#,'%')</isNotNull>
<isNotNull property="instructors" prepend="and">FIND_IN_SET((SELECT userid FROM users WHERE username = #instructors#), c.instructors) > 0</isNotNull>
</select>
<select id="cm.est2" parameterClass="int" resultClass="est">

View File

@ -386,38 +386,42 @@
<select id="cm.cmdatas" parameterClass="int" resultClass="data">
select a.dtype,a.intval,a.intval2,a.intval3
,a.strval,a.strval2
,a.strval,a.strval2,a.strval3
from(
select 1 dtype
,a.userno intval,b.usertype intval2
,row_number() over (order by b.username desc) intval3
,b.username strval,null strval2
from cmprof a
inner join users b on b.userno=a.userno
where a.cmno=#cmno#
order by b.username desc
select 1 dtype
,a.userno intval,b.usertype intval2
,row_number() over (order by b.username desc) intval3
,b.username strval,null strval2
,b.userid strval3
from cmprof a
inner join users b on b.userno=a.userno
where a.cmno=#cmno#
order by b.username desc
) a
union all
select 2
,b.bkno,0
,row_number() over (order by b.bkno) intval3
,b.bkname,null
,b.bkno,0
,row_number() over (order by b.bkno) intval3
,b.bkname,null
,null strval3
from cmbook a
inner join book b on b.bkno=a.bkno
where a.cmno=#cmno#
union all
select 3 dtype
,b.cmno,a.ispre
,row_number() over (order by b.cmno) intval3
,b.cname,null
,b.cmno,a.ispre
,row_number() over (order by b.cmno) intval3
,b.cname,null
, null strval3
from cmrelay a
inner join cm b on b.cmno=a.rcmno
where a.cmno=#cmno#
union all
select 4
,b.ndno,0
,row_number() over (order by b.ndno) intval3
,b.dname,b.acode
,b.ndno,0
,row_number() over (order by b.ndno) intval3
,b.dname,b.acode
,null strval3
from cmncsd a
inner join ncsd b on b.ndno=a.ndno
where a.cmno=#cmno#
@ -834,6 +838,9 @@
<update id="cm.cmex.savetop" parameterClass="cmex">
UPDATE cmex SET <include refid="sql.up"></include>,exname=#exname#,edesc=#edesc#,econdition=#econdition#,isblur=#isblur#,isusebackup=#isusebackup#
,isseq=#isseq#,isreexamable=#isreexamable#,isresultopen=#isresultopen#,etime=#etime#
,cmisno = #cmisno#
,testsdate = #testsdate#
,testedate = #testedate#
where exno=#exno#
</update>
<select id="cm.cmex.extype1count" parameterClass="hashtable" resultClass="int">
@ -843,8 +850,8 @@
</select>
<insert id="cm.cmex.in" parameterClass="cmex">
INSERT INTO cmex
(cmno,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isreexamable,isresultopen,isdel,<include refid="sql.inc"></include>)
values (#cmno#,#extype#,#exname#,#edesc#,#etime#,#econdition#,#evtype#,#eqtype#,#israndq#,#israndqi#,#qcount#,#isblur#,#tpoint#,#relaylimit#,#isusebackup#,#isseq#,#isreexamable#,#isresultopen#,0,<include refid="sql.inv"></include>)
(cmno,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isreexamable,isresultopen,isdel,cmisno,testsdate,testedate,<include refid="sql.inc"></include>)
values (#cmno#,#extype#,#exname#,#edesc#,#etime#,#econdition#,#evtype#,#eqtype#,#israndq#,#israndqi#,#qcount#,#isblur#,#tpoint#,#relaylimit#,#isusebackup#,#isseq#,#isreexamable#,#isresultopen#,0,#cmisno#,#testsdate#,#testedate#,<include refid="sql.inv"></include>)
<selectKey type="post" property="exno" resultClass="int">SELECT LAST_INSERT_ID()</selectKey>
</insert>
<update id="cm.cmex.up" parameterClass="cmex">
@ -928,14 +935,14 @@
,sum(case when ued.atext is not null then 1 else 0 end) ecount
,case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
,a.instructors
,u.usertype
,u.username AS instructors_name
,a.usertype
,a.instructors_name
from (
select a.*,b.cname
from (
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5, a.cdt,a.udt
,a.ispassspace,a.isignorecase,a.instructors
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
select a.*,b.cname
from (
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5, a.cdt,a.udt
,a.ispassspace,a.isignorecase,a.instructors, u.usertype, u.username as instructors_name
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
,<include refid="sql.prc"></include>
from question a
left outer join comcode cc on cc.ccode = a.qdiff
@ -944,6 +951,7 @@
left outer join comcode cc3 on cc3.ccode = a.cc3
left outer join comcode cc4 on cc4.ccode = a.cc4
left outer join comcode cc5 on cc5.ccode = a.cc5
left outer join users u on u.userid = a.instructors
<dynamic prepend="where">
<isNotNull property="cmno" prepend="and">a.cmno=#cmno#</isNotNull>
<isNotNull property="qdiff" prepend="and">a.qdiff=#qdiff#</isNotNull>
@ -956,7 +964,7 @@
<isNotNull property="isuse" prepend="and">a.isuse=#isuse#</isNotNull>
<isNotNull property="qtextstring" prepend="and">a.qtextstring like concat('%', #searchtext#,'%')</isNotNull>
<isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull>
<isNotNull property="instructors" prepend="and">a.instructors like concat('%', #instructors#, '%')</isNotNull>
<isNotNull property="instructors" prepend="and">u.username like concat('%', #instructors#, '%')</isNotNull>
</dynamic>
) a
left outer join cm b on b.cmno=a.cmno
@ -964,9 +972,8 @@
) a
left outer join cmexq eq on eq.qno=a.qno
left outer join lectexq ued on ued.eqno=eq.eqno
<!--LEFT OUTER JOIN users u ON FIND_IN_SET(u.userid, a.instructors) > 0-->
left outer join users u on u.userid = a.instructors
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.ispassspace,a.isignorecase,a.instructors
<!--LEFT OUTER JOIN users u ON FIND_IN_SET(u.userid, a.instructors) > 0//-->
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.ispassspace,a.isignorecase,a.instructors,a.usertype,a.instructors_name
order by a.RNO
</select>
<select id="cm.questions2" parameterClass="hashtable" resultClass="question">
@ -976,12 +983,12 @@
,sum(case when ued.atext is not null then 1 else 0 end) ecount
,case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
,a.instructors
,u.usertype
,u.username AS instructors_name
,a.usertype
,a.instructors_name
from (
select a.*
from (
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.cdt,a.udt,a.instructors
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.cdt,a.udt,a.instructors,u.usertype,u.username as instructors_name
,b.cname
, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
@ -994,6 +1001,7 @@
left outer join comcode cc3 on cc3.ccode = a.cc3
left outer join comcode cc4 on cc4.ccode = a.cc4
left outer join comcode cc5 on cc5.ccode = a.cc5
left outer join users u on u.userid = a.instructors
<dynamic prepend="where">
<isNotNull property="cmno" prepend="and">a.cmno=#cmno#</isNotNull>
<isNotNull property="qdiff" prepend="and">a.qdiff=#qdiff#</isNotNull>
@ -1009,20 +1017,20 @@
<isEqual property="searchtype" compareValue="qno" prepend="and">a.qno = #searchtext#</isEqual>
</isNotNull>
<isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull>
</dynamic>
<isNotNull property="instuctorName" prepend="and">u.username like concat('%', #instuctorName#, '%')</isNotNull>
<isNotNull property="scdinstuctor" prepend="and">FIND_IN_SET(u.userid, #scdinstuctor#) > 0</isNotNull>
</dynamic>
) a
<include refid="sql.pagedynamic"></include>
) a
left outer join cmexq eq on eq.qno=a.qno
left outer join lectexq ued on ued.eqno=eq.eqno
left outer join users u on u.userid = a.instructors
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt,a.instructors
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt,a.instructors,a.usertype,a.instructors_name
<dynamic prepend="having">
<isNotNull property="qcount" prepend="and">count(ued.examno)=#qcount#</isNotNull>
<isNotNull property="ecount" prepend="and">sum(case when ued.atext is not null then 1 else 0 end)=#ecount#</isNotNull>
<isNotNull property="rrate" prepend="and">case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end=#rrate#</isNotNull>
<isNotNull property="instuctorName" prepend="and">u.username like concat('%', #instuctorName#, '%')</isNotNull>
</dynamic>
order by a.rno
</select>
@ -1458,8 +1466,8 @@
drop temporary table if exists temp_cminning_mapping;
</update>
<insert id="cm.cmcopy.ex0" parameterClass="cmex">
insert into cmex (cmno,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isresultopen,isreexamable,isdel,<include refid="sql.inc"></include>)
select #cmno#,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isresultopen,isreexamable,0,<include refid="sql.inv"></include>
insert into cmex (cmno,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isresultopen,isreexamable,isdel,cmisno,testsdate,testedate,<include refid="sql.inc"></include>)
select #cmno#,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isresultopen,isreexamable,0,cmisno,testsdate,testedate,<include refid="sql.inv"></include>
from cmex a
where a.exno=#orgexno#;
<selectKey type="post" property="exno" resultClass="int">SELECT LAST_INSERT_ID()</selectKey>
@ -1938,13 +1946,14 @@
,a.isselected
<!--,case when a.remainPeople &lt;= 0 then 0 else 1 end isend-->
, 1 isend
,a.instructors
from
(
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth
,(a.quota - (select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status in (1,2) and z.ischanged=0)) remainPeople
,a.studyplace,case when c.scdtype =1 then '온라인' else e.cname end studyplacename
,case when date_format(d.setime,'%Y%m%d') = date_format(a.estart,'%Y%m%d') then 1 else 0 end isselected
,a.comment
,a.comment,a.instructors
from cminningscd a
left outer join cminning c on c.cmino = a.cmino
left outer join cm d on d.cmno = c.cmno
@ -2293,8 +2302,8 @@
,null as iseq,null as teachername
,b.cshape
,c.cmisno
,c.estart
,c.eend
,DATE_FORMAT(c.estart, '%Y-%m-%d') AS estart
,DATE_FORMAT(c.eend, '%Y-%m-%d') AS eend
,c.instructors
from cmex a
left join cm b ON b.cmno = a.cmno
@ -2302,7 +2311,7 @@
where a.cmno=#cmno# and a.isdel=0
<isNotNull property="estart" prepend="and">c.estart &gt;= concat(#estart#, ' 00:00:00')</isNotNull>
<isNotNull property="eend" prepend="and">c.eend &lt;= concat(#eend#, ' 23:59:59')</isNotNull>
<isNotNull property="instructors" prepend="and">c.instructors like concat('%',#instructors#,'%')</isNotNull>
<isNotNull property="instructors" prepend="and">FIND_IN_SET((SELECT userid FROM users WHERE username = #instructors#), c.instructors) > 0</isNotNull>
</select>
<select id="cm.est2" parameterClass="int" resultClass="est">

View File

@ -386,38 +386,42 @@
<select id="cm.cmdatas" parameterClass="int" resultClass="data">
select a.dtype,a.intval,a.intval2,a.intval3
,a.strval,a.strval2
,a.strval,a.strval2,a.strval3
from(
select 1 dtype
,a.userno intval,b.usertype intval2
,row_number() over (order by b.username desc) intval3
,b.username strval,null strval2
from cmprof a
inner join users b on b.userno=a.userno
where a.cmno=#cmno#
order by b.username desc
select 1 dtype
,a.userno intval,b.usertype intval2
,row_number() over (order by b.username desc) intval3
,b.username strval,null strval2
,b.userid strval3
from cmprof a
inner join users b on b.userno=a.userno
where a.cmno=#cmno#
order by b.username desc
) a
union all
select 2
,b.bkno,0
,row_number() over (order by b.bkno) intval3
,b.bkname,null
,b.bkno,0
,row_number() over (order by b.bkno) intval3
,b.bkname,null
,null strval3
from cmbook a
inner join book b on b.bkno=a.bkno
where a.cmno=#cmno#
union all
select 3 dtype
,b.cmno,a.ispre
,row_number() over (order by b.cmno) intval3
,b.cname,null
,b.cmno,a.ispre
,row_number() over (order by b.cmno) intval3
,b.cname,null
, null strval3
from cmrelay a
inner join cm b on b.cmno=a.rcmno
where a.cmno=#cmno#
union all
select 4
,b.ndno,0
,row_number() over (order by b.ndno) intval3
,b.dname,b.acode
,b.ndno,0
,row_number() over (order by b.ndno) intval3
,b.dname,b.acode
,null strval3
from cmncsd a
inner join ncsd b on b.ndno=a.ndno
where a.cmno=#cmno#
@ -834,6 +838,9 @@
<update id="cm.cmex.savetop" parameterClass="cmex">
UPDATE cmex SET <include refid="sql.up"></include>,exname=#exname#,edesc=#edesc#,econdition=#econdition#,isblur=#isblur#,isusebackup=#isusebackup#
,isseq=#isseq#,isreexamable=#isreexamable#,isresultopen=#isresultopen#,etime=#etime#
,cmisno = #cmisno#
,testsdate = #testsdate#
,testedate = #testedate#
where exno=#exno#
</update>
<select id="cm.cmex.extype1count" parameterClass="hashtable" resultClass="int">
@ -843,8 +850,8 @@
</select>
<insert id="cm.cmex.in" parameterClass="cmex">
INSERT INTO cmex
(cmno,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isreexamable,isresultopen,isdel,<include refid="sql.inc"></include>)
values (#cmno#,#extype#,#exname#,#edesc#,#etime#,#econdition#,#evtype#,#eqtype#,#israndq#,#israndqi#,#qcount#,#isblur#,#tpoint#,#relaylimit#,#isusebackup#,#isseq#,#isreexamable#,#isresultopen#,0,<include refid="sql.inv"></include>)
(cmno,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isreexamable,isresultopen,isdel,cmisno,testsdate,testedate,<include refid="sql.inc"></include>)
values (#cmno#,#extype#,#exname#,#edesc#,#etime#,#econdition#,#evtype#,#eqtype#,#israndq#,#israndqi#,#qcount#,#isblur#,#tpoint#,#relaylimit#,#isusebackup#,#isseq#,#isreexamable#,#isresultopen#,0,#cmisno#,#testsdate#,#testedate#,<include refid="sql.inv"></include>)
<selectKey type="post" property="exno" resultClass="int">SELECT LAST_INSERT_ID()</selectKey>
</insert>
<update id="cm.cmex.up" parameterClass="cmex">
@ -928,14 +935,14 @@
,sum(case when ued.atext is not null then 1 else 0 end) ecount
,case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
,a.instructors
,u.usertype
,u.username AS instructors_name
,a.usertype
,a.instructors_name
from (
select a.*,b.cname
from (
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5, a.cdt,a.udt
,a.ispassspace,a.isignorecase,a.instructors
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
select a.*,b.cname
from (
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5, a.cdt,a.udt
,a.ispassspace,a.isignorecase,a.instructors, u.usertype, u.username as instructors_name
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
,<include refid="sql.prc"></include>
from question a
left outer join comcode cc on cc.ccode = a.qdiff
@ -944,6 +951,7 @@
left outer join comcode cc3 on cc3.ccode = a.cc3
left outer join comcode cc4 on cc4.ccode = a.cc4
left outer join comcode cc5 on cc5.ccode = a.cc5
left outer join users u on u.userid = a.instructors
<dynamic prepend="where">
<isNotNull property="cmno" prepend="and">a.cmno=#cmno#</isNotNull>
<isNotNull property="qdiff" prepend="and">a.qdiff=#qdiff#</isNotNull>
@ -956,7 +964,7 @@
<isNotNull property="isuse" prepend="and">a.isuse=#isuse#</isNotNull>
<isNotNull property="qtextstring" prepend="and">a.qtextstring like concat('%', #searchtext#,'%')</isNotNull>
<isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull>
<isNotNull property="instructors" prepend="and">a.instructors like concat('%', #instructors#, '%')</isNotNull>
<isNotNull property="instructors" prepend="and">u.username like concat('%', #instructors#, '%')</isNotNull>
</dynamic>
) a
left outer join cm b on b.cmno=a.cmno
@ -964,9 +972,8 @@
) a
left outer join cmexq eq on eq.qno=a.qno
left outer join lectexq ued on ued.eqno=eq.eqno
<!--LEFT OUTER JOIN users u ON FIND_IN_SET(u.userid, a.instructors) > 0-->
left outer join users u on u.userid = a.instructors
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.ispassspace,a.isignorecase,a.instructors
<!--LEFT OUTER JOIN users u ON FIND_IN_SET(u.userid, a.instructors) > 0//-->
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.ispassspace,a.isignorecase,a.instructors,a.usertype,a.instructors_name
order by a.RNO
</select>
<select id="cm.questions2" parameterClass="hashtable" resultClass="question">
@ -976,12 +983,12 @@
,sum(case when ued.atext is not null then 1 else 0 end) ecount
,case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end rrate
,a.instructors
,u.usertype
,u.username AS instructors_name
,a.usertype
,a.instructors_name
from (
select a.*
from (
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.cdt,a.udt,a.instructors
select a.qno,a.cmno,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc,a.cdt,a.udt,a.instructors,u.usertype,u.username as instructors_name
,b.cname
, cc.cname qdiffname, cc1.cname ccname1, cc2.cname ccname2, cc3.cname ccname3, cc4.cname ccname4, cc5.cname ccname5
, Row_Number() over(order by <isNotNull property="orderby">$orderby$</isNotNull><isNull property="orderby">a.qtextstring</isNull> ) rno
@ -994,6 +1001,7 @@
left outer join comcode cc3 on cc3.ccode = a.cc3
left outer join comcode cc4 on cc4.ccode = a.cc4
left outer join comcode cc5 on cc5.ccode = a.cc5
left outer join users u on u.userid = a.instructors
<dynamic prepend="where">
<isNotNull property="cmno" prepend="and">a.cmno=#cmno#</isNotNull>
<isNotNull property="qdiff" prepend="and">a.qdiff=#qdiff#</isNotNull>
@ -1009,20 +1017,20 @@
<isEqual property="searchtype" compareValue="qno" prepend="and">a.qno = #searchtext#</isEqual>
</isNotNull>
<isNotNull property="qno" prepend="and">a.qno=#qno#</isNotNull>
</dynamic>
<isNotNull property="instuctorName" prepend="and">u.username like concat('%', #instuctorName#, '%')</isNotNull>
<isNotNull property="scdinstuctor" prepend="and">FIND_IN_SET(u.userid, #scdinstuctor#) > 0</isNotNull>
</dynamic>
) a
<include refid="sql.pagedynamic"></include>
) a
left outer join cmexq eq on eq.qno=a.qno
left outer join lectexq ued on ued.eqno=eq.eqno
left outer join users u on u.userid = a.instructors
group by a.qno,a.cmno,a.cname,a.qdiff,a.cc1,a.cc2,a.cc3,a.cc4,a.cc5,a.isuse,a.atype,a.dpoint,a.qtext,a.qtextstring,a.qdesc
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt,a.instructors
,a.qdiffname,a.ccname1,a.ccname2,a.ccname3,a.ccname4,a.ccname5,a.rno,a.pagetotalcount,a.cdt,a.udt,a.instructors,a.usertype,a.instructors_name
<dynamic prepend="having">
<isNotNull property="qcount" prepend="and">count(ued.examno)=#qcount#</isNotNull>
<isNotNull property="ecount" prepend="and">sum(case when ued.atext is not null then 1 else 0 end)=#ecount#</isNotNull>
<isNotNull property="rrate" prepend="and">case when sum(case when ued.atext is not null then 1 else 0 end) &lt; 1 then 0 else sum(ued.iscorrect) / sum(case when ued.atext is not null then 1 else 0 end) * 100 end=#rrate#</isNotNull>
<isNotNull property="instuctorName" prepend="and">u.username like concat('%', #instuctorName#, '%')</isNotNull>
</dynamic>
order by a.rno
</select>
@ -1458,8 +1466,8 @@
drop temporary table if exists temp_cminning_mapping;
</update>
<insert id="cm.cmcopy.ex0" parameterClass="cmex">
insert into cmex (cmno,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isresultopen,isreexamable,isdel,<include refid="sql.inc"></include>)
select #cmno#,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isresultopen,isreexamable,0,<include refid="sql.inv"></include>
insert into cmex (cmno,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isresultopen,isreexamable,isdel,cmisno,testsdate,testedate,<include refid="sql.inc"></include>)
select #cmno#,extype,exname,edesc,etime,econdition,evtype,eqtype,israndq,israndqi,qcount,isblur,tpoint,relaylimit,isusebackup,isseq,isresultopen,isreexamable,0,cmisno,testsdate,testedate,<include refid="sql.inv"></include>
from cmex a
where a.exno=#orgexno#;
<selectKey type="post" property="exno" resultClass="int">SELECT LAST_INSERT_ID()</selectKey>
@ -1938,13 +1946,14 @@
,a.isselected
<!--,case when a.remainPeople &lt;= 0 then 0 else 1 end isend-->
, 1 isend
,a.instructors
from
(
select a.cmisno,a.cmino,a.estart,a.eend,a.quota,a.cdt,a.udt,month(a.estart) startmonth
,(a.quota - (select count(z.lectno) cnt from lect z where a.cmisno = z.cmisno and z.status in (1,2) and z.ischanged=0)) remainPeople
,a.studyplace,case when c.scdtype =1 then '온라인' else e.cname end studyplacename
,case when date_format(d.setime,'%Y%m%d') = date_format(a.estart,'%Y%m%d') then 1 else 0 end isselected
,a.comment
,a.comment,a.instructors
from cminningscd a
left outer join cminning c on c.cmino = a.cmino
left outer join cm d on d.cmno = c.cmno
@ -2295,8 +2304,8 @@
,null as iseq,null as teachername
,b.cshape
,c.cmisno
,c.estart
,c.eend
,DATE_FORMAT(c.estart, '%Y-%m-%d') AS estart
,DATE_FORMAT(c.eend, '%Y-%m-%d') AS eend
,c.instructors
from cmex a
left join cm b ON b.cmno = a.cmno
@ -2304,7 +2313,7 @@
where a.cmno=#cmno# and a.isdel=0
<isNotNull property="estart" prepend="and">c.estart &gt;= concat(#estart#, ' 00:00:00')</isNotNull>
<isNotNull property="eend" prepend="and">c.eend &lt;= concat(#eend#, ' 23:59:59')</isNotNull>
<isNotNull property="instructors" prepend="and">c.instructors like concat('%',#instructors#,'%')</isNotNull>
<isNotNull property="instructors" prepend="and">FIND_IN_SET((SELECT userid FROM users WHERE username = #instructors#), c.instructors) > 0</isNotNull>
</select>
<select id="cm.est2" parameterClass="int" resultClass="est">