修复ANY_VALUE兼容
This commit is contained in:
parent
00521062e4
commit
c33612f600
|
|
@ -20,7 +20,33 @@ trait tdata {
|
|||
private $skip_field = [];
|
||||
// 场所统计查询内的公用where
|
||||
private $villages_where = '';
|
||||
// 根据社区类型和地图选择判断小区的ID
|
||||
private $village_whereid = '';
|
||||
|
||||
// 计算社区类型,地图选择,返回被选中的小区ID
|
||||
private function fun_sqlk_vid(){
|
||||
global $_M, $_YW;
|
||||
$idArr = $vidArr = [];
|
||||
if (is_array($this->form['vtype'])) {
|
||||
$vtype = arrayto_string($this->form['vtype'],',');
|
||||
$vid = $this->tsql->table('village')->qfield('id')->where("v_type IN({$vtype})")->all();
|
||||
$idArr = array_column($vid,'id');
|
||||
if(count($idArr) == 0) $idArr = [-1];
|
||||
}
|
||||
if($this->form['v_id']){
|
||||
$vidArr = stringto_array($this->form['v_id'],',');
|
||||
// 取社区类型和地图筛选的交集,重叠ID,社区类型没有操作则直接按照地图筛选结果
|
||||
// $idArr = count($idArr) > 0?array_intersect($vidArr,$idArr):$vidArr;
|
||||
if(count($idArr) > 0){
|
||||
$idArr = array_intersect($vidArr,$idArr);
|
||||
// 如果交集为空,则确实通过此条件进行了筛选,就要通知SQL没有任何值满足当前条件,将ID设置为0,肯定查找不到
|
||||
if(count($idArr) == 0) $idArr = [-1];
|
||||
}else{
|
||||
$idArr = $vidArr;
|
||||
}
|
||||
}
|
||||
return $idArr;
|
||||
}
|
||||
//表名
|
||||
public function td_sqlk() {
|
||||
global $_M, $_YW;
|
||||
|
|
@ -29,16 +55,36 @@ trait tdata {
|
|||
switch ($this->tname) {
|
||||
case 'applan':
|
||||
//判断是否可选的依据
|
||||
if (!empty($this->form['slid']))
|
||||
$where = " AND nla.id != '{$this->form['slid']}' ";
|
||||
if (!empty($this->form['slid'])) $where = " AND nla.id != '{$this->form['slid']}' ";
|
||||
|
||||
$ason = '';
|
||||
// 计算是否区分广告位,不考虑导出
|
||||
if (is_array($this->form['e_aps'])) {
|
||||
$veaps = parent::strchange(array_filter($this->form['e_aps']));
|
||||
$this->villages_where = " nel.e_aps IN({$veaps}) ";
|
||||
$ason .= " {$this->villages_where} AND ";
|
||||
}
|
||||
|
||||
// 根据小区单个ID
|
||||
if($this->form['e_vid']){
|
||||
$ason .= " nel.e_vid = '{$this->form['e_vid']}' AND ";
|
||||
}
|
||||
|
||||
// 社区类型 不考虑导出
|
||||
$idArr = self::fun_sqlk_vid();
|
||||
// 通过ID筛选掉不需要的
|
||||
if(count($idArr) > 0){
|
||||
$this->village_whereid = arrayto_string(array_unique($idArr),',');
|
||||
$ason .= " nel.e_vid IN({$this->village_whereid}) AND ";
|
||||
}
|
||||
|
||||
//表
|
||||
$sqlk = " {$_YW['k']['elevator']} AS el "
|
||||
. "LEFT JOIN (SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nowe_number,ANY_VALUE( nla.id ) AS nowid,ANY_VALUE( nla.l_title ) AS nowtitle,ANY_VALUE( nla.l_starttime ) AS nowstime,ANY_VALUE( nla.l_endtime ) AS nowetime,if(NOT ( nla.l_endtime < '{$curdate}' OR nla.l_starttime > '{$curdate}' ) OR nla.l_starttime > '{$curdate}',1,0) AS estate FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE NOT ( nla.l_endtime < '{$curdate}' OR nla.l_starttime > '{$curdate}' ) AND nla.id IS NOT NULL ORDER BY nowstime ASC ) eala GROUP BY nowe_number ) ala ON ala.nowe_number = el.e_number "
|
||||
. "LEFT JOIN (SELECT nel.e_number AS ende_number, max( nla.l_endtime ) AS endtime FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE nla.id IS NOT NULL GROUP BY ende_number) cla ON cla.ende_number = el.e_number "
|
||||
. "LEFT JOIN ( SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nexte_number,ANY_VALUE( nla.id ) AS nextid,ANY_VALUE( nla.l_title ) AS nexttitle,ANY_VALUE( nla.l_starttime ) AS nextstime,ANY_VALUE( nla.l_endtime ) AS nextetime FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE nla.l_starttime > '{$curdate}' AND nla.id IS NOT NULL ORDER BY nextstime ASC ) eala GROUP BY nexte_number ) bla ON bla.nexte_number = el.e_number "
|
||||
. "LEFT JOIN (SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nend_number,ANY_VALUE( nla.id ) AS endid,ANY_VALUE( nla.l_title ) AS endtitle,ANY_VALUE( nla.l_starttime ) AS endstime,ANY_VALUE( nla.l_endtime ) AS endetime FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE nla.l_endtime < '{$curdate}' AND nla.id IS NOT NULL ORDER BY endetime DESC ) eala GROUP BY nend_number ) dla ON dla.nend_number = el.e_number "
|
||||
. "LEFT JOIN (SELECT nel.e_number AS lde_number,count(nel.e_number) AS lanum FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE NOT ( nla.l_endtime < '{$this->form['l_starttime']}' OR nla.l_starttime > '{$this->form['l_endtime']}' ) {$where} GROUP BY lde_number) AS ela ON ela.lde_number = el.e_number ";
|
||||
. "LEFT JOIN (SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nowe_number,ANY_VALUE( nla.id ) AS nowid,ANY_VALUE( nla.l_title ) AS nowtitle,ANY_VALUE( nla.l_starttime ) AS nowstime,ANY_VALUE( nla.l_endtime ) AS nowetime,if(NOT ( nla.l_endtime < '{$curdate}' OR nla.l_starttime > '{$curdate}' ) OR nla.l_starttime > '{$curdate}',1,0) AS estate FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE {$ason} NOT ( nla.l_endtime < '{$curdate}' OR nla.l_starttime > '{$curdate}' ) AND nla.id IS NOT NULL ORDER BY nowstime ASC ) eala GROUP BY nowe_number ) ala ON ala.nowe_number = el.e_number "
|
||||
. "LEFT JOIN (SELECT nel.e_number AS ende_number, max( nla.l_endtime ) AS endtime FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE {$ason} nla.id IS NOT NULL GROUP BY ende_number) cla ON cla.ende_number = el.e_number "
|
||||
. "LEFT JOIN ( SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nexte_number,ANY_VALUE( nla.id ) AS nextid,ANY_VALUE( nla.l_title ) AS nexttitle,ANY_VALUE( nla.l_starttime ) AS nextstime,ANY_VALUE( nla.l_endtime ) AS nextetime FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE {$ason} nla.l_starttime > '{$curdate}' AND nla.id IS NOT NULL ORDER BY nextstime ASC ) eala GROUP BY nexte_number ) bla ON bla.nexte_number = el.e_number "
|
||||
. "LEFT JOIN (SELECT * FROM( SELECT DISTINCT( nel.e_number ) AS nend_number,ANY_VALUE( nla.id ) AS endid,ANY_VALUE( nla.l_title ) AS endtitle,ANY_VALUE( nla.l_starttime ) AS endstime,ANY_VALUE( nla.l_endtime ) AS endetime FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE {$ason} nla.l_endtime < '{$curdate}' AND nla.id IS NOT NULL ORDER BY endetime DESC ) eala GROUP BY nend_number ) dla ON dla.nend_number = el.e_number "
|
||||
. "LEFT JOIN (SELECT nel.e_number AS lde_number,count(nel.e_number) AS lanum FROM {$_YW['k']['elevator']} AS nel LEFT JOIN {$_YW['k']['launch']} AS nla ON find_in_set( nel.e_number, nla.l_enumber ) WHERE {$ason} NOT ( nla.l_endtime < '{$this->form['l_starttime']}' OR nla.l_starttime > '{$this->form['l_endtime']}' ) {$where} GROUP BY lde_number) AS ela ON ela.lde_number = el.e_number ";
|
||||
break;
|
||||
case 'elevators':
|
||||
$sqlk = " {$_YW['k']['elevator']} AS el LEFT JOIN {$_YW['k']['launch']} AS la ON find_in_set( el.e_number, la.l_enumber ) "
|
||||
|
|
@ -70,14 +116,23 @@ trait tdata {
|
|||
|
||||
// 计算是否区分广告位
|
||||
// 检测是否通过JS传递的广告位参数,也就是导出
|
||||
if (isset($this->form['jsadd_veaps']))
|
||||
$this->form['veaps'] = stringto_array($this->form['jsadd_veaps'], ',');
|
||||
if (isset($this->form['jsadd_veaps'])) $this->form['veaps'] = stringto_array($this->form['jsadd_veaps'], ',');
|
||||
if (is_array($this->form['veaps'])) {
|
||||
$veaps = parent::strchange(array_filter($this->form['veaps']));
|
||||
$this->villages_where = " el.e_aps IN($veaps) ";
|
||||
$this->villages_where = " el.e_aps IN({$veaps}) ";
|
||||
$son .= " {$this->villages_where} AND ";
|
||||
}
|
||||
|
||||
// 社区类型
|
||||
// 先查询出需要的ID
|
||||
if (isset($this->form['jsadd_vtype'])) $this->form['vtype'] = stringto_array($this->form['jsadd_vtype'], ',');
|
||||
$idArr = self::fun_sqlk_vid();
|
||||
// 通过ID筛选掉不需要的
|
||||
if(count($idArr) > 0){
|
||||
$this->village_whereid = arrayto_string(array_unique($idArr),',');
|
||||
$son .= " el.e_vid IN({$this->village_whereid}) AND ";
|
||||
}
|
||||
|
||||
// 空置计算要排除当前排期中的广告位
|
||||
if ($bool) {
|
||||
//加上时间区块 那就是查看在区段内的情况
|
||||
|
|
@ -134,9 +189,6 @@ trait tdata {
|
|||
public function td_field() {
|
||||
global $_M, $_YW;
|
||||
switch ($this->tname) {
|
||||
case 'applan':
|
||||
$field = '*';
|
||||
break;
|
||||
case 'elevators':
|
||||
$field = ' el.*,max( la.l_endtime ) AS endtime,count( DISTINCT la.id ) AS e_totalnum,ala.*,if(ala.estate,1,0) AS etypes,bla.*,cla.* ';
|
||||
break;
|
||||
|
|
@ -303,6 +355,7 @@ trait tdata {
|
|||
$veaps = parent::strchange(array_filter($this->form['e_aps']));
|
||||
$where .= " AND e_aps IN($veaps) ";
|
||||
}
|
||||
if (strlen($this->village_whereid) > 0) $where .= " AND el.e_vid IN({$this->village_whereid}) ";
|
||||
break;
|
||||
case 'elevators':
|
||||
$this->search_input = ['e_number'];
|
||||
|
|
@ -385,8 +438,8 @@ trait tdata {
|
|||
$this->form['v_city'] = $this->form['v_address'];
|
||||
$this->form['v_district'] = $this->form['v_address'];
|
||||
|
||||
if (is_array($this->form['veaps']))
|
||||
$where .= " AND {$this->villages_where} ";
|
||||
if (strlen($this->villages_where) > 0) $where .= " AND {$this->villages_where} ";
|
||||
if (strlen($this->village_whereid) > 0) $where .= " AND vi.id IN({$this->village_whereid}) ";
|
||||
$where .= self::td_search_or($this->search_link);
|
||||
$where .= self::td_search();
|
||||
//判断是否为备份
|
||||
|
|
|
|||
Loading…
Reference in New Issue