[행위] ERP 전송 시 재고단위/관리단위 code_name 변환 및 하드코딩 제거
- partMng.xml: selectPartByObjid, selectAllPartListForErp에 COMM_CODE JOIN 추가하여 UNIT_DC_NM, UNITMANG_DC_NM 반환 - partMng.xml: partMngBaseSimple에 ODRFG_NM CASE WHEN 변환 추가 (구매/생산/Phantom), LOT_FG 등 NULL일 때 빈값 처리 - BatchService: sendAllPartsToErp, sendSinglePartToErp에서 unit_dc_nm, unitmang_dc_nm 사용 - BatchService: updatePartToErp, updateAllPartsToErp 하드코딩 제거 → DB 값 사용 + 필수값 검증 추가 - BatchService: deletePartFromErp 주석 해제 - BatchService: sendSinglePartToErp에 전송 데이터 및 응답 로그 추가 Made-with: Cursor
This commit is contained in:
@@ -8368,46 +8368,54 @@ SELECT PM.OBJID
|
||||
<!-- ERP 전송을 위한 전체 PART 목록 조회 -->
|
||||
<select id="selectAllPartListForErp" resultType="map">
|
||||
SELECT
|
||||
OBJID,
|
||||
PART_NO,
|
||||
PART_NAME,
|
||||
SPEC,
|
||||
acctfg,
|
||||
odrfg,
|
||||
UNIT_DC,
|
||||
UNITMANG_DC,
|
||||
UNITCHNG_NB,
|
||||
LOT_FG,
|
||||
USE_YN,
|
||||
QC_FG,
|
||||
SETITEM_FG,
|
||||
REQ_FG
|
||||
FROM PART_MNG
|
||||
WHERE STATUS = 'release'
|
||||
AND PART_NO IS NOT NULL
|
||||
AND PART_NAME IS NOT NULL
|
||||
ORDER BY PART_NO
|
||||
P.OBJID,
|
||||
P.PART_NO,
|
||||
P.PART_NAME,
|
||||
P.SPEC,
|
||||
P.acctfg,
|
||||
P.odrfg,
|
||||
P.UNIT_DC,
|
||||
COALESCE(CC_UNIT.CODE_NAME, P.UNIT_DC) AS UNIT_DC_NM,
|
||||
P.UNITMANG_DC,
|
||||
COALESCE(CC_UNITMANG.CODE_NAME, P.UNITMANG_DC) AS UNITMANG_DC_NM,
|
||||
P.UNITCHNG_NB,
|
||||
P.LOT_FG,
|
||||
P.USE_YN,
|
||||
P.QC_FG,
|
||||
P.SETITEM_FG,
|
||||
P.REQ_FG
|
||||
FROM PART_MNG P
|
||||
LEFT JOIN COMM_CODE CC_UNIT ON CC_UNIT.CODE_ID = P.UNIT_DC
|
||||
LEFT JOIN COMM_CODE CC_UNITMANG ON CC_UNITMANG.CODE_ID = P.UNITMANG_DC
|
||||
WHERE P.STATUS = 'release'
|
||||
AND P.PART_NO IS NOT NULL
|
||||
AND P.PART_NAME IS NOT NULL
|
||||
ORDER BY P.PART_NO
|
||||
</select>
|
||||
|
||||
<!-- OBJID로 단일 PART 조회 -->
|
||||
<select id="selectPartByObjid" parameterType="map" resultType="map">
|
||||
SELECT
|
||||
OBJID,
|
||||
PART_NO,
|
||||
PART_NAME,
|
||||
SPEC,
|
||||
acctfg,
|
||||
odrfg,
|
||||
UNIT_DC,
|
||||
UNITMANG_DC,
|
||||
UNITCHNG_NB,
|
||||
LOT_FG,
|
||||
USE_YN,
|
||||
QC_FG,
|
||||
SETITEM_FG,
|
||||
REQ_FG
|
||||
FROM PART_MNG
|
||||
WHERE OBJID = #{objid}
|
||||
P.OBJID,
|
||||
P.PART_NO,
|
||||
P.PART_NAME,
|
||||
P.SPEC,
|
||||
P.acctfg,
|
||||
P.odrfg,
|
||||
P.UNIT_DC,
|
||||
COALESCE(CC_UNIT.CODE_NAME, P.UNIT_DC) AS UNIT_DC_NM,
|
||||
P.UNITMANG_DC,
|
||||
COALESCE(CC_UNITMANG.CODE_NAME, P.UNITMANG_DC) AS UNITMANG_DC_NM,
|
||||
P.UNITCHNG_NB,
|
||||
P.LOT_FG,
|
||||
P.USE_YN,
|
||||
P.QC_FG,
|
||||
P.SETITEM_FG,
|
||||
P.REQ_FG
|
||||
FROM PART_MNG P
|
||||
LEFT JOIN COMM_CODE CC_UNIT ON CC_UNIT.CODE_ID = P.UNIT_DC
|
||||
LEFT JOIN COMM_CODE CC_UNITMANG ON CC_UNITMANG.CODE_ID = P.UNITMANG_DC
|
||||
WHERE P.OBJID = #{objid}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -1508,9 +1508,9 @@ public class BatchService extends BaseService {
|
||||
|
||||
// 회사코드 고정값
|
||||
String coCd = "1000";
|
||||
// DB에서 가져온 ERP 연동 필드
|
||||
String unitDc = CommonUtils.checkNull(part.get("unit_dc"));
|
||||
String unitmangDc = CommonUtils.checkNull(part.get("unitmang_dc"));
|
||||
// DB에서 가져온 ERP 연동 필드 (code_name으로 변환된 값 사용)
|
||||
String unitDc = CommonUtils.checkNull(part.get("unit_dc_nm"));
|
||||
String unitmangDc = CommonUtils.checkNull(part.get("unitmang_dc_nm"));
|
||||
String unitchngNbStr = CommonUtils.checkNull(part.get("unitchng_nb"));
|
||||
int unitchngNb = 0;
|
||||
try {
|
||||
@@ -1540,7 +1540,7 @@ public class BatchService extends BaseService {
|
||||
}
|
||||
|
||||
// ERP로 전송
|
||||
String response = partErpClient.sendPartToErp(baseUrl, coCd, itemCd, itemNm,itemDc,
|
||||
String response = partErpClient.sendPartToErp(baseUrl, coCd, itemCd, itemNm, itemDc,
|
||||
acctFg, odrFg, unitDc, unitmangDc, unitchngNb, lotFg, qcFg, reqFg, setitemFg, useYn);
|
||||
|
||||
// 응답 확인
|
||||
@@ -1616,9 +1616,9 @@ public class BatchService extends BaseService {
|
||||
|
||||
// 회사코드 고정값
|
||||
String coCd = "1000";
|
||||
// DB에서 가져온 ERP 연동 필드
|
||||
String unitDc = CommonUtils.checkNull(part.get("unit_dc"));
|
||||
String unitmangDc = CommonUtils.checkNull(part.get("unitmang_dc"));
|
||||
// DB에서 가져온 ERP 연동 필드 (code_name으로 변환된 값 사용)
|
||||
String unitDc = CommonUtils.checkNull(part.get("unit_dc_nm"));
|
||||
String unitmangDc = CommonUtils.checkNull(part.get("unitmang_dc_nm"));
|
||||
String unitchngNbStr = CommonUtils.checkNull(part.get("unitchng_nb"));
|
||||
int unitchngNb = 0;
|
||||
try {
|
||||
@@ -1804,31 +1804,54 @@ public class BatchService extends BaseService {
|
||||
return result;
|
||||
}
|
||||
|
||||
// DB에서 가져온 값
|
||||
// DB에서 가져온 값
|
||||
String itemCd = CommonUtils.checkNull(part.get("part_no"));
|
||||
String itemNm = CommonUtils.checkNull(part.get("part_name"));
|
||||
String acctFg = CommonUtils.checkNull(part.get("acctfg"));
|
||||
String odrFg = CommonUtils.checkNull(part.get("odrfg"));
|
||||
String itemDc = CommonUtils.checkNull(part.get("spec"));
|
||||
|
||||
// 하드코딩 고정값
|
||||
String coCd = "1000"; // 회사코드
|
||||
String unitDc = "1"; // 단위
|
||||
String unitmangDc = "1"; // 단위관리
|
||||
int unitchngNb = 1; // 단위변환
|
||||
String lotFg = "0"; // LOT구분
|
||||
String qcFg = "0"; // 검사구분
|
||||
String reqFg = "0"; // 청구구분
|
||||
String setitemFg = "0"; // 세트품목구분
|
||||
String useYn = "1"; // 사용여부
|
||||
|
||||
|
||||
String coCd = "1000";
|
||||
// DB에서 가져온 ERP 연동 필드 (code_name으로 변환된 값 사용)
|
||||
String unitDc = CommonUtils.checkNull(part.get("unit_dc_nm"));
|
||||
String unitmangDc = CommonUtils.checkNull(part.get("unitmang_dc_nm"));
|
||||
String unitchngNbStr = CommonUtils.checkNull(part.get("unitchng_nb"));
|
||||
int unitchngNb = 0;
|
||||
try {
|
||||
if (!unitchngNbStr.isEmpty()) {
|
||||
unitchngNb = (int) Double.parseDouble(unitchngNbStr);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// 변환 실패 시 0 유지
|
||||
}
|
||||
String lotFg = CommonUtils.checkNull(part.get("lot_fg"));
|
||||
String qcFg = CommonUtils.checkNull(part.get("qc_fg"));
|
||||
String reqFg = CommonUtils.checkNull(part.get("req_fg"));
|
||||
String setitemFg = CommonUtils.checkNull(part.get("setitem_fg"));
|
||||
String useYn = CommonUtils.checkNull(part.get("use_yn"));
|
||||
|
||||
// 필수값 체크
|
||||
if (itemCd.isEmpty() || itemNm.isEmpty()) {
|
||||
result.put("success", false);
|
||||
result.put("message", "품번 또는 품명이 없습니다.");
|
||||
return result;
|
||||
}
|
||||
|
||||
if (acctFg.isEmpty() || odrFg.isEmpty()) {
|
||||
result.put("success", false);
|
||||
result.put("message", "계정구분 또는 조달구분이 없습니다.");
|
||||
return result;
|
||||
}
|
||||
if (unitDc.isEmpty() || unitmangDc.isEmpty() || unitchngNb == 0) {
|
||||
result.put("success", false);
|
||||
result.put("message", "재고단위, 관리단위, 환산수량이 없습니다.");
|
||||
return result;
|
||||
}
|
||||
if (lotFg.isEmpty() || qcFg.isEmpty() || reqFg.isEmpty() || setitemFg.isEmpty() || useYn.isEmpty()) {
|
||||
result.put("success", false);
|
||||
result.put("message", "LOT구분, 검사여부, 의뢰여부, SET품여부, 사용여부가 없습니다.");
|
||||
return result;
|
||||
}
|
||||
|
||||
// ERP로 수정 전송
|
||||
PartErpUpdateApiClient updateClient = new PartErpUpdateApiClient();
|
||||
String response = updateClient.updatePartToErp(baseUrl, coCd, itemCd, itemNm, itemDc,
|
||||
@@ -1887,16 +1910,7 @@ public class BatchService extends BaseService {
|
||||
int failCount = 0;
|
||||
StringBuilder errorMessages = new StringBuilder();
|
||||
|
||||
// 하드코딩 고정값
|
||||
String coCd = "1000";
|
||||
String unitDc = "1";
|
||||
String unitmangDc = "1";
|
||||
int unitchngNb = 1;
|
||||
String lotFg = "0";
|
||||
String qcFg = "0";
|
||||
String reqFg = "0";
|
||||
String setitemFg = "0";
|
||||
String useYn = "1";
|
||||
String coCd = "1000";
|
||||
|
||||
PartErpUpdateApiClient updateClient = new PartErpUpdateApiClient();
|
||||
|
||||
@@ -1910,6 +1924,23 @@ public class BatchService extends BaseService {
|
||||
String acctFg = CommonUtils.checkNull(part.get("acctfg"));
|
||||
String odrFg = CommonUtils.checkNull(part.get("odrfg"));
|
||||
String itemDc = CommonUtils.checkNull(part.get("spec"));
|
||||
// DB에서 가져온 ERP 연동 필드 (code_name으로 변환된 값 사용)
|
||||
String unitDc = CommonUtils.checkNull(part.get("unit_dc_nm"));
|
||||
String unitmangDc = CommonUtils.checkNull(part.get("unitmang_dc_nm"));
|
||||
String unitchngNbStr = CommonUtils.checkNull(part.get("unitchng_nb"));
|
||||
int unitchngNb = 0;
|
||||
try {
|
||||
if (!unitchngNbStr.isEmpty()) {
|
||||
unitchngNb = (int) Double.parseDouble(unitchngNbStr);
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
// 변환 실패 시 0 유지
|
||||
}
|
||||
String lotFg = CommonUtils.checkNull(part.get("lot_fg"));
|
||||
String qcFg = CommonUtils.checkNull(part.get("qc_fg"));
|
||||
String reqFg = CommonUtils.checkNull(part.get("req_fg"));
|
||||
String setitemFg = CommonUtils.checkNull(part.get("setitem_fg"));
|
||||
String useYn = CommonUtils.checkNull(part.get("use_yn"));
|
||||
|
||||
// 100건마다 진행 상황 출력
|
||||
if ((i + 1) % 100 == 0) {
|
||||
@@ -1917,14 +1948,16 @@ public class BatchService extends BaseService {
|
||||
}
|
||||
|
||||
// 필수값 체크
|
||||
if (itemCd.isEmpty() || itemNm.isEmpty()) {
|
||||
if (itemCd.isEmpty() || itemNm.isEmpty() || acctFg.isEmpty() || odrFg.isEmpty() ||
|
||||
unitDc.isEmpty() || unitmangDc.isEmpty() || unitchngNb == 0 ||
|
||||
lotFg.isEmpty() || qcFg.isEmpty() || reqFg.isEmpty() || setitemFg.isEmpty() || useYn.isEmpty()) {
|
||||
failCount++;
|
||||
if (failCount <= 5) {
|
||||
errorMessages.append(itemCd).append(": 품번 또는 품명이 없습니다.\n");
|
||||
errorMessages.append(itemCd).append(": 필수값이 없습니다.\n");
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
// ERP로 수정 전송
|
||||
String response = updateClient.updatePartToErp(baseUrl, coCd, itemCd, itemNm, itemDc,
|
||||
acctFg, odrFg, unitDc, unitmangDc, unitchngNb, lotFg, qcFg, reqFg, setitemFg, useYn);
|
||||
|
||||
Reference in New Issue
Block a user