Browse Source

登陆接口 添加缓存和线程池执行

feature/evaluate
jianjun 3 years ago
parent
commit
98b22ff8c4
  1. 21
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java
  2. 20
      epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java

21
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/CustomerAgencyServiceImpl.java

@ -66,6 +66,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -112,6 +115,8 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl<CustomerAgencyDao
private IcBuildingUnitDao icBuildingUnitDao; private IcBuildingUnitDao icBuildingUnitDao;
@Autowired @Autowired
private IcHouseDao icHouseDao; private IcHouseDao icHouseDao;
@Autowired
private ExecutorService executorService;
@Override @Override
@ -171,10 +176,22 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl<CustomerAgencyDao
if (null == staffOrgsFormDTO || staffOrgsFormDTO.getCustomerIdList().size() == 0) { if (null == staffOrgsFormDTO || staffOrgsFormDTO.getCustomerIdList().size() == 0) {
return new Result<>(); return new Result<>();
} }
List<StaffOrgsResultDTO> list = baseDao.selectStaffOrgList(staffOrgsFormDTO.getCustomerIdList()); CompletableFuture<List<StaffOrgsResultDTO>> listFuture = CompletableFuture.supplyAsync(()-> baseDao.selectStaffOrgList(staffOrgsFormDTO.getCustomerIdList()),executorService);
//List<StaffOrgsResultDTO> list = baseDao.selectStaffOrgList(staffOrgsFormDTO.getCustomerIdList());
CustomerFormDTO customerFormDTO = new CustomerFormDTO(); CustomerFormDTO customerFormDTO = new CustomerFormDTO();
customerFormDTO.setCustomerIdList(staffOrgsFormDTO.getCustomerIdList()); customerFormDTO.setCustomerIdList(staffOrgsFormDTO.getCustomerIdList());
Result<List<CustomerDTO>> customerDTOResult = operCrmFeignClient.queryCustomerList(customerFormDTO); CompletableFuture<Result<List<CustomerDTO>>> customerDTOResultFuture = CompletableFuture.supplyAsync(()-> operCrmFeignClient.queryCustomerList(customerFormDTO),executorService);
//Result<List<CustomerDTO>> customerDTOResult = operCrmFeignClient.queryCustomerList(customerFormDTO);
List<StaffOrgsResultDTO> list = null;
Result<List<CustomerDTO>> customerDTOResult = null;
try {
list = listFuture.get(10, TimeUnit.SECONDS);
customerDTOResult = customerDTOResultFuture.get(10, TimeUnit.SECONDS);
} catch (Exception e) {
log.error("getStaffOrgList exception",e);
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getMsg());
}
List<CustomerDTO> customerDTOList = customerDTOResult.getData(); List<CustomerDTO> customerDTOList = customerDTOResult.getData();
if (customerDTOResult.success() && customerDTOList.size() > 0) { if (customerDTOResult.success() && customerDTOList.size() > 0) {
for (CustomerDTO customer : customerDTOList) { for (CustomerDTO customer : customerDTOList) {

20
epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java

@ -229,8 +229,24 @@ public class CustomerServiceImpl extends BaseServiceImpl<CustomerDao, CustomerEn
@Override @Override
public Result<List<CustomerDTO>> queryCustomerList(CustomerFormDTO formDTO) { public Result<List<CustomerDTO>> queryCustomerList(CustomerFormDTO formDTO) {
List<CustomerDTO> customerDTOList = baseDao.selectListByIds(formDTO.getCustomerIdList()); List<CustomerDTO> result = new ArrayList<>();
return new Result<List<CustomerDTO>>().ok(customerDTOList); if(formDTO.getCustomerIdList() != null){
for (String customerId : formDTO.getCustomerIdList()) {
//先从缓存取 取不到从数据库取
CustomerDTO customerDTO = customerRedis.queryCustomerInfo(customerId);
if (customerDTO == null) {
CustomerEntity customerEntity = baseDao.selectById(customerId);
if (customerEntity != null) {
customerDTO = ConvertUtils.sourceToTarget(customerEntity, CustomerDTO.class);
}
}
if (customerDTO != null) {
result.add(customerDTO);
}
}
//List<CustomerDTO> customerDTOList = baseDao.selectListByIds(formDTO.getCustomerIdList());
}
return new Result<List<CustomerDTO>>().ok(result);
} }
@Override @Override

Loading…
Cancel
Save