From 5794895dcb1928a273a44c3580c0e6913ec2fde0 Mon Sep 17 00:00:00 2001 From: hjjeong Date: Tue, 21 Oct 2025 16:23:07 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20PART=20=EA=B4=80=EB=A6=AC=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B0=9C=EC=84=A0=20=EB=B0=8F=20Excel=20=EC=97=85?= =?UTF-8?q?=EB=A1=9C=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - PART 관리 목록에 열처리경도, 열처리방법, 표면처리, 공급업체 필드 추가 - Excel 업로드 시 공급업체 및 범주 이름 검증 로직 추가 (띄어쓰기 무시) - partMng.xml: SUPPLY_CODE 중복 제거 및 쿼리 최적화 - PartMngController: sup_code 코드맵 활성화 - common.js: jqGrid 호환성 개선 (getRows 에러 수정) - header.jsp, menu.jsp: 메뉴 UI 개선 - CSS: 로고 및 메뉴 스타일 조정 --- WebContent/WEB-INF/view/main/header.jsp | 8 +- WebContent/WEB-INF/view/main/menu.jsp | 6 +- .../view/partMng/openPartExcelImportPopUp.jsp | 64 +- .../view/partMng/partMngDetailPopUp.jsp | 108 ++- .../WEB-INF/view/partMng/partMngFormPopUp.jsp | 306 +------- .../view/partMng/partMngFormPopUp_back.jsp | 708 ++++++++++++++++++ .../WEB-INF/view/partMng/partMngList.jsp | 71 +- .../WEB-INF/view/partMng/partMngTempList.jsp | 62 +- WebContent/css/basic.css | 2 +- WebContent/js/common.js | 7 +- src/com/pms/controller/PartMngController.java | 11 +- src/com/pms/mapper/partMng.xml | 91 ++- src/com/pms/service/PartMngService.java | 37 +- 13 files changed, 1047 insertions(+), 434 deletions(-) create mode 100644 WebContent/WEB-INF/view/partMng/partMngFormPopUp_back.jsp diff --git a/WebContent/WEB-INF/view/main/header.jsp b/WebContent/WEB-INF/view/main/header.jsp index 22706c1..5774962 100644 --- a/WebContent/WEB-INF/view/main/header.jsp +++ b/WebContent/WEB-INF/view/main/header.jsp @@ -100,7 +100,7 @@ $(function(){ // 클릭된 메뉴를 on 스타일로 변경 $(this).css({ - 'background-color': '#5e9cff', + 'background-color': '#1e40af', 'color': '#fff' }).removeClass('menu_off').addClass('menu_on'); @@ -214,7 +214,7 @@ function fn_goFirstMenu(){ // 첫 번째 메뉴를 on 스타일로 변경 $(".menu").eq(0).css({ - 'background-color': '#5e9cff', + 'background-color': '#1e40af', 'color': '#fff' }).removeClass('menu_off').addClass('menu_on'); @@ -392,7 +392,7 @@ function fn_setApprovalCnt(){ if("2".equals(lev)){ %> - <%=menuKorName%> + <%=menuKorName%> <% } } @@ -418,7 +418,7 @@ function fn_setApprovalCnt(){ <% if("plm_admin".equals(userId)){%> - Admin + Admin <%}%> <%-- diff --git a/WebContent/WEB-INF/view/main/menu.jsp b/WebContent/WEB-INF/view/main/menu.jsp index 62e9dbb..45c60f2 100644 --- a/WebContent/WEB-INF/view/main/menu.jsp +++ b/WebContent/WEB-INF/view/main/menu.jsp @@ -90,12 +90,12 @@ #menu-lock-btn:hover { background-color: #e8e8e8; - border-color: #1159bc; + border-color: #1e40af; } #menu-lock-btn.locked { - background-color: #1159bc; - border-color: #1159bc; + background-color: #1e40af; + border-color: #1e40af; } #menu-lock-btn svg { diff --git a/WebContent/WEB-INF/view/partMng/openPartExcelImportPopUp.jsp b/WebContent/WEB-INF/view/partMng/openPartExcelImportPopUp.jsp index b70dc50..358e148 100644 --- a/WebContent/WEB-INF/view/partMng/openPartExcelImportPopUp.jsp +++ b/WebContent/WEB-INF/view/partMng/openPartExcelImportPopUp.jsp @@ -36,7 +36,7 @@ $(document).ready(function(){ //var unit_cd = $.parseJSON($("#unit_cd").val()); //jqGrid 구분 var part_type = $.parseJSON($("#part_type").val()); //jqGrid 구분 - //var sup_code = $.parseJSON($("#sup_code").val()); //jqGrid 구분 + var sup_code = $.parseJSON($("#sup_code").val()); //jqGrid 구분 //Excel File Upload된 파일 목록 부분을 초기화 한다. $("#excelImportList").hide(); @@ -48,7 +48,7 @@ $(document).ready(function(){ url: "" ,datatype: "local" ,colNames: ["결과", - "품번","품명","수량","재질","사양(규격)","후처리","MAKER","PART구분","REMARK"] //PART구분(부품 유형) + "품번","품명","재료","열처리경도","열처리방법","표면처리","공급업체","범주 이름","비고"] //PART구분(부품 유형) ,colModel: [ /* */ {name:"NOTE",index:"NOTE", width: 200, align:"left", hidden: false, sortable:false, editable:true @@ -68,41 +68,73 @@ $(document).ready(function(){ } } } - ,{name:"QTY",index:"QTY", width: 30, align:"center", hidden: false, sortable:false, editable:true + // ,{name:"QTY",index:"QTY", width: 30, align:"center", hidden: false, sortable:false, editable:true + // ,editoptions:{ + // dataInit : function(e){ + // e.style.fontSize = 13; + // } + // } + // } + ,{name:"MATERIAL",index:"MATERIAL", width: 130, align:"center", hidden: false, sortable:false, editable:true ,editoptions:{ dataInit : function(e){ e.style.fontSize = 13; } } } - ,{name:"MATERIAL",index:"MATERIAL", width: 150, align:"center", hidden: false, sortable:false, editable:true - ,editoptions:{ - dataInit : function(e){ - e.style.fontSize = 13; - } - } - } - ,{name:"SPEC",index:"SPEC", width: 150, align:"center", hidden: false, sortable:false, editable:true + ,{name:"HEAT_TREATMENT_HARDNESS",index:"HEAT_TREATMENT_HARDNESS", width: 130, align:"center", hidden: false, sortable:false, editable:true ,editoptions:{ dataInit : function(e){ e.style.fontSize = 13; } } } - ,{name:"POST_PROCESSING",index:"POST_PROCESSING", width: 100, align:"center", hidden: false, sortable:false, editable:true + ,{name:"HEAT_TREATMENT_METHOD",index:"HEAT_TREATMENT_METHOD", width: 130, align:"center", hidden: false, sortable:false, editable:true ,editoptions:{ dataInit : function(e){ e.style.fontSize = 13; } } - } - ,{name:"MAKER",index:"MAKER", width: 150, align:"center", hidden: false, sortable:false, editable:true + } + ,{name:"SURFACE_TREATMENT",index:"SURFACE_TREATMENT", width: 130, align:"center", hidden: false, sortable:false, editable:true ,editoptions:{ dataInit : function(e){ e.style.fontSize = 13; } } - } + } + ,{name:"SUP_CODE" ,index:"SUP_CODE" , width:100, align:"center", hidden:false, sortable:false, editable: true + ,edittype :"select" + ,formatter :"select" + ,editoptions:{ + value: sup_code + ,dataInit : function(e){ + e.style.width = "92%"; + e.style.fontSize = 13; + } + } + } + // ,{name:"SPEC",index:"SPEC", width: 150, align:"center", hidden: false, sortable:false, editable:true + // ,editoptions:{ + // dataInit : function(e){ + // e.style.fontSize = 13; + // } + // } + // } + // ,{name:"POST_PROCESSING",index:"POST_PROCESSING", width: 100, align:"center", hidden: false, sortable:false, editable:true + // ,editoptions:{ + // dataInit : function(e){ + // e.style.fontSize = 13; + // } + // } + // } + // ,{name:"MAKER",index:"MAKER", width: 150, align:"center", hidden: false, sortable:false, editable:true + // ,editoptions:{ + // dataInit : function(e){ + // e.style.fontSize = 13; + // } + // } + // } ,{name:"PART_TYPE" ,index:"PART_TYPE" , width:100, align:"center", hidden:false, sortable:false, editable: true ,edittype :"select" ,formatter :"select" @@ -114,7 +146,7 @@ $(document).ready(function(){ } } } - ,{name:"REMARK",index:"REMARK", width: 170, align:"center", hidden: false, sortable:false, editable:true + ,{name:"REMARK",index:"REMARK", width: 130, align:"center", hidden: false, sortable:false, editable:true ,editoptions:{ dataInit : function(e){ e.style.fontSize = 13; diff --git a/WebContent/WEB-INF/view/partMng/partMngDetailPopUp.jsp b/WebContent/WEB-INF/view/partMng/partMngDetailPopUp.jsp index 9cc791b..3993718 100644 --- a/WebContent/WEB-INF/view/partMng/partMngDetailPopUp.jsp +++ b/WebContent/WEB-INF/view/partMng/partMngDetailPopUp.jsp @@ -358,9 +358,17 @@ function fn_edit(){ - + + + + + + + + + <%-- @@ -368,80 +376,61 @@ function fn_edit(){ --%> + - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + + + + - + - + + - + - - + + - + + <%-- @@ -589,14 +578,7 @@ function fn_edit(){ - - - - - - - - + diff --git a/WebContent/WEB-INF/view/partMng/partMngFormPopUp.jsp b/WebContent/WEB-INF/view/partMng/partMngFormPopUp.jsp index 3dd4e85..c0fb2f4 100644 --- a/WebContent/WEB-INF/view/partMng/partMngFormPopUp.jsp +++ b/WebContent/WEB-INF/view/partMng/partMngFormPopUp.jsp @@ -56,7 +56,7 @@ $(document).ready(function(){ // $("input:radio[name='CHANGE_OPTION']:radio[value='${resultMap.CHANGE_OPTION}']").prop('checked', true); $("input:radio[name='MANAGEMENT_FLAG']:radio[value='${resultMap.MANAGEMENT_FLAG}']").prop('checked', true); - //$('.select2').select2(); +// $('.select2').select2(); if('changeDesign' == '${param.ACTION_TYPE}'){ //alert('c'); @@ -307,235 +307,71 @@ function fn_overlapPartMng(){ - <%-- - - - - - - - - - - - - - - - - - - --%> + - + - <%-- - - - - - --%> - - -<%-- - - - - - - - --%> - - + + - - - - <%-- - - --%> - - - - + - + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + - - - + + + + - + - - - - - <%-- - - - - - - - - - - - - - - - - - --%> - - <%-- - - - - - - - --%> - - <%-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --%> - <%-- - - - - - - - --%> - - <%-- - - - - - - - - - - - - - - - - --%> - <%-- - + + - - - --%> - + + + + + + @@ -559,50 +395,9 @@ function fn_overlapPartMng(){ - + + - <%-- - - - - - - - - - --%> - - - - - - - - - - - - - - - - <%-- - - - - - - - - - - - - ${code_map.CHANGE_OPTION} - - - - --%> @@ -629,34 +424,7 @@ function fn_overlapPartMng(){ - - - - - - - - - - - - - - - - - - - + diff --git a/WebContent/WEB-INF/view/partMng/partMngFormPopUp_back.jsp b/WebContent/WEB-INF/view/partMng/partMngFormPopUp_back.jsp new file mode 100644 index 0000000..3dd4e85 --- /dev/null +++ b/WebContent/WEB-INF/view/partMng/partMngFormPopUp_back.jsp @@ -0,0 +1,708 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="com.pms.common.utils.*"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ page import="java.util.*" %> +<%@include file= "/init.jsp" %> +<% +PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); +String userId = CommonUtils.checkNull(person.getUserId()); +%> + + + + +<%=Constants.SYSTEM_NAME%> + + + + + + +
+ + + + + + +
+
+

+ + + 품목 등록 + + + 품목 설계변경 + + +

+
+
+ + + + + + + + + + <%-- + + + + + + + + + + + + + + --%> + + + + <%-- + --%> + + +<%-- + + + --%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + <%-- + + + + + + + + + --%> + + <%-- + + + + + --%> + + <%-- + + + + + + + + + + + + + + + + + + + + + + + + --%> + <%-- + + + --%> + + <%-- + + + + + + + + --%> + + <%-- + --%> + + + + + + + + + + + + + + + <%-- + + + + + --%> + + + + + + + + + + + + + + + + <%-- + + + + + + --%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + + +
+ + + +
+ + + +
+ + + <%-- + + --%> + + + + + +
+ + + +
+ + + + + + + +
+ + + +
+ + + + + + + +
+ + + +
+ + + + + + + +
+ + + + + + + +
+ + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + + + +
+ + + +
+ + + + + + + + + ${code_map.CHANGE_OPTION} +
+ + + + + + + +
+ + + +
+ + + 3D + +
Drag & Drop Files Here
+
+ +
+ +
+ 2D(Drawing) + +
Drag & Drop Files Here
+
+ +
+
+ 2D(PDF) + +
Drag & Drop Files Here
+
+ +
+
+
+
+
+ + +
+
+
+
+ + \ No newline at end of file diff --git a/WebContent/WEB-INF/view/partMng/partMngList.jsp b/WebContent/WEB-INF/view/partMng/partMngList.jsp index 85c4f03..07e6a01 100644 --- a/WebContent/WEB-INF/view/partMng/partMngList.jsp +++ b/WebContent/WEB-INF/view/partMng/partMngList.jsp @@ -139,7 +139,7 @@ String connector = person.getUserId(); }, */ //{headerHozAlign : 'center', hozAlign : 'left', width : '125', title : '모품번', field : 'PARENT_PART_INFO' }, - {headerHozAlign : 'center', hozAlign : 'left', width : '125', title : '품번', field : 'PART_NO', + {headerHozAlign : 'center', hozAlign : 'left', width : '180', title : '품번', field : 'PART_NO', formatter:fnc_createGridAnchorTag, cellClick:function(e, cell){ var objid = fnc_checkNull(cell.getData().OBJID); @@ -147,8 +147,8 @@ String connector = person.getUserId(); } }, {headerHozAlign : 'center', hozAlign : 'left', /* width : '270', */ title : '품명', field : 'PART_NAME' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '50', title : '수량', field : 'BOM_QTY' }, //Q_QTY QTY QTY_P - {headerHozAlign : 'center', hozAlign : 'center', width : '45', title : '3D', field : 'CU01_CNT', +// {headerHozAlign : 'center', hozAlign : 'center', width : '50', title : '수량', field : 'BOM_QTY' }, //Q_QTY QTY QTY_P + {headerHozAlign : 'center', hozAlign : 'center', width : '60', title : '3D', field : 'CU01_CNT', formatter:fnc_subInfoValueFormatter, cellClick:function(e, cell){ var objid = fnc_checkNull(cell.getData().OBJID); @@ -157,7 +157,7 @@ String connector = person.getUserId(); fnc_fileDetailPopup(objid, docType, docTypeName); } }, - {headerHozAlign : 'center', hozAlign : 'center', width : '45', title : '2D', field : 'CU02_CNT', + {headerHozAlign : 'center', hozAlign : 'center', width : '60', title : '2D', field : 'CU02_CNT', formatter:fnc_subInfoValueFormatter, cellClick:function(e, cell){ var objid = fnc_checkNull(cell.getData().OBJID); @@ -166,7 +166,7 @@ String connector = person.getUserId(); fnc_fileDetailPopup(objid, docType, docTypeName); } }, - {headerHozAlign : 'center', hozAlign : 'center', width : '55', title : 'PDF', field : 'CU03_CNT', + {headerHozAlign : 'center', hozAlign : 'center', width : '60', title : 'PDF', field : 'CU03_CNT', formatter:fnc_subInfoValueFormatter, cellClick:function(e, cell){ var objid = fnc_checkNull(cell.getData().OBJID); @@ -175,16 +175,23 @@ String connector = person.getUserId(); fnc_fileDetailPopup(objid, docType, docTypeName); } }, - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '재질', field : 'MATERIAL' }, - {headerHozAlign : 'center', hozAlign : 'left', width : '90', title : '사양(규격)', field : 'SPEC' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '후처리', field : 'POST_PROCESSING' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : 'MAKER', field : 'MAKER' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '대분류', field : 'MAJOR_CATEGORY' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '중분류', field : 'SUB_CATEGORY' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : 'Revision', field : 'REVISION' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '재료', field : 'MATERIAL' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '열처리경도', field : 'HEAT_TREATMENT_HARDNESS' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '열처리방법', field : 'HEAT_TREATMENT_METHOD' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '표면처리', field : 'SURFACE_TREATMENT' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '150', title : '공급업체', field : 'SUPPLY_NAME' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '범주 이름', field : 'PART_TYPE_TITLE' }, + + // {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '재질', field : 'MATERIAL' }, + // {headerHozAlign : 'center', hozAlign : 'left', width : '90', title : '사양(규격)', field : 'SPEC' }, + // {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '후처리', field : 'POST_PROCESSING' }, + // {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : 'MAKER', field : 'MAKER' }, + // {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '대분류', field : 'MAJOR_CATEGORY' }, + // {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '중분류', field : 'SUB_CATEGORY' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'Revision', field : 'REVISION' }, {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'EO No', field : 'EO_NO' }, {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : 'EO Date', field : 'EO_DATE' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '88', title : 'PART구분', field : 'PART_TYPE_TITLE' }, +// {headerHozAlign : 'center', hozAlign : 'center', width : '88', title : 'PART구분', field : 'PART_TYPE_TITLE' }, {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '비고', field : 'REMARK' } ]; @@ -328,7 +335,7 @@ String connector = person.getUserId(); - + @@ -336,22 +343,40 @@ String connector = person.getUserId(); - - - + - + - + - + - + + + + + + + + + + + + + + + + <%-- --%> @@ -363,9 +388,9 @@ String connector = person.getUserId(); --%> - + - + diff --git a/WebContent/WEB-INF/view/partMng/partMngTempList.jsp b/WebContent/WEB-INF/view/partMng/partMngTempList.jsp index 0e1326c..6da03c8 100644 --- a/WebContent/WEB-INF/view/partMng/partMngTempList.jsp +++ b/WebContent/WEB-INF/view/partMng/partMngTempList.jsp @@ -71,21 +71,21 @@ ui-jqgrid tr.jqgrow td { fn_search(); }); - $("#search_product_group").change(function(){ - $("#search_product").empty(); + // $("#search_product_group").change(function(){ + // $("#search_product").empty(); - if("" != this.value){ - fnc_getCodeListAppend(this.value,"search_product","${param.search_product}"); - } - }); + // if("" != this.value){ + // fnc_getCodeListAppend(this.value,"search_product","${param.search_product}"); + // } + // }); - fnc_getCarList("", "", "search_car_type","${param.search_car_type}"); + // fnc_getCarList("", "", "search_car_type","${param.search_car_type}"); - fnc_getCodeListAppend("<%=Constants.PRODUCT_GROUP_CODE%>","search_product_group","${param.search_product_group}"); + // fnc_getCodeListAppend("<%=Constants.PRODUCT_GROUP_CODE%>","search_product_group","${param.search_product_group}"); - if("" != "${param.search_product_group}"){ - fnc_getCodeListAppend("${param.search_product_group}","search_product","${param.search_product}"); - } + // if("" != "${param.search_product_group}"){ + // fnc_getCodeListAppend("${param.search_product_group}","search_product","${param.search_product}"); + // } //fnc_getUserList("SEARCH_WRITER","${param.search_writer}"); @@ -128,9 +128,9 @@ ui-jqgrid tr.jqgrow td { {title:'CODE4', field:'CODE4' ,visible:false ,frozen:true}, {title:'CODE5', field:'CODE5' ,visible:false ,frozen:true}, - {headerHozAlign : 'center', hozAlign : 'center', width : '60', title : '순', field : 'RNUM' ,frozen:true}, - {headerHozAlign : 'center', hozAlign : 'left', width : '270', title : '품명', field : 'PART_NAME' ,frozen:true}, - {headerHozAlign : 'center', hozAlign : 'left', width : '125', title : '모품번', field : 'PARENT_PART_INFO' ,frozen:true}, +// {headerHozAlign : 'center', hozAlign : 'center', width : '60', title : '순', field : 'RNUM' ,frozen:true}, + +// {headerHozAlign : 'center', hozAlign : 'left', width : '125', title : '모품번', field : 'PARENT_PART_INFO' ,frozen:true}, {headerHozAlign : 'center', hozAlign : 'left', width : '180', title : '품번', field : 'PART_NO',frozen:true, formatter:fnc_createGridAnchorTag, cellClick:function(e, cell){ @@ -138,7 +138,8 @@ ui-jqgrid tr.jqgrow td { openPartMngPopup(objid); } }, - {headerHozAlign : 'center', hozAlign : 'center', width : '70', title : '수량', field : 'Q_QTY' }, + {headerHozAlign : 'center', hozAlign : 'left', /*width : '270',*/ title : '품명', field : 'PART_NAME' ,frozen:true}, +// {headerHozAlign : 'center', hozAlign : 'center', width : '70', title : '수량', field : 'Q_QTY' }, {headerHozAlign : 'center', hozAlign : 'center', width : '60', title : '3D', field : 'CU01_CNT', formatter:fnc_subInfoValueFormatter, cellClick:function(e, cell){ @@ -166,16 +167,22 @@ ui-jqgrid tr.jqgrow td { fn_FileRegist(objid, docType, docTypeName); } }, - {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '재질', field : 'MATERIAL' }, - {headerHozAlign : 'center', hozAlign : 'left', width : '190', title : '사양(규격)', field : 'SPEC' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '후처리', field : 'POST_PROCESSING' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'MAKER', field : 'MAKER' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '120', title : '대분류', field : 'MAJOR_CATEGORY' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '120', title : '중분류', field : 'SUB_CATEGORY' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '80', title : 'Revision', field : 'REVISION' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '재료', field : 'MATERIAL' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '열처리경도', field : 'HEAT_TREATMENT_HARDNESS' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '열처리방법', field : 'HEAT_TREATMENT_METHOD' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '표면처리', field : 'SURFACE_TREATMENT' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '150', title : '공급업체', field : 'SUPPLY_NAME' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '100', title : '범주 이름', field : 'PART_TYPE_TITLE' }, + + // {headerHozAlign : 'center', hozAlign : 'left', width : '190', title : '사양(규격)', field : 'SPEC' }, +// {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '후처리', field : 'POST_PROCESSING' }, +// {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'MAKER', field : 'MAKER' }, +// {headerHozAlign : 'center', hozAlign : 'center', width : '120', title : '대분류', field : 'MAJOR_CATEGORY' }, +// {headerHozAlign : 'center', hozAlign : 'center', width : '120', title : '중분류', field : 'SUB_CATEGORY' }, + {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'Revision', field : 'REVISION' }, {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'EO No', field : 'EO_NO' }, {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'EO Date', field : 'EO_DATE' }, - {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'PART 구분', field : 'PART_TYPE_TITLE' }, +// {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'PART 구분', field : 'PART_TYPE_TITLE' }, {headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '비고', field : 'REMARK' } ]; function fn_search(){ @@ -426,7 +433,7 @@ ui-jqgrid tr.jqgrow td {
- + - +
@@ -443,14 +450,13 @@ ui-jqgrid tr.jqgrow td {
diff --git a/WebContent/css/basic.css b/WebContent/css/basic.css index 7fb31b5..1b0815e 100644 --- a/WebContent/css/basic.css +++ b/WebContent/css/basic.css @@ -319,7 +319,7 @@ header h1 {display:flex; align-items:center; height: 100%} .loginLogo_new {display: block; width: 246px; height: 100px; background: url(/images/loginLogo_kumho.png) left bottom no-repeat;background-size:contain; margin-bottom:10px;margin-left:-80px;} .slogun_box_new {position: relative; margin:144px 0px 0px 330px; width:50%; height:640px; background:#E7E9F0; border-radius: 25px 0px 0px 25px; z-index:1;} .slogun_box_new2 {display: block; width:78%; height:90%; background: url(/images/Intops-loginpage_last1.png) left bottom no-repeat; background-size:contain; margin-left:7%;padding-top:0;} -header h1 .mainLogo_new {display:block; margin-left:-68px; width:223px; height:25px; background: url(/images/logo.png) center center no-repeat; +header h1 .mainLogo_new {display:block; margin-left:-50px; width:235px; height:35px; background: url(/images/logo.png) center center no-repeat; background-size: contain; margin-top:0px; } /*濡쒓렇???섏씠吏€ (intops) diff --git a/WebContent/js/common.js b/WebContent/js/common.js index ca10246..235acb1 100644 --- a/WebContent/js/common.js +++ b/WebContent/js/common.js @@ -2982,7 +2982,12 @@ $(document).ready(function() { var gridToUse = typeof _tabulGrid !== 'undefined' ? _tabulGrid : typeof grid !== 'undefined' ? grid : null; - if (gridToUse && gridToUse.getRows().length > 0) { + // jqGrid 체크 - jqGrid는 이 기능을 사용하지 않음 + if (gridToUse && typeof gridToUse.jqGrid === 'function') { + return; // jqGrid는 별도 처리 + } + + if (gridToUse && gridToUse.getRows && gridToUse.getRows().length > 0) { var pageTitle = $('.plm_menu_name_gdnsi h2 span').text().trim(); $('.btnArea').append(""); diff --git a/src/com/pms/controller/PartMngController.java b/src/com/pms/controller/PartMngController.java index fb83be2..d56b199 100644 --- a/src/com/pms/controller/PartMngController.java +++ b/src/com/pms/controller/PartMngController.java @@ -133,6 +133,9 @@ public class PartMngController { } code_map.put("product_code",commonService.bizMakeOptionList("", (String)paramMap.get("product_code"),"common.getProductCodeselect")); + //고객사 + code_map.put("customer_cd",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("customer_cd")),"common.getmatersupplyselect")); + if("Y".equals(search)){ //list = CommonUtils.keyChangeUpperList(partMngService.getPartMngList(request,paramMap)); } @@ -371,7 +374,9 @@ public class PartMngController { code_map.put("CHANGE_OPTION",commonService.bizMakeOptionList("0000318", (String)resultMap.get("CHANGE_OPTION"),"common.getCodeselect")); code_map.put("CHANGE_TYPE",commonService.bizMakeOptionList("0001054", (String)resultMap.get("CHANGE_TYPE"),"common.getCodeselect")); code_map.put("PARENT_PART_NO",commonService.bizMakeOptionList("", (String)resultMap.get("PARENT_PART_NO"),"common.getPartNoselect")); - code_map.put("SUPPLY_CODE",commonService.bizMakeOptionList("", (String)resultMap.get("SUPPLY_CODE"),"common.getmatersupplyselect")); + //고객사 + code_map.put("SUPPLY_CODE",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)resultMap.get("SUPPLY_CODE")),"common.getmatersupplyselect")); + //code_map.put("SUPPLY_CODE",commonService.bizMakeOptionList("", (String)resultMap.get("SUPPLY_CODE"),"common.getmatersupplyselect")); }else{ objId = CommonUtils.createObjId(); @@ -425,7 +430,8 @@ public class PartMngController { code_map.put("CHANGE_OPTION",commonService.bizMakeOptionList("0000318", (String)resultMap.get("CHANGE_OPTION"),"common.getCodeselect")); code_map.put("CHANGE_TYPE",commonService.bizMakeOptionList("0001054", (String)resultMap.get("CHANGE_TYPE"),"common.getCodeselect")); code_map.put("PARENT_PART_NO",commonService.bizMakeOptionList("", (String)resultMap.get("PARENT_PART_NO"),"common.getPartNoselect")); - + code_map.put("SUPPLY_CODE",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)resultMap.get("SUPPLY_CODE")),"common.getmatersupplyselect")); + //code_map.put("SUPPLY_CODE",commonService.bizMakeOptionList("", (String)resultMap.get("SUPPLY_CODE"),"common.getmatersupplyselect")); }else{ objId = CommonUtils.createObjId(); @@ -633,6 +639,7 @@ public class PartMngController { Map param = new HashMap(); param.put("parentCodeId", "0000062"); code_map.put("part_type", commonService.getJqGridSelectBoxJsonData("common.getCodeList2", param, "선택")); + code_map.put("sup_code", commonService.getJqGridSelectBoxJsonData("common.getmatersupplyselect", param, "선택")); /* //unit param.put("parentCodeId", "0000059"); diff --git a/src/com/pms/mapper/partMng.xml b/src/com/pms/mapper/partMng.xml index 0bef751..9fb121b 100644 --- a/src/com/pms/mapper/partMng.xml +++ b/src/com/pms/mapper/partMng.xml @@ -157,10 +157,11 @@ - SUPPLY_CODE - + P.SUPPLY_CODE, + (SELECT SUPPLY_NAME FROM admin_supply_mng O WHERE O.objid::varchar = P.SUPPLY_CODE) AS SUPPLY_NAME, + P.HEAT_TREATMENT_HARDNESS, + P.HEAT_TREATMENT_METHOD, + P.SURFACE_TREATMENT ,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.DOC_TYPE IN ('3D_CAD')) CU01_CNT ,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.DOC_TYPE IN ('2D_DRAWING_CAD')) CU02_CNT ,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID AND F.DOC_TYPE IN ('2D_PDF_CAD')) CU03_CNT @@ -647,9 +648,12 @@ MAKER, POST_PROCESSING, MAJOR_CATEGORY, - SUB_CATEGORY - ) VALUES ( - #{OBJID}::NUMERIC, + SUB_CATEGORY, + HEAT_TREATMENT_HARDNESS, + HEAT_TREATMENT_METHOD, + SURFACE_TREATMENT + ) VALUES ( + #{OBJID}::NUMERIC, #{PRODUCT_MGMT_OBJID}, #{UPG_NO}, #{PART_NO}, @@ -690,9 +694,12 @@ #{MAKER}, #{POST_PROCESSING}, #{MAJOR_CATEGORY}, - #{SUB_CATEGORY} - ) ON - CONFLICT (OBJID) DO + #{SUB_CATEGORY}, + #{HEAT_TREATMENT_HARDNESS}, + #{HEAT_TREATMENT_METHOD}, + #{SURFACE_TREATMENT} + ) ON + CONFLICT (OBJID) DO UPDATE SET PRODUCT_MGMT_OBJID = #{PRODUCT_MGMT_OBJID}, @@ -731,8 +738,11 @@ MAKER = #{MAKER}, POST_PROCESSING = #{POST_PROCESSING}, MAJOR_CATEGORY = #{MAJOR_CATEGORY}, - SUB_CATEGORY = #{SUB_CATEGORY} - + SUB_CATEGORY = #{SUB_CATEGORY}, + HEAT_TREATMENT_HARDNESS = #{HEAT_TREATMENT_HARDNESS}, + HEAT_TREATMENT_METHOD = #{HEAT_TREATMENT_METHOD}, + SURFACE_TREATMENT = #{SURFACE_TREATMENT} + @@ -784,7 +794,11 @@ CODE4, CODE5, IS_NEW, - IS_LONGD + IS_LONGD, + HEAT_TREATMENT_HARDNESS, + HEAT_TREATMENT_METHOD, + SURFACE_TREATMENT, + SUPPLY_CODE ) VALUES ( #{OBJID}::NUMERIC, #{PRODUCT_MGMT_OBJID}, @@ -838,7 +852,11 @@ #{CODE4}, #{CODE5}, #{IS_NEW}, - #{IS_LONGD} + #{IS_LONGD}, + #{HEAT_TREATMENT_HARDNESS}, + #{HEAT_TREATMENT_METHOD}, + #{SURFACE_TREATMENT}, + #{SUPPLY_CODE} ) ON CONFLICT (OBJID) DO UPDATE @@ -885,7 +903,11 @@ CODE4 = #{CODE4}, CODE5 = #{CODE5}, IS_NEW = #{IS_NEW}, - IS_LONGD = #{IS_LONGD} + IS_LONGD = #{IS_LONGD}, + HEAT_TREATMENT_HARDNESS = #{HEAT_TREATMENT_HARDNESS}, + HEAT_TREATMENT_METHOD = #{HEAT_TREATMENT_METHOD}, + SURFACE_TREATMENT = #{SURFACE_TREATMENT}, + SUPPLY_CODE = #{SUPPLY_CODE} INSERT INTO PART_MNG_HISTORY @@ -925,7 +947,11 @@ IN_DIAMETER, LENGTH, CONTRACT_OBJID, - MAKER + MAKER, + HEAT_TREATMENT_HARDNESS, + HEAT_TREATMENT_METHOD, + SURFACE_TREATMENT, + SUPPLY_CODE ) VALUES ( #{OBJID}::NUMERIC, #{PRODUCT_MGMT_OBJID}, @@ -962,7 +988,11 @@ #{IN_DIAMETER}, #{LENGTH}, #{CONTRACT_OBJID}, - #{MAKER} + #{MAKER}, + #{HEAT_TREATMENT_HARDNESS}, + #{HEAT_TREATMENT_METHOD}, + #{SURFACE_TREATMENT}, + #{SUPPLY_CODE} ) ON CONFLICT (OBJID) DO @@ -1000,7 +1030,11 @@ IN_DIAMETER = #{IN_DIAMETER}, LENGTH = #{LENGTH}, CONTRACT_OBJID = (SELECT CONTRACT_OBJID FROM PART_MNG WHERE OBJID = #{OBJID}), - MAKER =#{MAKER} + MAKER =#{MAKER}, + HEAT_TREATMENT_HARDNESS = #{HEAT_TREATMENT_HARDNESS}, + HEAT_TREATMENT_METHOD = #{HEAT_TREATMENT_METHOD}, + SURFACE_TREATMENT = #{SURFACE_TREATMENT}, + SUPPLY_CODE = #{SUPPLY_CODE} + + + UPDATE PART_BOM_REPORT SET NOTE = #{NOTE} diff --git a/src/com/pms/service/PartMngService.java b/src/com/pms/service/PartMngService.java index 172ee99..61a2355 100644 --- a/src/com/pms/service/PartMngService.java +++ b/src/com/pms/service/PartMngService.java @@ -2868,17 +2868,41 @@ public class PartMngService extends BaseService { //수량(QTY) // cellValue = getCellValue(row, columnIndex++, formatter, emptyColCnt); - partMap.put("QTY", "1"); - //재질 +// partMap.put("QTY", "1"); + //재료 partMap.put("MATERIAL", getCellValue(row, columnIndex++, formatter, emptyColCnt)); + //열처리경도 + partMap.put("HEAT_TREATMENT_HARDNESS", getCellValue(row, columnIndex++, formatter, emptyColCnt)); + //열처리방법 + partMap.put("HEAT_TREATMENT_METHOD", getCellValue(row, columnIndex++, formatter, emptyColCnt)); + //표면처리 + partMap.put("SURFACE_TREATMENT", getCellValue(row, columnIndex++, formatter, emptyColCnt)); // if(StringUtils.isBlank(getCellValue(row, columnIndex, formatter, emptyColCnt))) emptyColCnt++; //사양(규격) - partMap.put("SPEC", getCellValue(row, columnIndex++, formatter, emptyColCnt)); +// partMap.put("SPEC", getCellValue(row, columnIndex++, formatter, emptyColCnt)); // if(StringUtils.isBlank(getCellValue(row, columnIndex, formatter, emptyColCnt))) emptyColCnt++; //후처리 - partMap.put("POST_PROCESSING", getCellValue(row, columnIndex++, formatter, emptyColCnt)); +// partMap.put("POST_PROCESSING", getCellValue(row, columnIndex++, formatter, emptyColCnt)); //MAKER - partMap.put("MAKER", getCellValue(row, columnIndex++, formatter, emptyColCnt)); +// partMap.put("MAKER", getCellValue(row, columnIndex++, formatter, emptyColCnt)); + + //공급업체 + cellValue = getCellValue(row, columnIndex++, formatter, emptyColCnt); +// if(StringUtils.isBlank(cellValue)) emptyColCnt++; + partMap.put("SUP_CODE", columnIndex); + if(!CommonUtils.isBlank(cellValue)){ + sqlParamMap.clear(); + sqlResultMap.clear(); + sqlParamMap.put("SUPPLY_NAME", cellValue); + Map supply = sqlSession.selectOne("partMng.supplyInfo", sqlParamMap); + if(null!=supply && !StringUtils.isBlank((String)supply.get("objid"))){ + //&& !CommonUtils.isEmptyMap(partType) + partMap.put("SUP_CODE", supply.get("objid")); + sqlResultMap.put("SUP_CODE",supply.get("objid")); + }else { + setErrMapByExcel(resultColumn, resultList, partMap, true, "공급업체 확인:"+cellValue, cellValue); + } + } //PART구분(부품유형) cellValue = getCellValue(row, columnIndex++, formatter, emptyColCnt); @@ -2894,7 +2918,7 @@ public class PartMngService extends BaseService { partMap.put("PART_TYPE", partType.get("code_id")); sqlResultMap.put("PART_TYPE",partType.get("code_id")); }else { - setErrMapByExcel(resultColumn, resultList, partMap, true, "PART구분 확인:"+cellValue, cellValue); + setErrMapByExcel(resultColumn, resultList, partMap, true, "범주 이름 확인:"+cellValue, cellValue); } } @@ -3009,6 +3033,7 @@ public class PartMngService extends BaseService { //PART저장 insertMap.put("OBJID", part_objid); insertMap.put("CONNECTUSERID", CommonUtils.checkNull((String)paramMap.get("CONNECTUSERID"))); + insertMap.put("SUPPLY_CODE", CommonUtils.checkNull((String)insertMap.get("SUP_CODE"))); //sqlSession.insert("partMng.insertpartInfo", insertMap); sqlSession.insert("partMng.mergePartMng", insertMap); /*