From 957e0628330eab0dc84bfaa16ba0f75c4a2e5668 Mon Sep 17 00:00:00 2001 From: yangsh Date: Mon, 19 Jan 2026 14:18:12 +0900 Subject: [PATCH] =?UTF-8?q?=ED=8F=89=EB=A9=B4=EB=8F=84=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Config/Routes.php | 11 + app/Controllers/Article/GroundCnt.php | 134 +++ app/Models/article/GroundCntModel.php | 878 ++++++++++++++++++ app/Views/pages/article/ground/lists.php | 835 +++++++++++++++++ .../pages/article/processible/datecount.php | 2 - 5 files changed, 1858 insertions(+), 2 deletions(-) create mode 100644 app/Controllers/Article/GroundCnt.php create mode 100644 app/Models/article/GroundCntModel.php create mode 100644 app/Views/pages/article/ground/lists.php diff --git a/app/Config/Routes.php b/app/Config/Routes.php index c9b6d90..443d115 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -113,6 +113,17 @@ $routes->group('', ['namespace' => 'App\Controllers\Article'], static function ( }); + /** + * 아파트 평면도 + */ + $routes->group('article/ground_ctn', static function ($routes) { + $routes->get('lists', 'GroundCnt::lists'); + $routes->get('detail/(:num)', 'GroundCnt::detail/$1'); + + $routes->get('getResultList', 'GroundCnt::getResultList'); + $routes->get('excel', 'GroundCnt::excel'); + }); + }); diff --git a/app/Controllers/Article/GroundCnt.php b/app/Controllers/Article/GroundCnt.php new file mode 100644 index 0000000..db51f10 --- /dev/null +++ b/app/Controllers/Article/GroundCnt.php @@ -0,0 +1,134 @@ +model = new GroundCntModel(); + $this->codeModel = new CodeModel(); + } + + public function lists(): string + { + + $codes = $this->codeModel->getCodeLists(['NHN_DEAL_TYPE', 'CP_ID', 'ARTICLE_TYPE', 'VRFCREQ_WAY', 'STEP_VERIFICATION']); // 코드조회 + $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/ground/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 + 'schDateGb' => $this->request->getGet('schDateGb'), // 일자유형 + 'sdate' => $this->request->getGet('sdate'), // 시작일 + 'edate' => $this->request->getGet('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'), // 읍면동 + + 'rcpt_stat1' => $this->request->getGet('rcpt_stat1'), // 상태1 + 'rcpt_stat2' => $this->request->getGet('rcpt_stat2'), // 상태2 + 'rcpt_stat3' => $this->request->getGet('rcpt_stat3'), // 상태3 + + 'rcpt_product_info1' => $this->request->getGet('rcpt_product_info1'), // 거래구분 + 'exp_movie_yn' => $this->request->getGet('exp_movie_yn'), // 동영상촬영여부 + 'conf_img_yn' => $this->request->getGet('conf_img_yn'), // 홍보확인서여부 + 'parcel_out_yn' => $this->request->getGet('parcel_out_yn'), // 분양권 + 'rcpt_cpid' => $this->request->getGet('rcpt_cpid'), // CPID + 'rcpt_product' => $this->request->getGet('rcpt_product'), // 매물종류 + 'exp_spc_yn' => $this->request->getGet('exp_spc_yn'), // 면적확인 + 'check_list_img_yn' => $this->request->getGet('check_list_img_yn'), // 체크리스트 + 'ground_plan_yn' => $this->request->getGet('ground_plan_yn'), // 평면도유무 + 'ground_plan' => $this->request->getGet('ground_plan'), // 평면도요청 + + '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 + 'schDateGb' => $this->request->getGet('schDateGb'), // 일자유형 + 'sdate' => $this->request->getGet('sdate'), // 시작일 + 'edate' => $this->request->getGet('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'), // 읍면동 + + 'rcpt_stat1' => $this->request->getGet('rcpt_stat1'), // 상태1 + 'rcpt_stat2' => $this->request->getGet('rcpt_stat2'), // 상태2 + 'rcpt_stat3' => $this->request->getGet('rcpt_stat3'), // 상태3 + + 'rcpt_product_info1' => $this->request->getGet('rcpt_product_info1'), // 거래구분 + 'exp_movie_yn' => $this->request->getGet('exp_movie_yn'), // 동영상촬영여부 + 'conf_img_yn' => $this->request->getGet('conf_img_yn'), // 홍보확인서여부 + 'parcel_out_yn' => $this->request->getGet('parcel_out_yn'), // 분양권 + 'rcpt_cpid' => $this->request->getGet('rcpt_cpid'), // CPID + 'rcpt_product' => $this->request->getGet('rcpt_product'), // 매물종류 + 'exp_spc_yn' => $this->request->getGet('exp_spc_yn'), // 면적확인 + 'check_list_img_yn' => $this->request->getGet('check_list_img_yn'), // 체크리스트 + 'ground_plan_yn' => $this->request->getGet('ground_plan_yn'), // 평면도유무 + 'ground_plan' => $this->request->getGet('ground_plan'), // 평면도요청 + + '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(); + } + } +} \ No newline at end of file diff --git a/app/Models/article/GroundCntModel.php b/app/Models/article/GroundCntModel.php new file mode 100644 index 0000000..085e43d --- /dev/null +++ b/app/Models/article/GroundCntModel.php @@ -0,0 +1,878 @@ +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 getDeptDetail($dept_sq) + { + $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 dept_sq = ?"; + + $data = [$dept_sq]; + $query = $this->db->query($sql, $data); + $row = $query->getRowArray(); + + return $row; + } + + /** + * 하위 부서 검색 + */ + public function getChildDept($dept) + { + $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 lft >= ?" . + " AND rgt <= ?" . + " ORDER BY lft ASC"; + + $data = [$dept['lft'], $dept['rgt']]; + $query = $this->db->query($sql, $data); + + 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"); + + $builder->join('result b', 'b.rcpt_sq = a.rcpt_sq', 'left outer'); + $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd'); + $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left outer'); + $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left outer'); + $builder->join('result_imgs e', "e.rsrv_sq = b.rsrv_sq AND e.img_type = 'I1' AND e.use_yn = 'Y'", 'left outer'); + $builder->join('result_imgs f', "f.rsrv_sq = b.rsrv_sq AND e.img_type = 'I5' AND e.use_yn = 'Y'", 'left outer'); + + $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); + $builder->where('b.use_yn', 'Y'); + $builder->where('f.img_path IS NOT NULL', 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 (!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'); + } + } + + } + + $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.excls_spc + ,a.comp_sq + ,a.rcpt_floor + ,a.rcpt_floor2 + ,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_bunji + ,a.rcpt_ho + ,a.rcpt_tm + ,a.rcpt_stat + ,a.rcpt_x + ,a.rcpt_y + ,a.rcpt_exps_type + ,a.cust_nm + ,a.cust_tel1 + ,a.cust_tel2 + ,a.rcpt_hscp_nm + ,a.cust_zip + ,a.cust_addr1 + ,a.cust_addr2 + ,a.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 + ,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.rsrv_tm_hour + ,b.result_cd1 + ,b.result_cd2 + ,b.result_cd3 + ,get_code_name('RECEIPT_STATUS1', b.result_cd1) AS result_cd1_nm + ,get_code_name('RECEIPT_STATUS2', b.result_cd2) AS result_cd2_nm + ,get_code_name('RECEIPT_STATUS3', b.result_cd3) AS result_cd3_nm + ,b.result_msg + ,b.photo_save_dt + ,b.rsrv_delay_dt + ,b.rsrv_cplt_dt + ,b.check_dt + ,b.check_cplt_dt + ,get_code_name('RECEIPT_STATUS1', substring(a.rcpt_stat, 1, 2)) AS rcpt_stat_nm + ,c.region_nm as addr + ,a.rcpt_dtl_addr + ,a.rcpt_jibun_addr + ,a.rcpt_etc_addr + ,d.pdept_sq + ,d.dept_nm + ,u.usr_nm + ,a.rcpt_exps_type + ,a.exp_photo_yn + ,a.exp_movie_yn + ,a.ground_plan + ,f.img_path + ,f.img_filenm + ,f.img_hannm + ,f.img_sq + ,f.cloud_upload_yn + ,( SELECT usr_nm FROM users WHERE users.usr_sq = f.insert_usr ) AS upload_usr_nm + ,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"); + + $builder->join('result b', 'b.rcpt_sq = a.rcpt_sq', 'left outer'); + $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd'); + $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left outer'); + $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left outer'); + $builder->join('result_imgs e', "e.rsrv_sq = b.rsrv_sq AND e.img_type = 'I1' AND e.use_yn = 'Y'", 'left outer'); + $builder->join('result_imgs f', "f.rsrv_sq = b.rsrv_sq AND e.img_type = 'I5' AND e.use_yn = 'Y'", 'left outer'); + + $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); + $builder->where('b.use_yn', 'Y'); + $builder->where('f.img_path IS NOT NULL', 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 (!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'); + + $builder->limit($end, $start); + + echo $builder->getCompiledSelect(false); + + // log_message('debug', '[getResultList] SQL = ' . $builder->getCompiledSelect()); + + return $builder->get()->getResultArray(); + + } + + // 엑셀 다운로드 + 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 '현재상태', + a.rcpt_atclno AS '매물ID', + CONCAT(a.rsrv_date, ' ', b.rsrv_tm_ap) AS '예약일자', + CASE WHEN a.rcpt_jibun_addr IS NOT NULL + THEN CONCAT(c.region_nm, ' ', a.rcpt_jibun_addr, ' ', a.rcpt_etc_addr) + ELSE CONCAT(c.region_nm, ' ', a.rcpt_dtl_addr, ' ', a.rcpt_ho) + END AS '주소', + CONCAT(a.rcpt_floor, '/', a.rcpt_floor2) AS '층', + a.excls_spc AS '면적', + IFNULL(a.rcpt_product_nm, a.rcpt_product) AS '매물종류', + d.dept_nm AS '관할조직(팀)', + u.usr_nm '방문담당', + ( SELECT usr_nm FROM users WHERE users.usr_sq = f.insert_usr ) AS '등록자명', + 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 AS '평면도유무', + a.ground_plan AS '평면도요청'"); + + $builder->join('result b', 'b.rcpt_sq = a.rcpt_sq', 'left outer'); + $builder->join('region_codes c', 'a.rcpt_dong = c.region_cd'); + $builder->join('departments d', 'b.dept_sq = d.dept_sq', 'left outer'); + $builder->join('users u', 'b.usr_sq = u.usr_sq', 'left outer'); + $builder->join('result_imgs e', "e.rsrv_sq = b.rsrv_sq AND e.img_type = 'I1' AND e.use_yn = 'Y'", 'left outer'); + $builder->join('result_imgs f', "f.rsrv_sq = b.rsrv_sq AND e.img_type = 'I5' AND e.use_yn = 'Y'", 'left outer'); + + $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); + $builder->where('b.use_yn', 'Y'); + $builder->where('f.img_path IS NOT NULL', 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 (!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'); + + // log_message('debug', '[getResultList] SQL = ' . $builder->getCompiledSelect()); + + return $builder->get()->getResultArray(); + } +} \ No newline at end of file diff --git a/app/Views/pages/article/ground/lists.php b/app/Views/pages/article/ground/lists.php new file mode 100644 index 0000000..948e7db --- /dev/null +++ b/app/Views/pages/article/ground/lists.php @@ -0,0 +1,835 @@ + +extend('layouts/main') ?> + +section('content') ?> + + + +

평면도 관리

+ +
+
+
+
+
+ + 매물ID를 입력하면 다른 조건은 무시됩니다. + +
+ + +
+
+ + +
+ +
+ +
+ + + ~ + +
+
+ +
+ +
+ + + +
+
+ +
+ +
+ + + +
+
+ +
+ +
+ + + +
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ +
+ + +
+
+ +
+ +
+
+ +
+
+
+ +
+ +
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
현재상태매물ID예약일자주소면적매물종류관할조직(팀)방문담당평면도유무평면도요청파일명미리보기다운로드
+
+ +
+
+
+ + +section('modals') ?> + +endSection() ?> + + + + + + +endSection() ?> \ No newline at end of file diff --git a/app/Views/pages/article/processible/datecount.php b/app/Views/pages/article/processible/datecount.php index 24c6766..f95092d 100644 --- a/app/Views/pages/article/processible/datecount.php +++ b/app/Views/pages/article/processible/datecount.php @@ -769,8 +769,6 @@ title: '정상 처리되었습니다.', icon: "success" }); - - table.ajax.reload(); } else { Swal.fire({ title: result.msg,