관리자>일반경찰조회 페이지 오류 수정.

관리자>외사경찰현황, 일반경찰조회 페이지 일괄삭제 기능 추가.
master
강석 최 2022-05-26 16:13:27 +09:00
parent 2f487b0dfb
commit aab3a7b4d9
8 changed files with 248 additions and 80 deletions

View File

@ -12,11 +12,7 @@ package kcg.faics.admin.web;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.*;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -316,7 +312,67 @@ public class AdminController {
return "excelView"; return "excelView";
} }
/** /**
* .
*
* @param userIdStr
*
* @return
* @throws Exception
*
*/
@ResponseBody
@RequestMapping(value = "/faMemberDelete.do", method = RequestMethod.POST)
public HashMap<String, Object> faMemberDelete(HttpServletResponse res, String userIdStr) throws Exception {
HashMap<String, Object> resultMap = new HashMap<String, Object>();
try{
List<MemberVO> userList = new ArrayList<>();
for(String userId : userIdStr.split("\\|")){
MemberVO user = new MemberVO();
user.setUserid(userId);
userList.add(user);
}
MemberVO deleteUserInfo = new MemberVO();
deleteUserInfo.setDeleteUserList(userList);
resultMap.put("result", memberService.deleteFaMemberList(deleteUserInfo));
} catch (Exception e) {
e.printStackTrace();
}
return resultMap;
}
/**
* .
*
* @param userIdStr
*
* @return
* @throws Exception
*
*/
@ResponseBody
@RequestMapping(value = "/cmmnMemberDelete.do", method = RequestMethod.POST)
public HashMap<String, Object> cmmnMemberDelete(HttpServletResponse res, String userIdStr) throws Exception {
HashMap<String, Object> resultMap = new HashMap<String, Object>();
try{
List<MemberVO> userList = new ArrayList<>();
for(String userId : userIdStr.split("\\|")){
MemberVO user = new MemberVO();
user.setUserid(userId);
userList.add(user);
}
MemberVO deleteUserInfo = new MemberVO();
deleteUserInfo.setDeleteUserList(userList);
resultMap.put("result", memberService.deleteCmmnMemberList(deleteUserInfo));
} catch (Exception e) {
e.printStackTrace();
}
return resultMap;
}
/**
* . * .
* *
* "/faMemberUpdateView.do" = - * "/faMemberUpdateView.do" = -

View File

@ -177,4 +177,8 @@ public interface MemberService extends BaseBbsService<MemberSearchVO, MemberVO>
* *
*/ */
HashMap<String, Object> deleteExMember(ExMemberVO dataVO) throws Exception; HashMap<String, Object> deleteExMember(ExMemberVO dataVO) throws Exception;
int deleteFaMemberList(MemberVO user) throws Exception;
int deleteCmmnMemberList(MemberVO user) throws Exception;
} }

View File

@ -354,4 +354,13 @@ public class MemberMapper extends EgovAbstractMapper {
public int insertExMemeber(final MemberVO dataVO) { public int insertExMemeber(final MemberVO dataVO) {
return insert("Member.insertExMemberByMemberVO", dataVO); return insert("Member.insertExMemberByMemberVO", dataVO);
} }
public int deleteFaMemberList(MemberVO user) {
return delete("Member.deleteFaMemberList", user);
}
public int deleteCmmnMemberList(MemberVO user) {
return delete("Member.deleteCmmnMemberList", user);
}
} }

View File

@ -652,5 +652,10 @@ public class MemberServiceImpl implements MemberService {
return resultMap; return resultMap;
} }
public int deleteFaMemberList(MemberVO user) throws Exception{
return memberMapper.deleteFaMemberList(user);
}
public int deleteCmmnMemberList(MemberVO user) throws Exception{
return memberMapper.deleteCmmnMemberList(user);
}
} }

View File

