SpringBoot(사원관리프로그램)2일차

jyp·2023년 3월 29일
0

학원

목록 보기
54/57

쿼리문에 부등호가 들어갈 경우 요런식으로 사용 가능함

<![CDATA[ ]]> << 쿼리문 전체를 요안에 넣어줘도 됨
09:00시를 넘어서 출근을 찍었을 경우 state값을 변경해주기

<insert id="towork">
	insert into commute (towork,writeday,sawon,state)
	values(curtime(),#{param2},#{param1}, <![CDATA['09:00:00' < curtime()]]>)
</insert>

mysql if문은 참일경우 실행,참이아닐경우 이후 이프문의 값을 넣어줌

update commute set tohome=curtime() , state , if(state=0,2 , if(state=1,3))

위 쿼리문의 해석

update commute set tohome=curtime() 현재 퇴근 찍은 시간을 업데이트 해주고
state = if('18:00:00' <= curtime() << 퇴근 찍은 시간이 18시를 넘거나 같다면 ,state << 값을 넣어주고 
, if(state=0,2, if(state=1,3)) << 참이 아닐 경우 state값이 0이면 2, 1이면 3을 넣어줘라 

위에쿼리문을 사용해서 바꾼 쿼리문을 보자믄 아래처럼해야함

<update id="tohome"><![CDATA[
	update commute set tohome=curtime(),
	state=if('18:00:00' <= curtime() , state, if(state=0,2, if(state=1,3,state) )))
	where writeday=#{param2} and sawon=#{param1}
	]]>
</update>

그리고 이제 출력하는 부분에서 변경해줘야하는 사항이 있음
mypage 에서 휴가인 경우가 추가됨 출,퇴근이 둘다 null이고 state값이 4(결근),5(휴가) 인데
코드를 적어보자면

@Override
public String mypage(HttpSession session,Model model) {		
	// 회원정보
	String sawon = session.getAttribute("sawon").toString();
	MemberVo mvo = mapper.mypage(sawon);
	
	model.addAttribute("mvo",mvo);
	model.addAttribute("depart",mapper.getDepartName(mvo.getDepart()));
	
	// 출퇴근 출력
	LocalDate today = LocalDate.now();
	CommuteVo cvo = mapper.getCommute(sawon,today.toString());
	
	int chk;
	if(cvo==null)
	{
		// 출근 안함.
		chk=1;
	}
	else if(cvo.getTowork()==null && cvo.getTohome()==null && cvo.getState()==5)
	{
		chk=4;
	}
	else if(cvo.getTowork()!=null && cvo.getTohome()==null)
	{ // 출근이 저장됐다.
		chk=2;
	}
	else
	{ // 출,퇴근이 전부 DB에 저장됐다.
		chk=3;
	}
	
	
	model.addAttribute("chk",chk);
	
	// 사원간 쪽지
	
	return "/member/mypage";
}

mypage.jsp 처리는 아래처럼

<section>
	<table width="800" align="center">
	<caption> <h3 style="text-align:center"> 사원 정보 <a href="/member/memberUp" style="font-size:13px"> 정보 수정 </a> </h3> </caption>
		<tr>
			<td width="80"> 이 름 </td>
			<td width="160">${mvo.name}</td>
			<td width="80"> 아이디 </td>
			<td width="160">${mvo.userid}</td>
			<td width="80"> 사원코드 </td>
			<td width="160"> ${mvo.sawon} </td>
		</tr>
		<tr>
			<td> 부 서 </td>
			<td>${depart}</td>
			<td> 입사일 </td>
			<td>${mvo.ipsa}</td>
			<td> 전화번호 </td>
			<td>${mvo.phone}</td>
		</tr>
	</table>
	
    여기부분에 휴가가 추가 됨
	<h3 align="center"> 출퇴근 정보 
		<c:if test="${chk==1}">
			<span id="comm"> <a href="towork"> 출근찍기 </a> </span>
		</c:if>
		
		<c:if test="${chk==2}">
			<span id="comm"> <a href="tohome"> 퇴근찍기 </a> </span>
		</c:if>
		
		<c:if test="${chk==3}">
			<span id="comm"> 출퇴근완료 </span>
		</c:if>
		
		<c:if test="${chk==4}">
			<span id="comm"> 휴 가 </span>
		</c:if>
	</h3>
</section>

그리고 관리자가 보는 출,퇴근 페이지 jsp 처리는 이런식으로 if문 처리로 상태를 보여줌

<section>
	<table width="800" align="center">
		<caption> <h3> ${today} 출퇴근 정보 </h3> </caption>
		<tr>
			<td> 이 름 </td>
			<td> 출근시간 </td>
			<td> 퇴근시간 </td>
			<td> 상 태 </td>
		</tr>
		<c:forEach items="${list}" var="cvo">
		<tr>
			<td>${cvo.name}</td>
			<td>${cvo.towork}</td>
			<td>${cvo.tohome}</td>
			<td>
				<c:if test="${cvo.state==0}">
					정상
				</c:if>
				
				<c:if test="${cvo.state==1}">
					지각
				</c:if>
				
				<c:if test="${cvo.state==2}">
					조퇴
				</c:if>
				
				<c:if test="${cvo.state==3}">
					결근
				</c:if>
				
				<c:if test="${cvo.state==4}">
					휴가
				</c:if>
			</td>
		</tr>
		</c:forEach>
	</table>
</section>

혹시나 까먹고 어제 안적었을까봐 적어두는 출근 입력하기

출근 구현클래스

@Override
public String towork(HttpSession session) {
	String sawon = session.getAttribute("sawon").toString();
	String today = LocalDate.now().toString();
	
	mapper.towork(sawon,today);
	
	return "redirect:/member/mypage";
}

mapper

<insert id="towork">
	insert into commute (towork,writeday,sawon,state)
	values(curtime(),#{param2},#{param1}, <![CDATA['09:00:00' < curtime()]]>)
</insert>

혹시나 까먹고 어제 안적었을까봐 적어두는 퇴근 입력하기

퇴근 구현클래스( 출근과 같음 )

@Override
public String tohome(HttpSession session) {
	String sawon = session.getAttribute("sawon").toString();
	String today = LocalDate.now().toString();
	
	mapper.tohome(sawon,today);
	
	return "redirect:/member/mypage";
}

퇴근 mapper
오늘 한건데 헷갈리니까 한번 더 적어서 익혀두기

<update id="tohome"><![CDATA[
	update commute set tohome=curtime(),
	state=if('18:00:00' <= curtime() , state, if(state=0,2, if(state=1,3,state) ))
	where writeday=#{param2} and sawon=#{param1}
	]]>
</update>

쪽지 보내기 jsp 처리

<script>
    function getName(depart)
    {
        var chk = new XMLHttpRequest();
        chk.onload=function()
        {
            var data = JSON.parse(chk.responseText);

            var str = "";

            for(mem in data)
            {
                str = str+ "<option value=' "+data[mem].sawon+" '>" + data[mem].name + "</option>";
            }
            document.getElementById("gname").innerHTML=str;
        }
        chk.open("get","getName?depart="+depart);
        chk.send();
    }
</script>
</head>
<body>
    <div id="mform">
        <form method="post" action="sendmemo_ok">
            <div>
                <select name="depart" onchange="getName(this.value)">
                    <option> 부서선택 </option>
                        <c:forEach items="${list}" var="dvo">
                    <option value="${dvo.code}"> ${dvo.name} </option>
                        </c:forEach>
                </select>
                <select name="resawon" id="gname">

                </select>
            </div>
            <div> <input type="text" name="title"> </div>
            <div> <textarea name="content"> </textarea> </div>
            <div> <input type="submit" value="쪽지보내기"> </div>
        </form>
    </div>
</body>

보낸쪽지중 총 갯수와 읽은쪽지 값 가져오기

<select id="getChongCnt" resultType="int">
	select count(*) from memo where sesawon=#{param}
</select>

<select id="getReadCnt" resultType="int">
	select count(*) from memo where sesawon=#{param} and state=1
</select>

view 파일에 출력하기

<table width="400" align="center">
		<caption><h3> 쪽지 관련 
			<span id="comm"> <a href="javascript:mopen()"> 쪽지 보내기 </a> </span>
		</h3>
		</caption>
		<tr>
			<td> 보낸 쪽지 </td>
			<td> 받은 쪽지 </td>
		</tr>
		<tr>
			<td> 보낸쪽지 <span style="color:red">${readcnt}</span> / ${chongcnt} </td>
			<td> 받은쪽지 <span style="color:red">${readcnt2}</span> / ${chongcnt2} </td></td>
		</tr>
	</table>
profile
국비 코딩

0개의 댓글