| | |
| | | package org.springblade.qinzhesync.service; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.system.feign.ISysClient; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Qualifier; |
| | | import org.springframework.dao.DataAccessException; |
| | | import org.springframework.jdbc.core.BatchPreparedStatementSetter; |
| | | import org.springframework.jdbc.core.JdbcTemplate; |
| | | import org.springframework.jdbc.core.ResultSetExtractor; |
| | | import org.springframework.jdbc.core.RowMapper; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.sql.PreparedStatement; |
| | | import java.sql.ResultSet; |
| | | import java.sql.SQLException; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | |
| | | @Autowired |
| | | private JdbcTemplate mdmJdbcTemplate; |
| | | |
| | | @Qualifier("qingzheJdbcTemplate") |
| | | @Qualifier("qinzheJdbcTemplate") |
| | | @Autowired |
| | | private JdbcTemplate qingzheJdbcTemplate; |
| | | private JdbcTemplate qinzheJdbcTemplate; |
| | | @Autowired |
| | | private ISysClient sysClient; |
| | | 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 = 4;//5000; |
| | | |
| | | public void syncData(){ |
| | | /* |
| | | Map mmdData = mdmJdbcTemplate.queryForMap("select count(*) n from mdm_machine"); |
| | | log.info("mdm:{}",mmdData); |
| | | Map qinzheData = qingzheJdbcTemplate.queryForMap("select count(*) n from mdm_machine"); |
| | | Map qinzheData = qinzheJdbcTemplate.queryForMap("select count(*) n from mdm_machine"); |
| | | log.info("qingzhe:{}",qinzheData); |
| | | */ |
| | | cleanLocalTable(); |
| | | saveQinzheFgbToLocalTable(); |
| | | |
| | | updateProduceDivision(); |
| | | } |
| | | |
| | | /** |
| | | * //qingzhe - mdm |
| | | * 主管工艺 - 专业组长 |
| | | * 编制,校对,高师(目前高师总共6个人)也都没有.目前只匹配专业组长即可,编制校对在mdm中维护 |
| | | * 更新mdm主制分工表数据, |
| | | */ |
| | | void updateProduceDivision(){ |
| | | |
| | | |
| | | mdmJdbcTemplate.update("delete from mdm_produce_division where create_user=-1 and update_user=-1"); |
| | | } |
| | | |
| | | /** |
| | | * 清除mdm分工表内所有从勤哲导入的数据 |
| | | */ |
| | | void cleanQinzheDataInDivision(){ |
| | | |
| | | } |
| | | /** |
| | | * 将勤哲系统的数据先一次性导入mdm系统数据库临时表 |
| | | */ |
| | | public void saveQinzheFgbToLocalTable(){ |
| | | |
| | | List<QinzheZzFgb> fgbList = this.qinzheJdbcTemplate.query(this.getQuerySql(),new RowMapper<QinzheZzFgb>(){ |
| | | @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); |
| | | } |
| | | |
| | | /** |
| | | * 清除本地临时表数据 |
| | | */ |
| | | private void cleanLocalTable(){ |
| | | this.mdmJdbcTemplate.update("delete from mdm_qinzhe_fgb"); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 将从勤哲查询到的数据插入本地临时表 |
| | | * @param fgbList |
| | | */ |
| | | private void insertToLocalTable(List<QinzheZzFgb> fgbList) { |
| | | String insSql = "insert into mdm_qinzhe_fgb (cph,ljh,ljmc,zz,zzgd,zggy,fg,cjjhy,jhy,update_time) values (?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP)"; |
| | | |
| | | QinzheZzFgb fgb; |
| | | List<Object[]> args = new ArrayList<>(); |
| | | int insertedAmount = 0;//已插入数据的数量 |
| | | while(insertedAmount < fgbList.size()) { |
| | | int added = 0; |
| | | for(int i=insertedAmount;added<BATCH_SIZE && i<fgbList.size();i++){ |
| | | fgb = fgbList.get(i); |
| | | args.add(new String[]{fgb.getCph(),fgb.getLjh(),fgb.getLjmc(),fgb.getZz(),fgb.getZzgd(),fgb.getZggy(),fgb.getFg(),fgb.getCjjhy(),fgb.getJhy()}); |
| | | |
| | | added ++; |
| | | } |
| | | |
| | | mdmJdbcTemplate.batchUpdate(insSql, args); |
| | | args.clear(); |
| | | insertedAmount += added; |
| | | } |
| | | } |
| | | |
| | | String getQuerySql(){ |
| | | String querySql = DEFAULT_QUERY_SQL; |
| | | R<String> sqlResult = sysClient.getParamValue(QINZHE_QUERY_KEY); |
| | | if(sqlResult.isSuccess()){ |
| | | querySql = sqlResult.getData(); |
| | | } |
| | | return querySql; |
| | | } |
| | | } |