package org.springblade.qinzhesync.service; import lombok.extern.slf4j.Slf4j; import org.springblade.core.tool.api.R; import org.springblade.qinzhesync.utils.SnowflakeIdGenerator; import org.springblade.system.feign.ISysClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; /** * 勤哲主制分工表数据同步的服务 */ @Service @Slf4j public class QinzheSyncService { @Qualifier("primaryJdbcTemplate") @Autowired private JdbcTemplate mdmJdbcTemplate; @Qualifier("qinzheJdbcTemplate") @Autowired private JdbcTemplate qinzheJdbcTemplate; @Autowired private ISysClient sysClient; @Autowired private SnowflakeIdGenerator idGen; private static final String DEFAULT_QUERY_SQL = "select 产品号 cph,零件号 ljh,零件名称 ljmc,主制 zz,主制工段 zzgd,主管工艺 zggy,副管 fg,车间计划员 cjjhy,计划员 jhy from v_张立虎_2厂主制分工表"; private static final String QINZHE_QUERY_KEY = "QINZHE_QUERY"; /** * 批量插入数据数量 */ static final int BATCH_SIZE = 2000;//5000; @Transactional public void syncData(){ /* Map mmdData = mdmJdbcTemplate.queryForMap("select count(*) n from mdm_machine"); log.info("mdm:{}",mmdData); Map qinzheData = qinzheJdbcTemplate.queryForMap("select count(*) n from mdm_machine"); log.info("qingzhe:{}",qinzheData); */ cleanLocalTable(); //cleanQinzheDataInDivision(); saveQinzheFgb(); } /** * 将勤哲系统的数据先一次性导入mdm系统数据库临时表 */ public void saveQinzheFgb(){ List fgbList = this.qinzheJdbcTemplate.query(this.getQuerySql(),new RowMapper(){ @Override public QinzheZzFgb mapRow(ResultSet rs, int rowNum) throws SQLException { QinzheZzFgb fgb = new QinzheZzFgb(); fgb.setCph(rs.getString("cph")); fgb.setLjh(rs.getString("ljh"));; fgb.setLjmc(rs.getString("ljmc")); fgb.setZz(rs.getString("zz")); fgb.setZzgd(rs.getString("zzgd")); fgb.setZggy(rs.getString("zggy")); fgb.setFg(rs.getString("fg")); fgb.setCjjhy(rs.getString("cjjhy")); fgb.setJhy(rs.getString("jhy")); return fgb; } }); insertToLocalTable(fgbList); //updateProduceDivision(fgbList); } /** * 清除本地临时表数据 */ private void cleanLocalTable(){ this.mdmJdbcTemplate.update("delete from mdm_qinzhe_fgb"); } /** * 将从勤哲查询到的数据插入本地临时表 * @param fgbList */ private void insertToLocalTable(List fgbList) { String insSql = "insert into mdm_qinzhe_fgb (cph,ljh,ljmc,zz,zzgd,zggy,fg,cjjhy,jhy,source,update_time) values (?,?,?,?,?,?,?,?,?,'QZ',CURRENT_TIMESTAMP)"; QinzheZzFgb fgb; List args = new ArrayList<>(); int insertedAmount = 0;//已插入数据的数量 while(insertedAmount < fgbList.size()) { int added = 0; for(int i=insertedAmount;added sqlResult = sysClient.getParamValue(QINZHE_QUERY_KEY); if(sqlResult.isSuccess()){ querySql = sqlResult.getData(); } return querySql; } }