Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.
Информация
iconfalse
titleПостановка задачи

Добавить проверки при сохранении заявки на рабочее место:

  • Дата переезда должна быть больше даты создания заявки на организацию рабочего места
  • Дата переезда должна быть рабочим днем недели.
  • У данного работника уже есть рабочее место, требуется выбрать заявку с типом на перемещение.
Подсказка
iconfalse
Инструмент: Палитра XML
Свойства страницы
Статус

Статус
colourYellowGreen
titleВ РАБОТЕГОТОВО

РазделФорма
Комментарий

панель
titleРеализация

Оглавление

панель
<Сопроводительная информация>
titleРезультат
Image Added

Доработка обработчика событий

В схему Заявки на РМ в функцию querySave добавить проверки, которые описаны в требованиях

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

Блок кода
languagejs
titlequerySave
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.java.lang.String.ru.intertrust.cmj.tunable.object.TunableObjectApplication);
importClass(Packages.ru.intertrust.cmj.af.so.impl.DepartmentUnit.utils.DominoUtils);
importClass(Packages.ru.intertrust.cmj.af.utils.BeansUtils);
importClass(Packages.ru.intertrust.cmj.tunable.object.TunableObjectApplication);
importClassadmin.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 ("У данного работника уже есть рабочее место, требуется выбрать заявку с типом на перемещение.");
			}
		}
	}
}

Дата переезда должна быть рабочим днем недели

Блок кода
languagejs
titlequerySave
importPackage(Packages.java.lang);
importPackage(Packages.java.util);
importPackage(Packages.ru.intertrust.cmj.af.utils.DominoUtilsso);
importPackage(Packages.ru.intertrust.cmj.rest.tuning);
importClass(Packages.ru.intertrust.cmj.afrest.sotuning.impl.AppointmentHeadTuningHelper);
importClass(Packages.ru.intertrust.cmj.af.utilsso.BeansUtilsSOBeard);
importClass(Packages.ru.intertrust.cmj.af.admincore.AdminApplicationImplAFSession);
importClass(Packages.ru.intertrust.cmj.adminaf.socore.worktimeprofile.SOWorkTimeProfileAFCMDomino);
importClass(Packages.org.apache.javacommons.utillang3.CalendarStringUtils);
importClass(Packages.java.utillang.DateString);
importClass(Packages.java.util.ArrayList.ru.intertrust.cmj.tunable.object.TunableObjectApplication);
importClass(Packages.java.lang.Integer.ru.intertrust.cmj.af.utils.DominoUtils);
importClass(Packages.ru.intertrust.cmj.tunableaf.objectutils.history.TunableHistoryHelperBeansUtils);
importClass(Packages.ru.intertrust.cmj.af.history.FieldBase.admin.AdminApplicationImpl);
importClass(Packages.java.util.Date);

function querySave(object, document) {

	// Получение tn-объекта
	var tuning = object.tuning();

	// Карта AFInstance текушего объекта
	var values  if= (object.tuning().getValues();
		
	if (values.get('wpMovingDate') != null && object.tuning().getValues()values.get('wpMovingDate').getValue() != null) {

	 	//               Дата переезда
		var movingDate = object.tuning().getValues().values.get('wpMovingDate').getValue();
                if (object.tuning().getValues()

		if (values.get('createdate') != null && object.tuning().getValues()values.get('createdate').getValue() != null) {

		 	//                   Дата создания
			var createdate = object.tuning().getValues()values.get('createdate').getValue();
                    			if (movingDate.compareTo(createdate) < 1) {
                        				throw ("Дата переезда должна быть больше даты создания заявки на организацию рабочего места.");
                    }
                }
            }

	if (object.tuning().getValues()
			}
		}
	}
}

Дата переезда должна быть рабочим днем недели

Блок кода
languagejs
titlequerySave
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 && object.tuning().getValues()values.get('wpMovingDate').getValue() != null) {

		// Дата переезда
		var movingDate = object.tuning().getValues().values.get('wpMovingDate').getValue();

		// Получение рабочего профиля
		var appAdmin = AFSession.get().getApplication(AdminApplicationImpl.class);
		var workTimeProfile = appAdmin.getWorkTimeProfileDefault();

		if (workTimeProfile == null) {
		 	throw throw("Расчет даты переезда невозможен, так как не найден профиль рабочего времени по умолчанию. Обратитесь к администратору, для его создания");
		} else {

			//Вычисляются выходные дни на неделе
			var dayDescription = workTimeProfile.getDayDescriptions();

			    var holidayIndexes = new ArrayList(); 
			    var holidayValue = SOWorkTimeProfile.DayType.HOLIDAY; //выходной

			   for for(var i = 0; i < dayDescription.size(); i++) {
				  if 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 if(intDay == 1) {
				intDay = 7;
			  } else {
				--intDay;
			  }

		 	//Сравнивается день недели с днями рабочего профиля
			for (var i = 0; i < holidayIndexes.size(); i++) {
			    	if (holidayIndexes.get(i) == intDay)
			 throw   	throw("Дата переезда должна быть рабочим днем недели.");
			  }

		}
	}

        var empl = object.tuning().getValues().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)) {
                var tunApp = AFSession.get().getApplication(TunableObjectApplication.class);
                var personTNObj = tunApp.getEntityByUNID(tnUnid);
                if (personTNObj != null && personTNObj.tuning().getValues().get("RMCode") != null &&
                !StringUtils.isEmpty(personTNObj.tuning().getValues().get("RMCode").getValue())) {
                    throw("У данного работника уже есть рабочее место, требуется выбрать заявку с типом на перемещение.");
                }
            }
        }
}