From 4fd246e32166938d7f86c7ab236ed554a2bc9fef Mon Sep 17 00:00:00 2001 From: wyu <kknd09321@nate.com> Date: 월, 08 11월 2021 16:14:03 +0900 Subject: [PATCH] 업체 관리 백엔드 추가 --- src/main/java/kr/wisestone/owl/mapper/CompanyFieldMapper.java | 22 + src/main/java/kr/wisestone/owl/domain/CompanyField.java | 98 +++++ src/main/resources/mybatis/query-template/companyField-template.xml | 40 ++ src/main/java/kr/wisestone/owl/web/controller/CompanyFieldController.java | 97 +++++ src/main/java/kr/wisestone/owl/service/CompanyFieldService.java | 31 + src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java | 2 src/main/java/kr/wisestone/owl/vo/CompanyFieldVo.java | 101 +++++ src/main/java/kr/wisestone/owl/constant/MsgConstants.java | 13 src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties | 13 src/main/java/kr/wisestone/owl/repository/CompanyFieldRepository.java | 8 src/main/java/kr/wisestone/owl/service/DepartmentManageService.java | 2 src/main/resources/migration/V1_11__Alter_Table.sql | 16 src/main/java/kr/wisestone/owl/web/condition/CompanyFieldCondition.java | 112 ++++++ src/main/java/kr/wisestone/owl/service/impl/DepartmentManageServiceImpl.java | 113 +++-- src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java | 185 ++++++++++ src/main/java/kr/wisestone/owl/web/form/CompanyFieldForm.java | 112 ++++++ src/main/java/kr/wisestone/owl/web/controller/DepartmentManageController.java | 15 src/main/java/kr/wisestone/owl/mapper/DepartmentManageMapper.java | 2 18 files changed, 920 insertions(+), 62 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java index 3660334..9a75dee 100644 --- a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java +++ b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java @@ -205,11 +205,20 @@ public static final String PAGE_SIZE_NEGATIVE_OR_NULL = "PAGE_SIZE_NEGATIVE_OR_NULL"; // �슂泥��븳 �럹�씠吏� �겕湲곌� �옒紐삳릺�뿀�뒿�땲�떎. public static final String USER_LEVEL_ALREADY_IN_USE = "USER_LEVEL_ALREADY_IN_USE"; // �궗�슜�옄 �벑湲됱쓣 �궗�슜�븯怨� �엳�뒗 �궗�슜�옄媛� �엳�뒿�땲�떎. - public static final String USER_LEVEL_ALREADY = "USER_LEVEL_ALREADY"; // �궗�슜�옄 �벑湲됱쓣 �궗�슜�븯怨� �엳�뒗 �궗�슜�옄媛� �엳�뒿�땲�떎. public static final String USER_LEVEL_PERMISSION_DENIED = "USER_LEVEL_PERMISSION_DENIED"; // �궗�슜�옄 �벑湲� �젙蹂대�� �닔�젙�븷�닔 �뾾�뒿�땲�떎. public static final String USER_LEVEL_NOT_EXIST = "USER_LEVEL_NOT_EXIST"; // �궗�슜�옄 �벑湲됱씠 議댁옱�븯吏� �븡�뒿�땲�떎. - public static final String USER_LEVEL_NOT_DELETE = "USER_LEVEL_NOT_DELETE"; // 湲곕낯 �궗�슜�옄 �벑湲됱� �궘�젣�븷�닔 �뾾�뒿�땲�떎. + public static final String USER_LEVEL_REMOVE_NOT_SELECT = "USER_LEVEL_REMOVE_NOT_SELECT"; // �궘�젣�븷 �궗�슜�옄 �벑湲됱씠 �꽑�깮�릺吏� �븡�븯�뒿�땲�떎. + + + public static final String DEPARTMENT_NOT_EXIST = "DEPARTMENT_NOT_EXIST"; // 遺��꽌媛� 議댁옱�븯吏� �븡�뒿�땲�떎. + public static final String DEPARTMENT_ALREADY_IN_USE = "DEPARTMENT_ALREADY_IN_USE"; // �꽑�깮�븳 遺��꽌�뒗 �씠誘� �궗�슜�븯怨� �엳�뒿�땲�떎. + public static final String DEPARTMENT_REMOVE_NOT_SELECT = "DEPARTMENT_REMOVE_NOT_SELECT"; // �궘�젣�븷 遺��꽌媛� �꽑�깮�릺吏� �븡�븯�뒿�땲�떎. + + + + public static final String COMPANY_REMOVE_NOT_SELECT = "COMPANY_REMOVE_NOT_SELECT"; // �궘�젣�븷 �뾽泥닿� �꽑�깮�릺吏� �븡�븯�뒿�땲�떎. + public static final String COMPANYFIELD_NOT_EXIST = "COMPANYFIELD_NOT_EXIST"; // �뾽泥닿� 議댁옱�븯吏� �븡�뒿�땲�떎. } diff --git a/src/main/java/kr/wisestone/owl/domain/CompanyField.java b/src/main/java/kr/wisestone/owl/domain/CompanyField.java new file mode 100644 index 0000000..df714bc --- /dev/null +++ b/src/main/java/kr/wisestone/owl/domain/CompanyField.java @@ -0,0 +1,98 @@ +package kr.wisestone.owl.domain; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import java.io.Serializable; + +@Entity +public class CompanyField extends BaseEntity implements Serializable { + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String name; + private String companyType; + private String profitYN; + private String industy; + private String domain; + private String email; + private String tel; + private String desc; + + public CompanyField() {} + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCompanyType() { + return companyType; + } + + public void setCompanyType(String companyType) { + this.companyType = companyType; + } + + public String getProfitYN() { + return profitYN; + } + + public void setProfitYN(String profitYN) { + this.profitYN = profitYN; + } + + public String getIndusty() { + return industy; + } + + public void setIndusty(String industy) { + this.industy = industy; + } + + public String getDomain() { + return domain; + } + + public void setDomain(String domain) { + this.domain = domain; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getTel() { + return tel; + } + + public void setTel(String tel) { + this.tel = tel; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/src/main/java/kr/wisestone/owl/mapper/CompanyFieldMapper.java b/src/main/java/kr/wisestone/owl/mapper/CompanyFieldMapper.java new file mode 100644 index 0000000..34447cb --- /dev/null +++ b/src/main/java/kr/wisestone/owl/mapper/CompanyFieldMapper.java @@ -0,0 +1,22 @@ +package kr.wisestone.owl.mapper; + +import kr.wisestone.owl.web.condition.CompanyFieldCondition; +import kr.wisestone.owl.web.condition.DepartmentManageCondition; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +/** + * Created by wisestone on 2018-02-26. + */ +@Repository +public interface CompanyFieldMapper { + List<Map<String, Object>> find(CompanyFieldCondition companyFieldCondition); + + Long count(CompanyFieldCondition companyFieldCondition); + + List<Map<String, Object>> findEvent(); + + Long findByCompany(Long id); +} diff --git a/src/main/java/kr/wisestone/owl/mapper/DepartmentManageMapper.java b/src/main/java/kr/wisestone/owl/mapper/DepartmentManageMapper.java index 987f487..f191761 100644 --- a/src/main/java/kr/wisestone/owl/mapper/DepartmentManageMapper.java +++ b/src/main/java/kr/wisestone/owl/mapper/DepartmentManageMapper.java @@ -16,4 +16,6 @@ Long count(DepartmentManageCondition departmentManageCondition); List<Map<String, Object>> findEvent(); + + Long findBydepartmentId(Long Id); } diff --git a/src/main/java/kr/wisestone/owl/repository/CompanyFieldRepository.java b/src/main/java/kr/wisestone/owl/repository/CompanyFieldRepository.java new file mode 100644 index 0000000..afc7954 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/repository/CompanyFieldRepository.java @@ -0,0 +1,8 @@ +package kr.wisestone.owl.repository; + +import kr.wisestone.owl.domain.CompanyField; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface CompanyFieldRepository extends JpaRepository<CompanyField, Long> { + +} diff --git a/src/main/java/kr/wisestone/owl/service/CompanyFieldService.java b/src/main/java/kr/wisestone/owl/service/CompanyFieldService.java new file mode 100644 index 0000000..c9e836b --- /dev/null +++ b/src/main/java/kr/wisestone/owl/service/CompanyFieldService.java @@ -0,0 +1,31 @@ +package kr.wisestone.owl.service; + +import kr.wisestone.owl.domain.CompanyField; +import kr.wisestone.owl.vo.CompanyFieldVo; +import kr.wisestone.owl.web.condition.CompanyFieldCondition; +import kr.wisestone.owl.web.form.CompanyFieldForm; +import org.springframework.data.domain.Pageable; +import org.springframework.ui.Model; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +public interface CompanyFieldService { + CompanyField addCompany(CompanyFieldForm companyFieldForm); + + List<CompanyFieldVo> findCompany(Map<String, Object> resJsonData, CompanyFieldCondition make, Pageable pageable); + + CompanyField getCompany(Long id); + + void detailCompany(Map<String, Object> resJsonData, CompanyFieldCondition make); + + void modifyCompany(CompanyFieldForm make); + + void removeCompany(CompanyFieldForm make); + + ModelAndView downloadExcel(HttpServletRequest request, Model model); + + boolean company(Long id); +} diff --git a/src/main/java/kr/wisestone/owl/service/DepartmentManageService.java b/src/main/java/kr/wisestone/owl/service/DepartmentManageService.java index b37ad88..d3ca526 100644 --- a/src/main/java/kr/wisestone/owl/service/DepartmentManageService.java +++ b/src/main/java/kr/wisestone/owl/service/DepartmentManageService.java @@ -27,4 +27,6 @@ void detailDepartment(Map<String, Object> resJsonData, DepartmentManageCondition make); ModelAndView downloadExcel(HttpServletRequest request, Model model); + + boolean department(Long id); } diff --git a/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java new file mode 100644 index 0000000..ed110b9 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java @@ -0,0 +1,185 @@ +package kr.wisestone.owl.service.impl; + +import kr.wisestone.owl.domain.CompanyField; +import kr.wisestone.owl.service.UserService; +import kr.wisestone.owl.web.condition.CompanyFieldCondition; +import kr.wisestone.owl.web.form.CompanyFieldForm; +import org.springframework.ui.Model; +import com.google.common.collect.Lists; +import kr.wisestone.owl.common.ExcelConditionCheck; +import kr.wisestone.owl.constant.Constants; +import kr.wisestone.owl.constant.MsgConstants; +import kr.wisestone.owl.exception.OwlRuntimeException; +import kr.wisestone.owl.mapper.CompanyFieldMapper; +import kr.wisestone.owl.repository.CompanyFieldRepository; +import kr.wisestone.owl.service.CompanyFieldService; +import kr.wisestone.owl.service.WorkspaceService; +import kr.wisestone.owl.util.ConvertUtil; +import kr.wisestone.owl.vo.*; +import kr.wisestone.owl.web.view.ExcelView; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Service; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class CompanyFieldServiceImpl extends AbstractServiceImpl<CompanyField, Long, JpaRepository<CompanyField, Long>> implements CompanyFieldService { + + @Autowired + private CompanyFieldRepository companyFieldRepository; + + @Autowired + private CompanyFieldMapper companyFieldMapper; + + @Autowired + private UserService userService; + + @Autowired + private WorkspaceService workspaceService; + + @Autowired + private ExcelView excelView; + + @Autowired + private ExcelConditionCheck excelConditionCheck; + + @Override + protected JpaRepository<CompanyField, Long> getRepository() { + return this.companyFieldRepository; + } + + // �뾽泥� 異붽� + @Override + public CompanyField addCompany(CompanyFieldForm companyFieldForm) { + CompanyField companyField = ConvertUtil.copyProperties(companyFieldForm, CompanyField.class); + companyFieldRepository.saveAndFlush(companyField); + return companyField; + } + + // �뾽泥� 紐⑸줉�쓣 媛��졇�삩�떎. + @Override + public List<CompanyFieldVo> findCompany(Map<String, Object> resJsonData, + CompanyFieldCondition condition, Pageable pageable) { + condition.setPage(pageable.getPageNumber() * pageable.getPageSize()); + condition.setPageSize(pageable.getPageSize()); + + List<Map<String, Object>> results = this.companyFieldMapper.find(condition); + Long totalCompanyCount = this.companyFieldMapper.count(condition); + + return this.convertCompanyVoToMap(results, totalCompanyCount, pageable, resJsonData); + } + + + // �뾽泥� �긽�꽭 議고쉶�븳�떎. + @Override + public void detailCompany(Map<String, Object> resJsonData, CompanyFieldCondition companyFieldCondition) { + CompanyFieldVo companyFieldVo = new CompanyFieldVo(); + + Long companyId = companyFieldCondition.getId(); + if (companyId != null) { + CompanyField companyField = this.getCompany(companyId); + companyFieldVo = ConvertUtil.copyProperties(companyField, CompanyFieldVo.class); + } + resJsonData.put(Constants.REQ_KEY_CONTENT, companyFieldVo); + } + + // �뾽泥� �젙濡쒕�� �닔�젙�븳�떎. + @Override + public void modifyCompany(CompanyFieldForm companyFieldForm) { + CompanyField companyField = ConvertUtil.copyProperties(companyFieldForm, CompanyField.class); + companyFieldRepository.saveAndFlush(companyField); + } + + + // �뾽泥대�� �궘�젣�븳�떎. + @Override + public void removeCompany(CompanyFieldForm companyFieldForm) { + if (companyFieldForm.getRemoveIds().size() < 1) { + throw new OwlRuntimeException( + this.messageAccessor.getMessage(MsgConstants.COMPANY_REMOVE_NOT_SELECT)); + } + this.companyFieldRepository.flush(); + } + + // �뾽泥� 紐⑸줉�쓣 �뿊��濡� �떎�슫濡쒕뱶 �븳�떎. + @Override + public ModelAndView downloadExcel(HttpServletRequest request, Model model) { + ModelAndView modelAndView = this.workspaceService.checkUseExcelDownload(model); + if (modelAndView != null) { + return modelAndView; + } + + Map<String, Object> conditions = new HashMap<>(); + // �뿊�� �떎�슫濡쒕뱶�뿉 �븘�슂�븳 寃��깋 議곌굔 �젙蹂대�� 異붿텧�븯怨� 寃��깋 議곌굔 異붿텧�뿉 �삤瑜섍� 諛쒖깮�븯硫� 寃쎄퀬瑜� �몴�떆�빐以��떎. + modelAndView = this.excelConditionCheck.checkCondition(conditions, request, model); + if (modelAndView != null) { + return modelAndView; + } + + CompanyFieldCondition companyFieldCondition = CompanyFieldCondition.make(conditions); + + + List<Map<String, Object>> results = this.companyFieldMapper.find(companyFieldCondition); + List<CompanyFieldVo> companyFieldVos = ConvertUtil.convertListToListClass(results, CompanyFieldVo.class); + // code_ko_KR �뿉 code紐� �꽕�젙 + ExportExcelVo excelInfo = new ExportExcelVo(); + excelInfo.setFileName(this.messageAccessor.message("�뾽泥� 紐⑸줉")); + excelInfo.addAttrInfos(new ExportExcelAttrVo("companyName", this.messageAccessor.message("departmentManage.departmentName"), 6, ExportExcelAttrVo.ALIGN_CENTER)); + excelInfo.addAttrInfos(new ExportExcelAttrVo("", this.messageAccessor.message("departmentManage.departmentDescription"), 10, ExportExcelAttrVo.ALIGN_CENTER)); + excelInfo.addAttrInfos(new ExportExcelAttrVo("companyPhone", this.messageAccessor.message("departmentManage.departmentCount"), 10, ExportExcelAttrVo.ALIGN_CENTER)); + excelInfo.addAttrInfos(new ExportExcelAttrVo("companyEmail", this.messageAccessor.message("departmentManage.departmentCount"), 10, ExportExcelAttrVo.ALIGN_CENTER)); + excelInfo.addAttrInfos(new ExportExcelAttrVo("companyDesc", this.messageAccessor.message("departmentManage.departmentCount"), 10, ExportExcelAttrVo.ALIGN_CENTER)); + + excelInfo.setDatas(companyFieldVos); + + model.addAttribute(Constants.EXCEL, excelInfo); + return new ModelAndView(this.excelView); + } + + // �궘�젣 �븷 �뾽泥닿� �엳�뒗吏� �솗�씤 + @Override + public boolean company(Long Id) { + return this.companyFieldMapper.findByCompany(Id) > 0; + } + + // 寃��깋 寃곌낵瑜� CompanyFieldVo 濡� 蹂��솚�븳�떎. + private List<CompanyFieldVo> convertCompanyVoToMap(List<Map<String, Object>> results, Long totalCompanyCount, Pageable pageable, Map<String, Object> resJsonData) { + List<CompanyFieldVo> companyFieldVos = Lists.newArrayList(); + + for (Map<String, Object> result : results) { + CompanyFieldVo companyFieldVo = ConvertUtil.convertMapToClass(result, CompanyFieldVo.class); + companyFieldVos.add(companyFieldVo); + } + + int totalPage = (int) Math.ceil((totalCompanyCount - 1) / pageable.getPageSize()) + 1; + + resJsonData.put(Constants.RES_KEY_CONTENTS, companyFieldVos); + resJsonData.put(Constants.REQ_KEY_PAGE_VO, new ResPage(pageable.getPageNumber(), pageable.getPageSize(), + totalPage, totalCompanyCount)); + + return companyFieldVos; + } + + // �뾽泥� ID 濡� 議고쉶�븳�떎 + @Override + public CompanyField getCompany(Long id) { + if (id == null) { + throw new OwlRuntimeException( + this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_NOT_EXIST)); + } + + CompanyField companyField = this.findOne(id); + + if (companyField == null) { + throw new OwlRuntimeException( + this.messageAccessor.getMessage(MsgConstants.COMPANYFIELD_NOT_EXIST)); + } + return companyField; + } +} diff --git a/src/main/java/kr/wisestone/owl/service/impl/DepartmentManageServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/DepartmentManageServiceImpl.java index c1459c4..ae93ef1 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/DepartmentManageServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/DepartmentManageServiceImpl.java @@ -1,7 +1,6 @@ package kr.wisestone.owl.service.impl; -import kr.wisestone.owl.domain.UserLevel; -import kr.wisestone.owl.web.form.UserLevelForm; +import kr.wisestone.owl.service.UserService; import org.springframework.ui.Model; import com.google.common.collect.Lists; import kr.wisestone.owl.common.ExcelConditionCheck; @@ -39,6 +38,9 @@ private DepartmentManageMapper departmentManageMapper; @Autowired + private UserService userService; + + @Autowired private WorkspaceService workspaceService; @Autowired @@ -73,39 +75,6 @@ return this.convertDepartmentManageVoToMap(results, totalDepartmentCount, pageable, resJsonData); } - // �궗�슜�옄 遺��꽌 ID濡� 議고쉶�븳�떎. - @Override - public DepartmentManage getDepartment(Long id) { - if (id == null) { - throw new OwlRuntimeException( - this.messageAccessor.getMessage(MsgConstants.USER_LEVEL_NOT_EXIST)); - } - - DepartmentManage departmentManage = this.findOne(id); - - if (departmentManage == null) { - throw new OwlRuntimeException( - this.messageAccessor.getMessage(MsgConstants.USER_LEVEL_NOT_EXIST)); - } - - return departmentManage; - } - - // 遺��꽌瑜� �궘�젣�븳�떎. - @Override - public void removeDepartment(DepartmentManageForm departmentManageForm) { - if (departmentManageForm.getRemoveIds().size() < 1) { - throw new OwlRuntimeException( - this.messageAccessor.getMessage(MsgConstants.PROJECT_REMOVE_NOT_SELECT)); - } - - for (Long departmentId : departmentManageForm.getRemoveIds()) { - this.departmentManageRepository.deleteById(departmentId); - } - - this.departmentManageRepository.flush(); - } - // 遺��꽌 �긽�꽭 議고쉶�븳�떎. @Override public void detailDepartment(Map<String, Object> resJsonData, DepartmentManageCondition departmentManageCondition) { @@ -126,23 +95,24 @@ departmentManageRepository.saveAndFlush(departmentManage); } - - // 寃��깋 寃곌낵瑜� DepartmentManageVo 濡� 蹂��솚�븳�떎. - private List<DepartmentManageVo> convertDepartmentManageVoToMap(List<Map<String, Object>> results, Long totalDepartmentsCount, Pageable pageable, Map<String, Object> resJsonData) { - List<DepartmentManageVo> departmentManageVos = Lists.newArrayList(); - - for (Map<String, Object> result : results) { - DepartmentManageVo departmentManageVo = ConvertUtil.convertMapToClass(result, DepartmentManageVo.class); - departmentManageVos.add(departmentManageVo); + // 遺��꽌瑜� �궘�젣�븳�떎. + @Override + public void removeDepartment(DepartmentManageForm departmentManageForm) { + if (departmentManageForm.getRemoveIds().size() < 1) { + throw new OwlRuntimeException( + this.messageAccessor.getMessage(MsgConstants.DEPARTMENT_REMOVE_NOT_SELECT)); } - int totalPage = (int) Math.ceil((totalDepartmentsCount - 1) / pageable.getPageSize()) + 1; + for (Long id : departmentManageForm.getRemoveIds()) { + if (!this.userService.useUserLevel(id)) { + this.departmentManageRepository.deleteById(id); + } else { + throw new OwlRuntimeException( + this.messageAccessor.getMessage(MsgConstants.DEPARTMENT_ALREADY_IN_USE)); + } - resJsonData.put(Constants.RES_KEY_CONTENTS, departmentManageVos); - resJsonData.put(Constants.REQ_KEY_PAGE_VO, new ResPage(pageable.getPageNumber(), pageable.getPageSize(), - totalPage, totalDepartmentsCount)); - - return departmentManageVos; + } + this.departmentManageRepository.flush(); } // 遺��꽌 紐⑸줉�쓣 �뿊��濡� �떎�슫濡쒕뱶 �븳�떎. @@ -166,7 +136,6 @@ List<Map<String, Object>> results = this.departmentManageMapper.find(departmentManageCondition); List<DepartmentManageVo> departmentManageVos = ConvertUtil.convertListToListClass(results, DepartmentManageVo.class); - // code_ko_KR �뿉 code紐� �꽕�젙 ExportExcelVo excelInfo = new ExportExcelVo(); excelInfo.setFileName(this.messageAccessor.message("遺��꽌 紐⑸줉")); @@ -178,6 +147,50 @@ model.addAttribute(Constants.EXCEL, excelInfo); return new ModelAndView(this.excelView); + } + // �궗�슜�옄 遺��꽌 ID濡� 議고쉶�븳�떎. + @Override + public DepartmentManage getDepartment(Long id) { + if (id == null) { + throw new OwlRuntimeException( + this.messageAccessor.getMessage(MsgConstants.DEPARTMENT_NOT_EXIST)); + } + + DepartmentManage departmentManage = this.findOne(id); + + if (departmentManage == null) { + throw new OwlRuntimeException( + this.messageAccessor.getMessage(MsgConstants.DEPARTMENT_NOT_EXIST)); + } + + return departmentManage; + } + + + // �궘�젣 �븷 遺��꽌 �쑀��媛� �궗�슜�븯怨� �엳�뒗吏� �솗�씤 + @Override + public boolean department(Long Id) { + return this.departmentManageMapper.findBydepartmentId(Id) > 0; + } + + + // 寃��깋 寃곌낵瑜� DepartmentManageVo 濡� 蹂��솚�븳�떎. + private List<DepartmentManageVo> convertDepartmentManageVoToMap(List<Map<String, Object>> results, Long totalDepartmentsCount, Pageable pageable, Map<String, Object> resJsonData) { + List<DepartmentManageVo> departmentManageVos = Lists.newArrayList(); + + for (Map<String, Object> result : results) { + DepartmentManageVo departmentManageVo = ConvertUtil.convertMapToClass(result, DepartmentManageVo.class); + departmentManageVos.add(departmentManageVo); + } + + int totalPage = (int) Math.ceil((totalDepartmentsCount - 1) / pageable.getPageSize()) + 1; + + resJsonData.put(Constants.RES_KEY_CONTENTS, departmentManageVos); + resJsonData.put(Constants.REQ_KEY_PAGE_VO, new ResPage(pageable.getPageNumber(), pageable.getPageSize(), + totalPage, totalDepartmentsCount)); + + return departmentManageVos; + } } diff --git a/src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java index 17e03da..b3baa2c 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/UserLevelServiceImpl.java @@ -173,7 +173,7 @@ public void removeUserLevel(UserLevelForm userLevelForm) { if (userLevelForm.getRemoveIds().size() < 1) { throw new OwlRuntimeException( - this.messageAccessor.getMessage(MsgConstants.PROJECT_REMOVE_NOT_SELECT)); + this.messageAccessor.getMessage(MsgConstants.USER_LEVEL_REMOVE_NOT_SELECT)); } // 湲곕낯 �궗�슜�옄 �벑湲� �궘�젣 泥댄겕 diff --git a/src/main/java/kr/wisestone/owl/vo/CompanyFieldVo.java b/src/main/java/kr/wisestone/owl/vo/CompanyFieldVo.java new file mode 100644 index 0000000..9fd52a1 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/vo/CompanyFieldVo.java @@ -0,0 +1,101 @@ +package kr.wisestone.owl.vo; + +public class CompanyFieldVo extends BaseVo{ + + private Long id; + private String name; + private String companyType; + private String profitYN; + private String industy; + private String domain; + private String email; + private String tel; + private String desc; + + public CompanyFieldVo() {} + + public CompanyFieldVo(Long id, String name, String companyType, String profitYN, String industy, String domain, String email, String tel, String desc) { + + this.id = id; + this.name = name; + this.companyType = companyType; + this.profitYN = profitYN; + this.industy = industy; + this.domain = domain; + this.email = email; + this.tel = tel; + this.desc = desc; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCompanyType() { + return companyType; + } + + public void setCompanyType(String companyType) { + this.companyType = companyType; + } + + public String getProfitYN() { + return profitYN; + } + + public void setProfitYN(String profitYN) { + this.profitYN = profitYN; + } + + public String getIndusty() { + return industy; + } + + public void setIndusty(String industy) { + this.industy = industy; + } + + public String getDomain() { + return domain; + } + + public void setDomain(String domain) { + this.domain = domain; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getTel() { + return tel; + } + + public void setTel(String tel) { + this.tel = tel; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/src/main/java/kr/wisestone/owl/web/condition/CompanyFieldCondition.java b/src/main/java/kr/wisestone/owl/web/condition/CompanyFieldCondition.java new file mode 100644 index 0000000..9385756 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/web/condition/CompanyFieldCondition.java @@ -0,0 +1,112 @@ +package kr.wisestone.owl.web.condition; + +import kr.wisestone.owl.util.ConvertUtil; + +import java.util.Map; + +public class CompanyFieldCondition { + private Long id; + private String name; + private String companyType; + private String profitYN; + private String industy; + private String domain; + private String email; + private String tel; + private String desc; + + private Integer Page; + private Integer PageSize; + + public static CompanyFieldCondition make(Map<String, Object> companyFieldCondition) { + return ConvertUtil.convertMapToClass(companyFieldCondition, CompanyFieldCondition.class); + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCompanyType() { + return companyType; + } + + public void setCompanyType(String companyType) { + this.companyType = companyType; + } + + public String getProfitYN() { + return profitYN; + } + + public void setProfitYN(String profitYN) { + this.profitYN = profitYN; + } + + public String getIndusty() { + return industy; + } + + public void setIndusty(String industy) { + this.industy = industy; + } + + public String getDomain() { + return domain; + } + + public void setDomain(String domain) { + this.domain = domain; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getTel() { + return tel; + } + + public void setTel(String tel) { + this.tel = tel; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public Integer getPage() { + return Page; + } + + public void setPage(Integer page) { + Page = page; + } + + public Integer getPageSize() { + return PageSize; + } + + public void setPageSize(Integer pageSize) { + PageSize = pageSize; + } +} diff --git a/src/main/java/kr/wisestone/owl/web/controller/CompanyFieldController.java b/src/main/java/kr/wisestone/owl/web/controller/CompanyFieldController.java new file mode 100644 index 0000000..8b4f065 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/web/controller/CompanyFieldController.java @@ -0,0 +1,97 @@ +package kr.wisestone.owl.web.controller; + +import kr.wisestone.owl.constant.Constants; + +import kr.wisestone.owl.service.CompanyFieldService; +import kr.wisestone.owl.web.condition.CompanyFieldCondition; +import kr.wisestone.owl.web.form.CompanyFieldForm; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.Map; + +@Controller +public class CompanyFieldController extends BaseController{ + + @Autowired + private CompanyFieldService companyFieldService; + + // �뾽泥� �깮�꽦 + @RequestMapping(value = "/companyField/add", method = RequestMethod.POST) + public + @ResponseBody + Map<String, Object> add(@RequestBody Map<String, Map<String, Object>> params) { + Map<String, Object> resJsonData = new HashMap<>(); + Map<String, Object> content = params.get(Constants.REQ_KEY_CONTENT); + this.companyFieldService.addCompany(CompanyFieldForm.make(content)); + + return this.setSuccessMessage(resJsonData); + } + + // �뾽泥� 議고쉶 + @RequestMapping(value = "/companyField/find", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public + @ResponseBody + Map<String, Object> find(@RequestBody Map<String, Map<String, Object>> params) { + Map<String, Object> resJsonData = new HashMap<>(); + Pageable pageable = this.pageUtil.convertPageable(this.getPageVo(params)); + + this.companyFieldService.findCompany(resJsonData, CompanyFieldCondition.make(params.get(Constants.REQ_KEY_CONTENT)), pageable); + + return this.setSuccessMessage(resJsonData); + } + + // �뾽泥� �긽�꽭 議고쉶 + @RequestMapping(value = "/companyField/detail", produces = MediaType.APPLICATION_JSON_VALUE) + public + @ResponseBody + Map<String, Object> detail(@RequestBody Map<String, Map<String, Object>> params) { + Map<String, Object> resJsonData = new HashMap<>(); + this.companyFieldService.detailCompany(resJsonData, CompanyFieldCondition.make(params.get(Constants.REQ_KEY_CONTENT))); + + return this.setSuccessMessage(resJsonData); + } + + // �뾽泥� �닔�젙 + @RequestMapping(value = "/companyField/modify", produces = MediaType.APPLICATION_JSON_VALUE) + public + @ResponseBody + Map<String, Object> modify(@RequestBody Map<String, Map<String, Object>> params) { + Map<String, Object> resJsonData = new HashMap<>(); + + this.companyFieldService.modifyCompany(CompanyFieldForm.make(params.get(Constants.REQ_KEY_CONTENT))); + + return this.setSuccessMessage(resJsonData); + } + + // �뾽泥� �궘�젣 + @RequestMapping(value = "/companyField/remove", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public + @ResponseBody + Map<String, Object> remove(@RequestBody Map<String, Map<String, Object>> params) { + Map<String, Object> resJsonData = new HashMap<>(); + Map<String, Object> content = params.get(Constants.REQ_KEY_CONTENT); + + this.companyFieldService.removeCompany(CompanyFieldForm.make(content)); + + return this.setSuccessMessage(resJsonData); + } + + + // �뾽泥� �뿊�� �떎�슫濡쒕뱶 + @RequestMapping(value = "/companyField/downloadExcel", method = RequestMethod.POST) + public ModelAndView downloadExcel(HttpServletRequest request, Model model) { + return this.companyFieldService.downloadExcel(request, model); + } +} + diff --git a/src/main/java/kr/wisestone/owl/web/controller/DepartmentManageController.java b/src/main/java/kr/wisestone/owl/web/controller/DepartmentManageController.java index 8218a27..289df46 100644 --- a/src/main/java/kr/wisestone/owl/web/controller/DepartmentManageController.java +++ b/src/main/java/kr/wisestone/owl/web/controller/DepartmentManageController.java @@ -28,11 +28,11 @@ @Autowired private DepartmentManageService departmentManageService; - // 遺��꽌 �깮�꽦 + // 遺��꽌 �깮�꽦 @RequestMapping(value = "/departmentManage/add", method = RequestMethod.POST) public @ResponseBody - Map<String, Object> addDepartmentManage(@RequestBody Map<String, Map<String, Object>> params) { + Map<String, Object> add(@RequestBody Map<String, Map<String, Object>> params) { Map<String, Object> resJsonData = new HashMap<>(); Map<String, Object> content = params.get(Constants.REQ_KEY_CONTENT); this.departmentManageService.addDepartmentManage(DepartmentManageForm.make(content)); @@ -40,7 +40,7 @@ return this.setSuccessMessage(resJsonData); } - // 遺��꽌 議고쉶 + // 遺��꽌 議고쉶 @RequestMapping(value = "/departmentManage/find", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) public @ResponseBody @@ -53,8 +53,7 @@ return this.setSuccessMessage(resJsonData); } - // - // 遺��꽌 �긽�꽭 議고쉶 + // 遺��꽌 �긽�꽭 議고쉶 @RequestMapping(value = "/departmentManage/detail", produces = MediaType.APPLICATION_JSON_VALUE) public @ResponseBody @@ -65,7 +64,7 @@ return this.setSuccessMessage(resJsonData); } - // 遺��꽌 �닔�젙 + // 遺��꽌 �닔�젙 @RequestMapping(value = "/departmentManage/modify", produces = MediaType.APPLICATION_JSON_VALUE) public @ResponseBody @@ -77,7 +76,7 @@ return this.setSuccessMessage(resJsonData); } - // 遺��꽌 �궘�젣 + // 遺��꽌 �궘�젣 @RequestMapping(value = "/departmentManage/remove", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) public @ResponseBody @@ -91,7 +90,7 @@ } - // 遺��꽌 �뿊�� �떎�슫濡쒕뱶 + // 遺��꽌 �뿊�� �떎�슫濡쒕뱶 @RequestMapping(value = "/departmentManage/downloadExcel", method = RequestMethod.POST) public ModelAndView downloadExcel(HttpServletRequest request, Model model) { return this.departmentManageService.downloadExcel(request, model); diff --git a/src/main/java/kr/wisestone/owl/web/form/CompanyFieldForm.java b/src/main/java/kr/wisestone/owl/web/form/CompanyFieldForm.java new file mode 100644 index 0000000..786003e --- /dev/null +++ b/src/main/java/kr/wisestone/owl/web/form/CompanyFieldForm.java @@ -0,0 +1,112 @@ +package kr.wisestone.owl.web.form; + +import com.google.common.collect.Lists; +import kr.wisestone.owl.util.ConvertUtil; +import kr.wisestone.owl.util.MapUtil; + +import java.util.List; +import java.util.Map; + +public class CompanyFieldForm { + private Long id; + private String name; + private String companyType; + private String profitYN; + private String industy; + private String domain; + private String email; + private String tel; + private String desc; + private List<Long> removeIds = Lists.newArrayList(); + + public CompanyFieldForm() { + } + public static CompanyFieldForm make(Map<String, Object> params) { + CompanyFieldForm form = ConvertUtil.convertMapToClass(params, CompanyFieldForm.class); + + if (MapUtil.getLongs(params,"removeIds") != null) { + form.setRemoveIds(MapUtil.getLongs(params, "removeIds")); + } + return form; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCompanyType() { + return companyType; + } + + public void setCompanyType(String companyType) { + this.companyType = companyType; + } + + public String getProfitYN() { + return profitYN; + } + + public void setProfitYN(String profitYN) { + this.profitYN = profitYN; + } + + public String getIndusty() { + return industy; + } + + public void setIndusty(String industy) { + this.industy = industy; + } + + public String getDomain() { + return domain; + } + + public void setDomain(String domain) { + this.domain = domain; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getTel() { + return tel; + } + + public void setTel(String tel) { + this.tel = tel; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + + public List<Long> getRemoveIds() { + return removeIds; + } + + public void setRemoveIds(List<Long> removeIds) { + this.removeIds = removeIds; + } +} diff --git a/src/main/resources/migration/V1_11__Alter_Table.sql b/src/main/resources/migration/V1_11__Alter_Table.sql new file mode 100644 index 0000000..024844b --- /dev/null +++ b/src/main/resources/migration/V1_11__Alter_Table.sql @@ -0,0 +1,16 @@ +CREATE TABLE `company`( + `id` BIGINT(11) AUTO_INCREMENT, + `name` VARCHAR(50) NOT NULL, + `company_type` VARCHAR(50) NOT NULL, + `profit_yn` VARCHAR(50) NOT NULL, + `industry` VARCHAR(50) NOT NULL, + `domain` VARCHAR(255) NOT NULL, + `email` VARCHAR (255) NOT NULL, + `tel` VARCHAR (50) NOT NULL, + `desc` VARCHAR(255) NOT NULL, + `register_date` TIMESTAMP NULL, + `modify_id` BIGINT(20) NOT NULL, + `modify_date` TIMESTAMP NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +/* �씠硫붿씪�� ID 媛믪쑝濡� 諛쏄퀬 �뿰�씫泥섎룄 user�뿉 phone�뿉�꽌 諛쏆쑝硫� �릺怨�*/ \ No newline at end of file diff --git a/src/main/resources/mybatis/query-template/companyField-template.xml b/src/main/resources/mybatis/query-template/companyField-template.xml new file mode 100644 index 0000000..0aac445 --- /dev/null +++ b/src/main/resources/mybatis/query-template/companyField-template.xml @@ -0,0 +1,40 @@ +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + +<mapper namespace="kr.wisestone.owl.mapper.CompanyFieldMapper"> + + <select id="find" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.CompanyFieldCondition"> + SELECT + c.id as id, + c.name as name, + c.email as email, + c.tel as tel, + c.desc as desc + FROM + company c + WHERE 1=1 + <if test="name != '' and name != null"> + AND c.name like CONCAT('%',#{name},'%') + </if> + <if test="id != '' and id != null"> + AND c.id like CONCAT('%',#{id},'%') + </if> + <if test="pageSize != '' and pageSize != null"> + limit #{pageSize} offset #{page}; + </if> + </select> + + <select id="count" resultType="java.lang.Long" parameterType="kr.wisestone.owl.web.condition.CompanyFieldCondition"> + SELECT + count(c.id) + FROM + company c + WHERE 1=1 + <if test="name != '' and name != null"> + AND c.name like CONCAT('%',#{name},'%') + </if> + <if test="id != '' and id != null"> + AND c.id like CONCAT('%',#{id},'%') + </if> + </select> +</mapper> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties b/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties index 3973425..abc0723 100644 --- a/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties +++ b/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties @@ -150,6 +150,10 @@ USER_RETURN_PASSWORD_NOT_PROVIDER_SOCIAL_JOIN_USER = \uBE44\uBC00\uBC88\uD638 \uCC3E\uAE30 \uAE30\uB2A5\uC744 \uC18C\uC15C \uACC4\uC815 \uAC00\uC785 \uC0AC\uC6A9\uC790\uB294 \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. USER_NOT_USE_ACTIVE_STATUS = \uC0AC\uC6A9\uC790\uB294 \uD65C\uC131 \uC0C1\uD0DC\uAC00 \uC544\uB2C8\uBA74 \uB85C\uADF8\uC778\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. USER_LEVEL_ALREADY_IN_USE = \uC120\uD0DD\uD55C \uC0AC\uC6A9\uC790 \uB4F1\uAE09\uC744 \uC774\uBBF8 \uC0AC\uC6A9\uD558\uACE0 \uC788\uB294 \uC0AC\uC6A9\uC790\uAC00 \uC788\uC2B5\uB2C8\uB2E4. +USER_LEVEL_PERMISSION_DENIED = \uC0AC\uC6A9\uC790 \uB4F1\uAE09 \uC815\uBCF4\uB97C \uC218\uC815\uD560\uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +USER_LEVEL_NOT_EXIST = \uC0AC\uC6A9\uC790 \uB4F1\uAE09\uC774 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +USER_LEVEL_NOT_DELETE = \uAE30\uBCF8 \uC0AC\uC6A9\uC790 \uB4F1\uAE09\uC740 \uC0AD\uC81C\uD560\uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +USER_LEVEL_REMOVE_NOT_SELECT = \uC0AD\uC81C\uD560 \uC0AC\uC6A9\uC790 \uB4F1\uAE09\uC774 \uC120\uD0DD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. EXCEL_NOT_EXTENSION = \uC5D1\uC140 \uD30C\uC77C \uD655\uC7A5\uC790 (xlsx)\uB9CC \uC5C5\uB85C\uB4DC\uAC00 \uAC00\uB2A5\uD569\uB2C8\uB2E4. EXCEL_DOWNLOAD_MAX_ROWS_OVER = \uC5D1\uC140 \uB2E4\uC6B4\uB85C\uB4DC\uB294 1.000 \uAC74 \uAE4C\uC9C0\uB9CC \uAC00\uB2A5\uD569\uB2C8\uB2E4. \uAC80\uC0C9 \uC870\uAC74\uC744 \uC0AC\uC6A9\uD558\uC5EC \uC870\uD68C\uB418\uB294 \uBAA9\uB85D\uC744 1,000 \uAC74 \uC774\uD558\uB85C \uBCC0\uACBD\uD558\uC5EC \uB2E4\uC6B4\uB85C\uB4DC\uB97C \uC9C4\uD589\uD574\uC8FC\uC138\uC694. @@ -191,4 +195,11 @@ EVENT_EMPTY_CONTENT=\uC774\uBCA4\uD2B8\uAC00 \uC81C\uBAA9 \uBC0F \uB0B4\uC6A9 \uC911 \uC785\uB825 \uAC12\uC774 \uC5C6\uB294 \uD544\uB4DC\uAC00 \uC788\uC2B5\uB2C8\uB2E4. QNA_NOT_EXIST=QnA\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -QNA_EMPTY_CONTENT=QnA\uAC00 \uC81C\uBAA9 \uBC0F \uB0B4\uC6A9 \uC911 \uC785\uB825 \uAC12\uC774 \uC5C6\uB294 \uD544\uB4DC\uAC00 \uC788\uC2B5\uB2C8\uB2E4. \ No newline at end of file +QNA_EMPTY_CONTENT=QnA\uAC00 \uC81C\uBAA9 \uBC0F \uB0B4\uC6A9 \uC911 \uC785\uB825 \uAC12\uC774 \uC5C6\uB294 \uD544\uB4DC\uAC00 \uC788\uC2B5\uB2C8\uB2E4. + +DEPARTMENT_NOT_EXIST = \uBD80\uC11C\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +DEPARTMENT_ALREADY_IN_USE = \uC120\uD0DD\uD55C \uBD80\uC11C\uB294 \uC774\uBBF8 \uC0AC\uC6A9\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4. +DEPARTMENT_REMOVE_NOT_SELECT = \uC0AD\uC81C\uD560 \uBD80\uC11C\uAC00 \uC120\uD0DD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. + +COMPANY_REMOVE_NOT_SELECT = \uC0AD\uC81C\uD560 \uC5C5\uCCB4\uAC00 \uC120\uD0DD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. +COMPANYFIELD_NOT_EXIST = \uC5C5\uCCB4\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \ No newline at end of file -- Gitblit v1.8.0