Мне нужна помощь, чтобы узнать конкретного сотрудника из списка сотрудников.
Требования:
1) предположим, сотрудник присоединится к текущему месяцу, например, с 01-10-2019 по 10-10-2019, чтобы получитьтолько дни сотрудников 01 до 10 и уходящих сотрудников. и предположим, что работники присоединяются в период с 11-10-2019 по 30-10-2019 и далее, что сотрудники показывают в следующем месяце с выходом работников, а с 01-10-2019 по 10-10-2019 также показывают в следующие месяцы
2) то же самоеПроцесс применяется к следующему весь месяц.
, а также выходящий сотрудник хочет в списке. Это требование относится только к новому присоединению. Но не распространяется на выходящих сотрудников.
введите описание изображения здесь
Прикрепленная ссылка на список сотрудников выше
1) выставка сотрудников «Красной границы» в следующем месяце.
2) выставка сотрудников «Зеленых» в текущем месяце.
Сервис
$queryBuilder = $this->entityManager->createQueryBuilder();
$empName = "CONCAT(hen.empFname,' ',hen.empLname) as name";
$queryBuilder->select('hwi.workinfoEmpid as empId', 'hwi.workinfomgrCode', $empName ,'hei.empDoj as doj', 'hj.jobLdesc','hg.grdLdesc', 'hl.locLdesc as location', 'hei.empEmail', 'hc.commPersconphone1number', 'hc.commPersconphone2number', 'hd.deptLdesc as department')
->from(HrWorkInfo::class, 'hwi')
->join(HrEmpName::class, 'hen', 'with', 'hwi.workinfoEmpid = hen.empId AND hwi.ouCode = hen.ouCode AND hwi.langCode = hen.langCode')
->join(HrEmpid::class, 'hei', 'with', 'hei.empId = hen.empId AND hen.ouCode = hei.ouCode AND hen.langCode = hei.langCode')
->leftJoin(HrJob::class, 'hj', 'with', 'hj.ouCode = hwi.ouCode AND hj.langCode = hwi.langCode AND hj.jobCode=hwi.workinfoJob')
->leftJoin(HrGrade::class, 'hg', 'with', 'hg.ouCode = hwi.ouCode AND hg.langCode = hwi.langCode AND hg.grdCode = hwi.workinfoJobgrd')
->leftJoin(HrLocation::class, 'hl', 'with', 'hl.ouCode = hwi.ouCode AND hl.langCode = hwi.langCode AND hl.locCode=hwi.workinfoLoccode')
->leftJoin(HrDepartment::class, 'hd', 'with', 'hd.ouCode = hwi.ouCode AND hd.langCode = hwi.langCode AND hd.deptCode = hwi.workinfodeptCode')
->leftJoin(HrCommunication::class, 'hc', 'with', 'hc.ouCode = hwi.ouCode AND hc.langCode = hwi.langCode AND hc.commEmpid=hwi.workinfoEmpid')
->where('hwi.workinfomgrCode = ?1')
->andWhere('hwi.ouCode = ?2')
->andWhere('hwi.langCode = ?3')
->andWhere('hei.smartlistEmpstatus != 56')
->andWhere('hg.grdLdesc = ?4')
->andWhere('YEAR(hei.empDoj) >= ?5')
//->orWhere('hei.empDoj between :lastMonthDate AND :currentMonthDate')
->setParameter('1', $empId)
->setParameter('2', $ouCode)
->setParameter('3', $langCode)
->setParameter('4', 'Team Member')
->setParameter('lastMonthDate', $lastMonthDate)
->setParameter('currentMonthDate', $currentMonthDate)
->setParameter('5', $dateTime->format($calculation));
//echo $queryBuilder->getQuery()->getSQL();exit;
$result = $queryBuilder->getQuery()->getResult();
foreach ($result as $key => $value) {
if ($result[$key]['workinfoEmpid'] == $empId) {
array_splice($result, $key, $key);
}
}
return $result;