Commit f18ac6a3 authored by suhuiguang's avatar suhuiguang

1.96333数据同步,调整为全量同步,可手工触发也可定时触发

2.记录同步流水 3.同步的数据筛选条件为:电梯、已认领、有96333编码
parent cb2ac403
package com.yeejoin.amos.boot.module.elevator.api.dto;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* @author system_generator
* @date 2025-03-28
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ElevatorSynLogDto", description = "")
public class ElevatorSynLogDto extends BaseDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "同步日期")
private Date synDate;
@ApiModelProperty(value = "同步时间")
private Date synTime;
@ApiModelProperty(value = "同步前数量")
private Long beforeNum;
@ApiModelProperty(value = "同步后数量")
private Long afterNum;
@ApiModelProperty(value = "删除的数量")
private Long deleteNum;
@ApiModelProperty(value = "版本号")
private Long version;
@ApiModelProperty(value = "备注")
private String remark;
}
...@@ -24,7 +24,7 @@ public class EsElevatorDto { ...@@ -24,7 +24,7 @@ public class EsElevatorDto {
* 电梯id * 电梯id
*/ */
@ApiModelProperty(value = "电梯id") @ApiModelProperty(value = "电梯id")
private Long sequenceNbr; private String sequenceNbr;
/** /**
* 注册编码 * 注册编码
......
package com.yeejoin.amos.boot.module.elevator.api.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* @author system_generator
* @date 2025-03-28
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("tz_elevator_syn_log")
public class ElevatorSynLog extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 同步日期
*/
@TableField("syn_date")
private Date synDate;
/**
* 同步时间
*/
@TableField("syn_time")
private Date synTime;
/**
* 同步前数量
*/
@TableField("before_num")
private Long beforeNum;
/**
* 同步后数量
*/
@TableField("after_num")
private Long afterNum;
/**
* 删除的数量
*/
@TableField("delete_num")
private Long deleteNum;
/**
* 版本号
*/
@TableField("version")
private Long version;
/**
* 备注
*/
@TableField("remark")
private String remark;
}
package com.yeejoin.amos.boot.module.elevator.api.entity; package com.yeejoin.amos.boot.module.elevator.api.entity;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.elasticsearch.common.geo.GeoPoint; import org.elasticsearch.common.geo.GeoPoint;
...@@ -89,4 +90,10 @@ public class EsElevator { ...@@ -89,4 +90,10 @@ public class EsElevator {
@Field(type = FieldType.Text) @Field(type = FieldType.Text)
private String innerNum; private String innerNum;
/**
* 版本号
*/
@Field(type = FieldType.Long)
private Long version;
} }
...@@ -7,8 +7,6 @@ import com.yeejoin.amos.boot.module.elevator.api.dto.ElevatorDtoNew; ...@@ -7,8 +7,6 @@ import com.yeejoin.amos.boot.module.elevator.api.dto.ElevatorDtoNew;
import com.yeejoin.amos.boot.module.elevator.api.dto.ElevatorMessageDto; import com.yeejoin.amos.boot.module.elevator.api.dto.ElevatorMessageDto;
import com.yeejoin.amos.boot.module.elevator.api.dto.ElevatorWlInfoDto; import com.yeejoin.amos.boot.module.elevator.api.dto.ElevatorWlInfoDto;
import com.yeejoin.amos.boot.module.elevator.api.entity.Elevator; import com.yeejoin.amos.boot.module.elevator.api.entity.Elevator;
import com.yeejoin.amos.boot.module.elevator.api.entity.TzBaseEnterpriseInfo;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
...@@ -74,8 +72,10 @@ public interface ElevatorMapper extends BaseMapper<Elevator> { ...@@ -74,8 +72,10 @@ public interface ElevatorMapper extends BaseMapper<Elevator> {
/** /**
* 查询未同步到es的电梯:已纳管且有96333且有使用登记证 * 查询未同步到es的电梯:已纳管且有96333且有使用登记证
* @param page 分页对象 *
* @param page 分页对象
* @param versionNum
* @return 电梯结果分页对象 * @return 电梯结果分页对象
*/ */
Page<Map<String, Object>> selectElevatorOfIntoManage(Page<Map<String, Object>> page); Page<Map<String, Object>> selectElevatorOfIntoManage(Page<Map<String, Object>> page,@Param("versionNum") Long versionNum);
} }
package com.yeejoin.amos.boot.module.elevator.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.elevator.api.entity.ElevatorSynLog;
/**
* Mapper 接口
*
* @author system_generator
* @date 2025-03-28
*/
public interface ElevatorSynLogMapper extends BaseMapper<ElevatorSynLog> {
}
...@@ -15,7 +15,7 @@ import java.util.Map; ...@@ -15,7 +15,7 @@ import java.util.Map;
*/ */
public interface SuperviseInfoMapper extends BaseMapper<SuperviseInfo> { public interface SuperviseInfoMapper extends BaseMapper<SuperviseInfo> {
void updateRecordBatch(@Param("recordList") List<String> recordList); void updateRecordBatch(@Param("recordList") List<String> recordList,@Param("version") Long version);
List<Map<String,Object>> selectUnitCodeList(@Param("records") List<String> records); List<Map<String,Object>> selectUnitCodeList(@Param("records") List<String> records);
List<String> selectSuperviseCodeList(@Param("records") List<String> records); List<String> selectSuperviseCodeList(@Param("records") List<String> records);
......
...@@ -52,5 +52,4 @@ public interface IElevatorService extends IService<Elevator> { ...@@ -52,5 +52,4 @@ public interface IElevatorService extends IService<Elevator> {
Map<String, Object> selectUseUnitByAlertId(String sequenceNbr); Map<String, Object> selectUseUnitByAlertId(String sequenceNbr);
Long esInsert();
} }
package com.yeejoin.amos.boot.module.elevator.api.service;
/**
* 接口类
*
* @author system_generator
* @date 2025-03-28
*/
public interface IElevatorSynLogService {
}
...@@ -601,9 +601,8 @@ ...@@ -601,9 +601,8 @@
WHERE WHERE
jri.EQU_LIST = '3000' jri.EQU_LIST = '3000'
AND joi.CLAIM_STATUS = '已认领' AND joi.CLAIM_STATUS = '已认领'
AND jui.IS_NOT_ELEV is null and jui.IS_NOT_ELEV IS DISTINCT FROM #{versionNum}
and joi."CODE96333" <![CDATA[<>]]> '' and joi."CODE96333" <![CDATA[<>]]> ''
and jri."USE_ORG_CODE" <![CDATA[<>]]> ''
ORDER BY jui.REC_DATE ORDER BY jui.REC_DATE
</select> </select>
</mapper> </mapper>
<?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.yeejoin.amos.boot.module.elevator.api.mapper.ElevatorSynLogMapper">
</mapper>
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<mapper namespace="com.yeejoin.amos.boot.module.elevator.api.mapper.SuperviseInfoMapper"> <mapper namespace="com.yeejoin.amos.boot.module.elevator.api.mapper.SuperviseInfoMapper">
<update id="updateRecordBatch"> <update id="updateRecordBatch">
UPDATE idx_biz_jg_use_info SET "IS_NOT_ELEV" = 1 WHERE "RECORD" IN UPDATE idx_biz_jg_use_info SET "IS_NOT_ELEV" = #{version} WHERE "RECORD" IN
<foreach collection="recordList" separator="," item="record" open="(" close=")"> <foreach collection="recordList" separator="," item="record" open="(" close=")">
#{record} #{record}
</foreach> </foreach>
......
...@@ -21,6 +21,7 @@ import com.yeejoin.amos.boot.module.elevator.api.entity.TestInfo; ...@@ -21,6 +21,7 @@ import com.yeejoin.amos.boot.module.elevator.api.entity.TestInfo;
import com.yeejoin.amos.boot.module.elevator.api.mapper.ElevatorMapper; import com.yeejoin.amos.boot.module.elevator.api.mapper.ElevatorMapper;
import com.yeejoin.amos.boot.module.elevator.api.service.IElevatorRelationService; import com.yeejoin.amos.boot.module.elevator.api.service.IElevatorRelationService;
import com.yeejoin.amos.boot.module.elevator.api.service.IElevatorService; import com.yeejoin.amos.boot.module.elevator.api.service.IElevatorService;
import com.yeejoin.amos.boot.module.elevator.biz.job.SynElevator2EsJob;
import com.yeejoin.amos.boot.module.elevator.biz.service.impl.ESElevatorServiceImpl; import com.yeejoin.amos.boot.module.elevator.biz.service.impl.ESElevatorServiceImpl;
import com.yeejoin.amos.boot.module.elevator.biz.service.impl.ElevatorServiceImpl; import com.yeejoin.amos.boot.module.elevator.biz.service.impl.ElevatorServiceImpl;
import com.yeejoin.amos.boot.module.elevator.biz.service.impl.MaintainInfoServiceImpl; import com.yeejoin.amos.boot.module.elevator.biz.service.impl.MaintainInfoServiceImpl;
...@@ -100,12 +101,12 @@ public class ElevatorController extends BaseController { ...@@ -100,12 +101,12 @@ public class ElevatorController extends BaseController {
private ElevatorMapper elevatorMapper; private ElevatorMapper elevatorMapper;
@Autowired @Autowired
DataDictionaryServiceImpl iDataDictionaryService;
@Autowired
private RedisUtil redisUtil; private RedisUtil redisUtil;
private static final String STREET = "STREET"; private static final String STREET = "STREET";
@Autowired
private SynElevator2EsJob synElevator2EsJob;
/** /**
* 新增电梯 * 新增电梯
* *
...@@ -474,7 +475,7 @@ public class ElevatorController extends BaseController { ...@@ -474,7 +475,7 @@ public class ElevatorController extends BaseController {
for(int i = 0; i <= times ; i ++ ) { for(int i = 0; i <= times ; i ++ ) {
List<Map<String,Object>> mapList = iElevatorService.selectElevatorEsList(0,1000); List<Map<String,Object>> mapList = iElevatorService.selectElevatorEsList(0,1000);
if (!ObjectUtils.isEmpty(mapList)){ if (!ObjectUtils.isEmpty(mapList)){
esElevatorService.saveEsElevator2ES(mapList); // esElevatorService.saveEsElevator2ES(mapList);
} }
// for (Elevator el:elevatorPage.getRecords() // for (Elevator el:elevatorPage.getRecords()
// ) { // ) {
...@@ -651,14 +652,14 @@ public class ElevatorController extends BaseController { ...@@ -651,14 +652,14 @@ public class ElevatorController extends BaseController {
/** /**
* *
* @return 成功处理条数 * @return 是否成功
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@RequestMapping(value = "/v1/es/insert", method = RequestMethod.PUT) @RequestMapping(value = "/v1/es/insert", method = RequestMethod.PUT)
@ApiOperation(httpMethod = "PUT", value = "电梯信息放入es", notes = "电梯信息放入es") @ApiOperation(httpMethod = "PUT", value = "电梯信息放入es", notes = "电梯信息放入es")
public ResponseModel<String> esInsert() { public ResponseModel<String> esInsert() {
Long total = iElevatorService.esInsert(); synElevator2EsJob.synElevator2Es();
return ResponseHelper.buildResponse("success insert: " + total); return ResponseHelper.buildResponse("success");
} }
} }
......
...@@ -11,4 +11,7 @@ import org.springframework.stereotype.Repository; ...@@ -11,4 +11,7 @@ import org.springframework.stereotype.Repository;
@Repository @Repository
public interface ESElavtorRepository extends PagingAndSortingRepository<EsElevator, Long> { public interface ESElavtorRepository extends PagingAndSortingRepository<EsElevator, Long> {
Long countByVersion(Long version);
void deleteByVersionIsNot(Long version);
} }
package com.yeejoin.amos.boot.module.elevator.biz.job; package com.yeejoin.amos.boot.module.elevator.biz.job;
import com.yeejoin.amos.boot.module.elevator.api.service.IElevatorService; import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.elevator.api.entity.ElevatorSynLog;
import com.yeejoin.amos.boot.module.elevator.api.mapper.ElevatorMapper;
import com.yeejoin.amos.boot.module.elevator.biz.service.impl.ESElevatorServiceImpl;
import com.yeejoin.amos.boot.module.elevator.biz.service.impl.ElevatorSynLogServiceImpl;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.javacrumbs.shedlock.spring.annotation.SchedulerLock; import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.StopWatch;
import java.util.List;
import java.util.Map;
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j
public class SynElevator2EsJob { public class SynElevator2EsJob {
private final IElevatorService iElevatorService; private final ElevatorMapper elevatorMapper;
private final ESElevatorServiceImpl esElevatorService;
private final ElevatorSynLogServiceImpl elevatorSynLogService;
@Scheduled(cron = "${elevator.syn.insert.job.cron:0 0 2 * * ?}") @Scheduled(cron = "${elevator.syn.insert.job.cron:0 0 2 * * ?}")
@SchedulerLock(name = "synElevator2Es", lockAtMostFor = "PT1H") @SchedulerLock(name = "synElevator2Es", lockAtMostFor = "PT1H")
public void synElevator2Es() { public void synElevator2Es() {
iElevatorService.esInsert(); // 1.获取最新版本号及创建/更新当天的同步日志
StopWatch stopWatch = new StopWatch();
stopWatch.start();
ElevatorSynLog synLog = getOrCreateSynLog();
// 2.循环写入或者更新数据
Page<Map<String, Object>> page = new Page<>(0, 1000);
page = elevatorMapper.selectElevatorOfIntoManage(page, synLog.getVersion());
long allPages = page.getPages();
while (allPages > 0) {
allPages--;
Page<Map<String, Object>> result = elevatorMapper.selectElevatorOfIntoManage(page, synLog.getVersion());
List<Map<String, Object>> elevators = result.getRecords();
esElevatorService.saveEsElevator2ES(elevators, synLog.getVersion());
}
// 3.非最新版本号es索引数据删除及更新同步日志
this.clearNoUsingEsDataAndUpLog(synLog);
stopWatch.stop();
log.info("本次同步数据耗时:{}秒,数据详情:{}", stopWatch.getTotalTimeSeconds(), JSONObject.toJSONString(synLog));
}
/**
* 清除不满足条件的电梯及更新同步日志
*
* @param synLog 同步日志
*/
private void clearNoUsingEsDataAndUpLog(ElevatorSynLog synLog) {
synLog.setAfterNum(esElevatorService.getESElavtorRepository().countByVersion(synLog.getVersion()));
// 删掉非最新版本号数据
esElevatorService.getESElavtorRepository().deleteByVersionIsNot(synLog.getVersion());
synLog.setDeleteNum(synLog.getBeforeNum() - synLog.getAfterNum());
elevatorSynLogService.updateById(synLog);
}
private ElevatorSynLog getOrCreateSynLog() {
// 兼容处理 支持本天同步多次也支持按照天同步, 当天有记录则使用当天的版本号,否则按照最近日期取版本号
ElevatorSynLog daySynLog = elevatorSynLogService.getOneBySynDate(DateUtil.date());
if (daySynLog == null) { // 当天第一次同步逻辑
daySynLog = new ElevatorSynLog();
daySynLog.setSynDate(DateUtil.date());
daySynLog.setSynTime(DateUtil.date());
setIntStatisNum(daySynLog);
setVersion(daySynLog);
elevatorSynLogService.save(daySynLog);
} else { // 当天非首次同步逻辑
daySynLog.setBeforeNum(esElevatorService.getESElavtorRepository().count());
daySynLog.setVersion(daySynLog.getVersion() + 1);
daySynLog.setSynTime(DateUtil.date());
elevatorSynLogService.updateById(daySynLog);
return daySynLog;
}
return daySynLog;
}
private void setVersion(ElevatorSynLog synLog) {
ElevatorSynLog lastDaySynLog = elevatorSynLogService.getOneBySynDateLess(DateUtil.date());
if (lastDaySynLog != null) {
synLog.setVersion(lastDaySynLog.getVersion() == null ? 1 : lastDaySynLog.getVersion() + 1);
} else {
synLog.setVersion(1L);
}
}
private void setIntStatisNum(ElevatorSynLog synLog) {
synLog.setAfterNum(0L);
synLog.setDeleteNum(0L);
synLog.setBeforeNum(esElevatorService.getESElavtorRepository().count());
} }
} }
...@@ -125,6 +125,10 @@ public class ESElevatorServiceImpl { ...@@ -125,6 +125,10 @@ public class ESElevatorServiceImpl {
// } // }
public ESElavtorRepository getESElavtorRepository(){
return esElavtorRepository;
};
/** /**
* 根据关键字查询文档,关键字不为空时按相关性从大到小排序 * 根据关键字查询文档,关键字不为空时按相关性从大到小排序
* *
...@@ -138,7 +142,7 @@ public class ESElevatorServiceImpl { ...@@ -138,7 +142,7 @@ public class ESElevatorServiceImpl {
String address = elevatorDto.getAddress(); String address = elevatorDto.getAddress();
String regionCode = elevatorDto.getRegionCode(); String regionCode = elevatorDto.getRegionCode();
String alertId = elevatorDto.getAlertId(); String alertId = elevatorDto.getAlertId();
Long equipmentId = elevatorDto.getSequenceNbr(); String equipmentId = elevatorDto.getSequenceNbr();
/** /**
* 通用匹配规则,条件构建 * 通用匹配规则,条件构建
...@@ -586,17 +590,23 @@ public class ESElevatorServiceImpl { ...@@ -586,17 +590,23 @@ public class ESElevatorServiceImpl {
return result; return result;
} }
public void saveEsElevator2ES(List<Map<String, Object>> elevatorList) {
public void saveEsElevator2ES(List<Map<String, Object>> elevatorList, Long version) {
StopWatch watch = new StopWatch();
watch.start();
List<EsElevator> esElevatorList = new ArrayList<>(); List<EsElevator> esElevatorList = new ArrayList<>();
List<String> recordList = new ArrayList<>(); List<String> recordList = new ArrayList<>();
for (Map<String, Object> map : elevatorList) { for (Map<String, Object> map : elevatorList) {
EsElevator esElevator = new EsElevator(); EsElevator esElevator = new EsElevator();
// 维度
if (!ObjectUtils.isEmpty(map.get("longitude"))) { if (!ObjectUtils.isEmpty(map.get("longitude"))) {
esElevator.setLongitude(Double.parseDouble(String.valueOf(map.get("longitude")))); esElevator.setLongitude(Double.parseDouble(String.valueOf(map.get("longitude"))));
} }
// 经度
if (!ObjectUtils.isEmpty(map.get("latitude"))) { if (!ObjectUtils.isEmpty(map.get("latitude"))) {
esElevator.setLatitude(Double.parseDouble(String.valueOf(map.get("latitude")))); esElevator.setLatitude(Double.parseDouble(String.valueOf(map.get("latitude"))));
} }
esElevator.setVersion(version);
esElevator.setAddress(String.valueOf(map.get("address"))); esElevator.setAddress(String.valueOf(map.get("address")));
esElevator.setCity(String.valueOf(map.get("city"))); esElevator.setCity(String.valueOf(map.get("city")));
esElevator.setDistrict(String.valueOf(map.get("district"))); esElevator.setDistrict(String.valueOf(map.get("district")));
...@@ -608,21 +618,19 @@ public class ESElevatorServiceImpl { ...@@ -608,21 +618,19 @@ public class ESElevatorServiceImpl {
esElevator.setInnerNum(String.valueOf(map.get("innerNum"))); esElevator.setInnerNum(String.valueOf(map.get("innerNum")));
if (!ObjectUtils.isEmpty(map.get("longitude")) && !ObjectUtils.isEmpty(map.get("latitude"))) { if (!ObjectUtils.isEmpty(map.get("longitude")) && !ObjectUtils.isEmpty(map.get("latitude"))) {
Double lat = Double.parseDouble(String.valueOf(map.get("latitude"))); Double lat = Double.parseDouble(String.valueOf(map.get("latitude")));
Double lon = Double.parseDouble(String.valueOf(map.get("latitude"))); Double lon = Double.parseDouble(String.valueOf(map.get("longitude")));
esElevator.setLocation(new GeoPoint(lat, lon)); esElevator.setLocation(new GeoPoint(lat, lon));
} }
esElevatorList.add(esElevator); esElevatorList.add(esElevator);
recordList.add(String.valueOf(map.get("sequenceNbr"))); recordList.add(String.valueOf(map.get("sequenceNbr")));
} }
StopWatch watch = new StopWatch();
watch.start();
esElavtorRepository.saveAll(esElevatorList); esElavtorRepository.saveAll(esElevatorList);
watch.stop();
log.info("批量存入es:【{}】条,耗时:{} 毫秒", elevatorList.size(),watch.getTotalTimeSeconds());
StopWatch watch2 = new StopWatch(); StopWatch watch2 = new StopWatch();
watch2.start(); watch2.start();
superviseInfoMapper.updateRecordBatch(recordList); superviseInfoMapper.updateRecordBatch(recordList, version);
watch2.stop(); watch2.stop();
log.info("批量更新:【{}】条业务数据,耗时:{} 毫秒", elevatorList.size(), watch2.getTotalTimeSeconds()); log.info("批量更新:【{}】条业务数据,耗时:{} 毫秒", elevatorList.size(), watch2.getTotalTimeSeconds());
watch.stop();
log.info("创建电梯索引数据整体耗时:【{}】条业务数据,耗时:{} 毫秒", elevatorList.size(), watch.getTotalTimeSeconds());
} }
} }
...@@ -330,19 +330,6 @@ public class ElevatorServiceImpl extends BaseService<ElevatorDto, Elevator, Elev ...@@ -330,19 +330,6 @@ public class ElevatorServiceImpl extends BaseService<ElevatorDto, Elevator, Elev
return elevatorMapper.selectUseUnitByAlertId(sequenceNbr); return elevatorMapper.selectUseUnitByAlertId(sequenceNbr);
} }
@Override
public Long esInsert() {
Page<Map<String, Object>> page = new Page<>(0, 1000);
page = elevatorMapper.selectElevatorOfIntoManage(page);
long allPages = page.getPages();
while (allPages > 0){
allPages --;
Page<Map<String, Object>> result = elevatorMapper.selectElevatorOfIntoManage(page);
List<Map<String, Object>> elevators = result.getRecords();
esElevatorService.saveEsElevator2ES(elevators);
}
return page.getTotal();
}
@Override @Override
public Page<Map<String, Object>> selectElevators(Page<Map<String, Object>> page, ElevatorDto dto) { public Page<Map<String, Object>> selectElevators(Page<Map<String, Object>> page, ElevatorDto dto) {
......
package com.yeejoin.amos.boot.module.elevator.biz.service.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.module.elevator.api.dto.ElevatorSynLogDto;
import com.yeejoin.amos.boot.module.elevator.api.entity.ElevatorSynLog;
import com.yeejoin.amos.boot.module.elevator.api.mapper.ElevatorSynLogMapper;
import com.yeejoin.amos.boot.module.elevator.api.service.IElevatorSynLogService;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import java.util.Date;
/**
* 服务实现类
*
* @author system_generator
* @date 2025-03-28
*/
@Service
public class ElevatorSynLogServiceImpl extends BaseService<ElevatorSynLogDto, ElevatorSynLog, ElevatorSynLogMapper> implements IElevatorSynLogService {
/**
* 指定日期的更新日志
* @param synDate 指定日期
* @return 指定日期的同步记录
*/
public ElevatorSynLog getOneBySynDate(Date synDate) {
LambdaQueryWrapper<ElevatorSynLog> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ElevatorSynLog::getSynDate, DateUtil.formatDate(synDate));
return this.getOne(queryWrapper);
}
/**
* 获取最近的小于指定日期的最新日志
* @param synDate 指定日期
* @return 指定日期最近的同步记录
*/
public ElevatorSynLog getOneBySynDateLess(Date synDate) {
LambdaQueryWrapper<ElevatorSynLog> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.le(ElevatorSynLog::getSynDate, DateUtil.formatDate(synDate));
queryWrapper.select(BaseEntity::getSequenceNbr,ElevatorSynLog::getVersion);
queryWrapper.last("limit 1");
return this.getOne(queryWrapper);
}
}
\ No newline at end of file
...@@ -1168,7 +1168,7 @@ public class EquipmentCategoryServiceImpl extends BaseService<EquipmentCategoryD ...@@ -1168,7 +1168,7 @@ public class EquipmentCategoryServiceImpl extends BaseService<EquipmentCategoryD
System.out.println("批量存入es1000条数据耗时:" + cost); System.out.println("批量存入es1000条数据耗时:" + cost);
long start1 = System.currentTimeMillis(); long start1 = System.currentTimeMillis();
superviseInfoMapper.updateRecordBatch(recordList); // superviseInfoMapper.updateRecordBatch(recordList, version);
long end1 = System.currentTimeMillis(); long end1 = System.currentTimeMillis();
long cost1 = end1 - start1; long cost1 = end1 - start1;
System.out.println("批量更新1000条业务数据耗时:" + cost1); System.out.println("批量更新1000条业务数据耗时:" + cost1);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment