fix:北京数据版本记录问题28898

yun-zuoyi
yanyujia 2 years ago
parent 6db0a0dee2
commit 2175763d22

@ -1,13 +1,16 @@
package cn.estsh.i3plus.core.apiservice.mq; package cn.estsh.i3plus.core.apiservice.mq;
import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionDetailService; import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionDetailService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionPlanService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionService; import cn.estsh.i3plus.core.api.iservice.busi.ISysPojoVersionService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.ExcelTool; import cn.estsh.i3plus.platform.common.tool.ExcelTool;
import cn.estsh.i3plus.platform.common.tool.JsonUtilTool; import cn.estsh.i3plus.platform.common.tool.JsonUtilTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.platform.bean.SysConfig; import cn.estsh.i3plus.pojo.platform.bean.SysConfig;
import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersion; import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersion;
import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersionDetail; import cn.estsh.i3plus.pojo.platform.bean.SysPojoVersionDetail;
@ -17,6 +20,7 @@ import com.alibaba.fastjson.JSON;
import com.google.common.collect.MapDifference; import com.google.common.collect.MapDifference;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.rabbitmq.client.Channel; import com.rabbitmq.client.Channel;
import net.bull.javamelody.internal.common.LOG;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -29,9 +33,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.HashMap; import java.util.*;
import java.util.Map;
import java.util.Objects;
import static cn.estsh.i3plus.platform.common.util.PlatformConstWords.QUEUE_IMPP_POJO_VERSION; import static cn.estsh.i3plus.platform.common.util.PlatformConstWords.QUEUE_IMPP_POJO_VERSION;
@ -48,15 +50,18 @@ import static cn.estsh.i3plus.platform.common.util.PlatformConstWords.QUEUE_IMPP
public class PojoVersionQueueReceiver { public class PojoVersionQueueReceiver {
private static final Logger LOGGER = LoggerFactory.getLogger(PojoVersionQueueReceiver.class); private static final Logger LOGGER = LoggerFactory.getLogger(PojoVersionQueueReceiver.class);
@Autowired @Resource
private ISysPojoVersionService pojoVersionService; private ISysPojoVersionService pojoVersionService;
@Autowired @Resource
private ISysPojoVersionDetailService pojoVersionDetailService; private ISysPojoVersionDetailService pojoVersionDetailService;
@Autowired @Resource
private SnowflakeIdMaker snowflakeIdMaker; private SnowflakeIdMaker snowflakeIdMaker;
@Resource
private ISysPojoVersionPlanService sysPojoVersionPlanService;
@Resource(name = CommonConstWords.IMPP_REDIS_RES) @Resource(name = CommonConstWords.IMPP_REDIS_RES)
private ImppRedis redisRes; private ImppRedis redisRes;
@ -74,6 +79,7 @@ public class PojoVersionQueueReceiver {
@RabbitListener(queues = QUEUE_IMPP_POJO_VERSION) @RabbitListener(queues = QUEUE_IMPP_POJO_VERSION)
public Boolean processImppMessage(Channel channel, Message message) { public Boolean processImppMessage(Channel channel, Message message) {
boolean isNack = false; boolean isNack = false;
LOGGER.info("PojoVersionQueueReceiver开始消费数据:{}",message);
try { try {
byte[] messageBody = message.getBody(); byte[] messageBody = message.getBody();
if (messageBody != null && messageBody.length > 0) { if (messageBody != null && messageBody.length > 0) {
@ -82,8 +88,20 @@ public class PojoVersionQueueReceiver {
// 当前操作数据 // 当前操作数据
SysPojoVersion afterVersion = JSON.parseObject(msg, SysPojoVersion.class); SysPojoVersion afterVersion = JSON.parseObject(msg, SysPojoVersion.class);
String redisKey = CommonConstWords.REDIS_PREFIX_POJO_VERSION + ":" + afterVersion.getSoftType() + ":" + afterVersion.getRefClass();
// 是否进行版本控制 // 是否进行版本控制
Object redisValue = redisRes.getObject(CommonConstWords.REDIS_PREFIX_POJO_VERSION + ":" + afterVersion.getSoftType() + ":" + afterVersion.getRefClass()); Object redisValue = redisRes.getObject(redisKey);
if (Objects.isNull(redisValue)){
//去查询数据库
List<Long> idList = new ArrayList<>();
idList.add(afterVersion.getRefId());
List<SysPojoVersionPlan> plans = sysPojoVersionPlanService.findByIdList(idList);
if (!Objects.isNull(plans) && !plans.isEmpty()){
redisRes.putObject(redisKey,JSON.toJSONString(plans.get(0)),-1);
redisValue = plans.get(0);
}
}
LOGGER.info("PojoVersionQueueReceiver--是否进行版本控制的key:{},value:{}",redisKey,redisValue);
if (Objects.nonNull(redisValue)) { if (Objects.nonNull(redisValue)) {
SysPojoVersionPlan versionPlan = JSON.parseObject(redisValue.toString(), SysPojoVersionPlan.class); SysPojoVersionPlan versionPlan = JSON.parseObject(redisValue.toString(), SysPojoVersionPlan.class);
Map<String, Object> afterMap = JsonUtilTool.decode(afterVersion.getBean(), Map.class); Map<String, Object> afterMap = JsonUtilTool.decode(afterVersion.getBean(), Map.class);
@ -159,11 +177,12 @@ public class PojoVersionQueueReceiver {
afterVersion.setPojoDetailId(afterVersionDetail.getId()); afterVersion.setPojoDetailId(afterVersionDetail.getId());
ConvertBean.serviceModelInitialize(afterVersion, userName); ConvertBean.serviceModelInitialize(afterVersion, userName);
pojoVersionService.insert(afterVersion); pojoVersionService.insert(afterVersion);
LOGGER.info("PojoVersionQueueReceiver:保存的pojoVersion:{}",afterVersion);
} }
} }
} }
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("pojoVersion 消息处理失败{}", new String(message.getBody()), e); LOGGER.error("PojoVersionQueueReceiver 消息处理失败{}", new String(message.getBody()), e);
isNack = true; isNack = true;
} finally { } finally {
try { try {
@ -173,14 +192,10 @@ public class PojoVersionQueueReceiver {
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
} }
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("Pojo Version MQ ACK Error Message :{}", e.getMessage()); LOGGER.error("PojoVersionQueueReceiver Error Message :{}", e.getMessage());
} }
} }
if (isNack) { return !isNack;
return false;
} else {
return true;
}
} }
/** /**

Loading…
Cancel
Save