This commit is contained in:
kdh0120 2020-11-24 04:19:48 +00:00
parent b0f9576bac
commit 70b288bcda
8 changed files with 203 additions and 22 deletions

View File

@ -671,6 +671,7 @@
<Content Include="Views\croom\taxdetail.cshtml" />
<Content Include="Views\croom\taxsmart.cshtml" />
<Content Include="Views\cm\cmregeduschedule.cshtml" />
<Content Include="Views\croom\cmstandbylects.cshtml" />
</ItemGroup>
<ItemGroup>
<Folder Include="App_Data\" />

View File

@ -133,6 +133,7 @@ namespace NP.BO.Controllers
{
//검색조건
var ht = new System.Collections.Hashtable() { { "cmno", vm.intval} };
ht.Add("isready", 0);
//0:신청중; 2:수강중; 3:수강취소
//0:결제대기; 1:입금대기; 2:결제완료; 3:결제취소; 4:환불신청; 5:부분환불; 6:전액환불
if (vm.addstringval == "8")
@ -181,6 +182,49 @@ namespace NP.BO.Controllers
}
return View(vm);
}
public ActionResult cmstandbylects(VMCM vm)
{
//대기승인 시점으로부터 48시간이 지났음에도 '결제대기' 상태일 경우 취소처리
Dao.Save("lect.drop2day", new System.Collections.Hashtable() { { "cmno", vm.intval }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } });
vm.CM = Dao.Get<CM>("cm.cm", new System.Collections.Hashtable() { { "cmno", vm.intval } }).First();
vm.pagerowcount = 100;
var ht = SetHash(vm);
ht.Add("cmno", vm.CM.cmno);
ht.Add("isready", 1);
//0:신청중; 2:수강중; 3:수강취소
//0:결제대기; 1:입금대기; 2:결제완료; 3:결제취소; 4:환불신청; 5:부분환불; 6:전액환불
if (vm.addstringval == "4")
{
ht.Add("statusin", "0,2,4");
}
else if (vm.addstringval == "5")
{
ht.Add("statusin", "5,8,9");
}
else
{
ht.Add("status", vm.addstringval);
}
ht.Add("paystatusnotin", "0,42,66");
switch (vm.addstringval2)
{
case "0": ht.Add("paystatus", 21); break;
case "1": ht.Add("paystatus", 22); break;
case "2": ht.Add("paystatus", 1); ht.Add("rstatus", 0); break;
case "3": ht.Add("paystatus", 41); break;
case "4": ht.Add("refundcall", 1); break;
case "5": ht.Add("rstatus", 1); break;
case "6": ht.Add("rstatus", 2); break;
case "7": ht.Add("paystatus", 53); break;
default: break;
}
vm.Lects = Dao.Get<Lect>("lect.lects", ht);
vm.pagetotalcount = GetCount(vm.Lects.FirstOrDefault());
return View(vm);
}
public ActionResult cmlectattprint(VMCM vm)
{
ViewBag.PopupMenuName = "출석부출력";

View File

@ -13,9 +13,32 @@
@(Model.CM.rsrename) / @(Model.CM.sssename) (@(Model.CM.ssseterm)일)
</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">
@(Model.CM.quotastr)
</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">
@(Model.CM.countlect)명
</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">
@(Model.CM.countstandby)명
</div>
</div>
</div>
</section>
<div>
<ul class="pagination pagination-md" style="margin: 0;">
<li class="active"><a href="#">신청현황</a></li>
<li class=""><a href="/croom/cmstandbylects?intval=@(Model.CM.cmno)">대기현황</a></li>
</ul>
</div>
<section class="panel panel-default" style="border-top: 1px solid #ddd; margin-top: 5px;">
<header class="panel-heading"><strong><i class="fa fa-bars"></i> 신청자 명단<span class=""></span></strong></header>
<div style="padding: 5px 20px; background-color: #fff;">
@ -55,7 +78,7 @@
<td>@d.rnorvt</td>
<td>@d.asname</td>
<td>@(d.cnoname)(@d.cnoid)</td>
<td class="link text-center"><a href="#" onclick="viewlect(this, @d.ustatus, @d.lectno, @d.fileno, '@d.fileurl', '@d.orgname', @d.status, @d.pstatus,'@string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}",d.asname??"",d.username, d.userid??"", d.ccpositionname??"", d.depart??"", d.email, d.telno, d.mobile,d.ckfcfyear,d.assignuser,d.edus)')">@d.username</a>@Html.Raw(string.IsNullOrEmpty(d.fileurl)?"": ("<a href=\"/aCommon/DownFile?fno="+d.fileno+"&loginfo=\"> <i class=\"fa fa-paperclip\"></i></a>"))</td>
<td class="link text-center"><a href="#" onclick="viewlect(this, @d.ustatus, @d.lectno, @d.fileno, '@d.fileurl', '@d.orgname', @d.status, @d.pstatus,'@string.Format("{0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}",d.asname??"",d.username, d.userid??"", d.uduty??"", d.depart??"", d.email, d.telno, d.mobile,d.ckfcfyear,d.assignuser,d.edus)')">@d.username</a>@Html.Raw(string.IsNullOrEmpty(d.fileurl)?"": ("<a href=\"/aCommon/DownFile?fno="+d.fileno+"&loginfo=\"> <i class=\"fa fa-paperclip\"></i></a>"))</td>
<td>@d.cdtymd</td>
<td>@d.statusname</td>
<td class="link text-center"><a href="#" onclick="viewrefund(@d.payno, @d.pstatus, @d.payuserno)">@d.pstatusname</a></td>
@ -76,17 +99,17 @@
<table class="regtable">
<colgroup><col style="width:150px;" /><col /></colgroup>
<tr><th>고객사</th><td id="asname"></td></tr>
<tr><th>사업장과의관계</th><td id="assignuser"></td></tr>
@*<tr><th>사업장과의관계</th><td id="assignuser"></td></tr>*@
<tr><th>이름(ID)</th><td id="usernameid"></td></tr>
<tr><th>직위/부서</th><td id="positiondepart"></td></tr>
@if(Model.CM.cgno != 10)
<tr><th>직위</th><td id="positiondepart"></td></tr>
@*@if(Model.CM.cgno != 10)
{
<tr><th>공정거래업무경력</th><td id="ckfcfyear"></td></tr>
}
}*@
<tr><th>이메일</th><td id="email"></td></tr>
<tr><th>회사전화번호</th><td id="telno"></td></tr>
@*<tr><th>회사전화번호</th><td id="telno"></td></tr>*@
<tr><th>휴대전화번호</th><td id="mobile"></td></tr>
<tr><th>연합회 교육이력</th><td id="edus"></td></tr>
@*<tr><th>연합회 교육이력</th><td id="edus"></td></tr>*@
<tr class="trhidebox" style="@(Model.CM.certcc == null ? "display: none;":"")"><th>경력증명서</th><td id="filelist"></td></tr>
<tr class="trhidebox" style="@(Model.CM.certcc == null ? "display: none;":"")"><th>심사여부</th><td>@Html.Partial("./Partial/Radio", null, new ViewDataDictionary() { { "valuetext", "3:신청중;4:승인;5:미승인" }, { "checked", 3 }, { "name", "status" } })</td></tr>
</table>
@ -149,7 +172,7 @@
$("#asname").text(ds[0]);
$("#assignuser").text(ds[8]);
$("#usernameid").text(ds[1] + "(" + ds[2] + ")");
$("#positiondepart").text(ds[3] + " / " + ds[4]);
$("#positiondepart").text(ds[3]);
$("#ckfcfyear").text(ds[9]);
$("#email").text(ds[5]);
$("#telno").text(ds[6]);

