工程拉取
This commit is contained in:
parent
76758eaeac
commit
8889e38c22
|
|
@ -0,0 +1,122 @@
|
|||
package com.bonus.imgTool.basic.vo.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @className:SelectDto
|
||||
* @author:cwchen
|
||||
* @date:2024-07-19-13:14
|
||||
* @version:1.0
|
||||
* @description:下拉选-dto
|
||||
*/
|
||||
@Data
|
||||
public class ProDto {
|
||||
|
||||
|
||||
/**
|
||||
* 工程id
|
||||
*/
|
||||
private Long proId;
|
||||
|
||||
/**
|
||||
* 工程名称
|
||||
*/
|
||||
private String proName;
|
||||
|
||||
/**
|
||||
* 简称
|
||||
*/
|
||||
private String abbreviation;
|
||||
|
||||
|
||||
/**
|
||||
* 工程类型
|
||||
*/
|
||||
private String proType;
|
||||
|
||||
|
||||
/**
|
||||
* 电压等级
|
||||
*/
|
||||
private String voltageLevel;
|
||||
|
||||
/**
|
||||
* 公司名称
|
||||
*/
|
||||
private String companyName;
|
||||
|
||||
/**
|
||||
* 工程地址
|
||||
*/
|
||||
private String origin;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
private String lon;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
private String lat;
|
||||
|
||||
/**
|
||||
* 工程状态
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
private String updateTime;
|
||||
|
||||
|
||||
/**
|
||||
* 是否可用
|
||||
*/
|
||||
private Integer isActive;
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (!(o instanceof ProDto)) return false;
|
||||
ProDto proDto = (ProDto) o;
|
||||
if (getProName() != null ? !getProName().equals(proDto.getProName()) : proDto.getProName() != null)
|
||||
return false;
|
||||
if (getAbbreviation() != null ? !getAbbreviation().equals(proDto.getAbbreviation()) : proDto.getAbbreviation() != null)
|
||||
return false;
|
||||
if (getProType() != null ? !getProType().equals(proDto.getProType()) : proDto.getProType() != null)
|
||||
return false;
|
||||
if (getVoltageLevel() != null ? !getVoltageLevel().equals(proDto.getVoltageLevel()) : proDto.getVoltageLevel() != null)
|
||||
return false;
|
||||
if (getCompanyName() != null ? !getCompanyName().equals(proDto.getCompanyName()) : proDto.getCompanyName() != null)
|
||||
return false;
|
||||
if (getOrigin() != null ? !getOrigin().equals(proDto.getOrigin()) : proDto.getOrigin() != null)
|
||||
return false;
|
||||
if (getLon() != null ? !getLon().equals(proDto.getLon()) : proDto.getLon() != null)
|
||||
return false;
|
||||
if (getLat() != null ? !getLat().equals(proDto.getLat()) : proDto.getLat() != null)
|
||||
return false;
|
||||
if (getStatus() != null ? !getStatus().equals(proDto.getStatus()) : proDto.getStatus() != null)
|
||||
return false;
|
||||
if (getUpdateTime() != null ? !getUpdateTime().equals(proDto.getUpdateTime()) : proDto.getUpdateTime() != null)
|
||||
return false;
|
||||
return getIsActive() != null ? getIsActive().equals(proDto.getIsActive()) : proDto.getIsActive() == null;
|
||||
}
|
||||
|
||||
public void update(ProDto source) {
|
||||
this.setProName(source.getProName());
|
||||
this.setAbbreviation(source.getAbbreviation());
|
||||
this.setProType(source.getProType());
|
||||
this.setVoltageLevel(source.getVoltageLevel());
|
||||
this.setCompanyName(source.getCompanyName());
|
||||
this.setOrigin(source.getOrigin());
|
||||
this.setLon(source.getLon());
|
||||
this.setLat(source.getLat());
|
||||
this.setStatus(source.getStatus());
|
||||
this.setUpdateTime(source.getUpdateTime());
|
||||
this.setIsActive(source.getIsActive());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.bonus.imgTool.task.dao;
|
||||
|
||||
import com.bonus.imgTool.basic.vo.dto.ProDto;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Repository
|
||||
public interface ProPullDao {
|
||||
|
||||
List<ProDto> getProjectData();
|
||||
|
||||
List<ProDto> getImgProjectData();
|
||||
|
||||
void addProject(List<ProDto> list);
|
||||
|
||||
void updateProject(ProDto imgProject);
|
||||
}
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
package com.bonus.imgTool.task.job;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.bonus.imgTool.basic.vo.dto.ProDto;
|
||||
import com.bonus.imgTool.task.dao.ProPullDao;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.scheduling.annotation.EnableAsync;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author zys
|
||||
* 考勤定时器
|
||||
*/
|
||||
@Configuration
|
||||
@EnableScheduling
|
||||
@Slf4j
|
||||
@EnableAsync
|
||||
public class ProPullTask {
|
||||
|
||||
@Resource
|
||||
private ProPullDao dao;
|
||||
|
||||
/**
|
||||
* 拉取工程数据
|
||||
*/
|
||||
@Scheduled(cron = "0 30 0 * * ?")
|
||||
@Async
|
||||
public void getAttTempDataTask() {
|
||||
log.info("--------实名制工程数据拉取定时器开启------");
|
||||
//实名制工程
|
||||
List<ProDto> proList = dao.getProjectData();
|
||||
//影像系统工程
|
||||
List<ProDto> proImgList = dao.getImgProjectData();
|
||||
syncProjectData(proList, proImgList);
|
||||
log.info("--------实名制工程数据拉取定时器完毕------");
|
||||
}
|
||||
|
||||
// 假设 ProDto 类有一个方法叫做 update() 可以用来更新对象的数据
|
||||
public void syncProjectData(List<ProDto> proList, List<ProDto> proImgList) {
|
||||
// 创建一个Map来快速查找proImgList中的元素
|
||||
Map<Long, ProDto> imgProjectMap = new HashMap<>();
|
||||
for (ProDto imgProject : proImgList) {
|
||||
imgProjectMap.put(imgProject.getProId(), imgProject);
|
||||
}
|
||||
// 遍历proList进行同步操作
|
||||
List<ProDto> addList = new ArrayList<>();
|
||||
for (ProDto project : proList) {
|
||||
if (imgProjectMap.containsKey(project.getProId())) {
|
||||
// 如果proId存在,比较并更新数据
|
||||
ProDto imgProject = imgProjectMap.get(project.getProId());
|
||||
if (!project.equals(imgProject)) {
|
||||
project.update(imgProject); // 使用来自proImgList的数据更新project对象
|
||||
}else{
|
||||
// 相同的数据移出proImgList
|
||||
imgProjectMap.remove(project.getProId());
|
||||
}
|
||||
} else {
|
||||
// 如果proId不存在于proImgList中,添加新项目
|
||||
addList.add(project);
|
||||
|
||||
}
|
||||
}
|
||||
if (!addList.isEmpty()){
|
||||
dao.addProject(addList);
|
||||
}
|
||||
// 将proImgList中剩下的数据更新到数据库
|
||||
for (ProDto imgProject : imgProjectMap.values()) {
|
||||
dao.updateProject(imgProject);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,132 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.bonus.imgTool.task.dao.ProPullDao">
|
||||
|
||||
<insert id="addProject">
|
||||
insert into tb_project (
|
||||
id,
|
||||
`name`,
|
||||
abbreviation,
|
||||
pro_type,
|
||||
voltage_level,
|
||||
company_name,
|
||||
origin,
|
||||
lon,
|
||||
lat,
|
||||
`status`,
|
||||
update_time,
|
||||
is_active
|
||||
)
|
||||
VALUES
|
||||
<foreach collection="list" item="item" index="index" separator=",">
|
||||
(
|
||||
#{item.proId},
|
||||
#{item.proName},
|
||||
#{item.abbreviation},
|
||||
#{item.proType},
|
||||
#{item.voltageLevel},
|
||||
#{item.companyName},
|
||||
#{item.origin},
|
||||
#{item.lon},
|
||||
#{item.lat},
|
||||
#{item.status},
|
||||
#{item.updateTime},
|
||||
#{item.isActive}
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<update id="updateProject">
|
||||
update tb_project
|
||||
<set>
|
||||
<if test="proName != null">
|
||||
`name` = #{proName},
|
||||
</if>
|
||||
<if test="abbreviation != null">
|
||||
abbreviation = #{abbreviation},
|
||||
</if>
|
||||
<if test="proType != null">
|
||||
pro_type = #{proType},
|
||||
</if>
|
||||
<if test="voltageLevel != null">
|
||||
voltage_level = #{voltageLevel},
|
||||
</if>
|
||||
<if test="companyName != null">
|
||||
company_name = #{companyName},
|
||||
</if>
|
||||
<if test="origin != null">
|
||||
project_address = #{origin},
|
||||
</if>
|
||||
<if test="lon != null">
|
||||
lon = #{lon},
|
||||
</if>
|
||||
<if test="lat != null">
|
||||
lat = #{lat},
|
||||
</if>
|
||||
<if test="status != null">
|
||||
status = #{status}
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
update_time = #{updateTime},
|
||||
</if>
|
||||
<if test="isActive != null">
|
||||
is_active = #{isActive}
|
||||
</if>
|
||||
</set>
|
||||
WHERE
|
||||
id = #{proId}
|
||||
</update>
|
||||
|
||||
|
||||
<select id="getProjectData" resultType="com.bonus.imgTool.basic.vo.dto.ProDto">
|
||||
SELECT
|
||||
bp.id AS proId,
|
||||
bp.`NAME` AS proName,
|
||||
bp.abbreviation,
|
||||
bp.pro_type AS proType,
|
||||
po.`name` AS companyName,
|
||||
td.`value` AS voltageLevel,
|
||||
bp.project_address AS origin,
|
||||
bp.lon,
|
||||
bp.lat,
|
||||
CASE
|
||||
bp.pro_status
|
||||
WHEN 0 THEN
|
||||
'在建'
|
||||
WHEN 1 THEN
|
||||
'完工'
|
||||
WHEN 2 THEN
|
||||
'筹建'
|
||||
WHEN 3 THEN
|
||||
'停工'
|
||||
WHEN 4 THEN
|
||||
'收尾' ELSE '异常'
|
||||
END AS `status`,
|
||||
bp.update_time,
|
||||
bp.is_active
|
||||
FROM
|
||||
ynrealname.bm_project bp
|
||||
LEFT JOIN ynrealname.pm_organization po ON po.id = bp.two_com_id
|
||||
LEFT JOIN ynrealname.t_dict td ON td.id = bp.level_id
|
||||
AND td.type = 'voltageLevel'
|
||||
</select>
|
||||
<select id="getImgProjectData" resultType="com.bonus.imgTool.basic.vo.dto.ProDto">
|
||||
SELECT
|
||||
id AS proId,
|
||||
`name` AS proName,
|
||||
abbreviation,
|
||||
pro_type,
|
||||
voltage_level,
|
||||
company_name,
|
||||
origin,
|
||||
lon,
|
||||
lat,
|
||||
`status`,
|
||||
update_time,
|
||||
is_active
|
||||
FROM
|
||||
tb_project
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue