From 6b2108e93c9610511c1908b56aa33849279b2141 Mon Sep 17 00:00:00 2001 From: hjjeong Date: Thu, 15 Jan 2026 14:19:17 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=EA=B3=A0=EA=B0=9Dcs=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EC=A0=91=EC=88=98=EC=9E=90,=20=EC=A1=B0=EC=B9=98=EC=9E=90=20?= =?UTF-8?q?=EC=A7=81=EC=A0=91=20=EC=84=A0=ED=83=9D,=20=EC=88=98=EB=9F=89?= =?UTF-8?q?=20=ED=95=84=EC=88=98=EA=B0=92=20=EC=A0=9C=EA=B1=B0=20=EB=93=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quality/customerCsActionFormPopUp.jsp | 13 +++++++++---- .../quality/customerCsDefectFormPopUp.jsp | 19 ++++++++++++------- .../WEB-INF/view/quality/customerCsList.jsp | 2 +- src/com/pms/controller/QualityController.java | 6 +++++- src/com/pms/mapper/quality.xml | 9 ++++++++- src/com/pms/service/QualityService.java | 11 +++++++---- 6 files changed, 42 insertions(+), 18 deletions(-) diff --git a/WebContent/WEB-INF/view/quality/customerCsActionFormPopUp.jsp b/WebContent/WEB-INF/view/quality/customerCsActionFormPopUp.jsp index 8293bbb..8fedda8 100644 --- a/WebContent/WEB-INF/view/quality/customerCsActionFormPopUp.jsp +++ b/WebContent/WEB-INF/view/quality/customerCsActionFormPopUp.jsp @@ -22,8 +22,8 @@ String actionDate = CommonUtils.checkNull(info.get("action_date")); if(actionDate.isEmpty()) actionDate = today; // 조치자 -String actionUserName = CommonUtils.checkNull(info.get("action_user_name")); -if(actionUserName.isEmpty()) actionUserName = connectUserName; +String actionUserId = CommonUtils.checkNull(info.get("action_user_id")); +if(actionUserId.isEmpty()) actionUserId = connectUserId; %> @@ -56,8 +56,10 @@ $(document).ready(function(){ // 기존 값 선택 var savedBlameDecision = "${info.blame_decision}"; var savedStatus = "${info.status}"; + var savedActionUserId = "<%=actionUserId%>"; if(savedBlameDecision) $("#BLAME_DECISION").val(savedBlameDecision).trigger('change'); if(savedStatus) $("#STATUS").val(savedStatus).trigger('change'); + if(savedActionUserId) $("#ACTION_USER_ID").val(savedActionUserId).trigger('change'); // 뷰 모드일 경우 입력 필드 비활성화 if(isViewMode){ @@ -336,7 +338,7 @@ function fn_save(){ ${info.receipt_date} - ${info.writer_name} + ${info.receipt_user_name} @@ -432,7 +434,10 @@ function fn_save(){ - + diff --git a/WebContent/WEB-INF/view/quality/customerCsDefectFormPopUp.jsp b/WebContent/WEB-INF/view/quality/customerCsDefectFormPopUp.jsp index 4c42664..9ca42cf 100644 --- a/WebContent/WEB-INF/view/quality/customerCsDefectFormPopUp.jsp +++ b/WebContent/WEB-INF/view/quality/customerCsDefectFormPopUp.jsp @@ -22,8 +22,8 @@ if(objId.isEmpty()){ } // 접수자/작성자 -String writerName = CommonUtils.checkNull(info.get("writer_name")); -if(writerName.isEmpty()) writerName = connectUserName; +String receiptUserId = CommonUtils.checkNull(info.get("receipt_user_id")); +if(receiptUserId.isEmpty()) receiptUserId = connectUserId; %> @@ -43,8 +43,10 @@ $(document).ready(function(){ // 수정 모드인 경우 기존 값 선택 var savedBlameDecision = "${info.blame_decision}"; var savedStatus = "${info.status}"; + var savedWriter = "<%=receiptUserId%>"; if(savedBlameDecision) $("#BLAME_DECISION").val(savedBlameDecision).trigger('change'); if(savedStatus) $("#STATUS").val(savedStatus).trigger('change'); + if(savedWriter) $("#RECEIPT_USER_ID").val(savedWriter).trigger('change'); // 저장 @@ -147,9 +149,12 @@ function fn_save(){ - + - + @@ -162,9 +167,9 @@ function fn_save(){ - + - + @@ -224,7 +229,7 @@ function fn_save(){ - + diff --git a/WebContent/WEB-INF/view/quality/customerCsList.jsp b/WebContent/WEB-INF/view/quality/customerCsList.jsp index 2662b1b..dfa769c 100644 --- a/WebContent/WEB-INF/view/quality/customerCsList.jsp +++ b/WebContent/WEB-INF/view/quality/customerCsList.jsp @@ -103,7 +103,7 @@ var columns = [ {headerHozAlign:'center', hozAlign:'right', minWidth:70, widthGrow:1, title:'수량', field:'QTY', formatter:"money", formatterParams:{thousand:",", precision:false} }, - {headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'접수자', field:'WRITER_NAME'}, + {headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'접수자', field:'RECEIPT_USER_NAME'}, //{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'모델명', field:'MODEL_NAME'}, //{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'부품품명', field:'PART_NAME'}, diff --git a/src/com/pms/controller/QualityController.java b/src/com/pms/controller/QualityController.java index 2a7c9a5..67afadb 100644 --- a/src/com/pms/controller/QualityController.java +++ b/src/com/pms/controller/QualityController.java @@ -798,7 +798,9 @@ public class QualityController { // 고객사 code_map.put("customer_cd", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)info.get("customer_objid")), "common.getClientMngSupplySelect")); // 제품구분 - code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)info.get("product_type")), "common.getCodeselect")); + code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)info.get("product_type")), "common.getCodeselect")); + // 접수자 (사용자 목록) + code_map.put("user_cd", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)info.get("receipt_user_id")), "common.getUserselect")); } catch(Exception e) { e.printStackTrace(); } @@ -828,6 +830,8 @@ public class QualityController { info = service.getCustomerCsInfo(paramMap); // 조치구분 code_map.put("action_type", commonService.bizMakeOptionList("0001835", CommonUtils.nullToEmpty((String)info.get("action_type")), "common.getCodeselect")); + // 조치자 (사용자 목록) + code_map.put("user_cd", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)info.get("action_user_id")), "common.getUserselect")); } catch(Exception e) { e.printStackTrace(); } diff --git a/src/com/pms/mapper/quality.xml b/src/com/pms/mapper/quality.xml index 7010232..ed91339 100644 --- a/src/com/pms/mapper/quality.xml +++ b/src/com/pms/mapper/quality.xml @@ -1938,13 +1938,15 @@ , CODE_NAME(CCS.ACTION_TYPE) AS ACTION_TYPE_NAME , CCS.ACTION_CONTENT , CCS.BLAME_DECISION - , CASE CCS.BLAME_DECISION WHEN 'R' THEN 'RPS' WHEN 'C' THEN '고객사' WHEN 'O' THEN '외주업체' ELSE CCS.BLAME_DECISION END AS BLAME_DECISION_NAME + , CASE CCS.BLAME_DECISION WHEN 'R' THEN 'RPS' WHEN 'C' THEN '고객사' WHEN 'O' THEN '외주업체' WHEN 'E' THEN '단순문의' ELSE CCS.BLAME_DECISION END AS BLAME_DECISION_NAME , CCS.STATUS , CCS.REMARK , CCS.ACTION_DATE , CCS.ACTION_USER_ID , CCS.WRITER , USER_NAME(CCS.WRITER) as WRITER_NAME + , CCS.RECEIPT_USER_ID + , (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CCS.RECEIPT_USER_ID) AS RECEIPT_USER_NAME , (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CCS.ACTION_USER_ID) AS ACTION_USER_NAME , (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = CCS.OBJID AND AFI.DOC_TYPE = 'CUSTOMER_CS_IMAGE' AND STATUS = 'Active') AS IMAGE_FILE , (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = CCS.OBJID AND AFI.DOC_TYPE = 'CUSTOMER_CS_ACTION' AND STATUS = 'Active') AS ATTACH_FILE @@ -2033,6 +2035,8 @@ , CCS.ATTACH_FILE_OBJID , CCS.WRITER , USER_NAME(CCS.WRITER) AS WRITER_NAME + , CCS.RECEIPT_USER_ID + , (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CCS.RECEIPT_USER_ID) AS RECEIPT_USER_NAME , TO_CHAR(CCS.REG_DATE, 'YYYY-MM-DD') AS REG_DATE FROM CUSTOMER_CS CCS WHERE CCS.OBJID = #{OBJID} @@ -2069,6 +2073,7 @@ , STATUS , REMARK , WRITER + , RECEIPT_USER_ID , REG_DATE ) VALUES ( #{OBJID} @@ -2090,6 +2095,7 @@ , #{STATUS} , #{REMARK} , #{WRITER} + , #{RECEIPT_USER_ID} , NOW() ) @@ -2110,6 +2116,7 @@ , SERIAL_NO = #{SERIAL_NO} , MANUFACTURER = #{MANUFACTURER} , COMPLAINT_CONTENT = #{COMPLAINT_CONTENT} + , RECEIPT_USER_ID = #{RECEIPT_USER_ID} , MOD_DATE = NOW() WHERE OBJID = #{OBJID} diff --git a/src/com/pms/service/QualityService.java b/src/com/pms/service/QualityService.java index 0c7dd6d..8d5ff31 100644 --- a/src/com/pms/service/QualityService.java +++ b/src/com/pms/service/QualityService.java @@ -1585,10 +1585,13 @@ public class QualityService extends BaseService{ try{ sqlSession = SqlMapConfig.getInstance().getSqlSession(); - PersonBean person = (PersonBean) request.getSession().getAttribute(Constants.PERSON_BEAN); - String actionUserId = person != null ? person.getUserId() : ""; - - paramMap.put("ACTION_USER_ID", actionUserId); + // 조치자가 선택되지 않은 경우에만 접속자 ID 사용 + String actionUserId = CommonUtils.checkNull(paramMap.get("ACTION_USER_ID")); + if(actionUserId.isEmpty()){ + PersonBean person = (PersonBean) request.getSession().getAttribute(Constants.PERSON_BEAN); + actionUserId = person != null ? person.getUserId() : ""; + paramMap.put("ACTION_USER_ID", actionUserId); + } sqlSession.update("quality.updateCustomerCsAction", paramMap); From f4d7d343d9331ae817862e404a550e67d2927eb8 Mon Sep 17 00:00:00 2001 From: hjjeong Date: Thu, 15 Jan 2026 14:28:29 +0900 Subject: [PATCH 2/3] =?UTF-8?q?ECR=20=EC=A1=B0=EC=B9=98=EB=8B=B4=EB=8B=B9?= =?UTF-8?q?=EC=9E=90=20=EC=BB=AC=EB=9F=BC=20=EC=A0=9C=EA=B1=B0,=20?= =?UTF-8?q?=EC=BB=AC=EB=9F=BC=20=EC=88=9C=EC=84=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebContent/WEB-INF/view/quality/ecrList.jsp | 24 +++++++++---------- .../view/quality/ecrRegistFormPopUp.jsp | 4 ++-- .../view/quality/ecrResultFormPopUp.jsp | 6 ++--- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/WebContent/WEB-INF/view/quality/ecrList.jsp b/WebContent/WEB-INF/view/quality/ecrList.jsp index c5c918c..345ae06 100644 --- a/WebContent/WEB-INF/view/quality/ecrList.jsp +++ b/WebContent/WEB-INF/view/quality/ecrList.jsp @@ -77,21 +77,28 @@ $(document).ready(function(){ // 컬럼: ECR No, 요청일, 요청자, 품번, 품명, 이슈사항, 완료요청일, 조치부서, 조치담당자, 조치자, 조치내용, 완료일, 이미지파일, 첨부파일, 설계변경요청서 var columns = [ - {headerHozAlign:'center', hozAlign:'center', minWidth:130, widthGrow:1, title:'ECR No', field:'ECR_NO', + {headerHozAlign:'center', hozAlign:'center', minWidth:110, widthGrow:1, title:'ECR No', field:'ECR_NO', formatter:fnc_createGridAnchorTag, cellClick: function(e, cell){ var objId = fnc_checkNull(cell.getData().OBJID); fn_viewEcrPopUp(objId); } }, - {headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1, title:'요청일', field:'REQUEST_DATE'}, + {headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'요청일', field:'REQUEST_DATE'}, {headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'요청자', field:'REQUESTER_NAME'}, {headerHozAlign:'center', hozAlign:'left', minWidth:120, widthGrow:2, title:'품번', field:'PART_NO'}, {headerHozAlign:'center', hozAlign:'left', minWidth:150, widthGrow:2, title:'품명', field:'PART_NAME'}, {headerHozAlign:'center', hozAlign:'left', minWidth:150, widthGrow:2, title:'이슈사항', field:'ISSUE_CONTENT'}, {headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1, title:'완료요청일', field:'DUE_DATE'}, + {headerHozAlign:'center', hozAlign:'center', minWidth:120, widthGrow:1, title:'설계변경요청서', field:'ECR_DOC_CNT', + formatter:fnc_subInfoValueFormatter, + cellClick:function(e, cell){ + var objid = fnc_checkNull(cell.getData().OBJID); + fn_openEcrDocPopUp(objid); + } + }, {headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'조치부서', field:'ACTION_DEPT_NAME'}, - {headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1, title:'조치담당자', field:'ACTION_MANAGER_NAME'}, + //{headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1, title:'조치담당자', field:'ACTION_MANAGER_NAME'}, {headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'조치자', field:'ACTION_USER_NAME'}, {headerHozAlign:'center', hozAlign:'left', minWidth:150, widthGrow:2, title:'조치내용', field:'ACTION_CONTENT'}, {headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1, title:'완료일', field:'COMPLETE_DATE'}, @@ -108,13 +115,6 @@ var columns = [ var objid = fnc_checkNull(cell.getData().OBJID); fn_FileRegist(objid,"ECR_RESULT","ECR결과첨부"); } - }, - {headerHozAlign:'center', hozAlign:'center', minWidth:110, widthGrow:1, title:'설계변경요청서', field:'ECR_DOC_CNT', - formatter:fnc_subInfoValueFormatter, - cellClick:function(e, cell){ - var objid = fnc_checkNull(cell.getData().OBJID); - fn_openEcrDocPopUp(objid); - } } ]; @@ -340,13 +340,13 @@ function fn_approval(){ - + - + diff --git a/WebContent/WEB-INF/view/quality/ecrResultFormPopUp.jsp b/WebContent/WEB-INF/view/quality/ecrResultFormPopUp.jsp index b5d610d..68c9c0e 100644 --- a/WebContent/WEB-INF/view/quality/ecrResultFormPopUp.jsp +++ b/WebContent/WEB-INF/view/quality/ecrResultFormPopUp.jsp @@ -346,9 +346,9 @@ function fn_save(){ - ${info.action_dept_name} - - ${info.action_manager_name} + ${info.action_dept_name} + From 1371733a378cc0d60fbef52862b1630600d4ebd1 Mon Sep 17 00:00:00 2001 From: hjjeong Date: Thu, 15 Jan 2026 14:40:26 +0900 Subject: [PATCH 3/3] =?UTF-8?q?mbom=20=EC=84=A0=ED=83=9D=20=ED=95=98?= =?UTF-8?q?=EC=9D=B4=EB=9D=BC=EC=9D=B4=ED=8A=B8=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/productionplanning/mBomPopupLeft.jsp | 44 ++++++++++++++++--- .../quality/customerCsActionFormPopUp.jsp | 2 +- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/WebContent/WEB-INF/view/productionplanning/mBomPopupLeft.jsp b/WebContent/WEB-INF/view/productionplanning/mBomPopupLeft.jsp index e59e32c..d6a05df 100644 --- a/WebContent/WEB-INF/view/productionplanning/mBomPopupLeft.jsp +++ b/WebContent/WEB-INF/view/productionplanning/mBomPopupLeft.jsp @@ -47,6 +47,12 @@ body { background-color: #fff9c4 !important; } +/* 선택된 행 하이라이트 스타일 */ +.tabulator-row.row-selected { + background-color: #b8daff !important; + border: 1px solid #007bff !important; +} + /* Select2 in Tabulator 스타일 */ .tabulator-cell .select2-container { width: 100% !important; @@ -72,6 +78,7 @@ body {