|
@@ -0,0 +1,99 @@
|
|
|
|
|
+package com.shkpr.service.alambizplugin.dbdao.services;
|
|
|
|
|
+
|
|
|
|
|
+import com.global.base.log.LogLevelFlag;
|
|
|
|
|
+import com.global.base.log.LogPrintMgr;
|
|
|
|
|
+import com.shkpr.service.alambizplugin.constants.LogFlagBusiType;
|
|
|
|
|
+import com.shkpr.service.alambizplugin.dbdao.mapper.PipeBurstDataPressCurMapper;
|
|
|
|
|
+import com.shkpr.service.alambizplugin.dbdao.services.intef.PipeBurstDataPressCurService;
|
|
|
|
|
+import com.shkpr.service.alambizplugin.dto.PipeBurstDataPressCur;
|
|
|
|
|
+import org.apache.ibatis.session.ExecutorType;
|
|
|
|
|
+import org.apache.ibatis.session.SqlSession;
|
|
|
|
|
+import org.apache.ibatis.session.SqlSessionFactory;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
+
|
|
|
|
|
+import java.sql.Connection;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 爆管数据压力计service实现
|
|
|
|
|
+ *
|
|
|
|
|
+ * @author 欧阳劲驰
|
|
|
|
|
+ * @since 1.0.0
|
|
|
|
|
+ */
|
|
|
|
|
+@Service
|
|
|
|
|
+public class PipeBurstDataPressCurServiceImpl implements PipeBurstDataPressCurService {
|
|
|
|
|
+ /**
|
|
|
|
|
+ * log
|
|
|
|
|
+ */
|
|
|
|
|
+ private final String mStrClassName;
|
|
|
|
|
+ private final String mBizType;
|
|
|
|
|
+
|
|
|
|
|
+ private final SqlSessionFactory mainSqlSessionFactory;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ public PipeBurstDataPressCurServiceImpl(@Qualifier("mainSqlSessionFactory") SqlSessionFactory mainSqlSessionFactory) {
|
|
|
|
|
+ mStrClassName = "PipeBurstDataPressCurServiceImpl";
|
|
|
|
|
+ mBizType = LogFlagBusiType.BUSI_PIPE_BURST.toStrValue();
|
|
|
|
|
+ this.mainSqlSessionFactory = mainSqlSessionFactory;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 批量合并操作
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param dates 数据集合
|
|
|
|
|
+ * @return 合并状态
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public Boolean upsertAll(List<PipeBurstDataPressCur> dates) {
|
|
|
|
|
+ LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName
|
|
|
|
|
+ , String.format(
|
|
|
|
|
+ "开始批量写入压力计数据,开启批处理 数据量:%s"
|
|
|
|
|
+ , dates.size()
|
|
|
|
|
+ )
|
|
|
|
|
+ );
|
|
|
|
|
+ long begin = System.currentTimeMillis();
|
|
|
|
|
+
|
|
|
|
|
+ //开启批处理
|
|
|
|
|
+ try (SqlSession sqlSession = mainSqlSessionFactory.openSession(ExecutorType.BATCH, false)) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ //设置手动提交
|
|
|
|
|
+ Connection conn = sqlSession.getConnection();
|
|
|
|
|
+ conn.setAutoCommit(false);
|
|
|
|
|
+
|
|
|
|
|
+ //从session获取mapper
|
|
|
|
|
+ PipeBurstDataPressCurMapper dataPressCurMapper = sqlSession.getMapper(PipeBurstDataPressCurMapper.class);
|
|
|
|
|
+
|
|
|
|
|
+ //批量合并
|
|
|
|
|
+ dates.forEach(dataPressCurMapper::upsert);
|
|
|
|
|
+
|
|
|
|
|
+ //发送sql至数据库
|
|
|
|
|
+ sqlSession.flushStatements();
|
|
|
|
|
+ //提交
|
|
|
|
|
+ sqlSession.commit();
|
|
|
|
|
+ conn.commit();
|
|
|
|
|
+
|
|
|
|
|
+ long end = System.currentTimeMillis();
|
|
|
|
|
+ LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, mBizType, mStrClassName
|
|
|
|
|
+ , String.format(
|
|
|
|
|
+ "结束批量写入压力计数据,提交并关闭批处理 用时(毫秒):%d"
|
|
|
|
|
+ , (end - begin)
|
|
|
|
|
+ )
|
|
|
|
|
+ );
|
|
|
|
|
+ return true;
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ //回滚
|
|
|
|
|
+ sqlSession.rollback();
|
|
|
|
|
+
|
|
|
|
|
+ LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_ERROR, mBizType, mStrClassName
|
|
|
|
|
+ , String.format(
|
|
|
|
|
+ "批量写入压力计数据,回滚操作 error:%s"
|
|
|
|
|
+ , e
|
|
|
|
|
+ )
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|