m-bom 복사, 생성, 이력보기 중간 완성
This commit is contained in:
@@ -1084,17 +1084,63 @@ public class ProductionPlanningController extends BaseService {
|
||||
|
||||
if(projectInfo != null) {
|
||||
System.out.println("BOM_REPORT_OBJID: " + projectInfo.get("BOM_REPORT_OBJID"));
|
||||
System.out.println("SOURCE_BOM_TYPE: " + projectInfo.get("SOURCE_BOM_TYPE"));
|
||||
System.out.println("SOURCE_EBOM_OBJID: " + projectInfo.get("SOURCE_EBOM_OBJID"));
|
||||
System.out.println("SOURCE_MBOM_OBJID: " + projectInfo.get("SOURCE_MBOM_OBJID"));
|
||||
System.out.println("MBOM_STATUS: " + projectInfo.get("MBOM_STATUS"));
|
||||
|
||||
// 1. 먼저 저장된 M-BOM 데이터가 있는지 확인
|
||||
String bomReportObjid = CommonUtils.checkNull(projectInfo.get("BOM_REPORT_OBJID"));
|
||||
if(!"".equals(bomReportObjid)) {
|
||||
Map<String, Object> bomParam = new HashMap<>();
|
||||
bomParam.put("bomReportObjId", bomReportObjid);
|
||||
bomParam.put("search_type", "working");
|
||||
String bomReportObjid = "";
|
||||
boolean isSavedMbom = false;
|
||||
|
||||
// 1. 먼저 저장된 M-BOM이 있는지 확인 (MBOM_HEADER 테이블)
|
||||
Map<String, Object> savedMbomParam = new HashMap<>();
|
||||
savedMbomParam.put("projectObjId", objId);
|
||||
Map<String, Object> savedMbom = commonService.selectOne("productionplanning.getLatestMbomByProjectId", request, savedMbomParam);
|
||||
|
||||
if(savedMbom != null && savedMbom.get("OBJID") != null) {
|
||||
// 저장된 M-BOM이 있으면 해당 M-BOM 사용
|
||||
bomReportObjid = CommonUtils.checkNull(savedMbom.get("OBJID"));
|
||||
isSavedMbom = true;
|
||||
System.out.println("저장된 M-BOM 사용: " + bomReportObjid);
|
||||
} else {
|
||||
// 저장된 M-BOM이 없으면 할당된 BOM 정보 사용
|
||||
String sourceBomType = CommonUtils.checkNull(projectInfo.get("SOURCE_BOM_TYPE"));
|
||||
String sourceEbomObjId = CommonUtils.checkNull(projectInfo.get("SOURCE_EBOM_OBJID"));
|
||||
String sourceMbomObjId = CommonUtils.checkNull(projectInfo.get("SOURCE_MBOM_OBJID"));
|
||||
|
||||
List<Map<String, Object>> mbomDetailList = commonService.selectList("partMng.getBOMTreeList", request, bomParam);
|
||||
System.out.println("mbomDetailList size: " + (mbomDetailList != null ? mbomDetailList.size() : 0));
|
||||
if("EBOM".equals(sourceBomType) && !"".equals(sourceEbomObjId)) {
|
||||
bomReportObjid = sourceEbomObjId;
|
||||
System.out.println("할당된 E-BOM 사용: " + bomReportObjid);
|
||||
} else if("MBOM".equals(sourceBomType) && !"".equals(sourceMbomObjId)) {
|
||||
bomReportObjid = sourceMbomObjId;
|
||||
System.out.println("할당된 M-BOM 사용: " + bomReportObjid);
|
||||
} else {
|
||||
bomReportObjid = CommonUtils.checkNull(projectInfo.get("BOM_REPORT_OBJID"));
|
||||
System.out.println("기존 BOM_REPORT_OBJID 사용: " + bomReportObjid);
|
||||
}
|
||||
}
|
||||
|
||||
// 2. BOM 데이터 조회
|
||||
List<Map<String, Object>> mbomDetailList = null;
|
||||
|
||||
if(!"".equals(bomReportObjid)) {
|
||||
if(isSavedMbom) {
|
||||
// 저장된 M-BOM: MBOM_DETAIL 테이블에서 조회
|
||||
Map<String, Object> mbomParam = new HashMap<>();
|
||||
mbomParam.put("mbomHeaderObjid", bomReportObjid);
|
||||
List tempList = commonService.selectList("productionplanning.getSavedMbomTreeList", request, mbomParam);
|
||||
// MyBatis resultType="map"은 소문자로 반환하므로 대문자로 변환 필요
|
||||
mbomDetailList = (List<Map<String, Object>>) (List<?>) CommonUtils.keyChangeUpperList(tempList);
|
||||
System.out.println("저장된 M-BOM 조회 - mbomDetailList size: " + (mbomDetailList != null ? mbomDetailList.size() : 0));
|
||||
} else {
|
||||
// 할당된 E-BOM/M-BOM: BOM_PART_QTY 테이블에서 조회
|
||||
Map<String, Object> bomParam = new HashMap<>();
|
||||
bomParam.put("bomReportObjId", bomReportObjid);
|
||||
bomParam.put("search_type", "working");
|
||||
mbomDetailList = commonService.selectList("partMng.getBOMTreeList", request, bomParam);
|
||||
System.out.println("할당된 BOM 조회 - mbomDetailList size: " + (mbomDetailList != null ? mbomDetailList.size() : 0));
|
||||
}
|
||||
}
|
||||
|
||||
if(mbomDetailList != null && !mbomDetailList.isEmpty()) {
|
||||
// 저장된 M-BOM 데이터가 있으면 이를 표시
|
||||
@@ -1121,8 +1167,6 @@ public class ProductionPlanningController extends BaseService {
|
||||
request.setAttribute("bomTreeListJson", gson.toJson(mbomDetailList));
|
||||
return "/productionplanning/mBomPopupLeft";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
} catch(Exception e) {
|
||||
@@ -1196,49 +1240,6 @@ public class ProductionPlanningController extends BaseService {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* M-BOM 저장
|
||||
* @param request
|
||||
* @param paramMap
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/productionplanning/saveMbom.do")
|
||||
public Map<String, Object> saveMbom(HttpServletRequest request, @RequestBody Map<String, Object> paramMap) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
try {
|
||||
// M-BOM 데이터 저장 로직
|
||||
List<Map<String, Object>> mbomData = (List<Map<String, Object>>) paramMap.get("mbomData");
|
||||
String partNo = CommonUtils.checkNull(paramMap.get("partNo"));
|
||||
String partName = CommonUtils.checkNull(paramMap.get("partName"));
|
||||
String mbomPartNo = CommonUtils.checkNull(paramMap.get("mbomPartNo")); // 기존 M-BOM 품번
|
||||
boolean isUpdate = paramMap.get("isUpdate") != null && (Boolean)paramMap.get("isUpdate"); // 수정 여부
|
||||
|
||||
if(mbomData == null || mbomData.isEmpty()) {
|
||||
resultMap.put("result", "fail");
|
||||
resultMap.put("message", "저장할 데이터가 없습니다.");
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
// M-BOM 저장 서비스 호출
|
||||
// isUpdate가 true이면 기존 M-BOM 품번 유지, false이면 새로 생성
|
||||
int saveResult = productionPlanningService.saveMbom(request, mbomData, partNo, partName, mbomPartNo, isUpdate);
|
||||
|
||||
if(saveResult > 0) {
|
||||
resultMap.put("result", "success");
|
||||
resultMap.put("message", isUpdate ? "M-BOM이 수정되었습니다." : "M-BOM이 저장되었습니다.");
|
||||
} else {
|
||||
resultMap.put("result", "fail");
|
||||
resultMap.put("message", "저장에 실패했습니다.");
|
||||
}
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
resultMap.put("result", "fail");
|
||||
resultMap.put("message", "오류가 발생했습니다: " + e.getMessage());
|
||||
}
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 품번으로 최신 M-BOM 조회 (Machine 이외 제품용)
|
||||
* @param request
|
||||
@@ -1279,16 +1280,21 @@ public class ProductionPlanningController extends BaseService {
|
||||
public Map<String, Object> getMbomHistory(HttpServletRequest request, @RequestParam Map<String, Object> paramMap) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
try {
|
||||
String mbomPartNo = CommonUtils.checkNull(paramMap.get("mbomPartNo"));
|
||||
String projectObjId = CommonUtils.checkNull(paramMap.get("projectObjId"));
|
||||
|
||||
if("".equals(mbomPartNo)) {
|
||||
if("".equals(projectObjId)) {
|
||||
resultMap.put("historyList", new ArrayList<>());
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
// M-BOM 이력 조회 (PART_BOM_REPORT 테이블에서 동일 PART_NO로 조회)
|
||||
System.out.println("========== getMbomHistory ==========");
|
||||
System.out.println("projectObjId: " + projectObjId);
|
||||
|
||||
// M-BOM 이력 조회 (PROJECT_OBJID로 조회)
|
||||
List<Map<String, Object>> historyList = commonService.selectList("productionplanning.getMbomHistory", request, paramMap);
|
||||
|
||||
System.out.println("조회된 이력 수: " + (historyList != null ? historyList.size() : 0));
|
||||
|
||||
resultMap.put("historyList", historyList != null ? historyList : new ArrayList<>());
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
@@ -1357,4 +1363,170 @@ public class ProductionPlanningController extends BaseService {
|
||||
}
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* BOM 할당 정보 저장 (M-BOM 기준 설정)
|
||||
* PROJECT_MGMT 테이블에 E-BOM 또는 M-BOM 할당 정보만 저장
|
||||
* 실제 M-BOM 생성은 M-BOM 상세 팝업에서 수행
|
||||
*/
|
||||
@RequestMapping("/productionplanning/saveBomAssignment.do")
|
||||
@ResponseBody
|
||||
public Map<String, Object> saveBomAssignment(HttpServletRequest request, @RequestBody Map<String, Object> paramMap) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
try {
|
||||
System.out.println("========== saveBomAssignment ==========");
|
||||
System.out.println("projectObjId: " + paramMap.get("projectObjId"));
|
||||
System.out.println("sourceBomType: " + paramMap.get("sourceBomType"));
|
||||
System.out.println("sourceBomObjId: " + paramMap.get("sourceBomObjId"));
|
||||
System.out.println("partNo: " + paramMap.get("partNo"));
|
||||
System.out.println("partName: " + paramMap.get("partName"));
|
||||
|
||||
// PROJECT_MGMT 테이블 업데이트
|
||||
boolean updateResult = productionPlanningService.saveBomAssignment(request, paramMap);
|
||||
|
||||
if(updateResult) {
|
||||
resultMap.put("result", "success");
|
||||
resultMap.put("message", "M-BOM 기준 정보가 저장되었습니다.");
|
||||
} else {
|
||||
resultMap.put("result", "fail");
|
||||
resultMap.put("message", "저장에 실패했습니다.");
|
||||
}
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
resultMap.put("result", "error");
|
||||
resultMap.put("message", "오류가 발생했습니다: " + e.getMessage());
|
||||
}
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
@RequestMapping("/productionplanning/getMbomAssignmentInfo.do")
|
||||
@ResponseBody
|
||||
public Map<String, Object> getMbomAssignmentInfo(HttpServletRequest request, @RequestParam Map<String, Object> paramMap) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
try {
|
||||
String projectObjId = CommonUtils.checkNull((String)paramMap.get("projectObjId"));
|
||||
System.out.println("========== getMbomAssignmentInfo ==========");
|
||||
System.out.println("projectObjId: " + projectObjId);
|
||||
|
||||
// PROJECT_MGMT에서 BOM 할당 정보 조회
|
||||
Map<String, Object> assignmentInfo = productionPlanningService.getMbomAssignment(projectObjId);
|
||||
|
||||
if(assignmentInfo != null && !assignmentInfo.isEmpty()) {
|
||||
resultMap.putAll(assignmentInfo);
|
||||
}
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
resultMap.put("error", "오류가 발생했습니다: " + e.getMessage());
|
||||
}
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 프로젝트별 최신 M-BOM 조회
|
||||
*/
|
||||
@RequestMapping("/productionplanning/getLatestMbomByProjectId.do")
|
||||
@ResponseBody
|
||||
public Map<String, Object> getLatestMbomByProjectId(HttpServletRequest request, @RequestParam Map<String, Object> paramMap) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
try {
|
||||
String projectObjId = CommonUtils.checkNull((String)paramMap.get("projectObjId"));
|
||||
paramMap.put("projectObjId", projectObjId);
|
||||
|
||||
// MBOM_HEADER에서 해당 프로젝트의 최신 M-BOM 조회
|
||||
Map<String, Object> savedMbom = commonService.selectOne("productionplanning.getLatestMbomByProjectId", request, paramMap);
|
||||
|
||||
if(savedMbom != null && !savedMbom.isEmpty()) {
|
||||
resultMap = (Map<String, Object>) CommonUtils.toUpperCaseMapKey(savedMbom);
|
||||
}
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
resultMap.put("error", "오류가 발생했습니다: " + e.getMessage());
|
||||
}
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* M-BOM 저장
|
||||
* 최초 저장 시: M-BOM 품번 생성 + 데이터 저장
|
||||
* 수정 저장 시: 동일 품번으로 업데이트 + 이력 저장
|
||||
*/
|
||||
@RequestMapping("/productionplanning/saveMbom.do")
|
||||
@ResponseBody
|
||||
public Map<String, Object> saveMbom(HttpServletRequest request, @RequestBody Map<String, Object> paramMap) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
try {
|
||||
System.out.println("========== saveMbom ==========");
|
||||
|
||||
String projectObjId = CommonUtils.checkNull((String)paramMap.get("projectObjId"));
|
||||
String mbomPartNo = CommonUtils.checkNull((String)paramMap.get("mbomPartNo"));
|
||||
boolean isUpdate = "true".equals(String.valueOf(paramMap.get("isUpdate")));
|
||||
|
||||
System.out.println("projectObjId: " + projectObjId);
|
||||
System.out.println("mbomPartNo: " + mbomPartNo);
|
||||
System.out.println("isUpdate: " + isUpdate);
|
||||
|
||||
// PROJECT_MGMT에서 할당 정보 조회
|
||||
Map<String, Object> assignment = (Map<String, Object>) commonService.selectOne("productionplanning.getMbomAssignment", request, paramMap);
|
||||
|
||||
if(assignment == null || assignment.isEmpty()) {
|
||||
resultMap.put("result", "fail");
|
||||
resultMap.put("message", "M-BOM 기준 정보가 없습니다. BOM 복사 팝업에서 먼저 기준을 설정해주세요.");
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
String sourceBomType = CommonUtils.checkNull(assignment.get("SOURCE_BOM_TYPE"));
|
||||
String sourceBomObjId = "";
|
||||
String baseBomPartNo = "";
|
||||
|
||||
if("EBOM".equals(sourceBomType)) {
|
||||
sourceBomObjId = CommonUtils.checkNull(assignment.get("SOURCE_EBOM_OBJID"));
|
||||
baseBomPartNo = CommonUtils.checkNull(assignment.get("EBOM_PART_NO"));
|
||||
} else if("MBOM".equals(sourceBomType)) {
|
||||
sourceBomObjId = CommonUtils.checkNull(assignment.get("SOURCE_MBOM_OBJID"));
|
||||
baseBomPartNo = CommonUtils.checkNull(assignment.get("MBOM_NO"));
|
||||
}
|
||||
|
||||
if(sourceBomObjId.isEmpty()) {
|
||||
resultMap.put("result", "fail");
|
||||
resultMap.put("message", "기준 BOM 정보가 올바르지 않습니다.");
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
// M-BOM 품번 생성 또는 사용
|
||||
String finalMbomNo = "";
|
||||
|
||||
if(!isUpdate || mbomPartNo.isEmpty()) {
|
||||
// 최초 저장: M-BOM 품번 생성
|
||||
finalMbomNo = productionPlanningService.generateMbomNo(request, sourceBomType, baseBomPartNo);
|
||||
System.out.println("생성된 M-BOM 품번: " + finalMbomNo);
|
||||
} else {
|
||||
// 수정 저장: 기존 품번 사용
|
||||
finalMbomNo = mbomPartNo;
|
||||
System.out.println("기존 M-BOM 품번 사용: " + finalMbomNo);
|
||||
}
|
||||
|
||||
paramMap.put("mbomNo", finalMbomNo);
|
||||
paramMap.put("sourceBomType", sourceBomType);
|
||||
paramMap.put("sourceBomObjId", sourceBomObjId);
|
||||
paramMap.put("isUpdate", isUpdate);
|
||||
|
||||
// M-BOM 저장
|
||||
boolean saveResult = productionPlanningService.saveMbom(request, paramMap);
|
||||
|
||||
if(saveResult) {
|
||||
resultMap.put("result", "success");
|
||||
resultMap.put("message", isUpdate ? "M-BOM이 수정되었습니다." : "M-BOM이 생성되었습니다.");
|
||||
resultMap.put("mbomNo", finalMbomNo);
|
||||
} else {
|
||||
resultMap.put("result", "fail");
|
||||
resultMap.put("message", "M-BOM 저장에 실패했습니다.");
|
||||
}
|
||||
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
resultMap.put("result", "error");
|
||||
resultMap.put("message", "오류가 발생했습니다: " + e.getMessage());
|
||||
}
|
||||
return resultMap;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user