From ef4f617f6619e5f13efd683ec3528d2fb77c1c36 Mon Sep 17 00:00:00 2001 From: hjjeong Date: Wed, 7 Jan 2026 18:23:27 +0900 Subject: [PATCH] =?UTF-8?q?=ED=92=88=EC=A7=88=EA=B4=80=EB=A6=AC=5F260107?= =?UTF-8?q?=5FCS=EC=97=85=EB=AC=B4=ED=94=8C=EB=A1=9C=EC=9A=B0(=EC=B5=9C?= =?UTF-8?q?=EC=8B=A0)=EC=88=98=EC=A0=95=EC=82=AC=ED=95=AD2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quality/customerCsActionFormPopUp.jsp | 13 +++++--- .../quality/customerCsDefectFormPopUp.jsp | 25 +++++++++++--- .../WEB-INF/view/quality/customerCsList.jsp | 33 +++++++++++-------- src/com/pms/controller/QualityController.java | 2 +- src/com/pms/mapper/quality.xml | 13 ++++++-- src/com/pms/service/QualityService.java | 7 ++-- 6 files changed, 65 insertions(+), 28 deletions(-) diff --git a/WebContent/WEB-INF/view/quality/customerCsActionFormPopUp.jsp b/WebContent/WEB-INF/view/quality/customerCsActionFormPopUp.jsp index 245c4cf..7d64567 100644 --- a/WebContent/WEB-INF/view/quality/customerCsActionFormPopUp.jsp +++ b/WebContent/WEB-INF/view/quality/customerCsActionFormPopUp.jsp @@ -335,12 +335,16 @@ function fn_save(){ ${info.receipt_no} --> ${info.receipt_date} + + ${info.writer_name} + + + + ${info.customer_name} + + ${info.qty} - - - - ${info.customer_name} ${info.product_type_name} @@ -409,6 +413,7 @@ function fn_save(){ + diff --git a/WebContent/WEB-INF/view/quality/customerCsDefectFormPopUp.jsp b/WebContent/WEB-INF/view/quality/customerCsDefectFormPopUp.jsp index c5fa326..a3bc35a 100644 --- a/WebContent/WEB-INF/view/quality/customerCsDefectFormPopUp.jsp +++ b/WebContent/WEB-INF/view/quality/customerCsDefectFormPopUp.jsp @@ -9,12 +9,21 @@ String menuObjId = request.getParameter("menuObjId"); String menuName = CommonUtils.getMenuName(menuObjId, "고객 이슈 등록"); String actionType = CommonUtils.checkNull(request.getParameter("actionType")); + +// info Map 가져오기 +Map info = (Map) request.getAttribute("info"); +if(info == null) info = new HashMap(); + // OBJID가 없으면 신규 생성 (첨부파일 연결용) -String objId = CommonUtils.checkNull(request.getAttribute("info") != null ? ((Map)request.getAttribute("info")).get("objid") : ""); +String objId = CommonUtils.checkNull(info.get("objid")); boolean isNew = objId.isEmpty() || "new".equals(actionType); if(objId.isEmpty()){ objId = String.valueOf(CommonUtils.createObjId()); } + +// 접수자/작성자 +String writerName = CommonUtils.checkNull(info.get("writer_name")); +if(writerName.isEmpty()) writerName = connectUserName; %> @@ -138,18 +147,24 @@ function fn_save(){ - + - + - + - + + + + + + + diff --git a/WebContent/WEB-INF/view/quality/customerCsList.jsp b/WebContent/WEB-INF/view/quality/customerCsList.jsp index ef52353..ec3775b 100644 --- a/WebContent/WEB-INF/view/quality/customerCsList.jsp +++ b/WebContent/WEB-INF/view/quality/customerCsList.jsp @@ -89,24 +89,30 @@ var columns = [ } }, {headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1, title:'접수일', field:'RECEIPT_DATE'}, + {headerHozAlign:'center', hozAlign:'left', minWidth:120, widthGrow:2, title:'조치구분', field:'ACTION_TYPE_NAME'}, + {headerHozAlign:'center', hozAlign:'left', minWidth:150, widthGrow:1, title:'고객사', field:'CUSTOMER_NAME'}, + {headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'제품구분', field:'PRODUCT_TYPE_NAME'}, + {headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'품명', field:'PRODUCT_NAME'}, + {headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'품번', field:'PRODUCT_NO'}, + {headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1, title:'S/N', field:'SERIAL_NO'}, {headerHozAlign:'center', hozAlign:'right', minWidth:70, widthGrow:1, title:'수량', field:'QTY', formatter:"money", formatterParams:{thousand:",", precision:false} }, - {headerHozAlign:'center', hozAlign:'left', minWidth:150, widthGrow:1, title:'고객사', field:'CUSTOMER_NAME'}, - {headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'제품구분', field:'PRODUCT_TYPE_NAME'}, + {headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'접수자', field:'WRITER_NAME'}, //{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'모델명', field:'MODEL_NAME'}, - {headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'품명', field:'PRODUCT_NAME'}, - {headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'품번', field:'PRODUCT_NO'}, - {headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'부품품명', field:'PART_NAME'}, - {headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'부품품번', field:'PART_NO'}, - {headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'생산일', field:'PRODUCTION_DATE'}, - {headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'판매일', field:'SALES_DATE'}, - {headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1, title:'S/N', field:'SERIAL_NO'}, + + //{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'부품품명', field:'PART_NAME'}, + //{headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'부품품번', field:'PART_NO'}, + //{headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'생산일', field:'PRODUCTION_DATE'}, + //{headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'판매일', field:'SALES_DATE'}, + {headerHozAlign:'center', hozAlign:'left', minWidth:80, widthGrow:1, title:'제조사', field:'MANUFACTURER'}, {headerHozAlign:'center', hozAlign:'left', minWidth:120, widthGrow:2, title:'이슈내용', field:'COMPLAINT_CONTENT'}, - {headerHozAlign:'center', hozAlign:'left', minWidth:120, widthGrow:2, title:'조치구분', field:'ACTION_TYPE_NAME'}, + {headerHozAlign:'center', hozAlign:'left', minWidth:120, widthGrow:2, title:'조치내용', field:'ACTION_CONTENT'}, + {headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'조치일', field:'ACTION_DATE'}, + {headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'조치자', field:'ACTION_USER_NAME'}, {headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'귀책판정', field:'BLAME_DECISION_NAME'}, {headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'상태(C/O)', field:'STATUS', formatter: function(cell, formatterParams, onRendered){ @@ -118,8 +124,8 @@ var columns = [ } }, {headerHozAlign:'center', hozAlign:'left', minWidth:100, widthGrow:1, title:'비고', field:'REMARK'}, - {headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'조치일', field:'ACTION_DATE'}, - {headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'조치자', field:'ACTION_USER_NAME'}, + + {headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'이미지파일', field:'IMAGE_FILE', formatter:fnc_subInfoValueFormatter, cellClick:function(e, cell){ @@ -165,7 +171,7 @@ function fn_registDefectPopUp(){ var selected = _tabulGrid.getSelectedData(); var popup_width = 800; - var popup_height = 450; + var popup_height = 480; var hiddenForm = document.hiddenForm; var target = "customerCsDefectPopUp"; var url = "/quality/customerCsDefectFormPopUp.do"; @@ -301,6 +307,7 @@ function fn_FileRegist(objId, docType, docTypeName){ + diff --git a/src/com/pms/controller/QualityController.java b/src/com/pms/controller/QualityController.java index 3d07d0c..ab9efce 100644 --- a/src/com/pms/controller/QualityController.java +++ b/src/com/pms/controller/QualityController.java @@ -792,7 +792,7 @@ 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")); } catch(Exception e) { e.printStackTrace(); } diff --git a/src/com/pms/mapper/quality.xml b/src/com/pms/mapper/quality.xml index e290c55..abf423f 100644 --- a/src/com/pms/mapper/quality.xml +++ b/src/com/pms/mapper/quality.xml @@ -1907,6 +1907,8 @@ , CCS.REMARK , CCS.ACTION_DATE , CCS.ACTION_USER_ID + , CCS.WRITER + , USER_NAME(CCS.WRITER) as WRITER_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 @@ -1994,14 +1996,19 @@ , (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = CCS.ACTION_USER_ID) AS ACTION_USER_NAME , CCS.ATTACH_FILE_OBJID , CCS.WRITER + , USER_NAME(CCS.WRITER) AS WRITER_NAME , TO_CHAR(CCS.REG_DATE, 'YYYY-MM-DD') AS REG_DATE FROM CUSTOMER_CS CCS WHERE CCS.OBJID = #{OBJID} - - + SELECT COALESCE(MAX( + CAST(SPLIT_PART(RECEIPT_NO, '-', 3) AS INTEGER) + ), 0) + 1 + FROM CUSTOMER_CS + WHERE RECEIPT_NO LIKE 'CS-' || #{TARGET_DATE} || '-%' diff --git a/src/com/pms/service/QualityService.java b/src/com/pms/service/QualityService.java index 823a7df..000c524 100644 --- a/src/com/pms/service/QualityService.java +++ b/src/com/pms/service/QualityService.java @@ -1547,9 +1547,12 @@ public class QualityService extends BaseService{ paramMap.put("OBJID", objId); } - // 접수번호 생성 (CS-YYYYMMDD-SEQ) + // 접수번호 생성 (CS-YYYYMMDD-날짜별순번) String today = new java.text.SimpleDateFormat("yyyyMMdd").format(new java.util.Date()); - String receiptNo = "CS-" + today + "-" + String.format("%03d", sqlSession.selectOne("quality.getCustomerCsSeq")); + Map seqParam = new HashMap(); + seqParam.put("TARGET_DATE", today); + int dailySeq = (int) sqlSession.selectOne("quality.getCustomerCsSeqByDate", seqParam); + String receiptNo = "CS-" + today + "-" + String.format("%03d", dailySeq); paramMap.put("RECEIPT_NO", receiptNo); sqlSession.insert("quality.insertCustomerCs", paramMap);