<기능개선>

1. PMS NO : 8310
2. (주요)작업내용 
(1) Dao/MyBatis/Maps/CRoom.xml
 - cgcode 컬럼 추가
(2) Model/Pay.cs
 - cgcode 필드 추가 및 edukind 변경
(3) 그외 
 - Base/Controller/ACommon.cs : 증빙서류출력(과거)등록시 조건 수정
 - FO/Views/CRoom/Index.cshtml : 알림톡 잇슈관련 복원
 - FO/Views/CRoom/Innings.cshtml: 알림톡 잇슈관련 복원
This commit is contained in:
jity7777 2023-08-23 07:39:39 +00:00
parent dd8649bb33
commit e3124b7a57
5 changed files with 124 additions and 85 deletions

View File

@ -1789,64 +1789,93 @@ namespace NP.Base.Controllers
d.sedate = Convert.ToDateTime(d.sedatestring); d.sedate = Convert.ToDateTime(d.sedatestring);
} }
if(string.IsNullOrEmpty(d.userpno.Trim())) if(!string.IsNullOrWhiteSpace(d.kind) && !string.IsNullOrWhiteSpace(d.cg))
{ {
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 주민번호가 공란입니다." }); if (string.IsNullOrEmpty(d.userpno.Trim()))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 주민번호가 공란입니다." });
}
else if (string.IsNullOrEmpty(d.cgname.Trim()))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 과정명이 공란입니다." });
}
//else if (string.IsNullOrEmpty(d.completeno.Trim()))
//{
// return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 수료번호가 공란입니다." });
//}
else if (string.IsNullOrEmpty(d.ssdatestring.Trim()))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 교육시작일이 공란입니다." });
}
else if (string.IsNullOrEmpty(d.sedatestring.Trim()))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 교육종료일이 공란입니다." });
}
/*
else if (string.IsNullOrEmpty(d.username.Trim()))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 이름이 공란입니다." });
}
else if (!long.TryParse(d.brno.Trim(), out tryParseResult))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 사업자등록번호는 숫자만 입력가능합니다." });
}
else if (!long.TryParse(d.eino.Trim(), out tryParseResult))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 고용보험관리번호는 숫자만 입력가능합니다." });
}
else if (!long.TryParse(d.sctime.Trim(), out tryParseResult))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 교육이수시간은 숫자만 입력가능합니다." });
}
else if (!long.TryParse(d.sprice.Trim(), out tryParseResult))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 교육비는 숫자만 입력가능합니다." });
}
else if (!long.TryParse(d.rprice.Trim(), out tryParseResult))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 환급액은 숫자만 입력가능합니다." });
}
else if (!long.TryParse(d.rbankno.Trim(), out tryParseResult))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 환급계좌는 숫자만 입력가능합니다." });
}
else if (!long.TryParse(d.syear.Trim(), out tryParseResult))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 교육년도는 숫자만 입력가능합니다." });
}
*/
d.uno = SUserInfo.UserNo;
d.uip = GetUserIP();
++i;
} }
else if (string.IsNullOrEmpty(d.cgname.Trim()))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 과정명이 공란입니다." });
}
else if (string.IsNullOrEmpty(d.completeno.Trim()))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 수료번호가 공란입니다." });
}
else if (string.IsNullOrEmpty(d.ssdatestring.Trim()))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 교육시작일이 공란입니다." });
}
else if (string.IsNullOrEmpty(d.sedatestring.Trim()))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 교육종료일이 공란입니다." });
}
/*
else if (string.IsNullOrEmpty(d.username.Trim()))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 이름이 공란입니다." });
}
else if (!long.TryParse(d.brno.Trim(), out tryParseResult))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 사업자등록번호는 숫자만 입력가능합니다." });
}
else if (!long.TryParse(d.eino.Trim(), out tryParseResult))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 고용보험관리번호는 숫자만 입력가능합니다." });
}
else if (!long.TryParse(d.sctime.Trim(), out tryParseResult))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 교육이수시간은 숫자만 입력가능합니다." });
}
else if (!long.TryParse(d.sprice.Trim(), out tryParseResult))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 교육비는 숫자만 입력가능합니다." });
}
else if (!long.TryParse(d.rprice.Trim(), out tryParseResult))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 환급액은 숫자만 입력가능합니다." });
}
else if (!long.TryParse(d.rbankno.Trim(), out tryParseResult))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 환급계좌는 숫자만 입력가능합니다." });
}
else if (!long.TryParse(d.syear.Trim(), out tryParseResult))
{
return JsonBack(new JsonRtn() { code = 1, msg = i + "번째 데이터의 교육년도는 숫자만 입력가능합니다." });
}
*/
d.uno = SUserInfo.UserNo;
d.uip = GetUserIP();
} }
return JsonOK(Dao.Save("cr.documnetspast.batch", new Hashtable() { { "Ds", data } }));
int result = 0;
int cnt = 0;
int limit = 5; // 10000;
List<Document> tempData = new List<Document>();
foreach(var item in data)
{
++cnt;
tempData.Add(item);
if (cnt > limit)
{
result += Dao.Save("cr.documnetspast.batch", new Hashtable() { { "Ds", tempData } });
cnt = 0;
tempData = new List<Document>();
}
}
if(tempData.Count > 0)
{
result += Dao.Save("cr.documnetspast.batch", new Hashtable() { { "Ds", tempData } });
}
return JsonOK(result);
} }
} }
} }

