Commit bf4f5d07 authored by suhuiguang's avatar suhuiguang

feat(综合搜索):增量更新

1.、数据同步增加删除逻辑
parent e25fb137
...@@ -6,4 +6,5 @@ import org.springframework.stereotype.Repository; ...@@ -6,4 +6,5 @@ import org.springframework.stereotype.Repository;
@Repository @Repository
public interface EsUserInfoDao extends PagingAndSortingRepository<EsUserInfo, String> { public interface EsUserInfoDao extends PagingAndSortingRepository<EsUserInfo, String> {
void deleteAllByUnitCode(String useCode);
} }
...@@ -8,6 +8,7 @@ import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto; ...@@ -8,6 +8,7 @@ import com.yeejoin.amos.boot.module.common.api.dto.ESEquipmentCategoryDto;
import com.yeejoin.amos.boot.module.common.api.entity.ESEquipmentInfo; import com.yeejoin.amos.boot.module.common.api.entity.ESEquipmentInfo;
import com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage; import com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage;
import com.yeejoin.amos.boot.module.common.api.service.IDataRefreshHandler; import com.yeejoin.amos.boot.module.common.api.service.IDataRefreshHandler;
import com.yeejoin.amos.boot.module.common.biz.refresh.DataRefreshEvent;
import com.yeejoin.amos.boot.module.jg.biz.refresh.StatisticsDataUpdateService; import com.yeejoin.amos.boot.module.jg.biz.refresh.StatisticsDataUpdateService;
import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgInspectionDetectionInfoService; import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgInspectionDetectionInfoService;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.IdxBizJgDesignInfoServiceImpl; import com.yeejoin.amos.boot.module.jg.biz.service.impl.IdxBizJgDesignInfoServiceImpl;
...@@ -52,36 +53,45 @@ public class EquipRefreshHandler implements IDataRefreshHandler { ...@@ -52,36 +53,45 @@ public class EquipRefreshHandler implements IDataRefreshHandler {
@Override @Override
public void doRefresh(TzsDataRefreshMessage message) { public void doRefresh(TzsDataRefreshMessage message) {
log.info("3库数据,设备开始刷库:唯一标识:{}", message.getDataId()); log.info("3库数据,设备开始刷库:唯一标识:{}", message.getDataId());
String record = message.getDataId(); switch (DataRefreshEvent.Operation.valueOf(message.getOperation())){
ESEquipmentInfo esEquipmentInfo = new ESEquipmentInfo(); case DELETE:
Map<String, Object> map = categoryOtherInfoMapper.selectDataById(record); esEquipmentDao.deleteById(message.getDataId());
ESEquipmentCategoryDto categoryEs = JSON.parseObject(toJSONString(map), ESEquipmentCategoryDto.class); case INSERT:
BeanUtil.copyProperties(categoryEs, esEquipmentInfo); case UPDATE:
IdxBizJgUseInfo useInfo = useInfoService.getOne(new LambdaQueryWrapper<IdxBizJgUseInfo>().eq(IdxBizJgUseInfo::getRecord, record).select(IdxBizJgUseInfo::getRecord, IdxBizJgUseInfo::getCreateDate)); String record = message.getDataId();
IdxBizJgDesignInfo designInfo = idxBizJgDesignInfoServiceImpl.getOne(new LambdaQueryWrapper<IdxBizJgDesignInfo>() ESEquipmentInfo esEquipmentInfo = new ESEquipmentInfo();
.eq(IdxBizJgDesignInfo::getRecord, record) Map<String, Object> map = categoryOtherInfoMapper.selectDataById(record);
.select(IdxBizJgDesignInfo::getRecord, IdxBizJgDesignInfo::getDesignUnitName, IdxBizJgDesignInfo::getDesignUnitCreditCode)); ESEquipmentCategoryDto categoryEs = JSON.parseObject(toJSONString(map), ESEquipmentCategoryDto.class);
IdxBizJgFactoryInfo factoryInfo = factoryInfoService.getOne(new LambdaQueryWrapper<IdxBizJgFactoryInfo>() BeanUtil.copyProperties(categoryEs, esEquipmentInfo);
.eq(IdxBizJgFactoryInfo::getRecord, record) IdxBizJgUseInfo useInfo = useInfoService.getOne(new LambdaQueryWrapper<IdxBizJgUseInfo>().eq(IdxBizJgUseInfo::getRecord, record).select(IdxBizJgUseInfo::getRecord, IdxBizJgUseInfo::getCreateDate));
.select(IdxBizJgFactoryInfo::getRecord, IdxBizJgFactoryInfo::getProduceUnitCreditCode)); IdxBizJgDesignInfo designInfo = idxBizJgDesignInfoServiceImpl.getOne(new LambdaQueryWrapper<IdxBizJgDesignInfo>()
IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = iIdxBizJgInspectionDetectionInfoService.queryNewestDetailByRecord(record); .eq(IdxBizJgDesignInfo::getRecord, record)
IdxBizJgMaintenanceRecordInfo lastMaintenanceRecordInfo = maintenanceRecordInfoService.queryNewestDetailByRecord(record); .select(IdxBizJgDesignInfo::getRecord, IdxBizJgDesignInfo::getDesignUnitName, IdxBizJgDesignInfo::getDesignUnitCreditCode));
try { IdxBizJgFactoryInfo factoryInfo = factoryInfoService.getOne(new LambdaQueryWrapper<IdxBizJgFactoryInfo>()
esEquipmentInfo.setINSPECT_DATE(inspectionDetectionInfo.getSequenceNbr() != null ? inspectionDetectionInfo.getInspectDate() != null ? inspectionDetectionInfo.getInspectDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate() : null :null); .eq(IdxBizJgFactoryInfo::getRecord, record)
esEquipmentInfo.setNEXT_INSPECT_DATE(inspectionDetectionInfo.getSequenceNbr() != null ? inspectionDetectionInfo.getNextInspectDate() != null ? inspectionDetectionInfo.getNextInspectDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate() : null :null); .select(IdxBizJgFactoryInfo::getRecord, IdxBizJgFactoryInfo::getProduceUnitCreditCode));
esEquipmentInfo.setCreateDate(useInfo.getCreateDate() != null ? useInfo.getCreateDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime() : null); IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = iIdxBizJgInspectionDetectionInfoService.queryNewestDetailByRecord(record);
} catch (Exception e) { IdxBizJgMaintenanceRecordInfo lastMaintenanceRecordInfo = maintenanceRecordInfoService.queryNewestDetailByRecord(record);
log.error("时区转换失败:{}", record, e); try {
esEquipmentInfo.setINSPECT_DATE(inspectionDetectionInfo.getSequenceNbr() != null ? inspectionDetectionInfo.getInspectDate() != null ? inspectionDetectionInfo.getInspectDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate() : null :null);
esEquipmentInfo.setNEXT_INSPECT_DATE(inspectionDetectionInfo.getSequenceNbr() != null ? inspectionDetectionInfo.getNextInspectDate() != null ? inspectionDetectionInfo.getNextInspectDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate() : null :null);
esEquipmentInfo.setCreateDate(useInfo.getCreateDate() != null ? useInfo.getCreateDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime() : null);
} catch (Exception e) {
log.error("时区转换失败:{}", record, e);
}
esEquipmentInfo.setDesignUnitCreditCode(designInfo.getDesignUnitCreditCode());
esEquipmentInfo.setMAINTAIN_UNIT(lastMaintenanceRecordInfo.getMeUnitCreditCode());
esEquipmentInfo.setMAINTAIN_UNIT_NAME(lastMaintenanceRecordInfo.getMeUnitName());
esEquipmentInfo.setDesignUnitName(designInfo.getDesignUnitName());
esEquipmentInfo.setProduceUnitCreditCode(factoryInfo.getProduceUnitCreditCode());
esEquipmentInfo.setInspections(inspectionDetectionInfo.getSequenceNbr() != null ? Collections.singletonList(BeanUtil.copyProperties(inspectionDetectionInfo, ESEquipmentInfo.Inspection.class)) : new ArrayList<>());
esEquipmentInfo.setMaintenances(lastMaintenanceRecordInfo.getSequenceNbr() != null ? Collections.singletonList(BeanUtil.copyProperties(lastMaintenanceRecordInfo, ESEquipmentInfo.Maintenance.class)) : new ArrayList<>());
esEquipmentInfo.setTechParams(this.buildTechParamByEquList(record, categoryEs.getEQU_LIST_CODE()));
esEquipmentDao.save(esEquipmentInfo);
break;
default:
log.error("uno operation: {}",message.getOperation());
} }
esEquipmentInfo.setDesignUnitCreditCode(designInfo.getDesignUnitCreditCode());
esEquipmentInfo.setMAINTAIN_UNIT(lastMaintenanceRecordInfo.getMeUnitCreditCode());
esEquipmentInfo.setMAINTAIN_UNIT_NAME(lastMaintenanceRecordInfo.getMeUnitName());
esEquipmentInfo.setDesignUnitName(designInfo.getDesignUnitName());
esEquipmentInfo.setProduceUnitCreditCode(factoryInfo.getProduceUnitCreditCode());
esEquipmentInfo.setInspections(inspectionDetectionInfo.getSequenceNbr() != null ? Collections.singletonList(BeanUtil.copyProperties(inspectionDetectionInfo, ESEquipmentInfo.Inspection.class)) : new ArrayList<>());
esEquipmentInfo.setMaintenances(lastMaintenanceRecordInfo.getSequenceNbr() != null ? Collections.singletonList(BeanUtil.copyProperties(lastMaintenanceRecordInfo, ESEquipmentInfo.Maintenance.class)) : new ArrayList<>());
esEquipmentInfo.setTechParams(this.buildTechParamByEquList(record, categoryEs.getEQU_LIST_CODE()));
esEquipmentDao.save(esEquipmentInfo);
} }
private List<ESEquipmentInfo.TechParam> buildTechParamByEquList(String record, String equListCode) { private List<ESEquipmentInfo.TechParam> buildTechParamByEquList(String record, String equListCode) {
......
...@@ -9,6 +9,7 @@ import com.yeejoin.amos.boot.module.common.api.entity.EsBaseEnterpriseInfo; ...@@ -9,6 +9,7 @@ import com.yeejoin.amos.boot.module.common.api.entity.EsBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.common.api.entity.EsUserInfo; import com.yeejoin.amos.boot.module.common.api.entity.EsUserInfo;
import com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage; import com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage;
import com.yeejoin.amos.boot.module.common.api.service.IDataRefreshHandler; import com.yeejoin.amos.boot.module.common.api.service.IDataRefreshHandler;
import com.yeejoin.amos.boot.module.common.biz.refresh.DataRefreshEvent;
import com.yeejoin.amos.boot.module.common.biz.utils.RefreshDataUtils; import com.yeejoin.amos.boot.module.common.biz.utils.RefreshDataUtils;
import com.yeejoin.amos.boot.module.tcm.api.entity.TzBaseEnterpriseInfo; import com.yeejoin.amos.boot.module.tcm.api.entity.TzBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.tcm.api.entity.TzBaseUnitLicence; import com.yeejoin.amos.boot.module.tcm.api.entity.TzBaseUnitLicence;
...@@ -46,30 +47,42 @@ public class EnterpriseRefreshHandler implements IDataRefreshHandler { ...@@ -46,30 +47,42 @@ public class EnterpriseRefreshHandler implements IDataRefreshHandler {
@Override @Override
public void doRefresh(TzsDataRefreshMessage message) { public void doRefresh(TzsDataRefreshMessage message) {
log.info("3库数据,企业开始刷库:唯一标识:{}", message.getDataId()); log.info("3库数据,企业开始刷库:唯一标识:{}", message.getDataId());
// 企业信息更新
TzBaseEnterpriseInfo enterpriseInfo = tzBaseEnterpriseInfoMapper.selectById(message.getDataId()); TzBaseEnterpriseInfo enterpriseInfo = tzBaseEnterpriseInfoMapper.selectById(message.getDataId());
EsBaseEnterpriseInfo esBaseEnterpriseInfo = new EsBaseEnterpriseInfo(); switch (DataRefreshEvent.Operation.valueOf(message.getOperation())) {
BeanUtil.copyProperties(enterpriseInfo, esBaseEnterpriseInfo); case DELETE:
esBaseEnterpriseInfo.setSequenceNbr(enterpriseInfo.getSequenceNbr() + ""); enterpriseInfoDao.deleteById(message.getDataId());
esBaseEnterpriseInfo.setEquipCategory(RefreshDataUtils.castStrList2String(enterpriseInfo.getEquipCategory())); esUserInfoDao.deleteAllByUnitCode(enterpriseInfo.getUseCode());
List<TzBaseUnitLicence> unitLicences = licenceMapper.selectList(new LambdaQueryWrapper<TzBaseUnitLicence>().eq(TzBaseUnitLicence::getUnitCode, enterpriseInfo.getUseUnitCode()).eq(TzBaseUnitLicence::getIsDelete, false)); break;
List<EsBaseEnterpriseInfo.License> licenses = unitLicences.stream().map(lis -> { case INSERT:
EsBaseEnterpriseInfo.License esLicense = new EsBaseEnterpriseInfo.License(); case UPDATE:
BeanUtil.copyProperties(lis, esLicense); // 企业信息更新
return esLicense; EsBaseEnterpriseInfo esBaseEnterpriseInfo = new EsBaseEnterpriseInfo();
}).collect(Collectors.toList()); BeanUtil.copyProperties(enterpriseInfo, esBaseEnterpriseInfo);
esBaseEnterpriseInfo.setLicenses(licenses); esBaseEnterpriseInfo.setSequenceNbr(enterpriseInfo.getSequenceNbr() + "");
enterpriseInfoDao.save(esBaseEnterpriseInfo); esBaseEnterpriseInfo.setEquipCategory(RefreshDataUtils.castStrList2String(enterpriseInfo.getEquipCategory()));
// 人员更新冗余的单位信息 List<TzBaseUnitLicence> unitLicences = licenceMapper.selectList(new LambdaQueryWrapper<TzBaseUnitLicence>().eq(TzBaseUnitLicence::getUnitCode, enterpriseInfo.getUseUnitCode()).eq(TzBaseUnitLicence::getIsDelete, false));
List<TzsUserInfo> userOfOneUnit = userInfoMapper.selectList(new LambdaQueryWrapper<TzsUserInfo>().eq(TzsUserInfo::getUnitCode, enterpriseInfo.getUseUnitCode()).eq(BaseEntity::getIsDelete, false).select(BaseEntity::getSequenceNbr)); List<EsBaseEnterpriseInfo.License> licenses = unitLicences.stream().map(lis -> {
Iterable<EsUserInfo> userInfosEs = esUserInfoDao.findAllById(userOfOneUnit.stream().map(u -> String.valueOf(u.getSequenceNbr())).collect(Collectors.toList())); EsBaseEnterpriseInfo.License esLicense = new EsBaseEnterpriseInfo.License();
userInfosEs.forEach(esUserInfo -> { BeanUtil.copyProperties(lis, esLicense);
esUserInfo.setUnitType(esBaseEnterpriseInfo.getUnitType()); return esLicense;
esUserInfo.setSuperviseOrgName(esBaseEnterpriseInfo.getSuperviseOrgName()); }).collect(Collectors.toList());
esUserInfo.setSuperviseOrgCode(esBaseEnterpriseInfo.getSuperviseOrgCode()); esBaseEnterpriseInfo.setLicenses(licenses);
}); enterpriseInfoDao.save(esBaseEnterpriseInfo);
if (userInfosEs.iterator().hasNext()) { // 人员更新冗余的单位信息
esUserInfoDao.saveAll(userInfosEs); List<TzsUserInfo> userOfOneUnit = userInfoMapper.selectList(new LambdaQueryWrapper<TzsUserInfo>().eq(TzsUserInfo::getUnitCode, enterpriseInfo.getUseUnitCode()).eq(BaseEntity::getIsDelete, false).select(BaseEntity::getSequenceNbr));
Iterable<EsUserInfo> userInfosEs = esUserInfoDao.findAllById(userOfOneUnit.stream().map(u -> String.valueOf(u.getSequenceNbr())).collect(Collectors.toList()));
userInfosEs.forEach(esUserInfo -> {
esUserInfo.setUnitType(esBaseEnterpriseInfo.getUnitType());
esUserInfo.setSuperviseOrgName(esBaseEnterpriseInfo.getSuperviseOrgName());
esUserInfo.setSuperviseOrgCode(esBaseEnterpriseInfo.getSuperviseOrgCode());
});
if (userInfosEs.iterator().hasNext()) {
esUserInfoDao.saveAll(userInfosEs);
}
break;
default:
log.error("uno operation: {}", message.getOperation());
break;
} }
} }
} }
...@@ -7,6 +7,7 @@ import com.yeejoin.amos.boot.module.common.api.dao.EsUserInfoDao; ...@@ -7,6 +7,7 @@ import com.yeejoin.amos.boot.module.common.api.dao.EsUserInfoDao;
import com.yeejoin.amos.boot.module.common.api.entity.EsUserInfo; import com.yeejoin.amos.boot.module.common.api.entity.EsUserInfo;
import com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage; import com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage;
import com.yeejoin.amos.boot.module.common.api.service.IDataRefreshHandler; import com.yeejoin.amos.boot.module.common.api.service.IDataRefreshHandler;
import com.yeejoin.amos.boot.module.common.biz.refresh.DataRefreshEvent;
import com.yeejoin.amos.boot.module.common.biz.utils.RefreshDataUtils; import com.yeejoin.amos.boot.module.common.biz.utils.RefreshDataUtils;
import com.yeejoin.amos.boot.module.tcm.api.entity.TzBaseEnterpriseInfo; import com.yeejoin.amos.boot.module.tcm.api.entity.TzBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.tcm.api.entity.TzsUserInfo; import com.yeejoin.amos.boot.module.tcm.api.entity.TzsUserInfo;
...@@ -16,7 +17,6 @@ import com.yeejoin.amos.boot.module.tcm.biz.refresh.CommonRefreshService; ...@@ -16,7 +17,6 @@ import com.yeejoin.amos.boot.module.tcm.biz.refresh.CommonRefreshService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.StopWatch;
@Component @Component
@Slf4j @Slf4j
...@@ -40,27 +40,36 @@ public class UserRefreshHandler implements IDataRefreshHandler { ...@@ -40,27 +40,36 @@ public class UserRefreshHandler implements IDataRefreshHandler {
@Override @Override
public void doRefresh(TzsDataRefreshMessage message) { public void doRefresh(TzsDataRefreshMessage message) {
log.info("3库数据,人员开始刷库:唯一标识:{}", message.getDataId()); log.info("3库数据,人员开始刷库:唯一标识:{}", message.getDataId());
StopWatch watch = new StopWatch(); switch (DataRefreshEvent.Operation.valueOf(message.getOperation())) {
watch.start(); case DELETE:
TzsUserInfo userInfo = userInfoMapper.selectById(message.getDataId()); esUserInfoDao.deleteById(message.getDataId());
TzBaseEnterpriseInfo unit = enterpriseInfoMapper.selectOne(new LambdaQueryWrapper<TzBaseEnterpriseInfo>() break;
.select(BaseEntity::getSequenceNbr, case INSERT:
TzBaseEnterpriseInfo::getUseCode, case UPDATE:
TzBaseEnterpriseInfo::getUseUnit, TzsUserInfo userInfo = userInfoMapper.selectById(message.getDataId());
TzBaseEnterpriseInfo::getUnitType, TzBaseEnterpriseInfo unit = enterpriseInfoMapper.selectOne(new LambdaQueryWrapper<TzBaseEnterpriseInfo>()
TzBaseEnterpriseInfo::getSuperviseOrgCode, .select(BaseEntity::getSequenceNbr,
TzBaseEnterpriseInfo::getSuperviseOrgName TzBaseEnterpriseInfo::getUseCode,
).eq(BaseEntity::getIsDelete, false).eq(TzBaseEnterpriseInfo::getUseCode, userInfo.getUnitCode())); TzBaseEnterpriseInfo::getUseUnit,
EsUserInfo esUserInfo = new EsUserInfo(); TzBaseEnterpriseInfo::getUnitType,
BeanUtil.copyProperties(userInfo, esUserInfo); TzBaseEnterpriseInfo::getSuperviseOrgCode,
esUserInfo.setPost(RefreshDataUtils.castStrList2String(userInfo.getPost())); TzBaseEnterpriseInfo::getSuperviseOrgName
esUserInfo.setNewPost(RefreshDataUtils.castStrList2String(userInfo.getNewPost())); ).eq(BaseEntity::getIsDelete, false).eq(TzBaseEnterpriseInfo::getUseCode, userInfo.getUnitCode()));
esUserInfo.setSubPost(RefreshDataUtils.castStrList2String(userInfo.getSubPost())); EsUserInfo esUserInfo = new EsUserInfo();
esUserInfo.setEquipType(RefreshDataUtils.castStrList2String(userInfo.getEquipType())); BeanUtil.copyProperties(userInfo, esUserInfo);
esUserInfo.setUnitType(unit.getUnitType()); esUserInfo.setPost(RefreshDataUtils.castStrList2String(userInfo.getPost()));
esUserInfo.setSuperviseOrgName(unit.getSuperviseOrgName()); esUserInfo.setNewPost(RefreshDataUtils.castStrList2String(userInfo.getNewPost()));
esUserInfo.setSuperviseOrgCode(unit.getSuperviseOrgCode()); esUserInfo.setSubPost(RefreshDataUtils.castStrList2String(userInfo.getSubPost()));
esUserInfo.setLicenses(commonRefreshService.buildUserLicenses(userInfo.getSequenceNbr())); esUserInfo.setEquipType(RefreshDataUtils.castStrList2String(userInfo.getEquipType()));
esUserInfoDao.save(esUserInfo); esUserInfo.setUnitType(unit.getUnitType());
esUserInfo.setSuperviseOrgName(unit.getSuperviseOrgName());
esUserInfo.setSuperviseOrgCode(unit.getSuperviseOrgCode());
esUserInfo.setLicenses(commonRefreshService.buildUserLicenses(userInfo.getSequenceNbr()));
esUserInfoDao.save(esUserInfo);
break;
default:
log.error("uno operation: {}", message.getOperation());
break;
}
} }
} }
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