diff --git a/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/domain/Dept.java b/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/domain/Dept.java new file mode 100644 index 00000000..7ee301c7 --- /dev/null +++ b/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/domain/Dept.java @@ -0,0 +1,85 @@ +package org.dromara.extract.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.tenant.core.TenantEntity; + +import java.io.Serial; + + +/** + * 部门表 sys_dept + * + * @author Lion Li + */ + +@Data +@TableName("sys_dept") +public class Dept { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 部门ID + */ + @TableId(value = "dept_id") + private String deptId; + + /** + * 父部门ID + */ + private String parentId; + + /** + * 部门名称 + */ + private String deptName; + + private String shortName; + + + /** + * 显示顺序 + */ + private Integer orderNum; + + /** + * 负责人 + */ + private Long leader; + + /** + * 联系电话 + */ + private String phone; + + /** + * 邮箱 + */ + private String email; + + /** + * 部门状态:0正常,1停用 + */ + private String status; + + /** + * 删除标志(0代表存在 2代表删除) + */ + @TableLogic + private String delFlag; + + /** + * 祖级列表 + */ + private String ancestors; + + private String fullName; + + private String isVisible; + +} diff --git a/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/domain/Device.java b/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/domain/Device.java index 5da92747..e4691d00 100644 --- a/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/domain/Device.java +++ b/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/domain/Device.java @@ -24,6 +24,9 @@ public class Device implements Serializable { private String carNum; private String remark1; private String remark2; + + private String cardNum; + private int valid; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; @@ -141,4 +144,12 @@ public class Device implements Serializable { public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; } + + public String getCardNum() { + return cardNum; + } + + public void setCardNum(String cardNum) { + this.cardNum = cardNum; + } } diff --git a/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/mapper/DeptMapper.java b/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/mapper/DeptMapper.java new file mode 100644 index 00000000..ba24bdbb --- /dev/null +++ b/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/mapper/DeptMapper.java @@ -0,0 +1,19 @@ +package org.dromara.extract.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.extract.domain.Dept; + +import java.util.List; + +/** + * 部门管理 数据层 + * + * @author Lion Li + */ +@DS("wzhj") +public interface DeptMapper extends BaseMapper { + + +} diff --git a/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/mapper/DeviceGpsMapper.java b/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/mapper/DeviceGpsMapper.java index 439fc6a1..9066edbf 100644 --- a/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/mapper/DeviceGpsMapper.java +++ b/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/mapper/DeviceGpsMapper.java @@ -2,6 +2,7 @@ package org.dromara.extract.mapper; +import com.baomidou.dynamic.datasource.annotation.DS; import org.dromara.extract.domain.EsGpsInfo; import java.util.List; @@ -10,6 +11,7 @@ public interface DeviceGpsMapper { List selectPDTGPS(EsGpsInfo esGpsInfo); + @DS("ydjw") List selectYDJWGPS(EsGpsInfo esGpsInfo); List selectBDGCGPS(EsGpsInfo esGpsInfo); diff --git a/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/mapper/DeviceMapper.java b/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/mapper/DeviceMapper.java index 3f0e50ca..ed68767b 100644 --- a/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/mapper/DeviceMapper.java +++ b/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/mapper/DeviceMapper.java @@ -1,6 +1,7 @@ package org.dromara.extract.mapper; +import com.baomidou.dynamic.datasource.annotation.DS; import org.apache.ibatis.annotations.Mapper; import org.dromara.extract.domain.Device; @@ -19,4 +20,7 @@ public interface DeviceMapper { Device deviceByCode(String deviceCode); + @DS("wzhj") + int insertOrUpdateByCodeAndType(Device device); + } diff --git a/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/schedule/JwtDeviceSchedule.java b/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/schedule/JwtDeviceSchedule.java new file mode 100644 index 00000000..1248361d --- /dev/null +++ b/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/schedule/JwtDeviceSchedule.java @@ -0,0 +1,92 @@ +package org.dromara.extract.schedule; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.data2es.api.RemoteDataToEsService; +import org.dromara.data2es.api.domain.RemoteGpsInfo; +import org.dromara.extract.domain.Device; +import org.dromara.extract.domain.EsGpsInfo; +import org.dromara.extract.mapper.DeviceGpsMapper; +import org.dromara.extract.mapper.DeviceMapper; +import org.dromara.extract.service.IDeviceService; +import org.dromara.system.api.RemoteDeviceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.Scheduled; + +import java.util.*; +import java.util.stream.Collectors; + +/* +* @Author: luya +* @Date: 2023/3/20 15:43 +* 警务通定位数据和基础数据 +* */ +@Slf4j +@Configuration +public class JwtDeviceSchedule { + + @Autowired + IDeviceService deviceService; + + @Autowired + DeviceGpsMapper gpsMapper; + + @DubboReference + RemoteDataToEsService dataToEsService; + + + @Value("${ruansi.jwt-gps-update-time}") + private String gpsUpdateTime; + + @Value("${ruansi.jwt-base-update-time}") + private String baseUpdateTime; + + /* + * 10S执行一次 + * */ + @Scheduled(cron = "0/10 * * * * ?") + public void jwtGpsSchedule(){ + EsGpsInfo gpsInfo = new EsGpsInfo(); + gpsInfo.setGpsTime(DateUtil.parse(gpsUpdateTime)); + log.info("警务通GPS更新时间:"+gpsUpdateTime); + List list = gpsMapper.selectYDJWGPS(gpsInfo); + for (int i = 0; i < list.size(); i++) { + EsGpsInfo info = list.get(i); + if(i == 0){ + gpsUpdateTime = DateUtil.format(info.getGpsTime(),"yyyy-MM-dd HH:mm:ss") ; + } + if (DateUtil.between(new Date(),info.getGpsTime(), DateUnit.MINUTE) > 5){ + info.setOnline("0"); + }else { + info.setOnline("1"); + } + } + ArrayList collect = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> + new TreeSet<>(Comparator.comparing(EsGpsInfo::getDeviceCode))), ArrayList::new)); + dataToEsService.saveDataBatch(BeanUtil.copyToList(collect, RemoteGpsInfo.class)); + + } + + /* + * 十分钟执行一次 + * */ + @Scheduled(cron = "0 0/10 * * * ?") + public void jwtDeviceSchedule(){ + Device d = new Device(); + d.setUpdateTime(DateUtil.parse(baseUpdateTime)); + List list = deviceService.selectYDJW(d); + for (int i = 0; i < list.size(); i++) { + Device device = list.get(i); + if(i == 0) + baseUpdateTime = DateUtil.format(device.getUpdateTime(),"yyyy-MM-dd HH:mm:ss") ; + } + deviceService.batchSaveOrUpdate(list); + + } + + } diff --git a/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/service/IDeviceService.java b/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/service/IDeviceService.java index 5e3e3dd1..18813cb5 100644 --- a/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/service/IDeviceService.java +++ b/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/service/IDeviceService.java @@ -19,5 +19,7 @@ public interface IDeviceService { Device deviceByCode(String deviceCode); + Boolean batchSaveOrUpdate(List list); + } diff --git a/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/service/impl/DeviceServiceImpl.java b/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/service/impl/DeviceServiceImpl.java index 12c3c820..51d59494 100644 --- a/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/service/impl/DeviceServiceImpl.java +++ b/stwzhj-modules/wzhj-extract/src/main/java/org/dromara/extract/service/impl/DeviceServiceImpl.java @@ -2,7 +2,10 @@ package org.dromara.extract.service.impl; +import com.baomidou.dynamic.datasource.annotation.DS; +import org.dromara.extract.domain.Dept; import org.dromara.extract.domain.Device; +import org.dromara.extract.mapper.DeptMapper; import org.dromara.extract.mapper.DeviceMapper; import org.dromara.extract.service.IDeviceService; import org.springframework.beans.factory.annotation.Autowired; @@ -16,6 +19,9 @@ public class DeviceServiceImpl implements IDeviceService { @Autowired DeviceMapper deviceMapper; + @Autowired + DeptMapper deptMapper; + @Override public List selectPDT(Device device) { List list = deviceMapper.selectPDT(device); @@ -23,6 +29,7 @@ public class DeviceServiceImpl implements IDeviceService { } @Override + @DS("ydjw") public List selectYDJW(Device tDevice) { return deviceMapper.selectYDJW(tDevice); } @@ -41,4 +48,17 @@ public class DeviceServiceImpl implements IDeviceService { public Device deviceByCode(String deviceCode) { return deviceMapper.deviceByCode(deviceCode); } + + @Override + public Boolean batchSaveOrUpdate(List list) { + for (Device entity : list) { + Dept dept = deptMapper.selectById(entity.getZzjgdm()); + if (dept != null) { + entity.setZzjgmc(dept.getShortName()); + } + deviceMapper.insertOrUpdateByCodeAndType(entity); + + } + return true; + } } diff --git a/stwzhj-modules/wzhj-extract/src/main/resources/mapper/DeptMapper.xml b/stwzhj-modules/wzhj-extract/src/main/resources/mapper/DeptMapper.xml new file mode 100644 index 00000000..373846eb --- /dev/null +++ b/stwzhj-modules/wzhj-extract/src/main/resources/mapper/DeptMapper.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/stwzhj-modules/wzhj-extract/src/main/resources/mapper/DeviceGpsMapper.xml b/stwzhj-modules/wzhj-extract/src/main/resources/mapper/DeviceGpsMapper.xml index 7125109a..2ba39d71 100644 --- a/stwzhj-modules/wzhj-extract/src/main/resources/mapper/DeviceGpsMapper.xml +++ b/stwzhj-modules/wzhj-extract/src/main/resources/mapper/DeviceGpsMapper.xml @@ -29,10 +29,11 @@ + + insert into t_device (device_code, device_type, zzjgdm, zzjgmc, police_no, police_name, phone_num, car_num, valid, + remark1, remark2, card_num, create_time, update_time) + values (#{deviceCode},#{deviceType},#{zzjgdm},#{zzjgmc},#{policeNo},#{policeName},#{phoneNum},#{carNum},#{valid}, + #{remark1},#{remark2},#{cardNum},#{createTime},#{updateTime}) + ON DUPLICATE KEY UPDATE + police_no = values(police_no),police_name = values(police_name),phone_num = values(phone_num), + car_num = values(car_num),valid = values(valid),remark1 = values(remark1),remark2 = values(remark2),card_num = values(card_num), + update_time = values(update_time) + diff --git a/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/service/impl/TDeviceServiceImpl.java b/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/service/impl/TDeviceServiceImpl.java index 0bdc10a4..82d0ab6a 100644 --- a/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/service/impl/TDeviceServiceImpl.java +++ b/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/service/impl/TDeviceServiceImpl.java @@ -290,11 +290,6 @@ public class TDeviceServiceImpl implements ITDeviceService { @Override public Boolean batchSaveOrUpdate(List list) { boolean flag = true; - // 先根据 field1 和 field2 查询出已存在的记录 - /*List existingEntities = baseMapper.selectList(new QueryWrapper() - .in("device_code", list.stream().map(TDevice::getDeviceCode).collect(Collectors.toList())) - .in("device_type", list.stream().map(TDevice::getDeviceType).collect(Collectors.toList()))); -*/ // 找到需要更新的记录 List toUpdate = new ArrayList<>(); // 找到需要插入的记录 @@ -302,28 +297,8 @@ public class TDeviceServiceImpl implements ITDeviceService { for (TDevice entity : list) { baseMapper.insertOrUpdateByCodeAndType(entity); - /*for (TDevice existingEntity : existingEntities) { - if (entity.getDeviceCode().equals(existingEntity.getDeviceCode()) && entity.getDeviceType().equals(existingEntity.getDeviceType())) { - entity.setId(existingEntity.getId()); // 设置 ID 以便更新 - toUpdate.add(entity); - exists = true; - break; - } - } - if (!exists) { - toInsert.add(entity); - }*/ - } - // 批量更新 - /*if (!toUpdate.isEmpty()) { - flag = baseMapper.updateBatchById(toUpdate); } - - // 批量插入 - if (!toInsert.isEmpty()) { - flag = baseMapper.insertBatch(toInsert); // insertBatchSomeColumn 是 MyBatis-Plus 提供的批量插入方法 - }*/ return flag; // return baseMapper.insertOrUpdateBatch(List); }