From 2fbb9f66d2b6e9a170bd623f93d1c801fd84edf5 Mon Sep 17 00:00:00 2001 From: hjjeong Date: Tue, 10 Mar 2026 17:58:35 +0900 Subject: [PATCH] =?UTF-8?q?[=ED=96=89=EC=9C=84]=20ERP=20=EC=A0=84=EC=86=A1?= =?UTF-8?q?=20=EC=8B=9C=20=EC=9E=AC=EA=B3=A0=EB=8B=A8=EC=9C=84/=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EB=8B=A8=EC=9C=84=20code=5Fname=20=EB=B3=80=ED=99=98?= =?UTF-8?q?=20=EB=B0=8F=20=ED=95=98=EB=93=9C=EC=BD=94=EB=94=A9=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- src/com/pms/mapper/partMng.xml | 78 +++++++++++--------- src/com/pms/service/BatchService.java | 101 +++++++++++++++++--------- 2 files changed, 110 insertions(+), 69 deletions(-) diff --git a/src/com/pms/mapper/partMng.xml b/src/com/pms/mapper/partMng.xml index 3bf462b..c389df4 100644 --- a/src/com/pms/mapper/partMng.xml +++ b/src/com/pms/mapper/partMng.xml @@ -8368,46 +8368,54 @@ SELECT PM.OBJID \ No newline at end of file diff --git a/src/com/pms/service/BatchService.java b/src/com/pms/service/BatchService.java index 8c49553..778f20a 100644 --- a/src/com/pms/service/BatchService.java +++ b/src/com/pms/service/BatchService.java @@ -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);