Files
wace_plm/src/com/pms/controller/PartMngController.java

2668 lines
95 KiB
Java

package com.pms.controller;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.forwardedUrl;
import java.io.File;
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.apache.commons.lang3.StringUtils;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.oreilly.servlet.MultipartRequest;
import com.pms.common.FileRenameClass;
import com.pms.common.JsonUtil;
import com.pms.common.SqlMapConfig;
import com.pms.common.bean.PersonBean;
import com.pms.common.utils.CommonUtils;
import com.pms.common.utils.Constants;
import com.pms.service.CommonService;
import com.pms.service.PartMgmtService;
import com.pms.service.PartMngService;
import com.pms.service.ProductMgmtService;
import com.pms.service.ProjectConceptService;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
@Controller
public class PartMngController {
ProjectConceptService service = null;
@Autowired
PartMngService partMngService;
@Autowired
PartMgmtService partMgmtService;
@Autowired
ProductMgmtService productMgmtService;
@Autowired
CommonService commonService;
@Autowired
public void setProjectConceptService(ProjectConceptService service){
this.service = service;
}
/**
* PART 등록 목록
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/partMngTempList.do")
public String partMngTempList(HttpServletRequest request, @RequestParam Map paramMap){
String page ="/partMng/partMngTempList";
Map code_map = new HashMap();
List list = new ArrayList();
String islast = CommonUtils.checkNull(paramMap.get("IS_LAST"));
if("".equals(islast)){
paramMap.put("IS_LAST","0");
}
paramMap.put("STATUS","create");
try {
//list = CommonUtils.keyChangeUpperList(partMngService.partMngTempList(request,paramMap));
list = partMngService.partMngTempList(request,paramMap);
code_map.put("WRITER", commonService.bizMakeOptionList("", (String)paramMap.get("WRITER"), "common.getUserselect")); //구매 PM
code_map.put("product_code",commonService.bizMakeOptionList("", (String)paramMap.get("product_code"),"common.getProductCodeselect"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.setAttribute("code_map",code_map);
request.setAttribute("LIST", list);
return page;
}
/**
* PART 등록 - PART 등록 목록 페이징
* @param request
* @param paramMap
* @return
*/
@ResponseBody
@RequestMapping("/partMng/partMngTempGridList.do")
public Map getPartMngTempGridListPaging(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
String islast = CommonUtils.checkNull(paramMap.get("IS_LAST"));
if("".equals(islast)){
paramMap.put("IS_LAST","0");
}
String status_arr [] = {"create","changing"}; //release
paramMap.put("STATUS_ARR", status_arr);
// paramMap.put("STATUS","create");
commonService.selectListPagingNew("partMng.partMngTempGridList", request, paramMap);
return paramMap;
}
/**
* PART 배포 목록
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/partMngList.do")
public String partMngList(HttpServletRequest request, @RequestParam Map paramMap){
String page ="/partMng/partMngList";
Map code_map = new HashMap();
List list = new ArrayList();
String searchRevision = CommonUtils.checkNull(paramMap.get("SEARCH_REVISION_RELEASE"));
String actionType = CommonUtils.checkNull(paramMap.get("actionType"));
String search = CommonUtils.checkNull(paramMap.get("search"));
try {
if("0".equals(searchRevision)){
paramMap.put("IS_LAST","");
}else if("1".equals(searchRevision)){
paramMap.put("IS_LAST",searchRevision);
}
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));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.setAttribute("code_map",code_map);
request.setAttribute("LIST", list);
if("excel".equals(actionType)){
page ="/partMng/partMngListExcel";
}
return page;
}
/**
* PART 배포 목록 - PART 배포 목록 페이징
* @param request
* @param paramMap
* @return
*/
@ResponseBody
@RequestMapping("/partMng/partMngGridList.do")
public Map getPartMngGridListPaging(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
String searchRevision = CommonUtils.checkNull(paramMap.get("SEARCH_REVISION_RELEASE"));
String actionType = CommonUtils.checkNull(paramMap.get("actionType"));
String search = CommonUtils.checkNull(paramMap.get("search"));
if("0".equals(searchRevision)){
paramMap.put("IS_LAST","");
}else if("1".equals(searchRevision)){
paramMap.put("IS_LAST",searchRevision);
}
if("Y".equals(search)){
commonService.selectListPagingNew("partMng.partMngGridList", request, paramMap);
}
return paramMap;
}
/**
* 설계변경 PART 목록 페이징
* @param request
* @param paramMap
* @return
*/
@ResponseBody
@RequestMapping("/partMng/partMngChangeGridListPaging.do")
public Map partMngChangeGridListPaging(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
/*
String searchRevision = CommonUtils.checkNull(paramMap.get("SEARCH_REVISION_RELEASE"));
String actionType = CommonUtils.checkNull(paramMap.get("actionType"));
String search = CommonUtils.checkNull(paramMap.get("search"));
if("0".equals(searchRevision)){
paramMap.put("IS_LAST","");
}else if("1".equals(searchRevision)){
paramMap.put("IS_LAST",searchRevision);
}
*/
ArrayList<Map> resultList = commonService.selectListPagingNew("partMng.partMngChangeGridList", request, paramMap);
//설변용 part정보 신규 생성
List<Map> resultList2 = new ArrayList<Map>();
if(CommonUtils.isNotEmpty(resultList) && !resultList.isEmpty()) {
int idx = 0;
String newPartObjId = "";
String beforePartObjId = "";
for (Map map : resultList) {
if(idx == 0) { //맨 위파트만(대표)
partMngService.setChangeDesignPartInfo(request, paramMap, map);
newPartObjId = CommonUtils.checkNull(map.get("OBJID"));
beforePartObjId = CommonUtils.checkNull(map.get("OBJID_ORG")); //CommonUtils.createObjId();
}else {
//나머지는 대표 NEW OBJID로 교체
map.put("OBJID", newPartObjId);
map.put("OBJID_ORG", beforePartObjId);
}
//break; //맨 위파트만(대표)
idx++;
resultList2.add(map);
}
}
paramMap.remove("RESULTLIST");
paramMap.put("RESULTLIST", resultList2);
return paramMap;
}
/**
* 설계변경 PART 목록
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/partMngChangeList.do")
public String partMngChangeList(HttpServletRequest request, @RequestParam Map paramMap){
String page ="/partMng/partMngChangeList";
Map code_map = new HashMap();
List list = new ArrayList();
String searchRevision = CommonUtils.checkNull(paramMap.get("SEARCH_REVISION_RELEASE"));
String actionType = CommonUtils.checkNull(paramMap.get("actionType"));
String search = CommonUtils.checkNull(paramMap.get("search"));
try {
/*
if("0".equals(searchRevision)){
paramMap.put("IS_LAST","");
}else if("1".equals(searchRevision)){
paramMap.put("IS_LAST",searchRevision);
}
*/
code_map.put("CHANGE_OPTION",commonService.bizMakeOptionList("0000318", (String)paramMap.get("CHANGE_OPTION"),"common.getCodeselect"));
code_map.put("CHANGE_TYPE",commonService.bizMakeOptionList("0001054", (String)paramMap.get("CHANGE_TYPE"),"common.getCodeselect"));
code_map.put("product_code",commonService.bizMakeOptionList("", (String)paramMap.get("product_code"),"common.getProductCodeselect"));
if("Y".equals(search)){
//list = CommonUtils.keyChangeUpperList(partMngService.getPartMngList(request,paramMap));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.setAttribute("code_map",code_map);
request.setAttribute("LIST", list);
if("excel".equals(actionType)){
page ="/partMng/partMngChangeListExcel";
}
return page;
}
/**
* PART 조회 팝업 호출
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/partMngListPopUp.do")
public String partMngListPopUp(HttpServletRequest request, @RequestParam Map paramMap){
Map code_map = new HashMap();
List list = new ArrayList();
String search = CommonUtils.checkNull(paramMap.get("search"));
String searchRevision = CommonUtils.checkNull(paramMap.get("SEARCH_REVISION_RELEASE"));
try {
if("0".equals(searchRevision)){
paramMap.put("IS_LAST","");
}else if("1".equals(searchRevision)){
paramMap.put("IS_LAST",searchRevision);
}
// paramMap.put("isPagingYN","N"); //no paging
code_map.put("product_code",commonService.bizMakeOptionList("", (String)paramMap.get("product_code"),"common.getProductCodeselect"));
if("Y".equals(search)){
// list = CommonUtils.keyChangeUpperList(partMngService.getPartMngList(request,paramMap));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.setAttribute("code_map",code_map);
// request.setAttribute("LIST", list);
return "/partMng/partMngListPopUp";
}
/**
* 발주관리_발주관리 목록 페이징
* @param request
* @param paramMap
* @return
*/
@ResponseBody
@RequestMapping("/partMng/partMngListPaging.do")
public Map partMngListPaging(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
//List list = commonService.selectListPaging("purchaseOrder.deliveryMngList_new", request, paramMap);
commonService.selectListPagingNew("partMng.partMngList", request, paramMap);
return paramMap;
}
/**
* PART Form PopUp
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/partMngFormPopUp.do")
public String partMngUpdateFormPopup(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map resultMap = new HashMap();
Map code_map = new HashMap();
//String [] arrCHANGE_OPTION = null;
//String CHANGE_OPTION ="";
String objId = CommonUtils.checkNull(paramMap.get("OBJID"));
String actionType = CommonUtils.checkNull(paramMap.get("ACTION_TYPE"));
try{
paramMap.put("objId",objId);
if("changeDesign".equals(actionType)){
resultMap = CommonUtils.keyChangeUpperMap(partMngService.setChangeDesignPartInfo(request, paramMap));
//CHANGE_OPTION = CommonUtils.nvl((String)resultMap.get("CHANGE_OPTION"),"");
//if(!"".equals(CHANGE_OPTION)){
// arrCHANGE_OPTION = CHANGE_OPTION.split(",");
//}
//설변항목 코드
//code_map.put("CHANGE_OPTION",commonService.bizMakeCheckBoxMultiList("0000318","CHANGE_OPTION",arrCHANGE_OPTION,"common.getCodeselect"));
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"));
String REVISION = CommonUtils.checkNull(resultMap.get("REVISION"));
if(REVISION.equals("RE")){
resultMap.put("REVISION", "A");
}else{
resultMap.put("REVISION", CommonUtils.getNextRevision(REVISION));
}
}else{
if(!"".equals(objId)){
resultMap = CommonUtils.keyChangeUpperMap(partMngService.getPartMngInfo(request,paramMap));
//CHANGE_OPTION = CommonUtils.nvl((String)resultMap.get("CHANGE_OPTION"),"");
//if(!"".equals(CHANGE_OPTION)){
// arrCHANGE_OPTION = CHANGE_OPTION.split(",");
//}
//설변항목 코드
//code_map.put("CHANGE_OPTION",commonService.bizMakeCheckBoxMultiList("0000318","CHANGE_OPTION",arrCHANGE_OPTION,"common.getCodeselect"));
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();
//code_map.put("CHANGE_OPTION",commonService.bizMakeCheckBoxMultiList("0000318","CHANGE_OPTION",arrCHANGE_OPTION,"common.getCodeselect"));
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("", "","common.getmatersupplyselect"));
resultMap.put("OBJID", objId);
resultMap.put("STATUS", "create");
}
}
}catch(Exception e){
e.printStackTrace();
}
request.setAttribute("code_map", code_map);
request.setAttribute("resultMap", resultMap);
return "/partMng/partMngFormPopUp";
}
/**
* PART Detail PopUp
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/partMngDetailPopUp.do")
public String partMngDetailPopUp(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map resultMap = new HashMap();
Map code_map = new HashMap();
String [] arrCHANGE_OPTION = null;
String CHANGE_OPTION ="";
String objId = CommonUtils.checkNull(paramMap.get("OBJID"));
try{
if(!"".equals(objId)){
resultMap = CommonUtils.keyChangeUpperMap(partMngService.getPartMngInfo(request,paramMap));
/* CHANGE_OPTION = CommonUtils.nvl((String)resultMap.get("CHANGE_OPTION"),"");
if(!"".equals(CHANGE_OPTION)){
arrCHANGE_OPTION = CHANGE_OPTION.split(",");
}*/
//설변항목 코드
//code_map.put("CHANGE_OPTION",commonService.bizMakeCheckBoxMultiList("0000318","CHANGE_OPTION",arrCHANGE_OPTION,"common.getCodeselect"));
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();
//설변항목 코드
//code_map.put("CHANGE_OPTION",commonService.bizMakeCheckBoxMultiList("0000318","CHANGE_OPTION",arrCHANGE_OPTION,"common.getCodeselect"));
code_map.put("PARENT_PART_NO",commonService.bizMakeOptionList("", (String)resultMap.get("PARENT_PART_NO"),"common.getPartNoselect"));
//code_map.put("CHANGE_OPTION",commonService.bizMakeCheckBoxMultiList("0000318","CHANGE_OPTION",arrCHANGE_OPTION,"common.getCodeselect"));
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"));
resultMap.put("OBJID", objId);
}
}catch(Exception e){
e.printStackTrace();
}
request.setAttribute("code_map", code_map);
request.setAttribute("resultMap", resultMap);
return "/partMng/partMngDetailPopUp";
}
/**
* PART Detail 수정 저장
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/updatePartDetail.do")
@ResponseBody
public Map<String, Object> updatePartDetail(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map<String, Object> resultMap = new HashMap<String, Object>();
try{
// 품목 정보 업데이트
int result = partMngService.updatePartDetail(request, paramMap);
if(result > 0){
resultMap.put("result", "success");
resultMap.put("message", "저장되었습니다.");
}else{
resultMap.put("result", "fail");
resultMap.put("message", "저장에 실패했습니다.");
}
}catch(Exception e){
e.printStackTrace();
resultMap.put("result", "error");
resultMap.put("message", "저장 중 오류가 발생했습니다.");
}
return resultMap;
}
/**
* PART Detail PopUp
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/partMngHisDetailPopUp.do")
public String partMngHisDetailPopUp(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map resultMap = new HashMap();
Map code_map = new HashMap();
String [] arrCHANGE_OPTION = null;
String CHANGE_OPTION ="";
String objId = CommonUtils.checkNull(paramMap.get("OBJID"));
try{
if(!"".equals(objId)){
resultMap = CommonUtils.keyChangeUpperMap(partMngService.getPartMngInfo(request,paramMap));
/* CHANGE_OPTION = CommonUtils.nvl((String)resultMap.get("CHANGE_OPTION"),"");
if(!"".equals(CHANGE_OPTION)){
arrCHANGE_OPTION = CHANGE_OPTION.split(",");
}*/
//설변항목 코드
//code_map.put("CHANGE_OPTION",commonService.bizMakeCheckBoxMultiList("0000318","CHANGE_OPTION",arrCHANGE_OPTION,"common.getCodeselect"));
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"));
}else{
objId = CommonUtils.createObjId();
//설변항목 코드
//code_map.put("CHANGE_OPTION",commonService.bizMakeCheckBoxMultiList("0000318","CHANGE_OPTION",arrCHANGE_OPTION,"common.getCodeselect"));
code_map.put("PARENT_PART_NO",commonService.bizMakeOptionList("", (String)resultMap.get("PARENT_PART_NO"),"common.getPartNoselect"));
//code_map.put("CHANGE_OPTION",commonService.bizMakeCheckBoxMultiList("0000318","CHANGE_OPTION",arrCHANGE_OPTION,"common.getCodeselect"));
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"));
resultMap.put("OBJID", objId);
}
}catch(Exception e){
e.printStackTrace();
}
request.setAttribute("code_map", code_map);
request.setAttribute("resultMap", resultMap);
return "/partMng/partMngHisDetailPopUp";
}
/**
* Part 중복체크
*/
@RequestMapping("/partMng/overlapPartMng.do")
public String overlapPartMngCheck(HttpSession session, HttpServletRequest request, @RequestParam Map paramMap){
List list = partMngService.overlapPartMng(request, paramMap);
request.setAttribute("RESULT", CommonUtils.getJsonArray(list));
return "/ajax/ajaxResult";
}
/**
* Part 저장
*/
@RequestMapping("/partMng/savePartMng.do")
public String savePartMng(HttpSession session, HttpServletRequest request, @RequestParam Map paramMap){
Map resultMap = new HashMap();
resultMap = partMngService.savePartMng(request, paramMap);
request.setAttribute("RESULT", CommonUtils.getJsonMap(resultMap));
return "/ajax/ajaxResult";
}
/**
* Part 저장(설계변경 PART조회)
*/
@RequestMapping("/partMng/savePartMngChangeList.do")
@ResponseBody
public Map savePartMngChangeList(HttpSession session, HttpServletRequest request, @RequestParam Map paramMap){
Map resultMap = new HashMap();
resultMap = partMngService.savePartMngChangeList(request, paramMap);
request.setAttribute("RESULT", CommonUtils.getJsonMap(resultMap));
return resultMap;
}
/**
* Part 배포
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/partMngDeploy.do")
public String partMngDeploy(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map resultMap = partMngService.partMngDeploy(request, paramMap);
request.setAttribute("RESULT", CommonUtils.getJsonMap(resultMap));
return "/ajax/ajaxResult";
}
/**
* Part 삭제
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/partMngDelete.do")
public String partMngDelete(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map resultMap = partMngService.partMngDelete(request, paramMap);
request.setAttribute("RESULT", CommonUtils.getJsonMap(resultMap));
return "/ajax/ajaxResult";
}
/**
* 파트조회(ajax)
* @param request
* @param paramMap
* @return
*/
/**
* PART 목록 조회 (전체 데이터 조회 - 재귀 CTE 제거로 성능 개선)
* @param request
* @param paramMap
* @return JSON 형태의 전체 데이터
*/
@RequestMapping("/partMng/getPartMngList_ajax.do")
@ResponseBody
public Map<String, Object> getPartList_ajax(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
paramMap.put("status", "complete");
paramMap.put("IS_LAST","1");
System.out.println("getPartList_ajax paramMap : "+paramMap);
// 전체 데이터 조회 (페이징 제거, 재귀 CTE 제거로 속도 대폭 향상)
List list = partMngService.getToConnectPartMngList(request, paramMap);
// 응답 데이터 구성
Map<String, Object> response = new HashMap<>();
response.put("data", list);
System.out.println("데이터 조회 완료 - " + list.size() + "");
return response;
}
/**
* Excel을 이용한 Part 등록 팝업을 호출한다.
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/openPartExcelImportPopUp.do")
public String openPartExcelImportPopUp(HttpSession session, HttpServletRequest request, @RequestParam Map paramMap){
SqlSession sqlSession = null;
Map code_map = new HashMap();
//Map bomContractInfo = new HashMap();
//Map bomInfo = new HashMap();
Map sqlParam = new HashMap();
//List resultList = null;
//List multiMasterList = new ArrayList();
//List regiestSameContractUnitNameBomList = new ArrayList();
String objid="";
try{
objid = CommonUtils.createObjId();
/*
code_map.put("customer_cd",commonService.bizMakeOptionList("", (String)paramMap.get("customer_cd"),"common.getsupplyselect"));
code_map.put("project_name",commonService.bizMakeOptionList("", (String)paramMap.get("project_name"),"common.getProjectNameList"));
code_map.put("unit_code",commonService.bizMakeOptionList((String)paramMap.get("unit_code"), (String)paramMap.get("unit_code"),"common.getBomCodeList"));
sqlSession = SqlMapConfig.getInstance().getSqlSession();
Map sqlMap = new HashMap();
String unitCode = CommonUtils.checkNull(paramMap.get("unit_code"));
sqlMap.put("unitCode", unitCode);
Map unitInfoMap = (HashMap)sqlSession.selectOne("common.getUnitCodeList", sqlMap);
//String unitName = CommonUtils.checkNull(unitInfoMap.get("name")).replaceAll("\u00A0+", " ");
String UNIT_NAME = CommonUtils.checkNull(unitInfoMap.get("name"));
sqlParam.put("customer_cd", CommonUtils.checkNull(paramMap.get("customer_cd")));
//sqlParam.put("project_name", CommonUtils.checkNull(paramMap.get("project_name")));
sqlParam.put("unit_name_eq", UNIT_NAME);
regiestSameContractUnitNameBomList = partMngService.getBOMStandardStructureList(request, sqlParam);
*/
//paramMap.put("product_code",(String)paramMap.get("product_code"));
//info = partMngService.getBOMStructureRev(request,paramMap);
//bomContractInfo = partMngService.getBOMContractinfo(request,paramMap);
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");
code_map.put("unit_cd", commonService.getJqGridSelectBoxJsonData("common.getCodeList2", param, "선택"));
code_map.put("sup_code", commonService.getJqGridSelectBoxJsonData("common.getmatersupplyselect", param, "선택"));
// bomInfo = partMngService.getBOMStructureStandardInfo(request, paramMap);
// if(bomInfo == null) bomInfo = new HashMap();
// String BOM_REPORT_OBJID = CommonUtils.checkNull(paramMap.get("BOM_REPORT_OBJID"), (String)bomInfo.get("OBJID"));
//if("".equals(BOM_REPORT_OBJID)){
//}
//if(!"".equals(BOM_REPORT_OBJID)){
if(bomInfo != null && StringUtils.isNotBlank(BOM_REPORT_OBJID)) {
//resultList = partMngService.getStructureAscendingList(request,paramMap);
sqlParam.put("OBJID", BOM_REPORT_OBJID);
resultList = partMngService.getBOMPartTreeList(sqlParam);
//partMngService.getBOMStructureStandardInfo(request, paramMap);
}else {
//신규등록일 때만 보이게
}
multiMasterList = commonService.selectList("purchaseOrder.selectPurchaseOrderMasterList", request, paramMap);
//동시발주용 정보
request.setAttribute("multiMasterList", multiMasterList);
request.setAttribute("regiestSameContractUnitNameBomList", regiestSameContractUnitNameBomList); //동일 계약에 동일유닛네임으로 저장된 bom list
*/
request.setAttribute("code_map",code_map);
request.setAttribute("objid",objid);
//request.setAttribute("bomInfo",bomInfo);
//request.setAttribute("resultList",resultList);
//request.setAttribute("info",bomContractInfo);
//request.setAttribute("CUSTOMER_OBJID",(String)paramMap.get("customer_cd"));
//request.setAttribute("CONTRACT_OBJID",(String)paramMap.get("project_name"));
//request.setAttribute("UNIT_CODE",(String)paramMap.get("unit_code"));
}catch(Exception e){
e.printStackTrace();
}finally {
//sqlSession.close();
}
return "/partMng/openPartExcelImportPopUp";
}
/**
* 업로드된 Excel File을 통해서 데이터를 Parsing하여 목록으로 return.
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/partParsingExcelFile.do")
@ResponseBody
public ArrayList partParsingExcelFile(HttpServletRequest request, @RequestParam Map paramMap){
Map resultMap = new HashMap();
ArrayList parsingPartList = new ArrayList();
try{
parsingPartList = (ArrayList)partMngService.partParsingExcelFile(request, paramMap);
}catch(Exception e){
e.printStackTrace();
}
//resultMap.put("RESULT", CommonUtils.getJsonArray(parsingPartList));
//parsingPartList = CommonUtils.getJsonArray(parsingPartList);
//request.setAttribute("RESULT", CommonUtils.getJsonArray(parsingPartList));
//return "/ajax/ajaxResult";
return parsingPartList;
}
/**
* 파트 저장(엑셀업로드)
*/
@RequestMapping("/partMng/partUploadSave.do")
@ResponseBody
public Map partUploadSave(HttpSession session, HttpServletRequest request, @RequestParam Map paramMap){
Map resultMap = new HashMap();
//String result = "";
try{
PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN);
paramMap.put("CONNECTUSERID", CommonUtils.checkNull(person.getUserId()));
partMngService.savePartByExcel(request, paramMap);
CommonUtils.setReqResult(request, "", "S", null, resultMap);
//result = "SUCCESS";
}catch(Exception e){
e.printStackTrace();
//result = "FAIL";
CommonUtils.setReqResult(request, "", "F", e, resultMap);
}
//return result;
return resultMap;
}
/**
* 구조등록 목록
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/searchStructureList.do")
public String getStructureList(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map code_map = new HashMap();
List list = new ArrayList();
try {
list = partMngService.getBOMStandardStructureList(request, paramMap);
//code_map.put("product_code",commonService.bizMakeOptionList("", (String)paramMap.get("product_code"),"common.getProductCodeselect"));
//제품구분
code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)paramMap.get("product")),"common.getCodeselect")); //공장
//고객사
code_map.put("customer_cd",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("customer_cd")),"common.getsupplyselect"));
//프로젝트명
code_map.put("project_name",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("project_name")),"common.getCusProjectNoList"));
//프로젝트명
code_map.put("unit_code",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("unit_code")),"common.getUnitCodeList"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.setAttribute("code_map", code_map);
request.setAttribute("LIST", list);
return "/partMng/structureList";
}
/**
* 구조등록 - 구조등록 목록 페이징
* @param request
* @param paramMap
* @return
*/
@ResponseBody
@RequestMapping("/partMng/searchStructureGridList.do")
public Map getBOMStandardStructureGridList(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
commonService.selectListPagingNew("partMng.getBOMStandardStructureGridList", request, paramMap);
return paramMap;
}
/**
* 구조등록 (기본정보 선택 팝업)
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/setStructureStandardFormPopup.do")
public String structureStandardFormPopup(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
String product_code = CommonUtils.checkNull((String)paramMap.get("param_product_code"));
//String product_mgmt_spec = CommonUtils.checkNull((String)paramMap.get("param_product_mgmt_spec"));
//String upg_no = CommonUtils.checkNull((String)paramMap.get("param_upg_no"));
paramMap.put("product_code",product_code);
Map info = partMngService.getBOMStructureRev(request,paramMap);
request.setAttribute("info", info);
request.setAttribute("product_code", product_code);
//request.setAttribute("product_mgmt_spec", product_mgmt_spec);
//request.setAttribute("upg_no", upg_no);
return "/partMng/structureStandardFormPopup";
}
/**
* BOM COPY (기본정보 선택 팝업)
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/setBomCopyFormPopup.do")
public String setBomCopyFormPopup(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
String product_code = CommonUtils.checkNull((String)paramMap.get("param_product_code"));
//String product_mgmt_spec = CommonUtils.checkNull((String)paramMap.get("param_product_mgmt_spec"));
//String upg_no = CommonUtils.checkNull((String)paramMap.get("param_upg_no"));
Map code_map = new HashMap();
try{
//projectNo
code_map.put("rev",commonService.bizMakeOptionList(product_code,"","common.getRevNoselect"));
code_map.put("product_code",commonService.bizMakeOptionList(product_code,"","common.getProductNoselect"));
request.setAttribute("code_map",code_map);
request.setAttribute("product_code", product_code);
}catch(Exception e){
e.printStackTrace();
}
return "/partMng/structureBomCopyFormPopup";
}
/**
* bom copy 저장
*/
@RequestMapping("/partMng/saveBomCopy.do")
@ResponseBody
public String saveBomCopySave(HttpSession session, HttpServletRequest request, @RequestParam Map paramMap){
String result = "";
try{
PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN);
paramMap.put("CONNECTUSERID", CommonUtils.checkNull(person.getUserId()));
partMngService.saveBomCopySave(request, paramMap);
result = "SUCCESS";
}catch(Exception e){
e.printStackTrace();
result = "FAIL";
}
return result;
}
/**
* BOM 상세정보
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/setStructurePopupMainFS.do")
public String setStructurePopupMainFS(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
PersonBean person = (PersonBean)request.getSession().getAttribute(Constants.PERSON_BEAN);
paramMap.put("writer", person.getUserId());
Map info = partMngService.getBOMStructureStandardInfo(request,paramMap);
request.setAttribute("info", info);
return "/partMng/structurePopupHeaderFs";
}
@RequestMapping("/partMng/structureHeaderPopup.do")
public String structureHeaderPopup(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map code_map = new HashMap();
try {
// 제품구분 (PART_TYPE)
code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)paramMap.get("product")),"common.getCodeselect"));
} catch (Exception e) {
e.printStackTrace();
}
request.setAttribute("code_map", code_map);
return "/partMng/structurePopupTop";
}
@RequestMapping("/partMng/structureBottomPopupFS.do")
public String structureBottomPopupFS(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
return "/partMng/structurePopupFs";
}
/**
* 구조등록 하단 프레임
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/structureBtnAreaPopup.do")
public String structureBtnAreaPopup(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
return "/partMng/structureBtnAreaPopup";
}
/**
* 구조등록 좌측 프레임
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/structurePopupLeft.do")
public String structurePopupLeft(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
int MAX_LEVEL = 0;
Map info = new HashMap();
List bomTreeList = null;
String actionType = CommonUtils.checkNull(paramMap.get("actionType"));
ArrayList list = new ArrayList();
try{
info = partMngService.getBOMStructureStandardInfo(request,paramMap);
info.put("actionType", actionType); //241206 added
bomTreeList = partMngService.getBOMPartTreeList(info);
if(null != bomTreeList && 0 < bomTreeList.size()){
HashMap LEVLMap = (HashMap)bomTreeList.get(0);
MAX_LEVEL = (Integer)LEVLMap.get("MAX_LEVEL");
}
}catch(Exception e){
e.printStackTrace();
}
request.setAttribute("MAXLEV", MAX_LEVEL);
request.setAttribute("info", info);
request.setAttribute("tree", bomTreeList);
return "/partMng/structurePopupLeft"+("excel".equals(actionType) ? "Excel" : "");
}
/**
* 구조등록 좌측 프레임 JSON 데이터
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/getStructureTreeJson.do")
@ResponseBody
public List<Map> getStructureTreeJson(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
List bomTreeList = null;
try{
Map info = partMngService.getBOMStructureStandardInfo(request,paramMap);
// search_type 파라미터를 info에 복사 (adding 상태 조회를 위해)
if(paramMap.containsKey("search_type")) {
info.put("search_type", paramMap.get("search_type"));
}
bomTreeList = partMngService.getBOMPartTreeList(info);
}catch(Exception e){
e.printStackTrace();
}
return bomTreeList != null ? bomTreeList : new ArrayList<Map>();
}
@RequestMapping("/partMng/structurePopupCenter.do")
public String structurePopupCenter(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map code_map = new HashMap();
Map info = new HashMap();;
try {
info = partMngService.getBOMStructureStandardInfo(request,paramMap);
//설변사유
code_map.put("CHANGE_OPTION",commonService.bizMakeOptionList("0000318", (String)paramMap.get("change_option"),"common.getCodeselect"));
//설변구분
code_map.put("CHANGE_TYPE",commonService.bizMakeOptionList("0001054", (String)paramMap.get("change_type"),"common.getCodeselect"));
//담당자
//code_map.put("writer_id", commonService.bizMakeOptionList("", (String)paramMap.get("writer_id"),"common.getUserselect"));
//PART구분
//code_map.put("part_type",commonService.bizMakeOptionList(Constants.PART_TYPE_CODE, (String)paramMap.get("part_type"),"common.getCodeselect"));
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
request.setAttribute("info", info);
request.setAttribute("code_map",code_map);
return "/partMng/structurePopupCenter";
}
/**
* 구조등록 우측 프레임
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/structurePopupRight.do")
public String structurePopupRight(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map info = new HashMap();
try{
paramMap.put("SEARCH_OBJID", paramMap.get("objId"));
List list = partMngService.getBOMStandardStructureList(request, paramMap);
if(list != null && list.size()>0){
info = (Map)list.get(0);
}
}catch(Exception e){
e.printStackTrace();
}
request.setAttribute("info", info);
return "/partMng/structurePopupRight";
}
/**
* 최상위레벨에 같은 Part No가 있는지 체크.
* @param request
* @param paramMap
* @param rightCheckedArr
* @return
*/
@RequestMapping("/partMng/checkSameTopPartNo.do")
public String checkSameTopPartNo(HttpServletRequest request, @RequestParam Map<String, Object> paramMap, @RequestParam(value = "rightCheckedArr[]") List<String> rightCheckedArr){
boolean result = partMngService.hasSameTopPartNo(paramMap, rightCheckedArr);
request.setAttribute("RESULT", CommonUtils.getJsonString("result", new Boolean(result).toString()));
return "/ajax/ajaxResult";
}
/**
* 우측의 Part를 선택후, 하위정보를 포함해 삭제한다.
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/deletePartRelateInfo.do")
public String deletePartRelateInfo(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
boolean result = partMngService.deletePartRelateInfo(paramMap);
//if(result) partService.deleteDummyBOMData(paramMap);
request.setAttribute("RESULT", CommonUtils.getJsonString("result", new Boolean(result).toString()));
return "/ajax/ajaxResult";
}
/**
* 우측의 Part를 선택후, 하위정보를 포함해 삭제한다.(231211 new version)
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/deleteStatusPartRelateInfo.do")
public String deleteStatusPartRelateInfo(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
boolean result = partMngService.deleteStatusPartRelateInfo(request, paramMap);
//if(result) partService.deleteDummyBOMData(paramMap);
request.setAttribute("RESULT", CommonUtils.getJsonString("result", new Boolean(result).toString()));
return "/ajax/ajaxResult";
}
/**
* 우측의 Part를 선택후, 좌측에 선택한 Part에 연결한다.
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/relatePartInfo.do")
public String relatePartInfo(HttpServletRequest request, @RequestParam Map<String, Object> paramMap, @RequestParam(value = "rightCheckedArr[]") List<String> rightCheckedArr){
Map info = partMngService.getBOMStructureStandardInfo(request,paramMap);
paramMap.put("regionObjId", CommonUtils.checkNull(info.get("REGION_OBJID")));
boolean result = partMngService.relatePartInfo(request, paramMap, rightCheckedArr);
//if(result) partService.deleteDummyBOMData(paramMap);
request.setAttribute("RESULT", CommonUtils.getJsonString("result", new Boolean(result).toString()));
return "/ajax/ajaxResult";
}
/**
* 구조등록 수량 변경 저장
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/structureQtySave.do")
public String structureQtySave(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
boolean result = partMngService.structureQtySave(request, paramMap);
request.setAttribute("RESULT", CommonUtils.getJsonString("result", new Boolean(result).toString()));
return "/ajax/ajaxResult";
}
/**
* 정전개 목록
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/structureAscendingList.do")
public String structureAscendingList(HttpServletRequest request, @RequestParam Map paramMap){
Map code_map = new HashMap();
List resultList = null;
String search = CommonUtils.checkNull(paramMap.get("search"));
try{
//code_map.put("product_code",commonService.bizMakeOptionList("", (String)paramMap.get("search_product_mgmt_objId"),"common.getProductCodeselect"));
//고객사
code_map.put("customer_cd",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("customer_cd")),"common.getsupplyselect"));
//프로젝트
code_map.put("project_name",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("project_name")),"common.getCusProjectNoList"));
//유닛명
code_map.put("unit_code",commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("unit_code")),"common.getUnitCodeList"));
if("Y".equals(search)){
String searchType = CommonUtils.checkNull(paramMap.get("searchType"), "ascending");
if("descending".equals(searchType)){
// 역전개 조회
resultList = partMngService.getStructureDescendingList(request,paramMap);
}else{
// 정전개 조회 (기본값)
resultList = partMngService.getStructureAscendingList(request,paramMap);
}
}
}catch(Exception e){
e.printStackTrace();
}
request.setAttribute("code_map",code_map);
request.setAttribute("List",resultList);
return "/partMng/structureAscendingList";
}
/**
* 정전개 - 정전개 목록 페이징
* @param request
* @param paramMap
* @return
*/
@ResponseBody
@RequestMapping("/partMng/selectStructureAscendingGridList.do")
public Map getSelectStructureAscendingGridListPaging(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
commonService.selectListPagingNew("partMng.selectStructureAscendingList", request, paramMap);
return paramMap;
}
@RequestMapping("/partMng/structureAscendingExcelList.do")
public String structureAscendingExcelList(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
return "/partMng/structureAscendingListExcel";
}
/**
* 정전개 멀티 목록
* @param request
* @param paramMap
* @return
*/
@RequestMapping(" /partMng/structureAscendingMultiList.do")
public String structureAscendingMultiList(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
return "/partMng/structureAscendingMultiList";
}
/**
* 정전개 목록을 가져온다.
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/getStructureAscendingMultiList.do")
public String getStructureAscendingMultiList(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
List listVC = partMngService.getStructureAscendingMultiListVC(request,paramMap);
List resultList = partMngService.getStructureAscendingMultiList(request,paramMap,listVC);
String data = "[";
ArrayList<String> dataArr = CommonUtils.getJsonArray(resultList);
for(int i=0; i<dataArr.size(); i++){
if(i>0){ data += ","; }
data += dataArr.get(i);
}
data +="]";
String data_vc = "[";
ArrayList<String> dataVcArr = CommonUtils.getJsonArray(listVC);
for(int i=0; i<dataVcArr.size(); i++){
if(i>0){ data_vc += ","; }
data_vc += dataVcArr.get(i);
}
data_vc +="]";
request.setAttribute("RESULT", "{\"DATA\":"+data+", \"DATA_VC\":"+data_vc+"}");
return "/ajax/ajaxResult";
}
/**
* 정전개 목록을 가져온다.
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/getStructureAscendingMultiListExcel.do")
public String getStructureAscendingMultiListExcel(HttpServletRequest request, @RequestParam Map paramMap){
System.out.println("request :: " + request);
System.out.println("paramMap :: " + paramMap);
List listVC = partMngService.getStructureAscendingMultiListVC(request,paramMap);
List resultList = partMngService.getStructureAscendingMultiList(request,paramMap,listVC);
System.out.println("resultList :: " + resultList);
System.out.println("listVC :: " + listVC);
System.out.println("request :: " + request);
System.out.println("paramMap :: " + paramMap);
String data = "[";
ArrayList<String> dataArr = CommonUtils.getJsonArray(resultList);
for(int i=0; i<dataArr.size(); i++){
if(i>0){ data += ","; }
data += dataArr.get(i);
}
data +="]";
String data_vc = "[";
ArrayList<String> dataVcArr = CommonUtils.getJsonArray(listVC);
for(int i=0; i<dataVcArr.size(); i++){
if(i>0){ data_vc += ","; }
data_vc += dataVcArr.get(i);
}
data_vc +="]";
System.out.println("data ::" + data );
System.out.println("data_vc :: " + data_vc );
request.setAttribute("RESULT", "{\"DATA\":"+data+", \"DATA_VC\":"+data_vc+"}");
request.setAttribute("resultList", resultList);
request.setAttribute("listVC", listVC);
request.setAttribute("paramMap", paramMap);
return "/partMng/getStructureAscendingMultiListExcel";
}
/**
* 정전개 목록을 가져온다.
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/getStructureAscendingList.do")
public String getStructureAscendingList(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
String actionType = CommonUtils.checkNull(paramMap.get("actionType"));
List resultList = partMngService.getStructureAscendingList(request,paramMap);
request.setAttribute("RESULT", CommonUtils.getJsonArray(resultList));
return "/ajax/ajaxResult";
}
/**
* 정전개 목록을 가져온다.
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/getStructureAscendingListExcel.do")
public String getStructureAscendingListExcel(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
String actionType = CommonUtils.checkNull(paramMap.get("actionType"));
List resultList = partMngService.getStructureAscendingList(request,paramMap);
System.out.println("paramMap ::: "+ paramMap);
request.setAttribute("paramMap", paramMap);
request.setAttribute("resultList", resultList);
return "/partMng/getstructureAscendingListExcel";
}
/**
* 역전개 목록
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/structureDescendingList.do")
public String structureDescendingList(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
return "/partMng/structureDescendingList";
}
/**
* 정전개 목록을 가져온다.
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/getStructureDescendingList.do")
public String getStructureDescendingList(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
String actionType = CommonUtils.checkNull(paramMap.get("actionType"));
List resultList = partMngService.getStructureDescendingList(request,paramMap);
request.setAttribute("RESULT", CommonUtils.getJsonArray(resultList));
return "/ajax/ajaxResult";
}
/**
* 선택된 구조등록을 삭제한다.
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/deleteStructure.do")
public String deleteStructure(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map resultMap = partMngService.deleteStructure(request,paramMap);
request.setAttribute("RESULT", CommonUtils.getJsonMap(resultMap));
return "/ajax/ajaxResult";
}
/**
* 선택된 구조등록을 배포한다.
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/deployStructure.do")
public String deployStructure(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map resultMap = partMngService.deployStructure(request,paramMap);
request.setAttribute("RESULT", CommonUtils.getJsonMap(resultMap));
return "/ajax/ajaxResult";
}
/**
* BOM 배포사유 입력 popup
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/changeDesignNotePopUp.do")
public String changeDesignNotePopUp(HttpServletRequest request, @RequestParam Map paramMap){
Map resultMap = new HashMap();
try{
/*resultMap = service.getFundMgmtInfo(request,paramMap);
request.setAttribute("resultMap", resultMap);*/
}catch(Exception e){
e.printStackTrace();
}
return "/partMng/changeDesignNotePopUp";
}
/**
* BOM 배포사유 저장
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/saveChangeDesignInfo.do")
public String saveChangeDesignInfo(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
boolean result = partMngService.saveChangeDesignInfo(paramMap);
Map resultMap = partMngService.deployStructure(request,paramMap);
request.setAttribute("RESULTMAP", CommonUtils.getJsonMap(resultMap));
request.setAttribute("RESULT", CommonUtils.getJsonString("result", new Boolean(result).toString()));
return "/ajax/ajaxResult";
}
/**
* 상태변경 팝업
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/structureStatusChangePopup.do")
public String structureStatusChangePopup(HttpServletRequest request, @RequestParam Map paramMap){
Map code_map = new HashMap();
Map structureInfo = new HashMap();
try{
// 구조 정보 조회
structureInfo = partMngService.getStructureInfo(paramMap);
// 제품구분 코드 목록 (structureList와 동일하게)
code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.checkNull(structureInfo.get("PRODUCT_CD")), "common.getCodeselect"));
request.setAttribute("STRUCTURE_INFO", structureInfo);
request.setAttribute("code_map", code_map);
}catch(Exception e){
e.printStackTrace();
}
return "/partMng/structureStatusChangePopup";
}
/**
* 상태변경 저장
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/updateStructureStatus.do")
public String updateStructureStatus(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map<String, Object> resultMap = new HashMap<>();
try{
boolean result = partMngService.updateStructureStatus(request, paramMap);
if(result){
resultMap.put("result", "success");
resultMap.put("msg", "저장되었습니다.");
}else{
resultMap.put("result", "fail");
resultMap.put("msg", "저장에 실패했습니다.");
}
}catch(Exception e){
e.printStackTrace();
resultMap.put("result", "error");
resultMap.put("msg", "오류가 발생했습니다.");
}
request.setAttribute("RESULT", CommonUtils.getJsonMap(resultMap));
return "/ajax/ajaxResult";
}
/**
* 제품 사양 리스트
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/getPartBomList수정전.do")
public String getProductMgntUpgList수정전(HttpServletRequest request, @RequestParam Map paramMap){
List list = null;
List productUpgNoList = new ArrayList();
List productList = null;
List upgCodeList = new ArrayList();
List upgNoList = null;
Map code_map = new HashMap();
try{
//list = productMgmtService.getProductMgntUpgList(request,paramMap);
//리스트 상단 사양 표시
productList = productMgmtService.getProductUpgCodeList(request,paramMap);
//matrix 만들기 위해 코드 리스트 가져오기
if(!"".equals(CommonUtils.nullToEmpty((String)paramMap.get("product_code")))){
upgCodeList = productMgmtService.getProductUpgcommcodeList(request,paramMap);
}
//난중에 지울것
//productUpgNoList = productMgmtService.getUpgMatrixList(request,paramMap);
if(upgCodeList.size() > 0 ){
for(int i=0;i<upgCodeList.size();i++){
List TempList = new ArrayList();
Map temp_map = new HashMap();
HashMap codeMap = (HashMap)upgCodeList.get(i);
HashMap param = new HashMap();
param.put("code", (String)codeMap.get("UPG_CODE"));
param.put("product_code", (String)paramMap.get("product_code"));
temp_map.put("UPG_NAME", (String)codeMap.get("UPG_NAME"));
temp_map.put("UPG_CODE", (String)codeMap.get("UPG_CODE"));
temp_map.put("CODE_ID", (String)codeMap.get("CODE_ID"));
//코드값으로 하나씩가져오기
upgNoList = productMgmtService.getUpgOneMatrixList(request,param);
for(int j=0;j<upgNoList.size();j++){
HashMap upgMap = (HashMap)upgNoList.get(j);
temp_map.put("UPG_NO"+j, (String)upgMap.get("UPG_NO"));
}
System.out.println("temp_map ---->"+temp_map);
//TempList.add(temp_map);
productUpgNoList.add(temp_map);
}
}
/*int upgSize = 0;
if(!"".equals((String)paramMap.get("product_code"))){
productUpgNoList = productMgmtService.getUpgMatrixList(request,paramMap);
if(productUpgNoList.size() > 0){
upgSize = productUpgNoList.size() / productList.size();
System.out.println("upgSize -->"+upgSize);
for(int i=0;i<productUpgNoList.size();i++){
if(upgSize % (i+1) ==0){
System.out.println("123123213");
}
Map sqlmap = new HashMap();
HashMap masterMap = (HashMap)productUpgNoList.get(i);
masterMap.put("Asdasd"+"123", masterMap.get("Asdasd"));
}
}
}*/
code_map.put("product_code",commonService.bizMakeOptionList("", (String)paramMap.get("product_code"),"common.getProductCodeselect"));
request.setAttribute("code_map",code_map);
request.setAttribute("LIST", productUpgNoList);
request.setAttribute("productList", productList);
request.setAttribute("productListCnt", productList.size());
}catch(Exception e){
e.printStackTrace();
}
return "/partMng/partBomList";
}
/**
* BOM조회(정전개)
*/
@RequestMapping("/partMng/getPartBomList.do")
public String getProductMgntUpgList(HttpServletRequest request, @RequestParam Map paramMap){
String actionType = CommonUtils.checkNull(paramMap.get("actionType"));
String returnUrl = "/partmgmt/structureAscendingListNew";
Map code_map = new HashMap();
List resultList =null;
if("excel".equals(actionType)){
returnUrl = "/partmgmt/structureAscendingListNewExcel";
}
String objId = CommonUtils.checkNull(paramMap.get("OBJID"));
String status = CommonUtils.checkNull(paramMap.get("STATUS"));
String searchRevision = CommonUtils.checkNull(paramMap.get("SEARCH_REVISION_RELEASE"));
try {
code_map.put("product_code",commonService.bizMakeOptionList("", (String)paramMap.get("product_code"),"common.getProductCodeselect"));
} catch (Exception e) {
e.printStackTrace();
}
if("0".equals(searchRevision)){
paramMap.put("IS_LAST","");
paramMap.put("STATUS","release");
}else if("1".equals(searchRevision)){
paramMap.put("IS_LAST",searchRevision);
paramMap.put("STATUS","release");
}
List list = null;
if(!"".equals(actionType)){
list = CommonUtils.keyChangeUpperList(partMgmtService.structureAscendingList(request,paramMap));
}
request.setAttribute("code_map", code_map);
request.setAttribute("LIST", list);
return returnUrl;
}
/**
* Excel을 이용한BOM REPORT 등록 팝업을 호출한다.
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/openBomReportExcelImportPopUp.do")
public String openBomReportExcelImportPopUp(HttpSession session, HttpServletRequest request, @RequestParam Map paramMap){
SqlSession sqlSession = null;
Map code_map = new HashMap();
Map bomContractInfo = new HashMap();
Map bomInfo = new HashMap();
Map sqlParam = new HashMap();
List resultList = null;
List multiMasterList = new ArrayList();
List regiestSameContractUnitNameBomList = new ArrayList();
String objid="";
try{
objid = CommonUtils.createObjId();
//code_map.put("customer_cd",commonService.bizMakeOptionList("", (String)paramMap.get("customer_cd"),"common.getsupplyselect"));
//code_map.put("project_name",commonService.bizMakeOptionList("", (String)paramMap.get("project_name"),"common.getProjectNameList"));
//code_map.put("unit_code",commonService.bizMakeOptionList((String)paramMap.get("unit_code"), (String)paramMap.get("unit_code"),"common.getBomCodeList"));
//제품구분
code_map.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)paramMap.get("product_cd")),"common.getCodeselect")); //제품구분
sqlSession = SqlMapConfig.getInstance().getSqlSession();
// 통합 템플릿으로 변경하면서 unit_code 관련 로직은 사용하지 않음
/*
// UNIT_NAME 조회 (unit_code가 유효한 경우에만)
String UNIT_NAME = "";
String unitCode = CommonUtils.checkNull(paramMap.get("unit_code"));
if(sqlSession != null && !StringUtils.isBlank(unitCode) && !"undefined".equals(unitCode)){
try {
Map sqlMap = new HashMap();
sqlMap.put("unitCode", unitCode);
Map unitInfoMap = (HashMap)sqlSession.selectOne("common.getUnitCodeList", sqlMap);
if(unitInfoMap != null){
UNIT_NAME = CommonUtils.checkNull(unitInfoMap.get("name"));
}
} catch(Exception e) {
// unit_code 조회 실패시 빈 문자열 사용
System.out.println("Failed to get UNIT_NAME for unitCode: " + unitCode);
e.printStackTrace();
}
}
sqlParam.put("customer_cd", CommonUtils.checkNull(paramMap.get("customer_cd")));
//sqlParam.put("project_name", CommonUtils.checkNull(paramMap.get("project_name")));
sqlParam.put("unit_name_eq", UNIT_NAME);
regiestSameContractUnitNameBomList = partMngService.getBOMStandardStructureList(request, sqlParam);
*/
// unit_code 없이 BOM 구조 조회
sqlParam.put("customer_cd", CommonUtils.checkNull(paramMap.get("customer_cd")));
sqlParam.put("unit_name_eq", "");
regiestSameContractUnitNameBomList = partMngService.getBOMStandardStructureList(request, sqlParam);
//paramMap.put("product_code",(String)paramMap.get("product_code"));
//info = partMngService.getBOMStructureRev(request,paramMap);
bomContractInfo = partMngService.getBOMContractinfo(request,paramMap);
// part_type 셀렉트박스 데이터 전달
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, "선택"));
// 활성화된 BOM 목록 전달 (복사용) - bizMakeOptionList 사용
code_map.put("bom_list", commonService.bizMakeOptionList("", "", "partMng.getActiveBomList"));
bomInfo = partMngService.getBOMStructureStandardInfo(request, paramMap);
if(bomInfo == null) bomInfo = new HashMap();
String BOM_REPORT_OBJID = CommonUtils.checkNull(paramMap.get("BOM_REPORT_OBJID"), (String)bomInfo.get("OBJID"));
//if("".equals(BOM_REPORT_OBJID)){
//}
//if(!"".equals(BOM_REPORT_OBJID)){
if(bomInfo != null && StringUtils.isNotBlank(BOM_REPORT_OBJID)) {
//resultList = partMngService.getStructureAscendingList(request,paramMap);
sqlParam.put("OBJID", BOM_REPORT_OBJID);
resultList = partMngService.getBOMPartTreeList(sqlParam);
//partMngService.getBOMStructureStandardInfo(request, paramMap);
}else {
//신규등록일 때만 보이게
}
//multiMasterList = commonService.selectList("purchaseOrder.selectPurchaseOrderMasterList", request, paramMap);
//동시발주용 정보
//request.setAttribute("multiMasterList", multiMasterList);
request.setAttribute("regiestSameContractUnitNameBomList", regiestSameContractUnitNameBomList); //동일 계약에 동일유닛네임으로 저장된 bom list
request.setAttribute("code_map",code_map);
request.setAttribute("bomInfo",bomInfo);
request.setAttribute("resultList",resultList);
request.setAttribute("info",bomContractInfo);
request.setAttribute("objid",objid);
//request.setAttribute("CUSTOMER_OBJID",(String)paramMap.get("customer_cd"));
//request.setAttribute("CONTRACT_OBJID",(String)paramMap.get("project_name"));
//request.setAttribute("UNIT_CODE",(String)paramMap.get("unit_code"));
}catch(Exception e){
e.printStackTrace();
}finally {
sqlSession.close();
}
return "/partMng/openBomReportExcelImportPopUp";
}
/**
* 업로드된 Excel File을 통해서 데이터를 Parsing하여 목록으로 return.
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/parsingExcelFile.do")
@ResponseBody
public ArrayList parsingExcelFile(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map resultMap = new HashMap();
ArrayList parsingPartList = new ArrayList();
try{
parsingPartList = (ArrayList)partMngService.parsingExcelFile(request, paramMap);
}catch(Exception e){
e.printStackTrace();
}
//resultMap.put("RESULT", CommonUtils.getJsonArray(parsingPartList));
//parsingPartList = CommonUtils.getJsonArray(parsingPartList);
//request.setAttribute("RESULT", CommonUtils.getJsonArray(parsingPartList));
//return "/ajax/ajaxResult";
return parsingPartList;
}
/**
* BOM 복사를 위한 데이터 조회 (엑셀 파싱 형식과 동일하게 반환)
*/
@RequestMapping("/partMng/getBomDataForCopy.do")
@ResponseBody
public ArrayList getBomDataForCopy(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
ArrayList bomDataList = new ArrayList();
try{
bomDataList = (ArrayList)partMngService.getBomDataForCopy(request, paramMap);
}catch(Exception e){
e.printStackTrace();
}
return bomDataList;
}
/**
* BOM 파트&구조 저장
*/
@RequestMapping("/partMng/partBomApplySave.do")
@ResponseBody
public Map partBomApplySave(HttpSession session, HttpServletRequest request, @RequestParam Map paramMap){
Map resultMap = new HashMap();
//String result = "";
try{
PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN);
paramMap.put("CONNECTUSERID", CommonUtils.checkNull(person.getUserId()));
partMngService.savePartBomMaster(request, paramMap);
CommonUtils.setReqResult(request, "", "S", null, resultMap);
//result = "SUCCESS";
}catch(Exception e){
e.printStackTrace();
//result = "FAIL";
CommonUtils.setReqResult(request, "", "F", e, resultMap);
}
//return result;
return resultMap;
}
/**
* 품번 중복 체크 (PART_BOM_REPORT 테이블)
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/checkDuplicatePartNo.do")
@ResponseBody
public Map<String, Object> checkDuplicatePartNo(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map<String, Object> resultMap = new HashMap<String, Object>();
try{
String partNo = CommonUtils.checkNull(paramMap.get("partNo"));
String bomReportObjid = CommonUtils.checkNull(paramMap.get("bomReportObjid"));
if(!"".equals(partNo)){
paramMap.put("partNo", partNo.trim());
paramMap.put("bomReportObjid", bomReportObjid);
// DB에서 중복 체크
int count = partMngService.checkDuplicatePartNo(request, paramMap);
resultMap.put("isDuplicate", count > 0);
}else{
resultMap.put("isDuplicate", false);
}
resultMap.put("result", "success");
}catch(Exception e){
e.printStackTrace();
resultMap.put("result", "error");
resultMap.put("message", "품번 중복 체크 중 오류가 발생했습니다.");
resultMap.put("isDuplicate", false);
}
return resultMap;
}
/**
* 구조등록 순번 변경 저장
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/structureSeqSave.do")
public String structureSeqSave(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
boolean result = partMngService.structureSeqSave(paramMap);
request.setAttribute("RESULT", CommonUtils.getJsonString("result", new Boolean(result).toString()));
return "/ajax/ajaxResult";
}
/**
* PART 배포 목록
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/partMngDeployList.do")
public String partMngDeployList(HttpServletRequest request, @RequestParam Map paramMap){
String page ="/partMng/partMngDeployList";
Map code_map = new HashMap();
List list = new ArrayList();
String searchRevision = CommonUtils.checkNull(paramMap.get("SEARCH_REVISION_RELEASE"));
String actionType = CommonUtils.checkNull(paramMap.get("actionType"));
String search = CommonUtils.checkNull(paramMap.get("search"));
try {
code_map.put("product_code",commonService.bizMakeOptionList("", (String)paramMap.get("product_code"),"common.getProductCodeselect"));
if("Y".equals(search)){
list = CommonUtils.keyChangeUpperList(partMngService.partMngDeployList(request,paramMap));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.setAttribute("code_map",code_map);
request.setAttribute("LIST", list);
return page;
}
@ResponseBody
@RequestMapping("/partMng/getPartLinkedBomContractList.do")
public Map<String, Object> getPartLinkedBomContractList(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map result_map = new HashMap();
try {
result_map.put("RESULT", partMngService.getPartLinkedBomContractList(paramMap));
} catch (Exception e) {
e.printStackTrace();
}
return result_map;
}
@RequestMapping("/partMng/partMngHisList.do")
public String partMngHisList(HttpServletRequest request, @RequestParam Map paramMap){
Map code_map = new HashMap();
List list = new ArrayList();
try {
//당사프로젝트번호 project_no
code_map.put("contract_objid",commonService.bizMakeOptionList("", (String)paramMap.get("contract_objid"),"common.getProjectNameList"));
//설변사유
code_map.put("change_option",commonService.bizMakeOptionList("0000318", (String)paramMap.get("change_option"),"common.getCodeselect"));
//설변구분
code_map.put("change_type",commonService.bizMakeOptionList("0001054", (String)paramMap.get("change_type"),"common.getCodeselect"));
//담당자
code_map.put("writer_id", commonService.bizMakeOptionList("", (String)paramMap.get("writer_id"),"common.getUserselect"));
//PART구분
code_map.put("part_type",commonService.bizMakeOptionList(Constants.PART_TYPE_CODE, (String)paramMap.get("part_type"),"common.getCodeselect"));
//paramMap.put("STATUS_NQ", "create");
//paramMap.put("SEARCH_TYPE", "CHANGE_LIST");
list = commonService.selectListPaging("partMng.partMngHistList", request, paramMap);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
request.setAttribute("code_map",code_map);
request.setAttribute("LIST", JsonUtil.ListToJson(list));
return "/partMng/partMngHisList";
}
/**
* 설계변경리스트 - 설계변경리스트 페이징
* @param request
* @param paramMap
* @return
*/
@ResponseBody
@RequestMapping("/partMng/partMngHisGridList.do")
public Map getPartMngHisGridListPaging(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
commonService.selectListPagingNew("partMng.partMngHistList", request, paramMap);
return paramMap;
}
@RequestMapping("/partMng/deleteBomByAdmin.do")
@ResponseBody
public String deleteBomByAdmin(HttpSession session, HttpServletRequest request, @RequestParam Map paramMap){
String result = "";
SqlSession sqlSession = null;
Map sqlMap = new HashMap();
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN);
if(person != null)
paramMap.put("CONNECTUSERID", CommonUtils.checkNull(person.getUserId()));
String pObjid = (String)paramMap.get("objId");
String pCheckArr = (String)paramMap.get("checkArr");
String checkArr[] = (CommonUtils.checkNull(pCheckArr, pObjid)).split(",");
if(null == checkArr || 0 == checkArr.length){
checkArr[0] = CommonUtils.checkNull(paramMap.get("checkArr"));
}
if(null != checkArr && 0 < checkArr.length){
//Map sqlParamMap = new HashMap();
//sqlParamMap.put("checkArr",checkArr);
// for (String objid : checkArr) {
// paramMap.put("OBJID", objid);
// paramMap.put("SEARCH_BOM_OBJID", objid);
// if(StringUtils.isBlank(objid)) {
// System.out.println("objid is null");
// //return "";
// }else {
if(checkArr.length == 1) {
//sqlMap.put("OBJID", checkArr[0]);
}else {
}
sqlMap.put("checkArr", checkArr);
// Map info = partMngService.getBOMStructureStandardInfo(request,sqlMap);
// System.out.println(info);
// if(info != null && !info.isEmpty()) {
//백업
sqlSession.insert("partMng.bak_insertDelPartBom", sqlMap);
sqlSession.insert("partMng.bak_insertDelPartMng", sqlMap);
sqlSession.insert("partMng.bak_insertDelPartQty", sqlMap);
//삭제
sqlSession.delete("partMng.deletePartBom", sqlMap);
sqlSession.delete("partMng.deletePartMng", sqlMap);
sqlSession.delete("partMng.deletePartQty", sqlMap);
// }
// }
// }
}
sqlSession.commit();
result = "SUCCESS";
}catch(Exception e){
e.printStackTrace();
result = "FAIL";
sqlSession.rollback();
}finally {
//sqlSession.close();
}
return result;
}
/**
* BOM objid기준으로 대상 파트에 도면파일 붙이기
* ※ 도면 있는거는 중복으로 붙으니 주의
*/
//@RequestMapping(value="/partMng/partFileAttach.do", method=RequestMethod.POST)
@RequestMapping("/partMng/partFileAttach.do")
@ResponseBody
public String partFileAttach(HttpSession session, HttpServletRequest request, @RequestParam Map paramMap){
String result = "";
SqlSession sqlSession = null;
Map sqlMap = new HashMap();
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN);
if(person != null)
paramMap.put("CONNECTUSERID", CommonUtils.checkNull(person.getUserId()));
String objid = (String)paramMap.get("objId");
paramMap.put("OBJID", objid);
paramMap.put("SEARCH_BOM_OBJID", objid);
String qtyObjId = (String)paramMap.get("qtyObjId");
if(StringUtils.isBlank(objid)) {
System.out.println("objid is null");
return "";
}
Map info = partMngService.getBOMStructureStandardInfo(request,paramMap);
System.out.println(info);
/*
String contracObjid = CommonUtils.checkNull(paramMap.get("CONTRACT_OBJID"));
sqlMap.put("OBJID", contracObjid);
Map<String,Object> projectInfo = (Map)sqlSession.selectOne("project.getProjectMngInfo", sqlMap);
String projectNo = (String)projectInfo.get("project_no");
String unitCode = CommonUtils.checkNull(paramMap.get("UNIT_CODE"));
sqlMap.put("unitCode", unitCode);
Map unitInfoMap = (HashMap)sqlSession.selectOne("common.getUnitCodeList", sqlMap);
String unitName = CommonUtils.checkNull(unitInfoMap.get("name")).replaceAll("\u00A0+", " ");
*/
String projectNo = CommonUtils.checkNull(info.get("PROJECT_NO2"));
String unitName = CommonUtils.checkNull(info.get("UNIT_NAME")).replaceAll("\u00A0+", " ");
byte[] utf8Bytes = unitName.getBytes("UTF-8");
String utf8unitName = new String(utf8Bytes, "UTF-8");
String filepath = Constants.FILE_STORAGE+"\\PART_DATA\\";
String filepathFull = filepath+projectNo+File.separator+unitName+File.separator;
System.out.println("filepathFull:"+filepathFull);
ArrayList<Map> list = commonService.selectList("partMng.partMngListByBom", request, paramMap);
//List list = partMngService.getPartMngList(request, paramMap);
for (Map resultMap : list) {
System.out.println(resultMap);
//if(1==1) continue;
String part_objid = "";
String part_no = "";
if(null!=resultMap){
part_objid = CommonUtils.checkNull((String)resultMap.get("OBJID"));
part_no = CommonUtils.checkNull((String)resultMap.get("PART_NO"));
//sqlMap.put("objId", part_objid);
//Map selFileMap = commonService.getFileInfo(sqlMap);
//기등록 파일 조회(있으면 pass)
sqlMap.put("targetObjId", part_objid);
sqlMap.put("fileSizeNot0", "fileSizeNot0"); //fileSize > 0
List selFileList = commonService.getFileList(sqlMap);
if(selFileList != null && !selFileList.isEmpty()) {
System.out.println("File already exists!!!");
continue;
}
Map fileMap = new HashMap();
fileMap.put("FILE_PATH",filepathFull);
fileMap.put("WRITER", CommonUtils.checkNull((String)paramMap.get("CONNECTUSERID"), "plmAdmin"));
//dwg
fileMap.put("OBJID", CommonUtils.createObjId());
fileMap.put("TARGET_OBJID", part_objid);
fileMap.put("SAVED_FILE_NAME", part_no+".dwg");
fileMap.put("REAL_FILE_NAME",part_no+".dwg");
fileMap.put("DOC_TYPE" ,"2D_DRAWING_CAD");
fileMap.put("DOC_TYPE_NAME","2D(Drawing) CAD 첨부파일");
fileMap.put("FILE_SIZE","167941");
fileMap.put("FILE_EXT","DWG");
System.out.println("fileMap --->"+ fileMap);
System.out.println(filepathFull+part_no+".dwg");
File file = new File(filepathFull+part_no+".dwg");
System.out.println("file --->"+ file.getName());
System.out.println("checkBeforeFile(file)" +checkBeforeFile(file));
if(checkBeforeFile(file)){
//첨부저장이 존재 할때만 DWG 저장
sqlSession.insert("partMng.insertpartfileInfo", fileMap);
}
//pdf
file = new File(filepathFull+part_no+".pdf");
if(checkBeforeFile(file)){
fileMap.isEmpty();
//첨부저장이 존재 할때만 PDF 저장
fileMap.put("OBJID", CommonUtils.createObjId());
fileMap.put("TARGET_OBJID", part_no);
fileMap.put("SAVED_FILE_NAME", part_no+".pdf");
fileMap.put("REAL_FILE_NAME",part_no+".pdf");
fileMap.put("DOC_TYPE" ,"2D_PDF_CAD");
fileMap.put("DOC_TYPE_NAME","2D(PDF) CAD 첨부파일");
fileMap.put("FILE_SIZE","167941");
fileMap.put("FILE_EXT","PDF");
//첨부저장이 존재 할때만 DWG 저장
sqlSession.insert("part.insertpartfileInfo", fileMap);
}
}else{
}
}
sqlSession.commit();
result = "SUCCESS";
}catch(Exception e){
e.printStackTrace();
result = "FAIL";
}
return result;
}
static boolean checkBeforeFile(File file){
//파일이 존재하고
if(file.exists()){
//그 파일이 파일이고, 읽을 수 있다면 true를 리턴한다.
if(file.isFile() && file.canRead()){
return true;
}
}
return false;
}
/**
* 자재코드 존재확인
*/
@RequestMapping("/partMng/existPartNoCheck.do")
public String existPartNoCheck(HttpSession session, HttpServletRequest request, @RequestParam Map paramMap){
List list = partMngService.existPartNoCheck(request, paramMap);
request.setAttribute("RESULT", CommonUtils.getJsonArray(list));
return "/ajax/ajaxResult";
}
/**
* 우측의 Part를 선택후, 좌측에 선택한 Part로 변경한다.
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/partMng/changeRelatePartInfo.do")
public String changeRelatePartInfo(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
boolean result = partMngService.changeRelatePartInfo(request, paramMap);
request.setAttribute("RESULT", CommonUtils.getJsonString("result", new Boolean(result).toString()));
return "/ajax/ajaxResult";
}
/**
* 도면 파일 일괄 업로드
* 파일명에 품번이 포함된 경우 자동 매칭하여 업로드
* - stp 파일 -> 3D CAD 컬럼
* - dwg 파일 -> 2D Drawing CAD 컬럼
* - pdf 파일 -> 2D PDF CAD 컬럼
*
* @param request
* @param session
* @param bomObjId BOM OBJID
* @return
*/
@RequestMapping(value="/partMng/uploadDrawingFiles.do", method=RequestMethod.POST)
@ResponseBody
public Map<String, Object> uploadDrawingFiles(
HttpServletRequest request,
HttpSession session) {
Map<String, Object> resultMap = new HashMap<>();
MultipartRequest multi = null;
FileRenameClass frc = null;
try {
PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN);
String userId = person != null ? person.getUserId() : "plmAdmin";
// MultipartRequest로 파일 업로드 처리
String storagePath = Constants.FILE_STORAGE;
int maxSize = 1024*1024*1024*9; // 9GB
File storage = new File(storagePath);
if(!storage.exists()) storage.mkdirs();
frc = new FileRenameClass();
multi = new MultipartRequest(request, storagePath, maxSize, "UTF-8", frc);
java.util.List fileList = frc.getFileList();
// MultipartRequest에서 bomObjId 파라미터 가져오기
String bomObjId = multi.getParameter("bomObjId");
if(bomObjId == null || bomObjId.isEmpty()) {
resultMap.put("result", "fail");
resultMap.put("message", "BOM ID가 전달되지 않았습니다.");
return resultMap;
}
// BOM 정보 조회
Map<String, Object> bomParam = new HashMap<>();
bomParam.put("objId", bomObjId);
Map bomInfo = partMngService.getBOMStructureStandardInfo(request, bomParam);
if(bomInfo == null) {
resultMap.put("result", "fail");
resultMap.put("message", "BOM 정보를 찾을 수 없습니다.");
return resultMap;
}
// 해당 BOM의 모든 파트 정보 조회
bomParam.put("SEARCH_BOM_OBJID", bomObjId);
ArrayList<Map> partList = commonService.selectList("partMng.partMngListByBom", request, bomParam);
if(partList == null || partList.isEmpty()) {
resultMap.put("result", "fail");
resultMap.put("message", "BOM에 등록된 파트가 없습니다.");
return resultMap;
}
// 품번 기준 파트 맵 생성
Map<String, Map> partNoMap = new HashMap<>();
for(Map part : partList) {
String partNo = CommonUtils.checkNull((String)part.get("PART_NO"));
if(!partNo.isEmpty()) {
partNoMap.put(partNo, part);
}
}
int successCount = 0;
int failCount = 0;
int notFoundCount = 0;
// 업로드된 파일 처리
if(fileList != null && !fileList.isEmpty()) {
for(Object fileObj : fileList) {
Map fileInfo = (Map)fileObj;
String originalFileName = CommonUtils.checkNull((String)fileInfo.get("realFileName"));
String savedFileName = CommonUtils.checkNull((String)fileInfo.get("savedFileName"));
String fileExt = CommonUtils.checkNull((String)fileInfo.get("fileExt"));
long fileSize = Long.parseLong(CommonUtils.checkNull(fileInfo.get("fileSize"), "0"));
// 파일 크기가 0이면 실제 저장된 파일에서 다시 확인
// if(fileSize == 0) {
// try {
// File savedFile = new File(storagePath + File.separator + savedFileName);
// if(savedFile.exists()) {
// fileSize = savedFile.length();
// System.out.println("파일 크기 재확인: " + fileSize + " bytes");
// }
// } catch(Exception e) {
// System.out.println("파일 크기 재확인 실패: " + e.getMessage());
// }
// }
// 확장자 대문자 변환 (이미 점 없이 저장됨)
fileExt = fileExt.toUpperCase();
System.out.println("========== 파일 업로드 처리 ==========");
System.out.println("원본 파일명: " + originalFileName);
System.out.println("저장 파일명: " + savedFileName);
System.out.println("확장자: " + fileExt);
System.out.println("파일 크기: " + fileSize + " bytes");
System.out.println("===================================");
// 파일 확장자에 따른 문서 타입 결정
String docType = "";
String docTypeName = "";
if("STP".equals(fileExt) || "STEP".equals(fileExt)) {
docType = "3D_CAD";
docTypeName = "3D CAD 첨부파일";
} else if("DWG".equals(fileExt) || "DXF".equals(fileExt)){
docType = "2D_DRAWING_CAD";
docTypeName = "2D(Drawing) CAD 첨부파일";
} else if("PDF".equals(fileExt)) {
docType = "2D_PDF_CAD";
docTypeName = "2D(PDF) CAD 첨부파일";
} else {
// 지원하지 않는 확장자는 스킵
System.out.println("지원하지 않는 확장자: " + fileExt + ", 파일명: " + originalFileName);
continue;
}
// 품번 추출 (맨 마지막 확장자만 제거 후 하이픈 기준 추출)
String extractedPartNo = extractPartNoFromFileName(originalFileName);
// 품번과 정확히 일치하는 경우만 매칭
String matchedPartNo = null;
System.out.println("품번 매칭 시작 - 추출된 품번: " + extractedPartNo);
if(extractedPartNo != null && !extractedPartNo.isEmpty()) {
// 정확한 매칭 (추출된 품번과 DB 품번이 정확히 일치)
if(partNoMap.containsKey(extractedPartNo)) {
matchedPartNo = extractedPartNo;
System.out.println(" ✓ 품번 정확 매칭 성공: " + matchedPartNo);
}
}
if(matchedPartNo == null) {
System.out.println(" ✗ 품번 매칭 실패 - 파일명: " + originalFileName + ", 추출된 품번: " + extractedPartNo);
notFoundCount++;
continue;
}
// 해당 파트에 파일 정보 저장
Map partInfo = partNoMap.get(matchedPartNo);
String partObjId = CommonUtils.checkNull((String)partInfo.get("OBJID"));
Map<String, Object> fileMap = new HashMap<>();
fileMap.put("OBJID", CommonUtils.createObjId());
fileMap.put("TARGET_OBJID", partObjId);
fileMap.put("SAVED_FILE_NAME", savedFileName);
fileMap.put("REAL_FILE_NAME", originalFileName);
fileMap.put("DOC_TYPE", docType);
fileMap.put("DOC_TYPE_NAME", docTypeName);
fileMap.put("FILE_SIZE", String.valueOf(fileSize));
fileMap.put("FILE_EXT", fileExt);
fileMap.put("FILE_PATH", storagePath);
fileMap.put("WRITER", userId);
try {
// 파일 정보 DB 저장
partMngService.insertDrawingFile(fileMap);
successCount++;
} catch(Exception e) {
e.printStackTrace();
failCount++;
}
}
}
resultMap.put("result", "success");
resultMap.put("successCount", successCount);
resultMap.put("failCount", failCount);
resultMap.put("notFoundCount", notFoundCount);
resultMap.put("message", "업로드가 완료되었습니다.");
} catch(Exception e) {
e.printStackTrace();
resultMap.put("result", "error");
resultMap.put("message", "업로드 중 오류가 발생했습니다: " + e.getMessage());
} finally {
if(frc != null) {
frc.clear();
}
}
return resultMap;
}
/**
* PART 목록 화면에서 도면 파일 일괄 업로드
* BOM 정보 없이 전체 파트를 대상으로 파일명 매칭
*
* @param request
* @param session
* @return
*/
@RequestMapping(value="/partMng/uploadDrawingFilesForPartList.do", method=RequestMethod.POST)
@ResponseBody
public Map<String, Object> uploadDrawingFilesForPartList(
HttpServletRequest request,
HttpSession session) {
Map<String, Object> resultMap = new HashMap<>();
MultipartRequest multi = null;
FileRenameClass frc = null;
try {
PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN);
String userId = person != null ? person.getUserId() : "plmAdmin";
// MultipartRequest로 파일 업로드 처리
String storagePath = Constants.FILE_STORAGE;
int maxSize = 1024*1024*1024*9; // 9GB
File storage = new File(storagePath);
if(!storage.exists()) storage.mkdirs();
frc = new FileRenameClass();
multi = new MultipartRequest(request, storagePath, maxSize, "UTF-8", frc);
java.util.List fileList = frc.getFileList();
// 화면에서 전달된 품번 목록 가져오기
String partNoListJson = multi.getParameter("partNoList");
if(partNoListJson == null || partNoListJson.isEmpty()) {
resultMap.put("result", "fail");
resultMap.put("message", "품번 목록이 전달되지 않았습니다.");
return resultMap;
}
// JSON 파싱 (Gson 사용)
Gson gson = new Gson();
Type listType = new TypeToken<ArrayList<String>>(){}.getType();
java.util.List<String> partNoList = gson.fromJson(partNoListJson, listType);
if(partNoList.isEmpty()) {
resultMap.put("result", "fail");
resultMap.put("message", "페이지에 표시된 파트가 없습니다.");
return resultMap;
}
System.out.println("========== 화면에서 전달된 품번 목록 ==========");
System.out.println("품번 개수: " + partNoList.size());
System.out.println("품번 목록: " + partNoList);
System.out.println("==========================================");
// 전달된 품번 목록에 해당하는 파트만 조회
Map<String, Object> partParam = new HashMap<>();
partParam.put("IS_LAST", "1");
partParam.put("PART_NO_LIST", partNoList);
ArrayList<Map> partList = commonService.selectList("partMng.partMngListByPartNos", request, partParam);
if(partList == null || partList.isEmpty()) {
resultMap.put("result", "fail");
resultMap.put("message", "조회된 파트가 없습니다.");
return resultMap;
}
// 품번 기준 파트 맵 생성 (화면에 표시된 파트만)
Map<String, Map> partNoMap = new HashMap<>();
for(Map part : partList) {
String partNo = CommonUtils.checkNull((String)part.get("PART_NO"));
if(!partNo.isEmpty()) {
partNoMap.put(partNo, part);
}
}
System.out.println("매칭 가능한 품번 개수: " + partNoMap.size());
int successCount = 0;
int failCount = 0;
int notFoundCount = 0;
// 업로드된 파일 처리
if(fileList != null && !fileList.isEmpty()) {
for(Object fileObj : fileList) {
Map fileInfo = (Map)fileObj;
String originalFileName = CommonUtils.checkNull((String)fileInfo.get("realFileName"));
String savedFileName = CommonUtils.checkNull((String)fileInfo.get("savedFileName"));
String fileExt = CommonUtils.checkNull((String)fileInfo.get("fileExt"));
long fileSize = Long.parseLong(CommonUtils.checkNull(fileInfo.get("fileSize"), "0"));
// 파일 크기가 0이면 실제 저장된 파일에서 다시 확인
// if(fileSize == 0) {
// try {
// File savedFile = new File(storagePath + File.separator + savedFileName);
// if(savedFile.exists()) {
// fileSize = savedFile.length();
// System.out.println("파일 크기 재확인: " + fileSize + " bytes");
// }
// } catch(Exception e) {
// System.out.println("파일 크기 재확인 실패: " + e.getMessage());
// }
// }
// 확장자 대문자 변환
fileExt = fileExt.toUpperCase();
System.out.println("========== 파트 목록 파일 업로드 처리 ==========");
System.out.println("원본 파일명: " + originalFileName);
System.out.println("저장 파일명: " + savedFileName);
System.out.println("확장자: " + fileExt);
System.out.println("파일 크기: " + fileSize + " bytes");
System.out.println("==========================================");
// 파일 확장자에 따른 문서 타입 결정
String docType = "";
String docTypeName = "";
if("STP".equals(fileExt) || "STEP".equals(fileExt)) {
docType = "3D_CAD";
docTypeName = "3D CAD 첨부파일";
} else if("DWG".equals(fileExt) || "DXF".equals(fileExt)) {
docType = "2D_DRAWING_CAD";
docTypeName = "2D(Drawing) CAD 첨부파일";
} else if("PDF".equals(fileExt)) {
docType = "2D_PDF_CAD";
docTypeName = "2D(PDF) CAD 첨부파일";
} else {
// 지원하지 않는 확장자는 스킵
System.out.println("지원하지 않는 확장자: " + fileExt + ", 파일명: " + originalFileName);
continue;
}
// 품번 추출 (맨 마지막 확장자만 제거 후 하이픈 기준 추출)
String extractedPartNo = extractPartNoFromFileName(originalFileName);
// 품번과 정확히 일치하는 경우만 매칭
String matchedPartNo = null;
System.out.println("품번 매칭 시작 - 추출된 품번: " + extractedPartNo);
if(extractedPartNo != null && !extractedPartNo.isEmpty()) {
// 정확한 매칭 (추출된 품번과 DB 품번이 정확히 일치)
if(partNoMap.containsKey(extractedPartNo)) {
matchedPartNo = extractedPartNo;
System.out.println(" ✓ 품번 정확 매칭 성공: " + matchedPartNo);
}
}
if(matchedPartNo == null) {
System.out.println(" ✗ 품번 매칭 실패 - 파일명: " + originalFileName + ", 추출된 품번: " + extractedPartNo);
notFoundCount++;
continue;
}
// 해당 파트에 파일 정보 저장
Map partInfo = partNoMap.get(matchedPartNo);
String partObjId = CommonUtils.checkNull((String)partInfo.get("OBJID"));
Map<String, Object> fileMap = new HashMap<>();
fileMap.put("OBJID", CommonUtils.createObjId());
fileMap.put("TARGET_OBJID", partObjId);
fileMap.put("SAVED_FILE_NAME", savedFileName);
fileMap.put("REAL_FILE_NAME", originalFileName);
fileMap.put("DOC_TYPE", docType);
fileMap.put("DOC_TYPE_NAME", docTypeName);
fileMap.put("FILE_SIZE", String.valueOf(fileSize));
fileMap.put("FILE_EXT", fileExt);
fileMap.put("FILE_PATH", storagePath);
fileMap.put("WRITER", userId);
try {
// 파일 정보 DB 저장
partMngService.insertDrawingFile(fileMap);
successCount++;
} catch(Exception e) {
e.printStackTrace();
failCount++;
}
}
}
resultMap.put("result", "success");
resultMap.put("successCount", successCount);
resultMap.put("failCount", failCount);
resultMap.put("notFoundCount", notFoundCount);
resultMap.put("message", "업로드가 완료되었습니다.");
} catch(Exception e) {
e.printStackTrace();
resultMap.put("result", "error");
resultMap.put("message", "업로드 중 오류가 발생했습니다: " + e.getMessage());
} finally {
if(frc != null) {
frc.clear();
}
}
return resultMap;
}
/**
* 파일명에서 품번을 추출하는 헬퍼 메서드
*
* 품번 추출 규칙:
* 1. 모든 확장자 제거 (.idw.pdf → .idw도 제거)
* 2. 확장자 제거 후 첫 번째 하이픈(-) 위치 찾기
* 3. 하이픈 앞 자릿수에 따라 품번 길이 결정
* - 5자리: 하이픈 포함 10자리 추출 (예: 20002-0043)
* - 7자리: 하이픈 포함 16자리 추출 (예: 2000200-004300-01)
*
* @param fileName 원본 파일명 (예: "20002-0043.idw.pdf")
* @return 추출된 품번 (예: "20002-0043") 또는 null
*/
private String extractPartNoFromFileName(String fileName) {
if(fileName == null || fileName.isEmpty()) {
return null;
}
try {
// 1단계: 모든 확장자 제거 (이중/삼중 확장자 대응)
// 알려진 CAD 확장자 목록
String[] cadExtensions = {".idw", ".dwg", ".dxf", ".stp", ".step", ".pdf", ".chg"};
String fileNameWithoutExt = fileName;
// 반복적으로 확장자 제거 (예: file.idw.pdf → file.idw → file)
boolean extensionRemoved = true;
while(extensionRemoved) {
extensionRemoved = false;
// 마지막 점 찾기
int lastDotIndex = fileNameWithoutExt.lastIndexOf('.');
if(lastDotIndex > 0) {
String currentExt = fileNameWithoutExt.substring(lastDotIndex).toLowerCase();
// 알려진 CAD 확장자인 경우 제거
for(String ext : cadExtensions) {
if(currentExt.equals(ext)) {
fileNameWithoutExt = fileNameWithoutExt.substring(0, lastDotIndex);
extensionRemoved = true;
System.out.println("[품번 추출] 확장자 제거: " + currentExt + "" + fileNameWithoutExt);
break;
}
}
}
}
System.out.println("[품번 추출] 1단계 완료 - 모든 확장자 제거: " + fileNameWithoutExt);
// 2단계: 첫 번째 하이픈 위치 찾기
int firstHyphenIndex = fileNameWithoutExt.indexOf('-');
if(firstHyphenIndex == -1) {
System.out.println("[품번 추출] 하이픈이 없음 - 추출 실패");
return null;
}
// 3단계: 하이픈 앞 자릿수 확인
String beforeHyphen = fileNameWithoutExt.substring(0, firstHyphenIndex);
int beforeHyphenLength = beforeHyphen.length();
System.out.println("[품번 추출] 2단계 - 하이픈 앞 문자열: " + beforeHyphen + " (길이: " + beforeHyphenLength + ")");
// 4단계: 자릿수에 따라 품번 추출
String extractedPartNo = null;
if(beforeHyphenLength == 5) {
// 스핀들 설계팀: 5자리 -> 하이픈 1개 (5-4 = 10자리)
// 예: 20002-0043
int targetLength = 10;
if(fileNameWithoutExt.length() >= targetLength) {
extractedPartNo = fileNameWithoutExt.substring(0, targetLength);
System.out.println("[품번 추출] 3단계 - 5자리 패턴 (10자리 추출): " + extractedPartNo);
} else {
System.out.println("[품번 추출] 5자리 패턴이지만 총 길이가 10자리 미만 - 추출 실패");
}
} else if(beforeHyphenLength == 7) {
// 장비 개발팀: 7자리 -> 하이픈이 1개 또는 2개
// 하이픈 1개: 7-9 = 17자리 (예: 2000200-004300-0)
// 하이픈 2개: 7-6-2 = 18자리 (예: 2000200-004300-02)
// 두 번째 하이픈이 있는지 확인
int secondHyphenIndex = fileNameWithoutExt.indexOf('-', firstHyphenIndex + 1);
if(secondHyphenIndex != -1) {
// 하이픈이 2개인 경우: 7-6-2 패턴 = 18자리
// 예: 2000200-004300-02
extractedPartNo = fileNameWithoutExt;
System.out.println("[품번 추출] 3단계 - 7자리 패턴 (하이픈 2개, 전체 품번): " + extractedPartNo);
} else {
// 하이픈이 1개인 경우: 7-9 패턴 = 17자리
// 예: 2000200-004300-0 (16자리만 추출)
int targetLength = 16;
if(fileNameWithoutExt.length() >= targetLength) {
extractedPartNo = fileNameWithoutExt.substring(0, targetLength);
System.out.println("[품번 추출] 3단계 - 7자리 패턴 (하이픈 1개, 16자리 추출): " + extractedPartNo);
} else {
System.out.println("[품번 추출] 7자리 패턴이지만 총 길이가 16자리 미만 - 추출 실패");
}
}
} else {
System.out.println("[품번 추출] 하이픈 앞이 5자리 또는 7자리가 아님 - 추출 실패");
}
return extractedPartNo;
} catch(Exception e) {
System.out.println("[품번 추출] 예외 발생: " + e.getMessage());
e.printStackTrace();
return null;
}
}
}