Показ сотрудника в текущем месяце (с 01 по 10 день) в текущем месяце - PullRequest
0 голосов
/ 27 октября 2019

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

Требования:
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;
...