瀏覽代碼

部分入库任务已完成

lifuquan 1 年之前
父節點
當前提交
eec40257b7

+ 76 - 0
doc/sql/high_quality_list_day建表.sql

@@ -0,0 +1,76 @@
+-- high_quality_list_day
+create table tsl_data.high_quality_list_day (
+    id bigserial NOT NULL,
+    month_id	varchar(18) NULL,
+    day_id	varchar(6) NULL,
+    contact_id	varchar(150) NULL,
+    busino_area_name	varchar(90) NULL,
+    busino_prov_name	varchar(90) NULL,
+    sheet_no	varchar(90) NULL,
+    busi_number	varchar(120) NULL,
+    cust_star_name	varchar(30) NULL,
+    sheet_type_name	varchar(150) NULL,
+    serv_type_name	varchar(900) NULL,
+    last_deal_content	varchar(4136) NULL,
+    accept_time	varchar(150) NULL,
+    archived_time	varchar(150) NULL,
+    data_type_name	varchar(300) NULL,
+    channel_name	varchar(150) NULL,
+    profes_dep	varchar(300) NULL,
+    big_type_name	varchar(300) NULL,
+    small_type_name	varchar(300) NULL,
+    is_dispatch_cloud	varchar(30) NULL,
+    accept_channel_name	varchar(300) NULL,
+    duty_reason_name	varchar(900) NULL,
+    duty_major_name	varchar(300) NULL,
+    is_online_complete	varchar(15) NULL,
+    is_call_complete	varchar(15) NULL,
+    is_cusser_complete	varchar(15) NULL,
+    is_distr_complete	varchar(15) NULL,
+    caller_number	varchar(90) NULL,
+    compl_area_name	varchar(60) NULL,
+    compl_prov_name	varchar(60) NULL,
+    submit_channel	varchar(300) NULL,
+    solved_result_desc	varchar(4136) NULL,
+    cust_level_name	varchar(300) NULL,
+    busi_type_name	varchar(300) NULL,
+    urgent_level_name	varchar(300) NULL,
+    important_type_name	varchar(300) NULL,
+    is_upgrade	varchar(15) NULL,
+    actual_total_len	varchar(60) NULL,
+    nature_actual_total_len	varchar(60) NULL,
+    cust_satis_desc	varchar(300) NULL,
+    auto_is_ok	varchar(60) NULL,
+    auto_cust_satis_desc	varchar(300) NULL,
+    nonauto_is_ok_name	varchar(15) NULL,
+    nonauto_cust_satis_desc	varchar(150) NULL,
+    prod_type_name	varchar(300) NULL,
+    proc_name	varchar(600) NULL,
+    merge_satis_desc	varchar(60) NULL,
+    serv_type_name_new	varchar(1500) NULL,
+    is_svip_keyman	varchar(6) NULL,
+    customer_label	varchar(120) NULL,
+    prov_name	varchar(180) NULL,
+    area_id	varchar(30) NULL,
+    area_name	varchar(150) NULL,
+    city_id	varchar(60) NULL,
+    city_name	varchar(300) NULL,
+    grid_id	varchar(60) NULL,
+    grid_name	varchar(300) NULL,
+    is_distri_area	varchar(15) NULL,
+    cp_satisfaction	varchar(60) NULL,
+    cp_is_ok	varchar(60) NULL,
+    cp_timely_contact	varchar(60) NULL,
+    cp_type	varchar(300) NULL,
+    novisit_tag	varchar(30) NULL,
+    serv_content	varchar(4136) NULL,
+    gis_area	varchar(60) NULL,
+    gis_area_name	varchar(60) NULL,
+    gis_city	varchar(60) NULL,
+    gis_city_name	varchar(60) NULL,
+    use_gis	varchar(3) NULL,
+    month_date	varchar(18) NULL,
+    day_date	varchar(6) NULL,
+    CONSTRAINT high_quality_list_day_pkey PRIMARY KEY (id)
+)
+

+ 12 - 0
pom.xml

@@ -42,6 +42,12 @@
             <artifactId>common-utils</artifactId>
             <version>1.0.0-SNAPSHOT</version>
         </dependency>
