Rest API Call из браузера отображает неверные результаты из хранилища mongo в весенней загрузке - PullRequest
0 голосов
/ 22 февраля 2019

Мой вопрос был бы слишком запутанным, чтобы понять, поскольку я столкнулся с очень странной проблемой. Я постараюсь изо всех сил, чтобы объяснить это.

У нас есть 2 приложения
Приложение 1: Spring boot application, котороеимеет api отдыха.
Приложение 2: веб-приложение, которое использует api отдыха из приложения 1 для отображения информации.

В моем загрузочном приложении Spring я использую репозиторий mongo для запроса документов на основе датыв поле, это прекрасно работает, когда я проверяю его у почтальона или чванца, прежде чем он будет использован веб-приложением в браузере.

В тот момент, когда веб-приложение потребляет остальные API, оно начинает давать неверные результаты даты.

Кроме того, когда остальные API-интерфейсы используются веб-приложением, независимо от того, сколько раз вы вызываете остальные API-интерфейсы в Postman или Swagger, это дает неверные результаты.

Только после перезапуска сервера и вызова остальных API-интерфейсов.от почтальона или чванства это тогда дает правильные результаты.

Мой недетПонятно, что когда веб-приложение использует остальные API, даты в документах анализируются в UTC.С другой стороны, это не происходит от почтальона или чванца, когда вообще нет вызова из веб-приложения.

Вот мой фрагмент кода в весеннем загрузочном приложении 1 для извлечения документов с использованием репозитория mongodb.

@Service
class EmployeeImpl{
@Autowired
XYZRepository xyzRepository;
    public List<Employees> getEmployeeDetails(int EmployeeId) {

                Date tempendDate = new Date();
                String timeZone = "Asia/Kolkata";//IST timezone
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
                sdf.setTimeZone(TimeZone.getTimeZone(timeZone));
                Date endDate = getDatefromStringDate(sdf.format(tempendDate),"yyyy-MM-dd'T'HH:mm:ss'Z'");
                Date startDate = addHours(endDateTemp,-24);
                List<Employees> employeeList = new ArrayList<>();
                Pageable page = PageRequest.of(0, 24, Direction.DESC,"timeStamp");
                Page<Employees> employeeDetails = xyzRepository.findByEmployeeIdAndTimeStamp(EmployeeId, startDate,endDate,page);
                employeeList.addAll(employeeDetails.getContent());              
                return employeeList;

    }
    public Date getDatefromStringDate(String date, String format){
        try{
        SimpleDateFormat formatter = new SimpleDateFormat(format);
        return formatter.parse(date);
        }catch (Exception e) {
            return null;
        }
    }   

        public Date addHours(Date date, int hours){
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.HOUR, hours);
        return cal.getTime();
    }
}

@Repository
public interface XYZRepository extends CrudRepository<Employees, String> {

    @Query("{'EmployeeId':?0,timeStamp: { $gte:?1, $lt:?2}}")
    Page<Employees> findByEmployeeIdAndTimeStamp(int EmpId, Date localstartDate,Date localendDate,Pageable pageable);

}

То, что я ищу, - это то, как я могу получить тот же ответ, когда rest api вызывается пользовательским интерфейсом, и тот же ответ, когда вызывается почтальоном или чванством.

...