@ -5,6 +5,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.List;
import java.util.Locale; import java.util.Locale;
import kcg.faics.member.UserType; import kcg.faics.member.UserType;
@ -288,8 +289,21 @@ public class MemberVO implements Serializable {
*/ */
private String writer; private String writer;
private List<MemberVO> deleteUserList;
/** public void setNowPlaceStr(String nowPlaceStr) {
this.nowPlaceStr = nowPlaceStr;
}
public List<MemberVO> getDeleteUserList() {
return deleteUserList;
}
public void setDeleteUserList(List<MemberVO> deleteUserList) {
this.deleteUserList = deleteUserList;
}
/**
* @return the userid * @return the userid
*/ */
public String getUserid() { public String getUserid() {

View File

@ -202,21 +202,21 @@
</select> </select>
<select id="Member.getCmmnListAll" parameterType="memberSearchVO" resultType="memberVO"> <select id="Member.getCmmnListAll" parameterType="memberSearchVO" resultType="memberVO">
select (ROW_NUMBER() OVER()) AS RNUM, select (ROW_NUMBER() OVER()) AS RNUM, aa.*
aa.* from (select pl1.codenm || ' ' ||pl2.codenm place3str,
from (select pl1.codenm place1str, a.name,
b.recentdate, pst.codenm POSITIONSTR,
pl2.codenm PLACE2STR, a.userid,
pl3.codenm PLACE3STR, a.loginchk,
pst.codenm POSITIONSTR, a.chkcnt,
jt.codenm JOBTYPESTR, a.idno,
a.* a.place1,
from tagent a b.io_userid,
b.recentdate
from tuser a
inner join tcode pl1 on pl1.code1 = 'C001' and a.place1 = pl1.code2 inner join tcode pl1 on pl1.code1 = 'C001' and a.place1 = pl1.code2
inner join tcode pl2 on a.place1 = pl2.code1 and a.place2 = pl2.code2 inner join tcode pl2 on a.place1 = pl2.code1 and a.place2 = pl2.code2
inner join tcode pl3 on pl3.code1 = 'C009' and a.place3 = pl3.code2
inner join tcode pst on pst.code1 = 'C002' and a.position = pst.code2 inner join tcode pst on pst.code1 = 'C002' and a.position = pst.code2
inner join tcode jt on jt.code1 = 'C003' and a.jobtype = jt.code2
left outer join (SELECT IO_USERID, TO_CHAR(MAX(IO_REGDATE), 'YYYY-MM-DD HH24:MI:SS') AS RECENTDATE left outer join (SELECT IO_USERID, TO_CHAR(MAX(IO_REGDATE), 'YYYY-MM-DD HH24:MI:SS') AS RECENTDATE
FROM H3_LOGINOUT_LOG FROM H3_LOGINOUT_LOG
<where> <where>
@ -244,22 +244,22 @@
</select> </select>
<select id="Member.getCmmnMemberList" parameterType="memberSearchVO" resultType="memberVO"> <select id="Member.getCmmnMemberList" parameterType="memberSearchVO" resultType="memberVO">
select (ROW_NUMBER() OVER()) AS RNUM, select (ROW_NUMBER() OVER()) AS RNUM, aa.*
aa.* from (select pl1.codenm || ' ' ||pl2.codenm place3str,
from (select pl1.codenm place1str, a.name,
b.recentdate, pst.codenm POSITIONSTR,
pl2.codenm PLACE2STR, a.userid,
pl3.codenm PLACE3STR, a.loginchk,
pst.codenm POSITIONSTR, a.chkcnt,
jt.codenm JOBTYPESTR, a.idno,
a.* a.place1,
from tagent a b.io_userid,
inner join tcode pl1 on pl1.code1 = 'C001' and a.place1 = pl1.code2 b.recentdate
inner join tcode pl2 on a.place1 = pl2.code1 and a.place2 = pl2.code2 from tuser a
inner join tcode pl3 on pl3.code1 = 'C009' and a.place3 = pl3.code2 inner join tcode pl1 on pl1.code1 = 'C001' and a.place1 = pl1.code2
inner join tcode pst on pst.code1 = 'C002' and a.position = pst.code2 inner join tcode pl2 on a.place1 = pl2.code1 and a.place2 = pl2.code2
inner join tcode jt on jt.code1 = 'C003' and a.jobtype = jt.code2 inner join tcode pst on pst.code1 = 'C002' and a.position = pst.code2
left outer join (SELECT IO_USERID, TO_CHAR(MAX(IO_REGDATE), 'YYYY-MM-DD HH24:MI:SS') AS RECENTDATE left outer join (SELECT IO_USERID, TO_CHAR(MAX(IO_REGDATE), 'YYYY-MM-DD HH24:MI:SS') AS RECENTDATE
FROM H3_LOGINOUT_LOG FROM H3_LOGINOUT_LOG
<where> <where>
<if test="place1 != null and place1 != ''"> <if test="place1 != null and place1 != ''">
@ -983,4 +983,21 @@
) )
]]> ]]>
</insert> </insert>
<delete id="Member.deleteFaMemberList" parameterType="hashmap">
delete from TAGENT
where userid in
<foreach collection="deleteUserList" item="item" index="index" separator="," open="(" close=")">
#{item.userid}
</foreach>
</delete>
<delete id="Member.deleteCmmnMemberList" parameterType="hashmap">
delete from TUSER
where userid in
<foreach collection="deleteUserList" item="item" index="index" separator="," open="(" close=")">
#{item.userid}
</foreach>
</delete>
</mapper> </mapper>

View File

@ -45,18 +45,10 @@
<ul class="right btn-style"> <ul class="right btn-style">
<li><a class="btn_excel" href="javascript:fn_goExcel();"></a></li> <li><a class="btn_excel" href="javascript:fn_goExcel();"></a></li>
<li><a href="#" class="btn_reset" onclick="location.reload();"></a></li> <li><a href="#" class="btn_reset" onclick="location.reload();"></a></li>
<li><a class="btn_delete" href="javascript:fn_goDelete();"></a></li>
</ul> </ul>
</div> </div>
<table class="tbl_list" width="100%" border="0" cellpadding="0" cellspacing="0"> <table class="tbl_list" width="100%" border="0" cellpadding="0" cellspacing="0">
<colgroup>
<col width="80"/>
<col width="200">
<col width="100"/>
<col width="100">
<col width="100"/>
<col width="60"/>
<col width="60"/>
</colgroup>
<thead> <thead>
<tr> <tr>
<th align="center"><spring:message code="member.view.seq" /></th> <th align="center"><spring:message code="member.view.seq" /></th>
@ -84,8 +76,11 @@
<img src="/images/cmmn/blank_1x1.png" /> <img src="/images/cmmn/blank_1x1.png" />
</span> </span>
</th> </th>
<th><spring:message code="button.modify"/></th> <c:if test="${userVO.isSysAdmin == true or (userVO.isAdmin == true and result.place1 eq userVO.place1)}">
<th><spring:message code="button.delete"/></th> <th><spring:message code="button.modify"/></th>
<th><spring:message code="button.delete"/></th>
<th><input type="checkbox" id="allChk"></th>
</c:if>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -98,18 +93,11 @@
<td align="center" class="listtd"><c:out value="${result.positionStr}" /></td> <td align="center" class="listtd"><c:out value="${result.positionStr}" /></td>
<td align="center" class="listtd"><c:out value="${result.useridStr}"/></td> <td align="center" class="listtd"><c:out value="${result.useridStr}"/></td>
<td align="center" class="listtd"><c:out value="${result.name}" /></td> <td align="center" class="listtd"><c:out value="${result.name}" /></td>
<c:if test="${userVO.isSysAdmin == true or (userVO.isAdmin == true and result.place1 eq userVO.place1)}">
<td align="center" class="listtd"> <td align="center" class="listtd"><a href="#" onclick="modifyUser('<c:out value="${result.userid}"/>', '<c:out value="${result.name}"/>', '<c:out value="${result.place3Str}"/>');"><spring:message code="button.modify" /></a></td>
<c:if test="${userVO.isSysAdmin == true or (userVO.isAdmin == true and result.place1 eq userVO.place1)}"> <td align="center" class="listtd"><a href="#" onclick="deleteUser('<c:out value="${result.userid}"/>', '<c:out value="${result.name}"/>');"><spring:message code="button.delete" /></a></td>
<a href="#" onclick="modifyUser('<c:out value="${result.userid}"/>', '<c:out value="${result.name}"/>', '<c:out value="${result.place3Str}"/>');"><spring:message code="button.modify" /></a> <td align="center"><input type="checkbox" name="userId" class="deleteUser" value="${result.userid}"></td>
</c:if> </c:if>
</td>
<td align="center" class="listtd">
<c:if test="${userVO.isSysAdmin == true or (userVO.isAdmin == true and result.place1 eq userVO.place1)}">
<a href="#" onclick="deleteUser('<c:out value="${result.userid}"/>', '<c:out value="${result.name}"/>');"><spring:message code="button.delete" /></a>
</c:if>
</td>
</tr> </tr>
</c:forEach> </c:forEach>
</c:when> </c:when>
@ -199,6 +187,42 @@
}); });
}); });
$(document).on("change", "#allChk", function (){
$(".deleteUser").prop("checked", this.checked)
})
/* 사용자 삭제 */
function fn_goDelete() {
var checkBox = $(".deleteUser:checked")
if(checkBox.length>0){
if(confirm("사용자 정보 "+checkBox.length+"건 을 삭제하시겠습니까?")){
var userIdStr = "";
for(var i=0; i<checkBox.length; i++){
var user = checkBox[i];
userIdStr+=(user.value+"|");
}
/* ie에서 for of 반복문에서 에러 발생.
for(const user of checkBox){
userIdStr+=(user.value+"|");
}*/
$.ajax({
url: '<c:out value="/admin/cmmnMemberDelete.do"/>',
type: 'post',
dataType: 'json',
data : {userIdStr: userIdStr.slice(0, -1)},
success: function (data) {
if(data.result>0){
alert("삭제되었습니다.")
location.reload();
}
}
});
}
}else{
alert("삭제 대상을 선택해주세요.")
}
}
/* 글 목록 화면 function */ /* 글 목록 화면 function */
function fn_searchList() { function fn_searchList() {
document.searchForm.action = "<c:url value='/admin/cmmnMemberList.do'/>"; document.searchForm.action = "<c:url value='/admin/cmmnMemberList.do'/>";

View File

@ -8,7 +8,7 @@
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<script type="text/javaScript" defer="defer"> <script type="text/javaScript" defer="defer">
<!-- //<!--
$(document).ready(function(){ $(document).ready(function(){
@ -39,7 +39,11 @@
}); });
}); });
/* 글 상세 화면 function */ $(document).on('change', '#allChk', function (){
$(".deleteUser").prop('checked', this.checked);
})
/* 글 상세 화면 function */
function fn_select(id) { function fn_select(id) {
document.listForm.userid.value = id; document.listForm.userid.value = id;
document.listForm.action = "<c:url value='/admin/faMemberInfo.do'/>"; document.listForm.action = "<c:url value='/admin/faMemberInfo.do'/>";
@ -64,6 +68,37 @@
document.searchForm.submit(); document.searchForm.submit();
} }
/* 사용자 삭제 */
function fn_goDelete() {
var checkBox = $(".deleteUser:checked");
if(checkBox.length>0){
if(confirm("사용자 정보 "+checkBox.length+"건 을 삭제하시겠습니까?")){
var userIdStr = "";
for(var i=0; i<checkBox.length; i++){
var user = checkBox[i];
userIdStr+=(user.value+"|");
}
/* ie에서 for of 반복문이 동작하지 않음.
for(var user of checkBox){
userIdStr+=(user.value+"|");
}*/
$.ajax({
url: '<c:out value="/admin/faMemberDelete.do"/>',
type: 'post',
dataType: 'json',
data : {userIdStr: userIdStr.slice(0, -1)},
success: function (data) {
if(data.result>0){
alert("삭제되었습니다.")
location.reload();
}
}
});
}
}else{
alert("삭제 대상을 선택해주세요.")
}
}
/* pagination 페이지 링크 function */ /* pagination 페이지 링크 function */
function fn_link_page(pageNo) { function fn_link_page(pageNo) {
document.searchForm.pageIndex.value = pageNo; document.searchForm.pageIndex.value = pageNo;
@ -122,19 +157,21 @@
<ul class="right btn-style"> <ul class="right btn-style">
<li><a class="btn_excel" href="javascript:fn_goExcel();"></a></li> <li><a class="btn_excel" href="javascript:fn_goExcel();"></a></li>
<li><a href="#" class="btn_reset" onclick="location.reload();"></a></li> <li><a href="#" class="btn_reset" onclick="location.reload();"></a></li>
<li><a class="btn_delete" href="javascript:fn_goDelete();"></a></li>
</ul> </ul>
</div> </div>
<table class="tbl_list" width="100%" border="0" cellpadding="0" cellspacing="0"> <table class="tbl_list" width="100%" border="0" cellpadding="0" cellspacing="0">
<colgroup> <colgroup>
<col width="70" > <col width="70" >
<col width="200" > <col width="200" >
<col width="110" > <col width="80" >
<col width="100" > <col width="100" >
<col width="100" > <col width="100" >
<col width="100" > <col width="100" >
<col width="100" > <col width="80" >
<col width="80" > <col width="80" >
<col width="80" > <col width="70" >
<col width="70" >
</colgroup> </colgroup>
<thead> <thead>
<tr> <tr>
@ -188,7 +225,8 @@
</span> </span>
</th> </th>
<c:if test="${userVO.isSysAdmin == true}"> <c:if test="${userVO.isSysAdmin == true}">
<th align="center">수정</th> <th align="center">수정</th>
<th><input type="checkbox" id="allChk"></th>
</c:if> </c:if>
</tr> </tr>
</thead> </thead>
@ -219,6 +257,7 @@
<td align="center"><c:out value="${result.usegrade}" /></td> <td align="center"><c:out value="${result.usegrade}" /></td>
<c:if test="${userVO.isSysAdmin == true}"> <c:if test="${userVO.isSysAdmin == true}">
<td align="center"><a href="javascript:fn_modify('${result.userid}');">수정</a></td> <td align="center"><a href="javascript:fn_modify('${result.userid}');">수정</a></td>
<td align="center"><input type="checkbox" name="userId" class="deleteUser" value="${result.userid}"></td>
</c:if> </c:if>
</tr> </tr>
</c:forEach> </c:forEach>