Compare commits
218 Commits
6b2d6aafce
...
feature/ne
| Author | SHA1 | Date | |
|---|---|---|---|
| 11638ac43c | |||
| 50baa3d75e | |||
| 399062a9a0 | |||
| ded4a70b01 | |||
|
|
44b43df82b | ||
| f26e92d9e3 | |||
|
|
4ca4bd2227 | ||
| 0dd9b8ab6d | |||
|
|
37980f8565 | ||
| 7558206e8b | |||
|
|
1ad393e939 | ||
| f9b20817a3 | |||
|
|
49dd4b7c88 | ||
|
|
37285fbce6 | ||
| e29305c1dc | |||
|
|
a41c75c0f8 | ||
| d4500e3f0b | |||
| b5e50366d4 | |||
| 8bb05b060c | |||
| 21652fc0d1 | |||
| 590ab6531b | |||
|
|
b58b021dc9 | ||
|
|
eef76746ac | ||
| a0acfc8067 | |||
|
|
37d5427236 | ||
| 5d07b23098 | |||
|
|
3f15362325 | ||
| ee0389ad8a | |||
| 87d6e0db0f | |||
|
|
7fa815a0cc | ||
| aa7b03c959 | |||
|
|
81d4b5a169 | ||
| 5cf3394df8 | |||
|
|
0ac007eeb7 | ||
| 50ed8a4ee1 | |||
|
|
79ed8ee646 | ||
|
|
8645e74168 | ||
| d61856111f | |||
|
|
5e92d29028 | ||
| 56d4387519 | |||
|
|
f6d26de480 | ||
|
|
1d3d8f53e7 | ||
| 75febfdddb | |||
|
|
c600012172 | ||
| 7256f40e0f | |||
| 8c9ec367af | |||
| d1a3ae950d | |||
| 7b4167d483 | |||
| 4d56d649e1 | |||
|
|
6e7bdbf284 | ||
| 25293d9273 | |||
|
|
5ce29bf7b9 | ||
|
|
42bb799b73 | ||
| 643ece2589 | |||
|
|
d09ae17a85 | ||
|
|
30b341753c | ||
| c8cf1be26b | |||
|
|
cfa031b20b | ||
| 4a9577c554 | |||
| 128c3102c5 | |||
|
|
56ee15565f | ||
|
|
7a718f9fe7 | ||
| 0c44d19201 | |||
|
|
d4da64ddfb | ||
| 33f4327726 | |||
|
|
8954ae559e | ||
| 39593ab3bc | |||
| c27a20012a | |||
| 29989da63e | |||
|
|
91b97be376 | ||
| c7b4238a54 | |||
|
|
7a37d6efd0 | ||
|
|
84b4984112 | ||
| 2998a7609d | |||
|
|
3c1a16f43c | ||
| 523ad33216 | |||
|
|
9ff43f0781 | ||
|
|
775d56a7f9 | ||
| 1d72f21e15 | |||
|
|
697dbe84a8 | ||
| 3c1c27c119 | |||
|
|
318e371249 | ||
| 5613e3bd54 | |||
|
|
661e1df716 | ||
|
|
e8650f058d | ||
| 104378e52f | |||
|
|
59359559a6 | ||
|
|
a297e660d4 | ||
| 08d58ec68e | |||
| ace0e3c35f | |||
|
|
2feeb8c341 | ||
|
|
e149bc99f1 | ||
| 1db4c83499 | |||
|
|
c793cd05ae | ||
| e95d38cff6 | |||
|
|
f944e754b6 | ||
|
|
c46f118f58 | ||
|
|
e2c60f4d63 | ||
| 7ae55dfa1f | |||
|
|
caa19e50d1 | ||
| 5f7b435c70 | |||
|
|
657a8d3234 | ||
| 9c3bea7e95 | |||
|
|
ff74ac99ca | ||
|
|
d69dfe8d95 | ||
|
|
01ebc04dfd | ||
| 37702b64eb | |||
|
|
af1c73345d | ||
| 15af60c44e | |||
| 6969e469dc | |||
| bff85e1da5 | |||
|
|
588fef91ce | ||
|
|
df0a534f0e | ||
|
|
bc6a7dcf7e | ||
| 934c220abc | |||
| a802714411 | |||
| 13164de870 | |||
|
|
a19388eb1c | ||
|
|
1d93f6ef3a | ||
| ba7edde4da | |||
| 709f2b4d4b | |||
| 5514ab3bb7 | |||
|
|
63043f6909 | ||
|
|
2b12fc3f6e | ||
| 23ebcd3b88 | |||
| 967b8b6529 | |||
| b463ab84e3 | |||
| 09d225803d | |||
|
|
9c8d71c924 | ||
| daf5d9bce4 | |||
|
|
1185aa491f | ||
|
|
dff92cedf7 | ||
| 3a72111b20 | |||
|
|
fc2448eb6b | ||
| a4d1af4d91 | |||
|
|
109d5b0501 | ||
|
|
1890cb992d | ||
| 5d288975ae | |||
|
|
de875a207b | ||
| f00462ed70 | |||
| 42d1cd4cd0 | |||
|
|
f171212092 | ||
| 221a2a3f8a | |||
|
|
f8ef97bb3c | ||
|
|
d45261788c | ||
|
|
a3dd839b34 | ||
|
|
92860f134f | ||
| d2e495c8cd | |||
| bed767994e | |||
| f524e06fe7 | |||
|
|
6bc7a84135 | ||
| 05507eed03 | |||
| 39543cec75 | |||
| 5fb059b3fd | |||
|
|
637d68548c | ||
|
|
bbf91df26e | ||
| 10c5a67b05 | |||
| 2fafff5ee5 | |||
| 4ba30255ba | |||
| 7f67967add | |||
| 8e2af98873 | |||
|
|
dbc26fb35b | ||
| 07b147ff9e | |||
| 5794895dcb | |||
|
|
bb5013a619 | ||
| 3350bf5d07 | |||
|
|
6af7fb6b6d | ||
| ca25e0de56 | |||
| 889231ae27 | |||
| 038f64cc9f | |||
| f47b091dca | |||
|
|
d9e06fe95d | ||
| a555f27987 | |||
| f28af78a49 | |||
| 2aaf24348e | |||
| df30332a49 | |||
| 34f5207ded | |||
| 7a57faa87b | |||
| 7db28addf7 | |||
|
|
7e740bf487 | ||
|
|
d9160990de | ||
| 3ad134fc04 | |||
|
|
018688520d | ||
| 141ef2c580 | |||
| 546e8e8e02 | |||
| 1b84bee342 | |||
| 81f071cc34 | |||
| 8f515c0780 | |||
| c322b62e17 | |||
| f7ccb78b31 | |||
| c26013bb81 | |||
| 8a4aa8875f | |||
| eb715b8e1b | |||
| b0383d3479 | |||
| 2f20549444 | |||
| 60356f886c | |||
| 0be0790e03 | |||
| fec51a86f3 | |||
| 5b12cccb77 | |||
| 4c84ae5db2 | |||
| c3c86ae9cf | |||
| e0d992eb64 | |||
|
|
9be8e365e6 | ||
|
|
213f9a5c84 | ||
| a95069a5cd | |||
| a47b1f1ff6 | |||
| 8e9c6170bb | |||
| b60a9efd5a | |||
| 757e88f296 | |||
| 97c522508e | |||
| 438adc1b7c | |||
| 8197ec8782 | |||
| 26d0247810 | |||
| 7f0dcc8922 | |||
| 28d54d620d | |||
| c11eed1a5c | |||
| 6e7ca86285 | |||
| e920e5de88 |
95
.classpath
95
.classpath
@@ -1,96 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/aopalliance-1.0.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/aspectjrt-1.8.4.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/aspectjweaver-1.8.4.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/cglib-3.1.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/commons-beanutils-1.9.1.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/commons-codec-1.9.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/commons-collections-3.2.1.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/commons-digester-1.8.1.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/commons-httpclient-3.1.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/commons-io-2.2.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/commons-lang3-3.1.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/commons-logging-1.1.3.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/commons-net-3.3.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/cos.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/egovframework.rte.ptl.mvc-3.1.0.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/external-debug.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/ezmorph-1.0.6.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/fontbox-2.0.6.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/gson-2.3.1.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/INICrypto_v3.1.6_signed.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/IntegratedCadServer.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/jackson-core-asl-1.9.13.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/jackson-mapper-asl-1.9.13.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/json-lib-2.2.2-jdk15.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/json-lib-ext-spring-1.0.2.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/json-simple-1.1.1.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/jstl-1.2.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/jxl.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/log4j-1.2.17.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/log4jdbc-remix-0.2.7.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/mail.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/mybatis-3.2.3.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/mybatis-spring-1.2.1.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/NETSSSOScriptAgent.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/nls-debug.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/ojdbc5.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/pdfbox-2.0.6.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/poi-3.11.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/poi-ooxml-3.11.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/poi-ooxml-schemas-3.11.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/scsl.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/slf4j-api-1.7.7.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/slf4j-log4j12-1.7.7.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-aop-3.2.4.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-beans-3.2.4.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-context-3.2.4.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-core-3.2.4.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-expression-3.2.4.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-jdbc-3.2.4.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-oxm-3.2.4.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-test-3.2.4.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-tx-3.2.4.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-web-3.2.4.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-webmvc-3.2.4.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-ws-core-2.1.4.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/spring-xml-2.1.4.RELEASE.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/stax-api-1.0-2.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/tiles-api-3.0.5.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/tiles-autotag-core-runtime-1.1.0.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/tiles-core-3.0.5.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/tiles-el-3.0.5.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/tiles-extras-3.0.5.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/tiles-jsp-3.0.5.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/tiles-request-api-1.0.6.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/tiles-request-jsp-1.0.6.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/tiles-request-servlet-1.0.6.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/tiles-request-servlet-wildcard-1.0.6.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/tiles-servlet-3.0.5.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/tiles-template-3.0.5.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/wsdl4j-1.6.1.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/xercesImpl-2.11.0.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/xml-apis-1.4.01.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/xmlbeans-2.6.0.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/xmlpull-1.1.3.1.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/xpp3_min-1.1.4c.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/xstream-1.4.5.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/postgresql-42.2.16.jre7.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/jsoup-1.14.3-sources.jar"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib/jsoup-1.14.3.jar"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/woosung">
|
||||
<attributes>
|
||||
<attribute name="owner.project.facets" value="jst.web"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre7">
|
||||
<attributes>
|
||||
<attribute name="owner.project.facets" value="java"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
|
||||
<classpathentry kind="lib" path="WebContent/WEB-INF/lib"/>
|
||||
<classpathentry kind="output" path="WebContent/WEB-INF/classes"/>
|
||||
</classpath>
|
||||
</classpath>
|
||||
@@ -1,30 +1,22 @@
|
||||
# PLM WACE 운영환경 설정
|
||||
# App Service Configuration
|
||||
# Note: These keys (DB_URL, DB_USER, DB_PASSWORD) might need adjustment
|
||||
# based on how the actual Java application reads them (e.g., from System.getenv()).
|
||||
# The JNDI approach suggested earlier might ignore these direct env vars.
|
||||
# DB_URL=jdbc:postgresql://plm-ilshin-db:5432/ilshin
|
||||
# DB_USER=postgres
|
||||
# DB_PASSWORD=ilshin0909!!
|
||||
|
||||
# 애플리케이션 환경
|
||||
NODE_ENV=production
|
||||
|
||||
# 데이터베이스 설정
|
||||
DB_URL=jdbc:postgresql://localhost:5432/waceplm
|
||||
DB_USERNAME=postgres
|
||||
DB_PASSWORD=waceplm0909!!
|
||||
|
||||
# PostgreSQL 환경 변수
|
||||
# DB Service Configuration
|
||||
POSTGRES_DB=waceplm
|
||||
POSTGRES_USER=postgres
|
||||
POSTGRES_PASSWORD=waceplm0909!!
|
||||
|
||||
# JVM 옵션 (운영환경용)
|
||||
JAVA_OPTS=-Xms1024m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=1024m
|
||||
|
||||
# 로그 레벨
|
||||
LOG_LEVEL=INFO
|
||||
|
||||
# 개발 모드 플래그
|
||||
DEBUG=false
|
||||
|
||||
# SSL 설정
|
||||
SSL_ENABLED=true
|
||||
|
||||
# 도메인 설정
|
||||
DOMAIN=waceplm.esgrin.com
|
||||
ALT_DOMAIN=autoclave.co.kr
|
||||
# You can add other environment-specific variables here
|
||||
# Example: TOMCAT_JAVA_OPTS="-Xmx512m -Xms256m"
|
||||
DB_URL=jdbc:postgresql://wace-plm-db:5432/waceplm
|
||||
DB_USERNAME=postgres
|
||||
DB_PASSWORD=waceplm0909!!
|
||||
DB_DRIVER_CLASS_NAME=org.postgresql.Driver
|
||||
DB_MAX_TOTAL=200
|
||||
DB_MAX_IDLE=50
|
||||
DB_MAX_WAIT_MILLIS=-1
|
||||
82
.gitignore
vendored
82
.gitignore
vendored
@@ -1,67 +1,35 @@
|
||||
# 환경 설정 파일
|
||||
.env.*
|
||||
!.env.*.example
|
||||
!.env.production
|
||||
# Compiled class files
|
||||
*.class
|
||||
|
||||
# 로그 파일
|
||||
logs/
|
||||
# Build directories
|
||||
WebContent/WEB-INF/classes/
|
||||
|
||||
# Log files
|
||||
*.log
|
||||
logs/
|
||||
|
||||
# 백업 파일
|
||||
backup_*.sql
|
||||
*.bak
|
||||
|
||||
# IDE 설정
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
|
||||
# OS 생성 파일
|
||||
# OS files
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# 빌드 결과물
|
||||
target/
|
||||
build/
|
||||
dist/
|
||||
# IDE files
|
||||
.settings/
|
||||
.classpath
|
||||
.project
|
||||
|
||||
# 임시 파일
|
||||
# Environment files (보안상 제외)
|
||||
.env
|
||||
.env.development
|
||||
.env.production
|
||||
|
||||
# Temporary files
|
||||
*.tmp
|
||||
*.temp
|
||||
*.bak
|
||||
*.swp
|
||||
*~
|
||||
|
||||
# Docker 볼륨 데이터
|
||||
postgres_data/
|
||||
# Docker volumes
|
||||
.docker/
|
||||
|
||||
# 컴파일된 클래스 파일
|
||||
*.class
|
||||
|
||||
# 패키지 파일
|
||||
*.jar
|
||||
*.war
|
||||
*.ear
|
||||
|
||||
# Maven
|
||||
target/
|
||||
pom.xml.tag
|
||||
pom.xml.releaseBackup
|
||||
pom.xml.versionsBackup
|
||||
pom.xml.next
|
||||
release.properties
|
||||
|
||||
# 대용량 파일 (필요시 Git LFS 사용)
|
||||
# db/dbexport.pgsql
|
||||
|
||||
# 쿠키 파일
|
||||
cookies.txt
|
||||
|
||||
# 압축 파일
|
||||
*.zip
|
||||
*.tar.gz
|
||||
*.rar
|
||||
|
||||
# 문서 임시 파일
|
||||
~$*
|
||||
|
||||
# SVN 파일들
|
||||
.svn/
|
||||
# Cursor files
|
||||
.cursor/
|
||||
|
||||
BIN
.playwright-mcp/structure_popup_main.png
Normal file
BIN
.playwright-mcp/structure_popup_main.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 426 KiB |
23
.project
23
.project
@@ -1,41 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>samduck</name>
|
||||
<name>wace-plm</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.wst.common.project.facet.core.builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.wst.validation.validationbuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
|
||||
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
|
||||
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1756446253951</id>
|
||||
<id>1754642369857</id>
|
||||
<name></name>
|
||||
<type>30</type>
|
||||
<matcher>
|
||||
|
||||
@@ -1,183 +0,0 @@
|
||||
# WACE PLM 데이터베이스 초기화 가이드
|
||||
|
||||
## 개요
|
||||
|
||||
WACE PLM 시스템의 데이터베이스를 초기화하는 방법을 설명합니다. `db/dbexport.pgsql` 파일을 사용하여 PostgreSQL 데이터베이스에 초기 데이터를 임포트할 수 있습니다.
|
||||
|
||||
## 방법 1: 독립실행환경 (Standalone) - 권장
|
||||
|
||||
로컬 PostgreSQL 컨테이너를 포함한 완전한 독립실행환경입니다. 데이터베이스가 자동으로 초기화됩니다.
|
||||
|
||||
### 사용법
|
||||
|
||||
```bash
|
||||
# 독립실행환경으로 시작 (로컬 DB 포함)
|
||||
./start-docker-linux.sh -e standalone
|
||||
|
||||
# 또는 Docker 정리 후 시작
|
||||
./start-docker-linux.sh -e standalone -c
|
||||
```
|
||||
|
||||
### 특징
|
||||
|
||||
- 로컬 PostgreSQL 컨테이너 자동 생성
|
||||
- `dbexport.pgsql` 파일 자동 임포트
|
||||
- 외부 데이터베이스 의존성 없음
|
||||
- 접속 정보:
|
||||
- 애플리케이션: http://localhost:8090
|
||||
- 데이터베이스: localhost:5432
|
||||
- 사용자: postgres
|
||||
- 비밀번호: waceplm0909!!
|
||||
|
||||
## 방법 2: 기존 환경에서 데이터베이스 초기화
|
||||
|
||||
기존 개발환경이나 운영환경에서 외부 데이터베이스에 초기 데이터를 임포트합니다.
|
||||
|
||||
### 사용법
|
||||
|
||||
```bash
|
||||
# 개발환경 데이터베이스 초기화
|
||||
./start-docker-linux.sh -e dev -i
|
||||
|
||||
# 운영환경 데이터베이스 초기화
|
||||
./start-docker-linux.sh -e prod -i
|
||||
|
||||
# 데이터베이스 초기화만 실행 (컨테이너 시작 안함)
|
||||
./start-docker-linux.sh -i
|
||||
```
|
||||
|
||||
### 특징
|
||||
|
||||
- 기존 데이터 자동 백업 생성
|
||||
- 연결 테스트 후 임포트 실행
|
||||
- 임포트 결과 검증
|
||||
- Docker를 사용한 안전한 임포트
|
||||
|
||||
## 방법 3: 수동 스크립트 사용
|
||||
|
||||
### PostgreSQL 클라이언트 직접 사용
|
||||
|
||||
```bash
|
||||
# 기본 설정으로 초기화
|
||||
./init-db.sh
|
||||
|
||||
# 사용자 정의 설정으로 초기화
|
||||
./init-db.sh dev 211.115.91.141 11132 waceplm postgres waceplm0909!!
|
||||
```
|
||||
|
||||
### Docker를 사용한 초기화
|
||||
|
||||
```bash
|
||||
# 기본 설정으로 초기화
|
||||
./init-db-docker.sh
|
||||
|
||||
# 사용자 정의 설정으로 초기화
|
||||
./init-db-docker.sh 211.115.91.141 11132 waceplm postgres waceplm0909!!
|
||||
```
|
||||
|
||||
## 파일 구조
|
||||
|
||||
```
|
||||
db/
|
||||
├── 00-create-roles.sh # 데이터베이스 역할 생성 스크립트
|
||||
└── dbexport.pgsql # 데이터베이스 덤프 파일 (200MB+)
|
||||
|
||||
# 새로 추가된 파일들
|
||||
├── docker-compose.standalone.yml # 독립실행환경 설정
|
||||
├── init-db.sh # 수동 DB 초기화 스크립트
|
||||
├── init-db-docker.sh # Docker 기반 DB 초기화 스크립트
|
||||
└── start-docker-linux.sh # 통합 실행 스크립트 (업데이트됨)
|
||||
```
|
||||
|
||||
## 환경별 설정
|
||||
|
||||
### 개발환경 (dev)
|
||||
- Docker Compose: `docker-compose.dev.yml`
|
||||
- 환경 변수: `.env.development`
|
||||
- 외부 DB: 211.115.91.141:11132
|
||||
|
||||
### 운영환경 (prod)
|
||||
- Docker Compose: `docker-compose.prod.yml`
|
||||
- 환경 변수: `.env.production`
|
||||
- 외부 DB: 설정에 따라
|
||||
|
||||
### 독립실행환경 (standalone)
|
||||
- Docker Compose: `docker-compose.standalone.yml`
|
||||
- 로컬 PostgreSQL 컨테이너 사용
|
||||
- 자동 DB 초기화
|
||||
|
||||
## 주의사항
|
||||
|
||||
1. **대용량 파일**: `dbexport.pgsql` 파일이 200MB 이상이므로 임포트에 시간이 걸릴 수 있습니다.
|
||||
|
||||
2. **백업**: 기존 데이터가 있는 경우 자동으로 백업이 생성됩니다.
|
||||
- 백업 파일명: `backup_YYYYMMDD_HHMMSS.sql`
|
||||
|
||||
3. **권한**: 스크립트 실행 전 권한을 확인하세요.
|
||||
```bash
|
||||
chmod +x *.sh
|
||||
```
|
||||
|
||||
4. **연결 테스트**: 임포트 전에 데이터베이스 연결을 테스트합니다.
|
||||
|
||||
5. **에러 처리**: 임포트 실패 시 백업 파일을 사용하여 복원할 수 있습니다.
|
||||
|
||||
## 트러블슈팅
|
||||
|
||||
### 연결 실패
|
||||
```bash
|
||||
# 데이터베이스 서비스 상태 확인
|
||||
docker ps | grep postgres
|
||||
|
||||
# 네트워크 연결 확인
|
||||
telnet [DB_HOST] [DB_PORT]
|
||||
```
|
||||
|
||||
### 임포트 실패
|
||||
```bash
|
||||
# 로그 확인
|
||||
./start-docker-linux.sh -l
|
||||
|
||||
# 수동 복원
|
||||
psql -h [HOST] -p [PORT] -U [USER] -d [DB] < backup_YYYYMMDD_HHMMSS.sql
|
||||
```
|
||||
|
||||
### 권한 문제
|
||||
```bash
|
||||
# 스크립트 권한 확인
|
||||
ls -la *.sh
|
||||
|
||||
# 권한 부여
|
||||
chmod +x *.sh
|
||||
```
|
||||
|
||||
## 예시 사용 시나리오
|
||||
|
||||
### 최초 설치 시
|
||||
```bash
|
||||
# 1. 독립실행환경으로 시작 (권장)
|
||||
./start-docker-linux.sh -e standalone
|
||||
|
||||
# 2. 또는 개발환경에서 DB 초기화 후 시작
|
||||
./start-docker-linux.sh -e dev -i
|
||||
```
|
||||
|
||||
### 데이터 리셋 시
|
||||
```bash
|
||||
# 1. 컨테이너 중지
|
||||
./start-docker-linux.sh -s
|
||||
|
||||
# 2. Docker 정리 후 재시작
|
||||
./start-docker-linux.sh -e standalone -c
|
||||
```
|
||||
|
||||
### 운영환경 배포 시
|
||||
```bash
|
||||
# 1. 데이터베이스 초기화
|
||||
./start-docker-linux.sh -e prod -i
|
||||
|
||||
# 2. 애플리케이션 시작
|
||||
./start-docker-linux.sh -e prod
|
||||
```
|
||||
|
||||
이 가이드를 통해 WACE PLM 시스템의 데이터베이스를 안전하고 효율적으로 초기화할 수 있습니다.
|
||||
@@ -146,7 +146,6 @@ chmod +x start-docker-linux.sh
|
||||
|
||||
### 운영환경
|
||||
- 애플리케이션: https://waceplm.esgrin.com
|
||||
- 대체 도메인: https://autoclave.co.kr
|
||||
|
||||
## 트러블슈팅
|
||||
|
||||
|
||||
@@ -17,4 +17,4 @@ COPY ./tomcat-conf/context.xml /usr/local/tomcat/conf/context.xml
|
||||
EXPOSE 8080
|
||||
|
||||
# Start Tomcat
|
||||
CMD ["catalina.sh", "run"]
|
||||
CMD ["catalina.sh", "run"]
|
||||
@@ -10,6 +10,9 @@ COPY src /usr/local/tomcat/webapps/ROOT/WEB-INF/src
|
||||
# Copy custom Tomcat context configuration for JNDI
|
||||
COPY ./tomcat-conf/context.xml /usr/local/tomcat/conf/context.xml
|
||||
|
||||
# Copy custom Tomcat server configuration for URIEncoding
|
||||
COPY ./tomcat-conf/server.xml /usr/local/tomcat/conf/server.xml
|
||||
|
||||
# Copy database driver if needed (PostgreSQL driver is already in WEB-INF/lib)
|
||||
# COPY path/to/postgresql-driver.jar /usr/local/tomcat/lib/
|
||||
|
||||
|
||||
125
README.md
125
README.md
@@ -1,21 +1,21 @@
|
||||
# PLM 솔루션 (WACE PLM)
|
||||
# RPS 업무관리 시스템
|
||||
|
||||
## 프로젝트 개요
|
||||
|
||||
본 프로젝트는 제품 수명 주기 관리(PLM - Product Lifecycle Management) 솔루션입니다. 제품 개발 초기 단계부터 설계, 생산, 유통, 유지보수 및 폐기에 이르기까지 제품과 관련된 모든 데이터와 프로세스를 통합적으로 관리하는 것을 목표로 합니다.
|
||||
본 프로젝트는 RPS(Resource Planning System) 업무관리 시스템입니다. 기업의 자원 계획 및 업무 프로세스를 통합적으로 관리하여 효율적인 업무 처리와 자원 최적화를 목표로 합니다.
|
||||
|
||||
## 주요 기능 (예상)
|
||||
## 주요 기능
|
||||
|
||||
소스 코드 분석 및 일반적인 PLM 솔루션의 기능을 바탕으로 다음과 같은 메뉴/기능을 포함할 것으로 예상됩니다. 실제 메뉴는 애플리케이션 실행 후 확인해야 합니다.
|
||||
RPS 업무관리 시스템의 주요 기능은 다음과 같습니다:
|
||||
|
||||
- **제품 정보 관리:** 제품 분류, 속성, 사양 등 관리
|
||||
- **BOM (Bill of Materials) 관리:** 부품 목록, 계층 구조 관리 (eBOM, mBOM 등)
|
||||
- **설계 변경 관리 (ECO/ECR):** 설계 변경 요청, 검토, 승인 프로세스 관리
|
||||
- **문서 관리:** CAD 데이터, 도면, 기술 문서 등의 버전 관리 및 접근 제어
|
||||
- **프로젝트/일정 관리:** 개발 프로젝트 일정, 리소스, 산출물 관리
|
||||
- **사용자 및 권한 관리:** 역할 기반 접근 제어
|
||||
- **워크플로우 관리:** 표준 프로세스 자동화 및 추적
|
||||
- **데이터 시각화/리포트:** 다양한 형식의 보고서 생성 (데이터 표시는 `jqGrid` 등을 활용할 것으로 보입니다.)
|
||||
- **자원 관리:** 인적 자원, 물적 자원, 시설 등의 통합 관리
|
||||
- **업무 프로세스 관리:** 업무 흐름 정의, 승인 프로세스, 워크플로우 관리
|
||||
- **프로젝트 관리:** 프로젝트 계획, 일정 관리, 진행 상황 추적
|
||||
- **문서 관리:** 업무 문서의 생성, 수정, 승인, 보관 및 검색
|
||||
- **보고서 및 분석:** 업무 현황 분석, KPI 관리, 대시보드 제공
|
||||
- **사용자 및 권한 관리:** 역할 기반 접근 제어 및 권한 관리
|
||||
- **알림 및 메시징:** 업무 관련 알림, 메시지 전송 기능
|
||||
- **데이터 시각화:** 차트, 그래프를 통한 데이터 시각화 (jqGrid, Tabulator 등 활용)
|
||||
|
||||
## 기술 스택
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
- MyBatis (v3.2.3) - 데이터베이스 연동
|
||||
- **Frontend:**
|
||||
- JSP (JavaServer Pages)
|
||||
- JavaScript (jQuery v1.11.3 / v2.1.4, jqGrid v4.7.1 확인)
|
||||
- CSS
|
||||
- JavaScript (jQuery v1.11.3 / v2.1.4, jqGrid v4.7.1, Tabulator 확인)
|
||||
- CSS (basic.css - 메인 스타일시트, 드롭다운 메뉴 및 반응형 디자인 포함)
|
||||
- Apache Tiles (v3.0.5) - 페이지 레이아웃/템플릿
|
||||
- **Database:**
|
||||
- PostgreSQL (연결 정보 및 드라이버 확인)
|
||||
@@ -44,6 +44,99 @@
|
||||
- `pdfbox` (PDF 처리)
|
||||
- 기타 다수 (`WebContent/WEB-INF/lib` 디렉토리 참조)
|
||||
|
||||
## UI 구조 및 메뉴 시스템
|
||||
|
||||
### 메뉴 구조
|
||||
- **상단 네비게이션:** 메인 메뉴가 상단 헤더에 위치
|
||||
- **드롭다운 메뉴:** 상단 메뉴 클릭 시 하위 메뉴가 드롭다운으로 표시
|
||||
- **전체 화면 활용:** 왼쪽 프레임을 제거하고 컨텐츠 영역을 전체 화면으로 확대
|
||||
- **반응형 디자인:** 다양한 화면 크기에 대응하는 반응형 레이아웃
|
||||
|
||||
### 주요 파일
|
||||
- **header.jsp:** 상단 메뉴 및 네비게이션 구조 정의
|
||||
- **basic.css:** 메인 스타일시트, 드롭다운 메뉴 스타일 포함
|
||||
- **메뉴 관련 JavaScript:** jQuery 기반 메뉴 인터랙션 처리
|
||||
|
||||
## Materialize CSS 드롭다운 시스템
|
||||
|
||||
본 시스템은 [Materialize CSS](https://materializecss.com/dropdown.html) 프레임워크의 드롭다운 컴포넌트를 활용하여 현대적이고 사용자 친화적인 메뉴 시스템을 구현합니다.
|
||||
|
||||
### Materialize CSS 드롭다운 특징
|
||||
|
||||
#### 기본 구조
|
||||
```html
|
||||
<!-- 드롭다운 트리거 -->
|
||||
<a class='dropdown-trigger btn' href='#' data-target='dropdown1'>Drop Me!</a>
|
||||
|
||||
<!-- 드롭다운 구조 -->
|
||||
<ul id='dropdown1' class='dropdown-content'>
|
||||
<li><a href="#!">one</a></li>
|
||||
<li><a href="#!">two</a></li>
|
||||
<li class="divider" tabindex="-1"></li>
|
||||
<li><a href="#!">three</a></li>
|
||||
<li><a href="#!"><i class="material-icons">view_module</i>four</a></li>
|
||||
<li><a href="#!"><i class="material-icons">cloud</i>five</a></li>
|
||||
</ul>
|
||||
```
|
||||
|
||||
#### JavaScript 초기화
|
||||
```javascript
|
||||
// DOM 로드 완료 후 초기화
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
var elems = document.querySelectorAll('.dropdown-trigger');
|
||||
var instances = M.Dropdown.init(elems, options);
|
||||
});
|
||||
|
||||
// jQuery 방식
|
||||
$('.dropdown-trigger').dropdown();
|
||||
```
|
||||
|
||||
#### 주요 옵션
|
||||
| 옵션명 | 타입 | 기본값 | 설명 |
|
||||
|--------|------|--------|------|
|
||||
| alignment | String | 'left' | 메뉴 정렬 방향 정의 |
|
||||
| autoTrigger | Boolean | true | 키보드 포커스 자동 설정 |
|
||||
| constrainWidth | Boolean | true | 드롭다운 너비를 트리거 크기에 맞춤 |
|
||||
| container | Element | null | 드롭다운의 경계 컨테이너 지정 |
|
||||
| coverTrigger | Boolean | true | false시 트리거 아래에 드롭다운 표시 |
|
||||
| closeOnClick | Boolean | true | 항목 클릭시 드롭다운 닫기 |
|
||||
| hover | Boolean | false | 호버시 드롭다운 열기 |
|
||||
| inDuration | Number | 150 | 열림 애니메이션 지속시간 (ms) |
|
||||
| outDuration | Number | 250 | 닫힘 애니메이션 지속시간 (ms) |
|
||||
|
||||
#### 주요 메서드
|
||||
- **`.open()`**: 드롭다운 열기
|
||||
- **`.close()`**: 드롭다운 닫기
|
||||
- **`.recalculateDimensions()`**: 내용 변경시 크기 재계산
|
||||
- **`.destroy()`**: 인스턴스 제거
|
||||
|
||||
#### 인스턴스 속성
|
||||
- **`el`**: 초기화된 DOM 엘리먼트
|
||||
- **`options`**: 초기화 옵션 객체
|
||||
- **`id`**: 드롭다운 엘리먼트 ID
|
||||
- **`dropdownEl`**: 드롭다운 DOM 엘리먼트
|
||||
- **`isOpen`**: 드롭다운 열림 상태
|
||||
- **`isScrollable`**: 드롭다운 스크롤 가능 여부
|
||||
- **`focusedIndex`**: 포커스된 항목 인덱스
|
||||
|
||||
### 시스템 적용 방식
|
||||
|
||||
본 RPS 시스템에서는 Materialize CSS 드롭다운을 다음과 같이 활용합니다:
|
||||
|
||||
1. **CDN 라이브러리 로드**
|
||||
```html
|
||||
<!-- Materialize CSS -->
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
|
||||
<!-- Material Icons -->
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
|
||||
<!-- Materialize JavaScript -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
|
||||
```
|
||||
|
||||
2. **동적 메뉴 로딩**: AJAX를 통해 서버에서 메뉴 데이터를 가져와 동적으로 드롭다운 생성
|
||||
3. **Material Design 아이콘**: 메뉴 항목에 Material Icons 적용으로 시각적 향상
|
||||
4. **커스텀 스타일링**: basic.css를 통해 기존 시스템 디자인과 조화로운 스타일 적용
|
||||
|
||||
## 프로젝트 구조 (폴더별 역할)
|
||||
|
||||
- **`.git/`**: Git 버전 관리 시스템 메타데이터 저장소.
|
||||
@@ -66,7 +159,7 @@
|
||||
이 프로젝트는 제공된 `Dockerfile` 및 `docker-compose.yml` 파일을 사용하여 Docker 컨테이너 환경에서 실행할 수 있습니다.
|
||||
|
||||
1. **Docker 및 Docker Compose 설치:** 시스템에 Docker와 Docker Compose가 설치되어 있어야 합니다.
|
||||
2. **데이터베이스 파일 준비:** `waceplm.pgsql` 파일이 프로젝트 루트 디렉토리에 있는지 확인합니다. (필요시 `docker-compose.yml`에서 파일 경로 수정)
|
||||
2. **데이터베이스 파일 준비:** `ilshin.pgsql` 파일이 프로젝트 루트 디렉토리에 있는지 확인합니다. (필요시 `docker-compose.yml`에서 파일 경로 수정)
|
||||
3. **Docker Compose 실행:** 프로젝트 루트 디렉토리에서 다음 명령어를 실행합니다.
|
||||
```bash
|
||||
docker-compose up --build -d
|
||||
@@ -77,4 +170,4 @@
|
||||
**참고:**
|
||||
|
||||
- 애플리케이션이 데이터베이스 연결 정보를 읽는 방식 (예: JNDI, 환경 변수, 설정 파일)에 따라 `docker-compose.yml`의 `app` 서비스 환경 변수 또는 Tomcat 설정 파일 (`context.xml` 등) 수정이 필요할 수 있습니다.
|
||||
- `SETTING_GUIDE.txt`에 명시된 Tomcat 컨텍스트 경로 (`/waceplm`)를 사용하려면 `Dockerfile`에서 `WebContent`를 `/usr/local/tomcat/webapps/waceplm`로 복사하거나 Tomcat 설정을 변경해야 할 수 있습니다. 현재 설정은 `/` (ROOT) 경로로 배포됩니다.
|
||||
- `SETTING_GUIDE.txt`에 명시된 Tomcat 컨텍스트 경로 (`/ilshin`)를 사용하려면 `Dockerfile`에서 `WebContent`를 `/usr/local/tomcat/webapps/ilshin`로 복사하거나 Tomcat 설정을 변경해야 할 수 있습니다. 현재 설정은 `/` (ROOT) 경로로 배포됩니다.
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<Context docBase="woosung" path="/" reloadable="true" source="org.eclipse.jst.jee.server:woosung">
|
||||
<Resource auth="Container" driverClassName="org.postgresql.Driver" maxActive="100" maxIdle="10" maxWait="-1" name="plm" password="admin0909!!" type="javax.sql.DataSource" url="jdbc:postgresql://211.224.136.4:5432/woosung" username="postgres"/>
|
||||
<Context docBase="ilshin" path="/" reloadable="true" source="org.eclipse.jst.jee.server:ilshin">
|
||||
<Resource auth="Container" driverClassName="org.postgresql.Driver" maxActive="100" maxIdle="10" maxWait="-1" name="plm" password="admin0909!!" type="javax.sql.DataSource" url="jdbc:postgresql://211.224.136.4:5432/ilshin" username="postgres"/>
|
||||
</Context>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2869,4 +2869,138 @@
|
||||
</if>
|
||||
ORDER BY SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1) DESC
|
||||
</select>
|
||||
|
||||
<!-- M-BOM 관리 목록 조회 -->
|
||||
<select id="mBomMgmtGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
||||
SELECT
|
||||
PM.OBJID,
|
||||
PM.CONTRACT_OBJID,
|
||||
PM.PROJECT_NO,
|
||||
CM.CATEGORY_CD,
|
||||
COALESCE(
|
||||
(SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = CM.CATEGORY_CD LIMIT 1),
|
||||
''
|
||||
) AS CATEGORY_NAME,
|
||||
CM.PRODUCT,
|
||||
COALESCE(
|
||||
(SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = CM.PRODUCT LIMIT 1),
|
||||
''
|
||||
) AS PRODUCT_NAME,
|
||||
CM.AREA_CD,
|
||||
COALESCE(
|
||||
(SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = CM.AREA_CD LIMIT 1),
|
||||
''
|
||||
) AS AREA_NAME,
|
||||
TO_CHAR(PM.REGDATE, 'YYYY-MM-DD') AS RECEIPT_DATE,
|
||||
CM.CUSTOMER_OBJID,
|
||||
COALESCE(
|
||||
(SELECT SUPPLY_NAME FROM SUPPLY_MNG WHERE OBJID = CM.CUSTOMER_OBJID::NUMERIC LIMIT 1),
|
||||
''
|
||||
) AS CUSTOMER_NAME,
|
||||
CM.PAID_TYPE,
|
||||
COALESCE(
|
||||
(SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = CM.PAID_TYPE LIMIT 1),
|
||||
CASE
|
||||
WHEN CM.PAID_TYPE = 'paid' THEN '유상'
|
||||
WHEN CM.PAID_TYPE = 'free' THEN '무상'
|
||||
ELSE ''
|
||||
END
|
||||
) AS PAID_TYPE_NAME,
|
||||
COALESCE(PM.PART_NO, '') AS PART_NO,
|
||||
COALESCE(PM.PART_NAME, '') AS PART_NAME,
|
||||
-- S/N: CONTRACT_ITEM_SERIAL에서 조회
|
||||
(SELECT
|
||||
CASE
|
||||
WHEN COUNT(*) = 0 THEN ''
|
||||
WHEN COUNT(*) = 1 THEN MIN(CIS.SERIAL_NO)
|
||||
ELSE MIN(CIS.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건'
|
||||
END
|
||||
FROM CONTRACT_ITEM CI
|
||||
LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID AND UPPER(CIS.STATUS) = 'ACTIVE'
|
||||
WHERE CI.CONTRACT_OBJID = PM.CONTRACT_OBJID
|
||||
AND CI.PART_OBJID = PM.PART_OBJID
|
||||
AND CI.STATUS = 'ACTIVE'
|
||||
AND CIS.SERIAL_NO IS NOT NULL) AS SERIAL_NO,
|
||||
COALESCE(PM.QUANTITY::numeric, 0) AS QUANTITY,
|
||||
-- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT, 없으면 CONTRACT_MGMT
|
||||
COALESCE(
|
||||
(SELECT CI.DUE_DATE
|
||||
FROM CONTRACT_ITEM CI
|
||||
WHERE CI.CONTRACT_OBJID = PM.CONTRACT_OBJID
|
||||
AND CI.PART_OBJID = PM.PART_OBJID
|
||||
AND CI.STATUS = 'ACTIVE' LIMIT 1),
|
||||
PM.DUE_DATE,
|
||||
CM.req_del_date
|
||||
) AS REQ_DEL_DATE,
|
||||
-- 고객요청사항: CONTRACT_ITEM에서 가져옴
|
||||
COALESCE(
|
||||
(SELECT CI.CUSTOMER_REQUEST
|
||||
FROM CONTRACT_ITEM CI
|
||||
WHERE CI.CONTRACT_OBJID = PM.CONTRACT_OBJID
|
||||
AND CI.PART_OBJID = PM.PART_OBJID
|
||||
AND CI.STATUS = 'ACTIVE' LIMIT 1),
|
||||
''
|
||||
) AS CUSTOMER_REQUEST,
|
||||
-- E-BOM 정보: PM.PART_OBJID가 E-BOM OBJID를 직접 가리킴
|
||||
PM.PART_OBJID AS BOM_REPORT_OBJID,
|
||||
COALESCE(
|
||||
(SELECT PBR.STATUS
|
||||
FROM PART_BOM_REPORT PBR
|
||||
WHERE PBR.OBJID::VARCHAR = PM.PART_OBJID
|
||||
LIMIT 1),
|
||||
''
|
||||
) AS EBOM_STATUS,
|
||||
COALESCE(
|
||||
(SELECT TO_CHAR(PBR.REGDATE, 'YYYY-MM-DD')
|
||||
FROM PART_BOM_REPORT PBR
|
||||
WHERE PBR.OBJID::VARCHAR = PM.PART_OBJID
|
||||
LIMIT 1),
|
||||
''
|
||||
) AS EBOM_REGDATE,
|
||||
COALESCE(PM.MBOM_STATUS, '') AS MBOM_STATUS,
|
||||
'1.0' AS MBOM_VERSION,
|
||||
TO_CHAR(PM.REGDATE, 'YYYY-MM-DD') AS MBOM_REGDATE
|
||||
FROM
|
||||
PROJECT_MGMT PM
|
||||
LEFT JOIN CONTRACT_MGMT CM ON PM.CONTRACT_OBJID = CM.OBJID
|
||||
WHERE 1=1
|
||||
AND PM.PROJECT_NO IS NOT NULL
|
||||
AND PM.PROJECT_NO != ''
|
||||
<!-- 품번 검색 (대소문자 구분 없음) -->
|
||||
<if test="search_part_no != null and search_part_no != ''">
|
||||
AND UPPER(PM.PART_NO) LIKE '%' || UPPER(#{search_part_no}) || '%'
|
||||
</if>
|
||||
<!-- 품명 검색 (대소문자 구분 없음) -->
|
||||
<if test="search_part_name != null and search_part_name != ''">
|
||||
AND UPPER(PM.PART_NAME) LIKE '%' || UPPER(#{search_part_name}) || '%'
|
||||
</if>
|
||||
ORDER BY PM.REGDATE DESC
|
||||
</select>
|
||||
|
||||
<!-- E-BOM을 PROJECT_MGMT에 할당 -->
|
||||
<update id="assignEbomToProject" parameterType="map">
|
||||
UPDATE PROJECT_MGMT
|
||||
SET
|
||||
PART_OBJID = #{bomReportObjid}
|
||||
WHERE OBJID = #{projectMgmtObjid}
|
||||
</update>
|
||||
|
||||
<!-- E-BOM 정보 조회 -->
|
||||
<select id="getEbomInfo" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
||||
SELECT
|
||||
T.OBJID,
|
||||
T.PRODUCT_CD,
|
||||
CODE_NAME(T.PRODUCT_CD) as PRODUCT_NAME,
|
||||
T.PART_NO,
|
||||
T.PART_NAME,
|
||||
T.STATUS,
|
||||
T.REVISION,
|
||||
TO_CHAR(T.REGDATE, 'YYYY-MM-DD') AS REG_DATE,
|
||||
UI.USER_NAME AS WRITER_NAME,
|
||||
UI.DEPT_NAME
|
||||
FROM
|
||||
PART_BOM_REPORT T
|
||||
LEFT JOIN USER_INFO UI ON UI.USER_ID = T.WRITER
|
||||
WHERE T.OBJID::VARCHAR = #{objid}
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -3907,8 +3907,55 @@
|
||||
,CODE_NAME(MANUFACTURE_PLANT) AS MANUFACTURE_PLANT_NAME
|
||||
,CONTRACT_RESULT
|
||||
,CODE_NAME(CONTRACT_RESULT) AS CONTRACT_RESULT_NAME
|
||||
,CODE_NAME(AREA_CD) AS AREA_NAME
|
||||
,PROJECT_NAME
|
||||
,CODE_NAME(AREA_CD) AS AREA_NAME
|
||||
,PROJECT_NAME
|
||||
,(SELECT
|
||||
CASE
|
||||
WHEN O.PAID_TYPE = 'paid' THEN '유상'
|
||||
WHEN O.PAID_TYPE = 'free' THEN '무상'
|
||||
ELSE O.PAID_TYPE
|
||||
END
|
||||
FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS FREE_OF_CHARGE
|
||||
,COALESCE(T.QUANTITY::numeric, 0) AS CONTRACT_QTY
|
||||
,T.PART_NO AS PRODUCT_ITEM_CODE
|
||||
,T.PART_NAME AS PRODUCT_ITEM_NAME
|
||||
-- S/N: 해당 품목의 시리얼 번호 (여러 개일 경우 "S/N 외 N건" 형식)
|
||||
,(SELECT
|
||||
CASE
|
||||
WHEN COUNT(*) = 0 THEN ''
|
||||
WHEN COUNT(*) = 1 THEN MIN(S.SERIAL_NO)
|
||||
ELSE MIN(S.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건'
|
||||
END
|
||||
FROM CONTRACT_ITEM AS I
|
||||
LEFT JOIN CONTRACT_ITEM_SERIAL AS S ON S.ITEM_OBJID = I.OBJID AND S.STATUS = 'ACTIVE'
|
||||
WHERE I.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||
AND I.PART_OBJID = T.PART_OBJID
|
||||
AND S.SERIAL_NO IS NOT NULL) AS SERIAL_NO
|
||||
-- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT.DUE_DATE, 없으면 CONTRACT_MGMT.due_date
|
||||
,COALESCE(
|
||||
(SELECT CI.DUE_DATE
|
||||
FROM CONTRACT_ITEM CI
|
||||
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||
AND CI.PART_OBJID = T.PART_OBJID
|
||||
AND CI.STATUS = 'ACTIVE'),
|
||||
T.DUE_DATE,
|
||||
(SELECT CM.due_date FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID)
|
||||
) AS REQ_DEL_DATE
|
||||
-- 영업관리_주문서관리_수주등록
|
||||
,EBOM_STATUS
|
||||
,MBOM_STATUS
|
||||
-- 발주일: CONTRACT_MGMT 테이블에서 가져오기 (영업관리_주문서관리와 동일)
|
||||
,(SELECT O.ORDER_DATE FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS ORDER_DATE
|
||||
,RECEIVING_RATE
|
||||
,PRODUCTION_TEAM_12
|
||||
,PRODUCTION_TEAM_3
|
||||
-- 출하일: sales_registration 테이블에서 가져오기 (영업관리_판매관리와 동일)
|
||||
,COALESCE(
|
||||
(SELECT TO_CHAR(SR.shipping_date, 'YYYY-MM-DD')
|
||||
FROM sales_registration SR
|
||||
WHERE SR.project_no = T.PROJECT_NO),
|
||||
''
|
||||
) AS SHIPMENT_DATE
|
||||
,(((SELECT SUM(COALESCE(DESIGN_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)
|
||||
+(SELECT SUM(COALESCE(PURCHASE_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)
|
||||
+(SELECT SUM(COALESCE(PRODUCE_RATE,'0')::INTEGER) / COUNT(1) FROM PMS_WBS_TASK AS O WHERE O.CONTRACT_OBJID = T.OBJID)
|
||||
@@ -7362,16 +7409,20 @@ SELECT
|
||||
,EST_USER_ID
|
||||
,EST_COMP_DATE
|
||||
,EST_RESULT_CD
|
||||
,AREA_CD
|
||||
,MECHANICAL_TYPE
|
||||
,OVERHAUL_ORDER
|
||||
,IS_TEMP
|
||||
)
|
||||
,AREA_CD
|
||||
,MECHANICAL_TYPE
|
||||
,OVERHAUL_ORDER
|
||||
,IS_TEMP
|
||||
,PART_OBJID
|
||||
,PART_NO
|
||||
,PART_NAME
|
||||
,QUANTITY
|
||||
)
|
||||
|
||||
(
|
||||
SELECT
|
||||
#{OBJID}
|
||||
,#{objId}
|
||||
,#{objId}
|
||||
,CATEGORY_CD
|
||||
,CUSTOMER_OBJID
|
||||
,PRODUCT
|
||||
@@ -7390,29 +7441,71 @@ SELECT
|
||||
,CHG_USER_ID
|
||||
,PLAN_DATE
|
||||
,COMPLETE_DATE
|
||||
,RESULT_CD
|
||||
<choose>
|
||||
<when test="overhaul_project_no != null and overhaul_project_no !='' ">
|
||||
,#{overhaul_project_no}<!-- || '_' || #{overhaul_order} -->
|
||||
</when>
|
||||
<otherwise>
|
||||
,MECHANICAL_TYPE || '-' ||
|
||||
<!--
|
||||
(SELECT (SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1))::integer+1 FROM PROJECT_MGMT WHERE PROJECT_NO NOT LIKE '%\_%' ESCAPE '\' ORDER BY SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1) DESC LIMIT 1)
|
||||
-->
|
||||
(SELECT CASE
|
||||
WHEN PROJECT_NO ~ '[-\s][0-9]+$'
|
||||
THEN REGEXP_REPLACE(PROJECT_NO, '.*[-\s]([0-9]+)$', '\1')::integer+1
|
||||
ELSE NULL
|
||||
END AS extracted_number
|
||||
FROM PROJECT_MGMT
|
||||
WHERE PROJECT_NO NOT LIKE '%\_%' ESCAPE '\'
|
||||
ORDER BY extracted_number DESC NULLS LAST
|
||||
LIMIT 1)
|
||||
</otherwise>
|
||||
</choose>
|
||||
<!-- ,#{project_no} -->
|
||||
<!-- ,(SELECT TITLE FROM PMS_WBS_TEMPLATE PWT WHERE PWT.OBJID = #{mechanical_type}) || '-' || (SELECT (SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1))::integer+1 FROM PROJECT_MGMT ORDER BY SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1) DESC LIMIT 1) -->
|
||||
,RESULT_CD
|
||||
<!-- 기존 PROJECT_NO 자동생성 로직 (주석처리)
|
||||
<choose>
|
||||
<when test="overhaul_project_no != null and overhaul_project_no !='' ">
|
||||
,#{overhaul_project_no}
|
||||
</when>
|
||||
<otherwise>
|
||||
,MECHANICAL_TYPE || '-' ||
|
||||
(SELECT CASE
|
||||
WHEN PROJECT_NO ~ '[-\s][0-9]+$'
|
||||
THEN REGEXP_REPLACE(PROJECT_NO, '.*[-\s]([0-9]+)$', '\1')::integer+1
|
||||
ELSE NULL
|
||||
END AS extracted_number
|
||||
FROM PROJECT_MGMT
|
||||
WHERE PROJECT_NO NOT LIKE '%\_%' ESCAPE '\'
|
||||
ORDER BY extracted_number DESC NULLS LAST
|
||||
LIMIT 1)
|
||||
</otherwise>
|
||||
</choose>
|
||||
-->
|
||||
|
||||
<!-- 신규 PROJECT_NO 생성 로직: 주문유형-제품구분-날짜-순번 형식 (예: R-AS-250302-001) -->
|
||||
,(
|
||||
SELECT
|
||||
-- 주문유형 코드 (CATEGORY_CD를 영문 약어로 매핑)
|
||||
CASE CODE_NAME(CATEGORY_CD)
|
||||
WHEN '오버홀' THEN 'O'
|
||||
WHEN '개조' THEN 'M'
|
||||
WHEN '개발' THEN 'D'
|
||||
WHEN '견적' THEN 'Q'
|
||||
WHEN '수리' THEN 'R'
|
||||
WHEN '판매' THEN 'S'
|
||||
ELSE 'T'
|
||||
END || '-' ||
|
||||
-- 제품구분 코드 (PRODUCT의 CODE_NAME에서 슬래시 제거)
|
||||
REPLACE(CODE_NAME(PRODUCT), '/', '') || '-' ||
|
||||
-- 날짜 (YYMMDD)
|
||||
TO_CHAR(CURRENT_DATE, 'YYMMDD') || '-' ||
|
||||
-- 순번 (001, 002, ...)
|
||||
LPAD(
|
||||
COALESCE(
|
||||
(
|
||||
SELECT MAX(SUBSTRING(PROJECT_NO FROM '\d{3}$')::INTEGER) + 1
|
||||
FROM PROJECT_MGMT
|
||||
WHERE PROJECT_NO LIKE
|
||||
CASE CODE_NAME(CATEGORY_CD)
|
||||
WHEN '오버홀' THEN 'O'
|
||||
WHEN '개조' THEN 'M'
|
||||
WHEN '개발' THEN 'D'
|
||||
WHEN '견적' THEN 'Q'
|
||||
WHEN '수리' THEN 'R'
|
||||
WHEN '판매' THEN 'S'
|
||||
ELSE 'T'
|
||||
END || '-' ||
|
||||
REPLACE(CODE_NAME(PRODUCT), '/', '') || '-' ||
|
||||
TO_CHAR(CURRENT_DATE, 'YYMMDD') || '-%'
|
||||
),
|
||||
1
|
||||
)::TEXT,
|
||||
3,
|
||||
'0'
|
||||
)
|
||||
FROM CONTRACT_MGMT
|
||||
WHERE OBJID = #{objId}
|
||||
)
|
||||
,PM_USER_ID
|
||||
,#{contract_price}
|
||||
,#{contract_price_currency}
|
||||
@@ -7437,12 +7530,16 @@ SELECT
|
||||
,EST_USER_ID
|
||||
,EST_COMP_DATE
|
||||
,EST_RESULT_CD
|
||||
,AREA_CD
|
||||
,MECHANICAL_TYPE
|
||||
,#{overhaul_order}
|
||||
,#{is_temp}
|
||||
FROM CONTRACT_MGMT
|
||||
WHERE OBJID=#{objId}
|
||||
,AREA_CD
|
||||
,MECHANICAL_TYPE
|
||||
,#{overhaul_order}
|
||||
,#{is_temp}
|
||||
,#{part_objid}
|
||||
,#{part_no}
|
||||
,#{part_name}
|
||||
,#{quantity}
|
||||
FROM CONTRACT_MGMT
|
||||
WHERE OBJID=#{objId}
|
||||
)
|
||||
</insert>
|
||||
|
||||
@@ -7549,7 +7646,12 @@ SELECT
|
||||
,REQ_DEL_DATE = #{req_del_date}
|
||||
,CONTRACT_COMPANY = #{contract_company}
|
||||
,MANUFACTURE_PLANT = #{manufacture_plant}
|
||||
,PART_OBJID = #{part_objid}
|
||||
,PART_NO = #{part_no}
|
||||
,PART_NAME = #{part_name}
|
||||
,QUANTITY = #{quantity}
|
||||
WHERE CONTRACT_OBJID = #{objId}
|
||||
AND PART_OBJID = #{part_objid}
|
||||
</update>
|
||||
|
||||
<delete id="deleteProjectMngInfo" parameterType="map">
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -812,5 +812,586 @@
|
||||
,editEmpNo = #{cretEmpNo} /* 수정자 */
|
||||
</update>
|
||||
|
||||
<!-- 매출관리 그리드 목록 - project_mgmt 테이블 기반 조회 (S/N, 유무상 포함) -->
|
||||
<select id="getSalesMgmtGridList" parameterType="map" resultType="map">
|
||||
/* salesNcollectMgmt.getSalesMgmtGridList - sales_registration LEFT JOIN으로 최적화 */
|
||||
SELECT
|
||||
T.OBJID,
|
||||
T.PROJECT_NO,
|
||||
T.CONTRACT_OBJID,
|
||||
CODE_NAME(T.CATEGORY_CD) AS ORDER_TYPE,
|
||||
CODE_NAME(T.PRODUCT) AS PRODUCT_TYPE,
|
||||
CODE_NAME(T.AREA_CD) AS NATION,
|
||||
TO_CHAR(T.REGDATE, 'YYYY-MM-DD') AS RECEIPT_DATE,
|
||||
(SELECT SUPPLY_NAME FROM SUPPLY_MNG WHERE OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER,
|
||||
(SELECT
|
||||
CASE
|
||||
WHEN CM.PAID_TYPE = 'paid' THEN '유상'
|
||||
WHEN CM.PAID_TYPE = 'free' THEN '무상'
|
||||
ELSE CM.PAID_TYPE
|
||||
END
|
||||
FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PAYMENT_TYPE,
|
||||
T.PART_NO AS PRODUCT_NO,
|
||||
T.PART_NAME AS PRODUCT_NAME,
|
||||
-- S/N: 해당 품목의 시리얼 번호 (여러 개일 경우 "S/N 외 N건" 형식)
|
||||
(SELECT
|
||||
CASE
|
||||
WHEN COUNT(*) = 0 THEN ''
|
||||
WHEN COUNT(*) = 1 THEN MIN(CIS.SERIAL_NO)
|
||||
ELSE MIN(CIS.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건'
|
||||
END
|
||||
FROM CONTRACT_ITEM CI
|
||||
LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID AND UPPER(CIS.STATUS) = 'ACTIVE'
|
||||
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||
AND CI.PART_OBJID = T.PART_OBJID
|
||||
AND CI.STATUS = 'ACTIVE'
|
||||
AND CIS.SERIAL_NO IS NOT NULL) AS SERIAL_NO,
|
||||
COALESCE(T.QUANTITY::numeric, 0) AS ORDER_QUANTITY,
|
||||
-- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT, 없으면 CONTRACT_MGMT
|
||||
COALESCE(
|
||||
(SELECT CI.DUE_DATE
|
||||
FROM CONTRACT_ITEM CI
|
||||
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||
AND CI.PART_OBJID = T.PART_OBJID
|
||||
AND CI.STATUS = 'ACTIVE'),
|
||||
T.DUE_DATE,
|
||||
(SELECT CM.due_date FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID)
|
||||
) AS REQUEST_DATE,
|
||||
-- 고객요청사항: CONTRACT_ITEM에서만 가져옴 (견적관리와 완전히 동일)
|
||||
(SELECT CI.CUSTOMER_REQUEST
|
||||
FROM CONTRACT_ITEM CI
|
||||
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||
AND CI.PART_OBJID = T.PART_OBJID
|
||||
AND CI.STATUS = 'ACTIVE') AS CUSTOMER_REQUEST,
|
||||
CODE_NAME(T.CONTRACT_RESULT) AS ORDER_STATUS,
|
||||
T.PO_NO,
|
||||
COALESCE(T.CONTRACT_DATE, (SELECT CM.order_date FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID)) AS ORDER_DATE,
|
||||
CASE WHEN EXISTS(
|
||||
SELECT 1 FROM ATTACH_FILE_INFO
|
||||
WHERE TARGET_OBJID = T.CONTRACT_OBJID
|
||||
AND DOC_TYPE='ORDER_DOC'
|
||||
AND UPPER(STATUS) = 'ACTIVE'
|
||||
) THEN 'Y' ELSE 'N' END AS ORDER_ATTACH,
|
||||
(SELECT CM.PRODUCTION_STATUS FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PRODUCTION_STATUS,
|
||||
-- 판매 관련 필드들 (sales_registration 테이블에서 한 번에 가져오기)
|
||||
COALESCE(SR.shipping_order_status, '') AS SHIPPING_ORDER_STATUS,
|
||||
COALESCE(SR.sales_quantity, 0) AS SALES_QUANTITY,
|
||||
COALESCE(SR.sales_unit_price, 0) AS SALES_UNIT_PRICE,
|
||||
COALESCE(SR.sales_supply_price, 0) AS SALES_SUPPLY_PRICE,
|
||||
COALESCE(SR.sales_vat, 0) AS SALES_VAT,
|
||||
COALESCE(SR.sales_total_amount, 0) AS SALES_TOTAL_AMOUNT,
|
||||
COALESCE(SR.sales_total_amount, 0) AS SALES_TOTAL_AMOUNT_KRW,
|
||||
COALESCE(SR.sales_currency, T.CONTRACT_CURRENCY) AS SALES_CURRENCY,
|
||||
CODE_NAME(COALESCE(SR.sales_currency, T.CONTRACT_CURRENCY)) AS SALES_CURRENCY_NAME,
|
||||
COALESCE(SR.sales_exchange_rate, T.CONTRACT_PRICE_CURRENCY::numeric, 0) AS SALES_EXCHANGE_RATE,
|
||||
COALESCE(TO_CHAR(SR.shipping_date, 'YYYY-MM-DD'), '') AS SHIPPING_DATE,
|
||||
COALESCE(SR.shipping_method, '') AS SHIPPING_METHOD,
|
||||
COALESCE(
|
||||
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = SR.manager_user_id),
|
||||
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.PM_USER_ID)
|
||||
) AS MANAGER,
|
||||
COALESCE(SR.incoterms, '') AS INCOTERMS,
|
||||
T.SALES_STATUS,
|
||||
T.OBJID::VARCHAR AS SALE_NO,
|
||||
'ORIGINAL' AS RECORD_TYPE,
|
||||
'' AS SPLIT_LOG_ID
|
||||
FROM PROJECT_MGMT AS T
|
||||
LEFT JOIN sales_registration SR ON T.PROJECT_NO = SR.project_no
|
||||
WHERE 1 = 1
|
||||
AND T.PROJECT_NO IS NOT NULL
|
||||
AND T.PROJECT_NO != ''
|
||||
<if test="orderType != null and orderType != ''">
|
||||
AND T.CATEGORY_CD = #{orderType}
|
||||
</if>
|
||||
<if test="productType != null and productType != ''">
|
||||
AND T.PRODUCT = #{productType}
|
||||
</if>
|
||||
<if test="nation != null and nation != ''">
|
||||
AND T.AREA_CD = #{nation}
|
||||
</if>
|
||||
<if test="customer != null and customer != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM SUPPLY_MNG
|
||||
WHERE OBJID = T.CUSTOMER_OBJID::NUMERIC
|
||||
AND SUPPLY_NAME LIKE CONCAT('%', #{customer}, '%')
|
||||
)
|
||||
</if>
|
||||
<if test="customer_objid != null and customer_objid != ''">
|
||||
AND T.CUSTOMER_OBJID = #{customer_objid}
|
||||
</if>
|
||||
<if test="paymentType != null and paymentType != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM CONTRACT_MGMT CM
|
||||
WHERE CM.OBJID = T.CONTRACT_OBJID
|
||||
AND (
|
||||
(#{paymentType} = 'N' AND CM.PAID_TYPE = 'paid') OR
|
||||
(#{paymentType} = 'Y' AND CM.PAID_TYPE = 'free')
|
||||
)
|
||||
)
|
||||
</if>
|
||||
<if test="productNo != null and productNo != ''">
|
||||
AND T.PART_NO LIKE CONCAT('%', #{productNo}, '%')
|
||||
</if>
|
||||
<if test="productName != null and productName != ''">
|
||||
AND T.PART_NAME LIKE CONCAT('%', #{productName}, '%')
|
||||
</if>
|
||||
<if test="serialNo != null and serialNo != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM CONTRACT_ITEM CI
|
||||
JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID
|
||||
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||
AND CIS.SERIAL_NO LIKE CONCAT('%', #{serialNo}, '%')
|
||||
AND UPPER(CIS.STATUS) = 'ACTIVE'
|
||||
)
|
||||
</if>
|
||||
<if test="orderStatus != null and orderStatus != ''">
|
||||
AND T.CONTRACT_RESULT = #{orderStatus}
|
||||
</if>
|
||||
<if test="poNo != null and poNo != ''">
|
||||
AND T.PO_NO LIKE CONCAT('%', #{poNo}, '%')
|
||||
</if>
|
||||
<if test="requestDateFrom != null and requestDateFrom != ''">
|
||||
AND T.DUE_DATE <![CDATA[>=]]> #{requestDateFrom}
|
||||
</if>
|
||||
<if test="requestDateTo != null and requestDateTo != ''">
|
||||
AND T.DUE_DATE <![CDATA[<=]]> #{requestDateTo}
|
||||
</if>
|
||||
<if test="orderDateFrom != null and orderDateFrom != ''">
|
||||
AND T.CONTRACT_DATE <![CDATA[>=]]> #{orderDateFrom}
|
||||
</if>
|
||||
<if test="orderDateTo != null and orderDateTo != ''">
|
||||
AND T.CONTRACT_DATE <![CDATA[<=]]> #{orderDateTo}
|
||||
</if>
|
||||
<if test="shippingStatus != null and shippingStatus != ''">
|
||||
/* SALES_STATUS 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="shippingDateFrom != null and shippingDateFrom != ''">
|
||||
/* SHIPPING_DATE 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="shippingDateTo != null and shippingDateTo != ''">
|
||||
/* SHIPPING_DATE 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="shippingMethod != null and shippingMethod != ''">
|
||||
/* SHIPPING_METHOD 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="manager != null and manager != ''">
|
||||
AND T.PM_USER_ID = #{manager}
|
||||
</if>
|
||||
<if test="incoterms != null and incoterms != ''">
|
||||
/* INCOTERMS 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
-- 등록일 기준 최신순 정렬 (프로젝트 번호는 보조 정렬)
|
||||
ORDER BY T.REGDATE DESC, T.PROJECT_NO DESC
|
||||
</select>
|
||||
|
||||
<!-- 매출관리 그리드 목록 개수 - project_mgmt 테이블 기반 -->
|
||||
<select id="getSalesMgmtGridListCount" parameterType="map" resultType="map">
|
||||
/* salesNcollectMgmt.getSalesMgmtGridListCount - project_mgmt 테이블 기반 */
|
||||
SELECT
|
||||
CEIL(COUNT(1)::float / #{COUNT_PER_PAGE}::float)::numeric::integer AS MAX_PAGE_SIZE,
|
||||
COUNT(1)::integer AS TOTAL_CNT
|
||||
FROM PROJECT_MGMT AS T
|
||||
WHERE 1 = 1
|
||||
AND T.PROJECT_NO IS NOT NULL
|
||||
AND T.PROJECT_NO != ''
|
||||
<if test="orderType != null and orderType != ''">
|
||||
AND T.CATEGORY_CD = #{orderType}
|
||||
</if>
|
||||
<if test="productType != null and productType != ''">
|
||||
AND T.PRODUCT = #{productType}
|
||||
</if>
|
||||
<if test="nation != null and nation != ''">
|
||||
AND T.AREA_CD = #{nation}
|
||||
</if>
|
||||
<if test="customer != null and customer != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM SUPPLY_MNG
|
||||
WHERE OBJID = T.CUSTOMER_OBJID::NUMERIC
|
||||
AND SUPPLY_NAME LIKE CONCAT('%', #{customer}, '%')
|
||||
)
|
||||
</if>
|
||||
<if test="customer_objid != null and customer_objid != ''">
|
||||
AND T.CUSTOMER_OBJID = #{customer_objid}
|
||||
</if>
|
||||
<if test="paymentType != null and paymentType != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM CONTRACT_MGMT CM
|
||||
WHERE CM.OBJID = T.CONTRACT_OBJID
|
||||
AND (
|
||||
(#{paymentType} = 'N' AND CM.PAID_TYPE = 'paid') OR
|
||||
(#{paymentType} = 'Y' AND CM.PAID_TYPE = 'free')
|
||||
)
|
||||
)
|
||||
</if>
|
||||
<if test="productNo != null and productNo != ''">
|
||||
AND T.PART_NO LIKE CONCAT('%', #{productNo}, '%')
|
||||
</if>
|
||||
<if test="productName != null and productName != ''">
|
||||
AND T.PART_NAME LIKE CONCAT('%', #{productName}, '%')
|
||||
</if>
|
||||
<if test="serialNo != null and serialNo != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM CONTRACT_ITEM CI
|
||||
JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID
|
||||
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||
AND CIS.SERIAL_NO LIKE CONCAT('%', #{serialNo}, '%')
|
||||
AND UPPER(CIS.STATUS) = 'ACTIVE'
|
||||
)
|
||||
</if>
|
||||
<if test="orderStatus != null and orderStatus != ''">
|
||||
AND T.CONTRACT_RESULT = #{orderStatus}
|
||||
</if>
|
||||
<if test="poNo != null and poNo != ''">
|
||||
AND T.PO_NO LIKE CONCAT('%', #{poNo}, '%')
|
||||
</if>
|
||||
<if test="requestDateFrom != null and requestDateFrom != ''">
|
||||
AND T.DUE_DATE <![CDATA[>=]]> #{requestDateFrom}
|
||||
</if>
|
||||
<if test="requestDateTo != null and requestDateTo != ''">
|
||||
AND T.DUE_DATE <![CDATA[<=]]> #{requestDateTo}
|
||||
</if>
|
||||
<if test="orderDateFrom != null and orderDateFrom != ''">
|
||||
AND T.CONTRACT_DATE <![CDATA[>=]]> #{orderDateFrom}
|
||||
</if>
|
||||
<if test="orderDateTo != null and orderDateTo != ''">
|
||||
AND T.CONTRACT_DATE <![CDATA[<=]]> #{orderDateTo}
|
||||
</if>
|
||||
<if test="shippingStatus != null and shippingStatus != ''">
|
||||
/* SALES_STATUS 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="shippingDateFrom != null and shippingDateFrom != ''">
|
||||
/* SHIPPING_DATE 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="shippingDateTo != null and shippingDateTo != ''">
|
||||
/* SHIPPING_DATE 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="shippingMethod != null and shippingMethod != ''">
|
||||
/* SHIPPING_METHOD 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
<if test="manager != null and manager != ''">
|
||||
AND T.PM_USER_ID = #{manager}
|
||||
</if>
|
||||
<if test="incoterms != null and incoterms != ''">
|
||||
/* INCOTERMS 필드 없음 - 검색 조건 무시 */
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 매출관리 합계 조회 (Total 공급가액, 부가세, 총액) -->
|
||||
<select id="getSalesMgmtTotals" parameterType="map" resultType="map">
|
||||
/* salesNcollectMgmt.getSalesMgmtTotals */
|
||||
SELECT
|
||||
COALESCE(SUM(COALESCE(A.order_supply_price, '0')::numeric), 0)::numeric AS TOTAL_SUPPLY_PRICE, /* Total 공급가액 */
|
||||
COALESCE(SUM(COALESCE(A.order_vat, '0')::numeric), 0)::numeric AS TOTAL_VAT, /* Total 부가세 */
|
||||
COALESCE(SUM(COALESCE(A.order_total_amount, '0')::numeric), 0)::numeric AS TOTAL_AMOUNT /* Total 총액 */
|
||||
FROM contract_mgmt A
|
||||
LEFT JOIN supply_mng SUP ON SUP.objid::varchar = A.customer_objid
|
||||
WHERE 1 = 1
|
||||
<if test="orderType != null and orderType != ''">
|
||||
AND A.category_cd = #{orderType}
|
||||
</if>
|
||||
<if test="productType != null and productType != ''">
|
||||
AND A.product = #{productType}
|
||||
</if>
|
||||
<if test="nation != null and nation != ''">
|
||||
AND A.area_cd = #{nation}
|
||||
</if>
|
||||
<if test="customer != null and customer != ''">
|
||||
AND SUP.supply_name LIKE CONCAT('%', #{customer}, '%')
|
||||
</if>
|
||||
<if test="paymentType != null and paymentType != ''">
|
||||
AND A.paid_type = #{paymentType}
|
||||
</if>
|
||||
<if test="productNo != null and productNo != ''">
|
||||
AND A.part_no LIKE CONCAT('%', #{productNo}, '%')
|
||||
</if>
|
||||
<if test="productName != null and productName != ''">
|
||||
AND A.part_name LIKE CONCAT('%', #{productName}, '%')
|
||||
</if>
|
||||
<if test="serialNo != null and serialNo != ''">
|
||||
AND A.serial_no LIKE CONCAT('%', #{serialNo}, '%')
|
||||
</if>
|
||||
<if test="orderStatus != null and orderStatus != ''">
|
||||
AND A.status_cd = #{orderStatus}
|
||||
</if>
|
||||
<if test="poNo != null and poNo != ''">
|
||||
AND A.po_no LIKE CONCAT('%', #{poNo}, '%')
|
||||
</if>
|
||||
<if test="requestDateFrom != null and requestDateFrom != ''">
|
||||
AND A.req_del_date <![CDATA[>=]]> #{requestDateFrom}
|
||||
</if>
|
||||
<if test="requestDateTo != null and requestDateTo != ''">
|
||||
AND A.req_del_date <![CDATA[<=]]> #{requestDateTo}
|
||||
</if>
|
||||
<if test="orderDateFrom != null and orderDateFrom != ''">
|
||||
AND A.order_date <![CDATA[>=]]> #{orderDateFrom}
|
||||
</if>
|
||||
<if test="orderDateTo != null and orderDateTo != ''">
|
||||
AND A.order_date <![CDATA[<=]]> #{orderDateTo}
|
||||
</if>
|
||||
<if test="shippingStatus != null and shippingStatus != ''">
|
||||
/* shippingStatus 필드가 contract_mgmt에 없어서 주석 처리 */
|
||||
</if>
|
||||
<if test="shippingDateFrom != null and shippingDateFrom != ''">
|
||||
/* shippingDate 조인 안됨 */
|
||||
</if>
|
||||
<if test="shippingDateTo != null and shippingDateTo != ''">
|
||||
/* shippingDate 조인 안됨 */
|
||||
</if>
|
||||
<if test="shippingMethod != null and shippingMethod != ''">
|
||||
/* shippingMethod 필드가 contract_mgmt에 없어서 주석 처리 */
|
||||
</if>
|
||||
<if test="manager != null and manager != ''">
|
||||
AND A.pm_user_id = #{manager}
|
||||
</if>
|
||||
<if test="incoterms != null and incoterms != ''">
|
||||
/* incoterms 필드가 contract_mgmt에 없어서 주석 처리 */
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!--
|
||||
/**
|
||||
* 분할출하 - 원본 데이터 조회
|
||||
* @since 2025.10.20
|
||||
* @author system
|
||||
* @version 1.0
|
||||
**/
|
||||
-->
|
||||
<select id="getContractByObjid" parameterType="map" resultType="map">
|
||||
/* salesNcollectMgmt.getContractByObjid */
|
||||
SELECT
|
||||
*
|
||||
FROM contract_mgmt
|
||||
WHERE objid = #{objid}
|
||||
</select>
|
||||
|
||||
<!--
|
||||
/**
|
||||
* 분할출하 로그 저장 (로그 기반 방식)
|
||||
* @since 2025.10.20
|
||||
* @author system
|
||||
* @version 1.0
|
||||
**/
|
||||
-->
|
||||
<insert id="insertSplitShipmentLog" parameterType="map">
|
||||
/* salesNcollectMgmt.insertSplitShipmentLog */
|
||||
INSERT INTO shipment_log (
|
||||
target_objid,
|
||||
log_type,
|
||||
log_message,
|
||||
split_quantity,
|
||||
original_quantity,
|
||||
shipping_status,
|
||||
sales_unit_price,
|
||||
sales_supply_price,
|
||||
sales_vat,
|
||||
sales_total_amount,
|
||||
sales_currency,
|
||||
sales_exchange_rate,
|
||||
serial_no,
|
||||
shipping_date,
|
||||
shipping_method,
|
||||
manager_user_id,
|
||||
incoterms,
|
||||
remark,
|
||||
is_split_record,
|
||||
reg_date,
|
||||
reg_user_id
|
||||
) VALUES (
|
||||
#{objid},
|
||||
#{logType},
|
||||
#{logMessage},
|
||||
#{splitQuantity}::integer,
|
||||
#{originalQuantity}::integer,
|
||||
'PENDING',
|
||||
#{salesUnitPrice}::numeric,
|
||||
#{salesSupplyPrice}::numeric,
|
||||
#{salesVat}::numeric,
|
||||
#{salesTotalAmount}::numeric,
|
||||
#{salesCurrency},
|
||||
#{salesExchangeRate}::numeric,
|
||||
#{serialNo},
|
||||
<choose>
|
||||
<when test="shippingDate != null and shippingDate != ''">
|
||||
TO_DATE(#{shippingDate}, 'YYYY-MM-DD'),
|
||||
</when>
|
||||
<otherwise>
|
||||
NULL,
|
||||
</otherwise>
|
||||
</choose>
|
||||
#{shippingMethod},
|
||||
#{managerUserId},
|
||||
#{incoterms},
|
||||
#{remark},
|
||||
true,
|
||||
NOW(),
|
||||
#{userId}
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!--
|
||||
/**
|
||||
* 판매 등록 저장 (sales_registration 테이블 사용)
|
||||
* INSERT 또는 UPDATE (ON CONFLICT로 중복 방지)
|
||||
* @since 2025.10.22
|
||||
* @author johngreen
|
||||
* @version 1.1
|
||||
**/
|
||||
-->
|
||||
<insert id="insertSaleRegistration" parameterType="map">
|
||||
/* salesNcollectMgmt.insertSaleRegistration - sales_registration에 판매 데이터 저장 */
|
||||
INSERT INTO sales_registration (
|
||||
project_no,
|
||||
shipping_order_status,
|
||||
serial_no,
|
||||
sales_quantity,
|
||||
sales_unit_price,
|
||||
sales_supply_price,
|
||||
sales_vat,
|
||||
sales_total_amount,
|
||||
sales_currency,
|
||||
sales_exchange_rate,
|
||||
shipping_date,
|
||||
shipping_method,
|
||||
manager_user_id,
|
||||
incoterms,
|
||||
reg_user_id
|
||||
) VALUES (
|
||||
#{orderNo},
|
||||
<choose>
|
||||
<when test="shippingOrderStatus != null and shippingOrderStatus != ''">
|
||||
#{shippingOrderStatus},
|
||||
</when>
|
||||
<otherwise>
|
||||
'',
|
||||
</otherwise>
|
||||
</choose>
|
||||
#{serialNo},
|
||||
#{salesQuantity}::integer,
|
||||
#{salesUnitPrice}::numeric,
|
||||
#{salesSupplyPrice}::numeric,
|
||||
#{salesVat}::numeric,
|
||||
#{salesTotalAmount}::numeric,
|
||||
#{salesCurrency},
|
||||
#{salesExchangeRate}::numeric,
|
||||
<choose>
|
||||
<when test="shippingDate != null and shippingDate != ''">
|
||||
TO_DATE(#{shippingDate}, 'YYYY-MM-DD'),
|
||||
</when>
|
||||
<otherwise>
|
||||
NULL,
|
||||
</otherwise>
|
||||
</choose>
|
||||
#{shippingMethod},
|
||||
#{manager},
|
||||
#{incoterms},
|
||||
#{cretEmpNo}
|
||||
)
|
||||
ON CONFLICT (project_no)
|
||||
DO UPDATE SET
|
||||
shipping_order_status = EXCLUDED.shipping_order_status,
|
||||
serial_no = EXCLUDED.serial_no,
|
||||
sales_quantity = EXCLUDED.sales_quantity,
|
||||
sales_unit_price = EXCLUDED.sales_unit_price,
|
||||
sales_supply_price = EXCLUDED.sales_supply_price,
|
||||
sales_vat = EXCLUDED.sales_vat,
|
||||
sales_total_amount = EXCLUDED.sales_total_amount,
|
||||
sales_currency = EXCLUDED.sales_currency,
|
||||
sales_exchange_rate = EXCLUDED.sales_exchange_rate,
|
||||
shipping_date = EXCLUDED.shipping_date,
|
||||
shipping_method = EXCLUDED.shipping_method,
|
||||
manager_user_id = EXCLUDED.manager_user_id,
|
||||
incoterms = EXCLUDED.incoterms,
|
||||
upd_date = NOW(),
|
||||
upd_user_id = EXCLUDED.reg_user_id
|
||||
</insert>
|
||||
|
||||
<!--
|
||||
/**
|
||||
* 판매 정보 조회 - 판매등록 팝업에서 사용
|
||||
* PROJECT_NO 또는 SALE_NO로 조회
|
||||
* @since 2025.10.22
|
||||
* @author johngreen
|
||||
* @version 1.0
|
||||
**/
|
||||
-->
|
||||
<select id="getSaleInfo" parameterType="map" resultType="map">
|
||||
/* salesNcollectMgmt.getSaleInfo - 판매등록 팝업용 프로젝트 정보 조회 (sales_registration 테이블 사용) */
|
||||
SELECT
|
||||
T.PROJECT_NO,
|
||||
CODE_NAME(T.CATEGORY_CD) AS ORDER_TYPE,
|
||||
CODE_NAME(T.PRODUCT) AS PRODUCT_TYPE,
|
||||
CODE_NAME(T.AREA_CD) AS NATION,
|
||||
TO_CHAR(T.REGDATE, 'YYYY-MM-DD') AS RECEIPT_DATE,
|
||||
(SELECT SUPPLY_NAME FROM SUPPLY_MNG WHERE OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER,
|
||||
(SELECT
|
||||
CASE
|
||||
WHEN CM.PAID_TYPE = 'paid' THEN '유상'
|
||||
WHEN CM.PAID_TYPE = 'free' THEN '무상'
|
||||
ELSE CM.PAID_TYPE
|
||||
END
|
||||
FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PAYMENT_TYPE,
|
||||
T.PART_NO AS PRODUCT_NO,
|
||||
T.PART_NAME AS PRODUCT_NAME,
|
||||
-- S/N: 해당 품목의 시리얼 번호 (여러 개일 경우 "S/N 외 N건" 형식)
|
||||
(SELECT
|
||||
CASE
|
||||
WHEN COUNT(*) = 0 THEN ''
|
||||
WHEN COUNT(*) = 1 THEN MIN(CIS.SERIAL_NO)
|
||||
ELSE MIN(CIS.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건'
|
||||
END
|
||||
FROM CONTRACT_ITEM CI
|
||||
LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID AND UPPER(CIS.STATUS) = 'ACTIVE'
|
||||
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||
AND CI.PART_OBJID = T.PART_OBJID
|
||||
AND CI.STATUS = 'ACTIVE'
|
||||
AND CIS.SERIAL_NO IS NOT NULL) AS SERIAL_NO,
|
||||
COALESCE(T.QUANTITY::numeric, 0) AS ORDER_QUANTITY,
|
||||
-- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT, 없으면 CONTRACT_MGMT
|
||||
COALESCE(
|
||||
(SELECT CI.DUE_DATE
|
||||
FROM CONTRACT_ITEM CI
|
||||
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||
AND CI.PART_OBJID = T.PART_OBJID
|
||||
AND CI.STATUS = 'ACTIVE'),
|
||||
T.DUE_DATE,
|
||||
(SELECT CM.due_date FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID)
|
||||
) AS REQUEST_DATE,
|
||||
-- 고객요청사항: CONTRACT_ITEM에서만 가져옴 (견적관리와 완전히 동일)
|
||||
(SELECT CI.CUSTOMER_REQUEST
|
||||
FROM CONTRACT_ITEM CI
|
||||
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||
AND CI.PART_OBJID = T.PART_OBJID
|
||||
AND CI.STATUS = 'ACTIVE') AS CUSTOMER_REQUEST,
|
||||
CODE_NAME(T.CONTRACT_RESULT) AS ORDER_STATUS,
|
||||
T.PO_NO,
|
||||
COALESCE(T.CONTRACT_DATE, (SELECT CM.order_date FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID)) AS ORDER_DATE,
|
||||
CASE WHEN EXISTS(
|
||||
SELECT 1 FROM ATTACH_FILE_INFO
|
||||
WHERE TARGET_OBJID = T.CONTRACT_OBJID
|
||||
AND DOC_TYPE='ORDER_DOC'
|
||||
AND UPPER(STATUS) = 'ACTIVE'
|
||||
) THEN 'Y' ELSE 'N' END AS ORDER_ATTACH,
|
||||
(SELECT CM.PRODUCTION_STATUS FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PRODUCTION_STATUS,
|
||||
-- 판매 관련 필드들 (sales_registration 테이블에서 가져오기)
|
||||
COALESCE(SR.shipping_order_status, '') AS SHIPPING_ORDER_STATUS,
|
||||
COALESCE(SR.sales_quantity, 0) AS SALES_QUANTITY,
|
||||
COALESCE(SR.sales_unit_price, 0) AS SALES_UNIT_PRICE,
|
||||
COALESCE(SR.sales_supply_price, 0) AS SALES_SUPPLY_PRICE,
|
||||
COALESCE(SR.sales_vat, 0) AS SALES_VAT,
|
||||
COALESCE(SR.sales_total_amount, 0) AS SALES_TOTAL_AMOUNT,
|
||||
COALESCE(SR.sales_total_amount, 0) AS SALES_TOTAL_AMOUNT_KRW,
|
||||
COALESCE(NULLIF(SR.sales_currency, ''), CM.CONTRACT_CURRENCY) AS SALES_CURRENCY,
|
||||
CODE_NAME(COALESCE(NULLIF(SR.sales_currency, ''), CM.CONTRACT_CURRENCY)) AS SALES_CURRENCY_NAME,
|
||||
COALESCE(NULLIF(SR.sales_exchange_rate, 0), CM.EXCHANGE_RATE::numeric, 0) AS SALES_EXCHANGE_RATE,
|
||||
COALESCE(TO_CHAR(SR.shipping_date, 'YYYY-MM-DD'), '') AS SHIPPING_DATE,
|
||||
COALESCE(SR.shipping_method, '') AS SHIPPING_METHOD,
|
||||
COALESCE(SR.manager_user_id, T.PM_USER_ID) AS MANAGER,
|
||||
COALESCE(SR.incoterms, '') AS INCOTERMS
|
||||
FROM PROJECT_MGMT AS T
|
||||
LEFT JOIN sales_registration SR ON T.PROJECT_NO = SR.project_no
|
||||
LEFT JOIN CONTRACT_MGMT CM ON CM.OBJID::VARCHAR = T.CONTRACT_OBJID
|
||||
WHERE T.PROJECT_NO = #{orderNo}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
<property name="suffix" value=".jsp"/>
|
||||
<property name="order" value="1"/>
|
||||
</bean>
|
||||
|
||||
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
|
||||
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
|
||||
<property name="messageConverters">
|
||||
|
||||
BIN
WebContent/WEB-INF/lib/INICrypto_v3.1.6_signed.jar
Normal file
BIN
WebContent/WEB-INF/lib/INICrypto_v3.1.6_signed.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/IntegratedCadServer.jar
Normal file
BIN
WebContent/WEB-INF/lib/IntegratedCadServer.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/NETSSSOScriptAgent.jar
Normal file
BIN
WebContent/WEB-INF/lib/NETSSSOScriptAgent.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/aopalliance-1.0.jar
Normal file
BIN
WebContent/WEB-INF/lib/aopalliance-1.0.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/aspectjrt-1.8.4.jar
Normal file
BIN
WebContent/WEB-INF/lib/aspectjrt-1.8.4.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/aspectjweaver-1.8.4.jar
Normal file
BIN
WebContent/WEB-INF/lib/aspectjweaver-1.8.4.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/cglib-3.1.jar
Normal file
BIN
WebContent/WEB-INF/lib/cglib-3.1.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/commons-beanutils-1.9.1.jar
Normal file
BIN
WebContent/WEB-INF/lib/commons-beanutils-1.9.1.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/commons-codec-1.9.jar
Normal file
BIN
WebContent/WEB-INF/lib/commons-codec-1.9.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/commons-collections-3.2.1.jar
Normal file
BIN
WebContent/WEB-INF/lib/commons-collections-3.2.1.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/commons-digester-1.8.1.jar
Normal file
BIN
WebContent/WEB-INF/lib/commons-digester-1.8.1.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/commons-fileupload-1.3.2.jar
Normal file
BIN
WebContent/WEB-INF/lib/commons-fileupload-1.3.2.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/commons-httpclient-3.1.jar
Normal file
BIN
WebContent/WEB-INF/lib/commons-httpclient-3.1.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/commons-io-2.2.jar
Normal file
BIN
WebContent/WEB-INF/lib/commons-io-2.2.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/commons-io-2.5.jar
Normal file
BIN
WebContent/WEB-INF/lib/commons-io-2.5.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/commons-lang3-3.1.jar
Normal file
BIN
WebContent/WEB-INF/lib/commons-lang3-3.1.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/commons-logging-1.1.3.jar
Normal file
BIN
WebContent/WEB-INF/lib/commons-logging-1.1.3.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/commons-net-3.3.jar
Normal file
BIN
WebContent/WEB-INF/lib/commons-net-3.3.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/cos.jar
Normal file
BIN
WebContent/WEB-INF/lib/cos.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/egovframework.rte.ptl.mvc-3.1.0.jar
Normal file
BIN
WebContent/WEB-INF/lib/egovframework.rte.ptl.mvc-3.1.0.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/external-debug.jar
Normal file
BIN
WebContent/WEB-INF/lib/external-debug.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/ezmorph-1.0.6.jar
Normal file
BIN
WebContent/WEB-INF/lib/ezmorph-1.0.6.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/fontbox-2.0.6.jar
Normal file
BIN
WebContent/WEB-INF/lib/fontbox-2.0.6.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/gson-2.3.1.jar
Normal file
BIN
WebContent/WEB-INF/lib/gson-2.3.1.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/httpclient-4.5.13.jar
Normal file
BIN
WebContent/WEB-INF/lib/httpclient-4.5.13.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/httpcore-4.4.13.jar
Normal file
BIN
WebContent/WEB-INF/lib/httpcore-4.4.13.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/jackson-core-asl-1.9.13.jar
Normal file
BIN
WebContent/WEB-INF/lib/jackson-core-asl-1.9.13.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/jackson-mapper-asl-1.9.13.jar
Normal file
BIN
WebContent/WEB-INF/lib/jackson-mapper-asl-1.9.13.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/javax.activation-api-1.2.0.jar
Normal file
BIN
WebContent/WEB-INF/lib/javax.activation-api-1.2.0.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/javax.servlet-api-4.0.1.jar
Normal file
BIN
WebContent/WEB-INF/lib/javax.servlet-api-4.0.1.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/json-lib-2.2.2-jdk15.jar
Normal file
BIN
WebContent/WEB-INF/lib/json-lib-2.2.2-jdk15.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/json-lib-ext-spring-1.0.2.jar
Normal file
BIN
WebContent/WEB-INF/lib/json-lib-ext-spring-1.0.2.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/json-simple-1.1.1.jar
Normal file
BIN
WebContent/WEB-INF/lib/json-simple-1.1.1.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/jsoup-1.14.3-sources.jar
Normal file
BIN
WebContent/WEB-INF/lib/jsoup-1.14.3-sources.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/jsoup-1.14.3.jar
Normal file
BIN
WebContent/WEB-INF/lib/jsoup-1.14.3.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/jstl-1.2.jar
Normal file
BIN
WebContent/WEB-INF/lib/jstl-1.2.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/jxl.jar
Normal file
BIN
WebContent/WEB-INF/lib/jxl.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/log4j-1.2.17.jar
Normal file
BIN
WebContent/WEB-INF/lib/log4j-1.2.17.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/log4jdbc-remix-0.2.7.jar
Normal file
BIN
WebContent/WEB-INF/lib/log4jdbc-remix-0.2.7.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/mail.jar
Normal file
BIN
WebContent/WEB-INF/lib/mail.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/mybatis-3.2.3.jar
Normal file
BIN
WebContent/WEB-INF/lib/mybatis-3.2.3.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/mybatis-spring-1.2.1.jar
Normal file
BIN
WebContent/WEB-INF/lib/mybatis-spring-1.2.1.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/nls-debug.jar
Normal file
BIN
WebContent/WEB-INF/lib/nls-debug.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/ojdbc5.jar
Normal file
BIN
WebContent/WEB-INF/lib/ojdbc5.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/pdfbox-2.0.6.jar
Normal file
BIN
WebContent/WEB-INF/lib/pdfbox-2.0.6.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/poi-3.11.jar
Normal file
BIN
WebContent/WEB-INF/lib/poi-3.11.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/poi-ooxml-3.11.jar
Normal file
BIN
WebContent/WEB-INF/lib/poi-ooxml-3.11.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/poi-ooxml-schemas-3.11.jar
Normal file
BIN
WebContent/WEB-INF/lib/poi-ooxml-schemas-3.11.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/postgresql-42.2.16.jre7.jar
Normal file
BIN
WebContent/WEB-INF/lib/postgresql-42.2.16.jre7.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/scsl.jar
Normal file
BIN
WebContent/WEB-INF/lib/scsl.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/slf4j-api-1.7.7.jar
Normal file
BIN
WebContent/WEB-INF/lib/slf4j-api-1.7.7.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/slf4j-log4j12-1.7.7.jar
Normal file
BIN
WebContent/WEB-INF/lib/slf4j-log4j12-1.7.7.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/spring-aop-3.2.4.RELEASE.jar
Normal file
BIN
WebContent/WEB-INF/lib/spring-aop-3.2.4.RELEASE.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/spring-beans-3.2.4.RELEASE.jar
Normal file
BIN
WebContent/WEB-INF/lib/spring-beans-3.2.4.RELEASE.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/spring-context-3.2.4.RELEASE.jar
Normal file
BIN
WebContent/WEB-INF/lib/spring-context-3.2.4.RELEASE.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/spring-core-3.2.4.RELEASE.jar
Normal file
BIN
WebContent/WEB-INF/lib/spring-core-3.2.4.RELEASE.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/spring-expression-3.2.4.RELEASE.jar
Normal file
BIN
WebContent/WEB-INF/lib/spring-expression-3.2.4.RELEASE.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/spring-jdbc-3.2.4.RELEASE.jar
Normal file
BIN
WebContent/WEB-INF/lib/spring-jdbc-3.2.4.RELEASE.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/spring-oxm-3.2.4.RELEASE.jar
Normal file
BIN
WebContent/WEB-INF/lib/spring-oxm-3.2.4.RELEASE.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/spring-test-3.2.4.RELEASE.jar
Normal file
BIN
WebContent/WEB-INF/lib/spring-test-3.2.4.RELEASE.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/spring-tx-3.2.4.RELEASE.jar
Normal file
BIN
WebContent/WEB-INF/lib/spring-tx-3.2.4.RELEASE.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/spring-web-3.2.4.RELEASE.jar
Normal file
BIN
WebContent/WEB-INF/lib/spring-web-3.2.4.RELEASE.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/spring-webmvc-3.2.4.RELEASE.jar
Normal file
BIN
WebContent/WEB-INF/lib/spring-webmvc-3.2.4.RELEASE.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/spring-ws-core-2.1.4.RELEASE.jar
Normal file
BIN
WebContent/WEB-INF/lib/spring-ws-core-2.1.4.RELEASE.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/spring-xml-2.1.4.RELEASE.jar
Normal file
BIN
WebContent/WEB-INF/lib/spring-xml-2.1.4.RELEASE.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/stax-api-1.0-2.jar
Normal file
BIN
WebContent/WEB-INF/lib/stax-api-1.0-2.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/tibero6-jdbc.jar
Normal file
BIN
WebContent/WEB-INF/lib/tibero6-jdbc.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/tiles-api-3.0.5.jar
Normal file
BIN
WebContent/WEB-INF/lib/tiles-api-3.0.5.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/tiles-autotag-core-runtime-1.1.0.jar
Normal file
BIN
WebContent/WEB-INF/lib/tiles-autotag-core-runtime-1.1.0.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/tiles-core-3.0.5.jar
Normal file
BIN
WebContent/WEB-INF/lib/tiles-core-3.0.5.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/tiles-el-3.0.5.jar
Normal file
BIN
WebContent/WEB-INF/lib/tiles-el-3.0.5.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/tiles-extras-3.0.5.jar
Normal file
BIN
WebContent/WEB-INF/lib/tiles-extras-3.0.5.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/tiles-jsp-3.0.5.jar
Normal file
BIN
WebContent/WEB-INF/lib/tiles-jsp-3.0.5.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/tiles-request-api-1.0.6.jar
Normal file
BIN
WebContent/WEB-INF/lib/tiles-request-api-1.0.6.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/tiles-request-jsp-1.0.6.jar
Normal file
BIN
WebContent/WEB-INF/lib/tiles-request-jsp-1.0.6.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/tiles-request-servlet-1.0.6.jar
Normal file
BIN
WebContent/WEB-INF/lib/tiles-request-servlet-1.0.6.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/tiles-request-servlet-wildcard-1.0.6.jar
Normal file
BIN
WebContent/WEB-INF/lib/tiles-request-servlet-wildcard-1.0.6.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/tiles-servlet-3.0.5.jar
Normal file
BIN
WebContent/WEB-INF/lib/tiles-servlet-3.0.5.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/tiles-template-3.0.5.jar
Normal file
BIN
WebContent/WEB-INF/lib/tiles-template-3.0.5.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/wsdl4j-1.6.1.jar
Normal file
BIN
WebContent/WEB-INF/lib/wsdl4j-1.6.1.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/xercesImpl-2.11.0.jar
Normal file
BIN
WebContent/WEB-INF/lib/xercesImpl-2.11.0.jar
Normal file
Binary file not shown.
BIN
WebContent/WEB-INF/lib/xml-apis-1.4.01.jar
Normal file
BIN
WebContent/WEB-INF/lib/xml-apis-1.4.01.jar
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user