Commit 84900566 authored by suhuiguang's avatar suhuiguang

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

1.人员、企业、设备增量更新公共代码
parent 518c38d2
package com.yeejoin.amos.boot.module.common.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;
/**
* @author system_generator
* @date 2025-07-02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "TzsDataRefreshMessageDto", description = "")
public class TzsDataRefreshMessageDto extends BaseDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "业务数据ID")
private String dataId;
@ApiModelProperty(value = "数据类型")
private String dataType;
@ApiModelProperty(value = "操作类型(INSERT/UPDATE/DELETE)")
private String operation;
@ApiModelProperty(value = "0-待处理 1-处理中 2-处理成功 3-处理失败")
private Integer status;
@ApiModelProperty(value = "错误描述")
private String errorMsg;
}
package com.yeejoin.amos.boot.module.common.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-07-02
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("tzs_data_refresh_message")
public class TzsDataRefreshMessage extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 业务数据ID
*/
@TableField("data_id")
private String dataId;
/**
* 数据类型
*/
@TableField("data_type")
private String dataType;
/**
* 操作类型(INSERT/UPDATE/DELETE)
*/
@TableField("operation")
private String operation;
/**
* 1-处理中 2-处理成功 3-处理失败
*/
@TableField("status")
private Integer status;
/**
* 错误消息描述
*/
@TableField("error_msg")
private String errorMsg;
}
package com.yeejoin.amos.boot.module.common.api.mapper;
import com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* Mapper 接口
*
* @author system_generator
* @date 2025-07-02
*/
public interface TzsDataRefreshMessageMapper extends BaseMapper<TzsDataRefreshMessage> {
}
package com.yeejoin.amos.boot.module.common.api.service;
import com.yeejoin.amos.boot.module.common.api.dto.TzsDataRefreshMessageDto;
import com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage;
public interface IDataRefreshService {
public interface IDataRefreshDispatch {
void refresh(TzsDataRefreshMessageDto message);
void doDispatch(TzsDataRefreshMessage message);
}
package com.yeejoin.amos.boot.module.common.api.service;
public interface IDataRefresHandler {
import com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage;
public interface IDataRefreshHandler {
String supportType();
void doRefresh(TzsDataRefreshMessage message);
}
package com.yeejoin.amos.boot.module.common.api.service;
/**
* 接口类
*
* @author system_generator
* @date 2025-07-02
*/
public interface ITzsDataRefreshMessageService {
}
<?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.common.api.mapper.TzsDataRefreshMessageMapper">
</mapper>
......@@ -16,4 +16,16 @@ public class Constants {
currentStatusNameMap.put(5,"已完结");
currentStatusNameMap.put(6,"维修中");
}
/**
* 0-待处理 1-处理中 2-处理成功 3-处理失败
*/
public static final Integer REFRESH_STATUS_DEALING = 1;
public static final Integer REFRESH_STATUS_SUCCESS = 2;
public static final Integer REFRESH_STATUS_FAILURE = 3;
}
package com.yeejoin.amos.boot.module.common.biz.change;
package com.yeejoin.amos.boot.module.common.biz.refresh;
import lombok.Getter;
import org.springframework.context.ApplicationEvent;
public class DataChangeEvent extends ApplicationEvent {
@Getter
public class DataRefreshEvent extends ApplicationEvent {
/**
* 业务数据ID:设备record、企业的id、人员的id
*/
private final String dataId;
/**
* 数据类型
*/
private final String dataType;
/**
* 操作类型(INSERT/UPDATE/DELETE)--暂无用途
*/
private final Operation operation;
/**
* Create a new {@code ApplicationEvent}.
*
* @param source the object on which the event initially occurred or with
* which the event is associated (never {@code null})
*/
public DataChangeEvent(Object source) {
public DataRefreshEvent(Object source, String dataId, String dataType, Operation operation) {
super(source);
this.dataId = dataId;
this.dataType = dataType;
this.operation = operation;
}
public enum Operation {
INSERT,
UPDATE,
DELETE
}
}
package com.yeejoin.amos.boot.module.tcm.biz.refresh;
package com.yeejoin.amos.boot.module.common.biz.refresh.dispatch;
import com.yeejoin.amos.boot.module.common.api.dto.TzsDataRefreshMessageDto;
import com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage;
import com.yeejoin.amos.boot.module.common.api.service.IDataRefreshDispatch;
import com.yeejoin.amos.boot.module.common.biz.constats.Constants;
import com.yeejoin.amos.boot.module.common.biz.refresh.factory.RefreshHandlerFactory;
import com.yeejoin.amos.boot.module.common.biz.service.impl.TzsDataRefreshMessageServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
@RequiredArgsConstructor
public class TcmRefreshDispatch implements IDataRefreshDispatch {
public class RefreshDispatch implements IDataRefreshDispatch {
private final RefreshHandlerFactory handlerFactory;
private final TzsDataRefreshMessageServiceImpl tzsDataRefreshMessageService;
@Override
public void doDispatch(TzsDataRefreshMessageDto message) {
@Async
public void doDispatch(TzsDataRefreshMessage message) {
handlerFactory.getRefreshHandler(message.getDataType()).doRefresh(message);
finishMessage(message);
}
private void finishMessage(TzsDataRefreshMessage message) {
message.setStatus(Constants.REFRESH_STATUS_SUCCESS);
message.setRecDate(new Date());
tzsDataRefreshMessageService.saveOrUpdate(message);
}
}
package com.yeejoin.amos.boot.module.common.biz.refresh.factory;
import com.yeejoin.amos.boot.module.common.api.service.IDataRefreshHandler;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@Component
@RequiredArgsConstructor
public class RefreshHandlerFactory {
private final List<IDataRefreshHandler> handlers;
private final Map<String, IDataRefreshHandler> handlerMap = new ConcurrentHashMap<>();
public IDataRefreshHandler getRefreshHandler(String dataType) {
return handlerMap.computeIfAbsent(dataType, (k) -> {
for (IDataRefreshHandler handler : handlers) {
if (handler.supportType().equals(dataType)) {
return handler;
}
}
throw new BadRequest("not found refresh handler for " + dataType);
});
}
}
package com.yeejoin.amos.boot.module.common.biz.refresh;
package com.yeejoin.amos.boot.module.common.biz.refresh.listener;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.common.api.dto.TzsDataRefreshMessageDto;
import com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage;
import com.yeejoin.amos.boot.module.common.api.service.IDataRefreshDispatch;
import com.yeejoin.amos.boot.module.common.biz.constats.Constants;
import com.yeejoin.amos.boot.module.common.biz.refresh.DataRefreshEvent;
import com.yeejoin.amos.boot.module.common.biz.service.impl.TzsDataRefreshMessageServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
......@@ -42,7 +42,7 @@ public class DataRefreshListener {
@TransactionalEventListener(value = DataRefreshEvent.class)
@Async
public void onEquipCreateOrEdit(DataRefreshEvent event) {
log.info("收到变更消息:{}", JSONObject.toJSONString(event));
log.info("收到数据刷新消息:{}", JSONObject.toJSONString(event));
queue.add(event);
}
......@@ -71,13 +71,12 @@ public class DataRefreshListener {
message.setDataId(event.getDataId());
message.setDataType(event.getDataType());
message.setOperation(event.getOperation().name());
message.setStatus(0);
message.setStatus(Constants.REFRESH_STATUS_DEALING); // 流程中
tzsDataRefreshMessageService.save(message);
TzsDataRefreshMessageDto dataRefreshMessageDto = BeanUtil.copyProperties(message, TzsDataRefreshMessageDto.class);
// 2.调用更新处理
dataRefreshService.ifPresent(service -> service.refresh(dataRefreshMessageDto));
dataRefreshService.ifPresent(service -> service.doDispatch(message));
} catch (Exception e) {
message.setStatus(2); // 标记为失败
message.setStatus(Constants.REFRESH_STATUS_FAILURE); // 标记为失败
message.setErrorMsg(e.getMessage());
tzsDataRefreshMessageService.saveOrUpdate(message);
}
......
package com.yeejoin.amos.boot.module.common.biz.service.impl;
import com.yeejoin.amos.boot.module.common.api.entity.TzsDataRefreshMessage;
import com.yeejoin.amos.boot.module.common.api.mapper.TzsDataRefreshMessageMapper;
import com.yeejoin.amos.boot.module.common.api.service.ITzsDataRefreshMessageService;
import com.yeejoin.amos.boot.module.common.api.dto.TzsDataRefreshMessageDto;
import org.typroject.tyboot.core.rdbms.service.BaseService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
/**
* 服务实现类
*
* @author system_generator
* @date 2025-07-02
*/
@Service
public class TzsDataRefreshMessageServiceImpl extends BaseService<TzsDataRefreshMessageDto,TzsDataRefreshMessage,TzsDataRefreshMessageMapper> implements ITzsDataRefreshMessageService {
/**
* 分页查询
*/
public Page<TzsDataRefreshMessageDto> queryForTzsDataRefreshMessagePage(Page<TzsDataRefreshMessageDto> page) {
return this.queryForPage(page, null, false);
}
/**
* 列表查询 示例
*/
public List<TzsDataRefreshMessageDto> queryForTzsDataRefreshMessageList() {
return this.queryForList("" , false);
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.common.biz.utils;
public class RefreshDataUtil {
import com.alibaba.fastjson.JSON;
import java.util.List;
public class RefreshDataUtils {
/**
* 判断字符串是否为合法的 JSON 格式
*/
public static boolean isJSONValid(String test) {
try {
JSON.parseArray(test);
return true;
} catch (Exception ex) {
return false;
}
}
public static String castStrList2String(String jsonTypesStr) {
if (!isNullOrEmpty(jsonTypesStr)) {
if (isJSONValid(jsonTypesStr)) {
List<String> posts = JSON.parseArray(jsonTypesStr, String.class);
return String.join(",", posts);
}
return jsonTypesStr;
}
return null;
}
public static boolean isNullOrEmpty(String str) {
return str == null || str.trim().isEmpty() || "null".equals(str);
}
}
package com.yeejoin.amos.boot.module.jg.biz.statistics.service;
package com.yeejoin.amos.boot.module.jg.biz.refresh;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
......@@ -7,7 +7,6 @@ import com.yeejoin.amos.boot.module.common.api.entity.ESEquipmentInfo;
import com.yeejoin.amos.boot.module.common.biz.utils.TechParamUtil;
import com.yeejoin.amos.boot.module.jg.biz.edit.backup.TechParamsBackupService;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
......
package com.yeejoin.amos.boot.module.tcm.biz.refresh.handler;
package com.yeejoin.amos.boot.module.jg.biz.refresh.handler;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.module.common.api.dao.EsBaseEnterpriseInfoDao;
import com.yeejoin.amos.boot.module.common.api.dao.EsUserInfoDao;
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.dao.EsEquipmentDao;
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.TzsDataRefreshMessage;
import com.yeejoin.amos.boot.module.common.api.service.IDataRefreshHandler;
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.TzBaseUnitLicence;
import com.yeejoin.amos.boot.module.tcm.api.entity.TzsUserInfo;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzBaseEnterpriseInfoMapper;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzBaseUnitLicenceMapper;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserInfoMapper;
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.impl.IdxBizJgDesignInfoServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.IdxBizJgFactoryInfoServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.IdxBizJgMaintenanceRecordInfoServiceImpl;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.IdxBizJgUseInfoServiceImpl;
import com.yeejoin.amos.boot.module.ymt.api.entity.*;
import com.yeejoin.amos.boot.module.ymt.api.mapper.CategoryOtherInfoMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.Map;
import static com.alibaba.fastjson.JSON.toJSONString;
@Component
@RequiredArgsConstructor
public class CompanyRefreshHandler implements IDataRefreshHandler {
private final EsBaseEnterpriseInfoDao enterpriseInfoDao;
private final TzBaseUnitLicenceMapper licenceMapper;
@Slf4j
public class EquipRefreshHandler implements IDataRefreshHandler {
private final TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper;
private final IdxBizJgUseInfoServiceImpl useInfoService;
private final IdxBizJgFactoryInfoServiceImpl factoryInfoService;
private final IIdxBizJgInspectionDetectionInfoService iIdxBizJgInspectionDetectionInfoService;
private final CategoryOtherInfoMapper categoryOtherInfoMapper;
private final EsEquipmentDao esEquipmentDao;
private final IdxBizJgMaintenanceRecordInfoServiceImpl maintenanceRecordInfoService;
private final IdxBizJgDesignInfoServiceImpl idxBizJgDesignInfoServiceImpl;
private final StatisticsDataUpdateService statisticsDataUpdateService;
private final TzsUserInfoMapper userInfoMapper;
private final EsUserInfoDao esUserInfoDao;
@Override
public String supportType() {
......@@ -43,30 +51,40 @@ public class CompanyRefreshHandler implements IDataRefreshHandler {
@Override
public void doRefresh(TzsDataRefreshMessage message) {
// 企业信息更新
TzBaseEnterpriseInfo enterpriseInfo = tzBaseEnterpriseInfoMapper.selectById(message.getDataId());
EsBaseEnterpriseInfo esBaseEnterpriseInfo = new EsBaseEnterpriseInfo();
BeanUtil.copyProperties(enterpriseInfo, esBaseEnterpriseInfo);
esBaseEnterpriseInfo.setSequenceNbr(enterpriseInfo.getSequenceNbr() + "");
esBaseEnterpriseInfo.setEquipCategory(RefreshDataUtils.castStrList2String(enterpriseInfo.getEquipCategory()));
List<TzBaseUnitLicence> unitLicences = licenceMapper.selectList(new LambdaQueryWrapper<TzBaseUnitLicence>().eq(TzBaseUnitLicence::getUnitCode, enterpriseInfo.getUseUnitCode()).eq(TzBaseUnitLicence::getIsDelete, false));
List<EsBaseEnterpriseInfo.License> licenses = unitLicences.stream().map(lis -> {
EsBaseEnterpriseInfo.License esLicense = new EsBaseEnterpriseInfo.License();
BeanUtil.copyProperties(lis, esLicense);
return esLicense;
}).collect(Collectors.toList());
esBaseEnterpriseInfo.setLicenses(licenses);
enterpriseInfoDao.save(esBaseEnterpriseInfo);
// 人员更新冗余的单位信息
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);
log.info("3库数据,设备开始刷库:唯一标识:{}", message.getDataId());
String record = message.getDataId();
ESEquipmentInfo esEquipmentInfo = new ESEquipmentInfo();
Map<String, Object> map = categoryOtherInfoMapper.selectDataById(record);
ESEquipmentCategoryDto categoryEs = JSON.parseObject(toJSONString(map), ESEquipmentCategoryDto.class);
BeanUtil.copyProperties(categoryEs, esEquipmentInfo);
IdxBizJgUseInfo useInfo = useInfoService.getOne(new LambdaQueryWrapper<IdxBizJgUseInfo>().eq(IdxBizJgUseInfo::getRecord, record).select(IdxBizJgUseInfo::getRecord, IdxBizJgUseInfo::getCreateDate));
IdxBizJgDesignInfo designInfo = idxBizJgDesignInfoServiceImpl.getOne(new LambdaQueryWrapper<IdxBizJgDesignInfo>()
.eq(IdxBizJgDesignInfo::getRecord, record)
.select(IdxBizJgDesignInfo::getRecord, IdxBizJgDesignInfo::getDesignUnitName, IdxBizJgDesignInfo::getDesignUnitCreditCode));
IdxBizJgFactoryInfo factoryInfo = factoryInfoService.getOne(new LambdaQueryWrapper<IdxBizJgFactoryInfo>()
.eq(IdxBizJgFactoryInfo::getRecord, record)
.select(IdxBizJgFactoryInfo::getRecord, IdxBizJgFactoryInfo::getProduceUnitCreditCode));
IdxBizJgInspectionDetectionInfo inspectionDetectionInfo = iIdxBizJgInspectionDetectionInfoService.queryNewestDetailByRecord(record);
IdxBizJgMaintenanceRecordInfo lastMaintenanceRecordInfo = maintenanceRecordInfoService.queryNewestDetailByRecord(record);
try {
esEquipmentInfo.setINSPECT_DATE(inspectionDetectionInfo.getSequenceNbr() != null ? inspectionDetectionInfo.getInspectDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate() : null);
esEquipmentInfo.setNEXT_INSPECT_DATE(inspectionDetectionInfo.getSequenceNbr() != null ? inspectionDetectionInfo.getNextInspectDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate() : 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);
}
private List<ESEquipmentInfo.TechParam> buildTechParamByEquList(String record, String equListCode) {
return StringUtils.isNotEmpty(equListCode) ? statisticsDataUpdateService.getTechParams(equListCode, record) : new ArrayList<>();
}
}
......@@ -40,7 +40,7 @@ import com.yeejoin.amos.boot.module.jg.api.mapper.*;
import com.yeejoin.amos.boot.module.jg.biz.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jg.biz.handler.strategy.ProblemHandleStrategy;
import com.yeejoin.amos.boot.module.jg.biz.service.IIdxBizJgInspectionDetectionInfoService;
import com.yeejoin.amos.boot.module.jg.biz.statistics.service.StatisticsDataUpdateService;
import com.yeejoin.amos.boot.module.jg.biz.refresh.StatisticsDataUpdateService;
import com.yeejoin.amos.boot.module.ymt.api.dto.EquipWaitRefreshDataQualityScore;
import com.yeejoin.amos.boot.module.ymt.api.dto.ProjectWaitRefreshDataQualityScore;
import com.yeejoin.amos.boot.module.ymt.api.dto.RefreshDataDto;
......
package com.yeejoin.amos.boot.module.tcm.biz.refresh;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.module.common.api.entity.EsUserInfo;
import com.yeejoin.amos.boot.module.common.api.entity.TzsUserPermission;
import com.yeejoin.amos.boot.module.common.biz.utils.RefreshDataUtils;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserPermissionMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class CommonRefreshService {
private final TzsUserPermissionMapper userPermissionMapper;
public List<EsUserInfo.License> buildUserLicenses(Long sequenceNbr) {
List<TzsUserPermission> permissions = userPermissionMapper.selectList(new LambdaQueryWrapper<TzsUserPermission>().eq(TzsUserPermission::getUserSeq, sequenceNbr));
return permissions.stream().map(p -> {
EsUserInfo.License license = new EsUserInfo.License();
BeanUtil.copyProperties(p, license);
license.setPermissionItem(RefreshDataUtils.castStrList2String(p.getPermissionItem()));
license.setJobItem(RefreshDataUtils.castStrList2String(p.getJobItem()));
return license;
}).collect(Collectors.toList());
}
}
......@@ -26,7 +26,7 @@ import java.util.stream.Collectors;
@Component
@RequiredArgsConstructor
@Slf4j
public class CompanyRefreshHandler implements IDataRefreshHandler {
public class EnterpriseRefreshHandler implements IDataRefreshHandler {
private final EsBaseEnterpriseInfoDao enterpriseInfoDao;
......@@ -40,7 +40,7 @@ public class CompanyRefreshHandler implements IDataRefreshHandler {
@Override
public String supportType() {
return "company";
return "enterprise";
}
@Override
......
package com.yeejoin.amos.boot.module.tcm.biz.refresh;
package com.yeejoin.amos.boot.module.tcm.biz.refresh.handler;
import com.yeejoin.amos.boot.module.common.api.dto.TzsDataRefreshMessageDto;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
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.TzsDataRefreshMessage;
import com.yeejoin.amos.boot.module.common.api.entity.TzsUserPermission;
import com.yeejoin.amos.boot.module.common.api.service.IDataRefreshHandler;
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.TzsUserInfo;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzBaseEnterpriseInfoMapper;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserInfoMapper;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsUserPermissionMapper;
import com.yeejoin.amos.boot.module.tcm.biz.refresh.CommonRefreshService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.util.StopWatch;
import java.util.List;
import java.util.stream.Collectors;
@Component
public class CompanyRefreshHandler implements IDataRefreshHandler {
@Slf4j
@RequiredArgsConstructor
public class UserRefreshHandler implements IDataRefreshHandler {
private final TzBaseEnterpriseInfoMapper enterpriseInfoMapper;
private final TzsUserInfoMapper userInfoMapper;
private final EsUserInfoDao esUserInfoDao;
private final CommonRefreshService commonRefreshService;
@Override
public String supportType() {
return "company";
return "user";
}
@Override
public void doRefresh(TzsDataRefreshMessageDto message) {
public void doRefresh(TzsDataRefreshMessage message) {
log.info("3库数据,人员开始刷库:唯一标识:{}", message.getDataId());
StopWatch watch = new StopWatch();
watch.start();
TzsUserInfo userInfo = userInfoMapper.selectById(message.getDataId());
TzBaseEnterpriseInfo unit = enterpriseInfoMapper.selectOne(new LambdaQueryWrapper<TzBaseEnterpriseInfo>()
.select(BaseEntity::getSequenceNbr,
TzBaseEnterpriseInfo::getUseCode,
TzBaseEnterpriseInfo::getUseUnit,
TzBaseEnterpriseInfo::getUnitType,
TzBaseEnterpriseInfo::getSuperviseOrgCode,
TzBaseEnterpriseInfo::getSuperviseOrgName
).eq(BaseEntity::getIsDelete, false).eq(TzBaseEnterpriseInfo::getUseCode, userInfo.getUnitCode()));
EsUserInfo esUserInfo = new EsUserInfo();
BeanUtil.copyProperties(userInfo, esUserInfo);
esUserInfo.setPost(RefreshDataUtils.castStrList2String(userInfo.getPost()));
esUserInfo.setNewPost(RefreshDataUtils.castStrList2String(userInfo.getNewPost()));
esUserInfo.setSubPost(RefreshDataUtils.castStrList2String(userInfo.getSubPost()));
esUserInfo.setEquipType(RefreshDataUtils.castStrList2String(userInfo.getEquipType()));
esUserInfo.setUnitType(unit.getUnitType());
esUserInfo.setSuperviseOrgName(unit.getSuperviseOrgName());
esUserInfo.setSuperviseOrgCode(unit.getSuperviseOrgCode());
esUserInfo.setLicenses(commonRefreshService.buildUserLicenses(userInfo.getSequenceNbr()));
esUserInfoDao.save(esUserInfo);
}
}
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