diff --git a/WebContent/WEB-INF/view/productionplanning/mBomHeaderPopup.jsp b/WebContent/WEB-INF/view/productionplanning/mBomHeaderPopup.jsp
index 4f70030..dbc2dcd 100644
--- a/WebContent/WEB-INF/view/productionplanning/mBomHeaderPopup.jsp
+++ b/WebContent/WEB-INF/view/productionplanning/mBomHeaderPopup.jsp
@@ -524,11 +524,12 @@ function generateHistoryHtml(historyList) {
var changeType = history.CHANGE_TYPE || "UNKNOWN";
var changeDate = history.CHANGE_DATE || history.REGDATE || "";
var changeUser = history.CHANGE_USER || "";
+ var changeUserName = history.CHANGE_USER_NAME || "";
// 이력 헤더
html += "
";
html += "
";
- html += "이력 #" + (i + 1) + " - " + changeType + " (" + changeDate + " / " + changeUser + ")";
+ html += "이력 #" + (i + 1) + " - " + changeType + " (" + changeDate + " / " + changeUserName + ")";
html += "
";
try {
diff --git a/WebContent/WEB-INF/view/productionplanning/mBomHistoryDetailPopup.jsp b/WebContent/WEB-INF/view/productionplanning/mBomHistoryDetailPopup.jsp
new file mode 100644
index 0000000..eb587a8
--- /dev/null
+++ b/WebContent/WEB-INF/view/productionplanning/mBomHistoryDetailPopup.jsp
@@ -0,0 +1,294 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<%@ page import="com.pms.common.utils.*"%>
+<%@ page import="java.util.*" %>
+<%@include file= "/init.jsp" %>
+
+
+
+
+
<%=Constants.SYSTEM_NAME%> - M-BOM 변경 이력 상세
+
+
+
+
+
M-BOM 변경 이력 상세
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/WebContent/WEB-INF/view/productionplanning/mBomHistoryList.jsp b/WebContent/WEB-INF/view/productionplanning/mBomHistoryList.jsp
new file mode 100644
index 0000000..7009f62
--- /dev/null
+++ b/WebContent/WEB-INF/view/productionplanning/mBomHistoryList.jsp
@@ -0,0 +1,207 @@
+<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
+<%@ page import="com.pms.common.utils.*"%>
+<%@ page import="java.util.*" %>
+<%@include file= "/init.jsp" %>
+
+
+<%
+// DB에서 메뉴명 조회 (공통 유틸 사용)
+String menuObjId = request.getParameter("menuObjId");
+String menuName = CommonUtils.getMenuName(menuObjId, "생산관리_M-BOM 변경이력");
+%>
+
+
+
+
+
<%=Constants.SYSTEM_NAME%>
+
+
+
+
+
+
+
+
+
diff --git a/src/com/pms/controller/ProductionPlanningController.java b/src/com/pms/controller/ProductionPlanningController.java
index ae6784d..5cfe571 100644
--- a/src/com/pms/controller/ProductionPlanningController.java
+++ b/src/com/pms/controller/ProductionPlanningController.java
@@ -2107,4 +2107,68 @@ public class ProductionPlanningController extends BaseService {
return resultMap;
}
+ /**
+ * M-BOM 변경이력 목록 페이지
+ */
+ @RequestMapping("/productionplanning/mBomHistoryList.do")
+ public String mBomHistoryList(HttpServletRequest request, @RequestParam Map paramMap){
+ Map code_map = new HashMap();
+ try {
+ // 주문유형 (0000167)
+ code_map.put("category_cd", commonService.bizMakeOptionList("0000167", (String)paramMap.get("search_category_cd"), "common.getCodeselect"));
+ // 제품구분 (0000001)
+ code_map.put("product_cd", commonService.bizMakeOptionList("0000001", (String)paramMap.get("search_product_cd"), "common.getCodeselect"));
+ // 고객사 (SUPPLY_MNG + CLIENT_MNG)
+ code_map.put("customer_cd", commonService.bizMakeOptionList("", (String)paramMap.get("search_customer_objid"), "common.getAllSupplySelect"));
+
+ request.setAttribute("code_map", code_map);
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+ return "/productionplanning/mBomHistoryList";
+ }
+
+ /**
+ * M-BOM 변경이력 그리드 목록 조회 (MBOM_HISTORY 기준)
+ */
+ @ResponseBody
+ @RequestMapping("/productionplanning/mBomHistoryGridList.do")
+ public Map mBomHistoryGridList(HttpServletRequest request, @RequestParam Map paramMap){
+ commonService.selectListPagingNew("productionplanning.getMbomHistoryGridList", request, paramMap);
+ return paramMap;
+ }
+
+ /**
+ * M-BOM 변경이력 상세 팝업
+ */
+ @RequestMapping("/productionplanning/mBomHistoryDetailPopup.do")
+ public String mBomHistoryDetailPopup(HttpServletRequest request, @RequestParam Map paramMap){
+ try {
+ String historyObjId = CommonUtils.nullToEmpty((String)paramMap.get("historyObjId"));
+
+ if(!"".equals(historyObjId)) {
+ // 이력 상세 정보 조회
+ Map
historyInfo = commonService.selectOne("productionplanning.getMbomHistoryDetail", request, paramMap);
+
+ if(historyInfo != null) {
+ // JSON 데이터 이스케이프 처리 (JSP에서 JavaScript로 전달 시 오류 방지)
+ String beforeData = CommonUtils.nullToEmpty((String)historyInfo.get("BEFORE_DATA"));
+ String afterData = CommonUtils.nullToEmpty((String)historyInfo.get("AFTER_DATA"));
+
+ // 줄바꿈, 작은따옴표 등 이스케이프
+ beforeData = beforeData.replace("\\", "\\\\").replace("'", "\\'").replace("\n", "\\n").replace("\r", "");
+ afterData = afterData.replace("\\", "\\\\").replace("'", "\\'").replace("\n", "\\n").replace("\r", "");
+
+ historyInfo.put("BEFORE_DATA_ESCAPED", beforeData);
+ historyInfo.put("AFTER_DATA_ESCAPED", afterData);
+
+ request.setAttribute("historyInfo", historyInfo);
+ }
+ }
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+ return "/productionplanning/mBomHistoryDetailPopup";
+ }
+
}
diff --git a/src/com/pms/mapper/productionplanning.xml b/src/com/pms/mapper/productionplanning.xml
index ec4bd5f..841269f 100644
--- a/src/com/pms/mapper/productionplanning.xml
+++ b/src/com/pms/mapper/productionplanning.xml
@@ -3427,6 +3427,7 @@
MH.BEFORE_DATA,
MH.AFTER_DATA,
MH.CHANGE_USER,
+ USER_NAME(MH.CHANGE_USER) AS CHANGE_USER_NAME,
TO_CHAR(MH.CHANGE_DATE, 'YYYY-MM-DD HH24:MI:SS') AS CHANGE_DATE,
-- MBOM_HEADER 정보 조인
MHD.MBOM_NO AS MBOM_PART_NO,
@@ -4932,4 +4933,93 @@
WHERE PROJECT_OBJID = #{projectObjid}
+
+
+
+
+
+