ERP에서 값을 저장할 때, 데이터를 등록할 때마다 관리번호를 채번.
예를 들어, "20250227-0001"과 같은 형식으로 관리번호를 생성해야 함
화면에서 프로그램ID와 기준일을 파라미터로 넘기면서 공통함수(this.gfn_GetTbnmNo) 호출
-> 정의된 공통함수에서 받아온 파라미터를 InData에, 자바 경로를 strSvcUrl에 넣고 넥사 트랜잭션 호출
-> 트랜잭션을 통해 자바에 controller/service/implement 호출
-> implement에 있는 insert 쿼리로 채번값을 채번관리 테이블에 넣고 select 쿼리로 채번 return
insert 쿼리는 MERGE..USING..WHEN MATCHED문과 CASE문을 썻다.
MERGE문은 문제있을때 처리할려고 쓴거고
CASE문은 프로그램 ID로 확인하여 채번을 어떤 방식으로 처리 할건지 확인한다.
공통환경설정에는 프로그램마다 어떤 채번을 사용할지 정해서 저장 되어있다.
화면에서는 프로그램id, 기준일자를 공통함수로 넘김
공통함수에서는 넘겨받은 값과 자바경로, in 데이터셋명(gds_Input), out 데이터셋명을 지정해서 트랜잭션 호출
/// Controller.java
@Controller
public class Controller {
@Resource(name = "Service")
private Service sService;
@RequestMapping(value = "/sy/Numbering.do")
public NexacroResult Numbering(PlatformData platformData) throws Exception {
NexacroResult result = new NexacroResult();
return Service.processPgNumbering(platformData);
}
}
/// Service.java
public interface Service {
NexacroResult processPgNumbering(PlatformData platformData) throws Exception;
}
/// ServiceImpl.java
@Service("Service")
public class ServiceImpl implements Service {
@Resource(name="cmmDao")
private CmmDao cmmDao;
@Override
public NexacroResult processPgNumbering(PlatformData platformData) throws Exception {
NexacroResult result = new NexacroResult();
try {
DataSet numberingData = platformData.getDataSet("gds_Input"); // 데이터셋 정보 읽기
if (numberingData == null) {
throw new Exception("입력 데이터셋이 없습니다.");
}
Map<String, Object> saveMap = new HashMap<>(); // 저장처리 Map
DatasetUtil.convertDsToMap(numberingData, saveMap, 0); // 데이터셋을 Map으로 변경
// 채번정보 저장
cmmDao.insert("Dao.insertDao002", saveMap);
// 채번정보 조회
List<Map<String, Object>> pgNumberingList = cmmDao.selectList("Dao.selectDao001", saveMap);
if (pgNumberingList.isEmpty()) {
throw new Exception("채번정보 조회 결과가 없습니다.");
}
result.addDataSet("gds_PgNumbering", pgNumberingList);
} catch (Exception e) {
// 예외 발생 시 로그 출력 및 예외를 다시 던짐
e.printStackTrace();
throw new Exception("Numbering 처리 중 오류가 발생했습니다.");
}
return result;
}
}
/// CmmDao.java
@Repository("cmmDao")
public class CmmDao extends CmmAbstractMapper {
@Resource(name = "sqlSession")
@Override
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
super.setSqlSessionFactory(sqlSessionFactory);
}
}
넥사크로 환경에서는 화면에서 자바로 값을 넘길 때 넥사크로 방식대로 처리하고, 자바에서는 넥사크로 함수 사용
리액트라면 화면에서 자바로 값을 넘길 때 Axios나 Fetch 쓰고, 자바에서는 넥사크로 함수 대신 setSqlSessionFactory 같은 방식으로 데이터를 처리