OWL ITS + 탐지시스템(인터넷 진흥원)
jhjang
2021-12-08 7b4b71ee33c7a42383d3e6a69885d521fd7b6688
Merge branch 'master' of http://192.168.0.25:9001/r/owl-kisa

 Conflicts:
 src/main/resources/migration/V1_12__Alter_Table.sql
6개 파일 추가됨
2개 파일 이름 변경됨
71개 파일 변경됨
811 ■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/domain/CompanyField.java 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/domain/HostingField.java 8 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/domain/IspField.java 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/domain/IssueCompany.java 12 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/domain/IssueHosting.java 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/domain/IssueIsp.java 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/domain/User.java 3 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/mapper/WidgetMapper.java 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/repository/IssueRelationRepository.java 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java 3 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java 3 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java 21 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java 18 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/vo/CompanyFieldVo.java 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/vo/HostingFieldVo.java 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/vo/IspFieldVo.java 10 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/vo/IssueCompanyVo.java 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/vo/IssueHostingVo.java 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/vo/IssueIspVo.java 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/condition/CompanyFieldCondition.java 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/condition/HostingFieldCondition.java 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/condition/IspFieldCondition.java 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/form/CompanyFieldForm.java 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/form/HostingFieldForm.java 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/form/IspFieldForm.java 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/migration/V1_12__Alter_Table.sql 5 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/HostingField-template.xml 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/IspField-template.xml 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/companyField-template.xml 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/issue-template.xml 8 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/issueCompany-template.xml 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/issueHosting-template.xml 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/issueIsp-template.xml 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/project-template.xml 25 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/resources/mybatis/query-template/widget-template.xml 65 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/WEB-INF/i18n/code_ko_KR.properties 5 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/assets/images/default-profile-kisa.png 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/assets/images/logo-kisa-en.png 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/assets/images/logo-kisa-ko.png 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/assets/images/logo-kisa-txt.png 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/assets/images/logo-kisa-vertical.png 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/assets/images/logo-kisa.png 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/assets/styles/main.css 73 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/custom_components/js-autocomplete-multi/js-autocomplete-multi.html 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/custom_components/js-autocomplete-single/js-autocomplete-single.html 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/custom_components/js-input-autocomplete/js-input-autocomplete.html 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/i18n/ko/global.json 3 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/companyField/companyFieldAdd.controller.js 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/companyField/companyFieldList.controller.js 5 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/companyField/companyFieldModify.controller.js 3 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/hostingField/hostingFieldAdd.controller.js 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/hostingField/hostingFieldList.controller.js 5 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/hostingField/hostingFieldModify.controller.js 3 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/ispField/ispFieldAdd.controller.js 2 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/ispField/ispFieldList.controller.js 5 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/ispField/ispFieldModify.controller.js 3 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueAdd.controller.js 9 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueAddRelation.controller.js 12 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js 46 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueList.controller.js 14 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueModify.controller.js 15 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueModifyDepartment.controller.js 3 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/components/utils/autoComplete.controller.js 5 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/companyField/companyFieldAdd.html 17 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/companyField/companyFieldModify.html 17 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/hostingField/hostingFieldAdd.html 17 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/hostingField/hostingFieldModify.html 17 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/ispField/ispFieldAdd.html 17 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/ispField/ispFieldModify.html 17 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueAdd.html 42 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueAddRelation.html 42 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueAddTableConfig.html 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueDetail.html 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueModify.html 42 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueSendMailPartners.html 6 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/login/login.html 8 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/user/superUserAdd.html 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/user/userAdd.html 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/domain/CompanyField.java
@@ -16,6 +16,7 @@
    private String name;
    private String manager;
    private String tel;
    private String url;
    private String email;
    private String memo;
@@ -68,4 +69,12 @@
    public void setMemo(String memo) {
        this.memo = memo;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
src/main/java/kr/wisestone/owl/domain/HostingField.java
@@ -15,6 +15,7 @@
    private String manager;
    private String tel;
    private String email;
    private String url;
    private String memo;
    public HostingField() {}
@@ -75,4 +76,11 @@
        this.memo = memo;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
src/main/java/kr/wisestone/owl/domain/IspField.java
@@ -15,6 +15,7 @@
    private String manager;
    private String tel;
    private String email;
    private String url;
    private String memo;
    public IspField() {}
@@ -75,4 +76,11 @@
        this.memo = memo;
    }
 }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
src/main/java/kr/wisestone/owl/domain/IssueCompany.java
@@ -17,6 +17,7 @@
    private String manager;
    private String tel;
    private String email;
    private String url;
    private String memo;
    @ManyToOne(fetch = FetchType.LAZY)
