Merge pull request 'V20260210' (#171) from V20260210 into main

Reviewed-on: #171
This commit was merged in pull request #171.
This commit is contained in:
2026-03-13 07:59:12 +00:00
3 changed files with 67 additions and 184 deletions

View File

@@ -2836,10 +2836,11 @@ private String encodeImageToBase64(String imagePath) {
// 프로젝트 등록
cnt = sqlSession.update("project.createProject", projectParam);
// 프로젝트 TASK 등록
cnt = sqlSession.insert("contractMgmt.insertProjectTask", projectParam);
// 프로젝트 SETUP_TASK 등록
cnt = sqlSession.insert("contractMgmt.insertProjectSetupTask", projectParam);
// WBS 자동생성 주석처리
// // 프로젝트 TASK 등록
// cnt = sqlSession.insert("contractMgmt.insertProjectTask", projectParam);
// // 프로젝트 SETUP_TASK 등록
// cnt = sqlSession.insert("contractMgmt.insertProjectSetupTask", projectParam);
// 동일 품번 M-BOM 자동 복사 제거 - 수주 시점에는 총생산수량 미확정이므로
// M-BOM관리에서 생산계획 입력 후 수동 복사하도록 변경
@@ -2852,22 +2853,23 @@ private String encodeImageToBase64(String imagePath) {
// itemQuantity);
// }
// project_no - unit 폴더 생성
Map<String,Object> projectInfo = (Map)sqlSession.selectOne("project.getProjectMngInfo", projectParam);
projectParam.put("contract_objid", contract_objid);
projectParam.put("customer_product", projectParam.get("mechanical_type"));
List<Map<String,Object>> taskUnitList = (ArrayList)sqlSession.selectList("project.getWbsTaskListByProject", projectParam);
if(CommonUtils.isNotEmpty(taskUnitList) && !taskUnitList.isEmpty()){
String projectNo = (String)projectInfo.get("project_no");
String filepath = Constants.FILE_STORAGE+"\\PART_DATA\\";
for (Map<String, Object> map : taskUnitList) {
File file = new File(filepath+File.separator+projectNo+File.separator+CommonUtils.checkNull((String)map.get("unit_no"))+"-"+CommonUtils.checkNull((String)map.get("task_name")));
if(!file.exists()){
file.mkdirs();
}
}
}
// WBS 폴더 생성 주석처리
// // project_no - unit 폴더 생성
// Map<String,Object> projectInfo = (Map)sqlSession.selectOne("project.getProjectMngInfo", projectParam);
//
// projectParam.put("contract_objid", contract_objid);
// projectParam.put("customer_product", projectParam.get("mechanical_type"));
// List<Map<String,Object>> taskUnitList = (ArrayList)sqlSession.selectList("project.getWbsTaskListByProject", projectParam);
// if(CommonUtils.isNotEmpty(taskUnitList) && !taskUnitList.isEmpty()){
// String projectNo = (String)projectInfo.get("project_no");
// String filepath = Constants.FILE_STORAGE+"\\PART_DATA\\";
// for (Map<String, Object> map : taskUnitList) {
// File file = new File(filepath+File.separator+projectNo+File.separator+CommonUtils.checkNull((String)map.get("unit_no"))+"-"+CommonUtils.checkNull((String)map.get("task_name")));
// if(!file.exists()){
// file.mkdirs();
// }
// }
// }
} else {
// 프로젝트가 있으면 모든 품목 업데이트 (수량, 금액 등만)
Map<String, Object> updateParam = new HashMap<String, Object>();
@@ -3067,10 +3069,11 @@ private String encodeImageToBase64(String imagePath) {
// 프로젝트 등록
cnt = sqlSession.update("project.createProject", projectParam);
// 프로젝트 TASK 등록
cnt = sqlSession.insert("contractMgmt.insertProjectTask", projectParam);
// 프로젝트 SETUP_TASK 등록
cnt = sqlSession.insert("contractMgmt.insertProjectSetupTask", projectParam);
// WBS 자동생성 주석처리
// // 프로젝트 TASK 등록
// cnt = sqlSession.insert("contractMgmt.insertProjectTask", projectParam);
// // 프로젝트 SETUP_TASK 등록
// cnt = sqlSession.insert("contractMgmt.insertProjectSetupTask", projectParam);
// 동일 품번 M-BOM 자동 복사 제거 - 수주 시점에는 총생산수량 미확정이므로
// M-BOM관리에서 생산계획 입력 후 수동 복사하도록 변경
@@ -3083,22 +3086,23 @@ private String encodeImageToBase64(String imagePath) {
// itemQuantity);
// }
// project_no - unit 폴더 생성
Map<String,Object> projectInfo = (Map)sqlSession.selectOne("project.getProjectMngInfo", projectParam);
projectParam.put("contract_objid", contract_objid);
projectParam.put("customer_product", projectParam.get("mechanical_type"));
List<Map<String,Object>> taskUnitList = (ArrayList)sqlSession.selectList("project.getWbsTaskListByProject", projectParam);
if(CommonUtils.isNotEmpty(taskUnitList) && !taskUnitList.isEmpty()){
String projectNo = (String)projectInfo.get("project_no");
String filepath = Constants.FILE_STORAGE+"\\PART_DATA\\";
for (Map<String, Object> map : taskUnitList) {
File file = new File(filepath+File.separator+projectNo+File.separator+CommonUtils.checkNull((String)map.get("unit_no"))+"-"+CommonUtils.checkNull((String)map.get("task_name")));
if(!file.exists()){
file.mkdirs();
}
}
}
// WBS 폴더 생성 주석처리
// // project_no - unit 폴더 생성
// Map<String,Object> projectInfo = (Map)sqlSession.selectOne("project.getProjectMngInfo", projectParam);
//
// projectParam.put("contract_objid", contract_objid);
// projectParam.put("customer_product", projectParam.get("mechanical_type"));
// List<Map<String,Object>> taskUnitList = (ArrayList)sqlSession.selectList("project.getWbsTaskListByProject", projectParam);
// if(CommonUtils.isNotEmpty(taskUnitList) && !taskUnitList.isEmpty()){
// String projectNo = (String)projectInfo.get("project_no");
// String filepath = Constants.FILE_STORAGE+"\\PART_DATA\\";
// for (Map<String, Object> map : taskUnitList) {
// File file = new File(filepath+File.separator+projectNo+File.separator+CommonUtils.checkNull((String)map.get("unit_no"))+"-"+CommonUtils.checkNull((String)map.get("task_name")));
// if(!file.exists()){
// file.mkdirs();
// }
// }
// }
} else {
// 프로젝트가 있으면 모든 품목 업데이트 (수량, 금액 등만)
Map<String, Object> updateParam = new HashMap<String, Object>();

View File

@@ -3557,21 +3557,7 @@ public class PartMngService extends BaseService {
String surfaceTreatment = getCsvValue(values, colIndex++, emptyColCnt); // 8: 표면처리
String supplier = getCsvValue(values, colIndex++, emptyColCnt); // 9: 공급업체
String partType = getCsvValue(values, colIndex++, emptyColCnt); // 10: 범주이름
// CSV 컬럼 순서: 11: 규격, 12: 계정구분, 13: 조달구분, 14: 재고단위, 15: 관리단위, 16: 환산수량
// 17: LOT구분, 18: 사용여부, 19: 검사여부, 20: SET품여부, 21: 의뢰여부, 22: 개당길이, 23: 개당소요량
String spec = colIndex < values.length ? getCsvValue(values, colIndex++, emptyColCnt) : ""; // 11: 규격
String acctfg = colIndex < values.length ? getCsvValue(values, colIndex++, emptyColCnt) : ""; // 12: 계정구분
String odrfg = colIndex < values.length ? getCsvValue(values, colIndex++, emptyColCnt) : ""; // 13: 조달구분
String unitDc = colIndex < values.length ? getCsvValue(values, colIndex++, emptyColCnt) : ""; // 14: 재고단위
String unitmangDc = colIndex < values.length ? getCsvValue(values, colIndex++, emptyColCnt) : ""; // 15: 관리단위
String unitchngNb = colIndex < values.length ? getCsvValue(values, colIndex++, emptyColCnt) : ""; // 16: 환산수량
String lotFg = colIndex < values.length ? getCsvValue(values, colIndex++, emptyColCnt) : ""; // 17: LOT구분
String useYn = colIndex < values.length ? getCsvValue(values, colIndex++, emptyColCnt) : ""; // 18: 사용여부
String qcFg = colIndex < values.length ? getCsvValue(values, colIndex++, emptyColCnt) : ""; // 19: 검사여부
String setitemFg = colIndex < values.length ? getCsvValue(values, colIndex++, emptyColCnt) : ""; // 20: SET품여부
String reqFg = colIndex < values.length ? getCsvValue(values, colIndex++, emptyColCnt) : ""; // 21: 의뢰여부
String unitLength = colIndex < values.length ? getCsvValue(values, colIndex++, emptyColCnt) : ""; // 22: 개당길이
String unitQty = colIndex < values.length ? getCsvValue(values, colIndex++, emptyColCnt) : ""; // 23: 개당소요량
// 11번 이후 컬럼은 파싱하지 않음 - 범주이름에 따라 자동값 설정
// 수준으로부터 부모 품번 찾기
String parentPartNo = "";
@@ -3676,136 +3662,28 @@ public class PartMngService extends BaseService {
partMap.put("SURFACE_TREATMENT", surfaceTreatment);
partMap.put("MAKER", makerValue); // MAKER에 저장
partMap.put("PART_TYPE", partTypeCode);
partMap.put("SPEC", spec.trim()); // 규격
// 계정구분(ACCTFG) - 한글명 입력 시 코드값으로 변환
if(!StringUtils.isBlank(acctfg)){
if(acctfg.matches("\\d+")) {
partMap.put("ACCTFG", acctfg);
} else {
Map acctfgParam = new HashMap();
acctfgParam.put("CODE_NAME", acctfg.trim());
Map acctfgResult = sqlSession.selectOne("partMng.getAcctfgCode", acctfgParam);
if(acctfgResult != null && !StringUtils.isBlank((String)acctfgResult.get("code_id"))){
partMap.put("ACCTFG", acctfgResult.get("code_id"));
} else {
partMap.put("ACCTFG", acctfg);
}
}
// 범주이름에 따라 계정구분, 조달구분 자동 설정
// 조립품(0001813), 부품(0001812) → 계정구분: 반제품(4), 조달구분: 생산(1)
// 구매품(0000063) → 계정구분: 비용(7), 조달구분: 구매(0)
if("0001813".equals(partTypeCode) || "0001812".equals(partTypeCode)) {
partMap.put("ACCTFG", "4");
partMap.put("ODRFG", "1");
} else if("0000063".equals(partTypeCode)) {
partMap.put("ACCTFG", "7");
partMap.put("ODRFG", "0");
} else {
partMap.put("ACCTFG", "");
}
// 조달구분(ODRFG) - 한글명 입력 시 코드값으로 변환 (0:구매, 1:생산, 8:Phantom)
if(!CommonUtils.isBlank(odrfg)){
if("구매".equals(odrfg.trim())){
partMap.put("ODRFG", "0");
} else if("생산".equals(odrfg.trim())){
partMap.put("ODRFG", "1");
} else if("Phantom".equalsIgnoreCase(odrfg.trim())){
partMap.put("ODRFG", "8");
} else {
partMap.put("ODRFG", odrfg); // 숫자면 그대로
}
} else {
partMap.put("ODRFG", "");
}
// 재고단위(UNIT_DC) - 코드명 입력 시 코드값으로 변환
if(!StringUtils.isBlank(unitDc)){
if(unitDc.trim().matches("\\d+")){
partMap.put("UNIT_DC", unitDc.trim());
} else {
Map unitDcParam = new HashMap();
unitDcParam.put("CODE_NAME", unitDc.trim());
Map unitDcResult = sqlSession.selectOne("partMng.getUnitDcCode", unitDcParam);
if(unitDcResult != null && !StringUtils.isBlank((String)unitDcResult.get("code_id"))){
partMap.put("UNIT_DC", unitDcResult.get("code_id"));
} else {
partMap.put("UNIT_DC", unitDc.trim());
}
}
} else {
partMap.put("UNIT_DC", "");
}
// 관리단위(UNITMANG_DC) - 코드명 입력 시 코드값으로 변환
if(!StringUtils.isBlank(unitmangDc)){
if(unitmangDc.trim().matches("\\d+")){
partMap.put("UNITMANG_DC", unitmangDc.trim());
} else {
Map unitmangParam = new HashMap();
unitmangParam.put("CODE_NAME", unitmangDc.trim());
Map unitmangResult = sqlSession.selectOne("partMng.getUnitDcCode", unitmangParam);
if(unitmangResult != null && !StringUtils.isBlank((String)unitmangResult.get("code_id"))){
partMap.put("UNITMANG_DC", unitmangResult.get("code_id"));
} else {
partMap.put("UNITMANG_DC", unitmangDc.trim());
}
}
} else {
partMap.put("UNITMANG_DC", "");
}
partMap.put("UNITCHNG_NB", unitchngNb.trim());
// LOT구분 - 한글명 입력 시 코드값으로 변환 (0:미사용, 1:사용)
if(!CommonUtils.isBlank(lotFg)){
if("사용".equals(lotFg.trim())){
partMap.put("LOT_FG", "1");
} else if("미사용".equals(lotFg.trim())){
partMap.put("LOT_FG", "0");
} else {
partMap.put("LOT_FG", lotFg.trim());
}
} else {
partMap.put("LOT_FG", "");
}
// 사용여부 - 한글명 입력 시 코드값으로 변환 (0:미사용, 1:사용)
if(!CommonUtils.isBlank(useYn)){
if("사용".equals(useYn.trim())){
partMap.put("USE_YN", "1");
} else if("미사용".equals(useYn.trim())){
partMap.put("USE_YN", "0");
} else {
partMap.put("USE_YN", useYn.trim());
}
} else {
partMap.put("USE_YN", "");
}
// 검사여부 - 한글명 입력 시 코드값으로 변환 (0:무검사, 1:검사)
if(!CommonUtils.isBlank(qcFg)){
if("검사".equals(qcFg.trim())){
partMap.put("QC_FG", "1");
} else if("무검사".equals(qcFg.trim())){
partMap.put("QC_FG", "0");
} else {
partMap.put("QC_FG", qcFg.trim());
}
} else {
partMap.put("QC_FG", "");
}
// SET품여부 - 한글명 입력 시 코드값으로 변환 (0:부, 1:여)
if(!CommonUtils.isBlank(setitemFg)){
if("".equals(setitemFg.trim())){
partMap.put("SETITEM_FG", "1");
} else if("".equals(setitemFg.trim())){
partMap.put("SETITEM_FG", "0");
} else {
partMap.put("SETITEM_FG", setitemFg.trim());
}
} else {
partMap.put("SETITEM_FG", "");
}
// 의뢰여부 - 한글명 입력 시 코드값으로 변환 (0:부, 1:여)
if(!CommonUtils.isBlank(reqFg)){
if("".equals(reqFg.trim())){
partMap.put("REQ_FG", "1");
} else if("".equals(reqFg.trim())){
partMap.put("REQ_FG", "0");
} else {
partMap.put("REQ_FG", reqFg.trim());
}
} else {
partMap.put("REQ_FG", "");
}
// 개당길이, 개당소요량
partMap.put("UNIT_LENGTH", unitLength.trim());
partMap.put("UNIT_QTY", unitQty.trim());
// 기본값 설정
partMap.put("UNIT_DC", "0001400"); // EA
partMap.put("UNITMANG_DC", "0001400"); // EA
partMap.put("UNITCHNG_NB", "1");
partMap.put("LOT_FG", "1"); // 사용
partMap.put("USE_YN", "1"); // 사용
partMap.put("QC_FG", "0"); // 무검사
partMap.put("SETITEM_FG", "0"); // 부
partMap.put("REQ_FG", "0"); // 부
partMap.put("NOTE", noteMsg);
if(!StringUtils.isBlank(noteMsg) || emptyColCnt.intValue() < 9) {

View File

@@ -330,9 +330,10 @@ public class ProjectConceptService {
currentStatus = CommonUtils.checkNull(currentResultMap.get("status_title"));
if("수주".equals(currentStatus)){
createProjectWBSTask(request, paramMap,sqlSession);
}
// WBS 자동생성 주석처리
// if("수주".equals(currentStatus)){
// createProjectWBSTask(request, paramMap,sqlSession);
// }
if(cnt > 0){
resultMap.put("result", true);