diff --git a/app/Config/Routes.php b/app/Config/Routes.php
index 67b2f01..2c63937 100644
--- a/app/Config/Routes.php
+++ b/app/Config/Routes.php
@@ -59,13 +59,40 @@ $routes->group('', ['namespace' => 'App\Controllers\Article'], static function (
/**
* 현장확인매물 내역
*/
- $routes->group('article', static function ($routes) {
- $routes->get('receipt/lists', 'Receipt::lists');
- $routes->get('receipt/detail/(:num)', 'Receipt::detail/$1');
+ $routes->group('article/receipt', static function ($routes) {
+ $routes->get('lists', 'Receipt::lists');
+ $routes->get('detail/(:num)', 'Receipt::detail/$1');
- $routes->get('receipt/getResultList', 'Receipt::getResultList');
+ $routes->get('getResultList', 'Receipt::getResultList');
+ $routes->get('excel', 'Receipt::excel');
});
+
+ /**
+ * 조직별 배정 현황
+ */
+ $routes->group('article/dept', static function ($routes) {
+ $routes->get('lists', 'Dept::lists');
+ $routes->get('detail/(:num)', 'Dept::detail/$1');
+
+ $routes->get('getResultList', 'Dept::getResultList');
+ $routes->get('excel', 'Dept::excel');
+ $routes->get('print', 'Dept::print'); // 관할포인트
+ $routes->get('updateAssign', 'Dept::updateAssign'); // 배정변경
+
+ });
+
+ /**
+ * 녹취매물 내역
+ */
+ $routes->group('article/record', static function ($routes) {
+ $routes->get('lists', 'Record::lists');
+ $routes->get('detail/(:num)', 'Record::detail/$1');
+
+ $routes->get('getResultList', 'Record::getResultList');
+ $routes->get('excel', 'Record::excel');
+ });
+
});
diff --git a/app/Controllers/Article/Apt.php b/app/Controllers/Article/Apt.php
index a9dfb08..c891fa1 100644
--- a/app/Controllers/Article/Apt.php
+++ b/app/Controllers/Article/Apt.php
@@ -163,7 +163,7 @@ class Apt extends BaseController
try {
$team = $this->request->getPost('team');
- $damdang = $this->request->getPost(index: 'damdang');
+ $damdang = $this->request->getPost(index: 'usr_id');
if (empty($team)) {
return $this->response->setJSON([
diff --git a/app/Controllers/Article/Dept.php b/app/Controllers/Article/Dept.php
new file mode 100644
index 0000000..b23bde2
--- /dev/null
+++ b/app/Controllers/Article/Dept.php
@@ -0,0 +1,254 @@
+codeModel = new CodeModel();
+ $this->model = new DeptModel();
+ }
+
+ public function lists(): string
+ {
+
+ $codes = $this->codeModel->getCodeLists(['NHN_PRODUCT_TYPE', 'RECEIPT_STATUS1', 'RESERVED_APM']); // 코드조회
+ $sido = $this->model->getAreaList(); // 지역조회
+ $bonbu = $this->model->getBonbuList();
+ $team = $this->model->getTeamList();
+ $user = $this->model->getUserList();
+
+ $this->data['sido'] = $sido;
+ $this->data['bonbu'] = $bonbu;
+ $this->data['team'] = $team;
+ $this->data['user'] = $user;
+ $this->data['codes'] = $codes;
+
+
+ return view("pages/article/dept/lists", $this->data);
+ }
+
+ public function getResultList()
+ {
+ $start = (int) $this->request->getGet('start') ?: 0;
+ $end = (int) $this->request->getGet('length') ?: 10;
+
+ $data = [
+ 'rcpt_atclno' => $this->request->getGet('rcpt_atclno'), // 매물ID
+
+ 'sdate' => $this->request->getGet('sdate'), // 시작일
+ 'edate' => $this->request->getGet('edate'), // 종료일
+
+ 'rsrv_tm_ap' => $this->request->getGet('rsrv_tm_ap'), // 유형
+ 'rsrv_sdate' => $this->request->getGet('rsrv_sdate'), // 시작일
+ 'rsrv_edate' => $this->request->getGet('rsrv_edate'), // 종료일
+
+ 'bonbu' => $this->request->getGet('bonbu'), // 본부
+ 'team' => $this->request->getGet('team'), // 팀
+ 'user' => $this->request->getGet('user'), // 담당자
+
+ 'sido' => $this->request->getGet('sido'), // 시도
+ 'gugun' => $this->request->getGet('gugun'), // 시군구
+ 'dong' => $this->request->getGet('dong'), // 읍면동
+
+ 'ground_plan_yn' => $this->request->getGet('ground_plan_yn'), // 평면도유무
+ 'ground_plan' => $this->request->getGet('ground_plan'), // 평면도요청
+ 'direct_trad_yn' => $this->request->getGet('direct_trad_yn'), // 직거래
+
+ 'stat' => $this->request->getGet('stat'),
+
+ 'srchType' => $this->request->getGet('srchType'), // 검색유형
+ 'srchTxt' => $this->request->getGet('srchTxt'), // 검색어
+ ];
+
+ $totalCount = $this->model->getTotalCount($data);
+
+ $datas = $this->model->getResultList($start, $end, $data);
+
+ $deptStatistics = $this->model->getDeptStatistics($data); // 조직별통계
+ $areaStatistics = $this->model->getAreaStatistics($data); // 지역별통계
+
+ return $this->response->setJSON(body: [
+ 'recordsTotal' => $totalCount,
+ 'recordsFiltered' => $totalCount,
+ 'data' => $datas,
+ 'widgets' => [
+ 'deptList' => $deptStatistics,
+ 'areaStats' => $areaStatistics,
+ ],
+ ]);
+ }
+
+
+ // 관할포인트 인쇄 - 화면
+ public function print(): string
+ {
+ $deptSq = $this->request->getGet('depChk');
+ $dept_cnt = count($deptSq);
+
+
+ $listDept = $this->model->getDeptMapList($deptSq);
+
+ if (!empty($listDept)) {
+ $lati = 0;
+ $long = 0;
+ foreach ($listDept as $dept) {
+ $lati += $dept['rcpt_y'];
+ $long += $dept['rcpt_x'];
+ }
+
+ $lati = $lati / $dept_cnt;
+ $long = $long / $dept_cnt;
+ }
+
+ return view("pages/article/dept/printMap", [
+ // 'lati' => $lati,
+ // 'long' => $long,
+ 'listDept' => $listDept,
+ ]);
+ }
+
+
+ // 엑셀 다운로드
+ public function excel()
+ {
+ try {
+
+ $data = [
+ 'rcpt_atclno' => $this->request->getGet('rcpt_atclno'), // 매물ID
+
+ 'sdate' => $this->request->getGet('sdate'), // 시작일
+ 'edate' => $this->request->getGet('edate'), // 종료일
+
+ 'rsrv_tm_ap' => $this->request->getGet('rsrv_tm_ap'), // 유형
+ 'rsrv_sdate' => $this->request->getGet('rsrv_sdate'), // 시작일
+ 'rsrv_edate' => $this->request->getGet('rsrv_edate'), // 종료일
+
+ 'bonbu' => $this->request->getGet('bonbu'), // 본부
+ 'team' => $this->request->getGet('team'), // 팀
+ 'user' => $this->request->getGet('user'), // 담당자
+
+ 'sido' => $this->request->getGet('sido'), // 시도
+ 'gugun' => $this->request->getGet('gugun'), // 시군구
+ 'dong' => $this->request->getGet('dong'), // 읍면동
+
+ 'ground_plan_yn' => $this->request->getGet('ground_plan_yn'), // 평면도유무
+ 'ground_plan' => $this->request->getGet('ground_plan'), // 평면도요청
+ 'direct_trad_yn' => $this->request->getGet('direct_trad_yn'), // 직거래
+
+ 'stat' => $this->request->getGet('stat'),
+
+ 'srchType' => $this->request->getGet('srchType'), // 검색유형
+ 'srchTxt' => $this->request->getGet('srchTxt'), // 검색어
+ ];
+
+ $datas = $this->model->getExcelList($data);
+
+ return $this->response->setJSON(body: [
+ 'data' => $datas,
+ ]);
+
+ } catch (\Exception $e) {
+ $e->getPrevious()->getTraceAsString();
+ }
+ }
+
+
+ // 배정변경
+ public function updateAssign()
+ {
+ try {
+
+ $team = $this->request->getPost('team');
+ $damdang = $this->request->getPost(index: 'usr_id');
+
+ if (empty($team)) {
+ return $this->response->setJSON([
+ 'code' => '9',
+ 'msg' => '팀정보 누락',
+ ]);
+ }
+
+ if (empty($damdang)) {
+ return $this->response->setJSON([
+ 'code' => '9',
+ 'msg' => '담당자정보 누락',
+ ]);
+ }
+
+
+ $rows = $this->request->getPost('rows');
+
+ $rows = json_decode($rows, true);
+
+ if (count($rows) > 0) {
+ foreach ($rows as $row) {
+ $params = [
+ 'dept_sq' => $team,
+ 'damdang' => $damdang,
+ 'rcpt_sq' => $row['rcpt_sq'],
+ ];
+
+ $this->model->updateAssign($params);
+
+ }
+ } else {
+ return $this->response->setJSON([
+ 'code' => '9',
+ 'msg' => '저장데이터 누락',
+ ]);
+ }
+
+ return $this->response->setJSON([
+ 'code' => '0',
+ 'msg' => 'success'
+ ]);
+
+
+ } catch (\Exception $e) {
+ return $this->response->setJSON([
+ 'code' => '9',
+ 'msg' => $e->getMessage(),
+ ]);
+ }
+ }
+
+ // 상세화면
+ public function detail($id): string
+ {
+
+ $id = (int) $id;
+
+ if ($id <= 0) {
+ throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound();
+ }
+
+ $codes = $this->codeModel->getCodeLists(['TRADE_TYPE', 'RECEIPT_STATUS2', 'RECEIPT_STATUS3', 'SMS_MSG_TYPE']); // 코드조회
+ $bonbu = $this->model->getBonbuList();
+ $team = $this->model->getTeamList();
+
+ $data = $this->model->getDetail($id);
+ $history = $this->model->getHistory($id);
+
+ // $aptGround = $this->model->getAptGround($data['rcpt_dong']);
+
+ // 시간대별통계
+ $tmCount = $this->model->getUsrRsrvDateTmCount($id);
+
+ $this->data['codes'] = $codes;
+ $this->data['bonbu'] = $bonbu;
+ $this->data['team'] = $team;
+
+ $this->data['data'] = $data;
+ $this->data['history'] = $history;
+
+ $this->data['tmCount'] = $tmCount;
+
+ return view("pages/article/dept/detail", $this->data);
+ }
+}
\ No newline at end of file
diff --git a/app/Controllers/Article/Record.php b/app/Controllers/Article/Record.php
new file mode 100644
index 0000000..6cf6d9a
--- /dev/null
+++ b/app/Controllers/Article/Record.php
@@ -0,0 +1,152 @@
+model = new RecordModel();
+ $this->codeModel = new CodeModel();
+ }
+
+ public function lists(): string
+ {
+
+ $sido = $this->model->getAreaList(); // 지역조회
+ $bonbu = $this->model->getBonbuList();
+ $team = $this->model->getTeamList();
+ $user = $this->model->getUserList();
+
+ $this->data['sido'] = $sido;
+ $this->data['bonbu'] = $bonbu;
+ $this->data['team'] = $team;
+ $this->data['user'] = $user;
+
+ return view("pages/article/record/lists", $this->data);
+ }
+
+ public function getResultList()
+ {
+ $start = (int) $this->request->getGet('start') ?: 0;
+ $end = (int) $this->request->getGet('length') ?: 10;
+
+ $data = [
+ 'rcpt_atclno' => $this->request->getGet('rcpt_atclno'), // 매물ID
+
+ 'sdate' => $this->request->getGet('sdate'), // 시작일
+ 'edate' => $this->request->getGet('edate'), // 종료일
+
+ 'photo_sdate' => $this->request->getGet('photo_sdate'), // 촬영완료일자 시작일
+ 'photo_edate' => $this->request->getGet('photo_edate'), // 촬영완료일자 종료일
+
+ 'record_sdate' => $this->request->getGet('record_sdate'), // 녹취완료일자 시작일
+ 'record_edate' => $this->request->getGet('record_edate'), // 녹취완료일자 종료일
+ 'rec_yn' => $this->request->getGet('rec_yn'), // 녹취완료여부
+
+ 'bonbu' => $this->request->getGet('bonbu'), // 본부
+ 'team' => $this->request->getGet('team'), // 팀
+ 'user' => $this->request->getGet('user'), // 담당자
+
+ 'sido' => $this->request->getGet('sido'), // 시도
+ 'gugun' => $this->request->getGet('gugun'), // 시군구
+ 'dong' => $this->request->getGet('dong'), // 읍면동
+
+ 'srchType' => $this->request->getGet('srchType'), // 검색유형
+ 'srchTxt' => $this->request->getGet('srchTxt'), // 검색어
+ ];
+
+ $totalCount = $this->model->getTotalCount($data);
+
+ $datas = $this->model->getResultList($start, $end, $data);
+
+ return $this->response->setJSON(body: [
+ 'recordsTotal' => $totalCount,
+ 'recordsFiltered' => $totalCount,
+ 'data' => $datas,
+ ]);
+ }
+
+
+ // 엑셀 다운로드
+ public function excel()
+ {
+ try {
+
+ $data = [
+ 'rcpt_atclno' => $this->request->getGet('rcpt_atclno'), // 매물ID
+
+ 'sdate' => $this->request->getGet('sdate'), // 시작일
+ 'edate' => $this->request->getGet('edate'), // 종료일
+
+ 'photo_sdate' => $this->request->getGet('photo_sdate'), // 촬영완료일자 시작일
+ 'photo_edate' => $this->request->getGet('photo_edate'), // 촬영완료일자 종료일
+
+ 'record_sdate' => $this->request->getGet('record_sdate'), // 녹취완료일자 시작일
+ 'record_edate' => $this->request->getGet('record_edate'), // 녹취완료일자 종료일
+ 'rec_yn' => $this->request->getGet('rec_yn'), // 녹취완료여부
+
+ 'bonbu' => $this->request->getGet('bonbu'), // 본부
+ 'team' => $this->request->getGet('team'), // 팀
+ 'user' => $this->request->getGet('user'), // 담당자
+
+ 'sido' => $this->request->getGet('sido'), // 시도
+ 'gugun' => $this->request->getGet('gugun'), // 시군구
+ 'dong' => $this->request->getGet('dong'), // 읍면동
+
+ 'srchType' => $this->request->getGet('srchType'), // 검색유형
+ 'srchTxt' => $this->request->getGet('srchTxt'), // 검색어
+ ];
+
+ $datas = $this->model->getExcelList($data);
+
+ return $this->response->setJSON(body: [
+ 'data' => $datas,
+ ]);
+
+ } catch (\Exception $e) {
+ $e->getPrevious()->getTraceAsString();
+ }
+ }
+
+
+ // 상세화면
+ public function detail($id): string
+ {
+
+ $id = (int) $id;
+
+ if ($id <= 0) {
+ throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound();
+ }
+
+ $codes = $this->codeModel->getCodeLists(['TRADE_TYPE', 'RECEIPT_STATUS2', 'RECEIPT_STATUS3', 'SMS_MSG_TYPE']); // 코드조회
+ $bonbu = $this->model->getBonbuList();
+ $team = $this->model->getTeamList();
+
+ $data = $this->model->getDetail($id);
+ $history = $this->model->getHistory($id);
+
+ $aptGround = $this->model->getAptGround($data['rcpt_dong']);
+
+ // 시간대별통계
+ $tmCount = $this->model->getUsrRsrvDateTmCount($id);
+
+ $this->data['codes'] = $codes;
+ $this->data['bonbu'] = $bonbu;
+ $this->data['team'] = $team;
+
+ $this->data['data'] = $data;
+ $this->data['history'] = $history;
+
+ $this->data['tmCount'] = $tmCount;
+
+ return view("pages/article/record/detail", $this->data);
+ }
+}
\ No newline at end of file
diff --git a/app/Models/article/DeptModel.php b/app/Models/article/DeptModel.php
new file mode 100644
index 0000000..8ca36e2
--- /dev/null
+++ b/app/Models/article/DeptModel.php
@@ -0,0 +1,1336 @@
+db->query($sql, [$gugun]);
+
+ } else if (!empty($sido)) {
+ $chk_sido = substr($sido, '0', '2');
+
+ if ($chk_sido === '36') {
+ $sido = substr($sido, '0', '4');
+ $sql = "SELECT a.region_cd, TRIM(REPLACE(a.region_nm, b.region_nm, '')) region_nm " .
+ "FROM region_codes a " .
+ "LEFT JOIN region_codes b ON b.region_cd = CONCAT(SUBSTR(a.region_cd,1,4),'000000') " .
+ "WHERE a.region_cd LIKE concat(?, '%') " .
+ "AND a.region_cd NOT LIKE '%000000' " .
+ "AND a.region_cd LIKE '%00' " .
+ "AND a.use_yn = 'Y' " .
+ "AND EXISTS (SELECT 'x' FROM region_codes c WHERE c.region_cd LIKE CONCAT(SUBSTR(a.region_cd,1,5),'%') AND c.region_cd > CONCAT(SUBSTR(a.region_cd,1,5),'00000')) " .
+ "ORDER BY a.region_nm ASC";
+ } else {
+ $sido = substr($sido, '0', '2');
+ $sql = "SELECT a.region_cd, TRIM(REPLACE(a.region_nm, b.region_nm, '')) region_nm" .
+ " FROM region_codes a" .
+ " LEFT JOIN region_codes b ON b.region_cd = CONCAT(SUBSTR(a.region_cd,1,2),'00000000')" .
+ " WHERE a.region_cd LIKE concat(?, '%')" .
+ " AND a.region_cd NOT LIKE '%00000000'" .
+ " AND a.region_cd LIKE '%00000'" .
+ " AND a.use_yn = 'Y'" .
+ " AND EXISTS (SELECT 'x' FROM region_codes c WHERE c.region_cd LIKE CONCAT(SUBSTR(a.region_cd,1,5),'%') AND c.region_cd > CONCAT(SUBSTR(a.region_cd,1,5),'00000'))" .
+ " ORDER BY a.region_nm ASC";
+ }
+
+ $query = $this->db->query($sql, [$sido]);
+ } else {
+ $sql = "SELECT a.region_cd, a.region_nm " .
+ "FROM region_codes a " .
+ "WHERE (a.region_cd LIKE '%00000000' " .
+ "AND a.use_yn = 'Y') " .
+ "OR region_cd = 3611000000;";
+
+ $query = $this->db->query($sql);
+ }
+
+
+ return $query->getResultArray();
+ }
+
+ // 소속본부조회
+ public function getBonbuList()
+ {
+ $sql = "SELECT dept_sq, pdept_sq, dept_nm, dept_desc, dept_head, use_yn, depth, insert_tm, insert_usr, update_tm, update_usr, lft, rgt" .
+ " FROM departments" .
+ " WHERE depth = 1" .
+ " AND use_yn = 'Y'" .
+ " ORDER BY lft";
+
+ $query = $this->db->query($sql);
+
+
+ return $query->getResultArray();
+ }
+
+ // 소속팀 조회
+ public function getTeamList()
+ {
+ $sql = "SELECT dept_sq, pdept_sq, dept_nm" .
+ " FROM departments" .
+ " WHERE depth = 2" .
+ " AND use_yn = 'Y'" .
+ " ORDER BY dept_nm";
+
+ $query = $this->db->query($sql);
+
+
+ return $query->getResultArray();
+ }
+
+ // 유저 조회
+ public function getUserList()
+ {
+ $sql = "SELECT
+ a.usr_sq, a.usr_id, a.usr_nm, a.dept_sq
+ FROM users a
+ WHERE
+ a.usr_level IN ('3','4','40','5','50','6','60','61','62','7','8','70')
+ AND a.use_yn = 'Y'
+ AND EXISTS (
+ SELECT 'x' FROM departments a1 INNER JOIN departments a2 ON a2.lft BETWEEN a1.lft AND a1.rgt AND a2.use_yn = 'Y'
+ WHERE 1=1 AND a2.dept_sq = a.dept_sq AND a1.use_yn = 'Y'
+ )
+ ORDER BY a.usr_level DESC, a.usr_nm ASC ";
+
+ $query = $this->db->query($sql);
+
+ return $query->getResultArray();
+ }
+
+ // 조직별통계
+ public function getDeptStatistics($data)
+ {
+
+ $builder = $this->db->table('receipt a');
+
+ $builder->select("b.dept_sq, e.dept_nm as bonbu_nm, d.dept_nm as team_nm, COUNT(b.dept_sq) as cnt");
+
+ $builder->join('result b', 'a.rcpt_sq = b.rcpt_sq', 'left');
+ $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner');
+ $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left');
+ $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left');
+ $builder->join('departments e', 'd.pdept_sq = e.dept_sq', 'left');
+
+ $builder->where('a.insert_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false);
+
+ if (!empty($data['rcpt_atclno'])) {
+ $builder->where('a.rcpt_atclno', $data['rcpt_atclno']);
+ } else {
+
+ $builder->where('a.isSiteVRVerification', 'N');
+
+ // 접수일자
+ /*
+ if (!empty($data['sdate'])) {
+ $builder->where('b.rsrv_date >=', $data['sdate'] . ' 00:00:00');
+ }
+
+ if (!empty($data['edate'])) {
+ $builder->where('b.rsrv_date >=', $data['edate'] . ' 23:59:59');
+ }
+ */
+
+ // if (!empty($data['rsrv_tm_ap'])) {
+ // $builder->where('b.rsrv_tm_ap', $data['rsrv_tm_ap']);
+ // }
+
+ // 예약일자
+ if (!empty($data['rsrv_sdate'])) {
+ $builder->where('b.rsrv_date >=', $data['rsrv_sdate'] . ' 00:00:00');
+ }
+
+ if (!empty($data['rsrv_edate'])) {
+ $builder->where('b.rsrv_date <=', $data['rsrv_edate'] . ' 23:59:59');
+ }
+
+
+ // 지역
+ if (!empty($data['dong'])) {
+ $builder->where('a.rcpt_dong', $data['dong']);
+ } else {
+ if (!empty($data['gugun'])) {
+ $builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after');
+ } else {
+ if (!empty($data['sido'])) {
+ $builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after');
+ }
+ }
+ }
+
+ // 관할조직
+ if (!empty($data['bonbu'])) {
+ $builder->where('d.pdept_sq', $data['bonbu']);
+ }
+
+ if (!empty($data['team'])) {
+ $builder->where('d.dept_sq', $data['team']);
+ }
+
+ if (!empty($data['user'])) {
+ $builder->where('d.usr_sq', $data['user']);
+ }
+
+ // 평면도유무
+ if ($data['ground_plan_yn'] == 'Y') {
+ $builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE);
+ } else if ($data['ground_plan_yn'] == 'N') {
+ $builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE);
+ }
+
+ // 평면도요청
+ if (!empty($data['ground_plan'])) {
+ $builder->where('a.ground_plan', $data['ground_plan']);
+ }
+
+ // 직거래
+ if ($data['direct_trad_yn'] == "Y") {
+ $builder->where('a.direct_trad_yn', 'Y');
+ } else if ($data['direct_trad_yn'] == "N") {
+ $builder->where('a.direct_trad_yn', 'N');
+ }
+
+ // 상태
+ if (!empty($data['stat'])) {
+ $builder->whereIn('substring(a.rcpt_stat, 1, 2)', $data['stat']);
+ }
+
+ // 검색어
+ if (!empty($data['srchTxt'])) {
+ if ($data['srchType'] == "1") {
+ $builder->groupStart()
+ ->like('a.agent_nm', $data['srchTxt'])
+ ->orLike('a.sellr_nm', $data['srchTxt'])
+ ->groupEnd();
+ } else if ($data['srchType'] == "2") {
+ $builder->groupStart()
+ ->like('a.agent_head_tel', $data['srchTxt'])
+ ->orLike('a.sellr_tel_no', $data['srchTxt'])
+ ->groupEnd();
+ } else {
+ $builder->groupStart()
+ ->like('a.agent_nm', $data['srchTxt'])
+ ->orLike('a.sellr_nm', $data['srchTxt'])
+ ->groupEnd();
+
+ $builder->groupStart()
+ ->like('a.agent_head_tel', $data['srchTxt'])
+ ->orLike('a.sellr_tel_no', $data['srchTxt'])
+ ->groupEnd();
+ }
+ }
+
+ }
+
+ $builder->groupBy('b.dept_sq');
+ $builder->orderBy('bonbu_nm ASC, team_nm ASC');
+
+
+ return $builder->get()->getResultArray();
+ }
+
+ // 지역별 통계
+ public function getAreaStatistics($data)
+ {
+ $usr_sq = session('usr_sq');
+ $usr_level = session('usr_level');
+ $dept_sq = session('dept_sq');
+
+
+ $builder = $this->db->table(tableName: 'receipt a');
+
+ $builder->select("c.region_nm AS rcpt_dong, COUNT(a.rcpt_dong) AS cnt ");
+
+ $builder->join('result b', 'a.rcpt_sq = b.rcpt_sq', 'left');
+ $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner');
+ $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left');
+ $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left');
+
+ if (in_array($usr_level, ['4', '40'])) {
+ if (!empty($child_dept)) {
+ $builder->whereIn('b.dept_sq', $child_dept);
+ } else {
+ $builder->where('b.usr_sq', $usr_sq);
+ }
+ }
+
+ // $builder->where('a.insert_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false);
+
+ if (!empty($data['rcpt_atclno'])) {
+ $builder->where('a.rcpt_atclno', $data['rcpt_atclno']);
+ } else {
+
+ $builder->where('a.isSiteVRVerification', 'N');
+
+ // 접수일자
+ /*
+ if (!empty($data['sdate'])) {
+ $builder->where('b.rsrv_date >=', $data['sdate'] . ' 00:00:00');
+ }
+
+ if (!empty($data['edate'])) {
+ $builder->where('b.rsrv_date >=', $data['edate'] . ' 23:59:59');
+ }
+ */
+
+ // if (!empty($data['rsrv_tm_ap'])) {
+ // $builder->where('b.rsrv_tm_ap', $data['rsrv_tm_ap']);
+ // }
+
+ // 예약일자
+ if (!empty($data['rsrv_sdate'])) {
+ $builder->where('b.rsrv_date >=', $data['rsrv_sdate'] . ' 00:00:00');
+ }
+
+ if (!empty($data['rsrv_edate'])) {
+ $builder->where('b.rsrv_date <=', $data['rsrv_edate'] . ' 23:59:59');
+ }
+
+
+ // 지역
+ if (!empty($data['dong'])) {
+ $builder->where('a.rcpt_dong', $data['dong']);
+ } else {
+ if (!empty($data['gugun'])) {
+ $builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after');
+ } else {
+ if (!empty($data['sido'])) {
+ $builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after');
+ }
+ }
+ }
+
+ // 관할조직
+ if (!empty($data['bonbu'])) {
+ $builder->where('d.pdept_sq', $data['bonbu']);
+ }
+
+ if (!empty($data['team'])) {
+ $builder->where('d.dept_sq', $data['team']);
+ }
+
+ if (!empty($data['user'])) {
+ $builder->where('d.usr_sq', $data['user']);
+ }
+
+ // 평면도유무
+ if ($data['ground_plan_yn'] == 'Y') {
+ $builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE);
+ } else if ($data['ground_plan_yn'] == 'N') {
+ $builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE);
+ }
+
+ // 평면도요청
+ if (!empty($data['ground_plan'])) {
+ $builder->where('a.ground_plan', $data['ground_plan']);
+ }
+
+ // 직거래
+ if ($data['direct_trad_yn'] == "Y") {
+ $builder->where('a.direct_trad_yn', 'Y');
+ } else if ($data['direct_trad_yn'] == "N") {
+ $builder->where('a.direct_trad_yn', 'N');
+ }
+
+ // 상태
+ if (!empty($data['stat'])) {
+ $builder->whereIn('substring(a.rcpt_stat, 1, 2)', $data['stat']);
+ }
+
+ // 검색어
+ if (!empty($data['srchTxt'])) {
+ if ($data['srchType'] == "1") {
+ $builder->groupStart()
+ ->like('a.agent_nm', $data['srchTxt'])
+ ->orLike('a.sellr_nm', $data['srchTxt'])
+ ->groupEnd();
+ } else if ($data['srchType'] == "2") {
+ $builder->groupStart()
+ ->like('a.agent_head_tel', $data['srchTxt'])
+ ->orLike('a.sellr_tel_no', $data['srchTxt'])
+ ->groupEnd();
+ } else {
+ $builder->groupStart()
+ ->like('a.agent_nm', $data['srchTxt'])
+ ->orLike('a.sellr_nm', $data['srchTxt'])
+ ->groupEnd();
+
+ $builder->groupStart()
+ ->like('a.agent_head_tel', $data['srchTxt'])
+ ->orLike('a.sellr_tel_no', $data['srchTxt'])
+ ->groupEnd();
+ }
+ }
+
+ }
+
+ $builder->groupBy('c.region_nm');
+ $builder->orderBy('c.region_nm ASC');
+
+
+ return $builder->get()->getResultArray();
+ }
+
+ public function getTotalCount($data)
+ {
+ $usr_sq = session('usr_sq');
+ $usr_level = session('usr_level');
+ $dept_sq = session('dept_sq');
+
+ $builder = $this->db->table('receipt a');
+
+ $builder->select("COUNT(*) AS cnt");
+
+ $builder->join('result b', 'a.rcpt_sq = b.rcpt_sq', 'left');
+ $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner');
+ $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left');
+ $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left');
+ $builder->join('codes f', 'a.trade_type = f.cd AND f.category = \'TRADE_TYPE\'', 'left');
+
+ if (in_array($usr_level, ['4', '40'])) {
+ if (!empty($child_dept)) {
+ $builder->whereIn('b.dept_sq', $child_dept);
+ } else {
+ $builder->where('b.usr_sq', $usr_sq);
+ }
+ }
+
+ $builder->where('a.insert_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false);
+
+ if (!empty($data['rcpt_atclno'])) {
+ $builder->where('a.rcpt_atclno', $data['rcpt_atclno']);
+ } else {
+
+ $builder->where('a.isSiteVRVerification', 'N');
+
+ // 접수일자
+ /*
+ if (!empty($data['sdate'])) {
+ $builder->where('b.rsrv_date >=', $data['sdate'] . ' 00:00:00');
+ }
+
+ if (!empty($data['edate'])) {
+ $builder->where('b.rsrv_date >=', $data['edate'] . ' 23:59:59');
+ }
+ */
+
+ // if (!empty($data['rsrv_tm_ap'])) {
+ // $builder->where('b.rsrv_tm_ap', $data['rsrv_tm_ap']);
+ // }
+
+ // 예약일자
+ if (!empty($data['rsrv_sdate'])) {
+ $builder->where('b.rsrv_date >=', $data['rsrv_sdate'] . ' 00:00:00');
+ }
+
+ if (!empty($data['rsrv_edate'])) {
+ $builder->where('b.rsrv_date <=', $data['rsrv_edate'] . ' 23:59:59');
+ }
+
+
+ // 지역
+ if (!empty($data['dong'])) {
+ $builder->where('a.rcpt_dong', $data['dong']);
+ } else {
+ if (!empty($data['gugun'])) {
+ $builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after');
+ } else {
+ if (!empty($data['sido'])) {
+ $builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after');
+ }
+ }
+ }
+
+ // 관할조직
+ if (!empty($data['bonbu'])) {
+ $builder->where('d.pdept_sq', $data['bonbu']);
+ }
+
+ if (!empty($data['team'])) {
+ $builder->where('d.dept_sq', $data['team']);
+ }
+
+ if (!empty($data['user'])) {
+ $builder->where('d.usr_sq', $data['user']);
+ }
+
+ // 평면도유무
+ if ($data['ground_plan_yn'] == 'Y') {
+ $builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE);
+ } else if ($data['ground_plan_yn'] == 'N') {
+ $builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE);
+ }
+
+ // 평면도요청
+ if (!empty($data['ground_plan'])) {
+ $builder->where('a.ground_plan', $data['ground_plan']);
+ }
+
+ // 직거래
+ if ($data['direct_trad_yn'] == "Y") {
+ $builder->where('a.direct_trad_yn', 'Y');
+ } else if ($data['direct_trad_yn'] == "N") {
+ $builder->where('a.direct_trad_yn', 'N');
+ }
+
+ // 상태
+ if (!empty($data['stat'])) {
+ $builder->whereIn('substring(a.rcpt_stat, 1, 2)', $data['stat']);
+ }
+
+ // 검색어
+ if (!empty($data['srchTxt'])) {
+ if ($data['srchType'] == "1") {
+ $builder->groupStart()
+ ->like('a.agent_nm', $data['srchTxt'])
+ ->orLike('a.sellr_nm', $data['srchTxt'])
+ ->groupEnd();
+ } else if ($data['srchType'] == "2") {
+ $builder->groupStart()
+ ->like('a.agent_head_tel', $data['srchTxt'])
+ ->orLike('a.sellr_tel_no', $data['srchTxt'])
+ ->groupEnd();
+ } else {
+ $builder->groupStart()
+ ->like('a.agent_nm', $data['srchTxt'])
+ ->orLike('a.sellr_nm', $data['srchTxt'])
+ ->groupEnd();
+
+ $builder->groupStart()
+ ->like('a.agent_head_tel', $data['srchTxt'])
+ ->orLike('a.sellr_tel_no', $data['srchTxt'])
+ ->groupEnd();
+ }
+ }
+
+ }
+
+
+ $row = $builder->get()->getRowArray();
+ return (int) ($row['cnt'] ?? 0);
+ }
+
+ public function getResultList($start, $end, $data)
+ {
+ $usr_sq = session('usr_sq');
+ $usr_level = session('usr_level');
+ $dept_sq = session('dept_sq');
+
+ $builder = $this->db->table('receipt a');
+
+ $builder->select("a.rcpt_sq
+ ,a.comp_sq
+ ,a.rcpt_rating
+ ,a.rcpt_key
+ ,a.rcpt_atclno
+ ,a.rcpt_type
+ ,a.rcpt_product
+ ,a.rcpt_product_nm
+ ,a.rcpt_product_area
+ ,a.rcpt_product_price
+ ,a.rcpt_product_info1
+ ,a.rcpt_product_info2
+ ,a.rcpt_product_info3
+ ,a.rcpt_product_info4
+ ,a.rcpt_product_info5
+ ,a.rcpt_ptp_nm
+ ,a.rcpt_office
+ ,(CASE WHEN a.rcpt_agent IS NULL THEN 'N' ELSE 'Y' END) as rcpt_agent
+ ,a.rcpt_sido
+ ,a.rcpt_gugun
+ ,a.rcpt_dong
+ ,IFNULL(a.rcpt_hscp_nm, '') AS rcpt_hscp_nm
+ ,IFNULL(a.rcpt_ho, '') AS rcpt_ho
+ ,a.rcpt_dtl_addr
+ ,a.rcpt_li_addr
+ ,a.rcpt_jibun_addr
+ ,IFNULL(a.rcpt_etc_addr, '') AS rcpt_etc_addr
+ ,a.rcpt_floor
+ ,a.rcpt_tm
+ ,a.rcpt_stat
+ ,a.rcpt_x
+ ,a.rcpt_y
+ ,a.rcpt_living_yn
+ ,a.cust_nm
+ ,a.cust_tel1
+ ,a.cust_tel2
+ ,a.cust_zip
+ ,a.cust_addr1
+ ,a.cust_addr2
+ ,a.remark
+ ,a.agent_id
+ ,a.agent_nm
+ ,a.agent_head
+ ,a.agent_head_tel
+ ,a.agent_contact
+ ,a.agent_contact_tel
+ ,IFNULL(a.agent_tel, '') AS agent_tel
+ ,a.sply_spc
+ ,a.excls_spc
+ ,a.room_cnt
+ ,a.exp_spc_yn
+ ,a.agent_fax
+ ,DATE_FORMAT(COALESCE(b.rsrv_date, a.rsrv_date), '%Y-%m-%d') AS rsrv_date
+ ,COALESCE(b.rsrv_tm_ap, a.rsrv_tm_ap) as rsrv_tm_ap
+ ,a.insert_usr
+ ,a.insert_tm
+ ,a.update_usr
+ ,a.update_tm
+ ,a.svc_type1
+ ,a.svc_type2
+ ,a.reconf_yn
+ ,f.cd_nm as trade_type_nm
+ ,b.rsrv_sq
+ ,b.dept_sq
+ ,b.usr_sq
+ ,b.rsrv_tm_hour
+ ,b.result_cd1
+ ,b.result_cd2
+ ,b.result_msg
+ ,b.request_msg
+ ,b.photo_save_dt
+ ,b.rsrv_delay_dt
+ ,b.rsrv_cplt_dt
+ ,b.check_dt
+ ,b.check_cplt_dt
+ ,b.record_cplt_dt
+ ,get_code_name('RECEIPT_STATUS1', substring(a.rcpt_stat, 1, 2)) AS rcpt_stat_nm
+ ,c.region_nm as addr
+ ,b.result_save_dt
+ ,u.usr_nm
+ ,d.dept_nm
+ ,a.exp_photo_yn
+ ,a.ground_plan
+ ,CASE (SELECT COUNT(1) FROM result_imgs WHERE rsrv_sq=b.rsrv_sq AND img_type = 'I1' AND use_yn = 'Y') WHEN 0 THEN 'N' ELSE 'Y' END conf_img_yn
+ ,CASE (SELECT COUNT(1) FROM result_imgs WHERE rsrv_sq=b.rsrv_sq AND img_type = 'I5' AND use_yn = 'Y') WHEN 0 THEN 'N' ELSE 'Y' END ground_plan_yn
+ ,a.exp_movie_yn
+ ,a.direct_trad_yn
+ ,a.sellr_nm
+ ,a.sellr_tel_no
+ ,a.isSiteVRVerification
+ ,a.isPromotionApply");
+
+ $builder->join('result b', 'a.rcpt_sq = b.rcpt_sq', 'left');
+ $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner');
+ $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left');
+ $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left');
+ $builder->join('codes f', 'a.trade_type = f.cd AND f.category = \'TRADE_TYPE\'', 'left');
+
+
+ if (in_array($usr_level, ['4', '40'])) {
+ if (!empty($child_dept)) {
+ $builder->whereIn('b.dept_sq', $child_dept);
+ } else {
+ $builder->where('b.usr_sq', $usr_sq);
+ }
+ }
+
+ $builder->where('a.insert_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false);
+
+ if (!empty($data['rcpt_atclno'])) {
+ $builder->where('a.rcpt_atclno', $data['rcpt_atclno']);
+ } else {
+
+ $builder->where('a.isSiteVRVerification', 'N');
+
+ // 접수일자
+ /*
+ if (!empty($data['sdate'])) {
+ $builder->where('b.rsrv_date >=', $data['sdate'] . ' 00:00:00');
+ }
+
+ if (!empty($data['edate'])) {
+ $builder->where('b.rsrv_date >=', $data['edate'] . ' 23:59:59');
+ }
+ */
+
+ // if (!empty($data['rsrv_tm_ap'])) {
+ // $builder->where('b.rsrv_tm_ap', $data['rsrv_tm_ap']);
+ // }
+
+ // 예약일자
+ if (!empty($data['rsrv_sdate'])) {
+ $builder->where('b.rsrv_date >=', $data['rsrv_sdate'] . ' 00:00:00');
+ }
+
+ if (!empty($data['rsrv_edate'])) {
+ $builder->where('b.rsrv_date <=', $data['rsrv_edate'] . ' 23:59:59');
+ }
+
+
+ // 지역
+ if (!empty($data['dong'])) {
+ $builder->where('a.rcpt_dong', $data['dong']);
+ } else {
+ if (!empty($data['gugun'])) {
+ $builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after');
+ } else {
+ if (!empty($data['sido'])) {
+ $builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after');
+ }
+ }
+ }
+
+ // 관할조직
+ if (!empty($data['bonbu'])) {
+ $builder->where('d.pdept_sq', $data['bonbu']);
+ }
+
+ if (!empty($data['team'])) {
+ $builder->where('d.dept_sq', $data['team']);
+ }
+
+ if (!empty($data['user'])) {
+ $builder->where('d.usr_sq', $data['user']);
+ }
+
+ // 평면도유무
+ if ($data['ground_plan_yn'] == 'Y') {
+ $builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE);
+ } else if ($data['ground_plan_yn'] == 'N') {
+ $builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE);
+ }
+
+ // 평면도요청
+ if (!empty($data['ground_plan'])) {
+ $builder->where('a.ground_plan', $data['ground_plan']);
+ }
+
+ // 직거래
+ if ($data['direct_trad_yn'] == "Y") {
+ $builder->where('a.direct_trad_yn', 'Y');
+ } else if ($data['direct_trad_yn'] == "N") {
+ $builder->where('a.direct_trad_yn', 'N');
+ }
+
+ // 상태
+ if (!empty($data['stat'])) {
+ $builder->whereIn('substring(a.rcpt_stat, 1, 2)', $data['stat']);
+ }
+
+ // 검색어
+ if (!empty($data['srchTxt'])) {
+ if ($data['srchType'] == "1") {
+ $builder->groupStart()
+ ->like('a.agent_nm', $data['srchTxt'])
+ ->orLike('a.sellr_nm', $data['srchTxt'])
+ ->groupEnd();
+ } else if ($data['srchType'] == "2") {
+ $builder->groupStart()
+ ->like('a.agent_head_tel', $data['srchTxt'])
+ ->orLike('a.sellr_tel_no', $data['srchTxt'])
+ ->groupEnd();
+ } else {
+ $builder->groupStart()
+ ->like('a.agent_nm', $data['srchTxt'])
+ ->orLike('a.sellr_nm', $data['srchTxt'])
+ ->groupEnd();
+
+ $builder->groupStart()
+ ->like('a.agent_head_tel', $data['srchTxt'])
+ ->orLike('a.sellr_tel_no', $data['srchTxt'])
+ ->groupEnd();
+ }
+ }
+
+ }
+
+ $builder->orderBy('a.rcpt_atclno', 'DESC');
+
+ $builder->limit($end, $start);
+
+
+ // echo $builder->getCompiledSelect(false);
+ $rows = $builder->get()->getResultArray();
+
+ return $rows;
+ }
+
+
+ // 지도 정보 조회
+ public function getDeptMapList($dept_sq)
+ {
+
+
+ $builder = $this->db->table('receipt a');
+
+ $builder->select("b.dept_sq
+ ,b.usr_sq
+ ,b.rsrv_tm_ap
+ ,b.rsrv_tm_hour
+ ,a.rcpt_atclno
+ ,a.rcpt_x
+ ,a.rcpt_y
+ ,a.rcpt_product_nm
+ ,a.rcpt_key
+ ,a.rcpt_sq
+ ,c.dept_nm
+ ,d.usr_nm
+ ,(SELECT pdept_sq FROM departments WHERE dept_sq = b.dept_sq) bonbu
+ ,b.dept_sq
+ ,b.usr_sq
+ ,DATE_FORMAT(COALESCE(b.rsrv_date, a.rsrv_date), '%m월%d일') as rsrv_date
+ ,COALESCE(b.rsrv_tm_ap, a.rsrv_tm_ap) as rsrv_tm_ap
+ ,a.agent_nm
+ ,a.sellr_nm
+ ,a.direct_trad_yn
+ ,a.sellr_tel_no
+ ,a.isSiteVRVerification
+ ,a.isPromotionApply");
+
+ $builder->join('result b', 'a.rcpt_sq = b.rcpt_sq', 'left');
+ $builder->join('departments c', 'b.dept_sq = c.dept_sq', 'left');
+ $builder->join('users d', 'b.usr_sq = d.usr_sq', 'left');
+
+ $builder->whereIn('b.dept_sq', $dept_sq);
+ $builder->orderBy('b.dept_sq', 'ASC');
+
+ $rows = $builder->get()->getResultArray();
+
+ return $rows;
+ }
+
+
+ // 엑셀다운로드
+ public function getExcelList($data)
+ {
+ $usr_sq = session('usr_sq');
+ $usr_level = session('usr_level');
+ $dept_sq = session('dept_sq');
+
+ $builder = $this->db->table('receipt a');
+
+ $builder->select("a.rcpt_sq
+ ,a.comp_sq
+ ,a.rcpt_rating
+ ,a.rcpt_key
+ ,a.rcpt_atclno
+ ,a.rcpt_type
+ ,a.rcpt_product
+ ,a.rcpt_product_nm
+ ,a.rcpt_product_area
+ ,a.rcpt_product_price
+ ,a.rcpt_product_info1
+ ,a.rcpt_product_info2
+ ,a.rcpt_product_info3
+ ,a.rcpt_product_info4
+ ,a.rcpt_product_info5
+ ,a.rcpt_ptp_nm
+ ,a.rcpt_office
+ ,(CASE WHEN a.rcpt_agent IS NULL THEN 'N' ELSE 'Y' END) as rcpt_agent
+ ,a.rcpt_sido
+ ,a.rcpt_gugun
+ ,a.rcpt_dong
+ ,IFNULL(a.rcpt_hscp_nm, '') AS rcpt_hscp_nm
+ ,IFNULL(a.rcpt_ho, '') AS rcpt_ho
+ ,a.rcpt_dtl_addr
+ ,a.rcpt_li_addr
+ ,a.rcpt_jibun_addr
+ ,IFNULL(a.rcpt_etc_addr, '') AS rcpt_etc_addr
+ ,a.rcpt_floor
+ ,a.rcpt_tm
+ ,a.rcpt_stat
+ ,a.rcpt_x
+ ,a.rcpt_y
+ ,a.rcpt_living_yn
+ ,a.cust_nm
+ ,a.cust_tel1
+ ,a.cust_tel2
+ ,a.cust_zip
+ ,a.cust_addr1
+ ,a.cust_addr2
+ ,a.remark
+ ,a.agent_id
+ ,a.agent_nm
+ ,a.agent_head
+ ,a.agent_head_tel
+ ,a.agent_contact
+ ,a.agent_contact_tel
+ ,IFNULL(a.agent_tel, '') AS agent_tel
+ ,a.sply_spc
+ ,a.excls_spc
+ ,a.room_cnt
+ ,a.exp_spc_yn
+ ,a.agent_fax
+ ,DATE_FORMAT(COALESCE(b.rsrv_date, a.rsrv_date), '%Y-%m-%d') AS rsrv_date
+ ,COALESCE(b.rsrv_tm_ap, a.rsrv_tm_ap) as rsrv_tm_ap
+ ,a.insert_usr
+ ,a.insert_tm
+ ,a.update_usr
+ ,a.update_tm
+ ,a.svc_type1
+ ,a.svc_type2
+ ,a.reconf_yn
+ ,f.cd_nm as trade_type_nm
+ ,b.rsrv_sq
+ ,b.dept_sq
+ ,b.usr_sq
+ ,b.rsrv_tm_hour
+ ,b.result_cd1
+ ,b.result_cd2
+ ,b.result_msg
+ ,b.request_msg
+ ,b.photo_save_dt
+ ,b.rsrv_delay_dt
+ ,b.rsrv_cplt_dt
+ ,b.check_dt
+ ,b.check_cplt_dt
+ ,b.record_cplt_dt
+ ,get_code_name('RECEIPT_STATUS1', substring(a.rcpt_stat, 1, 2)) AS rcpt_stat_nm
+ ,c.region_nm as addr
+ ,b.result_save_dt
+ ,u.usr_nm
+ ,d.dept_nm
+ ,a.exp_photo_yn
+ ,a.ground_plan
+ ,CASE (SELECT COUNT(1) FROM result_imgs WHERE rsrv_sq=b.rsrv_sq AND img_type = 'I1' AND use_yn = 'Y') WHEN 0 THEN 'N' ELSE 'Y' END conf_img_yn
+ ,CASE (SELECT COUNT(1) FROM result_imgs WHERE rsrv_sq=b.rsrv_sq AND img_type = 'I5' AND use_yn = 'Y') WHEN 0 THEN 'N' ELSE 'Y' END ground_plan_yn
+ ,a.exp_movie_yn
+ ,a.direct_trad_yn
+ ,a.sellr_nm
+ ,a.sellr_tel_no
+ ,a.isSiteVRVerification
+ ,a.isPromotionApply");
+
+ $builder->join('result b', 'a.rcpt_sq = b.rcpt_sq', 'left');
+ $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner');
+ $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left');
+ $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left');
+ $builder->join('codes f', 'a.trade_type = f.cd AND f.category = \'TRADE_TYPE\'', 'left');
+
+
+ if (in_array($usr_level, ['4', '40'])) {
+ if (!empty($child_dept)) {
+ $builder->whereIn('b.dept_sq', $child_dept);
+ } else {
+ $builder->where('b.usr_sq', $usr_sq);
+ }
+ }
+
+ $builder->where('a.insert_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false);
+
+ if (!empty($data['rcpt_atclno'])) {
+ $builder->where('a.rcpt_atclno', $data['rcpt_atclno']);
+ } else {
+
+ $builder->where('a.isSiteVRVerification', 'N');
+
+ // 접수일자
+ /*
+ if (!empty($data['sdate'])) {
+ $builder->where('b.rsrv_date >=', $data['sdate'] . ' 00:00:00');
+ }
+
+ if (!empty($data['edate'])) {
+ $builder->where('b.rsrv_date >=', $data['edate'] . ' 23:59:59');
+ }
+ */
+
+ // if (!empty($data['rsrv_tm_ap'])) {
+ // $builder->where('b.rsrv_tm_ap', $data['rsrv_tm_ap']);
+ // }
+
+ // 예약일자
+ if (!empty($data['rsrv_sdate'])) {
+ $builder->where('b.rsrv_date >=', $data['rsrv_sdate'] . ' 00:00:00');
+ }
+
+ if (!empty($data['rsrv_edate'])) {
+ $builder->where('b.rsrv_date <=', $data['rsrv_edate'] . ' 23:59:59');
+ }
+
+
+ // 지역
+ if (!empty($data['dong'])) {
+ $builder->where('a.rcpt_dong', $data['dong']);
+ } else {
+ if (!empty($data['gugun'])) {
+ $builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after');
+ } else {
+ if (!empty($data['sido'])) {
+ $builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after');
+ }
+ }
+ }
+
+ // 관할조직
+ if (!empty($data['bonbu'])) {
+ $builder->where('d.pdept_sq', $data['bonbu']);
+ }
+
+ if (!empty($data['team'])) {
+ $builder->where('d.dept_sq', $data['team']);
+ }
+
+ if (!empty($data['user'])) {
+ $builder->where('d.usr_sq', $data['user']);
+ }
+
+ // 평면도유무
+ if ($data['ground_plan_yn'] == 'Y') {
+ $builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE);
+ } else if ($data['ground_plan_yn'] == 'N') {
+ $builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE);
+ }
+
+ // 평면도요청
+ if (!empty($data['ground_plan'])) {
+ $builder->where('a.ground_plan', $data['ground_plan']);
+ }
+
+ // 직거래
+ if ($data['direct_trad_yn'] == "Y") {
+ $builder->where('a.direct_trad_yn', 'Y');
+ } else if ($data['direct_trad_yn'] == "N") {
+ $builder->where('a.direct_trad_yn', 'N');
+ }
+
+ // 상태
+ if (!empty($data['stat'])) {
+ $builder->whereIn('substring(a.rcpt_stat, 1, 2)', $data['stat']);
+ }
+
+ // 검색어
+ if (!empty($data['srchTxt'])) {
+ if ($data['srchType'] == "1") {
+ $builder->groupStart()
+ ->like('a.agent_nm', $data['srchTxt'])
+ ->orLike('a.sellr_nm', $data['srchTxt'])
+ ->groupEnd();
+ } else if ($data['srchType'] == "2") {
+ $builder->groupStart()
+ ->like('a.agent_head_tel', $data['srchTxt'])
+ ->orLike('a.sellr_tel_no', $data['srchTxt'])
+ ->groupEnd();
+ } else {
+ $builder->groupStart()
+ ->like('a.agent_nm', $data['srchTxt'])
+ ->orLike('a.sellr_nm', $data['srchTxt'])
+ ->groupEnd();
+
+ $builder->groupStart()
+ ->like('a.agent_head_tel', $data['srchTxt'])
+ ->orLike('a.sellr_tel_no', $data['srchTxt'])
+ ->groupEnd();
+ }
+ }
+
+ }
+
+ $builder->orderBy('a.rcpt_atclno', 'DESC');
+
+ // echo $builder->getCompiledSelect(false);
+ $rows = $builder->get()->getResultArray();
+
+ return $rows;
+ }
+
+ // 배정변경
+ public function updateAssign($data)
+ {
+ $this->db->transStart();
+
+ $usr_sq = session('usr_sq');
+ $usr_id = session('usr_id');
+
+ $sql = "UPDATE result SET
+ dept_sq = ?, usr_sq = ?, update_usr = ?
+ WHERE rcpt_sq = ?
+ ";
+
+ $data = [
+ $data['dept_sq'],
+ $data['damdang'],
+ $usr_sq,
+ $data['rcpt_sq'],
+ ];
+
+
+ if ($this->db->query($sql, $data) === false) {
+ return [
+ 'success' => false,
+ 'msg' => '저장실패',
+ ];
+ }
+
+ $memo = "배정변경";
+ $this->saveChangedHistory($data['rcpt_sq'], '', 'C13', $usr_id, $memo);
+
+ $this->db->transComplete();
+
+ return [
+ 'success' => true,
+ ];
+ }
+
+
+ // 상세
+ public function getDetail($id)
+ {
+
+ $builder = $this->db->table('receipt a');
+
+ $builder->select("
+ a.rcpt_sq
+ ,a.comp_sq
+ ,a.excls_spc
+ ,a.rcpt_rating
+ ,a.rcpt_key
+ ,a.rcpt_atclno
+ ,a.rcpt_type
+ ,a.rcpt_product
+ ,a.rcpt_product_nm
+ ,a.rcpt_product_area
+ ,a.rcpt_product_price
+ , a.rcpt_deal_type
+ ,a.rcpt_product_info1
+ ,a.rcpt_product_info2
+ ,a.rcpt_product_info3
+ ,a.rcpt_product_info4
+ ,a.rcpt_product_info5
+ ,a.rcpt_office
+ ,(CASE WHEN a.rcpt_agent IS NULL THEN 'N' ELSE 'Y' END) as rcpt_agent
+ ,a.rcpt_sido
+ ,a.rcpt_gugun
+ ,a.rcpt_dong
+ ,a.rcpt_dtl_addr
+ ,a.rcpt_li_addr
+ ,a.rcpt_jibun_addr
+ ,a.rcpt_etc_addr
+ ,a.rcpt_ref_addr
+ ,a.rcpt_ho
+ ,a.rcpt_hscp_nm
+ ,a.rcpt_floor
+ ,a.rcpt_floor2
+ ,a.chg_floor_yn
+ ,a.rcpt_tm
+ ,a.rcpt_stat
+ ,a.rcpt_x
+ ,a.rcpt_y
+ ,a.rcpt_living_yn
+ ,a.cust_nm
+ ,a.cust_tel1
+ ,a.cust_tel2
+ ,a.cust_zip
+ ,a.cust_addr1
+ ,a.cust_addr2
+ ,a.remark rcpt_remark
+ , a.rcpt_cpid
+ ,a.agent_id
+ ,a.agent_nm
+ ,a.agent_head
+ ,a.agent_head_tel
+ ,a.agent_contact
+ ,a.agent_contact_tel
+ ,a.agent_fax
+ ,a.agent_tel
+ ,a.excls_spc
+ ,a.excls_spc1
+ ,a.excls_spc2
+ ,a.sply_spc
+ ,a.share_spc
+ ,a.share_spc1
+ ,a.share_spc2
+ ,a.share_spc3
+ ,a.share_spc4
+ ,a.share_spc5
+ ,a.room_cnt
+ ,a.tot_spc
+ ,a.tot_spc1
+ ,a.tot_spc2
+ ,a.grnd_spc
+ ,a.grnd_spc1
+ ,a.grnd_spc2
+ ,a.grnd_spc3
+ ,a.grnd_spc4
+ ,a.grnd_spc5
+ ,a.spc_stat
+ ,a.exp_spc_yn
+ ,DATE_FORMAT(COALESCE(b.rsrv_date, a.rsrv_date), '%Y-%m-%d') AS rsrv_date
+ ,COALESCE(b.rsrv_tm_ap, a.rsrv_tm_ap) as rsrv_tm_ap
+ ,a.insert_usr
+ ,a.insert_tm
+ ,a.update_usr
+ ,a.update_tm
+ ,a.svc_type1
+ ,a.svc_type2
+ ,a.reconf_yn
+ ,a.cupnNo
+ ,b.rsrv_sq
+ ,b.dept_sq
+ ,b.usr_sq
+ ,b.req_rec_yn
+ ,b.rec_yn
+ ,b.rec_tel
+ ,b.rec_nm
+ ,b.remark
+ ,b.rsrv_tm_hour
+ ,b.result_cd1
+ ,get_code_name('RECEIPT_STATUS1', b.result_cd1) AS result_cd1_nm
+ ,b.result_cd2
+ ,get_code_name('RECEIPT_STATUS2', b.result_cd2) AS result_cd2_nm
+ ,b.result_cd3
+ ,get_code_name('RECEIPT_STATUS3', b.result_cd3) AS result_cd3_nm
+ ,b.result_msg
+ ,b.rsrv_save_dt
+ ,b.photo_save_dt
+ ,DATE_FORMAT(b.photo_save_dt, '%Y-%m-%d') as photo_save_dt_dt
+ ,DATE_FORMAT(b.photo_save_dt, '%H:%i:%s') as photo_save_dt_tm
+ ,b.assign_save_dt
+ ,b.result_save_dt
+ ,b.request_msg
+ ,b.rsrv_delay_dt
+ ,DATE_FORMAT(b.rsrv_delay_dt, '%Y-%m-%d') as rsrv_delay_dt_dt
+ ,DATE_FORMAT(b.rsrv_delay_dt, '%H:%i:%s') as rsrv_delay_dt_tm
+ ,b.rsrv_cplt_dt
+ ,DATE_FORMAT(b.rsrv_cplt_dt, '%Y-%m-%d') as rsrv_cplt_dt_dt
+ ,DATE_FORMAT(b.rsrv_cplt_dt, '%H:%i:%s') as rsrv_cplt_dt_tm
+ ,b.check_dt
+ ,DATE_FORMAT(b.check_dt, '%Y-%m-%d') as check_dt_dt
+ ,DATE_FORMAT(b.check_dt, '%H:%i:%s') as check_dt_tm
+ ,b.check_cplt_dt
+ ,DATE_FORMAT(b.check_cplt_dt, '%Y-%m-%d') as check_cplt_dt_dt
+ ,DATE_FORMAT(b.check_cplt_dt, '%H:%i:%s') as check_cplt_dt_tm
+ ,b.cancel_dt
+ ,DATE_FORMAT(b.cancel_dt, '%Y-%m-%d') as cancel_dt_dt
+ ,DATE_FORMAT(b.cancel_dt, '%H:%i:%s') as cancel_dt_tm
+ ,b.check_delay_dt
+ ,DATE_FORMAT(b.check_delay_dt, '%Y-%m-%d') as check_delay_dt_dt
+ ,DATE_FORMAT(b.check_delay_dt, '%H:%i:%s') as check_delay_dt_tm
+ ,b.check_fail_dt
+ ,DATE_FORMAT(b.check_fail_dt, '%Y-%m-%d') as check_fail_dt_dt
+ ,DATE_FORMAT(b.check_fail_dt, '%H:%i:%s') as check_fail_dt_tm
+ ,get_code_name('RECEIPT_STATUS3', a.rcpt_stat) AS rcpt_stat_nm
+ ,DATE_FORMAT(a.insert_tm, '%Y년 %m월 %d일') as insert_tm2
+ ,DATE_FORMAT(a.rsrv_date, '%Y-%m-%d') as rsrv_date2
+ ,c.region_nm as addr
+ ,c.dept_sq as region_dept_sq
+ ,c.usr_sq as region_usr_sq
+ ,d.pdept_sq
+ ,d.dept_nm
+ ,a.rcpt_exps_type
+ ,a.exp_photo_yn
+ ,a.exp_movie_yn
+ ,b.resYn
+ ,DATE_ADD(a.insert_tm, INTERVAL +3 MONTH) as months
+ ,b.dbUsageAgrYn
+ ,a.trade_type
+ , a.rcpt_hscp_no
+ , a.rcpt_ptp_nm
+ , a.rcpt_ptp_no
+ , a.modify_yn
+ , a.ground_plan
+ ,a.direct_trad_yn
+ ,a.sellr_nm
+ ,a.sellr_tel_no
+ ,a.virAddr_yn
+ ,a.isSiteVRVerification
+ ,a.isPromotionApply
+ ,DATE_FORMAT(b.vr_check_cplt_dt, '%Y-%m-%d') as vr_check_cplt_dt_dt
+ ,DATE_FORMAT(b.vr_check_cplt_dt, '%H:%i:%s') as vr_check_cplt_dt_dm
+ ", false);
+
+ $builder->join('result b', 'b.rcpt_sq = a.rcpt_sq', 'inner');
+ $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner');
+ $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left');
+
+ $builder->where('a.insert_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', NULL, FALSE);
+ $builder->where('a.rcpt_key', $id);
+
+
+ return $builder->get()->getRowArray();
+ }
+
+ // 시간대별통계
+ public function getUsrRsrvDateTmCount($id)
+ {
+ $sql = "SELECT b.usr_sq, b.rsrv_date FROM receipt a INNER JOIN result b ON a.rcpt_sq = b.rcpt_sq WHERE a.rcpt_key = ?";
+ $data = [$id];
+ $query = $this->db->query($sql, $data);
+ $row = $query->getRowArray();
+
+ if (!empty($row['usr_sq'])) {
+ $sql2 = "SELECT usr_sq, rsrv_tm_ap, rsrv_tm_hour, COUNT(rsrv_tm_hour) as cnt" .
+ " FROM result" .
+ " WHERE rsrv_date = ?" .
+ " AND usr_sq = ?" .
+ " GROUP BY usr_sq, rsrv_tm_ap, rsrv_tm_hour" .
+ " ORDER BY rsrv_tm_ap, rsrv_tm_hour";
+
+ $data2 = [$row['rsrv_date'], $row['usr_sq']];
+ } else {
+ $sql2 = "SELECT usr_sq, rsrv_tm_ap, rsrv_tm_hour, COUNT(rsrv_tm_hour) as cnt" .
+ " FROM result" .
+ " WHERE rsrv_date = ?" .
+ " AND usr_sq = (SELECT b.usr_sq FROM receipt a, region_codes b WHERE a.rcpt_dong = b.region_cd AND a.rcpt_key = ?)" .
+ " GROUP BY usr_sq, rsrv_tm_ap, rsrv_tm_hour" .
+ " ORDER BY rsrv_tm_ap, rsrv_tm_hour";
+
+ $data2 = [$row['rsrv_date'], $id];
+ }
+
+ $query2 = $this->db->query($sql2, $data2);
+
+ return $query2->getResultArray();
+ }
+
+
+ // 정보변경이력
+ public function getHistory($id)
+ {
+ $sql = "SELECT seq" .
+ " ,rcpt_sq" .
+ " ,rcpt_stat" .
+ " ,get_code_name('RECEIPT_STATUS3', rcpt_stat) AS rcpt_stat_nm" .
+ " ,rcpt_stat" .
+ " ,get_code_name('CHANGED_TYPE', changed_type) AS changed_type_nm" .
+ " ,changed_type" .
+ " ,changed_id" .
+ " ,remark" .
+ " ,DATE_FORMAT(changed_tm, '%Y.%m.%d %H:%i:%s') as changed_tm" .
+ " FROM changed_history" .
+ " WHERE rcpt_sq = ?" .
+ " ORDER BY changed_tm DESC";
+
+ $data = [$id];
+ $query = $this->db->query($sql, $data);
+
+ return $query->getResultArray();
+ }
+
+ // 변경이력저장
+ public function saveChangedHistory($rcpt_sq, $rcpt_stat, $changed_type, $usr_id, $remark)
+ {
+ $sql = "INSERT INTO changed_history" .
+ " (rcpt_sq, rcpt_stat, changed_type, changed_id, changed_tm, remark)" .
+ " VALUES" .
+ " (?, ?, ?, ?, now(), ?)";
+
+ $data = [
+ $rcpt_sq,
+ $rcpt_stat,
+ $changed_type,
+ $usr_id,
+ $remark
+ ];
+
+ $this->db->query($sql, $data);
+ }
+}
\ No newline at end of file
diff --git a/app/Models/article/ReceiptModel.php b/app/Models/article/ReceiptModel.php
index dd50721..651a3f1 100644
--- a/app/Models/article/ReceiptModel.php
+++ b/app/Models/article/ReceiptModel.php
@@ -187,8 +187,8 @@ class ReceiptModel extends Model
$builder->where('a.rcpt_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false);
- if (!empty($data['atcl_no'])) {
- $builder->where('a.rcpt_atclno', $data['atcl_no']);
+ if (!empty($data['rcpt_atclno'])) {
+ $builder->where('a.rcpt_atclno', $data['rcpt_atclno']);
} else {
if ($data['schDateGb'] == '1') {
$builder->where('a.rcpt_tm >=', $data['sdate'] . ' 00:00:00');
@@ -515,8 +515,8 @@ class ReceiptModel extends Model
$builder->where('a.rcpt_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false);
- if (!empty($data['atcl_no'])) {
- $builder->where('a.rcpt_atclno', $data['atcl_no']);
+ if (!empty($data['rcpt_atclno'])) {
+ $builder->where('a.rcpt_atclno', $data['rcpt_atclno']);
} else {
if ($data['schDateGb'] == '1') {
$builder->where('a.rcpt_tm >=', $data['sdate'] . ' 00:00:00');
@@ -791,8 +791,8 @@ class ReceiptModel extends Model
$builder->where('a.rcpt_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false);
- if (!empty($data['atcl_no'])) {
- $builder->where('a.rcpt_atclno', $data['atcl_no']);
+ if (!empty($data['rcpt_atclno'])) {
+ $builder->where('a.rcpt_atclno', $data['rcpt_atclno']);
} else {
if ($data['schDateGb'] == '1') {
$builder->where('a.rcpt_tm >=', $data['sdate'] . ' 00:00:00');
diff --git a/app/Models/article/RecordModel.php b/app/Models/article/RecordModel.php
new file mode 100644
index 0000000..1668fc0
--- /dev/null
+++ b/app/Models/article/RecordModel.php
@@ -0,0 +1,962 @@
+db->query($sql, [$gugun]);
+
+ } else if (!empty($sido)) {
+ $chk_sido = substr($sido, '0', '2');
+
+ if ($chk_sido === '36') {
+ $sido = substr($sido, '0', '4');
+ $sql = "SELECT a.region_cd, TRIM(REPLACE(a.region_nm, b.region_nm, '')) region_nm " .
+ "FROM region_codes a " .
+ "LEFT JOIN region_codes b ON b.region_cd = CONCAT(SUBSTR(a.region_cd,1,4),'000000') " .
+ "WHERE a.region_cd LIKE concat(?, '%') " .
+ "AND a.region_cd NOT LIKE '%000000' " .
+ "AND a.region_cd LIKE '%00' " .
+ "AND a.use_yn = 'Y' " .
+ "AND EXISTS (SELECT 'x' FROM region_codes c WHERE c.region_cd LIKE CONCAT(SUBSTR(a.region_cd,1,5),'%') AND c.region_cd > CONCAT(SUBSTR(a.region_cd,1,5),'00000')) " .
+ "ORDER BY a.region_nm ASC";
+ } else {
+ $sido = substr($sido, '0', '2');
+ $sql = "SELECT a.region_cd, TRIM(REPLACE(a.region_nm, b.region_nm, '')) region_nm" .
+ " FROM region_codes a" .
+ " LEFT JOIN region_codes b ON b.region_cd = CONCAT(SUBSTR(a.region_cd,1,2),'00000000')" .
+ " WHERE a.region_cd LIKE concat(?, '%')" .
+ " AND a.region_cd NOT LIKE '%00000000'" .
+ " AND a.region_cd LIKE '%00000'" .
+ " AND a.use_yn = 'Y'" .
+ " AND EXISTS (SELECT 'x' FROM region_codes c WHERE c.region_cd LIKE CONCAT(SUBSTR(a.region_cd,1,5),'%') AND c.region_cd > CONCAT(SUBSTR(a.region_cd,1,5),'00000'))" .
+ " ORDER BY a.region_nm ASC";
+ }
+
+ $query = $this->db->query($sql, [$sido]);
+ } else {
+ $sql = "SELECT a.region_cd, a.region_nm " .
+ "FROM region_codes a " .
+ "WHERE (a.region_cd LIKE '%00000000' " .
+ "AND a.use_yn = 'Y') " .
+ "OR region_cd = 3611000000;";
+
+ $query = $this->db->query($sql);
+ }
+
+
+ return $query->getResultArray();
+ }
+
+ // 소속본부조회
+ public function getBonbuList()
+ {
+ $sql = "SELECT dept_sq, pdept_sq, dept_nm, dept_desc, dept_head, use_yn, depth, insert_tm, insert_usr, update_tm, update_usr, lft, rgt" .
+ " FROM departments" .
+ " WHERE depth = 1" .
+ " AND use_yn = 'Y'" .
+ " ORDER BY lft";
+
+ $query = $this->db->query($sql);
+
+
+ return $query->getResultArray();
+ }
+
+ // 소속팀 조회
+ public function getTeamList()
+ {
+ $sql = "SELECT dept_sq, pdept_sq, dept_nm" .
+ " FROM departments" .
+ " WHERE depth = 2" .
+ " AND use_yn = 'Y'" .
+ " ORDER BY dept_nm";
+
+ $query = $this->db->query($sql);
+
+
+ return $query->getResultArray();
+ }
+
+ // 유저 조회
+ public function getUserList()
+ {
+ $sql = "SELECT
+ a.usr_sq, a.usr_id, a.usr_nm, a.dept_sq
+ FROM users a
+ WHERE
+ a.usr_level IN ('3','4','40','5','50','6','60','61','62','7','8','70')
+ AND a.use_yn = 'Y'
+ AND EXISTS (
+ SELECT 'x' FROM departments a1 INNER JOIN departments a2 ON a2.lft BETWEEN a1.lft AND a1.rgt AND a2.use_yn = 'Y'
+ WHERE 1=1 AND a2.dept_sq = a.dept_sq AND a1.use_yn = 'Y'
+ )
+ ORDER BY a.usr_level DESC, a.usr_nm ASC ";
+
+ $query = $this->db->query($sql);
+
+ return $query->getResultArray();
+ }
+
+
+ public function getTotalCount($data)
+ {
+ $usr_sq = session('usr_sq');
+ $usr_level = session('usr_level');
+ $dept_sq = session('dept_sq');
+
+ $builder = $this->db->table('receipt a');
+
+ $builder->select("COUNT(*) AS cnt", false);
+
+ $builder->join('result b', 'b.rcpt_sq = a.rcpt_sq', 'inner');
+ $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner');
+ $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left');
+ $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left');
+
+ $builder->where('a.rcpt_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false);
+ if (in_array($usr_level, ['4', '40'])) {
+ if (!empty($child_dept)) {
+ $builder->whereIn('b.dept_sq', $child_dept);
+ } else {
+ $builder->where('b.usr_sq', $usr_sq);
+ }
+ }
+
+ $builder->where('b.req_rec_yn', 'Y');
+
+ if (!empty($data['rcpt_atclno'])) {
+ $builder->where('a.rcpt_atclno', $data['rcpt_atclno']);
+ } else {
+
+ // 접수기간
+ if (!empty($data['sdate'])) {
+ $builder->where('a.insert_tm >=', $data['sdate'] . ' 00:00:00');
+ }
+
+ if (!empty($data['edate'])) {
+ $builder->where('a.insert_tm <=', $data['edate'] . ' 23:59:59');
+ }
+
+ //
+ if (!empty($data['photo_sdate'])) {
+ $builder->where('b.photo_save_dt >=', $data['photo_sdate'] . ' 00:00:00');
+ }
+
+ if (!empty($data['photo_edate'])) {
+ $builder->where('b.photo_save_dt <=', $data['photo_edate'] . ' 23:59:59');
+ }
+
+ if (!empty($data['record_sdate'])) {
+ $builder->where('b.record_cplt_dt >=', $data['record_sdate'] . ' 00:00:00');
+ }
+
+ if (!empty($data['record_edate'])) {
+ $builder->where('b.record_cplt_dt <=', $data['record_edate'] . ' 23:59:59');
+ }
+
+ // 녹취완료여부
+ if (!empty($data['rec_yn'])) {
+ if ($data['rec_yn'] == "Y") {
+ $builder->where('b.rec_yn', $data['rec_yn']);
+ $builder->whereNotIn('b.result_cd1', [40, 70]);
+ } else {
+ $builder->where('b.rec_yn', $data['rec_yn']);
+ $builder->whereIn('b.result_cd1', [40, 70]);
+ }
+ }
+
+
+ // 지역
+ if (!empty($data['dong'])) {
+ $builder->where('a.rcpt_dong', $data['dong']);
+ } else {
+ if (!empty($data['gugun'])) {
+ $builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after');
+ } else {
+ if (!empty($data['sido'])) {
+ $builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after');
+ }
+ }
+ }
+
+ // 관할조직
+ if (!empty($data['bonbu'])) {
+ $builder->where('d.pdept_sq', $data['bonbu']);
+ }
+
+ if (!empty($data['team'])) {
+ $builder->where('d.dept_sq', $data['team']);
+ }
+
+ if (!empty($data['user'])) {
+ $builder->where('d.usr_sq', $data['user']);
+ }
+
+ // 검색어
+ if (!empty($data['srchTxt'])) {
+ if ($data['srchType'] == "1") {
+ $builder->groupStart()
+ ->like('a.agent_nm', $data['srchTxt'])
+ ->orLike('a.sellr_nm', $data['srchTxt'])
+ ->groupEnd();
+ } else if ($data['srchType'] == "2") {
+ $builder->groupStart()
+ ->like('b.rec_nm', $data['srchTxt'])
+ ->groupEnd();
+ } else if ($data['srchType'] == "3") {
+ $builder->groupStart()
+ ->like('b.rec_tel', $data['srchTxt'])
+ ->groupEnd();
+ } else {
+ $builder->groupStart()
+ ->like('a.agent_nm', $data['srchTxt'])
+ ->orLike('a.sellr_nm', $data['srchTxt'])
+ ->orLike('b.rec_nm', $data['srchTxt'])
+ ->orLike('b.rec_tel', $data['srchTxt'])
+ ->groupEnd();
+ }
+ }
+
+ }
+
+
+ $row = $builder->get()->getRowArray();
+ return (int) ($row['cnt'] ?? 0);
+
+ }
+
+ public function getResultList($start, $end, $data)
+ {
+ $usr_sq = session('usr_sq');
+ $usr_level = session('usr_level');
+ $dept_sq = session('dept_sq');
+
+
+ $builder = $this->db->table('receipt a');
+
+ $builder->select("a.rcpt_sq
+ ,a.comp_sq
+ ,a.rcpt_rating
+ ,a.rcpt_key
+ ,a.rcpt_atclno
+ ,a.rcpt_type
+ ,a.rcpt_product
+ ,a.rcpt_product_nm
+ ,a.rcpt_product_area
+ ,a.rcpt_product_price
+ ,a.rcpt_product_info1
+ ,a.rcpt_product_info2
+ ,a.rcpt_product_info3
+ ,a.rcpt_product_info4
+ ,a.rcpt_product_info5
+ ,a.rcpt_office
+ ,(CASE WHEN a.rcpt_agent IS NULL THEN 'N' ELSE 'Y' END) as rcpt_agent
+ ,a.rcpt_sido
+ ,a.rcpt_gugun
+ ,a.rcpt_dong
+ ,a.rcpt_hscp_nm
+ ,a.rcpt_floor
+ ,a.rcpt_tm
+ ,a.rcpt_stat
+ ,a.rcpt_x
+ ,a.rcpt_y
+ ,a.cust_nm
+ ,a.cust_tel1
+ ,a.cust_tel2
+ ,a.cust_zip
+ ,a.cust_addr1
+ ,a.cust_addr2
+ ,a.remark
+ ,a.agent_id
+ ,a.agent_nm
+ ,a.agent_head
+ ,a.agent_head_tel
+ ,a.agent_contact
+ ,a.agent_contact_tel
+ ,a.agent_fax
+ ,DATE_FORMAT(COALESCE(b.rsrv_date, a.rsrv_date), '%Y-%m-%d') AS rsrv_date
+ ,COALESCE(b.rsrv_tm_ap, a.rsrv_tm_ap) as rsrv_tm_ap
+ ,a.insert_usr
+ ,a.insert_tm
+ ,a.update_usr
+ ,a.update_tm
+ ,a.svc_type1
+ ,a.svc_type2
+ ,a.reconf_yn
+ ,b.rsrv_sq
+ ,b.dept_sq
+ ,b.usr_sq
+ ,b.req_rec_yn
+ ,b.rec_yn
+ ,b.rsrv_tm_hour
+ ,b.result_cd1
+ ,b.result_cd2
+ ,b.result_cd3
+ ,b.rec_nm
+ ,b.rec_tel
+ ,b.result_msg
+ ,b.photo_save_dt
+ ,b.rsrv_delay_dt
+ ,b.rsrv_cplt_dt
+ ,b.check_dt
+ ,b.check_cplt_dt
+ ,b.record_cplt_dt
+ ,get_code_name('RECEIPT_STATUS1', substring(a.rcpt_stat, 1, 2)) AS rcpt_stat_nm
+ ,c.region_nm as addr
+ ,b.result_save_dt
+ ,u.usr_nm
+ ,d.dept_nm", false);
+
+ $builder->join('result b', 'b.rcpt_sq = a.rcpt_sq', 'inner');
+ $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner');
+ $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left');
+ $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left');
+
+ $builder->where('a.rcpt_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false);
+ if (in_array($usr_level, ['4', '40'])) {
+ if (!empty($child_dept)) {
+ $builder->whereIn('b.dept_sq', $child_dept);
+ } else {
+ $builder->where('b.usr_sq', $usr_sq);
+ }
+ }
+
+ $builder->where('b.req_rec_yn', 'Y');
+
+ if (!empty($data['rcpt_atclno'])) {
+ $builder->where('a.rcpt_atclno', $data['rcpt_atclno']);
+ } else {
+
+ // 접수기간
+ if (!empty($data['sdate'])) {
+ $builder->where('a.insert_tm >=', $data['sdate'] . ' 00:00:00');
+ }
+
+ if (!empty($data['edate'])) {
+ $builder->where('a.insert_tm <=', $data['edate'] . ' 23:59:59');
+ }
+
+ //
+ if (!empty($data['photo_sdate'])) {
+ $builder->where('b.photo_save_dt >=', $data['photo_sdate'] . ' 00:00:00');
+ }
+
+ if (!empty($data['photo_edate'])) {
+ $builder->where('b.photo_save_dt <=', $data['photo_edate'] . ' 23:59:59');
+ }
+
+ if (!empty($data['record_sdate'])) {
+ $builder->where('b.record_cplt_dt >=', $data['record_sdate'] . ' 00:00:00');
+ }
+
+ if (!empty($data['record_edate'])) {
+ $builder->where('b.record_cplt_dt <=', $data['record_edate'] . ' 23:59:59');
+ }
+
+ // 녹취완료여부
+ if (!empty($data['rec_yn'])) {
+ if ($data['rec_yn'] == "Y") {
+ $builder->where('b.rec_yn', $data['rec_yn']);
+ $builder->whereNotIn('b.result_cd1', [40, 70]);
+ } else {
+ $builder->where('b.rec_yn', $data['rec_yn']);
+ $builder->whereIn('b.result_cd1', [40, 70]);
+ }
+ }
+
+
+ // 지역
+ if (!empty($data['dong'])) {
+ $builder->where('a.rcpt_dong', $data['dong']);
+ } else {
+ if (!empty($data['gugun'])) {
+ $builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after');
+ } else {
+ if (!empty($data['sido'])) {
+ $builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after');
+ }
+ }
+ }
+
+ // 관할조직
+ if (!empty($data['bonbu'])) {
+ $builder->where('d.pdept_sq', $data['bonbu']);
+ }
+
+ if (!empty($data['team'])) {
+ $builder->where('d.dept_sq', $data['team']);
+ }
+
+ if (!empty($data['user'])) {
+ $builder->where('d.usr_sq', $data['user']);
+ }
+
+ // 검색어
+ if (!empty($data['srchTxt'])) {
+ if ($data['srchType'] == "1") {
+ $builder->groupStart()
+ ->like('a.agent_nm', $data['srchTxt'])
+ ->orLike('a.sellr_nm', $data['srchTxt'])
+ ->groupEnd();
+ } else if ($data['srchType'] == "2") {
+ $builder->groupStart()
+ ->like('b.rec_nm', $data['srchTxt'])
+ ->groupEnd();
+ } else if ($data['srchType'] == "3") {
+ $builder->groupStart()
+ ->like('b.rec_tel', $data['srchTxt'])
+ ->groupEnd();
+ } else {
+ $builder->groupStart()
+ ->like('a.agent_nm', $data['srchTxt'])
+ ->orLike('a.sellr_nm', $data['srchTxt'])
+ ->orLike('b.rec_nm', $data['srchTxt'])
+ ->orLike('b.rec_tel', $data['srchTxt'])
+ ->groupEnd();
+ }
+ }
+
+ }
+
+ $builder->orderBy('a.rcpt_atclno DESC');
+
+ $builder->limit($end, $start);
+
+ $rows = $builder->get()->getResultArray();
+
+ return $rows;
+ }
+
+
+ // 엑셀다운로드
+ public function getExcelList($data)
+ {
+ $usr_sq = session('usr_sq');
+ $usr_level = session('usr_level');
+ $dept_sq = session('dept_sq');
+
+ $builder = $this->db->table('receipt a');
+
+ $builder->select("
+ get_code_name('RECEIPT_STATUS1', b.result_cd1) AS '현재상태',
+ CASE WHEN b.result_cd1 = '90' THEN get_code_name('RECEIPT_STATUS2', b.result_cd2) ELSE '' END AS '매물ID',
+ CASE WHEN b.result_cd1 = '90' THEN get_code_name('RECEIPT_STATUS3', b.result_cd3) ELSE '' END AS '접수(등록)일자',
+ a.rcpt_atclno AS '예약일자',
+ a.insert_tm '방문희망시간',
+ CONCAT(b.rsrv_date, ' ', b.rsrv_tm_ap) AS '촬영완료일자',
+ b.rsrv_tm_hour AS '중개사명',
+ b.photo_save_dt AS '대표전화',
+ '' AS '담당자전화',
+ a.agent_head_tel AS '연락가능전화',
+ '' AS '중개사ID',
+ a.rcpt_cpid 'CP ID',
+ CASE
+ WHEN IFNULL(a.rcpt_jibun_addr, '') = '' THEN
+ CASE
+ WHEN IFNULL(a.rcpt_hscp_nm, '') = '' THEN
+ CONCAT(c.region_nm, ' ', a.rcpt_dtl_addr, ' ', a.rcpt_ho)
+ ELSE
+ CONCAT(c.region_nm, ' ', a.rcpt_hscp_nm, ' ', a.rcpt_dtl_addr, ' ', a.rcpt_ho)
+ END
+ ELSE
+ CASE
+ WHEN IFNULL(a.rcpt_li_addr, '') != '' THEN
+ CONCAT(c.region_nm, ' ', a.rcpt_li_addr, ' ', a.rcpt_jibun_addr, ' ', a.rcpt_etc_addr)
+ ELSE
+ CONCAT(c.region_nm, ' ', a.rcpt_jibun_addr, ' ', a.rcpt_etc_addr)
+ END
+ END AS '주소',
+ CONCAT(a.rcpt_floor, '/', a.rcpt_floor2) AS '층',
+ a.rcpt_product_nm AS '매물종류',
+ a.rcpt_product_info1 AS '거래구분',
+ d.dept_nm AS '관할조직(팀)',
+ u.usr_nm AS '방문담당',
+ a.rcpt_exps_type AS '노출옵션',
+ CASE (SELECT COUNT(1) FROM result_imgs WHERE rsrv_sq = b.rsrv_sq AND img_type = 'I1' AND use_yn = 'Y')
+ WHEN 0 THEN 'N' ELSE 'Y' END AS '홍보확인서',
+ a.exp_movie_yn AS '동영상촬영',
+ a.exp_spc_yn AS '면적확인',
+ b.resYn AS '거주여부',
+ (CASE (SELECT 'x' FROM result_record WHERE rsrv_sq = b.rsrv_sq AND use_yn = 'Y')
+ WHEN 'x' THEN 'Y' ELSE 'N' END) AS '녹취여부',
+ a.excls_spc AS '전용면적',
+ a.sply_spc AS '공급면적',
+ a.cupnNo AS '쿠폰번호',
+ a.image_360_yn AS '360촬영여부',
+ a.rcpt_y AS '경도',
+ a.rcpt_y AS '위도',
+ a.check_list_img_yn AS '체크리스트',
+ ", false);
+
+ $builder->join('result b', 'b.rcpt_sq = a.rcpt_sq', 'inner');
+ $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner');
+ $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left');
+ $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left');
+
+
+ $login_dept_info = $this->getDeptDetail($dept_sq); // 로그인 사용자 소속부서정보
+ $child_dept = []; // 하위조직 목록
+ if (strcmp($usr_level, '40') == 0) {
+ $child = $this->getChildDept($login_dept_info);
+ if (!empty($child)) {
+ foreach ($child as $child) {
+ $child_dept[] = $child['dept_sq'];
+ }
+ }
+ }
+
+ if ((int) $usr_level >= 4 && $usr_level != '45') {
+ if (!empty($child_dept)) {
+ $builder->whereIn('b.dept_sq', $child_dept);
+ } else {
+ $builder->where('b.usr_sq', $usr_sq);
+ }
+ }
+
+ $builder->where('a.rcpt_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', null, false);
+
+ if (!empty($data['rcpt_atclno'])) {
+ $builder->where('a.rcpt_atclno', $data['rcpt_atclno']);
+ } else {
+ if ($data['schDateGb'] == '1') {
+ $builder->where('a.rcpt_tm >=', $data['sdate'] . ' 00:00:00');
+ $builder->where('a.rcpt_tm <=', $data['edate'] . ' 23:59:59');
+ } else if ($data['schDateGb'] == '2') {
+ $builder->where('b.rsrv_date >=', $data['sdate'] . ' 00:00:00');
+ $builder->where('b.rsrv_date <=', $data['edate'] . ' 23:59:59');
+ }
+
+ // 지역
+ if (!empty($data['dong'])) {
+ $builder->where('a.rcpt_dong', $data['dong']);
+ } else {
+ if (!empty($data['gugun'])) {
+ $builder->like('a.rcpt_gugun', substr($data['gugun'], 0, 5), 'after');
+ } else {
+ if (!empty($data['sido'])) {
+ $builder->like('a.rcpt_gugun', substr($data['sido'], 0, 2), 'after');
+ }
+ }
+ }
+
+ // 관할조직
+ if (!empty($data['bonbu'])) {
+ $builder->where('d.pdept_sq', $data['bonbu']);
+ }
+
+ if (!empty($data['team'])) {
+ $builder->where('d.dept_sq', $data['team']);
+ }
+
+ if (!empty($data['user'])) {
+ $builder->where('d.usr_sq', $data['user']);
+ }
+
+ // 거래구분
+ if (!empty($data['rcpt_product_info1'])) {
+ $builder->where('a.rcpt_product_info1', $data['rcpt_product_info1']);
+ }
+
+ // 현재상태
+ if (!empty($data['rcpt_stat1'])) {
+ $builder->like('a.rcpt_stat', $data['rcpt_stat1'], 'after');
+ }
+
+ if (!empty($data['rcpt_stat2'])) {
+ $builder->like('a.rcpt_stat', $data['rcpt_stat2'], 'after');
+ }
+
+ if (!empty($data['rcpt_stat3'])) {
+ $builder->where('a.rcpt_stat', $data['rcpt_stat3']);
+ }
+
+ // 중개사명
+ if (!empty($data['agent_nm'])) {
+ $builder->like('a.agent_nm', $data['agent_nm'], 'both');
+ }
+
+ // 동영상촬영여부
+ if (!empty($data['exp_movie_yn'])) {
+ $builder->where('a.exp_movie_yn', $data['exp_movie_yn']);
+ }
+
+ // 홍보확인서여부
+ if ($data['conf_img_yn'] == 'Y') {
+ $builder->where('e.rsrv_sq IS NOT NULL', null, false);
+ } else if ($data['conf_img_yn'] == 'N') {
+ $builder->where('e.rsrv_sq IS NULL', null, false);
+ }
+
+ // 분양권
+ if ($data['parcel_out_yn'] == 'Y') {
+ $builder->where('a.parcel_out_yn', 'Y');
+ } else if ($data['parcel_out_yn'] == 'N') {
+ $builder->where('a.parcel_out_yn', 'N');
+ }
+
+ // CP ID
+ if (!empty($data['rcpt_cpid'])) {
+ if (strcmp($data['rcpt_cpid'], 'naver') == 0) {
+ $builder->where('a.rcpt_cpid =', '');
+ } else if (strcmp($data['rcpt_cpid'], 'cleancente') == 0) {
+ $builder->where("a.rcpt_cpid !=", "");
+ } else {
+ $builder->where('a.rcpt_cpid', $data['rcpt_cpid']);
+ }
+ }
+
+ // 매물종류
+ if (!empty($data['rcpt_product'])) {
+ $builder->where('a.parcel_out_yn', $data['rcpt_product']);
+ }
+
+ // 면적확인
+ if ($data['exp_spc_yn'] == 'Y') {
+ $builder->where('a.parcel_out_yn', 'Y');
+ } else if ($data['exp_spc_yn'] == 'N') {
+ $builder->where('a.parcel_out_yn', 'N');
+ }
+
+ // 체크리스트
+ if ($data['check_list_img_yn'] == 'Y') {
+ $builder->where('a.check_list_img_yn', 'Y');
+ } else if ($data['check_list_img_yn'] == 'N') {
+ $builder->where('a.check_list_img_yn', 'N');
+ }
+
+ // 평면도유무
+ if ($data['ground_plan_yn'] == 'Y') {
+ $builder->where('exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE);
+ } else if ($data['ground_plan_yn'] == 'N') {
+ $builder->where('not exists (select \'x\' from result_imgs imgs where imgs.rsrv_sq = b.rsrv_sq and imgs.img_type = \'I5\' and imgs.use_yn=\'Y\')', NULL, FALSE);
+ }
+
+ // 평면도요청
+ if (!empty($data['ground_plan'])) {
+ $builder->where('a.ground_plan', $data['ground_plan']);
+ }
+
+ // 직거래
+ if ($data['direct_trad_yn'] == "Y") {
+ $builder->where('a.direct_trad_yn', 'Y');
+ } else if ($data['direct_trad_yn'] == "N") {
+ $builder->where('a.direct_trad_yn', 'N');
+ }
+
+ // 360촬영여부
+ if ($data['image_360_yn'] == "Y") {
+ $builder->where('a.image_360_yn', 'Y');
+ } else if ($data['image_360_yn'] == "N") {
+ $builder->where('a.image_360_yn', 'N');
+ }
+
+ if (!empty($data['srchTxt'])) {
+ // 중개사
+ if ($data['srchType'] == '1') {
+ $builder->groupStart()
+ ->like('a.agent_nm', $data['srchTxt'])
+ ->orLike('a.sellr_nm', $data['srchTxt'])
+ ->groupEnd();
+
+ // 주소
+ } else if ($data['srchType'] == '2') {
+ $builder->groupStart()
+ ->like('a.rcpt_dtl_addr', $data['srchTxt'])
+ ->orLike('a.rcpt_hscp_nm', $data['srchTxt'])
+ ->orLike('a.rcpt_jibun_addr', $data['srchTxt'])
+ ->groupEnd();
+
+ // 사업자번호
+ } else if ($data['srchType'] == '3') {
+ $builder->like('a.image_360_yn', $data['srchTxt'], 'both');
+ } else {
+ $builder->groupStart()
+ ->like('a.agent_nm', $data['srchTxt'])
+ ->orLike('a.sellr_nm', $data['srchTxt'])
+ ->groupEnd();
+
+ $builder->groupStart()
+ ->like('a.rcpt_dtl_addr', $data['srchTxt'])
+ ->orLike('a.rcpt_hscp_nm', $data['srchTxt'])
+ ->orLike('a.rcpt_jibun_addr', $data['srchTxt'])
+ ->groupEnd();
+
+ $builder->like('a.image_360_yn', $data['srchTxt'], 'both');
+ }
+ }
+
+ }
+
+
+ $builder->orderBy('a.rcpt_atclno', 'DESC');
+
+ return $builder->get()->getResultArray();
+ }
+
+ // 상세
+ public function getDetail($id)
+ {
+
+ $builder = $this->db->table('receipt a');
+
+ $builder->select("
+ a.rcpt_sq
+ ,a.comp_sq
+ ,a.excls_spc
+ ,a.rcpt_rating
+ ,a.rcpt_key
+ ,a.rcpt_atclno
+ ,a.rcpt_type
+ ,a.rcpt_product
+ ,a.rcpt_product_nm
+ ,a.rcpt_product_area
+ ,a.rcpt_product_price
+ , a.rcpt_deal_type
+ ,a.rcpt_product_info1
+ ,a.rcpt_product_info2
+ ,a.rcpt_product_info3
+ ,a.rcpt_product_info4
+ ,a.rcpt_product_info5
+ ,a.rcpt_office
+ ,(CASE WHEN a.rcpt_agent IS NULL THEN 'N' ELSE 'Y' END) as rcpt_agent
+ ,a.rcpt_sido
+ ,a.rcpt_gugun
+ ,a.rcpt_dong
+ ,a.rcpt_dtl_addr
+ ,a.rcpt_li_addr
+ ,a.rcpt_jibun_addr
+ ,a.rcpt_etc_addr
+ ,a.rcpt_ref_addr
+ ,a.rcpt_ho
+ ,a.rcpt_hscp_nm
+ ,a.rcpt_floor
+ ,a.rcpt_floor2
+ ,a.chg_floor_yn
+ ,a.rcpt_tm
+ ,a.rcpt_stat
+ ,a.rcpt_x
+ ,a.rcpt_y
+ ,a.rcpt_living_yn
+ ,a.cust_nm
+ ,a.cust_tel1
+ ,a.cust_tel2
+ ,a.cust_zip
+ ,a.cust_addr1
+ ,a.cust_addr2
+ ,a.remark rcpt_remark
+ , a.rcpt_cpid
+ ,a.agent_id
+ ,a.agent_nm
+ ,a.agent_head
+ ,a.agent_head_tel
+ ,a.agent_contact
+ ,a.agent_contact_tel
+ ,a.agent_fax
+ ,a.agent_tel
+ ,a.excls_spc
+ ,a.excls_spc1
+ ,a.excls_spc2
+ ,a.sply_spc
+ ,a.share_spc
+ ,a.share_spc1
+ ,a.share_spc2
+ ,a.share_spc3
+ ,a.share_spc4
+ ,a.share_spc5
+ ,a.room_cnt
+ ,a.tot_spc
+ ,a.tot_spc1
+ ,a.tot_spc2
+ ,a.grnd_spc
+ ,a.grnd_spc1
+ ,a.grnd_spc2
+ ,a.grnd_spc3
+ ,a.grnd_spc4
+ ,a.grnd_spc5
+ ,a.spc_stat
+ ,a.exp_spc_yn
+ ,DATE_FORMAT(COALESCE(b.rsrv_date, a.rsrv_date), '%Y-%m-%d') AS rsrv_date
+ ,COALESCE(b.rsrv_tm_ap, a.rsrv_tm_ap) as rsrv_tm_ap
+ ,a.insert_usr
+ ,a.insert_tm
+ ,a.update_usr
+ ,a.update_tm
+ ,a.svc_type1
+ ,a.svc_type2
+ ,a.reconf_yn
+ ,a.cupnNo
+ ,b.rsrv_sq
+ ,b.dept_sq
+ ,b.usr_sq
+ ,b.req_rec_yn
+ ,b.rec_yn
+ ,b.rec_tel
+ ,b.rec_nm
+ ,b.remark
+ ,b.rsrv_tm_hour
+ ,b.result_cd1
+ ,get_code_name('RECEIPT_STATUS1', b.result_cd1) AS result_cd1_nm
+ ,b.result_cd2
+ ,get_code_name('RECEIPT_STATUS2', b.result_cd2) AS result_cd2_nm
+ ,b.result_cd3
+ ,get_code_name('RECEIPT_STATUS3', b.result_cd3) AS result_cd3_nm
+ ,b.result_msg
+ ,b.rsrv_save_dt
+ ,b.photo_save_dt
+ ,DATE_FORMAT(b.photo_save_dt, '%Y-%m-%d') as photo_save_dt_dt
+ ,DATE_FORMAT(b.photo_save_dt, '%H:%i:%s') as photo_save_dt_tm
+ ,b.assign_save_dt
+ ,b.result_save_dt
+ ,b.request_msg
+ ,b.rsrv_delay_dt
+ ,DATE_FORMAT(b.rsrv_delay_dt, '%Y-%m-%d') as rsrv_delay_dt_dt
+ ,DATE_FORMAT(b.rsrv_delay_dt, '%H:%i:%s') as rsrv_delay_dt_tm
+ ,b.rsrv_cplt_dt
+ ,DATE_FORMAT(b.rsrv_cplt_dt, '%Y-%m-%d') as rsrv_cplt_dt_dt
+ ,DATE_FORMAT(b.rsrv_cplt_dt, '%H:%i:%s') as rsrv_cplt_dt_tm
+ ,b.check_dt
+ ,DATE_FORMAT(b.check_dt, '%Y-%m-%d') as check_dt_dt
+ ,DATE_FORMAT(b.check_dt, '%H:%i:%s') as check_dt_tm
+ ,b.check_cplt_dt
+ ,DATE_FORMAT(b.check_cplt_dt, '%Y-%m-%d') as check_cplt_dt_dt
+ ,DATE_FORMAT(b.check_cplt_dt, '%H:%i:%s') as check_cplt_dt_tm
+ ,b.cancel_dt
+ ,DATE_FORMAT(b.cancel_dt, '%Y-%m-%d') as cancel_dt_dt
+ ,DATE_FORMAT(b.cancel_dt, '%H:%i:%s') as cancel_dt_tm
+ ,b.check_delay_dt
+ ,DATE_FORMAT(b.check_delay_dt, '%Y-%m-%d') as check_delay_dt_dt
+ ,DATE_FORMAT(b.check_delay_dt, '%H:%i:%s') as check_delay_dt_tm
+ ,b.check_fail_dt
+ ,DATE_FORMAT(b.check_fail_dt, '%Y-%m-%d') as check_fail_dt_dt
+ ,DATE_FORMAT(b.check_fail_dt, '%H:%i:%s') as check_fail_dt_tm
+ ,get_code_name('RECEIPT_STATUS3', a.rcpt_stat) AS rcpt_stat_nm
+ ,DATE_FORMAT(a.insert_tm, '%Y년 %m월 %d일') as insert_tm2
+ ,DATE_FORMAT(a.rsrv_date, '%Y-%m-%d') as rsrv_date2
+ ,c.region_nm as addr
+ ,c.dept_sq as region_dept_sq
+ ,c.usr_sq as region_usr_sq
+ ,d.pdept_sq
+ ,d.dept_nm
+ ,a.rcpt_exps_type
+ ,a.exp_photo_yn
+ ,a.exp_movie_yn
+ ,b.resYn
+ ,DATE_ADD(a.insert_tm, INTERVAL +3 MONTH) as months
+ ,b.dbUsageAgrYn
+ ,a.trade_type
+ , a.rcpt_hscp_no
+ , a.rcpt_ptp_nm
+ , a.rcpt_ptp_no
+ , a.modify_yn
+ , a.ground_plan
+ ,a.direct_trad_yn
+ ,a.sellr_nm
+ ,a.sellr_tel_no
+ ,a.virAddr_yn
+ ,a.isSiteVRVerification
+ ,a.isPromotionApply
+ ,DATE_FORMAT(b.vr_check_cplt_dt, '%Y-%m-%d') as vr_check_cplt_dt_dt
+ ,DATE_FORMAT(b.vr_check_cplt_dt, '%H:%i:%s') as vr_check_cplt_dt_dm
+ ", false);
+
+ $builder->join('result b', 'b.rcpt_sq = a.rcpt_sq', 'inner');
+ $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd', 'inner');
+ $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left');
+
+ $builder->where('a.rcpt_key', $id);
+ $builder->where('a.insert_tm >= DATE_ADD(CURDATE(), INTERVAL -3 MONTH)', NULL, FALSE);
+
+
+ return $builder->get()->getRowArray();
+ }
+
+ // 정보변경이력
+ public function getHistory($id)
+ {
+ $sql = "SELECT seq" .
+ " ,rcpt_sq" .
+ " ,rcpt_stat" .
+ " ,get_code_name('RECEIPT_STATUS3', rcpt_stat) AS rcpt_stat_nm" .
+ " ,rcpt_stat" .
+ " ,get_code_name('CHANGED_TYPE', changed_type) AS changed_type_nm" .
+ " ,changed_type" .
+ " ,changed_id" .
+ " ,remark" .
+ " ,DATE_FORMAT(changed_tm, '%Y.%m.%d %H:%i:%s') as changed_tm" .
+ " FROM changed_history" .
+ " WHERE rcpt_sq = ?" .
+ " ORDER BY changed_tm DESC";
+
+ $data = [$id];
+ $query = $this->db->query($sql, $data);
+
+ return $query->getResultArray();
+ }
+
+ // 시간대별통계
+ public function getUsrRsrvDateTmCount($id)
+ {
+ $sql = "SELECT b.usr_sq, b.rsrv_date FROM receipt a INNER JOIN result b ON a.rcpt_sq = b.rcpt_sq WHERE a.rcpt_key = ?";
+ $data = [$id];
+ $query = $this->db->query($sql, $data);
+ $row = $query->getRowArray();
+
+ if (!empty($row['usr_sq'])) {
+ $sql2 = "SELECT usr_sq, rsrv_tm_ap, rsrv_tm_hour, COUNT(rsrv_tm_hour) as cnt" .
+ " FROM result" .
+ " WHERE rsrv_date = ?" .
+ " AND usr_sq = ?" .
+ " GROUP BY usr_sq, rsrv_tm_ap, rsrv_tm_hour" .
+ " ORDER BY rsrv_tm_ap, rsrv_tm_hour";
+
+ $data2 = [$row['rsrv_date'], $row['usr_sq']];
+ } else {
+ $sql2 = "SELECT usr_sq, rsrv_tm_ap, rsrv_tm_hour, COUNT(rsrv_tm_hour) as cnt" .
+ " FROM result" .
+ " WHERE rsrv_date = ?" .
+ " AND usr_sq = (SELECT b.usr_sq FROM receipt a, region_codes b WHERE a.rcpt_dong = b.region_cd AND a.rcpt_key = ?)" .
+ " GROUP BY usr_sq, rsrv_tm_ap, rsrv_tm_hour" .
+ " ORDER BY rsrv_tm_ap, rsrv_tm_hour";
+
+ $data2 = [$row['rsrv_date'], $id];
+ }
+
+ $query2 = $this->db->query($sql2, $data2);
+
+ return $query2->getResultArray();
+ }
+
+ public function getAptGround($rcpt_dong)
+ {
+
+ $sql = "SELECT ";
+ $sql .= "* ";
+ $sql .= "FROM apt_ground ";
+ $sql .= "WHERE region_cd = ? ";
+
+ $data = [$rcpt_dong];
+
+ $query = $this->db->query($sql, $data);
+
+ return $query->getResultArray();
+
+ }
+}
\ No newline at end of file
diff --git a/app/Views/pages/article/dept/detail.php b/app/Views/pages/article/dept/detail.php
new file mode 100644
index 0000000..dd95c01
--- /dev/null
+++ b/app/Views/pages/article/dept/detail.php
@@ -0,0 +1,1331 @@
+
+= $this->extend('layouts/main') ?>
+= $this->section('content') ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
거주여부
+
+
+
+ | 거주여부 |
+
+
+ |
+
+ DB활용동의여부
+ |
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
+
평면도요청
+
+
+
+ |
+ 평면도요청
+ |
+
+
+ |
+ 평면도 등록 여부 |
+
+ 0) {
+ echo "Y";
+ } else {
+ echo "N";
+ }
+ ?>
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
동영상촬영여부
+
+
+
+ |
+ 동영상촬영여부
+ |
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
+
중개인 요청사항
+
+
+
+ |
+ 중개인 요청사항
+ |
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+ 담당자 예약현황 (= $data['rsrv_date'] ?>)
+
+
+
+
+
+
+ |
+ = $tm['rsrv_tm_ap'] ?>
+ = $tm['rsrv_tm_hour'] ?> 시
+ |
+
+
+
+
+
+
+ | = $tm['cnt'] ?> 건 |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
매물 상태 정보
+
+
+
+
+
+ " . $data['rsrv_delay_dt_tm']; //예약지연
+ $stat2 = $data['rsrv_cplt_dt_dt'] . "
" . $data['rsrv_cplt_dt_tm']; //에약확인
+ if ($data['req_rec_yn'] == "Y") { //촬영
+ $stat3 = $data['photo_save_dt_dt'] . "
" . $data['photo_save_dt_tm'] . "
녹취필요";
+ } else {
+ $stat3 = $data['photo_save_dt_dt'] . "
" . $data['photo_save_dt_tm'];
+ }
+ $stat4 = $data['check_delay_dt_dt'] . "
" . $data['check_delay_dt_tm']; //검수지연
+ $stat5 = $data['check_fail_dt_dt'] . "
" . $data['check_fail_dt_tm']; //검수실패
+ $stat6 = $data['check_dt_dt'] . "
" . $data['check_dt_tm']; //검수
+ $stat7 = $data['check_cplt_dt_dt'] . "
" . $data['check_cplt_dt_tm']; //검수완료
+ $stat8 = $data['cancel_dt_dt'] . "
" . $data['cancel_dt_tm']; //취소
+
+ $currStat = substr($data['rcpt_stat'], 0, 2);
+ $currStat2 = substr($data['rcpt_stat'], 2, 2);
+
+ if ($currStat == 15) { //예약지연
+ $stat1 = "" . $stat1 . "";
+ } else if ($currStat == 20) { //예약확인
+ $stat2 = "" . $stat2 . "";
+ } else if ($currStat == 40) { //촬영
+ $stat3 = "" . $stat3 . "";
+ } else if ($currStat == 50) { //검수
+ $stat6 = "" . $stat6 . "";
+ } else if ($currStat == 60) { //검수완료
+ $stat7 = "" . $stat7 . "";
+ } else if ($currStat == 70) { //검수지연
+ $stat4 = "" . $stat4 . "
" . $data['rcpt_stat_nm'] . "";
+ }
+ if ($currStat == 90 && $currStat2 != 50) { //취소
+ $stat8 = "" . $stat8 . "
" . $data['result_cd2_nm'] . "";
+ } else if ($currStat == 90 && $currStat2 == 50) { //검수실패
+ $stat5 = "" . $stat5 . "
" . $data['rcpt_stat_nm'] . "";
+ }
+ ?>
+
+ 현장확인 진행상황 |
+ 예약지연 |
+ 예약확인 |
+ 촬영 |
+ 검수지연 |
+ 검수실패 |
+ 검수 |
+ 검수완료 |
+ 취소 |
+
+
+ |
+ = $stat1 ?>
+ |
+
+ = $stat2 ?>
+ |
+
+ = $stat3 ?>
+ |
+
+ = $stat4 ?>
+ |
+
+ = $stat5 ?>
+ |
+
+ = $stat6 ?>
+ |
+
+ = $stat7 ?>
+ |
+
+ = $stat8 ?>
+ |
+
+
+
+ | 상태변경 |
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+ |
+
+
+ |
+ |
+ |
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+ |
+
+
+ |
+ |
+ |
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+ |
+
+
+ |
+ |
+ |
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+ |
+
+
+ |
+ |
+ |
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+ |
+
+
+ |
+ |
+ |
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+ |
+
+
+ |
+ |
+ |
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+ |
+
+
+ |
+ |
+ |
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+ |
+
+
+ |
+ |
+ |
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+ |
+
+
+ |
+ |
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
확인 정보 및 사진 정보
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
매물사진 (최대 15장)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
검수사항
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+

+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+= $this->endSection() ?>
\ No newline at end of file
diff --git a/app/Views/pages/article/dept/lists.php b/app/Views/pages/article/dept/lists.php
new file mode 100644
index 0000000..0dd5226
--- /dev/null
+++ b/app/Views/pages/article/dept/lists.php
@@ -0,0 +1,1048 @@
+
+= $this->extend('layouts/main') ?>
+
+= $this->section('content') ?>
+
+
+조직별 배정 현황
+
+
+
+
+
+= $this->section('modals') ?>
+
+= $this->endSection() ?>
+
+
+
+
+
+= $this->endSection() ?>
\ No newline at end of file
diff --git a/app/Views/pages/article/dept/printMap.php b/app/Views/pages/article/dept/printMap.php
new file mode 100644
index 0000000..78c8fd2
--- /dev/null
+++ b/app/Views/pages/article/dept/printMap.php
@@ -0,0 +1,237 @@
+
+
+
+
+
+
+
+
+ 지도보기
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/Views/pages/article/printMap.php b/app/Views/pages/article/printMap.php
index 7ff91cc..8ea2251 100644
--- a/app/Views/pages/article/printMap.php
+++ b/app/Views/pages/article/printMap.php
@@ -16,7 +16,7 @@ $long = $long / $cnt;
- 컨펌스 로그인
+ 지도보기
diff --git a/app/Views/pages/article/receipt/lists.php b/app/Views/pages/article/receipt/lists.php
index 1866b12..7cbeb8c 100644
--- a/app/Views/pages/article/receipt/lists.php
+++ b/app/Views/pages/article/receipt/lists.php
@@ -401,6 +401,10 @@ $usr_nm = session('usr_nm');
+
+
+= $this->endSection() ?>
\ No newline at end of file
diff --git a/app/Views/pages/article/record/lists.php b/app/Views/pages/article/record/lists.php
new file mode 100644
index 0000000..d3ec638
--- /dev/null
+++ b/app/Views/pages/article/record/lists.php
@@ -0,0 +1,613 @@
+
+= $this->extend('layouts/main') ?>
+
+= $this->section('content') ?>
+
+
+
+녹취매물 내역
+
+
+
+
+
+
+
+
+
+
+
+ | 진행상태 |
+ 매물ID |
+ 접수(등록)일자 |
+ 촬영일자 |
+ 녹취완료일자 |
+ 중개사 |
+ 주소 |
+ 거주인명 |
+ 거주인연락처 |
+ 관할조직 |
+ 방문담당 |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+= $this->endSection() ?>
\ No newline at end of file