@@ -29,13 +30,14 @@
    public IssueCompany(){}
    public IssueCompany(Issue issue, CompanyField companyField, String name, String manager, String tel, String email, String memo){
    public IssueCompany(Issue issue, CompanyField companyField, String name, String manager, String tel, String email, String url, String memo){
        this.issue = issue;
        this.companyField = companyField;
        this.name = name;
        this.manager = manager;
        this.tel = tel;
        this.email = email;
        this.url = url;
        this.memo = memo;
    }
@@ -102,4 +104,12 @@
    public void setCompanyField(CompanyField companyField) {
        this.companyField = companyField;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
src/main/java/kr/wisestone/owl/domain/IssueHosting.java
@@ -18,6 +18,7 @@
    private String manager;
    private String tel;
    private String email;
    private String url;
    private String memo;
    @ManyToOne(fetch = FetchType.LAZY)
@@ -38,6 +39,7 @@
        this.manager = manager;
        this.tel = tel;
        this.email = email;
        this.url = url;
        this.memo = memo;
    }
@@ -112,4 +114,12 @@
    public void setHostingField(HostingField hostingField) {
        this.hostingField = hostingField;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
src/main/java/kr/wisestone/owl/domain/IssueIsp.java
@@ -18,6 +18,7 @@
    private String manager;
    private String tel;
    private String email;
    private String url;
    private String memo;
    @ManyToOne(fetch = FetchType.LAZY)
@@ -38,6 +39,7 @@
        this.manager = manager;
        this.tel = tel;
        this.email = email;
        this.url = url;
        this.memo = memo;
    }
@@ -112,4 +114,12 @@
    public void setIspField(IspField ispField) {
        this.ispField = ispField;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
src/main/java/kr/wisestone/owl/domain/User.java
@@ -15,7 +15,8 @@
    public static final String USER_STATUS_ACTIVE = "01";  //  사용자 활성
    public static final String USER_STATUS_DEL = "02";    //  사용자 탈퇴
    public static final String DEFAULT_PROFILE = "assets/images/default_profile.png";    //  기본 프로필
    //public static final String DEFAULT_PROFILE = "assets/images/default_profile.png";    //  기본 프로필
    public static final String DEFAULT_PROFILE = "assets/images/default-profile-kisa.png";    //  인터넷진흥원 기본 프로필
    //public static final String DEFAULT_RESERVATION_NOTIFY_TIME = "09:00";    //  기본 이메일 알림 예정 시간
    public static final String DEFAULT_RESERVATION_NOTIFY_TIME = "false";    //  기본 이메일 알림 예정 시간 false로 변경
    public static final String DEFAULT_LANGUAGE = "ko"; //  기본 언어
src/main/java/kr/wisestone/owl/mapper/WidgetMapper.java
@@ -102,4 +102,8 @@
    List<Map<String, Object>> findProjectMemberIssueByDepartment(WidgetCondition widgetCondition);
    List<Map<String, Object>> findMyAssigneeIssueByDepartment(WidgetCondition makeWidgetCondition);
    List<Map<String, Object>> findByStandIssueTypeOfDepartment(WidgetCondition widgetCondition);
    List<Map<String, Object>> findByStandIssueStatusOfDepartment(WidgetCondition widgetCondition);
}
src/main/java/kr/wisestone/owl/repository/IssueRelationRepository.java
@@ -7,4 +7,6 @@
public interface IssueRelationRepository extends JpaRepository<IssueRelation, Long> {
    List<IssueRelation> findAllByIssueId(Long issueId);
    List<IssueRelation> findByRelationIssueId(Long relationIssueId);
}
src/main/java/kr/wisestone/owl/service/impl/CompanyFieldServiceImpl.java
@@ -136,6 +136,7 @@
        excelInfo.addAttrInfos(new ExportExcelAttrVo("manager", this.messageAccessor.message("companyField.companyManager"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("tel", this.messageAccessor.message("companyField.companyTel"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("email", this.messageAccessor.message("companyField.companyEmail"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("url", this.messageAccessor.message("companyField.companyUrl"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("memo", this.messageAccessor.message("companyField.companyMemo"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.setDatas(companyFieldVos);
src/main/java/kr/wisestone/owl/service/impl/HostingFieldServiceImpl.java
File was renamed from src/main/java/kr/wisestone/owl/service/impl/HostingFieldFieldServiceImpl.java
@@ -31,7 +31,7 @@
import java.util.Map;
@Service
public class HostingFieldFieldServiceImpl extends AbstractServiceImpl<HostingField, Long, JpaRepository<HostingField, Long>> implements HostingFieldService {
public class HostingFieldServiceImpl extends AbstractServiceImpl<HostingField, Long, JpaRepository<HostingField, Long>> implements HostingFieldService {
    @Autowired
    private HostingFieldRepository hostingFieldRepository;
@@ -138,6 +138,7 @@
        excelInfo.addAttrInfos(new ExportExcelAttrVo("manager", this.messageAccessor.message("Hosting.HostingManager"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("tel", this.messageAccessor.message("Hosting.HostingTel"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("email", this.messageAccessor.message("Hosting.HostingEmail"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("url", this.messageAccessor.message("Hosting.HostingUrl"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("memo", this.messageAccessor.message("Hosting.HostingMemo"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.setDatas(hostingFieldVos);
src/main/java/kr/wisestone/owl/service/impl/IspFieldServiceImpl.java
File was renamed from src/main/java/kr/wisestone/owl/service/impl/IspFieldFieldServiceImpl.java
@@ -31,7 +31,7 @@
import java.util.Map;
@Service
public class IspFieldFieldServiceImpl extends AbstractServiceImpl<IspField, Long, JpaRepository<IspField, Long>> implements IspFieldService {
public class IspFieldServiceImpl extends AbstractServiceImpl<IspField, Long, JpaRepository<IspField, Long>> implements IspFieldService {
    @Autowired
    private IspFieldRepository ispFieldRepository;
@@ -137,6 +137,7 @@
        excelInfo.addAttrInfos(new ExportExcelAttrVo("manager", this.messageAccessor.message("isp.ispManager"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("tel", this.messageAccessor.message("isp.ispTel"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("email", this.messageAccessor.message("isp.ispEmail"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("url", this.messageAccessor.message("isp.ispUrl"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.addAttrInfos(new ExportExcelAttrVo("memo", this.messageAccessor.message("isp.ispMemo"), 10, ExportExcelAttrVo.ALIGN_CENTER));
        excelInfo.setDatas(ispFieldVos);
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -17,6 +17,7 @@
import kr.wisestone.owl.exception.OwlRuntimeException;
import kr.wisestone.owl.mapper.IssueMapper;
import kr.wisestone.owl.mapper.ProjectMapper;
import kr.wisestone.owl.repository.IssueRelationRepository;
import kr.wisestone.owl.repository.IssueRepository;
import kr.wisestone.owl.repository.UserDepartmentRepository;
import kr.wisestone.owl.repository.WorkflowDepartmentRepository;
@@ -153,6 +154,9 @@
    @Autowired
    private IssueRelationService issueRelationService;
    @Autowired
    private IssueRelationRepository issueRelationRepository;
    @Autowired
    private ExcelView excelView;
@@ -388,7 +392,7 @@
        //  날짜 유효성 체크
        this.checkStartCompleteDate(issueForm.getStartDate(), issueForm.getCompleteDate());
        //  담당 부서 유효성 체크
        this.verifyIssueDepartment(project, issueForm);
        //this.verifyIssueDepartment(project, issueForm);
        //  이슈 상태 유형이 '대기' 인 이슈 상태 가져오기
        IssueStatus issueStatus = this.issueStatusService.findByIssueStatusTypeIsReady(issueType.getWorkflow());
@@ -474,7 +478,7 @@
        //  날짜 유효성 체크
        this.checkStartCompleteDate(issueForm.getStartDate(), issueForm.getCompleteDate());
        //  담당 부서 유효성 체크
        this.verifyIssueDepartment(project, issueForm);
        //this.verifyIssueDepartment(project, issueForm);
        //  이슈 상태 유형이 '대기' 인 이슈 상태 가져오기
        IssueStatus issueStatus = this.issueStatusService.findByIssueStatusTypeIsReady(issueType.getWorkflow());
@@ -1586,7 +1590,7 @@
        //  담당자 유효성 체크
        //this.verifyIssueAssignee(project, issueForm);
        //  담당부서 유효성 체크
        this.verifyIssueDepartment(project, issueForm);
        //this.verifyIssueDepartment(project, issueForm);
        CheckIssueData checkIssueData = new CheckIssueData();
        checkIssueData.setIssue(issue);
@@ -2088,6 +2092,17 @@
            this.attachedFileService.removeAttachedFiles(attachedFileIds);
        }
        // 지울 이슈가 연관이슈인지 체크 후 연관이슈 테이블에서도 삭제한다.
        List<IssueRelation> issueRelationList = this.issueRelationRepository.findByRelationIssueId(issueId);
        if (issueRelationList != null && issueRelationList.size() > 0) {
            for(IssueRelation issueRelation : issueRelationList){
                StringBuilder sb = new StringBuilder();
                issueHistoryService.detectRelationIssue(IssueHistoryType.DELETE, issueRelation, sb);
                issueHistoryService.addIssueHistory(issueRelation.getIssue(), IssueHistoryType.MODIFY, sb.toString());
                this.issueRelationRepository.delete(issueRelation);
            }
        }
        //  이슈 생성, 삭제시 예약 이메일에 등록해놓는다.
        this.reservationIssueEmail(issue, EmailType.ISSUE_REMOVE);
        //  이슈 삭제
src/main/java/kr/wisestone/owl/service/impl/WidgetServiceImpl.java
@@ -262,7 +262,7 @@
                delayIssue = this.widgetMapper.countTodayDelayIssueByDepartment(widgetCondition); //  지연된 이슈
                assigneeIssue = this.widgetMapper.countAssigneeIssueByDepartment(widgetCondition);   //  할당된 이슈
                registerIssue = this.widgetMapper.countTodayRegisterIssueByDepartment(widgetCondition);    //  등록한 이슈
                noAssigneeIssue = this.widgetMapper.countNoAssigneeIssueByDepartment(widgetCondition);   //  미할당 이슈
                //noAssigneeIssue = this.widgetMapper.countNoAssigneeIssueByDepartment(widgetCondition);   //  일반 유저는 미할당 이슈 0개로 보이게
                completeIssue = this.widgetMapper.countCompleteIssueByDepartment(widgetCondition); // 완료된 이슈
            }
        }
@@ -782,10 +782,15 @@
        }
        List<Map<String, Object>> results = Lists.newArrayList();
        User user = this.webAppUtil.getLoginUserObject();
        if (widgetCondition.getProjectIds().size() > 0) {
            SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
            results = this.widgetMapper.findByStandIssueStatus(widgetCondition);
            if (this.userWorkspaceService.checkWorkspaceManager(user)) {
                results = this.widgetMapper.findByStandIssueStatus(widgetCondition);
            }else {
                results = this.widgetMapper.findByStandIssueStatusOfDepartment(widgetCondition);
            }
        }
        for (Map<String, Object> result : results) {
@@ -809,10 +814,15 @@
    public void findByStandIssueType(Map<String, Object> resJsonData, WidgetCondition widgetCondition, Boolean getWidgetCondition) {
        //  위젯 검색 조건을 얻어야 할 상황일 때 - 화면에서 탭을 눌러 데이터를 재요청했을 때 위젯 검색 조건을 만들고 전체 프로젝트 정보를 리턴한다.
        Map<String, Object> results = this.makeWidgetConditionAllProject(widgetCondition, getWidgetCondition);
        User user = this.webAppUtil.getLoginUserObject();
        if (widgetCondition.getProjectId() != null) {
            SetMeAndDownProjectIds(widgetCondition.getProjectIds(), widgetCondition);
            List<Map<String, Object>> issueTypeIssues = this.widgetMapper.findByStandIssueType(widgetCondition);
            List<Map<String, Object>> issueTypeIssues = Lists.newArrayList();
            if (this.userWorkspaceService.checkWorkspaceManager(user)) {
                issueTypeIssues = this.widgetMapper.findByStandIssueType(widgetCondition);
            } else {
                issueTypeIssues = this.widgetMapper.findByStandIssueTypeOfDepartment(widgetCondition);
            }
            //  이슈 정보
            results.put("issues", issueTypeIssues);
        } else {
src/main/java/kr/wisestone/owl/vo/CompanyFieldVo.java
@@ -5,6 +5,7 @@
    private String manager;
    private String tel;
    private String email;
    private String url;
    private String memo;
    public CompanyFieldVo() {}
@@ -14,6 +15,7 @@
        this.manager = manager;
        this.tel = tel;
        this.email = email;
        this.url = url;
        this.memo = memo;
    }
@@ -48,4 +50,12 @@
    public void setMemo(String memo) {
        this.memo = memo;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
src/main/java/kr/wisestone/owl/vo/HostingFieldVo.java
@@ -7,6 +7,7 @@
    private String tel;
    private String email;
    private String memo;
    private String url;
    private String byName;
    public HostingFieldVo() {}
@@ -16,6 +17,7 @@
        this.manager = manager;
        this.tel = tel;
        this.email = email;
        this.url = url;
        this.memo = memo;
    }
@@ -66,4 +68,12 @@
    public void setByName(String byName) {
        this.byName = byName;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
src/main/java/kr/wisestone/owl/vo/IspFieldVo.java
@@ -6,6 +6,7 @@
    private String manager;
    private String tel;
    private String email;
    private String url;
    private String memo;
    public IspFieldVo() {}
@@ -16,6 +17,7 @@
        this.manager = manager;
        this.tel = tel;
        this.email = email;
        this.url = url;
        this.memo = memo;
    }
@@ -58,4 +60,12 @@
    public void setMemo(String memo) {
        this.memo = memo;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
src/main/java/kr/wisestone/owl/vo/IssueCompanyVo.java
@@ -8,6 +8,7 @@
    private Long companyId;
    private String name;
    private String manager;
    private String url;
    private String tel;
    private String email;
    private String memo;
@@ -69,4 +70,12 @@
    public void setMemo(String memo) {
        this.memo = memo;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
src/main/java/kr/wisestone/owl/vo/IssueHostingVo.java
@@ -9,6 +9,7 @@
    private String name;
    private String code;
    private String manager;
    private String url;
    private String tel;
    private String email;
    private String memo;
@@ -78,4 +79,12 @@
    public void setMemo(String memo) {
        this.memo = memo;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
src/main/java/kr/wisestone/owl/vo/IssueIspVo.java
@@ -9,6 +9,7 @@
    private String name;
    private String code;
    private String manager;
    private String url;
    private String tel;
    private String email;
    private String memo;
@@ -79,4 +80,12 @@
    public void setMemo(String memo) {
        this.memo = memo;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
src/main/java/kr/wisestone/owl/web/condition/CompanyFieldCondition.java
@@ -10,6 +10,7 @@
    private String manager;
    private String tel;
    private String email;
    private String url;
    private String memo;
    private Integer Page;
@@ -82,4 +83,12 @@
    public void setPageSize(Integer pageSize) {
        PageSize = pageSize;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
src/main/java/kr/wisestone/owl/web/condition/HostingFieldCondition.java
@@ -11,6 +11,7 @@
    private String manager;
    private String tel;
    private String email;
    private String url;
    private String memo;
    private Integer Page;
@@ -92,4 +93,12 @@
    public void setPageSize(Integer pageSize) {
        PageSize = pageSize;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
src/main/java/kr/wisestone/owl/web/condition/IspFieldCondition.java
@@ -11,6 +11,7 @@
    private String manager;
    private String tel;
    private String email;
    private String url;
    private String memo;
    private Integer Page;
@@ -91,4 +92,12 @@
    public void setPageSize(Integer pageSize) {
        PageSize = pageSize;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
src/main/java/kr/wisestone/owl/web/form/CompanyFieldForm.java
@@ -10,6 +10,7 @@
public class CompanyFieldForm extends UsePartnerForm {
    private String manager;
    private String tel;
    private String url;
    private String memo;
    private List<Long> removeIds = Lists.newArrayList();
@@ -40,6 +41,14 @@
        this.tel = tel;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getMemo() {
        return memo;
    }
src/main/java/kr/wisestone/owl/web/form/HostingFieldForm.java
@@ -11,6 +11,7 @@
    private String code;
    private String manager;
    private String tel;
    private String url;
    private String memo;
    private List<Long> removeIds = Lists.newArrayList();
@@ -64,4 +65,12 @@
    public void setRemoveIds(List<Long> removeIds) {
        this.removeIds = removeIds;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
src/main/java/kr/wisestone/owl/web/form/IspFieldForm.java
@@ -11,6 +11,7 @@
    private String code;
    private String manager;
    private String tel;
    private String url;
    private String memo;
    private List<Long> removeIds = Lists.newArrayList();
@@ -65,4 +66,12 @@
    public void setRemoveIds(List<Long> removeIds) {
        this.removeIds = removeIds;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}
src/main/resources/migration/V1_12__Alter_Table.sql
@@ -7,4 +7,7 @@
ALTER TABLE `hosting_field` ADD COLUMN  `url` VARCHAR(255) NULL;
-- 자동 완료 상태 추가
ALTER TABLE `issue_type` ADD COLUMN  `complete_issue_status_id` BIGINT(20) NULL;
ALTER TABLE `issue_type` ADD COLUMN  `complete_issue_status_id` BIGINT(20) NULL;
ALTER TABLE `issue_company` ADD COLUMN  `url` VARCHAR(255) NULL;
ALTER TABLE `issue_isp` ADD COLUMN  `url` VARCHAR(255) NULL;
ALTER TABLE `issue_hosting` ADD COLUMN  `url` VARCHAR(255) NULL;
src/main/resources/mybatis/query-template/HostingField-template.xml
@@ -11,6 +11,7 @@
        h.manager as manager,
        h.tel as tel,
        h.email as email,
        h.url as url,
        h.memo as memo
        FROM
        hosting_field h
src/main/resources/mybatis/query-template/IspField-template.xml
@@ -11,6 +11,7 @@
        i.manager as manager,
        i.tel as tel,
        i.email as email,
        i.url as url,
        i.memo as memo
        FROM
        isp_field i
src/main/resources/mybatis/query-template/companyField-template.xml
@@ -10,6 +10,7 @@
        cf.manager as manager,
        cf.tel as tel,
        cf.email as email,
        cf.url as url,
        cf.memo as memo
        FROM
        company_field cf
src/main/resources/mybatis/query-template/issue-template.xml
@@ -192,6 +192,7 @@
            </when>
        </choose>
        AND issue.parent_issue_id IS NULL
        AND issue_status.issue_status_type != 'CLOSE'
        AND issue.reverse_index <![CDATA[ < ]]> 0
        AND workspace.id = #{workspaceId}
        GROUP BY issue.id
@@ -240,7 +241,7 @@
        INNER JOIN priority priority FORCE INDEX(PRIMARY) ON issue.priority_id = priority.id
        INNER JOIN severity severity FORCE INDEX(PRIMARY) ON issue.severity_id = severity.id
        INNER JOIN issue_department isd ON isd.issue_id = issue.id
        INNER JOIN department d ON d.id = isd.department_id
        INNER JOIN user_department ud ON ud.department_id = isd.department_id
        LEFT OUTER JOIN issue_custom_field_value issue_custom FORCE INDEX(issueIdIndex) ON issue.id = issue_custom.issue_id
        LEFT OUTER JOIN (SELECT issue_id, COUNT(id) as attachedFileCount FROM attached_file GROUP BY issue_id)
        temp_attached_file on (temp_attached_file.issue_id = issue.id)
@@ -383,6 +384,7 @@
            </when>
        </choose>
        AND issue.parent_issue_id IS NULL
        AND issue_status.issue_status_type != 'CLOSE'
        AND issue.reverse_index <![CDATA[ < ]]> 0
        AND workspace.id = #{workspaceId}
        GROUP BY issue.id
@@ -530,8 +532,10 @@
        COUNT(DISTINCT issue.id)
        FROM issue issue
        LEFT OUTER JOIN issue_department isd ON issue.id = isd.issue_id
        LEFT OUTER JOIN issue_status iss ON iss.id = issue.issue_status_id
        WHERE 1=1
        AND issue.parent_issue_id IS NULL
        AND iss.issue_status_type != 'CLOSE'
        <if test="title != null and !title.equals('') ">
            AND issue.title like CONCAT('%',#{title},'%')
        </if>
@@ -654,8 +658,10 @@
        COUNT(DISTINCT issue.id)
        FROM issue issue
        LEFT OUTER JOIN issue_department isd ON issue.id = isd.issue_id
        LEFT OUTER JOIN issue_status iss ON iss.id = issue.issue_status_id
        WHERE 1=1
        AND issue.parent_issue_id IS NULL
        AND iss.issue_status_type != 'CLOSE'
        <if test="title != null and !title.equals('') ">
            AND issue.title like CONCAT('%',#{title},'%')
        </if>
src/main/resources/mybatis/query-template/issueCompany-template.xml
@@ -12,6 +12,7 @@
        ic.manager as companyManager,
        ic.tel as companyTel,
        ic.email as companyEmail,
        ic.url as companyUrl,
        ic.memo as companyMemo
        FROM issue_company ic
        WHERE 1=1
src/main/resources/mybatis/query-template/issueHosting-template.xml
@@ -13,6 +13,7 @@
        ih.manager as hostingManager,
        ih.tel as hostingTel,
        ih.email as hostingEmail,
        ih.url as hostingUrl,
        ih.memo as hostingMemo
        FROM issue_hosting ih
        WHERE 1=1
src/main/resources/mybatis/query-template/issueIsp-template.xml
@@ -13,6 +13,7 @@
        ii.manager as ispManager,
        ii.tel as ispTel,
        ii.email as ispEmail,
        ii.url as ispUrl,
        ii.memo as ispMemo
        FROM issue_isp ii
        WHERE 1=1
src/main/resources/mybatis/query-template/project-template.xml
@@ -74,11 +74,10 @@
        project p
        INNER JOIN project_role pr on p.id = pr.project_id
        INNER JOIN project_role_department prd on prd.project_role_id = pr.id
        INNER JOIN department d on d.id = prd.department_id
        INNER JOIN user_department ud on ud.department_id = prd.department_id
        INNER JOIN workspace ws on ws.id = p.workspace_id
        LEFT JOIN project_closure pc ON p.id = pc.project_id
        WHERE if (pc.parent_project_id > -1, pc.parent_project_id, -1) = -1
        AND prd.department_id = d.id
        <if test="name != '' and name != null">
            AND p.name like CONCAT('%',#{name},'%')
        </if>
@@ -89,9 +88,6 @@
                    #{item}
                </foreach>
            </when>
            <otherwise>
                AND 1 != 1
            </otherwise>
        </choose>
        <choose>
@@ -178,14 +174,23 @@
        project p
        INNER JOIN project_role pr on p.id = pr.project_id
        INNER JOIN project_role_department prd on prd.project_role_id = pr.id
        INNER JOIN department d on d.id = prd.department_id
        INNER JOIN user_department ud on ud.department_id = prd.department_id
        INNER JOIN workspace ws on ws.id = p.workspace_id
        LEFT JOIN project_closure pc on p.id = pc.project_id
        WHERE prd.department_id = d.id
        WHERE prd.department_id = ud.id
        AND if (pc.parent_project_id > -1, pc.parent_project_id, -1) = -1
        <if test="name != '' and name != null">
            AND p.name like CONCAT('%',#{name},'%')
        </if>
        <choose>
            <when test="myDepartmentIds.size != 0">
                AND prd.department_id IN
                <foreach collection="myDepartmentIds" item="item" index="index" separator="," open="(" close=")">
                    #{item}
                </foreach>
            </when>
        </choose>
        <choose>
            <when test="roleTypes.size != 0">
@@ -466,9 +471,9 @@
        project p
        INNER JOIN project_role pr on p.id = pr.project_id
        INNER JOIN project_role_department prd on prd.project_role_id = pr.id
        INNER JOIN department d on d.id = prd.department_id
        INNER JOIN user_department ud on ud.department_id = prd.department_id
        LEFT JOIN project_closure pc ON p.id = pc.project_id
        WHERE prd.department_id = d.id
        WHERE prd.department_id = ud.department_id
        AND if (pc.parent_project_id > -1, pc.parent_project_id, -1) = -1
        AND p.workspace_id = #{workspaceId}
        <if test="name != '' and name != null">
@@ -511,7 +516,7 @@
            project p
                INNER JOIN project_role pr on p.id = pr.project_id
                INNER JOIN project_role_department prd on prd.project_role_id = pr.id
                INNER JOIN department d on d.id = prd.department_id
                INNER JOIN user_department ud on ud.department_id = prd.department_id
        WHERE 1=1
          AND p.id = #{id}
    </select>
src/main/resources/mybatis/query-template/widget-template.xml
@@ -29,7 +29,7 @@
        SELECT
        COUNT(i.id) FROM issue i
        INNER JOIN issue_department isd ON isd.issue_id = i.id
        INNER JOIN department d ON d.id = isd.department_id
        INNER JOIN user_department ud ON ud.department_id = isd.department_id
        WHERE EXISTS(SELECT 1 FROM issue_status iss WHERE iss.issue_status_type != 'CLOSE' AND i.issue_status_id =
        iss.id)
        <choose>
@@ -73,7 +73,7 @@
        SELECT
        COUNT(i.id) FROM issue i
        INNER JOIN issue_department isd ON isd.issue_id = i.id
        INNER JOIN department d ON d.id = isd.department_id
        INNER JOIN user_department ud ON ud.department_id = isd.department_id
        where exists(select 1 from issue_status iss where iss.id = i.issue_status_id and iss.issue_status_type != 'CLOSE')
        <choose>
            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
@@ -153,7 +153,7 @@
        SELECT
        COUNT(i.id) FROM issue i
        INNER JOIN issue_department isd ON isd.issue_id = i.id
        INNER JOIN department d ON d.id = isd.department_id
        INNER JOIN user_department ud ON ud.department_id = isd.department_id
        WHERE EXISTS(SELECT 1 FROM issue_department isd WHERE isd.issue_id = i.id
        <choose>
            <when test="myDepartmentIds.size != 0">
@@ -199,7 +199,7 @@
        select
        count(i.id) as todayCount from issue i
        INNER JOIN issue_department isd ON isd.issue_id = i.id
        INNER JOIN department d ON d.id = isd.department_id
        INNER JOIN user_department ud ON ud.department_id = isd.department_id
        where
        i.register_id = #{loginUserId}
        <choose>
@@ -259,7 +259,7 @@
        AND isd.id IS NULL
    </select>
    <select id="countNoAssigneeIssueByDepartment" resultType="java.lang.Long"
    <!--<select id="countNoAssigneeIssueByDepartment" resultType="java.lang.Long"
            parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
        SELECT
        COUNT(DISTINCT i.id) FROM issue i
@@ -283,7 +283,7 @@
            </when>
        </choose>
        AND isd.id IS NULL
    </select>
    </select>-->
    <!--    완료된 이슈 개수   -->
    <select id="countCompleteIssue" resultType="java.lang.Long"
@@ -308,7 +308,7 @@
        count(*) as issueCount from issue i
        inner join issue_status iss on iss.id = i.issue_status_id
        INNER JOIN issue_department isd ON isd.issue_id = i.id
        INNER JOIN department d ON d.id = isd.department_id
        INNER JOIN user_department ud ON ud.department_id = isd.department_id
        where iss.issue_status_type = 'CLOSE'
        <choose>
            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
@@ -535,7 +535,9 @@
            parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
        select
        count(i.id) as todayCount from issue i where
        exists(select 1 from issue_department isd where isd.issue_id = i.id
        exists(select 1 from issue_department isd
        INNER JOIN user_department ud ON ud.department_id = isd.department_id
        where isd.issue_id = i.id
        <choose>
            <when test="myDepartmentIds.size != 0">
                AND isd.department_id IN
@@ -684,6 +686,7 @@
        replace(SUBSTRING(i.register_date, 1, 10), "-", ".") as registerDate
        from issue i
        inner join issue_department isd on isd.issue_id = i.id
        INNER JOIN user_department ud ON ud.department_id = isd.department_id
        inner join issue_status iss on iss.id = i.issue_status_id
        inner join project p on p.id = i.project_id
        WHERE 1=1
@@ -1001,6 +1004,35 @@
        group by p.id
    </select>
    <select id="findByStandIssueStatusOfDepartment" resultType="java.util.HashMap"
            parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
        select
        <choose>
            <when test="issueStatuses.size != 0">
                <foreach collection="issueStatuses" item="item" index="index" separator="," open="" close="">
                    count(case when i.issue_status_id = #{item.id} then 1 end) as #{item.name}
                </foreach>
            </when>
        </choose>
        ,p.id,
        p.name as projectName
        from issue i
        inner join project p on p.id = i.project_id
        inner join issue_status iss on iss.id = i.issue_status_id
        INNER JOIN issue_department isd ON isd.issue_id = i.id
        INNER JOIN user_department ud ON ud.department_id = isd.department_id
        where 1=1
        <choose>
            <when test="meAndDownProjectIds != null and meAndDownProjectIds.size != 0">
                AND i.project_id IN
                <foreach collection="meAndDownProjectIds" item="item" index="index" separator="," open="(" close=")">
                    #{item}
                </foreach>
            </when>
        </choose>
        group by p.id
    </select>
    <!--    9번 위젯 끝 -->
    <!--    11번 위젯 시작 -->
@@ -1085,6 +1117,7 @@
        from
        department d
        inner join project_role_department prd on prd.department_id = d.id
        INNER JOIN user_department ud ON ud.department_id = prd.department_id
        inner join project_role pr on pr.id = prd.project_role_id
        inner join project p on p.id = pr.project_id
        WHERE
@@ -1243,8 +1276,18 @@
    <select id="findByStandIssueType" resultType="java.util.HashMap"
            parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
        SELECT issue_type.name as name, COUNT(issue.id) as issueCount FROM issue issue
        INNER JOIN issue_type issue_type ON issue.issue_type_id = issue_type.id
        SELECT issue_type.name as name, COUNT(issue.id) as issueCount FROM issue
        INNER JOIN issue_type ON issue.issue_type_id = issue_type.id
        WHERE issue.project_id = #{projectId}
        GROUP BY issue_type.name
    </select>
    <select id="findByStandIssueTypeOfDepartment" resultType="java.util.HashMap"
            parameterType="kr.wisestone.owl.web.condition.WidgetCondition">
        SELECT issue_type.name as name, COUNT(issue.id) as issueCount FROM issue
        INNER JOIN issue_type ON issue.issue_type_id = issue_type.id
        INNER JOIN issue_department isd ON isd.issue_id = issue.id
        INNER JOIN user_department ud ON ud.department_id = isd.department_id
        WHERE issue.project_id = #{projectId}
        GROUP BY issue_type.name
    </select>
@@ -1289,6 +1332,7 @@
        INNER JOIN severity s ON s.id = i.severity_id
        INNER JOIN issue_status iss ON iss.id = i.issue_status_id
        INNER JOIN issue_department isd on isd.issue_id = i.id
        INNER JOIN user_department ud ON ud.department_id = isd.department_id
        WHERE w.id = #{workspaceId}
        AND iss.issue_status_type != 'CLOSE'
        <choose>
@@ -1363,6 +1407,7 @@
        INNER JOIN severity s ON s.id = i.severity_id
        INNER JOIN issue_status iss ON iss.id = i.issue_status_id
        INNER JOIN issue_department isd on isd.issue_id = i.id
        INNER JOIN user_department ud ON ud.department_id = isd.department_id
        WHERE w.id = #{workspaceId}
        AND s.id = #{severityId}
        AND iss.issue_status_type != 'CLOSE'
src/main/webapp/WEB-INF/i18n/code_ko_KR.properties
@@ -45,7 +45,7 @@
common.delayingIssue=\uC9C0\uC5F0 \uC911\uC778 \uC774\uC288
common.assignedIssue=\uB2F4\uB2F9 \uC774\uC288
common.delaying=\uC9C0\uC5F0\uC911
common.progressByMember=\uBA64\uBC84\uBCC4 \uC9C4\uD589\uB960
common.progressByMember=\uBD80\uC11C\uBCC4 \uC9C4\uD589\uB960
common.myIssueStatus=\uB098\uC758 \uC774\uC288 \uD604\uD669
common.division=\uAD6C\uBD84
common.complete=\uC644\uB8CC
@@ -129,16 +129,19 @@
companyField.companyManager=\uB2F4\uB2F9\uC790
companyField.companyTel=\uC804\uD654\uBC88\uD638
companyField.companyEmail=\uC774\uBA54\uC77C
companyField.companyUrl=url
companyField.companyMemo=\uBE44\uACE0
isp.ispName=ISP \uC774\uB984
isp.ispCode=\uCF54\uB4DC
isp.ispManager=\uB2F4\uB2F9\uC790
isp.ispTel=\uC804\uD654\uBC88\uD638
isp.ispEmail=\uC774\uBA54\uC77C
isp.ispUrl=url
isp.ispMemo=\uBE44\uACE0
Hosting.HostingName=\uD638\uC2A4\uD305 \uC774\uB984
Hosting.HostingCode=\uCF54\uB4DC
Hosting.HostingManager=\uB2F4\uB2F9\uC790
Hosting.HostingTel=\uC804\uD654\uBC88\uD638
Hosting.HostingEmail=\uC774\uBA54\uC77C
Hosting.HostingUrl=url
Hosting.HostingMemo=\uBE44\uACE0
src/main/webapp/assets/images/default-profile-kisa.png
src/main/webapp/assets/images/logo-kisa-en.png
src/main/webapp/assets/images/logo-kisa-ko.png
src/main/webapp/assets/images/logo-kisa-txt.png
src/main/webapp/assets/images/logo-kisa-vertical.png
src/main/webapp/assets/images/logo-kisa.png
src/main/webapp/assets/styles/main.css
@@ -12747,13 +12747,15 @@
.menu-w .logo-w .logo-element,
.top-bar .logo-w .logo-element {
    content: "";
    width: 60px;
    height: 30px;
    background-image: url(../images/logo-owl.png);
    width: 110px;
    height: 40px;
    background-image: url(../images/logo-kisa-en.png);
    background-size: cover;
    position: relative;
    display: inline-block;
    vertical-align: middle;
    margin-right: 20px;
    margin-right: 0px;
    right: 10px;
    -webkit-transition: all 0.2s ease;
    transition: all 0.2s ease;
}
@@ -12761,11 +12763,13 @@
.menu-w .logo-w .logo-element:after,
.top-bar .logo-w .logo-element:after {
    content: "";
    width: 105px;
    height: 31px;
    background-image: url(../images/logo-owltxt.png);
    width: 120px;
    height: 30px;
    background-image: url(../images/logo-kisa-txt.png);
    background-size: cover;
    right: -20px;
    left: 70px;
    left: 110px;
    top: 10px;
    position: absolute;
    -webkit-transition: all 0.2s ease;
    transition: all 0.2s ease;
@@ -12773,14 +12777,14 @@
.menu-w .logo-w .logo:hover .logo-element,
.top-bar .logo-w .logo:hover .logo-element {
    -webkit-transform: translateX(5px);
    transform: translateX(5px);
    -webkit-transform: translateX(2px);
    transform: translateX(2px);
}
.menu-w .logo-w .logo:hover .logo-element:after,
.top-bar .logo-w .logo:hover .logo-element:after {
    -webkit-transform: translateX(-10px);
    transform: translateX(-10px);
    -webkit-transform: translateX(-3px);
    transform: translateX(-3px);
}
.menu-w .logo-w .logo:hover .logo-label:after,
@@ -13020,7 +13024,7 @@
.menu-w .logo-w {
    text-align: center;
    padding: 14px 1rem 14px 1.7rem;
    padding: 10px 1rem 12px 1.1rem;
}
.menu-w .logo-w a {
@@ -14267,7 +14271,7 @@
}
.menu-position-side.menu-w.color-scheme-dark .logo-w {
    background-color: #000035;
    background-color:#f2f4f8;
}
.menu-position-side.menu-w.color-scheme-dark .element-search:before {
@@ -16662,11 +16666,17 @@
    line-height: 20px;
    text-align: center;
}
.auth-box-w .auth-header img {
/* 기존 로고 위치 및 크기 */
/*.auth-box-w .auth-header img {
    width: 70px;
}
}*/
/* 인터넷 진흥원 로고 위치 및 크기 조정*/
.auth-box-w .auth-header img {
    width: 120px;
    position: relative;
    bottom: 6px;
}
.auth-box-w form {
    padding: 20px 50px;
    padding-bottom: 20px;
@@ -28696,6 +28706,27 @@
    transition: .4s;
}
.slider-disabled {
    position: absolute;
    cursor: pointer;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #2196F3;
}
.slider-disabled:before {
    position: absolute;
    content: "";
    height: 18px;
    width: 18px;
    left: 30px;
    bottom: 4px;
    background-color: white;
}
input:checked + .slider {
    background-color: #2196F3;
}
@@ -28718,6 +28749,14 @@
    border-radius: 50%;
}
.slider-disabled.round {
    border-radius: 34px;
}
.slider-disabled.round:before {
    border-radius: 50%;
}
.tab {
    position: relative;
    margin-top: 20px;
src/main/webapp/custom_components/js-autocomplete-multi/js-autocomplete-multi.html
@@ -47,7 +47,7 @@
                                <img ng-if="settings.imageable && (option.profile != '' && option.profile != undefined) && settings.type == 'user'"
                                     ng-src='{{option.profile}}' class="autocomplte-img">
                                <img ng-if="settings.imageable && (option.profile == '' || option.profile == undefined) && settings.type == 'user'"
                                     src="/assets/images/default_profile.png" class="autocomplte-img">
                                     src="/assets/images/default-profile-kisa.png" class="autocomplte-img">
                                {{fn.getPropertyForObject(option, settings.displayProp)}}</label>
                        </div>
                    </a>
@@ -71,7 +71,7 @@
                        <img ng-if="settings.imageable && (option[settings.imagePathProp] != '' && option[settings.imagePathProp] != undefined) && settings.type == 'user'"
                             ng-src='{{option.profile}}' class="autocomplte-img">
                        <img ng-if="settings.imageable && (option[settings.imagePathProp] == '' || option[settings.imagePathProp] == undefined) && settings.type == 'user'"
                             src="/assets/images/default_profile.png" class="autocomplte-img">
                             src="/assets/images/default-profile-kisa.png" class="autocomplte-img">
                        <span class="option-span"
                              translate="{{fn.getPropertyForObject(option, settings.displayProp)}}"></span>
                    </a>
src/main/webapp/custom_components/js-autocomplete-single/js-autocomplete-single.html
@@ -17,7 +17,7 @@
                    <a role="menuitem" data-id="{{fn.getPropertyForObject(option,settings.idProp)}}" class="option-a height-auto"
                       tabindex="-1" ng-click="fn.selectTarget(fn.getPropertyForObject(option,settings.idProp))">
                        <img ng-if="settings.imageable && (option.profile != '' && option.profile != undefined) && settings.type == 'user'" ng-src='{{option.profile}}' class="autocomplte-img">
                        <img ng-if="settings.imageable && (option.profile == '' || option.profile == undefined) && settings.type == 'user'" src="assets/images/default_profile.png" class="autocomplte-img">
                        <img ng-if="settings.imageable && (option.profile == '' || option.profile == undefined) && settings.type == 'user'" src="assets/images/default-profile-kisa.png" class="autocomplte-img">
                        <span class="option-span title-span"
                              translate="{{fn.getPropertyForObject(option, settings.displayProp)}}"></span>
                    </a>
src/main/webapp/custom_components/js-input-autocomplete/js-input-autocomplete.html
@@ -21,7 +21,7 @@
                             ng-src='{{option.profile}}'
                             class="autocomplte-img">
                        <img ng-if="settings.imageable && (option.profile == '' || option.profile == undefined) && settings.type == 'user'"
                             src="assets/images/default_profile.png"
                             src="assets/images/default-profile-kisa.png"
                             class="autocomplte-img">
                        <span class="option-span"
                              translate="{{fn.getPropertyForObject(option, settings.displayProp)}}"></span>
src/main/webapp/i18n/ko/global.json
@@ -35,7 +35,7 @@
        "delayDate": "지연일",
        "statusOfIssues": "상태별 이슈 현황",
        "doesNotExistWorkflow": "워크플로우가 없습니다.",
        "progressByMember": "멤버별 진행률",
        "progressByMember": "부서별 진행률",
        "assignedIssue": "담당 이슈",
        "delaying": "지연중",
        "myIssueStatus": "나의 이슈 현황",
@@ -902,6 +902,7 @@
        "profitYN" : "영리/비영리",
        "industry" : "산업 분류",
        "domain" : "도메인",
        "url"   : "url",
        "ipAdress" : "ip주소",
        "manager" : "담당자",
        "tel" : "전화번호",
src/main/webapp/scripts/app/companyField/companyFieldAdd.controller.js
@@ -26,6 +26,7 @@
                        manager : "",   //담당자
                        tel : "",  //전화번호
                        email : "",  //이메일
                        url : "", // url
                        memo : ""  //비고
                    }
                };
@@ -51,6 +52,7 @@
                        manager : $scope.vm.form.manager,   //담당자
                        tel : $scope.vm.form.tel,  //전화번호
                        email : $scope.vm.form.email,  //이메일
                        url : $scope.vm.form.url, // url
                        memo : $scope.vm.form.memo  //비고
                    };
src/main/webapp/scripts/app/companyField/companyFieldList.controller.js
@@ -92,6 +92,11 @@
                        .setDName("email")
                        .setDAlign("text-center"));
                    $scope.vm.tableConfigs.push($tableProvider.config()
                        .setHName("companyField.url")
                        .setHWidth("bold")
                        .setDName("url")
                        .setDAlign("text-center"));
                    $scope.vm.tableConfigs.push($tableProvider.config()
                        .setHName("companyField.memo")
                        .setHWidth("bold")
                        .setDName("memo")
src/main/webapp/scripts/app/companyField/companyFieldModify.controller.js
@@ -25,6 +25,7 @@
                        manager : "",   //담당자
                        tel : "",  //전화번호
                        email : "",  //이메일
                        url : "", // url
                        memo : ""  //메모(비고)
                    }
                };
@@ -51,6 +52,7 @@
                        manager : $rootScope.preventXss($scope.vm.form.manager),
                        tel : $rootScope.preventXss($scope.vm.form.tel),
                        email : $rootScope.preventXss($scope.vm.form.email),
                        url : $rootScope.preventXss($scope.vm.form.url), // url
                        memo : $rootScope.preventXss($scope.vm.form.memo)
                    };
@@ -98,6 +100,7 @@
                                $scope.vm.form.manager = result.data.content.manager;
                                $scope.vm.form.email = result.data.content.email;
                                $scope.vm.form.tel = result.data.content.tel;
                                $scope.vm.form.url = result.data.content.url;
                                $scope.vm.form.memo = result.data.content.memo;
                            }
                        }
src/main/webapp/scripts/app/hostingField/hostingFieldAdd.controller.js
@@ -23,6 +23,7 @@
                        manager : "",   //담당자
                        tel : "",  //전화번호
                        email : "",  //이메일
                        url : "", // url
                        memo : ""  //비고
                    }
                };
@@ -45,6 +46,7 @@
                        manager : $scope.vm.form.manager,   //담당자
                        tel : $scope.vm.form.tel,  //전화번호
                        email : $scope.vm.form.email,  //이메일
                        url : $scope.vm.form.url, // url
                        memo : $scope.vm.form.memo  //비고
                    };
src/main/webapp/scripts/app/hostingField/hostingFieldList.controller.js
@@ -90,6 +90,11 @@
                        .setDName("email")
                        .setDAlign("text-center"));
                    $scope.vm.tableConfigs.push($tableProvider.config()
                        .setHName("companyField.url")
                        .setHWidth("bold")
                        .setDName("url")
                        .setDAlign("text-center"));
                    $scope.vm.tableConfigs.push($tableProvider.config()
                        .setHName("hostingField.memo")
                        .setHWidth("bold")
                        .setDName("memo")
src/main/webapp/scripts/app/hostingField/hostingFieldModify.controller.js
@@ -26,6 +26,7 @@
                        manager : "",   //담당자
                        tel : "",  //전화번호
                        email : "",  //이메일
                        url : "", // url
                        memo : ""  //메모(비고)
                    }
                };
@@ -49,6 +50,7 @@
                        manager : $rootScope.preventXss($scope.vm.form.manager),
                        tel : $rootScope.preventXss($scope.vm.form.tel),
                        email : $rootScope.preventXss($scope.vm.form.email),
                        url : $rootScope.preventXss($scope.vm.form.url), // url
                        memo : $rootScope.preventXss($scope.vm.form.memo)
                    };
@@ -97,6 +99,7 @@
                                $scope.vm.form.manager = result.data.content.manager;
                                $scope.vm.form.email = result.data.content.email;
                                $scope.vm.form.tel = result.data.content.tel;
                                $scope.vm.form.url = result.data.content.url;
                                $scope.vm.form.memo = result.data.content.memo;
                            }
                        }
src/main/webapp/scripts/app/ispField/ispFieldAdd.controller.js
@@ -23,6 +23,7 @@
                        manager : "",   //담당자
                        tel : "",  //전화번호
                        email : "",  //이메일
                        url : "", // url
                        memo : ""  //비고
                    }
                };
@@ -45,6 +46,7 @@
                        manager : $scope.vm.form.manager,   //담당자
                        tel : $scope.vm.form.tel,  //전화번호
                        email : $scope.vm.form.email,  //이메일
                        url : $scope.vm.form.url, // url
                        memo : $scope.vm.form.memo  //비고
                    };
src/main/webapp/scripts/app/ispField/ispFieldList.controller.js
@@ -90,6 +90,11 @@
                        .setDName("email")
                        .setDAlign("text-center"));
                    $scope.vm.tableConfigs.push($tableProvider.config()
                        .setHName("companyField.url")
                        .setHWidth("bold")
                        .setDName("url")
                        .setDAlign("text-center"));
                    $scope.vm.tableConfigs.push($tableProvider.config()
                        .setHName("ispField.memo")
                        .setHWidth("bold")
                        .setDName("memo")
src/main/webapp/scripts/app/ispField/ispFieldModify.controller.js
@@ -25,6 +25,7 @@
                        manager : "",   //담당자
                        tel : "",  //전화번호
                        email : "",  //이메일
                        url : "", // url
                        memo : ""  //메모(비고)
                    }
                };
@@ -48,6 +49,7 @@
                        manager : $rootScope.preventXss($scope.vm.form.manager),
                        tel : $rootScope.preventXss($scope.vm.form.tel),
                        email : $rootScope.preventXss($scope.vm.form.email),
                        url : $rootScope.preventXss($scope.vm.form.url), // url
                        memo : $rootScope.preventXss($scope.vm.form.memo)
                    };
@@ -96,6 +98,7 @@
                                $scope.vm.form.manager = result.data.content.manager;
                                $scope.vm.form.email = result.data.content.email;
                                $scope.vm.form.tel = result.data.content.tel;
                                $scope.vm.form.url = result.data.content.url;
                                $scope.vm.form.memo = result.data.content.memo;
                            }
                        }
src/main/webapp/scripts/app/issue/issueAdd.controller.js
@@ -69,6 +69,7 @@
                    companyManager : "",   // 업체 담당자
                    companyTel : "",  // 업체 전화번호
                    companyEmail : "",  // 업체 이메일
                    companyUrl : "",  // 업체 url
                    companyMemo : "",  // 업체 비고
                    ispId : -1, // ISP ID
                    ispName : "", // ISP 명
@@ -76,12 +77,14 @@
                    ispManager : "", // ISP 담당자
                    ispTel : "", // ISP 전화번호
                    ispEmail : "", // ISP 이메일
                    ispUrl : "",  // url
                    ispMemo : "", // ISP 비고
                    hostingId : -1, // 호스팅 ID
                    hostingName : "", // 호스팅명 검색
                    hostingManager : "", // 호스팅 담당자
                    hostingTel : "", // 호스팅 전화번호
                    hostingEmail : "", // 호스팅 이메일
                    hostingUrl : "",  // url
                    hostingMemo :"", // 호스팅 비고
                    autoCompletePage : {
@@ -390,6 +393,7 @@
                    $scope.vm.companyManager = result[0].manager;
                    $scope.vm.companyTel = result[0].tel;
                    $scope.vm.companyEmail = result[0].email;
                    $scope.vm.companyUrl = result[0].url;
                    $scope.vm.companyMemo = result[0].memo;
                });
@@ -402,6 +406,7 @@
                    $scope.vm.ispManager = result[0].manager;
                    $scope.vm.ispTel = result[0].tel;
                    $scope.vm.ispEmail = result[0].email;
                    $scope.vm.ispUrl = result[0].url;
                    $scope.vm.ispMemo = result[0].memo;
                });
@@ -413,6 +418,7 @@
                    $scope.vm.hostingManager = result[0].manager;
                    $scope.vm.hostingTel = result[0].tel;
                    $scope.vm.hostingEmail = result[0].email;
                    $scope.vm.hostingUrl = result[0].url;
                    $scope.vm.hostingMemo = result[0].memo;
                });
@@ -506,6 +512,7 @@
                                    manager : $scope.vm.companyManager,
                                    tel : $scope.vm.companyTel,
                                    email :$scope.vm.companyEmail,
                                    url :$scope.vm.companyUrl,
                                    memo : $scope.vm.companyMemo
                                });
                            }
@@ -526,6 +533,7 @@
                                    manager : $scope.vm.ispManager,
                                    tel : $scope.vm.ispTel,
                                    email :$scope.vm.ispEmail,
                                    url :$scope.vm.ispUrl,
                                    memo : $scope.vm.ispMemo
                                };
@@ -548,6 +556,7 @@
                                    manager : $scope.vm.hostingManager,
                                    tel : $scope.vm.hostingTel,
                                    email :$scope.vm.hostingEmail,
                                    url :$scope.vm.hostingUrl,
                                    memo : $scope.vm.hostingMemo
                                };
                            }
src/main/webapp/scripts/app/issue/issueAddRelation.controller.js
@@ -73,6 +73,7 @@
                    companyManager : "",   // 업체 담당자
                    companyTel : "",  // 업체 전화번호
                    companyEmail : "",  // 업체 이메일
                    companyUrl : "", // 업체 url
                    companyMemo : "",  // 업체 비고
                    ispId : -1, // ISP ID
                    ispName : "", // ISP 명
@@ -80,6 +81,7 @@
                    ispManager : "", // ISP 담당자
                    ispTel : "", // ISP 전화번호
                    ispEmail : "", // ISP 이메일
                    ispUrl : "", // ISP url
                    ispMemo : "", // ISP 비고
                    hostingId : -1, // 호스팅 ID
                    hostingName : "", // 호스팅명 검색
@@ -87,6 +89,7 @@
                    hostingTel : "", // 호스팅 전화번호
                    hostingCode : "", // 호스팅 코드
                    hostingEmail : "", // 호스팅 이메일
                    hostingUrl : "", // 호스팅 url
                    hostingMemo :"", // 호스팅 비고
@@ -397,6 +400,7 @@
                    $scope.vm.companyManager = result[0].manager;
                    $scope.vm.companyTel = result[0].tel;
                    $scope.vm.companyEmail = result[0].email;
                    $scope.vm.companyUrl = result[0].url;
                    $scope.vm.companyMemo = result[0].memo;
                });
@@ -409,6 +413,7 @@
                    $scope.vm.ispManager = result[0].manager;
                    $scope.vm.ispTel = result[0].tel;
                    $scope.vm.ispEmail = result[0].email;
                    $scope.vm.ispUrl = result[0].url;
                    $scope.vm.ispMemo = result[0].memo;
                });
@@ -420,6 +425,7 @@
                    $scope.vm.hostingManager = result[0].manager;
                    $scope.vm.hostingTel = result[0].tel;
                    $scope.vm.hostingEmail = result[0].email;
                    $scope.vm.hostingUrl = result[0].url;
                    $scope.vm.hostingMemo = result[0].memo;
                });
@@ -435,18 +441,21 @@
                        companyManager : $scope.vm.companyManager,
                        companyTel : $scope.vm.companyTel,
                        companyEmail :$scope.vm.companyEmail,
                        companyUrl : $scope.vm.companyUrl,
                        companyMemo : $scope.vm.companyMemo,
                        ispName : $scope.vm.ispName,
                        ispCode : $scope.vm.ispCode,
                        ispManager : $scope.vm.ispManager,
                        ispTel : $scope.vm.ispTel,
                        ispEmail : $scope.vm.ispEmail,
                        ispUrl : $scope.vm.ispUrl,
                        ispMemo : $scope.vm.ispMemo,
                        hostingName : $scope.vm.hostingName,
                        hostingCode : $scope.vm.hostingCode,
                        hostingManager : $scope.vm.hostingManager,
                        hostingTel : $scope.vm.hostingTel,
                        hostingEmail : $scope.vm.hostingEmail,
                        hostingUrl : $scope.vm.hostingUrl,
                        hostingMemo : $scope.vm.hostingMemo,
                        projectId : (function () {   //  프로젝트 아이디
@@ -537,6 +546,7 @@
                                    manager : $scope.vm.companyManager,
                                    tel : $scope.vm.companyTel,
                                    email :$scope.vm.companyEmail,
                                    url :$scope.vm.companyUrl,
                                    memo : $scope.vm.companyMemo
                                });
                            }
@@ -557,6 +567,7 @@
                                    manager : $scope.vm.ispManager,
                                    tel : $scope.vm.ispTel,
                                    email :$scope.vm.ispEmail,
                                    url :$scope.vm.ispUrl,
                                    memo : $scope.vm.ispMemo
                                });
@@ -579,6 +590,7 @@
                                    manager : $scope.vm.hostingManager,
                                    tel : $scope.vm.hostingTel,
                                    email :$scope.vm.hostingEmail,
                                    url :$scope.vm.hostingUrl,
                                    memo : $scope.vm.hostingMemo
                                });
                            }
src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js
@@ -26,56 +26,65 @@
                        name : $filter("translate")("issue.issueTitle"), // 이슈 제목
                        key : "ISSUE_TITLE",
                        width : "width-140-p",
                        position : 1,
                        display : true
                        position : 0,
                        display : true,
                        checkboxShow : false
                    }, {
                        name : $filter("translate")("common.priority"), // 우선순위
                        key : "PRIORITY",
                        width : "width-80-p",
                        position : 2,
                        display : true
                        position : 1,
                        display : true,
                        checkboxShow : true
                    }, {
                        name : $filter("translate")("common.importance"), // 중요도
                        key : "SEVERITY",
                        width : "width-80-p",
                        position : 3,
                        display : true
                        position : 2,
                        display : true,
                        checkboxShow : true
                    }, {
                        name : $filter("translate")("issue.issueType"), // 이슈 타입
                        key : "ISSUE_TYPE",
                        width : "width-140-p",
                        position : 4,
                        display : true
                        position : 3,
                        display : true,
                        checkboxShow : true
                    }, {
                        name : $filter("translate")("common.assigneeTeam"), // 담당부서
                        key : "ASSIGNEE_TEAM",
                        width : "width-100-p",
                        position : 5,
                        display : true
                        position : 4,
                        display : true,
                        checkboxShow : true
                    }, {
                        name : $filter("translate")("common.countDownIssue"), // 하위이슈 카운트
                        key : "COUNT_DOWN_ISSUE",
                        width : "width-100-p",
                        position : 6,
                        display : false
                        position : 5,
                        display : false,
                        checkboxShow : true
                    }, {
                        name : $filter("translate")("common.register"), // 등록자
                        key : "REGISTER",
                        width : "width-100-p",
                        position : 7,
                        display : false
                        position : 6,
                        display : false,
                        checkboxShow : true
                    }, {
                        name : $filter("translate")("common.period"), // 기간
                        key : "PERIOD",
                        width : "width-140-p",
                        position : 8,
                        display : false
                        position : 7,
                        display : false,
                        checkboxShow : true
                    }, {
                        name : $filter("translate")("common.lastChangeDate"), // 최근 변경일
                        key : "MODIFY_DATE",
                        width : "width-100-p",
                        position : 9,
                        display : false
                        position : 8,
                        display : false,
                        checkboxShow : true
                    }, {
                    }]
                };
@@ -179,6 +188,7 @@
                            key : "CUSTOM_FIELD_" + customField.id,
                            width : "width-100-p",
                            display : false,
                            checkboxShow : true,
                            position : count
                        });
src/main/webapp/scripts/app/issue/issueList.controller.js
@@ -1001,28 +1001,34 @@
                            else {
                                //  최초 업무 공간에 들어왔을 경우
                                $scope.vm.issueTableConfigs = [{
                                    name : $filter("translate")("issue.issueTitle"), // 이슈 제목
                                    key : "ISSUE_TITLE",
                                    width : "width-140-p",
                                    position : 1,
                                    display : true
                                }, {
                                    name : $filter("translate")("common.priority"), // 우선순위
                                    key : "PRIORITY",
                                    width : "width-80-p",
                                    position : 1,
                                    position : 2,
                                    display : true
                                }, {
                                    name : $filter("translate")("common.importance"), // 중요도
                                    key : "SEVERITY",
                                    width : "width-80-p",
                                    position : 2,
                                    position : 3,
                                    display : true
                                }, {
                                    name : $filter("translate")("issue.issueType"), // 이슈 타입
                                    key : "ISSUE_TYPE",
                                    width : "width-140-p",
                                    position : 3,
                                    position : 4,
                                    display : true
                                }, {
                                    name : $filter("translate")("common.assigneeTeam"), // 담당부서
                                    key : "ASSIGNEE_TEAM",
                                    width : "width-140-p",
                                    position : 4,
                                    position : 5,
                                    display : true
                                }];
                            }
src/main/webapp/scripts/app/issue/issueModify.controller.js
@@ -75,6 +75,7 @@
                    companyManager : "",   // 업체 담당자
                    companyTel : "",  // 업체 전화번호
                    companyEmail : "",  // 업체 이메일
                    companyUrl : "",  // 업체 url
                    companyMemo : "",  // 업체 비고
                    ispId : -1,
                    ispName : "", // ISP 명
@@ -82,6 +83,7 @@
                    ispManager : "", // ISP 담당자
                    ispTel : "", // ISP 전화번호
                    ispEmail : "", // ISP 이메일
                    ispUrl : "",  // url
                    ispMemo : "", // ISP 비고
                    hostingId : -1,
                    hostingName : "", // 호스팅명 검색
@@ -89,6 +91,7 @@
                    hostingCode : "", // 호스팅 코드
                    hostingTel : "", // 호스팅 전화번호
                    hostingEmail : "", // 호스팅 이메일
                    hostingUrl : "",  // url
                    hostingMemo : "", // 호스팅 비고
                    autoCompletePage : {
                        // user : {
@@ -373,6 +376,7 @@
                    $scope.vm.companyManager = result[0].manager;
                    $scope.vm.companyTel = result[0].tel;
                    $scope.vm.companyEmail = result[0].email;
                    $scope.vm.companyUrl = result[0].url;
                    $scope.vm.companyMemo = result[0].memo;
                });