View File

@ -41,7 +41,9 @@
<th>유형</th>
<th>강좌명</th>
<th>신청기간</th>
<th>(전체신청인원/완료/입금대기/결제대기)</th>
<th>제한인원</th>
<th>수강인원</th>
@*<th>(전체신청인원/완료/입금대기/결제대기)</th>*@
</tr>
</thead>
<tbody class="data" id="tbody1">
@ -55,7 +57,9 @@
<td>@d.cshapename</td>
<td class="link"><a href="#" onclick="reg(@(d.cmno))">@d.cnameclassno</a></td>
<td>@d.rsrename</td>
<td>@string.Format("( {0} / {1} / {2} / {3} )", d.countlect.ToString("#,0"),d.countsuccess.ToString("#,0"),d.countstanbydraw.ToString("#,0"),d.countstanbypay.ToString("#,0"))</td>
<td>@d.quotastr</td>
<td>@d.countsuccess</td>
@*<td>@string.Format("( {0} / {1} / {2} / {3} )", d.countlect.ToString("#,0"),d.countsuccess.ToString("#,0"),d.countstanbydraw.ToString("#,0"),d.countstanbypay.ToString("#,0"))</td>*@
</tr>
}
</tbody>

View File

@ -31,6 +31,37 @@ namespace NP.Base.Controllers
return JsonOK(Dao.Save("lect.status", new Hashtable() { { "lectno", lectno }, { "status", status }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }));
}
[HttpPost]
public JsonResult LectStatus3(Int64 lectno, int status, int pstatus)
{
if (pstatus == 1)
{
return JsonBack(new JsonRtn() { code = -1 });
}
return JsonOK(Dao.Save("lect.status3", new Hashtable() { { "lectno", lectno }, { "status", status }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }));
}
[HttpPost]
public JsonResult LectStatus2(string lectnos, int status, string cname, string emailinfos)
{
int rtn = Dao.Save("lect.status2", new Hashtable() { { "lectnos", lectnos }, { "status", status }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } });
if (rtn > 0 && status == 4 && !string.IsNullOrEmpty(emailinfos))
{
string[] mails = emailinfos.Split(',');
foreach (var item in mails)
{
var masteremail = GetConfig("masteremail");
var senderemail = masteremail.Split(';')[0];
if (!string.IsNullOrEmpty(item.Split(':')[1]))
{
string[] mailContents = { item.Split(':')[0], cname, DateTime.Now.ToString("yyyy-MM-dd hh:mm") };
SendMailTemplate("2", senderemail, "영남건설기술교육원", item.Split(':')[1], "[영남건설기술교육원]대기중인 강좌의 수강승인 처리안내", mailContents, null, null);
}
}
}
return JsonOK(rtn);
}
[HttpPost]
public JsonResult CMForChange(int cmno)
{
return JsonBack(Dao.Get<CM>("lect.cmforchange", cmno));
@ -927,5 +958,6 @@ namespace NP.Base.Controllers
{
return JsonOK(Dao.Save("lect.completetime.change", new Hashtable() { { "lectno", lectno }, { "completetime", completetime }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } }));
}
}
}

