diff --git a/src/main/java/cokr/xit/base/user/Department.java b/src/main/java/cokr/xit/base/user/Department.java index 1db85aa..6e73f29 100644 --- a/src/main/java/cokr/xit/base/user/Department.java +++ b/src/main/java/cokr/xit/base/user/Department.java @@ -21,7 +21,7 @@ public class Department extends AbstractEntity { private String faxno; /** - * 시군구 코드을(를) 반환한다. + * 시군구 코드를 반환한다. * @return 시군구 코드 */ public String getSggID() { @@ -29,7 +29,7 @@ public class Department extends AbstractEntity { } /** - * 시군구 코드을(를) 설정한다. + * 시군구 코드를 설정한다. * @param sggID 시군구 코드 */ public void setSggID(String sggID) { @@ -37,7 +37,7 @@ public class Department extends AbstractEntity { } /** - * 부서 코드을(를) 반환한다. + * 부서 코드를 반환한다. * @return 부서 코드 */ public String getDeptID() { @@ -45,7 +45,7 @@ public class Department extends AbstractEntity { } /** - * 부서 코드을(를) 설정한다. + * 부서 코드를 설정한다. * @param deptID 부서 코드 */ public void setDeptID(String deptID) { @@ -53,7 +53,7 @@ public class Department extends AbstractEntity { } /** - * 기관 코드을(를) 반환한다. + * 기관 코드를 반환한다. * @return 기관 코드 */ public String getInstCode() { @@ -61,7 +61,7 @@ public class Department extends AbstractEntity { } /** - * 기관 코드을(를) 설정한다. + * 기관 코드를 설정한다. * @param instCode 기관 코드 */ public void setInstCode(String instCode) { @@ -69,7 +69,7 @@ public class Department extends AbstractEntity { } /** - * 부서 명을(를) 반환한다. + * 부서 이름을 반환한다. * @return 부서 명 */ public String getName() { @@ -77,7 +77,7 @@ public class Department extends AbstractEntity { } /** - * 부서 명을(를) 설정한다. + * 부서 이름을 설정한다. * @param name 부서 명 */ public void setName(String name) { diff --git a/src/main/java/cokr/xit/base/user/DepartmentQuery.java b/src/main/java/cokr/xit/base/user/DepartmentQuery.java index 862f813..dfc16f5 100644 --- a/src/main/java/cokr/xit/base/user/DepartmentQuery.java +++ b/src/main/java/cokr/xit/base/user/DepartmentQuery.java @@ -16,6 +16,8 @@ public class DepartmentQuery extends QueryRequest { private static final long serialVersionUID = 1L; /** 시군구 코드 */ private String sggID; + /** 기관 코드 */ + private String instCode; /** 부서 코드 */ private String[] deptIDs; @@ -35,6 +37,22 @@ public class DepartmentQuery extends QueryRequest { return this; } + /**기관코드를 반환한다. + * @return 기관코드 + */ + public String getInstCode() { + return instCode; + } + + /**기관코드를 설정한다. + * @param instCode 기관코드 + * @return 현재 DepartmentQuery + */ + public DepartmentQuery setInstCode(String instCode) { + this.instCode = instCode; + return this; + } + /**부서코드를 반환한다. * @return 부서코드 */ diff --git a/src/main/java/cokr/xit/base/user/GenericUser.java b/src/main/java/cokr/xit/base/user/GenericUser.java index 7734312..9d294a4 100644 --- a/src/main/java/cokr/xit/base/user/GenericUser.java +++ b/src/main/java/cokr/xit/base/user/GenericUser.java @@ -60,7 +60,6 @@ public abstract class GenericUser extends User { phoneNo, faxNo, mobilePhoneNo, - groupID, status; private int lockCount; private String lockedDate; @@ -225,20 +224,6 @@ public abstract class GenericUser extends User { this.mobilePhoneNo = mobilePhoneNo; } - /**사용자의 그룹 아이디를 반환한다. - * @return 사용자의 그룹 아이디 - */ - public String getGroupID() { - return groupID; - } - - /**사용자의 그룹 아이디를 설정한다. - * @param groupID 사용자의 그룹 아이디 - */ - public void setGroupID(String groupID) { - this.groupID = groupID; - } - /**사용자 계정의 잠금횟수를 반환한다. * @return 사용자 계정의 잠금횟수 */ diff --git a/src/main/java/cokr/xit/base/user/ManagedUser.java b/src/main/java/cokr/xit/base/user/ManagedUser.java index 8663f8e..9069397 100644 --- a/src/main/java/cokr/xit/base/user/ManagedUser.java +++ b/src/main/java/cokr/xit/base/user/ManagedUser.java @@ -8,8 +8,6 @@ public class ManagedUser extends GenericUser { private String empNo, residentRegNo, - orgID, - deptCode, birthday, positionName, certificateDn; @@ -47,34 +45,6 @@ public class ManagedUser extends GenericUser { this.residentRegNo = residentNo; } - /**조직ID를 반환한다. - * @return 조직ID - */ - public String getOrgID() { - return orgID; - } - - /**조직ID를 설정한다. - * @param orgID 조직ID - */ - public void setOrgID(String orgID) { - this.orgID = orgID; - } - - /**부서코드를 반환한다. - * @return 부서코드 - */ - public String getDeptCode() { - return deptCode; - } - - /**부서코드를 설정한다. - * @param deptCode 부서코드 - */ - public void setDeptCode(String deptCode) { - this.deptCode = deptCode; - } - /**생년월일을 반환한다. * @return 생년월일 */ diff --git a/src/main/java/cokr/xit/base/user/Sigungu.java b/src/main/java/cokr/xit/base/user/Sigungu.java index ae9514e..435c8d2 100644 --- a/src/main/java/cokr/xit/base/user/Sigungu.java +++ b/src/main/java/cokr/xit/base/user/Sigungu.java @@ -13,6 +13,8 @@ public class Sigungu extends AbstractEntity { private String sggName; /** 기관 코드 */ private String instCode; + /** 기관 구분 */ + private String instType; /** 기관 명 */ private String instName; /** 기관 주소 */ @@ -20,14 +22,14 @@ public class Sigungu extends AbstractEntity { /** 기관 상세주소 */ private String instDetailAddress; /** 기관 우편번호 */ - private String instituteZipCode; + private String instZipCode; /** 직인 파일 경로 */ private String officialSealFilepath; /** 직인 파일 명 */ private String officialSealFilename; /** - * 시군구 코드을(를) 반환한다. + * 시군구 코드를 반환한다. * @return 시군구 코드 */ public String getSggID() { @@ -35,7 +37,7 @@ public class Sigungu extends AbstractEntity { } /** - * 시군구 코드을(를) 설정한다. + * 시군구 코드를 설정한다. * @param id 시군구 코드 */ public void setSggID(String id) { @@ -43,7 +45,7 @@ public class Sigungu extends AbstractEntity { } /** - * 시군구 이름을(를) 반환한다. + * 시군구 이름을 반환한다. * @return 시군구 이름 */ public String getSggName() { @@ -51,7 +53,7 @@ public class Sigungu extends AbstractEntity { } /** - * 시군구 이름을(를) 설정한다. + * 시군구 이름을 설정한다. * @param name 시군구 이름 */ public void setSggName(String name) { @@ -59,7 +61,7 @@ public class Sigungu extends AbstractEntity { } /** - * 기관 코드을(를) 반환한다. + * 기관 코드를 반환한다. * @return 기관 코드 */ public String getInstCode() { @@ -67,15 +69,31 @@ public class Sigungu extends AbstractEntity { } /** - * 기관 코드을(를) 설정한다. + * 기관 코드를 설정한다. * @param instituteCode 기관 코드 */ public void setInstCode(String instituteCode) { this.instCode = instituteCode; } + /**기관 구분을 반환한다. + * @return 기관 구분 + */ + public String getInstType() { + return instType; + } + + + /**기관 구분을 설정한다. + * @param instType 기관 구분 + */ + public void setInstType(String instType) { + this.instType = instType; + } + + /** - * 기관 명을(를) 반환한다. + * 기관 이름을 반환한다. * @return 기관 명 */ public String getInstName() { @@ -83,7 +101,7 @@ public class Sigungu extends AbstractEntity { } /** - * 기관 명을(를) 설정한다. + * 기관 이름을 설정한다. * @param instituteName 기관 명 */ public void setInstName(String instituteName) { @@ -126,16 +144,16 @@ public class Sigungu extends AbstractEntity { * 기관 우편번호을(를) 반환한다. * @return 기관 우편번호 */ - public String getInstituteZipCode() { - return instituteZipCode; + public String getInstZipCode() { + return instZipCode; } /** * 기관 우편번호을(를) 설정한다. * @param zipCode 기관 우편번호 */ - public void setInstituteZipCode(String zipCode) { - this.instituteZipCode = zipCode; + public void setInstZipCode(String zipCode) { + this.instZipCode = zipCode; } /** @@ -155,7 +173,7 @@ public class Sigungu extends AbstractEntity { } /** - * 직인 파일 명을(를) 반환한다. + * 직인 파일 이름을 반환한다. * @return 직인 파일 명 */ public String getOfficialSealFilename() { @@ -163,7 +181,7 @@ public class Sigungu extends AbstractEntity { } /** - * 직인 파일 명을(를) 설정한다. + * 직인 파일 이름을 설정한다. * @param filename 직인 파일 명 */ public void setOfficialSealFilename(String filename) { diff --git a/src/main/java/cokr/xit/base/user/SigunguQuery.java b/src/main/java/cokr/xit/base/user/SigunguQuery.java index ebdf48a..9f70556 100644 --- a/src/main/java/cokr/xit/base/user/SigunguQuery.java +++ b/src/main/java/cokr/xit/base/user/SigunguQuery.java @@ -20,7 +20,6 @@ public class SigunguQuery extends QueryRequest { /** 기관 코드 */ private String[] instCodes; - /**시군구 코드를 반환한다. * @return 시군구 코드 */ diff --git a/src/main/java/cokr/xit/base/user/dao/DepartmentMapper.java b/src/main/java/cokr/xit/base/user/dao/DepartmentMapper.java index 15975aa..bf644fa 100644 --- a/src/main/java/cokr/xit/base/user/dao/DepartmentMapper.java +++ b/src/main/java/cokr/xit/base/user/dao/DepartmentMapper.java @@ -10,7 +10,7 @@ import cokr.xit.base.user.DepartmentQuery; import cokr.xit.foundation.component.AbstractMapper; import cokr.xit.foundation.data.DataObject; -/** 부서 정보 정보 DAO +/** 부서정보 DAO * *
상세 설명:
*
@@ -22,22 +22,22 @@ import cokr.xit.foundation.data.DataObject;
*/
@Mapper("departmentMapper")
public interface DepartmentMapper extends AbstractMapper {
- /**지정한 조건에 따라 부서 정보 목록을 조회하여 반환한다. 상세 설명:
- *
- * 상세 설명:
- *
- * 상세 설명:
*
@@ -24,38 +24,42 @@ import cokr.xit.foundation.data.DataObject;
*/
@Component("departmentBean")
public class DepartmentBean extends AbstractBean {
- /** 부서 정보 정보 DAO */
+ /** 부서정보 DAO */
@Resource(name = "departmentMapper")
private DepartmentMapper departmentMapper;
- /**지정한 조건에 따라 부서 정보 목록을 조회하여 반환한다.
- * @param req 부서 정보 조회 조건
- * @return 부서 정보 목록
+ /**지정한 조건에 따라 부서정보 목록을 조회하여 반환한다.
+ * @param req 부서정보 조회 조건
+ * @return 부서정보 목록
*/
public List 상세 설명:
- *
- * 상세 설명:
+*
+* 상세 설명:
- *
- * 상세 설명:
- *
- * 상세 설명:
- *
- *
- * @param req 부서 정보 조회 조건
- * @return 부서 정보 목록
+ /**지정한 조건에 따라 부서정보 목록을 조회하여 반환한다.
+ * @param req 부서정보 조회 조건
+ * @return 부서정보 목록
*/
List
- * @return 저장된 정보수
- */
- int insertDepartment(Map
*/
- default boolean insert(Department department) {
- return department != null && insertDepartment(params().set("department", department)) == 1;
- }
-
- /**부서 정보 정보를 수정한다.
- * @param params 파라미터
- *
- * @return 저장된 정보수
- */
- int updateDepartment(Map
*/
- default boolean update(Department department) {
- return department != null && updateDepartment(params().set("department", department)) == 1;
- }
+ boolean update(Department department);
- /**지정한 부서 정보을 삭제한다.
+ /**지정한 부서정보를 삭제한다.
* @param params 파라미터
- *
*/
- default boolean insert(Sigungu sigungu) {
- return sigungu != null && insertSigungu(params().set("sigungu", sigungu)) == 1;
- }
+ boolean insert(Sigungu sigungu);
/**시군구 정보를 수정한다.
* @param params 파라미터
@@ -104,9 +111,7 @@ public interface SigunguMapper extends AbstractMapper {
*
* @return 저장된 정보수
*/
- int deleteDepartment(Map
*/
default int delete(String sggID, String... deptIDs) {
- return deleteDepartment(params().set("sggID", sggID).set("deptIDs", deptIDs));
+ return delete(isEmpty(sggID) ? null : new String[] {sggID}, deptIDs);
}
}
\ No newline at end of file
diff --git a/src/main/java/cokr/xit/base/user/dao/SigunguMapper.java b/src/main/java/cokr/xit/base/user/dao/SigunguMapper.java
index 0ccd022..9667a6a 100644
--- a/src/main/java/cokr/xit/base/user/dao/SigunguMapper.java
+++ b/src/main/java/cokr/xit/base/user/dao/SigunguMapper.java
@@ -28,6 +28,15 @@ public interface SigunguMapper extends AbstractMapper {
*/
List
- * ============ 변경 이력 ============
- * 2023-10-06 mjkhan 최초 작성
- * ================================
- *
+/**시군구 / 부서 서비스 인터페이스
+ * @author mjkhan
*/
-public interface DepartmentService {
+public interface SigunguDepartmentService {
+ /**지정한 조건에 따라 시군구 목록을 조회하여 반환한다.
+ * @param req 시군구 조회 조건
+ * @return 시군구 목록
+ */
+ List
+ */
+ boolean create(Sigungu sigungu);
+
+ /**시군구 정보를 수정한다.
+ * @param sigungu 시군구
+ * @return 저장 여부
+ *
+ */
+ boolean update(Sigungu sigungu);
+
+ /**시군구 정보를 삭제한다.
+ * @param sggIDs 시군구 아이디
+ * @return 저장된 정보수
+ */
+ int remove(String... sggIDs);
/**지정한 조건에 따라 부서 정보 목록을 조회하여 반환한다.
* @param req 부서 정보 조회 조건
* @return 부서 정보 목록
*/
List
- * ============ 변경 이력 ============
- * 2023-10-06 mjkhan 최초 작성
- * ================================
- *
- */
-public interface SigunguService {
- /**지정한 조건에 따라 시군구 목록을 조회하여 반환한다.
- * @param req 시군구 조회 조건
- * @return 시군구 목록
- */
- List
- */
- boolean create(Sigungu sigungu);
-
- /**시군구 정보를 수정한다.
- * @param sigungu 시군구
- * @return 저장 여부
- *
- */
- boolean update(Sigungu sigungu);
-
- /**시군구 정보를 삭제한다.
- * @param sggIDs 시군구 아이디
- * @return 저장된 정보수
- */
- int remove(String... sggIDs);
-}
\ No newline at end of file
diff --git a/src/main/java/cokr/xit/base/user/service/bean/DepartmentBean.java b/src/main/java/cokr/xit/base/user/service/bean/DepartmentBean.java
index af32ad8..ebb5e7d 100644
--- a/src/main/java/cokr/xit/base/user/service/bean/DepartmentBean.java
+++ b/src/main/java/cokr/xit/base/user/service/bean/DepartmentBean.java
@@ -12,7 +12,7 @@ import cokr.xit.base.user.dao.DepartmentMapper;
import cokr.xit.foundation.component.AbstractBean;
import cokr.xit.foundation.data.DataObject;
-/**부서 정보 정보 관리 Bean
+/**부서정보 관리 Bean
*
*
- * ============ 변경 이력 ============
- * 2023-10-06 mjkhan 최초 작성
- * ================================
- *
- */
-@Service("departmentService")
-public class DepartmentServiceBean extends AbstractServiceBean implements DepartmentService {
- /** 부서 정보 정보 Bean */
- @Resource(name = "departmentBean")
- private DepartmentBean departmentBean;
-
- @Override
- public List
+* ============ 변경 이력 ============
+* 2023-10-06 mjkhan 최초 작성
+* ================================
+*
+*/
+@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
- * ============ 변경 이력 ============
- * 2023-10-06 mjkhan 최초 작성
- * ================================
- *
- */
-@Service("sigunguService")
-public class SigunguServiceBean extends AbstractServiceBean implements SigunguService {
- /** 시군구 정보 Bean */
- @Resource(name = "sigunguBean")
- private SigunguBean sigunguBean;
-
- @Override
- public List
- * ============ 변경 이력 ============
- * 2023-10-06 mjkhan 최초 작성
- * ================================
- *
- */
-@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")));
- }
-
- /**부서 정보 목록을 조회하여 반환한다.
- * {@link DepartmentService#getDepartmentList(DepartmentQuery)} 참고
- * @param req 부서 정보 조회 조건
- * @return jsonView
- *
- */
- @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
- * {
- * "departmentList": [부서 정보 목록]
- * "departmentStart": 부서 정보 목록 시작 인덱스
- * "departmentFetch": 한 번에 가져오는 부서 정보 목록 수
- * "departmentTotal": 조회 결과 찾은 전체 부서 정보 수
- * }
- */
- @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
- * {
- * "saved": 등록되었으면 true, 그렇지 않으면 false
- * }
- */
- @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
- * {
- * "saved": 수정되었으면 true, 그렇지 않으면 false
- * }
- */
- @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);
- }
-}
\ No newline at end of file
diff --git a/src/main/java/cokr/xit/base/user/web/SigunguController.java b/src/main/java/cokr/xit/base/user/web/SigunguController.java
deleted file mode 100644
index 8cc54e1..0000000
--- a/src/main/java/cokr/xit/base/user/web/SigunguController.java
+++ /dev/null
@@ -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;
-
-/**시군구 서비스의 웹 컨트롤러
- *
- * {
- * "affected": 저장된 정보수
- * "saved": 저장되었으면 true, 그렇지 않으면 false
- * }
- * ============ 변경 이력 ============
- * 2023-10-06 mjkhan 최초 작성
- * ================================
- *
- */
-@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")));
- }
-
- /**시군구 목록을 조회하여 반환한다.
- * {@link SigunguService#getSigunguList(SigunguQuery)} 참고
- * @param req 시군구 조회 조건
- * @return jsonView
- *
- */
- @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
- * {
- * "sigunguList": [시군구 목록]
- * "sigunguStart": 시군구 목록 시작 인덱스
- * "sigunguFetch": 한 번에 가져오는 시군구 목록 수
- * "sigunguTotal": 조회 결과 찾은 전체 시군구 수
- * }
- */
- @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
- * {
- * "saved": 등록되었으면 true, 그렇지 않으면 false
- * }
- */
- @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
- * {
- * "saved": 수정되었으면 true, 그렇지 않으면 false
- * }
- */
- @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);
- }
-}
\ No newline at end of file
diff --git a/src/main/java/cokr/xit/base/user/web/SigunguDepartmentController.java b/src/main/java/cokr/xit/base/user/web/SigunguDepartmentController.java
new file mode 100644
index 0000000..752642e
--- /dev/null
+++ b/src/main/java/cokr/xit/base/user/web/SigunguDepartmentController.java
@@ -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 {
- * "affected": 저장된 정보수
- * "saved": 저장되었으면 true, 그렇지 않으면 false
- * }
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
+ * {@link SigunguService#getSigunguList(SigunguQuery)} 참고
+ * @param req 시군구 조회 조건
+ * @return jsonView
+ *
+ */
+ @RequestMapping(name = "시군구 조회", value = "/sgg/list.do")
+ public ModelAndView getSigunguList(SigunguQuery req) {
+ List {
+ * "sggList": [시군구 목록]
+ * "sggStart": 시군구 목록 시작 인덱스
+ * "sggFetch": 한 번에 가져오는 시군구 목록 수
+ * "sggTotal": 조회 결과 찾은 전체 시군구 수
+ * }
+ */
+ @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
+ * {
+ * "saved": 등록되었으면 true, 그렇지 않으면 false
+ * }
+ */
+ @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
+ * {
+ * "saved": 수정되었으면 true, 그렇지 않으면 false
+ * }
+ */
+ @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);
+ }
+
+ /**부서정보 목록을 조회하여 반환한다. {
+ * "affected": 저장된 정보수
+ * "saved": 저장되었으면 true, 그렇지 않으면 false
+ * }
+ * {@link DepartmentService#getDepartmentList(DepartmentQuery)} 참고
+ * @param req 부서정보 조회 조건
+ * @return jsonView
+ *
+ */
+ @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 {
+ * "deptList": [부서정보 목록]
+ * "deptStart": 부서정보 목록 시작 인덱스
+ * "deptFetch": 한 번에 가져오는 부서정보 목록 수
+ * "deptTotal": 조회 결과 찾은 전체 부서정보 수
+ * }
+ */
+ @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
+ * {
+ * "saved": 등록되었으면 true, 그렇지 않으면 false
+ * }
+ */
+ @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
+ * {
+ * "saved": 수정되었으면 true, 그렇지 않으면 false
+ * }
+ */
+ @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);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/cokr/xit/base/user/web/UserController.java b/src/main/java/cokr/xit/base/user/web/UserController.java
index d57e7f9..772fdd5 100644
--- a/src/main/java/cokr/xit/base/user/web/UserController.java
+++ b/src/main/java/cokr/xit/base/user/web/UserController.java
@@ -8,7 +8,10 @@ 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.DepartmentQuery;
+import cokr.xit.base.user.SigunguQuery;
import cokr.xit.base.user.UserQuery;
+import cokr.xit.base.user.service.SigunguDepartmentService;
import cokr.xit.base.user.service.UserService;
import cokr.xit.foundation.User;
import cokr.xit.foundation.data.DataObject;
@@ -24,6 +27,8 @@ public class UserController extends AbstractController {
/**사용자 서비스*/
@Resource(name="userService")
private UserService userService;
+ @Resource(name="sigunguDepartmentService")
+ private SigunguDepartmentService sggDeptService;
protected UserService userService() {
return userService;
@@ -96,13 +101,26 @@ public class UserController extends AbstractController {
*/
@RequestMapping(name="사용자 정보 조회", value="/info.do")
public ModelAndView getInfo(String userID) {
+ boolean json = !isEmpty(userID) && jsonResponse();
+ String
+ viewName = json ? "jsonView" : "base/user/user-info",
+ institute = currentUser().getInstitute();
+ List {
+ * "affected": 저장된 정보수
+ * "saved": 저장되었으면 true, 그렇지 않으면 false
+ * }