@@ -385,6 +389,7 @@
                    $scope.vm.ispManager = result[0].manager;
                    $scope.vm.ispTel = result[0].tel;
                    $scope.vm.ispEmail = result[0].email;
                    $scope.vm.ispUrl = result[0].url;
                    $scope.vm.ispMemo = result[0].memo;
                });
@@ -396,6 +401,7 @@
                    $scope.vm.hostingManager = result[0].manager;
                    $scope.vm.hostingTel = result[0].tel;
                    $scope.vm.hostingEmail = result[0].email;
                    $scope.vm.hostingUrl = result[0].url;
                    $scope.vm.hostingMemo = result[0].memo;
                });
@@ -410,18 +416,21 @@
                        companyManager : $scope.vm.companyManager,
                        companyTel : $scope.vm.companyTel,
                        companyEmail :$scope.vm.companyEmail,
                        companyUrl : $scope.vm.companyUrl,
                        companyMemo : $scope.vm.companyMemo,
                        ispName : $scope.vm.ispName,
                        ispCode : $scope.vm.ispCode,
                        ispManager : $scope.vm.ispManager,
                        ispTel : $scope.vm.ispTel,
                        ispEmail : $scope.vm.ispEmail,
                        ispUrl : $scope.vm.ispUrl,
                        ispMemo : $scope.vm.ispMemo,
                        hostingName : $scope.vm.hostingName,
                        hostingCode : $scope.vm.hostingCode,
                        hostingManager : $scope.vm.hostingManager,
                        hostingTel : $scope.vm.hostingTel,
                        hostingEmail : $scope.vm.hostingEmail,
                        hostingUrl : $scope.vm.hostingUrl,
                        hostingMemo : $scope.vm.hostingMemo,
                        projectId : (function () {   //  프로젝트 아이디
@@ -512,6 +521,7 @@
                                    manager : $scope.vm.companyManager,
                                    tel : $scope.vm.companyTel,
                                    email :$scope.vm.companyEmail,
                                    url :$scope.vm.companyUrl,
                                    memo : $scope.vm.companyMemo
                                });
                            }
