yangys
2025-09-18 a3048fa6fa72fa3cc5da2c43c59bd000e00c9599
blade-service/blade-qinzhesync/src/main/java/org/springblade/qinzhesync/service/QinzheSyncService.java
@@ -2,25 +2,19 @@
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.api.R;
import org.springblade.qinzhesync.entity.ProduceDivision;
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.cloud.commons.util.IdUtils;
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 org.springframework.transaction.annotation.Transactional;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * 勤哲主制分工表数据同步的服务
@@ -47,8 +41,9 @@
   /**
    * 批量插入数据数量
    */
   static final int BATCH_SIZE = 4;//5000;
   static final int BATCH_SIZE = 2000;//5000;
   @Transactional
   public void syncData(){
      /*
      Map mmdData = mdmJdbcTemplate.queryForMap("select count(*) n from mdm_machine");
@@ -57,32 +52,10 @@
      log.info("qingzhe:{}",qinzheData);
      */
      cleanLocalTable();
      cleanQinzheDataInDivision();
      //cleanQinzheDataInDivision();
      saveQinzheFgb();
   }
   /**
    * 图号是否存在于MDM分工表
    * @param drawingNo
    * @return 存在与否
    */
   public boolean drawingNoExists(String drawingNo){
      Long cnt = mdmJdbcTemplate.queryForObject("select count(*) from mdm_produce_division where drawing_no=?",Long.class,drawingNo);
      return cnt > 0;
   }
   /**
    * 清除mdm分工表内从勤哲导入的、且未经过修改的数据
    */
   void cleanQinzheDataInDivision(){
      //update_user =-1 此标志为勤哲同步数据且未修改过。
      mdmJdbcTemplate.update("delete from mdm_produce_division where create_user=-1 and update_user=-1");
   }
   /**
    * 将勤哲系统的数据先一次性导入mdm系统数据库临时表
    */
@@ -108,51 +81,9 @@
      insertToLocalTable(fgbList);
      updateProduceDivision(fgbList);
   }
   /**
    * //qingzhe  - mdm
    *    主管工艺 - 专业组长
    *    编制,校对,高师(目前高师总共6个人)也都没有.目前只匹配专业组长即可,编制校对在mdm中维护
    * 更新mdm主制分工表数据,
    */
   void updateProduceDivision(List<QinzheZzFgb> fgbList){
      String sql = "insert into mdm_produce_division (id,drawing_no,team_leader_id,create_user,update_user,create_time,update_time,status,is_deleted) values (?,?,?,-1,-1,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,1,0)";
      String ljh,zggy;
      for(QinzheZzFgb fgb : fgbList){
         if(drawingNoExists(fgb.getLjh())){
            //图号已存在,说明mdm系统中已经录入过了
            continue;
         }
         Long zuzhangId = getUserIdByName(fgb.getZggy());
   /*
         ProduceDivision pd = new ProduceDivision();
         pd.setDrawingNo(fgb.getLjh());
         pd.setTeamLeaderId(zuzhangId);
         pd.setUpdateUser(-1L);
         pd.setCreateUser(-1L);
   */
         //Long id = ;
         mdmJdbcTemplate.update(sql, new Object[]{idGen.nextId(),fgb.getLjh(),zuzhangId});
         //produceDivisionService.save(pd);
      }
      //updateProduceDivision(fgbList);
   }
   void insertProduceDivision(String drawingNo,Long zuzhangId){
      String sql = "insert into mdm_produce_division () values ";
   }
   Long getUserIdByName(String zuzhangName){
      String sql = "select id from blade_user where name=? and is_deleted=0 order by update_time limit 1";
      List<Long> idList = this.mdmJdbcTemplate.queryForList(sql,Long.class,zuzhangName);
      if(idList.isEmpty()){
         return null;
      }else{
         return idList.get(0);
      }
   }
   /**
    * 清除本地临时表数据
    */
@@ -165,7 +96,7 @@
    * @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)";
      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<Object[]> args = new ArrayList<>();
@@ -185,6 +116,10 @@
      }
   }
   /**
    * 根据配置获取勤哲查询sql(参数管理里可配置)
    * @return
    */
   String getQuerySql(){
      String querySql = DEFAULT_QUERY_SQL;
      R<String> sqlResult = sysClient.getParamValue(QINZHE_QUERY_KEY);