feat: 발주기관 프로젝트 목록 가져오기 query 안정화

main
thkim 2025-11-11 11:46:36 +09:00
parent 82a20351cb
commit d4117d5d09
6 changed files with 53 additions and 33 deletions

View File

@ -4,6 +4,8 @@ import java.sql.SQLException;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import org.apache.ibatis.annotations.Param;
import egovframework.rte.psl.dataaccess.mapper.Mapper; import egovframework.rte.psl.dataaccess.mapper.Mapper;
import egovframework.rte.psl.dataaccess.util.EgovMap; import egovframework.rte.psl.dataaccess.util.EgovMap;
@ -11,7 +13,7 @@ import egovframework.rte.psl.dataaccess.util.EgovMap;
public interface DrillingHomeMapper { public interface DrillingHomeMapper {
List<EgovMap> drillingMapSearchHole(String comCode); List<EgovMap> drillingMapSearchHole(String comCode);
List<EgovMap> drillingMapSearchHoleWithMbr(HashMap<String, Object> params); List<EgovMap> drillingMapSearchHoleWithMbr(HashMap<String, Object> params);
String projectCodesByProjectMasterCompanyCodeAsComma(HashMap<String, Object> params); public List<String> projectCodesByProjectMasterCompanyCodeAsList(@Param("comCodeList") List<String> comCodeList);
} }

View File

@ -10,5 +10,5 @@ public interface DrillingHomeService {
public List<EgovMap> drillingMapSearchHole(String projectCode); public List<EgovMap> drillingMapSearchHole(String projectCode);
public List<EgovMap> drillingMapSearchHoleWithMbr(HashMap<String, Object> params); public List<EgovMap> drillingMapSearchHoleWithMbr(HashMap<String, Object> params);
public String projectCodesByProjectMasterCompanyCodeAsComma(HashMap<String, Object> params); public String projectCodesByProjectMasterCompanyCodeAsList(HashMap<String, Object> params) throws Exception;
} }

View File

@ -11,6 +11,7 @@ import geoinfo.util.MyUtil;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -44,8 +45,32 @@ public class DrillingHomeServiceImpl implements DrillingHomeService {
} }
@Override @Override
public String projectCodesByProjectMasterCompanyCodeAsComma(HashMap<String, Object> params) { public String projectCodesByProjectMasterCompanyCodeAsList(HashMap<String, Object> params) throws Exception {
return drillingHomeMapper.projectCodesByProjectMasterCompanyCodeAsComma(params); if( params.get("COM_CODE") == null ) {
throw new Exception("comCode 값은 필수입니다.");
}
String comCode = MyUtil.getStringFromObject( params.get("COM_CODE") );
List<String> comCodeList = new ArrayList<String>();
comCodeList.add(comCode);
// 1. Mapper에서 List<String>으로 결과를 받습니다.
List<String> projectCodes = drillingHomeMapper.projectCodesByProjectMasterCompanyCodeAsList(comCodeList);
if (projectCodes == null || projectCodes.isEmpty()) {
return null;
}
// 2. StringBuilder를 사용해 쉼표(,)로 문자열을 조합합니다.
StringBuilder sb = new StringBuilder();
for (int i = 0; i < projectCodes.size(); i++) {
sb.append(projectCodes.get(i));
if (i < projectCodes.size() - 1) {
sb.append(",");
}
}
// 3. 조합된 문자열을 반환합니다.
return sb.toString();
} }

View File

@ -334,7 +334,7 @@ public class MapLeftController {
HashMap<String, Object> paramsMasterCompanyCode = new HashMap<String, Object>(); HashMap<String, Object> paramsMasterCompanyCode = new HashMap<String, Object>();
paramsMasterCompanyCode.put("COM_CODE", masterCompanyCode); paramsMasterCompanyCode.put("COM_CODE", masterCompanyCode);
masterCompanyProjectCodes = drillingHomeService.projectCodesByProjectMasterCompanyCodeAsComma(paramsMasterCompanyCode); masterCompanyProjectCodes = drillingHomeService.projectCodesByProjectMasterCompanyCodeAsList(paramsMasterCompanyCode);
params.put("masterCompanyCode", masterCompanyCode); params.put("masterCompanyCode", masterCompanyCode);
params.put("masterCompanyProjectCodes", masterCompanyProjectCodes); params.put("masterCompanyProjectCodes", masterCompanyProjectCodes);

View File

@ -67,29 +67,25 @@
]]> ]]>
</select> </select>
<select id="projectCodesByProjectMasterCompanyCodeAsComma" parameterType="String" resultType="String"> <select id="projectCodesByProjectMasterCompanyCodeAsList" resultType="String">
<![CDATA[ SELECT
SELECT '''' || tpi.PROJECT_CODE || '''' AS PROJECT_CODE
LISTAGG(PROJECT_CODE, ',') WITHIN GROUP (ORDER BY PROJECT_CODE) AS PROJECT_CODE FROM
FROM ( TBL_PROJECT_INFO tpi
SELECT WHERE
'''' || tpi.PROJECT_CODE || '''' AS PROJECT_CODE tpi.PROJECT_MASTER_COMPANY_CODE IN
FROM (
TBL_PROJECT_INFO tpi SELECT
WHERE tmc.COM_CODE
tpi.PROJECT_MASTER_COMPANY_CODE IN FROM
( TBL_MASTER_COMPANY tmc
SELECT WHERE
tmc.COM_CODE tmc.COM_CODE IN
FROM <foreach collection="param1" item="code" open="(" separator="," close=")">
TBL_MASTER_COMPANY tmc #{code}
WHERE </foreach>
tmc.COM_CODE IN ( )
TRIM(#{COM_CODE}) ORDER BY tpi.PROJECT_CODE
)
)
)
]]>
</select> </select>

File diff suppressed because one or more lines are too long