Merge branch 'jenkins_with_weblogic' into devs/app_approval
# Conflicts: # CLAUDE.md # settings.gradle # src/main/java/com/eactive/eai/rms/onl/apim/approval/PortalApprovalManService.java # src/main/java/com/eactive/eai/rms/onl/apim/approval/app/PortalAppApprovalListener.java # src/main/java/com/eactive/eai/rms/onl/apim/approval/user/PortalUserApprovalListener.java
This commit is contained in:
+5
-1
@@ -239,4 +239,8 @@ gradle-app.setting
|
|||||||
Doc/
|
Doc/
|
||||||
docs
|
docs
|
||||||
build-gf63.sh
|
build-gf63.sh
|
||||||
gradle-gf63.sh
|
gradle-gf63.sh
|
||||||
|
|
||||||
|
|
||||||
|
eapim-admin-kjb/
|
||||||
|
.claude
|
||||||
@@ -1,224 +1,280 @@
|
|||||||
# CLAUDE.md
|
# CLAUDE.md
|
||||||
|
|
||||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
이 파일은 Claude Code (claude.ai/code)가 이 저장소의 코드를 작업할 때 참고할 가이드를 제공합니다.
|
||||||
|
|
||||||
## Project Overview
|
## 프로젝트 개요
|
||||||
|
|
||||||
eLink EMS (eLink Management System) is an enterprise API management platform consisting of three main applications:
|
eLink EMS (eLink Management System)는 세 가지 주요 애플리케이션으로 구성된 엔터프라이즈 API 관리 플랫폼입니다:
|
||||||
- **eapim-admin**: Management console for configuration, monitoring, and statistics
|
- **eapim-admin**: 구성, 모니터링, 통계를 위한 관리 콘솔
|
||||||
- **eapim-online**: API gateway for real-time transaction processing
|
- **eapim-online**: 실시간 트랜잭션 처리를 위한 API 게이트웨이
|
||||||
- **eapim-portal**: Developer portal for API consumers (Spring Boot-based)
|
- **eapim-portal**: API 소비자를 위한 개발자 포털 (Spring Boot 기반)
|
||||||
|
|
||||||
This directory (`eapim-admin`) contains the management console, built with Spring 5.3 and a hybrid ORM approach (JPA + iBATIS).
|
이 디렉토리(`eapim-admin`)는 Spring 5.3과 하이브리드 ORM 방식(JPA + iBATIS)으로 구축된 관리 콘솔을 포함합니다.
|
||||||
|
|
||||||
## Build & Development Commands
|
## 빌드 및 개발 명령어
|
||||||
|
|
||||||
### Building the Application
|
### 애플리케이션 빌드
|
||||||
|
|
||||||
|
eLink EMS (eLink Management System)는 eLink의 웹 기반 관리 서비스로, 구성, 모니터링 및 통계 기능을 제공합니다. Tomcat 또는 WebLogic에 배포되는 Spring 기반 Java 웹 애플리케이션입니다.
|
||||||
|
|
||||||
|
### 주요 기능
|
||||||
|
- 사용자 및 권한 관리
|
||||||
|
- 트랜잭션 로그 조회 (온라인/배치/대량)
|
||||||
|
- 통계 및 대시보드 모니터링
|
||||||
|
- 인터페이스, 레이아웃, 어댑터, 라우팅 관리
|
||||||
|
- 외부 시스템 연동 (UMS, EAI 배치)
|
||||||
|
|
||||||
|
## 빌드 및 개발 명령어
|
||||||
|
|
||||||
|
### 빌드 명령어
|
||||||
```bash
|
```bash
|
||||||
# Standard WAR build for Tomcat
|
# 표준 빌드
|
||||||
gradle war
|
gradle build
|
||||||
|
|
||||||
# Build without tests
|
# Weblogic 배포용 빌드 (테스트 제외)
|
||||||
gradle build -x test
|
|
||||||
|
|
||||||
# WebLogic deployment (uses weblogic-web.xml)
|
|
||||||
gradle build -x test -Pprofile=weblogic
|
gradle build -x test -Pprofile=weblogic
|
||||||
|
|
||||||
# Clean and rebuild
|
# WAR 파일 빌드
|
||||||
|
gradle war
|
||||||
|
|
||||||
|
# 클린 빌드
|
||||||
gradle clean build
|
gradle clean build
|
||||||
```
|
```
|
||||||
|
|
||||||
### Running Tests
|
### 테스트 실행
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Run all tests
|
# 모든 테스트 실행
|
||||||
gradle test
|
gradle test
|
||||||
|
|
||||||
# Run specific test class
|
# 특정 테스트 클래스 실행
|
||||||
gradle test --tests "com.example.ClassName"
|
gradle test --tests "com.example.ClassName"
|
||||||
|
|
||||||
|
# 특정 테스트 패키지 실행 (JUnit 플랫폼 사용)
|
||||||
|
gradle test --tests "com.eactive.eai.rms.*"
|
||||||
```
|
```
|
||||||
|
|
||||||
### Development Tasks
|
### 개발 태스크
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Assemble classes without packaging
|
# 패키징 없이 클래스만 컴파일
|
||||||
gradle classes
|
gradle classes
|
||||||
|
|
||||||
# Generate QueryDSL Q-classes and other annotations
|
# QueryDSL Q-classes 및 기타 애노테이션 생성
|
||||||
gradle compileJava
|
gradle compileJava
|
||||||
|
|
||||||
# View dependency tree
|
# 의존성 트리 보기
|
||||||
gradle dependencies
|
gradle dependencies
|
||||||
|
|
||||||
# List all available tasks
|
# 사용 가능한 모든 태스크 목록
|
||||||
gradle tasks --all
|
gradle tasks --all
|
||||||
```
|
```
|
||||||
|
|
||||||
## Architecture & Module Dependencies
|
## 아키텍처 및 모듈 의존성
|
||||||
|
|
||||||
### Multi-Module Structure
|
### 멀티 모듈 구조
|
||||||
|
|
||||||
eapim-admin references modules from the sibling `eapim-online` directory via settings.gradle:
|
eapim-admin은 settings.gradle을 통해 형제 디렉토리 `eapim-online`의 모듈들을 참조합니다:
|
||||||
|
|
||||||
```
|
```
|
||||||
eapim-admin (root project)
|
eapim-admin (root project)
|
||||||
├── elink-online-core # Core interfaces and domain models
|
├── elink-online-core # 핵심 인터페이스 및 도메인 모델
|
||||||
├── elink-online-core-jpa # JPA entities and repositories
|
├── elink-online-core-jpa # JPA 엔티티 및 리포지토리
|
||||||
├── elink-online-transformer # Message transformation logic
|
├── elink-online-transformer # 메시지 변환 로직
|
||||||
├── elink-online-common # Shared utilities
|
├── elink-online-common # 공통 유틸리티
|
||||||
├── elink-online-emsclient # EMS client communication
|
├── elink-online-emsclient # EMS 클라이언트 통신
|
||||||
├── elink-portal-common # Portal shared components (JPA entities)
|
├── elink-online-adapter # 통신 어댑터
|
||||||
└── kjb-safedb # Custom encryption library
|
├── elink-portal-common # 포털 공통 컴포넌트 (JPA 엔티티)
|
||||||
|
├── kjb-safedb # 커스텀 암호화 라이브러리
|
||||||
|
└── eapim-admin-kjb # KJB 은행 특화 커스터마이제이션
|
||||||
```
|
```
|
||||||
|
|
||||||
All module projects are located in `../eapim-online/` and `../` relative to this directory.
|
모든 모듈 프로젝트는 이 디렉토리 기준으로 `../eapim-online/`, `../elink-portal-common/` 등에 위치합니다.
|
||||||
|
|
||||||
### Hybrid ORM Approach
|
### 하이브리드 ORM 방식
|
||||||
|
|
||||||
This application uses **both JPA and iBATIS**:
|
이 애플리케이션은 **JPA와 iBATIS 모두를 사용**합니다:
|
||||||
- **JPA/Hibernate**: Modern data access via `elink-portal-common` (Spring Data repositories)
|
- **JPA/Hibernate**: `elink-portal-common`을 통한 현대적인 데이터 액세스 (Spring Data repositories)
|
||||||
- **iBATIS**: Legacy SQL mapping for existing code (will be migrated over time)
|
- **iBATIS**: 기존 코드를 위한 레거시 SQL 매핑 (점진적으로 마이그레이션 예정)
|
||||||
|
|
||||||
When working with data access:
|
데이터 액세스 작업 시:
|
||||||
- New features should use JPA with Spring Data repositories
|
- 새로운 기능은 JPA와 Spring Data repositories를 사용해야 합니다
|
||||||
- Legacy iBATIS mappers are in `src/main/resources/sql/` and configured via Spring XML
|
- 레거시 iBATIS 매퍼는 `src/main/resources/com/eactive/eai/**/*.xml`에 있으며 Spring XML을 통해 설정됩니다
|
||||||
|
|
||||||
### Code Generation
|
### 코드 생성
|
||||||
|
|
||||||
The build process generates:
|
빌드 프로세스에서 생성되는 것들:
|
||||||
- **QueryDSL Q-classes**: Type-safe query classes
|
- **QueryDSL Q-classes**: 타입 안전 쿼리 클래스
|
||||||
- **Lombok**: Getters/setters/builders via annotation processing
|
- **Lombok**: 애노테이션 프로세싱을 통한 Getters/setters/builders
|
||||||
- **MapStruct**: Object mappers between DTOs and entities
|
- **MapStruct**: DTO와 엔티티 간의 객체 매퍼
|
||||||
|
|
||||||
#### Dual Q-Class Generation (Gradle + Eclipse)
|
#### 이중 Q-Class 생성 (Gradle + Eclipse)
|
||||||
|
|
||||||
This project uses **both Gradle and Eclipse annotation processors**, which means Q-classes are generated in **two locations**:
|
이 프로젝트는 **Gradle과 Eclipse 애노테이션 프로세서 모두를 사용**하므로, Q-classes가 **두 위치에 생성**됩니다:
|
||||||
|
|
||||||
1. **`build/generated/java/`** - Generated by Gradle when running `gradle compileJava` or `gradle build`
|
1. **`build/generated/java/`** - `gradle compileJava` 또는 `gradle build` 실행 시 Gradle이 생성
|
||||||
2. **`WebContent/generated/`** - Generated by Eclipse APT when building in Eclipse IDE
|
2. **`WebContent/generated/`** - Eclipse IDE에서 빌드 시 Eclipse APT가 생성
|
||||||
|
|
||||||
**This is expected behavior and intentional.** Both directories are in `.gitignore` and should NOT be committed.
|
**이는 예상된 동작이며 의도적입니다.** 두 디렉토리 모두 `.gitignore`에 포함되어 있으며 커밋해서는 안 됩니다.
|
||||||
|
|
||||||
#### Working with Generated Code
|
#### 생성된 코드 작업하기
|
||||||
|
|
||||||
- **Gradle builds**: Q-classes in `build/generated/java/` are automatically on the classpath
|
- **Gradle 빌드**: `build/generated/java/`의 Q-classes가 자동으로 classpath에 포함됩니다
|
||||||
- **Eclipse IDE**: Q-classes in `WebContent/generated/` are automatically on the classpath
|
- **Eclipse IDE**: `WebContent/generated/`의 Q-classes가 자동으로 classpath에 포함됩니다
|
||||||
- **After pulling updates**: Run `gradle compileJava` or refresh Eclipse project to regenerate Q-classes
|
- **업데이트 pull 후**: `gradle compileJava`를 실행하거나 Eclipse 프로젝트를 새로고침하여 Q-classes를 재생성합니다
|
||||||
- **IDE errors on Q-classes**: Regenerate by running `gradle clean compileJava` or Eclipse → Project → Clean
|
- **Q-classes IDE 오류 시**: `gradle clean compileJava` 또는 Eclipse → Project → Clean으로 재생성합니다
|
||||||
|
|
||||||
The duplication causes no issues since:
|
중복이 문제를 일으키지 않는 이유:
|
||||||
- Both tools generate identical Q-classes from the same JPA entities
|
- 두 도구 모두 동일한 JPA 엔티티에서 동일한 Q-classes를 생성합니다
|
||||||
- Both output directories are gitignored
|
- 두 출력 디렉토리 모두 gitignore됩니다
|
||||||
- Each tool uses its own generated classes (no classpath conflicts)
|
- 각 도구는 자체 생성 클래스를 사용합니다 (classpath 충돌 없음)
|
||||||
|
|
||||||
## Local Development Setup
|
## 로컬 개발 환경 설정
|
||||||
|
|
||||||
### Required Environment Variables (Tomcat)
|
### 필수 환경 변수 (Tomcat)
|
||||||
|
|
||||||
```
|
```
|
||||||
-Deai.datasource.type=DEV
|
-Deai.datasource.type=DEV
|
||||||
-Dinst.Name=apimsSvr11
|
-Dinst.Name=emsSvr99
|
||||||
-Deai.tableowner=ems
|
-Deai.tableowner=EMSADM
|
||||||
-Deai.systemmode=D
|
-Deai.systemmode=D
|
||||||
-Dfile.encoding=utf-8
|
-Dfile.encoding=utf-8
|
||||||
-DLOGBACK_LOG_LEVEL=info
|
-Dlogin.mode=db
|
||||||
|
-DLOGBACK_LOG_LEVEL=DEBUG
|
||||||
|
-Dlogback.configurationFile=classpath:logback-dev.xml
|
||||||
|
-Dhibernate.dialect=org.hibernate.dialect.Oracle12cDialect
|
||||||
|
-Dkjb_safedb.mode=fake
|
||||||
```
|
```
|
||||||
|
|
||||||
### Database Configuration
|
### 개발 환경 설정
|
||||||
|
애플리케이션은 `WebContent/WEB-INF/properties/`의 환경별 프로퍼티 파일을 통해 설정됩니다:
|
||||||
|
- `env.D.properties` - 개발 환경
|
||||||
|
- `env.T.properties` - 테스트/스테이징 환경
|
||||||
|
- `env.P.properties` - 운영 환경
|
||||||
|
|
||||||
The application supports:
|
**프로필 설정**
|
||||||
- **Oracle**: Production database
|
- `-Pprofile=weblogic`: `web.xml` 대신 `weblogic-web.xml`을 사용 (DefaultServlet 문제 해결)
|
||||||
- **PostgreSQL**: Alternative production DB
|
|
||||||
- **H2**: In-memory database for tests
|
|
||||||
|
|
||||||
Database connection is configured via `eai.datasource.type` system property (DEV/STG/PROD).
|
### 데이터베이스 설정
|
||||||
|
|
||||||
### SafeDB Encryption Library
|
애플리케이션은 다음을 지원합니다:
|
||||||
|
- **Oracle**: 운영 데이터베이스 (주)
|
||||||
|
- **PostgreSQL/MariaDB**: 대체 운영 DB
|
||||||
|
- **H2**: 테스트용 인메모리 데이터베이스
|
||||||
|
|
||||||
The `kjb-safedb` module provides three operational modes:
|
데이터베이스 연결은 `eai.datasource.type` 시스템 프로퍼티(DEV/STG/PROD)를 통해 설정됩니다.
|
||||||
- **REAL**: Uses actual SafeDB native library
|
|
||||||
- **FAKE**: Development mode using SHA-256/AES-256 (no SafeDB installation required)
|
|
||||||
- **NONE**: Bypass encryption (for testing only)
|
|
||||||
|
|
||||||
In development, use FAKE mode if SafeDB is not installed locally.
|
### SafeDB 암호화 라이브러리
|
||||||
|
|
||||||
## Key Features & Functionality
|
`kjb-safedb` 모듈은 세 가지 동작 모드를 제공합니다:
|
||||||
|
- **REAL**: 실제 SafeDB 네이티브 라이브러리 사용
|
||||||
|
- **FAKE**: SHA-256/AES-256을 사용하는 개발 모드 (SafeDB 설치 불필요)
|
||||||
|
- **NONE**: 암호화 우회 (테스트 전용)
|
||||||
|
|
||||||
The admin console manages all aspects of the eLink platform:
|
개발 시 SafeDB가 로컬에 설치되지 않은 경우 FAKE 모드를 사용합니다.
|
||||||
|
|
||||||
| Feature | Description |
|
## 주요 기능
|
||||||
|---------|-------------|
|
|
||||||
| User Management | User accounts and authorization |
|
|
||||||
| Transaction Logs | View online/batch/bulk transaction history |
|
|
||||||
| Statistics & Dashboard | Real-time monitoring and metrics |
|
|
||||||
| Interface Management | API interface configuration |
|
|
||||||
| Layout Management | Message layout definitions |
|
|
||||||
| Transformation Rules | Message transformation logic |
|
|
||||||
| Adapter Configuration | Protocol adapters (HTTP, TCP, etc.) |
|
|
||||||
| Routing Rules | Request routing and load balancing |
|
|
||||||
| Batch Processing | Batch interface and adapter management |
|
|
||||||
| Scheduler | Quartz-based job scheduling |
|
|
||||||
|
|
||||||
## Deployment Targets
|
관리 콘솔은 eLink 플랫폼의 모든 측면을 관리합니다:
|
||||||
|
|
||||||
The application can be deployed to:
|
| 기능 | 설명 |
|
||||||
- **Tomcat** (default, development)
|
|------|------|
|
||||||
- **WebLogic 14.1.2** (production, requires `-Pprofile=weblogic`)
|
| 사용자 관리 | 사용자 계정 및 권한 |
|
||||||
- **JEUS** (supported)
|
| 트랜잭션 로그 | 온라인/배치/대량 트랜잭션 이력 조회 |
|
||||||
- **JBoss/WildFly** (supported with descriptors)
|
| 통계 및 대시보드 | 실시간 모니터링 및 메트릭 |
|
||||||
|
| 인터페이스 관리 | API 인터페이스 구성 |
|
||||||
|
| 레이아웃 관리 | 메시지 레이아웃 정의 |
|
||||||
|
| 변환 규칙 | 메시지 변환 로직 |
|
||||||
|
| 어댑터 설정 | 프로토콜 어댑터 (HTTP, TCP 등) |
|
||||||
|
| 라우팅 규칙 | 요청 라우팅 및 로드 밸런싱 |
|
||||||
|
| 배치 처리 | 배치 인터페이스 및 어댑터 관리 |
|
||||||
|
| 스케줄러 | Quartz 기반 작업 스케줄링 |
|
||||||
|
|
||||||
### WebLogic-Specific Build
|
## 배포 대상
|
||||||
|
|
||||||
When building for WebLogic, use the `weblogic` profile which replaces `web.xml` with `weblogic-web.xml` to address DefaultServlet issues:
|
애플리케이션은 다음 환경에 배포할 수 있습니다:
|
||||||
|
- **Tomcat** (기본, 개발)
|
||||||
|
- **WebLogic 14.1.2** (운영, `-Pprofile=weblogic` 필요)
|
||||||
|
- **JEUS** (지원)
|
||||||
|
- **JBoss/WildFly** (descriptors와 함께 지원)
|
||||||
|
|
||||||
|
### WebLogic 전용 빌드
|
||||||
|
|
||||||
|
WebLogic용 빌드 시, DefaultServlet 문제를 해결하기 위해 `web.xml`을 `weblogic-web.xml`로 교체하는 `weblogic` 프로필을 사용합니다:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
gradle build -x test -Pprofile=weblogic
|
gradle build -x test -Pprofile=weblogic
|
||||||
```
|
```
|
||||||
|
|
||||||
## Technology Stack
|
## 기술 스택
|
||||||
|
|
||||||
- **Java 8**: Enforced via Gradle toolchain
|
- **Java 8**: Gradle toolchain을 통해 강제
|
||||||
- **Spring Framework 5.3.27**: Core framework
|
- **Spring Framework 5.3.27**: 코어 프레임워크 (MVC, Data JPA)
|
||||||
- **Spring Data JPA 2.5.2**: Repository abstraction
|
- **Spring Data JPA 2.5.2**: 리포지토리 추상화
|
||||||
- **Hibernate 5.4.33**: ORM implementation
|
- **Hibernate 5.4.33/5.6.15**: ORM 구현 (JPA/ORM)
|
||||||
- **QueryDSL 5.0.0**: Type-safe queries
|
- **QueryDSL 5.0.0**: 타입 안전 쿼리
|
||||||
- **iBATIS 2.3.4**: Legacy SQL mapping
|
- **iBATIS 2.3.4**: 레거시 SQL 매핑
|
||||||
- **Quartz 2.2.1**: Job scheduling
|
- **Quartz 2.2.1**: 작업 스케줄링
|
||||||
- **Apache POI 3.17**: Excel export functionality
|
- **Apache POI 3.17**: Excel 내보내기 기능
|
||||||
- **Jackson 2.13.1**: JSON processing
|
- **Jackson 2.13.1**: JSON 처리
|
||||||
- **Logback 1.2.10**: Logging framework/ㅊ
|
- **Logback 1.2.10**: 로깅 프레임워크 (SLF4J와 함께)
|
||||||
- **AWS SDK 2.20.142**: S3 integration
|
- **AWS SDK 2.20.142**: S3 연동
|
||||||
- **Kubernetes Client 18.0.1**: K8s management
|
- **Kubernetes Client 18.0.1**: K8s 관리
|
||||||
|
- **EhCache**: 캐싱, **Lombok**: 코드 생성, **MapStruct**: 객체 매핑
|
||||||
|
|
||||||
## Project Conventions
|
## 프로젝트 규칙
|
||||||
|
|
||||||
### Package Structure
|
### 패키지 구조
|
||||||
|
|
||||||
```
|
```
|
||||||
com.eactive.ems/
|
com.eactive.eai
|
||||||
├── controller/ # Spring MVC controllers
|
├── agent/command - 커맨드 패턴 구현
|
||||||
├── service/ # Business logic
|
├── common - 공통 유틸리티, iBatis, JSON 직렬화
|
||||||
├── dao/ # iBATIS DAOs (legacy)
|
├── custom - 고객사별 커스터마이제이션
|
||||||
├── repository/ # JPA repositories (via elink-portal-common)
|
├── rms - 메인 애플리케이션 코드
|
||||||
├── model/ # DTOs and view models
|
│ ├── bap - 배치 처리 (BAP)
|
||||||
└── config/ # Spring configuration classes
|
│ │ ├── adaptor - 배치 어댑터
|
||||||
|
│ │ ├── manage - 배치 관리 (메시지, 서버, 프로퍼티)
|
||||||
|
│ │ └── tansaction - 배치 트랜잭션 추적
|
||||||
|
│ ├── bat - 추가 배치 기능
|
||||||
|
│ ├── common - RMS 공통 (필터, 시작, 서비스)
|
||||||
|
│ ├── data - 데이터 엔티티, 리포지토리
|
||||||
|
│ ├── env - 환경 설정
|
||||||
|
│ ├── kakao - 카카오 연동
|
||||||
|
│ ├── onl - 온라인 트랜잭션 관리
|
||||||
|
│ │ ├── apim - API 관리 (포털 조직, 사용자, 승인)
|
||||||
|
│ │ ├── manage - 리소스 관리
|
||||||
|
│ │ └── transaction - 트랜잭션 처리
|
||||||
|
│ └── service - 비즈니스 서비스
|
||||||
|
└── ext.kjb - 광주은행(KJB) 확장
|
||||||
```
|
```
|
||||||
|
|
||||||
### Spring Configuration
|
### Spring 설정
|
||||||
|
|
||||||
The application uses:
|
애플리케이션은 다음을 사용합니다:
|
||||||
- **XML-based configuration**: Legacy Spring XML in `WebContent/WEB-INF/`
|
- **Root context**: `WebContent/WEB-INF/applicationContext.xml`
|
||||||
- **Java-based configuration**: Modern `@Configuration` classes
|
- **Servlet context**: `WebContent/WEB-INF/springapp-servlet.xml`
|
||||||
- **Component scanning**: Enabled for annotated components
|
- **환경별 설정**: `${eai.systemmode}` 시스템 프로퍼티 기반 로드
|
||||||
|
- **컴포넌트 스캔**: 애노테이션 기반 설정 활성화
|
||||||
|
|
||||||
### Logging
|
### 데이터 액세스 패턴
|
||||||
|
애플리케이션은 **이중 퍼시스턴스**를 사용합니다:
|
||||||
|
1. **JPA/Hibernate** - `com.eactive.eai.rms.data.entity`의 최신 엔티티 기반 코드용
|
||||||
|
2. **iBatis** - `src/main/resources/com/eactive/eai/**/*.xml`의 레거시 SQL 매핑용
|
||||||
|
|
||||||
- Uses **SLF4J** with **Logback** implementation
|
리포지토리는 Spring Data JPA 규칙을 사용하며, 서비스는 `@Service`, 컨트롤러는 `@RestController`/`@Controller`를 사용합니다.
|
||||||
- Log level controlled via `LOGBACK_LOG_LEVEL` system property
|
|
||||||
- All `log4j` dependencies are excluded (configurations in build.gradle)
|
|
||||||
|
|
||||||
## IDE Setup
|
### 주요 초기화
|
||||||
|
- `AppInitializer` - 시스템 프로퍼티를 설정하는 메인 애플리케이션 시작 빈
|
||||||
|
- `CustomizingAppInitializer` - 고객사별 초기화
|
||||||
|
- 시스템 프로퍼티: `inst.Name`, `eai.tableowner`, `eai.systemmode`, `theme.color`
|
||||||
|
|
||||||
|
### 로깅
|
||||||
|
|
||||||
|
- **SLF4J**와 **Logback** 구현 사용
|
||||||
|
- `LOGBACK_LOG_LEVEL` 시스템 프로퍼티를 통한 로그 레벨 제어
|
||||||
|
- 모든 `log4j` 의존성 제외 (build.gradle에 설정)
|
||||||
|
|
||||||
|
## IDE 설정
|
||||||
|
|
||||||
### Eclipse
|
### Eclipse
|
||||||
|
|
||||||
@@ -226,11 +282,11 @@ The application uses:
|
|||||||
gradle eclipse
|
gradle eclipse
|
||||||
```
|
```
|
||||||
|
|
||||||
This generates:
|
다음을 생성합니다:
|
||||||
- `.project` and `.classpath` files
|
- `.project` 및 `.classpath` 파일
|
||||||
- Eclipse WTP configuration (context path: `/monitoring`)
|
- Eclipse WTP 설정 (context path: `/monitoring`)
|
||||||
- UTF-8 encoding settings
|
- UTF-8 인코딩 설정
|
||||||
- Annotation processor configuration for QueryDSL/Lombok
|
- QueryDSL/Lombok을 위한 애노테이션 프로세서 설정
|
||||||
|
|
||||||
### IntelliJ IDEA
|
### IntelliJ IDEA
|
||||||
|
|
||||||
@@ -238,14 +294,61 @@ This generates:
|
|||||||
gradle idea
|
gradle idea
|
||||||
```
|
```
|
||||||
|
|
||||||
Alternatively, use "Import Gradle Project" directly in IntelliJ.
|
또는 IntelliJ에서 직접 "Import Gradle Project"를 사용합니다.
|
||||||
|
|
||||||
## Testing
|
## 테스트
|
||||||
|
|
||||||
Tests use:
|
테스트에 사용되는 것들:
|
||||||
- **JUnit 5 (Jupiter)**: Test framework
|
- **JUnit 5 (Jupiter)**: 테스트 프레임워크
|
||||||
- **Spring Boot Test 2.6.15**: Integration testing utilities
|
- **Spring Boot Test 2.6.15**: 통합 테스트 유틸리티
|
||||||
- **H2 Database**: In-memory database for tests
|
- **H2 Database**: 테스트용 인메모리 데이터베이스
|
||||||
- **Mockito**: Mocking framework (via Spring Boot Test)
|
- **Mockito**: 모킹 프레임워크 (Spring Boot Test를 통해)
|
||||||
|
|
||||||
Test resources are in `src/test/resources` with H2-compatible configurations.
|
테스트 리소스는 H2 호환 설정과 함께 `src/test/resources`에 있습니다.
|
||||||
|
|
||||||
|
## KJB (광주은행) 전용 설정
|
||||||
|
|
||||||
|
### 프로퍼티 관리
|
||||||
|
KJB 전용 프로퍼티는 데이터베이스 테이블 `TSEAIRM24`에 그룹명 `'Monitoring'`으로 저장됩니다. `com.eactive.ext.kjb.common.KjbProperty`에서 관리하는 주요 프로퍼티:
|
||||||
|
|
||||||
|
**이메일 알림 (EAI Batch를 통해)**
|
||||||
|
- `kjb.eai_batch.url` - 이메일 발송을 위한 EAI 배치 서버 URL
|
||||||
|
- Dev: http://172.31.32.111:10230/BATAppWeb/EaiBatCall
|
||||||
|
- QA: http://172.31.33.111:10430/BATAppWeb/EaiBatCall
|
||||||
|
- Prod: http://172.21.1.40:10860/BATAppWeb/EaiBatCall
|
||||||
|
- `kjb.ums.eai_batch.send_dir` - 이메일 파일 발송 디렉토리 (기본값: `/Data/eapim/portal/sendmail/snd`)
|
||||||
|
- `kjb.ums.eai_batch.backup_dir` - 이메일 백업 디렉토리 (기본값: `/Data/eapim/portal/sendmail/bak`)
|
||||||
|
- `kjb.ums.eai_batch.interface_id` - 고객 이메일용 인터페이스 ID (예: `UAGFF00001UIE`)
|
||||||
|
|
||||||
|
**UMS (SMS/LMS/카카오톡) 연동**
|
||||||
|
- `kjb.ums.host_url` - UMS API 엔드포인트
|
||||||
|
- `kjb.ums.api_key` - UMS API 인증 키
|
||||||
|
- `kjb.ums.connection_timeout` - 연결 타임아웃 (초 단위)
|
||||||
|
- `kjb.ums.response_timeout` - 응답 타임아웃 (초 단위)
|
||||||
|
|
||||||
|
### 보안
|
||||||
|
- 커스텀 패스워드 인코더: SafeDB 연동을 위한 `KjbSafedbPasswordEncoder`
|
||||||
|
- SafeDB 없이 로컬 개발 시 `-Dkjb_safedb.mode=fake` 설정
|
||||||
|
|
||||||
|
## 데이터베이스 벤더 지원
|
||||||
|
|
||||||
|
애플리케이션은 벤더별 SQL 매핑 파일을 통해 여러 데이터베이스를 지원합니다:
|
||||||
|
- Oracle: `*-oracle.xml`
|
||||||
|
- MariaDB: `*-mariadb.xml`
|
||||||
|
- PostgreSQL: `*-postgresql.xml`
|
||||||
|
|
||||||
|
데이터베이스 벤더는 프로퍼티 파일의 `db.vendor`와 `hibernate.dialect`를 통해 설정됩니다.
|
||||||
|
|
||||||
|
## WAR 배포
|
||||||
|
|
||||||
|
WAR 파일은 context path `/monitoring`으로 `eapim-admin.war`로 빌드됩니다.
|
||||||
|
|
||||||
|
**Weblogic 배포**: `weblogic-web.xml` 설정을 포함하려면 `-Pprofile=weblogic`를 사용합니다.
|
||||||
|
|
||||||
|
## 중요 사항
|
||||||
|
|
||||||
|
- **인코딩**: 시스템은 UTF-8을 사용합니다. CharacterEncodingFilter는 `*.excel` 패턴을 제외한 모든 요청에 UTF-8을 적용합니다.
|
||||||
|
- **XSS 보호**: CrossScriptingFilter가 `com.eactive.eai.rms.common.filter.CrossScriptingFilter`를 통해 모든 요청에 적용됩니다.
|
||||||
|
- **실시간 업데이트**: 모든 관리 변경사항은 DB와 메모리 모두에 즉시 반영됩니다.
|
||||||
|
- **인스턴스 이름**: 클러스터링을 위해 각 배포는 고유한 `inst.Name`을 가져야 합니다.
|
||||||
|
- **테이블 소유자**: Oracle 스키마 소유자는 `eai.tableowner` 프로퍼티를 통해 지정됩니다.
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Context>
|
|
||||||
|
|
||||||
<!-- maxTotal: Maximum number of database connections in pool. Make sure you
|
|
||||||
configure your mysqld max_connections large enough to handle
|
|
||||||
all of your db connections. Set to -1 for no limit.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- maxIdle: Maximum number of idle database connections to retain in pool.
|
|
||||||
Set to -1 for no limit. See also the DBCP documentation on this
|
|
||||||
and the minEvictableIdleTimeMillis configuration parameter.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- maxWaitMillis: Maximum time to wait for a database connection to become available
|
|
||||||
in ms, in this example 10 seconds. An Exception is thrown if
|
|
||||||
this timeout is exceeded. Set to -1 to wait indefinitely.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- username and password: MySQL username and password for database connections -->
|
|
||||||
|
|
||||||
<!-- driverClassName: Class name for the old mm.mysql JDBC driver is
|
|
||||||
org.gjt.mm.mysql.Driver - we recommend using Connector/J though.
|
|
||||||
Class name for the official MySQL Connector/J driver is com.mysql.jdbc.Driver.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- url: The JDBC connection url for connecting to your MySQL database.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<Resource name="jdbc/dsOBP_AGW" auth="Container" type="javax.sql.DataSource"
|
|
||||||
maxTotal="10" maxIdle="10" maxWaitMillis="10000"
|
|
||||||
username="AGWAPP" password="AGWAPP123!" driverClassName="oracle.jdbc.OracleDriver"
|
|
||||||
url="jdbc:oracle:thin:@192.168.240.177:1599:DAPM"/>
|
|
||||||
<Resource name="jdbc/dsOBP_BAP" auth="Container" type="javax.sql.DataSource"
|
|
||||||
maxTotal="10" maxIdle="10" maxWaitMillis="10000"
|
|
||||||
username="BAPAPP" password="BAPAPP123!" driverClassName="oracle.jdbc.OracleDriver"
|
|
||||||
url="jdbc:oracle:thin:@192.168.240.177:1599:DAPM"/>
|
|
||||||
<Resource name="jdbc/dsOBP_EMS" auth="Container" type="javax.sql.DataSource"
|
|
||||||
maxTotal="10" maxIdle="10" maxWaitMillis="10000"
|
|
||||||
username="EMSAPP" password="EMSAPP123!" driverClassName="oracle.jdbc.OracleDriver"
|
|
||||||
url="jdbc:oracle:thin:@192.168.240.177:1599:DAPM"/>
|
|
||||||
</Context>
|
|
||||||
@@ -2,14 +2,11 @@
|
|||||||
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
|
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
|
||||||
<jta-data-source>jdbc/dsOBP_EMS</jta-data-source>
|
<jta-data-source>jdbc/dsOBP_EMS</jta-data-source>
|
||||||
<properties>
|
<properties>
|
||||||
<property name="hibernate.dialect"
|
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle12cDialect" />
|
||||||
value="org.hibernate.dialect.Oracle12cDialect" />
|
<property name="javax.persistence.validation.mode" value="NONE" />
|
||||||
<property name="javax.persistence.validation.mode"
|
<property name="eclipselink.weaving.validation" value="false" />
|
||||||
value="NONE" />
|
|
||||||
<property name="eclipselink.weaving.validation" value="false" />
|
|
||||||
</properties>
|
</properties>
|
||||||
<class>com.eactive.eai.rms.data.entity.onl.bzwkdstcd.UserBusiness
|
<class>com.eactive.eai.rms.data.entity.onl.bzwkdstcd.UserBusiness</class>
|
||||||
</class>
|
|
||||||
<class>com.eactive.eai.data.entity.onl.unifbwk.UnifBwkTp</class>
|
<class>com.eactive.eai.data.entity.onl.unifbwk.UnifBwkTp</class>
|
||||||
<exclude-unlisted-classes>false</exclude-unlisted-classes>
|
<exclude-unlisted-classes>false</exclude-unlisted-classes>
|
||||||
</persistence-unit>
|
</persistence-unit>
|
||||||
@@ -17,14 +14,11 @@
|
|||||||
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
|
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
|
||||||
<jta-data-source>jdbc/dsOBP_EMS</jta-data-source>
|
<jta-data-source>jdbc/dsOBP_EMS</jta-data-source>
|
||||||
<properties>
|
<properties>
|
||||||
<property name="hibernate.dialect"
|
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle12cDialect" />
|
||||||
value="org.hibernate.dialect.Oracle12cDialect" />
|
<property name="javax.persistence.validation.mode" value="NONE" />
|
||||||
<property name="javax.persistence.validation.mode"
|
<property name="eclipselink.weaving.validation" value="false" />
|
||||||
value="NONE" />
|
|
||||||
<property name="eclipselink.weaving.validation" value="false" />
|
|
||||||
</properties>
|
</properties>
|
||||||
<class>com.eactive.eai.rms.data.entity.onl.bzwkdstcd.UserBusiness
|
<class>com.eactive.eai.rms.data.entity.onl.bzwkdstcd.UserBusiness</class>
|
||||||
</class>
|
|
||||||
<class>com.eactive.eai.data.entity.onl.unifbwk.UnifBwkTp</class>
|
<class>com.eactive.eai.data.entity.onl.unifbwk.UnifBwkTp</class>
|
||||||
<exclude-unlisted-classes>false</exclude-unlisted-classes>
|
<exclude-unlisted-classes>false</exclude-unlisted-classes>
|
||||||
</persistence-unit>
|
</persistence-unit>
|
||||||
@@ -41,9 +41,7 @@
|
|||||||
</context:component-scan>
|
</context:component-scan>
|
||||||
|
|
||||||
<!-- elink-common 적용 후 추가 -->
|
<!-- elink-common 적용 후 추가 -->
|
||||||
<context:component-scan
|
<context:component-scan base-package="com.eactive.eai.adapter.loader" />
|
||||||
base-package="com.eactive.eai.adapter.loader">
|
|
||||||
</context:component-scan>
|
|
||||||
<context:component-scan base-package="com.eactive.eai.common.b2badaptermapping.loader"/>
|
<context:component-scan base-package="com.eactive.eai.common.b2badaptermapping.loader"/>
|
||||||
<context:component-scan base-package="com.eactive.eai.common.b2bextractor.loader"/>
|
<context:component-scan base-package="com.eactive.eai.common.b2bextractor.loader"/>
|
||||||
<context:component-scan base-package="com.eactive.eai.common.b2bservice.loader"/>
|
<context:component-scan base-package="com.eactive.eai.common.b2bservice.loader"/>
|
||||||
@@ -66,15 +64,10 @@
|
|||||||
<context:component-scan base-package="com.eactive.eai.common.sysdomain.loader"/>
|
<context:component-scan base-package="com.eactive.eai.common.sysdomain.loader"/>
|
||||||
<context:component-scan base-package="com.eactive.eai.common.unifbwk.loader"/>
|
<context:component-scan base-package="com.eactive.eai.common.unifbwk.loader"/>
|
||||||
<context:component-scan base-package="com.eactive.eai.common.usedate.loader"/>
|
<context:component-scan base-package="com.eactive.eai.common.usedate.loader"/>
|
||||||
<context:component-scan
|
<context:component-scan base-package="com.eactive.eai.flowcontrol.jms.loader" />
|
||||||
base-package="com.eactive.eai.flowcontrol.jms.loader">
|
<context:component-scan base-package="com.eactive.eai.inbound.error.loader" />
|
||||||
</context:component-scan>
|
<context:component-scan base-package="com.eactive.apim.portal" />
|
||||||
<context:component-scan
|
|
||||||
base-package="com.eactive.eai.inbound.error.loader">
|
|
||||||
</context:component-scan>
|
|
||||||
<context:component-scan
|
|
||||||
base-package="com.eactive.apim.portal">
|
|
||||||
</context:component-scan>
|
|
||||||
|
|
||||||
<bean id="cacheManager"
|
<bean id="cacheManager"
|
||||||
class="org.springframework.cache.ehcache.EhCacheCacheManager">
|
class="org.springframework.cache.ehcache.EhCacheCacheManager">
|
||||||
@@ -92,10 +85,9 @@
|
|||||||
<!-- schema 를 설정 하지 않으면 RoutingDataSource에 의해 각 설정에 맞는 DB에 접근 한다. -->
|
<!-- schema 를 설정 하지 않으면 RoutingDataSource에 의해 각 설정에 맞는 DB에 접근 한다. -->
|
||||||
<prop key="hibernate.hbm2ddl.auto">none</prop>
|
<prop key="hibernate.hbm2ddl.auto">none</prop>
|
||||||
<prop key="hibernate.format_sql">true</prop>
|
<prop key="hibernate.format_sql">true</prop>
|
||||||
<prop key="hibernate.show_sql">true</prop>
|
<prop key="hibernate.show_sql">false</prop> <!-- true 할경우 STDOUT 출력이 강제됨 -->
|
||||||
<prop key="hibernate.type">trace</prop>
|
<prop key="hibernate.type">trace</prop>
|
||||||
<prop key="hibernate.dialect">${hibernate.dialect:org.hibernate.dialect.Oracle12cDialect}
|
<prop key="hibernate.dialect">${hibernate.dialect:org.hibernate.dialect.Oracle12cDialect}</prop>
|
||||||
</prop>
|
|
||||||
<prop key="hibernate.jdbc.batch_size">100</prop>
|
<prop key="hibernate.jdbc.batch_size">100</prop>
|
||||||
<prop key="hibernate.jdbc.fetch_size">100</prop>
|
<prop key="hibernate.jdbc.fetch_size">100</prop>
|
||||||
|
|
||||||
|
|||||||
@@ -52,8 +52,10 @@
|
|||||||
</bean>
|
</bean>
|
||||||
<!-- <bean id="passwordEncoder"-->
|
<!-- <bean id="passwordEncoder"-->
|
||||||
<!-- class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" />-->
|
<!-- class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" />-->
|
||||||
<bean id="passwordEncoder"
|
<bean id="passwordEncoder" class="org.springframework.security.crypto.password.StandardPasswordEncoder" />
|
||||||
class="org.springframework.security.crypto.password.StandardPasswordEncoder" />
|
|
||||||
|
<!-- 광주은행 전용 PasswordEncoder -->
|
||||||
|
<bean id="kjbSafedbPasswordEncoder" class="com.eactive.ext.kjb.spring.KjbSafedbPasswordEncoder" />
|
||||||
|
|
||||||
<import resource="applicationContext-datasource-${eai.datasource.type}.xml"/>
|
<import resource="applicationContext-datasource-${eai.datasource.type}.xml"/>
|
||||||
<import resource="applicationContext-jdbc-${eai.datasource.type}.xml"/>
|
<import resource="applicationContext-jdbc-${eai.datasource.type}.xml"/>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
UserManController_사용자관리_APIGW_INSERT,UPDATE,DELETE
|
UserManController_사용자관리_APIGW_INSERT,UPDATE,DELETE
|
||||||
AdapterController_어댑터관리_APIGW_INSERT,UPDATE,DELETE
|
AdapterController_어댑터관리_APIGW_INSERT,UPDATE,DELETE
|
||||||
ApiInterfaceController_API관리_APIGW_INSERT,UPDATE,DELETE
|
ApiInterfaceController_API관리_APIGW_INSERT,UPDATE,DELETE,CLONE
|
||||||
ClientController_Client (키정보)관리_APIGW_INSERT,UPDATE,DELETE
|
ClientController_Client (키정보)관리_APIGW_INSERT,UPDATE,DELETE
|
||||||
RoleController_Role (역할)관리_APIGW_INSERT,UPDATE,DELETE
|
RoleController_Role (역할)관리_APIGW_INSERT,UPDATE,DELETE
|
||||||
MenuController_Menu관리_APIGW_INSERT,UPDATE,DELETE
|
MenuController_Menu관리_APIGW_INSERT,UPDATE,DELETE
|
||||||
|
|||||||
@@ -14,5 +14,5 @@ eai.tableowner=EMSADM
|
|||||||
# P/T/D/S
|
# P/T/D/S
|
||||||
eai.systemmode=P
|
eai.systemmode=P
|
||||||
eai.drmode=N
|
eai.drmode=N
|
||||||
# black / blue / green / orange / yellow
|
# black / blue / green / orange / yellow
|
||||||
theme.color=blue
|
theme.color=blue
|
||||||
|
|||||||
@@ -115,7 +115,7 @@
|
|||||||
resource="com/eactive/eai/rms/bap/manage/message/MessageMetaMan-oracle.xml" />
|
resource="com/eactive/eai/rms/bap/manage/message/MessageMetaMan-oracle.xml" />
|
||||||
|
|
||||||
<sqlMap
|
<sqlMap
|
||||||
resource="com/eactive/eai/rms/bap/manage/common/Combo-mariadb.xml" />
|
resource="com/eactive/eai/rms/bap/manage/common/Combo-oracle.xml" />
|
||||||
<sqlMap
|
<sqlMap
|
||||||
resource="com/eactive/eai/rms/bap/manage/work/BizGbnMan.xml" />
|
resource="com/eactive/eai/rms/bap/manage/work/BizGbnMan.xml" />
|
||||||
<sqlMap
|
<sqlMap
|
||||||
|
|||||||
@@ -51,6 +51,11 @@
|
|||||||
<filter-name>encodingFilter</filter-name>
|
<filter-name>encodingFilter</filter-name>
|
||||||
<url-pattern>*.file</url-pattern>
|
<url-pattern>*.file</url-pattern>
|
||||||
</filter-mapping>
|
</filter-mapping>
|
||||||
|
<!-- Tomcat 에서는 필요. Weblogic 에서는 불필요함 -->
|
||||||
|
<filter-mapping>
|
||||||
|
<filter-name>encodingFilter</filter-name>
|
||||||
|
<url-pattern>*.json</url-pattern>
|
||||||
|
</filter-mapping>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
<filter>
|
<filter>
|
||||||
@@ -68,19 +73,6 @@
|
|||||||
org.springframework.web.context.ContextLoaderListener
|
org.springframework.web.context.ContextLoaderListener
|
||||||
</listener-class>
|
</listener-class>
|
||||||
</listener>
|
</listener>
|
||||||
|
|
||||||
<!-- Weblogic 14.1.2 서블릿 설정 -->
|
|
||||||
<!--
|
|
||||||
<servlet>
|
|
||||||
<servlet-name>default</servlet-name>
|
|
||||||
<servlet-class>weblogic.servlet.FileServlet</servlet-class>
|
|
||||||
</servlet>
|
|
||||||
<servlet-mapping>
|
|
||||||
<servlet-name>default</servlet-name>
|
|
||||||
<url-pattern>/static/*</url-pattern>
|
|
||||||
</servlet-mapping>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<servlet>
|
<servlet>
|
||||||
<servlet-name>springapp</servlet-name>
|
<servlet-name>springapp</servlet-name>
|
||||||
<servlet-class>
|
<servlet-class>
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<%@ page language="java" contentType="text/plain; charset=UTF-8" pageEncoding="UTF-8" trimDirectiveWhitespaces="true" %>
|
||||||
|
<%
|
||||||
|
java.util.Enumeration<String> names = request.getHeaderNames();
|
||||||
|
while (names.hasMoreElements()) {
|
||||||
|
String name = names.nextElement();
|
||||||
|
out.println(name + ": " + request.getHeader(name));
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
request.getScheme(): <%=request.getScheme()%>
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
<%@ page language="java" contentType="text/html; charset=utf-8"%>
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||||
|
<%
|
||||||
|
String systemColor = System.getProperty("theme.color");
|
||||||
|
String range = (String)request.getParameter("range");
|
||||||
|
String color = (String)request.getParameter("color");
|
||||||
|
String change = (String)request.getParameter("change");
|
||||||
|
if(color == null || color.length() == 0) color= systemColor;
|
||||||
|
|
||||||
|
if("all".equals(range)) {
|
||||||
|
System.setProperty("theme.color", color);
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<c:set var="themeColor" value="<%= color %>" scope="session" />
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
|
||||||
|
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
|
||||||
|
<META HTTP-EQUIV="Cache-control" CONTENT="no-cache">
|
||||||
|
<title>Change Theme Color</title>
|
||||||
|
<link rel="stylesheet" type="text/css" media="screen" href="<c:url value="/css/web_ui.css"/>"/>
|
||||||
|
<link rel="stylesheet" type="text/css" media="screen" href="<c:url value="/css/theme_${themeColor}.css"/>" />
|
||||||
|
<script language="javascript" src="<c:url value="/js/jquery-1.12.1.min.js"/>"></script>
|
||||||
|
<script language="javascript" src="<c:url value="/js/prefixfree.min.js"/>"></script>
|
||||||
|
<script language="JavaScript">
|
||||||
|
<% if( "change".equals(change) ) { %>
|
||||||
|
// window.opener.location.reload();
|
||||||
|
alert("color changed !");
|
||||||
|
<% } %>
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table width="100%" height="100%" >
|
||||||
|
<tr>
|
||||||
|
<td valign="middle" width="100%">
|
||||||
|
<form name="form" action="<c:url value="/color.jsp"/>" method="get">
|
||||||
|
<table width="200px" align="center" cellspacing="0" border="0" cellpadding="0">
|
||||||
|
<tr>
|
||||||
|
<td>Theme Color</td>
|
||||||
|
<td align="center" valign="middle" height="25px">
|
||||||
|
<select name="color">
|
||||||
|
<option value="black" <%= "black".equals(color)?"selected":"" %> >black</option>
|
||||||
|
<option value="blue" <%= "blue".equals(color)?"selected":"" %> >blue</option>
|
||||||
|
<option value="green" <%= "green".equals(color)?"selected":"" %> >green</option>
|
||||||
|
<option value="orange" <%= "orange".equals(color)?"selected":"" %> >orange</option>
|
||||||
|
<option value="yellow" <%= "yellow".equals(color)?"selected":"" %> >yellow</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Range</td>
|
||||||
|
<td align="center" valign="middle" height="25px">
|
||||||
|
<select name="range">
|
||||||
|
<option value="current" <%= "current".equals(range)?"selected":"" %> >current</option>
|
||||||
|
<option value="all" <%= "all".equals(range)?"selected":"" %> >all</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr><td colspan="2" ><hr width="200"/></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" align="center" height="25px">
|
||||||
|
<input type="submit" name="change" value="change">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</td></tr></table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<div align="center"><a href="#" onClick="history.back()"><img
|
<div align="center"><a href="#" onClick="history.back()"><img
|
||||||
src="/monitoring/common/images/btn6_previous.gif"
|
src="/monitoring/common/image/btn6_previous.gif"
|
||||||
width="79" height="22" border="0"></a></div>
|
width="79" height="22" border="0"></a></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
@@ -75,6 +75,7 @@ $(document).ready(function() {
|
|||||||
{ name : 'status' , align:'center'},
|
{ name : 'status' , align:'center'},
|
||||||
{ name : 'stop' , align:'center'}
|
{ name : 'stop' , align:'center'}
|
||||||
],
|
],
|
||||||
|
autowidth: true,
|
||||||
autoheight: true,
|
autoheight: true,
|
||||||
height: $("#container").height(),
|
height: $("#container").height(),
|
||||||
//height: "500",
|
//height: "500",
|
||||||
@@ -133,7 +134,7 @@ $(document).ready(function() {
|
|||||||
</div><!-- end content_top -->
|
</div><!-- end content_top -->
|
||||||
<div class="content_middle" id="content_middle">
|
<div class="content_middle" id="content_middle">
|
||||||
<div class="search_wrap">
|
<div class="search_wrap">
|
||||||
<img src="<c:url value="/img/btn_excel.png"/>" id="btn_excel" level="R"/>
|
<%-- <img src="<c:url value="/img/btn_excel.png"/>" id="btn_excel" level="R"/> --%>
|
||||||
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
||||||
</div>
|
</div>
|
||||||
<div class="title">연결된 세션정보</div>
|
<div class="title">연결된 세션정보</div>
|
||||||
|
|||||||
@@ -21,7 +21,8 @@ $(document).ready(function() {
|
|||||||
mtype: 'POST',
|
mtype: 'POST',
|
||||||
url: '<c:url value="/bap/adapter/socket/instStatus.json" />',
|
url: '<c:url value="/bap/adapter/socket/instStatus.json" />',
|
||||||
postData : { cmd : 'LIST' },
|
postData : { cmd : 'LIST' },
|
||||||
colNames:['업무구분',
|
colNames:[
|
||||||
|
'업무구분',
|
||||||
'대외기관',
|
'대외기관',
|
||||||
'IP',
|
'IP',
|
||||||
'PORT',
|
'PORT',
|
||||||
@@ -53,7 +54,7 @@ $(document).ready(function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ name : 'serverCheck' , align:'center' ,
|
{ name : 'serverCheck' , align:'center' , hidden: true,
|
||||||
formatter: function (cellValue, options, rowObject) {
|
formatter: function (cellValue, options, rowObject) {
|
||||||
var ip = rowObject.LNKGIPINFONAME;
|
var ip = rowObject.LNKGIPINFONAME;
|
||||||
var port = rowObject.LNKGPORTINFONAME;
|
var port = rowObject.LNKGPORTINFONAME;
|
||||||
@@ -67,8 +68,9 @@ $(document).ready(function() {
|
|||||||
return be;
|
return be;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ name : 'serverConnected', align: 'center' }
|
{ name : 'serverConnected', align: 'center', hidden: true }
|
||||||
],
|
],
|
||||||
|
autowidth: true,
|
||||||
autoheight: true,
|
autoheight: true,
|
||||||
height: $("#container").height(),
|
height: $("#container").height(),
|
||||||
//height: "500",
|
//height: "500",
|
||||||
@@ -151,8 +153,8 @@ function serverCheck(rowId) {
|
|||||||
</div><!-- end content_top -->
|
</div><!-- end content_top -->
|
||||||
<div class="content_middle" id="content_middle">
|
<div class="content_middle" id="content_middle">
|
||||||
<div class="search_wrap">
|
<div class="search_wrap">
|
||||||
<img src="<c:url value="/img/btn_operate.png"/>" id="btn_operate" level="R"/>
|
<%-- <img src="<c:url value="/img/btn_operate.png"/>" id="btn_operate" level="R"/> --%>
|
||||||
<img src="<c:url value="/img/btn_excel.png"/>" id="btn_excel" level="R"/>
|
<%-- <img src="<c:url value="/img/btn_excel.png"/>" id="btn_excel" level="R"/> --%>
|
||||||
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
||||||
</div>
|
</div>
|
||||||
<div class="title">비연결유지형 클라이언트 소켓 상태정보</div>
|
<div class="title">비연결유지형 클라이언트 소켓 상태정보</div>
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ $(document).ready(function() {
|
|||||||
{ name : 'status2' , align:'center', width:70},
|
{ name : 'status2' , align:'center', width:70},
|
||||||
{ name : 'startStop' , align:'center'}
|
{ name : 'startStop' , align:'center'}
|
||||||
],
|
],
|
||||||
|
autowidth: true,
|
||||||
autoheight: true,
|
autoheight: true,
|
||||||
height: $("#container").height(),
|
height: $("#container").height(),
|
||||||
//height: "500",
|
//height: "500",
|
||||||
@@ -166,7 +167,7 @@ $(document).ready(function() {
|
|||||||
</div><!-- end content_top -->
|
</div><!-- end content_top -->
|
||||||
<div class="content_middle" id="content_middle">
|
<div class="content_middle" id="content_middle">
|
||||||
<div class="search_wrap">
|
<div class="search_wrap">
|
||||||
<img src="<c:url value="/img/btn_excel.png"/>" id="btn_excel" level="R"/>
|
<%-- <img src="<c:url value="/img/btn_excel.png"/>" id="btn_excel" level="R"/> --%>
|
||||||
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
||||||
</div>
|
</div>
|
||||||
<div class="title">연결유지형 소켓 상태정보</div>
|
<div class="title">연결유지형 소켓 상태정보</div>
|
||||||
|
|||||||
@@ -25,17 +25,17 @@ var svrType = '';
|
|||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
var url = '<c:url value="/bap/admin/adapter/adapterMan.json" />';
|
var url = '<c:url value="/bap/admin/adapter/adapterMan.json" />';
|
||||||
var url_view = '<c:url value="/bap/admin/adapter/adapterMan.view" />';
|
var url_view = '<c:url value="/bap/admin/adapter/adapterMan.view" />';
|
||||||
var gridPostData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로
|
var gridPostData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로
|
||||||
|
|
||||||
if(devSvr) {
|
/* if(devSvr) {
|
||||||
svrType = "stg";
|
svrType = "stg";
|
||||||
} else if (stgSvr){
|
} else if (stgSvr){
|
||||||
svrType = "prod";
|
svrType = "prod";
|
||||||
} else if (!prdSvr){
|
} else if (!prdSvr){
|
||||||
svrType = "dev";
|
svrType = "dev";
|
||||||
}
|
}*/
|
||||||
|
|
||||||
$('#grid').jqGrid({
|
$('#grid').jqGrid({
|
||||||
datatype:"json",
|
datatype:"json",
|
||||||
@@ -68,8 +68,8 @@ $(document).ready(function() {
|
|||||||
height: $("#container").height(),
|
height: $("#container").height(),
|
||||||
autowidth: true,
|
autowidth: true,
|
||||||
viewrecords: true,
|
viewrecords: true,
|
||||||
multiselect: true,
|
/* multiselect: true,
|
||||||
multiboxonly: false,
|
multiboxonly: false, */
|
||||||
rowList : eval('[${rmsDefaultRowList}]'),
|
rowList : eval('[${rmsDefaultRowList}]'),
|
||||||
gridComplete:function (d){
|
gridComplete:function (d){
|
||||||
var colModel = $(this).getGridParam("colModel");
|
var colModel = $(this).getGridParam("colModel");
|
||||||
@@ -117,197 +117,8 @@ $(document).ready(function() {
|
|||||||
$("#btn_search").click();
|
$("#btn_search").click();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$("#btn_delete").click(function() {
|
|
||||||
|
|
||||||
var id = "grid";
|
|
||||||
var data = new Array();
|
|
||||||
var ids = $("#grid").jqGrid('getDataIDs');
|
|
||||||
var chkcnt = 0;
|
|
||||||
|
|
||||||
for(var i=0;i<ids.length;i++){
|
|
||||||
if($("input:checkbox[id='jqg_"+id+"_"+ids[i]+"']").is(":checked")){
|
|
||||||
data.push($("#grid").getRowData(ids[i]));
|
|
||||||
chkcnt++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(chkcnt == 0){
|
|
||||||
alert("삭제 대상을 선택해 주세요");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( confirm( "삭제하시겠습니까?" ) != true ) return;
|
|
||||||
|
|
||||||
var adptrBzwkGroupNameList = [];
|
|
||||||
for (var i = 0; i <data.length; i++) {
|
|
||||||
adptrBzwkGroupNameList.push(data[i]["ADPTRBZWKGROUPNAME"].trim());
|
|
||||||
}
|
|
||||||
|
|
||||||
var postData = $('#ajaxForm').serializeArray();
|
|
||||||
postData.push({
|
|
||||||
name : "cmd",
|
|
||||||
value : "LIST_DELETE"
|
|
||||||
});
|
|
||||||
postData.push({
|
|
||||||
name : "adptrBzwkGroupNameList",
|
|
||||||
value : adptrBzwkGroupNameList
|
|
||||||
});
|
|
||||||
$.ajax({
|
|
||||||
type : "POST",
|
|
||||||
url : url,
|
|
||||||
data : postData,
|
|
||||||
success : function(args) {
|
|
||||||
alert(data.length+"건의 어댑터가 삭제 되었습니다.");
|
|
||||||
$("#btn_search").click();
|
|
||||||
},
|
|
||||||
error : function(e) {
|
|
||||||
alert(e.responseText);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
$("#btn_download_sql").click(function() {
|
|
||||||
|
|
||||||
var id = "grid";
|
|
||||||
var data = new Array();
|
|
||||||
var ids = $("#grid").jqGrid('getDataIDs');
|
|
||||||
var chkcnt = 0;
|
|
||||||
|
|
||||||
for(var i=0;i<ids.length;i++){
|
|
||||||
if($("input:checkbox[id='jqg_"+id+"_"+ids[i]+"']").is(":checked")){
|
|
||||||
data.push($("#grid").getRowData(ids[i]));
|
|
||||||
chkcnt++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(chkcnt == 0){
|
|
||||||
alert("입력쿼리 다운로드 대상을 선택해 주세요");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( confirm( "입력쿼리를 다운로드하시겠습니까?" ) != true ) return;
|
|
||||||
|
|
||||||
var adptrBzwkGroupNameList = [];
|
|
||||||
for (var i = 0; i <data.length; i++) {
|
|
||||||
adptrBzwkGroupNameList.push(data[i]["ADPTRBZWKGROUPNAME"].trim());
|
|
||||||
}
|
|
||||||
|
|
||||||
var postData = $('#ajaxForm').serializeArray();
|
|
||||||
var sqlFileName = "BAP_ADPTR_INPUT_QUERY.sql";
|
|
||||||
postData.push({
|
|
||||||
name : "cmd",
|
|
||||||
value : "LIST_DOWNLOAD_SQL"
|
|
||||||
});
|
|
||||||
postData.push({
|
|
||||||
name : "adptrBzwkGroupNameList",
|
|
||||||
value : adptrBzwkGroupNameList
|
|
||||||
});
|
|
||||||
postData.push({
|
|
||||||
name : "fileName",
|
|
||||||
value : sqlFileName
|
|
||||||
});
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
type : "POST",
|
|
||||||
url : url,
|
|
||||||
data : postData,
|
|
||||||
success : function(args) {
|
|
||||||
var filePath = args.path;
|
|
||||||
var url2 = url_view + "?cmd=LIST_FILE_DOWNLOAD";
|
|
||||||
url2 = url2 + '&returnUrl='+getReturnUrl();
|
|
||||||
url2 = url2 + '&menuId='+'${param.menuId}';
|
|
||||||
url2 = url2 + '&filePath='+filePath;
|
|
||||||
url2 = url2 + '&fileName='+sqlFileName;
|
|
||||||
|
|
||||||
goNav(url2);
|
|
||||||
|
|
||||||
alert(data.length+"건의 어댑터 입력 SQL문이 다운로드되었습니다.")
|
|
||||||
},
|
|
||||||
error : function(e) {
|
|
||||||
alert(e.responseText);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
$("img[id=btn_clone_"+svrType+"]").click(function() {
|
|
||||||
|
|
||||||
var id = "grid";
|
|
||||||
var data = new Array();
|
|
||||||
var ids = $("#grid").jqGrid('getDataIDs');
|
|
||||||
var chkcnt = 0;
|
|
||||||
|
|
||||||
for(var i=0;i<ids.length;i++){
|
|
||||||
if($("input:checkbox[id='jqg_"+id+"_"+ids[i]+"']").is(":checked")){
|
|
||||||
data.push($("#grid").getRowData(ids[i]));
|
|
||||||
chkcnt++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(chkcnt == 0){
|
|
||||||
alert("복사 대상을 선택해 주세요");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( confirm( "복사하시겠습니까?" ) != true ) return;
|
|
||||||
|
|
||||||
var adptrBzwkGroupNameList = [];
|
|
||||||
for (var i = 0; i <data.length; i++) {
|
|
||||||
adptrBzwkGroupNameList.push(data[i]["ADPTRBZWKGROUPNAME"].trim());
|
|
||||||
}
|
|
||||||
|
|
||||||
var postData = $('#ajaxForm').serializeArray();
|
|
||||||
postData.push({
|
|
||||||
name : "cmd",
|
|
||||||
value : "LIST_DOWNLOAD_SQL"
|
|
||||||
});
|
|
||||||
postData.push({
|
|
||||||
name : "adptrBzwkGroupNameList",
|
|
||||||
value : adptrBzwkGroupNameList
|
|
||||||
});
|
|
||||||
postData.push({
|
|
||||||
name : "svrType",
|
|
||||||
value : svrType
|
|
||||||
});
|
|
||||||
$.ajax({
|
|
||||||
type : "POST",
|
|
||||||
url : url,
|
|
||||||
data : postData,
|
|
||||||
success : function(args) {
|
|
||||||
if (args.result != "" && args.error == "") {
|
|
||||||
alert("어댑터 "+data.length+"건이 정상 복사되었습니다.");
|
|
||||||
} else if (args.error != "") {
|
|
||||||
if ("${fn:contains(args.error,'SqlIntegrityConstraintViolationException')}") {
|
|
||||||
alert("일부 어댑터가 이미 존재하여 정상 복사되지 않었습니다.");
|
|
||||||
} else {
|
|
||||||
alert("오류가 발생하여 정상 반영되지 않았습니다. 오류 : "+args.error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error : function(e) {
|
|
||||||
alert(e.responseText);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
buttonControl();
|
buttonControl();
|
||||||
|
|
||||||
if(devSvr) {
|
|
||||||
setBtnHide(roleString, " ", "btn_clone_dev");
|
|
||||||
setBtnHide(roleString, " ", "btn_clone_prod");
|
|
||||||
setBtnHide(roleString, "admin", "btn_clone_stg");
|
|
||||||
} else if (stgSvr){
|
|
||||||
setBtnHide(roleString, " ", "btn_clone_dev");
|
|
||||||
setBtnHide(roleString, " ", "btn_clone_stg");
|
|
||||||
setBtnHide(roleString, "admin", "btn_clone_prod");
|
|
||||||
} else if (prdSvr){
|
|
||||||
setBtnHide(roleString, " ", "btn_clone_stg");
|
|
||||||
setBtnHide(roleString, " ", "btn_clone_prod");
|
|
||||||
setBtnHide(roleString, " ", "btn_clone_dev");
|
|
||||||
} else {
|
|
||||||
setBtnHide(roleString, " ", "btn_clone_stg");
|
|
||||||
setBtnHide(roleString, " ", "btn_clone_prod");
|
|
||||||
setBtnHide(roleString, "admin", "btn_clone_dev");
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
@@ -325,7 +136,7 @@ $(document).ready(function() {
|
|||||||
<!-- <img src="<c:url value="/img/btn_clone_prod.png"/>" alt="" id="btn_clone_prod" level="W" /> -->
|
<!-- <img src="<c:url value="/img/btn_clone_prod.png"/>" alt="" id="btn_clone_prod" level="W" /> -->
|
||||||
<!-- <img src="<c:url value="/img/btn_clone_dev.png"/>" alt="" id="btn_clone_dev" level="W" /> -->
|
<!-- <img src="<c:url value="/img/btn_clone_dev.png"/>" alt="" id="btn_clone_dev" level="W" /> -->
|
||||||
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" />
|
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" />
|
||||||
<img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" />
|
<%-- <img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" /> --%>
|
||||||
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
||||||
</div>
|
</div>
|
||||||
<div class="title">어댑터 관리<span class="tooltip">일괄전송에서 사용하는 어댑터 목록(Server/Non-permanent Client)</span></div>
|
<div class="title">어댑터 관리<span class="tooltip">일괄전송에서 사용하는 어댑터 목록(Server/Non-permanent Client)</span></div>
|
||||||
|
|||||||
@@ -486,7 +486,7 @@
|
|||||||
/* 231102 김기영 이전기능 관련 숨김 처리 */
|
/* 231102 김기영 이전기능 관련 숨김 처리 */
|
||||||
setBtnHide(roleString, " ", "btn_clone_stg");
|
setBtnHide(roleString, " ", "btn_clone_stg");
|
||||||
setBtnHide(roleString, " ", "btn_clone_prod");
|
setBtnHide(roleString, " ", "btn_clone_prod");
|
||||||
setBtnHide(roleString, " ", "btn_clone_dev");
|
setBtnHide(roleString, " ", "btn_clone_dev");
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@@ -500,9 +500,9 @@
|
|||||||
</div><!-- end content_top -->
|
</div><!-- end content_top -->
|
||||||
<div class="content_middle" id="content_middle">
|
<div class="content_middle" id="content_middle">
|
||||||
<div class="search_wrap">
|
<div class="search_wrap">
|
||||||
<img src="<c:url value="/img/btn_clone.png"/>" alt="" id="btn_clone_stg" level="W" status="DETAIL"/>
|
<%-- <img src="<c:url value="/img/btn_clone.png"/>" alt="" id="btn_clone_stg" level="W" status="DETAIL"/>
|
||||||
<img src="<c:url value="/img/btn_clone_prod.png"/>" alt="" id="btn_clone_prod" level="W" status="DETAIL"/>
|
<img src="<c:url value="/img/btn_clone_prod.png"/>" alt="" id="btn_clone_prod" level="W" status="DETAIL"/>
|
||||||
<img src="<c:url value="/img/btn_clone_dev.png"/>" alt="" id="btn_clone_dev" level="W" status="DETAIL"/>
|
<img src="<c:url value="/img/btn_clone_dev.png"/>" alt="" id="btn_clone_dev" level="W" status="DETAIL"/> --%>
|
||||||
<img src="<c:url value="/img/btn_modify.png"/>" alt="" id="btn_modify" level="W" status="DETAIL,NEW" />
|
<img src="<c:url value="/img/btn_modify.png"/>" alt="" id="btn_modify" level="W" status="DETAIL,NEW" />
|
||||||
<img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" status="DETAIL"/>
|
<img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" status="DETAIL"/>
|
||||||
<img src="<c:url value="/img/btn_previous.png"/>" alt="" id="btn_previous" level="R" status="DETAIL,NEW"/>
|
<img src="<c:url value="/img/btn_previous.png"/>" alt="" id="btn_previous" level="R" status="DETAIL,NEW"/>
|
||||||
@@ -533,6 +533,15 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>어댑터 사용 구분</th>
|
<th>어댑터 사용 구분</th>
|
||||||
|
<td >
|
||||||
|
<div class="select-style">
|
||||||
|
<select name="adptrUseYn" style="width:100%" >
|
||||||
|
<option value="1">사용</option>
|
||||||
|
<option value="0">사용안함</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<!-- <th>어댑터 사용 구분</th>
|
||||||
<td style="width:38%;">
|
<td style="width:38%;">
|
||||||
<div class="select-style">
|
<div class="select-style">
|
||||||
<select name="adptrUseYn" style="width:100%" >
|
<select name="adptrUseYn" style="width:100%" >
|
||||||
@@ -548,7 +557,7 @@
|
|||||||
<option value="1">사용함</option>
|
<option value="1">사용함</option>
|
||||||
<option value="0">사용안함</option>
|
<option value="0">사용안함</option>
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td> -->
|
||||||
</tr>
|
</tr>
|
||||||
<tr id="clone" hidden="hidden">
|
<tr id="clone" hidden="hidden">
|
||||||
<th>복제 어댑터 그룹명</th>
|
<th>복제 어댑터 그룹명</th>
|
||||||
|
|||||||
@@ -129,10 +129,10 @@ $(document).ready(function() {
|
|||||||
</div>
|
</div>
|
||||||
<div class="title">오류메시지 관리<span class="tooltip">표준화된 IF시스템 에러 응답코드를 조회합니다. 메시지 키 및 내용으로 그에 해당하는 오류메시지를 조회할 수 있습니다.</span></div>
|
<div class="title">오류메시지 관리<span class="tooltip">표준화된 IF시스템 에러 응답코드를 조회합니다. 메시지 키 및 내용으로 그에 해당하는 오류메시지를 조회할 수 있습니다.</span></div>
|
||||||
<div class="select-style" style="display : inline-block;">
|
<div class="select-style" style="display : inline-block;">
|
||||||
<select id="svrDst" name="searchSvrDstcd" style="width: 60px ; height: 25px; margin: 0px 0px 4px 0px;">
|
<!-- <select id="svrDst" name="searchSvrDstcd" style="width: 60px ; height: 25px; margin: 0px 0px 4px 0px;">
|
||||||
<option value="BAP"> 일괄</option>
|
<option value="BAP"> 일괄</option>
|
||||||
<!-- <option value="BAT"> 배치</option> -->
|
<option value="BAT"> 배치</option>
|
||||||
</select>
|
</select> -->
|
||||||
</div>
|
</div>
|
||||||
<table class="search_condition" cellspacing=0;>
|
<table class="search_condition" cellspacing=0;>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|||||||
@@ -133,10 +133,10 @@ $(document).ready(function() {
|
|||||||
|
|
||||||
<form id="ajaxForm">
|
<form id="ajaxForm">
|
||||||
<table class="table_row" cellspacing="0">
|
<table class="table_row" cellspacing="0">
|
||||||
<tr>
|
<!-- <tr>
|
||||||
<th style="width:20%;">서버구분</th>
|
<th style="width:20%;">서버구분</th>
|
||||||
<td><input type="text" name="svrName" readonly/></td>
|
<td><input type="text" name="svrName" readonly/></td>
|
||||||
</tr>
|
</tr> -->
|
||||||
<tr>
|
<tr>
|
||||||
<th style="width:20%;">오류메시지 코드 *</th>
|
<th style="width:20%;">오류메시지 코드 *</th>
|
||||||
<td><input type="text" name="msg"/> </td>
|
<td><input type="text" name="msg"/> </td>
|
||||||
|
|||||||
@@ -127,10 +127,10 @@ $(document).ready(function() {
|
|||||||
</div>
|
</div>
|
||||||
<div class="title">라이프사이클 관리<span class="tooltip">시스템 기동 시 로딩 되는 라이프사이클 클래스를 조회합니다.</span></div>
|
<div class="title">라이프사이클 관리<span class="tooltip">시스템 기동 시 로딩 되는 라이프사이클 클래스를 조회합니다.</span></div>
|
||||||
<div class="select-style" style="display : inline-block;">
|
<div class="select-style" style="display : inline-block;">
|
||||||
<select id="svrDst" name="searchSvrDstcd" style="width: 60px ; height: 25px; margin: 0px 0px 4px 0px;">
|
<!-- <select id="svrDst" name="searchSvrDstcd" style="width: 60px ; height: 25px; margin: 0px 0px 4px 0px;">
|
||||||
<option value="BAP"> 일괄</option>
|
<option value="BAP"> 일괄</option>
|
||||||
<!-- <option value="BAT"> 배치</option> -->
|
<option value="BAT"> 배치</option>
|
||||||
</select>
|
</select> -->
|
||||||
</div>
|
</div>
|
||||||
<table id="grid" ></table>
|
<table id="grid" ></table>
|
||||||
<div id="pager"></div>
|
<div id="pager"></div>
|
||||||
|
|||||||
@@ -135,10 +135,10 @@ $(document).ready(function() {
|
|||||||
|
|
||||||
<form id="ajaxForm">
|
<form id="ajaxForm">
|
||||||
<table class="table_row" cellspacing="0">
|
<table class="table_row" cellspacing="0">
|
||||||
<tr>
|
<!-- <tr>
|
||||||
<th style="width:20%;">서버구분</th>
|
<th style="width:20%;">서버구분</th>
|
||||||
<td><input type="text" name="svrName" readonly/></td>
|
<td><input type="text" name="svrName" readonly/></td>
|
||||||
</tr>
|
</tr> -->
|
||||||
<tr>
|
<tr>
|
||||||
<th style="width:20%;">라이프사이클 클래스명 *</th>
|
<th style="width:20%;">라이프사이클 클래스명 *</th>
|
||||||
<td><input type="text" name="lifeCyclClsName"/> </td>
|
<td><input type="text" name="lifeCyclClsName"/> </td>
|
||||||
|
|||||||
@@ -132,10 +132,10 @@ $(document).ready(function() {
|
|||||||
</div>
|
</div>
|
||||||
<div class="title">프로퍼티 관리<span class="tooltip">각 Layer에서 필요한 프라퍼티 Key, Value를 하나의 그룹으로 등록하기 위한 그룹명</span></div>
|
<div class="title">프로퍼티 관리<span class="tooltip">각 Layer에서 필요한 프라퍼티 Key, Value를 하나의 그룹으로 등록하기 위한 그룹명</span></div>
|
||||||
<div class="select-style" style="display : inline-block;">
|
<div class="select-style" style="display : inline-block;">
|
||||||
<select id="svrDst" name="searchSvrDstcd" style="width: 60px ; height: 25px; margin: 0px 0px 4px 0px;">
|
<!-- <select id="svrDst" name="searchSvrDstcd" style="width: 60px ; height: 25px; margin: 0px 0px 4px 0px;">
|
||||||
<option value="BAP"> 일괄</option>
|
<option value="BAP"> 일괄</option>
|
||||||
<!-- <option value="BAT"> 배치</option> -->
|
<option value="BAT"> 배치</option>
|
||||||
</select>
|
</select> -->
|
||||||
</div>
|
</div>
|
||||||
<table class="search_condition" cellspacing=0;>
|
<table class="search_condition" cellspacing=0;>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|||||||
@@ -435,14 +435,14 @@
|
|||||||
|
|
||||||
<form id="ajaxForm">
|
<form id="ajaxForm">
|
||||||
<table class="table_row" cellspacing="0">
|
<table class="table_row" cellspacing="0">
|
||||||
<tr>
|
<!-- <tr>
|
||||||
<th style="width:20%;">서버구분</th>
|
<th style="width:20%;">서버구분</th>
|
||||||
<td><input type="text" name="svrName" readonly/></td>
|
<td><input type="text" name="svrName" readonly/></td>
|
||||||
</tr>
|
</tr> -->
|
||||||
<tr>
|
<tr>
|
||||||
<th style="width:20%;">프라퍼티 그룹명 *</th>
|
<th style="width:20%;">프라퍼티 그룹명 *</th>
|
||||||
<td><input type="text" name="prptyGroupName" style="display:inline-block; width:calc(100% - 60px);"/>
|
<td><input type="text" name="prptyGroupName" style="display:inline-block; width:calc(100% - 60px);"/>
|
||||||
<img id="btn_download_sql" src="<c:url value="/img/icon_download.png"/>" class="btn_img" level="W" status="DETAIL"/>
|
<%-- <img id="btn_download_sql" src="<c:url value="/img/icon_download.png"/>" class="btn_img" level="W" status="DETAIL"/> --%>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -179,7 +179,7 @@ $(document).ready(function() {
|
|||||||
<th style="width:20%;">IF서버인스턴스명</th><td><input type="text" name="eaiSevrInstncName"/> </td>
|
<th style="width:20%;">IF서버인스턴스명</th><td><input type="text" name="eaiSevrInstncName"/> </td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>마스터여부</th><td><div class="select-style"><select name="flovrSevrName"/></div></td>
|
<th>장애극복서버명</th><td><div class="select-style"><select name="flovrSevrName"/></div></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>IF서버IP</th><td><input type="text" name="eaiSevrIp"/> </td>
|
<th>IF서버IP</th><td><input type="text" name="eaiSevrIp"/> </td>
|
||||||
|
|||||||
@@ -95,8 +95,8 @@ function getGridData() {
|
|||||||
height: $("#container").height(),
|
height: $("#container").height(),
|
||||||
autowidth: true,
|
autowidth: true,
|
||||||
viewrecords: true,
|
viewrecords: true,
|
||||||
multiselect: true,
|
/* multiselect: true,
|
||||||
multiboxonly: false,
|
multiboxonly: false, */
|
||||||
rowList : eval('[${rmsDefaultRowList}]'),
|
rowList : eval('[${rmsDefaultRowList}]'),
|
||||||
gridComplete:function (d){
|
gridComplete:function (d){
|
||||||
var colModel = $(this).getGridParam("colModel");
|
var colModel = $(this).getGridParam("colModel");
|
||||||
@@ -136,7 +136,7 @@ function getGridData() {
|
|||||||
var url = '<c:url value="/bap/admin/message/classInfoMan.view"/>';
|
var url = '<c:url value="/bap/admin/message/classInfoMan.view"/>';
|
||||||
url = url + '?cmd=DETAIL';
|
url = url + '?cmd=DETAIL';
|
||||||
url = url + '&page='+$("#grid").getGridParam("page");
|
url = url + '&page='+$("#grid").getGridParam("page");
|
||||||
url = url + '&returnUrl='+getSearchUrlForReturn();
|
url = url + '&returnUrl='+getReturnUrl();
|
||||||
url = url + '&menuId='+'${param.menuId}';
|
url = url + '&menuId='+'${param.menuId}';
|
||||||
//검색값
|
//검색값
|
||||||
url = url + '&'+getSearchUrl();
|
url = url + '&'+getSearchUrl();
|
||||||
@@ -385,7 +385,7 @@ function getGridData() {
|
|||||||
<!-- <img src="<c:url value="/img/btn_clone_prod.png"/>" alt="" id="btn_clone_prod" level="W" /> -->
|
<!-- <img src="<c:url value="/img/btn_clone_prod.png"/>" alt="" id="btn_clone_prod" level="W" /> -->
|
||||||
<!-- <img src="<c:url value="/img/btn_clone_dev.png"/>" alt="" id="btn_clone_dev" level="W" /> -->
|
<!-- <img src="<c:url value="/img/btn_clone_dev.png"/>" alt="" id="btn_clone_dev" level="W" /> -->
|
||||||
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" />
|
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" />
|
||||||
<img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" />
|
<!-- <img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" /> -->
|
||||||
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
||||||
</div>
|
</div>
|
||||||
<div class="title">클래스정보 관리<span class="tooltip">클래스정보를 등록/관리합니다</span></div>
|
<div class="title">클래스정보 관리<span class="tooltip">클래스정보를 등록/관리합니다</span></div>
|
||||||
@@ -395,16 +395,23 @@ function getGridData() {
|
|||||||
<tr>
|
<tr>
|
||||||
<th style="width:150px;">전문클래스명</th>
|
<th style="width:150px;">전문클래스명</th>
|
||||||
<td><input type="text" name="searchTelgmClsName" value="${param.searchTelgmClsName}"></td>
|
<td><input type="text" name="searchTelgmClsName" value="${param.searchTelgmClsName}"></td>
|
||||||
<th style="width:150px;">전문클래스 설명</th>
|
<%-- <th style="width:150px;">전문클래스 설명</th>
|
||||||
<td><input type="text" name="searchTelgmClsDesc" value="${param.searchTelgmClsDesc}"></td>
|
<td><input type="text" name="searchTelgmClsDesc" value="${param.searchTelgmClsDesc}"></td> --%>
|
||||||
<th style="width:150px;">복제 사용여부</th>
|
<!-- <th style="width:150px;">복제 사용여부</th>
|
||||||
<td>
|
<td>
|
||||||
<div class="select-style">
|
<div class="select-style">
|
||||||
<select name="clonYn" id="clonYn" readonly="readonly" onchange="viewChange(this)">
|
<select name="clonYn" id="clonYn" readonly="readonly" onchange="viewChange(this)">
|
||||||
<option value="1">사용함</option>
|
<option value="1">사용함</option>
|
||||||
<option value="0">사용안함</option>
|
<option value="0">사용안함</option>
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td> --><!-- <th style="width:150px;">복제 사용여부</th>
|
||||||
|
<td>
|
||||||
|
<div class="select-style">
|
||||||
|
<select name="clonYn" id="clonYn" readonly="readonly" onchange="viewChange(this)">
|
||||||
|
<option value="1">사용함</option>
|
||||||
|
<option value="0">사용안함</option>
|
||||||
|
</select>
|
||||||
|
</td> -->
|
||||||
</tr>
|
</tr>
|
||||||
<tr id="clone" hidden="hidden">
|
<tr id="clone" hidden="hidden">
|
||||||
<th style="width:150px;">복제 전문클래스명</th>
|
<th style="width:150px;">복제 전문클래스명</th>
|
||||||
|
|||||||
@@ -101,8 +101,8 @@ function getGridData() {
|
|||||||
height: $("#container").height(),
|
height: $("#container").height(),
|
||||||
autowidth: true,
|
autowidth: true,
|
||||||
viewrecords: true,
|
viewrecords: true,
|
||||||
multiselect: true,
|
/* multiselect: true,
|
||||||
multiboxonly: false,
|
multiboxonly: false, */
|
||||||
rowList : eval('[${rmsDefaultRowList}]'),
|
rowList : eval('[${rmsDefaultRowList}]'),
|
||||||
gridComplete:function (d){
|
gridComplete:function (d){
|
||||||
var colModel = $(this).getGridParam("colModel");
|
var colModel = $(this).getGridParam("colModel");
|
||||||
@@ -406,7 +406,7 @@ function getGridData() {
|
|||||||
<!-- <img src="<c:url value="/img/btn_clone_prod.png"/>" alt="" id="btn_clone_prod" level="W" /> -->
|
<!-- <img src="<c:url value="/img/btn_clone_prod.png"/>" alt="" id="btn_clone_prod" level="W" /> -->
|
||||||
<!-- <img src="<c:url value="/img/btn_clone_dev.png"/>" alt="" id="btn_clone_dev" level="W" /> -->
|
<!-- <img src="<c:url value="/img/btn_clone_dev.png"/>" alt="" id="btn_clone_dev" level="W" /> -->
|
||||||
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" />
|
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" />
|
||||||
<img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" />
|
<%-- <img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" /> --%>
|
||||||
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
||||||
</div>
|
</div>
|
||||||
<div class="title">클래스맵핑 관리<span class="tooltip">클래스정보를 등록/관리합니다</span></div>
|
<div class="title">클래스맵핑 관리<span class="tooltip">클래스정보를 등록/관리합니다</span></div>
|
||||||
@@ -418,7 +418,7 @@ function getGridData() {
|
|||||||
<td><input type="text" name="searchTelgmClsID" value="${param.searchTelgmClsID}"></td>
|
<td><input type="text" name="searchTelgmClsID" value="${param.searchTelgmClsID}"></td>
|
||||||
<th style="width:150px;">메시지메타구분코드</th>
|
<th style="width:150px;">메시지메타구분코드</th>
|
||||||
<td><input type="text" name="searchMsgMetaDstcd" value="${param.searchMsgMetaDstcd}"></td>
|
<td><input type="text" name="searchMsgMetaDstcd" value="${param.searchMsgMetaDstcd}"></td>
|
||||||
<th style="width:150px;">전문클래스명</th>
|
<!-- <th style="width:150px;">전문클래스명</th>
|
||||||
<td><input type="text" name="searchTelgmClsName" value="${param.searchTelgmClsName}"></td>
|
<td><input type="text" name="searchTelgmClsName" value="${param.searchTelgmClsName}"></td>
|
||||||
<th style="width:150px;">복제 사용여부</th>
|
<th style="width:150px;">복제 사용여부</th>
|
||||||
<td>
|
<td>
|
||||||
@@ -427,7 +427,7 @@ function getGridData() {
|
|||||||
<option value="1">사용함</option>
|
<option value="1">사용함</option>
|
||||||
<option value="0">사용안함</option>
|
<option value="0">사용안함</option>
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td> -->
|
||||||
</tr>
|
</tr>
|
||||||
<tr id="clone" hidden="hidden">
|
<tr id="clone" hidden="hidden">
|
||||||
<th style="width:150px;">복제 전문클래스ID</th>
|
<th style="width:150px;">복제 전문클래스ID</th>
|
||||||
|
|||||||
@@ -155,7 +155,7 @@
|
|||||||
{ name : 'MOVEUP' , align : 'center', sortable:false, width : '80', unformat : imgUpunformatter, formatter : imgUpformatter},
|
{ name : 'MOVEUP' , align : 'center', sortable:false, width : '80', unformat : imgUpunformatter, formatter : imgUpformatter},
|
||||||
{ name : 'MOVEDOWN' , align : 'center', sortable:false, width : '80', unformat : imgDownunformatter, formatter : imgDownformatter},
|
{ name : 'MOVEDOWN' , align : 'center', sortable:false, width : '80', unformat : imgDownunformatter, formatter : imgDownformatter},
|
||||||
{ name : 'DELETEYN' , align : 'center', sortable:false, width : '80', unformat : unformatterFunction, formatter : formatterFunction},
|
{ name : 'DELETEYN' , align : 'center', sortable:false, width : '80', unformat : unformatterFunction, formatter : formatterFunction},
|
||||||
{ name : 'CLONE' , align : 'center', sortable:false, width : '80', unformat : cloneunformatter, formatter : cloneformatter}
|
{ name : 'CLONE' , align : 'center', sortable:false, width : '80', unformat : cloneunformatter, formatter : cloneformatter, hidden: true}
|
||||||
],
|
],
|
||||||
jsonReader : {
|
jsonReader : {
|
||||||
repeatitems : false
|
repeatitems : false
|
||||||
@@ -676,10 +676,10 @@
|
|||||||
</div><!-- end content_top -->
|
</div><!-- end content_top -->
|
||||||
<div class="content_middle" id="content_middle">
|
<div class="content_middle" id="content_middle">
|
||||||
<div class="search_wrap">
|
<div class="search_wrap">
|
||||||
<img src="<c:url value="/img/btn_clone.png"/>" alt="" id="btn_clone_stg" level="W" status="DETAIL"/>
|
<%-- <img src="<c:url value="/img/btn_clone.png"/>" alt="" id="btn_clone_stg" level="W" status="DETAIL"/>
|
||||||
<img src="<c:url value="/img/btn_clone_prod.png"/>" alt="" id="btn_clone_prod" level="W" status="DETAIL"/>
|
<img src="<c:url value="/img/btn_clone_prod.png"/>" alt="" id="btn_clone_prod" level="W" status="DETAIL"/>
|
||||||
<img src="<c:url value="/img/btn_clone_dev.png"/>" alt="" id="btn_clone_dev" level="W" status="DETAIL"/>
|
<img src="<c:url value="/img/btn_clone_dev.png"/>" alt="" id="btn_clone_dev" level="W" status="DETAIL"/>
|
||||||
<img src="<c:url value="/img/btn_excel.png"/>" alt="" id="btn_excel" level="W" status="DETAIL"/>
|
<img src="<c:url value="/img/btn_excel.png"/>" alt="" id="btn_excel" level="W" status="DETAIL"/> --%>
|
||||||
<img src="<c:url value="/img/btn_modify.png"/>" alt="" id="btn_modify" level="W" status="DETAIL,NEW" />
|
<img src="<c:url value="/img/btn_modify.png"/>" alt="" id="btn_modify" level="W" status="DETAIL,NEW" />
|
||||||
<img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" status="DETAIL"/>
|
<img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" status="DETAIL"/>
|
||||||
<img src="<c:url value="/img/btn_previous.png"/>" alt="" id="btn_previous" level="R" status="DETAIL,NEW"/>
|
<img src="<c:url value="/img/btn_previous.png"/>" alt="" id="btn_previous" level="R" status="DETAIL,NEW"/>
|
||||||
|
|||||||
@@ -116,8 +116,8 @@ function cloneformatter(cellvalue, options, rowObject) {
|
|||||||
{ name : 'BJOBFLOWCMPONAME' , align:'left' ,width:40 },
|
{ name : 'BJOBFLOWCMPONAME' , align:'left' ,width:40 },
|
||||||
{ name : 'TELGMCLSID' , align:'left' ,width:40 },
|
{ name : 'TELGMCLSID' , align:'left' ,width:40 },
|
||||||
{ name : 'UNITTELGMLEN' , align:'left' ,width:40 },
|
{ name : 'UNITTELGMLEN' , align:'left' ,width:40 },
|
||||||
{ name : 'BJOBNODEDESC' , align:'left' ,width:40, hidden : false },
|
{ name : 'BJOBNODEDESC' , align:'left' ,width:40, hidden : true },
|
||||||
{ name : 'CLONE' , align:'center',width:10, unformat:cloneunformatter, formatter:cloneformatter}
|
{ name : 'CLONE' , align:'center',width:10, unformat:cloneunformatter, formatter:cloneformatter, hidden: true }
|
||||||
],
|
],
|
||||||
jsonReader: {
|
jsonReader: {
|
||||||
repeatitems:false
|
repeatitems:false
|
||||||
@@ -129,8 +129,8 @@ function cloneformatter(cellvalue, options, rowObject) {
|
|||||||
height: $("#container").height(),
|
height: $("#container").height(),
|
||||||
autowidth: true,
|
autowidth: true,
|
||||||
viewrecords: true,
|
viewrecords: true,
|
||||||
multiselect: true,
|
/* multiselect: true,
|
||||||
multiboxonly: false,
|
multiboxonly: false, */
|
||||||
rowList : eval('[${rmsDefaultRowList}]'),
|
rowList : eval('[${rmsDefaultRowList}]'),
|
||||||
loadComplete : function(rowId) {
|
loadComplete : function(rowId) {
|
||||||
$("img[name^=img_clone]").click(function() {
|
$("img[name^=img_clone]").click(function() {
|
||||||
@@ -478,7 +478,7 @@ function cloneformatter(cellvalue, options, rowObject) {
|
|||||||
<!-- <img src="<c:url value="/img/btn_clone_prod.png"/>" alt="" id="btn_clone_prod" level="W" /> -->
|
<!-- <img src="<c:url value="/img/btn_clone_prod.png"/>" alt="" id="btn_clone_prod" level="W" /> -->
|
||||||
<!-- <img src="<c:url value="/img/btn_clone_dev.png"/>" alt="" id="btn_clone_dev" level="W" /> -->
|
<!-- <img src="<c:url value="/img/btn_clone_dev.png"/>" alt="" id="btn_clone_dev" level="W" /> -->
|
||||||
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" />
|
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" />
|
||||||
<img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" />
|
<%-- <img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" /> --%>
|
||||||
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
||||||
</div>
|
</div>
|
||||||
<div class="title">흐름단계 리스트<span class="tooltip">흐름단계 리스트를 관리합니다</span></div>
|
<div class="title">흐름단계 리스트<span class="tooltip">흐름단계 리스트를 관리합니다</span></div>
|
||||||
@@ -490,9 +490,9 @@ function cloneformatter(cellvalue, options, rowObject) {
|
|||||||
<td style="width:200px;"><input type="text" name="searchBjobBzwkPrcssDstcd" value="${param.searchBjobBzwkPrcssDstcd}"></td>
|
<td style="width:200px;"><input type="text" name="searchBjobBzwkPrcssDstcd" value="${param.searchBjobBzwkPrcssDstcd}"></td>
|
||||||
<th style="width:120px;">단계구분코드</th>
|
<th style="width:120px;">단계구분코드</th>
|
||||||
<td style="width:200px;"><input type="text" name="searchBjobStgeDstcd" value="${param.searchBjobStgeDstcd}"></td>
|
<td style="width:200px;"><input type="text" name="searchBjobStgeDstcd" value="${param.searchBjobStgeDstcd}"></td>
|
||||||
<%-- <th style="width:120px;">흐름콤포넌트명</th>
|
<th style="width:120px;">흐름콤포넌트명</th>
|
||||||
<td style="width:200px;"><input type="text" name="searchBjobFlowCmpoName" value="${param.searchBjobFlowCmpoName}"></td> --%>
|
<td style="width:200px;"><input type="text" name="searchBjobFlowCmpoName" value="${param.searchBjobFlowCmpoName}"></td>
|
||||||
<th style="width:120px;">전문클래스ID</th>
|
<%-- <th style="width:120px;">전문클래스ID</th>
|
||||||
<td style="width:200px;"><input type="text" name="searchTelgmClsID" value="${param.searchTelgmClsID}"></td>
|
<td style="width:200px;"><input type="text" name="searchTelgmClsID" value="${param.searchTelgmClsID}"></td>
|
||||||
<th style="width:120px;">복제 사용여부</th>
|
<th style="width:120px;">복제 사용여부</th>
|
||||||
<td style="width:200px;">
|
<td style="width:200px;">
|
||||||
@@ -501,7 +501,7 @@ function cloneformatter(cellvalue, options, rowObject) {
|
|||||||
<option value="1">사용함</option>
|
<option value="1">사용함</option>
|
||||||
<option value="0">사용안함</option>
|
<option value="0">사용안함</option>
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td> --%>
|
||||||
</tr>
|
</tr>
|
||||||
<tr id="clone" hidden="hidden">
|
<tr id="clone" hidden="hidden">
|
||||||
<th style="width:120px;">복제 업무처리구분코드</th>
|
<th style="width:120px;">복제 업무처리구분코드</th>
|
||||||
|
|||||||
@@ -57,13 +57,13 @@
|
|||||||
{ name : 'MSGCLMNVAL' , align:'center' , width:40 },
|
{ name : 'MSGCLMNVAL' , align:'center' , width:40 },
|
||||||
{ name : 'THISMSGCLMNUSEYN' , align:'center' , width:40 ,
|
{ name : 'THISMSGCLMNUSEYN' , align:'center' , width:40 ,
|
||||||
formatter: function (cellvalue) {
|
formatter: function (cellvalue) {
|
||||||
if ( !cellvalue ) {
|
if ( cellvalue == '0' ) {
|
||||||
return '<span style="color:red">사용안함</span>';
|
return '<span style="color:red">사용안함</span>';
|
||||||
} else if ( cellvalue ) {
|
} else if ( cellvalue == '1' ) {
|
||||||
return '사용함';
|
return '사용';
|
||||||
} else {
|
} else {
|
||||||
return cellvalue;
|
return cellvalue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -77,8 +77,8 @@
|
|||||||
height: $("#container").height(),
|
height: $("#container").height(),
|
||||||
autowidth: true,
|
autowidth: true,
|
||||||
viewrecords: true,
|
viewrecords: true,
|
||||||
multiselect: true,
|
/* multiselect: true,
|
||||||
multiboxonly: false,
|
multiboxonly: false, */
|
||||||
rowList : eval('[${rmsDefaultRowList}]'),
|
rowList : eval('[${rmsDefaultRowList}]'),
|
||||||
gridComplete:function (d){
|
gridComplete:function (d){
|
||||||
var colModel = $(this).getGridParam("colModel");
|
var colModel = $(this).getGridParam("colModel");
|
||||||
@@ -396,7 +396,7 @@
|
|||||||
<!-- <img src="<c:url value="/img/btn_clone_prod.png"/>" alt="" id="btn_clone_prod" level="W" /> -->
|
<!-- <img src="<c:url value="/img/btn_clone_prod.png"/>" alt="" id="btn_clone_prod" level="W" /> -->
|
||||||
<!-- <img src="<c:url value="/img/btn_clone_dev.png"/>" alt="" id="btn_clone_dev" level="W" /> -->
|
<!-- <img src="<c:url value="/img/btn_clone_dev.png"/>" alt="" id="btn_clone_dev" level="W" /> -->
|
||||||
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" />
|
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" />
|
||||||
<img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" />
|
<%-- <img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" /> --%>
|
||||||
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -406,12 +406,12 @@
|
|||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<th style="width:150px;">메시지항목 구분명</th>
|
<th style="width:150px;">메시지항목 구분명</th>
|
||||||
<td style="width:20%;"><input type="text" name="searchMsgItemDsticName" value="${param.searchMsgItemDsticName}"></td>
|
<td><input type="text" name="searchMsgItemDsticName" value="${param.searchMsgItemDsticName}"></td>
|
||||||
<th>메시지 컬럼명</th>
|
<th style="width:150px;">메시지 컬럼명</th>
|
||||||
<td><input type="text" name="searchMsgClmnName" value="${param.searchMsgClmnName}"></td>
|
<td><input type="text" name="searchMsgClmnName" value="${param.searchMsgClmnName}"></td>
|
||||||
<th>복제 메시지항목 구분명</th>
|
<%-- <th>복제 메시지항목 구분명</th>
|
||||||
<td><input type="text" name="cloneMsgItemDsticName" style="display:inline-block; width:calc(100% - 70px);">
|
<td><input type="text" name="cloneMsgItemDsticName" style="display:inline-block; width:calc(100% - 70px);">
|
||||||
<img id="btn_clone" src="<c:url value="/img/btn_clone1.png" />" level="W" status="LIST" class="btn_img"/></td>
|
<img id="btn_clone" src="<c:url value="/img/btn_clone1.png" />" level="W" status="LIST" class="btn_img"/></td> --%>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -109,8 +109,8 @@ function getGridData() {
|
|||||||
height: $("#container").height(),
|
height: $("#container").height(),
|
||||||
autowidth: true,
|
autowidth: true,
|
||||||
viewrecords: true,
|
viewrecords: true,
|
||||||
multiselect: true,
|
/* multiselect: true,
|
||||||
multiboxonly: false,
|
multiboxonly: false, */
|
||||||
rowList : eval('[${rmsDefaultRowList}]'),
|
rowList : eval('[${rmsDefaultRowList}]'),
|
||||||
gridComplete:function (d){
|
gridComplete:function (d){
|
||||||
var colModel = $(this).getGridParam("colModel");
|
var colModel = $(this).getGridParam("colModel");
|
||||||
@@ -402,7 +402,7 @@ function getGridData() {
|
|||||||
<!-- <img src="<c:url value="/img/btn_clone_prod.png"/>" alt="" id="btn_clone_prod" level="W" /> -->
|
<!-- <img src="<c:url value="/img/btn_clone_prod.png"/>" alt="" id="btn_clone_prod" level="W" /> -->
|
||||||
<!-- <img src="<c:url value="/img/btn_clone_dev.png"/>" alt="" id="btn_clone_dev" level="W" /> -->
|
<!-- <img src="<c:url value="/img/btn_clone_dev.png"/>" alt="" id="btn_clone_dev" level="W" /> -->
|
||||||
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" />
|
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" />
|
||||||
<img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" />
|
<%-- <img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" /> --%>
|
||||||
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
||||||
</div>
|
</div>
|
||||||
<div class="title">메시지메타 관리<span class="tooltip">메시지메타 정보를 등록 관리합니다</span></div>
|
<div class="title">메시지메타 관리<span class="tooltip">메시지메타 정보를 등록 관리합니다</span></div>
|
||||||
@@ -415,14 +415,14 @@ function getGridData() {
|
|||||||
<td><input type="text" name="searchMsgMetaDstcd" value="${param.searchMsgMetaDstcd}"></td>
|
<td><input type="text" name="searchMsgMetaDstcd" value="${param.searchMsgMetaDstcd}"></td>
|
||||||
<th style="width:150px;">메시지 설명</th>
|
<th style="width:150px;">메시지 설명</th>
|
||||||
<td><input type="text" name="searchMsgDesc" value="${param.searchMsgDesc}"></td>
|
<td><input type="text" name="searchMsgDesc" value="${param.searchMsgDesc}"></td>
|
||||||
<th style="width:120px;">복제 사용여부</th>
|
<!-- <th style="width:120px;">복제 사용여부</th>
|
||||||
<td style="width:120px;">
|
<td style="width:120px;">
|
||||||
<div class="select-style">
|
<div class="select-style">
|
||||||
<select name="clonYn" id="clonYn" readonly="readonly" onchange="viewChange(this)">
|
<select name="clonYn" id="clonYn" readonly="readonly" onchange="viewChange(this)">
|
||||||
<option value="1">사용함</option>
|
<option value="1">사용함</option>
|
||||||
<option value="0">사용안함</option>
|
<option value="0">사용안함</option>
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td> -->
|
||||||
</tr>
|
</tr>
|
||||||
<tr id="clone" hidden="hidden">
|
<tr id="clone" hidden="hidden">
|
||||||
<th style="width:150px;">복제 메시지메타 구분코드</th>
|
<th style="width:150px;">복제 메시지메타 구분코드</th>
|
||||||
|
|||||||
@@ -71,9 +71,9 @@ function getGridData() {
|
|||||||
colModel:[
|
colModel:[
|
||||||
{ name : 'MSGITEMDSTICNAME' , align:'left' ,width:40 ,sortable:false },
|
{ name : 'MSGITEMDSTICNAME' , align:'left' ,width:40 ,sortable:false },
|
||||||
{ name : 'MSGCLMNNAME' , align:'center' ,width:40 },
|
{ name : 'MSGCLMNNAME' , align:'center' ,width:40 },
|
||||||
{ name : 'MSGCLMNATTRIPTRNCD' , align:'center' ,width:30 },
|
{ name : 'MSGCLMNATTRIPTRNCD' , align:'center' ,width:40 },
|
||||||
{ name : 'MSGCLMNVAL' , align:'center' ,width:30 },
|
{ name : 'MSGCLMNVAL' , align:'center' ,width:40 },
|
||||||
{ name : 'THISMSGCLMNUSEYN' , align:'center' ,width:30 ,
|
{ name : 'THISMSGCLMNUSEYN' , align:'center' ,width:40 ,
|
||||||
formatter: function (cellvalue) {
|
formatter: function (cellvalue) {
|
||||||
if ( !cellvalue ) {
|
if ( !cellvalue ) {
|
||||||
return '<span style="color:red">사용안함</span>';
|
return '<span style="color:red">사용안함</span>';
|
||||||
@@ -84,9 +84,9 @@ function getGridData() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ name : 'MSGITEMCLONENAME', align:'left', sortable:false, width:40, unformat:unformatterFunction, formatter:gridCloneName},
|
{ name : 'MSGITEMCLONENAME', align:'left', sortable:false, width:40, unformat:unformatterFunction, formatter:gridCloneName, hidden:true },
|
||||||
{ name : 'MSGITEMCLONE' , align:'center', sortable:false, width:20, unformat:unformatterFunction, formatter:gridCloneFunction},
|
{ name : 'MSGITEMCLONE' , align:'center', sortable:false, width:20, unformat:unformatterFunction, formatter:gridCloneFunction, hidden:true },
|
||||||
{ name : 'DELETEYN' , align:'center', sortable:false, width:20, unformat:unformatterFunction, formatter:formatterFunction}
|
{ name : 'DELETEYN' , align:'center', sortable:false, width:20, unformat:unformatterFunction, formatter:formatterFunction, hidden:true }
|
||||||
],
|
],
|
||||||
jsonReader: {
|
jsonReader: {
|
||||||
repeatitems:false
|
repeatitems:false
|
||||||
@@ -98,8 +98,8 @@ function getGridData() {
|
|||||||
height: $("#container").height(),
|
height: $("#container").height(),
|
||||||
autowidth: true,
|
autowidth: true,
|
||||||
viewrecords: true,
|
viewrecords: true,
|
||||||
multiselect: true,
|
/* multiselect: true,
|
||||||
multiboxonly: false,
|
multiboxonly: false, */
|
||||||
rowList : eval('[${rmsDefaultRowList}]'),
|
rowList : eval('[${rmsDefaultRowList}]'),
|
||||||
gridComplete:function (d){
|
gridComplete:function (d){
|
||||||
var colModel = $(this).getGridParam("colModel");
|
var colModel = $(this).getGridParam("colModel");
|
||||||
@@ -224,8 +224,8 @@ function getGridData() {
|
|||||||
<body>
|
<body>
|
||||||
<div class="popup_box">
|
<div class="popup_box">
|
||||||
<div class="search_wrap">
|
<div class="search_wrap">
|
||||||
<img src="<c:url value="/img/btn_input.png"/>" alt="" id="btn_input" level="R" />
|
<%-- <img src="<c:url value="/img/btn_input.png"/>" alt="" id="btn_input" level="R" />
|
||||||
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" />
|
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" /> --%>
|
||||||
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
||||||
<img src="<c:url value="/img/btn_close.png"/>" alt="" id="btn_close" level="R" />
|
<img src="<c:url value="/img/btn_close.png"/>" alt="" id="btn_close" level="R" />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -13,261 +13,127 @@
|
|||||||
<jsp:include page="/jsp/common/include/css.jsp"/>
|
<jsp:include page="/jsp/common/include/css.jsp"/>
|
||||||
<jsp:include page="/jsp/common/include/script.jsp"/>
|
<jsp:include page="/jsp/common/include/script.jsp"/>
|
||||||
<script language="javascript" >
|
<script language="javascript" >
|
||||||
var url_excel = '<c:url value="/common/noauth/excel/listGridToExcel.json" />';
|
function list(url){
|
||||||
|
var gridPostData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로
|
||||||
function fileupload(e,successcallback,errorcallback) {
|
|
||||||
var formObj = $(this);
|
|
||||||
var formURL = formObj.attr("action");
|
|
||||||
if(window.FormData !== undefined) // for HTML5 browsers
|
|
||||||
{
|
|
||||||
var formData = new FormData(this);
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
url: formURL,
|
|
||||||
type: 'POST',
|
|
||||||
data: formData,
|
|
||||||
encType: "multipart/form-data",
|
|
||||||
contentType: false,
|
|
||||||
cache: false,
|
|
||||||
processData: false,
|
|
||||||
success: function(json, textStatus, jqXHR) {
|
|
||||||
$("input[name=file]").val("");
|
|
||||||
if(textStatus == 'success') {
|
|
||||||
alert('정상처리 되었습니다.');
|
|
||||||
$("#btn_search").click();
|
|
||||||
} else {
|
|
||||||
alert('업로드중 에러가 발생하였습니다.');
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error: function(jqXHR, textStatus, errorThrown) {
|
|
||||||
$("input[name=file]").val("");
|
|
||||||
if (typeof callback === 'function') {
|
|
||||||
errorcallback(jqXHR, textStatus, errorThrown);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
e.preventDefault();
|
|
||||||
if (e.unbind) e.unbind();
|
|
||||||
} else { //for olden browsers
|
|
||||||
formObj.append($("<input type='hidden' name='serviceType' value='" + sessionStorage["serviceType"] + "' />"));
|
|
||||||
//generate a random id
|
|
||||||
var iframeId = 'unique' + (new Date().getTime());
|
|
||||||
//create an empty iframe
|
|
||||||
var iframe = $('<iframe src="javascript:false;" id="' + iframeId + '" name="' + iframeId + '" />');
|
|
||||||
|
|
||||||
//hide it
|
|
||||||
iframe.hide();
|
|
||||||
|
|
||||||
//set form target to iframe
|
|
||||||
formObj.attr('target', iframeId);
|
|
||||||
formObj.attr('action', '<c:url value="/loader.file" />');
|
|
||||||
|
|
||||||
//Add iframe to body
|
|
||||||
iframe.appendTo('body');
|
|
||||||
iframe.load(function(e) {
|
|
||||||
var doc = getDoc(iframe[0]);
|
|
||||||
var docRoot = doc.body ? doc.body : doc.documentElement;
|
|
||||||
var data = docRoot.innerHTML;
|
|
||||||
var k = JSON.parse(data);
|
|
||||||
$("#grid")[0].addJSONData(k);
|
|
||||||
$("input[name=file]").val("");
|
|
||||||
//data is returned from server.
|
|
||||||
if (typeof callback === 'function') {
|
|
||||||
//successcallback(data);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function list(url) {
|
|
||||||
var gridPostData = getSearchForJqgrid("cmd", "LIST"); //jqgrid에서는 object 로
|
|
||||||
$('#grid').jqGrid({
|
$('#grid').jqGrid({
|
||||||
datatype: "json",
|
datatype:"json",
|
||||||
mtype: 'POST',
|
mtype: 'POST',
|
||||||
url: '<c:url value="/bap/admin/work/bizGbnMan.json" />',
|
url: '<c:url value="/bap/admin/work/bizGbnMan.json" />',
|
||||||
postData: gridPostData,
|
postData : gridPostData,
|
||||||
colNames: [ '배치 대외 기관',
|
colNames:['업무구분코드',
|
||||||
'배치 대외 기관명',
|
'업무구분명',
|
||||||
'사용여부'
|
'사용여부'
|
||||||
],
|
],
|
||||||
colModel: [
|
colModel:[
|
||||||
{ name : 'BJOBBZWKDSTCD' , align:'center' ,sortable:false },
|
{ name : 'BJOBBZWKDSTCD' , align:'left' ,sortable:false },
|
||||||
{ name : 'BJOBBZWKNAME' , align:'left' },
|
{ name : 'BJOBBZWKNAME' , align:'left' },
|
||||||
{ name : 'THISMSGUSEYN' , align:'center', width:50 ,
|
{ name : 'THISMSGUSEYN' , align:'center', width:50 ,
|
||||||
formatter: function (cellvalue) {
|
formatter: function (cellvalue) {
|
||||||
if ( cellvalue == '1' ) {
|
if ( cellvalue == '1' ) {
|
||||||
return '사용';
|
return '사용';
|
||||||
} else {
|
} else {
|
||||||
return '<span style="color:red">사용안함</span>';
|
return '<span style="color:red">사용안함</span>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
jsonReader: {
|
jsonReader: {
|
||||||
repeatitems:false
|
repeatitems:false
|
||||||
},
|
},
|
||||||
pager: $('#pager'),
|
pager : $('#pager'),
|
||||||
page: '${param.page}',
|
page : '${param.page}',
|
||||||
rowNum: '${rmsDefaultRowNum}',
|
rowNum : '${rmsDefaultRowNum}',
|
||||||
autoheight: true,
|
autoheight: true,
|
||||||
height: $("#container").height(),
|
height: $("#container").height(),
|
||||||
autowidth: true,
|
autowidth: true,
|
||||||
viewrecords: true,
|
viewrecords: true,
|
||||||
multiselect: true,
|
rowList : eval('[${rmsDefaultRowList}]'),
|
||||||
rowList: eval('[${rmsDefaultRowList}]'),
|
gridComplete:function (d){
|
||||||
gridComplete:function (d) {
|
|
||||||
var colModel = $(this).getGridParam("colModel");
|
var colModel = $(this).getGridParam("colModel");
|
||||||
for(var i = 0 ; i< colModel.length; i++) {
|
for(var i = 0 ; i< colModel.length; i++){
|
||||||
$(this).setColProp(colModel[i].name, {sortable : false}); //그리드 헤더 화살표 삭제(정렬X)
|
$(this).setColProp(colModel[i].name, {sortable : false}); //그리드 헤더 화살표 삭제(정렬X)
|
||||||
}
|
}
|
||||||
},
|
|
||||||
|
},
|
||||||
ondblClickRow: function(rowId) {
|
ondblClickRow: function(rowId) {
|
||||||
var rowData = $(this).getRowData(rowId);
|
var rowData = $(this).getRowData(rowId);
|
||||||
var bjobBzwkDstcd = rowData['BJOBBZWKDSTCD'].trim();
|
var bjobBzwkDstcd = rowData['BJOBBZWKDSTCD'].trim();
|
||||||
var url = '<c:url value="/bap/admin/work/bizGbnMan.view" />';
|
var url = '<c:url value="/bap/admin/work/bizGbnMan.view" />';
|
||||||
url += '?cmd=DETAIL';
|
url = url + '?cmd=DETAIL';
|
||||||
url += '&page=' + $(this).getGridParam("page");
|
url = url + '&page='+$(this).getGridParam("page");
|
||||||
url += '&returnUrl=' + getReturnUrl();
|
url = url + '&returnUrl='+getReturnUrl();
|
||||||
url += '&menuId=' + '${param.menuId}';
|
url = url + '&menuId='+'${param.menuId}';
|
||||||
url += '&bjobBzwkDstcd=' + bjobBzwkDstcd;
|
url = url + '&bjobBzwkDstcd='+bjobBzwkDstcd;
|
||||||
//검색값
|
//검색값
|
||||||
url += '&' + getSearchUrl();
|
url = url + '&'+getSearchUrl();
|
||||||
goNav(url);
|
goNav(url);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
resizeJqGridWidth('grid', 'title', '1000');
|
resizeJqGridWidth('grid','title','1000');
|
||||||
var url ='<c:url value="/bap/admin/work/bizGbnMan.json" />';
|
var url ='<c:url value="/bap/admin/work/bizGbnMan.json" />';
|
||||||
list(url);
|
list(url);
|
||||||
|
|
||||||
$("#btn_search").click(function() {
|
$("#btn_search").click(function(){
|
||||||
var postData = getSearchForJqgrid("cmd", "LIST"); //jqgrid에서는 object 로
|
var postData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로
|
||||||
$("#grid").setGridParam({url:url, postData: postData, page:"1" }).trigger("reloadGrid");
|
$("#grid").setGridParam({url:url, postData: postData, page:"1" }).trigger("reloadGrid");
|
||||||
});
|
});
|
||||||
|
$("#btn_new").click(function(){
|
||||||
$("#btn_new").click(function() {
|
|
||||||
var url = '<c:url value="/bap/admin/work/bizGbnMan.view"/>';
|
var url = '<c:url value="/bap/admin/work/bizGbnMan.view"/>';
|
||||||
url += '?cmd=DETAIL';
|
url = url + '?cmd=DETAIL';
|
||||||
url += '&page=' + $("#grid").getGridParam("page");
|
url = url + '&page='+$("#grid").getGridParam("page");
|
||||||
url += '&returnUrl=' + getReturnUrl();
|
url = url + '&returnUrl='+getReturnUrl();
|
||||||
url += '&menuId=' + '${param.menuId}';
|
url = url + '&menuId='+'${param.menuId}';
|
||||||
//검색값
|
//검색값
|
||||||
url += '&' + getSearchUrl();
|
url = url + '&'+getSearchUrl();
|
||||||
|
|
||||||
goNav(url);
|
goNav(url);
|
||||||
});
|
});
|
||||||
|
|
||||||
$("input[name^=search]").keydown(function(key) {
|
$("input[name^=search]").keydown(function(key){
|
||||||
if (key.keyCode == 13) {
|
if (key.keyCode == 13){
|
||||||
$("#btn_search").click();
|
$("#btn_search").click();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#btn_excel").click(function(event) {
|
|
||||||
event.stopPropagation(); // Do not propagate the event.
|
|
||||||
// Create an object that will manage to download the file.
|
|
||||||
var merge = new Array();
|
|
||||||
gridToExcelSubmit(url_excel, "LIST_GRID_TO_EXCEL", $("#grid"), $("#ajaxForm"), "배치 대외 기관 관리", merge);
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#btn_download").click(function() {
|
|
||||||
let selectedVal = "";
|
|
||||||
const rowIds = $("#grid").getGridParam("selarrrow");
|
|
||||||
|
|
||||||
rowIds.forEach(rowId => {
|
|
||||||
selectedVal += "," + $("#grid").getRowData(rowId).BJOBBZWKDSTCD;
|
|
||||||
});
|
|
||||||
|
|
||||||
if(selectedVal != "") selectedVal = selectedVal.substring(1);
|
|
||||||
|
|
||||||
var url ='<c:url value="/loader.do" />';
|
|
||||||
url += '?cmd=bizGbnMan';
|
|
||||||
url += '&control=download';
|
|
||||||
url += '&serviceType=' + sessionStorage["serviceType"];
|
|
||||||
url += '&fileName=bizGbnMan';
|
|
||||||
url += '&selectedVal=' + selectedVal;
|
|
||||||
url += '&' + getSearchUrl();
|
|
||||||
|
|
||||||
goNav(url);
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#multiform").on('submit', fileupload);
|
|
||||||
$('#btn_upload').click(function() {
|
|
||||||
if( confirm( "동일한 이름의 경우 기존내용을 수정합니다.\n\n업로드 하시겠습니까?" ) != true ) return;
|
|
||||||
|
|
||||||
if(window.FormData !== undefined) {
|
|
||||||
$("input[name=file]").click();
|
|
||||||
} else {
|
|
||||||
if($("input[name=file]").val() == "") return;
|
|
||||||
$("#multiform").submit();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if(window.FormData !== undefined) {
|
|
||||||
$("input[name=file]").change(function(ev) {
|
|
||||||
var filename = $(this).val().split('\\').pop();
|
|
||||||
|
|
||||||
if (!filename.startsWith('bizGbnMan')) {
|
|
||||||
alert("배치대외기관 JSON 파일을 선택하십시오.\n\n[파일명 : bizGbnMan.json]")
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(filename == "") return;
|
|
||||||
else $("#multiform").submit();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if(window.FormData !== undefined) {
|
|
||||||
$("input[name=file]").hide();
|
|
||||||
} else {
|
|
||||||
$("input[name=file]").show();
|
|
||||||
}
|
|
||||||
|
|
||||||
buttonControl();
|
buttonControl();
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="right_box">
|
<div class="right_box">
|
||||||
<div class="content_top">
|
<div class="content_top">
|
||||||
<ul class="path">
|
<ul class="path">
|
||||||
<li><a href="#">${rmsMenuPath}</a></li>
|
<li><a href="#">${rmsMenuPath}</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div><!-- end content_top -->
|
</div><!-- end content_top -->
|
||||||
<div class="content_middle" id="title">
|
<div class="content_middle" id="title">
|
||||||
<form id="multiform" method="POST" enctype="multipart/form-data" action="<c:url value="/loader.file"/>">
|
<div class="search_wrap">
|
||||||
<div class="search_wrap">
|
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" />
|
||||||
<input type="file" id="file" name="file" style="display:inline-block"/>
|
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
||||||
<input type="hidden" name="cmd" value="bizGbnMan"/>
|
</div>
|
||||||
<input type="hidden" name="control" value="upload"/>
|
<div class="title">업무구분 관리<span class="tooltip">일괄 전송 파일을 송수신 업무 구분 코드를 관리 하는 화면입니다</span></div>
|
||||||
<img src="<c:url value="/img/btn_excel.png"/>" id="btn_excel" level="R" />
|
|
||||||
<img src="<c:url value="/img/btn_upload.png"/>" alt="" id="btn_upload" level="W" />
|
<table class="search_condition" cellspacing=0;>
|
||||||
<img src="<c:url value="/img/btn_download.png"/>" alt="" id="btn_download" level="R" />
|
<tbody>
|
||||||
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" />
|
<tr>
|
||||||
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
<th style="width:180px;">업무구분코드</th>
|
||||||
</div>
|
<td><input type="text" name="searchbjobBzwkDstcd" value="${param.searchbjobBzwkDstcd}"></td>
|
||||||
</form>
|
<th style="width:180px;">업무구분명</th>
|
||||||
<div class="title">배치 대외 기관 관리<span class="tooltip">배치 대외 기관 코드를 관리 하는 화면입니다</span></div>
|
<td><input type="text" name="searchbjobBzwkName" value="${param.searchBjobBzwkName}"></td>
|
||||||
|
</tr>
|
||||||
<table class="search_condition" cellspacing=0;>
|
</tbody>
|
||||||
<tbody>
|
</table>
|
||||||
<tr>
|
<table id="grid" ></table>
|
||||||
<th style="width:180px;">배치 대외 기관</th>
|
<div id="pager"></div>
|
||||||
<td><input type="text" name="searchbjobBzwkDstcd" value="${param.searchbjobBzwkDstcd}"></td>
|
|
||||||
<th style="width:180px;">배치 대외 기관명</th>
|
|
||||||
<td><input type="text" name="searchbjobBzwkName" value="${param.searchbjobBzwkName}"></td>
|
</div><!-- end content_middle -->
|
||||||
</tr>
|
</div><!-- end right_box -->
|
||||||
</tbody>
|
</body>
|
||||||
</table>
|
</html>
|
||||||
<table id="grid"></table>
|
|
||||||
<div id="pager"></div>
|
|
||||||
</div><!-- end content_middle -->
|
|
||||||
</div><!-- end right_box -->
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
@@ -324,24 +324,24 @@ $(document).ready(function() {
|
|||||||
<img src="<c:url value="/img/btn_modify.png"/>" alt="" id="btn_modify" level="W" status="DETAIL,NEW" />
|
<img src="<c:url value="/img/btn_modify.png"/>" alt="" id="btn_modify" level="W" status="DETAIL,NEW" />
|
||||||
<img src="<c:url value="/img/btn_previous.png"/>" alt="" id="btn_previous" level="R" status="DETAIL,NEW"/>
|
<img src="<c:url value="/img/btn_previous.png"/>" alt="" id="btn_previous" level="R" status="DETAIL,NEW"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="title">배치 대외 기관 코드</div>
|
<div class="title">업무구분코드</div>
|
||||||
|
|
||||||
<form id="ajaxForm">
|
<form id="ajaxForm">
|
||||||
<table id="tb_clone" class="table_row" cellspacing="0">
|
<%-- <table id="tb_clone" class="table_row" cellspacing="0">
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="4">
|
<td colspan="4">
|
||||||
<input type="text" name="newBjobBzwkDstcd" style="width:200px;">
|
<input type="text" name="newBjobBzwkDstcd" style="width:200px;">
|
||||||
<img id="btn_clone" src="<c:url value="/img/btn_clone.png" />" class="btn_img"/>
|
<img id="btn_clone" src="<c:url value="/img/btn_clone.png" />" class="btn_img"/>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table> --%>
|
||||||
<table class="table_row" cellspacing="0">
|
<table class="table_row" cellspacing="0">
|
||||||
<!-- 공통-->
|
<!-- 공통-->
|
||||||
<tr>
|
<tr>
|
||||||
<th style="width:180px;">배치 대외 기관 코드</th><td><input type="text" name="bjobBzwkDstcd" /></td>
|
<th style="width:180px;">업무구분코드</th><td><input type="text" name="bjobBzwkDstcd" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>배치 대외 기관명</th><td><input type="text" name="bjobBzwkName" /></td>
|
<th>업무구분명</th><td><input type="text" name="bjobBzwkName" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>당메시지 사용여부 *</th>
|
<th>당메시지 사용여부 *</th>
|
||||||
|
|||||||
@@ -9,342 +9,215 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title></title>
|
<title></title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<jsp:include page="/jsp/common/include/css.jsp"/>
|
<jsp:include page="/jsp/common/include/css.jsp" />
|
||||||
<jsp:include page="/jsp/common/include/script.jsp"/>
|
<jsp:include page="/jsp/common/include/script.jsp" />
|
||||||
<script language="javascript" >
|
<script language="javascript">
|
||||||
var selectName = "searchBjobBzwkDstcd";
|
function list(url) {
|
||||||
var url_excel = '<c:url value="/common/noauth/excel/listGridToExcel.json" />';
|
var gridPostData = getSearchForJqgrid("cmd", "LIST"); //jqgrid에서는 object 로
|
||||||
var url ='<c:url value="/bap/admin/work/messageProcMan.json" />';
|
$("#grid").jqGrid({
|
||||||
|
datatype: "json",
|
||||||
|
mtype: "POST",
|
||||||
|
url: '<c:url value="/bap/admin/work/messageProcMan.json" />',
|
||||||
|
postData: gridPostData,
|
||||||
|
colNames: [
|
||||||
|
"메시지구분코드",
|
||||||
|
"업무구분명",
|
||||||
|
"송수신파일명",
|
||||||
|
"송수신파일설명",
|
||||||
|
"업무코드(Lv2)",
|
||||||
|
"담당자",
|
||||||
|
"레코드 길이",
|
||||||
|
"송신여부",
|
||||||
|
"수신여부",
|
||||||
|
"사용여부",
|
||||||
|
],
|
||||||
|
colModel: [
|
||||||
|
{ name: "BJOBMSGDSTCD", hidden: true },
|
||||||
|
{ name: "BJOBBZWKNAME", align: "left" },
|
||||||
|
{ name: "BJOBTRANDSTCDNAME", align: "left" },
|
||||||
|
{ name: "BJOBMSGDSTICNAME", align: "left" },
|
||||||
|
{ name: "UAPPLCD", align: "center", hidden: true },
|
||||||
|
{ name: "THISMSGCHRGIDS", align: "left" },
|
||||||
|
{ name: "BJOBTELGMRECSIZE", align: "center" },
|
||||||
|
{
|
||||||
|
name: "EAIFILESENDUSEYN",
|
||||||
|
align: "center",
|
||||||
|
formatter: function (cellvalue) {
|
||||||
|
if (cellvalue == "1") {
|
||||||
|
return "사용";
|
||||||
|
} else {
|
||||||
|
return '<span style="color:red">사용안함</span>';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "EAIFILERECVUSEYN",
|
||||||
|
align: "center",
|
||||||
|
formatter: function (cellvalue) {
|
||||||
|
if (cellvalue == "1") {
|
||||||
|
return "사용";
|
||||||
|
} else {
|
||||||
|
return '<span style="color:red">사용안함</span>';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "THISMSGUSEYN",
|
||||||
|
align: "center",
|
||||||
|
formatter: function (cellvalue) {
|
||||||
|
if (cellvalue == "1") {
|
||||||
|
return "사용";
|
||||||
|
} else {
|
||||||
|
return '<span style="color:red">사용안함</span>';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
jsonReader: {
|
||||||
|
repeatitems: false,
|
||||||
|
},
|
||||||
|
pager: $("#pager"),
|
||||||
|
page: "${param.page}",
|
||||||
|
rowNum: "${rmsDefaultRowNum}",
|
||||||
|
autoheight: true,
|
||||||
|
height: $("#container").height(),
|
||||||
|
autowidth: true,
|
||||||
|
viewrecords: true,
|
||||||
|
rowList: eval("[${rmsDefaultRowList}]"),
|
||||||
|
gridComplete: function (d) {
|
||||||
|
var colModel = $(this).getGridParam("colModel");
|
||||||
|
for (var i = 0; i < colModel.length; i++) {
|
||||||
|
$(this).setColProp(colModel[i].name, { sortable: false }); //그리드 헤더 화살표 삭제(정렬X)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ondblClickRow: function (rowId) {
|
||||||
|
var rowData = $(this).getRowData(rowId);
|
||||||
|
var bjobMsgDstcd = rowData["BJOBMSGDSTCD"].trim();
|
||||||
|
var url = '<c:url value="/bap/admin/work/messageProcMan.view" />';
|
||||||
|
url = url + "?cmd=DETAIL";
|
||||||
|
url = url + "&page=" + $(this).getGridParam("page");
|
||||||
|
url = url + "&menuId=" + "${param.menuId}";
|
||||||
|
url = url + "&returnUrl=" + getReturnUrl();
|
||||||
|
url = url + "&bjobMsgDstcd=" + bjobMsgDstcd;
|
||||||
|
url = url + "&" + getSearchUrl();
|
||||||
|
//검색값
|
||||||
|
goNav(url);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function fileupload(e,successcallback,errorcallback) {
|
$(document).ready(function () {
|
||||||
var formObj = $(this);
|
resizeJqGridWidth("grid", "title", "1000");
|
||||||
var formURL = formObj.attr("action");
|
var url = '<c:url value="/bap/admin/work/messageProcMan.json" />';
|
||||||
if(window.FormData !== undefined) // for HTML5 browsers
|
list(url);
|
||||||
{
|
|
||||||
var formData = new FormData(this);
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
url: formURL,
|
|
||||||
type: 'POST',
|
|
||||||
data: formData,
|
|
||||||
encType: "multipart/form-data",
|
|
||||||
contentType: false,
|
|
||||||
cache: false,
|
|
||||||
processData: false,
|
|
||||||
success: function(json, textStatus, jqXHR) {
|
|
||||||
$("input[name=file]").val("");
|
|
||||||
if(textStatus == 'success') {
|
|
||||||
alert('정상처리 되었습니다.');
|
|
||||||
$("#btn_search").click();
|
|
||||||
} else {
|
|
||||||
alert('업로드중 에러가 발생하였습니다.');
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error: function(jqXHR, textStatus, errorThrown) {
|
|
||||||
$("input[name=file]").val("");
|
|
||||||
if (typeof callback === 'function') {
|
|
||||||
errorcallback(jqXHR, textStatus, errorThrown);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
e.preventDefault();
|
|
||||||
if (e.unbind) e.unbind();
|
|
||||||
} else { //for olden browsers
|
|
||||||
formObj.append($("<input type='hidden' name='serviceType' value='" + sessionStorage["serviceType"] + "' />"));
|
|
||||||
//generate a random id
|
|
||||||
var iframeId = 'unique' + (new Date().getTime());
|
|
||||||
//create an empty iframe
|
|
||||||
var iframe = $('<iframe src="javascript:false;" id="' + iframeId + '" name="' + iframeId + '" />');
|
|
||||||
|
|
||||||
//hide it
|
$("#btn_search").click(function () {
|
||||||
iframe.hide();
|
var postData = getSearchForJqgrid("cmd", "LIST"); //jqgrid에서는 object 로
|
||||||
|
$("#grid")
|
||||||
|
.setGridParam({ url: url, postData: postData, page: "1" })
|
||||||
|
.trigger("reloadGrid");
|
||||||
|
});
|
||||||
|
$("#btn_new").click(function () {
|
||||||
|
var url = '<c:url value="/bap/admin/work/messageProcMan.view"/>';
|
||||||
|
url = url + "?cmd=DETAIL";
|
||||||
|
url = url + "&page=" + $("#grid").getGridParam("page");
|
||||||
|
url = url + "&returnUrl=" + getReturnUrl();
|
||||||
|
url = url + "&menuId=" + "${param.menuId}";
|
||||||
|
//검색값
|
||||||
|
url = url + "&" + getSearchUrl();
|
||||||
|
|
||||||
//set form target to iframe
|
goNav(url);
|
||||||
formObj.attr('target', iframeId);
|
});
|
||||||
formObj.attr('action', '<c:url value="/loader.file" />');
|
|
||||||
|
|
||||||
//Add iframe to body
|
$("input[name^=search]").keydown(function (key) {
|
||||||
iframe.appendTo('body');
|
if (key.keyCode == 13) {
|
||||||
iframe.load(function(e) {
|
$("#btn_search").click();
|
||||||
var doc = getDoc(iframe[0]);
|
}
|
||||||
var docRoot = doc.body ? doc.body : doc.documentElement;
|
});
|
||||||
var data = docRoot.innerHTML;
|
$("input[name^=like]").keydown(function (key) {
|
||||||
var k = JSON.parse(data);
|
if (key.keyCode == 13) {
|
||||||
$("#grid")[0].addJSONData(k);
|
$("#btn_search").click();
|
||||||
$("input[name=file]").val("");
|
}
|
||||||
//data is returned from server.
|
});
|
||||||
if (typeof callback === 'function') {
|
|
||||||
//successcallback(data);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function list() {
|
buttonControl();
|
||||||
var gridPostData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로
|
});
|
||||||
$('#grid').jqGrid({
|
</script>
|
||||||
datatype: "json",
|
</head>
|
||||||
mtype: 'POST',
|
<body>
|
||||||
url: url,
|
<div class="right_box">
|
||||||
postData: gridPostData,
|
<div class="content_top">
|
||||||
colNames: [ '인터페이스ID',
|
<ul class="path">
|
||||||
'인터페이스설명',
|
<li><a href="#">${rmsMenuPath}</a></li>
|
||||||
'수신업무/기관',
|
</ul>
|
||||||
'송신업무/기관',
|
</div>
|
||||||
'송수신파일명',
|
<!-- end content_top -->
|
||||||
'세부기관코드',
|
<div class="content_middle">
|
||||||
'레코드 길이',
|
<div class="search_wrap">
|
||||||
'송/수신여부',
|
<img src="<c:url value="/img/btn_new.png" />" alt="" id="btn_new"
|
||||||
/* '수신여부', */
|
level="W" /> <img src="<c:url value="/img/btn_search.png" />" alt=""
|
||||||
'사용여부'
|
id="btn_search" level="R" />
|
||||||
],
|
</div>
|
||||||
colModel: [
|
<div class="title">
|
||||||
{ name: 'BJOBMSGDSTCD' , align: 'center' },
|
송수신 파일 관리<span class="tooltip"
|
||||||
{ name: 'BJOBMSGDSTICNAME' , align: 'left' },
|
>일괄 전송에서 사용하는 송수신 파일을 관리 하는 화면입니다</span
|
||||||
{ name: 'BJOBBZWKDSTCD' , align: 'center' },
|
>
|
||||||
{ name: 'UAPPLCD' , align: 'center' },
|
</div>
|
||||||
{ name: 'BJOBTRANDSTCDNAME' , align: 'left' },
|
|
||||||
{ name: 'BJOBINSTIDSTCD' , align: 'center' },
|
|
||||||
{ name: 'BJOBTELGMRECSIZE' , align: 'center' },
|
|
||||||
{ name: 'EAIFILESENDUSEYN' , align: 'center' ,
|
|
||||||
formatter: function (cellvalue) {
|
|
||||||
if ( cellvalue == '1' ) {
|
|
||||||
return '송신';
|
|
||||||
} else {
|
|
||||||
return '수신';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ name: 'THISMSGUSEYN' , align: 'center' ,
|
|
||||||
formatter: function (cellvalue) {
|
|
||||||
if ( cellvalue == '1' ) {
|
|
||||||
return '사용';
|
|
||||||
} else {
|
|
||||||
return '<span style="color:red">사용안함</span>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
jsonReader: {
|
|
||||||
repeatitems:false
|
|
||||||
},
|
|
||||||
pager: $('#pager'),
|
|
||||||
page: '${param.page}',
|
|
||||||
rowNum: '${rmsDefaultRowNum}',
|
|
||||||
autoheight: true,
|
|
||||||
height: $("#container").height(),
|
|
||||||
autowidth: true,
|
|
||||||
viewrecords: true,
|
|
||||||
multiselect: true,
|
|
||||||
rowList: eval('[${rmsDefaultRowList}]'),
|
|
||||||
gridComplete: function (d) {
|
|
||||||
var colModel = $(this).getGridParam("colModel");
|
|
||||||
for(var i = 0 ; i< colModel.length; i++) {
|
|
||||||
$(this).setColProp(colModel[i].name, {sortable: false}); //그리드 헤더 화살표 삭제(정렬X)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
ondblClickRow: function(rowId) {
|
|
||||||
var rowData = $(this).getRowData(rowId);
|
|
||||||
var bjobMsgDstcd = rowData['BJOBMSGDSTCD'].trim();
|
|
||||||
var url = '<c:url value="/bap/admin/work/messageProcMan.view" />';
|
|
||||||
url += '?cmd=DETAIL';
|
|
||||||
url += '&page=' + $(this).getGridParam("page");
|
|
||||||
url += '&menuId=' + '${param.menuId}';
|
|
||||||
url += '&returnUrl=' + getReturnUrl();
|
|
||||||
url += '&bjobMsgDstcd=' + bjobMsgDstcd;
|
|
||||||
url += '&' + getSearchUrl();
|
|
||||||
//검색값
|
|
||||||
goNav(url);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function init() {
|
<table class="search_condition" cellspacing="0;">
|
||||||
$.ajax({
|
<tbody>
|
||||||
type: "POST",
|
<tr>
|
||||||
url: url,
|
<th style="width: 180px">업무구분명</th>
|
||||||
dataType: "json",
|
<td>
|
||||||
data: { cmd: 'LIST_INIT_COMBO' },
|
<input
|
||||||
success: function(json) {
|
type="text"
|
||||||
new makeOptions("CODE","NAME").setObj($("select[name=searchBjobBzwkDstcd]")).setNoValueInclude(true).setNoValue('', '전체').setData(json.bjobBzwkDstcd).rendering(); // 업무구분코드
|
name="likeBjobBzwkName"
|
||||||
list();
|
value="${param.likeBjobBzwkName}"
|
||||||
},
|
/>
|
||||||
error: function(e) {
|
</td>
|
||||||
alert(e.responseText);
|
<th style="width: 180px">송수신파일명</th>
|
||||||
}
|
<td>
|
||||||
});
|
<input
|
||||||
setSearchable(selectName); // 콤보에 searchable 설정
|
type="text"
|
||||||
}
|
name="likeBjobTranDstcdName"
|
||||||
|
value="${param.likeBjobTranDstcdName}"
|
||||||
|
/>
|
||||||
|
</td>
|
||||||
|
<th style="width: 180px">송수신파일설명</th>
|
||||||
|
<td>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
name="likeBjobMsgDsticName"
|
||||||
|
value="${param.likeBjobMsgDsticName}"
|
||||||
|
/>
|
||||||
|
</td>
|
||||||
|
<th style="width: 180px" hidden="hidden">어플리케이션코드</th>
|
||||||
|
<td hidden="hidden">
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
name="likeUapplCd"
|
||||||
|
value="${param.likeUapplCd}"
|
||||||
|
/>
|
||||||
|
</td>
|
||||||
|
<th style="width: 180px" hidden="hidden">담당자ID</th>
|
||||||
|
<td hidden="hidden">
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
name="likeThisMsgChrgIDs"
|
||||||
|
value="${param.likeThisMsgChrgIDs}"
|
||||||
|
/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
$(document).ready(function() {
|
<table id="grid"></table>
|
||||||
|
<div id="pager"></div>
|
||||||
resizeJqGridWidth('grid', 'title', '1000');
|
</div>
|
||||||
init();
|
<!-- end content_middle -->
|
||||||
|
</div>
|
||||||
$("#btn_search").click(function() {
|
<!-- end right_box -->
|
||||||
var postData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로
|
</body>
|
||||||
$("#grid").setGridParam({url:url, postData: postData,page:"1" }).trigger("reloadGrid");
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#btn_new").click(function() {
|
|
||||||
var url = '<c:url value="/bap/admin/work/messageProcMan.view"/>';
|
|
||||||
url += '?cmd=DETAIL';
|
|
||||||
url += '&page=' + $("#grid").getGridParam("page");
|
|
||||||
url += '&returnUrl=' + getReturnUrl();
|
|
||||||
url += '&menuId=' + '${param.menuId}';
|
|
||||||
//검색값
|
|
||||||
url += '&'+getSearchUrl();
|
|
||||||
|
|
||||||
goNav(url);
|
|
||||||
});
|
|
||||||
|
|
||||||
$("input[name^=search]").keydown(function(key) {
|
|
||||||
if (key.keyCode == 13) {
|
|
||||||
$("#btn_search").click();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$("input[name^=like]").keydown(function(key) {
|
|
||||||
if (key.keyCode == 13) {
|
|
||||||
$("#btn_search").click();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#btn_excel").click(function(event) {
|
|
||||||
event.stopPropagation(); // Do not propagate the event.
|
|
||||||
// Create an object that will manage to download the file.
|
|
||||||
var merge = new Array();
|
|
||||||
gridToExcelSubmit(url_excel, "LIST_GRID_TO_EXCEL", $("#grid"), $("#ajaxForm"), "송수신 파일 관리", merge);
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#btn_download").click(function() {
|
|
||||||
let selectedVal = "";
|
|
||||||
const rowIds = $("#grid").getGridParam("selarrrow");
|
|
||||||
|
|
||||||
rowIds.forEach(rowId => {
|
|
||||||
selectedVal += "," + $("#grid").getRowData(rowId).BJOBMSGDSTCD;
|
|
||||||
});
|
|
||||||
|
|
||||||
if(selectedVal != "") selectedVal = selectedVal.substring(1);
|
|
||||||
|
|
||||||
var url ='<c:url value="/loader.do" />';
|
|
||||||
url += '?cmd=messageProcMan';
|
|
||||||
url += '&control=download';
|
|
||||||
url += '&serviceType=' + sessionStorage["serviceType"];
|
|
||||||
url += '&fileName=messageProcMan';
|
|
||||||
url += '&selectedVal=' + selectedVal;
|
|
||||||
url += '&' + getSearchUrl();
|
|
||||||
|
|
||||||
goNav(url);
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#multiform").on('submit', fileupload);
|
|
||||||
$('#btn_upload').click(function() {
|
|
||||||
if( confirm( "동일한 이름의 경우 기존내용을 수정합니다.\n\n업로드 하시겠습니까?" ) != true ) return;
|
|
||||||
|
|
||||||
if(window.FormData !== undefined) {
|
|
||||||
$("input[name=file]").click();
|
|
||||||
} else {
|
|
||||||
if($("input[name=file]").val() == "") return;
|
|
||||||
$("#multiform").submit();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if(window.FormData !== undefined) {
|
|
||||||
$("input[name=file]").change(function(ev) {
|
|
||||||
var filename = $(this).val().split('\\').pop();
|
|
||||||
|
|
||||||
if (!filename.startsWith('messageProcMan')) {
|
|
||||||
alert("송수신 파일관리 JSON 파일을 선택하십시오.\n\n[파일명 : messageProcMan.json]")
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(filename == "") return;
|
|
||||||
else $("#multiform").submit();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if(window.FormData !== undefined) {
|
|
||||||
$("input[name=file]").hide();
|
|
||||||
} else {
|
|
||||||
$("input[name=file]").show();
|
|
||||||
}
|
|
||||||
|
|
||||||
buttonControl();
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="right_box">
|
|
||||||
<div class="content_top">
|
|
||||||
<ul class="path">
|
|
||||||
<li><a href="#">${rmsMenuPath}</a></li>
|
|
||||||
</ul>
|
|
||||||
</div><!-- end content_top -->
|
|
||||||
<div class="content_middle" id="title">
|
|
||||||
<form id="multiform" method="POST" enctype="multipart/form-data" action="<c:url value="/loader.file"/>">
|
|
||||||
<div class="search_wrap">
|
|
||||||
<input type="file" id="file" name="file" style="display:inline-block"/>
|
|
||||||
<input type="hidden" name="cmd" value="messageProcMan"/>
|
|
||||||
<input type="hidden" name="control" value="upload"/>
|
|
||||||
<img src="<c:url value="/img/btn_excel.png"/>" id="btn_excel" level="R" />
|
|
||||||
<img src="<c:url value="/img/btn_upload.png"/>" alt="" id="btn_upload" level="W" />
|
|
||||||
<img src="<c:url value="/img/btn_download.png"/>" alt="" id="btn_download" level="R" />
|
|
||||||
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" />
|
|
||||||
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
<div class="title">송수신 파일 관리<span class="tooltip">일괄 전송에서 사용하는 송수신 파일을 관리 하는 화면입니다</span></div>
|
|
||||||
|
|
||||||
<table class="search_condition" cellspacing=0;>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<th style="width:150px;">인터페이스ID</th>
|
|
||||||
<td><input type="text" name="likeBjobMsgDstcd" value="${param.likeBjobMsgDstcd}"></td>
|
|
||||||
<th style="width:150px;">업무구분코드</th>
|
|
||||||
<td>
|
|
||||||
<div class="select-style">
|
|
||||||
<select name="searchBjobBzwkDstcd" value="${param.searchBjobBzwkDstcd}"></select>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
<th style="width:150px;">세부기관코드</th>
|
|
||||||
<td><input type="text" name="likeBjobInstiDstcd" value="${param.likeBjobInstiDstcd}"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th style="width:150px;">송수신파일설명</th>
|
|
||||||
<td><input type="text" name="likeBjobTranDstcdName" value="${param.likeBjobTranDstcdName}"></td>
|
|
||||||
<th style="width:150px;">인터페이스설명</th>
|
|
||||||
<td><input type="text" name="likeBjobMsgDsticName" value="${param.likeBjobMsgDsticName}"></td>
|
|
||||||
<th style="width:150px;">사용여부</th>
|
|
||||||
<td style="width:350px;">
|
|
||||||
<div class="select-style">
|
|
||||||
<select name="searchThisMsgUseYn" value="${param.searchThisMsgUseYn}">
|
|
||||||
<option value="">전체</option>
|
|
||||||
<option value="1">사용</option>
|
|
||||||
<option value="0">사용안함</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th style="width:150px;" hidden="hidden">어플리케이션코드</th>
|
|
||||||
<td hidden="hidden"><input type="text" name="likeUapplCd" value="${param.likeUapplCd}"></td>
|
|
||||||
<th style="width:150px;" hidden="hidden">담당자ID</th>
|
|
||||||
<td hidden="hidden"><input type="text" name="likeThisMsgChrgIDs" value="${param.likeThisMsgChrgIDs}"></td>
|
|
||||||
<th style="width:150px;" hidden="hidden"></th>
|
|
||||||
<td hidden="hidden"></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<table id="grid" ></table>
|
|
||||||
<div id="pager"></div>
|
|
||||||
|
|
||||||
</div><!-- end content_middle -->
|
|
||||||
</div><!-- end right_box -->
|
|
||||||
</body>
|
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@@ -16,529 +16,387 @@
|
|||||||
|
|
||||||
<script language="javascript" >
|
<script language="javascript" >
|
||||||
|
|
||||||
var selectName = "bjobBzwkDstcd,uapplCd"; // selectBox Name
|
var isDetail = false;
|
||||||
var isDetail = false;
|
var lastsel2;
|
||||||
var lastsel2;
|
|
||||||
var isPopup = "${param.ispop}";
|
|
||||||
|
|
||||||
function isValid() {
|
function isValid(){
|
||||||
|
if($('input[name=bjobBzwkDstcd]').val() == ""){
|
||||||
if( $('input[name=bjobMsgDstcd]').val().trim() == "" ) {
|
alert("업무그룹코드를 입력하여 주십시요.");
|
||||||
alert("인터페이스ID를 입력하여 주십시요.");
|
|
||||||
return false;
|
return false;
|
||||||
} else if( $('select[name=bjobBzwkDstcd]').val() == "" ) {
|
}else if($('input[name=bjobBzwkName]').val() == ""){
|
||||||
alert("업무그룹코드를 선택하여 주십시요.");
|
alert("업무그룹명를 입력하여 주십시요.");
|
||||||
return false;
|
return false;
|
||||||
} else if( $('select[name=bjobInstiDstcd]').val() == "" ) {
|
}
|
||||||
alert("대외기관코드를 선택하여 주십시요.");
|
|
||||||
return false;
|
|
||||||
} else if( $('input[name=bjobTranDstcdName]').val() == "" ) {
|
|
||||||
alert("BATCH작업메시지구분코드를 입력하여 주십시요.");
|
|
||||||
return false;
|
|
||||||
} else if( $('input[name=bjobMsgDsticName]').val() == "" ) {
|
|
||||||
alert("BATCH작업메시지구분명을 입력하여 주십시요.");
|
|
||||||
return false;
|
|
||||||
} else if( $('input[name=bjobTelgmHdrSize]').val() == "" ) {
|
|
||||||
alert("BATCH작업전문헤더크기를 입력하여 주십시요.");
|
|
||||||
return false;
|
|
||||||
} else if( $('input[name=bjobTelgmRecSize]').val() == "" ) {
|
|
||||||
alert("BATCH작업전문데이터크기를 입력하여 주십시요.");
|
|
||||||
return false;
|
|
||||||
} else if( $('input[name=uapplCd]').val() == "" ) {
|
|
||||||
alert("APPLICATION CODE를 선택하여 주십시요.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function gridRendering() {
|
|
||||||
|
function gridRendering(){
|
||||||
$('#grid').jqGrid({
|
$('#grid').jqGrid({
|
||||||
datatype: "local",
|
datatype:"local",
|
||||||
loadonce: true,
|
loadonce: true,
|
||||||
rowNum: 10000,
|
rowNum: 10000,
|
||||||
editurl: "clientArray",
|
editurl : "clientArray",
|
||||||
colNames: ['프라퍼티명',
|
colNames:['프라퍼티명',
|
||||||
'프라퍼티설명',
|
'프라퍼티설명',
|
||||||
'프라퍼티값'
|
'프라퍼티값'
|
||||||
],
|
],
|
||||||
colModel: [
|
colModel:[
|
||||||
{ name : 'PRPTYNAME' , align:'left' },
|
{ name : 'PRPTYNAME' , align:'left' },
|
||||||
{ name : 'PRPTYDESC' , align:'left' },
|
{ name : 'PRPTYDESC' , align:'left' },
|
||||||
{ name : 'PRPTY2VAL' , align:'left', editable : true }
|
{ name : 'PRPTY2VAL' , align:'left', editable : true }
|
||||||
],
|
],
|
||||||
jsonReader: {
|
jsonReader: {
|
||||||
repeatitems: false
|
repeatitems:false
|
||||||
},
|
},
|
||||||
loadComplete: function () {
|
loadComplete : function () {
|
||||||
},
|
|
||||||
onSelectRow: function(rowid,status) {
|
},
|
||||||
if ( lastsel2 !=undefined ) {
|
onSelectRow: function(rowid,status){
|
||||||
if( $("#grid tr#" + lastsel2).attr("editable") == 1 ) { //editable=1 means row in edit mode
|
if (lastsel2 !=undefined){
|
||||||
$("#grid").saveRow(lastsel2,false,"clientArray");
|
if($("#grid tr#" + lastsel2).attr("editable") == 1){ //editable=1 means row in edit mode
|
||||||
|
$("#grid").saveRow(lastsel2,false,"clientArray");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$('#grid').restoreRow(lastsel2);
|
$('#grid').restoreRow(lastsel2);
|
||||||
$('#grid').editRow(rowid,true);
|
$('#grid').editRow(rowid,true);
|
||||||
lastsel2=rowid;
|
lastsel2=rowid;
|
||||||
},
|
|
||||||
onSortCol: function(){
|
},
|
||||||
return 'stop'; //정렬 방지
|
onSortCol : function(){
|
||||||
},
|
return 'stop'; //정렬 방지
|
||||||
height: '300',
|
},
|
||||||
|
height: '300',
|
||||||
autowidth: true,
|
autowidth: true,
|
||||||
viewrecords: true
|
viewrecords: true
|
||||||
});
|
});
|
||||||
|
|
||||||
resizeJqGridWidth('grid','title','1000');
|
|
||||||
|
resizeJqGridWidth('grid','title','1000');
|
||||||
}
|
}
|
||||||
|
function init(url,key){
|
||||||
function init(url,key) {
|
$.ajax({
|
||||||
$.ajax({
|
type : "POST",
|
||||||
type: "POST",
|
url:url,
|
||||||
url: url,
|
dataType:"json",
|
||||||
dataType: "json",
|
data:{cmd: 'LIST_INIT_COMBO'},
|
||||||
data: { cmd: 'LIST_INIT_COMBO' },
|
success:function(json){
|
||||||
success: function(json) {
|
new makeOptions("CODE","NAME").setObj($("select[name=bjobBzwkDstcd]")).setData(json.bjobBzwkDstcd).rendering();
|
||||||
// new makeOptions("CODE","NAME").setObj($("select[name=bjobBzwkDstcd]")).setData(json.bjobBzwkDstcd).rendering();
|
new makeOptions("CODE","NAME").setObj($("select[name=sysCd]")).setNoValueInclude(true).setNoValue(' ','없음').setData(json.sysCd).rendering();
|
||||||
new makeOptions("CODE","NAME").setObj($("select[name=bjobBzwkDstcd]")).setData(json.bjobBzwkDstcd).rendering(); // 업무구분코드
|
new makeOptions("CODE","NAME").setObj($("select[name=sysCd2]")).setNoValueInclude(true).setNoValue('','없음').setData(json.sysCd).rendering();
|
||||||
// new makeOptions("CODE","NAME").setObj($("select[name=bjobInstiDstcd]")).setFormat(codeName3OptionFormat).setData(json.bjobInstiDstcd).rendering(); // 대외기관코드
|
/* new makeOptions("CODE","NAME").setObj($("select[name=uapplCd]")).setNoValueInclude(true).setNoValue(' ','없음').setData(json.uapplCd).rendering(); */
|
||||||
//new makeOptions("BIZCODE","BIZNAME").setObj($("select[name=EAIBZWKDSTCD]")).setFormat(codeName3OptionFormat).setData(json.bizRows).rendering(); // 업무구분코드
|
//new makeOptions("CODE","NAME").setObj($("select[name=bizlevel1]")).setNoValueInclude(true).setNoValue(' ','없음').setData(json.bizlevel1).rendering();
|
||||||
new makeOptions("CODE","NAME").setObj($("select[name=bJobCycleGb]")).setData(json.bJobCycleGb).rendering(); // BATCH작업주기구분(BAP_CYCLE_GB)
|
//new makeOptions("CODE","NAME").setObj($("select[name=bizlevel2]")).setNoValueInclude(true).setNoValue(' ','없음').setData(json.bizlevel2).rendering();
|
||||||
|
//setSearchable('bjobBzwkDstcd');
|
||||||
// new makeOptions("CODE","NAME").setObj($("select[name=groupCoCd]")).setData(json.groupCoCd).rendering();
|
//setSearchable('uapplCd');
|
||||||
// new makeOptions("CODE","NAME").setObj($("select[name=sysCd]")).setNoValueInclude(true).setNoValue('','없음').setData(json.sysCd).rendering();
|
debugger;
|
||||||
new makeOptions("CODE","NAME").setObj($("select[name=uapplCd]")).setData(json.uapplCd).rendering(); // 어플리케이션코드
|
if ( isDetail ){
|
||||||
|
detail(url, key);
|
||||||
if ( isDetail ) {
|
}else{
|
||||||
detail(url, key);
|
setSearchable('bjobBzwkDstcd');
|
||||||
} else {
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "POST",
|
type : "POST",
|
||||||
url: url,
|
url:url,
|
||||||
dataType: "json",
|
dataType:"json",
|
||||||
data: { cmd: 'LIST_PROP',
|
data:{ cmd: 'LIST_PROP',
|
||||||
bjobBzwkDstcd : $("select[name=bjobBzwkDstcd]").val(),
|
bjobBzwkDstcd : $("select[name=bjobBzwkDstcd]").val()
|
||||||
bjobMsgDstcd : $("input[name=bjobMsgDstcd]").val()
|
},
|
||||||
},
|
success:function(json){
|
||||||
success: function(json) {
|
$("#grid")[0].addJSONData(json);
|
||||||
$("#grid")[0].addJSONData(json.propMap);
|
$("input[name=prptyGroupName]").val("TelegramInfo{" + detail["BJOBBZWKDSTCD"] + "_" + detail["BJOBTRANDSTCDNAME"] + "}");
|
||||||
$("select[name=bjobInstiDstcd] option").remove();
|
$("input[name=thisMsgChrgIDs]").val(' ');
|
||||||
new makeOptions("CODE","NAME").setObj($("select[name=bjobInstiDstcd]")).setFormat(codeName3OptionFormat).setData(json.InstMap.rows).rendering(); // 대외기관코드
|
$("input[name=intfID]").val(' ');
|
||||||
$("input[name=prptyGroupName]").val("TelegramInfo{" + detail["BJOBMSGDSTCD"] + "}");
|
|
||||||
// $("input[name=thisMsgChrgIDs]").val(' ');
|
|
||||||
// $("input[name=intfID]").val(' ');
|
|
||||||
$("input[name=msgPrcssPrity]").val('999');
|
$("input[name=msgPrcssPrity]").val('999');
|
||||||
$("input[name=dupCnt]").val('0');
|
|
||||||
$("input[name=endCnt]").val('0');
|
},
|
||||||
},
|
error:function(e){
|
||||||
error: function(e) {
|
// alert(e.responseText);
|
||||||
alert(e.responseText);
|
}
|
||||||
}
|
});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function(e) {
|
error:function(e){
|
||||||
alert(e.responseText);
|
// alert(e.responseText);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
setSearchable(selectName); // 콤보에 searchable 설정
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function detail(url,key) {
|
function detail(url,key){
|
||||||
if ( !isDetail ) return;
|
if (!isDetail)return;
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "POST",
|
type : "POST",
|
||||||
url: url,
|
url:url,
|
||||||
dataType: "json",
|
dataType:"json",
|
||||||
data: { cmd: 'DETAIL',
|
data:{ cmd: 'DETAIL',
|
||||||
bjobMsgDstcd : key
|
bjobMsgDstcd : key
|
||||||
},
|
},
|
||||||
success: function(json) {
|
success:function(json){
|
||||||
var data = json;
|
var data = json;
|
||||||
var detail = json.detail;
|
var detail = json.detail;
|
||||||
|
|
||||||
//adapterType
|
|
||||||
$("input[name=bjobMsgDstcd]").attr('readonly',true);
|
|
||||||
$("select[name=bjobBzwkDstcd]").attr('disabled',false);
|
|
||||||
$("input[name=bjobTranDstcdName]").attr('readonly',false);
|
|
||||||
$("input,select").each(function() {
|
|
||||||
try {
|
|
||||||
var name = $(this).attr('name').toUpperCase();
|
|
||||||
$(this).val(detail[name]);
|
|
||||||
} catch (e) {}
|
|
||||||
});
|
|
||||||
// 파일 송수신 구분
|
|
||||||
$("select[name=fileSndRcvGbn]").val(detail["FILESENDUSEYN"] == 1 ? "S" : "R");
|
|
||||||
// 대외기관코드 change 및 값 설정
|
|
||||||
$("select[name=bjobInstiDstcd]").attr('disabled',false);
|
|
||||||
$("input[name=bjobInstiDstVal]").val(detail["BJOBINSTIDSTCD"]); // 임시로 저장
|
|
||||||
$("select[name=bjobBzwkDstcd]").val($("select[name=bjobBzwkDstcd]").val()).trigger("change");
|
|
||||||
|
|
||||||
if ( $("input[name=dupCnt]").val().trim() == "" ) $("input[name=dupCnt]").val('0');
|
//adapterType
|
||||||
if ( $("input[name=endCnt]").val().trim() == "" ) $("input[name=endCnt]").val('0');
|
$("select[name=bjobBzwkDstcd]").attr('disabled',true);
|
||||||
|
$("input[name=bjobTranDstcdName]").attr('readonly',true);
|
||||||
|
$("input,select").each(function(){
|
||||||
|
var name = $(this).attr('name').toUpperCase();
|
||||||
|
$(this).val(detail[name]);
|
||||||
|
});
|
||||||
|
|
||||||
//Prop
|
//Prop
|
||||||
$("#grid")[0].addJSONData(data.rows);
|
$("#grid")[0].addJSONData(data);
|
||||||
|
setSearchable('uapplCd');
|
||||||
},
|
},
|
||||||
error: function(e) {
|
error:function(e){
|
||||||
alert(e.responseText);
|
// alert(e.responseText);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var submitData = {};
|
var submitData = {};
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
var returnUrl = getReturnUrlForReturn();
|
var returnUrl = getReturnUrlForReturn();
|
||||||
var url ='<c:url value="/bap/admin/work/messageProcMan.json" />';
|
var url ='<c:url value="/bap/admin/work/messageProcMan.json" />';
|
||||||
var key ="${param.bjobMsgDstcd}";
|
var key ="${param.bjobMsgDstcd}";
|
||||||
$("input[name*=Size]").inputmask('decimal',{groupSeparator:',',digits:0,autoGroup:true,prefix:'',rightAlign:false,autoUnmask:true,removeMaskOnSubmit:true});
|
$("input[name*=Size]").inputmask('decimal',{groupSeparator:',',digits:0,autoGroup:true,prefix:'',rightAlign:false,autoUnmask:true,removeMaskOnSubmit:true});
|
||||||
if ( key != "" && key !="null" ){
|
if (key != "" && key !="null"){
|
||||||
isDetail = true;
|
isDetail = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
gridRendering();
|
gridRendering();
|
||||||
|
|
||||||
init(url,key);
|
init(url,key);
|
||||||
|
|
||||||
|
|
||||||
$("#btn_modify").click(function(){
|
$("#btn_modify").click(function(){
|
||||||
|
debugger;
|
||||||
if (!isValid()) return;
|
if (!isValid())return;
|
||||||
|
if($("#grid tr#" + lastsel2).attr("editable") == 1){ //editable=1 means row in edit mode
|
||||||
if (isDetail) {
|
|
||||||
if ( confirm( "수정하시겠습니까?" ) != true ) return;
|
|
||||||
} else {
|
|
||||||
if ( confirm( "등록하시겠습니까?" ) != true ) return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( $("#grid tr#" + lastsel2).attr("editable") == 1 ) { //editable=1 means row in edit mode
|
|
||||||
$("#grid").saveRow(lastsel2,false,"clientArray");
|
$("#grid").saveRow(lastsel2,false,"clientArray");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var data = $("#grid").getRowData();
|
var data = $("#grid").getRowData();
|
||||||
var gridData = new Array();
|
var gridData = new Array();
|
||||||
for ( var i = 0; i <data.length; i++ ) {
|
for (var i = 0; i <data.length; i++) {
|
||||||
gridData.push(data[i]);
|
gridData.push(data[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 파일 송/수신구분 설정
|
|
||||||
$("input[name=fileSendUseYn]").val($("select[name=fileSndRcvGbn]").val() == 'S' ? '1' : '0');
|
|
||||||
$("input[name=fileRecvUseYn]").val($("select[name=fileSndRcvGbn]").val() == 'R' ? '1' : '0');
|
|
||||||
|
|
||||||
//공통부만 form으로 구성
|
//공통부만 form으로 구성
|
||||||
var postData = $('#ajaxForm').serializeArray();
|
var postData = $('#ajaxForm').serializeArray();
|
||||||
postData.push({ name: "gridData" , value: JSON.stringify(gridData)});
|
postData.push({ name: "gridData" , value:JSON.stringify(gridData)});
|
||||||
postData.push({ name: "bjobBzwkDstcd" , value: $("select[name=bjobBzwkDstcd]").val()});
|
postData.push({ name: "bjobBzwkDstcd" , value: $("select[name=bjobBzwkDstcd]").val()});
|
||||||
postData.push({ name: "prptyGroupName" , value: "TelegramInfo{" + $("input[name=bjobMsgDstcd]").val() + "}"});
|
postData.push({ name: "prptyGroupName" , value:"TelegramInfo{" + $("select[name=bjobBzwkDstcd]").val() + "_" + $("input[name=bjobTranDstcdName]").val() + "}"});
|
||||||
postData.push({ name: "prptyGroupDesc" , value: $("select[name=bjobBzwkDstcd]").val()+"배치 작업의 [" +$("input[name=bjobTranDstcdName]").val() + "]메시지의 송수신 전문용 프로퍼티 정의"});
|
postData.push({ name: "prptyGroupDesc" , value:$("select[name=bjobBzwkDstcd]").val()+"배치 작업의 [" +$("input[name=bjobTranDstcdName]").val() + "]메시지의 송수신 전문용 프로퍼티 정의"});
|
||||||
|
|
||||||
if ( isDetail ) {
|
if (isDetail){
|
||||||
postData.push( { name: "cmd" , value:"UPDATE"} );
|
postData.push({ name: "cmd" , value:"UPDATE"});
|
||||||
$.ajax({
|
}else{
|
||||||
type: "POST",
|
postData.push({ name: "cmd" , value:"INSERT"});
|
||||||
url: url,
|
|
||||||
data: postData,
|
|
||||||
success: function(args) {
|
|
||||||
alert("저장 되었습니다.");
|
|
||||||
if ( isPopup == 'Y' ) {
|
|
||||||
window.close();
|
|
||||||
} else {
|
|
||||||
goNav(returnUrl);//LIST로 이동
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error: function(e) {
|
|
||||||
alert(e.responseText);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
$.ajax({
|
|
||||||
type: "POST",
|
|
||||||
url: url,
|
|
||||||
dataType: "json",
|
|
||||||
data: { cmd: 'INITIALIZE_PK',
|
|
||||||
tableName: 'TSEAIBJ01',
|
|
||||||
columnName: "BjobMsgDstcd",
|
|
||||||
columnValue: $('input[name=bjobMsgDstcd]').val()
|
|
||||||
},
|
|
||||||
success:function(json) {
|
|
||||||
if( json.checkPK == 'Y' ) {
|
|
||||||
alert("이미 사용중인 인터페이스ID 입니다.\n\n다른 인터페이스ID를 입력하여 주십시요.");
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
$.ajax({
|
|
||||||
type: "POST",
|
|
||||||
url: url,
|
|
||||||
data: postData,
|
|
||||||
success: function(args) {
|
|
||||||
alert("저장 되었습니다.");
|
|
||||||
goNav(returnUrl);//LIST로 이동
|
|
||||||
},
|
|
||||||
error: function(e) {
|
|
||||||
alert(e.responseText);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
postData.push( { name: "cmd" , value:"INSERT"} );
|
|
||||||
}
|
}
|
||||||
|
$.ajax({
|
||||||
|
type : "POST",
|
||||||
|
url:url,
|
||||||
|
data:postData,
|
||||||
|
success:function(args){
|
||||||
|
alert("저장 되었습니다.");
|
||||||
|
goNav(returnUrl);//LIST로 이동
|
||||||
|
},
|
||||||
|
error:function(e){
|
||||||
|
// alert(e.responseText);
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
$("#btn_delete").click(function(){
|
||||||
$("#btn_delete").click(function() {
|
|
||||||
|
if ( confirm( "삭제 하시겠습니까?" ) != true ) return;// 202407 삭제 confirm
|
||||||
|
|
||||||
if ( confirm( "삭제하시겠습니까?" ) != true ) return;
|
|
||||||
|
|
||||||
var postData = $('#ajaxForm').serializeArray();
|
var postData = $('#ajaxForm').serializeArray();
|
||||||
postData.push({ name: "cmd" , value:"DELETE"});
|
postData.push({ name: "cmd" , value:"DELETE"});
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "POST",
|
type : "POST",
|
||||||
url: url,
|
url:url,
|
||||||
data: postData,
|
data:postData,
|
||||||
success: function(args) {
|
success:function(args){
|
||||||
alert("삭제 되었습니다.");
|
alert("삭제 되었습니다.");
|
||||||
goNav(returnUrl);//LIST로 이동
|
goNav(returnUrl);//LIST로 이동
|
||||||
|
|
||||||
},
|
},
|
||||||
error: function(e) {
|
error:function(e){
|
||||||
alert(e.responseText);
|
// alert(e.responseText);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
$("#btn_previous").click(function(){
|
||||||
$("#btn_previous").click(function() {
|
|
||||||
goNav(returnUrl);//LIST로 이동
|
goNav(returnUrl);//LIST로 이동
|
||||||
});
|
});
|
||||||
|
|
||||||
$("select[name=bjobBzwkDstcd]").change(function() {
|
$("select[name=bjobBzwkDstcd]").change(function(){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "POST",
|
type : "POST",
|
||||||
url: url,
|
url:url,
|
||||||
dataType: "json",
|
dataType:"json",
|
||||||
data: { cmd: 'LIST_PROP',
|
data:{ cmd: 'LIST_PROP',
|
||||||
bjobBzwkDstcd : $(this).val(),
|
bjobBzwkDstcd : $(this).val()
|
||||||
bjobMsgDstcd : $('input[name=bjobMsgDstcd]').val()
|
},
|
||||||
},
|
success:function(json){
|
||||||
success:function(json) {
|
$("#grid")[0].addJSONData(json);
|
||||||
$("#grid")[0].addJSONData(json.propMap);
|
}
|
||||||
$("select[name=bjobInstiDstcd] option").remove();
|
|
||||||
new makeOptions("CODE","NAME").setObj($("select[name=bjobInstiDstcd]")).setFormat(codeName3OptionFormat).setData(json.InstMap.rows).rendering(); // 대외기관코드
|
|
||||||
$("select[name=bjobInstiDstcd]").val($("input[name=bjobInstiDstVal]").val());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#btn_pop_detail").click(function() {
|
|
||||||
var popUrl = '<c:url value="/bap/admin/work/messageProcMan.view" />' + '?cmd=POPUP';
|
|
||||||
var args = new Object();
|
|
||||||
args['data'] = key;
|
|
||||||
args['ispop'] = true;
|
|
||||||
|
|
||||||
var result = showModal(popUrl, args, 700, 600, function(arg) {
|
|
||||||
var args = null;
|
|
||||||
if( arg == null || arg == undefined ) {//chrome
|
|
||||||
args = this.dialogArguments;
|
|
||||||
args.returnValue = this.returnValue;
|
|
||||||
} else {//ie
|
|
||||||
args = arg;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( !args || !args.returnValue ) return;
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
buttonControl(isDetail);
|
buttonControl(isDetail);
|
||||||
titleControl(isDetail);
|
titleControl(isDetail);
|
||||||
|
|
||||||
$("#btn_close").click(function() {
|
|
||||||
window.close();
|
|
||||||
});
|
|
||||||
|
|
||||||
if ( isPopup == 'Y' ) {
|
|
||||||
$('#btn_delete').hide();
|
|
||||||
$('#btn_modify').show();
|
|
||||||
$('#btn_previous').hide();
|
|
||||||
$('#btn_close').show();
|
|
||||||
} else {
|
|
||||||
$('#btn_close').hide();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="right_box">
|
<div class="right_box">
|
||||||
<div class="content_top">
|
<div class="content_top">
|
||||||
<ul class="path">
|
<ul class="path">
|
||||||
<li><a href="#">${rmsMenuPath}</a></li>
|
<li><a href="#">${rmsMenuPath}</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div><!-- end content_top -->
|
</div><!-- end content_top -->
|
||||||
<div class="content_middle" id="title">
|
<div class="content_middle" id="title">
|
||||||
<div class="search_wrap">
|
<div class="search_wrap">
|
||||||
<img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" status="DETAIL"/>
|
<img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" status="DETAIL"/>
|
||||||
<img src="<c:url value="/img/btn_modify.png"/>" alt="" id="btn_modify" level="W" status="DETAIL,NEW" />
|
<img src="<c:url value="/img/btn_modify.png"/>" alt="" id="btn_modify" level="W" status="DETAIL,NEW" />
|
||||||
<img src="<c:url value="/img/btn_previous.png"/>" alt="" id="btn_previous" level="R" status="DETAIL,NEW"/>
|
<img src="<c:url value="/img/btn_previous.png"/>" alt="" id="btn_previous" level="R" status="DETAIL,NEW"/>
|
||||||
<img src="<c:url value="/img/btn_close.png"/>" alt="" id="btn_close" level="R" style="display:none;" />
|
|
||||||
</div>
|
</div>
|
||||||
<div class="title">송수신 파일</div>
|
<div class="title">송수신 파일</div>
|
||||||
|
|
||||||
<form id="ajaxForm">
|
<form id="ajaxForm">
|
||||||
<input type="hidden" name="sndrcvFileName" value=" "/>
|
|
||||||
<input type="hidden" name="sndScriptname" />
|
|
||||||
<table class="table_row" cellspacing="0">
|
<table class="table_row" cellspacing="0">
|
||||||
<colgroup>
|
|
||||||
<col width="15%">
|
|
||||||
<col width="30%">
|
|
||||||
<col width="5%">
|
|
||||||
<col width="15%">
|
|
||||||
<col width="35%">
|
|
||||||
</colgroup>
|
|
||||||
<!-- 공통-->
|
<!-- 공통-->
|
||||||
<tr>
|
<tr>
|
||||||
<th>인터페이스ID *</th>
|
<th style="width:180px;">업무구분코드</th>
|
||||||
<td colspan="2"><input type="text" name="bjobMsgDstcd" /></td>
|
<td><div class="select-style"><select name="bjobBzwkDstcd">
|
||||||
|
</select></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>BATCH작업메시지구분코드</th><td><input type="text" maxlength="40" name="bjobTranDstcdName" /> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>BATCH작업메시지구분명</th><td><input type="text" name="bjobMsgDsticName" /> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>BATCH작업전문헤더크기</th><td><input type="text" name="bjobTelgmHdrSize" /> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>BATCH작업전문데이터크기</th><td><input type="text" name="bjobTelgmRecSize" /> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>BATCH작업전문트레일러크기</th><td><input type="text" name="bjobTelgmTrailSize" /> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>파일송신사용여부</th>
|
||||||
|
<td><div class="select-style"><select name="fileSendUseYn">
|
||||||
|
<option value="1">사용</option>
|
||||||
|
<option value="0">사용안함</option>
|
||||||
|
</select></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>파일수신사용여부</th>
|
||||||
|
<td><div class="select-style"><select name="fileRecvUseYn">
|
||||||
|
<option value="1">사용</option>
|
||||||
|
<option value="0">사용안함</option>
|
||||||
|
</select></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>작업처리 우선순위</th><td><input type="text" name="msgPrcssPrity" /> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>연계시스템 CODE(송신)</th>
|
||||||
|
<td><div class="select-style"><select name="sysCd"></select></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>연계시스템 CODE(수신)</th>
|
||||||
|
<td><div class="select-style"><select name="sysCd2"></select></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>APPLICATION CODE</th>
|
||||||
|
<td>
|
||||||
|
<!-- <div class="select-style"><select name="uapplCd"></select></div> -->
|
||||||
|
<input type="text" name="uapplCd" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<!--
|
||||||
|
<tr>
|
||||||
|
<th>업무레벨Lv1</th>
|
||||||
|
<td><div class="select-style"><select name="bizlevel1"></select></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>업무레벨Lv2</th>
|
||||||
|
<td><div class="select-style"><select name="bizlevel2"></select></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
-->
|
||||||
|
<tr hidden="hidden">
|
||||||
|
<th>파일명 패턴</th>
|
||||||
|
<td><div class="select-style"><select name="sndrcvFileName">
|
||||||
|
<option value=" ">사용안함</option>
|
||||||
|
<option value="yyyy">YYYY</option>
|
||||||
|
<option value="yyyyMM">YYYYMM</option>
|
||||||
|
<option value="MMdd">MMDD</option>
|
||||||
|
<option value="yyyyMMdd">YYYYMMDD</option>
|
||||||
|
<option value="001">일련번호</option>
|
||||||
|
<option value="yyyy_001">YYYY_일련번호</option>
|
||||||
|
<option value="yyyyMM_001">YYYYMM_일련번호</option>
|
||||||
|
<option value="MMdd_001">MMDD_일련번호</option>
|
||||||
|
<option value="yyyyMMdd_001">YYYYMMDD_일련번호</option>
|
||||||
|
</select></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr> <!-- hidden="hidden" -->
|
||||||
|
<th>파일담당자</th><td><input type="text" name="thisMsgChrgIDs" /> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>수신시 알림여부</th>
|
||||||
|
<td>
|
||||||
|
<div class="select-style"><select name="recvNotiUseYn">
|
||||||
|
<option value="1">사용</option>
|
||||||
|
<option value="0">사용안함</option>
|
||||||
|
</select></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<th>당메시지 사용여부 *</th>
|
<th>당메시지 사용여부 *</th>
|
||||||
<td>
|
<td>
|
||||||
<div class="select-style">
|
<div class="select-style"><select name="thisMsgUseYn">
|
||||||
<select name="thisMsgUseYn">
|
|
||||||
<option value="1">사용</option>
|
<option value="1">사용</option>
|
||||||
<option value="0">사용안함</option>
|
<option value="0">사용안함</option>
|
||||||
</select>
|
</select></div>
|
||||||
</div>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<!--
|
||||||
<tr>
|
<tr>
|
||||||
<th>업무구분코드</th>
|
<th>prptyGroupName</th><td><input name="prptyGroupName" /> </td>
|
||||||
<td colspan="2">
|
|
||||||
<div class="select-style">
|
|
||||||
<select name="bjobBzwkDstcd"></select>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
<th>대외기관코드</th>
|
|
||||||
<td colspan="2">
|
|
||||||
<input type="hidden" name="bjobInstiDstVal" />
|
|
||||||
<div class="select-style">
|
|
||||||
<select name="bjobInstiDstcd"></select>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
|
-->
|
||||||
<tr>
|
<tr>
|
||||||
<th>BATCH작업메시지구분코드 *</th>
|
<th>jFlow Job ID</th><td><input type="text" name="intfID" /> </td>
|
||||||
<td colspan="2"><input type="text" maxlength="40" name="bjobTranDstcdName" /></td>
|
|
||||||
<th>BATCH작업메시지구분명 *</th>
|
|
||||||
<td><input type="text" name="bjobMsgDsticName" /></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr hidden="hidden">
|
||||||
<th>BATCH작업전문헤더크기 *</th>
|
<th>bjobMsgDstcd</th><td><input type="text" name="bjobMsgDstcd" /> </td>
|
||||||
<td colspan="2"><input type="text" name="bjobTelgmHdrSize" /></td>
|
|
||||||
<th>BATCH작업전문데이터크기 *</th>
|
|
||||||
<td><input type="text" name="bjobTelgmRecSize" /></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
|
||||||
<th>BATCH작업전문트레일러크기</th>
|
|
||||||
<td colspan="2"><input type="text" name="bjobTelgmTrailSize" /></td>
|
|
||||||
<th>BATCH작업주기구분</th>
|
|
||||||
<td><div class="select-style"><select name="bJobCycleGb"></select></div></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<input type="hidden" name="fileSendUseYn" />
|
|
||||||
<input type="hidden" name="fileRecvUseYn" />
|
|
||||||
<th>파일 송/수신 구분</th>
|
|
||||||
<td colspan="2">
|
|
||||||
<div class="select-style">
|
|
||||||
<select name="fileSndRcvGbn">
|
|
||||||
<option value="S">송신</option>
|
|
||||||
<option value="R">수신</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
<th>수신시 알림여부</th>
|
|
||||||
<td colspan="2">
|
|
||||||
<div class="select-style">
|
|
||||||
<select name="recvNotiUseYn">
|
|
||||||
<option value="1">사용</option>
|
|
||||||
<option value="0">사용안함</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>APPLICATION CODE *</th>
|
|
||||||
<td colspan="2"><div class="select-style"><select name="uapplCd"></select></div></td>
|
|
||||||
<!-- <th>파일명 패턴</th>
|
|
||||||
<td>
|
|
||||||
<div class="select-style">
|
|
||||||
<select name="sndrcvFileName">
|
|
||||||
<option value=" ">사용안함</option>
|
|
||||||
<option value="yyyy">YYYY</option>
|
|
||||||
<option value="yyyyMM">YYYYMM</option>
|
|
||||||
<option value="MMdd">MMDD</option>
|
|
||||||
<option value="yyyyMMdd">YYYYMMDD</option>
|
|
||||||
<option value="001">일련번호</option>
|
|
||||||
<option value="yyyy_001">YYYY_일련번호</option>
|
|
||||||
<option value="yyyyMM_001">YYYYMM_일련번호</option>
|
|
||||||
<option value="MMdd_001">MMDD_일련번호</option>
|
|
||||||
<option value="yyyyMMdd_001">YYYYMMDD_일련번호</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</td> -->
|
|
||||||
<th>EAI 인터페이스ID</th>
|
|
||||||
<td><input type="text" name="intfID" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>데이터검증여부</th>
|
|
||||||
<td style="border-right: 0px;">
|
|
||||||
<div class="select-style">
|
|
||||||
<select name="dataVrfyYn">
|
|
||||||
<option value="1">사용</option>
|
|
||||||
<option value="0">사용안함</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
<td><img id="btn_pop_detail" src="<c:url value="/img/btn_pop_detail.png" />" class="btn_img" /></td>
|
|
||||||
<th>작업처리 우선순위</th>
|
|
||||||
<td><input type="text" name="msgPrcssPrity" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>처리여부</th>
|
|
||||||
<td colspan="2">
|
|
||||||
<div class="select-style">
|
|
||||||
<select name="procYn">
|
|
||||||
<option value="1">사용</option>
|
|
||||||
<option value="0">사용안함</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
<th>중복횟수</th>
|
|
||||||
<td><input type="text" name="dupCnt" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>종결여부</th>
|
|
||||||
<td colspan="2">
|
|
||||||
<div class="select-style">
|
|
||||||
<select name="endYn">
|
|
||||||
<option value="1">사용</option>
|
|
||||||
<option value="0">사용안함</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
<th>종결횟수</th>
|
|
||||||
<td><input type="text" name="endCnt" /></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>파일담당자</th>
|
|
||||||
<td colspan="4"><input type="text" name="thisMsgChrgIDs" /></td>
|
|
||||||
</tr>
|
|
||||||
<!-- <tr>
|
|
||||||
<th>송신스크립트명</th>
|
|
||||||
<td colspan="4"><input type="text" name="sndScriptname" /></td>
|
|
||||||
</tr> -->
|
|
||||||
</table>
|
</table>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<div class="table_row_title">프라퍼티 정보</div>
|
|
||||||
|
<div class="table_row_title">프라퍼티 정보</div>
|
||||||
<!-- grid -->
|
<!-- grid -->
|
||||||
<table id="grid" ></table>
|
<table id="grid" ></table>
|
||||||
</div><!-- end content_middle -->
|
</div><!-- end content_middle -->
|
||||||
</div><!-- end right_box -->
|
</div><!-- end right_box -->
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -13,296 +13,170 @@
|
|||||||
<jsp:include page="/jsp/common/include/css.jsp"/>
|
<jsp:include page="/jsp/common/include/css.jsp"/>
|
||||||
<jsp:include page="/jsp/common/include/script.jsp"/>
|
<jsp:include page="/jsp/common/include/script.jsp"/>
|
||||||
<script language="javascript" >
|
<script language="javascript" >
|
||||||
var url_excel = '<c:url value="/common/noauth/excel/listGridToExcel.json" />';
|
function list(url){
|
||||||
|
|
||||||
function fileupload(e,successcallback,errorcallback) {
|
|
||||||
var formObj = $(this);
|
|
||||||
var formURL = formObj.attr("action");
|
|
||||||
if( window.FormData !== undefined ) // for HTML5 browsers
|
|
||||||
{
|
|
||||||
var formData = new FormData(this);
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
url: formURL,
|
|
||||||
type: 'POST',
|
|
||||||
data: formData,
|
|
||||||
encType: "multipart/form-data",
|
|
||||||
contentType: false,
|
|
||||||
cache: false,
|
|
||||||
processData: false,
|
|
||||||
success: function(json, textStatus, jqXHR) {
|
|
||||||
$("input[name=file]").val("");
|
|
||||||
if( textStatus == 'success' ) {
|
|
||||||
alert('정상처리 되었습니다.');
|
|
||||||
$("#btn_search").click();
|
|
||||||
} else {
|
|
||||||
alert('업로드중 에러가 발생하였습니다.');
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error: function(jqXHR, textStatus, errorThrown) {
|
|
||||||
$("input[name=file]").val("");
|
|
||||||
if( typeof callback === 'function' ) {
|
|
||||||
errorcallback(jqXHR, textStatus, errorThrown);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
e.preventDefault();
|
|
||||||
if ( e.unbind ) e.unbind();
|
|
||||||
} else { //for olden browsers
|
|
||||||
formObj.append($("<input type='hidden' name='serviceType' value='" + sessionStorage["serviceType"] + "' />"));
|
|
||||||
//generate a random id
|
|
||||||
var iframeId = 'unique' + (new Date().getTime());
|
|
||||||
//create an empty iframe
|
|
||||||
var iframe = $('<iframe src="javascript:false;" id="' + iframeId + '" name="' + iframeId + '" />');
|
|
||||||
|
|
||||||
//hide it
|
|
||||||
iframe.hide();
|
|
||||||
|
|
||||||
//set form target to iframe
|
|
||||||
formObj.attr('target', iframeId);
|
|
||||||
formObj.attr('action', '<c:url value="/loader.file" />');
|
|
||||||
|
|
||||||
//Add iframe to body
|
|
||||||
iframe.appendTo('body');
|
|
||||||
iframe.load(function(e) {
|
|
||||||
var doc = getDoc(iframe[0]);
|
|
||||||
var docRoot = doc.body ? doc.body : doc.documentElement;
|
|
||||||
var data = docRoot.innerHTML;
|
|
||||||
var k = JSON.parse(data);
|
|
||||||
$("#grid")[0].addJSONData(k);
|
|
||||||
$("input[name=file]").val("");
|
|
||||||
//data is returned from server.
|
|
||||||
if( typeof callback === 'function' ) {
|
|
||||||
//successcallback(data);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function list(url) {
|
|
||||||
var gridPostData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로
|
var gridPostData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로
|
||||||
$('#grid').jqGrid({
|
$('#grid').jqGrid({
|
||||||
datatype: "json",
|
datatype:"json",
|
||||||
mtype: 'POST',
|
mtype: 'POST',
|
||||||
url: '<c:url value="/bap/admin/work/systemInstMan.json" />',
|
url: '<c:url value="/bap/admin/work/systemInstMan.json" />',
|
||||||
postData: gridPostData,
|
postData : gridPostData,
|
||||||
colNames: [ '대외기관명',
|
colNames:['대외기관명',
|
||||||
'대외기관코드',
|
'대외기관코드',
|
||||||
'업무구분명',
|
'업무구분명',
|
||||||
'업무구분코드',
|
'업무구분코드',
|
||||||
'송신처리규칙코드',
|
'송신처리규칙코드',
|
||||||
'수신처리규칙코드',
|
'수신처리규칙코드',
|
||||||
'파일송신유형',
|
'파일송신유형',
|
||||||
'파일수신유형',
|
'파일수신유형',
|
||||||
'사용여부'
|
'사용여부'
|
||||||
],
|
],
|
||||||
colModel: [
|
colModel:[
|
||||||
{ name: 'OSIDINSTINAME' , align: 'left' ,sortable:false },
|
{ name : 'OSIDINSTINAME' , align:'left' ,sortable:false },
|
||||||
{ name: 'OSIDINSTIDSTCD' , align: 'center'},
|
{ name : 'OSIDINSTIDSTCD' , align:'left' },
|
||||||
{ name: 'BJOBBZWKNAME' , align: 'left' },
|
{ name : 'BJOBBZWKNAME' , align:'left' },
|
||||||
{ name: 'BJOBBZWKDSTCD' , align: 'center'},
|
{ name : 'BJOBBZWKDSTCD' , align:'left' },
|
||||||
{ name: 'SENDPRCSSRULECD' , align: 'center'},
|
{ name : 'SENDPRCSSRULECD' , align:'center'},
|
||||||
{ name: 'RECVPRCSSRULECD' , align: 'center'},
|
{ name : 'RECVPRCSSRULECD' , align:'center'},
|
||||||
{ name: 'EAIFILESENDPTRNDSTCD' , align: 'center' ,
|
{ name : 'EAIFILESENDPTRNDSTCD' , align:'center',
|
||||||
formatter: function (cellvalue) {
|
formatter: function (cellvalue) {
|
||||||
if( cellvalue == 'R' ) {
|
if ( cellvalue == 'R' ) {
|
||||||
return '요구';
|
return '요구';
|
||||||
} else {
|
} else {
|
||||||
return '응답';
|
return '응답';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ name: 'EAIFILERECVPTRNDSTCD' , align: 'center' ,
|
{ name : 'EAIFILERECVPTRNDSTCD' , align:'center',
|
||||||
formatter: function (cellvalue) {
|
formatter: function (cellvalue) {
|
||||||
if( cellvalue == 'R' ) {
|
if ( cellvalue == 'R' ) {
|
||||||
return '요구';
|
return '요구';
|
||||||
} else {
|
} else {
|
||||||
return '응답';
|
return '응답';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ name: 'THISMSGUSEYN' , align: 'center' ,
|
{ name : 'THISMSGUSEYN' , align:'center',
|
||||||
formatter: function (cellvalue) {
|
formatter: function (cellvalue) {
|
||||||
if( cellvalue == '1' ) {
|
if ( cellvalue == '1' ) {
|
||||||
return '사용';
|
return '사용';
|
||||||
} else {
|
} else {
|
||||||
return '<span style="color:red">사용안함</span>';
|
return '<span style="color:red">사용안함</span>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
jsonReader: {
|
jsonReader: {
|
||||||
repeatitems:false
|
repeatitems:false
|
||||||
},
|
},
|
||||||
pager: $('#pager'),
|
pager : $('#pager'),
|
||||||
page: '${param.page}',
|
page : '${param.page}',
|
||||||
rowNum: '${rmsDefaultRowNum}',
|
rowNum : '${rmsDefaultRowNum}',
|
||||||
autoheight: true,
|
autoheight: true,
|
||||||
height: $("#container").height(),
|
height: $("#container").height(),
|
||||||
autowidth: true,
|
autowidth: true,
|
||||||
viewrecords: true,
|
viewrecords: true,
|
||||||
multiselect: true,
|
rowList : eval('[${rmsDefaultRowList}]'),
|
||||||
rowList: eval('[${rmsDefaultRowList}]'),
|
gridComplete:function (d){
|
||||||
gridComplete: function (d) {
|
|
||||||
var colModel = $(this).getGridParam("colModel");
|
var colModel = $(this).getGridParam("colModel");
|
||||||
for( var i = 0; i < colModel.length; i++ ) {
|
for(var i = 0 ; i< colModel.length; i++){
|
||||||
$(this).setColProp(colModel[i].name, {sortable: false}); //그리드 헤더 화살표 삭제(정렬X)
|
$(this).setColProp(colModel[i].name, {sortable : false}); //그리드 헤더 화살표 삭제(정렬X)
|
||||||
}
|
}
|
||||||
},
|
|
||||||
|
},
|
||||||
ondblClickRow: function(rowId) {
|
ondblClickRow: function(rowId) {
|
||||||
var rowData = $(this).getRowData(rowId);
|
var rowData = $(this).getRowData(rowId);
|
||||||
var bjobBzwkDstcd = rowData['BJOBBZWKDSTCD'].trim();
|
var bjobBzwkDstcd = rowData['BJOBBZWKDSTCD'].trim();
|
||||||
var osidInstiDstcd = rowData['OSIDINSTIDSTCD'].trim();
|
var osidInstiDstcd = rowData['OSIDINSTIDSTCD'].trim();
|
||||||
var url = '<c:url value="/bap/admin/work/systemInstMan.view" />';
|
var url = '<c:url value="/bap/admin/work/systemInstMan.view" />';
|
||||||
url += '?cmd=DETAIL';
|
url = url + '?cmd=DETAIL';
|
||||||
url += '&page=' + $(this).getGridParam("page");
|
url = url + '&page='+$(this).getGridParam("page");
|
||||||
url += '&menuId=' + '${param.menuId}';
|
url = url + '&menuId='+'${param.menuId}';
|
||||||
url += '&returnUrl=' + getReturnUrl();
|
url = url + '&returnUrl='+getReturnUrl();
|
||||||
url += '&bjobBzwkDstcd=' + bjobBzwkDstcd;
|
url = url + '&bjobBzwkDstcd='+bjobBzwkDstcd;
|
||||||
url += '&osidInstiDstcd=' + osidInstiDstcd;
|
url = url + '&osidInstiDstcd='+osidInstiDstcd;
|
||||||
url += '&' + getSearchUrl();
|
url = url + '&'+getSearchUrl();
|
||||||
//검색값
|
//검색값
|
||||||
goNav(url);
|
goNav(url);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
resizeJqGridWidth('grid', 'title', '1000');
|
resizeJqGridWidth('grid','title','1000');
|
||||||
var url ='<c:url value="/bap/admin/work/systemInstMan.json" />';
|
var url ='<c:url value="/bap/admin/work/systemInstMan.json" />';
|
||||||
list(url);
|
list(url);
|
||||||
|
|
||||||
$("#btn_search").click(function() {
|
$("#btn_search").click(function(){
|
||||||
var postData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로
|
var postData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로
|
||||||
$("#grid").setGridParam({url:url, postData: postData,page:"1" }).trigger("reloadGrid");
|
$("#grid").setGridParam({url:url, postData: postData,page:"1" }).trigger("reloadGrid");
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#btn_new").click(function() {
|
$("#btn_new").click(function(){
|
||||||
var url = '<c:url value="/bap/admin/work/systemInstMan.view"/>';
|
var url = '<c:url value="/bap/admin/work/systemInstMan.view"/>';
|
||||||
url += '?cmd=DETAIL';
|
url = url + '?cmd=DETAIL';
|
||||||
url += '&page=' + $("#grid").getGridParam("page");
|
url = url + '&page='+$("#grid").getGridParam("page");
|
||||||
url += '&returnUrl=' + getReturnUrl();
|
url = url + '&returnUrl='+getReturnUrl();
|
||||||
url += '&menuId=' + '${param.menuId}';
|
url = url + '&menuId='+'${param.menuId}';
|
||||||
//검색값
|
//검색값
|
||||||
url += '&' + getSearchUrl();
|
url = url + '&'+getSearchUrl();
|
||||||
|
|
||||||
goNav(url);
|
goNav(url);
|
||||||
});
|
});
|
||||||
|
|
||||||
$("input[name^=search]").keydown(function(key) {
|
$("input[name^=search]").keydown(function(key){
|
||||||
if( key.keyCode == 13 ) {
|
if (key.keyCode == 13){
|
||||||
$("#btn_search").click();
|
$("#btn_search").click();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#btn_excel").click(function(event) {
|
|
||||||
event.stopPropagation(); // Do not propagate the event.
|
|
||||||
// Create an object that will manage to download the file.
|
|
||||||
var merge = new Array();
|
|
||||||
gridToExcelSubmit(url_excel, "LIST_GRID_TO_EXCEL", $("#grid"), $("#ajaxForm"), "배치 세부 기관 관리", merge);
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#btn_download").click(function() {
|
|
||||||
let selectedVal = "";
|
|
||||||
const rowIds = $("#grid").getGridParam("selarrrow");
|
|
||||||
|
|
||||||
rowIds.forEach(rowId => {
|
|
||||||
selectedVal += "," + $("#grid").getRowData(rowId).BJOBBZWKDSTCD + '_' + $("#grid").getRowData(rowId).OSIDINSTIDSTCD;
|
|
||||||
});
|
|
||||||
|
|
||||||
if( selectedVal != "" ) selectedVal = selectedVal.substring(1);
|
|
||||||
|
|
||||||
var url ='<c:url value="/loader.do" />';
|
|
||||||
url += '?cmd=systemInstMan';
|
|
||||||
url += '&control=download';
|
|
||||||
url += '&serviceType=' + sessionStorage["serviceType"];
|
|
||||||
url += '&fileName=systemInstMan';
|
|
||||||
url += '&selectedVal=' + selectedVal;
|
|
||||||
url += '&' + getSearchUrl();
|
|
||||||
|
|
||||||
goNav(url);
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#multiform").on('submit', fileupload);
|
|
||||||
$('#btn_upload').click(function() {
|
|
||||||
if( confirm( "동일한 이름의 경우 기존내용을 수정합니다.\n\n업로드 하시겠습니까?" ) != true ) return;
|
|
||||||
|
|
||||||
if( window.FormData !== undefined ) {
|
|
||||||
$("input[name=file]").click();
|
|
||||||
} else {
|
|
||||||
if( $("input[name=file]").val() == "" ) return;
|
|
||||||
$("#multiform").submit();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if( window.FormData !== undefined ) {
|
|
||||||
$("input[name=file]").change(function(ev) {
|
|
||||||
var filename = $(this).val().split('\\').pop();
|
|
||||||
|
|
||||||
if( !filename.startsWith('systemInstMan') ) {
|
|
||||||
alert("배치 세부기관 관리 JSON 파일을 선택하십시오.\n\n[파일명 : systemInstMan.json]")
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( filename == "" ) return;
|
|
||||||
else $("#multiform").submit();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if( window.FormData !== undefined ) {
|
|
||||||
$("input[name=file]").hide();
|
|
||||||
} else {
|
|
||||||
$("input[name=file]").show();
|
|
||||||
}
|
|
||||||
|
|
||||||
buttonControl();
|
buttonControl();
|
||||||
|
|
||||||
$("input[name=searchOsidInstiName]").val()
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="right_box">
|
<div class="right_box">
|
||||||
<div class="content_top">
|
<div class="content_top">
|
||||||
<ul class="path">
|
<ul class="path">
|
||||||
<li><a href="#">${rmsMenuPath}</a></li>
|
<li><a href="#">${rmsMenuPath}</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div><!-- end content_top -->
|
</div><!-- end content_top -->
|
||||||
<div class="content_middle" id="title">
|
<div class="content_middle">
|
||||||
<form id="multiform" method="POST" enctype="multipart/form-data" action="<c:url value="/loader.file"/>">
|
<div class="search_wrap">
|
||||||
<div class="search_wrap">
|
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" />
|
||||||
<input type="file" id="file" name="file" style="display:inline-block"/>
|
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
||||||
<input type="hidden" name="cmd" value="systemInstMan"/>
|
</div>
|
||||||
<input type="hidden" name="control" value="upload"/>
|
<div class="title">시스템 대외기관 관리<span class="tooltip">일괄 전송에서 사용하는 대외 기관구분 코드를 관리 하는 화면입니다</span></div>
|
||||||
<img src="<c:url value="/img/btn_excel.png"/>" id="btn_excel" level="R"/>
|
|
||||||
<img src="<c:url value="/img/btn_upload.png"/>" alt="" id="btn_upload" level="W" />
|
<table class="search_condition" cellspacing=0;>
|
||||||
<img src="<c:url value="/img/btn_download.png"/>" alt="" id="btn_download" level="R" />
|
<tbody>
|
||||||
<img src="<c:url value="/img/btn_new.png"/>" alt="" id="btn_new" level="W" />
|
<tr>
|
||||||
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
<th style="width:80px;">대외기관명</th>
|
||||||
</div>
|
<td><input type="text" name="searchOsidInstiName" value="${param.searchOsidInstiName}"></td>
|
||||||
</form>
|
<th style="width:100px;">대외기관코드</th>
|
||||||
<div class="title">배치 세부 기관 관리<span class="tooltip">일괄 전송에서 사용하는 배치 세부 기관 코드를 관리 하는 화면입니다</span></div>
|
<td><input type="text" name="searchOsidInstiDstcd" value="${param.searchOsidInstiDstcd}"></td>
|
||||||
|
<th style="width:100px;">업무구분명</th>
|
||||||
<table class="search_condition" cellspacing=0;>
|
<td><input type="text" name="searchBjobBzwkName" value="${param.searchBjobBzwkName}"></td>
|
||||||
<tbody>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th style="width:180px;">배치 세부 기관 명</th>
|
<th style="width:80px;">업무구분코드</th>
|
||||||
<td><input type="text" name="searchOsidInstiName" value="${param.searchOsidInstiName}"></td>
|
<td><input type="text" name="searchBjobBzwkDstcd" value="${param.searchBjobBzwkDstcd}"></td>
|
||||||
<th style="width:180px;">배치 세부 기관 코드</th>
|
<!-- 광주은행 U2L 요구사항 2023.11.28 -->
|
||||||
<td><input type="text" name="searchOsidInstiDstcd" value="${param.searchOsidInstiDstcd}"></td>
|
<th style="width:100px;">송신처리규칙코드</th>
|
||||||
<th style="width:180px;">배치 기관명</th>
|
<td><input type="text" name="searchSendPrcssRulecd" value="${param.searchSendPrcssRulecd}"></td>
|
||||||
<td><input type="text" name="searchBjobBzwkName" value="${param.searchBjobBzwkName}"></td>
|
<th style="width:100px;">수신처리규칙코드</th>
|
||||||
</tr>
|
<td><input type="text" name="searchRecvPrcssRulecd" value="${param.searchRecvPrcssRulecd}"></td>
|
||||||
</tbody>
|
<!-- 광주은행 U2L 요구사항 2023.11.28 -->
|
||||||
</table>
|
|
||||||
<table id="grid" ></table>
|
</tr>
|
||||||
<div id="pager"></div>
|
</tbody>
|
||||||
</div><!-- end content_middle -->
|
</table>
|
||||||
</div><!-- end right_box -->
|
<table id="grid" ></table>
|
||||||
</body>
|
<div id="pager"></div>
|
||||||
|
|
||||||
|
</div><!-- end content_middle -->
|
||||||
|
</div><!-- end right_box -->
|
||||||
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ function init(key1, key2) {
|
|||||||
getBjobBzwkDstcd(key1, key2);
|
getBjobBzwkDstcd(key1, key2);
|
||||||
getBjobBzwkPrcssDstcd(key1, key2);
|
getBjobBzwkPrcssDstcd(key1, key2);
|
||||||
getAdaptorGroup(key1, key2);
|
getAdaptorGroup(key1, key2);
|
||||||
setSearchable(selectName); // 콤보에 searchable 설정
|
//setSearchable(selectName); // 콤보에 searchable 설정
|
||||||
}
|
}
|
||||||
|
|
||||||
function getBjobBzwkDstcd(key1, key2) {
|
function getBjobBzwkDstcd(key1, key2) {
|
||||||
@@ -178,7 +178,7 @@ function getAdaptorGroup(key1, key2) {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function(e) {
|
error: function(e) {
|
||||||
alert(e.responseText);
|
//alert(e.responseText);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -224,7 +224,7 @@ function detail(key1,key2) {
|
|||||||
$("#grid")[0].addJSONData(data);
|
$("#grid")[0].addJSONData(data);
|
||||||
},
|
},
|
||||||
error: function(e) {
|
error: function(e) {
|
||||||
alert(e.responseText);
|
//alert(e.responseText);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -245,7 +245,7 @@ function setRqstRspnsDstcd() {
|
|||||||
$("select[name=adptrBzwkName]").val(sysLnkgList["ADPTRBZWKNAME"]);
|
$("select[name=adptrBzwkName]").val(sysLnkgList["ADPTRBZWKNAME"]);
|
||||||
},
|
},
|
||||||
error: function(e) {
|
error: function(e) {
|
||||||
alert(e.responseText);
|
//alert(e.responseText);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -214,7 +214,7 @@ $(document).ready(function() {
|
|||||||
</div><!-- end content_top -->
|
</div><!-- end content_top -->
|
||||||
<div class="content_middle" id="content_middle">
|
<div class="content_middle" id="content_middle">
|
||||||
<div class="search_wrap">
|
<div class="search_wrap">
|
||||||
<img src="<c:url value="/img/btn_excel.png"/>" id="btn_excel" level="R"/>
|
<%-- <img src="<c:url value="/img/btn_excel.png"/>" id="btn_excel" level="R"/> --%>
|
||||||
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
||||||
</div>
|
</div>
|
||||||
<div class="title">진행작업 관리</div>
|
<div class="title">진행작업 관리</div>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -13,97 +13,96 @@
|
|||||||
<jsp:include page="/jsp/common/include/css.jsp"/>
|
<jsp:include page="/jsp/common/include/css.jsp"/>
|
||||||
<jsp:include page="/jsp/common/include/script.jsp"/>
|
<jsp:include page="/jsp/common/include/script.jsp"/>
|
||||||
<script language="javascript" >
|
<script language="javascript" >
|
||||||
var url = '<c:url value="/bap/transaction/transactionTraceMan.json" />';
|
|
||||||
var url_view = '<c:url value="/bap/transaction/transactionTraceMan.view" />';
|
|
||||||
var url_excel = '<c:url value="/common/noauth/excel/listGridToExcel.json" />';
|
|
||||||
|
|
||||||
function init( callback ) {
|
var url = '<c:url value="/bap/transaction/transactionTraceMan.json" />';
|
||||||
|
var url_view = '<c:url value="/bap/transaction/transactionTraceMan.view" />';
|
||||||
// $("input[name=searchStartYYYYMMDD],input[name=searchEndYYYYMMDD]").inputmask({ alias: "datetime",autoUnmask: true, inputFormat : "yyyy-mm-dd",outputFormat : "yyyymmdd" });
|
|
||||||
// $("input[name=searchStartHHMM],input[name=searchEndHHMM]").inputmask({ alias: "datetime",autoUnmask: true, inputFormat : "HH:MM:ss",outputFormat : "HHMMss" });
|
|
||||||
|
|
||||||
$("input[name=searchStartYYYYMMDD],input[name=searchEndYYYYMMDD]").inputmask("yyyy-mm-dd",{'autoUnmask':true});
|
function init( callback ) {
|
||||||
$("input[name=searchStartHHMM],input[name=searchEndHHMM]").inputmask("hh:mm:ss",{'autoUnmask':true});
|
|
||||||
|
/* $("input[name=searchStartYYYYMMDD],input[name=searchEndYYYYMMDD]").inputmask({ alias: "datetime",autoUnmask: true, inputFormat : "yyyy-mm-dd",outputFormat : "yyyymmdd" });
|
||||||
|
$("input[name=searchStartHHMM],input[name=searchEndHHMM]").inputmask({ alias: "datetime",autoUnmask: true, inputFormat : "HH:MM:ss",outputFormat : "HHMMss" }); */
|
||||||
|
|
||||||
|
$("input[name=searchStartYYYYMMDD],input[name=searchEndYYYYMMDD]").inputmask("yyyy-mm-dd",{'autoUnmask':true});
|
||||||
var searchStartYYYYMMDD = "${param.searchStartYYYYMMDD}";
|
$("input[name=searchStartHHMM],input[name=searchEndHHMM]").inputmask("hh:mm:ss",{'autoUnmask':true});
|
||||||
var searchEndYYYYMMDD = "${param.searchEndYYYYMMDD}";
|
var searchStartYYYYMMDD = "${param.searchStartYYYYMMDD}";
|
||||||
var searchStartHHMM = "${param.searchStartHHMM}";
|
var searchEndYYYYMMDD = "${param.searchEndYYYYMMDD}";
|
||||||
var searchEndHHMM = "${param.searchEndHHMM}";
|
var searchStartHHMM = "${param.searchStartHHMM}";
|
||||||
|
var searchEndHHMM = "${param.searchEndHHMM}";
|
||||||
if ( searchStartYYYYMMDD == null || searchStartYYYYMMDD == '') {
|
|
||||||
$("input[name=searchStartYYYYMMDD]").val(getToday());
|
if ( searchStartYYYYMMDD == null || searchStartYYYYMMDD == ''){
|
||||||
}
|
$("input[name=searchStartYYYYMMDD]").val(getToday());
|
||||||
|
}
|
||||||
if ( searchEndYYYYMMDD == null || searchEndYYYYMMDD == '') {
|
|
||||||
$("input[name=searchEndYYYYMMDD]").val(getToday());
|
if ( searchEndYYYYMMDD == null || searchEndYYYYMMDD == ''){
|
||||||
}
|
$("input[name=searchEndYYYYMMDD]").val(getToday());
|
||||||
|
}
|
||||||
if ( searchStartHHMM == null || searchStartHHMM == '') {
|
|
||||||
$("input[name=searchStartHHMM]").val('000000');
|
if ( searchStartHHMM == null || searchStartHHMM == ''){
|
||||||
}
|
$("input[name=searchStartHHMM]").val('000000');
|
||||||
|
}
|
||||||
if ( searchEndHHMM == null || searchEndHHMM == '') {
|
|
||||||
$("input[name=searchEndHHMM]").val('235959');
|
if ( searchEndHHMM == null || searchEndHHMM == ''){
|
||||||
}
|
$("input[name=searchEndHHMM]").val('235959');
|
||||||
|
}
|
||||||
$.ajax({
|
|
||||||
type : "POST",
|
$.ajax({
|
||||||
url:url,
|
type : "POST",
|
||||||
dataType:"json",
|
url:url,
|
||||||
data:{cmd: 'LIST_INIT_COMBO'},
|
dataType:"json",
|
||||||
success:function(json) {
|
data:{cmd: 'LIST_INIT_COMBO'},
|
||||||
new makeOptions("CODE","NAME").setObj($("select[name=searchBjobBzwkDstcd]")).setNoValueInclude(true).setNoValue('','전체').setData(json.bjobBzwkDstcd).rendering();
|
success:function(json){
|
||||||
$("select[name=searchEaiBzwkDstcd]").searchable();
|
new makeOptions("CODE","NAME").setObj($("select[name=searchBjobBzwkDstcd]")).setNoValueInclude(true).setNoValue('','전체').setData(json.bjobBzwkDstcd).rendering();
|
||||||
putSelectFromParam();
|
$("select[name=searchEaiBzwkDstcd]").searchable();
|
||||||
if (typeof callback === 'function') {
|
putSelectFromParam();
|
||||||
callback();
|
if (typeof callback === 'function') {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error:function(e){
|
||||||
|
// alert(e.responseText);
|
||||||
}
|
}
|
||||||
},
|
});
|
||||||
error:function(e){
|
|
||||||
alert(e.responseText);
|
}
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function detail() {
|
function detail(){
|
||||||
var start = $("input[name=searchStartYYYYMMDD]").val().replace("-","")+$("input[name=searchStartHHMM]").val().replace(":","");
|
var start = $("input[name=searchStartYYYYMMDD]").val().replace("-","")+$("input[name=searchStartHHMM]").val().replace(":","");
|
||||||
var end = $("input[name=searchEndYYYYMMDD]").val().replace("-","")+$("input[name=searchEndHHMM]").val().replace(":","");
|
var end = $("input[name=searchEndYYYYMMDD]").val().replace("-","")+$("input[name=searchEndHHMM]").val().replace(":","");
|
||||||
$("input[name=searchStartTime]").val(start);
|
$("input[name=searchStartTime]").val(start);
|
||||||
$("input[name=searchEndTime]").val(end);
|
$("input[name=searchEndTime]").val(end);
|
||||||
|
|
||||||
|
var postData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로
|
||||||
|
$("#grid").setGridParam({ url:url,postData: postData }).trigger("reloadGrid");
|
||||||
|
}
|
||||||
|
|
||||||
|
function resend(bjobDmndMsgID, bjobDmndSubMsgID, fileTrsmtLogID, sndRecvFileName){
|
||||||
|
|
||||||
|
if ( confirm( "해당 건을 재 전송 하시겠습니까?" ) != true ){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var postData = new Array();
|
||||||
|
postData.push({ name: "cmd" , value:"TRANSACTION_RESEND"});
|
||||||
|
postData.push({ name: "bjobDmndMsgID" , value:bjobDmndMsgID});
|
||||||
|
postData.push({ name: "bjobDmndSubMsgID" , value:bjobDmndSubMsgID});
|
||||||
|
postData.push({ name: "fileTrsmtLogID" , value:fileTrsmtLogID});
|
||||||
|
postData.push({ name: "sndRecvFileName" , value:sndRecvFileName});
|
||||||
|
$.ajax({
|
||||||
|
type : "POST",
|
||||||
|
url:url,
|
||||||
|
data:postData,
|
||||||
|
success:function(args){
|
||||||
|
debugger;
|
||||||
|
$("#grid").trigger("reloadGrid");
|
||||||
|
alert( args.result );
|
||||||
|
},
|
||||||
|
error:function(e){
|
||||||
|
// alert(e.responseText);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
var postData = getSearchForJqgrid("cmd","LIST"); //jqgrid에서는 object 로
|
$(document).ready(function() {
|
||||||
$("#grid").setGridParam({ url:url,postData: postData }).trigger("reloadGrid");
|
|
||||||
}
|
|
||||||
|
|
||||||
function resend(bjobDmndMsgID, bjobDmndSubMsgID, fileTrsmtLogID, sndRecvFileName, bjobMsgDstcd) {
|
|
||||||
|
|
||||||
if ( confirm( "해당 건을 재 전송 하시겠습니까?" ) != true ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var postData = new Array();
|
|
||||||
postData.push({ name: "cmd" , value:"TRANSACTION_RESEND"});
|
|
||||||
postData.push({ name: "bjobDmndMsgID" , value:bjobDmndMsgID});
|
|
||||||
postData.push({ name: "bjobDmndSubMsgID" , value:bjobDmndSubMsgID});
|
|
||||||
postData.push({ name: "fileTrsmtLogID" , value:fileTrsmtLogID});
|
|
||||||
postData.push({ name: "sndRecvFileName" , value:sndRecvFileName});
|
|
||||||
postData.push({ name: "bjobMsgDstcd" , value:bjobMsgDstcd});
|
|
||||||
$.ajax({
|
|
||||||
type : "POST",
|
|
||||||
url:url,
|
|
||||||
data:postData,
|
|
||||||
success:function(args){
|
|
||||||
$("#grid").trigger("reloadGrid");
|
|
||||||
alert( args.result );
|
|
||||||
},
|
|
||||||
error:function(e){
|
|
||||||
alert(e.responseText);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
$(document).ready(function() {
|
|
||||||
init( detail);
|
init( detail);
|
||||||
$('#grid').jqGrid({
|
$('#grid').jqGrid({
|
||||||
datatype:"json",
|
datatype:"json",
|
||||||
@@ -114,7 +113,6 @@ $(document).ready(function() {
|
|||||||
'SUBUUID',
|
'SUBUUID',
|
||||||
'전송로그ID',
|
'전송로그ID',
|
||||||
'프레임웍구분',
|
'프레임웍구분',
|
||||||
'인터페이스ID',
|
|
||||||
'업무구분',
|
'업무구분',
|
||||||
'기관명',
|
'기관명',
|
||||||
'파일명',
|
'파일명',
|
||||||
@@ -131,7 +129,6 @@ $(document).ready(function() {
|
|||||||
{ name : 'BJOBDMNDSUBMSGID' , align : 'left' , hidden:true },
|
{ name : 'BJOBDMNDSUBMSGID' , align : 'left' , hidden:true },
|
||||||
{ name : 'FILETRSMTLOGID' , align : 'left' , hidden:true },
|
{ name : 'FILETRSMTLOGID' , align : 'left' , hidden:true },
|
||||||
{ name : 'FRAMEWORKGB' , align : 'center' , width:40 },
|
{ name : 'FRAMEWORKGB' , align : 'center' , width:40 },
|
||||||
{ name : 'BJOBMSGDSTCD' , align : 'left' , width:60 },
|
|
||||||
{ name : 'BJOBBZWKNAME' , align : 'left' , width:60 },
|
{ name : 'BJOBBZWKNAME' , align : 'left' , width:60 },
|
||||||
{ name : 'OSIDINSTINAME' , align : 'left' , width:60 },
|
{ name : 'OSIDINSTINAME' , align : 'left' , width:60 },
|
||||||
{ name : 'SNDRCVFILENAME' , align : 'left' , width:60 },
|
{ name : 'SNDRCVFILENAME' , align : 'left' , width:60 },
|
||||||
@@ -147,6 +144,7 @@ $(document).ready(function() {
|
|||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
{ name : 'FILETRSMTSTARTHMS' , align:'center' , width:'80' , formatter: timeStampFormat },
|
{ name : 'FILETRSMTSTARTHMS' , align:'center' , width:'80' , formatter: timeStampFormat },
|
||||||
{ name : 'FILETRSMTENDHMS' , align:'center' , width:'80' , formatter: timeStampFormat },
|
{ name : 'FILETRSMTENDHMS' , align:'center' , width:'80' , formatter: timeStampFormat },
|
||||||
@@ -194,13 +192,15 @@ $(document).ready(function() {
|
|||||||
url2 = url2 + "&bjobDmndSubMsgID=" + bjobDmndSubMsgID;
|
url2 = url2 + "&bjobDmndSubMsgID=" + bjobDmndSubMsgID;
|
||||||
goNav(url2);
|
goNav(url2);
|
||||||
},
|
},
|
||||||
loadComplete:function (d) {
|
loadComplete:function (d){
|
||||||
var colModel = $(this).getGridParam("colModel");
|
var colModel = $(this).getGridParam("colModel");
|
||||||
for(var i = 0 ; i< colModel.length; i++){
|
for(var i = 0 ; i< colModel.length; i++){
|
||||||
$(this).setColProp(colModel[i].name, {sortable : false});
|
$(this).setColProp(colModel[i].name, {sortable : false});
|
||||||
}
|
}
|
||||||
},
|
|
||||||
gridComplete: function() {
|
},
|
||||||
|
gridComplete: function(){
|
||||||
|
debugger;
|
||||||
var ids = $(this).getDataIDs();
|
var ids = $(this).getDataIDs();
|
||||||
for(var i=0;i<ids.length;i++){
|
for(var i=0;i<ids.length;i++){
|
||||||
var cl = ids[i];
|
var cl = ids[i];
|
||||||
@@ -209,20 +209,19 @@ $(document).ready(function() {
|
|||||||
var bjobDmndSubMsgID = rowData['BJOBDMNDSUBMSGID'];
|
var bjobDmndSubMsgID = rowData['BJOBDMNDSUBMSGID'];
|
||||||
var fileTrsmtLogID = rowData['FILETRSMTLOGID'];
|
var fileTrsmtLogID = rowData['FILETRSMTLOGID'];
|
||||||
var sndRecvFileName = rowData['SNDRCVFILENAME'];
|
var sndRecvFileName = rowData['SNDRCVFILENAME'];
|
||||||
var bjobMsgDstcd = rowData['BJOBMSGDSTCD'];
|
|
||||||
|
|
||||||
var sndRcv = rowData['SNDRCV'];
|
var sndRcv = rowData['SNDRCV'];
|
||||||
if ( sndRcv == '송신' || fileTrsmtLogID.trim() != '' ) {
|
if ( sndRcv == '송신' || fileTrsmtLogID.trim() != '' ){
|
||||||
var be = "<input style='height:22px;width:60px;' type='button' value='재전송' onclick=\"resend('"+bjobDmndMsgID+"','"+bjobDmndSubMsgID+"','"+fileTrsmtLogID+"','"+sndRecvFileName+"','"+bjobMsgDstcd+"');\" />";
|
var be = "<input style='height:22px;width:60px;' type='button' value='재전송' onclick=\"resend('"+bjobDmndMsgID+"','"+bjobDmndSubMsgID+"','"+fileTrsmtLogID+"','"+sndRecvFileName+"');\" />";
|
||||||
$(this).setRowData(ids[i],{RESEND:be});
|
$(this).setRowData(ids[i],{RESEND:be});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
resizeJqGridWidth('grid','content_middle','1000');
|
resizeJqGridWidth('grid','content_middle','1000');
|
||||||
|
|
||||||
$("#btn_search").click(function() {
|
$("#btn_search").click(function(){
|
||||||
var start = $("input[name=searchStartYYYYMMDD]").val().replace("-","")+$("input[name=searchStartHHMM]").val().replace(":","");
|
var start = $("input[name=searchStartYYYYMMDD]").val().replace("-","")+$("input[name=searchStartHHMM]").val().replace(":","");
|
||||||
var end = $("input[name=searchEndYYYYMMDD]").val().replace("-","")+$("input[name=searchEndHHMM]").val().replace(":","");
|
var end = $("input[name=searchEndYYYYMMDD]").val().replace("-","")+$("input[name=searchEndHHMM]").val().replace(":","");
|
||||||
$("input[name=searchStartTime]").val(start);
|
$("input[name=searchStartTime]").val(start);
|
||||||
@@ -231,106 +230,99 @@ $(document).ready(function() {
|
|||||||
$("#grid").setGridParam({ postData: postData ,page : "1" }).trigger("reloadGrid");
|
$("#grid").setGridParam({ postData: postData ,page : "1" }).trigger("reloadGrid");
|
||||||
});
|
});
|
||||||
|
|
||||||
$("input[name^=search]").keydown(function(key) {
|
$("input[name^=search]").keydown(function(key){
|
||||||
if (key.keyCode == 13){
|
if (key.keyCode == 13){
|
||||||
$("#btn_search").click();
|
$("#btn_search").click();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#btn_excel").click(function(event) {
|
|
||||||
event.stopPropagation(); // Do not propagate the event.
|
|
||||||
// Create an object that will manage to download the file.
|
|
||||||
var merge = new Array();
|
|
||||||
gridToExcelSubmit(url_excel, "LIST_GRID_TO_EXCEL", $("#grid"), $("#ajaxForm"), "거래 추적", merge);
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
|
|
||||||
buttonControl();
|
buttonControl();
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="right_box">
|
<div class="right_box">
|
||||||
<div class="content_top">
|
<div class="content_top">
|
||||||
<ul class="path">
|
<ul class="path">
|
||||||
<li><a href="#">${rmsMenuPath}</a></li>
|
<li><a href="#">${rmsMenuPath}</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div><!-- end content_top -->
|
</div><!-- end content_top -->
|
||||||
<div class="content_middle" id="content_middle">
|
<div class="content_middle" id="content_middle">
|
||||||
<div class="search_wrap">
|
<div class="search_wrap">
|
||||||
<img src="<c:url value="/img/btn_excel.png"/>" id="btn_excel" level="R"/>
|
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
||||||
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
</div>
|
||||||
</div>
|
<div class="title">거래 추적</div>
|
||||||
<div class="title">거래 추적</div>
|
|
||||||
|
<table class="search_condition" cellspacing=0;>
|
||||||
<table class="search_condition" cellspacing=0;>
|
<tbody>
|
||||||
<tbody>
|
<tr>
|
||||||
<tr>
|
<th style="width:100px;">프레임웍구분</th>
|
||||||
<th style="width:100px;">프레임웍구분</th>
|
<td>
|
||||||
<td>
|
<div class="select-style">
|
||||||
<div class="select-style">
|
<select name="searchFrameWorkGb" value="${param.searchFrameWorkGb}">
|
||||||
<select name="searchFrameWorkGb" value="${param.searchFrameWorkGb}">
|
<option value="2">전체</option>
|
||||||
<option value="2">전체</option>
|
<option value="0">내부</option>
|
||||||
<option value="0">내부</option>
|
<option value="1">대외</option>
|
||||||
<option value="1">대외</option>
|
</select>
|
||||||
</select>
|
</div><!-- end.select-style -->
|
||||||
</div><!-- end.select-style -->
|
</td>
|
||||||
</td>
|
<th style="width:100px;">업무구분명</th>
|
||||||
<th style="width:100px;">업무구분명</th>
|
<td>
|
||||||
<td>
|
<div class="select-style">
|
||||||
<div class="select-style">
|
<select name="searchBjobBzwkDstcd" value="${param.searchBjobBzwkDstcd}">
|
||||||
<select name="searchBjobBzwkDstcd" value="${param.searchBjobBzwkDstcd}">
|
</select>
|
||||||
</select>
|
</div>
|
||||||
</div>
|
</td>
|
||||||
</td>
|
<th style="width:100px;">송수신구분</th>
|
||||||
<th style="width:100px;">송수신구분</th>
|
<td>
|
||||||
<td>
|
<div class="select-style">
|
||||||
<div class="select-style">
|
<select name="searchSndRcv" value="${param.searchSndRcv}">
|
||||||
<select name="searchSndRcv" value="${param.searchSndRcv}">
|
<option value="A">전체</option>
|
||||||
<option value="A">전체</option>
|
<option value="S">송신</option>
|
||||||
<option value="S">송신</option>
|
<option value="R">수신</option>
|
||||||
<option value="R">수신</option>
|
</select>
|
||||||
</select>
|
</div>
|
||||||
</div>
|
</td>
|
||||||
</td>
|
<th style="width:100px;">상태</th>
|
||||||
<th style="width:100px;">상태</th>
|
<td>
|
||||||
<td>
|
<div class="select-style">
|
||||||
<div class="select-style">
|
<select name="searchThisStgePrcssRsultCd" value="${param.searchThisStgePrcssRsultCd}">
|
||||||
<select name="searchThisStgePrcssRsultCd" value="${param.searchThisStgePrcssRsultCd}">
|
<option value="">전체</option>
|
||||||
<option value="">전체</option>
|
<option value="T">정상</option>
|
||||||
<option value="T">정상</option>
|
<option value="E">에러</option>
|
||||||
<option value="E">에러</option>
|
<option value="S">전송중</option>
|
||||||
<option value="S">전송중</option>
|
</select>
|
||||||
</select>
|
</div>
|
||||||
</div>
|
</td>
|
||||||
</td>
|
</tr>
|
||||||
</tr>
|
<tr>
|
||||||
<tr>
|
<th style="width:100px;">파일명</th>
|
||||||
<th style="width:100px;">파일명</th>
|
<td>
|
||||||
<td>
|
<input type="text" name="searchSndrcvFileName" value="${param.searchSndrcvFileName}">
|
||||||
<input type="text" name="searchSndrcvFileName" value="${param.searchSndrcvFileName}">
|
</td>
|
||||||
</td>
|
<th style="width:100px;">기관명</th>
|
||||||
<th style="width:100px;">기관명</th>
|
<td>
|
||||||
<td>
|
<input type="text" name="searchOsidInstiName" value="${param.searchOsidInstiName}">
|
||||||
<input type="text" name="searchOsidInstiName" value="${param.searchOsidInstiName}">
|
</td>
|
||||||
</td>
|
<th style="width:100px;">거래기간</th>
|
||||||
<th style="width:100px;">거래기간</th>
|
<td colspan="3">
|
||||||
<td colspan="3">
|
<input type="text" name="searchStartYYYYMMDD" maxlength="10" value="" size="10" style="width:80px;">
|
||||||
<input type="text" name="searchStartYYYYMMDD" maxlength="10" value="" size="10" style="width:80px;">
|
<input type="text" name="searchStartHHMM" maxlength="8" value="" size="8" style="width:80px;"> ~
|
||||||
<input type="text" name="searchStartHHMM" maxlength="8" value="" size="8" style="width:80px;"> ~
|
<input type="text" name="searchEndYYYYMMDD" maxlength="10" value="" size="10" style="width:80px;">
|
||||||
<input type="text" name="searchEndYYYYMMDD" maxlength="10" value="" size="10" style="width:80px;">
|
<input type="text" name="searchEndHHMM" maxlength="8" value="" size="8" style="width:80px;">
|
||||||
<input type="text" name="searchEndHHMM" maxlength="8" value="" size="8" style="width:80px;">
|
<input type="hidden" name="searchStartTime" value="20170201000000">
|
||||||
<input type="hidden" name="searchStartTime" value="20170201000000">
|
<input type="hidden" name="searchEndTime" value="20170201235959">
|
||||||
<input type="hidden" name="searchEndTime" value="20170201235959">
|
</td>
|
||||||
</td>
|
</tr>
|
||||||
</tr>
|
</tbody>
|
||||||
</tbody>
|
</table>
|
||||||
</table>
|
|
||||||
<table id="grid" ></table>
|
<table id="grid" ></table>
|
||||||
<div id="pager"></div>
|
<div id="pager"></div>
|
||||||
</div><!-- end content_middle -->
|
</div><!-- end content_middle -->
|
||||||
</div><!-- end right_box -->
|
</div><!-- end right_box -->
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -144,7 +144,7 @@ $(document).ready(function() {
|
|||||||
autowidth: true,
|
autowidth: true,
|
||||||
viewrecords: true,
|
viewrecords: true,
|
||||||
gridview: true,
|
gridview: true,
|
||||||
multiselect: true,
|
/* multiselect: true, */
|
||||||
rowList: eval('[${rmsDefaultRowList}]'),
|
rowList: eval('[${rmsDefaultRowList}]'),
|
||||||
gridComplete: function (d) {
|
gridComplete: function (d) {
|
||||||
var colModel = $(this).getGridParam("colModel");
|
var colModel = $(this).getGridParam("colModel");
|
||||||
@@ -250,8 +250,8 @@ $(document).ready(function() {
|
|||||||
</div><!-- end content_top -->
|
</div><!-- end content_top -->
|
||||||
<div class="content_middle" id="content_middle">
|
<div class="content_middle" id="content_middle">
|
||||||
<div class="search_wrap">
|
<div class="search_wrap">
|
||||||
<img src="<c:url value="/img/btn_excel.png"/>" id="btn_excel" level="R"/>
|
<%-- <img src="<c:url value="/img/btn_excel.png"/>" id="btn_excel" level="R"/>
|
||||||
<img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" status="DETAIL"/>
|
<img src="<c:url value="/img/btn_delete.png"/>" alt="" id="btn_delete" level="W" status="DETAIL"/> --%>
|
||||||
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
<img src="<c:url value="/img/btn_search.png"/>" alt="" id="btn_search" level="R" />
|
||||||
</div>
|
</div>
|
||||||
<div class="title">작업대기 관리</div>
|
<div class="title">작업대기 관리</div>
|
||||||
|
|||||||
@@ -86,30 +86,33 @@
|
|||||||
$("#loginForm").submit();
|
$("#loginForm").submit();
|
||||||
}
|
}
|
||||||
function changePwd(){
|
function changePwd(){
|
||||||
if ($("input[name=userId]").val() == null || $("input[name=userId]").val().length == 0 ){
|
if ($("input[name=resetUserId]").val() == null || $("input[name=resetUserId]").val().length == 0 ){
|
||||||
alert("<%= localeMessage.getString("login.checkid") %>");
|
alert("<%= localeMessage.getString("login.checkid") %>");
|
||||||
$("input[name=userId]").trigger("focus");
|
$("input[name=resetUserId]").trigger("focus");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ($("input[name=password]").val() == null || $("input[name=password]").val().trim().length == 0 ){
|
if ($("input[name=resetPassword]").val() == null || $("input[name=resetPassword]").val().trim().length == 0 ){
|
||||||
alert("<%= localeMessage.getString("login.checkpwd1") %>");
|
alert("<%= localeMessage.getString("login.checkpwd1") %>");
|
||||||
$("input[name=password]").trigger("focus");
|
$("input[name=resetPassword]").trigger("focus");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ($("input[name=password]").length == 0){
|
if ($("input[name=changePassword]").val() == null || $("input[name=changePassword]").val().trim().length == 0 ){
|
||||||
alert("<%= localeMessage.getString("login.checkpwd2") %>");
|
alert("<%= localeMessage.getString("login.checkpwd2") %>");
|
||||||
|
$("input[name=changePassword]").trigger("focus");
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
if ($("input[name=changePassword]").length == 0){
|
if ($("input[name=confirmPassword]").val() == null || $("input[name=confirmPassword]").val().trim().length == 0 ){
|
||||||
alert("<%= localeMessage.getString("login.checkpwd3") %>");
|
alert("<%= localeMessage.getString("login.checkpwd3") %>");
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
if ($("input[name=confirmPassword]").val() != $("input[name=changePassword]").val()){
|
if ($("input[name=confirmPassword]").val() != $("input[name=confirmPassword]").val()){
|
||||||
alert("<%= localeMessage.getString("login.checkpwd4") %>");
|
alert("<%= localeMessage.getString("login.checkpwd4") %>");
|
||||||
|
$("input[name=confirmPassword]").trigger("focus");
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
if ($("input[name=userId]").val() == $("input[name=changePassword]").val()){
|
if ($("input[name=resetUserId]").val() == $("input[name=changePassword]").val()){
|
||||||
alert("<%= localeMessage.getString("login.checkpwd5") %>");
|
alert("<%= localeMessage.getString("login.checkpwd5") %>");
|
||||||
|
$("input[name=changePassword]").trigger("focus");
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,21 +124,6 @@
|
|||||||
--%>
|
--%>
|
||||||
$("form").submit();
|
$("form").submit();
|
||||||
}
|
}
|
||||||
|
|
||||||
function openPwdChgWindow() {
|
|
||||||
|
|
||||||
<%
|
|
||||||
if(sysMode.equals("T") || sysMode.equals("D")) {
|
|
||||||
%>
|
|
||||||
windowOpen("http://ssodev.kbankwithu.com:7010", "PopupWindow", 1024, 768);
|
|
||||||
<%
|
|
||||||
} else {
|
|
||||||
%>
|
|
||||||
windowOpen("https://ssoap.kbankwithu.com/nls3/clientLogin.jsp", "PopupWindow", 1024, 768);
|
|
||||||
<%
|
|
||||||
}
|
|
||||||
%>
|
|
||||||
}
|
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
$("input[name=userId]").keydown(function(event){
|
$("input[name=userId]").keydown(function(event){
|
||||||
@@ -215,18 +203,18 @@
|
|||||||
<input type="button" id ="btn_login" class="form-control btn btn-primary rounded submit px-3" value="Login">
|
<input type="button" id ="btn_login" class="form-control btn btn-primary rounded submit px-3" value="Login">
|
||||||
</div>
|
</div>
|
||||||
<div style="text-align: right !important;" class="form-group">
|
<div style="text-align: right !important;" class="form-group">
|
||||||
<a style="font-size: 12px !important;" href="#pwdChgSsoModal" onclick="openPwdChgWindow()" >Password Change</a>
|
<a style="font-size: 12px !important;" href="#pwdChgModal" data-toggle="modal" >Password Change</a>
|
||||||
<!-- <a style="font-size: 12px !important;" href="#pwdChgModal" data-toggle="modal" >Password Change</a> -->
|
|
||||||
</div>
|
</div>
|
||||||
<p style="color:red;"><%=resultMsg %></p>
|
<p style="color:red;"><%=resultMsg %></p>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<%-- <div class="modal fade" id="pwdChgModal" tabindex="-1" role="dialog" aria-labelledby="pwdChgModalLabel" aria-hidden="true">
|
<div class="modal fade" id="pwdChgModal" tabindex="-1" role="dialog" aria-labelledby="pwdChgModalLabel" aria-hidden="true">
|
||||||
<div class="modal-dialog" role="document">
|
<div class="modal-dialog" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
@@ -238,10 +226,10 @@
|
|||||||
<form name="form" id="modalLoginForm" action="<c:url value="/changePassword.do"/>" method="post">
|
<form name="form" id="modalLoginForm" action="<c:url value="/changePassword.do"/>" method="post">
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="form-group d-flex">
|
<div class="form-group d-flex">
|
||||||
<input type="text" name="userId" class="form-control rounded-left" placeholder="User Id" required>
|
<input type="text" name="resetUserId" class="form-control rounded-left" placeholder="User Id" required>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group d-flex">
|
<div class="form-group d-flex">
|
||||||
<input type="password" name="password" class="form-control rounded-left" placeholder="<%= localeMessage.getString("login.placeholderCurrentPassword") %>" required>
|
<input type="password" name="resetPassword" class="form-control rounded-left" placeholder="<%= localeMessage.getString("login.placeholderCurrentPassword") %>" required>
|
||||||
</div>
|
</div>
|
||||||
<p><%= localeMessage.getString("login.toChangePasswordMessage") %></p>
|
<p><%= localeMessage.getString("login.toChangePasswordMessage") %></p>
|
||||||
<div class="form-group d-flex">
|
<div class="form-group d-flex">
|
||||||
@@ -257,7 +245,7 @@
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div> --%>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -205,14 +205,11 @@
|
|||||||
|
|
||||||
if (isDetail){
|
if (isDetail){
|
||||||
$("#title").append(" 수정")
|
$("#title").append(" 수정")
|
||||||
$("#btn_modify").prop('disabled', true);
|
|
||||||
$("#btn_unmask").show();
|
|
||||||
buttonControl(true);
|
buttonControl(true);
|
||||||
} else {
|
} else {
|
||||||
$("#title").append(" 등록")
|
$("#title").append(" 등록")
|
||||||
$("#managerInfoSectionTitle").hide();
|
$("#managerInfoSectionTitle").hide();
|
||||||
$("#btn_modify").html('<i class="material-icons">save</i> <%= localeMessage.getString("button.register") %></button>');
|
$("#btn_modify").html('<i class="material-icons">save</i> <%= localeMessage.getString("button.register") %></button>');
|
||||||
$("#btn_unmask").hide();
|
|
||||||
buttonControl(false);
|
buttonControl(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -397,69 +394,6 @@
|
|||||||
downloadFile(fileId, '1'); // fileSn은 '1'로 가정
|
downloadFile(fileId, '1'); // fileSn은 '1'로 가정
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#btn_unmask").click(function () {
|
|
||||||
if (!isDetail) {
|
|
||||||
alert("등록된 정보만 마스킹 해제할 수 있습니다.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var reason = prompt("마스킹 해제 사유를 입력해 주세요");
|
|
||||||
|
|
||||||
if (reason != null && reason.trim() !== '') {
|
|
||||||
$.ajax({
|
|
||||||
type: "POST",
|
|
||||||
url: url,
|
|
||||||
dataType: "json",
|
|
||||||
data: {
|
|
||||||
cmd: "UNMASK",
|
|
||||||
id: key,
|
|
||||||
reason: reason // reason 파라미터 추가
|
|
||||||
},
|
|
||||||
success: function (json) {
|
|
||||||
var portalOrgData = json.portalOrg;
|
|
||||||
var corporateManagerData = json.corporateManager;
|
|
||||||
|
|
||||||
// 마스킹 해제된 데이터를 화면에 반영
|
|
||||||
$("#orgName").val(portalOrgData.orgName);
|
|
||||||
$("#orgCode").val(portalOrgData.orgCode);
|
|
||||||
$("#compRegNo").val(portalOrgData.compRegNo);
|
|
||||||
$("#corpRegNo").val(portalOrgData.corpRegNo);
|
|
||||||
$("#ceoName").val(portalOrgData.ceoName);
|
|
||||||
$("#orgAddr").val(portalOrgData.orgAddr);
|
|
||||||
|
|
||||||
$("#ipListBody").empty(); // 기존 IP 목록 삭제
|
|
||||||
if (portalOrgData.ipWhitelist) {
|
|
||||||
var ipList = portalOrgData.ipWhitelist.split(',');
|
|
||||||
ipList.forEach(function(ip, index) {
|
|
||||||
var trimmedIp = ip.trim();
|
|
||||||
if (trimmedIp) {
|
|
||||||
addIpToTable(trimmedIp, index + 1);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$("#ipWhitelist").val(portalOrgData.ipWhitelist);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (corporateManagerData) {
|
|
||||||
$("#userName").text(corporateManagerData.userName);
|
|
||||||
$("#userStatusDescription").text(corporateManagerData.userStatusDescription);
|
|
||||||
$("#emailAddr").text(corporateManagerData.emailAddr);
|
|
||||||
$("#mobileNumber").text(corporateManagerData.mobileNumber);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 마스킹 해제 성공 시 수정 버튼 활성화
|
|
||||||
$("#btn_modify").prop('disabled', false);
|
|
||||||
$("#btn_unmask").prop('disabled', true); // 마스킹 해제 버튼 비활성화
|
|
||||||
alert("마스킹 해제가 완료되었습니다. 이제 데이터를 수정할 수 있습니다.");
|
|
||||||
},
|
|
||||||
error: function (e) {
|
|
||||||
alert("마스킹 해제 중 오류가 발생했습니다. " + e.responseText);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else if (reason !== null) {
|
|
||||||
alert("마스킹 해제 사유를 입력해 주세요.");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#btn_modify").click(function(){
|
$("#btn_modify").click(function(){
|
||||||
if (!checkRequired("ajaxForm")) return;
|
if (!checkRequired("ajaxForm")) return;
|
||||||
|
|
||||||
@@ -611,7 +545,6 @@
|
|||||||
</div><!-- end content_top -->
|
</div><!-- end content_top -->
|
||||||
<div class="content_middle">
|
<div class="content_middle">
|
||||||
<div class="search_wrap">
|
<div class="search_wrap">
|
||||||
<button type="button" class="cssbtn" id="btn_unmask" level="W" status="DETAIL"><i class="material-icons">lock_open</i> 마스킹해제</button>
|
|
||||||
<button type="button" class="cssbtn" id="btn_modify" level="W" status="DETAIL,NEW"><i class="material-icons">save</i> <%= localeMessage.getString("button.modify") %></button>
|
<button type="button" class="cssbtn" id="btn_modify" level="W" status="DETAIL,NEW"><i class="material-icons">save</i> <%= localeMessage.getString("button.modify") %></button>
|
||||||
<button type="button" class="cssbtn" id="btn_delete" level="W" status="DETAIL"><i class="material-icons">delete</i> <%= localeMessage.getString("button.delete") %></button>
|
<button type="button" class="cssbtn" id="btn_delete" level="W" status="DETAIL"><i class="material-icons">delete</i> <%= localeMessage.getString("button.delete") %></button>
|
||||||
<button type="button" class="cssbtn" id="btn_previous" level="R" status="DETAIL,NEW"><i class="material-icons">arrow_back</i> <%= localeMessage.getString("button.previous") %></button>
|
<button type="button" class="cssbtn" id="btn_previous" level="R" status="DETAIL,NEW"><i class="material-icons">arrow_back</i> <%= localeMessage.getString("button.previous") %></button>
|
||||||
|
|||||||
@@ -92,7 +92,8 @@
|
|||||||
'<%= localeMessage.getString("portalUser.roleName") %>',
|
'<%= localeMessage.getString("portalUser.roleName") %>',
|
||||||
'<%= localeMessage.getString("portalUser.userStatus") %>',
|
'<%= localeMessage.getString("portalUser.userStatus") %>',
|
||||||
'<%= localeMessage.getString("portalUser.createOn") %>',
|
'<%= localeMessage.getString("portalUser.createOn") %>',
|
||||||
'<%= localeMessage.getString("portalUser.approvalStatus") %>'
|
'<%= localeMessage.getString("portalUser.approvalStatus") %>',
|
||||||
|
'<%= localeMessage.getString("portalUser.accountLockYn") %>'
|
||||||
],
|
],
|
||||||
colModel: [
|
colModel: [
|
||||||
{name: 'rowNum', align: 'center', width: '30', sortable: false},
|
{name: 'rowNum', align: 'center', width: '30', sortable: false},
|
||||||
@@ -104,7 +105,8 @@
|
|||||||
{name: 'roleCodeDescription', align: 'center', width: "80"},
|
{name: 'roleCodeDescription', align: 'center', width: "80"},
|
||||||
{name: 'userStatusDescription', align: 'center', width: "50"},
|
{name: 'userStatusDescription', align: 'center', width: "50"},
|
||||||
{name: 'createdDate', align: 'center', width: "100", formatter: timeStampFormat},
|
{name: 'createdDate', align: 'center', width: "100", formatter: timeStampFormat},
|
||||||
{name: 'approvalStatusDescription', align: 'center', width: "50"}
|
{name: 'approvalStatusDescription', align: 'center', width: "50"},
|
||||||
|
{name: 'accountLockYn', align: 'center', width: "50"}
|
||||||
],
|
],
|
||||||
jsonReader: {
|
jsonReader: {
|
||||||
repeatitems: false
|
repeatitems: false
|
||||||
|
|||||||
@@ -66,16 +66,18 @@
|
|||||||
|
|
||||||
// 현재 상태가 탈퇴인 경우
|
// 현재 상태가 탈퇴인 경우
|
||||||
if (status === STATUS.REMOVED) {
|
if (status === STATUS.REMOVED) {
|
||||||
$("#btn_modify").show().prop('disabled', true);
|
$("#btn_modify").show().prop('disabled', false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 일반 상태
|
// 일반 상태
|
||||||
$("#btn_modify").show().prop('disabled', !isUnmasked);
|
/* $("#btn_modify").show().prop('disabled', !isUnmasked);
|
||||||
if (isUnmasked) {
|
if (isUnmasked) {
|
||||||
$("input, select").prop('disabled', false);
|
$("input, select").prop('disabled', false);
|
||||||
updateOrgControl();
|
updateOrgControl();
|
||||||
}
|
} */
|
||||||
|
// 25.09.29 - 항상 해제
|
||||||
|
$("#btn_modify").show().prop('disabled', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
@@ -182,6 +184,9 @@
|
|||||||
} else {
|
} else {
|
||||||
$('#orgInfoSection').hide();
|
$('#orgInfoSection').hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$("select[name=accountLockYn]").val(data.accountLockYn);
|
||||||
|
|
||||||
|
|
||||||
// 25.09.23 - 마스킹 해제 상태를 기본으로 적용 / Rinjae
|
// 25.09.23 - 마스킹 해제 상태를 기본으로 적용 / Rinjae
|
||||||
updateButtonStates($("#userStatus").val(), true);
|
updateButtonStates($("#userStatus").val(), true);
|
||||||
@@ -261,7 +266,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
const fullLoginId = id + "@" + domain;
|
const fullLoginId = id + "@" + domain;
|
||||||
const emailPattern = /^[A-Za-z][A-Za-z0-9._-]*@[A-Za-z0-9][-A-Za-z0-9.]+\.[A-Za-z]{2,}$/;
|
const emailPattern = /^[A-Za-z0-9._-]*@[A-Za-z0-9][-A-Za-z0-9.]+\.[A-Za-z]{2,}$/;
|
||||||
if (!emailPattern.test(fullLoginId)) {
|
if (!emailPattern.test(fullLoginId)) {
|
||||||
alert(fullLoginId + " 은 올바른 이메일 형식이 아닙니다.");
|
alert(fullLoginId + " 은 올바른 이메일 형식이 아닙니다.");
|
||||||
return;
|
return;
|
||||||
@@ -558,9 +563,11 @@
|
|||||||
</th>
|
</th>
|
||||||
<td colspan="3">
|
<td colspan="3">
|
||||||
<div class="input-group" style="width: 50%;">
|
<div class="input-group" style="width: 50%;">
|
||||||
<input type="text" id="loginId" style="width:10%; display: inline-block;" maxlength="30" onkeyup="validateEmailId(this)"/>
|
<input type="text" id="loginId" style="width:10%; display: inline-block; ime-mode: disable;" maxlength="30" onkeyup="validateEmailId(this)"
|
||||||
|
lang="en" />
|
||||||
<span style="padding: 0 10px;">@</span>
|
<span style="padding: 0 10px;">@</span>
|
||||||
<input type="text" id="domain" style="width:20%; display: inline-block;" maxlength="50" onkeyup="validateDomainInput(this)"/>
|
<input type="text" id="domain" style="width:20%; display: inline-block; ime-mode: disable;" maxlength="50" onkeyup="validateDomainInput(this)"
|
||||||
|
lang="en" />
|
||||||
<input type="hidden" name="loginId"/>
|
<input type="hidden" name="loginId"/>
|
||||||
<button type="button" class="smallBtn cssbtn" id="btn_check_id" level="R" status="NEW"
|
<button type="button" class="smallBtn cssbtn" id="btn_check_id" level="R" status="NEW"
|
||||||
style="margin-left: 10px; display: inline-block;">
|
style="margin-left: 10px; display: inline-block;">
|
||||||
@@ -629,6 +636,19 @@
|
|||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th><%= getRequiredLabel(localeMessage.getString("portalUser.accountLockYn")) %></th>
|
||||||
|
<td>
|
||||||
|
<div class="select-style">
|
||||||
|
<select name="accountLockYn" id="accountLockYn">
|
||||||
|
<option value="Y">Y</option>
|
||||||
|
<option value="N">N</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<th></th>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|||||||
@@ -48,6 +48,19 @@
|
|||||||
background-color: #eeeeee;
|
background-color: #eeeeee;
|
||||||
border-color: #cccccc;
|
border-color: #cccccc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* input-group 안에서 invalid-feedback이 차지하는 공간 없애기, 유효성검사 할 때 현재 스타일 바뀌지않게 CSS 처리 */
|
||||||
|
.input-group > .invalid-feedback {
|
||||||
|
position: absolute;
|
||||||
|
top: 100%;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
margin-top: .25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-group {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
<script language="javascript" >
|
<script language="javascript" >
|
||||||
@@ -101,16 +114,31 @@
|
|||||||
standardMessageItems: [],
|
standardMessageItems: [],
|
||||||
inboundResponseStandardMessageItems: [],
|
inboundResponseStandardMessageItems: [],
|
||||||
fromResponseAdapter: '',
|
fromResponseAdapter: '',
|
||||||
|
toResponseAdapter: '',
|
||||||
inboundResponseHttpMethod: '',
|
inboundResponseHttpMethod: '',
|
||||||
inboundResponseRestPath: '',
|
inboundResponseRestPath: '',
|
||||||
syncAsyncType: 'sync'
|
outboundResponseHttpMethod: '',
|
||||||
|
outboundResponseRestPath: '',
|
||||||
|
syncAsyncType: 'sync',
|
||||||
|
wordType: '1',
|
||||||
|
requestType:'S'
|
||||||
},
|
},
|
||||||
|
|
||||||
// 컴퓨티드 프로퍼티
|
// 컴퓨티드 프로퍼티
|
||||||
get showInboundResponse() {
|
get showInboundResponse() {
|
||||||
return this.apiInterface.syncAsyncType === 'asyncSync';
|
return this.apiInterface.syncAsyncType === 'asyncSync';
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 컴퓨티드 프로퍼티
|
||||||
|
get showOutboundResponse() {
|
||||||
|
return this.apiInterface.syncAsyncType === 'syncAsync';
|
||||||
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
// 요청/응답 disable 처리.
|
||||||
|
Alpine.store('formState', {
|
||||||
|
isReqResDisabled: false
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// Alpine 컴포넌트 접근을 위한 유틸리티 함수
|
// Alpine 컴포넌트 접근을 위한 유틸리티 함수
|
||||||
@@ -136,6 +164,7 @@
|
|||||||
new makeOptions("ADPTRBZWKGROUPNAME","ADPTRBZWKGROUPDESC").setObj($("select[name=fromAdapter]")).setFormat(codeName3OptionFormat).setNoValueInclude(true).setAttr('std','ADPTRMSGPTRNCD').setData(json.fromList).rendering();
|
new makeOptions("ADPTRBZWKGROUPNAME","ADPTRBZWKGROUPDESC").setObj($("select[name=fromAdapter]")).setFormat(codeName3OptionFormat).setNoValueInclude(true).setAttr('std','ADPTRMSGPTRNCD').setData(json.fromList).rendering();
|
||||||
new makeOptions("ADPTRBZWKGROUPNAME","ADPTRBZWKGROUPDESC").setObj($("select[name=fromResponseAdapter]")).setFormat(codeName3OptionFormat).setNoValueInclude(true).setData(json.toList).rendering();
|
new makeOptions("ADPTRBZWKGROUPNAME","ADPTRBZWKGROUPDESC").setObj($("select[name=fromResponseAdapter]")).setFormat(codeName3OptionFormat).setNoValueInclude(true).setData(json.toList).rendering();
|
||||||
new makeOptions("ADPTRBZWKGROUPNAME","ADPTRBZWKGROUPDESC").setObj($("select[name=toAdapter]")).setFormat(codeName3OptionFormat).setNoValueInclude(true).setData(json.toList).rendering();
|
new makeOptions("ADPTRBZWKGROUPNAME","ADPTRBZWKGROUPDESC").setObj($("select[name=toAdapter]")).setFormat(codeName3OptionFormat).setNoValueInclude(true).setData(json.toList).rendering();
|
||||||
|
new makeOptions("ADPTRBZWKGROUPNAME","ADPTRBZWKGROUPDESC").setObj($("select[name=toResponseAdapter]")).setFormat(codeName3OptionFormat).setNoValueInclude(true).setData(json.fromList).rendering();
|
||||||
//if(key == "") setSearchable(selectName); // 콤보에 searchable 설정
|
//if(key == "") setSearchable(selectName); // 콤보에 searchable 설정
|
||||||
|
|
||||||
if (typeof callback === 'function') {
|
if (typeof callback === 'function') {
|
||||||
@@ -196,27 +225,33 @@
|
|||||||
|
|
||||||
// 어댑터 설정 정보 객체에 인바운드 응답 관련 설정 추가
|
// 어댑터 설정 정보 객체에 인바운드 응답 관련 설정 추가
|
||||||
const adapterConfig = {
|
const adapterConfig = {
|
||||||
inbound: {
|
inbound: {
|
||||||
ioType: 'inbound',
|
ioType: 'inbound',
|
||||||
methodSelectId: '#inboundHttpMethod',
|
methodSelectId: '#inboundHttpMethod',
|
||||||
restPathInputId: '#inboundRestPath',
|
restPathInputId: '#inboundRestPath',
|
||||||
adapterUrlId: '#fromAdapterUrl',
|
adapterUrlId: '#fromAdapterUrl',
|
||||||
},
|
},
|
||||||
outbound: {
|
outbound: {
|
||||||
ioType: 'outbound',
|
ioType: 'outbound',
|
||||||
methodSelectId: '#outboundHttpMethod',
|
methodSelectId: '#outboundHttpMethod',
|
||||||
restPathInputId: '#outboundRestPath',
|
restPathInputId: '#outboundRestPath',
|
||||||
adapterUrlId: '#toAdapterUrl',
|
adapterUrlId: '#toAdapterUrl',
|
||||||
standardOptionsId: '#standardOutboundOptions',
|
standardOptionsId: '#standardOutboundOptions',
|
||||||
commonFieldId: '#commonFieldPart'
|
commonFieldId: '#commonFieldPart'
|
||||||
},
|
},
|
||||||
inboundResponse: {
|
inboundResponse: {
|
||||||
methodSelectId: '#inboundResponseHttpMethod',
|
methodSelectId: '#inboundResponseHttpMethod',
|
||||||
restPathInputId: '#inboundResponseRestPath',
|
restPathInputId: '#inboundResponseRestPath',
|
||||||
adapterUrlId: '#fromResponseAdapterUrl',
|
adapterUrlId: '#fromResponseAdapterUrl',
|
||||||
standardOptionsId: '#inboundResponseRestPart',
|
standardOptionsId: '#inboundResponseRestPart',
|
||||||
commonFieldId: '#inboundResponseCommonFieldPart'
|
commonFieldId: '#inboundResponseCommonFieldPart'
|
||||||
}
|
},
|
||||||
|
outboundResponse: {
|
||||||
|
methodSelectId: '#outboundResponseHttpMethod',
|
||||||
|
restPathInputId: '#outboundResponseRestPath',
|
||||||
|
adapterUrlId: '#toResponseAdapterUrl',
|
||||||
|
standardOptionsId: '#outboundResponseRestPart'
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 어댑터 선택 변경 시 호출되는 함수 수정
|
// 어댑터 선택 변경 시 호출되는 함수 수정
|
||||||
@@ -373,9 +408,13 @@
|
|||||||
$("select[name=authType]" ).val(data["authType"]);
|
$("select[name=authType]" ).val(data["authType"]);
|
||||||
}
|
}
|
||||||
$("select[name=fromResponseAdapter]" ).val(data["fromResponseAdapter"]);//fromResponseAdapter
|
$("select[name=fromResponseAdapter]" ).val(data["fromResponseAdapter"]);//fromResponseAdapter
|
||||||
|
|
||||||
|
$("select[name=toResponseAdapter]" ).val(data["toResponseAdapter"]);//toResponseAdapter
|
||||||
|
|
||||||
$('#inboundHttpMethod').val(data.inboundHttpMethod);
|
$('#inboundHttpMethod').val(data.inboundHttpMethod);
|
||||||
$('#outboundHttpMethod').val(data.outboundHttpMethod);
|
$('#outboundHttpMethod').val(data.outboundHttpMethod);
|
||||||
$('#inboundResponseHttpMethod').val(data.inboundResponseHttpMethod);
|
$('#inboundResponseHttpMethod').val(data.inboundResponseHttpMethod);
|
||||||
|
$('#outboundResponseHttpMethod').val(data.outboundResponseHttpMethod);
|
||||||
$('#svcLogLvelNo').val(data.svcLogLvelNo);
|
$('#svcLogLvelNo').val(data.svcLogLvelNo);
|
||||||
|
|
||||||
if(data['inboundRequestLayout']!=null && data['outboundRequestLayout']!=null){
|
if(data['inboundRequestLayout']!=null && data['outboundRequestLayout']!=null){
|
||||||
@@ -388,7 +427,7 @@
|
|||||||
if('Y' == data.transformYn){
|
if('Y' == data.transformYn){
|
||||||
$('#toggleTransformYn').bootstrapToggle('on');
|
$('#toggleTransformYn').bootstrapToggle('on');
|
||||||
}
|
}
|
||||||
if('Y' == data.sinYn){
|
if('Y' == data.simYn){
|
||||||
$('#toggleSimYn').bootstrapToggle('on');
|
$('#toggleSimYn').bootstrapToggle('on');
|
||||||
}
|
}
|
||||||
if('Y' == data.apiEnabledYn){
|
if('Y' == data.apiEnabledYn){
|
||||||
@@ -420,6 +459,12 @@
|
|||||||
const inOutType = data['eaiSvcName'].slice(-1);
|
const inOutType = data['eaiSvcName'].slice(-1);
|
||||||
$('#inOutType').val(inOutType);
|
$('#inOutType').val(inOutType);
|
||||||
|
|
||||||
|
$("input[name=btnRadioReqRes][value='" + sendRecvType + "']").prop("checked", true);
|
||||||
|
Alpine.store('formState').isReqResDisabled = true;
|
||||||
|
$("input[name=btnRadioInOut][value='" + inOutType + "']").prop("checked", true);
|
||||||
|
$("input[name=btnRadioInOut]").prop("disabled", true);
|
||||||
|
|
||||||
|
|
||||||
$('#eaiBzwkDstcd').attr("readonly", "readonly");
|
$('#eaiBzwkDstcd').attr("readonly", "readonly");
|
||||||
$('#eaiSvcName').attr("readonly", "readonly");
|
$('#eaiSvcName').attr("readonly", "readonly");
|
||||||
$('#sendRecvType').attr("readonly", "readonly");
|
$('#sendRecvType').attr("readonly", "readonly");
|
||||||
@@ -439,6 +484,7 @@
|
|||||||
$('#cloneOrgInterfaceIdDesc').text(eaiSvcName);
|
$('#cloneOrgInterfaceIdDesc').text(eaiSvcName);
|
||||||
|
|
||||||
$("#fromResponseAdapter").change();
|
$("#fromResponseAdapter").change();
|
||||||
|
$("#toResponseAdapter").change();
|
||||||
},
|
},
|
||||||
error:function(e){
|
error:function(e){
|
||||||
alert(e.responseText);
|
alert(e.responseText);
|
||||||
@@ -1057,6 +1103,14 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$("#toResponseAdapter").change(function() {
|
||||||
|
const alpineData = getApiInterface();
|
||||||
|
if (alpineData.syncAsyncType === 'syncAsync') {
|
||||||
|
const adapterGroupName = $(this).val();
|
||||||
|
adapterSelectChange('outboundResponse', adapterGroupName);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$('#outboundRestPath').on('input', function() {
|
$('#outboundRestPath').on('input', function() {
|
||||||
checkTagVariableUrl();
|
checkTagVariableUrl();
|
||||||
});
|
});
|
||||||
@@ -1142,7 +1196,7 @@
|
|||||||
type: "POST",
|
type: "POST",
|
||||||
url: jsonUrl,
|
url: jsonUrl,
|
||||||
data: {
|
data: {
|
||||||
cmd: 'INSERT_CLONE',
|
cmd: 'CLONE',
|
||||||
orgApiInterfaceId,
|
orgApiInterfaceId,
|
||||||
newBizCode,
|
newBizCode,
|
||||||
newApiInterfaceId,
|
newApiInterfaceId,
|
||||||
@@ -1263,6 +1317,7 @@
|
|||||||
<button type="button" class="cssbtn" id="btn_modify" level="R" status="DETAIL,NEW"><i class="material-icons">save</i> <%= localeMessage.getString("button.modify") %></button>
|
<button type="button" class="cssbtn" id="btn_modify" level="R" status="DETAIL,NEW"><i class="material-icons">save</i> <%= localeMessage.getString("button.modify") %></button>
|
||||||
<button type="button" class="cssbtn" id="btn_api_spec" level="R" status="DETAIL,NEW"><i class="material-icons">description</i> API 스펙</button>
|
<button type="button" class="cssbtn" id="btn_api_spec" level="R" status="DETAIL,NEW"><i class="material-icons">description</i> API 스펙</button>
|
||||||
<button type="button" class="cssbtn" id="btn_previous" level="R" status="DETAIL,NEW"><i class="material-icons">arrow_back</i> <%= localeMessage.getString("button.previous") %></button>
|
<button type="button" class="cssbtn" id="btn_previous" level="R" status="DETAIL,NEW"><i class="material-icons">arrow_back</i> <%= localeMessage.getString("button.previous") %></button>
|
||||||
|
<%-- <button type="button" class="cssbtn" id="btn_excel_export" level="R" status="DETAIL"><i class="material-icons">table_view</i> <%= localeMessage.getString("button.excel") %></button> --%>
|
||||||
</div>
|
</div>
|
||||||
<div class="title" id="title" style="font-size:1.4em">${rmsMenuName}</div>
|
<div class="title" id="title" style="font-size:1.4em">${rmsMenuName}</div>
|
||||||
<form id="ajaxForm"
|
<form id="ajaxForm"
|
||||||
@@ -1278,19 +1333,35 @@
|
|||||||
<select id="eaiBzwkDstcd" class="form-select" name="eaiBzwkDstcd" style="width: 100%">
|
<select id="eaiBzwkDstcd" class="form-select" name="eaiBzwkDstcd" style="width: 100%">
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group col-md-3">
|
|
||||||
<label for="eaiSvcName"><span class="material-icons-outlined">badge</span> API 명</label>
|
<div class="form-group col-md-3">
|
||||||
<div class="input-group">
|
<label for="eaiSvcName">
|
||||||
<input type="text" class="form-control" id="eaiSvcName" name="eaiSvcName" required>
|
<span class="material-icons-outlined">badge</span> API 명
|
||||||
<span class="input-group-text" id="sendRecvTypeSpan" style="padding: 0; border: none;">
|
</label>
|
||||||
<input type="text" id="sendRecvType" name="sendRecvType" class="ignore form-control" readonly="readonly" style="width: 40px; text-align: center; border-radius: 0; margin-left: -1px;" value="S">
|
<div class="input-group">
|
||||||
</span>
|
<input type="text"
|
||||||
<span class="input-group-text" id="inOutTypeSpan" style="padding: 0; border: none;">
|
class="form-control"
|
||||||
<input type="text" id="inOutType" name="inOutType" class="ignore form-control" readonly="readonly" style="width: 40px; text-align: center; border-radius: 0; margin-left: -1px;" value="1">
|
id="eaiSvcName"
|
||||||
</span>
|
name="eaiSvcName"
|
||||||
</div>
|
required>
|
||||||
</div>
|
<span class="input-group-text" id="sendRecvTypeSpan" style="padding: 0; border: none;">
|
||||||
<div class="form-group col-md-6">
|
<input type="text" id="sendRecvType" name="sendRecvType"
|
||||||
|
class="ignore form-control"
|
||||||
|
readonly="readonly"
|
||||||
|
style="width: 40px; text-align: center; border-radius: 0; margin-left: -1px;"
|
||||||
|
:value="apiInterface.requestType">
|
||||||
|
</span>
|
||||||
|
<span class="input-group-text" id="inOutTypeSpan" style="padding: 0; border: none;">
|
||||||
|
<input type="text" id="inOutType" name="inOutType"
|
||||||
|
class="ignore form-control"
|
||||||
|
readonly="readonly"
|
||||||
|
style="width: 40px; text-align: center; border-radius: 0; margin-left: -1px;"
|
||||||
|
:value="apiInterface.wordType">
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group col-md-5">
|
||||||
<label for="eaiSvcDesc"><span class="material-icons-outlined">chat</span> 설명</label>
|
<label for="eaiSvcDesc"><span class="material-icons-outlined">chat</span> 설명</label>
|
||||||
<input type="text" class="form-control" id="eaiSvcDesc" name="eaiSvcDesc" required></input>
|
<input type="text" class="form-control" id="eaiSvcDesc" name="eaiSvcDesc" required></input>
|
||||||
</div>
|
</div>
|
||||||
@@ -1298,52 +1369,93 @@
|
|||||||
<label for="toggleTransformYn"><span class="material-icons">account_tree</span> 전문변환</label><br>
|
<label for="toggleTransformYn"><span class="material-icons">account_tree</span> 전문변환</label><br>
|
||||||
<input type="checkbox" name="toggleTransformYn" id="toggleTransformYn" data-toggle="toggle" data-onstyle="success" data-on="사용" data-off="미사용" data-width="100" data-offstyle="secondary" data-style="ios" />
|
<input type="checkbox" name="toggleTransformYn" id="toggleTransformYn" data-toggle="toggle" data-onstyle="success" data-on="사용" data-off="미사용" data-width="100" data-offstyle="secondary" data-style="ios" />
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group col-md-1">
|
||||||
|
<label for="toggleSimYn"><span class="material-icons" >science</span> 가상응답</label><br>
|
||||||
|
<input type="checkbox" name="toggleSimYn" id="toggleSimYn" data-toggle="toggle" data-onstyle="success" data-on="사용" data-off="미사용" data-width="100" data-offstyle="secondary" data-style="ios"/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-3">
|
<div class="col-md-12">
|
||||||
<!-- 기존 인터페이스 타입 영역을 Alpine 컴포넌트로 감싸기 -->
|
<!-- 기존 인터페이스 타입 영역을 Alpine 컴포넌트로 감싸기 -->
|
||||||
<fieldset class="groupbox-border">
|
<fieldset class="groupbox-border">
|
||||||
<legend class="groupbox-border">INTERFACE TYPE</legend>
|
<legend class="groupbox-border">INTERFACE TYPE</legend>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
<div class="form-group col-md-3">
|
||||||
<label for="eaiBzwkDstcd"><span class="material-icons-outlined">sync</span> Sync/Async 타입</label><br>
|
<label for="eaiBzwkDstcd"><span class="material-icons-outlined">sync</span> Sync/Async 타입</label><br>
|
||||||
<div class="btn-group" id="btnGroupSyncAsync" role="group">
|
<div class="btn-group" id="btnGroupSyncAsync" role="group">
|
||||||
<input type="radio"
|
<input type="radio"
|
||||||
class="btn-check"
|
class="btn-check"
|
||||||
name="btnRadioSyncAsync"
|
name="btnRadioSyncAsync"
|
||||||
id="btnTypeSync"
|
id="btnTypeSync"
|
||||||
value="sync"
|
value="sync"
|
||||||
x-model="apiInterface.syncAsyncType">
|
x-model="apiInterface.syncAsyncType">
|
||||||
<label class="btn btn-outline-primary" for="btnTypeSync">
|
<label class="btn btn-outline-primary" for="btnTypeSync">
|
||||||
<i class="bi bi-arrow-left-right"></i> Sync
|
<i class="bi bi-arrow-repeat"></i> Sync
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
|
<input type="radio"
|
||||||
|
class="btn-check"
|
||||||
|
name="btnRadioSyncAsync"
|
||||||
|
id="btnTypeAsync"
|
||||||
|
value="async"
|
||||||
|
x-model="apiInterface.syncAsyncType">
|
||||||
|
<label class="btn btn-outline-primary" for="btnTypeAsync">
|
||||||
|
<i class="bi bi-arrow-left-right"></i> Async
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="radio"
|
||||||
|
class="btn-check"
|
||||||
|
name="btnRadioSyncAsync"
|
||||||
|
id="btnTypeAsyncSync"
|
||||||
|
value="asyncSync"
|
||||||
|
x-model="apiInterface.syncAsyncType">
|
||||||
|
<label class="btn btn-outline-primary" for="btnTypeAsyncSync">
|
||||||
|
<i class="bi bi-arrow-return-left"></i> A > S
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="radio"
|
||||||
|
class="btn-check"
|
||||||
|
name="btnRadioSyncAsync"
|
||||||
|
id="btnTypeSyncAsync"
|
||||||
|
value="syncAsync"
|
||||||
|
x-model="apiInterface.syncAsyncType">
|
||||||
|
<label class="btn btn-outline-primary" for="btnTypeSyncAsync">
|
||||||
|
<i class="bi bi-share-fill"></i> S > A
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-3">
|
||||||
|
<label for="eaiBzwkDstcd">요청/응답 구분</label><br>
|
||||||
|
<div class="btn-group" role="group" aria-label="Basic radio toggle button group"
|
||||||
|
x-effect="if (apiInterface.syncAsyncType !== 'async') apiInterface.requestType = 'S'">
|
||||||
|
<input type="radio" class="btn-check" name="btnRadioReqRes" id="btnTypeRequest"
|
||||||
|
x-model="apiInterface.requestType"
|
||||||
|
value="S" :disabled="apiInterface.syncAsyncType !== 'async' || $store.formState.isReqResDisabled">
|
||||||
|
<label class="btn btn-outline-primary" for="btnTypeRequest"><i class="bi bi-arrow-bar-right"></i> 요청</label>
|
||||||
|
|
||||||
|
<input type="radio" class="btn-check" name="btnRadioReqRes" id="btnTypeResponse"
|
||||||
|
x-model="apiInterface.requestType"
|
||||||
|
value="R" :disabled="apiInterface.syncAsyncType !== 'async' || $store.formState.isReqResDisabled">
|
||||||
|
<label class="btn btn-outline-primary" for="btnTypeResponse"><i class="bi bi-arrow-bar-left"></i> 응답</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-3">
|
||||||
|
<label for="eaiBzwkDstcd">당/타발 구분</label><br>
|
||||||
|
<div class="btn-group" role="group" aria-label="Basic radio toggle button group">
|
||||||
|
<input type="radio" class="btn-check" name="btnRadioInOut" id="btnTypeInword" value="1" x-model="apiInterface.wordType" checked>
|
||||||
|
<label class="btn btn-outline-primary" for="btnTypeInword"><i class="bi bi-arrow-right-circle"></i> 당발</label>
|
||||||
|
|
||||||
<input type="radio"
|
<input type="radio" class="btn-check" name="btnRadioInOut" id="btnTypeOutword" value="2" x-model="apiInterface.wordType">
|
||||||
class="btn-check"
|
<label class="btn btn-outline-primary" for="btnTypeOutword"><i class="bi bi-arrow-left-circle"></i> 타발</label>
|
||||||
name="btnRadioSyncAsync"
|
</div>
|
||||||
id="btnTypeAsync"
|
</div>
|
||||||
value="async"
|
|
||||||
x-model="apiInterface.syncAsyncType">
|
|
||||||
<label class="btn btn-outline-primary" for="btnTypeAsync">
|
|
||||||
<i class="bi bi-arrow-repeat"></i> Async
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<input type="radio"
|
|
||||||
class="btn-check"
|
|
||||||
name="btnRadioSyncAsync"
|
|
||||||
id="btnTypeAsyncSync"
|
|
||||||
value="asyncSync"
|
|
||||||
x-model="apiInterface.syncAsyncType">
|
|
||||||
<label class="btn btn-outline-primary" for="btnTypeAsyncSync">
|
|
||||||
<i class="bi bi-arrow-return-left"></i> A > S
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-7">
|
<div class="col-md-10">
|
||||||
<fieldset class="groupbox-border">
|
<fieldset class="groupbox-border">
|
||||||
<legend class="groupbox-border">TRANSACTION OPTIONS</legend>
|
<legend class="groupbox-border">TRANSACTION OPTIONS</legend>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -1354,6 +1466,7 @@
|
|||||||
<option value="1">[1]오류 로그만(900)</option>
|
<option value="1">[1]오류 로그만(900)</option>
|
||||||
<option value="2">[2]인바운드(100,400)</option>
|
<option value="2">[2]인바운드(100,400)</option>
|
||||||
<option value="3" selected>[3]전체로그</option>
|
<option value="3" selected>[3]전체로그</option>
|
||||||
|
<option value="4">[4]업무데이터 제외</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group col-md-2">
|
<div class="form-group col-md-2">
|
||||||
@@ -1408,21 +1521,38 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row"
|
<div class="row">
|
||||||
x-show="showInboundResponse">
|
|
||||||
<div class="form-group col-md-6">
|
<div class="form-group col-md-6">
|
||||||
<label for="fromResponseAdapter">
|
<div x-show="showInboundResponse">
|
||||||
<span class="material-icons">keyboard_return</span>
|
<label for="fromResponseAdapter">
|
||||||
INBOUND (ASYNC) 응답 어댑터
|
<span class="material-icons">keyboard_return</span>
|
||||||
</label>
|
INBOUND (ASYNC) 응답 어댑터
|
||||||
<select id="fromResponseAdapter"
|
</label>
|
||||||
class="form-select"
|
<select id="fromResponseAdapter"
|
||||||
name="fromResponseAdapter"
|
class="form-select"
|
||||||
required
|
name="fromResponseAdapter"
|
||||||
:disabled="!showInboundResponse">
|
required
|
||||||
</select>
|
:disabled="!showInboundResponse">
|
||||||
<small id="fromResponseAdapterUrl" class="form-text text-muted"></small>
|
</select>
|
||||||
</div>
|
<small id="fromResponseAdapterUrl" class="form-text text-muted"></small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-6">
|
||||||
|
<!-- toAdapterUrl 겹치지 않도록 mt-3 속성 추가 -->
|
||||||
|
<div class="mt-3" x-show="showOutboundResponse">
|
||||||
|
<label for="toResponseAdapter">
|
||||||
|
<span class="material-icons">keyboard_return</span>
|
||||||
|
OUTBOUND (ASYNC) 응답 어댑터
|
||||||
|
</label>
|
||||||
|
<select id="toResponseAdapter"
|
||||||
|
class="form-select"
|
||||||
|
name="toResponseAdapter"
|
||||||
|
required
|
||||||
|
:disabled="!showOutboundResponse">
|
||||||
|
</select>
|
||||||
|
<small id="toResponseAdapterUrl" class="form-text text-muted"></small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
@@ -1438,8 +1568,8 @@
|
|||||||
<%= localeMessage.getString("apiInterface.recvMethod") %>
|
<%= localeMessage.getString("apiInterface.recvMethod") %>
|
||||||
</label>
|
</label>
|
||||||
<select id="inboundHttpMethod" class="form-select" name="inboundHttpMethod" disabled>
|
<select id="inboundHttpMethod" class="form-select" name="inboundHttpMethod" disabled>
|
||||||
<option value="get">GET</option>
|
|
||||||
<option value="post">POST</option>
|
<option value="post">POST</option>
|
||||||
|
<option value="get">GET</option>
|
||||||
<option value="put">PUT</option>
|
<option value="put">PUT</option>
|
||||||
<option value="patch">PATCH</option>
|
<option value="patch">PATCH</option>
|
||||||
<option value="delete">DELETE</option>
|
<option value="delete">DELETE</option>
|
||||||
@@ -1488,8 +1618,8 @@
|
|||||||
class="form-select"
|
class="form-select"
|
||||||
name="inboundResponseHttpMethod"
|
name="inboundResponseHttpMethod"
|
||||||
disabled>
|
disabled>
|
||||||
<option value="get">GET</option>
|
|
||||||
<option value="post">POST</option>
|
<option value="post">POST</option>
|
||||||
|
<option value="get">GET</option>
|
||||||
<option value="put">PUT</option>
|
<option value="put">PUT</option>
|
||||||
<option value="patch">PATCH</option>
|
<option value="patch">PATCH</option>
|
||||||
<option value="delete">DELETE</option>
|
<option value="delete">DELETE</option>
|
||||||
@@ -1528,34 +1658,34 @@
|
|||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<fieldset class="groupbox-border">
|
<fieldset class="groupbox-border">
|
||||||
<legend class="groupbox-border">OUTBOUND ROUTING</legend>
|
<legend class="groupbox-border">OUTBOUND ROUTING</legend>
|
||||||
<div id="outboundRoutingContent">
|
<div id="outboundRoutingContent">
|
||||||
<div class="row" id="standardOutboundOptions">
|
<div class="row" id="standardOutboundOptions">
|
||||||
<div class="form-group col-md-4">
|
<div class="form-group col-md-4">
|
||||||
<label for="outboundHttpMethod">
|
<label for="outboundHttpMethod">
|
||||||
<span class="material-icons">http</span>
|
<span class="material-icons">http</span>
|
||||||
송신 메소드
|
송신 메소드
|
||||||
</label>
|
</label>
|
||||||
<select id="outboundHttpMethod" class="form-select" name="outboundHttpMethod" disabled>
|
<select id="outboundHttpMethod" class="form-select" name="outboundHttpMethod" disabled>
|
||||||
<option value="get">GET</option>
|
<option value="post">POST</option>
|
||||||
<option value="post">POST</option>
|
<option value="get">GET</option>
|
||||||
<option value="put">PUT</option>
|
<option value="put">PUT</option>
|
||||||
<option value="patch">PATCH</option>
|
<option value="patch">PATCH</option>
|
||||||
<option value="delete">DELETE</option>
|
<option value="delete">DELETE</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group col-md-8">
|
<div class="form-group col-md-8">
|
||||||
<label for="outboundRestPath">
|
<label for="outboundRestPath">
|
||||||
<span class="material-icons">link</span>
|
<span class="material-icons">link</span>
|
||||||
<span class="badge badge-warning" id="tagVariableUrl" style="display: none">가변</span>
|
<span class="badge badge-warning" id="tagVariableUrl" style="display: none">가변</span>
|
||||||
송신 REST PATH(URL)
|
송신 REST PATH(URL)
|
||||||
</label>
|
</label>
|
||||||
<input type="text" class="form-control" id="outboundRestPath"
|
<input type="text" class="form-control" id="outboundRestPath"
|
||||||
name="outboundRestPath" disabled>
|
name="outboundRestPath" disabled>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="commonFieldPart" class="row" style="display:none">
|
<div id="commonFieldPart" class="row" style="display:none">
|
||||||
<div class="form-group col-md-12">
|
<div class="form-group col-md-12">
|
||||||
<label for="standardMessageItemsButton">
|
<label for="standardMessageItemsButton">
|
||||||
@@ -1569,10 +1699,51 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</fieldset>
|
<div id="outboundResponseMethodPathRow"
|
||||||
</div>
|
x-show="showOutboundResponse">
|
||||||
|
<div id="outboundResponseRestPart" class="row">
|
||||||
|
<div class="form-group col-md-4">
|
||||||
|
<label for="outboundResponseHttpMethod">
|
||||||
|
<span class="material-icons">http</span>
|
||||||
|
응답 수신 메소드
|
||||||
|
</label>
|
||||||
|
<select id="outboundResponseHttpMethod" class="form-select" name="outboundResponseHttpMethod" disabled>
|
||||||
|
<option value="post">POST</option>
|
||||||
|
<option value="get">GET</option>
|
||||||
|
<option value="put">PUT</option>
|
||||||
|
<option value="patch">PATCH</option>
|
||||||
|
<option value="delete">DELETE</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-8">
|
||||||
|
<label for="outboundResponseRestPath">
|
||||||
|
<span class="material-icons">link</span>
|
||||||
|
응답 수신 REST PATH(URL)
|
||||||
|
</label>
|
||||||
|
<input type="text" class="form-control" id="outboundResponseRestPath" name="outboundResponseRestPath" disabled>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outboundResponseCommonFieldPart" class="row" style="display:none">
|
||||||
|
<div class="form-group col-md-12">
|
||||||
|
<label for="standardMessageItemsButton">
|
||||||
|
<span class="material-icons-outlined">view_list</span>
|
||||||
|
표준전문 공통부 값
|
||||||
|
</label>
|
||||||
|
<div class="d-grid gap-2">
|
||||||
|
<button type="button" id="standardMessageItemsButton" class="btn btn-primary"
|
||||||
|
data-bs-toggle="modal" data-bs-target="#stdCommonValueModal">
|
||||||
|
수정
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="collapse" id="collapseTransform">
|
<div class="collapse" id="collapseTransform">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|||||||
@@ -0,0 +1,83 @@
|
|||||||
|
<%@ page contentType="text/html;charset=utf-8"%>
|
||||||
|
<%@page import="ch.qos.logback.core.*"%>
|
||||||
|
<%@page import="ch.qos.logback.classic.*"%>
|
||||||
|
<%@page import="org.slf4j.*"%>
|
||||||
|
<%@page import="java.util.*"%>
|
||||||
|
<%
|
||||||
|
|
||||||
|
String loggerName = request.getParameter("loggerName");
|
||||||
|
String slevel = request.getParameter("level");
|
||||||
|
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
|
||||||
|
if (loggerName != null && !"".equals(loggerName) && slevel != null && !"".equals(slevel)){
|
||||||
|
Level level = Level.ERROR;
|
||||||
|
if ("DEBUG".equals(slevel)){
|
||||||
|
level = Level.DEBUG;
|
||||||
|
}else if ("INFO".equals(slevel)){
|
||||||
|
level = Level.INFO;
|
||||||
|
}else if ("WARN".equals(slevel)){
|
||||||
|
level = Level.WARN;
|
||||||
|
}else if ("ERROR".equals(slevel)){
|
||||||
|
level = Level.ERROR;
|
||||||
|
}else if ("TRACE".equals(slevel)){
|
||||||
|
level = Level.TRACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
lc.getLogger(loggerName).setLevel(level);
|
||||||
|
%>
|
||||||
|
<%=loggerName %> 의 로그 level이 <%=slevel %> 로 변경되었습니다.
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
|
||||||
|
List<ch.qos.logback.classic.Logger> logs = lc.getLoggerList();;
|
||||||
|
|
||||||
|
%>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function changeSessionKey(selectBox) {
|
||||||
|
var loggerName = selectBox.title;
|
||||||
|
var level = selectBox.value;
|
||||||
|
document.frm.loggerName.value=loggerName;
|
||||||
|
document.frm.level.value=level;
|
||||||
|
document.frm.submit();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<form name="frm" action="">
|
||||||
|
<input type=hidden name="loggerName" />
|
||||||
|
<input type=hidden name="level" />
|
||||||
|
|
||||||
|
</form>
|
||||||
|
<table>
|
||||||
|
<%
|
||||||
|
ArrayList<String> al = new ArrayList<String>();
|
||||||
|
for(ch.qos.logback.classic.Logger log : logs){
|
||||||
|
if (log.getLevel() != null){
|
||||||
|
al.add(log.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
al.sort(null);
|
||||||
|
for(String name : al){
|
||||||
|
ch.qos.logback.classic.Logger l = lc.getLogger(name);
|
||||||
|
%>
|
||||||
|
<tr>
|
||||||
|
<td><%=l.getName() %></td><td><select name="level" onchange="changeSessionKey(this)" title="<%=l.getName()%>">
|
||||||
|
<option value=TRACE <%=Level.TRACE==l.getLevel()?"selected":"" %>>
|
||||||
|
TRACE
|
||||||
|
</option>
|
||||||
|
<option value="DEBUG" <%=Level.DEBUG==l.getLevel()?"selected":"" %>>
|
||||||
|
DEBUG
|
||||||
|
</option>
|
||||||
|
<option value="INFO" <%=Level.INFO==l.getLevel()?"selected":"" %>>
|
||||||
|
INFO
|
||||||
|
</option>
|
||||||
|
<option value="WARN" <%=Level.WARN==l.getLevel()?"selected":"" %>>
|
||||||
|
WARN
|
||||||
|
</option>
|
||||||
|
<option value="ERROR" <%=Level.ERROR==l.getLevel()?"selected":"" %>>
|
||||||
|
ERROR
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
@@ -0,0 +1,409 @@
|
|||||||
|
<%@page import="com.eactive.eai.rms.common.datasource.DataSourceTypeManager"%>
|
||||||
|
<%@ page language="java" contentType="text/html; charset=utf-8"%>
|
||||||
|
<%@ page import="java.io.*,
|
||||||
|
java.util.*,
|
||||||
|
javax.xml.parsers.*,
|
||||||
|
org.w3c.dom.*,
|
||||||
|
javax.xml.xpath.*,
|
||||||
|
java.sql.*,
|
||||||
|
javax.sql.*,
|
||||||
|
com.eactive.eai.agent.command.*,
|
||||||
|
com.eactive.eai.agent.*,
|
||||||
|
com.eactive.eai.rms.onl.common.util.*,
|
||||||
|
com.eactive.eai.rms.common.datasource.*,
|
||||||
|
org.apache.commons.logging.Log,
|
||||||
|
org.apache.commons.logging.LogFactory,
|
||||||
|
java.util.Arrays,
|
||||||
|
com.eactive.eai.rms.common.util.StringUtils,
|
||||||
|
com.eactive.eai.common.util.*
|
||||||
|
" %>
|
||||||
|
<!-- import 에서 DataSourceFactory의 경로에 파일이 없어서 컴파일 에러가 나서 주석처리함 24.08.29 -->
|
||||||
|
<!-- com.eactive.eai.transformer.dao.jdbc.DataSourceFactory, -->
|
||||||
|
<%!
|
||||||
|
private static final Logger logger = Logger.getLogger("runSql.jsp");
|
||||||
|
|
||||||
|
private String NEW_LINE = "\n";
|
||||||
|
private int MAX_FETCH_SIZE = 1000;
|
||||||
|
|
||||||
|
private static Object obj = new Object();
|
||||||
|
|
||||||
|
public StringBuffer ListToString(List<String[]> list){
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
//first item is ColName
|
||||||
|
boolean isHead = true;
|
||||||
|
for(int row=1;row<list.size();row++){
|
||||||
|
String[] ar = (String[])list.get(row);
|
||||||
|
for(int i =0; i < ar.length; i++){
|
||||||
|
sb.append(ar[i]).append("\t");
|
||||||
|
}
|
||||||
|
sb.append(NEW_LINE);
|
||||||
|
if(isHead){
|
||||||
|
sb.append(StringUtils.repeat("--",sb.length())).append(NEW_LINE);
|
||||||
|
isHead= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sb;
|
||||||
|
}
|
||||||
|
|
||||||
|
public HashMap runSql(List<String> list,String displayType, String serviceType ) throws Exception {
|
||||||
|
Connection conn = null;
|
||||||
|
Statement stmt = null;
|
||||||
|
String driver = null;
|
||||||
|
String url = null;
|
||||||
|
String id =null;
|
||||||
|
String pwd=null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
|
||||||
|
HashMap<String, Object> results = new HashMap();
|
||||||
|
StringBuffer sb = new StringBuffer();
|
||||||
|
|
||||||
|
StringBuffer errorBuff = new StringBuffer();
|
||||||
|
|
||||||
|
int rownum = 0;
|
||||||
|
try {
|
||||||
|
DataSourceType dataType = DataSourceTypeManager.getDataSourceType(serviceType);
|
||||||
|
|
||||||
|
String jndiName = dataType.getJndiName();
|
||||||
|
ServiceLocator sl = ServiceLocator.getInstance();
|
||||||
|
DataSource ds = sl.getDataSource( jndiName);
|
||||||
|
|
||||||
|
conn = ds.getConnection();
|
||||||
|
stmt = conn.createStatement();
|
||||||
|
|
||||||
|
int cnt = 0;
|
||||||
|
for(String sql : list) {
|
||||||
|
try{
|
||||||
|
|
||||||
|
sql = sql.trim();
|
||||||
|
if(sql.length() == 0) continue;
|
||||||
|
// System.out.println(sql);
|
||||||
|
if(sql.toUpperCase().startsWith("SELECT")){
|
||||||
|
|
||||||
|
// 메모리 문제로 조회건수를 100건으로 제한하도록 한다. // 요건에 따라 변경 필요
|
||||||
|
sql = sql + "\n fetch first "+MAX_FETCH_SIZE+" rows only"; // DB2
|
||||||
|
stmt.execute(sql);
|
||||||
|
rs = stmt.getResultSet();
|
||||||
|
|
||||||
|
List ret = new ArrayList();
|
||||||
|
int maxColumn = rs.getMetaData().getColumnCount();
|
||||||
|
ResultSetMetaData rsmd = rs.getMetaData();
|
||||||
|
String[] colName = new String[maxColumn];
|
||||||
|
int[] colSize = new int[maxColumn];
|
||||||
|
//get Col Name
|
||||||
|
for(int i =1; i<=maxColumn; i++){
|
||||||
|
colName[i-1] = rsmd.getColumnName(i);
|
||||||
|
colSize[i-1] = rsmd.getPrecision(i);
|
||||||
|
}
|
||||||
|
ret.add(colSize);
|
||||||
|
ret.add(colName);
|
||||||
|
while(rs.next()) {
|
||||||
|
String[] row = new String[maxColumn];
|
||||||
|
for (int i=0;i<maxColumn;i++){
|
||||||
|
row[i] = rs.getString(i+1);
|
||||||
|
}
|
||||||
|
ret.add(row);
|
||||||
|
}
|
||||||
|
if( "FLAT".equals(displayType) ) sb = ListToString(ret);
|
||||||
|
if( "GRID".equals(displayType) ) results.put("SEL"+(cnt++),ret);
|
||||||
|
} else { //INSERT, UPDATE, DELETE
|
||||||
|
throw new Exception("SELECT 만 지원합니다.");
|
||||||
|
//if ((sql.toUpperCase().startsWith("UPDATE") || sql.toUpperCase().startsWith("DELETE")) && !(sql.toUpperCase().contains("WHERE"))) {
|
||||||
|
// throw new Exception("UPDATE/DELETE문은 반드시 WHERE절을 포함해야 합니다.");
|
||||||
|
//}
|
||||||
|
//int affected = stmt.executeUpdate(sql);
|
||||||
|
//sb.append("==> Execute - ["+sql.trim()+"], affected "+ affected +" rows").append(NEW_LINE);
|
||||||
|
}
|
||||||
|
|
||||||
|
}catch(Exception e){
|
||||||
|
errorBuff.append("==> Error - ["+sql + "] : " +e.getMessage()).append(NEW_LINE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch(Exception e) {
|
||||||
|
logger.error(e.getMessage(),e);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
try {
|
||||||
|
if(stmt != null) stmt.close();
|
||||||
|
if(conn != null) conn.close();
|
||||||
|
if(rs != null) rs.close();
|
||||||
|
}
|
||||||
|
catch (SQLException sqle) {
|
||||||
|
logger.error("SQLException was thrown: " + sqle.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HashMap retMap = new HashMap();
|
||||||
|
retMap.put("records",results);
|
||||||
|
retMap.put("result", sb.toString());
|
||||||
|
retMap.put("error", errorBuff.toString());
|
||||||
|
return retMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public HashMap execute(String statements, String displayType,String serviceType,ServletRequest request) throws Exception {
|
||||||
|
String[] results = new String[2];
|
||||||
|
|
||||||
|
String[] arr = statements.split(";");
|
||||||
|
List<String> list = Arrays.asList(arr);
|
||||||
|
|
||||||
|
return runSql(list, displayType, serviceType);
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
|
||||||
|
<%
|
||||||
|
response.setHeader("Pragma", "No-cache");
|
||||||
|
response.setHeader("Cache-Control", "no-cache");
|
||||||
|
response.setHeader("Expires", "0");
|
||||||
|
%>
|
||||||
|
|
||||||
|
<%
|
||||||
|
request.setCharacterEncoding("utf-8");
|
||||||
|
String filter = request.getParameter("filter");
|
||||||
|
|
||||||
|
String displayType = request.getParameter("displayType");
|
||||||
|
String serviceType = request.getParameter("serviceType");
|
||||||
|
String statement = request.getParameter("statement");
|
||||||
|
String userType=request.getParameter("userType");
|
||||||
|
String run=request.getParameter("run");
|
||||||
|
|
||||||
|
if (run == null) run = "";
|
||||||
|
if (displayType == null) displayType = "GRID";
|
||||||
|
if (serviceType == null) serviceType = "";
|
||||||
|
if (statement == null) statement = "";
|
||||||
|
|
||||||
|
HashMap runResult =new HashMap();
|
||||||
|
|
||||||
|
String errorMessage = "";
|
||||||
|
|
||||||
|
if (!"".equals(run) ){
|
||||||
|
runResult = execute(statement,displayType, serviceType,request);
|
||||||
|
//response.sendRedirect("/monitoring/jsp/common/jsonResult.jsp");
|
||||||
|
errorMessage = (String)runResult.get("error");
|
||||||
|
if(errorMessage == null) errorMessage = "";
|
||||||
|
}else{
|
||||||
|
;
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||||
|
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
|
||||||
|
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
|
||||||
|
<%@ include file="/jsp/common/include/localemessage.jsp" %>
|
||||||
|
<script language="javascript" src="<c:url value="/common/js/common.js" />"></script>
|
||||||
|
<jsp:include page="/jsp/common/include/css.jsp"/>
|
||||||
|
<jsp:include page="/jsp/common/include/script.jsp"/>
|
||||||
|
<%-- <script language="javascript" src="<c:url value="/js/jquery-1.7.2.min.js"/>"></script>
|
||||||
|
<script language="javascript" src="<c:url value="/js/jquery-ui.min.js"/>"></script> --%>
|
||||||
|
<script language="javascript" >
|
||||||
|
var $ = jQuery.noConflict();
|
||||||
|
var url = '<c:url value="/runSql.jsp" />';
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('select[name=serviceType]').val("<%=serviceType%>");
|
||||||
|
//$('select[name=serviceType]').attr('disabled','disabled');
|
||||||
|
$("#btn_submit").click(function(){
|
||||||
|
var serviceType = $('select[name=serviceType] option:selected').val();
|
||||||
|
var postData = new Array();
|
||||||
|
var statement = $("textarea[name=statement]").val();
|
||||||
|
if(statement == "" || statement == null){
|
||||||
|
alert("<%= localeMessage.getString("runSql.checkMsg") %>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
document.forms.runSql.run.value = "1";
|
||||||
|
document.forms.runSql.action= url;
|
||||||
|
document.forms.runSql.submit();
|
||||||
|
/* postData.push({name: "statement" , value:statement});
|
||||||
|
postData.push({name: "serviceType", value:serviceType});
|
||||||
|
postData.push({name: "run", value:"1"});
|
||||||
|
$.ajax({
|
||||||
|
type : "POST",
|
||||||
|
//url:url,
|
||||||
|
data:postData,
|
||||||
|
success:function(args){
|
||||||
|
alert("executed");
|
||||||
|
|
||||||
|
$("textarea[name=result]").val($(args).find('result'));
|
||||||
|
},
|
||||||
|
error:function(xhr, status, errorMsg){
|
||||||
|
//$("textarea[name=result]").val(errorMsg);
|
||||||
|
//alert(JSON.parse(xhr.responseText).errorMsg);
|
||||||
|
}
|
||||||
|
}); */
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#btn_close").click(function(){
|
||||||
|
window.close();
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#btn_download").click(function() {
|
||||||
|
var displayType = $("select[name=displayType]").val();
|
||||||
|
if(displayType=="FLAT"){
|
||||||
|
download();
|
||||||
|
}else{
|
||||||
|
$("#resultData").val($("#resultTable").html());
|
||||||
|
$("#excel_form").submit();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
function download(){
|
||||||
|
var resData = document.getElementById("resultData").value;
|
||||||
|
var resDataBlob = new Blob([resData],{type:'text/plain'});
|
||||||
|
var fileName = "SQL Result.txt";
|
||||||
|
var downLink = document.createElement("a");
|
||||||
|
downLink.download = fileName;
|
||||||
|
downLink.innerHTML = "Download File";
|
||||||
|
downLink.href = window.webkitURL.createObjectURL(resDataBlob);
|
||||||
|
downLink.click();
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="right_box">
|
||||||
|
<div class="content_top">
|
||||||
|
<ul class="path">
|
||||||
|
<li><a href="#">${rmsMenuPath}</a></li>
|
||||||
|
</ul>
|
||||||
|
</div><!-- end content_top -->
|
||||||
|
<div class="content_middle">
|
||||||
|
<div class="search_wrap">
|
||||||
|
<button type="button" class="cssbtn" id="btn_submit" level="W"><i class="material-icons">expand_circle_down</i> <%= localeMessage.getString("button.operate") %></button>
|
||||||
|
<button type="button" class="cssbtn" id="btn_download" level="W"><i class="material-icons">file_download</i> <%= localeMessage.getString("button.download") %></button>
|
||||||
|
<%-- <img id="btn_submit" src="<c:url value="/img/btn_operate.png"/>" level="W" style="cursor:hand;"/> --%>
|
||||||
|
<%-- <img id="btn_download" src="<c:url value="/img/btn_download.png"/>" level="w" style="cursor:hand;"/> --%>
|
||||||
|
</div>
|
||||||
|
<div class="title">Data Explorer</div>
|
||||||
|
<table class="table_row" align="center">
|
||||||
|
<form method="post" name="runSql">
|
||||||
|
<tr>
|
||||||
|
<th align="right" width="80px">
|
||||||
|
Database :
|
||||||
|
</th>
|
||||||
|
<td align="left" width="200px">
|
||||||
|
<div class="select-style">
|
||||||
|
<select name="serviceType">
|
||||||
|
<%
|
||||||
|
List dsNames = DataSourceTypeManager.getDataSourceTypeNames();
|
||||||
|
String dsName = "";
|
||||||
|
for(int i=0; i< dsNames.size(); i++) {
|
||||||
|
dsName = (String)dsNames.get(i);
|
||||||
|
%>
|
||||||
|
<option value="<%= dsName %>"><%= dsName %></option>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<th align="right" width="80px">
|
||||||
|
DIsplay :
|
||||||
|
</th>
|
||||||
|
<td align="left">
|
||||||
|
<div class="select-style">
|
||||||
|
<select name="displayType">
|
||||||
|
<option value="FLAT" <%= "FLAT".equals(displayType)?"selected":"" %>>FLAT</option>
|
||||||
|
<option value="GRID" <%= "GRID".equals(displayType)?"selected":"" %>>GRID</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="left" colspan=4>
|
||||||
|
<table width="100%">
|
||||||
|
<tr>
|
||||||
|
<td class="search_td_title" width="150px"><%= localeMessage.getString("runSql.excute") %> : max fetch size <%= MAX_FETCH_SIZE %></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<textarea name="statement" style="width:100%;height:200px"><%= statement%></textarea>
|
||||||
|
<INPUT type=hidden name="run" value="<%=run%>">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</form>
|
||||||
|
<tr>
|
||||||
|
<td class="search_td_title" width="150px"><%= localeMessage.getString("runSql.result") %></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="search_td_title" width="150px"><font color=red><%= errorMessage %><font></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
if("FLAT".equals(displayType)) {
|
||||||
|
%>
|
||||||
|
<tr>
|
||||||
|
<td >
|
||||||
|
<%-- <form name="excel_form" id = "excel_form" action="excelDown.jsp" method="post" target="_blank" style="height : 450px !important">
|
||||||
|
<input type="text" name="displayType" id="displayType" value="<%=displayType%>">
|
||||||
|
<textarea id = "resultData" name="resultData" style="width:100%;height:100%"><%= runResult.get("result")%></textarea>
|
||||||
|
</form> --%>
|
||||||
|
<textarea id = "resultData" name="resultData" style="width:100%;height:400px"><%= runResult.get("result")%></textarea>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
HashMap recordsMap = (HashMap)runResult.get("records");
|
||||||
|
if(recordsMap != null) {
|
||||||
|
%>
|
||||||
|
<tr>
|
||||||
|
<td valign="top"><%
|
||||||
|
for(int sel=0; sel <= 10;sel++) {
|
||||||
|
ArrayList resultList = (ArrayList)recordsMap.get("SEL"+sel);
|
||||||
|
// System.out.println("SEL"+sel+" = "+resultList);
|
||||||
|
if(resultList == null) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
%><form name="excel_form" id = "excel_form" action="excelDown.jsp" method="post" target="_blank">
|
||||||
|
<input type="hidden" name="resultData" id="resultData">
|
||||||
|
<input type="hidden" name="displayType" id="displayType" value="<%=displayType%>">
|
||||||
|
<table width="100%" id="resultTable">
|
||||||
|
<%
|
||||||
|
int[] colSize = (int[])resultList.get(0);
|
||||||
|
int cellWidth = 40;
|
||||||
|
for(int index = 1; index<resultList.size(); index++ ) {
|
||||||
|
String[] rows = (String[])resultList.get(index);
|
||||||
|
%>
|
||||||
|
<tr>
|
||||||
|
<%
|
||||||
|
for(int p = 0; p<rows.length; p++ ) {
|
||||||
|
if(index==1) {
|
||||||
|
cellWidth = rows[p].length();
|
||||||
|
if(colSize[p] > cellWidth) cellWidth = colSize[p];
|
||||||
|
cellWidth = cellWidth * 10;
|
||||||
|
out.println(String.format("<th style=\"height : 20px; width:%dpx\">%s</th>", cellWidth, rows[p] ));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
out.println(String.format("<td style=\"height : 20px\">%s</td>", rows[p]));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
<% }
|
||||||
|
%>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</div><!-- end content_middle -->
|
||||||
|
</div><!-- end right_box -->
|
||||||
|
<!-- button -->
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
+4
-2
@@ -35,7 +35,7 @@ java {
|
|||||||
languageVersion = JavaLanguageVersion.of(8)
|
languageVersion = JavaLanguageVersion.of(8)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
compileJava {
|
compileJava {
|
||||||
options.encoding = 'UTF-8'
|
options.encoding = 'UTF-8'
|
||||||
options.compilerArgs = ['-parameters']
|
options.compilerArgs = ['-parameters']
|
||||||
@@ -51,7 +51,7 @@ war {
|
|||||||
def profile = project.findProperty("profile") ?: "tomcat"
|
def profile = project.findProperty("profile") ?: "tomcat"
|
||||||
|
|
||||||
if (profile == "weblogic") {
|
if (profile == "weblogic") {
|
||||||
webXml = file("WebContent/WEB-INF/weblogic-web.xml")
|
webXml = file("WebContent/WEB-INF/weblogic-web.xml")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -78,6 +78,8 @@ dependencies {
|
|||||||
implementation project(':elink-online-common')
|
implementation project(':elink-online-common')
|
||||||
implementation project(':elink-online-emsclient')
|
implementation project(':elink-online-emsclient')
|
||||||
implementation project(':elink-portal-common')
|
implementation project(':elink-portal-common')
|
||||||
|
implementation project(':kjb-safedb')
|
||||||
|
implementation project(":eapim-admin-kjb")
|
||||||
|
|
||||||
/* Custom Libs */
|
/* Custom Libs */
|
||||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
# 광주은행용 Property 설정
|
||||||
|
## 참고 Class
|
||||||
|
- com.eactive.ext.kjb.common.KjbProperty
|
||||||
|
|
||||||
|
## Monitoring
|
||||||
|
### UMS 관련 (kjb.ums)
|
||||||
|
- 실제 광주은행 내에서는 UMS 는 SMS/LMS/알림톡 등 만 담당.
|
||||||
|
- 이메일 발송은 별도 시스템이 있음 (JSON 형식의 파일로 EAI 배치 이용 연계)
|
||||||
|
|
||||||
|
- kjb.eai_batch.url
|
||||||
|
- 개발 : http://172.31.32.111:10230/BATAppWeb/EaiBatCall
|
||||||
|
- 검증 : http://172.31.33.111:10430/BATAppWeb/EaiBatCall
|
||||||
|
- 운영 : http://172.21.1.40:10860/BATAppWeb/EaiBatCall
|
||||||
|
- kjb.ums.host_url
|
||||||
|
- 개발 : http://172.31.35.144:9021
|
||||||
|
- 운영 :
|
||||||
|
- kjb.ums.api_key
|
||||||
|
- 개발 API KEY(192.168.240.176) : `7cca6d58-e4f7-474d-9edd-525806bc99ff`
|
||||||
|
- 운영 API KEY(192.168.132.77 / 192.168.132.78 / 192.168.157.77 ) : `6a40a69f-5614-485b-8d0f-6fb2e2e51bfe`
|
||||||
|
- kjb.ums.eai_batch.send_dir : /Data/eapim/portal/sendmail/snd
|
||||||
|
- kjb.ums.eai_batch.backup_dir : /Data/eapim/portal/sendmail/bak
|
||||||
|
|
||||||
|
|
||||||
|
## 개발 Property
|
||||||
|
|
||||||
|
| Key | 이름 | Value | 분류 | |
|
||||||
|
| ------------------------------------ | ------------------------ | ----------------------------------------------- | --- | --- |
|
||||||
|
| kjb.eai_batch.url | EAI 배치 호출 주소 | http://172.31.32.111:10230/BATAppWeb/EaiBatCall | 이메일 | |
|
||||||
|
| kjb.ums.eai_batch.connection_timeout | EAI 배치 커넥션 타임아웃(seconds) | 5 | 이메일 | |
|
||||||
|
| kjb.ums.eai_batch.response_timeout | EAI 배치 응답 타임아웃(seconds) | 10 | 이메일 | |
|
||||||
|
| kjb.ums.eai_batch.send_dir | EAI 배치 발송용 디렉토리 | /Data/eapim/portal/sendmail/snd | 이메일 | |
|
||||||
|
| kjb.ums.eai_batch.backup_dir | EAI 배치 발송 이후 백업 디렉토리 | /Data/eapim/portal/sendmail/bak | 이메일 | |
|
||||||
|
| kjb.ums.eai_batch.interface_id | 고객이메일발송용 EAI 배치 인터페이스 | UAGFF00001UIE | 알림톡 | |
|
||||||
|
| kjb.ums.host_url | UMS 호출 주소 | http://172.31.35.144:9021 | 알림톡 | |
|
||||||
|
| kjb.ums.api_key | UMS API Key | 7cca6d58-e4f7-474d-9edd-525806bc99ff | 알림톡 | |
|
||||||
|
| kjb.ums.connection_timeout | UMS 커넥션 타임아웃(seconds) | 5 | 알림톡 | |
|
||||||
|
| kjb.ums.response_timeout | UMS 응답 타임아웃(seconds) | 10 | 알림톡 | |
|
||||||
|
| | | | | |
|
||||||
|
|
||||||
|
```sql
|
||||||
|
-- 개발 서버용
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai_batch.url', 'http://172.31.32.111:10230/BATAppWeb/EaiBatCall');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai.batch.connection_timeout', '5');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai.batch.response_timeout', '5');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai.batch.timeout', '10');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai.batch.charset', 'euc-kr');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.send_dir', '/Data/eapim/portal/sendmail/snd');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.backup_dir', '/Data/eapim/portal/sendmail/bak');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.error_dir', '/Data/eapim/portal/sendmail/bak');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.retention_date', '60');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.interface_id', 'UAGFF00001UIE');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.host_url', 'http://172.31.35.144:9021');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.api_key', '7cca6d58-e4f7-474d-9edd-525806bc99ff');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.connection_timeout', '5');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.response_timeout', '5');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.timeout', '10');
|
||||||
|
|
||||||
|
|
||||||
|
-- autogen template
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai.batch.url', '');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai.batch.connection_timeout', '5');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai.batch.response_timeout', '5');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai.batch.timeout', '10');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai.batch.charset', 'euc-kr');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.send_dir', '');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.backup_dir', '');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.error_dir', '');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.interface_id', '');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.retention_date', '60');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.host', '');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.api_key', '');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.connection_timeout', '5');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.response_timeout', '5');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.timeout', '10');
|
||||||
|
```
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
pipeline {
|
||||||
|
agent { label 'apipod01' }
|
||||||
|
|
||||||
|
environment {
|
||||||
|
// Java 환경 설정
|
||||||
|
JAVA_HOME = '/App/jenkins/jdks/jdk1.8.0_441'
|
||||||
|
PATH = "${JAVA_HOME}/bin:${env.PATH}"
|
||||||
|
|
||||||
|
// Gradle 환경 설정
|
||||||
|
GRADLE_HOME = '/App/jenkins/gradle-8.7'
|
||||||
|
GRADLE_USER_HOME = '/App/jenkins/gradle-home'
|
||||||
|
// GRADLE_OPTS = '--offline'
|
||||||
|
|
||||||
|
// Git 저장소 정보
|
||||||
|
GIT_SERVER = '192.168.240.178:18081'
|
||||||
|
GIT_CREDENTIALS_ID = 'git-ssh-credentials'
|
||||||
|
|
||||||
|
// 프로젝트 디렉토리 구조
|
||||||
|
PROJECT_HOME = '/Data/jenkins/eapim'
|
||||||
|
|
||||||
|
BRANCH = 'jenkins_with_weblogic'
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
stages {
|
||||||
|
stage('Git pull') {
|
||||||
|
steps {
|
||||||
|
echo "[admin] Git pull from branch: ${BRANCH}"
|
||||||
|
dir("${PROJECT_HOME}/eapim-admin") {
|
||||||
|
git url: "ssh://git@${GIT_SERVER}/eapim/eapim-admin", branch: "${BRANCH}", credentialsId: "${GIT_CREDENTIALS_ID}"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
echo "[online-core] Git pull from branch: ${BRANCH}"
|
||||||
|
dir("${PROJECT_HOME}/eapim-online/elink-online-core") {
|
||||||
|
git url: "ssh://git@${GIT_SERVER}/eapim/elink-online-core", branch: "${BRANCH}", credentialsId: "${GIT_CREDENTIALS_ID}"
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "[online-core-jpa] Git pull from branch: ${BRANCH}"
|
||||||
|
dir("${PROJECT_HOME}/eapim-online/elink-online-core-jpa") {
|
||||||
|
git url: "ssh://git@${GIT_SERVER}/eapim/elink-online-core-jpa", branch: "${BRANCH}", credentialsId: "${GIT_CREDENTIALS_ID}"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
echo "[online-transformer] Git pull from branch: ${BRANCH}"
|
||||||
|
dir("${PROJECT_HOME}/eapim-online/elink-online-transformer") {
|
||||||
|
git url: "ssh://git@${GIT_SERVER}/eapim/elink-online-transformer", branch: "${BRANCH}", credentialsId: "${GIT_CREDENTIALS_ID}"
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "[online-common] Git pull from branch: ${BRANCH}"
|
||||||
|
dir("${PROJECT_HOME}/eapim-online/elink-online-common") {
|
||||||
|
git url: "ssh://git@${GIT_SERVER}/eapim/elink-online-common", branch: "${BRANCH}", credentialsId: "${GIT_CREDENTIALS_ID}"
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "[online-emsclient] Git pull from branch: ${BRANCH}"
|
||||||
|
dir("${PROJECT_HOME}/eapim-online/elink-online-emsclient") {
|
||||||
|
git url: "ssh://git@${GIT_SERVER}/eapim/elink-online-emsclient", branch: "${BRANCH}", credentialsId: "${GIT_CREDENTIALS_ID}"
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "[portal-common] Git pull from branch: ${BRANCH}"
|
||||||
|
dir("${PROJECT_HOME}/eapim-online/elink-portal-common") {
|
||||||
|
git url: "ssh://git@${GIT_SERVER}/eapim/elink-portal-common", branch: "${BRANCH}", credentialsId: "${GIT_CREDENTIALS_ID}"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
echo "[kjb-safedb] Git pull from branch: ${BRANCH}"
|
||||||
|
dir("${PROJECT_HOME}/kjb-safedb") {
|
||||||
|
git url: "ssh://git@${GIT_SERVER}/eapim/kjb-safedb", branch: "${BRANCH}", credentialsId: "${GIT_CREDENTIALS_ID}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
stage('Build') {
|
||||||
|
steps {
|
||||||
|
tool name: 'Oracle-JDK-1.8', type: 'hudson.model.JDK'
|
||||||
|
|
||||||
|
echo "[admin] Build project"
|
||||||
|
dir("${PROJECT_HOME}/eapim-admin") {
|
||||||
|
sh '${GRADLE_HOME}/bin/gradle clean build -x test -Pprofile=weblogic'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
stage('Archive WAR') {
|
||||||
|
steps {
|
||||||
|
echo "[admin] Archive WAR file"
|
||||||
|
dir("${PROJECT_HOME}/eapim-admin/build/libs") {
|
||||||
|
archiveArtifacts artifacts: '*.war', fingerprint: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -36,21 +36,93 @@ eLink 모듈을 참조하여 구성되어있으며, 추후 필요 모듈외에
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
### TOMCAT 기동 옵션 참조
|
## TOMCAT 기동 옵션 참조
|
||||||
|
### 은행 개발 서버용
|
||||||
```
|
```
|
||||||
-Deai.datasource.type=DEV
|
-Deai.datasource.type=DEV
|
||||||
-Dinst.Name=apimsSvr11
|
-Dinst.Name=emsSvr11
|
||||||
-Deai.tableowner=ems
|
-Deai.tableowner=EMSADM
|
||||||
-Deai.systemmode=D
|
-Deai.systemmode=D
|
||||||
-Dfile.encoding=utf-8
|
-Dfile.encoding=utf-8
|
||||||
-DLOGBACK_LOG_LEVEL=info
|
-DLOGBACK_LOG_LEVEL=info
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 로컬 개발용
|
||||||
|
|
||||||
|
```
|
||||||
|
-Deai.datasource.type=DEV
|
||||||
|
-Dinst.Name=emsSvr99
|
||||||
|
-Deai.tableowner=EMSADM
|
||||||
|
-Deai.systemmode=D
|
||||||
|
-Dfile.encoding=utf-8
|
||||||
|
-Dlogin.mode=db
|
||||||
|
-DLOGBACK_LOG_LEVEL=DEBUG
|
||||||
|
-Dlogback.configurationFile=classpath:logback-dev.xml
|
||||||
|
-Dhibernate.dialect=org.hibernate.dialect.Oracle12cDialect
|
||||||
|
-Dkjb_safedb.mode=none
|
||||||
|
```
|
||||||
|
|
||||||
|
## 광주은행 커스텀 관련
|
||||||
|
|
||||||
### Gradle 빌드 옵션
|
### Gradle 빌드 옵션
|
||||||
```bash
|
```bash
|
||||||
# Weblogic 배포용 (테스트 제외)
|
# Weblogic 배포용 (테스트 제외)
|
||||||
gradle build -x test -Pprofile=weblogic
|
gradle build -x test -Pprofile=weblogic
|
||||||
```
|
```
|
||||||
|
|
||||||
- -Pprofile=weblogic 사용시 weblogic-web.xml 을 web.xml 로 사용 (DefaultServlet 이슈)
|
- -Pprofile=weblogic 사용시 weblogic-web.xml 을 web.xml 로 사용 (DefaultServlet 이슈)
|
||||||
|
|
||||||
|
|
||||||
|
## 광주은행 참고 사항
|
||||||
|
### PORTAL Parameter
|
||||||
|
- deploy.prod_use_proxy = N (개발/운영 망 간 연동 없음)
|
||||||
|
- kjb.ums.eai_batch.url : EAI 배치 서버 URL (이메일 발송 용도)
|
||||||
|
- 개발 : http://172.31.32.111:10230/BATAppWeb/EaiBatCall
|
||||||
|
- QA : http://172.31.33.111:10430/BATAppWeb/EaiBatCall
|
||||||
|
- 운영 : http://172.21.1.40:10860/BATAppWeb/EaiBatCall
|
||||||
|
- 입력하지 않을 경우 EAI 배치 호출을 하지 않고 내부적으로 통신하지 않고 정상 처리(log 내 warning 로그)
|
||||||
|
- kjb.ums.eai_batch.send_dir : EAI 배치 서버 파일 송신 디렉토리
|
||||||
|
- Default : /Data/eapim/portal/sendmail
|
||||||
|
|
||||||
|
|
||||||
|
- -Pprofile=weblogic 사용시 weblogic-web.xml 을 web.xml 로 사용 (DefaultServlet 이슈)
|
||||||
|
|
||||||
|
### 추가 파라미터
|
||||||
|
```sql
|
||||||
|
-- 은행 개발 서버용
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai_batch.url', 'http://172.31.32.111:10230/BATAppWeb/EaiBatCall');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai.batch.connection_timeout', '5');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai.batch.response_timeout', '5');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai.batch.timeout', '10');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai.batch.charset', 'euc-kr');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.send_dir', '/Data/eapim/portal/sendmail/snd');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.backup_dir', '/Data/eapim/portal/sendmail/bak');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.error_dir', '/Data/eapim/portal/sendmail/bak');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.retention_date', '60');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.interface_id', 'UAGFF00001UIE');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.host_url', 'http://172.31.35.144:9021');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.api_key', '7cca6d58-e4f7-474d-9edd-525806bc99ff');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.connection_timeout', '5');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.response_timeout', '5');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.timeout', '10');
|
||||||
|
commit;
|
||||||
|
|
||||||
|
|
||||||
|
-- 로컬 개발용 (외부)
|
||||||
|
--insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai_batch.url', '');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai.batch.connection_timeout', '5');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai.batch.response_timeout', '5');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai.batch.timeout', '10');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.eai.batch.charset', 'euc-kr');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.send_dir', '/Data/eapim/portal/sendmail/snd');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.backup_dir', '/Data/eapim/portal/sendmail/bak');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.error_dir', '/Data/eapim/portal/sendmail/bak');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.retention_date', '60');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.eai_batch.interface_id', 'UAGFF00001UIE');
|
||||||
|
-- insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.host_url', '');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.api_key', '7cca6d58-e4f7-474d-9edd-525806bc99ff');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.connection_timeout', '5');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.response_timeout', '5');
|
||||||
|
insert into EMSADM.TSEAIRM24 (PRPTYGROUPNAME, PRPTYNAME, PRPTY2VAL) values ('Monitoring', 'kjb.ums.timeout', '10');
|
||||||
|
commit;
|
||||||
|
```
|
||||||
+3
-1
@@ -7,6 +7,7 @@ include 'elink-online-common'
|
|||||||
include 'elink-online-emsclient'
|
include 'elink-online-emsclient'
|
||||||
include 'elink-portal-common'
|
include 'elink-portal-common'
|
||||||
include 'kjb-safedb'
|
include 'kjb-safedb'
|
||||||
|
include 'eapim-admin-kjb'
|
||||||
|
|
||||||
project (':elink-online-core-jpa').projectDir = new File(settingsDir, "../eapim-online/elink-online-core-jpa")
|
project (':elink-online-core-jpa').projectDir = new File(settingsDir, "../eapim-online/elink-online-core-jpa")
|
||||||
project (':elink-online-core').projectDir = new File(settingsDir, "../eapim-online/elink-online-core")
|
project (':elink-online-core').projectDir = new File(settingsDir, "../eapim-online/elink-online-core")
|
||||||
@@ -14,4 +15,5 @@ project (':elink-online-transformer').projectDir = new File(settingsDir, "../eap
|
|||||||
project (':elink-online-common').projectDir = new File(settingsDir, "../eapim-online/elink-online-common")
|
project (':elink-online-common').projectDir = new File(settingsDir, "../eapim-online/elink-online-common")
|
||||||
project (':elink-online-emsclient').projectDir = new File(settingsDir, "../eapim-online/elink-online-emsclient")
|
project (':elink-online-emsclient').projectDir = new File(settingsDir, "../eapim-online/elink-online-emsclient")
|
||||||
project (':elink-portal-common').projectDir = new File(settingsDir, "../elink-portal-common")
|
project (':elink-portal-common').projectDir = new File(settingsDir, "../elink-portal-common")
|
||||||
project (':kjb-safedb').projectDir = new File(settingsDir, "../kjb-safedb")
|
project (':kjb-safedb').projectDir = new File(settingsDir, "../kjb-safedb")
|
||||||
|
project (':eapim-admin-kjb').projectDir = new File(settingsDir, "eapim-admin-kjb")
|
||||||
@@ -3,6 +3,8 @@ package com.eactive.eai.custom;
|
|||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
|
|
||||||
|
import com.eactive.eai.rms.data.PortalSchemaProviderHolder;
|
||||||
|
import com.eactive.eai.rms.env.EmsConfig;
|
||||||
import com.eactive.eai.transformer.message.ISO8583MessageFactory;
|
import com.eactive.eai.transformer.message.ISO8583MessageFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -36,5 +38,8 @@ public class CustomizingAppInitializer implements InitializingBean {
|
|||||||
logger.info(String.format("ISO8583MessageFactory registered - %s = %s", MESSAGE_TYPE_SVL, ISO8583_SVL_CLASS_NAME));
|
logger.info(String.format("ISO8583MessageFactory registered - %s = %s", MESSAGE_TYPE_SVL, ISO8583_SVL_CLASS_NAME));
|
||||||
logger.info(String.format("ISO8583MessageFactory registered - %s = %s", LAYOUT_TYPE_H2H, ISO8583_H2H_CLASS_NAME));
|
logger.info(String.format("ISO8583MessageFactory registered - %s = %s", LAYOUT_TYPE_H2H, ISO8583_H2H_CLASS_NAME));
|
||||||
logger.info(String.format("ISO8583MessageFactory registered - %s = %s", LAYOUT_TYPE_SVL, ISO8583_SVL_CLASS_NAME));
|
logger.info(String.format("ISO8583MessageFactory registered - %s = %s", LAYOUT_TYPE_SVL, ISO8583_SVL_CLASS_NAME));
|
||||||
|
|
||||||
|
// PortalSchemaProviderHolder 초기화 (eai.tableowner 주입)
|
||||||
|
PortalSchemaProviderHolder.setProvider(() -> System.getProperty(EmsConfig.TABLE_OWNER));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public class BapConnSessionController extends BapBaseAnnotationController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value= "/bap/adapter/socket/connStatus.json", params = "cmd=TRANSACTION")
|
@RequestMapping(value= "/bap/adapter/socket/connStatus.json", params = "cmd=CONTROL")
|
||||||
public ModelAndView control(HttpServletRequest request, String startStop, String uuid) throws Exception {
|
public ModelAndView control(HttpServletRequest request, String startStop, String uuid) throws Exception {
|
||||||
|
|
||||||
String[] args = new String[4];
|
String[] args = new String[4];
|
||||||
|
|||||||
+3
-3
@@ -80,7 +80,7 @@ public class BapTelePropertyController extends BapBaseAnnotationController {
|
|||||||
HashMap<String, Object>[] list = gson.fromJson(gridData, HashMap[].class);
|
HashMap<String, Object>[] list = gson.fromJson(gridData, HashMap[].class);
|
||||||
service.insert(map,list);
|
service.insert(map,list);
|
||||||
|
|
||||||
CommonCommand command = new CommonCommand("com.eactive.eai.agent.teleproperty.UpdatePropertyCommand",(String)map.get("prptyGroupName"));
|
CommonCommand command = new CommonCommand("com.eactive.eai.agent.property.UpdatePropertyCommand",(String)map.get("prptyGroupName"));
|
||||||
agentUtilService.broadcast(command);
|
agentUtilService.broadcast(command);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@@ -94,7 +94,7 @@ public class BapTelePropertyController extends BapBaseAnnotationController {
|
|||||||
HashMap<String, Object>[] list = gson.fromJson(gridData, HashMap[].class);
|
HashMap<String, Object>[] list = gson.fromJson(gridData, HashMap[].class);
|
||||||
service.update(map,list);
|
service.update(map,list);
|
||||||
|
|
||||||
CommonCommand command = new CommonCommand("com.eactive.eai.agent.teleproperty.UpdatePropertyCommand",(String)map.get("prptyGroupName"));
|
CommonCommand command = new CommonCommand("com.eactive.eai.agent.property.UpdatePropertyCommand",(String)map.get("prptyGroupName"));
|
||||||
agentUtilService.broadcast(command);
|
agentUtilService.broadcast(command);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@@ -107,7 +107,7 @@ public class BapTelePropertyController extends BapBaseAnnotationController {
|
|||||||
paramMap.put("prptyGroupName", prptyGroupName);
|
paramMap.put("prptyGroupName", prptyGroupName);
|
||||||
service.delete(paramMap);
|
service.delete(paramMap);
|
||||||
|
|
||||||
CommonCommand command = new CommonCommand("com.eactive.eai.agent.teleproperty.RemovePropertyCommand",prptyGroupName);
|
CommonCommand command = new CommonCommand("com.eactive.eai.agent.property.RemovePropertyCommand",prptyGroupName);
|
||||||
agentUtilService.broadcast(command);
|
agentUtilService.broadcast(command);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ public class BapServerController extends BapBaseAnnotationController {
|
|||||||
public ModelAndView initCombo( HttpServletRequest request,
|
public ModelAndView initCombo( HttpServletRequest request,
|
||||||
HttpServletResponse response,String eaiSvcName) throws Exception {
|
HttpServletResponse response,String eaiSvcName) throws Exception {
|
||||||
|
|
||||||
List<Map<String, Object>> listServer = ibatisComboService.selectListComboForTable("TSEAICM20", "code", "codename","codegroup = 'YN' ");
|
List<Map<String, Object>> listServer = ibatisComboService.selectListComboForTable("TSEAIBP03","EAISEVRINSTNCNAME","EAISEVRINSTNCNAME");
|
||||||
|
|
||||||
Map<String, Object> resultMap = new HashMap<String, Object>();
|
Map<String, Object> resultMap = new HashMap<String, Object>();
|
||||||
resultMap.put("serverRows" , listServer);
|
resultMap.put("serverRows" , listServer);
|
||||||
|
|||||||
+1
-1
@@ -88,7 +88,7 @@ public class BapClassMapController extends BapBaseAnnotationController {
|
|||||||
HttpServletResponse response,@RequestParam HashMap<String,Object> map ) throws Exception {
|
HttpServletResponse response,@RequestParam HashMap<String,Object> map ) throws Exception {
|
||||||
|
|
||||||
// 전문클래스ID 공백 제거
|
// 전문클래스ID 공백 제거
|
||||||
map.replace("telgmClsID",map.get("telgmClsID").toString().trim());
|
// map.replace("telgmClsID",map.get("telgmClsID").toString().trim());
|
||||||
|
|
||||||
service.insert(map);
|
service.insert(map);
|
||||||
CommonCommand command = new CommonCommand("com.eactive.eai.agent.rule.telegraminfo.UpdateTelegramInfoCommand", map.get("telgmClsID"));
|
CommonCommand command = new CommonCommand("com.eactive.eai.agent.rule.telegraminfo.UpdateTelegramInfoCommand", map.get("telgmClsID"));
|
||||||
|
|||||||
+1
-86
@@ -1,8 +1,6 @@
|
|||||||
package com.eactive.eai.rms.bap.manage.message.messageMeta;
|
package com.eactive.eai.rms.bap.manage.message.messageMeta;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@@ -122,88 +120,5 @@ public class BapMessageMetaController extends BapBaseAnnotationController {
|
|||||||
return null;
|
return null;
|
||||||
|
|
||||||
}
|
}
|
||||||
@RequestMapping(value= "/bap/admin/message/messageMetaMan.json",params = "cmd=LIST_DELETE")
|
|
||||||
public String deleteList(HttpServletRequest request,
|
|
||||||
HttpServletResponse response, @RequestParam HashMap<String, Object> paramMap ) throws Exception {
|
|
||||||
for (String msgMetaDstcd : paramMap.get("msgMetaDstcdList").toString().split(",")) {
|
|
||||||
HashMap<String, Object> paramDetail = new HashMap<String,Object>();
|
|
||||||
paramDetail.put("msgMetaDstcd", msgMetaDstcd);
|
|
||||||
service.delete(paramDetail);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
|
|
||||||
}
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@RequestMapping(value= "/bap/admin/message/messageMetaMan.json",params = "cmd=CLONE")
|
|
||||||
public ModelAndView clone(HttpServletRequest request,
|
|
||||||
HttpServletResponse response,@RequestParam HashMap<String,Object> map) throws Exception {
|
|
||||||
|
|
||||||
String msgMetaDstcd = map.get("msgMetaDstcd").toString();
|
|
||||||
HashMap<String, Object> detailMap = service.selectDetail(msgMetaDstcd);
|
|
||||||
HashMap<String, Object> detail = (HashMap<String, Object>)detailMap.get("detail");
|
|
||||||
List<Map<String, Object>> list = (List<Map<String, Object>>)detailMap.get("list");
|
|
||||||
|
|
||||||
// detail insert 데이터키 치환 (insert_bm03)
|
|
||||||
String newMsgMetaDstcd = map.get("newMsgMetaDstcd").toString();
|
|
||||||
detail.put("msgMetaDstcd", newMsgMetaDstcd);
|
|
||||||
detail.put("msgDesc" , map.get("newMsgDesc") != null ? map.get("newMsgDesc") : detail.get("MSGDESC"));
|
|
||||||
detail.put("thisMsgUseYn", detail.get("THISMSGUSEYN"));
|
|
||||||
|
|
||||||
String searchMsgMetaDstcd = map.get("searchMsgMetaDstcd").toString();
|
|
||||||
String cloneMsgMetaDstcd = map.get("cloneMsgMetaDstcd").toString();
|
|
||||||
|
|
||||||
// gridList insert 데이터키 치환 (insert_bm02)
|
|
||||||
HashMap<String, Object>[] gridList = list.toArray(new HashMap[list.size()]);
|
|
||||||
for (int i=0; i<list.size(); i++) {
|
|
||||||
Map<String, Object> listMap = (Map<String, Object>)list.get(i);
|
|
||||||
gridList[i].put("msgMetaDstcd" , ((String)listMap.get("MSGMETADSTCD")).replace(searchMsgMetaDstcd,cloneMsgMetaDstcd));
|
|
||||||
gridList[i].put("thisMsgUseYn" , listMap.get("THISMSGCLMNUSEYN"));
|
|
||||||
// 메시지항목명을 치환하면 메시지항목 테이블(BM01)에 항목이 없으므로 메타 Item 리스트에 보이지 않음 --> 치환 안함으로 변경
|
|
||||||
// gridList[i].replace("MSGITEMDSTICNAME" , ((String)listMap.get("MSGITEMDSTICNAME")).replace(searchMsgMetaDstcd,cloneMsgMetaDstcd));
|
|
||||||
gridList[i].replace("MSGITEMDSTICNAME" , listMap.get("MSGITEMDSTICNAME"));
|
|
||||||
gridList[i].replace("MSGCLMNSEQ" , listMap.get("MSGCLMNSEQ"));
|
|
||||||
}
|
|
||||||
|
|
||||||
String userid = com.eactive.eai.rms.common.login.SessionManager.getUserId(request);
|
}
|
||||||
detail.put("userid", userid );
|
|
||||||
|
|
||||||
service.insert(detail,gridList);
|
|
||||||
|
|
||||||
CommonCommand command = new CommonCommand("com.eactive.eai.agent.telegram.UpdateTelegramCommand",map.get("newMsgMetaDstcd"));
|
|
||||||
agentUtilService.broadcast(command);
|
|
||||||
|
|
||||||
HashMap<String, Object> result = new HashMap<String, Object>();
|
|
||||||
result.put("detail",detail);
|
|
||||||
result.put("list",gridList);
|
|
||||||
ModelAndView modelAndView = new ModelAndView("jsonView", result);
|
|
||||||
|
|
||||||
return modelAndView;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@RequestMapping(value= "/bap/admin/message/messageMetaMan.json",params = "cmd=LIST_DOWNLOAD_SQL")
|
|
||||||
public ModelAndView downloadSql(HttpServletRequest request,
|
|
||||||
HttpServletResponse response,@RequestParam HashMap<String,Object> map) throws Exception {
|
|
||||||
|
|
||||||
List<Map<String, Object>> msgMetaList = new ArrayList<Map<String, Object>>();
|
|
||||||
for (String searchMsgMetaDstcd : map.get("searchMsgMetaDstcdList").toString().split(",")) {
|
|
||||||
HashMap<String, Object> msgMeta = service.selectDetail(searchMsgMetaDstcd);
|
|
||||||
msgMetaList.add((Map<String, Object>)msgMeta.get("detail"));
|
|
||||||
}
|
|
||||||
|
|
||||||
HashMap<String,Object> messageMeta = new HashMap<String,Object>();
|
|
||||||
messageMeta.put("list", msgMetaList);
|
|
||||||
messageMeta.put("userid",com.eactive.eai.rms.common.login.SessionManager.getUserId(request));
|
|
||||||
messageMeta.put("fileName", map.get("fileName"));
|
|
||||||
messageMeta.put("svrType", map.get("svrType"));
|
|
||||||
|
|
||||||
ModelAndView modelAndView = new ModelAndView("jsonView",service.mkInserSqlForMsgMeta(messageMeta));
|
|
||||||
|
|
||||||
return modelAndView;
|
|
||||||
}
|
|
||||||
@RequestMapping(value= "/bap/admin/message/messageMetaMan.view",params = "cmd=LIST_FILE_DOWNLOAD")
|
|
||||||
public String fileDownload(HttpServletRequest request) throws Exception {
|
|
||||||
|
|
||||||
return "/bap/admin/common/filedownload";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
+4
-177
@@ -1,9 +1,5 @@
|
|||||||
package com.eactive.eai.rms.bap.manage.message.messageMeta;
|
package com.eactive.eai.rms.bap.manage.message.messageMeta;
|
||||||
|
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -13,8 +9,6 @@ import org.springframework.beans.factory.annotation.Qualifier;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import com.eactive.eai.rms.bap.common.base.BapBaseService;
|
import com.eactive.eai.rms.bap.common.base.BapBaseService;
|
||||||
import com.eactive.eai.rms.bap.manage.comm.property.BapPropertyDao;
|
|
||||||
import com.eactive.eai.rms.common.util.SqlUtil;
|
|
||||||
|
|
||||||
@Service("bapMessageMetaService")
|
@Service("bapMessageMetaService")
|
||||||
public class BapMessageMetaService extends BapBaseService {
|
public class BapMessageMetaService extends BapBaseService {
|
||||||
@@ -23,17 +17,13 @@ public class BapMessageMetaService extends BapBaseService {
|
|||||||
@Qualifier("bapMessageMetaDao")
|
@Qualifier("bapMessageMetaDao")
|
||||||
private BapMessageMetaDao dao;
|
private BapMessageMetaDao dao;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
@Qualifier("bapPropertyDao")
|
|
||||||
private BapPropertyDao propDao;
|
|
||||||
|
|
||||||
public HashMap<String, Object> selectList(int startNum,int endNum, HashMap<String, Object> paramMap) throws Exception {
|
public HashMap<String, Object> selectList(int startNum,int endNum, HashMap<String, Object> paramMap) throws Exception {
|
||||||
|
|
||||||
// 전체 목록수 얻기
|
// 전체 목록 수 얻기
|
||||||
int totalCount = dao.selectListCount(paramMap);
|
int totalCount = dao.selectListCount(paramMap);
|
||||||
|
|
||||||
paramMap.put("startNum" , startNum);// 시작 record
|
paramMap.put("startNum" , startNum);// record
|
||||||
paramMap.put("endNum" , endNum);// 끝 record
|
paramMap.put("endNum" , endNum);// record
|
||||||
|
|
||||||
List<Map<String, Object>> list = dao.selectList(paramMap);
|
List<Map<String, Object>> list = dao.selectList(paramMap);
|
||||||
HashMap<String, Object> map = new HashMap<String, Object>();
|
HashMap<String, Object> map = new HashMap<String, Object>();
|
||||||
@@ -44,11 +34,6 @@ public class BapMessageMetaService extends BapBaseService {
|
|||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int selectTotalCount(HashMap<String, Object> paramMap) throws Exception {
|
|
||||||
|
|
||||||
return dao.selectListCount(paramMap); // 전체 목록수 얻기
|
|
||||||
}
|
|
||||||
|
|
||||||
public HashMap<String, Object> selectDetail(String msgMetaDstcd) throws Exception {
|
public HashMap<String, Object> selectDetail(String msgMetaDstcd) throws Exception {
|
||||||
|
|
||||||
HashMap<String, Object> detail = dao.selectDetail(msgMetaDstcd);
|
HashMap<String, Object> detail = dao.selectDetail(msgMetaDstcd);
|
||||||
@@ -94,162 +79,4 @@ public class BapMessageMetaService extends BapBaseService {
|
|||||||
dao.deleteList(paramMap);
|
dao.deleteList(paramMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
}
|
||||||
public HashMap<String,String> mkInserSqlForMsgMeta(HashMap<String, Object> msgMetaMap) throws Exception {
|
|
||||||
|
|
||||||
StringBuffer msgMetaInsertSql = new StringBuffer();
|
|
||||||
String[] columnUserId = {"THISMSGREGSNTID","THISMSGAMNDRID","THISMSGCLMNREGSNTID","THISMSGCLMNAMNDRID"}; // userID 입력컬럼 구분
|
|
||||||
String[] columnDateTime = {"THISMSGREGIHMS","THISMSGAMNDHMS","THISMSGCLMNREGIHMS","THISMSGCLMNAMNDHMS"}; // DateTime 입력컬럼 구분
|
|
||||||
List<Map<String, Object>> msgMetaList = (List<Map<String, Object>>)msgMetaMap.get("list");
|
|
||||||
String userid = msgMetaMap.containsKey("userid") ? msgMetaMap.get("userid").toString() : "";
|
|
||||||
|
|
||||||
for (Map<String,Object> meta : msgMetaList) {
|
|
||||||
// MESSAGE META LIST into BM03
|
|
||||||
List<String> columnArr = new ArrayList<String>();
|
|
||||||
String[] columnList = {"MSGMETADSTCD","MSGDESC","THISMSGUSEYN","THISMSGREGSNTID","THISMSGREGIHMS","THISMSGAMNDRID","THISMSGAMNDHMS"};
|
|
||||||
columnArr = Arrays.asList(columnList);
|
|
||||||
msgMetaInsertSql.append("INSERT INTO EAIPKG.TSEAIBM03 (");
|
|
||||||
|
|
||||||
// 필드명 입력
|
|
||||||
for (String column : columnArr) {
|
|
||||||
msgMetaInsertSql.append((column.equals(columnArr.get(columnArr.size()-1))) ? column : column+",");
|
|
||||||
}
|
|
||||||
msgMetaInsertSql.append(") VALUES (");
|
|
||||||
// 필드값 입력
|
|
||||||
for (String column : columnArr) {
|
|
||||||
if (column.equals(columnArr.get(columnArr.size()-1))) {
|
|
||||||
if (Arrays.asList(columnUserId).contains(column)) {
|
|
||||||
msgMetaInsertSql.append("'"+userid+"');\n");
|
|
||||||
} else if (Arrays.asList(columnDateTime).contains(column)) {
|
|
||||||
msgMetaInsertSql.append("TO_CHAR(LOCALTIMESTAMP, 'YYYYMMDDHH24MISSFF3'));\n");
|
|
||||||
} else {
|
|
||||||
msgMetaInsertSql.append("'"+(meta.containsKey(column) ? meta.get(column) : "")+"');\n");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (Arrays.asList(columnUserId).contains(column)) {
|
|
||||||
msgMetaInsertSql.append("'"+userid+"',");
|
|
||||||
} else if (Arrays.asList(columnDateTime).contains(column)) {
|
|
||||||
msgMetaInsertSql.append("TO_CHAR(LOCALTIMESTAMP, 'YYYYMMDDHH24MISSFF3'),");
|
|
||||||
} else {
|
|
||||||
msgMetaInsertSql.append("'"+(meta.containsKey(column) ? meta.get(column) : "")+"',");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
HashMap<String, Object> metaMap = selectDetail(meta.get("MSGMETADSTCD").toString());
|
|
||||||
List<Map<String, Object>> metaItemList = (List<Map<String, Object>>)metaMap.get("list");
|
|
||||||
|
|
||||||
// MESSAGE META LIST into BM02
|
|
||||||
for (Map<String, Object> metaItem : metaItemList) {
|
|
||||||
List<String> columnItemArr = new ArrayList<String>();
|
|
||||||
String[] columnItemList = {"MSGMETADSTCD","MSGCLMNSEQ","MSGITEMDSTICNAME","THISMSGCLMNUSEYN","THISMSGREGSNTID","THISMSGREGIHMS","THISMSGAMNDRID","THISMSGAMNDHMS"};
|
|
||||||
columnItemArr = Arrays.asList(columnItemList);
|
|
||||||
msgMetaInsertSql.append("INSERT INTO EAIPKG.TSEAIBM02 (MSGGROUPDSTCD,");
|
|
||||||
|
|
||||||
// 필드명 입력
|
|
||||||
for (String columnItem : columnItemArr) {
|
|
||||||
if (columnItem.equals("MSGMETADSTCD")) continue;
|
|
||||||
msgMetaInsertSql.append((columnItem.equals(columnItemArr.get(columnItemArr.size()-1))) ? columnItem : columnItem+",");
|
|
||||||
}
|
|
||||||
msgMetaInsertSql.append(") VALUES (");
|
|
||||||
// 필드값 입력
|
|
||||||
for (String column : columnItemArr) {
|
|
||||||
if (column.equals(columnItemArr.get(columnItemArr.size()-1))) {
|
|
||||||
if (Arrays.asList(columnUserId).contains(column)) {
|
|
||||||
msgMetaInsertSql.append("'"+userid+"');\n");
|
|
||||||
} else if (Arrays.asList(columnDateTime).contains(column)) {
|
|
||||||
msgMetaInsertSql.append("TO_CHAR(LOCALTIMESTAMP, 'YYYYMMDDHH24MISSFF3'));\n");
|
|
||||||
} else {
|
|
||||||
msgMetaInsertSql.append("'"+(metaItem.containsKey(column) ? metaItem.get(column) : "")+"');\n");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (Arrays.asList(columnUserId).contains(column)) {
|
|
||||||
msgMetaInsertSql.append("'"+userid+"',");
|
|
||||||
} else if (Arrays.asList(columnDateTime).contains(column)) {
|
|
||||||
msgMetaInsertSql.append("TO_CHAR(LOCALTIMESTAMP, 'YYYYMMDDHH24MISSFF3'),");
|
|
||||||
} else {
|
|
||||||
msgMetaInsertSql.append("'"+(metaItem.containsKey(column) ? metaItem.get(column) : "")+"',");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// MESSAGE META LIST into BM01
|
|
||||||
for (Map<String, Object> metaItem : metaItemList) {
|
|
||||||
List<String> columnClmArr = new ArrayList<String>();
|
|
||||||
String[] columnClmList = {"MSGITEMDSTICNAME","THISMSGCLMNUSEYN","MSGCLMNNAME","MSGCLMNATTRIPTRNCD","MSGCLMNVAL","THISMSGCLMNREGSNTID","THISMSGCLMNREGIHMS","THISMSGCLMNAMNDRID","THISMSGCLMNAMNDHMS"};
|
|
||||||
columnClmArr = Arrays.asList(columnClmList);
|
|
||||||
|
|
||||||
msgMetaInsertSql.append("MERGE INTO EAIPKG.TSEAIBM01 r USING (VALUES(");
|
|
||||||
// 필드값 입력
|
|
||||||
for (String column : columnClmArr) {
|
|
||||||
if (column.equals(columnClmArr.get(columnClmArr.size()-1))) {
|
|
||||||
if (Arrays.asList(columnUserId).contains(column)) {
|
|
||||||
msgMetaInsertSql.append("'"+userid+"')) ");
|
|
||||||
} else if (Arrays.asList(columnDateTime).contains(column)) {
|
|
||||||
msgMetaInsertSql.append("TO_CHAR(LOCALTIMESTAMP, 'YYYYMMDDHH24MISSFF3'))) ");
|
|
||||||
} else {
|
|
||||||
msgMetaInsertSql.append("'"+(metaItem.containsKey(column) ? metaItem.get(column) : "")+"')) ");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (Arrays.asList(columnUserId).contains(column)) {
|
|
||||||
msgMetaInsertSql.append("'"+userid+"',");
|
|
||||||
} else if (Arrays.asList(columnDateTime).contains(column)) {
|
|
||||||
msgMetaInsertSql.append("TO_CHAR(LOCALTIMESTAMP, 'YYYYMMDDHH24MISSFF3'),");
|
|
||||||
} else {
|
|
||||||
msgMetaInsertSql.append("'"+(metaItem.containsKey(column) ? metaItem.get(column) : "")+"',");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 필드명 입력
|
|
||||||
msgMetaInsertSql.append("AS s(");
|
|
||||||
for (String columnClm : columnClmArr) {
|
|
||||||
msgMetaInsertSql.append((columnClm.equals(columnClmArr.get(columnClmArr.size()-1))) ? columnClm+")\n" : columnClm+",");
|
|
||||||
}
|
|
||||||
msgMetaInsertSql.append("ON r.MSGITEMDSTICNAME = s.MSGITEMDSTICNAME WHEN NOT MATCHED THEN\n");
|
|
||||||
msgMetaInsertSql.append("INSERT (");
|
|
||||||
for (String columnClm : columnClmArr) {
|
|
||||||
msgMetaInsertSql.append((columnClm.equals(columnClmArr.get(columnClmArr.size()-1))) ? "r."+columnClm : "r."+columnClm+",");
|
|
||||||
}
|
|
||||||
msgMetaInsertSql.append(") VALUES (");
|
|
||||||
for (String columnClm : columnClmArr) {
|
|
||||||
msgMetaInsertSql.append((columnClm.equals(columnClmArr.get(columnClmArr.size()-1))) ? "s."+columnClm+");\n" : "s."+columnClm+",");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
HashMap<String,String> retMap = new HashMap<String,String>();
|
|
||||||
if (msgMetaMap.get("fileName") != null) {
|
|
||||||
OutputStream output = null;
|
|
||||||
try {
|
|
||||||
String sqlDownloadPath = getProperties("SQL_DOWNLOAD", "DOWNLOAD_PATH");
|
|
||||||
String sqlDownloadFile = sqlDownloadPath+msgMetaMap.get("fileName");
|
|
||||||
output = new FileOutputStream(sqlDownloadFile);
|
|
||||||
if (sqlDownloadPath != null) {
|
|
||||||
byte[] bt = msgMetaInsertSql.toString().getBytes();
|
|
||||||
output.write(bt);
|
|
||||||
output.close();
|
|
||||||
}
|
|
||||||
retMap.put("path", sqlDownloadPath);
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.error( e.getMessage(), e);
|
|
||||||
} finally {
|
|
||||||
if(output != null) try { output.close(); } catch(Exception ee) {logger.error( ee.getMessage(), ee);}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
retMap = SqlUtil.executeSql(msgMetaInsertSql.toString(), "BAP_"+msgMetaMap.get("svrType").toString().toUpperCase());
|
|
||||||
}
|
|
||||||
|
|
||||||
return retMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getProperties(String propGroup, String propName) throws Exception {
|
|
||||||
HashMap<String,Object> params = new HashMap<String,Object>();
|
|
||||||
params.put("prptyGroupName", propGroup);
|
|
||||||
params.put("prptyName", propName);
|
|
||||||
|
|
||||||
HashMap<String, Object> props = propDao.getProperties(params);
|
|
||||||
|
|
||||||
return props.get("PRPTY2VAL").toString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
+11
-19
@@ -137,20 +137,20 @@ public class BapMessageProcController extends BapBaseAnnotationController {
|
|||||||
List<Map<String, Object>> bjobBzwkDstcd = comboService.selectListComboForTableWithCode("TSEAIBJ02", "BJOBBZWKDSTCD", "BJOBBZWKNAME");
|
List<Map<String, Object>> bjobBzwkDstcd = comboService.selectListComboForTableWithCode("TSEAIBJ02", "BJOBBZWKDSTCD", "BJOBBZWKNAME");
|
||||||
List<Map<String, Object>> bjobInstiDstcd = comboService.selectListComboForTableWithCode("TSEAIBJ06", "OSIDINSTIDSTCD", "OSIDINSTINAME");
|
List<Map<String, Object>> bjobInstiDstcd = comboService.selectListComboForTableWithCode("TSEAIBJ06", "OSIDINSTIDSTCD", "OSIDINSTINAME");
|
||||||
//
|
//
|
||||||
// List<Map<String, Object>> sysCd = comboService.selectListComboForTableWithCode("TSEAIBJ11", "SYSCD", "SYSNAME");
|
List<Map<String, Object>> sysCd = comboService.selectListComboForTableWithCode("TSEAIBJ11", "SYSCD", "SYSNAME");
|
||||||
List<Map<String, Object>> uapplCd = //comboService.selectListComboForTableWithCode("TSEAICM01", "TRIM(EAIBZWKDSTCD)", "BZWKDSTICNAME");
|
// List<Map<String, Object>> uapplCd = //comboService.selectListComboForTableWithCode("TSEAICM01", "TRIM(EAIBZWKDSTCD)", "BZWKDSTICNAME");
|
||||||
comboService.selectListComboForTable("TSEAICM01", "TRIM(EAIBZWKDSTCD)", "BZWKDSTICNAME","systeminoutdstcd = 'I' ");
|
// comboService.selectListComboForTable("TSEAICM01", "TRIM(EAIBZWKDSTCD)", "BZWKDSTICNAME","systeminoutdstcd = 'I' ");
|
||||||
List<Map<String, Object>> bJobCycleGb = //comboService.selectListCombo("BAP_CYCLE_GB"); // BATCH작업주기구분
|
// List<Map<String, Object>> bJobCycleGb = //comboService.selectListCombo("BAP_CYCLE_GB"); // BATCH작업주기구분
|
||||||
comboService.selectListComboForTable("TSEAICM20", "code", "codename","codegroup = 'BAP_CYCLE_GB' ");
|
// comboService.selectListComboForTable("TSEAICM20", "code", "codename","codegroup = 'BAP_CYCLE_GB' ");
|
||||||
|
|
||||||
Map<String, Object> resultMap = new HashMap<String, Object>();
|
Map<String, Object> resultMap = new HashMap<String, Object>();
|
||||||
|
|
||||||
resultMap.put("bjobBzwkDstcd" , bjobBzwkDstcd);
|
resultMap.put("bjobBzwkDstcd" , bjobBzwkDstcd);
|
||||||
resultMap.put("bjobInstiDstcd", bjobInstiDstcd);
|
resultMap.put("bjobInstiDstcd", bjobInstiDstcd);
|
||||||
// resultMap.put("groupCoCd" , groupCoCd);
|
// resultMap.put("groupCoCd" , groupCoCd);
|
||||||
// resultMap.put("sysCd" , sysCd);
|
resultMap.put("sysCd" , sysCd);
|
||||||
resultMap.put("uapplCd" , uapplCd);
|
// resultMap.put("uapplCd" , uapplCd);
|
||||||
resultMap.put("bJobCycleGb" , bJobCycleGb);
|
// resultMap.put("bJobCycleGb" , bJobCycleGb);
|
||||||
|
|
||||||
ModelAndView modelAndView = new ModelAndView("jsonView",resultMap);
|
ModelAndView modelAndView = new ModelAndView("jsonView",resultMap);
|
||||||
return modelAndView;
|
return modelAndView;
|
||||||
@@ -159,21 +159,13 @@ public class BapMessageProcController extends BapBaseAnnotationController {
|
|||||||
@RequestMapping(value= "/bap/admin/work/messageProcMan.json",params = "cmd=LIST_PROP")
|
@RequestMapping(value= "/bap/admin/work/messageProcMan.json",params = "cmd=LIST_PROP")
|
||||||
public ModelAndView getProps( HttpServletRequest request,
|
public ModelAndView getProps( HttpServletRequest request,
|
||||||
HttpServletResponse response,
|
HttpServletResponse response,
|
||||||
@RequestParam String bjobBzwkDstcd,
|
@RequestParam String bjobBzwkDstcd
|
||||||
@RequestParam String bjobMsgDstcd
|
|
||||||
) throws Exception {
|
) throws Exception {
|
||||||
|
|
||||||
Map<String, Object> resultMap = new HashMap<String, Object>();
|
HashMap<String, Object> map = service.getProps(bjobBzwkDstcd);
|
||||||
|
|
||||||
if(!StringUtils.isEmpty(bjobBzwkDstcd)) {
|
ModelAndView modelAndView = new ModelAndView("jsonView", map);
|
||||||
HashMap<String, Object> propMap = service.getProps(bjobBzwkDstcd, bjobMsgDstcd); // 프로퍼티 정보
|
|
||||||
HashMap<String, Object> InstMap = service.selectOsidInstiDstcd(bjobBzwkDstcd);
|
|
||||||
|
|
||||||
resultMap.put("propMap", propMap);
|
|
||||||
resultMap.put("InstMap", InstMap);
|
|
||||||
}
|
|
||||||
|
|
||||||
ModelAndView modelAndView = new ModelAndView("jsonView", resultMap);
|
|
||||||
return modelAndView;
|
return modelAndView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -87,4 +87,9 @@ public class BapMessageProcDao extends SqlMapClientTemplateDao {
|
|||||||
public void deleteVerifyInfo(HashMap<String, Object> param) throws Exception{
|
public void deleteVerifyInfo(HashMap<String, Object> param) throws Exception{
|
||||||
this.template.delete("BapMessageProc.deleteVerifyInfo", param);
|
this.template.delete("BapMessageProc.deleteVerifyInfo", param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void deleteBS01(HashMap<String, Object> param) throws Exception{
|
||||||
|
this.template.delete("BapMessageProc.deleteBS01", param);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+19
-6
@@ -43,9 +43,10 @@ public class BapMessageProcService extends BapBaseService {
|
|||||||
|
|
||||||
HashMap<String, Object> detail = dao.selectDetail(param);
|
HashMap<String, Object> detail = dao.selectDetail(param);
|
||||||
String bjobBzwkDstcd = (String)detail.get("BJOBBZWKDSTCD");
|
String bjobBzwkDstcd = (String)detail.get("BJOBBZWKDSTCD");
|
||||||
String bjobMsgDstcd = (String)detail.get("BJOBMSGDSTCD");
|
String bjobTranDstcdName = (String)detail.get("BJOBTRANDSTCDNAME");
|
||||||
param.put("bjobBzwkDstcd", bjobBzwkDstcd );
|
param.put("bjobBzwkDstcd", bjobBzwkDstcd );
|
||||||
param.put("propGroupName", "TelegramInfo{" + bjobMsgDstcd + "}");
|
param.put("propGroupName", "TelegramInfo{" + bjobBzwkDstcd + "_" + bjobTranDstcdName + "}");
|
||||||
|
|
||||||
List<Map<String, Object>> list = dao.getProps(param);
|
List<Map<String, Object>> list = dao.getProps(param);
|
||||||
HashMap<String, Object> map = new HashMap<String, Object>();
|
HashMap<String, Object> map = new HashMap<String, Object>();
|
||||||
|
|
||||||
@@ -75,9 +76,8 @@ public class BapMessageProcService extends BapBaseService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void insert(HashMap<String, Object> paramMap, HashMap<String, Object>[] list, HashMap<String, Object> connList) throws Exception {
|
public void insert(HashMap<String, Object> paramMap, HashMap<String, Object>[] list, HashMap<String, Object> connList) throws Exception {
|
||||||
|
paramMap.put( "bjobMsgDstcd", dao.generatePK(paramMap));
|
||||||
// paramMap.put( "bjobMsgDstcd", dao.generatePK(paramMap));
|
|
||||||
dao.insert(paramMap);
|
dao.insert(paramMap);
|
||||||
telePropDao.delete(paramMap);
|
telePropDao.delete(paramMap);
|
||||||
telePropDao.deleteProperty(paramMap);
|
telePropDao.deleteProperty(paramMap);
|
||||||
@@ -99,7 +99,8 @@ public class BapMessageProcService extends BapBaseService {
|
|||||||
|
|
||||||
public void delete(HashMap<String, Object> paramMap) throws Exception {
|
public void delete(HashMap<String, Object> paramMap) throws Exception {
|
||||||
dao.delete(paramMap);
|
dao.delete(paramMap);
|
||||||
dao.deleteVerifyInfo(paramMap);
|
// dao.deleteVerifyInfo(paramMap);
|
||||||
|
dao.deleteBS01(paramMap);
|
||||||
telePropDao.delete(paramMap);
|
telePropDao.delete(paramMap);
|
||||||
telePropDao.deleteProperty(paramMap);
|
telePropDao.deleteProperty(paramMap);
|
||||||
}
|
}
|
||||||
@@ -114,6 +115,18 @@ public class BapMessageProcService extends BapBaseService {
|
|||||||
map.put("rows", list);
|
map.put("rows", list);
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public HashMap<String, Object> getProps(String bjobBzwkDstcd) throws Exception {
|
||||||
|
|
||||||
|
HashMap<String, Object> param = new HashMap<String, Object>();
|
||||||
|
param.put("bjobBzwkDstcd", bjobBzwkDstcd);
|
||||||
|
List<Map<String, Object>> list = dao.getProps(param);
|
||||||
|
HashMap<String, Object> map = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
map.put("rows", list);
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
public HashMap<String, Object> selectOsidInstiDstcd(String bjobBzwkDstcd) throws Exception {
|
public HashMap<String, Object> selectOsidInstiDstcd(String bjobBzwkDstcd) throws Exception {
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -92,14 +92,14 @@ public class BapProcWorkController extends BapBaseAnnotationController {
|
|||||||
|
|
||||||
List<Map<String, Object>> bjobBzwkDstcd = comboService.selectListComboForTableWithCode("TSEAIBJ02", "BJOBBZWKDSTCD", "BJOBBZWKNAME");
|
List<Map<String, Object>> bjobBzwkDstcd = comboService.selectListComboForTableWithCode("TSEAIBJ02", "BJOBBZWKDSTCD", "BJOBBZWKNAME");
|
||||||
List<Map<String, Object>> osidInstiDstcd = statusService.selectOsidInstiDstcd("");
|
List<Map<String, Object>> osidInstiDstcd = statusService.selectOsidInstiDstcd("");
|
||||||
List<Map<String, Object>> svcPrcssNo = comboService.selectListComboForTable("TSEAICM20", "code", "codename","codegroup = 'SVC_PRCSS_NO' ");
|
// List<Map<String, Object>> svcPrcssNo = comboService.selectListComboForTable("TSEAICM20", "code", "codename","codegroup = 'SVC_PRCSS_NO' ");
|
||||||
//comboService.selectListCombo("SVC_PRCSS_NO");
|
//comboService.selectListCombo("SVC_PRCSS_NO");
|
||||||
|
|
||||||
Map<String, Object> resultMap = new HashMap<String, Object>();
|
Map<String, Object> resultMap = new HashMap<String, Object>();
|
||||||
|
|
||||||
resultMap.put("bjobBzwkDstcd" , bjobBzwkDstcd);
|
resultMap.put("bjobBzwkDstcd" , bjobBzwkDstcd);
|
||||||
resultMap.put("osidInstiDstcd" , osidInstiDstcd);
|
resultMap.put("osidInstiDstcd" , osidInstiDstcd);
|
||||||
resultMap.put("svcPrcssNo" , svcPrcssNo);
|
// resultMap.put("svcPrcssNo" , svcPrcssNo);
|
||||||
|
|
||||||
ModelAndView modelAndView = new ModelAndView("jsonView",resultMap);
|
ModelAndView modelAndView = new ModelAndView("jsonView",resultMap);
|
||||||
return modelAndView;
|
return modelAndView;
|
||||||
|
|||||||
+52
-35
@@ -50,43 +50,63 @@ public class BapTransactionStatusController extends BapBaseAnnotationController
|
|||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@RequestMapping(value= "/bap/transaction/transactionStatusMan.json", params = "cmd=LIST")
|
@RequestMapping(value= "/bap/transaction/transactionStatusMan.json", params = "cmd=LIST")
|
||||||
public ModelAndView selectList(HttpServletRequest request,
|
public ModelAndView selectList(HttpServletRequest request, JsonPageVo pageVo,
|
||||||
@RequestParam HashMap<String, Object> paramMap) throws Exception {
|
@RequestParam HashMap<String, Object> paramMap) throws Exception {
|
||||||
|
|
||||||
// String date = (String)paramMap.get("searchStartYYYYMMDD");
|
String date = (String)paramMap.get("searchStartYYYYMMDD");
|
||||||
// CommonCommand command = new CommonCommand("com.eactive.eai.agent.schedule.GetScheduleBasisListCommand",date);
|
CommonCommand command = new CommonCommand("com.eactive.eai.agent.schedule.GetScheduleBasisListCommand",date);
|
||||||
|
|
||||||
|
Map<String, Object> returnMap = agentUtilService.broadcast(command);
|
||||||
|
Iterator<String> iter = returnMap.keySet().iterator();
|
||||||
|
String svrName = iter.next();
|
||||||
|
String[] basis = null;
|
||||||
|
|
||||||
|
if(returnMap.get(svrName) instanceof String[]) {
|
||||||
|
basis = (String[])returnMap.get(svrName);
|
||||||
|
}
|
||||||
|
|
||||||
// String[] basis = null;
|
if ( basis == null ){
|
||||||
|
basis = new String[1];
|
||||||
Map<String, Object> returnMap = null;
|
basis[0] = "D";
|
||||||
Iterator<String> iter = null;
|
}
|
||||||
String svrName = "";
|
paramMap.put("basis", basis);
|
||||||
// try {
|
|
||||||
// returnMap = agentUtilService.broadcast(command);
|
|
||||||
// iter = returnMap.keySet().iterator();
|
|
||||||
// svrName = iter.next();
|
|
||||||
// basis = (String[])returnMap.get(svrName);
|
|
||||||
// } catch (Exception e) {
|
|
||||||
// basis = new String[1];
|
|
||||||
// basis[0] = "D";
|
|
||||||
// }
|
|
||||||
|
|
||||||
// paramMap.put("basis", basis);
|
|
||||||
|
|
||||||
String activeTab = (String)paramMap.get("activeTab");
|
String activeTab = (String)paramMap.get("activeTab");
|
||||||
if ( activeTab.equals("tabS") ){
|
if ( activeTab.equals("tabS") ){
|
||||||
CommonCommand command = new CommonCommand("com.eactive.eai.agent.transaction.ProcessingFileTransferCommand","");
|
command = new CommonCommand("com.eactive.eai.agent.transaction.ProcessingFileTransferCommand","");
|
||||||
returnMap = agentUtilService.broadcast(command);
|
returnMap = agentUtilService.broadcast(command);
|
||||||
iter = returnMap.keySet().iterator();
|
iter = returnMap.keySet().iterator();
|
||||||
svrName = iter.next();
|
svrName = iter.next();
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
List<Map<String, Serializable>> list = (List<Map<String, Serializable>>)returnMap.get(svrName);
|
Object value = returnMap.get(svrName);
|
||||||
paramMap.put("procList", list);
|
|
||||||
|
|
||||||
|
if(value instanceof List) {
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
List<Map<String, Serializable>> list = (List<Map<String, Serializable>>)value;
|
||||||
|
paramMap.put("procList", list);
|
||||||
|
}else {
|
||||||
|
paramMap.put("procList", null);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, Object> resultMap = service.selectList( paramMap);
|
//Map<String, Object> resultMap = service.selectList( paramMap);
|
||||||
|
|
||||||
ModelAndView modelAndView = new ModelAndView("jsonView",resultMap);
|
//ModelAndView modelAndView = new ModelAndView("jsonView",resultMap);
|
||||||
|
|
||||||
|
Map<String, Object> listMap = service.selectList(pageVo.getStartNum(), pageVo.getEndNum(), paramMap);
|
||||||
|
|
||||||
|
pageVo.setTotalCount((Integer)listMap.get("totalCount"));
|
||||||
|
|
||||||
|
Map<String, Object> resultMap = new HashMap<String, Object>();
|
||||||
|
resultMap.put("total" , pageVo.getTotal()); //전체 페이지수
|
||||||
|
resultMap.put("page" , pageVo.getPage()); //현재 페이지수
|
||||||
|
resultMap.put("records", pageVo.getTotalCount()); //전체 레코드건수
|
||||||
|
resultMap.put("rows" , listMap.get("rows"));
|
||||||
|
|
||||||
|
ModelAndView modelAndView = new ModelAndView("jsonView",resultMap);
|
||||||
|
|
||||||
return modelAndView;
|
return modelAndView;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -135,22 +155,19 @@ public class BapTransactionStatusController extends BapBaseAnnotationController
|
|||||||
public ModelAndView initCombo( HttpServletRequest request,
|
public ModelAndView initCombo( HttpServletRequest request,
|
||||||
HttpServletResponse response) throws Exception {
|
HttpServletResponse response) throws Exception {
|
||||||
|
|
||||||
List<Map<String, Object>> groupCoCd = comboService.selectListComboForTable("TSEAICM20", "code", "codename","codegroup = 'EAIGROUPCOCD' ");
|
List<Map<String, Object>> bjobBzwkDstcd = comboService.selectListComboForTableWithCode("TSEAIBJ02", "BJOBBZWKDSTCD", "BJOBBZWKNAME");
|
||||||
//comboService.selectListCombo("EAIGROUPCOCD");
|
List<Map<String, Object>> osidInstiDstcd = service.selectOsidInstiDstcd("");
|
||||||
List<Map<String, Object>> bjobBzwkDstcd = comboService.selectListComboForTableWithCode("TSEAIBJ02", "BJOBBZWKDSTCD", "BJOBBZWKNAME");
|
// List<Map<String, Object>> uapplCd = comboService.selectListComboForTableWithCode("TSEAICM01", "TRIM(EAIBZWKDSTCD)", "BZWKDSTICNAME");
|
||||||
List<Map<String, Object>> osidInstiDstcd = service.selectOsidInstiDstcd("");
|
|
||||||
List<Map<String, Object>> uapplCd = comboService.selectListComboForTableWithCode("TSEAICM01", "TRIM(EAIBZWKDSTCD)", "BZWKDSTICNAME");
|
|
||||||
|
|
||||||
Map<String, Object> resultMap = new HashMap<String, Object>();
|
Map<String, Object> resultMap = new HashMap<String, Object>();
|
||||||
|
|
||||||
resultMap.put("bjobBzwkDstcd" , bjobBzwkDstcd);
|
resultMap.put("bjobBzwkDstcd" , bjobBzwkDstcd);
|
||||||
resultMap.put("osidInstiDstcd" , osidInstiDstcd);
|
resultMap.put("osidInstiDstcd" , osidInstiDstcd);
|
||||||
resultMap.put("groupCoCd" , groupCoCd);
|
// resultMap.put("uapplCd" , uapplCd);
|
||||||
resultMap.put("uapplCd" , uapplCd);
|
|
||||||
|
|
||||||
ModelAndView modelAndView = new ModelAndView("jsonView",resultMap);
|
ModelAndView modelAndView = new ModelAndView("jsonView",resultMap);
|
||||||
return modelAndView;
|
return modelAndView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value= "/bap/transaction/transactionStatusMan.json",params = "cmd=LIST_ORGN_COMBO")
|
@RequestMapping(value= "/bap/transaction/transactionStatusMan.json",params = "cmd=LIST_ORGN_COMBO")
|
||||||
public ModelAndView initOrgnCombo( HttpServletRequest request,
|
public ModelAndView initOrgnCombo( HttpServletRequest request,
|
||||||
|
|||||||
+16
-3
@@ -15,18 +15,31 @@ public class BapTransactionStatusDao extends SqlMapClientTemplateDao {
|
|||||||
public List<Map<String, Object>> findStatusList(HashMap<String, Object> param) throws Exception {
|
public List<Map<String, Object>> findStatusList(HashMap<String, Object> param) throws Exception {
|
||||||
return (List<Map<String, Object>>)template.queryForList("BapTranStatus.list_normal", param);
|
return (List<Map<String, Object>>)template.queryForList("BapTranStatus.list_normal", param);
|
||||||
}
|
}
|
||||||
|
public int findStatusListCount(HashMap<String, Object> param) throws Exception {
|
||||||
|
return (Integer)template.queryForObject("BapTranStatus.list_normal_count", param);
|
||||||
|
}
|
||||||
public List<Map<String, Object>> findErrorList(HashMap<String, Object> param) throws Exception {
|
public List<Map<String, Object>> findErrorList(HashMap<String, Object> param) throws Exception {
|
||||||
return (List<Map<String, Object>>)template.queryForList("BapTranStatus.list_e", param);
|
return (List<Map<String, Object>>)template.queryForList("BapTranStatus.list_e", param);
|
||||||
}
|
}
|
||||||
|
public int findErrorListCount(HashMap<String, Object> param) throws Exception {
|
||||||
|
return (Integer)template.queryForObject("BapTranStatus.list_e_count", param);
|
||||||
|
}
|
||||||
public List<Map<String, Object>> findFutureList(HashMap<String, Object> param) throws Exception {
|
public List<Map<String, Object>> findFutureList(HashMap<String, Object> param) throws Exception {
|
||||||
return (List<Map<String, Object>>)template.queryForList("BapTranStatus.list_f", param);
|
return (List<Map<String, Object>>)template.queryForList("BapTranStatus.list_f", param);
|
||||||
}
|
}
|
||||||
|
public int findFutureListCount(HashMap<String, Object> param) throws Exception {
|
||||||
|
return (Integer)template.queryForObject("BapTranStatus.list_f_count", param);
|
||||||
|
}
|
||||||
public List<Map<String, Object>> findDelayList(HashMap<String, Object> param) throws Exception {
|
public List<Map<String, Object>> findDelayList(HashMap<String, Object> param) throws Exception {
|
||||||
return (List<Map<String, Object>>)template.queryForList("BapTranStatus.list_l", param);
|
return (List<Map<String, Object>>)template.queryForList("BapTranStatus.list_l", param);
|
||||||
}
|
}
|
||||||
public List<Map<String, Object>> findSpecList(HashMap<String, Object> param) throws Exception {
|
public List<Map<String, Object>> findSpecList(HashMap<String, Object> param) throws Exception {
|
||||||
return (List<Map<String, Object>>)template.queryForList("BapTranStatus.speclist", param);
|
return (List<Map<String, Object>>)template.queryForList("BapTranStatus.speclist", param);
|
||||||
}
|
}
|
||||||
|
public int findSpecListCount(HashMap<String, Object> param) throws Exception {
|
||||||
|
return (Integer)template.queryForObject("BapTranStatus.speclist_count", param);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public HashMap<String, Object> selectDetail(HashMap<String, Object> param) throws Exception {
|
public HashMap<String, Object> selectDetail(HashMap<String, Object> param) throws Exception {
|
||||||
return (HashMap<String, Object>)template.queryForObject("BapTranStatus.masterlog", param);
|
return (HashMap<String, Object>)template.queryForObject("BapTranStatus.masterlog", param);
|
||||||
@@ -41,11 +54,11 @@ public class BapTransactionStatusDao extends SqlMapClientTemplateDao {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int getFileLogCount(HashMap<String, Object> param) throws Exception {
|
public int getFileLogCount(HashMap<String, Object> param) throws Exception {
|
||||||
return (Integer)template.queryForObject("BapTranStatus.getFileLogCount", param);
|
return (Integer)template.queryForObject("BapTranStatus.filelogcount", param);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getStageLogCount(HashMap<String, Object> param) throws Exception {
|
public int getStageLogCount(HashMap<String, Object> param) throws Exception {
|
||||||
return (Integer)template.queryForObject("BapTranStatus.getStageLogCount", param);
|
return (Integer)template.queryForObject("BapTranStatus.stagelogcount", param);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Map<String, Object>> selectOsidInstiDstcd(HashMap<String, Object> param) throws Exception {
|
public List<Map<String, Object>> selectOsidInstiDstcd(HashMap<String, Object> param) throws Exception {
|
||||||
|
|||||||
+17
-12
@@ -20,46 +20,51 @@ public class BapTransactionStatusService extends BapBaseService {
|
|||||||
@Qualifier("bapTransactionStatusDao")
|
@Qualifier("bapTransactionStatusDao")
|
||||||
private BapTransactionStatusDao dao;
|
private BapTransactionStatusDao dao;
|
||||||
|
|
||||||
public HashMap<String, Object> selectList(HashMap<String, Object> paramMap) throws Exception {
|
public HashMap<String, Object> selectList(int startNum,int endNum, HashMap<String, Object> paramMap) throws Exception {
|
||||||
|
|
||||||
|
|
||||||
String activeTab = (String)paramMap.get("activeTab");
|
String activeTab = (String)paramMap.get("activeTab");
|
||||||
ArrayList<String> tranPrcssDstcds = new ArrayList<String>();
|
ArrayList<String> tranPrcssDstcds = new ArrayList<String>();
|
||||||
ArrayList<String> tranPrcssDstcds2 = new ArrayList<String>();
|
|
||||||
|
|
||||||
|
|
||||||
|
paramMap.put("startNum" , startNum);
|
||||||
|
paramMap.put("endNum" , endNum);
|
||||||
|
|
||||||
HashMap<String, Object> map = new HashMap<String, Object>();
|
HashMap<String, Object> map = new HashMap<String, Object>();
|
||||||
|
|
||||||
if ( activeTab.equals("tabE")){
|
if ( activeTab.equals("tabE")){
|
||||||
tranPrcssDstcds.add("T");
|
tranPrcssDstcds.add("T");
|
||||||
//tranPrcssDstcds.add("R");
|
tranPrcssDstcds.add("R");
|
||||||
paramMap.put("tranPrcssDstcds", tranPrcssDstcds);
|
paramMap.put("tranPrcssDstcds", tranPrcssDstcds);
|
||||||
paramMap.put("tranPrcssDstcds2", tranPrcssDstcds2);
|
|
||||||
List<Map<String, Object>> listNomal = dao.findStatusList(paramMap);
|
List<Map<String, Object>> listNomal = dao.findStatusList(paramMap);
|
||||||
List<Map<String, Object>> listError = dao.findErrorList(paramMap);
|
List<Map<String, Object>> listError = dao.findErrorList(paramMap);
|
||||||
map.put("rows", processErrorList(listNomal, listError));
|
map.put("rows", processErrorList(listNomal, listError));
|
||||||
|
map.put("totalCount", dao.findErrorListCount(paramMap));
|
||||||
}else if ( activeTab.equals("tabF")){
|
}else if ( activeTab.equals("tabF")){
|
||||||
List<Map<String, Object>> listF = dao.findFutureList(paramMap);
|
List<Map<String, Object>> listF = dao.findFutureList(paramMap);
|
||||||
map.put("rows", listF);
|
map.put("rows", listF);
|
||||||
|
map.put("totalCount", dao.findFutureListCount(paramMap));
|
||||||
}else if ( activeTab.equals("tabQ")){
|
}else if ( activeTab.equals("tabQ")){
|
||||||
tranPrcssDstcds.add("Q");
|
tranPrcssDstcds.add("Q");
|
||||||
paramMap.put("tranPrcssDstcds", tranPrcssDstcds);
|
paramMap.put("tranPrcssDstcds", tranPrcssDstcds);
|
||||||
List<Map<String, Object>> waitlist = dao.findStatusList(paramMap);
|
List<Map<String, Object>> waitlist = dao.findStatusList(paramMap);
|
||||||
map.put("rows", waitlist);
|
map.put("rows", waitlist);
|
||||||
|
map.put("totalCount", dao.findStatusListCount(paramMap));
|
||||||
}else if ( activeTab.equals("tabS")){
|
}else if ( activeTab.equals("tabS")){
|
||||||
tranPrcssDstcds2.add("S");
|
tranPrcssDstcds.add("S");
|
||||||
paramMap.put("tranPrcssDstcds", tranPrcssDstcds);
|
paramMap.put("tranPrcssDstcds", tranPrcssDstcds);
|
||||||
paramMap.put("tranPrcssDstcds2", tranPrcssDstcds2);
|
|
||||||
List<Map<String, Object>> sendlist = dao.findStatusList(paramMap);
|
List<Map<String, Object>> sendlist = dao.findStatusList(paramMap);
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
List<Map<String, Serializable>> memList = (List<Map<String, Serializable>>)paramMap.get("procList");
|
List<Map<String, Serializable>> memList = (List<Map<String, Serializable>>)paramMap.get("procList");
|
||||||
processMemList(sendlist, memList);
|
|
||||||
|
if(memList != null) {
|
||||||
|
processMemList(sendlist, memList);
|
||||||
|
}
|
||||||
map.put("rows", sendlist);
|
map.put("rows", sendlist);
|
||||||
|
map.put("totalCount", dao.findStatusListCount(paramMap));
|
||||||
}else if ( activeTab.equals("tabA")){
|
}else if ( activeTab.equals("tabA")){
|
||||||
List<Map<String, Object>> listA = dao.findSpecList(paramMap);
|
List<Map<String, Object>> listA = dao.findSpecList(paramMap);
|
||||||
map.put("rows", listA);
|
map.put("rows", listA);
|
||||||
|
map.put("totalCount", dao.findSpecListCount(paramMap));
|
||||||
}
|
}
|
||||||
|
|
||||||
return map;
|
return map;
|
||||||
|
|||||||
+4
-5
@@ -17,7 +17,6 @@ import org.springframework.web.servlet.ModelAndView;
|
|||||||
|
|
||||||
import com.eactive.eai.agent.command.CommonCommand;
|
import com.eactive.eai.agent.command.CommonCommand;
|
||||||
import com.eactive.eai.rms.common.base.BapBaseAnnotationController;
|
import com.eactive.eai.rms.common.base.BapBaseAnnotationController;
|
||||||
import com.eactive.eai.rms.common.combo.ComboService;
|
|
||||||
import com.eactive.eai.rms.common.combo.IbatisComboService;
|
import com.eactive.eai.rms.common.combo.IbatisComboService;
|
||||||
import com.eactive.eai.rms.common.login.SessionManager;
|
import com.eactive.eai.rms.common.login.SessionManager;
|
||||||
import com.eactive.eai.rms.common.util.CamelCaseUtil;
|
import com.eactive.eai.rms.common.util.CamelCaseUtil;
|
||||||
@@ -72,15 +71,15 @@ public class BapTransactionTraceController extends BapBaseAnnotationController
|
|||||||
public ModelAndView initCombo( HttpServletRequest request,
|
public ModelAndView initCombo( HttpServletRequest request,
|
||||||
HttpServletResponse response) throws Exception {
|
HttpServletResponse response) throws Exception {
|
||||||
|
|
||||||
List<Map<String, Object>> groupCoCd = comboService.selectListComboForTable("TSEAICM20", "code", "codename","codegroup = 'EAIGROUPCOCD' ");
|
// List<Map<String, Object>> groupCoCd = comboService.selectListComboForTable("TSEAICM20", "code", "codename","codegroup = 'EAIGROUPCOCD' ");
|
||||||
List<Map<String, Object>> bjobBzwkDstcd = comboService.selectListComboForTableWithCode("TSEAIBJ02", "BJOBBZWKDSTCD", "BJOBBZWKNAME");
|
List<Map<String, Object>> bjobBzwkDstcd = comboService.selectListComboForTableWithCode("TSEAIBJ02", "BJOBBZWKDSTCD", "BJOBBZWKNAME");
|
||||||
List<Map<String, Object>> uapplCd = comboService.selectListComboForTableWithCode("TSEAICM01", "TRIM(EAIBZWKDSTCD)", "BZWKDSTICNAME");
|
// List<Map<String, Object>> uapplCd = comboService.selectListComboForTableWithCode("TSEAICM01", "TRIM(EAIBZWKDSTCD)", "BZWKDSTICNAME");
|
||||||
|
|
||||||
Map<String, Object> resultMap = new HashMap<String, Object>();
|
Map<String, Object> resultMap = new HashMap<String, Object>();
|
||||||
|
|
||||||
resultMap.put("bjobBzwkDstcd" , bjobBzwkDstcd);
|
resultMap.put("bjobBzwkDstcd" , bjobBzwkDstcd);
|
||||||
resultMap.put("groupCoCd" , groupCoCd);
|
// resultMap.put("groupCoCd" , groupCoCd);
|
||||||
resultMap.put("uapplCd" , uapplCd);
|
// resultMap.put("uapplCd" , uapplCd);
|
||||||
|
|
||||||
ModelAndView modelAndView = new ModelAndView("jsonView",resultMap);
|
ModelAndView modelAndView = new ModelAndView("jsonView",resultMap);
|
||||||
return modelAndView;
|
return modelAndView;
|
||||||
|
|||||||
+4
@@ -19,4 +19,8 @@ public class BapTransactionTraceDao extends SqlMapClientTemplateDao {
|
|||||||
public List<Map<String, Object>> selectList(HashMap<String, Object> param) throws Exception {
|
public List<Map<String, Object>> selectList(HashMap<String, Object> param) throws Exception {
|
||||||
return (List<Map<String, Object>>)template.queryForList("BapTransactionTrace.selectList", param);
|
return (List<Map<String, Object>>)template.queryForList("BapTransactionTrace.selectList", param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Map<String, Object>> selectOsidInstiDstcd(HashMap<String, Object> param) throws Exception {
|
||||||
|
return (List<Map<String, Object>>)template.queryForList("BapTranStatus.selectOsidInstiDstcd", param);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+9
-1
@@ -34,6 +34,14 @@ public class BapTransactionTraceService extends BapBaseService {
|
|||||||
|
|
||||||
return map;
|
return map;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Map<String, Object>> selectOsidInstiDstcd(String bjobBzwkDstcd) throws Exception {
|
||||||
|
|
||||||
|
HashMap<String, Object> param = new HashMap<String, Object>();
|
||||||
|
param.put("bjobBzwkDstcd", bjobBzwkDstcd);
|
||||||
|
|
||||||
|
return dao.selectOsidInstiDstcd(param);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+2
-2
@@ -86,14 +86,14 @@ public class BapTransactionWaitController extends BapBaseAnnotationController {
|
|||||||
|
|
||||||
List<Map<String, Object>> bjobBzwkDstcd = comboService.selectListComboForTableWithCode("TSEAIBJ02", "BJOBBZWKDSTCD", "BJOBBZWKNAME");
|
List<Map<String, Object>> bjobBzwkDstcd = comboService.selectListComboForTableWithCode("TSEAIBJ02", "BJOBBZWKDSTCD", "BJOBBZWKNAME");
|
||||||
List<Map<String, Object>> osidInstiDstcd = statusService.selectOsidInstiDstcd("");
|
List<Map<String, Object>> osidInstiDstcd = statusService.selectOsidInstiDstcd("");
|
||||||
List<Map<String, Object>> svcPrcssNo = comboService.selectListComboForTable("TSEAICM20", "code", "codename","codegroup = 'SVC_PRCSS_NO' ");
|
// List<Map<String, Object>> svcPrcssNo = comboService.selectListComboForTable("TSEAICM20", "code", "codename","codegroup = 'SVC_PRCSS_NO' ");
|
||||||
//comboService.selectListCombo("SVC_PRCSS_NO");
|
//comboService.selectListCombo("SVC_PRCSS_NO");
|
||||||
|
|
||||||
Map<String, Object> resultMap = new HashMap<String, Object>();
|
Map<String, Object> resultMap = new HashMap<String, Object>();
|
||||||
|
|
||||||
resultMap.put("bjobBzwkDstcd" , bjobBzwkDstcd);
|
resultMap.put("bjobBzwkDstcd" , bjobBzwkDstcd);
|
||||||
resultMap.put("osidInstiDstcd" , osidInstiDstcd);
|
resultMap.put("osidInstiDstcd" , osidInstiDstcd);
|
||||||
resultMap.put("svcPrcssNo" , svcPrcssNo);
|
// resultMap.put("svcPrcssNo" , svcPrcssNo);
|
||||||
|
|
||||||
ModelAndView modelAndView = new ModelAndView("jsonView",resultMap);
|
ModelAndView modelAndView = new ModelAndView("jsonView",resultMap);
|
||||||
return modelAndView;
|
return modelAndView;
|
||||||
|
|||||||
+1
-1
@@ -60,7 +60,7 @@ public class BapTransactionWaitService extends BapBaseService {
|
|||||||
|
|
||||||
public void delete(HashMap paramMap) throws Exception {
|
public void delete(HashMap paramMap) throws Exception {
|
||||||
dao.updateBJ03(paramMap);
|
dao.updateBJ03(paramMap);
|
||||||
dao.updateBJ08(paramMap);
|
//dao.updateBJ08(paramMap);
|
||||||
dao.delete(paramMap);
|
dao.delete(paramMap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -37,11 +37,9 @@ public class CrossScriptingFilter implements Filter {
|
|||||||
String uri = request.getRequestURL().toString();
|
String uri = request.getRequestURL().toString();
|
||||||
String servletPath = request.getServletPath();
|
String servletPath = request.getServletPath();
|
||||||
String baseUrl = uri.replace(servletPath, "");
|
String baseUrl = uri.replace(servletPath, "");
|
||||||
boolean isValidUrl = returnUrl.startsWith(baseUrl);
|
// 25.11.10 - weblogic https://host:443/ 문제 대응
|
||||||
// System.out.println("checkReturnUrl => "+ uri + " : "+ servletPath);
|
baseUrl = baseUrl.replace(":443", "");
|
||||||
// System.out.println("checkReturnUrl => "+ baseUrl + " : "+ returnUrl);
|
return returnUrl.startsWith(baseUrl);
|
||||||
// System.out.println("checkReturnUrl => "+ returnUrl + " : "+ isValidUrl);
|
|
||||||
return isValidUrl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
|
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
|
||||||
@@ -52,7 +50,6 @@ public class CrossScriptingFilter implements Filter {
|
|||||||
String returnUrl = (String)request.getParameter("returnUrl");
|
String returnUrl = (String)request.getParameter("returnUrl");
|
||||||
if(returnUrl != null) {
|
if(returnUrl != null) {
|
||||||
if(!checkReturnUrl(request, returnUrl)) {
|
if(!checkReturnUrl(request, returnUrl)) {
|
||||||
System.out.println("CrossScriptingFilter] bad request. - " + returnUrl);
|
|
||||||
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "bad request. - "+returnUrl);
|
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "bad request. - "+returnUrl);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ public class MonitoringFrontFilter implements Filter {
|
|||||||
|| uri.indexOf(request.getContextPath() +"/LoginServlet") > -1
|
|| uri.indexOf(request.getContextPath() +"/LoginServlet") > -1
|
||||||
|| uri.indexOf(request.getContextPath() +"/login/") > -1
|
|| uri.indexOf(request.getContextPath() +"/login/") > -1
|
||||||
|| uri.indexOf(request.getContextPath() +"/dashboard") > -1
|
|| uri.indexOf(request.getContextPath() +"/dashboard") > -1
|
||||||
|
|| uri.indexOf(request.getContextPath() +"/dashmain3.do") > -1
|
||||||
|| uri.indexOf(request.getContextPath() + "/loginForm.do") > -1
|
|| uri.indexOf(request.getContextPath() + "/loginForm.do") > -1
|
||||||
|| uri.indexOf(request.getContextPath() + "/login.do") > -1
|
|| uri.indexOf(request.getContextPath() + "/login.do") > -1
|
||||||
|| uri.indexOf(request.getContextPath() + "/ssoLogin.do") > -1
|
|| uri.indexOf(request.getContextPath() + "/ssoLogin.do") > -1
|
||||||
|
|||||||
@@ -563,14 +563,14 @@ public class MainController implements InterceptorSkipController {
|
|||||||
@RequestMapping("/changePassword.do")
|
@RequestMapping("/changePassword.do")
|
||||||
public String changePassword(HttpServletRequest request,
|
public String changePassword(HttpServletRequest request,
|
||||||
String changePassword, String confirmPassword,
|
String changePassword, String confirmPassword,
|
||||||
String userId, String password) {
|
String resetUserId, String resetPassword) {
|
||||||
HttpSession session = request.getSession();
|
HttpSession session = request.getSession();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
// 로그인 User ID 체크.
|
// 로그인 User ID 체크.
|
||||||
Optional<UserInfo> userInfoOptional = userInfoService
|
Optional<UserInfo> userInfoOptional = userInfoService
|
||||||
.findById(userId);
|
.findById(resetUserId);
|
||||||
|
|
||||||
if (!userInfoOptional.isPresent()) {
|
if (!userInfoOptional.isPresent()) {
|
||||||
UserAccessLogger.log(request, LOG_CATEGORY_LOGIN, "F",
|
UserAccessLogger.log(request, LOG_CATEGORY_LOGIN, "F",
|
||||||
@@ -604,8 +604,8 @@ public class MainController implements InterceptorSkipController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 3. 비밀번호 체크
|
// 3. 비밀번호 체크
|
||||||
if (!userInfo.getPassword().equals(Seed.encrypt(password))
|
if (!userInfo.getPassword().equals(Seed.encrypt(resetPassword))
|
||||||
&& !userInfo.getUserid().equals(userId)) {
|
&& !userInfo.getUserid().equals(resetUserId)) {
|
||||||
UserAccessLogger.log(request, LOG_CATEGORY_LOGIN, "F",
|
UserAccessLogger.log(request, LOG_CATEGORY_LOGIN, "F",
|
||||||
localeMessage
|
localeMessage
|
||||||
.getString("login.pwdmismatch5"));
|
.getString("login.pwdmismatch5"));
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
|||||||
|
|
||||||
import com.eactive.eai.rms.common.datasource.DataSourceType;
|
import com.eactive.eai.rms.common.datasource.DataSourceType;
|
||||||
import com.eactive.eai.rms.common.datasource.DataSourceTypeManager;
|
import com.eactive.eai.rms.common.datasource.DataSourceTypeManager;
|
||||||
|
import com.eactive.eai.rms.data.PortalSchemaProviderHolder;
|
||||||
|
import com.eactive.eai.rms.env.EmsConfig;
|
||||||
|
|
||||||
public class CustomBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
|
public class CustomBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
|
||||||
|
|
||||||
@@ -22,7 +24,13 @@ public class CustomBeanFactoryPostProcessor implements BeanFactoryPostProcessor
|
|||||||
|
|
||||||
public void postProcessBeanFactory(ConfigurableListableBeanFactory factory)
|
public void postProcessBeanFactory(ConfigurableListableBeanFactory factory)
|
||||||
throws BeansException {
|
throws BeansException {
|
||||||
|
|
||||||
|
// PortalSchemaProviderHolder 초기화 (Hibernate EntityManagerFactory 생성 전에 필요)
|
||||||
|
PortalSchemaProviderHolder.setProvider(() -> System.getProperty(EmsConfig.TABLE_OWNER));
|
||||||
|
if (logger.isDebugEnabled()) {
|
||||||
|
logger.debug("PortalSchemaProviderHolder initialized with tableOwner: " + System.getProperty(EmsConfig.TABLE_OWNER));
|
||||||
|
}
|
||||||
|
|
||||||
List<DataSourceType> dataSourceTypes = new ArrayList<DataSourceType>();
|
List<DataSourceType> dataSourceTypes = new ArrayList<DataSourceType>();
|
||||||
|
|
||||||
Map maps = factory.getBeansOfType(DataSourceType.class);
|
Map maps = factory.getBeansOfType(DataSourceType.class);
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
package com.eactive.eai.rms.common.startup;
|
package com.eactive.eai.rms.common.startup;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.nio.charset.Charset;
|
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.springframework.beans.factory.DisposableBean;
|
import org.springframework.beans.factory.DisposableBean;
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
@@ -11,115 +8,117 @@ import com.eactive.eai.rms.common.util.CommonConstants;
|
|||||||
import com.eactive.eai.rms.env.EmsConfig;
|
import com.eactive.eai.rms.env.EmsConfig;
|
||||||
import com.eactive.eai.rms.onl.common.service.AdapterStatusSendThreadPool;
|
import com.eactive.eai.rms.onl.common.service.AdapterStatusSendThreadPool;
|
||||||
|
|
||||||
public class AppInitializer implements InitializingBean, DisposableBean {
|
public class AppInitializer implements InitializingBean, DisposableBean {
|
||||||
|
|
||||||
final Logger logger = Logger.getLogger(AppInitializer.class);
|
final Logger logger = Logger.getLogger(AppInitializer.class);
|
||||||
|
|
||||||
boolean debug = true;
|
boolean debug = true;
|
||||||
|
|
||||||
private String instName;
|
private String instName;
|
||||||
|
|
||||||
private String tableOwner;
|
private String tableOwner;
|
||||||
|
|
||||||
private String systemMode = "D"; //EAI System Mode : [P/T/D/S]
|
private String systemMode = "D"; // EAI System Mode : [P/T/D/S]
|
||||||
|
|
||||||
private String themeColor = "black";
|
|
||||||
|
|
||||||
private String drMode = "";
|
|
||||||
|
|
||||||
private String eaiDatasourceType = "DEV"; // 데이터 소스 타입 :[DEV:개발/STG:스테이징/PRD:운영] ...NSG:내부서버
|
|
||||||
|
|
||||||
public void setInstName(String instName) {
|
|
||||||
this.instName = instName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTableOwner(String tableOwner) {
|
|
||||||
this.tableOwner = tableOwner;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSystemMode(String systemMode) {
|
|
||||||
this.systemMode = systemMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setThemeColor(String themeColor) {
|
|
||||||
this.themeColor = themeColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDrMode(String drMode) {
|
|
||||||
this.drMode = drMode;
|
|
||||||
}
|
|
||||||
public void setEaiDatasourceType(String eaiDatasourceType) {
|
|
||||||
this.eaiDatasourceType = eaiDatasourceType;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void init()
|
|
||||||
{
|
|
||||||
if (debug) {
|
|
||||||
logger.debug("applicationInitialized");
|
|
||||||
}
|
|
||||||
//MS949로 default encoding 고정
|
|
||||||
// System.setProperty("file.encoding","MS949");
|
|
||||||
// Field charset = null;
|
|
||||||
// try {
|
|
||||||
// charset = Charset.class.getDeclaredField("defaultCharset");
|
|
||||||
// charset.setAccessible(true);
|
|
||||||
// charset.set(null, null);
|
|
||||||
// } catch (Exception e) {
|
|
||||||
// e.printStackTrace();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// set default value
|
|
||||||
String serverName = System.getProperty(EmsConfig.INST_NAME);
|
|
||||||
if(serverName == null) {
|
|
||||||
System.setProperty(EmsConfig.INST_NAME, instName);
|
|
||||||
}
|
|
||||||
|
|
||||||
String tOwner = System.getProperty(EmsConfig.TABLE_OWNER);
|
|
||||||
if(tOwner == null) {
|
|
||||||
System.setProperty(EmsConfig.TABLE_OWNER, tableOwner);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 서버 구분 설정(개발:D, 테스트:T, 온라인:P)
|
|
||||||
CommonConstants.SERVER_TYPE = systemMode;
|
|
||||||
|
|
||||||
//모니터링 테마 적용
|
|
||||||
String tColor = System.getProperty(EmsConfig.THEME_COLOR);
|
|
||||||
if(tColor == null || "".equals(tColor)) {
|
|
||||||
System.setProperty(EmsConfig.THEME_COLOR, themeColor);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (debug) {
|
|
||||||
logger.debug(EmsConfig.DR_MODE + " = " + drMode);
|
|
||||||
}
|
|
||||||
//env 프라퍼티 파일만 있음 dr 여부 셋팅
|
|
||||||
System.setProperty(EmsConfig.DR_MODE, drMode);
|
|
||||||
|
|
||||||
//데이터 소스타입(DEV:개발 / STG:스테이징 / PRD:운영 ... )
|
private String themeColor = "black";
|
||||||
String eDatasourceType = System.getProperty(EmsConfig.DATASOURCE_TYPE);
|
|
||||||
if(eDatasourceType == null || "".equals(eDatasourceType)) {
|
private String drMode = "";
|
||||||
System.setProperty(EmsConfig.DATASOURCE_TYPE, eaiDatasourceType);
|
|
||||||
}
|
private String eaiDatasourceType = "DEV"; // 데이터 소스 타입 :[DEV:개발/STG:스테이징/PRD:운영] ...NSG:내부서버
|
||||||
|
|
||||||
if (debug) {
|
public void setInstName(String instName) {
|
||||||
logger.debug(EmsConfig.DATASOURCE_TYPE + " =" + eaiDatasourceType); //env 프라퍼티
|
this.instName = instName;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(debug) {
|
public void setTableOwner(String tableOwner) {
|
||||||
logger.debug("SERVER_TYPE ="+CommonConstants.SERVER_TYPE);
|
this.tableOwner = tableOwner;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
public void setSystemMode(String systemMode) {
|
||||||
public void destroy()
|
this.systemMode = systemMode;
|
||||||
{
|
}
|
||||||
AdapterStatusSendThreadPool.destroy();
|
|
||||||
if(debug) {
|
public void setThemeColor(String themeColor) {
|
||||||
logger.debug("############ e-link WebApplication stopping... preStop ############");
|
this.themeColor = themeColor;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
public void setDrMode(String drMode) {
|
||||||
|
this.drMode = drMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEaiDatasourceType(String eaiDatasourceType) {
|
||||||
|
this.eaiDatasourceType = eaiDatasourceType;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void init() {
|
||||||
|
if (debug) {
|
||||||
|
logger.debug("applicationInitialized");
|
||||||
|
}
|
||||||
|
// MS949로 default encoding 고정
|
||||||
|
// System.setProperty("file.encoding","MS949");
|
||||||
|
// Field charset = null;
|
||||||
|
// try {
|
||||||
|
// charset = Charset.class.getDeclaredField("defaultCharset");
|
||||||
|
// charset.setAccessible(true);
|
||||||
|
// charset.set(null, null);
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// e.printStackTrace();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// set default value
|
||||||
|
String serverName = System.getProperty(EmsConfig.INST_NAME);
|
||||||
|
if (serverName == null) {
|
||||||
|
System.setProperty(EmsConfig.INST_NAME, instName);
|
||||||
|
}
|
||||||
|
|
||||||
|
String tOwner = System.getProperty(EmsConfig.TABLE_OWNER);
|
||||||
|
if (tOwner == null) {
|
||||||
|
System.setProperty(EmsConfig.TABLE_OWNER, tableOwner);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 서버 구분 설정(개발:D, 테스트:T, 온라인:P)
|
||||||
|
CommonConstants.SERVER_TYPE = systemMode;
|
||||||
|
|
||||||
|
// 모니터링 테마 적용
|
||||||
|
String tColor = System.getProperty(EmsConfig.THEME_COLOR);
|
||||||
|
if (tColor == null || "".equals(tColor)) {
|
||||||
|
System.setProperty(EmsConfig.THEME_COLOR, themeColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (debug) {
|
||||||
|
logger.debug(EmsConfig.DR_MODE + " = " + drMode);
|
||||||
|
}
|
||||||
|
// env 프라퍼티 파일만 있음 dr 여부 셋팅
|
||||||
|
System.setProperty(EmsConfig.DR_MODE, drMode);
|
||||||
|
|
||||||
|
// 데이터 소스타입(DEV:개발 / STG:스테이징 / PRD:운영 ... )
|
||||||
|
String eDatasourceType = System.getProperty(EmsConfig.DATASOURCE_TYPE);
|
||||||
|
if (eDatasourceType == null || "".equals(eDatasourceType)) {
|
||||||
|
System.setProperty(EmsConfig.DATASOURCE_TYPE, eaiDatasourceType);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (debug) {
|
||||||
|
logger.debug(EmsConfig.DATASOURCE_TYPE + " =" + eaiDatasourceType); // env 프라퍼티
|
||||||
|
}
|
||||||
|
|
||||||
|
if (debug) {
|
||||||
|
logger.debug("SERVER_TYPE =" + CommonConstants.SERVER_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (debug) {
|
||||||
|
logger.debug("PortalSchemaProviderHolder initialized with tableOwner: " + tableOwner);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void destroy() {
|
||||||
|
AdapterStatusSendThreadPool.destroy();
|
||||||
|
if (debug) {
|
||||||
|
logger.debug("############ e-link WebApplication stopping... preStop ############");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet() throws Exception {
|
public void afterPropertiesSet() throws Exception {
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+14
@@ -35,6 +35,20 @@ public class MonitoringPropertyService
|
|||||||
return property.map(MonitoringProperty::getPrpty2Val).orElse(null);
|
return property.map(MonitoringProperty::getPrpty2Val).orElse(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getPropertyValue(String prptyGroupName, String prptyName, String defaultValue) {
|
||||||
|
MonitoringPropertyId id = new MonitoringPropertyId();
|
||||||
|
id.setPrptyGroupName(prptyGroupName);
|
||||||
|
id.setPrptyName(prptyName);
|
||||||
|
|
||||||
|
Optional<MonitoringProperty> property = repository.findById(id);
|
||||||
|
if (property.isPresent() && !property.get().getPrpty2Val().isEmpty()) {
|
||||||
|
return property.get().getPrpty2Val();
|
||||||
|
} else {
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public Iterable<MonitoringProperty> findAllByIdPrptyName(String prptyName) {
|
public Iterable<MonitoringProperty> findAllByIdPrptyName(String prptyName) {
|
||||||
BooleanExpression predicate = QMonitoringProperty.monitoringProperty.id.prptyName.eq(prptyName);
|
BooleanExpression predicate = QMonitoringProperty.monitoringProperty.id.prptyName.eq(prptyName);
|
||||||
return repository.findAll(predicate);
|
return repository.findAll(predicate);
|
||||||
|
|||||||
@@ -38,7 +38,8 @@ public class JobHistoryService extends AbstractEMSDataSerivce<JobHistory, String
|
|||||||
.select(qJobHistory.status)
|
.select(qJobHistory.status)
|
||||||
.from(qJobHistory)
|
.from(qJobHistory)
|
||||||
.where(qJobHistory.endDate.eq(maxEndDateQuery))
|
.where(qJobHistory.endDate.eq(maxEndDateQuery))
|
||||||
.fetchOne();
|
.fetchFirst(); // unique 에러 발생 대응
|
||||||
|
//.fetchOne();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateStatus(String jobName, String startDate, String endDate, String status) throws Exception {
|
public void updateStatus(String jobName, String startDate, String endDate, String status) throws Exception {
|
||||||
@@ -51,7 +52,7 @@ public class JobHistoryService extends AbstractEMSDataSerivce<JobHistory, String
|
|||||||
|
|
||||||
String rctStatus = findRecentStatus(jobName, instanceName); // 최근 Data 조회
|
String rctStatus = findRecentStatus(jobName, instanceName); // 최근 Data 조회
|
||||||
|
|
||||||
log.info("[DHJEONG]1_rctStatus-->{}, jobName-->{}, instanceName-->{}", rctStatus, jobName, instanceName);
|
// log.info("[DHJEONG]1_rctStatus-->{}, jobName-->{}, instanceName-->{}", rctStatus, jobName, instanceName);
|
||||||
|
|
||||||
if (!status.equals(rctStatus) || !"E".equals(jobInfo.getChkStatus())) {
|
if (!status.equals(rctStatus) || !"E".equals(jobInfo.getChkStatus())) {
|
||||||
// 'Y' 이면 무조건 등록, 'E' 이면 ==> Status 바뀌면 등록
|
// 'Y' 이면 무조건 등록, 'E' 이면 ==> Status 바뀌면 등록
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import javax.persistence.Id;
|
|||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
|
|
||||||
import org.hibernate.annotations.Comment;
|
import org.hibernate.annotations.Comment;
|
||||||
|
import org.hibernate.annotations.GenericGenerator;
|
||||||
import org.springframework.data.annotation.CreatedBy;
|
import org.springframework.data.annotation.CreatedBy;
|
||||||
import org.springframework.data.annotation.CreatedDate;
|
import org.springframework.data.annotation.CreatedDate;
|
||||||
|
|
||||||
@@ -30,7 +31,20 @@ public class UserAthrRoleChgHistory extends AbstractEntity<String> implements Se
|
|||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
// @GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
@GenericGenerator(
|
||||||
|
name = "TB_APIMS_USER_ATHR_ROLE_CHG_H_GEN",
|
||||||
|
strategy = "com.eactive.eai.rms.data.jpa.SchemaPrefixedSequenceGenerator",
|
||||||
|
parameters = {
|
||||||
|
@org.hibernate.annotations.Parameter(name = "sequence_name", value = "TB_APIMS_USER_ATHR_ROLE_CHG_H_SEQ"),
|
||||||
|
@org.hibernate.annotations.Parameter(name = "initial_value", value = "1"),
|
||||||
|
@org.hibernate.annotations.Parameter(name = "increment_size", value = "1")
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@GeneratedValue(
|
||||||
|
strategy = GenerationType.SEQUENCE,
|
||||||
|
generator = "TB_APIMS_USER_ATHR_ROLE_CHG_H_GEN"
|
||||||
|
)
|
||||||
@Column(name = "CHG_LOG_ID", unique = true, nullable = false)
|
@Column(name = "CHG_LOG_ID", unique = true, nullable = false)
|
||||||
@Comment("사용자 정보 변경 로그 식별 ID")
|
@Comment("사용자 정보 변경 로그 식별 ID")
|
||||||
private int chgLogId;
|
private int chgLogId;
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import javax.persistence.Id;
|
|||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
|
|
||||||
import org.hibernate.annotations.Comment;
|
import org.hibernate.annotations.Comment;
|
||||||
|
import org.hibernate.annotations.GenericGenerator;
|
||||||
import org.springframework.data.annotation.CreatedDate;
|
import org.springframework.data.annotation.CreatedDate;
|
||||||
|
|
||||||
import com.eactive.eai.data.entity.AbstractEntity;
|
import com.eactive.eai.data.entity.AbstractEntity;
|
||||||
@@ -30,7 +31,20 @@ public class UserLoginHistory extends AbstractEntity<String> implements Serializ
|
|||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
// @GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
@GenericGenerator(
|
||||||
|
name = "TB_APIMS_LOIN_L_GEN",
|
||||||
|
strategy = "com.eactive.eai.rms.data.jpa.SchemaPrefixedSequenceGenerator",
|
||||||
|
parameters = {
|
||||||
|
@org.hibernate.annotations.Parameter(name = "sequence_name", value = "TB_APIMS_LOIN_L_SEQ"),
|
||||||
|
@org.hibernate.annotations.Parameter(name = "initial_value", value = "1"),
|
||||||
|
@org.hibernate.annotations.Parameter(name = "increment_size", value = "1")
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@GeneratedValue(
|
||||||
|
strategy = GenerationType.SEQUENCE,
|
||||||
|
generator = "TB_APIMS_LOIN_L_GEN"
|
||||||
|
)
|
||||||
@Column(name="LOIN_LOG_ID", unique = true, nullable = false)
|
@Column(name="LOIN_LOG_ID", unique = true, nullable = false)
|
||||||
@Comment("로그인 로그 식별자")
|
@Comment("로그인 로그 식별자")
|
||||||
private int loginLogId;
|
private int loginLogId;
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import javax.persistence.SequenceGenerator;
|
|||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
|
|
||||||
import org.hibernate.annotations.Comment;
|
import org.hibernate.annotations.Comment;
|
||||||
|
import org.hibernate.annotations.GenericGenerator;
|
||||||
import org.hibernate.envers.RevisionEntity;
|
import org.hibernate.envers.RevisionEntity;
|
||||||
import org.hibernate.envers.RevisionNumber;
|
import org.hibernate.envers.RevisionNumber;
|
||||||
import org.hibernate.envers.RevisionTimestamp;
|
import org.hibernate.envers.RevisionTimestamp;
|
||||||
@@ -23,8 +24,18 @@ import lombok.Data;
|
|||||||
@SequenceGenerator(name = "revision_seq", sequenceName = "revision_info_seq", allocationSize = 1)
|
@SequenceGenerator(name = "revision_seq", sequenceName = "revision_info_seq", allocationSize = 1)
|
||||||
public class CustomRevisionEntity {
|
public class CustomRevisionEntity {
|
||||||
|
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "revision_seq")
|
// @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "revision_seq")
|
||||||
|
@GenericGenerator(
|
||||||
|
name = "revision_seq_gen",
|
||||||
|
strategy = "com.eactive.eai.rms.data.jpa.SchemaPrefixedSequenceGenerator",
|
||||||
|
parameters = {
|
||||||
|
@org.hibernate.annotations.Parameter(name = "sequence_name", value = "REVISION_INFO_SEQ"),
|
||||||
|
@org.hibernate.annotations.Parameter(name = "initial_value", value = "1"),
|
||||||
|
@org.hibernate.annotations.Parameter(name = "increment_size", value = "1")
|
||||||
|
}
|
||||||
|
)
|
||||||
|
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "revision_seq_gen")
|
||||||
@RevisionNumber
|
@RevisionNumber
|
||||||
@Column(name = "REV")
|
@Column(name = "REV")
|
||||||
private long rev;
|
private long rev;
|
||||||
@@ -37,5 +48,4 @@ public class CustomRevisionEntity {
|
|||||||
@Column(name = "USERID")
|
@Column(name = "USERID")
|
||||||
@Comment("변경자ID")
|
@Comment("변경자ID")
|
||||||
private String userId;
|
private String userId;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -143,13 +143,15 @@ public class PortalApprovalManService extends BaseService {
|
|||||||
AppRequest appRequest = optRequest.get();
|
AppRequest appRequest = optRequest.get();
|
||||||
appApprovalUI.setRequestType(appRequest.getType());
|
appApprovalUI.setRequestType(appRequest.getType());
|
||||||
|
|
||||||
if (StringUtils.isNotEmpty(appRequest.getApiGroupList())) {
|
|
||||||
String[] apiGroupList = appRequest.getApiGroupList().split(",");
|
if (appRequest.getApiGroupList() == null || appRequest.getApiGroupList().isEmpty()) {
|
||||||
for (String apiGroupId : apiGroupList) {
|
appRequest.setApiGroupList("");
|
||||||
apiGroupService.findByIdWithApiList(apiGroupId).ifPresent(apiGroup ->
|
}
|
||||||
appApprovalUI.getApiServices().add(apiGroupUIMapper.toVo(apiGroup))
|
String[] apiGroupList = appRequest.getApiGroupList().split(",");
|
||||||
);
|
for (String apiGroupId : apiGroupList) {
|
||||||
}
|
apiGroupService.findByIdWithApiList(apiGroupId).ifPresent(apiGroup ->
|
||||||
|
appApprovalUI.getApiServices().add(apiGroupUIMapper.toVo(apiGroup))
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> currentGroupNameList = new ArrayList<>();
|
List<String> currentGroupNameList = new ArrayList<>();
|
||||||
|
|||||||
+30
-16
@@ -71,31 +71,50 @@ public class PortalAppApprovalListener implements ApprovalListener {
|
|||||||
private final ClientManService clientManService;
|
private final ClientManService clientManService;
|
||||||
private final MessageSendService messageSendService;
|
private final MessageSendService messageSendService;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(Approval approval, Map<String, Object> option1) throws ApprovalDeployException {
|
public void execute(Approval approval, Map<String, Object> option1) throws ApprovalDeployException {
|
||||||
|
|
||||||
Optional<AppRequest> optRequest = appRequestRepository.findAppRequestByApproval(approval);
|
Optional<AppRequest> optRequest = appRequestRepository.findAppRequestByApproval(approval);
|
||||||
|
|
||||||
AppRequest appRequest = optRequest.orElseGet(null);
|
AppRequest appRequest = optRequest.orElseGet(null);
|
||||||
if (appRequest != null) {
|
if (appRequest != null) {
|
||||||
AppRequestType type = appRequest.getType();
|
AppRequestType type = appRequest.getType();
|
||||||
|
|
||||||
CredentialUI credentialUI = null;
|
// Portal DB에 credential 저장 (트랜잭션 커밋 보장)
|
||||||
|
CredentialUI credentialUI = saveCredential(appRequest, type);
|
||||||
|
|
||||||
if (appRequest.getType().equals(AppRequestType.NEW)) {
|
// 위 메서드가 반환되면 트랜잭션이 커밋되어 Portal DB에 영구 저장됨
|
||||||
credentialUI = createAndSaveCredentialUI(optRequest.get());
|
// 이제 APIGW 동기화 및 GW 리로드 수행
|
||||||
} else if (appRequest.getType().equals(AppRequestType.MODIFY)) {
|
|
||||||
credentialUI = modifyClientUI(optRequest.get());
|
|
||||||
} else if (appRequest.getType().equals(AppRequestType.DELETE)) {
|
|
||||||
credentialManService.delete(optRequest.get().getClientId());
|
|
||||||
credentialUI = new CredentialUI();
|
|
||||||
credentialUI.setClientid(optRequest.get().getClientId());
|
|
||||||
}
|
|
||||||
syncTargetServer(type, credentialUI);
|
syncTargetServer(type, credentialUI);
|
||||||
sendApprovalResult(appRequest);
|
sendApprovalResult(appRequest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Portal DB에 credential 정보를 저장하고 트랜잭션을 커밋합니다.
|
||||||
|
* GW 동기화 이전에 Portal DB의 변경사항이 확정되어야 하므로 별도 트랜잭션으로 분리합니다.
|
||||||
|
*
|
||||||
|
* @param appRequest 앱 등록/수정/삭제 요청 정보
|
||||||
|
* @param type 요청 타입 (NEW/MODIFY/DELETE)
|
||||||
|
* @return 저장된 credential 정보
|
||||||
|
*/
|
||||||
|
@Transactional
|
||||||
|
public CredentialUI saveCredential(AppRequest appRequest, AppRequestType type) {
|
||||||
|
CredentialUI credentialUI = null;
|
||||||
|
|
||||||
|
if (type.equals(AppRequestType.NEW)) {
|
||||||
|
credentialUI = createAndSaveCredentialUI(appRequest);
|
||||||
|
} else if (type.equals(AppRequestType.MODIFY)) {
|
||||||
|
credentialUI = modifyClientUI(appRequest);
|
||||||
|
} else if (type.equals(AppRequestType.DELETE)) {
|
||||||
|
credentialManService.delete(appRequest.getClientId());
|
||||||
|
credentialUI = new CredentialUI();
|
||||||
|
credentialUI.setClientid(appRequest.getClientId());
|
||||||
|
}
|
||||||
|
|
||||||
|
return credentialUI;
|
||||||
|
}
|
||||||
|
|
||||||
private void sendApprovalResult(AppRequest appRequest) {
|
private void sendApprovalResult(AppRequest appRequest) {
|
||||||
MessageRecipient recipient = new MessageRecipient();
|
MessageRecipient recipient = new MessageRecipient();
|
||||||
recipient.setPhone(appRequest.getApproval().getRequester().getMobileNumber());
|
recipient.setPhone(appRequest.getApproval().getRequester().getMobileNumber());
|
||||||
@@ -118,15 +137,10 @@ public class PortalAppApprovalListener implements ApprovalListener {
|
|||||||
clientManService.delete(credentialUI.getClientid());
|
clientManService.delete(credentialUI.getClientid());
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: commit 처리
|
|
||||||
|
|
||||||
|
|
||||||
CommonCommand.builder()
|
CommonCommand.builder()
|
||||||
.name(CommonCommand.RELOAD_CLIENT_COMMAND)
|
.name(CommonCommand.RELOAD_CLIENT_COMMAND)
|
||||||
.args(credentialUI.getClientid())
|
.args(credentialUI.getClientid())
|
||||||
.build().broadcast(agentUtilService);
|
.build().broadcast(agentUtilService);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private CredentialUI modifyClientUI(AppRequest appRequest) {
|
private CredentialUI modifyClientUI(AppRequest appRequest) {
|
||||||
|
|||||||
+42
-34
@@ -88,7 +88,7 @@ public class PortalUserApprovalListener implements ApprovalListener {
|
|||||||
portalOrg.setOrgStatus(OrgStatus.ACTIVE);
|
portalOrg.setOrgStatus(OrgStatus.ACTIVE);
|
||||||
portalOrgService.save(portalOrg);
|
portalOrgService.save(portalOrg);
|
||||||
|
|
||||||
syncStaging(portalOrgUIMapper.toVo(portalOrg));
|
// syncStaging(portalOrgUIMapper.toVo(portalOrg));
|
||||||
sendApprovalResult(portalUser);
|
sendApprovalResult(portalUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,42 +97,50 @@ public class PortalUserApprovalListener implements ApprovalListener {
|
|||||||
recipient.setPhone(portalUser.getMobileNumber());
|
recipient.setPhone(portalUser.getMobileNumber());
|
||||||
recipient.setUserId(portalUser.getEmailAddr());
|
recipient.setUserId(portalUser.getEmailAddr());
|
||||||
Map<String, String> params = new HashMap<>();
|
Map<String, String> params = new HashMap<>();
|
||||||
messageSendService.sendMessage(MessageCode.USER_REGISTRATION_APPROVED, recipient, params);
|
// messageSendService.sendMessage(MessageCode.USER_REGISTRATION_APPROVED, recipient, params);
|
||||||
|
messageSendService.sendMessage(MessageCode.MANAGER_WITH_ORG_REGISTER_APPROVED, recipient, params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated 광주은행에서는 사용하지 않음. (개발/운영 완전 분리)
|
||||||
|
* @param portalOrgUI
|
||||||
|
* @throws ApprovalDeployException
|
||||||
|
*/
|
||||||
private void syncStaging(PortalOrgUI portalOrgUI) throws ApprovalDeployException {
|
private void syncStaging(PortalOrgUI portalOrgUI) throws ApprovalDeployException {
|
||||||
// 프록시를 통한 스테이징 서버 호출 추가
|
throw new RuntimeException("Unable use this method(syncStaging())");
|
||||||
Map<String, String> properties = portalPropertyService.getPortalPropertiesAsMap(PORTAL_PROPERTY_GROUP);
|
|
||||||
String apiKey = properties.get("apiKey");
|
// // 프록시를 통한 스테이징 서버 호출 추가
|
||||||
String proxyUrl = properties.get("portal.url");
|
// Map<String, String> properties = portalPropertyService.getPortalPropertiesAsMap(PORTAL_PROPERTY_GROUP);
|
||||||
String timeout = properties.getOrDefault("deploy.proxy_timeout", "10000");
|
// String apiKey = properties.get("apiKey");
|
||||||
String proxyEndpoint = proxyUrl + "/_onl/apim/portalorg/portalOrgMan.json";
|
// String proxyUrl = properties.get("portal.url");
|
||||||
|
// String timeout = properties.getOrDefault("deploy.proxy_timeout", "10000");
|
||||||
HttpHeaders headers = new HttpHeaders();
|
// String proxyEndpoint = proxyUrl + "/_onl/apim/portalorg/portalOrgMan.json";
|
||||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
//
|
||||||
headers.set("X-API-KEY", apiKey);
|
// HttpHeaders headers = new HttpHeaders();
|
||||||
headers.set("target_host", "stg");
|
// headers.setContentType(MediaType.APPLICATION_JSON);
|
||||||
headers.set("action", "insert");
|
// headers.set("X-API-KEY", apiKey);
|
||||||
|
// headers.set("target_host", "stg");
|
||||||
portalOrgUI.setCompRegFile(null);
|
// headers.set("action", "insert");
|
||||||
HttpEntity<PortalOrgUI> request = new HttpEntity<>(portalOrgUI, headers);
|
//
|
||||||
|
// portalOrgUI.setCompRegFile(null);
|
||||||
try {
|
// HttpEntity<PortalOrgUI> request = new HttpEntity<>(portalOrgUI, headers);
|
||||||
ResponseEntity<String> response = createRestTemplateWithTimeout(Integer.parseInt(timeout)).exchange(
|
//
|
||||||
proxyEndpoint,
|
// try {
|
||||||
HttpMethod.POST,
|
// ResponseEntity<String> response = createRestTemplateWithTimeout(Integer.parseInt(timeout)).exchange(
|
||||||
request,
|
// proxyEndpoint,
|
||||||
String.class
|
// HttpMethod.POST,
|
||||||
);
|
// request,
|
||||||
|
// String.class
|
||||||
if (!response.getStatusCode().is2xxSuccessful()) {
|
// );
|
||||||
logger.error("Failed to sync with staging server. Status: {}, Body: {}", response.getStatusCode(), response.getBody());
|
//
|
||||||
throw new ApprovalDeployException("기관 정보 배포에 실패 했습니다.");
|
// if (!response.getStatusCode().is2xxSuccessful()) {
|
||||||
}
|
// logger.error("Failed to sync with staging server. Status: {}, Body: {}", response.getStatusCode(), response.getBody());
|
||||||
} catch (Exception e) {
|
// throw new ApprovalDeployException("기관 정보 배포에 실패 했습니다.");
|
||||||
logger.error("Failed to sync with staging server. {}", e.getMessage());
|
// }
|
||||||
throw new ApprovalDeployException("기관 정보 배포에 실패 했습니다.");
|
// } catch (Exception e) {
|
||||||
}
|
// logger.error("Failed to sync with staging server. {}", e.getMessage());
|
||||||
|
// throw new ApprovalDeployException("기관 정보 배포에 실패 했습니다.");
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+14
-3
@@ -5,9 +5,11 @@ import com.eactive.apim.portal.file.entity.FileInfo;
|
|||||||
import com.eactive.apim.portal.file.service.FileService;
|
import com.eactive.apim.portal.file.service.FileService;
|
||||||
import com.eactive.apim.portal.file.service.FileTypeContext;
|
import com.eactive.apim.portal.file.service.FileTypeContext;
|
||||||
import com.eactive.apim.portal.portalNotice.entity.PortalNotice;
|
import com.eactive.apim.portal.portalNotice.entity.PortalNotice;
|
||||||
|
import com.eactive.eai.common.util.ContainerUtil;
|
||||||
import com.eactive.eai.rms.common.base.BaseService;
|
import com.eactive.eai.rms.common.base.BaseService;
|
||||||
import com.eactive.eai.rms.data.entity.onl.apim.portalnotice.PortalNoticeService;
|
import com.eactive.eai.rms.data.entity.onl.apim.portalnotice.PortalNoticeService;
|
||||||
import com.eactive.eai.rms.data.entity.onl.apim.portalnotice.PortalNoticeUISearch;
|
import com.eactive.eai.rms.data.entity.onl.apim.portalnotice.PortalNoticeUISearch;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang.StringEscapeUtils;
|
import org.apache.commons.lang.StringEscapeUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -18,19 +20,28 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Transactional(transactionManager = "transactionManagerForEMS")
|
@Transactional(transactionManager = "transactionManagerForEMS")
|
||||||
|
@Slf4j
|
||||||
public class PortalNoticeManService extends BaseService {
|
public class PortalNoticeManService extends BaseService {
|
||||||
private final PortalNoticeService portalNoticeService;
|
private final PortalNoticeService portalNoticeService;
|
||||||
private final PortalNoticeUIMapper portalNoticeUIMapper;
|
private final PortalNoticeUIMapper portalNoticeUIMapper;
|
||||||
private final FileService fileService;
|
private final FileService fileService;
|
||||||
|
|
||||||
private String decodeString(String value) {
|
private String decodeString(String value) {
|
||||||
// return new String(value.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
|
if (ContainerUtil.get() == ContainerUtil.TOMCAT) {
|
||||||
|
try {
|
||||||
|
return new String(value.getBytes("euc-kr"), StandardCharsets.UTF_8);
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
log.warn("Failed euc-kr to UTF-8", e);
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
return new String(value.getBytes(Charset.defaultCharset()), StandardCharsets.UTF_8);
|
return new String(value.getBytes(Charset.defaultCharset()), StandardCharsets.UTF_8);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,7 +113,7 @@ public class PortalNoticeManService extends BaseService {
|
|||||||
if (file != null && !file.isEmpty()) { // 새로운 파일이 업로드된 경우에만 처리
|
if (file != null && !file.isEmpty()) { // 새로운 파일이 업로드된 경우에만 처리
|
||||||
String decodedFileName = decodeString(portalNoticeUI.getFileName());
|
String decodedFileName = decodeString(portalNoticeUI.getFileName());
|
||||||
FileTypeContext.setFileType("notice");
|
FileTypeContext.setFileType("notice");
|
||||||
FileInfo fileInfo = fileService.createOrUpdateSingleFile(portalNotice.getFileId(), file, decodedFileName);
|
FileInfo fileInfo = fileService.createOrUpdateSingleFile(portalNotice.getFileId(), file, decodedFileName, true);
|
||||||
|
|
||||||
if (fileInfo != null) {
|
if (fileInfo != null) {
|
||||||
portalNotice.setFileId(fileInfo.getFileId());
|
portalNotice.setFileId(fileInfo.getFileId());
|
||||||
|
|||||||
@@ -56,15 +56,6 @@ public class PortalOrgManController extends BaseAnnotationController {
|
|||||||
return ResponseEntity.ok(result);
|
return ResponseEntity.ok(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping(value = "/onl/apim/portalorg/portalOrgMan.json", params = "cmd=UNMASK")
|
|
||||||
public ResponseEntity<Map<String, Object>> selectDetailUnmask(String id, String reason) {
|
|
||||||
if (StringUtils.isBlank(reason)) {
|
|
||||||
throw new BizException("마스킹 해제 사유를 입력해 주세요.");
|
|
||||||
}
|
|
||||||
Map<String, Object> result = portalOrgManService.selectDetailWithUsersUnmask(id);
|
|
||||||
return ResponseEntity.ok(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping(value = "/onl/apim/portalorg/portalOrgMan.json", params = "cmd=LIST_INIT_COMBO")
|
@PostMapping(value = "/onl/apim/portalorg/portalOrgMan.json", params = "cmd=LIST_INIT_COMBO")
|
||||||
public ResponseEntity<Map<String, Object>> initCombo() {
|
public ResponseEntity<Map<String, Object>> initCombo() {
|
||||||
List<ComboVo> approvalStatusList = comboService.getMonitoringCodeSortedBySeq("APPROVE_STATUS_CODE"); // 승인상태코드
|
List<ComboVo> approvalStatusList = comboService.getMonitoringCodeSortedBySeq("APPROVE_STATUS_CODE"); // 승인상태코드
|
||||||
|
|||||||
@@ -172,25 +172,9 @@ public class PortalOrgManService extends BaseService {
|
|||||||
private PortalUserCorpManagerUI convertCorporateManagerToUIWithMaskOption(PortalUser corporateManager, boolean isMasked) {
|
private PortalUserCorpManagerUI convertCorporateManagerToUIWithMaskOption(PortalUser corporateManager, boolean isMasked) {
|
||||||
PortalUserCorpManagerUI ui = portalUserCorpManagerUIMapper.toVo(corporateManager);
|
PortalUserCorpManagerUI ui = portalUserCorpManagerUIMapper.toVo(corporateManager);
|
||||||
|
|
||||||
if (ui != null && isMasked) {
|
|
||||||
if (StringUtils.isNotBlank(ui.getUserName())) {
|
|
||||||
ui.setUserName(MaskingUtils.maskName(ui.getUserName()));
|
|
||||||
}
|
|
||||||
if (StringUtils.isNotBlank(ui.getEmailAddr())) {
|
|
||||||
ui.setEmailAddr(MaskingUtils.maskEmailId(ui.getEmailAddr()));
|
|
||||||
}
|
|
||||||
if (StringUtils.isNotBlank(ui.getMobileNumber())) {
|
|
||||||
ui.setMobileNumber(MaskingUtils.maskPhoneNumber(ui.getMobileNumber()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ui;
|
return ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, Object> selectDetailWithUsersUnmask(String id) {
|
|
||||||
return getDetailWithUsers(id, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setFileInfo(PortalOrg portalOrg, PortalOrgUI ui) {
|
private void setFileInfo(PortalOrg portalOrg, PortalOrgUI ui) {
|
||||||
Optional.ofNullable(portalOrg.getCompRegFile())
|
Optional.ofNullable(portalOrg.getCompRegFile())
|
||||||
.filter(StringUtils::isNotBlank)
|
.filter(StringUtils::isNotBlank)
|
||||||
|
|||||||
@@ -41,9 +41,11 @@ public class PortalUserManService extends BaseService {
|
|||||||
private final PortalOrgService portalOrgService;
|
private final PortalOrgService portalOrgService;
|
||||||
private final FileService fileService;
|
private final FileService fileService;
|
||||||
private final PortalOrgManService portalOrgManService;
|
private final PortalOrgManService portalOrgManService;
|
||||||
private final PasswordEncoder passwordEncoder;
|
// private final PasswordEncoder passwordEncoder;
|
||||||
|
private final PasswordEncoder kjbSafedbPasswordEncoder;
|
||||||
private final PortalUserTermsService portalUserTermsService;
|
private final PortalUserTermsService portalUserTermsService;
|
||||||
|
|
||||||
|
|
||||||
public Page<PortalUserUI> selectList(Pageable pageable, PortalUserUISearch portalUserUISearch) {
|
public Page<PortalUserUI> selectList(Pageable pageable, PortalUserUISearch portalUserUISearch) {
|
||||||
Page<PortalUser> portalUser = portalUserService.findAll(pageable, portalUserUISearch);
|
Page<PortalUser> portalUser = portalUserService.findAll(pageable, portalUserUISearch);
|
||||||
return portalUser.map(entity -> {
|
return portalUser.map(entity -> {
|
||||||
@@ -122,7 +124,7 @@ public class PortalUserManService extends BaseService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
PortalUser portalUser = portalUserUIMapper.toEntity(portalUserUI);
|
PortalUser portalUser = portalUserUIMapper.toEntity(portalUserUI);
|
||||||
portalUser.setPasswordHash(passwordEncoder.encode("!" + portalUserUI.getLoginId()));
|
portalUser.setPasswordHash(kjbSafedbPasswordEncoder.encode("!" + portalUserUI.getLoginId()));
|
||||||
portalUser.setLoginFailureCount(0);
|
portalUser.setLoginFailureCount(0);
|
||||||
portalUser.setAccountLockYn("N");
|
portalUser.setAccountLockYn("N");
|
||||||
portalUser.setEmailAddr(portalUserUI.getLoginId());
|
portalUser.setEmailAddr(portalUserUI.getLoginId());
|
||||||
|
|||||||
@@ -50,4 +50,5 @@ public class PortalUserUI {
|
|||||||
@DateTimeFormat(pattern = "yyyyMMddHHmmss")
|
@DateTimeFormat(pattern = "yyyyMMddHHmmss")
|
||||||
private LocalDateTime lastModifiedDate;
|
private LocalDateTime lastModifiedDate;
|
||||||
|
|
||||||
|
private String accountLockYn;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.eactive.eai.rms.onl.apim.template;
|
package com.eactive.eai.rms.onl.apim.template;
|
||||||
|
|
||||||
import com.eactive.apim.portal.template.entity.MessageCode;
|
|
||||||
import com.eactive.apim.portal.template.entity.MessageTemplate;
|
import com.eactive.apim.portal.template.entity.MessageTemplate;
|
||||||
import com.eactive.eai.rms.common.base.BaseService;
|
import com.eactive.eai.rms.common.base.BaseService;
|
||||||
import com.eactive.eai.rms.data.entity.onl.apim.template.MessageTemplateSearch;
|
import com.eactive.eai.rms.data.entity.onl.apim.template.MessageTemplateSearch;
|
||||||
|
|||||||
@@ -2,11 +2,16 @@ package com.eactive.eai.rms.onl.common.service;
|
|||||||
|
|
||||||
import com.eactive.eai.rms.onl.common.service.ums.UmsDispatchService;
|
import com.eactive.eai.rms.onl.common.service.ums.UmsDispatchService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.quartz.Job;
|
import org.quartz.Job;
|
||||||
import org.quartz.JobExecutionContext;
|
import org.quartz.JobExecutionContext;
|
||||||
import org.quartz.JobExecutionException;
|
import org.quartz.JobExecutionException;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Admin Job Configuration
|
* Admin Job Configuration
|
||||||
* ----------------------
|
* ----------------------
|
||||||
@@ -17,17 +22,37 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
// Cron Expression: */5 * * * * ?
|
// Cron Expression: */5 * * * * ?
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class UmsDispatchJob implements Job {
|
public class UmsDispatchJob implements Job {
|
||||||
|
|
||||||
private final UmsDispatchService umsDispatchService;
|
private final UmsDispatchService umsDispatchService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public UmsDispatchJob(UmsDispatchService umsDispatchService) {
|
public UmsDispatchJob(UmsDispatchService umsDispatchService) {
|
||||||
this.umsDispatchService = umsDispatchService;
|
this.umsDispatchService = umsDispatchService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(JobExecutionContext context) throws JobExecutionException {
|
public void execute(JobExecutionContext context) throws JobExecutionException {
|
||||||
log.info("Starting Message Dispatch Job...");
|
log.info("Starting Message Dispatch Job...");
|
||||||
|
|
||||||
|
// inst.Name 이 지정된 경우 해당 인스턴스에서만 동작
|
||||||
|
String jobInstName = context.getJobDetail().getJobDataMap().getString("execute.instances");
|
||||||
|
if (StringUtils.isNotEmpty(jobInstName)) {
|
||||||
|
log.debug("Job 실행 인스턴스 명이 지정되어 있음 - {}", jobInstName);
|
||||||
|
jobInstName = jobInstName.toLowerCase();
|
||||||
|
Set<String> propInstances = Arrays.stream(jobInstName.split(",")).map(String::trim).collect(Collectors.toSet());
|
||||||
|
|
||||||
|
String instanceName = System.getProperty("inst.Name");
|
||||||
|
if (StringUtils.isNotEmpty(instanceName)) {
|
||||||
|
log.debug("현재 인스턴스 명 : {}", instanceName);
|
||||||
|
instanceName = instanceName.trim().toLowerCase();
|
||||||
|
|
||||||
|
if (!propInstances.contains(instanceName)) {
|
||||||
|
log.debug("Job 인스턴스명과 현재 인스턴스명이 다름. 종료 처리");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
umsDispatchService.processMessages();
|
umsDispatchService.processMessages();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|||||||
@@ -1,8 +1,12 @@
|
|||||||
package com.eactive.eai.rms.onl.common.service.ums;
|
package com.eactive.eai.rms.onl.common.service.ums;
|
||||||
|
|
||||||
import com.eactive.apim.portal.template.entity.MessageRequest;
|
import com.eactive.apim.portal.template.entity.MessageRequest;
|
||||||
|
import com.eactive.apim.portal.template.repository.MessageRequestRepository;
|
||||||
import edu.emory.mathcs.backport.java.util.Collections;
|
import com.eactive.eai.rms.data.entity.man.monitoringProperty.service.MonitoringPropertyService;
|
||||||
|
import com.eactive.ext.kjb.common.KjbProperty;
|
||||||
|
import com.eactive.ext.kjb.ums.KjbEmailSendModule;
|
||||||
|
import com.eactive.ext.kjb.ums.KjbUmsService;
|
||||||
|
import com.eactive.ext.kjb.util.KjbPropertyInjector;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
@@ -15,15 +19,17 @@ import javax.persistence.EntityManager;
|
|||||||
import javax.persistence.PersistenceContext;
|
import javax.persistence.PersistenceContext;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.*;
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
|
import java.util.concurrent.ThreadPoolExecutor;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
@Transactional(transactionManager = "transactionManagerForEMS")
|
@Transactional(transactionManager = "transactionManagerForEMS")
|
||||||
public class UmsDispatchService {
|
public class UmsDispatchService {
|
||||||
|
public static final String PROP_GORUP_ID = "Monitoring";
|
||||||
|
|
||||||
private final ThreadPoolExecutor executorService;
|
private final ThreadPoolExecutor executorService;
|
||||||
private final TransactionTemplate transactionTemplate;
|
private final TransactionTemplate transactionTemplate;
|
||||||
@@ -36,15 +42,25 @@ public class UmsDispatchService {
|
|||||||
@PersistenceContext(unitName = "entityManagerFactoryForEMS")
|
@PersistenceContext(unitName = "entityManagerFactoryForEMS")
|
||||||
private EntityManager entityManager;
|
private EntityManager entityManager;
|
||||||
|
|
||||||
@Autowired
|
private final MessageRequestRepository messageRequestRepository;
|
||||||
private UmsSender umsSender;
|
private final KjbUmsService kjbUmsService;
|
||||||
|
private final KjbEmailSendModule kjbEmailSendModule;
|
||||||
|
private final KjbPropertyInjector kjbPropertyInjector;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private StandardMessageFactory messageFactory;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public UmsDispatchService(
|
public UmsDispatchService(
|
||||||
@Qualifier("transactionManagerForEMS") PlatformTransactionManager transactionManager) {
|
@Qualifier("transactionManagerForEMS") PlatformTransactionManager transactionManager,
|
||||||
|
MonitoringPropertyService monitoringPropertyService,
|
||||||
|
MessageRequestRepository messageRequestRepository
|
||||||
|
) {
|
||||||
|
this.kjbPropertyInjector = new KjbPropertyInjector(monitoringPropertyService, PROP_GORUP_ID);
|
||||||
|
|
||||||
|
this.messageRequestRepository = messageRequestRepository;
|
||||||
|
// this.kjbEmailService = kjbEmailService;
|
||||||
|
// this.kjbSafedbWrapper = kjbSafedbWrapper;
|
||||||
|
// this.monitoringPropertyService = monitoringPropertyService;
|
||||||
|
|
||||||
this.executorService = new ThreadPoolExecutor(
|
this.executorService = new ThreadPoolExecutor(
|
||||||
CORE_POOL_SIZE,
|
CORE_POOL_SIZE,
|
||||||
MAX_POOL_SIZE,
|
MAX_POOL_SIZE,
|
||||||
@@ -56,6 +72,20 @@ public class UmsDispatchService {
|
|||||||
this.transactionTemplate = new TransactionTemplate(transactionManager);
|
this.transactionTemplate = new TransactionTemplate(transactionManager);
|
||||||
log.debug("UmsDispatchService initialized with thread pool - core: {}, max: {}, queue: {}",
|
log.debug("UmsDispatchService initialized with thread pool - core: {}, max: {}, queue: {}",
|
||||||
CORE_POOL_SIZE, MAX_POOL_SIZE, QUEUE_CAPACITY);
|
CORE_POOL_SIZE, MAX_POOL_SIZE, QUEUE_CAPACITY);
|
||||||
|
|
||||||
|
|
||||||
|
KjbProperty prop = new KjbProperty();
|
||||||
|
// prop.setEaiBatchUrl(monitoringPropertyService.getPrpty2ValById(PROP_GORUP_ID, "kjb.ums.eai_batch.url"));
|
||||||
|
// prop.setUmsEaiBatchSendDir(monitoringPropertyService.getPrpty2ValById(PROP_GORUP_ID, "kjb.ums.eai_batch.send_dir"));
|
||||||
|
// prop.setUmsEaiBatchBackupDir(monitoringPropertyService.getPrpty2ValById(PROP_GORUP_ID, "kjb.ums.eai_batch.backup_dir"));
|
||||||
|
// prop.setUmsEaiBatchInterfaceId(monitoringPropertyService.getPrpty2ValById(PROP_GORUP_ID, "kjb.ums.eai_batch.interface_id"));
|
||||||
|
// prop.setUmsHostUrl(monitoringPropertyService.getPrpty2ValById(PROP_GORUP_ID, "kjb.ums.host_url"));
|
||||||
|
// prop.setUmsApiKey(monitoringPropertyService.getPrpty2ValById(PROP_GORUP_ID, "kjb.ums.api_key"));
|
||||||
|
prop = kjbPropertyInjector.inject(prop);
|
||||||
|
|
||||||
|
this.kjbUmsService = new KjbUmsService(prop);
|
||||||
|
|
||||||
|
this.kjbEmailSendModule = KjbEmailSendModule.getInstance(prop, messageRequestRepository);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@@ -98,6 +128,9 @@ public class UmsDispatchService {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log.info("No pending messages found");
|
log.info("No pending messages found");
|
||||||
|
|
||||||
|
// 발송 메세지가 없을 때 파일 삭제 처리 진행
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,7 +143,17 @@ public class UmsDispatchService {
|
|||||||
try {
|
try {
|
||||||
transactionTemplate.execute(status -> {
|
transactionTemplate.execute(status -> {
|
||||||
try {
|
try {
|
||||||
processMessage(message);
|
// 광주은행에서는 사용하지 않는 메소드
|
||||||
|
// processMessage(message);
|
||||||
|
|
||||||
|
if (KjbUmsService.isAllowChannel(message)) {
|
||||||
|
kjbUmsService.send(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (KjbEmailSendModule.isAllowChannel(message)) {
|
||||||
|
kjbEmailSendModule.sendEmail(message);
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("Failed to process message: {} - Error: {}",
|
log.error("Failed to process message: {} - Error: {}",
|
||||||
@@ -127,21 +170,27 @@ public class UmsDispatchService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void processMessage(MessageRequest message) throws IOException {
|
/**
|
||||||
try {
|
* kbank 방식으로 광주은행에서는 사용하지 않음
|
||||||
String standardMessage = messageFactory.createMessage(message);
|
* @param message
|
||||||
log.debug("Processing message ID: {} - Type: {}", message.getId(), message.getMessageType());
|
* @throws IOException
|
||||||
|
*/
|
||||||
umsSender.sendMessage(standardMessage);
|
// @Deprecated
|
||||||
updateMessageStatus(message, "SENT");
|
// public void processMessage(MessageRequest message) throws IOException {
|
||||||
log.debug("Successfully processed and sent message ID: {}", message.getId());
|
// try {
|
||||||
} catch (Exception e) {
|
// String standardMessage = messageFactory.createMessage(message);
|
||||||
log.error("Message processing failed for ID: {} - Error: {}",
|
// log.debug("Processing message ID: {} - Type: {}", message.getId(), message.getMessageType());
|
||||||
message.getId(), e.getMessage(), e);
|
//
|
||||||
updateMessageStatus(message, "FAILED");
|
// umsSender.sendMessage(standardMessage);
|
||||||
throw e;
|
// updateMessageStatus(message, "SENT");
|
||||||
}
|
// log.debug("Successfully processed and sent message ID: {}", message.getId());
|
||||||
}
|
// } catch (Exception e) {
|
||||||
|
// log.error("Message processing failed for ID: {} - Error: {}",
|
||||||
|
// message.getId(), e.getMessage(), e);
|
||||||
|
// updateMessageStatus(message, "FAILED");
|
||||||
|
// throw e;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
public void updateMessageStatus(MessageRequest message, String status) {
|
public void updateMessageStatus(MessageRequest message, String status) {
|
||||||
message.setRequestStatus(status);
|
message.setRequestStatus(status);
|
||||||
|
|||||||
@@ -16,8 +16,12 @@ import org.springframework.stereotype.Component;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 25.11.05 - 광주은행 미사용 클래스
|
||||||
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
|
@Deprecated
|
||||||
public class UmsSender {
|
public class UmsSender {
|
||||||
|
|
||||||
private final MonitoringPropertyService monitoringPropertyService;
|
private final MonitoringPropertyService monitoringPropertyService;
|
||||||
|
|||||||
@@ -268,7 +268,7 @@ public class ApiInterfaceController extends OnlBaseAnnotationController {
|
|||||||
.body(exportData.getExportFileContent());
|
.body(exportData.getExportFileContent());
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping(value = "/onl/transaction/apim/apiInterfaceMan.json", params = "cmd=INSERT_CLONE")
|
@PostMapping(value = "/onl/transaction/apim/apiInterfaceMan.json", params = "cmd=CLONE")
|
||||||
public ResponseEntity<?> cloneApiInterface(String orgApiInterfaceId, String newBizCode, String newApiInterfaceId, String newInboundHttpMethod, String newInboundRestPath) throws BizException {
|
public ResponseEntity<?> cloneApiInterface(String orgApiInterfaceId, String newBizCode, String newApiInterfaceId, String newInboundHttpMethod, String newInboundRestPath) throws BizException {
|
||||||
try {
|
try {
|
||||||
ApiInterfaceUI orgApiInterfaceUI = service.selectDetail(orgApiInterfaceId);
|
ApiInterfaceUI orgApiInterfaceUI = service.selectDetail(orgApiInterfaceId);
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user