Parcourir la source

transaction update

shjung il y a 10 mois
Parent
commit
f3d8d437ee

+ 1 - 0
conf/ggits-etlp-server.pid

@@ -0,0 +1 @@
+17644

+ 3 - 2
conf/ggits-etlp-server.yml

@@ -4,8 +4,9 @@ spring:
 
 application:
   process-id: 81010
+  logging-hist: true
+  page-count: 0
   scheduling:
     pool-size: 0
-    process-ggits-etlp: 0 9 * * * *
-    #process-ggits-etlp: 10 3 3 * * *
+    process-ggits-etlp: 10 3 3 * * *
 

+ 5 - 1
src/main/java/com/ggits/etlp/server/config/ApplicationConfig.java

@@ -17,6 +17,7 @@ public class ApplicationConfig {
     private String ggitsServerIp = "192.168.24.22";
     private int dbmsWorkers = 0;
     private int dbmsQueueSize = 0;
+    private boolean loggingHist = true;
     private int pageCount = 50000;
 
     @PostConstruct
@@ -31,7 +32,10 @@ public class ApplicationConfig {
         }
 
         if (this.pageCount == 0) {
-            this.pageCount = 5000;
+            this.pageCount = 10000;
+        }
+        if (this.pageCount < 1000) {
+            this.pageCount = 1000;
         }
         this.pageCount = Math.min(100000, this.pageCount);
 

+ 5 - 6
src/main/java/com/ggits/etlp/server/config/DatabaseSigConfig.java

@@ -15,7 +15,6 @@ import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
-import org.springframework.jdbc.datasource.DataSourceTransactionManager;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 import javax.annotation.PostConstruct;
@@ -72,9 +71,9 @@ public class DatabaseSigConfig {
         return new SqlSessionTemplate(sqlSessionFactory);
     }
 
-    @Primary
-    @Bean(name="transactionManager")
-    public DataSourceTransactionManager transactionManager(@Autowired @Qualifier("dataSource") DataSource dataSource) {
-        return new DataSourceTransactionManager(dataSource);
-    }
+//    @Primary
+//    @Bean(name="transactionManager")
+//    public DataSourceTransactionManager transactionManager(@Autowired @Qualifier("dataSource") DataSource dataSource) {
+//        return new DataSourceTransactionManager(dataSource);
+//    }
 }

+ 5 - 8
src/main/java/com/ggits/etlp/server/dao/mapper/BatchDaoService.java

@@ -5,6 +5,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.ibatis.session.ExecutorType;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.ibatis.session.SqlSessionFactory;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.HashMap;
 import java.util.List;
@@ -24,10 +25,6 @@ public abstract class BatchDaoService {
         this.sqlSessionFactory = sqlSessionFactory;
     }
 
