Merge branch 'V2025112501'
This commit is contained in:
@@ -963,6 +963,9 @@ VALUES
|
||||
SRM.REQUEST_CD,
|
||||
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.REQUEST_CD) AS REQUEST_CD_NAME,
|
||||
|
||||
-- 구매요청서 작성 여부 (SALES_REQUEST_PART에 데이터가 있으면 'Y')
|
||||
(SELECT CASE WHEN COUNT(*) > 0 THEN 'Y' ELSE 'N' END FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID) AS HAS_PURCHASE_REQUEST,
|
||||
|
||||
-- 추가된 컬럼들
|
||||
SRM.PURCHASE_TYPE,
|
||||
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.PURCHASE_TYPE) AS PURCHASE_TYPE_NAME,
|
||||
@@ -1155,32 +1158,40 @@ VALUES
|
||||
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{receipt_date_end}, 'YYYY-MM-DD')
|
||||
</if>
|
||||
|
||||
<!-- <if test="SEARCH_PART_NO != null and !''.equals(SEARCH_PART_NO)">
|
||||
AND OBJID IN (
|
||||
<if test="SEARCH_PART_NO != null and !''.equals(SEARCH_PART_NO)">
|
||||
AND SRM.OBJID IN (
|
||||
SELECT
|
||||
SRP.SALES_REQUEST_MASTER_OBJID
|
||||
FROM
|
||||
SALES_REQUEST_PART SRP
|
||||
LEFT OUTER JOIN PART_MNG PM
|
||||
ON SRP.PART_OBJID::VARCHAR = PM.OBJID::VARCHAR
|
||||
WHERE PART_NO LIKE'%${SEARCH_PART_NO}%'
|
||||
WHERE PM.PART_NO LIKE '%${SEARCH_PART_NO}%'
|
||||
)
|
||||
</if>
|
||||
<if test="SEARCH_PART_NAME != null and !''.equals(SEARCH_PART_NAME)">
|
||||
AND OBJID IN (
|
||||
AND SRM.OBJID IN (
|
||||
SELECT
|
||||
SRP.SALES_REQUEST_MASTER_OBJID
|
||||
FROM
|
||||
SALES_REQUEST_PART SRP
|
||||
LEFT OUTER JOIN PART_MNG PM
|
||||
ON SRP.PART_OBJID::VARCHAR = PM.OBJID::VARCHAR
|
||||
WHERE PART_NAME LIKE'%${SEARCH_PART_NAME}%'
|
||||
WHERE PM.PART_NAME LIKE '%${SEARCH_PART_NAME}%'
|
||||
)
|
||||
</if> -->
|
||||
</if>
|
||||
|
||||
<if test="SEARCH_STATUS != null and !''.equals(SEARCH_STATUS)">
|
||||
<![CDATA[ AND 0 < POSITION(STATUS || ',' IN #{SEARCH_STATUS}||',') ]]>
|
||||
</if>
|
||||
|
||||
<if test="regdate_start != null and !''.equals(regdate_start)">
|
||||
AND SRM.REGDATE::DATE <![CDATA[ >= ]]> #{regdate_start}::DATE
|
||||
</if>
|
||||
<if test="regdate_end != null and !''.equals(regdate_end)">
|
||||
AND SRM.REGDATE::DATE <![CDATA[ <= ]]> #{regdate_end}::DATE
|
||||
</if>
|
||||
|
||||
ORDER BY SRM.REGDATE desc
|
||||
</select>
|
||||
|
||||
@@ -3272,5 +3283,220 @@ ORDER BY V.PATH2
|
||||
WRITER = #{EDITER}
|
||||
WHERE OBJID::VARCHAR = #{OBJID}
|
||||
</update>
|
||||
|
||||
<!-- M-BOM에서 구매리스트 생성 시 해당 프로젝트로 이미 생성된 구매요청서가 있는지 확인 -->
|
||||
<select id="getSalesRequestMasterByProjectNo" parameterType="map" resultType="map">
|
||||
SELECT
|
||||
OBJID,
|
||||
REQUEST_MNG_NO,
|
||||
PROJECT_NO,
|
||||
STATUS
|
||||
FROM
|
||||
SALES_REQUEST_MASTER
|
||||
WHERE
|
||||
PROJECT_NO = #{PROJECT_NO}
|
||||
ORDER BY REGDATE DESC
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 다음 요청번호 생성 (R + YYYYMMDD + - + 3자리 순번) -->
|
||||
<select id="getNextRequestMngNo" resultType="string">
|
||||
SELECT 'R'||TO_CHAR(NOW(),'YYYYMMDD')||'-'||LPAD((COALESCE(MAX(SUBSTR(REQUEST_MNG_NO,11,13)),'0')::INTEGER+1)::TEXT,3,'0')
|
||||
FROM SALES_REQUEST_MASTER
|
||||
</select>
|
||||
|
||||
<!-- M-BOM에서 구매리스트 생성 - SALES_REQUEST_MASTER만 생성 (SALES_REQUEST_PART는 생성 안 함) -->
|
||||
<insert id="insertSalesRequestMasterFromMBom" parameterType="map">
|
||||
INSERT INTO SALES_REQUEST_MASTER (
|
||||
OBJID,
|
||||
REQUEST_MNG_NO,
|
||||
PROJECT_NO,
|
||||
REQUEST_USER_ID,
|
||||
STATUS,
|
||||
WRITER,
|
||||
REGDATE
|
||||
) VALUES (
|
||||
#{OBJID},
|
||||
#{REQUEST_MNG_NO},
|
||||
#{PROJECT_NO},
|
||||
#{REQUEST_USER_ID},
|
||||
#{STATUS},
|
||||
#{WRITER},
|
||||
NOW()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- ==================== 품의서 관리 ==================== -->
|
||||
|
||||
<!-- 품의서 목록 조회 -->
|
||||
<select id="getProposalMngGridList" parameterType="map" resultType="map">
|
||||
SELECT
|
||||
SRM.OBJID,
|
||||
SRM.REQUEST_MNG_NO AS PROPOSAL_NO,
|
||||
-- 발주서 No
|
||||
(SELECT STRING_AGG(PURCHASE_ORDER_NO, ', ') FROM PURCHASE_ORDER_MASTER WHERE SALES_REQUEST_OBJID = SRM.OBJID) AS PURCHASE_ORDER_NO,
|
||||
SRM.PROJECT_NO,
|
||||
(SELECT PROJECT_NO FROM PROJECT_MGMT PM WHERE PM.OBJID = SRM.PROJECT_NO) AS PROJECT_NUMBER,
|
||||
SRM.PURCHASE_TYPE,
|
||||
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.PURCHASE_TYPE) AS PURCHASE_TYPE_NAME,
|
||||
SRM.ORDER_TYPE,
|
||||
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.ORDER_TYPE) AS ORDER_TYPE_NAME,
|
||||
SRM.PRODUCT_NAME,
|
||||
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.PRODUCT_NAME) AS PRODUCT_NAME_TITLE,
|
||||
-- 품번/품명 ("외 N건" 형태로 표시)
|
||||
(
|
||||
SELECT
|
||||
CASE
|
||||
WHEN COUNT(*) > 1 THEN
|
||||
(SELECT PM.PART_NO FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID ORDER BY REGDATE LIMIT 1)) || ' 외 ' || (COUNT(*) - 1) || '건'
|
||||
ELSE
|
||||
(SELECT PM.PART_NO FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID ORDER BY REGDATE LIMIT 1))
|
||||
END
|
||||
FROM SALES_REQUEST_PART
|
||||
WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID
|
||||
) AS PART_NO,
|
||||
(
|
||||
SELECT
|
||||
CASE
|
||||
WHEN COUNT(*) > 1 THEN
|
||||
(SELECT PM.PART_NAME FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID ORDER BY REGDATE LIMIT 1)) || ' 외 ' || (COUNT(*) - 1) || '건'
|
||||
ELSE
|
||||
(SELECT PM.PART_NAME FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID ORDER BY REGDATE LIMIT 1))
|
||||
END
|
||||
FROM SALES_REQUEST_PART
|
||||
WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID
|
||||
) AS PART_NAME,
|
||||
-- 공급업체 (첫번째 공급업체 + 외 N건)
|
||||
(
|
||||
SELECT
|
||||
CASE
|
||||
WHEN COUNT(DISTINCT POM.PARTNER_OBJID) > 1 THEN
|
||||
(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE OBJID = (SELECT PARTNER_OBJID FROM PURCHASE_ORDER_MASTER WHERE SALES_REQUEST_OBJID = SRM.OBJID ORDER BY REGDATE LIMIT 1)::NUMERIC) || ' 외 ' || (COUNT(DISTINCT POM.PARTNER_OBJID) - 1) || '건'
|
||||
ELSE
|
||||
(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE OBJID = (SELECT PARTNER_OBJID FROM PURCHASE_ORDER_MASTER WHERE SALES_REQUEST_OBJID = SRM.OBJID ORDER BY REGDATE LIMIT 1)::NUMERIC)
|
||||
END
|
||||
FROM PURCHASE_ORDER_MASTER POM
|
||||
WHERE POM.SALES_REQUEST_OBJID = SRM.OBJID
|
||||
) AS SUPPLIER_NAME,
|
||||
-- 총액
|
||||
(SELECT SUM(COALESCE(TOTAL_PRICE, 0)) FROM PURCHASE_ORDER_MASTER WHERE SALES_REQUEST_OBJID = SRM.OBJID) AS TOTAL_AMOUNT,
|
||||
-- 메일발송 여부
|
||||
(SELECT CASE WHEN COUNT(*) > 0 THEN 'Y' ELSE 'N' END FROM PURCHASE_ORDER_MASTER WHERE SALES_REQUEST_OBJID = SRM.OBJID AND MAIL_SENT = 'Y') AS MAIL_SENT,
|
||||
-- 발주일
|
||||
(SELECT TO_CHAR(MAX(ORDER_DATE), 'YYYY-MM-DD') FROM PURCHASE_ORDER_MASTER WHERE SALES_REQUEST_OBJID = SRM.OBJID) AS ORDER_DATE,
|
||||
SRM.STATUS,
|
||||
CASE
|
||||
WHEN A.APPR_STATUS IS NOT NULL THEN A.APPR_STATUS
|
||||
WHEN SRM.STATUS = 'create' THEN '미결재'
|
||||
WHEN SRM.STATUS = 'approvalComplete' THEN '결재완료'
|
||||
WHEN SRM.STATUS = 'reject' THEN '반려'
|
||||
ELSE ''
|
||||
END AS STATUS_TITLE,
|
||||
SRM.WRITER,
|
||||
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = SRM.WRITER) AS WRITER_NAME,
|
||||
SRM.REGDATE,
|
||||
TO_CHAR(SRM.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
|
||||
A.APPROVAL_OBJID,
|
||||
A.ROUTE_OBJID
|
||||
FROM
|
||||
SALES_REQUEST_MASTER SRM
|
||||
LEFT OUTER JOIN (
|
||||
SELECT
|
||||
B.OBJID AS ROUTE_OBJID,
|
||||
CASE B.STATUS
|
||||
WHEN 'inProcess' THEN '결재중'
|
||||
WHEN 'complete' THEN '결재완료'
|
||||
WHEN 'reject' THEN '반려'
|
||||
ELSE ''
|
||||
END APPR_STATUS,
|
||||
A.OBJID AS APPROVAL_OBJID,
|
||||
A.TARGET_OBJID,
|
||||
B.ROUTE_SEQ
|
||||
FROM
|
||||
APPROVAL A,
|
||||
(
|
||||
SELECT
|
||||
T1.*
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
TARGET_OBJID,
|
||||
MAX(T.ROUTE_SEQ) AS ROUTE_SEQ
|
||||
FROM
|
||||
ROUTE T
|
||||
GROUP BY
|
||||
T.TARGET_OBJID
|
||||
) T,
|
||||
ROUTE T1
|
||||
WHERE
|
||||
T.TARGET_OBJID = T1.TARGET_OBJID
|
||||
AND T.ROUTE_SEQ = T1.ROUTE_SEQ
|
||||
) B
|
||||
WHERE A.OBJID = B.APPROVAL_OBJID
|
||||
AND TARGET_TYPE IN ('PROPOSAL', 'SALES_REQUEST')
|
||||
) A ON SRM.OBJID::VARCHAR = A.TARGET_OBJID::VARCHAR
|
||||
WHERE 1=1
|
||||
AND SRM.STATUS IN ('create', 'approvalRequest', 'approvalComplete', 'reject')
|
||||
|
||||
<if test="SEARCH_PROPOSAL_NO != null and !''.equals(SEARCH_PROPOSAL_NO)">
|
||||
AND SRM.REQUEST_MNG_NO LIKE '%${SEARCH_PROPOSAL_NO}%'
|
||||
</if>
|
||||
|
||||
<if test="SEARCH_PROJECT_NO != null and !''.equals(SEARCH_PROJECT_NO)">
|
||||
AND (SELECT PROJECT_NO FROM PROJECT_MGMT PM WHERE PM.OBJID = SRM.PROJECT_NO) LIKE '%${SEARCH_PROJECT_NO}%'
|
||||
</if>
|
||||
|
||||
<if test="SEARCH_STATUS != null and !''.equals(SEARCH_STATUS)">
|
||||
AND SRM.STATUS = #{SEARCH_STATUS}
|
||||
</if>
|
||||
|
||||
<if test="regdate_start != null and !''.equals(regdate_start)">
|
||||
AND SRM.REGDATE::DATE <![CDATA[ >= ]]> #{regdate_start}::DATE
|
||||
</if>
|
||||
<if test="regdate_end != null and !''.equals(regdate_end)">
|
||||
AND SRM.REGDATE::DATE <![CDATA[ <= ]]> #{regdate_end}::DATE
|
||||
</if>
|
||||
|
||||
ORDER BY SRM.REGDATE DESC
|
||||
</select>
|
||||
|
||||
<!-- 품의서 상세 조회 -->
|
||||
<select id="getProposalInfo" parameterType="map" resultType="map">
|
||||
SELECT
|
||||
SRM.OBJID,
|
||||
SRM.REQUEST_MNG_NO AS PROPOSAL_NO,
|
||||
SRM.PROJECT_NO,
|
||||
(SELECT PROJECT_NO FROM PROJECT_MGMT PM WHERE PM.OBJID = SRM.PROJECT_NO) AS PROJECT_NUMBER,
|
||||
(SELECT PROJECT_NAME FROM PROJECT_MGMT PM WHERE PM.OBJID = SRM.PROJECT_NO) AS PROJECT_NAME,
|
||||
SRM.PURCHASE_TYPE,
|
||||
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.PURCHASE_TYPE) AS PURCHASE_TYPE_NAME,
|
||||
SRM.ORDER_TYPE,
|
||||
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.ORDER_TYPE) AS ORDER_TYPE_NAME,
|
||||
SRM.PRODUCT_NAME,
|
||||
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.PRODUCT_NAME) AS PRODUCT_NAME_TITLE,
|
||||
SRM.AREA_CD,
|
||||
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.AREA_CD) AS AREA_CD_NAME,
|
||||
SRM.CUSTOMER_OBJID,
|
||||
(SELECT SUPPLY_NAME FROM SUPPLY_MNG WHERE OBJID::VARCHAR = SRM.CUSTOMER_OBJID) AS CUSTOMER_NAME,
|
||||
SRM.PAID_TYPE,
|
||||
(CASE WHEN SRM.PAID_TYPE = 'paid' THEN '유상' WHEN SRM.PAID_TYPE = 'free' THEN '무상' ELSE SRM.PAID_TYPE END) AS PAID_TYPE_NAME,
|
||||
SRM.STATUS,
|
||||
CASE SRM.STATUS
|
||||
WHEN 'create' THEN '미결재'
|
||||
WHEN 'approvalRequest' THEN '결재중'
|
||||
WHEN 'approvalComplete' THEN '결재완료'
|
||||
WHEN 'reject' THEN '반려'
|
||||
ELSE ''
|
||||
END AS STATUS_TITLE,
|
||||
SRM.WRITER,
|
||||
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = SRM.WRITER) AS WRITER_NAME,
|
||||
SRM.REGDATE,
|
||||
TO_CHAR(SRM.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
|
||||
SRM.REMARK
|
||||
FROM
|
||||
SALES_REQUEST_MASTER SRM
|
||||
WHERE
|
||||
SRM.OBJID = #{PROPOSAL_OBJID}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -1202,4 +1202,102 @@ public class SalesMngController {
|
||||
}
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* M-BOM에서 구매리스트 생성 (SALES_REQUEST_MASTER 생성)
|
||||
* @param request
|
||||
* @param paramMap
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/salesMng/createPurchaseListFromMBom.do")
|
||||
public Map createPurchaseListFromMBom(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
|
||||
Map resultMap = new HashMap();
|
||||
try{
|
||||
resultMap = salesMngService.createPurchaseListFromMBom(request, paramMap);
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
resultMap.put("resultFlag", "F");
|
||||
resultMap.put("message", "구매리스트 생성 중 오류가 발생했습니다: " + e.getMessage());
|
||||
}
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
// ==================== 품의서 관리 ====================
|
||||
|
||||
/**
|
||||
* 품의서 관리 - 목록 화면
|
||||
* @param request
|
||||
* @param paramMap
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/salesMng/proposalMngList.do")
|
||||
public String proposalMngList(HttpServletRequest request, @RequestParam Map paramMap){
|
||||
String returnUrl = "/salesMng/proposalMngList";
|
||||
Map code_map = new HashMap();
|
||||
|
||||
try {
|
||||
// 구매유형
|
||||
code_map.put("purchase_type", commonService.bizMakeOptionList("0001821", (String)paramMap.get("purchase_type"), "common.getCodeselect"));
|
||||
// 주문유형
|
||||
code_map.put("order_type", commonService.bizMakeOptionList("0001822", (String)paramMap.get("order_type"), "common.getCodeselect"));
|
||||
// 제품구분
|
||||
code_map.put("product_name", commonService.bizMakeOptionList("0000016", (String)paramMap.get("product_name"), "common.getCodeselect"));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
request.setAttribute("code_map", code_map);
|
||||
return returnUrl;
|
||||
}
|
||||
|
||||
/**
|
||||
* 품의서 관리 - 목록 조회 (페이징)
|
||||
* @param request
|
||||
* @param paramMap
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping("/salesMng/proposalMngGridList.do")
|
||||
public Map getProposalMngGridList(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
|
||||
commonService.selectListPagingNew("salesMng.getProposalMngGridList", request, paramMap);
|
||||
return paramMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 품의서 상세 팝업
|
||||
* @param request
|
||||
* @param paramMap
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/salesMng/proposalFormPopUp.do")
|
||||
public String proposalFormPopUp(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
|
||||
Map resultMap = new HashMap();
|
||||
Map code_map = new HashMap();
|
||||
|
||||
try {
|
||||
String proposalObjId = CommonUtils.checkNull(paramMap.get("PROPOSAL_OBJID"));
|
||||
|
||||
if(!"".equals(proposalObjId)){
|
||||
resultMap = commonService.selectOne("salesMng.getProposalInfo", request, paramMap);
|
||||
} else {
|
||||
resultMap.put("OBJID", CommonUtils.createObjId());
|
||||
resultMap.put("STATUS", "create");
|
||||
}
|
||||
|
||||
// 구매유형
|
||||
code_map.put("purchase_type", commonService.bizMakeOptionList("0001821", (String)resultMap.get("PURCHASE_TYPE"), "common.getCodeselect"));
|
||||
// 주문유형
|
||||
code_map.put("order_type", commonService.bizMakeOptionList("0001822", (String)resultMap.get("ORDER_TYPE"), "common.getCodeselect"));
|
||||
// 제품구분
|
||||
code_map.put("product_name", commonService.bizMakeOptionList("0000016", (String)resultMap.get("PRODUCT_NAME"), "common.getCodeselect"));
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
request.setAttribute("resultMap", resultMap);
|
||||
request.setAttribute("code_map", code_map);
|
||||
return "/salesMng/proposalFormPopUp";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1849,4 +1849,74 @@ public class SalesMngService {
|
||||
|
||||
return resultList;
|
||||
}
|
||||
|
||||
/**
|
||||
* M-BOM에서 구매리스트 생성 (SALES_REQUEST_MASTER만 생성, SALES_REQUEST_PART는 생성 안 함)
|
||||
* @param request
|
||||
* @param paramMap
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
public Map createPurchaseListFromMBom(HttpServletRequest request, Map<String, Object> paramMap) throws Exception {
|
||||
Map resultMap = new HashMap();
|
||||
SqlSession sqlSession = null;
|
||||
|
||||
try {
|
||||
sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
|
||||
|
||||
String projectMgmtObjid = CommonUtils.checkNull(paramMap.get("PROJECT_MGMT_OBJID"));
|
||||
String projectNo = CommonUtils.checkNull(paramMap.get("PROJECT_NO"));
|
||||
|
||||
// 로그인 사용자 정보
|
||||
HttpSession session = request.getSession();
|
||||
PersonBean personBean = (PersonBean) session.getAttribute(Constants.PERSON_BEAN);
|
||||
String userId = personBean.getUserId();
|
||||
|
||||
// 이미 해당 프로젝트로 생성된 구매요청서가 있는지 확인
|
||||
Map checkParam = new HashMap();
|
||||
checkParam.put("PROJECT_NO", projectMgmtObjid);
|
||||
Map existingMaster = sqlSession.selectOne("salesMng.getSalesRequestMasterByProjectNo", checkParam);
|
||||
|
||||
String salesRequestMasterObjid;
|
||||
|
||||
if(existingMaster != null && existingMaster.get("OBJID") != null) {
|
||||
// 이미 있으면 기존 것 사용
|
||||
salesRequestMasterObjid = CommonUtils.checkNull(existingMaster.get("OBJID"));
|
||||
System.out.println("기존 구매요청서 마스터 사용: " + salesRequestMasterObjid);
|
||||
} else {
|
||||
// 없으면 새로 생성
|
||||
salesRequestMasterObjid = String.valueOf(CommonUtils.createObjId());
|
||||
|
||||
// 요청번호 생성 (기존 로직과 동일)
|
||||
String requestMngNo = (String) sqlSession.selectOne("salesMng.getNextRequestMngNo");
|
||||
|
||||
Map insertParam = new HashMap();
|
||||
insertParam.put("OBJID", salesRequestMasterObjid);
|
||||
insertParam.put("PROJECT_NO", projectMgmtObjid); // PROJECT_MGMT.OBJID 저장
|
||||
insertParam.put("REQUEST_MNG_NO", requestMngNo);
|
||||
insertParam.put("WRITER", userId);
|
||||
insertParam.put("REQUEST_USER_ID", userId);
|
||||
insertParam.put("STATUS", "create");
|
||||
|
||||
sqlSession.insert("salesMng.insertSalesRequestMasterFromMBom", insertParam);
|
||||
sqlSession.commit();
|
||||
|
||||
System.out.println("새 구매요청서 마스터 생성: " + salesRequestMasterObjid + ", 요청번호: " + requestMngNo);
|
||||
}
|
||||
|
||||
resultMap.put("resultFlag", "S");
|
||||
resultMap.put("SALES_REQUEST_MASTER_OBJID", salesRequestMasterObjid);
|
||||
resultMap.put("message", "구매리스트가 생성되었습니다.");
|
||||
|
||||
} catch(Exception e) {
|
||||
if(sqlSession != null) sqlSession.rollback();
|
||||
e.printStackTrace();
|
||||
resultMap.put("resultFlag", "F");
|
||||
resultMap.put("message", "구매리스트 생성 중 오류가 발생했습니다: " + e.getMessage());
|
||||
} finally {
|
||||
if(sqlSession != null) sqlSession.close();
|
||||
}
|
||||
|
||||
return resultMap;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user