메시지 메타 insert bm02 쿼리 수정 및 controller, service 수정

This commit is contained in:
dogyeom
2025-11-10 17:42:25 +09:00
parent acbf3a40d3
commit c4d5392ed8
3 changed files with 10 additions and 268 deletions
@@ -1,8 +1,6 @@
package com.eactive.eai.rms.bap.manage.message.messageMeta;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
@@ -122,88 +120,5 @@ public class BapMessageMetaController extends BapBaseAnnotationController {
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";
}
}
}
@@ -1,9 +1,5 @@
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.List;
import java.util.Map;
@@ -13,8 +9,6 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
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")
public class BapMessageMetaService extends BapBaseService {
@@ -23,17 +17,13 @@ public class BapMessageMetaService extends BapBaseService {
@Qualifier("bapMessageMetaDao")
private BapMessageMetaDao dao;
@Autowired
@Qualifier("bapPropertyDao")
private BapPropertyDao propDao;
public HashMap<String, Object> selectList(int startNum,int endNum, HashMap<String, Object> paramMap) throws Exception {
// 전체 목록수 얻기
// 전체 목록 수 얻기
int totalCount = dao.selectListCount(paramMap);
paramMap.put("startNum" , startNum);// 시작 record
paramMap.put("endNum" , endNum);// record
paramMap.put("startNum" , startNum);// record
paramMap.put("endNum" , endNum);// record
List<Map<String, Object>> list = dao.selectList(paramMap);
HashMap<String, Object> map = new HashMap<String, Object>();
@@ -44,11 +34,6 @@ public class BapMessageMetaService extends BapBaseService {
return map;
}
public int selectTotalCount(HashMap<String, Object> paramMap) throws Exception {
return dao.selectListCount(paramMap); // 전체 목록수 얻기
}
public HashMap<String, Object> selectDetail(String msgMetaDstcd) throws Exception {
HashMap<String, Object> detail = dao.selectDetail(msgMetaDstcd);
@@ -94,162 +79,4 @@ public class BapMessageMetaService extends BapBaseService {
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();
}
}
}
@@ -78,8 +78,8 @@
ThisMsgRegsntID,
ThisMsgRegiHMS,
ThisMsgAmndrID,
ThisMsgAmndHMS )
<!-- MsgMetaDstcd ) -->
ThisMsgAmndHMS,
MSGMETADSTCD )
VALUES (
#msgMetaDstcd# ,
#msgClmnSeq# ,
@@ -88,10 +88,10 @@
#userid# ,
TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISSFF3'),
#userid# ,
TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISSFF3')
<!-- #msgMetaDstcd# -->
TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISSFF3'),
#msgMetaDstcd#
)
</statement>
</sqlMap>