View File

@ -171,15 +171,25 @@
order by a.rno
</select>
<select id="cm.cm" parameterClass="hashtable" resultClass="cm">
select a.cmno,a.cshape,a.cname,a.classno,a.rstime,a.retime,a.sstime,a.setime,a.certcc,a.cgno
select a.cmno,a.cshape,a.cname,a.classno,a.rstime,a.retime,a.sstime,a.setime,a.certcc,a.cgno,a.quota
,b.tyear,b.tseq,a.isrefund
,a3.cgcode pcgcode
,e.countlect,e.countstandby
<isNotNull property="htmlcolumns">$htmlcolumns$</isNotNull>
from cm a
inner join cg a2 on a2.cgno=a.cgno
inner join cg a3 on a3.cgno=a2.pcgno
inner join term b on b.tmno=a.tmno
left outer join comcode cc on cc.ccode=a.studyplace
left outer join (
select l.cmno
,sum(case when l.status &lt; 3 then 1 else 0 end) countlect
,sum(case when ifnull(l.isready,0) = 1 and l.status=3 then 1 else 0 end) countstandby
from lect l
inner join users u on u.userno = l.userno
where l.cmno = #cmno# and l.ischanged=0
group by l.cmno
) e on e.cmno = a.cmno
where a.cmno=#cmno#
</select>
<!--비공개인 강좌여도 수강생등록 가능-->

