생산관리_M-BOM관리페이지 e-bom까지 완료
This commit is contained in:
@@ -904,4 +904,70 @@ public class ProductionPlanningController extends BaseService {
|
||||
commonService.selectListPagingNew("productionplanning.mBomMgmtGridList", request, paramMap);
|
||||
return paramMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* M-BOM E-BOM 선택 팝업
|
||||
* @param request
|
||||
* @param paramMap
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/productionplanning/mBomEbomSelectPopup.do")
|
||||
public String mBomEbomSelectPopup(HttpServletRequest request, @RequestParam Map<String, Object> paramMap) {
|
||||
try {
|
||||
// 필요한 코드 맵 설정 (structureList.jsp 참고)
|
||||
Map<String, Object> codeMap = new HashMap<>();
|
||||
// 제품구분 코드 - structureList와 동일하게 설정
|
||||
codeMap.put("product_cd", commonService.bizMakeOptionList("0000001", CommonUtils.nullToEmpty((String)paramMap.get("product_cd")), "common.getCodeselect"));
|
||||
request.setAttribute("code_map", codeMap);
|
||||
|
||||
// 현재 할당된 E-BOM 정보 조회
|
||||
String bomReportObjid = CommonUtils.checkNull(paramMap.get("bomReportObjid"));
|
||||
if(!"".equals(bomReportObjid)) {
|
||||
// E-BOM 정보 조회
|
||||
Map<String, Object> ebomInfo = productionPlanningService.getEbomInfo(bomReportObjid);
|
||||
request.setAttribute("currentEbom", ebomInfo);
|
||||
}
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return "/productionplanning/mBomEbomSelectPopup";
|
||||
}
|
||||
|
||||
/**
|
||||
* E-BOM을 M-BOM(PROJECT_MGMT)에 할당
|
||||
* @param request
|
||||
* @param paramMap
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/productionplanning/assignEbomToMbom.do")
|
||||
public Map<String, Object> assignEbomToMbom(HttpServletRequest request, @RequestParam Map<String, Object> paramMap) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
try {
|
||||
String projectMgmtObjid = CommonUtils.checkNull(paramMap.get("projectMgmtObjid"));
|
||||
String bomReportObjid = CommonUtils.checkNull(paramMap.get("bomReportObjid"));
|
||||
|
||||
if(projectMgmtObjid.isEmpty() || bomReportObjid.isEmpty()) {
|
||||
resultMap.put("success", false);
|
||||
resultMap.put("message", "필수 파라미터가 누락되었습니다.");
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
// PROJECT_MGMT 테이블의 PART_OBJID 업데이트
|
||||
int updateResult = productionPlanningService.assignEbomToProject(projectMgmtObjid, bomReportObjid);
|
||||
|
||||
if(updateResult > 0) {
|
||||
resultMap.put("success", true);
|
||||
resultMap.put("message", "E-BOM이 할당되었습니다.");
|
||||
} else {
|
||||
resultMap.put("success", false);
|
||||
resultMap.put("message", "할당에 실패했습니다.");
|
||||
}
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
resultMap.put("success", false);
|
||||
resultMap.put("message", "오류가 발생했습니다: " + e.getMessage());
|
||||
}
|
||||
return resultMap;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2928,7 +2928,7 @@
|
||||
FROM CONTRACT_ITEM CI
|
||||
WHERE CI.CONTRACT_OBJID = PM.CONTRACT_OBJID
|
||||
AND CI.PART_OBJID = PM.PART_OBJID
|
||||
AND CI.STATUS = 'ACTIVE'),
|
||||
AND CI.STATUS = 'ACTIVE' LIMIT 1),
|
||||
PM.DUE_DATE,
|
||||
CM.req_del_date
|
||||
) AS REQ_DEL_DATE,
|
||||
@@ -2938,19 +2938,31 @@
|
||||
FROM CONTRACT_ITEM CI
|
||||
WHERE CI.CONTRACT_OBJID = PM.CONTRACT_OBJID
|
||||
AND CI.PART_OBJID = PM.PART_OBJID
|
||||
AND CI.STATUS = 'ACTIVE'),
|
||||
AND CI.STATUS = 'ACTIVE' LIMIT 1),
|
||||
''
|
||||
) AS CUSTOMER_REQUEST,
|
||||
PBR.OBJID AS BOM_REPORT_OBJID,
|
||||
COALESCE(PBR.STATUS, '') AS EBOM_STATUS,
|
||||
COALESCE(TO_CHAR(PBR.REGDATE, 'YYYY-MM-DD'), '') AS EBOM_REGDATE,
|
||||
-- E-BOM 정보: PM.PART_OBJID가 E-BOM OBJID를 직접 가리킴
|
||||
PM.PART_OBJID AS BOM_REPORT_OBJID,
|
||||
COALESCE(
|
||||
(SELECT PBR.STATUS
|
||||
FROM PART_BOM_REPORT PBR
|
||||
WHERE PBR.OBJID::VARCHAR = PM.PART_OBJID
|
||||
LIMIT 1),
|
||||
''
|
||||
) AS EBOM_STATUS,
|
||||
COALESCE(
|
||||
(SELECT TO_CHAR(PBR.REGDATE, 'YYYY-MM-DD')
|
||||
FROM PART_BOM_REPORT PBR
|
||||
WHERE PBR.OBJID::VARCHAR = PM.PART_OBJID
|
||||
LIMIT 1),
|
||||
''
|
||||
) AS EBOM_REGDATE,
|
||||
COALESCE(PM.MBOM_STATUS, '') AS MBOM_STATUS,
|
||||
'1.0' AS MBOM_VERSION,
|
||||
TO_CHAR(PM.REGDATE, 'YYYY-MM-DD') AS MBOM_REGDATE
|
||||
FROM
|
||||
PROJECT_MGMT PM
|
||||
LEFT JOIN CONTRACT_MGMT CM ON PM.CONTRACT_OBJID = CM.OBJID
|
||||
LEFT JOIN PART_BOM_REPORT PBR ON PM.CONTRACT_OBJID = PBR.CONTRACT_OBJID::VARCHAR
|
||||
WHERE 1=1
|
||||
AND PM.PROJECT_NO IS NOT NULL
|
||||
AND PM.PROJECT_NO != ''
|
||||
@@ -2964,4 +2976,31 @@
|
||||
</if>
|
||||
ORDER BY PM.REGDATE DESC
|
||||
</select>
|
||||
|
||||
<!-- E-BOM을 PROJECT_MGMT에 할당 -->
|
||||
<update id="assignEbomToProject" parameterType="map">
|
||||
UPDATE PROJECT_MGMT
|
||||
SET
|
||||
PART_OBJID = #{bomReportObjid}
|
||||
WHERE OBJID = #{projectMgmtObjid}
|
||||
</update>
|
||||
|
||||
<!-- E-BOM 정보 조회 -->
|
||||
<select id="getEbomInfo" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
||||
SELECT
|
||||
T.OBJID,
|
||||
T.PRODUCT_CD,
|
||||
CODE_NAME(T.PRODUCT_CD) as PRODUCT_NAME,
|
||||
T.PART_NO,
|
||||
T.PART_NAME,
|
||||
T.STATUS,
|
||||
T.REVISION,
|
||||
TO_CHAR(T.REGDATE, 'YYYY-MM-DD') AS REG_DATE,
|
||||
UI.USER_NAME AS WRITER_NAME,
|
||||
UI.DEPT_NAME
|
||||
FROM
|
||||
PART_BOM_REPORT T
|
||||
LEFT JOIN USER_INFO UI ON UI.USER_ID = T.WRITER
|
||||
WHERE T.OBJID::VARCHAR = #{objid}
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -692,4 +692,61 @@ public class ProductionPlanningService {
|
||||
}
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* E-BOM을 PROJECT_MGMT에 할당
|
||||
* @param projectMgmtObjid
|
||||
* @param bomReportObjid
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public int assignEbomToProject(String projectMgmtObjid, String bomReportObjid) throws Exception {
|
||||
SqlSession sqlSession = null;
|
||||
try {
|
||||
sqlSession = SqlMapConfig.getInstance().getSqlSession();
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
paramMap.put("projectMgmtObjid", projectMgmtObjid);
|
||||
paramMap.put("bomReportObjid", bomReportObjid);
|
||||
|
||||
int result = sqlSession.update("productionplanning.assignEbomToProject", paramMap);
|
||||
sqlSession.commit();
|
||||
|
||||
return result;
|
||||
} catch(Exception e) {
|
||||
if(sqlSession != null) {
|
||||
sqlSession.rollback();
|
||||
}
|
||||
throw e;
|
||||
} finally {
|
||||
if(sqlSession != null) {
|
||||
sqlSession.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* E-BOM 정보 조회
|
||||
* @param bomReportObjid
|
||||
* @return
|
||||
*/
|
||||
public Map<String, Object> getEbomInfo(String bomReportObjid) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
SqlSession sqlSession = null;
|
||||
|
||||
try {
|
||||
sqlSession = SqlMapConfig.getInstance().getSqlSession();
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
paramMap.put("objid", bomReportObjid);
|
||||
resultMap = sqlSession.selectOne("productionplanning.getEbomInfo", paramMap);
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if(sqlSession != null) {
|
||||
sqlSession.close();
|
||||
}
|
||||
}
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user