From 65853d1e0a852456d9e2328c0444091a17166dd9 Mon Sep 17 00:00:00 2001 From: devnet Date: Wed, 2 Oct 2024 01:02:41 +0000 Subject: [PATCH] =?UTF-8?q?<=EC=8B=A0=EA=B7=9C=EA=B0=9C=EB=B0=9C>=20(?= =?UTF-8?q?=EC=A3=BC=EC=9A=94)=EC=9E=91=EC=97=85=EB=82=B4=EC=9A=A9=20:=20?= =?UTF-8?q?=EC=84=B1=EC=A0=81=EC=97=85=EB=A1=9C=EB=93=9C=20=EC=9D=BC?= =?UTF-8?q?=EA=B4=84=EC=97=85=EB=A1=9C=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BO/BO.csproj | 2 + BO/Content/file/gradeupload.xlsx | Bin 0 -> 14160 bytes BO/Controllers/croomController.cs | 10 +- BO/Views/Shared/Partial/ScdScript.cshtml | 2 +- BO/Views/croom/gradeall2.cshtml | 24 ++-- BO/Views/croom/gradeupload.cshtml | 147 +++++++++++++++++++++++ BO/js/site.js | 4 +- Base/Controller/ACommon.cs | 96 +++++++++++++++ Base/Controller/ACommonCRoom.cs | 23 ++++ Base/Lib/Excel2Entity.cs | 27 ++++- Dao/MyBatis/Maps/CRoom.xml | 1 + Dao/MyBatis/Maps/Lect.xml | 49 +++++++- Model/CM.cs | 27 ++++- 13 files changed, 387 insertions(+), 25 deletions(-) create mode 100644 BO/Content/file/gradeupload.xlsx create mode 100644 BO/Views/croom/gradeupload.cshtml diff --git a/BO/BO.csproj b/BO/BO.csproj index 2817f2e..4a9cfbb 100644 --- a/BO/BO.csproj +++ b/BO/BO.csproj @@ -500,6 +500,7 @@ + @@ -706,6 +707,7 @@ + diff --git a/BO/Content/file/gradeupload.xlsx b/BO/Content/file/gradeupload.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..caafe90ef3bb141b5dfb55bfdda257b4eff61933 GIT binary patch literal 14160 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 literal 0 HcmV?d00001 diff --git a/BO/Controllers/croomController.cs b/BO/Controllers/croomController.cs index 09e4d22..3cb3991 100644 --- a/BO/Controllers/croomController.cs +++ b/BO/Controllers/croomController.cs @@ -863,8 +863,8 @@ namespace NP.BO.Controllers if (vm.isexceldown == 1) { return ExportExcel( - new String[] { "No", "운영기수", "구분", "고객사", "교육장", "과정명", "시험명", "교육생", "ID", "핸드폰", "교육시작일", "교육종료일", "응시일자(제출일자)", "경과시간", "IP", "응시상태", "총점", "수료여부" }, - new String[] { "rno", "sseq", "isrebatename", "asname", "studyplacename", "cname", "exname", "username", "userid", "mobile", "leststr", "leestrExcel", "estarteend", "eseterm", "eip", "estatename", "tpoint", "iscompletename" }, + new String[] { "No", "운영기수", "구분", "고객사", "교육장", "과정명", "시험명", "교육생", "ID", "핸드폰", "교육시작일", "교육종료일", "응시일자(제출일자)", "경과시간", "IP", "응시상태", "총점", "수료여부", "점수종류" }, + new String[] { "rno", "sseq", "isrebatename", "asname", "studyplacename", "cname", "exname", "username", "userid", "mobile", "leststr", "leestrExcel", "estarteend", "eseterm", "eip", "estatename", "tpoint", "iscompletename", "isbyadminname" }, vm.LectEXes, "성적처리평가" + DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day, null, null, vm.excellog); } @@ -1472,6 +1472,10 @@ namespace NP.BO.Controllers } return View(vm); } - } + public ActionResult gradeupload(VMCRoom vm) + { + return View(vm); + } + } } diff --git a/BO/Views/Shared/Partial/ScdScript.cshtml b/BO/Views/Shared/Partial/ScdScript.cshtml index 0e87bda..f37eddb 100644 --- a/BO/Views/Shared/Partial/ScdScript.cshtml +++ b/BO/Views/Shared/Partial/ScdScript.cshtml @@ -38,7 +38,7 @@ } function setScd() { - capp("/acommon/GetScdForMixEdu", { cmno: selectedcmno }, "renderScd"); + capp("/acommon/GetScdForMixEdu", { cmno: selectedcmno }, "renderScd", null, null , true); } function renderScd() { var ulScd = $("#ulScd"); diff --git a/BO/Views/croom/gradeall2.cshtml b/BO/Views/croom/gradeall2.cshtml index 907f261..50de06c 100644 --- a/BO/Views/croom/gradeall2.cshtml +++ b/BO/Views/croom/gradeall2.cshtml @@ -37,6 +37,7 @@ 총점 관리 수료여부 + 점수종류 @@ -98,6 +99,9 @@ { @Html.Raw(d.iscomplete == 1 ? string.Format("{1}", d.lectno, "수료") : d.iscompletename) } + + @d.isbyadminname + } @@ -115,7 +119,7 @@
-

