Пытаюсь закрыть датой ресурс Phone, у которого были использования - получаю ошибку:
Вложение:
res1.png [ 22.29 КБ | Просмотров: 4027 ]
Вложение:
res2.png [ 32.41 КБ | Просмотров: 4027 ]
При этом даты использования, как видно, не выходят на самом деле за границы дат ресурса.
Смотрю код - вижу, что логика проверки обратная, т.е. он проверяет, есть ли периоды использования ресурса внутри периода ресурса (что естественно), а не вне его:
Код:
if (resourceUseManager.checkResourceOutRange(res.getId(), date1, date2))
{
throw new BGMessageException("Использования ресурса " + res.getNumber() + " выходят за его период!");
}
Код:
public boolean checkResourceOutRange(int resourceId, Calendar date1, Calendar date2)
{
boolean result = false;
try
{
java.sql.Date sqlDate1 = TimeUtils.convertCalendarToSqlDate(date1);
java.sql.Date sqlDate2 = TimeUtils.convertCalendarToSqlDate(date2);
String query =
"SELECT COUNT(*) FROM " + this.tableName +
" WHERE resource_id=? AND " +
"(date1 IS NOT NULL AND (? IS NULL OR ?<date1)) AND" +
"(date2 IS NOT NULL AND (? IS NULL OR ?>date2))";
PreparedStatement ps = this.con.prepareStatement(query);
ps.setInt(1, resourceId);
ps.setDate(2, sqlDate1);
ps.setDate(3, sqlDate1);
ps.setDate(4, sqlDate2);
ps.setDate(5, sqlDate2);
ResultSet rs = ps.executeQuery();
result = (rs.next()) && (rs.getInt(1) > 0);
ps.close();
}
catch (Exception e)
{
e.printStackTrace();
}
return result;
}
Клиент: вер. 5.2 сборка 1238 от 25.05.2016 12:23:09
os: Windows 7; java: Java HotSpot(TM) Client VM, v.1.8.0_111
ВНИМАНИЕ: Спецификация 1.8 не рекомендуется (поддерживается 1.6,1.7)
Сервер: вер. 5.2 сборка 1645 от 16.08.2016 17:11:56
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_26
phone вер. 5.2 сборка 286 от 25.05.2016 12:23:30