기관/부서 관련 수정
parent
95ddf1a469
commit
d07b60bd6a
@ -1,49 +0,0 @@
|
||||
package cokr.xit.base.user.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import cokr.xit.base.user.Sigungu;
|
||||
import cokr.xit.base.user.SigunguQuery;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**시군구 관리 서비스 인터페이스.
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-10-06 mjkhan 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
public interface SigunguService {
|
||||
/**지정한 조건에 따라 시군구 목록을 조회하여 반환한다.
|
||||
* @param req 시군구 조회 조건
|
||||
* @return 시군구 목록
|
||||
*/
|
||||
List<DataObject> getSigunguList(SigunguQuery req);
|
||||
|
||||
/**시군구 정보를 등록한다.
|
||||
* @param sigungu 시군구
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
boolean create(Sigungu sigungu);
|
||||
|
||||
/**시군구 정보를 수정한다.
|
||||
* @param sigungu 시군구
|
||||
* @return 저장 여부
|
||||
* <ul><li>저장됐으면 true</li>
|
||||
* <li>그렇지 않으면 false</li>
|
||||
* </ul>
|
||||
*/
|
||||
boolean update(Sigungu sigungu);
|
||||
|
||||
/**시군구 정보를 삭제한다.
|
||||
* @param sggIDs 시군구 아이디
|
||||
* @return 저장된 정보수
|
||||
*/
|
||||
int remove(String... sggIDs);
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
package cokr.xit.base.user.service.bean;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import cokr.xit.base.user.Department;
|
||||
import cokr.xit.base.user.DepartmentQuery;
|
||||
import cokr.xit.base.user.service.DepartmentService;
|
||||
import cokr.xit.foundation.component.AbstractServiceBean;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**부서 정보 서비스 구현체.
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-10-06 mjkhan 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
@Service("departmentService")
|
||||
public class DepartmentServiceBean extends AbstractServiceBean implements DepartmentService {
|
||||
/** 부서 정보 정보 Bean */
|
||||
@Resource(name = "departmentBean")
|
||||
private DepartmentBean departmentBean;
|
||||
|
||||
@Override
|
||||
public List<DataObject> getDepartmentList(DepartmentQuery req) {
|
||||
return departmentBean.getDepartmentList(req);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean create(Department department) {
|
||||
return departmentBean.create(department);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean update(Department department) {
|
||||
return departmentBean.update(department);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int remove(String sggID, String... deptIDs) {
|
||||
return departmentBean.remove(sggID, deptIDs);
|
||||
}
|
||||
}
|
@ -0,0 +1,80 @@
|
||||
package cokr.xit.base.user.service.bean;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import cokr.xit.base.user.Department;
|
||||
import cokr.xit.base.user.DepartmentQuery;
|
||||
import cokr.xit.base.user.Sigungu;
|
||||
import cokr.xit.base.user.SigunguQuery;
|
||||
import cokr.xit.base.user.service.SigunguDepartmentService;
|
||||
import cokr.xit.foundation.component.AbstractServiceBean;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**시군구 / 부서 정보 서비스 구현체.
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-10-06 mjkhan 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
@Service("sigunguDepartmentService")
|
||||
public class SigunguDepartmentServiceBean extends AbstractServiceBean implements SigunguDepartmentService {
|
||||
/** 시군구 정보 Bean */
|
||||
@Resource(name = "sigunguBean")
|
||||
private SigunguBean sigunguBean;
|
||||
/** 부서 정보 정보 Bean */
|
||||
@Resource(name = "departmentBean")
|
||||
private DepartmentBean departmentBean;
|
||||
|
||||
@Override
|
||||
public List<DataObject> getSigunguList(SigunguQuery req) {
|
||||
return sigunguBean.getSigunguList(req);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean create(Sigungu sigungu) {
|
||||
return sigunguBean.create(sigungu);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean update(Sigungu sigungu) {
|
||||
return sigunguBean.update(sigungu);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int remove(String... sggIDs) {
|
||||
return sigunguBean.remove(sggIDs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DataObject> getDepartmentList(DepartmentQuery req) {
|
||||
return departmentBean.getDepartmentList(req);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DataObject> getSggDepts() {
|
||||
return departmentBean.getSggDepts();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean create(Department department) {
|
||||
return departmentBean.create(department);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean update(Department department) {
|
||||
return departmentBean.update(department);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int remove(String sggID, String... deptIDs) {
|
||||
return departmentBean.remove(sggID, deptIDs);
|
||||
}
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
package cokr.xit.base.user.service.bean;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import cokr.xit.base.user.Sigungu;
|
||||
import cokr.xit.base.user.SigunguQuery;
|
||||
import cokr.xit.base.user.service.SigunguService;
|
||||
import cokr.xit.foundation.component.AbstractServiceBean;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
|
||||
/**시군구 서비스 구현체.
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-10-06 mjkhan 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
@Service("sigunguService")
|
||||
public class SigunguServiceBean extends AbstractServiceBean implements SigunguService {
|
||||
/** 시군구 정보 Bean */
|
||||
@Resource(name = "sigunguBean")
|
||||
private SigunguBean sigunguBean;
|
||||
|
||||
@Override
|
||||
public List<DataObject> getSigunguList(SigunguQuery req) {
|
||||
return sigunguBean.getSigunguList(req);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean create(Sigungu sigungu) {
|
||||
return sigunguBean.create(sigungu);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean update(Sigungu sigungu) {
|
||||
return sigunguBean.update(sigungu);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int remove(String... sggIDs) {
|
||||
return sigunguBean.remove(sggIDs);
|
||||
}
|
||||
}
|
@ -1,104 +0,0 @@
|
||||
package cokr.xit.base.user.web;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import cokr.xit.base.user.Department;
|
||||
import cokr.xit.base.user.DepartmentQuery;
|
||||
import cokr.xit.base.user.service.DepartmentService;
|
||||
import cokr.xit.foundation.web.AbstractController;
|
||||
|
||||
/**부서 정보 서비스의 웹 컨트롤러
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-10-06 mjkhan 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
@RequestMapping(name = "부서 정보", value = "/department")
|
||||
public class DepartmentController extends AbstractController {
|
||||
/**부서 정보 서비스*/
|
||||
@Resource(name = "departmentService")
|
||||
private DepartmentService departmentService;
|
||||
|
||||
/**부서 정보 관리 메인화면(department/department-main)을 연다.
|
||||
* 조건없는 {@link #getDepartmentList(DepartmentQuery) 부서 정보 조회 결과}를 포함시킨다.
|
||||
* @return /department/department-main
|
||||
*/
|
||||
@RequestMapping(name = "부서 정보 메인", value = "/main.do")
|
||||
public ModelAndView main() {
|
||||
ModelAndView mav = getDepartmentList(new DepartmentQuery().setPageNum(1));
|
||||
mav.setViewName("/department/department-main");
|
||||
return mav.addObject("departmentList", toJson(mav.getModel().get("departmentList")));
|
||||
}
|
||||
|
||||
/**부서 정보 목록을 조회하여 반환한다.<br />
|
||||
* {@link DepartmentService#getDepartmentList(DepartmentQuery)} 참고
|
||||
* @param req 부서 정보 조회 조건
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "departmentList": [부서 정보 목록]
|
||||
* "departmentStart": 부서 정보 목록 시작 인덱스
|
||||
* "departmentFetch": 한 번에 가져오는 부서 정보 목록 수
|
||||
* "departmentTotal": 조회 결과 찾은 전체 부서 정보 수
|
||||
* }</code></pre>
|
||||
*/
|
||||
@RequestMapping(name = "부서 정보 조회", value = "/list.do")
|
||||
public ModelAndView getDepartmentList(DepartmentQuery req) {
|
||||
List<?> result = departmentService.getDepartmentList(setFetchSize(req));
|
||||
return setCollectionInfo(new ModelAndView("jsonView"), result, "department");
|
||||
}
|
||||
|
||||
/**부서 정보를 등록한다.
|
||||
* @param department 부서 정보 정보
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "saved": 등록되었으면 true, 그렇지 않으면 false
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name = "부서 정보 등록", value = "/create.do")
|
||||
public ModelAndView create(Department department) {
|
||||
boolean saved = departmentService.create(department);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("saved", saved);
|
||||
}
|
||||
|
||||
/**부서 정보 정보를 수정한다.
|
||||
* @param department 부서 정보 정보
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "saved": 수정되었으면 true, 그렇지 않으면 false
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name = "부서 정보 수정", value = "/update.do")
|
||||
public ModelAndView update(Department department) {
|
||||
boolean saved = departmentService.update(department);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("saved", saved);
|
||||
}
|
||||
|
||||
/**지정한 부서 정보를 제거한다.
|
||||
* @param sggID 시군구 코드
|
||||
* @param deptIDs 부서 코드
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "affected": 저장된 정보수
|
||||
* "saved": 저장되었으면 true, 그렇지 않으면 false
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name = "부서 정보 제거", value = "/remove.do")
|
||||
public ModelAndView remove(String sggID, String... deptIDs) {
|
||||
int affected = departmentService.remove(sggID, deptIDs);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("affected", affected)
|
||||
.addObject("saved", affected > 0);
|
||||
}
|
||||
}
|
@ -1,103 +0,0 @@
|
||||
package cokr.xit.base.user.web;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import cokr.xit.base.user.Sigungu;
|
||||
import cokr.xit.base.user.SigunguQuery;
|
||||
import cokr.xit.base.user.service.SigunguService;
|
||||
import cokr.xit.foundation.web.AbstractController;
|
||||
|
||||
/**시군구 서비스의 웹 컨트롤러
|
||||
*
|
||||
* <p>상세 설명:
|
||||
*
|
||||
* <pre>
|
||||
* ============ 변경 이력 ============
|
||||
* 2023-10-06 mjkhan 최초 작성
|
||||
* ================================
|
||||
* </pre>
|
||||
*/
|
||||
@RequestMapping(name = "시군구", value = "/sigungu")
|
||||
public class SigunguController extends AbstractController {
|
||||
/**시군구 서비스*/
|
||||
@Resource(name = "sigunguService")
|
||||
private SigunguService sigunguService;
|
||||
|
||||
/**시군구 관리 메인화면(sigungu/sigungu-main)을 연다.
|
||||
* 조건없는 {@link #getSigunguList(SigunguQuery) 시군구 조회 결과}를 포함시킨다.
|
||||
* @return /sigungu/sigungu-main
|
||||
*/
|
||||
@RequestMapping(name = "시군구 메인", value = "/main.do")
|
||||
public ModelAndView main() {
|
||||
ModelAndView mav = getSigunguList(new SigunguQuery().setPageNum(1));
|
||||
mav.setViewName("/sigungu/sigungu-main");
|
||||
return mav.addObject("sigunguList", toJson(mav.getModel().get("sigunguList")));
|
||||
}
|
||||
|
||||
/**시군구 목록을 조회하여 반환한다.<br />
|
||||
* {@link SigunguService#getSigunguList(SigunguQuery)} 참고
|
||||
* @param req 시군구 조회 조건
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "sigunguList": [시군구 목록]
|
||||
* "sigunguStart": 시군구 목록 시작 인덱스
|
||||
* "sigunguFetch": 한 번에 가져오는 시군구 목록 수
|
||||
* "sigunguTotal": 조회 결과 찾은 전체 시군구 수
|
||||
* }</code></pre>
|
||||
*/
|
||||
@RequestMapping(name = "시군구 조회", value = "/list.do")
|
||||
public ModelAndView getSigunguList(SigunguQuery req) {
|
||||
List<?> result = sigunguService.getSigunguList(setFetchSize(req));
|
||||
return setCollectionInfo(new ModelAndView("jsonView"), result, "sigungu");
|
||||
}
|
||||
|
||||
/**시군구를 등록한다.
|
||||
* @param sigungu 시군구 정보
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "saved": 등록되었으면 true, 그렇지 않으면 false
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name = "시군구 등록", value = "/create.do")
|
||||
public ModelAndView create(Sigungu sigungu) {
|
||||
boolean saved = sigunguService.create(sigungu);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("saved", saved);
|
||||
}
|
||||
|
||||
/**시군구 정보를 수정한다.
|
||||
* @param sigungu 시군구 정보
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "saved": 수정되었으면 true, 그렇지 않으면 false
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name = "시군구 수정", value = "/update.do")
|
||||
public ModelAndView update(Sigungu sigungu) {
|
||||
boolean saved = sigunguService.update(sigungu);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("saved", saved);
|
||||
}
|
||||
|
||||
/**지정한 시군구를 제거한다.
|
||||
* @param sigunguIDs 시군구 아이디
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "affected": 저장된 정보수
|
||||
* "saved": 저장되었으면 true, 그렇지 않으면 false
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name = "시군구 제거", value = "/remove.do")
|
||||
public ModelAndView remove(String... sggIDs) {
|
||||
int affected = sigunguService.remove(sggIDs);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("affected", affected)
|
||||
.addObject("saved", affected > 0);
|
||||
}
|
||||
}
|
@ -0,0 +1,180 @@
|
||||
package cokr.xit.base.user.web;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import cokr.xit.base.user.Department;
|
||||
import cokr.xit.base.user.DepartmentQuery;
|
||||
import cokr.xit.base.user.Sigungu;
|
||||
import cokr.xit.base.user.SigunguQuery;
|
||||
import cokr.xit.base.user.service.SigunguDepartmentService;
|
||||
import cokr.xit.foundation.data.DataObject;
|
||||
import cokr.xit.foundation.web.AbstractController;
|
||||
|
||||
@RequestMapping(name = "시군구 부서정보", value = "/user")
|
||||
public class SigunguDepartmentController<S extends Sigungu, D extends Department> extends AbstractController {
|
||||
/**시군구 / 부서 서비스*/
|
||||
@Resource(name = "sigunguDepartmentService")
|
||||
private SigunguDepartmentService sggDeptService;
|
||||
|
||||
@RequestMapping(name = "시군구 부서 메인", value = "/sgg-dept.do")
|
||||
public ModelAndView main() {
|
||||
ModelAndView mav = getSigunguList(new SigunguQuery().setPageNum(1).setIncludeAll(true));
|
||||
mav.setViewName("base/user/sgg-dept");
|
||||
Map<String, Object> model = mav.getModel();
|
||||
|
||||
mav.addObject("sggList", toJson(model.remove("sggList")));
|
||||
mav.addObject("deptList", toJson(model.remove("deptList")));
|
||||
return mav;
|
||||
}
|
||||
|
||||
/**시군구 목록을 조회하여 반환한다.<br />
|
||||
* {@link SigunguService#getSigunguList(SigunguQuery)} 참고
|
||||
* @param req 시군구 조회 조건
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "sggList": [시군구 목록]
|
||||
* "sggStart": 시군구 목록 시작 인덱스
|
||||
* "sggFetch": 한 번에 가져오는 시군구 목록 수
|
||||
* "sggTotal": 조회 결과 찾은 전체 시군구 수
|
||||
* }</code></pre>
|
||||
*/
|
||||
@RequestMapping(name = "시군구 조회", value = "/sgg/list.do")
|
||||
public ModelAndView getSigunguList(SigunguQuery req) {
|
||||
List<DataObject> sggList = sggDeptService.getSigunguList(setFetchSize(req));
|
||||
ModelAndView mav = setCollectionInfo(new ModelAndView("jsonView"), sggList, "sgg");
|
||||
|
||||
String sggID = !sggList.isEmpty() ? sggList.get(0).string("SGG_CD") : "";
|
||||
return mav.addAllObjects(getDepartmentList(new DepartmentQuery().setSggID(sggID)).getModel());
|
||||
}
|
||||
|
||||
@RequestMapping(name = "시군구 정보", value = "/sgg/info.do")
|
||||
public ModelAndView getSigunguInfo() {
|
||||
return new ModelAndView("base/user/sgg-info");
|
||||
}
|
||||
|
||||
/**시군구를 등록한다.
|
||||
* @param sigungu 시군구 정보
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "saved": 등록되었으면 true, 그렇지 않으면 false
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name = "시군구 등록", value = "/sgg/create.do")
|
||||
public ModelAndView create(S sigungu) {
|
||||
boolean saved = sggDeptService.create(sigungu);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("saved", saved);
|
||||
}
|
||||
|
||||
/**시군구 정보를 수정한다.
|
||||
* @param sigungu 시군구 정보
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "saved": 수정되었으면 true, 그렇지 않으면 false
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name = "시군구 수정", value = "/sgg/update.do")
|
||||
public ModelAndView update(S sigungu) {
|
||||
boolean saved = sggDeptService.update(sigungu);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("saved", saved);
|
||||
}
|
||||
|
||||
/**지정한 시군구를 제거한다.
|
||||
* @param sigunguIDs 시군구 아이디
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "affected": 저장된 정보수
|
||||
* "saved": 저장되었으면 true, 그렇지 않으면 false
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name = "시군구 제거", value = "/sgg/remove.do")
|
||||
public ModelAndView remove(String... sggIDs) {
|
||||
int affected = sggDeptService.remove(sggIDs);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("affected", affected)
|
||||
.addObject("saved", affected > 0);
|
||||
}
|
||||
|
||||
/**부서정보 목록을 조회하여 반환한다.<br />
|
||||
* {@link DepartmentService#getDepartmentList(DepartmentQuery)} 참고
|
||||
* @param req 부서정보 조회 조건
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "deptList": [부서정보 목록]
|
||||
* "deptStart": 부서정보 목록 시작 인덱스
|
||||
* "deptFetch": 한 번에 가져오는 부서정보 목록 수
|
||||
* "deptTotal": 조회 결과 찾은 전체 부서정보 수
|
||||
* }</code></pre>
|
||||
*/
|
||||
@RequestMapping(name = "부서정보 조회", value = "/dept/list.do")
|
||||
public ModelAndView getDepartmentList(DepartmentQuery req) {
|
||||
List<?> result = sggDeptService.getDepartmentList(setFetchSize(req));
|
||||
return setCollectionInfo(new ModelAndView("jsonView"), result, "dept");
|
||||
}
|
||||
|
||||
@RequestMapping(name = "시군구 부서 선택", value = "/dept/select.do")
|
||||
public ModelAndView selectSggDepts() {
|
||||
List<DataObject> list = sggDeptService.getSggDepts();
|
||||
for (int i = 0; i < list.size(); ++i)
|
||||
list.get(i).put("dataKey", i + 1);
|
||||
return new ModelAndView("base/user/select-sggDepts").addObject("sggDepts", toJson(list));
|
||||
}
|
||||
|
||||
@RequestMapping(name = "부서정보", value = "/dept/info.do")
|
||||
public ModelAndView getDepartmentInfo() {
|
||||
return new ModelAndView("base/user/dept-info");
|
||||
}
|
||||
|
||||
/**부서정보를 등록한다.
|
||||
* @param department 부서정보 정보
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "saved": 등록되었으면 true, 그렇지 않으면 false
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name = "부서정보 등록", value = "/dept/create.do")
|
||||
public ModelAndView create(D department) {
|
||||
boolean saved = sggDeptService.create(department);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("saved", saved);
|
||||
}
|
||||
|
||||
/**부서정보 정보를 수정한다.
|
||||
* @param department 부서정보 정보
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "saved": 수정되었으면 true, 그렇지 않으면 false
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name = "부서정보 수정", value = "/dept/update.do")
|
||||
public ModelAndView update(D department) {
|
||||
boolean saved = sggDeptService.update(department);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("saved", saved);
|
||||
}
|
||||
|
||||
/**지정한 부서정보를 제거한다.
|
||||
* @param sggID 시군구 코드
|
||||
* @param deptIDs 부서 코드
|
||||
* @return jsonView
|
||||
* <pre><code> {
|
||||
* "affected": 저장된 정보수
|
||||
* "saved": 저장되었으면 true, 그렇지 않으면 false
|
||||
* }</code></pre>
|
||||
*/
|
||||
@PostMapping(name = "부서정보 제거", value = "/dept/remove.do")
|
||||
public ModelAndView remove(String sggID, String... deptIDs) {
|
||||
int affected = sggDeptService.remove(sggID, deptIDs);
|
||||
return new ModelAndView("jsonView")
|
||||
.addObject("affected", affected)
|
||||
.addObject("saved", affected > 0);
|
||||
}
|
||||
}
|
@ -0,0 +1,111 @@
|
||||
<?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="cokr.xit.base.user.dao.DepartmentMapper">
|
||||
|
||||
<!-- 부서 정보 정보 매퍼
|
||||
========== 변경 이력 ==========
|
||||
2023-10-06 mjkhan 최초 작성
|
||||
============================ -->
|
||||
|
||||
<resultMap id="deptRow" type="cokr.xit.base.user.Department"> <!-- 부서 정보 -->
|
||||
<result property="deptID" column="DEPT_CD" /> <!-- 부서 코드 -->
|
||||
<result property="sggID" column="SGG_CD" /> <!-- 시군구 코드 -->
|
||||
<result property="instCode" column="INST_CD" /> <!-- 기관 코드 -->
|
||||
<result property="name" column="DEPT_NM" /> <!-- 부서 명 -->
|
||||
<result property="telno" column="DEPT_TELNO" /> <!-- 부서 전화번호 -->
|
||||
<result property="faxno" column="DEPT_FXNO" /> <!-- 부서 팩스번호 -->
|
||||
<result property="useYN" column="USE_YN" /> <!-- 사용 여부 -->
|
||||
<result property="createdAt" column="REG_DT" /> <!-- 등록 일시 -->
|
||||
<result property="createdBy" column="RGTR" /> <!-- 등록자 -->
|
||||
<result property="lastModified" column="MDFCN_DT" /> <!-- 수정 일시 -->
|
||||
<result property="modifiedBy" column="MDFR" /> <!-- 수정자 -->
|
||||
</resultMap>
|
||||
|
||||
<sql id="select">SELECT DEPT_CD <!-- 부서 코드 -->
|
||||
, SGG_CD <!-- 시군구 코드 -->
|
||||
, INST_CD <!-- 기관 코드 -->
|
||||
, DEPT_NM <!-- 부서 명 -->
|
||||
, DEPT_TELNO <!-- 부서 전화번호 -->
|
||||
, DEPT_FXNO <!-- 부서 팩스번호 -->
|
||||
, USE_YN <!-- 사용 여부 -->
|
||||
, REG_DT <!-- 등록 일시 -->
|
||||
, RGTR <!-- 등록자 -->
|
||||
, MDFCN_DT <!-- 수정 일시 -->
|
||||
, MDFR <!-- 수정자 -->
|
||||
FROM TB_DEPT</sql>
|
||||
|
||||
<select id="selectDepartmentList" parameterType="map" resultType="dataobject">/* 부서 정보 목록 조회(departmentMapper.selectDepartmentList) */
|
||||
<include refid="utility.paging-prefix" />
|
||||
<include refid="select" />
|
||||
<where><if test="by != null and term != null"> AND ${by} LIKE CONCAT('%', #{term}, '%')</if>
|
||||
<if test="sggID != null"> AND SGG_CD = #{sggID}</if>
|
||||
<if test="instCode != null"> AND INST_CD = #{instCode}</if>
|
||||
<if test="deptIDs != null"> AND DEPT_CD IN (<foreach collection="deptIDs" item="deptID" separator=",">#{deptID}</foreach>)</if>
|
||||
<if test="!includeAll"> AND USE_YN = 'Y'</if>
|
||||
</where>
|
||||
<include refid="utility.orderBy" />
|
||||
<include refid="utility.paging-suffix" /></select>
|
||||
|
||||
<select id="selectDepartments" parameterType="map" resultMap="deptRow">/* 부서 정보 객체 가져오기(departmentMapper.selectDepartments) */
|
||||
<include refid="select" />
|
||||
WHERE SGG_CD = #{sggID}
|
||||
<if test="deptIDs != null">AND DEPT_CD IN (<foreach collection="deptIDs" item="deptID" separator=",">#{deptID}</foreach>)</if>
|
||||
<include refid="utility.orderBy" /></select>
|
||||
|
||||
<sql id="sggDepts">SELECT A.SGG_CD, SGG_NM, A.INST_CD, INST_NM, DEPT_CD, DEPT_NM
|
||||
FROM TB_SGG A, TB_DEPT B
|
||||
WHERE A.USE_YN = 'Y'
|
||||
AND B.USE_YN = 'Y'
|
||||
AND A.SGG_CD = B.SGG_CD
|
||||
AND A.INST_CD = B.INST_CD</sql>
|
||||
|
||||
<select id="selectSggDepts" resultType="dataobject"><include refid="sggDepts" />
|
||||
ORDER BY A.SGG_CD, A.INST_CD, DEPT_CD</select>
|
||||
|
||||
<insert id="insert" parameterType="cokr.xit.base.user.Department">/* 부서 정보 등록(departmentMapper.insert) */
|
||||
INSERT INTO TB_DEPT (
|
||||
DEPT_CD <!-- 부서 코드 -->
|
||||
, SGG_CD <!-- 시군구 코드 -->
|
||||
, INST_CD <!-- 기관 코드 -->
|
||||
, DEPT_NM <!-- 부서 명 -->
|
||||
, DEPT_TELNO <!-- 부서 전화번호 -->
|
||||
, DEPT_FXNO <!-- 부서 팩스번호 -->
|
||||
, USE_YN <!-- 사용 여부 -->
|
||||
, REG_DT <!-- 등록 일시 -->
|
||||
, RGTR <!-- 등록자 -->
|
||||
, MDFCN_DT <!-- 수정 일시 -->
|
||||
, MDFR <!-- 수정자 -->
|
||||
) VALUES (
|
||||
#{deptID} <!-- 부서 코드 -->
|
||||
, #{sggID} <!-- 시군구 코드 -->
|
||||
, #{instCode} <!-- 기관 코드 -->
|
||||
, #{name} <!-- 부서 명 -->
|
||||
, #{telno} <!-- 부서 전화번호 -->
|
||||
, #{faxno} <!-- 부서 팩스번호 -->
|
||||
, #{useYN} <!-- 사용 여부 -->
|
||||
, #{createdAt} <!-- 등록 일시 -->
|
||||
, #{createdBy} <!-- 등록자 -->
|
||||
, #{lastModified} <!-- 수정 일시 -->
|
||||
, #{modifiedBy} <!-- 수정자 -->
|
||||
)</insert>
|
||||
|
||||
<update id="update" parameterType="cokr.xit.base.user.Department">/* 부서 정보 수정(departmentMapper.update) */
|
||||
UPDATE TB_DEPT
|
||||
SET SGG_CD = #{sggID} <!-- 시군구 코드 -->
|
||||
, INST_CD = #{instCode} <!-- 기관 코드 -->
|
||||
, DEPT_NM = #{name} <!-- 부서 명 -->
|
||||
, DEPT_TELNO = #{telno} <!-- 부서 전화번호 -->
|
||||
, DEPT_FXNO = #{faxno} <!-- 부서 팩스번호 -->
|
||||
, MDFCN_DT = #{lastModified} <!-- 수정 일시 -->
|
||||
, MDFR = #{modifiedBy} <!-- 수정자 -->
|
||||
WHERE DEPT_CD = #{deptID}</update>
|
||||
|
||||
<update id="delete" parameterType="map">/* 부서 정보 삭제(departmentMapper.deleteDepartment) */
|
||||
UPDATE TB_DEPT
|
||||
SET USE_YN = 'N'
|
||||
, MDFCN_DT =<include refid="utility.now" />
|
||||
, MDFR = #{currentUser.id}
|
||||
<where><if test="sggIDs != null"> AND SGG_CD IN (<foreach collection="sggIDs" item="sggID" separator=",">#{sggID}</foreach>)</if>
|
||||
<if test="deptIDs != null"> AND DEPT_CD IN (<foreach collection="deptIDs" item="deptID" separator=",">#{deptID}</foreach>)</if></where></update>
|
||||
|
||||
</mapper>
|
@ -0,0 +1,121 @@
|
||||
<?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="cokr.xit.base.user.dao.SigunguMapper">
|
||||
|
||||
<!-- 시군구 정보 매퍼
|
||||
========== 변경 이력 ==========
|
||||
2023-10-06 mjkhan 최초 작성
|
||||
============================ -->
|
||||
|
||||
<resultMap id="sggRow" type="cokr.xit.base.user.Sigungu"> <!-- 시군구 -->
|
||||
<result property="sggID" column="SGG_CD" /> <!-- 시군구 코드 -->
|
||||
<result property="sggName" column="SGG_NM" /> <!-- 시군구 이름 -->
|
||||
<result property="instCode" column="INST_CD" /> <!-- 기관 코드 -->
|
||||
<result property="instType" column="INST_SE_CD" /> <!-- 기관 구분 -->
|
||||
<result property="instName" column="INST_NM" /> <!-- 기관 명 -->
|
||||
<result property="instAddress" column="INST_ADDR" /> <!-- 기관 주소 -->
|
||||
<result property="instDetailAddress" column="INST_DADDR" /> <!-- 기관 상세주소 -->
|
||||
<result property="instZipCode" column="INST_ZIP" /> <!-- 기관 우편번호 -->
|
||||
<result property="officialSealFilepath" column="OFFCS_FILE_PATH" /> <!-- 직인 파일 경로 -->
|
||||
<result property="officialSealFilename" column="OFFCS_FILE_NM" /> <!-- 직인 파일 명 -->
|
||||
<result property="useYN" column="USE_YN" /> <!-- 사용 여부 -->
|
||||
<result property="createdAt" column="REG_DT" /> <!-- 등록 일시 -->
|
||||
<result property="createdBy" column="RGTR" /> <!-- 등록자 -->
|
||||
<result property="lastModified" column="MDFCN_DT" /> <!-- 수정 일시 -->
|
||||
<result property="modifiedBy" column="MDFR" /> <!-- 수정자 -->
|
||||
</resultMap>
|
||||
|
||||
<sql id="select">SELECT SGG_CD <!-- 시군구 코드 -->
|
||||
, SGG_NM <!-- 시군구 이름 -->
|
||||
, INST_CD <!-- 기관 코드 -->
|
||||
, INST_SE_CD <!-- 기관 구분 -->
|
||||
, INST_NM <!-- 기관 명 -->
|
||||
, INST_ADDR <!-- 기관 주소 -->
|
||||
, INST_DADDR <!-- 기관 상세주소 -->
|
||||
, INST_ZIP <!-- 기관 우편번호 -->
|
||||
, OFFCS_FILE_PATH <!-- 직인 파일 경로 -->
|
||||
, OFFCS_FILE_NM <!-- 직인 파일 명 -->
|
||||
, USE_YN <!-- 사용 여부 -->
|
||||
, REG_DT <!-- 등록 일시 -->
|
||||
, RGTR <!-- 등록자 -->
|
||||
, MDFCN_DT <!-- 수정 일시 -->
|
||||
, MDFR <!-- 수정자 -->
|
||||
FROM TB_SGG</sql>
|
||||
|
||||
<select id="selectSigunguList" parameterType="map" resultType="dataobject">/* 시군구 목록 조회(sigunguMapper.selectSigunguList) */
|
||||
<include refid="utility.paging-prefix" />
|
||||
<include refid="select" />
|
||||
<where><if test="by != null and term != null"> AND ${by} LIKE CONCAT('%', #{term}, '%')</if>
|
||||
<if test="sggIDs != null"> AND SGG_CD IN (<foreach collection="sggIDs" item="sggID" separator=",">#{sggID}</foreach>)</if>
|
||||
<if test="instCodes != null"> AND INST_CD IN (<foreach collection="instCodes" item="instCode" separator=",">#{instCode}</foreach>)</if>
|
||||
<if test="!includeAll">AND USE_YN = 'Y'</if></where>
|
||||
<include refid="utility.orderBy" />
|
||||
<include refid="utility.paging-suffix" /></select>
|
||||
|
||||
<select id="selectSigungus" parameterType="map" resultMap="sggRow">/* 시군구 객체 가져오기(sigunguMapper.selectSigungus) */
|
||||
<include refid="select" />
|
||||
<where><if test="by != null and term != null"> AND ${by} LIKE CONCAT('%', #{term}, '%')</if>
|
||||
<if test="sggIDs != null">AND SGG_CD IN (<foreach collection="sggIDs" item="sggID" separator=",">#{sggID}</foreach>)</if>
|
||||
<if test="instCodes != null">AND INST_CD IN (<foreach collection="instCodes" item="instCode" separator=",">#{instCode}</foreach>)</if>
|
||||
<if test="!includeAll"> AND USE_YN = 'Y'</if></where>
|
||||
</select>
|
||||
|
||||
<insert id="insert" parameterType="cokr.xit.base.user.Sigungu">/* 시군구 등록(sigunguMapper.insert) */
|
||||
INSERT INTO TB_SGG (
|
||||
SGG_CD <!-- 시군구 코드 -->
|
||||
, SGG_NM <!-- 시군구 이름 -->
|
||||
, INST_CD <!-- 기관 코드 -->
|
||||
, INST_SE_CD <!-- 기관 구분 -->
|
||||
, INST_NM <!-- 기관 명 -->
|
||||
, INST_ADDR <!-- 기관 주소 -->
|
||||
, INST_DADDR <!-- 기관 상세주소 -->
|
||||
, INST_ZIP <!-- 기관 우편번호 -->
|
||||
, OFFCS_FILE_PATH <!-- 직인 파일 경로 -->
|
||||
, OFFCS_FILE_NM <!-- 직인 파일 명 -->
|
||||
, USE_YN <!-- 사용 여부 -->
|
||||
, REG_DT <!-- 등록 일시 -->
|
||||
, RGTR <!-- 등록자 -->
|
||||
, MDFCN_DT <!-- 수정 일시 -->
|
||||
, MDFR <!-- 수정자 -->
|
||||
) VALUES (
|
||||
#{sggID} <!-- 시군구 코드 -->
|
||||
, #{sggName} <!-- 시군구 이름 -->
|
||||
, #{instCode} <!-- 기관 코드 -->
|
||||
, #{instType} <!-- 기관 구분 -->
|
||||
, #{instName} <!-- 기관 명 -->
|
||||
, #{instAddress} <!-- 기관 주소 -->
|
||||
, #{instDetailAddress} <!-- 기관 상세주소 -->
|
||||
, #{instZipCode} <!-- 기관 우편번호 -->
|
||||
, #{officialSealFilepath} <!-- 직인 파일 경로 -->
|
||||
, #{officialSealFilename} <!-- 직인 파일 명 -->
|
||||
, #{useYN} <!-- 사용 여부 -->
|
||||
, #{createdAt} <!-- 등록 일시 -->
|
||||
, #{createdBy} <!-- 등록자 -->
|
||||
, #{lastModified} <!-- 수정 일시 -->
|
||||
, #{modifiedBy} <!-- 수정자 -->
|
||||
)</insert>
|
||||
|
||||
<update id="update" parameterType="cokr.xit.base.user.Sigungu">/* 시군구 수정(sigunguMapper.update) */
|
||||
UPDATE TB_SGG
|
||||
SET INST_CD = #{instCode} <!-- 기관 코드 -->
|
||||
, INST_SE_CD = #{instType} <!-- 기관 구분 -->
|
||||
, SGG_NM = #{sggName} <!-- 시군구 이름 -->
|
||||
, INST_NM = #{instName} <!-- 기관 명 -->
|
||||
, INST_ADDR = #{instAddress} <!-- 기관 주소 -->
|
||||
, INST_DADDR = #{instDetailAddress} <!-- 기관 상세주소 -->
|
||||
, INST_ZIP = #{instZipCode} <!-- 기관 우편번호 -->
|
||||
, OFFCS_FILE_PATH = #{officialSealFilepath} <!-- 직인 파일 경로 -->
|
||||
, OFFCS_FILE_NM = #{officialSealFilename} <!-- 직인 파일 명 -->
|
||||
, USE_YN = #{useYN} <!-- 사용 여부 -->
|
||||
, MDFCN_DT = #{lastModified} <!-- 수정 일시 -->
|
||||
, MDFR = #{modifiedBy} <!-- 수정자 -->
|
||||
WHERE SGG_CD = #{sggID}</update>
|
||||
|
||||
<update id="delete" parameterType="map">/* 시군구 삭제(sigunguMapper.delete) */
|
||||
UPDATE TB_SGG
|
||||
SET USE_YN = 'N'
|
||||
, MDFCN_DT =<include refid="utility.now" />
|
||||
, MDFR = #{currentUser.id}
|
||||
WHERE SGG_CD IN (<foreach collection="sggIDs" item="sggID" separator=",">#{sggID}</foreach>)</update>
|
||||
|
||||
</mapper>
|
Loading…
Reference in New Issue