운영계획 페이지 작업중.
parent
199697a3c5
commit
f825579952
|
|
@ -22,9 +22,10 @@ public class FpiMgtController { // 외사경찰견문관리
|
|||
public ModelAndView monthPlanPage(@AuthenticationPrincipal UserInfo loginUser, BoardPlan boardPlan){
|
||||
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/monthPlan/monthPlan");
|
||||
mav.addObject("loginUser", loginUser);
|
||||
boardPlan.setWrtNm(loginUser.getUserNm());
|
||||
boardPlan.setQueryInfo();
|
||||
mav.addObject("monthPlanList", null);
|
||||
boardPlan.setContentCnt(0);
|
||||
mav.addObject("planList", monthPlanService.selectBoardPlanList(boardPlan));
|
||||
boardPlan.setContentCnt(monthPlanService.selectBoardPlanListCnt(boardPlan));
|
||||
boardPlan.setPaginationInfo();
|
||||
mav.addObject("searchParams", boardPlan);
|
||||
return mav;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.dbnt.faisp.fpiMgt.monthPlan;
|
||||
|
||||
|
||||
import com.dbnt.faisp.fpiMgt.monthPlan.mapper.MonthPlanMapper;
|
||||
import com.dbnt.faisp.fpiMgt.monthPlan.model.BoardPlan;
|
||||
import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanFile;
|
||||
import com.dbnt.faisp.fpiMgt.monthPlan.model.PlanMainInfo;
|
||||
|
|
@ -20,6 +21,7 @@ public class MonthPlanService {
|
|||
private final BoardPlanRepository boardPlanRepository;
|
||||
private final PlanFileRepository planFileRepository;
|
||||
private final PlanMainInfoRepository planMainInfoRepository;
|
||||
private final MonthPlanMapper monthPlanMapper;
|
||||
|
||||
public BoardPlan selectBoardPlan(Integer planKey) {
|
||||
BoardPlan savedPlan = boardPlanRepository.findById(planKey).orElse(null);
|
||||
|
|
@ -47,4 +49,12 @@ public class MonthPlanService {
|
|||
}
|
||||
return planSeq;
|
||||
}
|
||||
|
||||
public List<BoardPlan> selectBoardPlanList(BoardPlan boardPlan) {
|
||||
return monthPlanMapper.selectBoardPlanList(boardPlan);
|
||||
}
|
||||
|
||||
public Integer selectBoardPlanListCnt(BoardPlan boardPlan) {
|
||||
return monthPlanMapper.selectBoardPlanListCnt(boardPlan);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
package com.dbnt.faisp.fpiMgt.monthPlan.mapper;
|
||||
|
||||
import com.dbnt.faisp.fpiMgt.monthPlan.model.BoardPlan;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface MonthPlanMapper {
|
||||
|
||||
List<BoardPlan> selectBoardPlanList(BoardPlan boardPlan);
|
||||
|
||||
Integer selectBoardPlanListCnt(BoardPlan boardPlan);
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
package com.dbnt.faisp.fpiMgt.monthPlan.mapper;
|
||||
|
||||
import com.dbnt.faisp.menuMgt.model.MenuMgt;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface fpiMgtMapper {
|
||||
|
||||
List<MenuMgt> selectMenuMgtList(MenuMgt menuMgt);
|
||||
|
||||
Integer selectMenuMgtListCnt(MenuMgt menuMgt);
|
||||
|
||||
List<MenuMgt> selectAccessMenuListWhereUserSeq(Integer userSeq);
|
||||
}
|
||||
|
|
@ -49,7 +49,7 @@ public class BoardPlan extends BaseModel {
|
|||
@Column(name = "wrt_nm")
|
||||
private String wrtNm;
|
||||
@Column(name = "wrt_dt")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
|
||||
private LocalDateTime wrtDt;
|
||||
|
||||
@Transient
|
||||
|
|
|
|||
|
|
@ -0,0 +1,41 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="com.dbnt.faisp.fpiMgt.monthPlan.mapper.MonthPlanMapper">
|
||||
<select id="selectBoardPlanList" resultType="BoardPlan" parameterType="BoardPlan">
|
||||
select a.plan_key,
|
||||
a.content_title,
|
||||
a.plan_state,
|
||||
a.plan_dt,
|
||||
a.section_apprv,
|
||||
a.head_apprv,
|
||||
a.wrt_organ,
|
||||
a.wrt_nm,
|
||||
a.wrt_dt,
|
||||
b.file_seq
|
||||
from board_plan a
|
||||
left outer join (select plan_key,
|
||||
max(file_seq) as file_seq
|
||||
from plan_file
|
||||
group by plan_key) b
|
||||
on a.plan_key = b.plan_key
|
||||
<where>
|
||||
<if test='wrtNm != null and wrtNm != ""'>
|
||||
and a.wrt_nm = #{wrtNm}
|
||||
</if>
|
||||
</where>
|
||||
order by plan_key desc
|
||||
limit #{rowCnt} offset #{firstIndex}
|
||||
</select>
|
||||
<select id="selectBoardPlanListCnt" resultType="int" parameterType="BoardPlan">
|
||||
select count(*)
|
||||
from board_plan a
|
||||
<where>
|
||||
<if test='wrtNm != null and wrtNm != ""'>
|
||||
and a.wrt_nm = #{wrtNm}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
@ -13,70 +13,103 @@
|
|||
<div class="row mx-0">
|
||||
<div class="col-12 card text-center">
|
||||
<div class="card-body">
|
||||
<form method="get" th:action="@{/menuMgt/menuMgtPage}">
|
||||
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
|
||||
<div class="row justify-content-between pe-3 py-1">
|
||||
<div class="col-auto">
|
||||
<select class="form-select" name="rowCnt" id="rowCnt">
|
||||
<th:block th:each="num : ${#numbers.sequence(1,5)}">
|
||||
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="row justify-content-end">
|
||||
<div class="col-auto">
|
||||
<input type="text" class="form-control form-control-sm">
|
||||
<ul class="nav nav-tabs" id="userTab" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link active" id="monthPlanTab" data-bs-toggle="tab" data-bs-target="#monthPlanPanel" type="button" role="tab" aria-controls="monthPlanPanel" aria-selected="true">내 월간 계획</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="apprvStayTab" data-bs-toggle="tab" data-bs-target="#apprvStayPanel" type="button" role="tab" aria-controls="apprvStayPanel" aria-selected="false">결재대기목록</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="apprvCommitTab" data-bs-toggle="tab" data-bs-target="#apprvCommitPanel" type="button" role="tab" aria-controls="apprvCommitPanel" aria-selected="false">결재처리목록</button>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content border border-top-0 p-2" id="planContent">
|
||||
<form method="get" th:action="@{/menuMgt/menuMgtPage}">
|
||||
<input type="hidden" name="pageIndex" id="pageIndex" th:value="${searchParams.pageIndex}">
|
||||
<div class="row justify-content-between pe-3 py-1">
|
||||
<div class="col-auto">
|
||||
<select class="form-select" name="rowCnt" id="rowCnt">
|
||||
<th:block th:each="num : ${#numbers.sequence(1,5)}">
|
||||
<option th:value="${num*10}" th:text="${num*10}" th:selected="${searchParams.rowCnt eq num*10}"></option>
|
||||
</th:block>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="row justify-content-end">
|
||||
<div class="col-auto">
|
||||
<input type="text" class="form-control form-control-sm">
|
||||
</div>
|
||||
<input type="submit" class="btn btn-sm btn-primary col-auto" id="searchBtn" value="검색">
|
||||
</div>
|
||||
<input type="submit" class="btn btn-sm btn-primary col-auto" id="searchBtn" value="검색">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="row justify-content-start">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><input type="checkbox" class="allChk"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="row justify-content-between">
|
||||
<div class="col-auto"></div>
|
||||
<div class="col-auto">
|
||||
<nav aria-label="Page navigation">
|
||||
<ul class="pagination">
|
||||
<th:block th:if="${searchParams.pageIndex>3}">
|
||||
<li class="page-item" th:data-pageindex="${(searchParams.pageIndex)-3}">
|
||||
<a class="page-link" href="#" aria-label="Previous">
|
||||
<span aria-hidden="true">«</span>
|
||||
</a>
|
||||
</li>
|
||||
</th:block>
|
||||
<th:block th:each="num : ${#numbers.sequence(searchParams.startNum, searchParams.endNum)}">
|
||||
<li class="page-item" th:data-pageindex="${num}" th:classappend="${searchParams.pageIndex eq num?'active':''}">
|
||||
<a class="page-link" href="#" th:text="${num}"></a>
|
||||
</li>
|
||||
</th:block>
|
||||
<th:block th:if="${searchParams.maxNum>searchParams.endNum+2}">
|
||||
<li class="page-item" th:data-pageindex="${(searchParams.pageIndex)+3}">
|
||||
<a class="page-link" href="#" aria-label="Next">
|
||||
<span aria-hidden="true">»</span>
|
||||
</a>
|
||||
</li>
|
||||
</th:block>
|
||||
</ul>
|
||||
</nav>
|
||||
</form>
|
||||
<div class="row justify-content-start">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>제목</th>
|
||||
<th>시행일자</th>
|
||||
<th>작성자</th>
|
||||
<th>작성일시</th>
|
||||
<th>첨부파일</th>
|
||||
<th>상태</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr th:each="plan:${planList}">
|
||||
<td><input type="checkbox"></td>
|
||||
<td th:text="${plan.contentTitle}"></td>
|
||||
<td th:text="${#temporals.format(plan.planDt, 'yyyy-MM-dd')}"></td>
|
||||
<td th:text="${plan.wrtNm}"></td>
|
||||
<td th:text="${#temporals.format(plan.wrtDt, 'yyyy-MM-dd HH:mm')}"></td>
|
||||
<td></td>
|
||||
<td th:if="${plan.sectionApprv eq 'T'}">계장결재</td>
|
||||
<td th:if="${plan.sectionApprv eq 'F'}">계장반려</td>
|
||||
<td th:if="${plan.headApprv eq 'T'}">부장결재</td>
|
||||
<td th:if="${plan.headApprv eq 'F'}">부장반려</td>
|
||||
<td th:if="${plan.planState eq 'T'}">임시저장</td>
|
||||
<td th:if="${#strings.isEmpty(plan.sectionApprv) and #strings.isEmpty(plan.headApprv) and plan.planState eq 'S'}">결재대기</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="button" class="btn btn-success" value="등록" id="addPlanBtn">
|
||||
<div class="row justify-content-between">
|
||||
<div class="col-auto"></div>
|
||||
<div class="col-auto">
|
||||
<nav aria-label="Page navigation">
|
||||
<ul class="pagination">
|
||||
<th:block th:if="${searchParams.pageIndex>3}">
|
||||
<li class="page-item" th:data-pageindex="${(searchParams.pageIndex)-3}">
|
||||
<a class="page-link" href="#" aria-label="Previous">
|
||||
<span aria-hidden="true">«</span>
|
||||
</a>
|
||||
</li>
|
||||
</th:block>
|
||||
<th:block th:each="num : ${#numbers.sequence(searchParams.startNum, searchParams.endNum)}">
|
||||
<li class="page-item" th:data-pageindex="${num}" th:classappend="${searchParams.pageIndex eq num?'active':''}">
|
||||
<a class="page-link" href="#" th:text="${num}"></a>
|
||||
</li>
|
||||
</th:block>
|
||||
<th:block th:if="${searchParams.maxNum>searchParams.endNum+2}">
|
||||
<li class="page-item" th:data-pageindex="${(searchParams.pageIndex)+3}">
|
||||
<a class="page-link" href="#" aria-label="Next">
|
||||
<span aria-hidden="true">»</span>
|
||||
</a>
|
||||
</li>
|
||||
</th:block>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<input type="button" class="btn btn-success" value="등록" id="addPlanBtn">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -4,15 +4,16 @@
|
|||
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
|
||||
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
||||
<input type="hidden" name="planKey" th:value="${plan.planKey}">
|
||||
<input type="hidden" name="wrtOrgan" th:value="${plan.wrtOrgan}">
|
||||
<input type="hidden" name="planState" id="planState" th:value="${plan.planState}">
|
||||
<div class="mb-3 row">
|
||||
<label for="wrtNm" class="col-sm-2 col-form-label text-center">작성자</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="text" class="form-control" id="wrtNm" name="wrtNm" th:value="${plan.wrtNm}" readonly>
|
||||
</div>
|
||||
<label for="wrdDt" class="col-sm-2 col-form-label text-center">작성일</label>
|
||||
<label for="wrtDt" class="col-sm-2 col-form-label text-center">작성일시</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="text" class="form-control" id="wrdDt" name="wrdDt" th:value="${#temporals.format(plan.wrtDt, 'yyyy-MM-dd HH:mm')}" readonly>
|
||||
<input type="text" class="form-control" id="wrtDt" name="wrtDt" th:value="${#temporals.format(plan.wrtDt, 'yyyy-MM-dd HH:mm')}" readonly>
|
||||
</div>
|
||||
<label for="planDt" class="col-sm-2 col-form-label text-center">시행일자</label>
|
||||
<div class="col-sm-2">
|
||||
|
|
|
|||
Loading…
Reference in New Issue