-    public int getCount() {
-        return this.count;
-    }
-
     public int execute(String mapperName) {
         int total = 0;
         SqlSession sqlSession = null;
@@ -44,7 +41,7 @@ public abstract class BatchDaoService {
         return total;
     }
 
-    public int insertBatch(String mapperName, List<HashMap<String, Object>> lists) {
+    public int insertBatch(String mapperName, @NotNull List<HashMap<String, Object>> lists) {
         int total = lists.size();
         if (total == 0) {
             log.info("[BATCH--DAO] {}:insertBatch: {}: No Data.", this.serviceName, mapperName);
@@ -57,7 +54,7 @@ public abstract class BatchDaoService {
             for (Map<String, Object> param : lists) {
                 sqlSession.insert(mapperName, param);
                 jobCnt++;
-                if (jobCnt % this.MAX_BATCH_SIZE == 0 || jobCnt == total) {
+                if (jobCnt % MAX_BATCH_SIZE == 0 || jobCnt == total) {
                     sqlSession.flushStatements();
                     sqlSession.clearCache();
                 }
@@ -73,7 +70,7 @@ public abstract class BatchDaoService {
         return this.count;
     }
 
-    public int updateBatch(String mapperName, List<HashMap<String, Object>> lists) {
+    public int updateBatch(String mapperName, @NotNull List<HashMap<String, Object>> lists) {
         int total = lists.size();
         if (total == 0) {
             log.info("[BATCH--DAO] {}:updateBatch: {}: No Data.", this.serviceName, mapperName);
@@ -86,7 +83,7 @@ public abstract class BatchDaoService {
             for (Map<String, Object> param : lists) {
                 sqlSession.update(mapperName, param);
                 jobCnt++;
-                if (jobCnt % this.MAX_BATCH_SIZE == 0 || jobCnt == total) {
+                if (jobCnt % MAX_BATCH_SIZE == 0 || jobCnt == total) {
                     sqlSession.flushStatements();
                     sqlSession.clearCache();
                 }

+ 1 - 0
src/main/java/com/ggits/etlp/server/dao/mapper/sig/SigMapper.java

@@ -15,6 +15,7 @@ public interface SigMapper {
     List<TbRegionGgits> selectRegionGgits();
     List<TbGgitsEtlp> selectGgitsEtlp(@Param("tblNm") String tblNm);
     int updateGgitsEtlp(Map<String, Object> obj);
+    int insertGgitsEtlpHist(Map<String, Object> obj);
 
     int initTbInt(@Param("regionCd") String regionCd);
     List<TbInt> selectTbInt(@Param("regionCd") String regionCd);

+ 3 - 0
src/main/java/com/ggits/etlp/server/dao/mapper/sig/batch/SigDao.java

@@ -25,6 +25,9 @@ public class SigDao extends BatchDaoService {
         return updateBatch("updateGgitsEtlp", req);
     }
 
+    public int insertGgitsEtlpHist(List<HashMap<String, Object>> req) {
+        return insertBatch("insertGgitsEtlpHist", req);
+    }
     public int updateTbIntFlow(List<HashMap<String, Object>> req) {
         return updateBatch("updateTbIntFlow", req);
     }

+ 5 - 2
src/main/java/com/ggits/etlp/server/dto/EtlpInfo.java

@@ -53,7 +53,10 @@ public class EtlpInfo implements Serializable {
 
         this.endTm = TimeUtils.getCurrentTimeString();
         this.succCnt = writeCount;
-        if (!success) {
+        if (success) {
+            this.resCd = EtlpConst.etlpSuccess;
+        }
+        else {
             // etlp 실패시에
             this.updtDt = this.qryDt;   // 업데이트 정보를 이전 시각으로 다시설정
         }
@@ -71,7 +74,7 @@ public class EtlpInfo implements Serializable {
     }
 
     public void updateEtlp(TbGgitsEtlp etlp) {
-        this.qryDt   = etlp.getUpdDt();
+        this.qryDt   = etlp.getUpdtDt();
         this.updtDt  = TimeUtils.getCurrentTimeString();
         this.resCd   = EtlpConst.etlpFailed;
         this.dataCnt = 0;

+ 3 - 3
src/main/java/com/ggits/etlp/server/entity/sig/TbGgitsEtlp.java

@@ -14,8 +14,8 @@ import java.io.Serializable;
 public class TbGgitsEtlp implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    private String  tblNm;
-    private String  regionCd;
-    private String  updDt;
+    private String tblNm;
+    private String regionCd;
+    private String updtDt;
 
 }

+ 58 - 33
src/main/java/com/ggits/etlp/server/service/GgitsEtlpService.java

@@ -98,22 +98,22 @@ public class GgitsEtlpService {
         //교차로구성_연계, SCS_T_CON_INTLC
         etlpIntLc();
 
-//        //교차로이동류_연계, SCS_T_CON_INTFLOW
-//        etlpIntFlow();
-//
-//        //교차로일계획_연계, SCS_T_CON_INTDPLAN
-//        etlpIntDPlan();
-//
-//        //교차로주간계획_연계, SCS_T_CON_INTWEEK
-//        etlpIntWeek();
-//
-//        //교차로예약계획_연계, SCS_T_CON_INTFPLAN
-//        etlpIntFPlan();
-//
-//        //교차로시그널맵_연계, SCS_T_CON_INTSIGMAP
-//        etlpIntSigmap();
-
-        log.info("GGITS DBASE ETLP TO SIG ..END: {}", elapsed.elapsedTimeStr());
+        //교차로이동류_연계, SCS_T_CON_INTFLOW
+        etlpIntFlow();
+
+        //교차로일계획_연계, SCS_T_CON_INTDPLAN
+        etlpIntDPlan();
+
+        //교차로주간계획_연계, SCS_T_CON_INTWEEK
+        etlpIntWeek();
+
+        //교차로예약계획_연계, SCS_T_CON_INTFPLAN
+        etlpIntFPlan();
+
+        //교차로시그널맵_연계, SCS_T_CON_INTSIGMAP
+        etlpIntSigmap();
+
+        log.info("GGITS DBASE ETLP TO SIG ..END. {}", elapsed.elapsedTimeStr());
         log.info("<************************************************************************************************");
     }
 
@@ -124,17 +124,31 @@ public class GgitsEtlpService {
         }
         return pageCount;
     }
-    private void updateEtlpResult(List<HashMap<String, Object>> etlpLists) {
+    private void updateEtlpResult(String tblName, List<HashMap<String, Object>> etlpLists) {
+        int result;
+        Elapsed elapsed = new Elapsed();
+        try {
+            result = this.dao.updateGgitsEtlp(etlpLists);
+            log.info("updateGgitsEtlp: {}, {} EA, {}", tblName, result, elapsed.elapsedTimeStr());
+        }
+        catch (Exception e) {
+            log.error("updateGgitsEtlp: {}, {}, Exceptions: {}", tblName, etlpLists, e.getMessage());
+        }
         try {
-            this.dao.updateGgitsEtlp(etlpLists);
+            elapsed.reset();
+            if (this.config.isLoggingHist()) {
+                result = this.dao.insertGgitsEtlpHist(etlpLists);
+                log.info("insertGgitsEtlpHist: {}, {} EA, {}", tblName, result, elapsed.elapsedTimeStr());
+            }
         }
         catch (Exception e) {
-            log.error("updateEtlpResult: {}, Exceptions: {}", etlpLists, e.getMessage());
+            log.error("insertGgitsEtlpHist: {}, {}, Exceptions: {}", tblName, etlpLists, e.getMessage());
         }
     }
 
     //교차로구성_연계, SCS_T_CON_INTLC
     private void etlpIntLc() {
+        log.info("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^>");
         Elapsed elapsed = new Elapsed();
         Elapsed totElapsed = new Elapsed();
         log.info("TB_INT, SCS_T_CON_INTLC START.");
@@ -147,6 +161,7 @@ public class GgitsEtlpService {
                 continue;
             }
             TimeUtils.sleep(500);
+            elapsed.reset();
 
             int writeCount = 0;
             Elapsed job = new Elapsed();
@@ -217,12 +232,14 @@ public class GgitsEtlpService {
             }
             etlpLists.add(etlp.toSig(center.getRegionCd(), EtlpConst.etlpTableInt));
         }
-        updateEtlpResult(etlpLists);
-        log.info("TB_INT, SCS_T_CON_INTLC ..END: {}", totElapsed.elapsedTimeStr());
+        updateEtlpResult(EtlpConst.etlpTableInt, etlpLists);
+        log.info("TB_INT, SCS_T_CON_INTLC ..END. {}", totElapsed.elapsedTimeStr());
+        log.info("<^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
     }
 
     //교차로이동류_연계, SCS_T_CON_INTFLOW
     private void etlpIntFlow() {
+        log.info("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^>");
         Elapsed elapsed = new Elapsed();
         Elapsed totElapsed = new Elapsed();
         log.info("TB_INT_FLOW, SCS_T_CON_INTFLOW START.");
@@ -300,12 +317,14 @@ public class GgitsEtlpService {
             }
             etlpLists.add(etlp.toSig(center.getRegionCd(), EtlpConst.etlpTableFlow));
         }
-        updateEtlpResult(etlpLists);
-        log.info("TB_INT_FLOW, SCS_T_CON_INTFLOW ..END: {}", totElapsed.elapsedTimeStr());
+        updateEtlpResult(EtlpConst.etlpTableFlow, etlpLists);
+        log.info("TB_INT_FLOW, SCS_T_CON_INTFLOW ..END. {}", totElapsed.elapsedTimeStr());
+        log.info("<^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
     }
 
     //교차로일계획_연계, SCS_T_CON_INTDPLAN
     private void etlpIntDPlan() {
+        log.info("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^>");
         Elapsed elapsed = new Elapsed();
         Elapsed totElapsed = new Elapsed();
         log.info("TB_INT_OPER_PLAN, SCS_T_CON_INTDPLAN START.");
@@ -383,12 +402,14 @@ public class GgitsEtlpService {
             }
             etlpLists.add(etlp.toSig(center.getRegionCd(), EtlpConst.etlpTableOperPlan));
         }
-        updateEtlpResult(etlpLists);
-        log.info("TB_INT_OPER_PLAN, SCS_T_CON_INTDPLAN ..END: {}", totElapsed.elapsedTimeStr());
+        updateEtlpResult(EtlpConst.etlpTableOperPlan, etlpLists);
+        log.info("TB_INT_OPER_PLAN, SCS_T_CON_INTDPLAN ..END. {}", totElapsed.elapsedTimeStr());
+        log.info("<^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
     }
 
     //교차로주간계획_연계, SCS_T_CON_INTWEEK
     private void etlpIntWeek() {
+        log.info("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^>");
         Elapsed elapsed = new Elapsed();
         Elapsed totElapsed = new Elapsed();
         log.info("TB_INT_DY_PLAN, SCS_T_CON_INTWEEK START.");
@@ -466,12 +487,14 @@ public class GgitsEtlpService {
             }
             etlpLists.add(etlp.toSig(center.getRegionCd(), EtlpConst.etlpTableDyPlan));
         }
-        updateEtlpResult(etlpLists);
-        log.info("TB_INT_DY_PLAN, SCS_T_CON_INTWEEK ..END: {}", totElapsed.elapsedTimeStr());
+        updateEtlpResult(EtlpConst.etlpTableDyPlan, etlpLists);
+        log.info("TB_INT_DY_PLAN, SCS_T_CON_INTWEEK ..END. {}", totElapsed.elapsedTimeStr());
+        log.info("<^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
     }
 
     //교차로예약계획_연계, SCS_T_CON_INTFPLAN
     private void etlpIntFPlan() {
+        log.info("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^>");
         Elapsed elapsed = new Elapsed();
         Elapsed totElapsed = new Elapsed();
         log.info("TB_INT_RESRV_PLAN, SCS_T_CON_INTFPLAN START.");
@@ -549,12 +572,14 @@ public class GgitsEtlpService {
             }
             etlpLists.add(etlp.toSig(center.getRegionCd(), EtlpConst.etlpTableResrvPlan));
         }
-        updateEtlpResult(etlpLists);
-        log.info("TB_INT_RESRV_PLAN, SCS_T_CON_INTFPLAN ..END: {}", totElapsed.elapsedTimeStr());
+        updateEtlpResult(EtlpConst.etlpTableResrvPlan, etlpLists);
+        log.info("TB_INT_RESRV_PLAN, SCS_T_CON_INTFPLAN ..END. {}", totElapsed.elapsedTimeStr());
+        log.info("<^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
     }
 
     //교차로시그널맵_연계, SCS_T_CON_INTSIGMAP
     private void etlpIntSigmap() {
+        log.info("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^>");
         Elapsed elapsed = new Elapsed();
         Elapsed totElapsed = new Elapsed();
         log.info("TB_INT_SIGNALMAP, SCS_T_CON_INTSIGMAP START.");
@@ -616,8 +641,7 @@ public class GgitsEtlpService {
                                 center.getRegionCd(), center.getRegionNm(), String.format("%6d ~ %6d, %6d EA", fromSeq, toSeq, currWriteCount), job.elapsedTimeStr());
                     }
                 }
-                etlp.setWriteCount(writeCount);
-                etlp.setSuccess(true);
+                etlp.endEtlp(true, writeCount);
                 log.info("TB_INT_SIGNALMAP, SCS_T_CON_INTSIGMAP WRITE. {}, {}, {} EA. {}",
                         center.getRegionCd(), center.getRegionNm(), writeCount, elapsed.elapsedTimeStr());
                 log.info("<================================================================================================");
@@ -633,7 +657,8 @@ public class GgitsEtlpService {
             }
             etlpLists.add(etlp.toSig(center.getRegionCd(), EtlpConst.etlpTableSignalMap));
         }
-        updateEtlpResult(etlpLists);
-        log.info("TB_INT_SIGNALMAP, SCS_T_CON_INTSIGMAP ..END: {}", totElapsed.elapsedTimeStr());
+        updateEtlpResult(EtlpConst.etlpTableSignalMap, etlpLists);
+        log.info("TB_INT_SIGNALMAP, SCS_T_CON_INTSIGMAP ..END. {}", totElapsed.elapsedTimeStr());
+        log.info("<^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
     }
 }

+ 3 - 2
src/main/resources/application.yml

@@ -36,11 +36,12 @@ management:
 
 application:
   process-id: 81010
+  logging-hist: true
   page-count: 0
   scheduling:
     pool-size: 0
-    process-ggits-etlp: 0 9 * * * *
-    #process-ggits-etlp: 10 3 3 * * *
+    #process-ggits-etlp: 0 9 * * * *
+    process-ggits-etlp: 10 3 3 * * *
 
 ---
 spring:

+ 0 - 0
src/main/resources/mybatis/mapper/ggits/ggtisMapper.xml → src/main/resources/mybatis/mapper/ggits/GgtisMapper.xml


+ 35 - 6
src/main/resources/mybatis/mapper/sig/SigMapper.xml

@@ -18,13 +18,13 @@
 
     <select id="selectGgitsEtlp" parameterType="java.lang.String" resultType="com.ggits.etlp.server.entity.sig.TbGgitsEtlp" fetchSize="50">
         <![CDATA[
-        SELECT #{tblNm}                        AS tblNm,
-               X.REGION_CD                     AS regionCd,
-               NVL(Y.UPD_DT, '20000101000000') AS updDt
+        SELECT #{tblNm}                         AS tblNm,
+               X.REGION_CD                      AS regionCd,
+               NVL(Y.UPDT_DT, '20000101000000') AS updtDt
         FROM (SELECT B.REGION_CD
               FROM TB_REGION_GGITS A, TB_REGION_CENTER B
               WHERE A.REGION_CD = B.REGION_CD) X,
-             (SELECT A.REGION_CD, A.UPD_DT
+             (SELECT A.REGION_CD, A.UPDT_DT
               FROM TB_GGITS_ETLP A
               WHERE A.TBL_NM = #{tblNm}) Y
         WHERE X.REGION_CD = Y.REGION_CD(+)
@@ -42,8 +42,8 @@
                        #{DATA_CNT}  AS DATA_CNT,
                        #{ETLP_CNT}  AS ETLP_CNT,
                        #{SUCC_CNT}  AS SUCC_CNT,
-                       #{STR_TM}    AS STR_TM,
-                       #{END_TM}    AS END_TM
+                       TO_DATE(#{STR_TM}, 'YYYYMMDDHH24MISS') AS STR_TM,
+                       TO_DATE(#{END_TM}, 'YYYYMMDDHH24MISS') AS END_TM
                    FROM DUAL) M
             ON (L.TBL_NM = M.TBL_NM AND L.REGION_CD = M.REGION_CD)
             WHEN MATCHED THEN
@@ -79,6 +79,35 @@
         ]]>
     </update>
 
+
+    <insert id="insertGgitsEtlpHist" parameterType="java.util.Map">
+    <![CDATA[
+        INSERT INTO TB_GGITS_ETLP_HIST (
+                        ETLP_TM,
+                        TBL_NM,
+                        REGION_CD,
+                        UPDT_DT,
+                        RES_CD,
+                        DATA_CNT,
+                        ETLP_CNT,
+                        SUCC_CNT,
+                        STR_TM,
+                        END_TM )
+                    VALUES (
+                       SYSDATE,
+                       #{TBL_NM},
+                       #{REGION_CD},
+                       #{UPDT_DT},
+                       #{RES_CD},
+                       #{DATA_CNT},
+                       #{ETLP_CNT},
+                       #{SUCC_CNT},
+                       TO_DATE(#{STR_TM}, 'YYYYMMDDHH24MISS'),
+                       TO_DATE(#{END_TM}, 'YYYYMMDDHH24MISS')
+                   )
+        ]]>
+    </insert>
+
     <update id="initTbInt" parameterType="java.lang.String">
     <![CDATA[
         UPDATE TB_INT