관리자가 검수등록대기 목록의 프로젝트를 수정요청 할 시 항목화 된 수정요청 대상을 체크하여 저장 할 수 있다.
저장시 입력 메세지가 프로젝트 등록자에게 문자메세지가 전송된다. 관리자가 체크한 수정요청 대상은 비트마스크 연산 되어 입력 메세지와 수정요청 상태 테이블에 저장된다.main
parent
7e193e4b04
commit
5cf28edb71
|
|
@ -275,18 +275,22 @@ public class ManageListController {
|
|||
|
||||
strUtil sUtil = new strUtil();
|
||||
String widthSize = sUtil.checkNull((String)params.get("width"));
|
||||
String heightSize = "395";
|
||||
String heightSize = "665";
|
||||
String PROJECT_CODE = sUtil.checkNull((String)params.get("PROJECT_CODE"));
|
||||
String PROC = sUtil.checkNull((String)params.get("PROC"));
|
||||
|
||||
ArrayList<?> MODI_ITEM_LIST = new ArrayList<>(); // "수정요청 대상" 체크 할 항목 조회
|
||||
|
||||
String MODEIFY_CALL_REASON = "";
|
||||
if ("view".equals(PROC)) {
|
||||
EgovMap result = masterService.getModeifyCallReason(params);
|
||||
if (result != null) {
|
||||
MODEIFY_CALL_REASON = (sUtil.checkNull(result.get("modeifyCallReason").toString())).replaceAll("\n","<br>");
|
||||
}
|
||||
} else {
|
||||
MODI_ITEM_LIST = masterService.selectModifyItem(params);
|
||||
}
|
||||
resultList.put("modeifyCallReason", MODEIFY_CALL_REASON);
|
||||
resultList.put("modiItemList", MODI_ITEM_LIST);
|
||||
resultList.put("heightSize", heightSize);
|
||||
resultList.put("widthSize", widthSize);
|
||||
resultList.put("projectCode", PROJECT_CODE);
|
||||
|
|
|
|||
|
|
@ -24,5 +24,9 @@ public interface ManageListMapper {
|
|||
public EgovMap updateModeifyTbl(HashMap<String,Object> params) throws Exception;
|
||||
|
||||
public EgovMap updateModeifyUser(HashMap<String,Object> params) throws Exception;
|
||||
|
||||
public ArrayList<?> selectModifyItem(HashMap<String,Object> params) throws Exception;
|
||||
|
||||
public ArrayList<?> selectModifyItemBitmask(HashMap<String,Object> params) throws Exception;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,4 +23,8 @@ public interface ManageListService {
|
|||
public EgovMap updateModeifyTbl(HashMap<String,Object> params) throws Exception;
|
||||
|
||||
public EgovMap updateModeifyUser(HashMap<String,Object> params) throws Exception;
|
||||
|
||||
public ArrayList<?> selectModifyItem(HashMap<String,Object> params) throws Exception;
|
||||
|
||||
public ArrayList<?> selectModifyItemBitmask(HashMap<String,Object> params) throws Exception;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,4 +57,14 @@ public class ManageListServiceImpl implements ManageListService {
|
|||
return manageListMapper.updateModeifyUser(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ArrayList<?> selectModifyItem(HashMap<String, Object> params) throws Exception {
|
||||
return manageListMapper.selectModifyItem(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ArrayList<?> selectModifyItemBitmask(HashMap<String, Object> params) throws Exception {
|
||||
return manageListMapper.selectModifyItemBitmask(params);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -374,6 +374,7 @@ public class RegiController {
|
|||
String PROJECT_CODE = files[k].toString();// 확인필요..데이터이름이 제대로 들어오는가?????
|
||||
String PROC = sUtil.checkNull(String.valueOf(params.get("PROC")));
|
||||
String MODEIFY_CALL_REASON = sUtil.checkNull(String.valueOf(params.get("MODEIFY_CALL_REASON")));
|
||||
String MODIFY_ITEM = sUtil.checkNull(String.valueOf(params.get("MODIFY_ITEM")));
|
||||
params.put("PROJECT_CODE", PROJECT_CODE);
|
||||
params.put("USERID", request.getSession().getAttribute("USERID"));//userid는 param 값 가져오는 지 확인.
|
||||
try {
|
||||
|
|
@ -553,7 +554,7 @@ public class RegiController {
|
|||
// TEMP_MANAGE_STATE INSERT
|
||||
params.put("STATE", "5");// 수정요청으로 변경
|
||||
params.put("MODEIFY_CALL_REASON", MODEIFY_CALL_REASON);// 수정요청으로
|
||||
// 변경
|
||||
params.put("MODIFY_ITEM", MODIFY_ITEM); // 변경
|
||||
affectRow += masterService.mergeStateInsertModeify(params);
|
||||
|
||||
// -------------------------------------------------------
|
||||
|
|
@ -608,6 +609,7 @@ public class RegiController {
|
|||
String PROJECT_CODE = sUtil.checkNull(String.valueOf(params.get("PROJECT_CODE")));
|
||||
String PROC = sUtil.checkNull(String.valueOf(params.get("PROC")));
|
||||
String MODEIFY_CALL_REASON = sUtil.checkNull(String.valueOf(params.get("MODEIFY_CALL_REASON")));
|
||||
String MODIFY_ITEM = sUtil.checkNull(String.valueOf(params.get("MODIFY_ITEM")));
|
||||
params.put("PROJECT_CODE", PROJECT_CODE);
|
||||
params.put("USERID", request.getSession().getAttribute("USERID"));
|
||||
try {
|
||||
|
|
@ -768,7 +770,8 @@ public class RegiController {
|
|||
// TEMP_MANAGE_STATE INSERT
|
||||
params.put("STATE", "5");// 수정요청으로 변경
|
||||
params.put("MODEIFY_CALL_REASON", MODEIFY_CALL_REASON);// 수정요청으로
|
||||
// 변경
|
||||
params.put("MODIFY_ITEM", MODIFY_ITEM); // 변경
|
||||
|
||||
affectRow += masterService.mergeStateInsertModeify(params);
|
||||
|
||||
// -------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -395,4 +395,16 @@
|
|||
]]>
|
||||
</select>
|
||||
|
||||
<!-- 수정요청사유 팝업 > 수정요청대상에 표시 할 항목 조회 -->
|
||||
<select id="selectModifyItem" parameterType="map" resultType="java.util.HashMap">
|
||||
SELECT GRP.GRP_IDX
|
||||
,IT.IT_IDX
|
||||
,GRP.NAME AS GRP_NAME
|
||||
,IT.NAME AS ITEM_NAME
|
||||
FROM TEMP_MANAGE_STATE_MODI_IT IT
|
||||
LEFT JOIN TEMP_MANAGE_STATE_MODI_GRP GRP ON GRP.GRP_IDX = IT.GRP_IDX
|
||||
WHERE IT.USE_YN = 'Y'
|
||||
ORDER BY GRP."ORDER", IT."ORDER"
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
@ -314,8 +314,8 @@
|
|||
|
||||
<insert id="insertHistSeq" parameterType="map">
|
||||
<![CDATA[
|
||||
INSERT INTO TEMP_MANAGE_HIST (PROJECT_CODE, HIST_SEQ, MODEIFY_CALL_REASON, MODIFY_USERID, MODIFY_CALL_DATE, MODIFY_FIN_DATE, CREATEDATE )
|
||||
SELECT SA.PROJECT_CODE, NVL(SA.HIST_SEQ, 1), SA.MODEIFY_CALL_REASON, SB.USERID, SA.MODIFY_CALL_DATE, SYSDATE, CREATEDATE
|
||||
INSERT INTO TEMP_MANAGE_HIST (PROJECT_CODE, HIST_SEQ, MODEIFY_CALL_REASON, MODIFY_USERID, MODIFY_CALL_DATE, MODIFY_FIN_DATE, CREATEDATE, MODIFY_ITEM )
|
||||
SELECT SA.PROJECT_CODE, NVL(SA.HIST_SEQ, 1), SA.MODEIFY_CALL_REASON, SB.USERID, SA.MODIFY_CALL_DATE, SYSDATE, CREATEDATE, MODIFY_ITEM
|
||||
FROM TEMP_MANAGE_STATE SA
|
||||
, WEB_DATAINPUT SB
|
||||
WHERE SA.PROJECT_CODE = #{PROJECT_CODE}
|
||||
|
|
@ -366,6 +366,7 @@
|
|||
WHEN MATCHED THEN
|
||||
UPDATE SET STATE = #{STATE}
|
||||
, MODEIFY_CALL_REASON = #{MODEIFY_CALL_REASON}
|
||||
, MODIFY_ITEM = #{MODIFY_ITEM}
|
||||
, USERID = #{USERID}
|
||||
, DATETIME = SYSDATE
|
||||
, COMPLETEDATE = ''
|
||||
|
|
@ -377,6 +378,7 @@
|
|||
PROJECT_CODE
|
||||
, STATE
|
||||
, MODEIFY_CALL_REASON
|
||||
, MODIFY_ITEM
|
||||
, USERID
|
||||
, DATETIME
|
||||
, MODIFY_CALL_DATE
|
||||
|
|
@ -384,6 +386,7 @@
|
|||
#{PROJECT_CODE}
|
||||
, #{STATE}
|
||||
, #{MODEIFY_CALL_REASON}
|
||||
, #{MODIFY_ITEM}
|
||||
, #{USERID}
|
||||
, SYSDATE
|
||||
, 1
|
||||
|
|
@ -413,8 +416,8 @@
|
|||
|
||||
<insert id="insertRecode" parameterType="map">
|
||||
<![CDATA[
|
||||
INSERT INTO TEMP_MANAGE_HIST (PROJECT_CODE, HIST_SEQ, MODEIFY_CALL_REASON, MODIFY_USERID, MODIFY_CALL_DATE, MODIFY_FIN_DATE, CREATEDATE, MODIFY_DESC )
|
||||
SELECT SA.PROJECT_CODE, NVL(SA.HIST_SEQ, 1), SA.MODEIFY_CALL_REASON, '${USERID}', SA.MODIFY_CALL_DATE, SYSDATE, CREATEDATE, '검수자가 입력자의 동의를 받아 직접 등록'
|
||||
INSERT INTO TEMP_MANAGE_HIST (PROJECT_CODE, HIST_SEQ, MODEIFY_CALL_REASON, MODIFY_USERID, MODIFY_CALL_DATE, MODIFY_FIN_DATE, CREATEDATE, MODIFY_DESC, MODIFY_ITEM )
|
||||
SELECT SA.PROJECT_CODE, NVL(SA.HIST_SEQ, 1), SA.MODEIFY_CALL_REASON, '${USERID}', SA.MODIFY_CALL_DATE, SYSDATE, CREATEDATE, '검수자가 입력자의 동의를 받아 직접 등록', MODIFY_ITEM
|
||||
FROM TEMP_MANAGE_STATE SA
|
||||
, WEB_DATAINPUT SB
|
||||
WHERE SA.PROJECT_CODE = #{PROJECT_CODE}
|
||||
|
|
@ -548,6 +551,7 @@ MERGE INTO TEMP_MANAGE_STATE
|
|||
WHEN MATCHED THEN
|
||||
UPDATE SET STATE = #{STATE}
|
||||
, MODEIFY_CALL_REASON = #{MODEIFY_CALL_REASON}
|
||||
, MODIFY_ITEM = #{MODIFY_ITEM}
|
||||
, USERID = #{USERID}
|
||||
, DATETIME = SYSDATE
|
||||
, COMPLETEDATE = ''
|
||||
|
|
@ -559,6 +563,7 @@ MERGE INTO TEMP_MANAGE_STATE
|
|||
PROJECT_CODE
|
||||
, STATE
|
||||
, MODEIFY_CALL_REASON
|
||||
, MODIFY_ITEM
|
||||
, USERID
|
||||
, DATETIME
|
||||
, HIST_SEQ
|
||||
|
|
@ -567,6 +572,7 @@ MERGE INTO TEMP_MANAGE_STATE
|
|||
#{PROJECT_CODE}
|
||||
, #{STATE}
|
||||
, #{MODEIFY_CALL_REASON}
|
||||
, #{MODIFY_ITEM}
|
||||
, #{USERID}
|
||||
, SYSDATE
|
||||
, 1
|
||||
|
|
|
|||
|
|
@ -245,7 +245,7 @@ function modifycallBtnClick(project_code, checkuserid) {
|
|||
var url = "/modeifyCallReason.do";
|
||||
var param = "PROJECT_CODE="+project_code;
|
||||
|
||||
fn_openPopup(url, param, '480', '275');
|
||||
fn_openPopup(url, param, '480', '775');
|
||||
}else{
|
||||
alert("해당 검수자가 아닙니다.");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,8 +11,46 @@
|
|||
<link rel="stylesheet" type="text/css" href="/web/css/popup.css"/>
|
||||
<script type="text/javascript" src="/web/js/tree/lib/jquery.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
<style>
|
||||
/* 1depth UL 전체 */
|
||||
.pop_contents > ul {
|
||||
list-style: none;
|
||||
padding-left: 0;
|
||||
margin: 0;
|
||||
visibility: visible !important;
|
||||
}
|
||||
|
||||
/* 1depth LI (제목) */
|
||||
.pop_contents > ul > li {
|
||||
margin-bottom: 12px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* 2depth UL — 라디오 리스트 가로 정렬 */
|
||||
.pop_contents ul ul {
|
||||
list-style: none;
|
||||
margin: 6px 0 0 0;
|
||||
padding-left: 0;
|
||||
|
||||
display: flex; /* 가로 정렬 핵심 */
|
||||
flex-wrap: wrap; /* 라디오 많으면 자동 줄바꿈 */
|
||||
gap: 20px; /* 라디오 간 간격 */
|
||||
}
|
||||
|
||||
.pop_contents ul ul input[type="checkbox"] {
|
||||
vertical-align: middle;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
/* 2depth 항목 */
|
||||
.pop_contents ul ul li {
|
||||
font-weight: normal;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
let addNum = 0;
|
||||
//html이 ready 된 상태에서 내용 적용.
|
||||
$(document).ready(function() {
|
||||
resize();
|
||||
|
|
@ -51,7 +89,8 @@ function fn_smsOpenPop() {
|
|||
|
||||
// SMS전송결과 CALLBACK
|
||||
function fn_smsGetResult(returnValue) {
|
||||
|
||||
addNum = 0;
|
||||
addNumModifyItemValue(); // 선택된 체크박스의 value값을 모두 더한다.(비트마스크 연산시 필요)
|
||||
var result = returnValue
|
||||
|
||||
|
||||
|
|
@ -73,6 +112,20 @@ function fn_smsGetResult(returnValue) {
|
|||
|
||||
//window.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* 수정요청 항목(비트마스크연산) 저장을 위한 처리
|
||||
* 0은 선택하지 않은것임
|
||||
*/
|
||||
function addNumModifyItemValue(){
|
||||
var ele = $('input[name="MODIFY_ITEM_VAL"]:checked')
|
||||
$.each(ele, function(index, item) {
|
||||
<%-- console.log("this addNum : " + addNum + ", this val : " + parseInt($(item).val()))--%>
|
||||
addNum = addNum + parseInt($(item).val())
|
||||
<%-- console.log("=============================")--%>
|
||||
});
|
||||
$('#MODIFY_ITEM').val(addNum);
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
|
@ -82,6 +135,7 @@ function fn_smsGetResult(returnValue) {
|
|||
<form name="frmModifyCall" id="frmModifyCall" method="post">
|
||||
<input type="hidden" id="PROC" name="PROC" value="MODIFY_POP" />
|
||||
<input type="hidden" id="REPORT_TYPE" name="REPORT_TYPE" value="" />
|
||||
<input type="hidden" id="MODIFY_ITEM" name="MODIFY_ITEM" value="" />
|
||||
<input type="hidden" id="PROJECT_CODE" name="PROJECT_CODE" value="${resultList.projectCode}" />
|
||||
<div id="pop_wrap">
|
||||
<div class="popup_area" style="background-color:#f9f9f9; border:1px solid #cfcfd1;">
|
||||
|
|
@ -91,15 +145,92 @@ function fn_smsGetResult(returnValue) {
|
|||
|
||||
<c:choose>
|
||||
<c:when test="${resultList.proc eq 'view'}">
|
||||
<div class="pop_contents" style="position:relative;word-wrap:break-word;min-height:200px;">${resultList.modeifyCallReason}</div>
|
||||
<div class="pop_contents" style="position:relative;word-wrap:break-word;min-height:147px;">${resultList.modeifyCallReason}</div>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<div class="pop_contents"><textarea name="MODEIFY_CALL_REASON" id="MODEIFY_CALL_REASON" rows="10" style="width:96%;"></textarea></div>
|
||||
<div style="text-align:center;margin-bottom:10px;"><a href="#" onClick="fn_submit();"><img src="/web/images/btn_save.png" alt="저장" /></a></div>
|
||||
<div class="pop_contents"><textarea name="MODEIFY_CALL_REASON" id="MODEIFY_CALL_REASON" rows="5" style="width:96%;"></textarea></div>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</div>
|
||||
|
||||
<div class="popup_area" style="background-color:#f9f9f9; border:1px solid #cfcfd1;">
|
||||
<div class="pop_title" style="border-bottom:1px solid #dddddd;">수정요청 대상</div>
|
||||
<div class="pop_contents">
|
||||
<c:set var="prevGrp" value="" />
|
||||
<ul>
|
||||
<c:forEach var="item" items="${resultList.modiItemList}" varStatus="st">
|
||||
<!-- 새로운 그룹이 시작되는 경우 -->
|
||||
<c:if test="${prevGrp ne item.GRP_IDX}">
|
||||
<!-- 첫 그룹이 아니라면 이전 그룹의 ul/li 닫기 -->
|
||||
<c:if test="${!st.first}">
|
||||
</ul>
|
||||
</li>
|
||||
</c:if>
|
||||
<!-- 그룹 제목 표시 -->
|
||||
<li data-grp="${item.GRP_IDX }">
|
||||
${item.GRP_NAME}
|
||||
<ul>
|
||||
</c:if>
|
||||
<!-- 아이템 출력 -->
|
||||
<li>
|
||||
<label>
|
||||
<input type="checkbox" name="MODIFY_ITEM_VAL" value="${item.IT_IDX}" />
|
||||
${item.ITEM_NAME}
|
||||
</label>
|
||||
</li>
|
||||
<!-- prevGrp 최신화 -->
|
||||
<c:set var="prevGrp" value="${item.GRP_IDX}" />
|
||||
<!-- 마지막 루프일 경우 태그 닫기 -->
|
||||
<c:if test="${st.last}">
|
||||
</ul>
|
||||
</li>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
<%-- <li>시험 데이터 미입력/그래프 누락
|
||||
<ul>
|
||||
<li><label><input type="checkbox" name="sCls" />입도시험</label></li>
|
||||
<li><label><input type="checkbox" name="sCls" />일축압축시험</label></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>프로젝트 기본 정보 미기재
|
||||
<ul>
|
||||
<li><label><input type="checkbox" name="sCls" />목적</label></li>
|
||||
<li><label><input type="checkbox" name="sCls" />공사상황</label></li>
|
||||
<li><label><input type="checkbox" name="sCls" />코어사진</label></li>
|
||||
<li><label><input type="checkbox" name="sCls" />하향식탄성파</label></li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
<li>파일 누락·단위 오류 등
|
||||
<ul>
|
||||
<li><label><input type="checkbox" name="sCls" />단위 확인</label></li>
|
||||
<li><label><input type="checkbox" name="sCls" />위치 오류</label></li>
|
||||
<li><label><input type="checkbox" name="sCls" />파일 누락</label></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>첨부 파일 요청
|
||||
<ul>
|
||||
<li><label><input type="checkbox" name="sCls" />보고서 재첨부</label></li>
|
||||
<li><label><input type="checkbox" name="sCls" />시험정보 추가 요청</label></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>정밀 품질 보정 요청
|
||||
<ul>
|
||||
<li><label><input type="checkbox" name="sCls" />그래프 오류</label></li>
|
||||
<li><label><input type="checkbox" name="sCls" />지층정보 오류</label></li>
|
||||
<li><label><input type="checkbox" name="sCls" />사진 누락</label></li>
|
||||
</ul>
|
||||
</li> --%>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<c:choose>
|
||||
<c:when test="${resultList.proc ne 'view'}">
|
||||
<div style="text-align:center;margin-bottom:10px;"><a href="#" onClick="fn_submit();"><img src="/web/images/btn_save.png" alt="저장" /></a></div>
|
||||
</c:when>
|
||||
</c:choose>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
Loading…
Reference in New Issue