Commit efecfd5344a62e07adda725290eb2f53667071fc

Authored by 함상기
1 parent 883da593

.

src/main/java/com/batch/service/ThreadAiMatching.java 0 → 100644
  1 +package com.batch.service;
  2 +
  3 +import java.text.SimpleDateFormat;
  4 +import java.util.Date;
  5 +import java.util.HashMap;
  6 +import java.util.Map;
  7 +import java.util.UUID;
  8 +
  9 +import org.zeroturnaround.exec.ProcessExecutor;
  10 +import org.zeroturnaround.exec.stream.LogOutputStream;
  11 +
  12 +import com.batch.mapper.primary.MatchingInnerDelingMapper;
  13 +
  14 +import lombok.extern.slf4j.Slf4j;
  15 +
  16 +@Slf4j
  17 +public class ThreadAiMatching extends Thread {
  18 + String jobGroupId;
  19 + Map paramRec;
  20 + MatchingInnerDelingMapper matchingInnerDelingMapper;
  21 + String sPythonPrg;
  22 + String sPythonAiTarget;
  23 +
  24 + public ThreadAiMatching(
  25 + String pJobGroupId,
  26 + Map pParamRec,
  27 + MatchingInnerDelingMapper pMatchingInnerDelingMapper,
  28 + String pPythonPrg,
  29 + String pPythonAiTarget
  30 + ) {
  31 + this.jobGroupId = pJobGroupId;
  32 + this.paramRec = pParamRec;
  33 + this.matchingInnerDelingMapper = pMatchingInnerDelingMapper;
  34 + this.sPythonPrg = pPythonPrg;
  35 + this.sPythonAiTarget = pPythonAiTarget;
  36 + }
  37 +
  38 + @Override
  39 + public void run() {
  40 +
  41 + //Job Create Log
  42 + UUID uuid = UUID.randomUUID();
  43 + HashMap<String, String> mt = new HashMap<String, String>();
  44 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss");
  45 + String sDate = dateFormat.format(new Date()) + ":" + uuid.toString();
  46 +
  47 + Map<String, Object> paramLog = new HashMap<String, Object>();
  48 + paramLog.put("user_job_group", jobGroupId);
  49 + paramLog.put("user_job_id", sDate);
  50 + paramLog.put("user_job_name", "AI매칭(" + paramRec.toString() + ")");
  51 + matchingInnerDelingMapper.createUserJob(paramLog);
  52 +
  53 +
  54 + long startTime = System.currentTimeMillis();
  55 + log.info("ai Job Started : " + startTime);
  56 + log.debug("ai Job params=" + paramRec.toString());
  57 +
  58 + String sSysSe = (String) paramRec.get("sys_se");
  59 + String sAccnutYm = (String) paramRec.get("accnut_ym");
  60 + String sCprCode = (String) paramRec.get("cpr_code");
  61 + String sPartCpr = (String) paramRec.get("partn_cpr");
  62 + String sDelngCrncy = (String) paramRec.get("delng_crncy");
  63 + String sTbTy = (String) paramRec.get("tb_ty");
  64 + String sErrorRange = (String) paramRec.get("error_range");
  65 +
  66 + String sThreadName = Thread.currentThread().getName();
  67 +
  68 + log.debug("call python");
  69 + try {
  70 + Thread.sleep(15000);
  71 +
  72 + new ProcessExecutor()
  73 + .command(sPythonPrg, sPythonAiTarget, sDate, sSysSe, sAccnutYm, sCprCode, sPartCpr, sDelngCrncy, sErrorRange, sTbTy)
  74 + .redirectOutput(new LogOutputStream() {
  75 + @Override
  76 + protected void processLine(String line) {
  77 + log.info(line);
  78 + }
  79 + })
  80 + .execute();
  81 +
  82 + long endTime = System.currentTimeMillis();
  83 + log.info("ai Job Ended: " + endTime);
  84 + log.info("ai Job Running Time : " + (endTime - startTime) + "ms");
  85 +
  86 + } catch(Exception e) {
  87 + log.info("ai Job Start Fail : " + startTime);
  88 +
  89 + //작업종료에 대한 로그 업데이트(실패)
  90 + paramLog.put("exit_code", "-1");
  91 + paramLog.put("exit_message", e.getMessage());
  92 + matchingInnerDelingMapper.finishUserJob(paramLog);
  93 + }
  94 +
  95 + }
  96 +
  97 +}
... ...
src/main/java/com/batch/util/JsonUtil.java 0 → 100644
  1 +package com.batch.util;
  2 +
  3 +import org.springframework.stereotype.Component;
  4 +
  5 +import com.fasterxml.jackson.databind.ObjectMapper;
  6 +
  7 +@Component
  8 +public class JsonUtil {
  9 +
  10 + public static String objectToString(Object object) {
  11 + String rtnVal = "";
  12 + try {
  13 + ObjectMapper objectMapper = new ObjectMapper();
  14 + rtnVal = objectMapper.writeValueAsString(object);
  15 + } catch (Exception e) {
  16 + e.printStackTrace();
  17 + rtnVal = "Error";
  18 + }
  19 + return rtnVal;
  20 + }
  21 +
  22 + public static Object stringToObject(String sJson, Class<?> objClass) {
  23 + Object rtnVal;
  24 + try {
  25 + ObjectMapper objectMapper = new ObjectMapper();
  26 + rtnVal = objectMapper.readValue(sJson, objClass);
  27 + } catch (Exception e) {
  28 + e.printStackTrace();
  29 + rtnVal = "Error";
  30 + }
  31 + return rtnVal;
  32 + }
  33 +
  34 + public static Object objectToObject(Object object, Class<?> objClass) {
  35 + return stringToObject(objectToString(object), objClass);
  36 + }
  37 +
  38 +}
