Commit 4c27234c1bb32561cc6a8c717bfc1ad8dbab000e
1 parent
b490e7c9
* 자동일치 Sequence
StatisticsUtil.getMtchNum(); /** 일치key */ * EX 매칭 2:3, 3:2, 3:3, 4:1, 1:4 케이스 추가
Showing
3 changed files
with
42 additions
and
5 deletions
Show diff stats
src/main/java/com/batch/config/MatchingItemProcessorAuto.java
| @@ -12,6 +12,7 @@ import org.springframework.stereotype.Component; | @@ -12,6 +12,7 @@ import org.springframework.stereotype.Component; | ||
| 12 | import com.batch.config.MatchingSetup.Cond; | 12 | import com.batch.config.MatchingSetup.Cond; |
| 13 | import com.batch.config.MatchingSetup.Matching; | 13 | import com.batch.config.MatchingSetup.Matching; |
| 14 | import com.batch.mapper.primary.MatchingInnerDelingMapper; | 14 | import com.batch.mapper.primary.MatchingInnerDelingMapper; |
| 15 | +import com.batch.util.StatisticsUtil; | ||
| 15 | 16 | ||
| 16 | import lombok.RequiredArgsConstructor; | 17 | import lombok.RequiredArgsConstructor; |
| 17 | import lombok.extern.slf4j.Slf4j; | 18 | import lombok.extern.slf4j.Slf4j; |
| @@ -37,7 +38,7 @@ public class MatchingItemProcessorAuto implements ItemProcessor<Map, Map> { | @@ -37,7 +38,7 @@ public class MatchingItemProcessorAuto implements ItemProcessor<Map, Map> { | ||
| 37 | List<String> lCompareField = matching.getCompareField(); | 38 | List<String> lCompareField = matching.getCompareField(); |
| 38 | String mtchType = matching.getType(); | 39 | String mtchType = matching.getType(); |
| 39 | String mtchTypeName = matching.getTypeName(); | 40 | String mtchTypeName = matching.getTypeName(); |
| 40 | - int mtchNumber = 0; | 41 | + long mtchNumber = 0; |
| 41 | int iUpdated = 0; | 42 | int iUpdated = 0; |
| 42 | 43 | ||
| 43 | log.info("CustomItemProcessorA.params : " + params.toString()); | 44 | log.info("CustomItemProcessorA.params : " + params.toString()); |
| @@ -124,7 +125,9 @@ public class MatchingItemProcessorAuto implements ItemProcessor<Map, Map> { | @@ -124,7 +125,9 @@ public class MatchingItemProcessorAuto implements ItemProcessor<Map, Map> { | ||
| 124 | List<Map> lMapTwo = mMatchingDataTwo.get(curKey); | 125 | List<Map> lMapTwo = mMatchingDataTwo.get(curKey); |
| 125 | 126 | ||
| 126 | int iMin = Math.min(lMapOne.size(), lMapTwo.size()); | 127 | int iMin = Math.min(lMapOne.size(), lMapTwo.size()); |
| 127 | - if (iMin > 0) mtchNumber++; | 128 | + if (iMin > 0) { |
| 129 | + mtchNumber = StatisticsUtil.getMtchNum(); /** 일치key Sequence */ | ||
| 130 | + } | ||
| 128 | for (int i=0; i<iMin; i++) { | 131 | for (int i=0; i<iMin; i++) { |
| 129 | lMapOne.get(i).put("mtchType", mtchType); | 132 | lMapOne.get(i).put("mtchType", mtchType); |
| 130 | lMapOne.get(i).put("mtchTypeName", mtchTypeName); | 133 | lMapOne.get(i).put("mtchTypeName", mtchTypeName); |
| @@ -209,7 +212,7 @@ public class MatchingItemProcessorAuto implements ItemProcessor<Map, Map> { | @@ -209,7 +212,7 @@ public class MatchingItemProcessorAuto implements ItemProcessor<Map, Map> { | ||
| 209 | matchingInnerDelingMapper.setResult(Map.of("itemList", lUpdated)); | 212 | matchingInnerDelingMapper.setResult(Map.of("itemList", lUpdated)); |
| 210 | iUpdated = iUpdated + lUpdated.size(); | 213 | iUpdated = iUpdated + lUpdated.size(); |
| 211 | } | 214 | } |
| 212 | - log.debug("Updated OrgData : " + iUpdated + "건"); | 215 | + log.info("Updated OrgData : " + iUpdated + "건, mtchNumber = " + mtchNumber); |
| 213 | 216 | ||
| 214 | //작업이 정상적으로 작동 되었을 경우 현재 처리하고 있는 데이타 그대로 넘겨준다. | 217 | //작업이 정상적으로 작동 되었을 경우 현재 처리하고 있는 데이타 그대로 넘겨준다. |
| 215 | return item; | 218 | return item; |
src/main/java/com/batch/service/JobService.java
| @@ -33,7 +33,7 @@ import com.batch.config.MatchingSetup.Matching; | @@ -33,7 +33,7 @@ import com.batch.config.MatchingSetup.Matching; | ||
| 33 | import com.batch.mapper.primary.MatchingInnerDelingMapper; | 33 | import com.batch.mapper.primary.MatchingInnerDelingMapper; |
| 34 | import com.batch.mapper.secondary.OracleMapper; | 34 | import com.batch.mapper.secondary.OracleMapper; |
| 35 | import com.batch.util.FileUtil; | 35 | import com.batch.util.FileUtil; |
| 36 | - | 36 | +import com.batch.util.StatisticsUtil; |
| 37 | import com.batch.service.JobService; | 37 | import com.batch.service.JobService; |
| 38 | import lombok.extern.slf4j.Slf4j; | 38 | import lombok.extern.slf4j.Slf4j; |
| 39 | 39 | ||
| @@ -98,6 +98,9 @@ public class JobService { | @@ -98,6 +98,9 @@ public class JobService { | ||
| 98 | } | 98 | } |
| 99 | } | 99 | } |
| 100 | 100 | ||
| 101 | + /** 일치key 초기화 */ | ||
| 102 | + StatisticsUtil.initMtchNum(); | ||
| 103 | + | ||
| 101 | for (String sJobType : lJobType) { | 104 | for (String sJobType : lJobType) { |
| 102 | log.info("[" + sThreadName + "]Current running job type: " + sJobType); | 105 | log.info("[" + sThreadName + "]Current running job type: " + sJobType); |
| 103 | JobExecution jobExe = invokeJob("matchingInnerDelng", sJobType, params); | 106 | JobExecution jobExe = invokeJob("matchingInnerDelng", sJobType, params); |
| @@ -216,7 +219,7 @@ public class JobService { | @@ -216,7 +219,7 @@ public class JobService { | ||
| 216 | mtchNumber = matchingExtraProcessorAuto.process(paramRec, 2, 2, i, i, mtchNumber); | 219 | mtchNumber = matchingExtraProcessorAuto.process(paramRec, 2, 2, i, i, mtchNumber); |
| 217 | } | 220 | } |
| 218 | 221 | ||
| 219 | - // 3건씩 매칭일 경우 최대 5000건 까지 | 222 | + // 3건씩 매칭일 경우 최대 2000건 까지 |
| 220 | for (int i = 0; i < 2000; i = i + 100) { | 223 | for (int i = 0; i < 2000; i = i + 100) { |
| 221 | mtchNumber = matchingExtraProcessorAuto.process(paramRec, 1, 3, 0, i, mtchNumber); | 224 | mtchNumber = matchingExtraProcessorAuto.process(paramRec, 1, 3, 0, i, mtchNumber); |
| 222 | } | 225 | } |
| @@ -224,6 +227,27 @@ public class JobService { | @@ -224,6 +227,27 @@ public class JobService { | ||
| 224 | mtchNumber = matchingExtraProcessorAuto.process(paramRec, 3, 1, i, 0, mtchNumber); | 227 | mtchNumber = matchingExtraProcessorAuto.process(paramRec, 3, 1, i, 0, mtchNumber); |
| 225 | } | 228 | } |
| 226 | 229 | ||
| 230 | + | ||
| 231 | + for (int i = 0; i < 2000; i = i + 100) { | ||
| 232 | + mtchNumber = matchingExtraProcessorAuto.process(paramRec, 2, 3, i, 0, mtchNumber); | ||
| 233 | + } | ||
| 234 | + | ||
| 235 | + for (int i = 0; i < 2000; i = i + 100) { | ||
| 236 | + mtchNumber = matchingExtraProcessorAuto.process(paramRec, 3, 2, i, 0, mtchNumber); | ||
| 237 | + } | ||
| 238 | + | ||
| 239 | + for (int i = 0; i < 2000; i = i + 100) { | ||
| 240 | + mtchNumber = matchingExtraProcessorAuto.process(paramRec, 3, 3, i, 0, mtchNumber); | ||
| 241 | + } | ||
| 242 | + | ||
| 243 | + // 3건이상 매칭일 경우 최대 1000건 까지 | ||
| 244 | + for (int i = 0; i < 1000; i = i + 25) { | ||
| 245 | + mtchNumber = matchingExtraProcessorAuto.process(paramRec, 1, 4, 0, i, mtchNumber); | ||
| 246 | + } | ||
| 247 | + for (int i = 0; i < 1000; i = i + 25) { | ||
| 248 | + mtchNumber = matchingExtraProcessorAuto.process(paramRec, 4, 1, 0, i, mtchNumber); | ||
| 249 | + } | ||
| 250 | + | ||
| 227 | long endTime = System.currentTimeMillis(); | 251 | long endTime = System.currentTimeMillis(); |
| 228 | log.info( | 252 | log.info( |
| 229 | "extra [" + sThreadName + " : " + sDate + "]Job Ended: " + endTime + " mtchNumber = " + mtchNumber); | 253 | "extra [" + sThreadName + " : " + sDate + "]Job Ended: " + endTime + " mtchNumber = " + mtchNumber); |
src/main/java/com/batch/util/StatisticsUtil.java
| @@ -25,6 +25,16 @@ public class StatisticsUtil { | @@ -25,6 +25,16 @@ public class StatisticsUtil { | ||
| 25 | // log.info("resultAll=" + resultAll.toString()); | 25 | // log.info("resultAll=" + resultAll.toString()); |
| 26 | // } | 26 | // } |
| 27 | 27 | ||
| 28 | + private static long mtch_num = 0; | ||
| 29 | + | ||
| 30 | + public static long getMtchNum() { | ||
| 31 | + return ++mtch_num; | ||
| 32 | + } | ||
| 33 | + | ||
| 34 | + public static void initMtchNum() { | ||
| 35 | + mtch_num = 0; | ||
| 36 | + } | ||
| 37 | + | ||
| 28 | /** | 38 | /** |
| 29 | * 조합 구하기 | 39 | * 조합 구하기 |
| 30 | * | 40 | * |