+        <!-- commons-csv -->
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-csv</artifactId>
+            <version>1.10.0</version>
+        </dependency>
         <!-- cache-starter -->
         <dependency>
             <groupId>com.nokia</groupId>
@@ -59,6 +65,12 @@
             <groupId>org.postgresql</groupId>
             <artifactId>postgresql</artifactId>
         </dependency>
+        <!-- mybatis-spring-boot-starter -->
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+            <version>2.3.0</version>
+        </dependency>
         <!-- spring-boot-starter-jdbc -->
         <dependency>
             <groupId>org.springframework.boot</groupId>

+ 10 - 0
src/main/java/com/nokia/tsl_data/config/PropertiesAutoConfig.java

@@ -0,0 +1,10 @@
+package com.nokia.tsl_data.config;
+
+import com.nokia.tsl_data.properties.DataWarehouseProperties;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@EnableConfigurationProperties(DataWarehouseProperties.class)
+public class PropertiesAutoConfig {
+}

+ 1 - 0
src/main/java/com/nokia/tsl_data/config/WorkFlowJdbcTemplateConfig.java

@@ -18,6 +18,7 @@ public class WorkFlowJdbcTemplateConfig {
     @Bean("workFlowJdbcTemplate")
     public JdbcTemplate workFlowJdbcTemplate() {
         HikariConfig config = new HikariConfig();
+        config.setDriverClassName("org.postgresql.Driver");
         config.setJdbcUrl("jdbc:postgresql://192.168.70.136:9999/flow_hb?characterEncoding=utf8");
         config.setUsername("flow_web");
         config.setPassword("Richr00t");

+ 13 - 0
src/main/java/com/nokia/tsl_data/dao/HighQualityListDayMapper.java

@@ -0,0 +1,13 @@
+package com.nokia.tsl_data.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+@Mapper
+public interface HighQualityListDayMapper {
+
+    @Select("select sheet_no from tsl_data.high_quality_list_day")
+    List<String> findOrderOf(String day);
+}

+ 24 - 0
src/main/java/com/nokia/tsl_data/dao/SysDataDictionaryRepository.java

@@ -0,0 +1,24 @@
+package com.nokia.tsl_data.dao;
+
+import com.nokia.tsl_data.entity.SysDataDictionary;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+@Repository
+public interface SysDataDictionaryRepository extends JpaRepository<SysDataDictionary, Long> {
+
+    List<SysDataDictionary> findByTypeName(String typeName);
+
+    default Set<String> findAllServTypeNames() {
+        Set<String> result = new HashSet<>();
+        List<SysDataDictionary> dictionaries = findByTypeName("serv_type_name");
+        for (SysDataDictionary dictionary : dictionaries) {
+            result.add(dictionary.getName());
+        }
+        return result;
+    }
+}

+ 2 - 2
src/main/java/com/nokia/tsl_data/dao/SysDataDictionaryDao.java → src/main/java/com/nokia/tsl_data/dao/TargetTsRatioRepository.java

@@ -1,9 +1,9 @@
 package com.nokia.tsl_data.dao;
 
-import com.nokia.tsl_data.entity.SysDataDictionary;
+import com.nokia.tsl_data.entity.TargetTsRatio;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 @Repository
-public interface SysDataDictionaryDao extends JpaRepository<SysDataDictionary, Long> {
+public interface TargetTsRatioRepository extends JpaRepository<TargetTsRatio, Long> {
 }

+ 0 - 19
src/main/java/com/nokia/tsl_data/dao/TaskRecordDao.java

@@ -1,19 +0,0 @@
-package com.nokia.tsl_data.dao;
-
-import com.nokia.tsl_data.entity.TaskRecord;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-
-@Repository
-public interface TaskRecordDao extends JpaRepository<TaskRecord, Long> {
-
-    TaskRecord findFirstByTaskNameAndEndStatusOrderByStartTimeDesc(String taskName, String endStatus);
-
-    default TaskRecord findLastSuccessUpdateWorkFlowBasicDataTask() {
-        return findFirstByTaskNameAndEndStatusOrderByStartTimeDesc("更新工作流数据", "成功");
-    }
-
-    List<TaskRecord> findTop2ByOrderByStartTimeDesc();
-}

+ 21 - 0
src/main/java/com/nokia/tsl_data/dao/TaskRecordRepository.java

@@ -0,0 +1,21 @@
+package com.nokia.tsl_data.dao;
+
+import com.nokia.tsl_data.entity.TaskRecord;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.time.Instant;
+import java.util.List;
+
+@Repository
+public interface TaskRecordRepository extends JpaRepository<TaskRecord, Long> {
+
+    TaskRecord findFirstByTaskNameAndEndStatusOrderByStartTimeDesc(String taskName, Integer endStatus);
+
+    default Instant findLastSuccessUpdateWorkFlowBasicDataTaskEndInstant() {
+        TaskRecord taskRecord = findFirstByTaskNameAndEndStatusOrderByStartTimeDesc("更新工作流数据", 0);
+        return taskRecord.getTaskInfo().getInstant("end");
+    }
+
+    List<TaskRecord> findTop2ByOrderByStartTimeDesc();
+}

+ 29 - 0
src/main/java/com/nokia/tsl_data/dao/TslDataDao.java

@@ -73,6 +73,18 @@ public class TslDataDao {
         jdbcTemplate.execute("drop table tsl_data." + tempTableName);
     }
 
+    public List<String> selectTempTableNames() {
+        String sql = "select tablename  from pg_catalog.pg_tables where schemaname = 'tsl_data' and tablename like '%_temp_%'";
+        return jdbcTemplate.queryForList(sql, String.class);
+    }
+
+    /**
+     * 清空表
+     */
+    public void truncate(String tableName) {
+        jdbcTemplate.execute("truncate table tsl_data." + tableName);
+    }
+
     /**
      * 从临时表中查找新增内容并插入work_flow_basic_data表
      */
@@ -97,4 +109,21 @@ public class TslDataDao {
                 "where b.kfsn = t.kfsn and (b.city_id != t.city_id or b.region_id != t.region_id)";
         return jdbcTemplate.update(String.format(sqlFormat, tempTableName));
     }
+
+    /**
+     * high_quality_list_day 高质量明细数据入库
+     */
+    public int[] batchInsertHighQualityListDay(List<Object[]> data) {
+        String sql = "INSERT INTO tsl_data.high_quality_list_day\n" +
+                "(month_id, day_id, contact_id, busino_area_name, busino_prov_name, sheet_no, busi_number, cust_star_name, sheet_type_name, serv_type_name, last_deal_content," +
+                " accept_time, archived_time, data_type_name, channel_name, profes_dep, big_type_name, small_type_name, is_dispatch_cloud, accept_channel_name, duty_reason_name," +
+                " duty_major_name, is_online_complete, is_call_complete, is_cusser_complete, is_distr_complete, caller_number, compl_area_name, compl_prov_name, submit_channel," +
+                " solved_result_desc, cust_level_name, busi_type_name, urgent_level_name, important_type_name, is_upgrade, actual_total_len, nature_actual_total_len," +
+                " cust_satis_desc, auto_is_ok, auto_cust_satis_desc, nonauto_is_ok_name, nonauto_cust_satis_desc, prod_type_name, proc_name, merge_satis_desc, serv_type_name_new," +
+                " is_svip_keyman, customer_label, prov_name, area_id, area_name, city_id, city_name, grid_id, grid_name, is_distri_area, cp_satisfaction, cp_is_ok," +
+                " cp_timely_contact, cp_type, novisit_tag, serv_content, gis_area, gis_area_name, gis_city, gis_city_name, use_gis, month_date, day_date)\n" +
+                "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?," +
+                " ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
+        return jdbcTemplate.batchUpdate(sql, data);
+    }
 }

+ 1 - 1
src/main/java/com/nokia/tsl_data/dao/WorkFlowBasicDataDao.java → src/main/java/com/nokia/tsl_data/dao/WorkFlowBasicDataRepository.java

@@ -5,5 +5,5 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 @Repository
-public interface WorkFlowBasicDataDao extends JpaRepository<WorkFlowBasicData, Long> {
+public interface WorkFlowBasicDataRepository extends JpaRepository<WorkFlowBasicData, Long> {
 }

+ 7 - 7
src/main/java/com/nokia/tsl_data/dao/WorkFlowDao.java

@@ -9,10 +9,9 @@ import org.springframework.stereotype.Component;
 
 import java.sql.ResultSet;
 import java.sql.SQLException;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
 import java.time.Instant;
-import java.util.Date;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 /**
@@ -23,6 +22,7 @@ public class WorkFlowDao {
 
     private final JdbcTemplate jdbcTemplate;
 
+
     public WorkFlowDao(@Qualifier("workFlowJdbcTemplate") JdbcTemplate jdbcTemplate) {
         this.jdbcTemplate = jdbcTemplate;
     }
@@ -40,17 +40,17 @@ public class WorkFlowDao {
     }
 
     // 获取update_time在start之后的全部工单信息
-    public List<WorkFlowBasicData> findWorkFlowBasicDataByUpdateTime(Date start) {
-        return findWorkFlowBasicDataByUpdateTime(start, new Date());
+    public List<WorkFlowBasicData> findWorkFlowBasicDataByUpdateTime(Instant start) {
+        return findWorkFlowBasicDataByUpdateTime(start, Instant.now());
     }
 
     // 获取update_time在两个范围之间的全部工单信息
-    public List<WorkFlowBasicData> findWorkFlowBasicDataByUpdateTime(Date start, Date end) {
+    public List<WorkFlowBasicData> findWorkFlowBasicDataByUpdateTime(Instant start, Instant end) {
         String sqlFormat = "select create_time as work_flow_create_time, update_time as work_flow_update_time, \n" +
                 "city as city_id, form_basic_data->>'yh_region' as region_id, form_basic_data->>'kd_kfsn' as kfsn \n" +
                 "from flow_form_basic where update_time >= to_timestamp('%s', 'yyyy-mm-dd hh24:mi:ss') \n" +
                 "and update_time <= to_timestamp('%s', 'yyyy-mm-dd hh24:mi:ss')";
-        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.of("Asia/Shanghai"));
         return jdbcTemplate.query(String.format(sqlFormat, dateFormat.format(start), dateFormat.format(end)), (rs, rowNum) -> {
             WorkFlowBasicData basicData = new WorkFlowBasicData();
             basicData.setWorkFlowCreateTime(Instant.ofEpochMilli(rs.getTimestamp("work_flow_create_time").getTime()));

+ 41 - 0
src/main/java/com/nokia/tsl_data/entity/TargetTsRatio.java

@@ -0,0 +1,41 @@
+package com.nokia.tsl_data.entity;
+
+import lombok.Data;
+import org.springframework.data.annotation.CreatedDate;
+import org.springframework.data.annotation.LastModifiedDate;
+import org.springframework.data.jpa.domain.support.AuditingEntityListener;
+
+import javax.persistence.*;
+import java.time.Instant;
+
+/**
+ * 目标率值
+ */
+@Data
+@Entity
+@EntityListeners(AuditingEntityListener.class)
+@Table(name = "target_ts_ratio", schema = "tsl_data")
+public class TargetTsRatio {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "month_id", columnDefinition = "varchar(8)", nullable = false)
+    private String monthId;
+
+    @Column(name = "city_name", columnDefinition = "varchar(50)", nullable = false)
+    private String cityName;
+
+    @Column(name = "management_target_ratio", nullable = false)
+    private Double managementTargetRatio;
+
+    @Column(name = "customer_target_ratio", nullable = false)
+    private Double customerTargetRatio;
+
+    @CreatedDate
+    private Instant createDate;
+
+    @LastModifiedDate
+    private Instant lastUpdateDate;
+}

+ 2 - 2
src/main/java/com/nokia/tsl_data/entity/TaskRecord.java

@@ -32,9 +32,9 @@ public class TaskRecord {
     @Column
     private Instant endTime;
 
-    // 任务结束状态 成功/失败
+    // 任务结束状态 非0即为失败
     @Column
-    private String endStatus;
+    private Integer endStatus;
 
     // 任务耗时
     @Column

+ 16 - 0
src/main/java/com/nokia/tsl_data/properties/DataWarehouseProperties.java

@@ -0,0 +1,16 @@
+package com.nokia.tsl_data.properties;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+@Data
+@ConfigurationProperties(prefix = "tsl.source")
+public class DataWarehouseProperties {
+
+    // HighQualityListDay 文件存储路径
+    private String dirOfHighQualityListDay = "/data/nenglishangdian/high_quality_list_day";
+    // HighQualityListDay 文件前缀
+    private String prefixOfHighQualityListDay = "HE_D_HIGH_QUALITY_LIST_DAY_1114200095151828992_";
+    // HighQualityListDay 字段数量
+    private Integer filedNumOfHighQualityListDay = 70;
+}

+ 41 - 4
src/main/java/com/nokia/tsl_data/service/CronTaskService.java

@@ -1,7 +1,16 @@
 package com.nokia.tsl_data.service;
 
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.nokia.common.basic.DateUtil;
+import com.nokia.tsl_data.dao.TaskRecordRepository;
+import com.nokia.tsl_data.dao.TslDataDao;
+import com.nokia.tsl_data.entity.TaskRecord;
 import org.springframework.stereotype.Service;
 
+import java.time.Instant;
+import java.util.List;
+
 /**
  * 定时任务
  */
@@ -9,9 +18,13 @@ import org.springframework.stereotype.Service;
 public class CronTaskService {
 
     private final WorkFlowService workFlowService;
+    private final TslDataDao tslDataDao;
+    private final TaskRecordRepository taskRecordRepository;
 
-    public CronTaskService(WorkFlowService workFlowService) {
+    public CronTaskService(WorkFlowService workFlowService, TslDataDao tslDataDao, TaskRecordRepository taskRecordRepository) {
         this.workFlowService = workFlowService;
+        this.tslDataDao = tslDataDao;
+        this.taskRecordRepository = taskRecordRepository;
     }
 
     /**
@@ -19,8 +32,10 @@ public class CronTaskService {
      * 调度周期每小时
      */
     public void updateWorkFlowBasicDataCronTask() {
-        // TODO 每小时执行一次,从工单系统获取数据并更新
-
+        Instant start = taskRecordRepository.findLastSuccessUpdateWorkFlowBasicDataTaskEndInstant();
+        Instant end = Instant.now();
+        TaskRecord taskRecord = workFlowService.updateWorkFlowBasicData(start, end);
+        taskRecordRepository.save(taskRecord);
     }
 
     /**
@@ -28,6 +43,28 @@ public class CronTaskService {
      * 调度周期,每天
      */
     public void tempTableCleanCronTask() {
-        // TODO 定时删除过期的临时表
+        TaskRecord taskRecord = new TaskRecord();
+        taskRecord.setTaskName("临时表清理");
+        taskRecord.setStartTime(Instant.now());
+        List<String> tempTableNames = tslDataDao.selectTempTableNames();
+        long zeroClockToday = DateUtil.zeroClockTodayLong();
+        JSONObject jsonObject = new JSONObject();
+        JSONArray jsonArray = new JSONArray();
+        taskRecord.setTaskInfo(jsonObject);
+        for (String tempTableName : tempTableNames) {
+            // 保留当天的临时表不删除
+            long createTimestamp = Long.parseLong(tempTableName.substring(tempTableName.indexOf("_temp_") + 6));
+            if (createTimestamp < zeroClockToday) {
+                tslDataDao.dropTempTable(tempTableName);
+                jsonArray.add(tempTableName);
+            }
+        }
+        if (!jsonArray.isEmpty()) {
+            jsonObject.put("tempTableNames", jsonArray);
+        }
+        taskRecord.setEndStatus(0);
+        taskRecord.setEndTime(Instant.now());
+        taskRecord.setTimeCost(taskRecord.getEndTime().toEpochMilli() - taskRecord.getStartTime().toEpochMilli());
+        taskRecordRepository.save(taskRecord);
     }
 }

+ 73 - 0
src/main/java/com/nokia/tsl_data/service/DataWarehouseService.java

@@ -0,0 +1,73 @@
+package com.nokia.tsl_data.service;
+
+import com.nokia.tsl_data.dao.SysDataDictionaryRepository;
+import com.nokia.tsl_data.dao.TslDataDao;
+import com.nokia.tsl_data.properties.DataWarehouseProperties;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.csv.CSVFormat;
+import org.apache.commons.csv.CSVParser;
+import org.apache.commons.csv.CSVRecord;
+import org.springframework.stereotype.Service;
+
+import java.io.*;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+@Slf4j
+@Service
+public class DataWarehouseService {
+
+    private final TslDataDao tslDataDao;
+    private final SysDataDictionaryRepository sysDataDictionaryRepository;
+    private final DataWarehouseProperties dataWarehouseProperties;
+
+    public DataWarehouseService(TslDataDao tslDataDao, SysDataDictionaryRepository sysDataDictionaryRepository, DataWarehouseProperties dataWarehouseProperties) {
+        this.tslDataDao = tslDataDao;
+        this.sysDataDictionaryRepository = sysDataDictionaryRepository;
+        this.dataWarehouseProperties = dataWarehouseProperties;
+    }
+
+    public void warehouseHighQualityListDay(String day) {
+        String fileName = dataWarehouseProperties.getPrefixOfHighQualityListDay() + day + ".csv";
+        Path path = Paths.get(dataWarehouseProperties.getDirOfHighQualityListDay(), fileName);
+        warehouseHighQualityListDay(path.toFile());
+        log.info("河北高质量2日明细数据入库成功: {}...", day);
+    }
+
+    /**
+     * 入库 河北高质量2日明细数据
+     */
+    public void warehouseHighQualityListDay(File file) {
+        try (Reader reader = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8)) {
+            // SOH作为分割符
+            char delimiter = 1;
+            CSVParser parser = CSVFormat.DEFAULT.builder()
+                    .setRecordSeparator("\n")
+                    .setQuote(null)
+                    .setDelimiter(delimiter)
+                    .setSkipHeaderRecord(false)
+                    .build().parse(reader);
+            List<CSVRecord> records = parser.getRecords();
+            List<Object[]> list = new ArrayList<>();
+            Set<String> allServTypeNames = sysDataDictionaryRepository.findAllServTypeNames();
+            for (CSVRecord record : records) {
+                // 按照serv_type_name进行筛选
+                if (allServTypeNames.contains(record.get(9))) {
+                    Object[] ps = new Object[dataWarehouseProperties.getFiledNumOfHighQualityListDay().intValue()];
+                    list.add(ps);
+                    for (int i = 0; i < ps.length; i++) {
+                        ps[i] = record.get(i);
+                    }
+                }
+            }
+            tslDataDao.batchInsertHighQualityListDay(list);
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new RuntimeException("河北高质量2日明细数据入库失败..." + e.getMessage());
+        }
+    }
+}

+ 6 - 7
src/main/java/com/nokia/tsl_data/service/WorkFlowService.java

@@ -8,11 +8,10 @@ import com.nokia.tsl_data.entity.WorkFlowBasicData;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
 import java.time.Instant;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -25,7 +24,7 @@ public class WorkFlowService {
     private final WorkFlowDao workFlowDao;
     private final TslDataDao tslDataDao;
 
-    private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+    private final DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.of("Asia/Shanghai"));
 
     public WorkFlowService(WorkFlowDao workFlowDao, TslDataDao tslDataDao) {
         this.workFlowDao = workFlowDao;
@@ -35,7 +34,7 @@ public class WorkFlowService {
     /**
      * 任务名称:更新工作流数据
      */
-    public TaskRecord updateWorkFlowBasicData(Date start, Date end) {
+    public TaskRecord updateWorkFlowBasicData(Instant start, Instant end) {
         TaskRecord record = new TaskRecord();
         record.setTaskName("更新工作流数据");
         JSONObject jsonObject = new JSONObject();
@@ -51,11 +50,11 @@ public class WorkFlowService {
             int insertCount = tslDataDao.insertWorkFlowBasicDataFromTempTable(tempTableName);
             int updateCount = tslDataDao.updateWorkFlowBasicDataFromTempTable(tempTableName);
             log.info("已完成工作流数据更新, 插入 {} 项, 更新 {} 项, 起: {} 止: {}", insertCount, updateCount, start, end);
-            record.setEndStatus("成功");
+            record.setEndStatus(0);
             record.setEndTime(Instant.ofEpochMilli(System.currentTimeMillis()));
         } catch (Exception e) {
             e.printStackTrace();
-            record.setEndStatus("失败");
+            record.setEndStatus(-1);
             record.setEndTime(Instant.ofEpochMilli(System.currentTimeMillis()));
         } finally {
             record.setTimeCost(ChronoUnit.MILLIS.between(record.getStartTime(), record.getEndTime()));

+ 8 - 1
src/main/resources/application.yml

@@ -8,6 +8,9 @@ Spring:
     hibernate:
       ddl-auto: update
 
+mybatis:
+  mapper-locations: classpath:mapper/**.xml
+
 logging:
   level:
     org:
@@ -27,4 +30,8 @@ spring:
     driver-class-name: org.postgresql.Driver
     url: jdbc:postgresql://192.168.10.9:5432/sqmmt
     username: postgres
-    password: Richr00t#
+    password: Richr00t#
+
+tsl:
+  source:
+    dirOfHighQualityListDay: D:/src/high_quality_list_day/

+ 11 - 1
src/test/java/com/nokia/tsl_data/MainTest.java

@@ -2,10 +2,20 @@ package com.nokia.tsl_data;
 
 import org.junit.jupiter.api.Test;
 
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.TemporalAccessor;
+
 public class MainTest {
 
     @Test
     void test() {
-        System.out.println("TS202310071127443617".length());
+        // DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.of("Asia/Shanghai"));
+        Instant now = Instant.now();
+        System.out.println(formatter.format(now));
+        TemporalAccessor parse = formatter.parse("2023-10-13 14:47:37");
+        System.out.println(Instant.from(parse));
     }
 }

+ 32 - 10
src/test/java/com/nokia/tsl_data/TslDataApplicationTest.java

@@ -1,8 +1,13 @@
 package com.nokia.tsl_data;
 
-import com.nokia.tsl_data.dao.TaskRecordDao;
-import com.nokia.tsl_data.entity.TaskRecord;
-import com.nokia.tsl_data.service.WorkFlowService;
+import com.nokia.common.io.TextUtil;
+import com.nokia.tsl_data.dao.HighQualityListDayMapper;
+import com.nokia.tsl_data.dao.SysDataDictionaryRepository;
+import com.nokia.tsl_data.dao.TaskRecordRepository;
+import com.nokia.tsl_data.dao.TslDataDao;
+import com.nokia.tsl_data.entity.SysDataDictionary;
+import com.nokia.tsl_data.service.CronTaskService;
+import com.nokia.tsl_data.service.DataWarehouseService;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -13,20 +18,37 @@ import java.util.List;
 class TslDataApplicationTest {
 
     @Autowired
-    private WorkFlowService workFlowService;
+    private HighQualityListDayMapper highQualityListDayMapper;
 
     @Autowired
-    private TaskRecordDao taskRecordDao;
+    private SysDataDictionaryRepository sysDataDictionaryRepository;
+
+    @Autowired
+    private TslDataDao tslDataDao;
+
+    @Autowired
+    private DataWarehouseService dataWarehouseService;
+
+    @Autowired
+    private TaskRecordRepository taskRecordRepository;
+
+    @Autowired
+    private CronTaskService cronTaskService;
 
     @Test
     void test() {
-        TaskRecord lastSuccessUpdateWorkFlowBasicDataTask = taskRecordDao.findLastSuccessUpdateWorkFlowBasicDataTask();
-        System.out.println(lastSuccessUpdateWorkFlowBasicDataTask);
+        String path = "D:\\src\\不满移网网络服务类型(10+15).csv";
+        List<String> strings = TextUtil.readLines(path, "gbk");
+        for (String name : strings) {
+            SysDataDictionary sysDataDictionary = new SysDataDictionary();
+            sysDataDictionary.setName(name);
+            sysDataDictionary.setTypeName("serv_type_name");
+            sysDataDictionaryRepository.save(sysDataDictionary);
+        }
     }
 
     @Test
-    void test1() {
-        List<TaskRecord> top2ByOrderByStartTimeDesc = taskRecordDao.findTop2ByOrderByStartTimeDesc();
-        System.out.println(top2ByOrderByStartTimeDesc);
+    void test2() {
+        cronTaskService.tempTableCleanCronTask();
     }
 }