Доработка обработчика событий
В схему Заявки на РМ в функцию querySave добавить проверки, которые описаны в требованиях
У данного работника уже есть рабочее место, требуется выбрать заявку с типом на перемещение.
Блок кода | ||||
---|---|---|---|---|
| ||||
importPackage(Packages.java.lang);
importPackage(Packages.java.util);
importClass(Packages.java.lang.String);
importClass(Packages.java.util.ArrayList);
importPackage(Packages.ru.intertrust.cmj.af.so);
importPackage(Packages.ru.intertrust.cmj.rest.tuning);
importClass(Packages.ru.intertrust.cmj.rest.tuning.TuningHelper);
importClass(Packages.ru.intertrust.cmj.af.so.SOBeard);
importClass(Packages.ru.intertrust.cmj.af.core.AFSession);
importClass(Packages.ru.intertrust.cmj.af.core.AFCMDomino);
importClass(Packages.org.apache.commons.lang3.StringUtils);
importClass(Packages.ru.intertrust.cmj.tunable.object.TunableObjectApplication);
importClass(Packages.ru.intertrust.cmj.af.utils.DominoUtils);
importClass(Packages.ru.intertrust.cmj.af.utils.BeansUtils);
importClass(Packages.ru.intertrust.cmj.admin.AdminApplicationImpl);
//Функция вызывается при сохранении объекта
function querySave(object, document) {
// Получение tn-объекта
var tuning = object.tuning();
// Карта AFInstance текушего объекта
var values = tuning.getValues();
// Работник, выбранный в заявке
var empl = values.get('wpEmployee').getValue();
// Персона работника
var person = empl.originalData().getParty().getPerson();
if (person != null) {
var arrUnid = person.getUNID().split(":");
var tnUnid = arrUnid[0] + "-TN:" + arrUnid[1];
if (!StringUtils.isEmpty(tnUnid)) {
//Получение tn-объекта персоны
var tunApp = AFSession.get().getApplication(TunableObjectApplication.class);
var personTNObj = tunApp.getEntityByUNID(tnUnid);
//Если в персоне есть заполненое поле "Код РМ", тогда выводить сообщение
//Сообщение выводится, через вызов ошибки throw
if (personTNObj != null && personTNObj.tuning().getValues().get("RMCode") != null && !StringUtils.isEmpty(personTNObj.tuning().getValues().get("RMCode").getValue())) {
throw ("У данного работника уже есть рабочее место, требуется выбрать заявку с типом на перемещение.");
}
}
}
} |
Дата переезда должна быть рабочим днем недели
Блок кода | ||||
---|---|---|---|---|
| ||||
importPackage(Packages.java.lang);
importPackage(Packages.java.util);
importPackage(Packages.ru.intertrust.cmj.af.so);
importPackage(Packages.ru.intertrust.cmj.rest.tuning);
importClass(Packages.ru.intertrust.cmj.rest.tuning.TuningHelper);
importClass(Packages.ru.intertrust.cmj.af.so.SOBeard);
importClass(Packages.ru.intertrust.cmj.af.core.AFSession);
importClass(Packages.ru.intertrust.cmj.af.core.AFCMDomino);
importClass(Packages.org.apache.commons.lang3.StringUtils);
importClass(Packages.java.lang.String);
importClass(Packages.ru.intertrust.cmj.tunable.object.TunableObjectApplication);
importClass(Packages.ru.intertrust.cmj.af.utils.DominoUtils);
importClass(Packages.ru.intertrust.cmj.af.utils.BeansUtils);
importClass(Packages.ru.intertrust.cmj.admin.AdminApplicationImpl);
importClass(Packages.java.util.Date);
function querySave(object, document) {
// Получение tn-объекта
var tuning = object.tuning();
// Карта AFInstance текушего объекта
var values = tuning.getValues();
if (values.get('wpMovingDate') != null && values.get('wpMovingDate').getValue() != null) {
// Дата переезда
var movingDate = values.get('wpMovingDate').getValue();
if (values.get('createdate') != null && values.get('createdate').getValue() != null) {
// Дата создания
var createdate = values.get('createdate').getValue();
if (movingDate.compareTo(createdate) < 1) {
throw ("Дата переезда должна быть больше даты создания заявки на организацию рабочего места.");
}
}
}
} |
Дата переезда должна быть рабочим днем недели
Блок кода | ||||
---|---|---|---|---|
| ||||
importPackage(Packages.java.lang);
importPackage(Packages.java.util);
importPackage(Packages.ru.intertrust.cmj.af.so);
importPackage(Packages.ru.intertrust.cmj.rest.tuning);
importClass(Packages.ru.intertrust.cmj.rest.tuning.TuningHelper);
importClass(Packages.ru.intertrust.cmj.af.so.SOBeard);
importClass(Packages.ru.intertrust.cmj.af.core.AFSession);
importClass(Packages.ru.intertrust.cmj.af.core.AFCMDomino);
importClass(Packages.org.apache.commons.lang3.StringUtils);
importClass(Packages.java.lang.String);
importClass(Packages.ru.intertrust.cmj.tunable.object.TunableObjectApplication);
importClass(Packages.ru.intertrust.cmj.af.utils.DominoUtils);
importClass(Packages.ru.intertrust.cmj.af.so.impl.AppointmentHead);
importClass(Packages.ru.intertrust.cmj.af.utils.BeansUtils);
importClass(Packages.ru.intertrust.cmj.admin.AdminApplicationImpl);
importClass(Packages.ru.intertrust.cmj.admin.so.worktimeprofile.SOWorkTimeProfile);
importClass(Packages.java.util.Calendar);
importClass(Packages.java.util.Date);
importClass(Packages.java.util.ArrayList);
importClass(Packages.java.lang.Integer);
function querySave(object, document) {
// Получение tn-объекта
var tuning = object.tuning();
// Карта AFInstance текушего объекта
var values = tuning.getValues();
// Работник, выбранный в заявке
var empl = values.get('wpEmployee').getValue();
if (values.get('wpMovingDate') != null && values.get('wpMovingDate').getValue() != null) {
// Дата переезда
var movingDate = values.get('wpMovingDate').getValue();
// Получение рабочего профиля
var appAdmin = AFSession.get().getApplication(AdminApplicationImpl.class);
var workTimeProfile = appAdmin.getWorkTimeProfileDefault();
if (workTimeProfile == null) {
throw ("Расчет даты переезда невозможен, так как не найден профиль рабочего времени по умолчанию. Обратитесь к администратору, для его создания");
} else {
//Вычисляются выходные дни на неделе
var dayDescription = workTimeProfile.getDayDescriptions();
var holidayIndexes = new ArrayList();
var holidayValue = SOWorkTimeProfile.DayType.HOLIDAY; //выходной
for (var i = 0; i < dayDescription.size(); i++) {
if (dayDescription.get(i).getType() == holidayValue) holidayIndexes.add(Integer.valueOf(i + 1));
}
//Вычисляется день недели в зависимости от выбранной даты
var rCalendar = movingDate.toJavaCalendar();
var intDay = rCalendar.get(Calendar.DAY_OF_WEEK);
if (intDay == 1) {
intDay = 7;
} else {
--intDay;
}
//Сравнивается день недели с днями рабочего профиля
for (var i = 0; i < holidayIndexes.size(); i++) {
if (holidayIndexes.get(i) == intDay) throw ("Дата переезда должна быть рабочим днем недели.");
}
}
}
} |