0 39 \ No newline at end of file
... ...
src/main/java/com/batch/util/StringUtil.java 0 → 100644
  1 +package com.batch.util;
  2 +
  3 +import java.io.UnsupportedEncodingException;
  4 +import java.net.URLDecoder;
  5 +import java.net.URLEncoder;
  6 +import java.util.ArrayList;
  7 +import java.util.Arrays;
  8 +import java.util.HashMap;
  9 +import java.util.Iterator;
  10 +import java.util.List;
  11 +import java.util.Map;
  12 +import java.util.StringTokenizer;
  13 +import java.util.Vector;
  14 +
  15 +import org.apache.commons.lang3.StringUtils;
  16 +
  17 +/**
  18 + * <p>
  19 + * <code>StringUtil</code> 은 String의 handling과 관련된 class이다.
  20 + * <p>
  21 + */
  22 +
  23 +public class StringUtil {
  24 + /**
  25 + * lPad(inStr, iSize, sPadStr)
  26 + *
  27 + * @param inStr
  28 + * @param iSize
  29 + * @param sPadStr
  30 + * @return
  31 + */
  32 + public static String leftPad(String inStr, int iSize, String sPadStr) {
  33 + return StringUtils.leftPad(inStr, iSize, sPadStr);
  34 + }
  35 +
  36 + /**
  37 + * rPad(inStr, iSize, sPadStr)
  38 + *
  39 + * @param inStr
  40 + * @param iSize
  41 + * @param sPadStr
  42 + * @return
  43 + */
  44 + public static String rightPad(String inStr, int iSize, String sPadStr) {
  45 + return StringUtils.rightPad(inStr, iSize, sPadStr);
  46 + }
  47 +
  48 + /**
  49 + * inStr이 null/""/"공백문자" 이면 default
  50 + *
  51 + * @param inStr
  52 + * @param sDefault
  53 + * @return
  54 + */
  55 + public static String defaultIfBlank(String inStr, String sDefault) {
  56 + return StringUtils.defaultIfBlank(inStr, sDefault);
  57 + }
  58 +
  59 + /**
  60 + * inStr이 null/"" 이면 default
  61 + *
  62 + * @param inStr
  63 + * @param sDefault
  64 + * @return
  65 + */
  66 + public static String defaultIfEmpty(String inStr, String sDefault) {
  67 + return StringUtils.defaultIfEmpty(inStr, sDefault);
  68 + }
  69 +
  70 + /**
  71 + * Strip 결과가 Null이나 ""이면 ""
  72 + *
  73 + * @param inStr
  74 + * @param sDefault
  75 + * @return
  76 + */
  77 + public static String stripToEmpty(String inStr) {
  78 + return StringUtils.stripToEmpty(inStr);
  79 + }
  80 +
  81 + /**
  82 + * Strip 결과가 "" 이면 NULL
  83 + *
  84 + * @param inStr
  85 + * @param sDefault
  86 + * @return
  87 + */
  88 + public static String stripToNull(String inStr) {
  89 + return StringUtils.stripToNull(inStr);
  90 + }
  91 +
  92 + public static String remove(String inStr, String sRemoveStr) {
  93 + return StringUtils.remove(inStr, sRemoveStr);
  94 + }
  95 +
  96 + public static String replace(String inStr, String sTargetStr, String sReplaceStr) {
  97 + return StringUtils.replace(sTargetStr, inStr, sReplaceStr);
  98 + }
  99 +
  100 + public static String trimToEmpty(String inStr) {
  101 + return StringUtils.trimToEmpty(inStr);
  102 + }
  103 +
  104 + public static String trimToNull(String inStr) {
  105 + return StringUtils.trimToNull(inStr);
  106 + }
  107 +
  108 + public static List<String> StringToArrayList(String inStr) {
  109 + return StringToArrayList(inStr, null);
  110 + }
  111 +
  112 + public static List<String> StringToArrayList(String inStr, String inSplit) {
  113 + List<String> lRtn = new ArrayList<String>();
  114 + if (inSplit == null) inSplit = ",";
  115 + if (inStr != null) {
  116 + String[] slVal = inStr.split(inSplit);
  117 + lRtn = new ArrayList<String>(Arrays.asList(slVal));
  118 + }
  119 + return lRtn;
  120 + }
  121 +
  122 +}
0 123 \ No newline at end of file
... ...
src/test/resources/TEST_ALL_V0.3.py 0 → 100644
  1 +import sys
  2 +
  3 +# PARAMITER
  4 +JOB_ID = sys.argv[1]
  5 +SYS_SE = sys.argv[2]
  6 +FCST_YM = sys.argv[3]
  7 +SELF_CD = sys.argv[4]
  8 +OTHER_CD = sys.argv[5]
  9 +CUR = sys.argv[6]
  10 +TT_SUM = sys.argv[7] # 합산차액 허용오차값
  11 +DTA_TY = sys.argv[8] # T : 트랜잭션 , B : 발란스
  12 +
  13 +print(sys.argv)
0 14 \ No newline at end of file
... ...