Browse Source

Merge remote-tracking branch 'origin/master'

main
sjh 1 year ago
parent
commit
8fa44e01bb
  1. 10
      pom.xml
  2. 2
      src/main/java/com/biutag/supervision/SupervisionApplication.java
  3. 28
      src/main/java/com/biutag/supervision/controller/datav/DataGobalController.java
  4. 1
      src/main/java/com/biutag/supervision/controller/datav/DataPetitionComplaintViewController.java
  5. 44
      src/main/java/com/biutag/supervision/controller/datav/DataScreenController.java
  6. 2
      src/main/java/com/biutag/supervision/controller/datav/SupervisionNotifyController.java
  7. 22
      src/main/java/com/biutag/supervision/mapper/DataMigrationMapper.java
  8. 21
      src/main/java/com/biutag/supervision/mapper/DataPoliceMeetingMysqlMapper.java
  9. 37
      src/main/java/com/biutag/supervision/mapper/DataPoliceMeetingSqlServerMapper.java
  10. 2
      src/main/java/com/biutag/supervision/mapper/NegativeMapper.java
  11. 14
      src/main/java/com/biutag/supervision/mapper/NegativeProblemRelationMapper.java
  12. 57
      src/main/java/com/biutag/supervision/pojo/entity/DataMigration.java
  13. 103
      src/main/java/com/biutag/supervision/pojo/entity/DataPoliceMeeting.java
  14. 103
      src/main/java/com/biutag/supervision/pojo/entity/DataPoliceMeetingV.java
  15. 9
      src/main/java/com/biutag/supervision/service/DataGobalService.java
  16. 160
      src/main/java/com/biutag/supervision/service/DataMigrationServiceImpl.java
  17. 5
      src/main/resources/application-dev.yml
  18. 5
      src/main/resources/application-prod.yml

10
pom.xml

@ -35,6 +35,13 @@
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<!-- SQL Server JDBC驱动 -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>9.4.0.jre11</version>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId> <artifactId>spring-boot-starter-validation</artifactId>
@ -138,7 +145,8 @@
<artifactId>gbase-jdbc</artifactId> <artifactId>gbase-jdbc</artifactId>
<scope>system</scope> <scope>system</scope>
<version>8.3.81.53-build55.2.1-bin</version> <version>8.3.81.53-build55.2.1-bin</version>
<systemPath>${project.basedir}/src/main/resources/lib/gbase-connector-java-8.3.81.53-build52.8-bin.jar</systemPath> <systemPath>${project.basedir}/src/main/resources/lib/gbase-connector-java-8.3.81.53-build52.8-bin.jar
</systemPath>
</dependency> </dependency>
<dependency> <dependency>

2
src/main/java/com/biutag/supervision/SupervisionApplication.java

