월간계획 작업중.

강석 최 2022-09-05 18:02:09 +09:00
parent 3c638bb93b
commit 8e715cbab2
8 changed files with 341 additions and 0 deletions

View File

@ -0,0 +1,30 @@
package com.dbnt.faisp.controller;
import com.dbnt.faisp.fpiMgt.monthPlan.MonthPlanService;
import com.dbnt.faisp.fpiMgt.monthPlan.model.BoardPlan;
import com.dbnt.faisp.userInfo.model.UserInfo;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
@RestController
@RequiredArgsConstructor
@RequestMapping("/fpiMgt")
public class FpiMgtController { // 외사경찰견문관리
private final MonthPlanService monthPlanService;
@GetMapping("/monthPlanPage")
public ModelAndView monthPlanPage(@AuthenticationPrincipal UserInfo loginUser, BoardPlan boardPlan){
ModelAndView mav = new ModelAndView("igActivities/fpiMgt/monthPlan/monthPlan");
mav.addObject("loginUser", loginUser);
boardPlan.setQueryInfo();
mav.addObject("monthPlanList", null);
boardPlan.setContentCnt(0);
boardPlan.setPaginationInfo();
mav.addObject("searchParams", boardPlan);
return mav;
}
}

View File

@ -0,0 +1,10 @@
package com.dbnt.faisp.fpiMgt.monthPlan;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class MonthPlanService { // 월간계획
}

View File

@ -0,0 +1,16 @@
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);
}

View File

@ -0,0 +1,44 @@
package com.dbnt.faisp.fpiMgt.monthPlan.model;
import com.dbnt.faisp.config.BaseModel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.util.List;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "board_plan")
public class BoardPlan extends BaseModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "plan_key")
private Integer planKey;
@Column(name = "cat1_cd")
private String cat1Cd;
@Column(name = "cat2_cd")
private String cat2Cd;
@Column(name = "cat3_cd")
private String cat3Cd;
@Column(name = "menu_url")
private String menuUrl;
@Column(name = "approval_chk")
private String approvalChk;
@Transient
private List<BoardPlan> childList;
@Transient
private Integer cat1RowspanCnt;
@Transient
private Integer cat2RowspanCnt;
}

View File

@ -0,0 +1,44 @@
package com.dbnt.faisp.fpiMgt.monthPlan.model;
import com.dbnt.faisp.config.BaseModel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.util.List;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "board_plan")
public class PlanFile extends BaseModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "plan_key")
private Integer planKey;
@Column(name = "cat1_cd")
private String cat1Cd;
@Column(name = "cat2_cd")
private String cat2Cd;
@Column(name = "cat3_cd")
private String cat3Cd;
@Column(name = "menu_url")
private String menuUrl;
@Column(name = "approval_chk")
private String approvalChk;
@Transient
private List<PlanFile> childList;
@Transient
private Integer cat1RowspanCnt;
@Transient
private Integer cat2RowspanCnt;
}

View File

@ -0,0 +1,44 @@
package com.dbnt.faisp.fpiMgt.monthPlan.model;
import com.dbnt.faisp.config.BaseModel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.util.List;
@Getter
@Setter
@Entity
@NoArgsConstructor
@DynamicInsert
@DynamicUpdate
@Table(name = "board_plan")
public class PlanMainInfo extends BaseModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "plan_key")
private Integer planKey;
@Column(name = "cat1_cd")
private String cat1Cd;
@Column(name = "cat2_cd")
private String cat2Cd;
@Column(name = "cat3_cd")
private String cat3Cd;
@Column(name = "menu_url")
private String menuUrl;
@Column(name = "approval_chk")
private String approvalChk;
@Transient
private List<PlanMainInfo> childList;
@Transient
private Integer cat1RowspanCnt;
@Transient
private Integer cat2RowspanCnt;
}

View File

@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
</html>

View File

@ -0,0 +1,143 @@
<!DOCTYPE html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{layout/layout}">
<th:block layout:fragment="script">
<script type="text/javascript" th:src="@{/js/menuMgt/menuMgt.js}"></script>
</th:block>
<div layout:fragment="content">
<main class="pt-3">
<h4>운영계획서</h4>
<input type="hidden" name="_csrf_header" th:value="${_csrf.headerName}"/>
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<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" name="menuUrl" placeholder="url" th:value="${searchParams.menuUrl}">
</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">&laquo;</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">&raquo;</span>
</a>
</li>
</th:block>
</ul>
</nav>
</div>
<div class="col-auto">
<input type="button" class="btn btn-success" value="등록" id="addMenuBtn" data-bs-toggle="modal" data-bs-target="#monthPlanModal">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<div class="modal fade" id="monthPlanModal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="monthPlanModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content" id="menuEditModalContent">
<div class="modal-header">
<h5 class="modal-title" id="staticBackdropLabel">월간 계획 작성</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="mb-3 row">
<label for="ogCd" class="col-sm-2 col-form-label text-center">작성자</label>
<div class="col-sm-2">
<input type="text" class="form-control" id="trCareer" name="trCareer">
</div>
<label for="ofcCd" class="col-sm-2 col-form-label text-center">작성일</label>
<div class="col-sm-2">
<input type="text" class="form-control" id="trCareer" name="trCareer">
</div>
<label for="ofcCd" class="col-sm-2 col-form-label text-center">시행일자</label>
<div class="col-sm-2">
<input type="text" class="form-control" id="trCareer" name="trCareer">
</div>
</div>
<div class="mb-3 row">
<label for="ogCd" class="col-sm-2 col-form-label text-center">제목</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="trCareer" name="trCareer">
</div>
</div>
<div class="mb-3 row">
<label for="ogCd" class="col-sm-2 col-form-label text-center">주요 사업계획</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="trCareer" name="trCareer">
</div>
</div>
<div class="mb-3 row">
<label for="ogCd" class="col-sm-2 col-form-label text-center">사업개요 및 추진계획</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="trCareer" name="trCareer">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
<button type="button" class="btn btn-warning">임시저장</button>
<button type="button" class="btn btn-primary">저장</button>
</div>
</div>
</div>
</div>
</div>
</html>