refactor(lets-plugin): 优化查询明细信息的同步机制

在查询IntegrationTaskLivingDetailsEntity时,引入同步锁以保证线程安全。重构相关代码,提升可读性与性能。
另外,修正了一些可能的NullPointerException问题。
This commit is contained in:
liuy 2024-09-24 14:41:40 +08:00
parent 9d4447ae7a
commit 6c4ddb00a5
7 changed files with 48 additions and 5 deletions

View File

@ -153,6 +153,13 @@ public class ConsignmachiningIn extends PluginBaseEntity {
if (craeteDateStr != null && !"".equals(craeteDateStr)) { if (craeteDateStr != null && !"".equals(craeteDateStr)) {
splitDateAndPush(craeteDateStr); splitDateAndPush(craeteDateStr);
} }
} else if (ProfilesActiveConstant.TYPE_DETAIL_ERROR.equals(requestJson.get("type"))) {
String integration_task_living_details_id = String.valueOf(requestJson.get("integration_task_living_details_id"));
Assert.notNull(integration_task_living_details_id, "明细行主键不能为空!");
IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = saveOrUpdateBusinessLogUtil.queryIntegrationTaskLivingDetailsEntity(integration_task_living_details_id);
if (integrationTaskLivingDetailsEntity != null && integrationTaskLivingDetailsEntity.getRootAppBill() != null) {
startImplement(integrationTaskLivingDetailsEntity.getRootAppBill());
}
} else { } else {
if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(PROD_FILED)) { if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(PROD_FILED)) {
//默认被定时器执行实时执行计算时间偏移量 //默认被定时器执行实时执行计算时间偏移量

View File

@ -155,6 +155,13 @@ public class ConsignmachiningInReturn extends PluginBaseEntity {
if (craeteDateStr != null && !"".equals(craeteDateStr)) { if (craeteDateStr != null && !"".equals(craeteDateStr)) {
splitDateAndPush(craeteDateStr); splitDateAndPush(craeteDateStr);
} }
} else if (ProfilesActiveConstant.TYPE_DETAIL_ERROR.equals(requestJson.get("type"))) {
String integration_task_living_details_id = String.valueOf(requestJson.get("integration_task_living_details_id"));
Assert.notNull(integration_task_living_details_id, "明细行主键不能为空!");
IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = saveOrUpdateBusinessLogUtil.queryIntegrationTaskLivingDetailsEntity(integration_task_living_details_id);
if (integrationTaskLivingDetailsEntity != null && integrationTaskLivingDetailsEntity.getRootAppBill() != null) {
startImplement(integrationTaskLivingDetailsEntity.getRootAppBill());
}
} else { } else {
if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(PROD_FILED)) { if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(PROD_FILED)) {
//默认被定时器执行实时执行计算时间偏移量 //默认被定时器执行实时执行计算时间偏移量

View File

@ -152,6 +152,13 @@ public class ProxyPurchaseReturn extends PluginBaseEntity {
if (craeteDateStr != null && !"".equals(craeteDateStr)) { if (craeteDateStr != null && !"".equals(craeteDateStr)) {
splitDateAndPush(craeteDateStr); splitDateAndPush(craeteDateStr);
} }
} else if (ProfilesActiveConstant.TYPE_DETAIL_ERROR.equals(requestJson.get("type"))) {
String integration_task_living_details_id = String.valueOf(requestJson.get("integration_task_living_details_id"));
Assert.notNull(integration_task_living_details_id, "明细行主键不能为空!");
IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = saveOrUpdateBusinessLogUtil.queryIntegrationTaskLivingDetailsEntity(integration_task_living_details_id);
if (integrationTaskLivingDetailsEntity != null && integrationTaskLivingDetailsEntity.getRootAppBill() != null) {
startImplement(integrationTaskLivingDetailsEntity.getRootAppBill());
}
} else { } else {
if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(PROD_FILED)) { if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(PROD_FILED)) {
//默认被定时器执行实时执行计算时间偏移量 //默认被定时器执行实时执行计算时间偏移量

View File

@ -146,6 +146,13 @@ public class ProxyPurchaseWarehousOrder extends PluginBaseEntity {
if (craeteDateStr != null && !"".equals(craeteDateStr)) { if (craeteDateStr != null && !"".equals(craeteDateStr)) {
splitDateAndPush(craeteDateStr); splitDateAndPush(craeteDateStr);
} }
} else if (ProfilesActiveConstant.TYPE_DETAIL_ERROR.equals(requestJson.get("type"))) {
String integration_task_living_details_id = String.valueOf(requestJson.get("integration_task_living_details_id"));
Assert.notNull(integration_task_living_details_id, "明细行主键不能为空!");
IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = saveOrUpdateBusinessLogUtil.queryIntegrationTaskLivingDetailsEntity(integration_task_living_details_id);
if (integrationTaskLivingDetailsEntity != null && integrationTaskLivingDetailsEntity.getRootAppBill() != null) {
startImplementByCode(integrationTaskLivingDetailsEntity.getRootAppBill());
}
} else { } else {
if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(PROD_FILED)) { if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(PROD_FILED)) {
//默认被定时器执行实时执行计算时间偏移量 //默认被定时器执行实时执行计算时间偏移量

View File

@ -149,6 +149,13 @@ public class ProxyPurchaseWarehousWarehouse extends PluginBaseEntity {
if (craeteDateStr != null && !"".equals(craeteDateStr)) { if (craeteDateStr != null && !"".equals(craeteDateStr)) {
splitDateAndPush(craeteDateStr); splitDateAndPush(craeteDateStr);
} }
} else if (ProfilesActiveConstant.TYPE_DETAIL_ERROR.equals(requestJson.get("type"))) {
String integration_task_living_details_id = String.valueOf(requestJson.get("integration_task_living_details_id"));
Assert.notNull(integration_task_living_details_id, "明细行主键不能为空!");
IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = saveOrUpdateBusinessLogUtil.queryIntegrationTaskLivingDetailsEntity(integration_task_living_details_id);
if (integrationTaskLivingDetailsEntity != null && integrationTaskLivingDetailsEntity.getRootAppBill() != null) {
startImplementByCode(integrationTaskLivingDetailsEntity.getRootAppBill());
}
} else { } else {
if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(PROD_FILED)) { if (ProfilesActiveConstant.LETS_PROFILES_ACTIVE.equals(PROD_FILED)) {
//默认被定时器执行实时执行计算时间偏移量 //默认被定时器执行实时执行计算时间偏移量

View File

@ -23,6 +23,7 @@ import com.hzya.frame.plugin.lets.queryvo.StartAndEndVo;
import com.hzya.frame.plugin.lets.u8cdto.*; import com.hzya.frame.plugin.lets.u8cdto.*;
import com.hzya.frame.plugin.lets.util.*; import com.hzya.frame.plugin.lets.util.*;
import com.hzya.frame.split.SplitListByCountUtil; import com.hzya.frame.split.SplitListByCountUtil;
import com.hzya.frame.sysnew.integtationTaskLivingDetails.entity.IntegrationTaskLivingDetailsEntity;
import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.DetailsDto; import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.DetailsDto;
import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDetailsDto; import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDetailsDto;
import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDto; import com.hzya.frame.ttxofs.dto.ofssaleorderoutsearch.HeaderDto;
@ -63,6 +64,9 @@ public class SoSaleOutPluginInitializerToB extends PluginBaseEntity {
@Autowired @Autowired
private ISoSaleorderBDao iSoSaleorderBDao; private ISoSaleorderBDao iSoSaleorderBDao;
@Autowired
private SaveOrUpdateBusinessLogUtil saveOrUpdateBusinessLogUtil;
@Autowired @Autowired
private OffsetTimeTime offsetTimeTime; private OffsetTimeTime offsetTimeTime;

View File

@ -171,18 +171,22 @@ public class SaveOrUpdateBusinessLogUtil {
// } // }
// } // }
private static final Object queryIntegrationTaskLivingDetailsEntityLock = new Object();
/** /**
* 根据明细id查询明细信息 * 根据明细id查询明细信息
* *
* @author liuyang * @author liuyang
*/ */
public IntegrationTaskLivingDetailsEntity queryIntegrationTaskLivingDetailsEntity(String integration_task_living_details_id) { public IntegrationTaskLivingDetailsEntity queryIntegrationTaskLivingDetailsEntity(String integration_task_living_details_id) {
synchronized (queryIntegrationTaskLivingDetailsEntityLock) {
IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity(); IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity = new IntegrationTaskLivingDetailsEntity();
integrationTaskLivingDetailsEntity.setId(integration_task_living_details_id); integrationTaskLivingDetailsEntity.setId(integration_task_living_details_id);
IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity1 = iIntegrationTaskLivingDetailsDao.queryEntityById(integrationTaskLivingDetailsEntity); IntegrationTaskLivingDetailsEntity integrationTaskLivingDetailsEntity1 = iIntegrationTaskLivingDetailsDao.queryEntityById(integrationTaskLivingDetailsEntity);
Assert.notNull(integrationTaskLivingDetailsEntity, "根据主键id没有查询到明细信息"); Assert.notNull(integrationTaskLivingDetailsEntity, "根据主键id没有查询到明细信息");
return integrationTaskLivingDetailsEntity1; return integrationTaskLivingDetailsEntity1;
} }
}
/** /**
* 根据明细id查询明细信息成功表 integration_task_living_details_success * 根据明细id查询明细信息成功表 integration_task_living_details_success