아파트평면도 목록 페이지 추가

This commit is contained in:
yangsh
2025-12-26 17:21:21 +09:00
parent 093d1a1c0b
commit 06e266425c
8 changed files with 2407 additions and 39 deletions

View File

@@ -203,6 +203,19 @@ class AptModel extends Model
$sql .= "AND a.dong_cnt <= {$data['dong_cnt2']} ";
}
// 담당자
if (!empty($data['damdang'])) {
$sql .= "AND a.charger = '{$data['damdang']}' ";
} else {
if (!empty($data['team'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['team']}') ";
} else {
if (!empty($data['bonbu'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['bonbu']}') ";
}
}
}
// 진행상태
if (!empty($data['stat']) && is_array($data['stat'])) {
$statList = "'" . implode("','", $data['stat']) . "'";
@@ -296,6 +309,19 @@ class AptModel extends Model
$sql .= "AND a.dong_cnt <= {$data['dong_cnt2']} ";
}
// 담당자
if (!empty($data['damdang'])) {
$sql .= "AND a.charger = '{$data['damdang']}' ";
} else {
if (!empty($data['team'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['team']}') ";
} else {
if (!empty($data['bonbu'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['bonbu']}') ";
}
}
}
// 진행상태
if (!empty($data['stat']) && is_array($data['stat'])) {
$statList = "'" . implode("','", $data['stat']) . "'";
@@ -391,6 +417,19 @@ class AptModel extends Model
$sql .= "AND a.dong_cnt <= {$data['dong_cnt2']} ";
}
// 담당자
if (!empty($data['damdang'])) {
$sql .= "AND a.charger = '{$data['damdang']}' ";
} else {
if (!empty($data['team'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['team']}') ";
} else {
if (!empty($data['bonbu'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['bonbu']}') ";
}
}
}
// 진행상태
if (!empty($data['stat']) && is_array($data['stat'])) {
$statList = "'" . implode("','", $data['stat']) . "'";
@@ -491,6 +530,19 @@ class AptModel extends Model
$sql .= "AND a.dong_cnt <= {$data['dong_cnt2']} ";
}
// 담당자
if (!empty($data['damdang'])) {
$sql .= "AND a.charger = '{$data['damdang']}' ";
} else {
if (!empty($data['team'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['team']}') ";
} else {
if (!empty($data['bonbu'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['bonbu']}') ";
}
}
}
// 진행상태
if (!empty($data['stat']) && is_array($data['stat'])) {
$statList = "'" . implode("','", $data['stat']) . "'";
@@ -729,6 +781,19 @@ class AptModel extends Model
$sql .= "AND a.dong_cnt <= {$data['dong_cnt2']} ";
}
// 담당자
if (!empty($data['damdang'])) {
$sql .= "AND a.charger = '{$data['damdang']}' ";
} else {
if (!empty($data['team'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['team']}') ";
} else {
if (!empty($data['bonbu'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['bonbu']}') ";
}
}
}
// 진행상태
if (!empty($data['stat']) && is_array($data['stat'])) {
$statList = "'" . implode("','", $data['stat']) . "'";

View File

@@ -0,0 +1,651 @@
<?php
namespace App\Models\article;
use CodeIgniter\Model;
class GroundModel extends Model
{
// 지역 목록 조회
public function getAreaList($sido = '', $gugun = '')
{
if (!empty($gugun)) {
$gugun = substr($gugun, '0', '5');
$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,5),'00000')" .
" WHERE a.region_cd LIKE concat(?, '%')" .
" AND a.region_cd NOT LIKE '%00000'" .
" AND a.region_cd LIKE '%00'" .
" AND a.use_yn = 'Y'" .
" ORDER BY a.region_nm ASC";
$query = $this->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)
{
$sql = "SELECT COUNT(*) AS cnt
FROM apt_ground AS a
LEFT JOIN apt_ground_photo AS gp ON gp.pho_no = (SELECT p.pho_no
FROM apt_ground_photo p
WHERE p.rcpt_no = a.rcpt_no
ORDER BY p.pho_no DESC
LIMIT 1)
LEFT JOIN users b ON a.charger = b.usr_id
LEFT JOIN region_codes e ON a.region_cd = e.region_cd
LEFT JOIN departments i ON a.dept_sq = i.dept_sq
LEFT JOIN codes f ON a.write_complete_yn = f.cd AND f.category = 'PHO_YN'
LEFT JOIN codes h ON a.vdo_up_ynx = h.cd AND h.category = 'VDO_YN'
LEFT JOIN codes g ON a.apt_step = g.cd AND g.category = 'APT_STEP'
LEFT JOIN apt_history j ON a.rcpt_no = j.rcpt_no AND j.changed_detail = 'C2' AND NOT EXISTS (SELECT 'x' FROM apt_history WHERE changed_detail LIKE 'A%' AND rcpt_no = j.rcpt_no) ";
$sql .= "WHERE 1=1 ";
if (!empty($data['hscp_no'])) {
$sql .= "AND a.hscp_no LIKE CONCAT('%', '{$data['hscp_no']}', '%') ";
} else {
if (!empty($data['hscp_no'])) {
$sql .= "AND a.part_no LIKE CONCAT('%', '{$data['part_no']}', '%') ";
}
if (!empty($data['rcpt_hscp_nm'])) {
$sql .= "AND a.rcpt_hscp_nm LIKE CONCAT('%', '{$data['rcpt_hscp_nm']}', '%') ";
}
// 법정동코드로 지역구분
if (!empty($data['srcDong'])) {
$sql .= "AND a.region_cd = '{$data['srcDong']}' ";
} else {
if (!empty($data['srcGugun'])) {
$str_gugun = substr($data['srcGugun'], '0', '2');
if ($str_gugun == '36') { //세종시는 군구가 없고 바로 동이라서 예외
$sql .= "AND a.region_cd = '{$data['srcGugun']}' ";
} else {
$gugunPrefix = substr($data['srcGugun'], '0', '5');
$sql .= "AND a.region_cd LIKE '{$gugunPrefix}%' ";
}
} else {
if (!empty($data['srcSido'])) {
$sidoPrefix = substr($data['srcSido'], '0', '2');
$sql .= "AND a.region_cd LIKE '{$sidoPrefix}%' ";
}
}
}
//촬영일자 == 단지정보작성완료 일자
if (!empty($data['sdate'])) {
$sql .= "AND b.write_complete_tm >= '{$data['sdate']} 00:00:00' ";
}
if (!empty($data['edate'])) {
$sql .= "AND b.write_complete_tm <= '{$data['edate']} 00:00:00' ";
}
// 담당자
if (!empty($data['damdang'])) {
$sql .= "AND a.charger = '{$data['damdang']}' ";
} else {
if (!empty($data['team'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['team']}') ";
} else {
if (!empty($data['bonbu'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['bonbu']}') ";
}
}
}
// 진행상태
if (!empty($data['stat']) && is_array($data['stat'])) {
$statList = "'" . implode("','", $data['stat']) . "'";
$sql .= " AND a.apt_step IN ({$statList}) ";
}
}
$query = $this->db->query($sql);
return $query->getRow()->cnt;
}
public function getAptLists($start, $end, $data)
{
$sql = "SELECT
a.rcpt_no, a.hscp_no, a.part_no, a.addr, a.addr2, a.rcpt_hscp_nm, a.pyeong_cnt, a.households_cnt, a.dong_cnt, a.rcpt_hscp_nm,
a.apt_cate_nm, a.rcpt_x, a.rcpt_y,
a.charger, a.memo, a.write_complete_yn, a.gpho_up_yn, a.vdo_up_ynx, a.apt_step, a.video_target, a.all_no_pho, a.send_end_tm,
a.dept_sq, a.vdo_up_tm, a.not_vdo_tm, a.check_tm, a.write_complete_tm,
b.usr_nm, i.dept_nm, j.changed_tm, gp.pho_no, gp.filenm, gp.filenm_up, gp.file_path, gp.file_ext, gp.cloud_upload_yn, gp.insert_tm
FROM
apt_ground AS a
LEFT JOIN apt_ground_photo AS gp ON gp.pho_no = (SELECT p.pho_no
FROM apt_ground_photo p
WHERE p.rcpt_no = a.rcpt_no
ORDER BY p.pho_no DESC
LIMIT 1)
LEFT JOIN users b ON a.charger = b.usr_id
LEFT JOIN region_codes e ON a.region_cd = e.region_cd
LEFT JOIN departments i ON a.dept_sq = i.dept_sq
LEFT JOIN codes f ON a.write_complete_yn = f.cd AND f.category = 'PHO_YN'
LEFT JOIN codes h ON a.vdo_up_ynx = h.cd AND h.category = 'VDO_YN'
LEFT JOIN codes g ON a.apt_step = g.cd AND g.category = 'APT_STEP'
LEFT JOIN apt_history j ON a.rcpt_no = j.rcpt_no AND j.changed_detail = 'C2' AND NOT EXISTS (SELECT 'x' FROM apt_history WHERE changed_detail LIKE 'A%' AND rcpt_no = j.rcpt_no) ";
$sql .= "WHERE 1=1 ";
if (!empty($data['hscp_no'])) {
$sql .= "AND a.hscp_no LIKE CONCAT('%', '{$data['hscp_no']}', '%') ";
} else {
if (!empty($data['hscp_no'])) {
$sql .= "AND a.part_no LIKE CONCAT('%', '{$data['part_no']}', '%') ";
}
if (!empty($data['rcpt_hscp_nm'])) {
$sql .= "AND a.rcpt_hscp_nm LIKE CONCAT('%', '{$data['rcpt_hscp_nm']}', '%') ";
}
// 법정동코드로 지역구분
if (!empty($data['srcDong'])) {
$sql .= "AND a.region_cd = '{$data['srcDong']}' ";
} else {
if (!empty($data['srcGugun'])) {
$str_gugun = substr($data['srcGugun'], '0', '2');
if ($str_gugun == '36') { //세종시는 군구가 없고 바로 동이라서 예외
$sql .= "AND a.region_cd = '{$data['srcGugun']}' ";
} else {
$gugunPrefix = substr($data['srcGugun'], '0', '5');
$sql .= "AND a.region_cd LIKE '{$gugunPrefix}%' ";
}
} else {
if (!empty($data['srcSido'])) {
$sidoPrefix = substr($data['srcSido'], '0', '2');
$sql .= "AND a.region_cd LIKE '{$sidoPrefix}%' ";
}
}
}
//촬영일자 == 단지정보작성완료 일자
if (!empty($data['sdate'])) {
$sql .= "AND b.write_complete_tm >= '{$data['sdate']} 00:00:00' ";
}
if (!empty($data['edate'])) {
$sql .= "AND b.write_complete_tm <= '{$data['edate']} 00:00:00' ";
}
if (!empty($data['damdang'])) {
$sql .= "AND a.charger = '{$data['damdang']}' ";
} else {
if (!empty($data['team'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['team']}') ";
} else {
if (!empty($data['bonbu'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['bonbu']}') ";
}
}
}
// 진행상태
if (!empty($data['stat']) && is_array($data['stat'])) {
$statList = "'" . implode("','", $data['stat']) . "'";
$sql .= " AND a.apt_step IN ({$statList}) ";
}
}
$sql .= "LIMIT {$start}, {$end}";
$query = $this->db->query($sql);
return $query->getResultArray();
}
// 조직별 통계
public function getDeptStatistics($data)
{
$sql = "SELECT
a.dept_sq, IFNULL(f.dept_nm, '') AS bonbu_nm, IFNULL(i.dept_nm, '미지정') AS team_nm, COUNT(a.dept_sq) as cnt
FROM
apt_ground a
LEFT JOIN apt_ground_photo AS gp ON gp.pho_no = (SELECT p.pho_no
FROM apt_ground_photo p
WHERE p.rcpt_no = a.rcpt_no
ORDER BY p.pho_no DESC
LIMIT 1)
LEFT JOIN users c ON a.charger = c.usr_id
LEFT JOIN region_codes e ON a.region_cd = e.region_cd
LEFT JOIN departments i ON a.dept_sq = i.dept_sq
LEFT JOIN departments f ON i.dept_sq = f.dept_sq ";
$sql .= "WHERE 1=1 ";
if (!empty($data['hscp_no'])) {
$sql .= "AND a.hscp_no LIKE CONCAT('%', '{$data['hscp_no']}', '%') ";
} else {
if (!empty($data['hscp_no'])) {
$sql .= "AND a.part_no LIKE CONCAT('%', '{$data['part_no']}', '%') ";
}
if (!empty($data['rcpt_hscp_nm'])) {
$sql .= "AND a.rcpt_hscp_nm LIKE CONCAT('%', '{$data['rcpt_hscp_nm']}', '%') ";
}
// 법정동코드로 지역구분
if (!empty($data['srcDong'])) {
$sql .= "AND a.region_cd = '{$data['srcDong']}' ";
} else {
if (!empty($data['srcGugun'])) {
$str_gugun = substr($data['srcGugun'], '0', '2');
if ($str_gugun == '36') { //세종시는 군구가 없고 바로 동이라서 예외
$sql .= "AND a.region_cd = '{$data['srcGugun']}' ";
} else {
$gugunPrefix = substr($data['srcGugun'], '0', '5');
$sql .= "AND a.region_cd LIKE '{$gugunPrefix}%' ";
}
} else {
if (!empty($data['srcSido'])) {
$sidoPrefix = substr($data['srcSido'], '0', '2');
$sql .= "AND a.region_cd LIKE '{$sidoPrefix}%' ";
}
}
}
//촬영일자 == 단지정보작성완료 일자
if (!empty($data['sdate'])) {
$sql .= "AND b.write_complete_tm >= '{$data['sdate']} 00:00:00' ";
}
if (!empty($data['edate'])) {
$sql .= "AND b.write_complete_tm <= '{$data['edate']} 00:00:00' ";
}
if (!empty($data['damdang'])) {
$sql .= "AND a.charger = '{$data['damdang']}' ";
} else {
if (!empty($data['team'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['team']}') ";
} else {
if (!empty($data['bonbu'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['bonbu']}') ";
}
}
}
// 진행상태
if (!empty($data['stat']) && is_array($data['stat'])) {
$statList = "'" . implode("','", $data['stat']) . "'";
$sql .= " AND a.apt_step IN ({$statList}) ";
}
}
$sql .= "GROUP BY a.dept_sq ORDER BY bonbu_nm ASC, team_nm ASC ";
$query = $this->db->query($sql);
return $query->getResultArray();
}
// 지역별 통계
public function getStatistics($data)
{
$sql = "SELECT
a.addr AS addr, COUNT(a.addr) AS cnt
FROM
apt_ground a
LEFT JOIN apt_ground_photo gp ON a.rcpt_no = gp.rcpt_no
LEFT JOIN users c ON a.charger = c.usr_id
LEFT JOIN region_codes e ON a.region_cd = e.region_cd
LEFT JOIN departments i ON a.dept_sq = i.dept_sq ";
$sql .= "WHERE 1=1 ";
if (!empty($data['hscp_no'])) {
$sql .= "AND a.hscp_no LIKE CONCAT('%', '{$data['hscp_no']}', '%') ";
} else {
if (!empty($data['hscp_no'])) {
$sql .= "AND a.part_no LIKE CONCAT('%', '{$data['part_no']}', '%') ";
}
if (!empty($data['rcpt_hscp_nm'])) {
$sql .= "AND a.rcpt_hscp_nm LIKE CONCAT('%', '{$data['rcpt_hscp_nm']}', '%') ";
}
// 법정동코드로 지역구분
if (!empty($data['srcDong'])) {
$sql .= "AND a.region_cd = '{$data['srcDong']}' ";
} else {
if (!empty($data['srcGugun'])) {
$str_gugun = substr($data['srcGugun'], '0', '2');
if ($str_gugun == '36') { //세종시는 군구가 없고 바로 동이라서 예외
$sql .= "AND a.region_cd = '{$data['srcGugun']}' ";
} else {
$gugunPrefix = substr($data['srcGugun'], '0', '5');
$sql .= "AND a.region_cd LIKE '{$gugunPrefix}%' ";
}
} else {
if (!empty($data['srcSido'])) {
$sidoPrefix = substr($data['srcSido'], '0', '2');
$sql .= "AND a.region_cd LIKE '{$sidoPrefix}%' ";
}
}
}
//촬영일자 == 단지정보작성완료 일자
if (!empty($data['sdate'])) {
$sql .= "AND b.write_complete_tm >= '{$data['sdate']} 00:00:00' ";
}
if (!empty($data['edate'])) {
$sql .= "AND b.write_complete_tm <= '{$data['edate']} 00:00:00' ";
}
if (!empty($data['damdang'])) {
$sql .= "AND a.charger = '{$data['damdang']}' ";
} else {
if (!empty($data['team'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['team']}') ";
} else {
if (!empty($data['bonbu'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['bonbu']}') ";
}
}
}
// 진행상태
if (!empty($data['stat']) && is_array($data['stat'])) {
$statList = "'" . implode("','", $data['stat']) . "'";
$sql .= " AND a.apt_step IN ({$statList}) ";
}
}
$sql .= "GROUP BY a.addr ORDER BY a.addr ASC ";
$query = $this->db->query($sql);
return $query->getResultArray();
}
// 엑셀 다운로드
public function getExcelList($data)
{
$sql = "SELECT
a.part_no AS '구분코드',
a.hscp_no AS '단지코드',
SUBSTRING_INDEX(a.addr, ' ', 1) AS '시도',
SUBSTRING_INDEX(a.addr, ' ', 2) AS '시군구',
SUBSTRING_INDEX(a.addr, ' ', 3) AS '읍면동',
a.addr2 AS '지번',
a.rcpt_hscp_nm AS '단지명',
a.apt_cate_nm AS '단지유형',
a.pyeong_cnt AS '평형',
i.dept_nm AS '방문팀',
b.usr_nm AS '담당자',
gp.insert_tm AS '촬영일자',
a.rcpt_x AS '단지X좌표',
a.rcpt_y AS '단지Y좌표'
FROM
apt_ground AS a
LEFT JOIN apt_ground_photo AS gp ON gp.pho_no = (SELECT p.pho_no
FROM apt_ground_photo p
WHERE p.rcpt_no = a.rcpt_no
ORDER BY p.pho_no DESC
LIMIT 1)
LEFT JOIN users b ON a.charger = b.usr_id
LEFT JOIN region_codes e ON a.region_cd = e.region_cd
LEFT JOIN departments i ON a.dept_sq = i.dept_sq
LEFT JOIN codes f ON a.write_complete_yn = f.cd AND f.category = 'PHO_YN'
LEFT JOIN codes h ON a.vdo_up_ynx = h.cd AND h.category = 'VDO_YN'
LEFT JOIN codes g ON a.apt_step = g.cd AND g.category = 'APT_STEP'
LEFT JOIN apt_history j ON a.rcpt_no = j.rcpt_no AND j.changed_detail = 'C2' AND NOT EXISTS (SELECT 'x' FROM apt_history WHERE changed_detail LIKE 'A%' AND rcpt_no = j.rcpt_no) ";
$sql .= "WHERE 1=1 ";
if (!empty($data['hscp_no'])) {
$sql .= "AND a.hscp_no LIKE CONCAT('%', '{$data['hscp_no']}', '%') ";
} else {
if (!empty($data['hscp_no'])) {
$sql .= "AND a.part_no LIKE CONCAT('%', '{$data['part_no']}', '%') ";
}
if (!empty($data['rcpt_hscp_nm'])) {
$sql .= "AND a.rcpt_hscp_nm LIKE CONCAT('%', '{$data['rcpt_hscp_nm']}', '%') ";
}
// 법정동코드로 지역구분
if (!empty($data['srcDong'])) {
$sql .= "AND a.region_cd = '{$data['srcDong']}' ";
} else {
if (!empty($data['srcGugun'])) {
$str_gugun = substr($data['srcGugun'], '0', '2');
if ($str_gugun == '36') { //세종시는 군구가 없고 바로 동이라서 예외
$sql .= "AND a.region_cd = '{$data['srcGugun']}' ";
} else {
$gugunPrefix = substr($data['srcGugun'], '0', '5');
$sql .= "AND a.region_cd LIKE '{$gugunPrefix}%' ";
}
} else {
if (!empty($data['srcSido'])) {
$sidoPrefix = substr($data['srcSido'], '0', '2');
$sql .= "AND a.region_cd LIKE '{$sidoPrefix}%' ";
}
}
}
//촬영일자 == 단지정보작성완료 일자
if (!empty($data['sdate'])) {
$sql .= "AND b.write_complete_tm >= '{$data['sdate']} 00:00:00' ";
}
if (!empty($data['edate'])) {
$sql .= "AND b.write_complete_tm <= '{$data['edate']} 00:00:00' ";
}
if (!empty($data['damdang'])) {
$sql .= "AND a.charger = '{$data['damdang']}' ";
} else {
if (!empty($data['team'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['team']}') ";
} else {
if (!empty($data['bonbu'])) {
$sql .= "AND a.dept_sq IN (SELECT h.dept_sq FROM departments i INNER JOIN departments h ON h.lft >= i.lft AND h.lft <= i.rgt WHERE i.dept_sq = '{$data['bonbu']}') ";
}
}
}
// 진행상태
if (!empty($data['stat']) && is_array($data['stat'])) {
$statList = "'" . implode("','", $data['stat']) . "'";
$sql .= " AND a.apt_step IN ({$statList}) ";
}
}
$query = $this->db->query($sql);
return $query->getResultArray();
}
// 지도 마커 조회
public function getDeptMapList($deptSq)
{
$sql = "SELECT
a.hscp_no, a.rcpt_hscp_nm, a.rcpt_no, a.dept_sq, a.rcpt_x, a.rcpt_y
, a.charger, i.dept_nm, i.pdept_sq, i.dept_desc, c.usr_nm, c.usr_id
,(SELECT pdept_sq FROM departments WHERE dept_sq = i.dept_sq) bonbu
FROM
apt_ground a
LEFT JOIN apt_ground_photo AS gp ON gp.pho_no = (SELECT p.pho_no
FROM apt_ground_photo p
WHERE p.rcpt_no = a.rcpt_no
ORDER BY p.pho_no DESC
LIMIT 1)
LEFT JOIN users c ON a.charger = c.usr_id
LEFT JOIN region_codes e ON a.region_cd = e.region_cd
LEFT JOIN departments i ON a.dept_sq = i.dept_sq
LEFT JOIN codes f ON a.write_complete_yn = f.cd AND f.category = 'PHO_YN'
LEFT JOIN codes h ON a.vdo_up_ynx = h.cd AND h.category = 'VDO_YN'
LEFT JOIN codes g ON a.apt_step = g.cd AND g.category = 'APT_STEP' ";
$sql .= "WHERE 1=1 ";
if (!empty($deptSq)) {
$datas = "'" . implode("','", $deptSq) . "'";
$sql .= " AND a.dept_sq IN ({$datas}) ";
}
$query = $this->db->query($sql);
return $query->getResultArray();
}
// 아파트 담당자 정보변경
public function updateAptDamdang($params)
{
$sql = "UPDATE apt_ground SET ";
$sql .= "dept_sq = ?, charger = ? ";
$sql .= "WHERE rcpt_no = ? ";
$this->db->query($sql, $params);
if ($this->db->transStatus() === false) {
return [
'success' => false,
'msg' => '저장실패',
];
}
// 성공
return [
'success' => true,
];
}
// 평면도 정보 저장
public function saveImg($data)
{
$sql = "INSERT INTO apt_ground_photo
(rcpt_no, filenm, filenm_up, file_ext, insert_tm, file_path, thumb_path, thumb_nm, use_yn, cloud_upload_yn)
VALUES
({$data['rcpt_no']}, '{$data['origin_name']}', '{$data['file_name']}', '{$data['file_ext']}', NOW(), '{$data['upload_path']}', '{$data['upload_path']}'
, '{$data['thumb_name']}', 'Y', 'Y')
";
if ($this->db->query($sql) === false) {
return [
'success' => false,
'msg' => '저장실패',
];
}
return [
'success' => true,
];
}
}