@@ -532,6 +542,7 @@
                                    manager : $scope.vm.ispManager,
                                    tel : $scope.vm.ispTel,
                                    email :$scope.vm.ispEmail,
                                    url :$scope.vm.ispUrl,
                                    memo : $scope.vm.ispMemo
                                });
@@ -554,6 +565,7 @@
                                    manager : $scope.vm.hostingManager,
                                    tel : $scope.vm.hostingTel,
                                    email :$scope.vm.hostingEmail,
                                    url :$scope.vm.hostingUrl,
                                    memo : $scope.vm.hostingMemo
                                });
                            }
@@ -824,6 +836,7 @@
                                    $scope.vm.companyManager = issueCompanyFieldValue.manager;
                                    $scope.vm.companyTel = issueCompanyFieldValue.tel;
                                    $scope.vm.companyEmail = issueCompanyFieldValue.email;
                                    $scope.vm.companyUrl = issueCompanyFieldValue.url;
                                    $scope.vm.companyMemo = issueCompanyFieldValue.memo;
                                }
                                if (result.data.data.issueIspVos != null && result.data.data.issueIspVos.length > 0) {
@@ -835,6 +848,7 @@
                                    $scope.vm.ispManager = issueIspFieldValue.manager;
                                    $scope.vm.ispTel = issueIspFieldValue.tel;
                                    $scope.vm.ispEmail = issueIspFieldValue.email;
                                    $scope.vm.ispUrl = issueIspFieldValue.url;
                                    $scope.vm.ispMemo = issueIspFieldValue.memo;
                                }