@ -2,12 +2,14 @@ package com.biutag.supervision;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
@EnableAsync @EnableAsync
@EnableScheduling @EnableScheduling
@SpringBootApplication @SpringBootApplication
@EnableAspectJAutoProxy
public class SupervisionApplication { public class SupervisionApplication {
public static void main(String[] args) { public static void main(String[] args) {

28
src/main/java/com/biutag/supervision/controller/datav/DataGobalController.java

@ -23,7 +23,6 @@ import java.util.stream.Collectors;
/** /**
* 数据大屏首页 * 数据大屏首页
*
* @author: sh * @author: sh
* @date: 2024/11/7 * @date: 2024/11/7
*/ */
@ -38,7 +37,6 @@ public class DataGobalController {
/** /**
* 获取数据大屏总数概览 * 获取数据大屏总数概览
*
* @param beginTime * @param beginTime
* @param endTime * @param endTime
* @return * @return
@ -86,21 +84,17 @@ public class DataGobalController {
updateProList(policeProList, gobalMapVoList, GobalMapIconVo::setPolicePro); updateProList(policeProList, gobalMapVoList, GobalMapIconVo::setPolicePro);
updateProList(reviewProList, gobalMapVoList, GobalMapIconVo::setReviewPro); updateProList(reviewProList, gobalMapVoList, GobalMapIconVo::setReviewPro);
}else { }else {
gobalTempMapVoList.add(new GobalMapIconVo("芙蓉分局", 1,11,11,11,11,11));
gobalTempMapVoList.add(new GobalMapIconVo("芙蓉分局", 11,11,11,11,11,11)); gobalTempMapVoList.add(new GobalMapIconVo("天心分局", 2,22,22,22,22,22));
gobalTempMapVoList.add(new GobalMapIconVo("天心分局", 11,11,11,11,11,11)); gobalTempMapVoList.add(new GobalMapIconVo("岳麓分局", 3,33,33,33,33,33));
gobalTempMapVoList.add(new GobalMapIconVo("岳麓分局", 11,11,11,11,11,11)); gobalTempMapVoList.add(new GobalMapIconVo("开福分局", 4,44,44,44,44,44));
gobalTempMapVoList.add(new GobalMapIconVo("开福分局", 11,11,11,11,11,11)); gobalTempMapVoList.add(new GobalMapIconVo("雨花分局", 5,55,55,55,55,55));
gobalTempMapVoList.add(new GobalMapIconVo("雨花分局", 11,11,11,11,11,11)); gobalTempMapVoList.add(new GobalMapIconVo("长沙县局", 6,66,66,66,66,66));
gobalTempMapVoList.add(new GobalMapIconVo("长沙县局", 11,11,11,11,11,11)); gobalTempMapVoList.add(new GobalMapIconVo("望城分局", 7,77,77,77,77,77));
gobalTempMapVoList.add(new GobalMapIconVo("望城分局", 11,11,11,11,11,11)); gobalTempMapVoList.add(new GobalMapIconVo("宁乡市局", 8,88,88,88,88,88));
gobalTempMapVoList.add(new GobalMapIconVo("宁乡市局", 11,11,11,11,11,11)); gobalTempMapVoList.add(new GobalMapIconVo("浏阳市局", 9,99,99,99,99,99));
gobalTempMapVoList.add(new GobalMapIconVo("浏阳市局", 11,11,11,11,11,11));
gobalTempMapVoList.add(new GobalMapIconVo("高新分局", 11,11,11,11,11,11));
} }
JSONObject data = new JSONObject().fluentPut("overview", overview) JSONObject data = new JSONObject().fluentPut("overview", overview)
.fluentPut("fxsjlist", fxsjlist) .fluentPut("fxsjlist", fxsjlist)
.fluentPut("jsdwlist", jsdwlist) .fluentPut("jsdwlist", jsdwlist)
@ -125,15 +119,13 @@ public class DataGobalController {
/** /**
* 数据大屏问题趋势统计按月 * 数据大屏问题趋势统计按月展示
*
* @param year * @param year
* @return * @return
*/ */
@Operation(summary = "数据大屏问题趋势统计(按月)") @Operation(summary = "数据大屏问题趋势统计(按月)")
@GetMapping("/getGobalRecentlyTrendByMonth") @GetMapping("/getGobalRecentlyTrendByMonth")
public Result<JSONObject> getGobalRecentlyTrendByMonth(@RequestParam Integer year) { public Result<JSONObject> getGobalRecentlyTrendByMonth(@RequestParam Integer year) {
List<RecentTrendByMonthVo> recentTrendVoList = dataGobalService.getGobalRecentlyTrendByMonth(String.valueOf(year)); List<RecentTrendByMonthVo> recentTrendVoList = dataGobalService.getGobalRecentlyTrendByMonth(String.valueOf(year));
ArrayList<String> monthList = new ArrayList<>(); ArrayList<String> monthList = new ArrayList<>();
ArrayList<String> totalList = new ArrayList<>(); ArrayList<String> totalList = new ArrayList<>();

1
src/main/java/com/biutag/supervision/controller/datav/DataPetitionComplaintViewController.java

@ -32,6 +32,7 @@ import java.util.stream.Collectors;
/** /**
* @author: sh * @author: sh
* @date: 2024/10/31 * @date: 2024/10/31
* @description: 信访投诉大屏相关
*/ */
@Tag(name = "信访数据大屏选相关") @Tag(name = "信访数据大屏选相关")
@RequestMapping("datav/mailVisits") @RequestMapping("datav/mailVisits")

44
src/main/java/com/biutag/supervision/controller/datav/DataScreenController.java

@ -1,44 +0,0 @@
package com.biutag.supervision.controller.datav;
import com.biutag.supervision.pojo.Result;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
* @author: sh
* @date: 20224/11/5
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("datav/dataScreen")
public class DataScreenController {
// private final DataScreenService dataScreenService;
/**
* todo 获取地图数据
*/
@GetMapping("/mapData")
public Result<List<Map<String, Object>>> mapData(@RequestParam Map<String, Object> params) {
if (params.isEmpty()) {
// return Result.success(dataScreenService.mapData());
} else {
String deptId = params.get("id").toString();
// return Result.success(dataScreenService.mapCountyData(deptId));
}
return null;
}
}

2
src/main/java/com/biutag/supervision/controller/datav/SupervisionNotifyController.java

@ -21,7 +21,7 @@ import java.util.List;
/** /**
* @Auther: sh * @Auther: sh
* @Date: 2024/11/7 10:30 * @Date: 2024/11/7 10:30
* @Description: 现场督察相关 * @Description: 现场督察大屏相关
*/ */
@Slf4j @Slf4j
@RestController @RestController

22
src/main/java/com/biutag/supervision/mapper/DataMigrationMapper.java

@ -0,0 +1,22 @@
package com.biutag.supervision.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.biutag.supervision.pojo.entity.DataMigration;
import org.apache.ibatis.annotations.Select;
/**
* @author 舒云
* @description 针对表data_migration的数据库操作Mapper
* @createDate 2024-11-13 11:21:19
* @Entity generator.domain.DataMigration
*/
public interface DataMigrationMapper extends BaseMapper<DataMigration> {
@Select("SELECT * FROM data_migration WHERE end_time = (SELECT MAX(end_time) FROM data_migration)")
DataMigration selectLastMigrationTime();
}

21
src/main/java/com/biutag/supervision/mapper/DataPoliceMeetingMysqlMapper.java

@ -0,0 +1,21 @@
package com.biutag.supervision.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.biutag.supervision.pojo.entity.DataPoliceMeeting;
import org.apache.ibatis.annotations.Mapper;
/**
* @author 舒云
* @description 针对表data_police_meeting的数据库操作Mapper
* @createDate 2024-11-13 09:43:04
*/
@DS("master")
@Mapper
public interface DataPoliceMeetingMysqlMapper extends BaseMapper<DataPoliceMeeting> {
}

37
src/main/java/com/biutag/supervision/mapper/DataPoliceMeetingSqlServerMapper.java

@ -0,0 +1,37 @@
package com.biutag.supervision.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.biutag.supervision.pojo.entity.DataPoliceMeetingV;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.time.LocalDateTime;
import java.util.List;
/**
* @author 舒云
* @createDate 2024-11-13 09:43:04
*/
@DS("test1")
@Mapper
public interface DataPoliceMeetingSqlServerMapper extends BaseMapper<DataPoliceMeetingV> {
@Select("select max(create_time) from data_police_meeting")
LocalDateTime selectMaxCreateTime();
@Select("select * from data_police_meeting where create_time > #{lastSelectTime} and create_time <= #{now}")
List<DataPoliceMeetingV> selectAimList(LocalDateTime lastSelectTime, LocalDateTime now);
@Select("SELECT * FROM SampleResultPoolView " +
"WHERE create_time > #{lastSelectTime} AND create_time <= #{now} " +
"ORDER BY create_time " +
"OFFSET #{offset} ROWS FETCH NEXT #{pageSize} ROWS ONLY")
List<DataPoliceMeetingV> selectAimListWithPagination(LocalDateTime lastSelectTime, LocalDateTime now, int offset, int pageSize);
}

2
src/main/java/com/biutag/supervision/mapper/NegativeMapper.java

@ -36,7 +36,7 @@ public interface NegativeMapper extends BaseMapper<Negative> {
List<EchartsVo> selectBusinessRate(Date beginTime,Date endTime); List<EchartsVo> selectBusinessRate(Date beginTime,Date endTime);
@Select("SELECT DATE_FORMAT(ng.crtTime, '%Y-%m') AS monthTime, COUNT(*) total FROM negative ng " + @Select("SELECT DATE_FORMAT(ng.discoveryTime, '%Y-%m') AS monthTime, COUNT(*) total FROM negative ng " +
"WHERE YEAR(ng.discoveryTime)=#{year} and checkStatus=1 " + "WHERE YEAR(ng.discoveryTime)=#{year} and checkStatus=1 " +
"GROUP BY monthTime " + "GROUP BY monthTime " +
"order BY monthTime asc") "order BY monthTime asc")

14
src/main/java/com/biutag/supervision/mapper/NegativeProblemRelationMapper.java

@ -19,14 +19,12 @@ public interface NegativeProblemRelationMapper extends BaseMapper<NegativeProble
"GROUP BY `name` ") "GROUP BY `name` ")
List<EchartsVo> selectProblemRate(Date beginTime, Date endTime); List<EchartsVo> selectProblemRate(Date beginTime, Date endTime);
@Select("SELECT (@row_number := @row_number + 1) AS sort, sorted_results.label, sorted_results.value " + @Select("SELECT threeLevelContent as name, count(*) as `value` " +
"FROM " + "FROM negative_problem_relation " +
"(SELECT npr.threeLevelContent AS label, COUNT(*) AS value " + "WHERE negativeId " +
"FROM negative_problem_relation npr " + "in ( SELECT id FROM negative WHERE discoveryTime BETWEEN #{beginTime} AND #{endTime}) " +
"WHERE npr.threeLevelContent IS NOT NULL " + "GROUP BY threeLevelContent " +
"GROUP BY label " + "ORDER BY VALUE DESC ")
"ORDER BY value DESC) " +
"AS sorted_results, (SELECT @row_number := 0) AS t;")
List<StrongProblemRank> selectStrongProblemRank(Date beginTime, Date endTime); List<StrongProblemRank> selectStrongProblemRank(Date beginTime, Date endTime);
@Select("SELECT sd1.short_name, count(*) value " + @Select("SELECT sd1.short_name, count(*) value " +

57
src/main/java/com/biutag/supervision/pojo/entity/DataMigration.java

@ -0,0 +1,57 @@
package com.biutag.supervision.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
/**
* 数据库迁移记录
* @TableName data_migration
*/
@TableName(value ="data_migration")
@Data
public class DataMigration implements Serializable {
/**
* 数据迁移操作id
*/
@TableId(value = "id")
private Integer id;
/**
* 来源库
*/
@TableField(value = "target")
private String target;
/**
* 开始时间
*/
@TableField(value = "start_time")
private LocalDateTime startTime;
/**
* 结束时间
*/
@TableField(value = "end_time")
private LocalDateTime endTime;
/**
* 迁移数量
*/
@TableField(value = "migration_count")
private String migrationCount;
/**
* 目标表最大时间
*/
@TableField(value = "target_max_time")
private LocalDateTime targetMaxTime;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

103
src/main/java/com/biutag/supervision/pojo/entity/DataPoliceMeeting.java

@ -0,0 +1,103 @@
package com.biutag.supervision.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* mysql中negative中data_police_meeting表的实体类
* @TableName data_police_meeting
*/
@TableName(value ="data_police_meeting")
@Data
public class DataPoliceMeeting implements Serializable {
/**
*
*/
@TableField(value = "sample_id")
private Integer sampleId;
/**
*
*/
@TableField(value = "name")
private String name;
/**
*
*/
@TableField(value = "visit_name")
private String visitName;
/**
*
*/
@TableField(value = "visit_phone")
private String visitPhone;
/**
*
*/
@TableField(value = "organize_id")
private String organizeId;
/**
*
*/
@TableField(value = "org_name")
private String orgName;
/**
*
*/
@TableField(value = "business_id")
private String businessId;
/**
*
*/
@TableField(value = "business_name")
private String businessName;
/**
*
*/
@TableField(value = "sample_time")
private Date sampleTime;
/**
*
*/
@TableField(value = "create_time")
private Date createTime;
/**
*
*/
@TableField(value = "sample_content")
private String sampleContent;
/**
*
*/
@TableField(value = "visitime")
private Date visitime;
/**
*
*/
@TableField(value = "result_name")
private String resultName;
/**
*
*/
@TableField(value = "code")
private String code;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

103
src/main/java/com/biutag/supervision/pojo/entity/DataPoliceMeetingV.java

@ -0,0 +1,103 @@
package com.biutag.supervision.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* sqlServer数据库SampleResultPoolView视图实体类
* @TableName SampleResultPoolView
*/
@TableName(value ="SampleResultPoolView")
@Data
public class DataPoliceMeetingV implements Serializable {
/**
*
*/
@TableField(value = "sample_id")
private Integer sampleId;
/**
*
*/
@TableField(value = "name")
private String name;
/**
*
*/
@TableField(value = "visit_name")
private String visitName;
/**
*
*/
@TableField(value = "visit_phone")
private String visitPhone;
/**
*
*/
@TableField(value = "organize_id")
private String organizeId;
/**
*
*/
@TableField(value = "org_name")
private String orgName;
/**
*
*/
@TableField(value = "business_id")
private String businessId;
/**
*
*/
@TableField(value = "business_name")
private String businessName;
/**
*
*/
@TableField(value = "sample_time")
private Date sampleTime;
/**
*
*/
@TableField(value = "create_time")
private Date createTime;
/**
*
*/
@TableField(value = "sample_content")
private String sampleContent;
/**
*
*/
@TableField(value = "visitime")
private Date visitime;
/**
*
*/
@TableField(value = "result_name")
private String resultName;
/**
*
*/
@TableField(value = "code")
private String code;
@TableField(exist = false)
private static final long serialVersionUID = 1L;
}

9
src/main/java/com/biutag/supervision/service/DataGobalService.java

@ -65,8 +65,10 @@ public class DataGobalService {
Integer.parseInt(InspectCaseEnum.TRUE.getValue()), Integer.parseInt(InspectCaseEnum.TRUE.getValue()),
beginTime, endTime, beginTime, endTime,
26); 26);
Long totalPro = caseVerificationPro + supervisionPro + complaintPro + reviewPro + auditPro;
JSONObject overview = new JSONObject(); JSONObject overview = new JSONObject();
overview.fluentPut("caseVerificationPro", caseVerificationPro) overview.fluentPut("totalPro", totalPro)
.fluentPut("caseVerificationPro", caseVerificationPro)
.fluentPut("supervisionPro", supervisionPro) .fluentPut("supervisionPro", supervisionPro)
.fluentPut("complaintPro", complaintPro) .fluentPut("complaintPro", complaintPro)
.fluentPut("reviewPro", reviewPro) .fluentPut("reviewPro", reviewPro)
@ -86,7 +88,7 @@ public class DataGobalService {
public Long getCountByConditions(Integer checkStatus, Date startTime, Date endTime, Integer... problemSourcesCodes) { public Long getCountByConditions(Integer checkStatus, Date startTime, Date endTime, Integer... problemSourcesCodes) {
QueryWrapper<Negative> queryWrapper = new QueryWrapper<>(); QueryWrapper<Negative> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("checkStatus", checkStatus) queryWrapper.eq("checkStatus", checkStatus)
.between("crtTime", startTime, endTime) .between("discoveryTime", startTime, endTime)
.and(wrapper -> { .and(wrapper -> {
for (int i = 0; i < problemSourcesCodes.length; i++) { for (int i = 0; i < problemSourcesCodes.length; i++) {
if (i == 0) { if (i == 0) {
@ -130,6 +132,9 @@ public class DataGobalService {
* @return * @return
*/ */
public List<StrongProblemRank> getStrongProblemRank(Date beginTime, Date endTime) { public List<StrongProblemRank> getStrongProblemRank(Date beginTime, Date endTime) {
// 1.获取这段时间的negative id
//
List<StrongProblemRank> res= negativeProblemRelationMapper.selectStrongProblemRank(beginTime, endTime); List<StrongProblemRank> res= negativeProblemRelationMapper.selectStrongProblemRank(beginTime, endTime);
return res; return res;
} }

160
src/main/java/com/biutag/supervision/service/DataMigrationServiceImpl.java

@ -0,0 +1,160 @@
package com.biutag.supervision.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.biutag.supervision.mapper.DataMigrationMapper;
import com.biutag.supervision.mapper.DataPoliceMeetingMysqlMapper;
import com.biutag.supervision.mapper.DataPoliceMeetingSqlServerMapper;
import com.biutag.supervision.pojo.entity.DataMigration;
import com.biutag.supervision.pojo.entity.DataPoliceMeeting;
import com.biutag.supervision.pojo.entity.DataPoliceMeetingV;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeansException;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.DateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Stream;
/**
* @author 舒云
* @description 针对表data_migration的数据库操作Service实现
* @createDate 2024-11-13 11:21:19
*/
@Service
//@EnableAsync
public class DataMigrationServiceImpl extends ServiceImpl<DataMigrationMapper, DataMigration> {
@Resource
private DataPoliceMeetingMysqlMapper dataPoliceMeetingMysqlMapper;
@Resource
private DataPoliceMeetingSqlServerMapper dataPoliceMeetingSqlServerMapper;
@Resource
private DataMigrationMapper dataMigrationMapper; // 迁移记录
private static final int BATCH_SIZE = 1000; // 每次处理的记录数
public List<DataPoliceMeetingV> getDataPoliceMeetingFromSqlServer(LocalDateTime lastSelectTime, LocalDateTime now) {
return dataPoliceMeetingSqlServerMapper.selectAimList(lastSelectTime, now);
}
// @PostConstruct
// public void startMigration() {
// CompletableFuture.runAsync(() -> migrateData());
// }
/* @Async
public void migrateDataAsync() {
migrateData();
}*/
// @Scheduled(cron = "*/10 * * * * ?")
@Async
public void migrateData() {
LocalDateTime startTime = LocalDateTime.now(); // 开始迁移时间
// 1. 查询数据库中最后一次迁移的时间
DataMigration lastMigration = dataMigrationMapper.selectLastMigrationTime();
LocalDateTime lastMigrationTime = (lastMigration == null || lastMigration.getTargetMaxTime() == null)
? LocalDateTime.of(1970, 1, 1, 0, 0)
: lastMigration.getTargetMaxTime();
// 2、准备数据
int pageNum = 1;
int pageSize = 1000;
Long total = 0L;
List<DataPoliceMeetingV> dataPoliceMeetingFromSqlServerList;
do {
dataPoliceMeetingFromSqlServerList = getDataPoliceMeetingFromSqlServer(lastMigrationTime, LocalDateTime.now(), pageNum, pageSize);
// 3、开始新的迁移
boolean migrationSuccessful = updateMigration(dataPoliceMeetingFromSqlServerList);
total += dataPoliceMeetingFromSqlServerList.size();
if (!migrationSuccessful) {
System.out.println("数据迁移失败");
return;
}
pageNum++;
} while (!dataPoliceMeetingFromSqlServerList.isEmpty());
LocalDateTime endTime = LocalDateTime.now();
// updateMigrationRecord(startTime, endTime, dataPoliceMeetingFromSqlServerList);
DataMigration dataMigration = new DataMigration();
dataMigration.setTarget("sqlServer");
dataMigration.setStartTime(startTime);
dataMigration.setEndTime(endTime);
dataMigration.setMigrationCount(total.toString());
LocalDateTime maxCreateTime = dataPoliceMeetingSqlServerMapper.selectMaxCreateTime();
dataMigration.setTargetMaxTime(maxCreateTime);
dataMigrationMapper.insert(dataMigration);
System.out.println("数据迁移成功");
}
private boolean updateMigration(List<DataPoliceMeetingV> dataPoliceMeetingFromSqlServerList) {
try {
for (DataPoliceMeetingV dataPoliceMeetingV : dataPoliceMeetingFromSqlServerList) {
DataPoliceMeeting dataPoliceMeeting = new DataPoliceMeeting();
BeanUtils.copyProperties(dataPoliceMeetingV, dataPoliceMeeting);
dataPoliceMeetingMysqlMapper.insert(dataPoliceMeeting);
}
return true;
} catch (BeansException e) {
return false;
}
}
// 大数据分页查询
public List<DataPoliceMeetingV> getDataPoliceMeetingFromSqlServer(LocalDateTime lastSelectTime, LocalDateTime now, int pageNum, int pageSize) {
int offset = (pageNum - 1) * pageSize;
return dataPoliceMeetingSqlServerMapper.selectAimListWithPagination(lastSelectTime, now, offset, pageSize);
}
private void updateMigrationRecord(LocalDateTime startTime, LocalDateTime endTime, List<DataPoliceMeetingV> dataPoliceMeetingFromSqlServerList) {
DataMigration dataMigration = new DataMigration();
dataMigration.setTarget("sqlServer");
dataMigration.setStartTime(startTime);
dataMigration.setEndTime(endTime);
dataMigration.setMigrationCount(String.valueOf(dataPoliceMeetingFromSqlServerList.size()));
LocalDateTime maxCreateTime = dataPoliceMeetingSqlServerMapper.selectMaxCreateTime();
dataMigration.setTargetMaxTime(maxCreateTime);
dataMigrationMapper.insert(dataMigration);
}
/**
* boolean migrationSuccessful = updateMigration(dataPoliceMeetingFromSqlServerList);
* if (migrationSuccessful) {
* LocalDateTime endTime = LocalDateTime.now(); // 结束迁移时间
* // 4、更新迁移记录
* updateMigrationRecord(startTime, endTime, dataPoliceMeetingFromSqlServerList);
* System.out.println("数据迁移成功");
* } else {
* System.out.println("数据迁移失败");
* }
*/
}

5
src/main/resources/application-dev.yml

@ -26,6 +26,11 @@ spring:
url: jdbc:mysql://172.31.217.20:31868/negative?serverTimezone=GMT%2B8 url: jdbc:mysql://172.31.217.20:31868/negative?serverTimezone=GMT%2B8
username: root username: root
password: ip12341234 password: ip12341234
test1:
url: jdbc:sqlserver://8.155.28.101:1433;databaseName=test1
username: SA
password: shihao&&200003
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
druid: druid:
min-evictable-idle-time-millis: 300000 min-evictable-idle-time-millis: 300000
test-on-borrow: false test-on-borrow: false

5
src/main/resources/application-prod.yml

@ -26,6 +26,11 @@ spring:
url: jdbc:dm://65.47.22.243:5236?SCHEMA=JSDZ_4GDB url: jdbc:dm://65.47.22.243:5236?SCHEMA=JSDZ_4GDB
username: DCZD username: DCZD
password: DCZD@2024 password: DCZD@2024
test1:
url: jdbc:sqlserver://65.47.6.114:1433;databaseName=VisitManage_CS
username: ck1112
password: CK@20241112
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
druid: druid:
min-evictable-idle-time-millis: 300000 min-evictable-idle-time-millis: 300000
test-on-borrow: false test-on-borrow: false

Loading…
Cancel
Save