시험 상세결과닫기

+

시험 상세결과닫기


개요
@@ -146,10 +150,10 @@

 
- +} +@section scripts{ + + +} \ No newline at end of file diff --git a/BO/js/site.js b/BO/js/site.js index 5920269..15a8a00 100644 --- a/BO/js/site.js +++ b/BO/js/site.js @@ -1777,7 +1777,9 @@ $(document).ready(function () { if (($(this).attr("data-click") || "") != "") { eval($(this).attr("data-click")); } - $(this).closest('.findbox').slideUp('fast'); $('#bglayer').hide(); + $(this).closest('.findbox').slideUp('fast', function () { + $('#bglayer').hide(); + }); }).on("change", ".filebox input.fileitem", function () { var _ext = $(this).attr("data-ext").toUpperCase(); if ($(this).val() != "" && _ext != "*" && _ext != "") { diff --git a/Base/Controller/ACommon.cs b/Base/Controller/ACommon.cs index 91e8fe3..6bda21b 100644 --- a/Base/Controller/ACommon.cs +++ b/Base/Controller/ACommon.cs @@ -10,6 +10,9 @@ using NP.Base.Auth; using NP.Base.ENUM; using System.Text.RegularExpressions; using Newtonsoft.Json; +using System.Reflection.Emit; +using OfficeOpenXml.FormulaParsing.Excel.Functions.Information; +using Spring.Validation.Validators; namespace NP.Base.Controllers { @@ -1879,6 +1882,99 @@ namespace NP.Base.Controllers return JsonOK(result); } + //성적업로드검증 + case "gradeuploadbatch": + { + var lects = new Lib.ExcelToEntity(uploadfile).Read(2, 1).ToList(); + if (lects.Count() < 1) + { + return JsonBack(new JsonRtn() { code = 1, msg = "데이터가 없습니다." }); + } + else + { + int intLoop = 1; + int tot = lects.Count(); + foreach (var lect in lects) + { + lect.rno = intLoop++; + lect.pagetotalcount = tot; + lect.value = ",정상"; + lect.cname = string.Empty; + + if (string.IsNullOrEmpty(lect.userpno) || lect.userpno == "-") + { + lect.value += ",주민번호오입력"; + } + else + { + var users = Dao.Get("users.users", new Hashtable() { { "usertype", 1 }, { "status", 1 }, { "userpno", lect.userpno.Replace("-", "") } }); + if (users.Count == 1) + { + var user = users.First(); + lect.userno = user.userno; + lect.userid = user.userid; + lect.username = user.username; + } + else + { + lect.value += ",교육생불일치"; + } + } + + if (lect.stime == null) + { + lect.value += ",교육종료일오입력"; + } + else if (lect.userno == 0) + { + lect.value += ",강좌불일치"; + } + else + { + var lectexs = Dao.Get("lect.lectex.forgradeupload", new Hashtable() { { "userno", lect.userno }, { "stime", lect.stime } }); + if (lectexs.Count == 1) + { + var lectex = lectexs.First(); + if (lectex.tpoint < lect.tpoint) + { + lect.value += ",평가점수오입력(초과)"; + } + else + { + lect.cmno = lectex.cmno; + lect.cname = lectex.cname; + lect.lectno = lectex.lectno; + lect.cmino = lectex.cmino; + lect.iscomplete = lectex.iscomplete; + lect.exno = lectex.exno; + lect.exname = lectex.exname; + } + } + else + { + lect.value += ",강좌불일치"; + } + } + + if (lect.tpoint < 0 || lect.tpoint > 100) + { + lect.value += ",평가점수오입력"; + } + + lect.value = lect.value.Substring(1); + + if (!lect.value.Equals("정상")) + { + if (lect.value.Contains("정상")) + { + lect.value = lect.value.Replace("정상,", ""); + } + lect.value += " 오류"; + } + } + } + return JsonBack(new JsonRtn() { code = 1000, obj = lects }); + } } } } diff --git a/Base/Controller/ACommonCRoom.cs b/Base/Controller/ACommonCRoom.cs index 446534c..818c274 100644 --- a/Base/Controller/ACommonCRoom.cs +++ b/Base/Controller/ACommonCRoom.cs @@ -12,6 +12,7 @@ using NP.Base.ENUM; using System.Net.Http; using XPayClientNet; using NP.Base.Popbill; +using IBatisNet.DataMapper.Configuration.ResultMapping; namespace NP.Base.Controllers { @@ -2043,5 +2044,27 @@ namespace NP.Base.Controllers } return JsonOK(Dao.Save("pay.taxcancel", new Hashtable() { { "taxnos", taxnos }, { "taxno", taxno }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } })); } + + /// + /// 성적업로드 + /// + /// 수강 + /// + [HttpPost] + public JsonResult GradeUploadBatch(IList lectexs) + { + var result = 0; + foreach (var lectex in lectexs) + { + var lectexsNow = Dao.Get("lect.lectex.forgradeupload", new Hashtable() { { "userno", lectex.userno }, { "lectno", lectex.lectno } }); + if (lectexsNow.Count == 1 && lectexsNow.First().tpoint >= lectex.tpoint) + { + lectex.uno = SUserInfo.UserNo; + lectex.uip = GetUserIP(); + result += Dao.Save("lect.lectex.point.byadmin", lectex) > 0 ? 1 : 0; + } + } + return JsonOK(result, true); + } } } \ No newline at end of file diff --git a/Base/Lib/Excel2Entity.cs b/Base/Lib/Excel2Entity.cs index 4d4099d..567390e 100644 --- a/Base/Lib/Excel2Entity.cs +++ b/Base/Lib/Excel2Entity.cs @@ -145,9 +145,30 @@ namespace NP.Base.Lib catch (Exception) { continue; } try - { - property.SetValue(entity, v.GetType() == property.PropertyType ? v : - Convert.ChangeType(row[propName], property.PropertyType)); + { + if (v.GetType() == property.PropertyType) + { + property.SetValue(entity, v); + } + else + { + if (property.PropertyType == typeof(DateTime?)) + { + if (DateTime.TryParse(row[propName].ToString(), out DateTime dt)) + { + property.SetValue(entity, dt); + } + else + { + property.SetValue(entity, null); + } + } + else + { + var propertyType = Nullable.GetUnderlyingType(property.PropertyType) ?? property.PropertyType; + property.SetValue(entity, Convert.ChangeType(row[propName], propertyType)); + } + } } catch (Exception) { diff --git a/Dao/MyBatis/Maps/CRoom.xml b/Dao/MyBatis/Maps/CRoom.xml index c0e5150..cda72c3 100644 --- a/Dao/MyBatis/Maps/CRoom.xml +++ b/Dao/MyBatis/Maps/CRoom.xml @@ -1842,5 +1842,6 @@ ( l.completetime is null and li.stime is not null and l.sdate < '2024-08-19 00:00:00' and li.stime is not null and li.stime < '2024-08-22 00:00:00')) + diff --git a/Dao/MyBatis/Maps/Lect.xml b/Dao/MyBatis/Maps/Lect.xml index dd754d0..209a4bf 100644 --- a/Dao/MyBatis/Maps/Lect.xml +++ b/Dao/MyBatis/Maps/Lect.xml @@ -1072,12 +1072,12 @@ ,p.payoktime,a.sdate,a.edate ,b.exno,b.exname,b.extype ,b2.cshape,b2.cname - ,c.estart,c.eend,c.eip,c.tpoint,c.recount,c.entercount,c.cblock + ,c.estart,c.eend,c.eip,c.tpoint,c.recount,c.entercount,c.cblock,c.isbyadmin ,d.username,d.userid ,e.asname ,f.cmisno,f.estart lestart,f.eend leend,f.sseq ,g.cname studyplacename - ,a.iscomplete + ,a.iscomplete ,row_number() over(order by $orderby$d.username) rno ,count(a.cdt) over() pagetotalcount ,cast(AES_DECRYPT(UNHEX(d.mobile), 'np123@!' ) as char) as mobile @@ -1147,7 +1147,7 @@ from lectex a where a.lectno=#lectno# and a.exno=#exno#; - update lectex set estart=null,eend=null,eip=null,tpoint=0,recount=recount+1,entercount=0,cblock=0 where lectno=#lectno# and exno=#exno#; + update lectex set estart=null,eend=null,eip=null,tpoint=0,recount=recount+1,entercount=0,cblock=0,isbyadmin=0 where lectno=#lectno# and exno=#exno#; update lectexq a inner join cmex b on b.exno=a.exno @@ -2704,7 +2704,44 @@ LEFT OUTER JOIN lectinning g ON g.cmino = ci.cmino AND g.lectno = l.lectno WHERE l.lectno in ($lectnos$) + + + + + + update lectex + set + ,tpoint=#tpoint# + ,isbyadmin=1 + where lectno=#lectno# and exno=#exno#; + + update lect l + inner join ( + select l.lectno, round(avg(le.tpoint),1) as avgtpoint, sum(le.tpoint) sumpoint, ce.tpoint + from lect l + inner join cmex ce on l.cmno = ce.cmno and ce.extype = 1 and ce.isdel = 0 + left outer join lectex le on l.lectno = le.lectno and ce.exno = le.exno + where l.status = 1 and l.lectno = #lectno# + group by l.lectno + )t on l.lectno = t.lectno + inner join cmev cv on l.cmno = cv.cmno + set l.exfpoint = t.avgtpoint + , l.fpoint = round((t.avgtpoint / t.tpoint * 100) * cv.final / 100,1) + , l.udt = now() + , l.uno = #uno# + , l.uip=#uip# + where l.lectno = #lectno#; + - - - + \ No newline at end of file diff --git a/Model/CM.cs b/Model/CM.cs index 8032ea6..85042a8 100644 --- a/Model/CM.cs +++ b/Model/CM.cs @@ -1447,7 +1447,7 @@ namespace NP.Model } } - public int? cmino { get; set; } + public Int64? cmino { get; set; } public int ischeck { get; set; } public String completeno { get; set; } public String post { get; set; } @@ -1510,7 +1510,18 @@ namespace NP.Model public String rbank { get; set; } public String btype { get; set; } public String eino { get; set; } + /// + /// 주민등록번호 + /// public String userpno { get; set; } + /// + /// 시험키 + /// + public int exno { get; set; } + /// + /// 시험명 + /// + public String exname { get; set; } } /// /// 자격검정시험 @@ -3280,7 +3291,7 @@ namespace NP.Model /// /// 영상 임의학습과 같이 영상 플레이 (0:불가, 1:가능) /// - public short isplay { get; set; } + public short isplay { get; set; } } [Serializable] @@ -3667,6 +3678,18 @@ namespace NP.Model } } public int ispass { get; set; } + public Int64? cmino { get; set; } + /// + /// 관리자등록여부 + /// + public int isbyadmin { get; set; } + public string isbyadminname + { + get + { + return isbyadmin == 1 ? "관리자등록" : "수강생응시"; + } + } } [Serializable] public class LectEXQ : LectEX