From d07b60bd6ad9c9ee2d27da44a8c6795f633ef000 Mon Sep 17 00:00:00 2001 From: mjkhan21 Date: Tue, 25 Jun 2024 11:28:08 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B8=B0=EA=B4=80/=EB=B6=80=EC=84=9C=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cokr/xit/base/user/Department.java | 16 +- .../cokr/xit/base/user/DepartmentQuery.java | 18 ++ .../java/cokr/xit/base/user/GenericUser.java | 15 -- .../java/cokr/xit/base/user/ManagedUser.java | 30 --- src/main/java/cokr/xit/base/user/Sigungu.java | 48 +++-- .../java/cokr/xit/base/user/SigunguQuery.java | 1 - .../xit/base/user/dao/DepartmentMapper.java | 83 ++++---- .../cokr/xit/base/user/dao/SigunguMapper.java | 21 +- ...ice.java => SigunguDepartmentService.java} | 46 ++++- .../xit/base/user/service/SigunguService.java | 49 ----- .../user/service/bean/DepartmentBean.java | 34 ++-- .../service/bean/DepartmentServiceBean.java | 50 ----- .../base/user/service/bean/SigunguBean.java | 10 +- .../bean/SigunguDepartmentServiceBean.java | 80 ++++++++ .../user/service/bean/SigunguServiceBean.java | 50 ----- .../xit/base/user/service/bean/UserBean.java | 3 + .../base/user/web/DepartmentController.java | 104 ---------- .../xit/base/user/web/SigunguController.java | 103 ---------- .../user/web/SigunguDepartmentController.java | 180 ++++++++++++++++++ .../xit/base/user/web/UserController.java | 26 ++- .../sql/mapper/department-mapper.xml | 111 +++++++++++ .../resources/sql/mapper/sigungu-mapper.xml | 121 ++++++++++++ 22 files changed, 691 insertions(+), 508 deletions(-) rename src/main/java/cokr/xit/base/user/service/{DepartmentService.java => SigunguDepartmentService.java} (51%) delete mode 100644 src/main/java/cokr/xit/base/user/service/SigunguService.java delete mode 100644 src/main/java/cokr/xit/base/user/service/bean/DepartmentServiceBean.java create mode 100644 src/main/java/cokr/xit/base/user/service/bean/SigunguDepartmentServiceBean.java delete mode 100644 src/main/java/cokr/xit/base/user/service/bean/SigunguServiceBean.java delete mode 100644 src/main/java/cokr/xit/base/user/web/DepartmentController.java delete mode 100644 src/main/java/cokr/xit/base/user/web/SigunguController.java create mode 100644 src/main/java/cokr/xit/base/user/web/SigunguDepartmentController.java create mode 100644 src/main/resources/sql/mapper/department-mapper.xml create mode 100644 src/main/resources/sql/mapper/sigungu-mapper.xml 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 { - /**지정한 조건에 따라 부서 정보 목록을 조회하여 반환한다.
- * @param req 부서 정보 조회 조건 - * @return 부서 정보 목록 + /**지정한 조건에 따라 부서정보 목록을 조회하여 반환한다.
+ * @param req 부서정보 조회 조건 + * @return 부서정보 목록 */ List selectDepartmentList(DepartmentQuery req); - /**지정한 조건에 따라 부서 정보 객체들을 반환한다. - * @param req 부서 정보 조회 조건 - * @return 부서 정보 객체 목록 + /**지정한 조건에 따라 부서정보 객체들을 반환한다. + * @param req 부서정보 조회 조건 + * @return 부서정보 객체 목록 */ List selectDepartments(DepartmentQuery req); - /**지정한 조건에 따라 부서 정보 객체들을 반환한다. + /**지정한 조건에 따라 부서정보 객체들을 반환한다. * @param sggID 시군구 코드 * @param deptIDs 부서 코드 - * @return 부서 정보 객체 목록 + * @return 부서정보 객체 목록 */ default List selectDepartments(String sggID, String... deptIDs) { return selectDepartments(new DepartmentQuery() @@ -46,73 +46,68 @@ public interface DepartmentMapper extends AbstractMapper { ); } - /**지정한 조건에 따라 부서 정보 객체들을 반환한다. + /**지정한 조건에 따라 부서정보 객체들을 반환한다. * @param sggID 시군구 코드 * @param deptID 부서 코드 - * @return 부서 정보 객체 목록 + * @return 부서정보 객체 목록 */ default Department selectDepartment(String sggID, String deptID) { List list = selectDepartments(sggID, deptID); return !list.isEmpty() ? list.get(0) : null; } - /**부서 정보 정보를 등록한다. - * @param params 파라미터 - *

- * @return 저장된 정보수 - */ - int insertDepartment(Map params); + List selectSggDepts(); - /**부서 정보 정보를 등록한다. - * @param department 부서 정보 + /**부서정보를 등록한다. + * @param department 부서정보 * @return 저장 여부 *
  • 저장됐으면 true
  • *
  • 그렇지 않으면 false
  • *
*/ - default boolean insert(Department department) { - return department != null && insertDepartment(params().set("department", department)) == 1; - } - - /**부서 정보 정보를 수정한다. - * @param params 파라미터 - *
  • "department" - 부서 정보
  • - *
  • "currentUser" - 현재 접속한 사용자
  • - *
- * @return 저장된 정보수 - */ - int updateDepartment(Map params); + boolean insert(Department department); - /**부서 정보 정보를 수정한다. - * @param department 부서 정보 + /**부서정보를 수정한다. + * @param department 부서정보 * @return 저장 여부 *
  • 저장됐으면 true
  • *
  • 그렇지 않으면 false
  • *
*/ - default boolean update(Department department) { - return department != null && updateDepartment(params().set("department", department)) == 1; - } + boolean update(Department department); - /**지정한 부서 정보을 삭제한다. + /**지정한 부서정보를 삭제한다. * @param params 파라미터 - *
  • "department" - 부서 정보
  • + *
    • "sggIDs" - 시군구 코드
    • + *
    • "deptIDs" - 부서 코드
    • *
    • "currentUser" - 현재 접속한 사용자
    • *
    * @return 저장된 정보수 */ - int deleteDepartment(Map params); + int delete(Map params); + + /**지정한 부서정보를 삭제한다. + * @param sggIDs 시군구 코드 + * @param deptIDs 부서 코드 + * @return 저장된 정보수 + */ + default int delete(String[] sggIDs, String[] deptIDs) { + DataObject params = params(); + if (!isEmpty(sggIDs)) + params.put("sggIDs", sggIDs); + if (!isEmpty(deptIDs)) + params.put("deptIDs", deptIDs); + return delete(params); + } - /**부서 정보 정보를 삭제한다. - * @param department 부서 정보 + /**부서정보를 삭제한다. + * @param department 부서정보 * @return 저장 여부 *
    • 저장됐으면 true
    • *
    • 그렇지 않으면 false
    • *
    */ 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 selectSigunguList(SigunguQuery req); + /**지정한 아이디의 시군구 정보를 반환한다. + * @param sggID 시군구 아이디 + * @return 시군구 정보 + */ + default DataObject selectSigunguInfo(String sggID) { + List list = selectSigunguList(new SigunguQuery().setSggIDs(sggID)); + return !list.isEmpty() ? list.get(0) : null; + } + /**지정한 조건에 따라 시군구 객체들을 반환한다. * @param req 시군구 조회 조건 * @return 시군구 객체 목록 @@ -84,9 +93,7 @@ public interface SigunguMapper extends AbstractMapper { *
  • 그렇지 않으면 false
  • *
*/ - 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 { *
  • 그렇지 않으면 false
  • * */ - default boolean update(Sigungu sigungu) { - return sigungu != null && updateSigungu(params().set("sigungu", sigungu)) == 1; - } + boolean update(Sigungu sigungu); /**지정한 시군구을 삭제한다. * @param params 파라미터 @@ -115,13 +120,13 @@ public interface SigunguMapper extends AbstractMapper { * * @return 저장된 정보수 */ - int deleteSigungu(Map params); + int delete(Map params); /**시군구 정보를 삭제한다. * @param sggIDs 시군구 아이디 * @return 저장된 정보수 */ default int delete(String... sggIDs) { - return !isEmpty(sggIDs) ? deleteSigungu(params().set("sggIDs", sggIDs)) : 0; + return !isEmpty(sggIDs) ? delete(params().set("sggIDs", sggIDs)) : 0; } } \ No newline at end of file diff --git a/src/main/java/cokr/xit/base/user/service/DepartmentService.java b/src/main/java/cokr/xit/base/user/service/SigunguDepartmentService.java similarity index 51% rename from src/main/java/cokr/xit/base/user/service/DepartmentService.java rename to src/main/java/cokr/xit/base/user/service/SigunguDepartmentService.java index 9b72d12..fd112b8 100644 --- a/src/main/java/cokr/xit/base/user/service/DepartmentService.java +++ b/src/main/java/cokr/xit/base/user/service/SigunguDepartmentService.java @@ -4,25 +4,51 @@ import java.util.List; 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.foundation.data.DataObject; -/**부서 정보 관리 서비스 인터페이스. - * - *

    상세 설명: - * - *

    - * ============ 변경 이력 ============
    - * 2023-10-06	mjkhan 최초 작성
    - * ================================
    - * 
    +/**시군구 / 부서 서비스 인터페이스 + * @author mjkhan */ -public interface DepartmentService { +public interface SigunguDepartmentService { + /**지정한 조건에 따라 시군구 목록을 조회하여 반환한다. + * @param req 시군구 조회 조건 + * @return 시군구 목록 + */ + List getSigunguList(SigunguQuery req); + + /**시군구 정보를 등록한다. + * @param sigungu 시군구 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + boolean create(Sigungu sigungu); + + /**시군구 정보를 수정한다. + * @param sigungu 시군구 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + boolean update(Sigungu sigungu); + + /**시군구 정보를 삭제한다. + * @param sggIDs 시군구 아이디 + * @return 저장된 정보수 + */ + int remove(String... sggIDs); /**지정한 조건에 따라 부서 정보 목록을 조회하여 반환한다. * @param req 부서 정보 조회 조건 * @return 부서 정보 목록 */ List getDepartmentList(DepartmentQuery req); + List getSggDepts(); + /**부서 정보 정보를 등록한다. * @param department 부서 정보 * @return 저장 여부 diff --git a/src/main/java/cokr/xit/base/user/service/SigunguService.java b/src/main/java/cokr/xit/base/user/service/SigunguService.java deleted file mode 100644 index 2f21a2f..0000000 --- a/src/main/java/cokr/xit/base/user/service/SigunguService.java +++ /dev/null @@ -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; - -/**시군구 관리 서비스 인터페이스. - * - *

    상세 설명: - * - *

    - * ============ 변경 이력 ============
    - * 2023-10-06	mjkhan 최초 작성
    - * ================================
    - * 
    - */ -public interface SigunguService { - /**지정한 조건에 따라 시군구 목록을 조회하여 반환한다. - * @param req 시군구 조회 조건 - * @return 시군구 목록 - */ - List getSigunguList(SigunguQuery req); - - /**시군구 정보를 등록한다. - * @param sigungu 시군구 - * @return 저장 여부 - *
    • 저장됐으면 true
    • - *
    • 그렇지 않으면 false
    • - *
    - */ - boolean create(Sigungu sigungu); - - /**시군구 정보를 수정한다. - * @param sigungu 시군구 - * @return 저장 여부 - *
    • 저장됐으면 true
    • - *
    • 그렇지 않으면 false
    • - *
    - */ - 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 * *

    상세 설명: * @@ -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 getDepartmentList(DepartmentQuery req) { - return departmentMapper.selectDepartmentList(req); + return departmentMapper.selectDepartmentList(req.setOrderBy("DEPT_CD")); } - /**지정한 조건에 따라 부서 정보 객체들을 반환한다. + /**지정한 조건에 따라 부서정보 객체들을 반환한다. * @param sggID 시군구 코드 * @param deptIDs 부서 코드 - * @return 부서 정보 객체 목록 + * @return 부서정보 객체 목록 */ public List getDepartments(String sggID, String... deptIDs) { return departmentMapper.selectDepartments(sggID, deptIDs); } - /**지정한 조건에 따라 부서 정보 객체를 반환한다. + /**지정한 조건에 따라 부서정보 객체를 반환한다. * @param sggID 시군구 코드 * @param deptID 부서 코드 - * @return 부서 정보 객체 + * @return 부서정보 객체 */ public Department getDepartment(String sggID, String deptID) { return departmentMapper.selectDepartment(sggID, deptID); } - /**부서 정보 정보를 등록한다. - * @param department 부서 정보 + public List getSggDepts() { + return departmentMapper.selectSggDepts(); + } + + /**부서정보를 등록한다. + * @param department 부서정보 * @return 저장 여부 *

    • 저장됐으면 true
    • *
    • 그렇지 않으면 false
    • @@ -65,8 +69,8 @@ public class DepartmentBean extends AbstractBean { return departmentMapper.insert(department); } - /**부서 정보 정보를 수정한다. - * @param department 부서 정보 + /**부서정보를 수정한다. + * @param department 부서정보 * @return 저장 여부 *
      • 저장됐으면 true
      • *
      • 그렇지 않으면 false
      • @@ -76,7 +80,7 @@ public class DepartmentBean extends AbstractBean { return departmentMapper.update(department); } - /**부서 정보 정보를 삭제한다. + /**부서정보를 삭제한다. * @param sggID 시군구 코드 * @param deptIDs 부서 코드 * @return 저장된 정보수 diff --git a/src/main/java/cokr/xit/base/user/service/bean/DepartmentServiceBean.java b/src/main/java/cokr/xit/base/user/service/bean/DepartmentServiceBean.java deleted file mode 100644 index 3ffe111..0000000 --- a/src/main/java/cokr/xit/base/user/service/bean/DepartmentServiceBean.java +++ /dev/null @@ -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; - -/**부서 정보 서비스 구현체. - * - *

        상세 설명: - * - *

        - * ============ 변경 이력 ============
        - * 2023-10-06	mjkhan 최초 작성
        - * ================================
        - * 
        - */ -@Service("departmentService") -public class DepartmentServiceBean extends AbstractServiceBean implements DepartmentService { - /** 부서 정보 정보 Bean */ - @Resource(name = "departmentBean") - private DepartmentBean departmentBean; - - @Override - public List 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); - } -} \ No newline at end of file diff --git a/src/main/java/cokr/xit/base/user/service/bean/SigunguBean.java b/src/main/java/cokr/xit/base/user/service/bean/SigunguBean.java index 113102b..f4e1e42 100644 --- a/src/main/java/cokr/xit/base/user/service/bean/SigunguBean.java +++ b/src/main/java/cokr/xit/base/user/service/bean/SigunguBean.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Component; import cokr.xit.base.user.Sigungu; import cokr.xit.base.user.SigunguQuery; +import cokr.xit.base.user.dao.DepartmentMapper; import cokr.xit.base.user.dao.SigunguMapper; import cokr.xit.foundation.component.AbstractBean; import cokr.xit.foundation.data.DataObject; @@ -27,13 +28,16 @@ public class SigunguBean extends AbstractBean { /** 시군구 정보 DAO */ @Resource(name = "sigunguMapper") private SigunguMapper sigunguMapper; + /** 시군구 정보 DAO */ + @Resource(name = "departmentMapper") + private DepartmentMapper departmentMapper; /**지정한 조건에 따라 시군구 목록을 조회하여 반환한다. * @param req 시군구 조회 조건 * @return 시군구 목록 */ public List getSigunguList(SigunguQuery req) { - return sigunguMapper.selectSigunguList(req); + return sigunguMapper.selectSigunguList(req.setOrderBy("SGG_CD")); } /**지정한 아이디의 따라 시군구 객체들을 반환한다. @@ -95,6 +99,8 @@ public class SigunguBean extends AbstractBean { * @return 저장된 정보수 */ public int remove(String... sggIDs) { - return sigunguMapper.delete(sggIDs); + return + departmentMapper.delete(sggIDs, null) + + sigunguMapper.delete(sggIDs); } } \ No newline at end of file diff --git a/src/main/java/cokr/xit/base/user/service/bean/SigunguDepartmentServiceBean.java b/src/main/java/cokr/xit/base/user/service/bean/SigunguDepartmentServiceBean.java new file mode 100644 index 0000000..e5962f5 --- /dev/null +++ b/src/main/java/cokr/xit/base/user/service/bean/SigunguDepartmentServiceBean.java @@ -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; + +/**시군구 / 부서 정보 서비스 구현체. +* +*

        상세 설명: +* +*

        +* ============ 변경 이력 ============
        +* 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 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 getDepartmentList(DepartmentQuery req) { + return departmentBean.getDepartmentList(req); + } + + @Override + public List 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); + } +} \ No newline at end of file diff --git a/src/main/java/cokr/xit/base/user/service/bean/SigunguServiceBean.java b/src/main/java/cokr/xit/base/user/service/bean/SigunguServiceBean.java deleted file mode 100644 index ae7864c..0000000 --- a/src/main/java/cokr/xit/base/user/service/bean/SigunguServiceBean.java +++ /dev/null @@ -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; - -/**시군구 서비스 구현체. - * - *

        상세 설명: - * - *

        - * ============ 변경 이력 ============
        - * 2023-10-06	mjkhan 최초 작성
        - * ================================
        - * 
        - */ -@Service("sigunguService") -public class SigunguServiceBean extends AbstractServiceBean implements SigunguService { - /** 시군구 정보 Bean */ - @Resource(name = "sigunguBean") - private SigunguBean sigunguBean; - - @Override - public List 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); - } -} \ No newline at end of file diff --git a/src/main/java/cokr/xit/base/user/service/bean/UserBean.java b/src/main/java/cokr/xit/base/user/service/bean/UserBean.java index 1e37912..3c79697 100644 --- a/src/main/java/cokr/xit/base/user/service/bean/UserBean.java +++ b/src/main/java/cokr/xit/base/user/service/bean/UserBean.java @@ -89,6 +89,9 @@ public class UserBean extends AbstractBean { throw applicationException(null) .setMessage(message("duplicate.object", "사용자")); + if (isEmpty(user.getInstitute())) + user.setInstitute(currentUser().getInstitute()); + String password = user.getPassword(); user.setPassword(passwordEncoder.encode(password)); user.setCreatedBy(currentUser().getId()); diff --git a/src/main/java/cokr/xit/base/user/web/DepartmentController.java b/src/main/java/cokr/xit/base/user/web/DepartmentController.java deleted file mode 100644 index eff200d..0000000 --- a/src/main/java/cokr/xit/base/user/web/DepartmentController.java +++ /dev/null @@ -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; - -/**부서 정보 서비스의 웹 컨트롤러 - * - *

        상세 설명: - * - *

        - * ============ 변경 이력 ============
        - * 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 - *
         {
        -	 *     "departmentList": [부서 정보 목록]
        -	 *     "departmentStart": 부서 정보 목록 시작 인덱스
        -	 *     "departmentFetch": 한 번에 가져오는 부서 정보 목록 수
        -	 *     "departmentTotal": 조회 결과 찾은 전체 부서 정보 수
        -	 * }
        - */ - @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 - *
         {
        -	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
        -	 * }
        - */ - @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 - *
         {
        -	 *     "affected": 저장된 정보수
        -	 *     "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; - -/**시군구 서비스의 웹 컨트롤러 - * - *

        상세 설명: - * - *

        - * ============ 변경 이력 ============
        - * 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 - *
         {
        -	 *     "sigunguList": [시군구 목록]
        -	 *     "sigunguStart": 시군구 목록 시작 인덱스
        -	 *     "sigunguFetch": 한 번에 가져오는 시군구 목록 수
        -	 *     "sigunguTotal": 조회 결과 찾은 전체 시군구 수
        -	 * }
        - */ - @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 - *
         {
        -	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
        -	 * }
        - */ - @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 - *
         {
        -	 *     "affected": 저장된 정보수
        -	 *     "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 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 model = mav.getModel(); + + mav.addObject("sggList", toJson(model.remove("sggList"))); + mav.addObject("deptList", toJson(model.remove("deptList"))); + return mav; + } + + /**시군구 목록을 조회하여 반환한다.
        + * {@link SigunguService#getSigunguList(SigunguQuery)} 참고 + * @param req 시군구 조회 조건 + * @return jsonView + *
         {
        +	 *     "sggList": [시군구 목록]
        +	 *     "sggStart": 시군구 목록 시작 인덱스
        +	 *     "sggFetch": 한 번에 가져오는 시군구 목록 수
        +	 *     "sggTotal": 조회 결과 찾은 전체 시군구 수
        +	 * }
        + */ + @RequestMapping(name = "시군구 조회", value = "/sgg/list.do") + public ModelAndView getSigunguList(SigunguQuery req) { + List 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 + *
         {
        +	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
        +	 * }
        + */ + @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 + *
         {
        +	 *     "affected": 저장된 정보수
        +	 *     "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); + } + + /**부서정보 목록을 조회하여 반환한다.
        + * {@link DepartmentService#getDepartmentList(DepartmentQuery)} 참고 + * @param req 부서정보 조회 조건 + * @return jsonView + *
         {
        +	 *     "deptList": [부서정보 목록]
        +	 *     "deptStart": 부서정보 목록 시작 인덱스
        +	 *     "deptFetch": 한 번에 가져오는 부서정보 목록 수
        +	 *     "deptTotal": 조회 결과 찾은 전체 부서정보 수
        +	 * }
        + */ + @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 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 + *
         {
        +	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
        +	 * }
        + */ + @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 + *
         {
        +	 *     "affected": 저장된 정보수
        +	 *     "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 + sggs = sggDeptService.getSigunguList(new SigunguQuery()), + depts = sggDeptService.getDepartmentList(new DepartmentQuery().setInstCode(institute)); + if (!isEmpty(userID)) { DataObject userInfo = userService.getUserInfo(userID); - boolean json = jsonResponse(); - return new ModelAndView(json ? "jsonView" : "base/user/user-info") - .addObject("userInfo", json ? userInfo : toJson(userInfo)); + return new ModelAndView(viewName) + .addObject("userInfo", json ? userInfo : toJson(userInfo)) + .addObject("sggs", json ? sggs : toJson(sggs)) + .addObject("depts", json ? depts : toJson(depts)) + .addObject("institute", institute); } else { - return new ModelAndView("base/user/user-info"); + return new ModelAndView("base/user/user-info") + .addObject("sggs", toJson(sggs)) + .addObject("depts", toJson(depts)) + .addObject("institute", institute); } } diff --git a/src/main/resources/sql/mapper/department-mapper.xml b/src/main/resources/sql/mapper/department-mapper.xml new file mode 100644 index 0000000..184bee0 --- /dev/null +++ b/src/main/resources/sql/mapper/department-mapper.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + +SELECT DEPT_CD + , SGG_CD + , INST_CD + , DEPT_NM + , DEPT_TELNO + , DEPT_FXNO + , USE_YN + , REG_DT + , RGTR + , MDFCN_DT + , MDFR + FROM TB_DEPT + + + + + +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 + + + +/* 부서 정보 등록(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} +) + +/* 부서 정보 수정(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} + +/* 부서 정보 삭제(departmentMapper.deleteDepartment) */ +UPDATE TB_DEPT + SET USE_YN = 'N' + , MDFCN_DT = + , MDFR = #{currentUser.id} + AND SGG_CD IN (#{sggID}) + AND DEPT_CD IN (#{deptID}) + + \ No newline at end of file diff --git a/src/main/resources/sql/mapper/sigungu-mapper.xml b/src/main/resources/sql/mapper/sigungu-mapper.xml new file mode 100644 index 0000000..f034d48 --- /dev/null +++ b/src/main/resources/sql/mapper/sigungu-mapper.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + +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 + + + + + +/* 시군구 등록(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} +) + +/* 시군구 수정(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} + +/* 시군구 삭제(sigunguMapper.delete) */ +UPDATE TB_SGG + SET USE_YN = 'N' + , MDFCN_DT = + , MDFR = #{currentUser.id} + WHERE SGG_CD IN (#{sggID}) + + \ No newline at end of file