@@ -847,6 +861,7 @@
                                    $scope.vm.hostingManager = issueHostingFieldValue.manager;
                                    $scope.vm.hostingTel = issueHostingFieldValue.tel;
                                    $scope.vm.hostingEmail = issueHostingFieldValue.email;
                                    $scope.vm.hostingUrl = issueHostingFieldValue.url;
                                    $scope.vm.hostingMemo = issueHostingFieldValue.memo;
                                }
src/main/webapp/scripts/app/issue/issueModifyDepartment.controller.js
@@ -26,7 +26,8 @@
                $scope.vm = {
                    form : {
                        departments : [],     //  담당부서
                        projects : []
                        projects : [],
                        issueTypeId : ""
                    },
                    departmentName : "",  //  부서 검색
                    autoCompletePage : {
src/main/webapp/scripts/components/utils/autoComplete.controller.js
@@ -314,7 +314,8 @@
                function getIssueDepartmentList(query, excludeList, page, callBack) {
                    var conditions = {
                        issueTypeId : $scope.vm.form.issueTypeId,
                        //issueTypeId : $scope.vm.form.issueTypeId,
                        issueTypeId : $rootScope.currentDetailIssueId,
                        departmentName : query,
                        userId : $rootScope.user.id,
                        projectId : (function () {
@@ -347,7 +348,7 @@
                        conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) {
                        if (result.data.message.status === "success") {
                            const departments = result.data.data;
                            if(departments != null && departments.length() > 0){
                            if(departments != null){
                                var filterDepartments = departments.filter(function(item, idx){
                                    return departments.findIndex(function(item2, idx2){
                                        return item.departmentName === item2.departmentName
src/main/webapp/views/companyField/companyFieldAdd.html
@@ -164,6 +164,23 @@
            </div>
            <div>
                <div class="form-group">
                    <label for="companyFieldAddForm10" class="issue-label">
                        <span translate="companyField.url">url</span>
                    </label>
                    <input id="companyFieldAddForm10"
                           name="url"
                           type="text"
                           class="form-control"
                           kr-input
                           autocomplete="off"
                           ng-model="vm.form.url"
                           ng-maxlength="200"
                           maxlength="200"
                    >
                </div>
            </div>
            <div>
                <div class="form-group">
                    <label for="companyFieldAddForm8" class="issue-label">
                        <span translate="companyField.memo">비고</span>
                    </label>
src/main/webapp/views/companyField/companyFieldModify.html
@@ -160,6 +160,23 @@
            </div>
            <div>
                <div class="form-group">
                    <label for="companyFieldAddForm10" class="issue-label">
                        <span translate="companyField.url">url</span>
                    </label>
                    <input id="companyFieldAddForm10"
                           name="url"
                           type="text"
                           class="form-control"
                           kr-input
                           autocomplete="off"
                           ng-model="vm.form.url"
                           ng-maxlength="200"
                           maxlength="200"
                    >
                </div>
            </div>
            <div>
                <div class="form-group">
                    <label for="companyFieldModifyForm8" class="issue-label">
                        <span translate="companyField.memo">비고</span>
                    </label>
src/main/webapp/views/hostingField/hostingFieldAdd.html
@@ -107,6 +107,23 @@
            </div>
            <div>
                <div class="form-group">
                    <label for="hostingFieldAddForm11" class="issue-label">
                        <span translate="companyField.url">url</span>
                    </label>
                    <input id="hostingFieldAddForm11"
                           name="url"
                           type="text"
                           class="form-control"
                           kr-input
                           autocomplete="off"
                           ng-model="vm.form.url"
                           ng-maxlength="200"
                           maxlength="200"
                    >
                </div>
            </div>
            <div>
                <div class="form-group">
                    <label for="hostingFieldAddForm8" class="issue-label">
                        <span translate="hostingField.memo">비고</span>
                    </label>
src/main/webapp/views/hostingField/hostingFieldModify.html
@@ -104,6 +104,23 @@
            </div>
            <div>
                <div class="form-group">
                    <label for="hostingFieldAddForm11" class="issue-label">
                        <span translate="companyField.url">url</span>
                    </label>
                    <input id="hostingFieldAddForm11"
                           name="url"
                           type="text"
                           class="form-control"
                           kr-input
                           autocomplete="off"
                           ng-model="vm.form.url"
                           ng-maxlength="200"
                           maxlength="200"
                    >
                </div>
            </div>
            <div>
                <div class="form-group">
                    <label for="hostingFieldModifyForm8" class="issue-label">
                        <span translate="hostingField.memo">비고</span>
                    </label>
src/main/webapp/views/ispField/ispFieldAdd.html
@@ -107,6 +107,23 @@
            </div>
            <div>
                <div class="form-group">
                    <label for="ispFieldAddForm12" class="issue-label">
                        <span translate="companyField.url">url</span>
                    </label>
                    <input id="ispFieldAddForm12"
                           name="url"
                           type="text"
                           class="form-control"
                           kr-input
                           autocomplete="off"
                           ng-model="vm.form.url"
                           ng-maxlength="200"
                           maxlength="200"
                    >
                </div>
            </div>
            <div>
                <div class="form-group">
                    <label for="ispFieldAddForm8" class="issue-label">
                        <span translate="ispField.memo">비고</span>
                    </label>
src/main/webapp/views/ispField/ispFieldModify.html
@@ -105,6 +105,23 @@
            </div>
            <div>
                <div class="form-group">
                    <label for="ispFieldAddForm12" class="issue-label">
                        <span translate="companyField.url">url</span>
                    </label>
                    <input id="ispFieldAddForm12"
                           name="url"
                           type="text"
                           class="form-control"
                           kr-input
                           autocomplete="off"
                           ng-model="vm.form.url"
                           ng-maxlength="200"
                           maxlength="200"
                    >
                </div>
            </div>
            <div>
                <div class="form-group">
                    <label for="hostingFieldModifyForm8" class="issue-label">
                        <span translate="hostingField.memo">비고</span>
                    </label>
src/main/webapp/views/issue/issueAdd.html
@@ -447,6 +447,20 @@
                </div>
                <div class="col-lg-4">
                    <div class="form-group mgb5">
                        <label for="companyFieldUrlAddForm" class="issue-label"><span translate="companyField.url">url</span></label>
                        <input id="companyFieldUrlAddForm"
                               name="companyUrl"
                               type="text"
                               class="form-control"
                               kr-input
                               autocomplete="off"
                               ng-maxlength="200"
                               ng-model="vm.companyUrl"
                               maxlength="200">
                    </div>
                </div>
                <div class="col-lg-4">
                    <div class="form-group mgb5">
                        <label for="companyFieldDescAddForm" class="issue-label"><span translate="companyField.memo">비고</span></label>
                        <input id="companyFieldDescAddForm"
                               name="companyMemo"
@@ -553,6 +567,20 @@
                </div>
                <div class="col-lg-4">
                    <div class="form-group mgb5">
                        <label for="ispFieldUrlAddForm" class="issue-label"><span translate="companyField.url">url</span></label>
                        <input id="ispFieldUrlAddForm"
                               name="ispUrl"
                               type="text"
                               class="form-control"
                               kr-input
                               autocomplete="off"
                               ng-maxlength="200"
                               ng-model="vm.ispUrl"
                               maxlength="200">
                    </div>
                </div>
                <div class="col-lg-4">
                    <div class="form-group mgb5">
                        <label for="ispFieldDescAddForm" class="issue-label"><span translate="ispField.memo">비고</span></label>
                        <input id="ispFieldDescAddForm"
                               name="ispMemo"
@@ -659,6 +687,20 @@
                </div>
                <div class="col-lg-4">
                    <div class="form-group mgb5">
                        <label for="hostingFieldUrlAddForm" class="issue-label"><span translate="companyField.url">url</span></label>
                        <input id="hostingFieldUrlAddForm"
                               name="hostingUrl"
                               type="text"
                               class="form-control"
                               kr-input
                               autocomplete="off"
                               ng-maxlength="200"
                               ng-model="vm.hostingUrl"
                               maxlength="200">
                    </div>
                </div>
                <div class="col-lg-4">
                    <div class="form-group mgb5">
                        <label for="hostingFieldDescAdd" class="issue-label"><span translate="hostingField.memo">비고</span></label>
                        <input id="hostingFieldDescAdd"
                               name="hostingMemo"
src/main/webapp/views/issue/issueAddRelation.html
@@ -455,6 +455,20 @@
                </div>
                <div class="col-lg-4">
                    <div class="form-group mgb5">
                        <label for="companyFieldUrlAddForm" class="issue-label"><span translate="companyField.url">url</span></label>
                        <input id="companyFieldUrlAddForm"
                               name="companyUrl"
                               type="text"
                               class="form-control"
                               kr-input
                               autocomplete="off"
                               ng-maxlength="200"
                               ng-model="vm.companyUrl"
                               maxlength="200">
                    </div>
                </div>
                <div class="col-lg-4">
                    <div class="form-group mgb5">
                        <label for="companyFieldDescAddForm" class="issue-label"><span translate="companyField.memo">비고</span></label>
                        <input id="companyFieldDescAddForm"
                               name="companyMemo"
@@ -561,6 +575,20 @@
                </div>
                <div class="col-lg-4">
                    <div class="form-group mgb5">
                        <label for="ispFieldUrlAddForm" class="issue-label"><span translate="companyField.url">url</span></label>
                        <input id="ispFieldUrlAddForm"
                               name="ispUrl"
                               type="text"
                               class="form-control"
                               kr-input
                               autocomplete="off"
                               ng-maxlength="200"
                               ng-model="vm.ispUrl"
                               maxlength="200">
                    </div>
                </div>
                <div class="col-lg-4">
                    <div class="form-group mgb5">
                        <label for="ispFieldDescAddForm" class="issue-label"><span translate="ispField.memo">비고</span></label>
                        <input id="ispFieldDescAddForm"
                               name="ispMemo"
@@ -667,6 +695,20 @@
                </div>
                <div class="col-lg-4">
                    <div class="form-group mgb5">
                        <label for="hostingFieldUrlAddForm" class="issue-label"><span translate="companyField.url">url</span></label>
                        <input id="hostingFieldUrlAddForm"
                               name="hostingUrl"
                               type="text"
                               class="form-control"
                               kr-input
                               autocomplete="off"
                               ng-maxlength="200"
                               ng-model="vm.hostingUrl"
                               maxlength="200">
                    </div>
                </div>
                <div class="col-lg-4">
                    <div class="form-group mgb5">
                        <label for="hostingFieldDescAdd" class="issue-label"><span translate="hostingField.memo">비고</span></label>
                        <input id="hostingFieldDescAdd"
                               name="hostingMemo"
src/main/webapp/views/issue/issueAddTableConfig.html
@@ -72,9 +72,11 @@
                            <option value="width-40">40%</option>
                            <option value="width-50">50%</option>
                        </select>
                    </td>
                    <td class="text-center">
                        <label class='switch'><input type='checkbox' ng-model='issueTableConfig.display'><span class='slider round'></span></label>
                        <!-- 이슈 제목 표시 버튼 disabled -->
                        <label ng-if="!issueTableConfig.checkboxShow" class='switch'><input type="checkbox" ><span class='slider-disabled round'></span></label>
                        <!-- 나머지 버튼 표시 -->
                        <label ng-if="issueTableConfig.checkboxShow" class='switch'><input type="checkbox" ng-model="issueTableConfig.display"><span class='slider round'></span ></label>
                    </td>
                    <td class="text-center">
                        <input type="text" class="form-control" ng-model="issueTableConfig.position" maxlength="2" input-regex="[^0-9]">
src/main/webapp/views/issue/issueDetail.html
@@ -510,7 +510,7 @@
                        <span class="info_detail_font h3" translate="issue.downIssue">하위 이슈</span>
                    </div>
                    <div class="col-sm-2">
                        <button type="button" class="btn btn-primary form-control input-sm offset-5" ng-click="fn.modifyDownIssueStatus()"
                        <button type="button" class="btn btn-darkgrey form-control input-sm offset-5" ng-click="fn.modifyDownIssueStatus()"
                                translate="common.updateDownIssueAllStatus">하위이슈 상태 전체 변경</button>
                    </div>
                    <div class="col-sm-1">
src/main/webapp/views/issue/issueModify.html
@@ -445,6 +445,20 @@
                </div>
                <div class="col-lg-4">
                    <div class="form-group mgb5">
                        <label for="companyFieldUrlAddForm" class="issue-label"><span translate="companyField.url">url</span></label>
                        <input id="companyFieldUrlAddForm"
                               name="companyUrl"
                               type="text"
                               class="form-control"
                               kr-input
                               autocomplete="off"
                               ng-maxlength="200"
                               ng-model="vm.companyUrl"
                               maxlength="200">
                    </div>
                </div>
                <div class="col-lg-4">
                    <div class="form-group mgb5">
                        <label for="companyFieldDescAddForm" class="issue-label"><span translate="companyField.memo">비고</span></label>
                        <input id="companyFieldDescAddForm"
                               name="companyMemo"
@@ -551,6 +565,20 @@
                </div>
                <div class="col-lg-4">
                    <div class="form-group mgb5">
                        <label for="ispFieldUrlAddForm" class="issue-label"><span translate="companyField.url">url</span></label>
                        <input id="ispFieldUrlAddForm"
                               name="ispUrl"
                               type="text"
                               class="form-control"
                               kr-input
                               autocomplete="off"
                               ng-maxlength="200"
                               ng-model="vm.ispUrl"
                               maxlength="200">
                    </div>
                </div>
                <div class="col-lg-4">
                    <div class="form-group mgb5">
                        <label for="ispFieldDescAddForm" class="issue-label"><span translate="ispField.memo">비고</span></label>
                        <input id="ispFieldDescAddForm"
                               name="ispMemo"
@@ -657,6 +685,20 @@
                </div>
                <div class="col-lg-4">
                    <div class="form-group mgb5">
                        <label for="hostingFieldUrlAddForm" class="issue-label"><span translate="companyField.url">url</span></label>
                        <input id="hostingFieldUrlAddForm"
                               name="hostingUrl"
                               type="text"
                               class="form-control"
                               kr-input
                               autocomplete="off"
                               ng-maxlength="200"
                               ng-model="vm.hostingUrl"
                               maxlength="200">
                    </div>
                </div>
                <div class="col-lg-4">
                    <div class="form-group mgb5">
                        <label for="hostingFieldDescAdd" class="issue-label"><span translate="hostingField.memo">비고</span></label>
                        <input id="hostingFieldDescAdd"
                               name="hostingMemo"
src/main/webapp/views/issue/issueSendMailPartners.html
@@ -50,6 +50,12 @@
                            <img ng-show="vm.form.template == 'ISSUE_SEND_3'" style="margin: 50px auto 0;" id="Email-Template3" src="assets/images/emailthumb-hosting.png">
                        </div>
                    </div>
                <summernote
                        class="summernote"
                        lang="ko-KR"
                        config="vm.options"
                        ng-model="vm.form.description"
                        target=".note-editable"></summernote>
            </div>
        </form>
    </div>
src/main/webapp/views/login/login.html
@@ -5,9 +5,9 @@
                <div class="flex">
                    <div class="loginbackdiv">
                        <div class="loginback">
                            <img src="/assets/images/loginlogo.png"/>
                            <img src="/assets/images/logo-kisa-vertical.png"/>
                            <div class="stardiv">
                                <div class="stars"></div>
                            <!--    <div class="stars"></div>
                                <div class="twinkling"></div>
                            </div>
                            <div class="bgdiv">
@@ -15,14 +15,14 @@
                            <div class="login-circle">
                                <div class="circle1"></div>
                                <div class="circle2"></div>
                                <div class="circle3"></div>
                                <div class="circle3"></div>-->
                            </div>
                        </div>
                    </div>
                    <div class="logincont">
                        <div class="auth-box-w">
                            <h3 class="auth-header">
                                <img alt="" src="/assets/images/logineyes.png">
                                <img alt="" src="/assets/images/logo-kisa-en.png">
                                LOG IN
                            </h3>
                            <form role="form" ng-enter="fn.login()" name="loginForm">
src/main/webapp/views/user/superUserAdd.html
@@ -1,7 +1,7 @@
<div class="content-box">
    <div class="row">
        <div class="join-box">
            <a href="http://owlsolution.co.kr" target="_self"><img alt="" src="/assets/images/logo-owl-dark.png" class="join-logo"></a>
            <a href="http://owlsolution.co.kr" target="_self"><img alt="" src="/assets/images/logo-kisa-ko.png" class="join-logo"></a>
            <div class="join">
                <h4 translate="users.setupOWLITSMembership">OWL ITS 최고관리자 생성</h4>
                <form name="userAddForm">
src/main/webapp/views/user/userAdd.html
@@ -1,7 +1,7 @@
   <div class="content-box">
       <div class="row">
           <div class="join-box">
               <a href="http://owlsolution.co.kr" target="_self"><img alt="" src="/assets/images/logo-owl-dark.png" class="join-logo"></a>
               <a href="http://owlsolution.co.kr" target="_self"><img alt="" src="/assets/images/logo-kisa-ko.png" class="join-logo"></a>
               <span class="login-btn"><span translate="users.usedAccount">이미 계정이 있으신가요?</span>
                    <a class="link" ui-sref="login">Log in</a>
               </span>