String messageId = event.getId(); if (StringUtils.isNotBlank(messageId) && data != null) { //消息体拆分 String json = ((AS400SkuSyncJson) data).getJson(); AS400SkuSyncData as400SkuSyncData = JSONObject.parseObject(json, AS400SkuSyncData.class); //判断数据是否为空 if (!ObjectUtils.isEmpty(as400SkuSyncData)) { //不为空根据messageID和sku查询数据在流水表中是否存在 FlowDO flowDO = flowDao.selectFlowByMessageIdAndSkuCode(FlowEnum.POS_SYNC_TYPE.getCode(), messageId, as400SkuSyncData.getITMNUM()); if (!ObjectUtils.isEmpty(flowDO)) { //判断记录在流水表中是否已消费 if (flowDO.getStatus().equals(Constant.MATH_ONE)) { FlowDO flowDO1 = new FlowDO(); flowDO1.setFlowType(FlowEnum.POS_SYNC_TYPE.getCode()); flowDO1.setMessageId(messageId); flowDO1.setSkuCode(as400SkuSyncData.getITMNUM()); //未消费,更新入库时间 flowDao.updateStatusByMessageIdAndSku(flowDO1); //发送消息,通知消费流水表数据 //sendMessage(as400SkuSyncData, messageId); } else { //已消费,直接结束 return true; } } else { //不存在则新增流水,标记未消费 FlowDO flowDO1 = new FlowDO(); //数据转换 flowConvert(flowDO1, as400SkuSyncData, messageId, json); flowDao.insert(flowDO1); //发送消息,通知消费流水表数据 //sendMessage(as400SkuSyncData, messageId); } } } return true;
时间: 2024-02-10 19:06:45 浏览: 111
Android设置拍照或者上传本地图片的示例
这段代码的逻辑比较复杂,但是从代码本身来看,有几个地方可以进行优化:
1. 对于StringUtils.isNotBlank(messageId)的判断,可以使用StringUtils.isNotEmpty(messageId)来代替,因为StringUtils.isNotEmpty()的效率更高。
2. 对于if (!ObjectUtils.isEmpty(as400SkuSyncData))的判断,可以使用if (as400SkuSyncData != null)来代替,同样可以提高代码的效率。
3. 在if (flowDO.getStatus().equals(Constant.MATH_ONE))判断中,可以使用Integer.valueOf(1).equals(flowDO.getStatus())来代替,因为这样写可以避免空指针异常。
4. 在if (!ObjectUtils.isEmpty(flowDO))和else的判断中,可以使用if (flowDO != null)和if (flowDO == null)来代替,同样可以提高代码的效率。
5. 在sendMessage(as400SkuSyncData, messageId)方法中,可以将其注释掉,因为该方法没有被调用。
综上所述,优化后的代码如下所示:
```
String messageId = event.getId();
if (StringUtils.isNotEmpty(messageId) && data != null) {
//消息体拆分
String json = ((AS400SkuSyncJson) data).getJson();
AS400SkuSyncData as400SkuSyncData = JSONObject.parseObject(json, AS400SkuSyncData.class);
//判断数据是否为空
if (as400SkuSyncData != null) {
//不为空根据messageID和sku查询数据在流水表中是否存在
FlowDO flowDO = flowDao.selectFlowByMessageIdAndSkuCode(FlowEnum.POS_SYNC_TYPE.getCode(), messageId, as400SkuSyncData.getITMNUM());
if (flowDO != null) {
//判断记录在流水表中是否已消费
if (Integer.valueOf(1).equals(flowDO.getStatus())) {
FlowDO flowDO1 = new FlowDO();
flowDO1.setFlowType(FlowEnum.POS_SYNC_TYPE.getCode());
flowDO1.setMessageId(messageId);
flowDO1.setSkuCode(as400SkuSyncData.getITMNUM());
//未消费,更新入库时间
flowDao.updateStatusByMessageIdAndSku(flowDO1);
//发送消息,通知消费流水表数据
//sendMessage(as400SkuSyncData, messageId);
} else {
//已消费,直接结束
return true;
}
} else {
//不存在则新增流水,标记未消费
FlowDO flowDO1 = new FlowDO();
//数据转换
flowConvert(flowDO1, as400SkuSyncData, messageId, json);
flowDao.insert(flowDO1);
//发送消息,通知消费流水表数据
//sendMessage(as400SkuSyncData, messageId);
}
}
}
return true;
```
阅读全文