Commit 3bb3bbd2 authored by tianyiming's avatar tianyiming

Merge remote-tracking branch 'origin/develop_tzs_register' into develop_tzs_register

parents 60fb5cfe 83843d32
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.entity.TzsDataRefreshMessage;
public interface IDataRefreshDispatch {
void doDispatch(TzsDataRefreshMessage message);
}
package com.yeejoin.amos.boot.module.common.api.service;
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 { ...@@ -16,4 +16,16 @@ public class Constants {
currentStatusNameMap.put(5,"已完结"); currentStatusNameMap.put(5,"已完结");
currentStatusNameMap.put(6,"维修中"); 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.refresh;
import lombok.Getter;
import org.springframework.context.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 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.common.biz.refresh.dispatch;
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 RefreshDispatch implements IDataRefreshDispatch {
private final RefreshHandlerFactory handlerFactory;
private final TzsDataRefreshMessageServiceImpl tzsDataRefreshMessageService;
@Override
@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.listener;
import com.alibaba.fastjson.JSONObject;
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;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.transaction.event.TransactionalEventListener;
import javax.annotation.PostConstruct;
import java.util.Optional;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.stream.IntStream;
@Component
@Slf4j
@RequiredArgsConstructor
public class DataRefreshListener {
@Value("${data.opEvent.deal.thread.number:1}")
private int threadNumber;
private final BlockingQueue<DataRefreshEvent> queue = new LinkedBlockingQueue<>();
private ExecutorService executorService;
@Autowired
private Optional<IDataRefreshDispatch> dataRefreshService;
private final TzsDataRefreshMessageServiceImpl tzsDataRefreshMessageService;
@TransactionalEventListener(value = DataRefreshEvent.class)
@Async
public void onEquipCreateOrEdit(DataRefreshEvent event) {
log.info("收到数据刷新消息:{}", JSONObject.toJSONString(event));
queue.add(event);
}
@PostConstruct
public void init() {
executorService = Executors.newFixedThreadPool(threadNumber);
IntStream.range(0, threadNumber).forEach(i -> {
executorService.execute(() -> {
while (true) {
try {
DataRefreshEvent event = queue.take();
processEvent(event);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
});
});
}
private void processEvent(DataRefreshEvent event) {
TzsDataRefreshMessage message = new TzsDataRefreshMessage();
try {
// 1.记录 message
message.setDataId(event.getDataId());
message.setDataType(event.getDataType());
message.setOperation(event.getOperation().name());
message.setStatus(Constants.REFRESH_STATUS_DEALING); // 流程中
tzsDataRefreshMessageService.save(message);
// 2.调用更新处理
dataRefreshService.ifPresent(service -> service.doDispatch(message));
} catch (Exception e) {
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;
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 cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
...@@ -7,7 +7,6 @@ import com.yeejoin.amos.boot.module.common.api.entity.ESEquipmentInfo; ...@@ -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.common.biz.utils.TechParamUtil;
import com.yeejoin.amos.boot.module.jg.biz.edit.backup.TechParamsBackupService; import com.yeejoin.amos.boot.module.jg.biz.edit.backup.TechParamsBackupService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
......
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.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.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.Map;
import static com.alibaba.fastjson.JSON.toJSONString;
@Component
@RequiredArgsConstructor
@Slf4j
public class EquipRefreshHandler implements IDataRefreshHandler {
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;
@Override
public String supportType() {
return "company";
}
@Override
public void doRefresh(TzsDataRefreshMessage message) {
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.*; ...@@ -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.feign.TzsServiceFeignClient;
import com.yeejoin.amos.boot.module.jg.biz.handler.strategy.ProblemHandleStrategy; 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.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.EquipWaitRefreshDataQualityScore;
import com.yeejoin.amos.boot.module.ymt.api.dto.ProjectWaitRefreshDataQualityScore; import com.yeejoin.amos.boot.module.ymt.api.dto.ProjectWaitRefreshDataQualityScore;
import com.yeejoin.amos.boot.module.ymt.api.dto.RefreshDataDto; import com.yeejoin.amos.boot.module.ymt.api.dto.RefreshDataDto;
......
package com.yeejoin.amos.boot.module.tcm.biz.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.ThreadPoolExecutor;
@Configuration
public class ExecuteThreadPoolConfig {
private static final Integer CORE_POOL_SIZE = Runtime.getRuntime().availableProcessors() + 1;
private static final Integer MAX_POOL_SIZE = Runtime.getRuntime().availableProcessors() * 2 + 1;
private static final Integer TASK_QUEUE_CAPACITY = Runtime.getRuntime().availableProcessors();
private static final Integer TASK_KEEP_ALIVE_TIME = 60 * 3;
@Bean(name = "tcmTaskExecutor")
public ThreadPoolTaskExecutor executeThreadPoolConfig() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(CORE_POOL_SIZE);
executor.setMaxPoolSize(MAX_POOL_SIZE);
executor.setQueueCapacity(TASK_QUEUE_CAPACITY);
executor.setThreadNamePrefix("tcmTaskExecutor-");
// 设置线程保持活跃的时间(默认:60 * 3)
executor.setKeepAliveSeconds(TASK_KEEP_ALIVE_TIME);
// 设置任务拒绝策略 通过主线程知行
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
executor.initialize();
return executor;
}
}
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());
}
}
package com.yeejoin.amos.boot.module.tcm.biz.refresh.handler;
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.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.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 lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
@Component
@RequiredArgsConstructor
@Slf4j
public class EnterpriseRefreshHandler implements IDataRefreshHandler {
private final EsBaseEnterpriseInfoDao enterpriseInfoDao;
private final TzBaseUnitLicenceMapper licenceMapper;
private final TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper;
private final TzsUserInfoMapper userInfoMapper;
private final EsUserInfoDao esUserInfoDao;
@Override
public String supportType() {
return "enterprise";
}
@Override
public void doRefresh(TzsDataRefreshMessage message) {
log.info("3库数据,企业开始刷库:唯一标识:{}", message.getDataId());
// 企业信息更新
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);
}
}
}
package com.yeejoin.amos.boot.module.tcm.biz.refresh.handler;
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
@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 "user";
}
@Override
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);
}
}
...@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject; ...@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
...@@ -15,6 +16,7 @@ import com.yeejoin.amos.boot.biz.common.entity.DataDictionary; ...@@ -15,6 +16,7 @@ import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl; import com.yeejoin.amos.boot.biz.common.service.impl.DataDictionaryServiceImpl;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils; import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.biz.common.utils.RedisKey; import com.yeejoin.amos.boot.biz.common.utils.RedisKey;
import com.yeejoin.amos.boot.biz.common.utils.RequestContextWrapper;
import com.yeejoin.amos.boot.module.common.api.dto.UserPermissionDto; import com.yeejoin.amos.boot.module.common.api.dto.UserPermissionDto;
import com.yeejoin.amos.boot.module.tcm.api.dto.BaseUnitLicenceDto; import com.yeejoin.amos.boot.module.tcm.api.dto.BaseUnitLicenceDto;
import com.yeejoin.amos.boot.module.tcm.api.dto.EquEnterDto; import com.yeejoin.amos.boot.module.tcm.api.dto.EquEnterDto;
...@@ -52,6 +54,8 @@ import org.redisson.api.RLock; ...@@ -52,6 +54,8 @@ import org.redisson.api.RLock;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
...@@ -63,6 +67,8 @@ import org.typroject.tyboot.core.restful.exception.instance.TooManyRequests; ...@@ -63,6 +67,8 @@ import org.typroject.tyboot.core.restful.exception.instance.TooManyRequests;
import java.text.ParseException; import java.text.ParseException;
import java.util.*; import java.util.*;
import java.util.concurrent.Callable;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -124,6 +130,10 @@ public class TzBaseEnterpriseInfoServiceImpl ...@@ -124,6 +130,10 @@ public class TzBaseEnterpriseInfoServiceImpl
private static final Map<String ,String> JYJC_CERT_MAP = new HashMap<>(); private static final Map<String ,String> JYJC_CERT_MAP = new HashMap<>();
@Autowired
@Qualifier("tcmTaskExecutor")
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
/** /**
* 公司类型下的资质类型map:key为登录人的公司类型、value为包含的资质枚举 * 公司类型下的资质类型map:key为登录人的公司类型、value为包含的资质枚举
*/ */
...@@ -1055,33 +1065,45 @@ public class TzBaseEnterpriseInfoServiceImpl ...@@ -1055,33 +1065,45 @@ public class TzBaseEnterpriseInfoServiceImpl
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public TzBaseEnterpriseInfoDto updateCompanyInfoById(Map<String, Object> map, ReginParams reginParams2) { public TzBaseEnterpriseInfoDto updateCompanyInfoById(Map<String, Object> map, ReginParams reginParams) {
log.info("根据ID修改企业信息 => {}, 更新人 => {}", map, RequestContext.getExeUserId()); log.info("根据ID修改企业信息 => {}, 更新人 => {}", map, RequestContext.getExeUserId());
try {
TzBaseEnterpriseInfo tzBaseEnterpriseInfo = new TzBaseEnterpriseInfo(); TzBaseEnterpriseInfo tzBaseEnterpriseInfo = new TzBaseEnterpriseInfo();
tzBaseEnterpriseInfo.setSequenceNbr(Long.valueOf(map.get("sequenceNbr").toString())); tzBaseEnterpriseInfo.setSequenceNbr(Long.valueOf(map.get("sequenceNbr").toString()));
tzBaseEnterpriseInfo = tzBaseEnterpriseInfoService.getById(tzBaseEnterpriseInfo.getSequenceNbr()); tzBaseEnterpriseInfo = tzBaseEnterpriseInfoService.getById(tzBaseEnterpriseInfo.getSequenceNbr());
String superviseOrgCode = ObjectUtils.isEmpty(map.get("superviseOrgCode")) ? null : String.valueOf(map.get("superviseOrgCode"));
if (!tzBaseEnterpriseInfo.getSuperviseCode().equals(superviseOrgCode)) {
System.out.println("监管单位变更");
}
//修改基本信息 //修改基本信息
tzBaseEnterpriseInfo.setEquipCategory(JSON.toJSONString(map.get("equipCategory"))); tzBaseEnterpriseInfo.setEquipCategory(JSON.toJSONString(map.get("equipCategory")));
Map<String, String> map1 = (Map<String, String>) map.get("longitudeLatitude"); Map<String, String> locationMap = (Map<String, String>) map.get("longitudeLatitude");
tzBaseEnterpriseInfo.setAddress(ObjectUtils.isEmpty(map1.get("address")) ? null : map1.get("address")); if (locationMap != null) {
tzBaseEnterpriseInfo.setLongitude(ObjectUtils.isEmpty(map1.get("longitude")) ? null : String.valueOf(map1.get("longitude"))); tzBaseEnterpriseInfo.setAddress(locationMap.get("address"));
tzBaseEnterpriseInfo.setLatitude(ObjectUtils.isEmpty(map1.get("latitude")) ? null : String.valueOf(map1.get("latitude"))); tzBaseEnterpriseInfo.setLongitude(locationMap.get("longitude"));
tzBaseEnterpriseInfo.setLatitude(locationMap.get("latitude"));
}
tzBaseEnterpriseInfo.setUseContact(ObjectUtils.isEmpty(map.get("useContact")) ? null : String.valueOf(map.get("useContact"))); tzBaseEnterpriseInfo.setUseContact(ObjectUtils.isEmpty(map.get("useContact")) ? null : String.valueOf(map.get("useContact")));
tzBaseEnterpriseInfo.setContactPhone(ObjectUtils.isEmpty(map.get("contactPhone")) ? null : String.valueOf(map.get("contactPhone"))); tzBaseEnterpriseInfo.setContactPhone(ObjectUtils.isEmpty(map.get("contactPhone")) ? null : String.valueOf(map.get("contactPhone")));
tzBaseEnterpriseInfo.setUnitBusinessLicense(ObjectUtils.isEmpty(map.get("unitBusinessLicense")) ? null : JSON.toJSONString(map.get("unitBusinessLicense"))); tzBaseEnterpriseInfo.setUnitBusinessLicense(ObjectUtils.isEmpty(map.get("unitBusinessLicense")) ? null : JSON.toJSONString(map.get("unitBusinessLicense")));
tzBaseEnterpriseInfo.setIndustrySupervisor(ObjectUtils.isEmpty(map.get("industrySupervisor")) ? null : String.valueOf(map.get("industrySupervisor"))); tzBaseEnterpriseInfo.setIndustrySupervisor(ObjectUtils.isEmpty(map.get("industrySupervisor")) ? null : String.valueOf(map.get("industrySupervisor")));
tzBaseEnterpriseInfo.setSuperviseOrgCode(ObjectUtils.isEmpty(map.get("superviseOrgCode")) ? null : String.valueOf(map.get("superviseOrgCode"))); tzBaseEnterpriseInfo.setSuperviseOrgCode(superviseOrgCode);
tzBaseEnterpriseInfo.setSuperviseOrgName(ObjectUtils.isEmpty(map.get("superviseOrgName")) ? null : String.valueOf(map.get("superviseOrgName"))); tzBaseEnterpriseInfo.setSuperviseOrgName(ObjectUtils.isEmpty(map.get("superviseOrgName")) ? null : String.valueOf(map.get("superviseOrgName")));
tzBaseEnterpriseInfo.setOtherAccessories(ObjectUtils.isEmpty(map.get("otherAccessories")) ? null : JSON.toJSONString(map.get("otherAccessories"))); tzBaseEnterpriseInfo.setOtherAccessories(ObjectUtils.isEmpty(map.get("otherAccessories")) ? null : JSON.toJSONString(map.get("otherAccessories")));
tzBaseEnterpriseInfo.setLegalPerson(ObjectUtils.isEmpty(map.get("legalPerson")) ? null : (String)map.get("legalPerson")); tzBaseEnterpriseInfo.setLegalPerson(ObjectUtils.isEmpty(map.get("legalPerson")) ? null : (String)map.get("legalPerson"));
String officeRegion = null; String officeRegion = null;
if(!ObjectUtils.isEmpty(map.get("officeRegion"))){ if(!ObjectUtils.isEmpty(map.get("officeRegion"))){
List list = (List<Object>) map.get("officeRegion"); List<?> list = (List<?>) map.get("officeRegion");
officeRegion = list.stream().map(String::valueOf).collect(Collectors.joining("#")).toString(); officeRegion = list.stream().map(String::valueOf).collect(Collectors.joining("#")).toString();
} }
tzBaseEnterpriseInfo.setOfficeRegion(officeRegion); tzBaseEnterpriseInfo.setOfficeRegion(officeRegion);
tzBaseEnterpriseInfo.setOfficeAddress(ObjectUtils.isEmpty(map.get("officeAddress")) ? null : (String)map.get("officeAddress")); tzBaseEnterpriseInfo.setOfficeAddress(ObjectUtils.isEmpty(map.get("officeAddress")) ? null : (String)map.get("officeAddress"));
// 修改事业单位信息 // 修改事业单位信息
if (map.containsKey("regUnitMessage")) {
TzsBaseInstitutionDto baseInstitutionDto = JSON.toJavaObject(JSON.parseObject(JSON.toJSONString(map.get("regUnitMessage"))), TzsBaseInstitutionDto.class); TzsBaseInstitutionDto baseInstitutionDto = JSON.toJavaObject(JSON.parseObject(JSON.toJSONString(map.get("regUnitMessage"))), TzsBaseInstitutionDto.class);
if (!ValidationUtil.isEmpty(baseInstitutionDto)) { if (!ValidationUtil.isEmpty(baseInstitutionDto)) {
TzsBaseInstitution baseInstitution = new TzsBaseInstitution(); TzsBaseInstitution baseInstitution = new TzsBaseInstitution();
...@@ -1094,6 +1116,8 @@ public class TzBaseEnterpriseInfoServiceImpl ...@@ -1094,6 +1116,8 @@ public class TzBaseEnterpriseInfoServiceImpl
tzsBaseInstitutionService.saveOrUpdate(baseInstitution); tzsBaseInstitutionService.saveOrUpdate(baseInstitution);
} }
}
// 修改tz_flc_reg_unit_info表信息 // 修改tz_flc_reg_unit_info表信息
LambdaQueryWrapper<RegUnitInfo> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<RegUnitInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(RegUnitInfo::getUnitCode, tzBaseEnterpriseInfo.getUseCode()); queryWrapper.eq(RegUnitInfo::getUnitCode, tzBaseEnterpriseInfo.getUseCode());
...@@ -1109,7 +1133,6 @@ public class TzBaseEnterpriseInfoServiceImpl ...@@ -1109,7 +1133,6 @@ public class TzBaseEnterpriseInfoServiceImpl
regUnitInfo.setName(tzBaseEnterpriseInfo.getUseUnit()); regUnitInfo.setName(tzBaseEnterpriseInfo.getUseUnit());
regUnitInfo.setUnitCode(tzBaseEnterpriseInfo.getUseCode()); regUnitInfo.setUnitCode(tzBaseEnterpriseInfo.getUseCode());
regUnitInfo.setManagementUnit(tzBaseEnterpriseInfo.getGoverningBody()); regUnitInfo.setManagementUnit(tzBaseEnterpriseInfo.getGoverningBody());
// regUnitInfo.setManagementUnitId(tzBaseEnterpriseInfo.getGoverningBody());
regUnitInfo.setProvince(tzBaseEnterpriseInfo.getProvince()); regUnitInfo.setProvince(tzBaseEnterpriseInfo.getProvince());
regUnitInfo.setCity(tzBaseEnterpriseInfo.getCity()); regUnitInfo.setCity(tzBaseEnterpriseInfo.getCity());
regUnitInfo.setDistrict(tzBaseEnterpriseInfo.getDistrict()); regUnitInfo.setDistrict(tzBaseEnterpriseInfo.getDistrict());
...@@ -1122,49 +1145,7 @@ public class TzBaseEnterpriseInfoServiceImpl ...@@ -1122,49 +1145,7 @@ public class TzBaseEnterpriseInfoServiceImpl
regUnitInfoService.saveOrUpdate(regUnitInfo); regUnitInfoService.saveOrUpdate(regUnitInfo);
// -- 20250627 调整为监管单位不能修改工商信息和资质 // -- 20250627 调整为监管单位不能修改工商信息和资质
//修改工商信息
// RegUnitIc regUnitIc = new RegUnitIc();
// RegUnitIcDto regUnitIcDto = JSON.parseObject(JSON.toJSONString(map.get("regUnitIcDto")), new TypeReference<RegUnitIcDto>() {
// });
// if (!ValidationUtil.isEmpty(regUnitIcDto.getSequenceNbr())) {
// List<String> addressList = (List<String>) map.get("registerAddressList");
// tzBaseEnterpriseInfo.setProvince(addressList.get(0));
// tzBaseEnterpriseInfo.setCity(addressList.get(1));
// tzBaseEnterpriseInfo.setDistrict(addressList.get(2));
// tzBaseEnterpriseInfo.setCommunity(ObjectUtils.isEmpty(map.get("community")) ? null : String.valueOf(map.get("community")));
// tzBaseEnterpriseInfo.setStreet(ObjectUtils.isEmpty(map.get("street")) ? null : String.valueOf(map.get("street")));
// // tzBaseEnterpriseInfo.setAddress(ObjectUtils.isEmpty(map.get("regAddress")) ? null : String.valueOf(map.get("regAddress")));
// tzBaseEnterpriseInfo.setLegalPerson(ObjectUtils.isEmpty(map.get("legalPerson")) ? null : String.valueOf(map.get("legalPerson")));
// regUnitIc.setIndustryName(ObjectUtils.isEmpty(map.get("industryName")) ? null : String.valueOf(map.get("industryName")));
// DataDictionary regOrganCodeDict = iDataDictionaryService.getByCode(String.valueOf(map.get("registeredOrganCode")),"DJJG");
// regUnitIc.setRegisteredOrgan(ObjectUtils.isEmpty(regOrganCodeDict) ? null : String.valueOf(regOrganCodeDict.getName()));
// regUnitIc.setRegisteredOrganCode(ObjectUtils.isEmpty(map.get("registeredOrganCode")) ? null : String.valueOf(map.get("registeredOrganCode")));
// Date approvedDate;
// try {
// approvedDate = DateUtils.dateParse(String.valueOf(map.get("approvedDate")), "yyyy-MM-dd");
// } catch (ParseException e) {
// throw new RuntimeException(e);
// }
// regUnitIc.setBusinessStateCode(ObjectUtils.isEmpty(map.get("businessState")) ? null : String.valueOf(map.get("businessState")));
// DataDictionary businessStateDict = iDataDictionaryService.getByCode(String.valueOf(map.get("businessState")),"jyzt");
// regUnitIc.setBusinessState(ObjectUtils.isEmpty(businessStateDict) ? null : businessStateDict.getName());
// regUnitIc.setApprovedDate(ObjectUtils.isEmpty(map.get("approvedDate")) ? null : approvedDate);
//
// regUnitIcService.update(regUnitIc, new QueryWrapper<RegUnitIc>().eq("unit_code", regUnitIcDto.getUnitCode()));
// }
//许可信息先登录人选择的身份删除相应的许可信息,原因前端列表对数据可增减
// String useCode = tzBaseEnterpriseInfo.getUseCode();
// String certTypeCodes = Arrays.stream(unitTypes).map(e -> COMPANY_TYPE_CERT_TYPE_MAP.getOrDefault(e, "")).collect(Collectors.joining(","));
// if (useCode != null && !certTypeCodes.isEmpty()) {
// LambdaQueryWrapper<BaseUnitLicence> wrapper = new LambdaQueryWrapper<>();
// wrapper.eq(BaseUnitLicence::getUnitCode, useCode);
// wrapper.and(w -> Arrays.stream(certTypeCodes.split(","))
// .forEach(certTypeCode -> w.or().likeRight(BaseUnitLicence::getCertTypeCode, certTypeCode)));
// baseUnitLicenceService.remove(wrapper);
// }
// //报错许可许可信息
// saveLicenceData(map);
// 企业信息变更-同步修改企业下人员绑定设备类型 // 企业信息变更-同步修改企业下人员绑定设备类型
ArrayList<String> newData = new ArrayList<>(); ArrayList<String> newData = new ArrayList<>();
JSONArray objects = JSON.parseArray(tzBaseEnterpriseInfo.getEquipCategory()); JSONArray objects = JSON.parseArray(tzBaseEnterpriseInfo.getEquipCategory());
...@@ -1173,30 +1154,36 @@ public class TzBaseEnterpriseInfoServiceImpl ...@@ -1173,30 +1154,36 @@ public class TzBaseEnterpriseInfoServiceImpl
tzBaseEnterpriseInfo.setAppId(regUnitInfo.getAppId()); tzBaseEnterpriseInfo.setAppId(regUnitInfo.getAppId());
tzBaseEnterpriseInfo.setUnitType(String.join("#", unitTypes)); tzBaseEnterpriseInfo.setUnitType(String.join("#", unitTypes));
boolean b = tzBaseEnterpriseInfoService.updateById(tzBaseEnterpriseInfo); boolean updateResult = tzBaseEnterpriseInfoService.updateById(tzBaseEnterpriseInfo);
if (b) { if (updateResult) {
CompanyModel updateModel; log.info("更新企业信息, 单位类型 => {}", tzBaseEnterpriseInfo.getUseUnitCode());
try { String useCode = String.valueOf(map.get("useCode"));
updateModel = Privilege.companyClient.queryByCompanyCode(String.valueOf(map.get("useCode"))).getResult(); CompanyModel updateModel = Privilege.companyClient.queryByCompanyCode(useCode).getResult();
HashMap<String, Object> parentMessage = (HashMap<String, Object>) Privilege.companyClient.queryByOrgcode(String.valueOf(map.get("superviseOrgCode"))).getResult(); HashMap<String, Object> parentMessage = (HashMap<String, Object>) Privilege.companyClient.queryByOrgcode(String.valueOf(map.get("superviseOrgCode"))).getResult();
// 目前平台返回key为compnay(存在拼写错误) // 目前平台返回key为compnay(存在拼写错误)
CompanyModel parentModel = JSON.parseObject(JSON.toJSONString(parentMessage.get("compnay")), CompanyModel.class); CompanyModel parentModel = JSON.parseObject(JSON.toJSONString(parentMessage.get("compnay")), CompanyModel.class);
updateModel.setParentId(parentModel.getSequenceNbr()); updateModel.setParentId(parentModel.getSequenceNbr());// 更新单位的上下级
updateModel.setCompanyType(regUnitInfo.getUnitType());// 更新单位类型 updateModel.setCompanyType(regUnitInfo.getUnitType());// 更新单位类型
updateCompanyInfo(tzBaseEnterpriseInfo, updateModel);
Privilege.companyClient.update(updateModel, updateModel.getSequenceNbr()); log.info("更新企业信息, 单位 => {}", tzBaseEnterpriseInfo.getUseUnitCode());
} catch (Exception e) {
throw new BadRequest("操作失败!");
}
updateUnit(map, regUnitInfo, agencyUserModel, updateModel); updateUnit(map, regUnitInfo, agencyUserModel, updateModel);
updateUserInfo(newData, String.valueOf(map.get("useCode"))); log.info("更新企业信息, 注册用户 => {}", tzBaseEnterpriseInfo.getUseUnitCode());
updateUserInfo(newData, useCode);
// 同步平台并且刷新历史数据
asyncPlatformAndRefreshHistoricalData(useCode);
TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto = new TzBaseEnterpriseInfoDto(); TzBaseEnterpriseInfoDto tzBaseEnterpriseInfoDto = new TzBaseEnterpriseInfoDto();
BeanUtils.copyProperties(tzBaseEnterpriseInfo, tzBaseEnterpriseInfoDto); BeanUtils.copyProperties(tzBaseEnterpriseInfo, tzBaseEnterpriseInfoDto);
// 更新完成后清理缓存
redisUtil.del(RedisKey.buildReginRoleKey(agencyUserModel.getUserId())); redisUtil.del(RedisKey.buildReginRoleKey(agencyUserModel.getUserId()));
return tzBaseEnterpriseInfoDto; return tzBaseEnterpriseInfoDto;
} else { } else {
return null; return null;
} }
} catch (Exception e) {
log.error("更新企业信息失败: ", e);
throw new BadRequest("更新企业信息失败!");
}
} }
@Transactional (rollbackFor = Exception.class) @Transactional (rollbackFor = Exception.class)
...@@ -1205,6 +1192,21 @@ public class TzBaseEnterpriseInfoServiceImpl ...@@ -1205,6 +1192,21 @@ public class TzBaseEnterpriseInfoServiceImpl
return userInfoService.personalInfoUpdateById((Map<String, Object>) map.get("raw")); return userInfoService.personalInfoUpdateById((Map<String, Object>) map.get("raw"));
} }
private void updateCompanyInfo(TzBaseEnterpriseInfo tzBaseEnterpriseInfo, CompanyModel updateModel) {
FeignClientResult<CompanyModel> companyResult = Privilege.companyClient.update(updateModel, updateModel.getSequenceNbr());
if (companyResult == null || companyResult.getStatus() != 200) {
log.error("更新单位错误: {}", companyResult);
throw new BadRequest("更新单位失败!");
}
String orgCode = Optional.ofNullable(companyResult.getResult()).map(CompanyModel::getOrgCode).orElse(null);
updateModel.setOrgCode(orgCode);
// 更新企业的org_code
UpdateWrapper<TzBaseEnterpriseInfo> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("org_code", orgCode);
updateWrapper.eq("sequence_nbr", tzBaseEnterpriseInfo.getSequenceNbr());
tzBaseEnterpriseInfoService.update(updateWrapper);
}
private void handleUnitType(Map<String, Object> map, RegUnitInfo regUnitInfo, AgencyUserModel agencyUserModel) { private void handleUnitType(Map<String, Object> map, RegUnitInfo regUnitInfo, AgencyUserModel agencyUserModel) {
Object unitTypeCodesObj = map.get("unitTypeCodes"); Object unitTypeCodesObj = map.get("unitTypeCodes");
if (!(unitTypeCodesObj instanceof List<?>)) { if (!(unitTypeCodesObj instanceof List<?>)) {
...@@ -1237,10 +1239,11 @@ public class TzBaseEnterpriseInfoServiceImpl ...@@ -1237,10 +1239,11 @@ public class TzBaseEnterpriseInfoServiceImpl
regUnitInfo.setUnitTypeCode(unitTypeCodesStr); regUnitInfo.setUnitTypeCode(unitTypeCodesStr);
// 省内充装单位1231:生成对接数据账号 // 省内充装单位1231:生成对接数据账号
final String FILLING_UNIT_TYPE = RegUnitInfoServiceImpl.FILLING_UNIT_TYPE; // final String FILLING_UNIT_TYPE = RegUnitInfoServiceImpl.FILLING_UNIT_TYPE;
if (unitTypeCodes.contains(FILLING_UNIT_TYPE) // 20250701 改为全部企业类型生成对接数据账号@tianbo
&& (ValidationUtil.isEmpty(regUnitInfo.getIsNationwide()) || "0".equals(regUnitInfo.getIsNationwide()))) { // if (unitTypeCodes.contains(FILLING_UNIT_TYPE)
// && (ValidationUtil.isEmpty(regUnitInfo.getIsNationwide()) || "0".equals(regUnitInfo.getIsNationwide()))) {
if (ValidationUtil.isEmpty(regUnitInfo.getIsNationwide()) || "0".equals(regUnitInfo.getIsNationwide())) {
if (ValidationUtil.isEmpty(regUnitInfo.getAppId())) { if (ValidationUtil.isEmpty(regUnitInfo.getAppId())) {
String appId = DesUtil.encode(regUnitInfo.getAdminUserId(), RegUnitInfoServiceImpl.SECRETKEY); String appId = DesUtil.encode(regUnitInfo.getAdminUserId(), RegUnitInfoServiceImpl.SECRETKEY);
...@@ -1307,4 +1310,55 @@ public class TzBaseEnterpriseInfoServiceImpl ...@@ -1307,4 +1310,55 @@ public class TzBaseEnterpriseInfoServiceImpl
throw new BadRequest("单位更新失败"); throw new BadRequest("单位更新失败");
} }
} }
/**
* 同步平台并且刷新历史数据
*
*
* @param useCode useCode
* @author yangyang
* @date 2025/7/1 14:50
*/
private void asyncPlatformAndRefreshHistoricalData(String useCode) {
// 同步平台ORG_CODE
LambdaQueryWrapper<TzsUserInfo> lambda = new QueryWrapper<TzsUserInfo>().lambda();
lambda.eq(TzsUserInfo::getUnitCode, useCode);
lambda.isNotNull(TzsUserInfo::getAmosUserId);
List<TzsUserInfo> tzsUserInfos = tzsUserInfoMapper.selectList(lambda);
// 异步刷新历史数据
String token = RequestContext.getToken();
String appKey = RequestContext.getAppKey();
String product = RequestContext.getProduct();
threadPoolTaskExecutor.execute(() -> {
RequestContext.setToken(token);
RequestContext.setAppKey(appKey);
RequestContext.setProduct(product);
try {
// 刷新平台的企业下面用户的super_org_code
if (!ValidationUtil.isEmpty(tzsUserInfos)) {
String userIds = tzsUserInfos.stream().map(TzsUserInfo::getAmosUserId).collect(Collectors.joining(","));
FeignClientResult<List<AgencyUserModel>> agencyUserClientResult = Privilege.agencyUserClient.queryByIds(userIds, false);
if (agencyUserClientResult != null && agencyUserClientResult.getResult() != null) {
List<AgencyUserModel> agencyUserModels = agencyUserClientResult.getResult();
for (AgencyUserModel userModel : agencyUserModels) {
// 更新, 刷新企业下用户的super_org_code
try {
Privilege.agencyUserClient.update(userModel, userModel.getUserId());
} catch (Exception e) {
log.error("更新用户 {} 的 super_org_code 失败", userModel.getUserId(), e);
}
}
}
}
// todo 调用刷新历史数据接口
} catch (Exception e) {
log.error("异步刷新企业用户信息发生异常", e);
} finally {
RequestContext.clean();
}
});
}
} }
...@@ -819,7 +819,9 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI ...@@ -819,7 +819,9 @@ public class RegUnitInfoServiceImpl extends BaseService<RegUnitInfoDto, RegUnitI
String adminUserId = userResult.getResult().getUserId(); String adminUserId = userResult.getResult().getUserId();
// 省内充装单位1231:生成对接数据账号 // 省内充装单位1231:生成对接数据账号
if (Arrays.asList(units).contains(FILLING_UNIT_TYPE) && (ValidationUtil.isEmpty(regUnitInfo.getIsNationwide()) || "0".equals(regUnitInfo.getIsNationwide()))) { // if (Arrays.asList(units).contains(FILLING_UNIT_TYPE) && (ValidationUtil.isEmpty(regUnitInfo.getIsNationwide()) || "0".equals(regUnitInfo.getIsNationwide()))) {
// 20250701 改为全部企业类型生成对接数据账号@tianbo
if (ValidationUtil.isEmpty(regUnitInfo.getIsNationwide()) || "0".equals(regUnitInfo.getIsNationwide())) {
AgencyUserModel shadowUser = new AgencyUserModel(); AgencyUserModel shadowUser = new AgencyUserModel();
shadowUser.setUserId(adminUserId); shadowUser.setUserId(adminUserId);
String appId = DesUtil.encode(adminUserId, SECRETKEY); String appId = DesUtil.encode(adminUserId, SECRETKEY);
......
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