工程拉取
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