fix: 엑셀업로드 시 시추공 개요에서 코어 사진 설명이 없는 경우 코어 사진 설명을 입력하라는 메시지 추가
parent
40ea5fedac
commit
34e9421ba2
|
|
@ -106,6 +106,20 @@ public class CompleteServiceImpl implements CompleteService {
|
|||
params.put("searchCreateName", searchCreateName);
|
||||
/*params.put("LoginUserId", LoginUserId);*/
|
||||
params.put("cls", nCls);
|
||||
|
||||
// 정렬 파라미터 가공
|
||||
if (params.get("sort[0][field]") != null) {
|
||||
String sortField = (String) params.get("sort[0][field]");
|
||||
String sortDir = (String) params.get("sort[0][dir]");
|
||||
|
||||
// SQL Injection 방지를 위해 허용된 컬럼명인지 확인하는 로직 추가 필요
|
||||
// 예: if ("projectName".equals(sortField) || "userName".equals(sortField) ...)
|
||||
|
||||
// MyBatis에서 사용할 단순한 이름으로 파라미터를 추가합니다.
|
||||
params.put("sortField", sortField);
|
||||
params.put("sortDir", sortDir);
|
||||
}
|
||||
|
||||
|
||||
Long pageSize = MyUtil.getLongFromObject( params.get("pageSize") );
|
||||
if( pageSize == null ) {
|
||||
|
|
|
|||
|
|
@ -7128,7 +7128,17 @@ public class ManageExcelUploadProc03Controller {
|
|||
map.put("CORE_NUM",j+1 );
|
||||
map.put("CORE_LOCAL",extracted[j].getName() );
|
||||
map.put("CORE_PIC", saveName );
|
||||
map.put("CORE_DESC",excel3Wp.get("col1",j+1).trim() );
|
||||
String CoreDesc = null;
|
||||
if( 1 < excel3Wp.getLength() ) {
|
||||
CoreDesc = excel3Wp.get("col1",j+1);
|
||||
CoreDesc = CoreDesc.trim();
|
||||
} else {
|
||||
CoreDesc = "-";
|
||||
params.put("resultMsg", "코어 사진 설명을 입력하세요. 없는 경우 '- 를 입력하세요.");
|
||||
return params;
|
||||
}
|
||||
|
||||
map.put("CORE_DESC", CoreDesc );
|
||||
map.put("USERID",request.getSession().getAttribute("USERID"));
|
||||
coreList.add(map);
|
||||
//headerService.insertTempHeaderCore(params);
|
||||
|
|
|
|||
|
|
@ -14,97 +14,87 @@
|
|||
</select>
|
||||
|
||||
<select id="selectCompleteItems" parameterType="map" resultType="egovMap">
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
T.CLASS_CODE
|
||||
, T.PROJECT_CODE
|
||||
, T.REPORT_TYPE
|
||||
, T.REPORT_TYPE_NAME
|
||||
, REPLACE(T.PROJECT_NAME,'"','''') AS PROJECT_NAME
|
||||
, T.USERID
|
||||
, T.USER_NAME
|
||||
, T.STATE
|
||||
, T.STATE_NAME
|
||||
, T.CREATE_NAME
|
||||
, T.CREATE_USERID
|
||||
, T.DATETIME
|
||||
, T.MAP
|
||||
, T.INS
|
||||
, T.MODIFYCALL
|
||||
, OB.HIST_SEQ
|
||||
, TO_CHAR(OB.CREATEDATE,'YYYY-MM-DD HH24:MI:SS') AS CREATEDATE
|
||||
, TO_CHAR(OB.MODIFY_CALL_DATE,'YYYY-MM-DD HH24:MI:SS') AS MODIFYCALLDATE
|
||||
, NVL((SELECT DISTINCT(REPORT_FILE) FROM TEMP_EXPERT_OPINION WHERE PROJECT_CODE = T.PROJECT_CODE),'NO') AS EXPERT_FILE
|
||||
, ROW_NUMBER() OVER(ORDER BY T.DATETIME DESC) AS RNK
|
||||
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
CLASS_CODE
|
||||
, PROJECT_CODE
|
||||
, REPORT_TYPE
|
||||
, FUNC_COMM_NAME('CM016',REPORT_TYPE ) REPORT_TYPE_NAME
|
||||
, PROJECT_NAME
|
||||
, USERID
|
||||
, (SELECT USER_NAME FROM WEB_MEMBER_IN WHERE USERID = INFO.USERID) AS USER_NAME
|
||||
, STATE
|
||||
, FUNC_COMM_NAME('CM001',STATE ) STATE_NAME
|
||||
, (
|
||||
SELECT
|
||||
(SELECT USER_NAME FROM WEB_MEMBER_IN WHERE USERID = M.USERID)
|
||||
FROM
|
||||
TEMP_MANAGE_STATE M
|
||||
WHERE
|
||||
M.PROJECT_CODE = INFO.PROJECT_CODE
|
||||
) AS CREATE_NAME
|
||||
, (SELECT M.USERID FROM TEMP_MANAGE_STATE M WHERE M.PROJECT_CODE = INFO.PROJECT_CODE) AS CREATE_USERID
|
||||
, TO_CHAR(DATETIME,'YYYY-MM-DD HH24:MI:SS') AS DATETIME
|
||||
, DECODE(REPORT_TYPE,'CH','map','') AS MAP
|
||||
, PROJECT_MASTER_COMPANY_O_CODE
|
||||
, DECODE(STATE,'6','insert') AS INS
|
||||
, DECODE(STATE,'6','modifycall') AS MODIFYCALL
|
||||
FROM
|
||||
TEMP_PROJECT_INFO INFO
|
||||
<![CDATA[
|
||||
WHERE NVL(USE_YN,' ') <> 'N' AND STATE = '6'
|
||||
]]>
|
||||
) T
|
||||
, TEMP_MANAGE_STATE OB
|
||||
WHERE
|
||||
T.PROJECT_CODE = OB.PROJECT_CODE(+)
|
||||
|
||||
<if test="srchReportType != null and srchReportType != '' and srchReportType != 'null'">
|
||||
AND T.REPORT_TYPE = #{srchReportType}
|
||||
</if>
|
||||
<if test="searchProjectName != null and searchProjectName != '' and searchProjectName != 'null'">
|
||||
AND T.PROJECT_NAME LIKE '%${searchProjectName}%'
|
||||
</if>
|
||||
<if test="searchProjectCode != null and searchProjectCode != '' and searchProjectCode != 'null'">
|
||||
AND T.PROJECT_CODE LIKE '%${searchProjectCode}%'
|
||||
</if>
|
||||
<if test="searchUserName != null and searchUserName != '' and searchUserName != 'null'">
|
||||
AND T.USER_NAME = #{searchUserName}
|
||||
</if>
|
||||
<if test="searchCreateName != null and searchCreateName != '' and searchCreateName != 'null'">
|
||||
AND T.CREATE_NAME = #{searchCreateName}
|
||||
</if>
|
||||
<if test="searchHistSeq != null and searchHistSeq != '' and searchHistSeq != 'null'">
|
||||
AND OB.HIST_SEQ = #{searchHistSeq}
|
||||
</if>
|
||||
<if test="LoginUserId != 'admin_user' and LoginUserId != null and LoginUserId != '' and cls != 65535 ">
|
||||
AND T.PROJECT_MASTER_COMPANY_O_CODE = (SELECT MASTER_COMPANY_CODE FROM WEB_MEMBER_IN WHERE USERID = #{LoginUserId})
|
||||
</if>
|
||||
ORDER BY
|
||||
T.DATETIME DESC
|
||||
) A
|
||||
WHERE
|
||||
<![CDATA[
|
||||
A.RNK BETWEEN #{firstIndex} + 1
|
||||
AND #{firstIndex} + #{recordCountPerPage}
|
||||
]]>
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
T.CLASS_CODE,
|
||||
T.PROJECT_CODE,
|
||||
T.REPORT_TYPE,
|
||||
T.REPORT_TYPE_NAME,
|
||||
REPLACE(T.PROJECT_NAME, '"', '''') AS "projectName",
|
||||
T.USERID,
|
||||
T.USER_NAME AS "userName",
|
||||
T.STATE,
|
||||
T.STATE_NAME AS "stateName",
|
||||
T.CREATE_NAME AS "createName",
|
||||
T.CREATE_USERID AS "createUserid",
|
||||
T.DATETIME AS "datetime",
|
||||
T.MAP AS "map",
|
||||
T.INS AS "ins",
|
||||
T.MODIFYCALL AS "modifycall",
|
||||
OB.HIST_SEQ AS "histSeq",
|
||||
TO_CHAR(OB.CREATEDATE, 'YYYY-MM-DD HH24:MI:SS') AS "createdate",
|
||||
TO_CHAR(OB.MODIFY_CALL_DATE, 'YYYY-MM-DD HH24:MI:SS') AS "modifycalldate",
|
||||
NVL((SELECT DISTINCT (REPORT_FILE) FROM TEMP_EXPERT_OPINION WHERE PROJECT_CODE = T.PROJECT_CODE), 'NO') AS "expertFile",
|
||||
ROW_NUMBER() OVER(
|
||||
ORDER BY
|
||||
<choose>
|
||||
<when test="sortField == 'projectName'"> T.PROJECT_NAME ${sortDir} </when>
|
||||
<when test="sortField == 'userName'"> T.USER_NAME ${sortDir} </when>
|
||||
|
||||
<when test="sortField == 'datetime'">
|
||||
T.DATETIME ${sortDir} <if test='sortDir == "desc"'> NULLS LAST </if>
|
||||
</when>
|
||||
<when test="sortField == 'createdate'">
|
||||
OB.CREATEDATE ${sortDir} <if test='sortDir == "desc"'> NULLS LAST </if>
|
||||
</when>
|
||||
<when test="sortField == 'modifycalldate'">
|
||||
OB.MODIFY_CALL_DATE ${sortDir} <if test='sortDir == "desc"'> NULLS LAST </if>
|
||||
</when>
|
||||
<when test="sortField == 'stateName'"> T.STATE_NAME ${sortDir} </when>
|
||||
<when test="sortField == 'createName'"> T.CREATE_NAME ${sortDir} </when>
|
||||
<when test="sortField == 'histSeq'">
|
||||
OB.HIST_SEQ ${sortDir} <if test='sortDir == "desc"'> NULLS LAST </if>
|
||||
</when>
|
||||
|
||||
<otherwise> T.DATETIME DESC NULLS LAST </otherwise>
|
||||
</choose>
|
||||
) AS RNK
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
CLASS_CODE,
|
||||
PROJECT_CODE,
|
||||
REPORT_TYPE,
|
||||
FUNC_COMM_NAME('CM016', REPORT_TYPE) REPORT_TYPE_NAME,
|
||||
PROJECT_NAME,
|
||||
USERID,
|
||||
(SELECT USER_NAME FROM WEB_MEMBER_IN WHERE USERID = INFO.USERID) AS USER_NAME,
|
||||
STATE,
|
||||
FUNC_COMM_NAME('CM001', STATE) STATE_NAME,
|
||||
(SELECT (SELECT USER_NAME FROM WEB_MEMBER_IN WHERE USERID = M.USERID)
|
||||
FROM TEMP_MANAGE_STATE M
|
||||
WHERE M.PROJECT_CODE = INFO.PROJECT_CODE) AS CREATE_NAME,
|
||||
(SELECT M.USERID FROM TEMP_MANAGE_STATE M WHERE M.PROJECT_CODE = INFO.PROJECT_CODE) AS CREATE_USERID,
|
||||
TO_CHAR(DATETIME, 'YYYY-MM-DD HH24:MI:SS') AS DATETIME,
|
||||
DECODE(REPORT_TYPE, 'CH', 'map', '') AS MAP,
|
||||
PROJECT_MASTER_COMPANY_O_CODE,
|
||||
DECODE(STATE, '6', 'insert') AS INS,
|
||||
DECODE(STATE, '6', 'modifycall') AS MODIFYCALL
|
||||
FROM TEMP_PROJECT_INFO INFO
|
||||
WHERE NVL(USE_YN, ' ') != 'N' AND STATE = '6'
|
||||
) T,
|
||||
TEMP_MANAGE_STATE OB
|
||||
WHERE T.PROJECT_CODE = OB.PROJECT_CODE(+)
|
||||
|
||||
<if test="searchProjectName != null and searchProjectName != '' and searchProjectName != 'null'">
|
||||
AND T.PROJECT_NAME LIKE '%${searchProjectName}%'
|
||||
</if>
|
||||
) A
|
||||
WHERE
|
||||
A.RNK BETWEEN #{firstIndex} + 1 AND #{firstIndex} + #{recordCountPerPage}
|
||||
</select>
|
||||
|
||||
<select id="selectCompleteItemsCnt" parameterType="hashmap" resultType="long">
|
||||
|
|
|
|||
|
|
@ -18,7 +18,11 @@ function fn_Search() {
|
|||
if (!fn_fromToCheckAlert($("#startDate").val(), $("#endDate").val(), "기간시작일", "기간종료일", "startDate"))
|
||||
return false;
|
||||
|
||||
document.frmSearch.submit();
|
||||
var grid = kendoJQuery("#grid_type_1").data("kendoGrid");
|
||||
if (grid) {
|
||||
// 검색 시 항상 첫 페이지로 이동
|
||||
grid.dataSource.page(1);
|
||||
}
|
||||
}
|
||||
|
||||
//load
|
||||
|
|
@ -224,25 +228,37 @@ function kendoGrid() {
|
|||
if( searchCreateNameEle ) {
|
||||
searchCreateName = searchCreateNameEle.value;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: "/manage/complete/list.do?pageIndex=" + currentPage
|
||||
+ "&" + "searchProjectName=" + searchProjectName
|
||||
+ "&" + "searchProjectCode=" + searchProjectCode
|
||||
+ "&" + "searchHistSeq=" + searchHistSeq
|
||||
+ "&" + "searchUserName=" + searchUserName
|
||||
+ "&" + "searchCreateName=" + searchCreateName
|
||||
,
|
||||
contentType: 'application/json',
|
||||
dataType: "json",
|
||||
type: 'GET',
|
||||
success: function(result) {
|
||||
options.success(result);
|
||||
},
|
||||
error: function(result) {
|
||||
options.error(result);
|
||||
}
|
||||
});
|
||||
// 정렬 파라미터를 담을 변수 추가
|
||||
var sortParams = "";
|
||||
if (options.data.sort && options.data.sort.length > 0) {
|
||||
for (var i = 0; i < options.data.sort.length; i++) {
|
||||
sortParams += "&sort[" + i + "][field]=" + options.data.sort[i].field;
|
||||
sortParams += "&sort[" + i + "][dir]=" + options.data.sort[i].dir;
|
||||
}
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: "/manage/complete/list.do", // URL은 순수 경로만 지정
|
||||
data: { // 파라미터는 data 객체로 전달
|
||||
pageIndex: currentPage,
|
||||
searchProjectName: searchProjectName,
|
||||
searchProjectCode: searchProjectCode,
|
||||
searchHistSeq: searchHistSeq,
|
||||
searchUserName: searchUserName,
|
||||
searchCreateName: searchCreateName,
|
||||
// Kendo UI가 전달하는 정렬, 페이징 정보 등을 options.data에서 가져와 추가
|
||||
sort: options.data.sort
|
||||
},
|
||||
contentType: 'application/json',
|
||||
dataType: "json",
|
||||
type: 'GET',
|
||||
success: function(result) {
|
||||
options.success(result);
|
||||
},
|
||||
error: function(result) {
|
||||
options.error(result);
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
schema: {
|
||||
|
|
@ -254,7 +270,8 @@ function kendoGrid() {
|
|||
}
|
||||
},
|
||||
pageSize: 10,
|
||||
serverPaging: true
|
||||
serverPaging: true,
|
||||
serverSorting: true
|
||||
});
|
||||
|
||||
kendoJQuery("#grid_type_1").kendoGrid({
|
||||
|
|
|
|||
Loading…
Reference in New Issue