View File

@ -903,13 +903,13 @@
,count(p.payno) over() pagetotalcount ,count(p.payno) over() pagetotalcount
,scd.estart cmiestart, scd.eend cmieeend, scd.studyplace cmistudyplace ,scd.estart cmiestart, scd.eend cmieeend, scd.studyplace cmistudyplace
,pi.rbank , CAST(AES_DECRYPT(UNHEX(pi.rbankaccnum), <include refid="sql.digest"></include>) AS char) rbankaccnum, pi.tbankuser ,pi.rbank , CAST(AES_DECRYPT(UNHEX(pi.rbankaccnum), <include refid="sql.digest"></include>) AS char) rbankaccnum, pi.tbankuser
,cc1.cname tgname,cc2.cname tename ,cc1.cname tgname,cc2.cname tename, cg.cgcode
,cc3.cname tmname,cc4.cname tjname ,cc3.cname tmname,cc4.cname tjname
from ( from (
select 0 isexamready,p.payno,max(case when pi.ptype in (0,1,3,4) then pi.pino else 0 end) pi1,min(pi.pino) pi2,count(pi.pino) ccount select 0 isexamready,p.payno,max(case when pi.ptype in (0,1,3,4) then pi.pino else 0 end) pi1,min(pi.pino) pi2,count(pi.pino) ccount
from pay p from pay p
inner join payitem pi on pi.payno=p.payno inner join payitem pi on pi.payno=p.payno
<isNotNull property="piptype">and pi.ptype=#piptype#</isNotNull> <isNotNull property="piptype">and pi.ptype=#piptype#</isNotNull>
<isNotNull property="isrebates">and pi.ptype in (0, 4) and pi.isrebate in ($isrebates$)</isNotNull> <isNotNull property="isrebates">and pi.ptype in (0, 4) and pi.isrebate in ($isrebates$)</isNotNull>
inner join users u on u.userno=p.userno inner join users u on u.userno=p.userno
left outer join assign ua on ua.asno=u.asno left outer join assign ua on ua.asno=u.asno
@ -970,28 +970,29 @@
<isNotNull property="usernameiditemname">and (u.username=#usernameiditemname# or u.userid=#usernameiditemname# or ex.exname like concat('%',#usernameiditemname#,'%') or ua.asname like concat('%',#usernameiditemname#,'%'))</isNotNull> <isNotNull property="usernameiditemname">and (u.username=#usernameiditemname# or u.userid=#usernameiditemname# or ex.exname like concat('%',#usernameiditemname#,'%') or ua.asname like concat('%',#usernameiditemname#,'%'))</isNotNull>
<isNotNull property="isgroup">and a.exno=0</isNotNull> <isNotNull property="isgroup">and a.exno=0</isNotNull>
<isNotNull property="mobile" prepend="and">cast(AES_DECRYPT(UNHEX(u.mobile), 'np123@!' ) as char) like concat('%',#mobile#,'%')</isNotNull> <isNotNull property="mobile" prepend="and">cast(AES_DECRYPT(UNHEX(u.mobile), 'np123@!' ) as char) like concat('%',#mobile#,'%')</isNotNull>
) a ) a
left outer join pay p on a.isexamready=0 and p.payno=a.payno left outer join pay p on a.isexamready=0 and p.payno=a.payno
left outer join payitem pi on a.isexamready=0 and pi.pino=case when a.pi1=0 then a.pi2 else a.pi1 end left outer join payitem pi on a.isexamready=0 and pi.pino=case when a.pi1=0 then a.pi2 else a.pi1 end
left outer join examuser ue on a.isexamready=1 and ue.exno=a.payno and ue.userno=a.pi1 left outer join examuser ue on a.isexamready=1 and ue.exno=a.payno and ue.userno=a.pi1
left outer join exam uee on a.isexamready=1 and uee.exno=ue.exno left outer join exam uee on a.isexamready=1 and uee.exno=ue.exno
inner join users u on u.userno=case when a.isexamready=0 then p.userno else ue.userno end inner join users u on u.userno=case when a.isexamready=0 then p.userno else ue.userno end
left outer join pplog pp on p.pplno = pp.pplno left outer join pplog pp on p.pplno = pp.pplno
left outer join assign ua on ua.asno=u.asno left outer join assign ua on ua.asno=u.asno
left outer join payrfditem pri on a.isexamready=0 and pri.pino=pi.pino left outer join payrfditem pri on a.isexamready=0 and pri.pino=pi.pino
left outer join payrfd pr on a.isexamready=0 and pr.rfdno=pri.rfdno left outer join payrfd pr on a.isexamready=0 and pr.rfdno=pri.rfdno
left outer join cm cm on a.isexamready=0 and pi.ptype in (0,1,4) and cm.cmno=pi.itemno left outer join cm cm on a.isexamready=0 and pi.ptype in (0,1,4) and cm.cmno=pi.itemno
left outer join lect le on a.isexamready=0 and le.pino=pi.pino and le.ischanged=0 left outer join cg cg on cm.cgno = cg.cgno
left outer join book bk on a.isexamready=0 and pi.ptype=2 and bk.bkno=pi.itemno left outer join lect le on a.isexamready=0 and le.pino=pi.pino and le.ischanged=0
left outer join exam ex on a.isexamready=0 and ex.exno=pi.itemno left outer join book bk on a.isexamready=0 and pi.ptype=2 and bk.bkno=pi.itemno
left outer join examuser exu on exu.exno=ex.exno and exu.userno=p.userno left outer join exam ex on a.isexamready=0 and ex.exno=pi.itemno
left outer join pplog ppl on ppl.pplno = p.pplno left outer join examuser exu on exu.exno=ex.exno and exu.userno=p.userno
left outer join cminningscd scd on scd.cmisno = le.cmisno left outer join pplog ppl on ppl.pplno = p.pplno
left outer join comcode cc1 on cc1.ccode = ppl.typegrade left outer join cminningscd scd on scd.cmisno = le.cmisno
left outer join comcode cc2 on cc2.ccode = ppl.typeedu left outer join comcode cc1 on cc1.ccode = ppl.typegrade
left outer join comcode cc3 on cc3.ccode = ppl.typeman left outer join comcode cc2 on cc2.ccode = ppl.typeedu
left outer join comcode cc4 on cc4.ccode = ppl.typejob left outer join comcode cc3 on cc3.ccode = ppl.typeman
<dynamic prepend="where"> left outer join comcode cc4 on cc4.ccode = ppl.typejob
<dynamic prepend="where">
<isNotNull property="estart" prepend="and">scd.estart &gt;= #estart#</isNotNull> <isNotNull property="estart" prepend="and">scd.estart &gt;= #estart#</isNotNull>
<isNotNull property="eend" prepend="and">scd.eend &lt;= #eend#</isNotNull> <isNotNull property="eend" prepend="and">scd.eend &lt;= #eend#</isNotNull>
<isNotNull property="studyplace" prepend="and">scd.studyplace=#studyplace#</isNotNull> <isNotNull property="studyplace" prepend="and">scd.studyplace=#studyplace#</isNotNull>
@ -1622,7 +1623,7 @@
where no=#no# where no=#no#
</update> </update>
<update id="cr.documnetspast.batch" parameterClass="hashtable"> <update id="cr.documnetspast.batch" parameterClass="hashtable">
insert into docprintpast (kind, cg, cshape, username, userpno, typeman, edukind, typeedu, typegrade, typejob, cgname, completeno, companyname, companyaddr, brno, eino, btype, bkind, ceoname, ssdate, sedate, sctime, assign, slevel, uduty, phone, mname, mphone, sprice, rprice, rbank, rbankno, rbankuser, taxemail, syear, <include refid="sql.inc"></include>) insert into docprintpast(kind, cg, cshape, username, userpno, typeman, edukind, typeedu, typegrade, typejob, cgname, completeno, companyname, companyaddr, brno, eino, btype, bkind, ceoname, ssdate, sedate, sctime, assign, slevel, uduty, phone, mname, mphone, sprice, rprice, rbank, rbankno, rbankuser, taxemail, syear, <include refid="sql.inc"></include>)
<iterate property="Ds" open="" conjunction="union all" close=""> <iterate property="Ds" open="" conjunction="union all" close="">
select #Ds[].kind#, #Ds[].cg#, #Ds[].cshape#, #Ds[].username# select #Ds[].kind#, #Ds[].cg#, #Ds[].cshape#, #Ds[].username#
, HEX(AES_ENCRYPT(#Ds[].userpno#, <include refid="sql.digest"></include>)) , HEX(AES_ENCRYPT(#Ds[].userpno#, <include refid="sql.digest"></include>))

View File

@ -298,6 +298,8 @@
viewcontents(_cmino, false,@Model.croomlectno); viewcontents(_cmino, false,@Model.croomlectno);
} else { } else {
_authplatform = capResult.msg; _authplatform = capResult.msg;
// ### 모바일 인증 처리
if(_authplatform == "0"){ if(_authplatform == "0"){
msg("학습인증수단이 없는 회원입니다. 정보수정을 통해 학습인증수단을 입력해주세요."); msg("학습인증수단이 없는 회원입니다. 정보수정을 통해 학습인증수단을 입력해주세요.");
} else if (_authplatform == "1") { } else if (_authplatform == "1") {
@ -305,6 +307,8 @@
} else if (_authplatform == "2") { } else if (_authplatform == "2") {
confirmtoggle(true, "학습을 처음 시작할 때 본인인증이 필요합니다. 본인인증은 회차 당 1회에 한 해 진행됩니다.<br/> 본인인증을 하시겠습니까?", "chkmobile()"); confirmtoggle(true, "학습을 처음 시작할 때 본인인증이 필요합니다. 본인인증은 회차 당 1회에 한 해 진행됩니다.<br/> 본인인증을 하시겠습니까?", "chkmobile()");
} }
// ### 모바일 인증 중단 처리
// viewcontents(_cmino, false,@Model.croomlectno);
} }
} else { } else {
msg("휴대폰 번호가 공란입니다.<br/>정보수정을 통해 번호를 입력해주세요."); msg("휴대폰 번호가 공란입니다.<br/>정보수정을 통해 번호를 입력해주세요.");

View File

@ -202,6 +202,7 @@
//viewcontents(_cmino, false,@Model.croomlectno); //viewcontents(_cmino, false,@Model.croomlectno);
} else { } else {
_authplatform = capResult.msg; _authplatform = capResult.msg;
// ### 모바일 인증 처리
if(_authplatform == "0"){ if(_authplatform == "0"){
msg("학습인증수단이 없는 회원입니다. 정보수정을 통해 학습인증수단을 입력해주세요."); msg("학습인증수단이 없는 회원입니다. 정보수정을 통해 학습인증수단을 입력해주세요.");
} else if (_authplatform == "1") { } else if (_authplatform == "1") {
@ -209,6 +210,8 @@
} else if (_authplatform == "2") { } else if (_authplatform == "2") {
confirmtoggle(true, "학습을 처음 시작할 때 본인인증이 필요합니다. 본인인증은 회차 당 1회에 한 해 진행됩니다.<br/> 본인인증을 하시겠습니까?", "chkmobile()"); confirmtoggle(true, "학습을 처음 시작할 때 본인인증이 필요합니다. 본인인증은 회차 당 1회에 한 해 진행됩니다.<br/> 본인인증을 하시겠습니까?", "chkmobile()");
} }
// ### 모바일 인증 중단 처리
//msg("학습을 시작합니다.", null, null, null, "viewcontents("+_cmino+",false,@(Model.croomlectno))");
} }
} else { } else {
msg("휴대폰 번호가 공란입니다.<br/>정보수정을 통해 번호를 입력해주세요."); msg("휴대폰 번호가 공란입니다.<br/>정보수정을 통해 번호를 입력해주세요.");

View File

@ -620,7 +620,8 @@ namespace NP.Model
{ {
get get
{ {
return tename == null ? "" : tename.Contains("기본교육") ? "기본" : "전문"; return cgcode == "101" ? "기본" : "전문";
//return tename == null ? "" : tename.Contains("기본교육") ? "기본" : "전문";
} }
} }
/// <summary> /// <summary>
@ -640,6 +641,7 @@ namespace NP.Model
public String userpno { get; set; } public String userpno { get; set; }
public string studytime { get; set; } public string studytime { get; set; }
public string cgcode { get; set; }
} }
/// <summary> /// <summary>