E-BOM List, part 등록 수정

This commit is contained in:
2025-10-27 13:38:51 +09:00
parent ba7edde4da
commit a802714411
6 changed files with 345 additions and 44 deletions

View File

@@ -455,6 +455,38 @@ public class PartMngController {
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
@@ -1717,6 +1749,45 @@ public class PartMngController {
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;
}

View File

@@ -2610,6 +2610,32 @@ SELECT T1.LEV, T1.BOM_REPORT_OBJID, T1.ROOT_PART_NO, T1.PATH, T1.LEAF, T2.*
AND T.OBJID = #{OBJID}
</select>
<!-- PART Detail 수정 저장 -->
<update id="updatePartDetail" parameterType="map">
UPDATE PART_MNG
SET
PART_NAME = #{PART_NAME},
MATERIAL = #{MATERIAL},
HEAT_TREATMENT_HARDNESS = #{HEAT_TREATMENT_HARDNESS},
HEAT_TREATMENT_METHOD = #{HEAT_TREATMENT_METHOD},
SURFACE_TREATMENT = #{SURFACE_TREATMENT},
SUPPLY_CODE = #{SUPPLY_CODE},
PART_TYPE = #{PART_TYPE},
REMARK = #{REMARK},
EDIT_DATE = NOW()
WHERE OBJID = #{OBJID}
</update>
<!-- 품번 중복 체크 (PART_BOM_REPORT 테이블 - 헤더 품번) -->
<select id="checkDuplicatePartNo" parameterType="map" resultType="int">
SELECT COUNT(*)
FROM PART_BOM_REPORT
WHERE PART_NO = #{partNo}
<if test="bomReportObjid != null and bomReportObjid != ''">
AND OBJID != #{bomReportObjid}
</if>
</select>
<!-- //구조등록 목록조회 -->
<select id="getBOMStandardStructureList" parameterType="map" resultType="map">
SELECT * FROM
@@ -2679,7 +2705,7 @@ SELECT T1.LEV, T1.BOM_REPORT_OBJID, T1.ROOT_PART_NO, T1.PATH, T1.LEAF, T2.*
</if>
<if test="SEARCH_DEPLOY_DATE_TO != null and SEARCH_DEPLOY_DATE_TO != ''">
AND T.DEPLOY_DATE IS NOT NULL
AND TO_DATE(T.DEPLOY_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> #{SEARCH_DEPLOY_DATE_TO}::TIMESTAMP
AND T.DEPLOY_DATE::DATE <![CDATA[ <= ]]> #{SEARCH_DEPLOY_DATE_TO}::TIMESTAMP
</if>
<if test="status != null and !''.equals(status)">
@@ -2751,6 +2777,22 @@ SELECT T1.LEV, T1.BOM_REPORT_OBJID, T1.ROOT_PART_NO, T1.PATH, T1.LEAF, T2.*
FROM
PART_BOM_REPORT AS T
WHERE 1=1
<if test="SEARCH_PART_NO != null and !''.equals(SEARCH_PART_NO)">
AND UPPER(T.PART_NO) LIKE UPPER('%${SEARCH_PART_NO}%')
</if>
<if test="SEARCH_PART_NAME != null and !''.equals(SEARCH_PART_NAME)">
AND UPPER(T.PART_NAME) LIKE UPPER('%${SEARCH_PART_NAME}%')
</if>
<if test="product_cd != null and product_cd != ''">
AND T.PRODUCT_CD = #{product_cd}
</if>
<if test="search_fromDate != null and search_fromDate != ''">
AND REGDATE::DATE <![CDATA[ >= ]]> TO_DATE(#{search_fromDate}, 'YYYY-MM-DD')
</if>
<if test="search_toDate != null and search_toDate != ''">
AND REGDATE::DATE <![CDATA[ <= ]]> TO_DATE(#{search_toDate}, 'YYYY-MM-DD')
</if>
<if test="customer_cd != null and customer_cd != ''">
AND T.CUSTOMER_OBJID = #{customer_cd}
</if>
@@ -3278,15 +3320,15 @@ SELECT T1.LEV, T1.BOM_REPORT_OBJID, T1.ROOT_PART_NO, T1.PATH, T1.LEAF, T2.*
,P.OUT_DIAMETER
,P.IN_DIAMETER
,P.LENGTH
,P.SOURCING_CODE
,P.HEAT_TREATMENT_HARDNESS
,P.HEAT_TREATMENT_METHOD
,P.SURFACE_TREATMENT
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID <!--AND STATUS = 'Active'--> AND F.DOC_TYPE IN ('3D_CAD')) AS CU01_CNT
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID <!--AND STATUS = 'Active'--> AND F.DOC_TYPE IN ('2D_DRAWING_CAD')) AS CU02_CNT
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID <!--AND STATUS = 'Active'--> AND F.DOC_TYPE IN ('2D_PDF_CAD')) AS CU03_CNT
,V.LEV
,P.SOURCING_CODE
,P.HEAT_TREATMENT_HARDNESS
,P.HEAT_TREATMENT_METHOD
,P.SURFACE_TREATMENT
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID <!--AND STATUS = 'Active'--> AND F.DOC_TYPE IN ('3D_CAD')) AS CU01_CNT
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID <!--AND STATUS = 'Active'--> AND F.DOC_TYPE IN ('2D_DRAWING_CAD')) AS CU02_CNT
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO F WHERE P.OBJID = F.TARGET_OBJID <!--AND STATUS = 'Active'--> AND F.DOC_TYPE IN ('2D_PDF_CAD')) AS CU03_CNT
,V.LEV
,(SELECT OBJID FROM VIEW_BOM VT WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID AND VT.LEV = 1 ORDER BY SEQ LIMIT 1) AS ROOT_OBJID
,(SELECT OBJID FROM VIEW_BOM VT WHERE V.BOM_REPORT_OBJID = VT.BOM_REPORT_OBJID AND VT.LEV = 1 ORDER BY SEQ LIMIT 1) AS SUB_ROOT_OBJID
,( SELECT

View File

@@ -652,6 +652,36 @@ public class PartMngService extends BaseService {
return resultMap;
}
/**
* PART Detail 수정 저장
* @param request
* @param paramMap
* @return
*/
public int updatePartDetail(HttpServletRequest request, Map paramMap){
int result = 0;
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
try{
// 품목 정보 업데이트 (품명, 재료, 열처리경도, 열처리방법, 표면처리, 공급업체, 범주이름, 비고)
result = sqlSession.update("partMng.updatePartDetail", paramMap);
if(result > 0){
sqlSession.commit();
}else{
sqlSession.rollback();
}
}catch(Exception e){
e.printStackTrace();
sqlSession.rollback();
}finally{
sqlSession.close();
}
return result;
}
/**
* 파트 배포
@@ -1018,7 +1048,7 @@ public class PartMngService extends BaseService {
*/
public boolean updateStructureStatus(HttpServletRequest request, Map paramMap){
boolean result = false;
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession();
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
//접속자
HttpSession session = request.getSession();
PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN);
@@ -1026,9 +1056,24 @@ public class PartMngService extends BaseService {
paramMap.put("EDITER", userId);
try{
// BOM 상태 업데이트
int cnt = sqlSession.update("partMng.updateStructureStatus", paramMap);
// 상태가 Y로 변경되면 연결된 파트들을 확정(release)
String status = CommonUtils.checkNull(paramMap.get("status"));
if("Y".equals(status)){
String objId = CommonUtils.checkNull(paramMap.get("objId"));
Map deployParam = new HashMap();
deployParam.put("checkArr", objId);
// BOM에 연결된 파트들의 상태를 create -> release로 변경
sqlSession.update("partMng.deployPartInfo", deployParam);
}
sqlSession.commit();
if(cnt > 0) result = true;
}catch(Exception e){
sqlSession.rollback();
e.printStackTrace();
}finally{
sqlSession.close();
@@ -4218,6 +4263,30 @@ public class PartMngService extends BaseService {
return result;
}
/**
* 품번 중복 체크 (PART_BOM_REPORT 테이블)
* @param request
* @param paramMap
* @return 중복 개수
*/
public int checkDuplicatePartNo(HttpServletRequest request, Map paramMap){
int count = 0;
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession();
count = sqlSession.selectOne("partMng.checkDuplicatePartNo", paramMap);
}catch(Exception e){
e.printStackTrace();
}finally{
if(sqlSession != null){
sqlSession.close();
}
}
return count;
}
//bom 구조등록(엑셀업로드)
public void savePartBomMaster(HttpServletRequest request,Map paramMap) throws Exception{
SqlSession sqlSession = null;
@@ -4396,6 +4465,8 @@ public class PartMngService extends BaseService {
insertMap.put("SUPPLY_CODE", CommonUtils.checkNull((String)insertMap.get("SUP_CODE")));
insertMap.put("MAKER", CommonUtils.checkNull((String)insertMap.get("MAKER")));
insertMap.put("POST_PROCESSING", CommonUtils.checkNull((String)insertMap.get("POST_PROCESSING")));
insertMap.put("STATUS", "deploy"); // 엑셀 업로드 시 deploy 상태로 저장
insertMap.put("WRITER", CommonUtils.checkNull((String)paramMap.get("CONNECTUSERID")));
insertMap.put("CONTRACT_OBJID", CommonUtils.checkNull((String)paramMap.get("CONTRACT_OBJID")));
insertMap.put("PRODUCT_MGMT_OBJID", CommonUtils.checkNull((String)paramMap.get("product_mgmt_objid")));