View File

@ -89,12 +89,12 @@
order by b.username
</select>
<select id="lect.cms" parameterClass="hashtable" resultClass="cm">
select a.cmno,c.tyear,c.tseq,d.cgname,b.cshape,b.cname,b.classno,b.rstime,b.retime,a.countlect,a.countstandby,a.rno,a.pagetotalcount,a.countnoresult,a.countfail,a.countcomplete,a.countsuccess,a.countstanbypay,a.countstanbydraw
select a.cmno,c.tyear,c.tseq,d.cgname,b.quota,b.cshape,b.cname,b.classno,b.rstime,b.retime,a.countlect,a.countstandby,a.rno,a.pagetotalcount,a.countnoresult,a.countfail,a.countcomplete,a.countsuccess,a.countstanbypay,a.countstanbydraw
from (
select a.cmno,a.countlect,a.countstandby,a.rno,a.pagetotalcount,a.countnoresult,a.countfail,a.countcomplete,a.countsuccess,a.countstanbypay,a.countstanbydraw
from (
select b.cmno,count(d.lectno) countlect
,sum(case when d.status=1 then 0 when d.status is null then 0 else 1 end) countstandby
,sum(case when ifnull(d.isready,0) = 1 and d.status = 3 then 1 else 0 end) countstandby
,sum(case when d.iscomplete is null then 1 else 0 end) countnoresult
,sum(d.iscomplete) countcomplete
,sum(case when d.iscomplete=0 then 1 else 0 end) countfail
@ -142,7 +142,7 @@
,af.fileurl,af.fileno,af.orgname
,f.asname
,d.username cnoname,d.userid cnoid
,e.username,e.status ustatus,e.depart,e.userid
,e.username,e.status ustatus,e.depart,e.userid,e.uduty
,e.kfcfyear,e.isassignuser,e.edus
,CAST(AES_DECRYPT(UNHEX(e.email), <include refid="sql.digest"></include>) AS char) email
,CAST(AES_DECRYPT(UNHEX(e.mobile), <include refid="sql.digest"></include>) AS char) mobile
@ -168,6 +168,7 @@
left outer join payrfditem rfdi on rfdi.pino=a.pino
left outer join payrfd rfd on rfd.rfdno=rfdi.rfdno
where a.ischanged=0
<isNotNull property="isready" prepend="and">ifnull(a.isready,0)=#isready#</isNotNull>
<isNotNull property="lectno" prepend="and">a.lectno=#lectno#</isNotNull>
<isNotNull property="cmno" prepend="and">a.cmno=#cmno#</isNotNull>
<isNotNull property="status" prepend="and">a.status=#status#</isNotNull>
@ -196,6 +197,7 @@
left outer join comcode cc on cc.ccode=b.ccposition
left outer join assign c on c.asno=b.asno
where a.cmno=#cmno#
<isNotNull property="isready"> and ifnull(a.isready,0) = #isready# </isNotNull>
<isNotNull property="status"> and a.status &lt; 5 and p.pstatus in (1,22 ) </isNotNull>
<isNotNull property="statusin" prepend="and">a.status in ($statusin$)</isNotNull>
and a.ischanged=0
@ -215,6 +217,36 @@
where a.pstatus=51
</isGreaterThan>
</update>
<update id="lect.status3" parameterClass="hashtable">
update lect set <include refid="sql.up"></include>,status=#status#,oktime=case when oktime is null and #status# = 4 and status&lt;&gt;4 then now() else oktime end where lectno=#lectno# and status in (3,4,5);
<isGreaterThan property="status" compareValue="3">
update pay a
inner join lect b on b.lectno=#lectno# and b.payno=a.payno and b.status in (4,5)
set a.pstatus=case when b.status = 4 then 21 else 52 end
where a.pstatus=55;
update payitem a
inner join lect b on b.lectno=#lectno# and b.pino=a.pino and b.status in (4,5)
set a.pstatus=case when b.status=4 then 21 else 52 end
where a.pstatus=55
</isGreaterThan>
</update>
<update id="lect.status2" parameterClass="hashtable">
update lect set <include refid="sql.up"></include>
, status = #status#
, oktime = now()
where lectno in ($lectnos$) and status in (3,4,5);
update pay a
inner join lect b on b.lectno in ($lectnos$) and b.payno=a.payno and b.status in (3,4,5)
set a.pstatus=case when b.status = 3 then 55 when b.status = 4 then 21 else 52 end
where a.pstatus in (55, 21, 52);
update payitem a
inner join lect b on b.lectno in ($lectnos$) and b.pino=a.pino and b.status in (3,4,5)
set a.pstatus=case when b.status = 3 then 55 when b.status = 4 then 21 else 52 end
where a.pstatus in (55, 21, 52)
</update>
<select id="lect.cmforchange" parameterClass="int" resultClass="cm">
select b.cmno,b.cname,b.classno,b.cshape
,t.tyear,t.tseq
@ -1327,6 +1359,20 @@
) a
<include refid="sql.pagedynamic"></include>
</select>
<update id="lect.drop2day" parameterClass="hashtable">
update pay a
inner join lect b on b.payno = a.payno and b.cmno = #cmno# and b.ischanged=0 and ifnull(b.isready,0) = 1 and b.status = 4 and DATE_ADD(b.oktime, INTERVAL 2 DAY) &lt; <include refid="sql.now"></include>
set a.pstatus = 52, a.udt = now(), a.uno = #uno#, a.uip = #uip#;
update payitem a
inner join pay b on b.payno = a.payno and b.pstatus = 52
inner join lect c on c.payno = b.payno and c.cmno = #cmno# and c.ischanged=0 and ifnull(c.isready,0) = 1 and c.status = 4 and DATE_ADD(c.oktime, INTERVAL 2 DAY) &lt; <include refid="sql.now"></include>
set a.pstatus = b.pstatus, a.udt = now(), a.uno = #uno#, a.uip = #uip#;
update lect
set status = 5, oktime = now(), udt = now(), uno = #uno#, uip = #uip#
where cmno = #cmno# and ifnull(isready,0) = 1 and ischanged=0 and status = 4 and DATE_ADD(oktime, INTERVAL 2 DAY) &lt; <include refid="sql.now"></include>
</update>
</statements>
</sqlMap>

View File

@ -156,7 +156,7 @@ namespace NP.Model
{
get
{
return rstime == null && retime == null ? "" : string.Format("{0}~{1}", rstime == null ? "" : rstime.Value.ToString("yy.MM.dd"), retime == null ? "" : retime.Value.ToString("yy.MM.dd"));
return rstime == null && retime == null ? "" : string.Format("{0}~{1}", rstime == null ? "" : rstime.Value.ToString("yyyy-MM-dd"), retime == null ? "" : retime.Value.ToString("yyyy-MM-dd"));
}
}
@ -807,6 +807,27 @@ namespace NP.Model
}
}
}
public String pstatusname3
{
get
{
switch (pstatus)
{
case 1:
case 21:
case 22:
case 53:
return "수강승인";
case 41:
case 42:
case 43:
case 52:
return "수강취소";
case 51: return "대기중";
default: return "-";
}
}
}
/// <summary>
/// fklectpayitem 결제상품키 payitem.pino
/// </summary>