package com.pms.controller; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import com.google.gson.Gson; import com.pms.common.bean.PersonBean; import com.pms.common.service.BaseService; import com.pms.common.utils.CommonUtils; import com.pms.common.utils.Constants; import com.pms.salesmgmt.service.ReleaseMgmtService; import com.pms.service.CommonService; import com.pms.service.ProductionPlanningService; @Controller public class ProductionPlanningController extends BaseService { @Autowired CommonService commonService; @Autowired ProductionPlanningService productionPlanningService; // 영업관리 - 출고관리 서비스 @Autowired ReleaseMgmtService releaseMgmtService; /** * 생산관리 -> 현황 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/planningdashboard.do") public String planningdashboard(HttpServletRequest request, @RequestParam Map paramMap){ Map code_map = new HashMap(); try{ //당사프로젟트번호 code_map.put("project_no",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("project_no")),"common.getCusProjectNoList")); //고객사 code_map.put("customer_cd",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("customer_objid")),"common.getsupplyselect")); //제품구분 code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)paramMap.get("product")),"common.getCodeselect")); //공장 //PM code_map.put("pm_user_id", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("pm_user_id")), "common.getUserselect")); //구매 PM request.setAttribute("code_map",code_map); }catch(Exception e){ e.printStackTrace(); } return "/productionplanning/planningdashboard"; } /** * 생산관리 -> 현황 * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/planningdashboardGridList.do") public Map planningdashboardGridList(HttpServletRequest request, @RequestParam Map paramMap){ commonService.selectListPagingNew("productionplanning.planningdashboardGridList", request, paramMap); return paramMap; } /** * 생산관리 -> 생산계획수립 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/planningList.do") public String planningList(HttpServletRequest request, @RequestParam Map paramMap){ Map code_map = new HashMap(); try{ //당사프로젟트번호 code_map.put("project_no",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("project_no")),"common.getCusProjectNoList")); //고객사 code_map.put("customer_cd",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("customer_objid")),"common.getsupplyselect")); //제품구분 code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)paramMap.get("product")),"common.getCodeselect")); //공장 //PM code_map.put("pm_user_id", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("pm_user_id")), "common.getUserselect")); //구매 PM request.setAttribute("code_map",code_map); }catch(Exception e){ e.printStackTrace(); } return "/productionplanning/planningList"; } /** * 생산관리 -> 생산계획수립 * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/planningGridList.do") public Map planningGridList(HttpServletRequest request, @RequestParam Map paramMap){ commonService.selectListPagingNew("productionplanning.planningGridList", request, paramMap); return paramMap; } /** * 생산관리 -> 이슈관리 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/processperformanceList.do") public String processperformanceList(HttpServletRequest request, @RequestParam Map paramMap){ Map code_map = new HashMap(); try{ //당사프로젟트번호 code_map.put("project_no",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("project_no")),"common.getCusProjectNoList")); //고객사 code_map.put("customer_cd",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("customer_objid")),"common.getsupplyselect")); //제품구분 code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)paramMap.get("product")),"common.getCodeselect")); //공장 //PM code_map.put("pm_user_id", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("pm_user_id")), "common.getUserselect")); //구매 PM request.setAttribute("code_map",code_map); }catch(Exception e){ e.printStackTrace(); } return "/productionplanning/processperformanceList"; } /** * 생산관리 -> 공정실적관리 * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/processperformanceGridList.do") public Map processperformanceGridList(HttpServletRequest request, @RequestParam Map paramMap){ commonService.selectListPagingNew("productionplanning.processperformanceGridList", request, paramMap); return paramMap; } /** * 생산관리 -> 이슈관리 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/issuemgmtList.do") public String issuemgmtList(HttpServletRequest request, @RequestParam Map paramMap){ Map code_map = new HashMap(); try{ //당사프로젟트번호 code_map.put("project_no",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("project_no")),"common.getCusProjectNoList")); //이슈구분 code_map.put("issue_category",commonService.bizMakeOptionList("0001611", CommonUtils.nullToEmpty((String)paramMap.get("issue_category")),"common.getCodeselect")); //등록자 code_map.put("writer", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("writer")), "common.getUserselect")); //구매 PM //조치담당자 code_map.put("design_userid", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("design_userid")),"common.getUserselect")); //조치결과 code_map.put("design_result",commonService.bizMakeOptionList("0001615",CommonUtils.nullToEmpty((String)paramMap.get("design_result")),"common.getCodeselect")); request.setAttribute("code_map",code_map); request.setAttribute("paramMap",paramMap); }catch(Exception e){ e.printStackTrace(); } return "/productionplanning/issuemgmtList"; } /** * 생산관리 -> 이슈관리 * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/issuemgmtGridList.do") public Map issuemgmtGridList(HttpServletRequest request, @RequestParam Map paramMap){ commonService.selectListPagingNew("productionplanning.selectPlanningIssueList", request, paramMap); return paramMap; } @RequestMapping("/productionplanning/issueFormPopUp.do") public String issueFormPopUp(HttpServletRequest request, @RequestParam Map paramMap){ Map info = new HashMap(); Map code_map = new HashMap(); String objid = CommonUtils.checkNull(paramMap.get("objId")); try{ info = productionPlanningService.issueFormPopUp(request,paramMap); if(info==null){ objid = CommonUtils.createObjId(); //프로젝트 번호 code_map.put("project_no",commonService.bizMakeOptionList("", "","common.getCusProjectNoList")); //이슈구분 code_map.put("issue_category",commonService.bizMakeOptionList("0001611", "","common.getCodeselect")); //설계담당자 code_map.put("design_userid", commonService.bizMakeOptionList("", "","common.getUserselect")); //설계 조치내역 code_map.put("design_result",commonService.bizMakeOptionList("0001615","","common.getCodeselect")); //구매담당자 code_map.put("purchase_userid", commonService.bizMakeOptionList("", "","common.getUserselect")); //구매 조치내역 code_map.put("purchase_result",commonService.bizMakeOptionList("0001615", "","common.getCodeselect")); //품질담당자 code_map.put("quality_userid", commonService.bizMakeOptionList("", "","common.getUserselect")); //품질 조치내역 code_map.put("quality_result",commonService.bizMakeOptionList("0001615","","common.getCodeselect")); //생산담당자 code_map.put("production_userid", commonService.bizMakeOptionList("", "","common.getUserselect")); //생산 조치내역 code_map.put("production_result",commonService.bizMakeOptionList("0001615", "","common.getCodeselect")); }else{ //프로젝트 번호 code_map.put("project_no",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)info.get("PROJECT_OBJID")),"common.getCusProjectNoList")); //이슈구분 code_map.put("issue_category",commonService.bizMakeOptionList("0001611", CommonUtils.nullToEmpty((String)info.get("ISSUE_CATEGORY")),"common.getCodeselect")); //설계담당자 code_map.put("design_userid", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)info.get("DESIGN_USERID")),"common.getUserselect")); //설계 조치내역 code_map.put("design_result",commonService.bizMakeOptionList("0001615", CommonUtils.nullToEmpty((String)info.get("DESIGN_RESULT")),"common.getCodeselect")); //구매담당자 code_map.put("purchase_userid", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)info.get("PURCHASE_USERID")),"common.getUserselect")); //구매 조치내역 code_map.put("purchase_result",commonService.bizMakeOptionList("0001615", CommonUtils.nullToEmpty((String)info.get("PURCHASE_RESULT")),"common.getCodeselect")); //품질담당자 code_map.put("quality_userid", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)info.get("QUALITY_USERID")),"common.getUserselect")); //품질 조치내역 code_map.put("quality_result",commonService.bizMakeOptionList("0001615",CommonUtils.nullToEmpty((String)info.get("QUALITY_RESULT")),"common.getCodeselect")); //생산담당자 code_map.put("production_userid", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)info.get("PRODUCTION_USERID")),"common.getUserselect")); //생산 조치내역 code_map.put("production_result",commonService.bizMakeOptionList("0001615", CommonUtils.nullToEmpty((String)info.get("PRODUCTION_RESULT")),"common.getCodeselect")); } }catch(Exception e){ e.printStackTrace(); } request.setAttribute("info", info); request.setAttribute("code_map", code_map); request.setAttribute("OBJID", objid); return "/productionplanning/issueFormPopUp"; } /** * 이슈 저장 * @param request * @param paramMap * @return */ @SuppressWarnings("unchecked") @ResponseBody @RequestMapping("/productionplanning/saveissueInfo.do") public Map saveissueInfo(HttpServletRequest request, @RequestParam Map paramMap){ Map result_map = new HashMap(); try { result_map.put("RESULT", productionPlanningService.saveissueInfo(request, paramMap)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return result_map; } /** * 이슈 삭제 * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/planningDelete.do") public Map planningDelete(HttpServletRequest request, @RequestParam Map paramMap){ Map resultMap = productionPlanningService.planningDelete(request, paramMap); return resultMap; } /** * 이슈 배포 * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/planningRelease.do") public Map planningRelease(HttpServletRequest request, @RequestParam Map paramMap){ Map resultMap = productionPlanningService.planningRelease(request, paramMap); return resultMap; } @RequestMapping("/productionplanning/assemblyWbsFormPopUp.do") public String assemblyWbsFormPopUp(HttpServletRequest request, @RequestParam Map paramMap){ Map code_map = new HashMap(); List resultList = null; String search = CommonUtils.checkNull(paramMap.get("search")); try{ code_map.put("project_name",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("project_name")),"common.getProjectNameList")); code_map.put("customer_cd",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("customer_cd")),"common.getsupplyselect")); code_map.put("unit_code",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("unit_code")),"common.getUnitCodeList")); code_map.put("pm_user_id", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("pm_user_id")), "common.getUserselect")); //구매 PM //인계자 code_map.put("transfer_user_id",commonService.bizMakeOptionList("",CommonUtils.nullToEmpty((String)paramMap.get("transfer_user_id")),"common.getUserselect", true, "TRANSFER_USER_ID", "TRANSFER_USER_ID")); //인수담당자 code_map.put("receive_user_id",commonService.bizMakeOptionList("",CommonUtils.nullToEmpty((String)paramMap.get("receive_user_id")),"common.getUserselect", true, "RECEIVE_USER_ID", "RECEIVE_USER_ID")); //조립담당자 code_map.put("assembly_user_id",commonService.bizMakeOptionList("",CommonUtils.nullToEmpty((String)paramMap.get("assembly_user_id")),"common.getUserselect", true, "ASSEMBLY_USER_ID", "ASSEMBLY_USER_ID")); resultList = productionPlanningService.getassemblyWbsList(request,paramMap); }catch(Exception e){ e.printStackTrace(); } request.setAttribute("code_map",code_map); request.setAttribute("List",resultList); return "/productionplanning/assemblyWbsFormPopUp"; } /** * 생산관리 -> 출고관리 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/releaseMgmtList.do") public String releasMgmtList(HttpServletRequest request, @RequestParam Map paramMap){ Map code_map = new HashMap(); try{ //당사프로젟트번호 code_map.put("project_no",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("project_no")),"common.getCusProjectNoList")); //고객사 code_map.put("customer_cd",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("customer_objid")),"common.getsupplyselect")); //제품구분 code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)paramMap.get("product")),"common.getCodeselect")); //공장 //PM code_map.put("pm_user_id", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("pm_user_id")), "common.getUserselect")); //구매 PM request.setAttribute("code_map",code_map); }catch(Exception e){ e.printStackTrace(); } return "/productionplanning/releaseMgmtList"; } /** * 생산관리 -> 출고관리 * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/releaseMgmtGridList.do") public Map releaseMgmtGridList(HttpServletRequest request, @RequestParam Map paramMap){ commonService.selectListPagingNew("productionplanning.releaseMgmtGridList", request, paramMap); return paramMap; } /** * 생산관리 -> 출고관리 등록 PopUp * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/releaseMgmtFormSimplePopUp.do") public String releaseMgmtFormPopUp(HttpServletRequest request, @RequestParam Map paramMap){ Map resultMap = new HashMap(); Map code_map = new HashMap(); try{ resultMap = releaseMgmtService.getReleaseMgmtInfo(request,paramMap); resultMap.put("PM_USER_ID", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("pm_user_id")), "common.getUserselect")); //구매 PM request.setAttribute("resultMap", resultMap); }catch(Exception e){ e.printStackTrace(); } return "/productionplanning/releaseMgmtFormSimplePopUp"; } /** * 생산관리 -> 출고관리 등록 PopUp 저장 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/saveReleaseMgmtInfo.do") public Map saveReleaseMgmtInfo(HttpServletRequest request, @RequestParam Map paramMap){ Map resultMap = new HashMap(); try{ resultMap = productionPlanningService.saveReleaseMgmtInfo(request,paramMap); }catch(Exception e){ e.printStackTrace(); } return resultMap; } /** * 생산관리 -> 셋업관리 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/setupmgmtList.do") public String setupmgmtList(HttpServletRequest request, @RequestParam Map paramMap){ Map code_map = new HashMap(); try{ //프로젝트번호 code_map.put("project_no",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("project_no")),"common.getCusProjectNoList")); //고객사 code_map.put("customer_cd",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("customer_objid")),"common.getsupplyselect")); //제품구분 code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)paramMap.get("product")),"common.getCodeselect")); //공장 //PM code_map.put("pm_user_id", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("pm_user_id")), "common.getUserselect")); //구매 PM request.setAttribute("code_map",code_map); }catch(Exception e){ e.printStackTrace(); } return "/productionplanning/setupmgmtList"; } /** * 생산관리 -> 셋업관리 * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/setupmgmtGridList.do") public Map setupmgmtGridList(HttpServletRequest request, @RequestParam Map paramMap){ commonService.selectListPagingNew("productionplanning.selectSetupMgmtList", request, paramMap); return paramMap; } /** * 공정실적 등록 * @param request * @param paramMap * @return */ @SuppressWarnings("unchecked") @ResponseBody @RequestMapping("/productionplanning/saveassemblyList.do") public Map saveassemblyList(HttpServletRequest request, @RequestParam Map paramMap){ Map result_map = new HashMap(); try { result_map.put("RESULT", productionPlanningService.saveassemblyList(request, paramMap)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return result_map; } /** * 생산관리 -> 검사관리 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/inspectionMgmtList.do") public String inspectionMgmtList(HttpServletRequest request, @RequestParam Map paramMap){ Map code_map = new HashMap(); try{ //프로젟트번호 code_map.put("project_no",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("project_no")),"common.getCusProjectNoList")); //고객사 code_map.put("customer_cd",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("customer_objid")),"common.getsupplyselect")); //제품구분 code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)paramMap.get("product")),"common.getCodeselect")); //공장 //PM code_map.put("pm_user_id", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("pm_user_id")), "common.getUserselect")); //구매 PM request.setAttribute("code_map",code_map); }catch(Exception e){ e.printStackTrace(); } return "/productionplanning/inspectionMgmtList"; } /** * 생산관리 -> 검사관리 * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/inspectionGridList.do") public Map inspectionMgmtGridList(HttpServletRequest request, @RequestParam Map paramMap){ commonService.selectListPagingNew("productionplanning.inspectionGridList", request, paramMap); return paramMap; } /** * 생산관리 -> 담당자별 작업현황 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/workStatusByImployeeList.do") public String workStatusByImployeeList(HttpServletRequest request, @RequestParam Map paramMap){ Map code_map = new HashMap(); List list = new ArrayList(); List non_proj_list = new ArrayList(); Map sumPriceMap = new HashMap(); String search = CommonUtils.checkNull(paramMap.get("search")); try{ //프로젟트번호 code_map.put("project_no",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("project_no")),"common.getCusProjectNoList")); //등록자 code_map.put("worker", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("worker")), "common.getUserselect")); //구매 PM //부서 code_map.put("busUsersDeptId",commonService.bizMakeOptionList(Constants.BUS_CONTENT , CommonUtils.nullToEmpty((String)paramMap.get("busUsersDeptId")),"common.getDeptselect")); //팀 if("Y".equals(search)){ sumPriceMap = commonService.selectOne("productionplanning.workStatusByImployeeList_sum", request, paramMap); list = CommonUtils.keyChangeUpperList(productionPlanningService.getWorkStatusByImployeeList(request,paramMap)); non_proj_list = CommonUtils.keyChangeUpperList(productionPlanningService.getWorkStatusByImployeeNPList(request,paramMap)); } request.setAttribute("code_map",code_map); request.setAttribute("paramMap",paramMap); request.setAttribute("LIST", list); request.setAttribute("NP_LIST", non_proj_list); request.setAttribute("SUM_PRICE_MAP", sumPriceMap); }catch(Exception e){ e.printStackTrace(); } return "/productionplanning/workStatusByImployeeList"; } /** * 생산관리 -> 프로젝트별 작업현황 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/workStatusByProjectList.do") public String workStatusByProjectList(HttpServletRequest request, @RequestParam Map paramMap){ Map code_map = new HashMap(); List list = new ArrayList(); Map sumPriceMap = new HashMap(); String search = CommonUtils.checkNull(paramMap.get("search")); try{ //프로젟트번호 code_map.put("project_no",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("project_no")),"common.getCusProjectNoList")); //등록자 code_map.put("worker", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("worker")), "common.getUserselect")); //구매 PM //부서 code_map.put("busUsersDeptId",commonService.bizMakeOptionList(Constants.BUS_CONTENT , CommonUtils.nullToEmpty((String)paramMap.get("busUsersDeptId")),"common.getDeptselect")); //팀 if("Y".equals(search)){ sumPriceMap = commonService.selectOne("productionplanning.workStatusByProjectList_sum", request, paramMap); list = CommonUtils.keyChangeUpperList(productionPlanningService.getworkStatusByProjectList(request,paramMap)); } request.setAttribute("code_map",code_map); request.setAttribute("paramMap",paramMap); request.setAttribute("LIST", list); request.setAttribute("SUM_PRICE_MAP", sumPriceMap); }catch(Exception e){ e.printStackTrace(); } return "/productionplanning/workStatusByProjectList"; } /** * 생산관리 -> 공정실적 등록 인수 History PopUp * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/assemblyWbsHistoryPopUp.do") public String assemblyWbsHistoryPopUp(HttpServletRequest request, @RequestParam Map paramMap){ //List list = new ArrayList(); Map code_map = new HashMap(); try{ //list = productionPlanningService.getAssemblyWbsHistoryInfo(request,paramMap); }catch(Exception e){ e.printStackTrace(); } //request.setAttribute("list", list); return "/productionplanning/assemblyWbsHistoryPopUp"; } @ResponseBody @RequestMapping("/productionplanning/getAssemblyWbsHistoryList.do") public List getAssemblyWbsHistoryList(HttpServletRequest request, @RequestParam Map paramMap){ List> detailList = new ArrayList(); try { detailList = commonService.selectList("productionplanning.getAssemblyWbsHistoryList", request, paramMap); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("detailList:"+detailList); return detailList; } @RequestMapping("/productionplanning/deleteassemblyWbsHistoryList.do") public String deleteinventoryHistoryList(HttpServletRequest request, @RequestParam Map paramMap){ try { request.setAttribute("RESULT", CommonUtils.getJsonMap(productionPlanningService.deleteassemblyWbsHistoryList(request, paramMap)) ); } catch (Exception e) { e.printStackTrace(); } return "/ajax/ajaxResult"; } /** * 인수인계 History 저장 * @param request * @param paramMap * @return */ @SuppressWarnings("unchecked") @ResponseBody @RequestMapping("/productionplanning/saveAssemblyWbsHistory.do") public Map saveAssemblyWbsHistory(HttpServletRequest request, @RequestParam Map paramMap){ Map result_map = new HashMap(); try { result_map = productionPlanningService.saveAssemblyWbsHistory(request, paramMap); } catch (Exception e) { e.printStackTrace(); } return result_map; } /** * 작업관리 -> 현황 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/workMgmtdashboard.do") public String workMgmtdashboard(HttpServletRequest request, @RequestParam Map paramMap){ Map code_map = new HashMap(); try{ //프로젝트번호 code_map.put("project_no",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("project_no")),"common.getCusProjectNoList")); //고객사 code_map.put("customer_cd",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("customer_objid")),"common.getsupplyselect")); //제품구분 code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)paramMap.get("product")),"common.getCodeselect")); //공장 //PM code_map.put("pm_user_id", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("pm_user_id")), "common.getUserselect")); //구매 PM //작업자 code_map.put("worker", commonService.bizMakeOptionList("", "", "common.getUserselect")); //구매 PM //부서 code_map.put("busUsersDeptId",commonService.bizMakeOptionList(Constants.BUS_CONTENT , CommonUtils.nullToEmpty((String)paramMap.get("busUsersDeptId")),"common.getDeptselect")); //팀 request.setAttribute("code_map",code_map); }catch(Exception e){ e.printStackTrace(); } return "/productionplanning/workMgmtdashboard"; } /** * 생산관리 -> 현황 * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/workMgmtdashboardGridList.do") public Map workMgmtdashboardGridList(HttpServletRequest request, @RequestParam Map paramMap){ commonService.selectListPagingNew("productionplanning.workMgmtdashboardGridList", request, paramMap); return paramMap; } /** * 작업관리 -> 작업일지 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/workDiaryList.do") public String workDiaryList(HttpServletRequest request, @RequestParam Map paramMap){ Map code_map = new HashMap(); try{ //프로젝트번호 code_map.put("project_no",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("project_no")),"common.getCusProjectNoList")); //등록자 code_map.put("writer", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("writer")), "common.getUserselect")); //구매 PM //작업자 code_map.put("worker", commonService.bizMakeOptionList("", "", "common.getUserselect")); //구매 PM //부서 code_map.put("busUsersDeptId",commonService.bizMakeOptionList(Constants.BUS_CONTENT , CommonUtils.nullToEmpty((String)paramMap.get("busUsersDeptId")),"common.getDeptselect")); //팀 request.setAttribute("code_map",code_map); request.setAttribute("paramMap",paramMap); }catch(Exception e){ e.printStackTrace(); } return "/productionplanning/workDiaryList"; } /** * 작업관리 -> 작업일지 * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/workDiaryGridList.do") public Map workDiaryGridList(HttpServletRequest request, @RequestParam Map paramMap){ commonService.selectListPagingNew("productionplanning.workDiaryGridList", request, paramMap); return paramMap; } @RequestMapping("/productionplanning/workDiaryFormPopUp.do") public String workDiaryFormPopUp(HttpServletRequest request, @RequestParam Map paramMap){ Map info = new HashMap(); Map code_map = new HashMap(); String objid = CommonUtils.checkNull(paramMap.get("objId")); try{ info = productionPlanningService.workDiaryFormPopUp(request,paramMap); if(info==null){ objid = CommonUtils.createObjId(); //프로젝트 번호 code_map.put("project_no",commonService.bizMakeOptionList("", "","common.getCusProjectNoList")); //작업자 code_map.put("worker_id", commonService.bizMakeOptionList("", "","common.getUserselect")); }else{ //프로젝트 번호 code_map.put("project_no",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)info.get("CONTRACT_OBJID")),"common.getCusProjectNoList")); //작업자 code_map.put("worker_id", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)info.get("WORKER_ID")),"common.getUserselect")); } }catch(Exception e){ e.printStackTrace(); } request.setAttribute("info", info); request.setAttribute("code_map", code_map); request.setAttribute("OBJID", objid); return "/productionplanning/workDiaryFormPopUp"; } @RequestMapping("/productionplanning/workDiaryFormPopUp_NEW.do") public String workDiaryFormPopUp_NEW(HttpServletRequest request, @RequestParam Map paramMap){ Map info = new HashMap(); Map code_map = new HashMap(); String objid = CommonUtils.checkNull(paramMap.get("objId")); try{ info = productionPlanningService.workDiaryFormPopUp(request,paramMap); if(info==null){ objid = CommonUtils.createObjId(); //프로젝트 번호 code_map.put("project_no",commonService.bizMakeOptionList("", "","common.getCusProjectNoList")); //작업자 code_map.put("worker_id", commonService.bizMakeOptionList("", "","common.getUserselect")); }else{ //프로젝트 번호 code_map.put("project_no",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)info.get("CONTRACT_OBJID")),"common.getCusProjectNoList")); //작업자 code_map.put("worker_id", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)info.get("WORKER_ID")),"common.getUserselect")); } }catch(Exception e){ e.printStackTrace(); } request.setAttribute("info", info); request.setAttribute("code_map", code_map); request.setAttribute("OBJID", objid); return "/productionplanning/workDiaryFormPopUp_NEW"; } /** * 작업일지 저장 * @param request * @param paramMap * @return */ @SuppressWarnings("unchecked") @ResponseBody @RequestMapping("/productionplanning/saveWorkDiaryInfo.do") public Map saveWorkDiaryInfo(HttpServletRequest request, @RequestParam Map paramMap){ Map result_map = new HashMap(); try { result_map.put("RESULT", productionPlanningService.saveWorkDiaryInfo(request, paramMap)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return result_map; } /** * 작업일지 삭제 * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/workDiaryDelete.do") public Map workDiaryDelete(HttpServletRequest request, @RequestParam Map paramMap){ Map resultMap = productionPlanningService.workDiaryDelete(request, paramMap); return resultMap; } /** * 작업일지 팀장 확인 * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/workDiaryConfirm.do") public Map workDiaryConfirm(HttpServletRequest request, @RequestParam Map paramMap){ Map resultMap = productionPlanningService.workDiaryConfirm(request, paramMap); return resultMap; } /** * 생산관리 -> M-BOM 관리 목록 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/mBomMgmt.do") public String mBomMgmt(HttpServletRequest request, @RequestParam Map paramMap){ Map code_map = new HashMap(); try{ request.setAttribute("code_map", code_map); }catch(Exception e){ e.printStackTrace(); } return "/productionplanning/mBomMgmtList"; } /** * 생산관리 -> M-BOM 관리 그리드 목록 * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/mBomMgmtGridList.do") public Map mBomMgmtGridList(HttpServletRequest request, @RequestParam Map paramMap){ commonService.selectListPagingNew("productionplanning.mBomMgmtGridList", request, paramMap); return paramMap; } /** * M-BOM E-BOM 선택 팝업 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/mBomEbomSelectPopup.do") public String mBomEbomSelectPopup(HttpServletRequest request, @RequestParam Map paramMap) { try { // 필요한 코드 맵 설정 (structureList.jsp 참고) Map codeMap = new HashMap<>(); // 제품구분 코드 - structureList와 동일하게 설정 codeMap.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)paramMap.get("product_cd")), "common.getCodeselect")); request.setAttribute("code_map", codeMap); // 현재 할당된 E-BOM 정보 조회 String bomReportObjid = CommonUtils.checkNull(paramMap.get("bomReportObjid")); if(!"".equals(bomReportObjid)) { // E-BOM 정보 조회 Map ebomInfo = productionPlanningService.getEbomInfo(bomReportObjid); request.setAttribute("currentEbom", ebomInfo); } } catch(Exception e) { e.printStackTrace(); } return "/productionplanning/mBomEbomSelectPopup"; } /** * M-BOM 조회 팝업 (읽기 전용) * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/mBomViewPopup.do") public String mBomViewPopup(HttpServletRequest request, @RequestParam Map paramMap) { return "/productionplanning/mBomViewPopup"; } /** * M-BOM 복사 팝업 메인 (frameset) * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/mBomFormPopup.do") public String mBomFormPopup(HttpServletRequest request, @RequestParam Map paramMap) { try { String objId = CommonUtils.checkNull(paramMap.get("objId")); System.out.println("========== mBomFormPopup =========="); System.out.println("objId: " + objId); // PROJECT_MGMT 정보 조회 if(!"".equals(objId)) { paramMap.put("objId", objId); Map projectInfo = commonService.selectOne("productionplanning.getProjectMgmtDetail", request, paramMap); System.out.println("projectInfo: " + projectInfo); if(projectInfo != null && !projectInfo.isEmpty()) { request.setAttribute("info", projectInfo); // Machine 이외 제품: 품번 기준 M-BOM 템플릿 조회 String productCode = CommonUtils.checkNull(projectInfo.get("PRODUCT_CODE")); String partNo = CommonUtils.checkNull(projectInfo.get("PART_NO")); System.out.println("제품구분 코드: " + productCode); System.out.println("품번: " + partNo); // Machine(0000928) 이외 제품이고 품번이 있는 경우 if(!"0000928".equals(productCode) && !"".equals(partNo)) { Map templateParam = new HashMap<>(); templateParam.put("partNo", partNo); // 품번 기준 최신 M-BOM 템플릿 조회 Map template = commonService.selectOne("productionplanning.getLatestMbomTemplateByPartNo", request, templateParam); if(template != null && !template.isEmpty()) { System.out.println("M-BOM 템플릿 발견: " + template.get("TEMPLATE_MBOM_NO")); // 템플릿 상세 항목 조회 Map detailParam = new HashMap<>(); detailParam.put("mbomHeaderObjid", template.get("TEMPLATE_HEADER_OBJID")); List> templateDetails = commonService.selectList("productionplanning.getMbomTemplateDetails", request, detailParam); System.out.println("템플릿 상세 항목 수: " + (templateDetails != null ? templateDetails.size() : 0)); request.setAttribute("mbomTemplate", template); request.setAttribute("mbomTemplateDetails", templateDetails); } else { System.out.println("해당 품번의 M-BOM 템플릿 없음"); } } } else { System.out.println("projectInfo is null or empty!"); } } } catch(Exception e) { e.printStackTrace(); } return "/productionplanning/mBomPopupHeaderFs"; } /** * M-BOM 조회 팝업 상단 헤더 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/mBomHeaderPopup.do") public String mBomHeaderPopup(HttpServletRequest request, @RequestParam Map paramMap) { try { String objId = CommonUtils.checkNull(paramMap.get("objId")); if(!"".equals(objId)) { paramMap.put("objId", objId); Map projectInfo = commonService.selectOne("productionplanning.getProjectMgmtDetail", request, paramMap); request.setAttribute("info", projectInfo); } } catch(Exception e) { e.printStackTrace(); } return "/productionplanning/mBomHeaderPopup"; } /** * M-BOM 조회 팝업 중앙 버튼 영역 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/mBomCenterBtnPopup.do") public String mBomCenterBtnPopup(HttpServletRequest request, @RequestParam Map paramMap) { return "/productionplanning/mBomCenterBtnPopup"; } /** * M-BOM 조회 팝업 중앙 버튼 영역 */ @RequestMapping("/productionplanning/mBomPopupCenter.do") public String mBomPopupCenter(HttpServletRequest request, @RequestParam Map paramMap) { return "/productionplanning/mBomPopupCenter"; } /** * M-BOM 조회 팝업 오른쪽 E-BOM 목록 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/mBomPopupRight.do") public String mBomPopupRight(HttpServletRequest request, @RequestParam Map paramMap) { return "/productionplanning/mBomPopupRight"; } /** * E-BOM 목록 조회 (AJAX) * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/getEbomList.do") @ResponseBody public Map getEbomList(HttpServletRequest request, @RequestParam Map paramMap) { Map result = new HashMap<>(); try { List> list = commonService.selectList("productionplanning.getEbomList", request, paramMap); result.put("list", list); result.put("result", true); } catch(Exception e) { e.printStackTrace(); result.put("result", false); result.put("list", new ArrayList<>()); } return result; } /** * M-BOM 조회 팝업 하단 frameset * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/mBomBottomPopupFS.do") public String mBomBottomPopupFS(HttpServletRequest request, @RequestParam Map paramMap) { return "/productionplanning/mBomPopupFs"; } /** * M-BOM 조회 팝업 왼쪽 트리 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/mBomPopupLeft.do") public String mBomPopupLeft(HttpServletRequest request, @RequestParam Map paramMap) { Gson gson = new Gson(); try { String objId = CommonUtils.checkNull(paramMap.get("objId")); // PROJECT_MGMT 정보 조회 if(!"".equals(objId)) { paramMap.put("objId", objId); Map projectInfo = commonService.selectOne("productionplanning.getProjectMgmtDetail", request, paramMap); System.out.println("========== mBomPopupLeft =========="); System.out.println("objId: " + objId); System.out.println("projectInfo: " + projectInfo); 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")); String bomReportObjid = ""; String bomDataType = ""; // "SAVED", "TEMPLATE", "ASSIGNED_EBOM", "ASSIGNED_MBOM" // 1. 먼저 저장된 M-BOM이 있는지 확인 (MBOM_HEADER 테이블) Map savedMbomParam = new HashMap<>(); savedMbomParam.put("projectObjId", objId); Map savedMbom = commonService.selectOne("productionplanning.getLatestMbomByProjectId", request, savedMbomParam); if(savedMbom != null && savedMbom.get("OBJID") != null) { // 저장된 M-BOM이 있으면 해당 M-BOM 사용 bomReportObjid = CommonUtils.checkNull(savedMbom.get("OBJID")); bomDataType = "SAVED"; 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")); if("EBOM".equals(sourceBomType) && !"".equals(sourceEbomObjId)) { bomReportObjid = sourceEbomObjId; bomDataType = "ASSIGNED_EBOM"; System.out.println("할당된 E-BOM 사용: " + bomReportObjid); } else if("MBOM".equals(sourceBomType) && !"".equals(sourceMbomObjId)) { bomReportObjid = sourceMbomObjId; bomDataType = "ASSIGNED_MBOM"; System.out.println("할당된 M-BOM 사용: " + bomReportObjid); } else { // 할당된 BOM도 없으면 Machine 이외 제품은 템플릿 확인 String productCode = CommonUtils.checkNull(projectInfo.get("PRODUCT_CODE")); String partNo = CommonUtils.checkNull(projectInfo.get("PART_NO")); if(!"0000928".equals(productCode) && !"".equals(partNo)) { System.out.println("Machine 이외 제품 - 템플릿 조회 시도"); Map templateParam = new HashMap<>(); templateParam.put("partNo", partNo); Map template = commonService.selectOne("productionplanning.getLatestMbomTemplateByPartNo", request, templateParam); if(template != null && !template.isEmpty()) { bomReportObjid = CommonUtils.checkNull(template.get("TEMPLATE_HEADER_OBJID")); bomDataType = "TEMPLATE"; System.out.println("템플릿 M-BOM 사용: " + bomReportObjid); } else { bomReportObjid = CommonUtils.checkNull(projectInfo.get("BOM_REPORT_OBJID")); System.out.println("기존 BOM_REPORT_OBJID 사용: " + bomReportObjid); } } else { bomReportObjid = CommonUtils.checkNull(projectInfo.get("BOM_REPORT_OBJID")); System.out.println("기존 BOM_REPORT_OBJID 사용: " + bomReportObjid); } } } // 2. BOM 데이터 조회 List> mbomDetailList = null; if(!"".equals(bomReportObjid)) { if("SAVED".equals(bomDataType)) { // 저장된 M-BOM: MBOM_DETAIL 테이블에서 조회 (ORDER_QTY, PRODUCTION_QTY 포함) Map mbomParam = new HashMap<>(); mbomParam.put("mbomHeaderObjid", bomReportObjid); List tempList = commonService.selectList("productionplanning.getSavedMbomTreeList", request, mbomParam); mbomDetailList = (List>) (List) CommonUtils.keyChangeUpperList(tempList); System.out.println("저장된 M-BOM 조회 - mbomDetailList size: " + (mbomDetailList != null ? mbomDetailList.size() : 0)); } else if("TEMPLATE".equals(bomDataType)) { // 템플릿 M-BOM: MBOM_DETAIL 테이블에서 조회 (ORDER_QTY, PRODUCTION_QTY 제외) Map mbomParam = new HashMap<>(); mbomParam.put("mbomHeaderObjid", bomReportObjid); List tempList = commonService.selectList("productionplanning.getMbomTemplateDetails", request, mbomParam); mbomDetailList = (List>) (List) CommonUtils.keyChangeUpperList(tempList); System.out.println("템플릿 M-BOM 조회 - mbomDetailList size: " + (mbomDetailList != null ? mbomDetailList.size() : 0)); } else if("ASSIGNED_EBOM".equals(bomDataType)) { // 할당된 E-BOM: BOM_PART_QTY 테이블에서 조회 Map bomParam = new HashMap<>(); bomParam.put("bomReportObjId", bomReportObjid); bomParam.put("search_type", "working"); mbomDetailList = commonService.selectList("partMng.getBOMTreeList", request, bomParam); System.out.println("할당된 E-BOM 조회 - mbomDetailList size: " + (mbomDetailList != null ? mbomDetailList.size() : 0)); } else if("ASSIGNED_MBOM".equals(bomDataType)) { // 할당된 M-BOM: 구조만 조회 (생산 정보 제외) Map mbomParam = new HashMap<>(); mbomParam.put("mbomHeaderObjid", bomReportObjid); List tempList = commonService.selectList("productionplanning.getMbomStructureOnly", request, mbomParam); // UpperKeyMap으로 이미 대문자 변환되어 오므로 keyChangeUpperList 불필요 mbomDetailList = (List>) (List) tempList; System.out.println("할당된 M-BOM 구조만 조회 - size: " + (mbomDetailList != null ? mbomDetailList.size() : 0)); } } if(mbomDetailList != null && !mbomDetailList.isEmpty()) { // 저장된 M-BOM 데이터가 있으면 이를 표시 int maxLevel = 1; for(Map item : mbomDetailList) { Integer level = (Integer) item.get("LEVEL"); if(level != null && level > maxLevel) { maxLevel = level; } // LEVEL_1, LEVEL_2, ... 필드 추가 if(level != null) { for(int i = 1; i <= level; i++) { if(i == level) { item.put("LEVEL_" + i, "*"); } else { item.put("LEVEL_" + i, ""); } } } } request.setAttribute("MAXLEV", maxLevel); request.setAttribute("bomTreeListJson", gson.toJson(mbomDetailList)); return "/productionplanning/mBomPopupLeft"; } } } } catch(Exception e) { e.printStackTrace(); } // 데이터가 없을 때 빈 배열 설정 request.setAttribute("MAXLEV", 1); request.setAttribute("bomTreeListJson", "[]"); return "/productionplanning/mBomPopupLeft"; } /** * E-BOM을 M-BOM(PROJECT_MGMT)에 할당 * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/assignEbomToMbom.do") public Map assignEbomToMbom(HttpServletRequest request, @RequestParam Map paramMap) { Map resultMap = new HashMap<>(); try { String projectMgmtObjid = CommonUtils.checkNull(paramMap.get("projectMgmtObjid")); String bomReportObjid = CommonUtils.checkNull(paramMap.get("bomReportObjid")); if(projectMgmtObjid.isEmpty() || bomReportObjid.isEmpty()) { resultMap.put("success", false); resultMap.put("message", "필수 파라미터가 누락되었습니다."); return resultMap; } // PROJECT_MGMT 테이블의 PART_OBJID 업데이트 int updateResult = productionPlanningService.assignEbomToProject(projectMgmtObjid, bomReportObjid); if(updateResult > 0) { resultMap.put("success", true); resultMap.put("message", "E-BOM이 할당되었습니다."); } else { resultMap.put("success", false); resultMap.put("message", "할당에 실패했습니다."); } } catch(Exception e) { e.printStackTrace(); resultMap.put("success", false); resultMap.put("message", "오류가 발생했습니다: " + e.getMessage()); } return resultMap; } /** * M-BOM 목록 조회 (검색 조건 포함) * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/getMbomList.do") public Map getMbomList(HttpServletRequest request, @RequestParam Map paramMap) { Map result = new HashMap<>(); try { // 검색 조건에 맞는 M-BOM 목록 조회 List> list = commonService.selectList("productionplanning.getMbomList", request, paramMap); result.put("list", list); result.put("result", true); } catch(Exception e) { e.printStackTrace(); result.put("result", false); result.put("list", new ArrayList<>()); } return result; } /** * 품번으로 최신 M-BOM 조회 (Machine 이외 제품용) * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/getLatestMbomByPartNo.do") public Map getLatestMbomByPartNo(HttpServletRequest request, @RequestParam Map paramMap) { Map resultMap = new HashMap<>(); try { String partNo = CommonUtils.checkNull(paramMap.get("partNo")); if("".equals(partNo)) { return resultMap; } // 최신 M-BOM 조회 Map mbomInfo = commonService.selectOne("productionplanning.getLatestMbomByPartNo", request, paramMap); if(mbomInfo != null) { resultMap.putAll(mbomInfo); } } catch(Exception e) { e.printStackTrace(); } return resultMap; } /** * M-BOM 이력 조회 * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/getMbomHistory.do") public Map getMbomHistory(HttpServletRequest request, @RequestParam Map paramMap) { Map resultMap = new HashMap<>(); try { String projectObjId = CommonUtils.checkNull(paramMap.get("projectObjId")); if("".equals(projectObjId)) { resultMap.put("historyList", new ArrayList<>()); return resultMap; } System.out.println("========== getMbomHistory =========="); System.out.println("projectObjId: " + projectObjId); // M-BOM 이력 조회 (PROJECT_OBJID로 조회) List> 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(); resultMap.put("historyList", new ArrayList<>()); } return resultMap; } /** * M-BOM Part 연결 (E-BOM의 relatePartInfo와 동일) * @param request * @param paramMap * @param rightCheckedArr * @return */ @ResponseBody @RequestMapping("/productionplanning/relateMbomPartInfo.do") public Map relateMbomPartInfo(HttpServletRequest request, @RequestParam Map paramMap, @RequestParam(value = "rightCheckedArr[]") List rightCheckedArr){ Map resultMap = new HashMap<>(); try { boolean result = productionPlanningService.relateMbomPartInfo(request, paramMap, rightCheckedArr); resultMap.put("result", result); } catch(Exception e) { e.printStackTrace(); resultMap.put("result", false); } return resultMap; } /** * M-BOM Part 연결 해제 (E-BOM의 deleteStatusPartRelateInfo와 동일) * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/deleteMbomPartRelateInfo.do") public Map deleteMbomPartRelateInfo(HttpServletRequest request, @RequestParam Map paramMap){ Map resultMap = new HashMap<>(); try { boolean result = productionPlanningService.deleteMbomPartRelateInfo(request, paramMap); resultMap.put("result", result); } catch(Exception e) { e.printStackTrace(); resultMap.put("result", false); } return resultMap; } /** * M-BOM Part 변경 (E-BOM의 changeRelatePartInfo와 동일) * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/changeMbomPartInfo.do") public Map changeMbomPartInfo(HttpServletRequest request, @RequestParam Map paramMap){ Map resultMap = new HashMap<>(); try { boolean result = productionPlanningService.changeMbomPartInfo(request, paramMap); resultMap.put("result", result); } catch(Exception e) { e.printStackTrace(); resultMap.put("result", false); } return resultMap; } /** * BOM 할당 정보 저장 (M-BOM 기준 설정) * PROJECT_MGMT 테이블에 E-BOM 또는 M-BOM 할당 정보만 저장 * 실제 M-BOM 생성은 M-BOM 상세 팝업에서 수행 */ @RequestMapping("/productionplanning/saveBomAssignment.do") @ResponseBody public Map saveBomAssignment(HttpServletRequest request, @RequestBody Map paramMap) { Map 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 getMbomAssignmentInfo(HttpServletRequest request, @RequestParam Map paramMap) { Map 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 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 getLatestMbomByProjectId(HttpServletRequest request, @RequestParam Map paramMap) { Map resultMap = new HashMap<>(); try { String projectObjId = CommonUtils.checkNull((String)paramMap.get("projectObjId")); paramMap.put("projectObjId", projectObjId); // MBOM_HEADER에서 해당 프로젝트의 최신 M-BOM 조회 Map savedMbom = commonService.selectOne("productionplanning.getLatestMbomByProjectId", request, paramMap); if(savedMbom != null && !savedMbom.isEmpty()) { resultMap = (Map) 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 saveMbom(HttpServletRequest request, @RequestBody Map paramMap) { Map 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 assignment = (Map) commonService.selectOne("productionplanning.getMbomAssignment", request, paramMap); if(assignment == null || assignment.isEmpty()) { resultMap.put("result", "fail"); resultMap.put("message", "프로젝트 정보를 찾을 수 없습니다."); return resultMap; } String sourceBomType = CommonUtils.checkNull(assignment.get("SOURCE_BOM_TYPE")); String sourceBomObjId = ""; String baseBomPartNo = ""; String productCode = CommonUtils.checkNull(assignment.get("PRODUCT_CODE")); String partNo = CommonUtils.checkNull(assignment.get("PART_NO")); 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")); } else { // 할당 정보가 없는 경우 - Machine 이외 제품은 템플릿 기반 저장 허용 if(!"0000928".equals(productCode) && !"".equals(partNo)) { System.out.println("Machine 이외 제품 - 템플릿 기반 저장 허용"); sourceBomType = "TEMPLATE"; // 템플릿 기반 저장 표시 baseBomPartNo = partNo; } else { // Machine 제품이거나 품번이 없으면 할당 필요 resultMap.put("result", "fail"); resultMap.put("message", "M-BOM 기준 정보가 없습니다. 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; } /** * M-BOM 이력 팝업 */ @RequestMapping("/productionplanning/mBomHistoryPopup.do") public String mBomHistoryPopup(HttpServletRequest request, @RequestParam Map paramMap) { try { String mbomHeaderObjid = CommonUtils.checkNull(paramMap.get("mbomHeaderObjid")); if(!"".equals(mbomHeaderObjid)) { // M-BOM 헤더 정보 조회 paramMap.put("mbomHeaderObjid", mbomHeaderObjid); Map mbomHeader = commonService.selectOne("productionplanning.getMbomHeaderByObjid", request, paramMap); request.setAttribute("mbomHeader", mbomHeader); // M-BOM 이력 조회 List> historyList = commonService.selectList("productionplanning.getMbomHistoryList", request, paramMap); request.setAttribute("historyList", historyList); } } catch(Exception e) { e.printStackTrace(); } return "/productionplanning/mBomHistoryPopup"; } /** * 생산관리 -> 생산계획&실적관리 목록 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/prodPlanResultMgmtList.do") public String prodPlanResultMgmtList(HttpServletRequest request, @RequestParam Map paramMap){ Map code_map = new HashMap(); try{ // 프로젝트번호 code_map.put("project_no", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("project_no")), "common.getCusProjectNoList")); // 제품구분 code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)paramMap.get("product_code")), "common.getCodeselect")); // 주문유형 code_map.put("category_cd", commonService.bizMakeOptionList("0000167", CommonUtils.nullToEmpty((String)paramMap.get("category_code")), "common.getCodeselect")); // 생산유형 code_map.put("production_type_cd", commonService.bizMakeOptionList("0001832", CommonUtils.nullToEmpty((String)paramMap.get("production_type")), "common.getCodeselect")); // 고객사 (SUPPLY_MNG + CLIENT_MNG 통합) code_map.put("customer_cd", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("customer_objid")), "common.getsupplyselect")); request.setAttribute("code_map", code_map); }catch(Exception e){ e.printStackTrace(); } return "/productionplanning/prodPlanResultMgmtList"; } /** * 생산관리 -> 생산계획&실적관리 그리드 목록 * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/prodPlanResultMgmtGridList.do") public Map prodPlanResultMgmtGridList(HttpServletRequest request, @RequestParam Map paramMap){ // 프로젝트번호 multiple select 처리 (Java 7 호환) String[] projectNos = request.getParameterValues("search_project_no"); if(projectNos != null && projectNos.length > 0) { StringBuilder sb = new StringBuilder(); for(int i = 0; i < projectNos.length; i++) { if(i > 0) sb.append(","); sb.append(projectNos[i]); } paramMap.put("search_project_nos", sb.toString()); } commonService.selectListPagingNew("productionplanning.prodPlanResultMgmtGridList", request, paramMap); return paramMap; } /** * 생산계획 생성 팝업 * @param request * @param paramMap * @return */ @RequestMapping("/productionplanning/prodPlanFormPopup.do") public String prodPlanFormPopup(HttpServletRequest request, @RequestParam Map paramMap){ Map code_map = new HashMap(); try { String projectObjid = CommonUtils.nullToEmpty((String)paramMap.get("projectObjid")); String prodPlanObjid = CommonUtils.nullToEmpty((String)paramMap.get("prodPlanObjid")); // 프로젝트번호 code_map.put("project_no", commonService.bizMakeOptionList("", projectObjid, "common.getCusProjectNoList")); // 제품구분 code_map.put("product_cd", commonService.bizMakeOptionList("0000001", "", "common.getCodeselect")); // 주문유형 code_map.put("category_cd", commonService.bizMakeOptionList("0000167", "", "common.getCodeselect")); // 생산유형 code_map.put("production_type_cd", commonService.bizMakeOptionList("0001832", "", "common.getCodeselect")); // 고객사 code_map.put("customer_cd", commonService.bizMakeOptionList("", "", "common.getClientMngSupplySelect")); request.setAttribute("code_map", code_map); request.setAttribute("projectObjid", projectObjid); // 수정 모드일 경우 기존 데이터 조회 if(!"".equals(prodPlanObjid)) { Map resultMap = productionPlanningService.getProdPlanInfo(prodPlanObjid); request.setAttribute("resultMap", resultMap); request.setAttribute("actionType", "modify"); } else { request.setAttribute("actionType", "regist"); } } catch(Exception e) { e.printStackTrace(); } return "/productionplanning/prodPlanFormPopup"; } /** * 프로젝트 정보 조회 (생산계획 폼용) * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/getProdPlanProjectInfo.do") public Map getProdPlanProjectInfo(HttpServletRequest request, @RequestParam Map paramMap){ Map resultMap = new HashMap(); try { Map info = productionPlanningService.getProdPlanProjectInfo(paramMap); resultMap.put("result", "success"); resultMap.put("info", info); } catch(Exception e) { e.printStackTrace(); resultMap.put("result", "fail"); resultMap.put("msg", "프로젝트 정보 조회 실패"); } return resultMap; } /** * 생산계획 저장 * @param request * @param paramMap * @return */ @ResponseBody @RequestMapping("/productionplanning/saveProdPlan.do") public Map saveProdPlan(HttpServletRequest request, @RequestParam Map paramMap){ Map resultMap = new HashMap(); try { HttpSession session = request.getSession(); PersonBean person = (PersonBean) session.getAttribute(Constants.PERSON_BEAN); paramMap.put("userId", person.getUserId()); boolean success = productionPlanningService.saveProdPlan(paramMap); if(success) { resultMap.put("result", "success"); resultMap.put("msg", "저장되었습니다."); } else { resultMap.put("result", "fail"); resultMap.put("msg", "저장에 실패했습니다."); } } catch(Exception e) { e.printStackTrace(); resultMap.put("result", "fail"); resultMap.put("msg", "저장 중 오류가 발생했습니다."); } return resultMap; } /** * 생산실적 등록/수정 팝업 */ @RequestMapping("/productionplanning/prodResultFormPopup.do") public String prodResultFormPopup(HttpServletRequest request, @RequestParam Map paramMap) { return "/productionplanning/prodResultFormPopup"; } /** * 생산실적 목록 조회 */ @ResponseBody @RequestMapping("/productionplanning/getProdResultList.do") public Map getProdResultList(HttpServletRequest request, @RequestParam Map paramMap) { Map resultMap = new HashMap(); try { List list = productionPlanningService.getProdResultList(paramMap); resultMap.put("result", "success"); resultMap.put("list", list); } catch(Exception e) { e.printStackTrace(); resultMap.put("result", "fail"); resultMap.put("msg", "조회 실패"); } return resultMap; } /** * 생산실적 저장 (JSON) */ @ResponseBody @RequestMapping(value="/productionplanning/saveProdResultList.do", produces="application/json;charset=UTF-8") public Map saveProdResultList(HttpServletRequest request, @RequestBody Map paramMap) { Map resultMap = new HashMap(); try { HttpSession session = request.getSession(); PersonBean person = (PersonBean) session.getAttribute(Constants.PERSON_BEAN); paramMap.put("userId", person.getUserId()); paramMap.put("userName", person.getUserName()); boolean success = productionPlanningService.saveProdResultList(paramMap); if(success) { resultMap.put("result", "success"); resultMap.put("msg", "저장되었습니다."); } else { resultMap.put("result", "fail"); resultMap.put("msg", "저장에 실패했습니다."); } } catch(Exception e) { e.printStackTrace(); resultMap.put("result", "fail"); resultMap.put("msg", "저장 중 오류가 발생했습니다."); } return resultMap; } /** * 반제품소요량 조회 화면 */ @RequestMapping("/productionplanning/semiProductRequirementList.do") public String semiProductRequirementList(HttpServletRequest request, @RequestParam Map paramMap) { Map code_map = new HashMap(); try { // M-BOM 목록 (셀렉트박스용) code_map.put("mbom_list", commonService.bizMakeOptionList("", "", "productionplanning.getMbomListForSelect2")); request.setAttribute("code_map", code_map); } catch(Exception e) { e.printStackTrace(); } return "/productionplanning/semiProductRequirementList"; } /** * M-BOM 기준 반제품 소요량 조회 * @param request * @param paramMap - mbomItems: [{mbomObjid, qty}, ...] * @return 품번별 합산된 소요량 목록 */ @ResponseBody @RequestMapping(value="/productionplanning/getSemiProductRequirementList.do", produces="application/json;charset=UTF-8") public Map getSemiProductRequirementList(HttpServletRequest request, @RequestBody Map paramMap) { Map resultMap = new HashMap(); try { List list = productionPlanningService.getSemiProductRequirementList(paramMap); resultMap.put("result", "success"); resultMap.put("list", list); } catch(Exception e) { e.printStackTrace(); resultMap.put("result", "fail"); resultMap.put("msg", "조회 실패: " + e.getMessage()); } return resultMap; } /** * 원자재소요량 조회 화면 */ @RequestMapping("/productionplanning/rawMaterialRequirementList.do") public String rawMaterialRequirementList(HttpServletRequest request, @RequestParam Map paramMap) { Map code_map = new HashMap(); try { // M-BOM 목록 (셀렉트박스용) code_map.put("mbom_list", commonService.bizMakeOptionList("", "", "productionplanning.getMbomListForSelect2")); request.setAttribute("code_map", code_map); } catch(Exception e) { e.printStackTrace(); } return "/productionplanning/rawMaterialRequirementList"; } /** * M-BOM 기준 원자재(구매품) 소요량 조회 * @param request * @param paramMap - mbomItems: [{mbomObjid, qty}, ...] * @return 품번별 합산된 소요량 목록 */ @ResponseBody @RequestMapping(value="/productionplanning/getRawMaterialRequirementList.do", produces="application/json;charset=UTF-8") public Map getRawMaterialRequirementList(HttpServletRequest request, @RequestBody Map paramMap) { Map resultMap = new HashMap(); try { List list = productionPlanningService.getRawMaterialRequirementList(paramMap); resultMap.put("result", "success"); resultMap.put("list", list); } catch(Exception e) { e.printStackTrace(); resultMap.put("result", "fail"); resultMap.put("msg", "조회 실패: " + e.getMessage()); } return resultMap; } }