API 수정

This commit is contained in:
2026-02-09 18:21:02 +09:00
parent 14ba981675
commit 66a1f0f69f
7 changed files with 1100 additions and 44 deletions

View File

@@ -22,6 +22,8 @@ import com.pms.api.DepartmentApiClient;
import com.pms.api.EmployeeApiClient;
import com.pms.api.WarehouseApiClient;
import com.pms.api.PartErpApiClient;
import com.pms.api.PartErpDeleteApiClient;
import com.pms.api.PartErpUpdateApiClient;
import com.pms.common.Message;
import com.pms.common.SqlMapConfig;
import com.pms.common.bean.PersonBean;
@@ -1021,6 +1023,7 @@ public class BatchService extends BaseService {
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"; // 회사코드
@@ -1045,7 +1048,7 @@ public class BatchService extends BaseService {
}
// ERP로 전송
String response = partErpClient.sendPartToErp(baseUrl, coCd, itemCd, itemNm,
String response = partErpClient.sendPartToErp(baseUrl, coCd, itemCd, itemNm,itemDc,
acctFg, odrFg, unitDc, unitmangDc, unitchngNb, lotFg, qcFg, reqFg, setitemFg, useYn);
// 응답 확인
@@ -1112,34 +1115,35 @@ public class BatchService extends BaseService {
return result;
}
// 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 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"; // 사용여부
// 필수값 체크
if (itemCd.isEmpty() || itemNm.isEmpty()) {
result.put("success", false);
result.put("message", "품번 또는 품명이 없습니다.");
return result;
}
// ERP로 전송
PartErpApiClient partErpClient = new PartErpApiClient();
String response = partErpClient.sendPartToErp(baseUrl, coCd, itemCd, itemNm,
acctFg, odrFg, unitDc, unitmangDc, unitchngNb, lotFg, qcFg, reqFg, setitemFg, useYn);
// 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"; // 사용여부
// 필수값 체크
if (itemCd.isEmpty() || itemNm.isEmpty()) {
result.put("success", false);
result.put("message", "품번 또는 품명이 없습니다.");
return result;
}
// ERP로 전송
PartErpApiClient partErpClient = new PartErpApiClient();
String response = partErpClient.sendPartToErp(baseUrl, coCd, itemCd, itemNm, itemDc,
acctFg, odrFg, unitDc, unitmangDc, unitchngNb, lotFg, qcFg, reqFg, setitemFg, useYn);
// 응답 확인
if (response.contains("\"resultCode\":0") || response.contains("\"resultCode\":\"0\"")) {
@@ -1200,6 +1204,236 @@ public class BatchService extends BaseService {
return "0"; // 기본값: 구매
}
/*
// ERP에서 PART 정보 삭제 (주석처리: ERP 전송된 데이터는 삭제하면 안됨)
public Map<String, Object> deletePartFromErp(String partNo) {
Map<String, Object> result = new HashMap<String, Object>();
try {
String baseUrl = "https://erp.rps-korea.com";
String coCd = "1000";
if (partNo == null || partNo.trim().isEmpty()) {
result.put("success", false);
result.put("message", "품번이 없습니다.");
return result;
}
// ERP에서 삭제
PartErpDeleteApiClient deleteClient = new PartErpDeleteApiClient();
String response = deleteClient.deletePartFromErp(baseUrl, coCd, partNo);
// 응답 확인
if (response.contains("\"resultCode\":0") || response.contains("\"resultCode\":\"0\"")) {
result.put("success", true);
result.put("message", "PART 정보가 ERP에서 삭제되었습니다.");
System.out.println("ERP PART 삭제 성공: " + partNo);
} else {
result.put("success", false);
result.put("message", "ERP 삭제 실패: " + response);
System.err.println("ERP PART 삭제 실패: " + partNo + " - " + response);
}
} catch (Exception e) {
result.put("success", false);
result.put("message", "PART 삭제 중 오류가 발생했습니다: " + e.getMessage());
System.err.println("PART 삭제 오류: " + e.getMessage());
e.printStackTrace();
}
return result;
}
*/
/**
* ERP에 PART 단건 수정
* @param partObjid PART OBJID
* @return 성공 여부 Map
*/
public Map<String, Object> updatePartToErp(String partObjid) {
Map<String, Object> result = new HashMap<String, Object>();
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
try {
String baseUrl = "https://erp.rps-korea.com";
// DB에서 PART 정보 조회
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("objid", partObjid);
Map<String, Object> part = sqlSession.selectOne("partMng.selectPartByObjid", paramMap);
if (part == null) {
result.put("success", false);
result.put("message", "PART 정보를 찾을 수 없습니다.");
return result;
}
// 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"; // 사용여부
// 필수값 체크
if (itemCd.isEmpty() || itemNm.isEmpty()) {
result.put("success", false);
result.put("message", "품번 또는 품명이 없습니다.");
return result;
}
// ERP로 수정 전송
PartErpUpdateApiClient updateClient = new PartErpUpdateApiClient();
String response = updateClient.updatePartToErp(baseUrl, coCd, itemCd, itemNm, itemDc,
acctFg, odrFg, unitDc, unitmangDc, unitchngNb, lotFg, qcFg, reqFg, setitemFg, useYn);
// 응답 확인
if (response.contains("\"resultCode\":0") || response.contains("\"resultCode\":\"0\"")) {
result.put("success", true);
result.put("message", "PART 정보가 ERP에서 수정되었습니다.");
System.out.println("ERP PART 단건 수정 성공: " + itemCd);
} else {
result.put("success", false);
result.put("message", "ERP 수정 실패: " + response);
System.err.println("ERP PART 단건 수정 실패: " + itemCd + " - " + response);
}
} catch (Exception e) {
result.put("success", false);
result.put("message", "PART 수정 중 오류가 발생했습니다: " + e.getMessage());
System.err.println("PART 단건 수정 오류: " + e.getMessage());
e.printStackTrace();
} finally {
sqlSession.close();
}
return result;
}
/**
* ERP에 모든 PART 전체 수정 (DB의 모든 release 상태 PART)
* @return 성공 여부 Map
*/
public Map<String, Object> updateAllPartsToErp() {
Map<String, Object> result = new HashMap<String, Object>();
SqlSession sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
try {
String baseUrl = "https://erp.rps-korea.com";
System.out.println("====================================");
System.out.println("전체 PART 정보 ERP 수정 시작");
System.out.println("====================================");
// DB에서 모든 release 상태 PART 조회
List<Map<String, Object>> partList = sqlSession.selectList("partMng.selectAllPartListForErp");
if (partList == null || partList.isEmpty()) {
result.put("success", false);
result.put("message", "수정할 PART가 없습니다.");
return result;
}
System.out.println("" + partList.size() + "건의 PART를 ERP에 수정 전송합니다.");
int successCount = 0;
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";
PartErpUpdateApiClient updateClient = new PartErpUpdateApiClient();
for (int i = 0; i < partList.size(); i++) {
Map<String, Object> part = partList.get(i);
try {
// 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"));
// 100건마다 진행 상황 출력
if ((i + 1) % 100 == 0) {
System.out.println("진행 중: " + (i + 1) + "/" + partList.size() + " (성공: " + successCount + ", 실패: " + failCount + ")");
}
// 필수값 체크
if (itemCd.isEmpty() || itemNm.isEmpty()) {
failCount++;
if (failCount <= 5) {
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);
// 응답 확인
if (response.contains("\"resultCode\":0") || response.contains("\"resultCode\":\"0\"")) {
successCount++;
} else {
failCount++;
if (failCount <= 5) {
errorMessages.append(itemCd).append(": ").append(response).append("\n");
}
}
} catch (Exception e) {
failCount++;
if (failCount <= 5) {
errorMessages.append(CommonUtils.checkNull(part.get("part_no"))).append(": ")
.append(e.getMessage()).append("\n");
}
}
}
result.put("success", true);
result.put("message", "PART 전체 수정 완료 - 성공: " + successCount + "건, 실패: " + failCount + "");
if (errorMessages.length() > 0) {
result.put("errors", errorMessages.toString());
}
System.out.println("====================================");
System.out.println("PART 전체 수정 완료 - 성공: " + successCount + "건, 실패: " + failCount + "");
System.out.println("====================================");
} catch (Exception e) {
result.put("success", false);
result.put("message", "PART 전체 수정 중 오류가 발생했습니다: " + e.getMessage());
System.err.println("PART 전체 수정 오류: " + e.getMessage());
e.printStackTrace();
} finally {
sqlSession.close();
}
return result;
}
}